From 176c79bada5f175202a1f67828a9d4bfc208895c Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Fri, 23 Jun 2023 18:13:26 +1000 Subject: [PATCH] Hardware Cursor support Updated SDL2 for this, so lib\ is no longer gitignored --- .gitignore | 1 - lib/linux/include/GL/gl.h | 2235 ++ lib/linux/include/GL/gl_mangle.h | 2311 ++ lib/linux/include/GL/glew.h | 16126 +++++++++++++ lib/linux/include/GL/glext.h | 11488 +++++++++ lib/linux/include/GL/glu.h | 353 + lib/linux/include/GL/glu_mangle.h | 86 + lib/linux/include/GL/glx.h | 526 + lib/linux/include/GL/glx_mangle.h | 82 + lib/linux/include/GL/glxew.h | 1587 ++ lib/linux/include/GL/glxext.h | 993 + lib/linux/include/GL/internal/dri_interface.h | 986 + lib/linux/include/GL/wglew.h | 1363 ++ lib/linux/include/config/ftconfig.h | 450 + lib/linux/include/config/ftheader.h | 832 + lib/linux/include/config/ftmodule.h | 32 + lib/linux/include/config/ftoption.h | 899 + lib/linux/include/config/ftstdlib.h | 174 + lib/linux/include/freetype.h | 4048 ++++ lib/linux/include/ft2build.h | 42 + lib/linux/include/ftadvanc.h | 187 + lib/linux/include/ftautoh.h | 402 + lib/linux/include/ftbbox.h | 101 + lib/linux/include/ftbdf.h | 210 + lib/linux/include/ftbitmap.h | 232 + lib/linux/include/ftbzip2.h | 102 + lib/linux/include/ftcache.h | 1057 + lib/linux/include/ftcffdrv.h | 262 + lib/linux/include/ftchapters.h | 121 + lib/linux/include/ftcid.h | 167 + lib/linux/include/fterrdef.h | 249 + lib/linux/include/fterrors.h | 198 + lib/linux/include/ftgasp.h | 129 + lib/linux/include/ftglyph.h | 605 + lib/linux/include/ftgxval.h | 357 + lib/linux/include/ftgzip.h | 148 + lib/linux/include/ftimage.h | 1220 + lib/linux/include/ftincrem.h | 354 + lib/linux/include/ftlcdfil.h | 251 + lib/linux/include/ftlist.h | 276 + lib/linux/include/ftlzw.h | 99 + lib/linux/include/ftmac.h | 274 + lib/linux/include/ftmm.h | 373 + lib/linux/include/ftmodapi.h | 667 + lib/linux/include/ftmoderr.h | 194 + lib/linux/include/ftotval.h | 204 + lib/linux/include/ftoutln.h | 574 + lib/linux/include/ftpfr.h | 172 + lib/linux/include/ftrender.h | 237 + lib/linux/include/ftsizes.h | 159 + lib/linux/include/ftsnames.h | 200 + lib/linux/include/ftstroke.h | 785 + lib/linux/include/ftsynth.h | 82 + lib/linux/include/ftsystem.h | 355 + lib/linux/include/fttrigon.h | 350 + lib/linux/include/ftttdrv.h | 170 + lib/linux/include/fttypes.h | 602 + lib/linux/include/ftwinfnt.h | 275 + lib/linux/include/ftxf86.h | 84 + lib/linux/include/internal/autohint.h | 244 + lib/linux/include/internal/ftcalc.h | 406 + lib/linux/include/internal/ftdebug.h | 255 + lib/linux/include/internal/ftdriver.h | 409 + lib/linux/include/internal/ftgloadr.h | 170 + lib/linux/include/internal/ftmemory.h | 378 + lib/linux/include/internal/ftobjs.h | 1571 ++ lib/linux/include/internal/ftpic.h | 71 + lib/linux/include/internal/ftrfork.h | 266 + lib/linux/include/internal/ftserv.h | 763 + lib/linux/include/internal/ftstream.h | 536 + lib/linux/include/internal/fttrace.h | 154 + lib/linux/include/internal/ftvalid.h | 159 + lib/linux/include/internal/internal.h | 63 + lib/linux/include/internal/psaux.h | 877 + lib/linux/include/internal/pshints.h | 722 + lib/linux/include/internal/services/svbdf.h | 82 + lib/linux/include/internal/services/svcid.h | 89 + .../include/internal/services/svgldict.h | 88 + lib/linux/include/internal/services/svgxval.h | 72 + lib/linux/include/internal/services/svkern.h | 51 + lib/linux/include/internal/services/svmm.h | 113 + lib/linux/include/internal/services/svotval.h | 55 + lib/linux/include/internal/services/svpfr.h | 66 + .../include/internal/services/svpostnm.h | 81 + lib/linux/include/internal/services/svprop.h | 81 + .../include/internal/services/svpscmap.h | 177 + .../include/internal/services/svpsinfo.h | 111 + lib/linux/include/internal/services/svsfnt.h | 103 + .../include/internal/services/svttcmap.h | 107 + lib/linux/include/internal/services/svtteng.h | 53 + .../include/internal/services/svttglyf.h | 68 + .../include/internal/services/svwinfnt.h | 50 + .../include/internal/services/svxf86nm.h | 55 + lib/linux/include/internal/sfnt.h | 711 + lib/linux/include/internal/t1types.h | 255 + lib/linux/include/internal/tttypes.h | 1516 ++ lib/linux/include/jemalloc/jemalloc.h | 382 + lib/linux/include/ogg/config_types.h | 25 + lib/linux/include/ogg/ogg.h | 210 + lib/linux/include/ogg/os_types.h | 147 + lib/linux/include/png.h | 3810 +++ lib/linux/include/pngconf.h | 1665 ++ lib/linux/include/steam/isteamapplist.h | 63 + lib/linux/include/steam/isteamapps.h | 176 + lib/linux/include/steam/isteamappticket.h | 28 + lib/linux/include/steam/isteamclient.h | 520 + lib/linux/include/steam/isteamcontroller.h | 251 + lib/linux/include/steam/isteamfriends.h | 636 + .../include/steam/isteamgamecoordinator.h | 75 + lib/linux/include/steam/isteamgameserver.h | 387 + .../include/steam/isteamgameserverstats.h | 101 + lib/linux/include/steam/isteamhtmlsurface.h | 453 + lib/linux/include/steam/isteamhttp.h | 210 + lib/linux/include/steam/isteaminventory.h | 357 + .../include/steam/isteammasterserverupdater.h | 1 + lib/linux/include/steam/isteammatchmaking.h | 751 + lib/linux/include/steam/isteammusic.h | 67 + lib/linux/include/steam/isteammusicremote.h | 129 + lib/linux/include/steam/isteamnetworking.h | 306 + .../include/steam/isteamps3overlayrenderer.h | 91 + lib/linux/include/steam/isteamremotestorage.h | 681 + lib/linux/include/steam/isteamscreenshots.h | 116 + lib/linux/include/steam/isteamugc.h | 453 + .../include/steam/isteamunifiedmessages.h | 63 + lib/linux/include/steam/isteamuser.h | 355 + lib/linux/include/steam/isteamuserstats.h | 476 + lib/linux/include/steam/isteamutils.h | 254 + lib/linux/include/steam/isteamvideo.h | 60 + lib/linux/include/steam/matchmakingtypes.h | 251 + lib/linux/include/steam/steam_api.h | 394 + lib/linux/include/steam/steam_api.json | 7576 ++++++ lib/linux/include/steam/steam_api_flat.h | 802 + lib/linux/include/steam/steam_api_internal.h | 327 + lib/linux/include/steam/steam_api_interop.cs | 10470 +++++++++ lib/linux/include/steam/steam_gameserver.h | 237 + lib/linux/include/steam/steamclientpublic.h | 1255 + .../include/steam/steamencryptedappticket.h | 32 + lib/linux/include/steam/steamhttpenums.h | 98 + lib/linux/include/steam/steamps3params.h | 112 + lib/linux/include/steam/steamtypes.h | 181 + lib/linux/include/steam/steamuniverse.h | 27 + lib/linux/include/t1tables.h | 760 + lib/linux/include/ttnameid.h | 1237 + lib/linux/include/tttables.h | 829 + lib/linux/include/tttags.h | 111 + lib/linux/include/ttunpat.h | 60 + lib/linux/include/vorbis/codec.h | 243 + lib/linux/include/vorbis/vorbisenc.h | 436 + lib/linux/include/vorbis/vorbisfile.h | 206 + lib/linux/include/zconf.h | 511 + lib/linux/include/zlib.h | 1744 ++ lib/linux/libGLEW.a | Bin 0 -> 921784 bytes lib/linux/libcrypto.a | Bin 0 -> 4041132 bytes lib/linux/libfreetype.a | Bin 0 -> 886974 bytes lib/linux/libjemalloc.a | Bin 0 -> 14047800 bytes lib/linux/libogg.a | Bin 0 -> 28298 bytes lib/linux/libpng.a | Bin 0 -> 246762 bytes lib/linux/libsteam_api.so | Bin 0 -> 266651 bytes lib/linux/libvorbis.a | Bin 0 -> 239364 bytes lib/linux/libvorbisenc.a | Bin 0 -> 3056686 bytes lib/linux/libvorbisfile.a | Bin 0 -> 32804 bytes lib/linux/libz.a | Bin 0 -> 127770 bytes lib/osx/include/GL/glew.h | 16126 +++++++++++++ lib/osx/include/GL/glxew.h | 1587 ++ lib/osx/include/GL/wglew.h | 1363 ++ lib/osx/include/SDL.h | 132 + lib/osx/include/SDL_assert.h | 289 + lib/osx/include/SDL_atomic.h | 268 + lib/osx/include/SDL_audio.h | 672 + lib/osx/include/SDL_bits.h | 97 + lib/osx/include/SDL_blendmode.h | 63 + lib/osx/include/SDL_clipboard.h | 71 + lib/osx/include/SDL_config.h | 364 + lib/osx/include/SDL_config_android.h | 144 + lib/osx/include/SDL_config_iphoneos.h | 155 + lib/osx/include/SDL_config_macosx.h | 188 + lib/osx/include/SDL_config_minimal.h | 81 + lib/osx/include/SDL_config_pandora.h | 124 + lib/osx/include/SDL_config_psp.h | 140 + lib/osx/include/SDL_config_windows.h | 210 + lib/osx/include/SDL_config_winrt.h | 190 + lib/osx/include/SDL_config_wiz.h | 118 + lib/osx/include/SDL_copying.h | 20 + lib/osx/include/SDL_cpuinfo.h | 161 + lib/osx/include/SDL_egl.h | 1673 ++ lib/osx/include/SDL_endian.h | 239 + lib/osx/include/SDL_error.h | 76 + lib/osx/include/SDL_events.h | 754 + lib/osx/include/SDL_filesystem.h | 136 + lib/osx/include/SDL_gamecontroller.h | 323 + lib/osx/include/SDL_gesture.h | 87 + lib/osx/include/SDL_haptic.h | 1223 + lib/osx/include/SDL_hints.h | 795 + lib/osx/include/SDL_joystick.h | 273 + lib/osx/include/SDL_keyboard.h | 217 + lib/osx/include/SDL_keycode.h | 341 + lib/osx/include/SDL_loadso.h | 81 + lib/osx/include/SDL_log.h | 211 + lib/osx/include/SDL_main.h | 161 + lib/osx/include/SDL_messagebox.h | 144 + lib/osx/include/SDL_mouse.h | 302 + lib/osx/include/SDL_mutex.h | 251 + lib/osx/include/SDL_name.h | 33 + lib/osx/include/SDL_opengl.h | 2176 ++ lib/osx/include/SDL_opengl_glext.h | 11177 +++++++++ lib/osx/include/SDL_opengles.h | 39 + lib/osx/include/SDL_opengles2.h | 52 + lib/osx/include/SDL_opengles2_gl2.h | 621 + lib/osx/include/SDL_opengles2_gl2ext.h | 2050 ++ lib/osx/include/SDL_opengles2_gl2platform.h | 30 + lib/osx/include/SDL_opengles2_khrplatform.h | 282 + lib/osx/include/SDL_pixels.h | 468 + lib/osx/include/SDL_platform.h | 185 + lib/osx/include/SDL_power.h | 75 + lib/osx/include/SDL_quit.h | 58 + lib/osx/include/SDL_rect.h | 148 + lib/osx/include/SDL_render.h | 905 + lib/osx/include/SDL_revision.h | 2 + lib/osx/include/SDL_rwops.h | 231 + lib/osx/include/SDL_scancode.h | 401 + lib/osx/include/SDL_shape.h | 143 + lib/osx/include/SDL_stdinc.h | 531 + lib/osx/include/SDL_surface.h | 513 + lib/osx/include/SDL_system.h | 216 + lib/osx/include/SDL_syswm.h | 321 + lib/osx/include/SDL_thread.h | 287 + lib/osx/include/SDL_timer.h | 115 + lib/osx/include/SDL_touch.h | 86 + lib/osx/include/SDL_types.h | 29 + lib/osx/include/SDL_version.h | 162 + lib/osx/include/SDL_video.h | 1218 + lib/osx/include/begin_code.h | 146 + lib/osx/include/close_code.h | 37 + lib/osx/include/discord_game_sdk.h | 429 + lib/osx/include/freetype/config/ftconfig.h | 467 + lib/osx/include/freetype/config/ftheader.h | 834 + lib/osx/include/freetype/config/ftmodule.h | 32 + lib/osx/include/freetype/config/ftoption.h | 904 + lib/osx/include/freetype/config/ftstdlib.h | 174 + lib/osx/include/freetype/freetype.h | 4284 ++++ lib/osx/include/freetype/ftadvanc.h | 187 + lib/osx/include/freetype/ftautoh.h | 503 + lib/osx/include/freetype/ftbbox.h | 101 + lib/osx/include/freetype/ftbdf.h | 210 + lib/osx/include/freetype/ftbitmap.h | 240 + lib/osx/include/freetype/ftbzip2.h | 102 + lib/osx/include/freetype/ftcache.h | 1057 + lib/osx/include/freetype/ftcffdrv.h | 262 + lib/osx/include/freetype/ftchapters.h | 135 + lib/osx/include/freetype/ftcid.h | 168 + lib/osx/include/freetype/fterrdef.h | 276 + lib/osx/include/freetype/fterrors.h | 216 + lib/osx/include/freetype/ftfntfmt.h | 92 + lib/osx/include/freetype/ftgasp.h | 129 + lib/osx/include/freetype/ftglyph.h | 605 + lib/osx/include/freetype/ftgxval.h | 357 + lib/osx/include/freetype/ftgzip.h | 148 + lib/osx/include/freetype/ftimage.h | 1214 + lib/osx/include/freetype/ftincrem.h | 354 + lib/osx/include/freetype/ftlcdfil.h | 293 + lib/osx/include/freetype/ftlist.h | 276 + lib/osx/include/freetype/ftlzw.h | 99 + lib/osx/include/freetype/ftmac.h | 274 + lib/osx/include/freetype/ftmm.h | 384 + lib/osx/include/freetype/ftmodapi.h | 672 + lib/osx/include/freetype/ftmoderr.h | 194 + lib/osx/include/freetype/ftotval.h | 204 + lib/osx/include/freetype/ftoutln.h | 574 + lib/osx/include/freetype/ftpfr.h | 172 + lib/osx/include/freetype/ftrender.h | 232 + lib/osx/include/freetype/ftsizes.h | 159 + lib/osx/include/freetype/ftsnames.h | 200 + lib/osx/include/freetype/ftstroke.h | 785 + lib/osx/include/freetype/ftsynth.h | 84 + lib/osx/include/freetype/ftsystem.h | 355 + lib/osx/include/freetype/fttrigon.h | 350 + lib/osx/include/freetype/ftttdrv.h | 310 + lib/osx/include/freetype/fttypes.h | 602 + lib/osx/include/freetype/ftwinfnt.h | 275 + lib/osx/include/freetype/internal/autohint.h | 244 + lib/osx/include/freetype/internal/ftcalc.h | 418 + lib/osx/include/freetype/internal/ftdebug.h | 255 + lib/osx/include/freetype/internal/ftdriver.h | 409 + lib/osx/include/freetype/internal/ftgloadr.h | 172 + lib/osx/include/freetype/internal/ftmemory.h | 386 + lib/osx/include/freetype/internal/ftobjs.h | 1574 ++ lib/osx/include/freetype/internal/ftpic.h | 71 + lib/osx/include/freetype/internal/ftrfork.h | 266 + lib/osx/include/freetype/internal/ftserv.h | 763 + lib/osx/include/freetype/internal/ftstream.h | 536 + lib/osx/include/freetype/internal/fttrace.h | 154 + lib/osx/include/freetype/internal/ftvalid.h | 159 + lib/osx/include/freetype/internal/internal.h | 63 + lib/osx/include/freetype/internal/psaux.h | 877 + lib/osx/include/freetype/internal/pshints.h | 722 + .../freetype/internal/services/svbdf.h | 82 + .../freetype/internal/services/svcid.h | 90 + .../freetype/internal/services/svfntfmt.h | 55 + .../freetype/internal/services/svgldict.h | 88 + .../freetype/internal/services/svgxval.h | 72 + .../freetype/internal/services/svkern.h | 51 + .../include/freetype/internal/services/svmm.h | 113 + .../freetype/internal/services/svotval.h | 55 + .../freetype/internal/services/svpfr.h | 66 + .../freetype/internal/services/svpostnm.h | 81 + .../freetype/internal/services/svprop.h | 81 + .../freetype/internal/services/svpscmap.h | 177 + .../freetype/internal/services/svpsinfo.h | 111 + .../freetype/internal/services/svsfnt.h | 103 + .../freetype/internal/services/svttcmap.h | 106 + .../freetype/internal/services/svtteng.h | 53 + .../freetype/internal/services/svttglyf.h | 69 + .../freetype/internal/services/svwinfnt.h | 50 + lib/osx/include/freetype/internal/sfnt.h | 748 + lib/osx/include/freetype/internal/t1types.h | 255 + lib/osx/include/freetype/internal/tttypes.h | 1529 ++ lib/osx/include/freetype/t1tables.h | 761 + lib/osx/include/freetype/ttnameid.h | 1237 + lib/osx/include/freetype/tttables.h | 829 + lib/osx/include/freetype/tttags.h | 111 + lib/osx/include/freetype/ttunpat.h | 60 + lib/osx/include/ft2build.h | 42 + lib/osx/include/jemalloc/jemalloc.h | 379 + lib/osx/include/ogg/config_types.h | 25 + lib/osx/include/ogg/ogg.h | 210 + lib/osx/include/ogg/os_types.h | 147 + lib/osx/include/png.h | 3265 +++ lib/osx/include/pngconf.h | 622 + lib/osx/include/pnglibconf.h | 214 + lib/osx/include/steam/isteamapplist.h | 63 + lib/osx/include/steam/isteamapps.h | 176 + lib/osx/include/steam/isteamappticket.h | 28 + lib/osx/include/steam/isteamclient.h | 520 + lib/osx/include/steam/isteamcontroller.h | 251 + lib/osx/include/steam/isteamfriends.h | 636 + lib/osx/include/steam/isteamgamecoordinator.h | 75 + lib/osx/include/steam/isteamgameserver.h | 387 + lib/osx/include/steam/isteamgameserverstats.h | 101 + lib/osx/include/steam/isteamhtmlsurface.h | 453 + lib/osx/include/steam/isteamhttp.h | 210 + lib/osx/include/steam/isteaminventory.h | 357 + .../include/steam/isteammasterserverupdater.h | 1 + lib/osx/include/steam/isteammatchmaking.h | 751 + lib/osx/include/steam/isteammusic.h | 67 + lib/osx/include/steam/isteammusicremote.h | 129 + lib/osx/include/steam/isteamnetworking.h | 306 + .../include/steam/isteamps3overlayrenderer.h | 91 + lib/osx/include/steam/isteamremotestorage.h | 681 + lib/osx/include/steam/isteamscreenshots.h | 116 + lib/osx/include/steam/isteamugc.h | 453 + lib/osx/include/steam/isteamunifiedmessages.h | 63 + lib/osx/include/steam/isteamuser.h | 355 + lib/osx/include/steam/isteamuserstats.h | 476 + lib/osx/include/steam/isteamutils.h | 254 + lib/osx/include/steam/isteamvideo.h | 60 + lib/osx/include/steam/matchmakingtypes.h | 251 + lib/osx/include/steam/steam_api.h | 394 + lib/osx/include/steam/steam_api.json | 7576 ++++++ lib/osx/include/steam/steam_api_flat.h | 802 + lib/osx/include/steam/steam_api_internal.h | 327 + lib/osx/include/steam/steam_api_interop.cs | 10470 +++++++++ lib/osx/include/steam/steam_gameserver.h | 237 + lib/osx/include/steam/steamclientpublic.h | 1255 + .../include/steam/steamencryptedappticket.h | 32 + lib/osx/include/steam/steamhttpenums.h | 98 + lib/osx/include/steam/steamps3params.h | 112 + lib/osx/include/steam/steamtypes.h | 181 + lib/osx/include/steam/steamuniverse.h | 27 + lib/osx/include/vorbis/codec.h | 243 + lib/osx/include/vorbis/vorbisenc.h | 436 + lib/osx/include/vorbis/vorbisfile.h | 206 + lib/osx/include/zconf.h | 511 + lib/osx/include/zlib.h | 1768 ++ lib/osx/libGLEW.a | Bin 0 -> 725456 bytes lib/osx/libSDL2.a | Bin 0 -> 1418152 bytes lib/osx/libdiscord_game_sdk.dylib | Bin 0 -> 351064 bytes lib/osx/libfreetype.a | Bin 0 -> 868256 bytes lib/osx/libjemalloc.a | Bin 0 -> 1515176 bytes lib/osx/libogg.a | Bin 0 -> 29696 bytes lib/osx/libpcre.a | Bin 0 -> 132352 bytes lib/osx/libpng.a | Bin 0 -> 282008 bytes lib/osx/libsteam_api.dylib | Bin 0 -> 540944 bytes lib/osx/libvorbis.a | Bin 0 -> 239464 bytes lib/osx/libvorbisfile.a | Bin 0 -> 35520 bytes lib/osx/libz.a | Bin 0 -> 106176 bytes lib/windows32/SDL2.dll | Bin 0 -> 2270208 bytes lib/windows32/SDL2.lib | Bin 0 -> 187788 bytes lib/windows32/cygogg-0.dll | Bin 0 -> 86143 bytes lib/windows32/cygvorbis-0.dll | Bin 0 -> 216763 bytes lib/windows32/cygvorbisenc-2.dll | Bin 0 -> 1659815 bytes lib/windows32/cygvorbisfile-3.dll | Bin 0 -> 81293 bytes lib/windows32/discord_game_sdk.dll | Bin 0 -> 221696 bytes lib/windows32/discord_game_sdk.lib | Bin 0 -> 2148 bytes lib/windows32/freetype.lib | Bin 0 -> 42752 bytes lib/windows32/freetype6.dll | Bin 0 -> 551096 bytes lib/windows32/glew32.dll | Bin 0 -> 396800 bytes lib/windows32/glew32.lib | Bin 0 -> 606480 bytes lib/windows32/include/C99/stdbool.h | 20 + lib/windows32/include/C99/stdint.h | 247 + lib/windows32/include/GL/glew.h | 19367 ++++++++++++++++ lib/windows32/include/GL/glxew.h | 1771 ++ lib/windows32/include/GL/wglew.h | 1452 ++ lib/windows32/include/SDL.h | 233 + lib/windows32/include/SDL_assert.h | 320 + lib/windows32/include/SDL_atomic.h | 414 + lib/windows32/include/SDL_audio.h | 1500 ++ lib/windows32/include/SDL_bits.h | 126 + lib/windows32/include/SDL_blendmode.h | 198 + lib/windows32/include/SDL_clipboard.h | 141 + lib/windows32/include/SDL_config.h | 331 + lib/windows32/include/SDL_cpuinfo.h | 594 + lib/windows32/include/SDL_egl.h | 2352 ++ lib/windows32/include/SDL_endian.h | 348 + lib/windows32/include/SDL_error.h | 163 + lib/windows32/include/SDL_events.h | 1166 + lib/windows32/include/SDL_filesystem.h | 149 + lib/windows32/include/SDL_gamecontroller.h | 1074 + lib/windows32/include/SDL_gesture.h | 117 + lib/windows32/include/SDL_guid.h | 100 + lib/windows32/include/SDL_haptic.h | 1341 ++ lib/windows32/include/SDL_hidapi.h | 451 + lib/windows32/include/SDL_hints.h | 2604 +++ lib/windows32/include/SDL_joystick.h | 1069 + lib/windows32/include/SDL_keyboard.h | 353 + lib/windows32/include/SDL_keycode.h | 358 + lib/windows32/include/SDL_loadso.h | 115 + lib/windows32/include/SDL_locale.h | 103 + lib/windows32/include/SDL_log.h | 404 + lib/windows32/include/SDL_main.h | 282 + lib/windows32/include/SDL_messagebox.h | 193 + lib/windows32/include/SDL_metal.h | 113 + lib/windows32/include/SDL_misc.h | 79 + lib/windows32/include/SDL_mouse.h | 464 + lib/windows32/include/SDL_mutex.h | 545 + lib/windows32/include/SDL_name.h | 33 + lib/windows32/include/SDL_opengl.h | 2132 ++ lib/windows32/include/SDL_opengl_glext.h | 13213 +++++++++++ lib/windows32/include/SDL_opengles.h | 39 + lib/windows32/include/SDL_opengles2.h | 52 + lib/windows32/include/SDL_opengles2_gl2.h | 656 + lib/windows32/include/SDL_opengles2_gl2ext.h | 4033 ++++ .../include/SDL_opengles2_gl2platform.h | 27 + .../include/SDL_opengles2_khrplatform.h | 311 + lib/windows32/include/SDL_pixels.h | 644 + lib/windows32/include/SDL_platform.h | 261 + lib/windows32/include/SDL_power.h | 87 + lib/windows32/include/SDL_quit.h | 58 + lib/windows32/include/SDL_rect.h | 376 + lib/windows32/include/SDL_render.h | 1924 ++ lib/windows32/include/SDL_revision.h | 7 + lib/windows32/include/SDL_rwops.h | 841 + lib/windows32/include/SDL_scancode.h | 438 + lib/windows32/include/SDL_sensor.h | 322 + lib/windows32/include/SDL_shape.h | 155 + lib/windows32/include/SDL_stdinc.h | 838 + lib/windows32/include/SDL_surface.h | 997 + lib/windows32/include/SDL_system.h | 623 + lib/windows32/include/SDL_syswm.h | 386 + lib/windows32/include/SDL_test.h | 69 + lib/windows32/include/SDL_test_assert.h | 105 + lib/windows32/include/SDL_test_common.h | 236 + lib/windows32/include/SDL_test_compare.h | 69 + lib/windows32/include/SDL_test_crc32.h | 124 + lib/windows32/include/SDL_test_font.h | 168 + lib/windows32/include/SDL_test_fuzzer.h | 386 + lib/windows32/include/SDL_test_harness.h | 134 + lib/windows32/include/SDL_test_images.h | 78 + lib/windows32/include/SDL_test_log.h | 67 + lib/windows32/include/SDL_test_md5.h | 129 + lib/windows32/include/SDL_test_memory.h | 63 + lib/windows32/include/SDL_test_random.h | 115 + lib/windows32/include/SDL_thread.h | 464 + lib/windows32/include/SDL_timer.h | 222 + lib/windows32/include/SDL_touch.h | 150 + lib/windows32/include/SDL_types.h | 29 + lib/windows32/include/SDL_version.h | 204 + lib/windows32/include/SDL_video.h | 2178 ++ lib/windows32/include/SDL_vulkan.h | 215 + lib/windows32/include/begin_code.h | 187 + lib/windows32/include/close_code.h | 40 + lib/windows32/include/discord_game_sdk.h | 429 + .../include/freetype/config/ftconfig.h | 477 + .../include/freetype/config/ftheader.h | 780 + .../include/freetype/config/ftmodule.h | 20 + .../include/freetype/config/ftoption.h | 733 + .../include/freetype/config/ftstdlib.h | 173 + lib/windows32/include/freetype/freetype.h | 3919 ++++ lib/windows32/include/freetype/ftadvanc.h | 179 + lib/windows32/include/freetype/ftbbox.h | 94 + lib/windows32/include/freetype/ftbdf.h | 209 + lib/windows32/include/freetype/ftbitmap.h | 227 + lib/windows32/include/freetype/ftcache.h | 1125 + lib/windows32/include/freetype/ftchapters.h | 103 + lib/windows32/include/freetype/ftcid.h | 166 + lib/windows32/include/freetype/fterrdef.h | 244 + lib/windows32/include/freetype/fterrors.h | 206 + lib/windows32/include/freetype/ftgasp.h | 120 + lib/windows32/include/freetype/ftglyph.h | 613 + lib/windows32/include/freetype/ftgxval.h | 358 + lib/windows32/include/freetype/ftgzip.h | 102 + lib/windows32/include/freetype/ftimage.h | 1301 ++ lib/windows32/include/freetype/ftincrem.h | 353 + lib/windows32/include/freetype/ftlcdfil.h | 213 + lib/windows32/include/freetype/ftlist.h | 277 + lib/windows32/include/freetype/ftlzw.h | 99 + lib/windows32/include/freetype/ftmac.h | 274 + lib/windows32/include/freetype/ftmm.h | 378 + lib/windows32/include/freetype/ftmodapi.h | 483 + lib/windows32/include/freetype/ftmoderr.h | 155 + lib/windows32/include/freetype/ftotval.h | 203 + lib/windows32/include/freetype/ftoutln.h | 537 + lib/windows32/include/freetype/ftpfr.h | 172 + lib/windows32/include/freetype/ftrender.h | 230 + lib/windows32/include/freetype/ftsizes.h | 159 + lib/windows32/include/freetype/ftsnames.h | 200 + lib/windows32/include/freetype/ftstroke.h | 716 + lib/windows32/include/freetype/ftsynth.h | 80 + lib/windows32/include/freetype/ftsystem.h | 347 + lib/windows32/include/freetype/fttrigon.h | 350 + lib/windows32/include/freetype/fttypes.h | 588 + lib/windows32/include/freetype/ftwinfnt.h | 274 + lib/windows32/include/freetype/ftxf86.h | 83 + lib/windows32/include/freetype/t1tables.h | 504 + lib/windows32/include/freetype/ttnameid.h | 1247 + lib/windows32/include/freetype/tttables.h | 759 + lib/windows32/include/freetype/tttags.h | 107 + lib/windows32/include/freetype/ttunpat.h | 59 + lib/windows32/include/ft2build.h | 61 + lib/windows32/include/jemalloc/jemalloc.h | 377 + lib/windows32/include/ogg/config_types.h | 25 + lib/windows32/include/ogg/ogg.h | 210 + lib/windows32/include/ogg/os_types.h | 147 + lib/windows32/include/png.h | 3265 +++ lib/windows32/include/pngconf.h | 622 + lib/windows32/include/pnglibconf.h | 216 + lib/windows32/include/steam/isteamapplist.h | 63 + lib/windows32/include/steam/isteamapps.h | 176 + lib/windows32/include/steam/isteamappticket.h | 28 + lib/windows32/include/steam/isteamclient.h | 520 + .../include/steam/isteamcontroller.h | 251 + lib/windows32/include/steam/isteamfriends.h | 636 + .../include/steam/isteamgamecoordinator.h | 75 + .../include/steam/isteamgameserver.h | 387 + .../include/steam/isteamgameserverstats.h | 101 + .../include/steam/isteamhtmlsurface.h | 453 + lib/windows32/include/steam/isteamhttp.h | 210 + lib/windows32/include/steam/isteaminventory.h | 357 + .../include/steam/isteammasterserverupdater.h | 1 + .../include/steam/isteammatchmaking.h | 751 + lib/windows32/include/steam/isteammusic.h | 67 + .../include/steam/isteammusicremote.h | 129 + .../include/steam/isteamnetworking.h | 306 + .../include/steam/isteamps3overlayrenderer.h | 91 + .../include/steam/isteamremotestorage.h | 681 + .../include/steam/isteamscreenshots.h | 116 + lib/windows32/include/steam/isteamugc.h | 453 + .../include/steam/isteamunifiedmessages.h | 63 + lib/windows32/include/steam/isteamuser.h | 355 + lib/windows32/include/steam/isteamuserstats.h | 476 + lib/windows32/include/steam/isteamutils.h | 254 + lib/windows32/include/steam/isteamvideo.h | 60 + .../include/steam/matchmakingtypes.h | 251 + lib/windows32/include/steam/steam_api.h | 394 + lib/windows32/include/steam/steam_api.json | 7576 ++++++ lib/windows32/include/steam/steam_api_flat.h | 802 + .../include/steam/steam_api_internal.h | 327 + .../include/steam/steam_api_interop.cs | 10470 +++++++++ .../include/steam/steam_gameserver.h | 237 + .../include/steam/steamclientpublic.h | 1255 + .../include/steam/steamencryptedappticket.h | 32 + lib/windows32/include/steam/steamhttpenums.h | 98 + lib/windows32/include/steam/steamps3params.h | 112 + lib/windows32/include/steam/steamtypes.h | 181 + lib/windows32/include/steam/steamuniverse.h | 27 + lib/windows32/include/strings.h | 59 + lib/windows32/include/vorbis/codec.h | 243 + lib/windows32/include/vorbis/vorbisenc.h | 436 + lib/windows32/include/vorbis/vorbisfile.h | 206 + lib/windows32/include/windows_extra.h | 6 + lib/windows32/include/zconf.h | 511 + lib/windows32/include/zlib.h | 1768 ++ lib/windows32/jemalloc.lib | Bin 0 -> 387688 bytes lib/windows32/libpng16.dll | Bin 0 -> 322560 bytes lib/windows32/libpng16.lib | Bin 0 -> 56118 bytes lib/windows32/libpng16.pdb | Bin 0 -> 5484544 bytes lib/windows32/ogg.lib | Bin 0 -> 46146 bytes lib/windows32/steam_api.dll | Bin 0 -> 217376 bytes lib/windows32/steam_api.lib | Bin 0 -> 275458 bytes lib/windows32/vorbis.lib | Bin 0 -> 76138 bytes lib/windows32/vorbisenc.lib | Bin 0 -> 4902 bytes lib/windows32/vorbisfile.lib | Bin 0 -> 23472 bytes lib/windows32/zlib.lib | Bin 0 -> 15658 bytes lib/windows32/zlib1.dll | Bin 0 -> 161280 bytes lib/windows64/SDL2.dll | Bin 0 -> 2494976 bytes lib/windows64/SDL2.lib | Bin 0 -> 183542 bytes lib/windows64/discord_game_sdk.dll | Bin 0 -> 263680 bytes lib/windows64/discord_game_sdk.lib | Bin 0 -> 2148 bytes lib/windows64/freetype.lib | Bin 0 -> 1586820 bytes lib/windows64/glew32.dll | Bin 0 -> 433152 bytes lib/windows64/glew32.lib | Bin 0 -> 597238 bytes lib/windows64/include/C99/stdbool.h | 20 + lib/windows64/include/C99/stdint.h | 247 + lib/windows64/include/GL/glew.h | 19367 ++++++++++++++++ lib/windows64/include/GL/glxew.h | 1771 ++ lib/windows64/include/GL/wglew.h | 1452 ++ lib/windows64/include/SDL.h | 233 + lib/windows64/include/SDL_assert.h | 320 + lib/windows64/include/SDL_atomic.h | 414 + lib/windows64/include/SDL_audio.h | 1500 ++ lib/windows64/include/SDL_bits.h | 126 + lib/windows64/include/SDL_blendmode.h | 198 + lib/windows64/include/SDL_clipboard.h | 141 + lib/windows64/include/SDL_config.h | 331 + lib/windows64/include/SDL_cpuinfo.h | 594 + lib/windows64/include/SDL_egl.h | 2352 ++ lib/windows64/include/SDL_endian.h | 348 + lib/windows64/include/SDL_error.h | 163 + lib/windows64/include/SDL_events.h | 1166 + lib/windows64/include/SDL_filesystem.h | 149 + lib/windows64/include/SDL_gamecontroller.h | 1074 + lib/windows64/include/SDL_gesture.h | 117 + lib/windows64/include/SDL_guid.h | 100 + lib/windows64/include/SDL_haptic.h | 1341 ++ lib/windows64/include/SDL_hidapi.h | 451 + lib/windows64/include/SDL_hints.h | 2604 +++ lib/windows64/include/SDL_joystick.h | 1069 + lib/windows64/include/SDL_keyboard.h | 353 + lib/windows64/include/SDL_keycode.h | 358 + lib/windows64/include/SDL_loadso.h | 115 + lib/windows64/include/SDL_locale.h | 103 + lib/windows64/include/SDL_log.h | 404 + lib/windows64/include/SDL_main.h | 282 + lib/windows64/include/SDL_messagebox.h | 193 + lib/windows64/include/SDL_metal.h | 113 + lib/windows64/include/SDL_misc.h | 79 + lib/windows64/include/SDL_mouse.h | 464 + lib/windows64/include/SDL_mutex.h | 545 + lib/windows64/include/SDL_name.h | 33 + lib/windows64/include/SDL_opengl.h | 2132 ++ lib/windows64/include/SDL_opengl_glext.h | 13213 +++++++++++ lib/windows64/include/SDL_opengles.h | 39 + lib/windows64/include/SDL_opengles2.h | 52 + lib/windows64/include/SDL_opengles2_gl2.h | 656 + lib/windows64/include/SDL_opengles2_gl2ext.h | 4033 ++++ .../include/SDL_opengles2_gl2platform.h | 27 + .../include/SDL_opengles2_khrplatform.h | 311 + lib/windows64/include/SDL_pixels.h | 644 + lib/windows64/include/SDL_platform.h | 261 + lib/windows64/include/SDL_power.h | 87 + lib/windows64/include/SDL_quit.h | 58 + lib/windows64/include/SDL_rect.h | 376 + lib/windows64/include/SDL_render.h | 1924 ++ lib/windows64/include/SDL_revision.h | 7 + lib/windows64/include/SDL_rwops.h | 841 + lib/windows64/include/SDL_scancode.h | 438 + lib/windows64/include/SDL_sensor.h | 322 + lib/windows64/include/SDL_shape.h | 155 + lib/windows64/include/SDL_stdinc.h | 838 + lib/windows64/include/SDL_surface.h | 997 + lib/windows64/include/SDL_system.h | 623 + lib/windows64/include/SDL_syswm.h | 386 + lib/windows64/include/SDL_test.h | 69 + lib/windows64/include/SDL_test_assert.h | 105 + lib/windows64/include/SDL_test_common.h | 236 + lib/windows64/include/SDL_test_compare.h | 69 + lib/windows64/include/SDL_test_crc32.h | 124 + lib/windows64/include/SDL_test_font.h | 168 + lib/windows64/include/SDL_test_fuzzer.h | 386 + lib/windows64/include/SDL_test_harness.h | 134 + lib/windows64/include/SDL_test_images.h | 78 + lib/windows64/include/SDL_test_log.h | 67 + lib/windows64/include/SDL_test_md5.h | 129 + lib/windows64/include/SDL_test_memory.h | 63 + lib/windows64/include/SDL_test_random.h | 115 + lib/windows64/include/SDL_thread.h | 464 + lib/windows64/include/SDL_timer.h | 222 + lib/windows64/include/SDL_touch.h | 150 + lib/windows64/include/SDL_types.h | 29 + lib/windows64/include/SDL_version.h | 204 + lib/windows64/include/SDL_video.h | 2178 ++ lib/windows64/include/SDL_vulkan.h | 215 + lib/windows64/include/begin_code.h | 187 + lib/windows64/include/close_code.h | 40 + lib/windows64/include/discord_game_sdk.h | 429 + .../include/freetype/config/ftconfig.h | 467 + .../include/freetype/config/ftheader.h | 834 + .../include/freetype/config/ftmodule.h | 32 + .../include/freetype/config/ftoption.h | 886 + .../include/freetype/config/ftstdlib.h | 173 + lib/windows64/include/freetype/freetype.h | 4069 ++++ lib/windows64/include/freetype/ftadvanc.h | 187 + lib/windows64/include/freetype/ftautoh.h | 450 + lib/windows64/include/freetype/ftbbox.h | 101 + lib/windows64/include/freetype/ftbdf.h | 210 + lib/windows64/include/freetype/ftbitmap.h | 240 + lib/windows64/include/freetype/ftbzip2.h | 102 + lib/windows64/include/freetype/ftcache.h | 1057 + lib/windows64/include/freetype/ftcffdrv.h | 262 + lib/windows64/include/freetype/ftchapters.h | 121 + lib/windows64/include/freetype/ftcid.h | 168 + lib/windows64/include/freetype/fterrdef.h | 249 + lib/windows64/include/freetype/fterrors.h | 198 + lib/windows64/include/freetype/ftfntfmt.h | 92 + lib/windows64/include/freetype/ftgasp.h | 129 + lib/windows64/include/freetype/ftglyph.h | 605 + lib/windows64/include/freetype/ftgxval.h | 357 + lib/windows64/include/freetype/ftgzip.h | 148 + lib/windows64/include/freetype/ftimage.h | 1214 + lib/windows64/include/freetype/ftincrem.h | 354 + lib/windows64/include/freetype/ftlcdfil.h | 251 + lib/windows64/include/freetype/ftlist.h | 276 + lib/windows64/include/freetype/ftlzw.h | 99 + lib/windows64/include/freetype/ftmac.h | 274 + lib/windows64/include/freetype/ftmm.h | 379 + lib/windows64/include/freetype/ftmodapi.h | 669 + lib/windows64/include/freetype/ftmoderr.h | 194 + lib/windows64/include/freetype/ftotval.h | 204 + lib/windows64/include/freetype/ftoutln.h | 574 + lib/windows64/include/freetype/ftpfr.h | 172 + lib/windows64/include/freetype/ftrender.h | 232 + lib/windows64/include/freetype/ftsizes.h | 159 + lib/windows64/include/freetype/ftsnames.h | 200 + lib/windows64/include/freetype/ftstroke.h | 785 + lib/windows64/include/freetype/ftsynth.h | 84 + lib/windows64/include/freetype/ftsystem.h | 355 + lib/windows64/include/freetype/fttrigon.h | 350 + lib/windows64/include/freetype/ftttdrv.h | 233 + lib/windows64/include/freetype/fttypes.h | 602 + lib/windows64/include/freetype/ftwinfnt.h | 275 + .../include/freetype/internal/autohint.h | 244 + .../include/freetype/internal/ftcalc.h | 406 + .../include/freetype/internal/ftdebug.h | 255 + .../include/freetype/internal/ftdriver.h | 409 + .../include/freetype/internal/ftgloadr.h | 172 + .../include/freetype/internal/ftmemory.h | 386 + .../include/freetype/internal/ftobjs.h | 1571 ++ .../include/freetype/internal/ftpic.h | 71 + .../include/freetype/internal/ftrfork.h | 266 + .../include/freetype/internal/ftserv.h | 763 + .../include/freetype/internal/ftstream.h | 536 + .../include/freetype/internal/fttrace.h | 154 + .../include/freetype/internal/ftvalid.h | 159 + .../include/freetype/internal/internal.h | 63 + .../include/freetype/internal/psaux.h | 877 + .../include/freetype/internal/pshints.h | 722 + .../freetype/internal/services/svbdf.h | 82 + .../freetype/internal/services/svcid.h | 90 + .../freetype/internal/services/svfntfmt.h | 55 + .../freetype/internal/services/svgldict.h | 88 + .../freetype/internal/services/svgxval.h | 72 + .../freetype/internal/services/svkern.h | 51 + .../include/freetype/internal/services/svmm.h | 113 + .../freetype/internal/services/svotval.h | 55 + .../freetype/internal/services/svpfr.h | 66 + .../freetype/internal/services/svpostnm.h | 81 + .../freetype/internal/services/svprop.h | 81 + .../freetype/internal/services/svpscmap.h | 177 + .../freetype/internal/services/svpsinfo.h | 111 + .../freetype/internal/services/svsfnt.h | 103 + .../freetype/internal/services/svttcmap.h | 105 + .../freetype/internal/services/svtteng.h | 53 + .../freetype/internal/services/svttglyf.h | 69 + .../freetype/internal/services/svwinfnt.h | 50 + .../include/freetype/internal/sfnt.h | 711 + .../include/freetype/internal/t1types.h | 255 + .../include/freetype/internal/tttypes.h | 1514 ++ lib/windows64/include/freetype/t1tables.h | 761 + lib/windows64/include/freetype/ttnameid.h | 1237 + lib/windows64/include/freetype/tttables.h | 829 + lib/windows64/include/freetype/tttags.h | 111 + lib/windows64/include/freetype/ttunpat.h | 60 + lib/windows64/include/ft2build.h | 40 + lib/windows64/include/ftoption.h | 886 + lib/windows64/include/jemalloc/jemalloc.h | 377 + lib/windows64/include/ogg/config_types.h | 25 + lib/windows64/include/ogg/ogg.h | 210 + lib/windows64/include/ogg/os_types.h | 147 + lib/windows64/include/png.h | 3265 +++ lib/windows64/include/pngconf.h | 622 + lib/windows64/include/pnglibconf.h | 216 + lib/windows64/include/steam/isteamapplist.h | 63 + lib/windows64/include/steam/isteamapps.h | 176 + lib/windows64/include/steam/isteamappticket.h | 28 + lib/windows64/include/steam/isteamclient.h | 520 + .../include/steam/isteamcontroller.h | 251 + lib/windows64/include/steam/isteamfriends.h | 636 + .../include/steam/isteamgamecoordinator.h | 75 + .../include/steam/isteamgameserver.h | 387 + .../include/steam/isteamgameserverstats.h | 101 + .../include/steam/isteamhtmlsurface.h | 453 + lib/windows64/include/steam/isteamhttp.h | 210 + lib/windows64/include/steam/isteaminventory.h | 357 + .../include/steam/isteammasterserverupdater.h | 1 + .../include/steam/isteammatchmaking.h | 751 + lib/windows64/include/steam/isteammusic.h | 67 + .../include/steam/isteammusicremote.h | 129 + .../include/steam/isteamnetworking.h | 306 + .../include/steam/isteamps3overlayrenderer.h | 91 + .../include/steam/isteamremotestorage.h | 681 + .../include/steam/isteamscreenshots.h | 116 + lib/windows64/include/steam/isteamugc.h | 453 + .../include/steam/isteamunifiedmessages.h | 63 + lib/windows64/include/steam/isteamuser.h | 355 + lib/windows64/include/steam/isteamuserstats.h | 476 + lib/windows64/include/steam/isteamutils.h | 254 + lib/windows64/include/steam/isteamvideo.h | 60 + .../include/steam/matchmakingtypes.h | 251 + lib/windows64/include/steam/steam_api.h | 394 + lib/windows64/include/steam/steam_api.json | 7576 ++++++ lib/windows64/include/steam/steam_api_flat.h | 802 + .../include/steam/steam_api_internal.h | 327 + .../include/steam/steam_api_interop.cs | 10470 +++++++++ .../include/steam/steam_gameserver.h | 237 + .../include/steam/steamclientpublic.h | 1255 + .../include/steam/steamencryptedappticket.h | 32 + lib/windows64/include/steam/steamhttpenums.h | 98 + lib/windows64/include/steam/steamps3params.h | 112 + lib/windows64/include/steam/steamtypes.h | 181 + lib/windows64/include/steam/steamuniverse.h | 27 + lib/windows64/include/strings.h | 59 + lib/windows64/include/vorbis/codec.h | 243 + lib/windows64/include/vorbis/vorbisenc.h | 436 + lib/windows64/include/vorbis/vorbisfile.h | 206 + lib/windows64/include/windows_extra.h | 6 + lib/windows64/include/zconf.h | 511 + lib/windows64/include/zlib.h | 1768 ++ lib/windows64/jemalloc.lib | Bin 0 -> 580456 bytes lib/windows64/libpng16.lib | Bin 0 -> 1439808 bytes lib/windows64/ogg.lib | Bin 0 -> 42590 bytes lib/windows64/steam_api.lib | Bin 0 -> 273092 bytes lib/windows64/steam_api64.dll | Bin 0 -> 239904 bytes lib/windows64/vorbis.lib | Bin 0 -> 1463396 bytes lib/windows64/vorbisfile.lib | Bin 0 -> 141820 bytes lib/windows64/zlib.lib | Bin 0 -> 15288 bytes lib/windows64/zlib1.dll | Bin 0 -> 186880 bytes .../application/StarApplicationController.hpp | 2 + .../application/StarMainApplication_sdl.cpp | 104 +- source/client/StarClientApplication.cpp | 2 +- source/frontend/StarErrorScreen.cpp | 3 +- source/frontend/StarMainInterface.cpp | 3 +- source/frontend/StarTitleScreen.cpp | 3 +- source/windowing/StarGuiContext.cpp | 9 + source/windowing/StarGuiContext.hpp | 3 + 843 files changed, 510851 insertions(+), 12 deletions(-) create mode 100644 lib/linux/include/GL/gl.h create mode 100644 lib/linux/include/GL/gl_mangle.h create mode 100644 lib/linux/include/GL/glew.h create mode 100644 lib/linux/include/GL/glext.h create mode 100644 lib/linux/include/GL/glu.h create mode 100644 lib/linux/include/GL/glu_mangle.h create mode 100644 lib/linux/include/GL/glx.h create mode 100644 lib/linux/include/GL/glx_mangle.h create mode 100644 lib/linux/include/GL/glxew.h create mode 100644 lib/linux/include/GL/glxext.h create mode 100644 lib/linux/include/GL/internal/dri_interface.h create mode 100644 lib/linux/include/GL/wglew.h create mode 100644 lib/linux/include/config/ftconfig.h create mode 100644 lib/linux/include/config/ftheader.h create mode 100644 lib/linux/include/config/ftmodule.h create mode 100644 lib/linux/include/config/ftoption.h create mode 100644 lib/linux/include/config/ftstdlib.h create mode 100644 lib/linux/include/freetype.h create mode 100644 lib/linux/include/ft2build.h create mode 100644 lib/linux/include/ftadvanc.h create mode 100644 lib/linux/include/ftautoh.h create mode 100644 lib/linux/include/ftbbox.h create mode 100644 lib/linux/include/ftbdf.h create mode 100644 lib/linux/include/ftbitmap.h create mode 100644 lib/linux/include/ftbzip2.h create mode 100644 lib/linux/include/ftcache.h create mode 100644 lib/linux/include/ftcffdrv.h create mode 100644 lib/linux/include/ftchapters.h create mode 100644 lib/linux/include/ftcid.h create mode 100644 lib/linux/include/fterrdef.h create mode 100644 lib/linux/include/fterrors.h create mode 100644 lib/linux/include/ftgasp.h create mode 100644 lib/linux/include/ftglyph.h create mode 100644 lib/linux/include/ftgxval.h create mode 100644 lib/linux/include/ftgzip.h create mode 100644 lib/linux/include/ftimage.h create mode 100644 lib/linux/include/ftincrem.h create mode 100644 lib/linux/include/ftlcdfil.h create mode 100644 lib/linux/include/ftlist.h create mode 100644 lib/linux/include/ftlzw.h create mode 100644 lib/linux/include/ftmac.h create mode 100644 lib/linux/include/ftmm.h create mode 100644 lib/linux/include/ftmodapi.h create mode 100644 lib/linux/include/ftmoderr.h create mode 100644 lib/linux/include/ftotval.h create mode 100644 lib/linux/include/ftoutln.h create mode 100644 lib/linux/include/ftpfr.h create mode 100644 lib/linux/include/ftrender.h create mode 100644 lib/linux/include/ftsizes.h create mode 100644 lib/linux/include/ftsnames.h create mode 100644 lib/linux/include/ftstroke.h create mode 100644 lib/linux/include/ftsynth.h create mode 100644 lib/linux/include/ftsystem.h create mode 100644 lib/linux/include/fttrigon.h create mode 100644 lib/linux/include/ftttdrv.h create mode 100644 lib/linux/include/fttypes.h create mode 100644 lib/linux/include/ftwinfnt.h create mode 100644 lib/linux/include/ftxf86.h create mode 100644 lib/linux/include/internal/autohint.h create mode 100644 lib/linux/include/internal/ftcalc.h create mode 100644 lib/linux/include/internal/ftdebug.h create mode 100644 lib/linux/include/internal/ftdriver.h create mode 100644 lib/linux/include/internal/ftgloadr.h create mode 100644 lib/linux/include/internal/ftmemory.h create mode 100644 lib/linux/include/internal/ftobjs.h create mode 100644 lib/linux/include/internal/ftpic.h create mode 100644 lib/linux/include/internal/ftrfork.h create mode 100644 lib/linux/include/internal/ftserv.h create mode 100644 lib/linux/include/internal/ftstream.h create mode 100644 lib/linux/include/internal/fttrace.h create mode 100644 lib/linux/include/internal/ftvalid.h create mode 100644 lib/linux/include/internal/internal.h create mode 100644 lib/linux/include/internal/psaux.h create mode 100644 lib/linux/include/internal/pshints.h create mode 100644 lib/linux/include/internal/services/svbdf.h create mode 100644 lib/linux/include/internal/services/svcid.h create mode 100644 lib/linux/include/internal/services/svgldict.h create mode 100644 lib/linux/include/internal/services/svgxval.h create mode 100644 lib/linux/include/internal/services/svkern.h create mode 100644 lib/linux/include/internal/services/svmm.h create mode 100644 lib/linux/include/internal/services/svotval.h create mode 100644 lib/linux/include/internal/services/svpfr.h create mode 100644 lib/linux/include/internal/services/svpostnm.h create mode 100644 lib/linux/include/internal/services/svprop.h create mode 100644 lib/linux/include/internal/services/svpscmap.h create mode 100644 lib/linux/include/internal/services/svpsinfo.h create mode 100644 lib/linux/include/internal/services/svsfnt.h create mode 100644 lib/linux/include/internal/services/svttcmap.h create mode 100644 lib/linux/include/internal/services/svtteng.h create mode 100644 lib/linux/include/internal/services/svttglyf.h create mode 100644 lib/linux/include/internal/services/svwinfnt.h create mode 100644 lib/linux/include/internal/services/svxf86nm.h create mode 100644 lib/linux/include/internal/sfnt.h create mode 100644 lib/linux/include/internal/t1types.h create mode 100644 lib/linux/include/internal/tttypes.h create mode 100644 lib/linux/include/jemalloc/jemalloc.h create mode 100644 lib/linux/include/ogg/config_types.h create mode 100644 lib/linux/include/ogg/ogg.h create mode 100644 lib/linux/include/ogg/os_types.h create mode 100644 lib/linux/include/png.h create mode 100644 lib/linux/include/pngconf.h create mode 100644 lib/linux/include/steam/isteamapplist.h create mode 100644 lib/linux/include/steam/isteamapps.h create mode 100644 lib/linux/include/steam/isteamappticket.h create mode 100644 lib/linux/include/steam/isteamclient.h create mode 100644 lib/linux/include/steam/isteamcontroller.h create mode 100644 lib/linux/include/steam/isteamfriends.h create mode 100644 lib/linux/include/steam/isteamgamecoordinator.h create mode 100644 lib/linux/include/steam/isteamgameserver.h create mode 100644 lib/linux/include/steam/isteamgameserverstats.h create mode 100644 lib/linux/include/steam/isteamhtmlsurface.h create mode 100644 lib/linux/include/steam/isteamhttp.h create mode 100644 lib/linux/include/steam/isteaminventory.h create mode 100644 lib/linux/include/steam/isteammasterserverupdater.h create mode 100644 lib/linux/include/steam/isteammatchmaking.h create mode 100644 lib/linux/include/steam/isteammusic.h create mode 100644 lib/linux/include/steam/isteammusicremote.h create mode 100644 lib/linux/include/steam/isteamnetworking.h create mode 100644 lib/linux/include/steam/isteamps3overlayrenderer.h create mode 100644 lib/linux/include/steam/isteamremotestorage.h create mode 100644 lib/linux/include/steam/isteamscreenshots.h create mode 100644 lib/linux/include/steam/isteamugc.h create mode 100644 lib/linux/include/steam/isteamunifiedmessages.h create mode 100644 lib/linux/include/steam/isteamuser.h create mode 100644 lib/linux/include/steam/isteamuserstats.h create mode 100644 lib/linux/include/steam/isteamutils.h create mode 100644 lib/linux/include/steam/isteamvideo.h create mode 100644 lib/linux/include/steam/matchmakingtypes.h create mode 100644 lib/linux/include/steam/steam_api.h create mode 100644 lib/linux/include/steam/steam_api.json create mode 100644 lib/linux/include/steam/steam_api_flat.h create mode 100644 lib/linux/include/steam/steam_api_internal.h create mode 100644 lib/linux/include/steam/steam_api_interop.cs create mode 100644 lib/linux/include/steam/steam_gameserver.h create mode 100644 lib/linux/include/steam/steamclientpublic.h create mode 100644 lib/linux/include/steam/steamencryptedappticket.h create mode 100644 lib/linux/include/steam/steamhttpenums.h create mode 100644 lib/linux/include/steam/steamps3params.h create mode 100644 lib/linux/include/steam/steamtypes.h create mode 100644 lib/linux/include/steam/steamuniverse.h create mode 100644 lib/linux/include/t1tables.h create mode 100644 lib/linux/include/ttnameid.h create mode 100644 lib/linux/include/tttables.h create mode 100644 lib/linux/include/tttags.h create mode 100644 lib/linux/include/ttunpat.h create mode 100644 lib/linux/include/vorbis/codec.h create mode 100644 lib/linux/include/vorbis/vorbisenc.h create mode 100644 lib/linux/include/vorbis/vorbisfile.h create mode 100644 lib/linux/include/zconf.h create mode 100644 lib/linux/include/zlib.h create mode 100644 lib/linux/libGLEW.a create mode 100644 lib/linux/libcrypto.a create mode 100644 lib/linux/libfreetype.a create mode 100644 lib/linux/libjemalloc.a create mode 100644 lib/linux/libogg.a create mode 100644 lib/linux/libpng.a create mode 100644 lib/linux/libsteam_api.so create mode 100644 lib/linux/libvorbis.a create mode 100644 lib/linux/libvorbisenc.a create mode 100644 lib/linux/libvorbisfile.a create mode 100644 lib/linux/libz.a create mode 100644 lib/osx/include/GL/glew.h create mode 100644 lib/osx/include/GL/glxew.h create mode 100644 lib/osx/include/GL/wglew.h create mode 100644 lib/osx/include/SDL.h create mode 100644 lib/osx/include/SDL_assert.h create mode 100644 lib/osx/include/SDL_atomic.h create mode 100644 lib/osx/include/SDL_audio.h create mode 100644 lib/osx/include/SDL_bits.h create mode 100644 lib/osx/include/SDL_blendmode.h create mode 100644 lib/osx/include/SDL_clipboard.h create mode 100644 lib/osx/include/SDL_config.h create mode 100644 lib/osx/include/SDL_config_android.h create mode 100644 lib/osx/include/SDL_config_iphoneos.h create mode 100644 lib/osx/include/SDL_config_macosx.h create mode 100644 lib/osx/include/SDL_config_minimal.h create mode 100644 lib/osx/include/SDL_config_pandora.h create mode 100644 lib/osx/include/SDL_config_psp.h create mode 100644 lib/osx/include/SDL_config_windows.h create mode 100644 lib/osx/include/SDL_config_winrt.h create mode 100644 lib/osx/include/SDL_config_wiz.h create mode 100644 lib/osx/include/SDL_copying.h create mode 100644 lib/osx/include/SDL_cpuinfo.h create mode 100644 lib/osx/include/SDL_egl.h create mode 100644 lib/osx/include/SDL_endian.h create mode 100644 lib/osx/include/SDL_error.h create mode 100644 lib/osx/include/SDL_events.h create mode 100644 lib/osx/include/SDL_filesystem.h create mode 100644 lib/osx/include/SDL_gamecontroller.h create mode 100644 lib/osx/include/SDL_gesture.h create mode 100644 lib/osx/include/SDL_haptic.h create mode 100644 lib/osx/include/SDL_hints.h create mode 100644 lib/osx/include/SDL_joystick.h create mode 100644 lib/osx/include/SDL_keyboard.h create mode 100644 lib/osx/include/SDL_keycode.h create mode 100644 lib/osx/include/SDL_loadso.h create mode 100644 lib/osx/include/SDL_log.h create mode 100644 lib/osx/include/SDL_main.h create mode 100644 lib/osx/include/SDL_messagebox.h create mode 100644 lib/osx/include/SDL_mouse.h create mode 100644 lib/osx/include/SDL_mutex.h create mode 100644 lib/osx/include/SDL_name.h create mode 100644 lib/osx/include/SDL_opengl.h create mode 100644 lib/osx/include/SDL_opengl_glext.h create mode 100644 lib/osx/include/SDL_opengles.h create mode 100644 lib/osx/include/SDL_opengles2.h create mode 100644 lib/osx/include/SDL_opengles2_gl2.h create mode 100644 lib/osx/include/SDL_opengles2_gl2ext.h create mode 100644 lib/osx/include/SDL_opengles2_gl2platform.h create mode 100644 lib/osx/include/SDL_opengles2_khrplatform.h create mode 100644 lib/osx/include/SDL_pixels.h create mode 100644 lib/osx/include/SDL_platform.h create mode 100644 lib/osx/include/SDL_power.h create mode 100644 lib/osx/include/SDL_quit.h create mode 100644 lib/osx/include/SDL_rect.h create mode 100644 lib/osx/include/SDL_render.h create mode 100644 lib/osx/include/SDL_revision.h create mode 100644 lib/osx/include/SDL_rwops.h create mode 100644 lib/osx/include/SDL_scancode.h create mode 100644 lib/osx/include/SDL_shape.h create mode 100644 lib/osx/include/SDL_stdinc.h create mode 100644 lib/osx/include/SDL_surface.h create mode 100644 lib/osx/include/SDL_system.h create mode 100644 lib/osx/include/SDL_syswm.h create mode 100644 lib/osx/include/SDL_thread.h create mode 100644 lib/osx/include/SDL_timer.h create mode 100644 lib/osx/include/SDL_touch.h create mode 100644 lib/osx/include/SDL_types.h create mode 100644 lib/osx/include/SDL_version.h create mode 100644 lib/osx/include/SDL_video.h create mode 100644 lib/osx/include/begin_code.h create mode 100644 lib/osx/include/close_code.h create mode 100644 lib/osx/include/discord_game_sdk.h create mode 100644 lib/osx/include/freetype/config/ftconfig.h create mode 100644 lib/osx/include/freetype/config/ftheader.h create mode 100644 lib/osx/include/freetype/config/ftmodule.h create mode 100644 lib/osx/include/freetype/config/ftoption.h create mode 100644 lib/osx/include/freetype/config/ftstdlib.h create mode 100644 lib/osx/include/freetype/freetype.h create mode 100644 lib/osx/include/freetype/ftadvanc.h create mode 100644 lib/osx/include/freetype/ftautoh.h create mode 100644 lib/osx/include/freetype/ftbbox.h create mode 100644 lib/osx/include/freetype/ftbdf.h create mode 100644 lib/osx/include/freetype/ftbitmap.h create mode 100644 lib/osx/include/freetype/ftbzip2.h create mode 100644 lib/osx/include/freetype/ftcache.h create mode 100644 lib/osx/include/freetype/ftcffdrv.h create mode 100644 lib/osx/include/freetype/ftchapters.h create mode 100644 lib/osx/include/freetype/ftcid.h create mode 100644 lib/osx/include/freetype/fterrdef.h create mode 100644 lib/osx/include/freetype/fterrors.h create mode 100644 lib/osx/include/freetype/ftfntfmt.h create mode 100644 lib/osx/include/freetype/ftgasp.h create mode 100644 lib/osx/include/freetype/ftglyph.h create mode 100644 lib/osx/include/freetype/ftgxval.h create mode 100644 lib/osx/include/freetype/ftgzip.h create mode 100644 lib/osx/include/freetype/ftimage.h create mode 100644 lib/osx/include/freetype/ftincrem.h create mode 100644 lib/osx/include/freetype/ftlcdfil.h create mode 100644 lib/osx/include/freetype/ftlist.h create mode 100644 lib/osx/include/freetype/ftlzw.h create mode 100644 lib/osx/include/freetype/ftmac.h create mode 100644 lib/osx/include/freetype/ftmm.h create mode 100644 lib/osx/include/freetype/ftmodapi.h create mode 100644 lib/osx/include/freetype/ftmoderr.h create mode 100644 lib/osx/include/freetype/ftotval.h create mode 100644 lib/osx/include/freetype/ftoutln.h create mode 100644 lib/osx/include/freetype/ftpfr.h create mode 100644 lib/osx/include/freetype/ftrender.h create mode 100644 lib/osx/include/freetype/ftsizes.h create mode 100644 lib/osx/include/freetype/ftsnames.h create mode 100644 lib/osx/include/freetype/ftstroke.h create mode 100644 lib/osx/include/freetype/ftsynth.h create mode 100644 lib/osx/include/freetype/ftsystem.h create mode 100644 lib/osx/include/freetype/fttrigon.h create mode 100644 lib/osx/include/freetype/ftttdrv.h create mode 100644 lib/osx/include/freetype/fttypes.h create mode 100644 lib/osx/include/freetype/ftwinfnt.h create mode 100644 lib/osx/include/freetype/internal/autohint.h create mode 100644 lib/osx/include/freetype/internal/ftcalc.h create mode 100644 lib/osx/include/freetype/internal/ftdebug.h create mode 100644 lib/osx/include/freetype/internal/ftdriver.h create mode 100644 lib/osx/include/freetype/internal/ftgloadr.h create mode 100644 lib/osx/include/freetype/internal/ftmemory.h create mode 100644 lib/osx/include/freetype/internal/ftobjs.h create mode 100644 lib/osx/include/freetype/internal/ftpic.h create mode 100644 lib/osx/include/freetype/internal/ftrfork.h create mode 100644 lib/osx/include/freetype/internal/ftserv.h create mode 100644 lib/osx/include/freetype/internal/ftstream.h create mode 100644 lib/osx/include/freetype/internal/fttrace.h create mode 100644 lib/osx/include/freetype/internal/ftvalid.h create mode 100644 lib/osx/include/freetype/internal/internal.h create mode 100644 lib/osx/include/freetype/internal/psaux.h create mode 100644 lib/osx/include/freetype/internal/pshints.h create mode 100644 lib/osx/include/freetype/internal/services/svbdf.h create mode 100644 lib/osx/include/freetype/internal/services/svcid.h create mode 100644 lib/osx/include/freetype/internal/services/svfntfmt.h create mode 100644 lib/osx/include/freetype/internal/services/svgldict.h create mode 100644 lib/osx/include/freetype/internal/services/svgxval.h create mode 100644 lib/osx/include/freetype/internal/services/svkern.h create mode 100644 lib/osx/include/freetype/internal/services/svmm.h create mode 100644 lib/osx/include/freetype/internal/services/svotval.h create mode 100644 lib/osx/include/freetype/internal/services/svpfr.h create mode 100644 lib/osx/include/freetype/internal/services/svpostnm.h create mode 100644 lib/osx/include/freetype/internal/services/svprop.h create mode 100644 lib/osx/include/freetype/internal/services/svpscmap.h create mode 100644 lib/osx/include/freetype/internal/services/svpsinfo.h create mode 100644 lib/osx/include/freetype/internal/services/svsfnt.h create mode 100644 lib/osx/include/freetype/internal/services/svttcmap.h create mode 100644 lib/osx/include/freetype/internal/services/svtteng.h create mode 100644 lib/osx/include/freetype/internal/services/svttglyf.h create mode 100644 lib/osx/include/freetype/internal/services/svwinfnt.h create mode 100644 lib/osx/include/freetype/internal/sfnt.h create mode 100644 lib/osx/include/freetype/internal/t1types.h create mode 100644 lib/osx/include/freetype/internal/tttypes.h create mode 100644 lib/osx/include/freetype/t1tables.h create mode 100644 lib/osx/include/freetype/ttnameid.h create mode 100644 lib/osx/include/freetype/tttables.h create mode 100644 lib/osx/include/freetype/tttags.h create mode 100644 lib/osx/include/freetype/ttunpat.h create mode 100644 lib/osx/include/ft2build.h create mode 100644 lib/osx/include/jemalloc/jemalloc.h create mode 100644 lib/osx/include/ogg/config_types.h create mode 100644 lib/osx/include/ogg/ogg.h create mode 100644 lib/osx/include/ogg/os_types.h create mode 100644 lib/osx/include/png.h create mode 100644 lib/osx/include/pngconf.h create mode 100644 lib/osx/include/pnglibconf.h create mode 100644 lib/osx/include/steam/isteamapplist.h create mode 100644 lib/osx/include/steam/isteamapps.h create mode 100644 lib/osx/include/steam/isteamappticket.h create mode 100644 lib/osx/include/steam/isteamclient.h create mode 100644 lib/osx/include/steam/isteamcontroller.h create mode 100644 lib/osx/include/steam/isteamfriends.h create mode 100644 lib/osx/include/steam/isteamgamecoordinator.h create mode 100644 lib/osx/include/steam/isteamgameserver.h create mode 100644 lib/osx/include/steam/isteamgameserverstats.h create mode 100644 lib/osx/include/steam/isteamhtmlsurface.h create mode 100644 lib/osx/include/steam/isteamhttp.h create mode 100644 lib/osx/include/steam/isteaminventory.h create mode 100644 lib/osx/include/steam/isteammasterserverupdater.h create mode 100644 lib/osx/include/steam/isteammatchmaking.h create mode 100644 lib/osx/include/steam/isteammusic.h create mode 100644 lib/osx/include/steam/isteammusicremote.h create mode 100644 lib/osx/include/steam/isteamnetworking.h create mode 100644 lib/osx/include/steam/isteamps3overlayrenderer.h create mode 100644 lib/osx/include/steam/isteamremotestorage.h create mode 100644 lib/osx/include/steam/isteamscreenshots.h create mode 100644 lib/osx/include/steam/isteamugc.h create mode 100644 lib/osx/include/steam/isteamunifiedmessages.h create mode 100644 lib/osx/include/steam/isteamuser.h create mode 100644 lib/osx/include/steam/isteamuserstats.h create mode 100644 lib/osx/include/steam/isteamutils.h create mode 100644 lib/osx/include/steam/isteamvideo.h create mode 100644 lib/osx/include/steam/matchmakingtypes.h create mode 100644 lib/osx/include/steam/steam_api.h create mode 100644 lib/osx/include/steam/steam_api.json create mode 100644 lib/osx/include/steam/steam_api_flat.h create mode 100644 lib/osx/include/steam/steam_api_internal.h create mode 100644 lib/osx/include/steam/steam_api_interop.cs create mode 100644 lib/osx/include/steam/steam_gameserver.h create mode 100644 lib/osx/include/steam/steamclientpublic.h create mode 100644 lib/osx/include/steam/steamencryptedappticket.h create mode 100644 lib/osx/include/steam/steamhttpenums.h create mode 100644 lib/osx/include/steam/steamps3params.h create mode 100644 lib/osx/include/steam/steamtypes.h create mode 100644 lib/osx/include/steam/steamuniverse.h create mode 100644 lib/osx/include/vorbis/codec.h create mode 100644 lib/osx/include/vorbis/vorbisenc.h create mode 100644 lib/osx/include/vorbis/vorbisfile.h create mode 100644 lib/osx/include/zconf.h create mode 100644 lib/osx/include/zlib.h create mode 100644 lib/osx/libGLEW.a create mode 100644 lib/osx/libSDL2.a create mode 100644 lib/osx/libdiscord_game_sdk.dylib create mode 100644 lib/osx/libfreetype.a create mode 100644 lib/osx/libjemalloc.a create mode 100644 lib/osx/libogg.a create mode 100644 lib/osx/libpcre.a create mode 100644 lib/osx/libpng.a create mode 100644 lib/osx/libsteam_api.dylib create mode 100644 lib/osx/libvorbis.a create mode 100644 lib/osx/libvorbisfile.a create mode 100644 lib/osx/libz.a create mode 100644 lib/windows32/SDL2.dll create mode 100644 lib/windows32/SDL2.lib create mode 100644 lib/windows32/cygogg-0.dll create mode 100644 lib/windows32/cygvorbis-0.dll create mode 100644 lib/windows32/cygvorbisenc-2.dll create mode 100644 lib/windows32/cygvorbisfile-3.dll create mode 100644 lib/windows32/discord_game_sdk.dll create mode 100644 lib/windows32/discord_game_sdk.lib create mode 100644 lib/windows32/freetype.lib create mode 100644 lib/windows32/freetype6.dll create mode 100644 lib/windows32/glew32.dll create mode 100644 lib/windows32/glew32.lib create mode 100644 lib/windows32/include/C99/stdbool.h create mode 100644 lib/windows32/include/C99/stdint.h create mode 100644 lib/windows32/include/GL/glew.h create mode 100644 lib/windows32/include/GL/glxew.h create mode 100644 lib/windows32/include/GL/wglew.h create mode 100644 lib/windows32/include/SDL.h create mode 100644 lib/windows32/include/SDL_assert.h create mode 100644 lib/windows32/include/SDL_atomic.h create mode 100644 lib/windows32/include/SDL_audio.h create mode 100644 lib/windows32/include/SDL_bits.h create mode 100644 lib/windows32/include/SDL_blendmode.h create mode 100644 lib/windows32/include/SDL_clipboard.h create mode 100644 lib/windows32/include/SDL_config.h create mode 100644 lib/windows32/include/SDL_cpuinfo.h create mode 100644 lib/windows32/include/SDL_egl.h create mode 100644 lib/windows32/include/SDL_endian.h create mode 100644 lib/windows32/include/SDL_error.h create mode 100644 lib/windows32/include/SDL_events.h create mode 100644 lib/windows32/include/SDL_filesystem.h create mode 100644 lib/windows32/include/SDL_gamecontroller.h create mode 100644 lib/windows32/include/SDL_gesture.h create mode 100644 lib/windows32/include/SDL_guid.h create mode 100644 lib/windows32/include/SDL_haptic.h create mode 100644 lib/windows32/include/SDL_hidapi.h create mode 100644 lib/windows32/include/SDL_hints.h create mode 100644 lib/windows32/include/SDL_joystick.h create mode 100644 lib/windows32/include/SDL_keyboard.h create mode 100644 lib/windows32/include/SDL_keycode.h create mode 100644 lib/windows32/include/SDL_loadso.h create mode 100644 lib/windows32/include/SDL_locale.h create mode 100644 lib/windows32/include/SDL_log.h create mode 100644 lib/windows32/include/SDL_main.h create mode 100644 lib/windows32/include/SDL_messagebox.h create mode 100644 lib/windows32/include/SDL_metal.h create mode 100644 lib/windows32/include/SDL_misc.h create mode 100644 lib/windows32/include/SDL_mouse.h create mode 100644 lib/windows32/include/SDL_mutex.h create mode 100644 lib/windows32/include/SDL_name.h create mode 100644 lib/windows32/include/SDL_opengl.h create mode 100644 lib/windows32/include/SDL_opengl_glext.h create mode 100644 lib/windows32/include/SDL_opengles.h create mode 100644 lib/windows32/include/SDL_opengles2.h create mode 100644 lib/windows32/include/SDL_opengles2_gl2.h create mode 100644 lib/windows32/include/SDL_opengles2_gl2ext.h create mode 100644 lib/windows32/include/SDL_opengles2_gl2platform.h create mode 100644 lib/windows32/include/SDL_opengles2_khrplatform.h create mode 100644 lib/windows32/include/SDL_pixels.h create mode 100644 lib/windows32/include/SDL_platform.h create mode 100644 lib/windows32/include/SDL_power.h create mode 100644 lib/windows32/include/SDL_quit.h create mode 100644 lib/windows32/include/SDL_rect.h create mode 100644 lib/windows32/include/SDL_render.h create mode 100644 lib/windows32/include/SDL_revision.h create mode 100644 lib/windows32/include/SDL_rwops.h create mode 100644 lib/windows32/include/SDL_scancode.h create mode 100644 lib/windows32/include/SDL_sensor.h create mode 100644 lib/windows32/include/SDL_shape.h create mode 100644 lib/windows32/include/SDL_stdinc.h create mode 100644 lib/windows32/include/SDL_surface.h create mode 100644 lib/windows32/include/SDL_system.h create mode 100644 lib/windows32/include/SDL_syswm.h create mode 100644 lib/windows32/include/SDL_test.h create mode 100644 lib/windows32/include/SDL_test_assert.h create mode 100644 lib/windows32/include/SDL_test_common.h create mode 100644 lib/windows32/include/SDL_test_compare.h create mode 100644 lib/windows32/include/SDL_test_crc32.h create mode 100644 lib/windows32/include/SDL_test_font.h create mode 100644 lib/windows32/include/SDL_test_fuzzer.h create mode 100644 lib/windows32/include/SDL_test_harness.h create mode 100644 lib/windows32/include/SDL_test_images.h create mode 100644 lib/windows32/include/SDL_test_log.h create mode 100644 lib/windows32/include/SDL_test_md5.h create mode 100644 lib/windows32/include/SDL_test_memory.h create mode 100644 lib/windows32/include/SDL_test_random.h create mode 100644 lib/windows32/include/SDL_thread.h create mode 100644 lib/windows32/include/SDL_timer.h create mode 100644 lib/windows32/include/SDL_touch.h create mode 100644 lib/windows32/include/SDL_types.h create mode 100644 lib/windows32/include/SDL_version.h create mode 100644 lib/windows32/include/SDL_video.h create mode 100644 lib/windows32/include/SDL_vulkan.h create mode 100644 lib/windows32/include/begin_code.h create mode 100644 lib/windows32/include/close_code.h create mode 100644 lib/windows32/include/discord_game_sdk.h create mode 100644 lib/windows32/include/freetype/config/ftconfig.h create mode 100644 lib/windows32/include/freetype/config/ftheader.h create mode 100644 lib/windows32/include/freetype/config/ftmodule.h create mode 100644 lib/windows32/include/freetype/config/ftoption.h create mode 100644 lib/windows32/include/freetype/config/ftstdlib.h create mode 100644 lib/windows32/include/freetype/freetype.h create mode 100644 lib/windows32/include/freetype/ftadvanc.h create mode 100644 lib/windows32/include/freetype/ftbbox.h create mode 100644 lib/windows32/include/freetype/ftbdf.h create mode 100644 lib/windows32/include/freetype/ftbitmap.h create mode 100644 lib/windows32/include/freetype/ftcache.h create mode 100644 lib/windows32/include/freetype/ftchapters.h create mode 100644 lib/windows32/include/freetype/ftcid.h create mode 100644 lib/windows32/include/freetype/fterrdef.h create mode 100644 lib/windows32/include/freetype/fterrors.h create mode 100644 lib/windows32/include/freetype/ftgasp.h create mode 100644 lib/windows32/include/freetype/ftglyph.h create mode 100644 lib/windows32/include/freetype/ftgxval.h create mode 100644 lib/windows32/include/freetype/ftgzip.h create mode 100644 lib/windows32/include/freetype/ftimage.h create mode 100644 lib/windows32/include/freetype/ftincrem.h create mode 100644 lib/windows32/include/freetype/ftlcdfil.h create mode 100644 lib/windows32/include/freetype/ftlist.h create mode 100644 lib/windows32/include/freetype/ftlzw.h create mode 100644 lib/windows32/include/freetype/ftmac.h create mode 100644 lib/windows32/include/freetype/ftmm.h create mode 100644 lib/windows32/include/freetype/ftmodapi.h create mode 100644 lib/windows32/include/freetype/ftmoderr.h create mode 100644 lib/windows32/include/freetype/ftotval.h create mode 100644 lib/windows32/include/freetype/ftoutln.h create mode 100644 lib/windows32/include/freetype/ftpfr.h create mode 100644 lib/windows32/include/freetype/ftrender.h create mode 100644 lib/windows32/include/freetype/ftsizes.h create mode 100644 lib/windows32/include/freetype/ftsnames.h create mode 100644 lib/windows32/include/freetype/ftstroke.h create mode 100644 lib/windows32/include/freetype/ftsynth.h create mode 100644 lib/windows32/include/freetype/ftsystem.h create mode 100644 lib/windows32/include/freetype/fttrigon.h create mode 100644 lib/windows32/include/freetype/fttypes.h create mode 100644 lib/windows32/include/freetype/ftwinfnt.h create mode 100644 lib/windows32/include/freetype/ftxf86.h create mode 100644 lib/windows32/include/freetype/t1tables.h create mode 100644 lib/windows32/include/freetype/ttnameid.h create mode 100644 lib/windows32/include/freetype/tttables.h create mode 100644 lib/windows32/include/freetype/tttags.h create mode 100644 lib/windows32/include/freetype/ttunpat.h create mode 100644 lib/windows32/include/ft2build.h create mode 100644 lib/windows32/include/jemalloc/jemalloc.h create mode 100644 lib/windows32/include/ogg/config_types.h create mode 100644 lib/windows32/include/ogg/ogg.h create mode 100644 lib/windows32/include/ogg/os_types.h create mode 100644 lib/windows32/include/png.h create mode 100644 lib/windows32/include/pngconf.h create mode 100644 lib/windows32/include/pnglibconf.h create mode 100644 lib/windows32/include/steam/isteamapplist.h create mode 100644 lib/windows32/include/steam/isteamapps.h create mode 100644 lib/windows32/include/steam/isteamappticket.h create mode 100644 lib/windows32/include/steam/isteamclient.h create mode 100644 lib/windows32/include/steam/isteamcontroller.h create mode 100644 lib/windows32/include/steam/isteamfriends.h create mode 100644 lib/windows32/include/steam/isteamgamecoordinator.h create mode 100644 lib/windows32/include/steam/isteamgameserver.h create mode 100644 lib/windows32/include/steam/isteamgameserverstats.h create mode 100644 lib/windows32/include/steam/isteamhtmlsurface.h create mode 100644 lib/windows32/include/steam/isteamhttp.h create mode 100644 lib/windows32/include/steam/isteaminventory.h create mode 100644 lib/windows32/include/steam/isteammasterserverupdater.h create mode 100644 lib/windows32/include/steam/isteammatchmaking.h create mode 100644 lib/windows32/include/steam/isteammusic.h create mode 100644 lib/windows32/include/steam/isteammusicremote.h create mode 100644 lib/windows32/include/steam/isteamnetworking.h create mode 100644 lib/windows32/include/steam/isteamps3overlayrenderer.h create mode 100644 lib/windows32/include/steam/isteamremotestorage.h create mode 100644 lib/windows32/include/steam/isteamscreenshots.h create mode 100644 lib/windows32/include/steam/isteamugc.h create mode 100644 lib/windows32/include/steam/isteamunifiedmessages.h create mode 100644 lib/windows32/include/steam/isteamuser.h create mode 100644 lib/windows32/include/steam/isteamuserstats.h create mode 100644 lib/windows32/include/steam/isteamutils.h create mode 100644 lib/windows32/include/steam/isteamvideo.h create mode 100644 lib/windows32/include/steam/matchmakingtypes.h create mode 100644 lib/windows32/include/steam/steam_api.h create mode 100644 lib/windows32/include/steam/steam_api.json create mode 100644 lib/windows32/include/steam/steam_api_flat.h create mode 100644 lib/windows32/include/steam/steam_api_internal.h create mode 100644 lib/windows32/include/steam/steam_api_interop.cs create mode 100644 lib/windows32/include/steam/steam_gameserver.h create mode 100644 lib/windows32/include/steam/steamclientpublic.h create mode 100644 lib/windows32/include/steam/steamencryptedappticket.h create mode 100644 lib/windows32/include/steam/steamhttpenums.h create mode 100644 lib/windows32/include/steam/steamps3params.h create mode 100644 lib/windows32/include/steam/steamtypes.h create mode 100644 lib/windows32/include/steam/steamuniverse.h create mode 100644 lib/windows32/include/strings.h create mode 100644 lib/windows32/include/vorbis/codec.h create mode 100644 lib/windows32/include/vorbis/vorbisenc.h create mode 100644 lib/windows32/include/vorbis/vorbisfile.h create mode 100644 lib/windows32/include/windows_extra.h create mode 100644 lib/windows32/include/zconf.h create mode 100644 lib/windows32/include/zlib.h create mode 100644 lib/windows32/jemalloc.lib create mode 100644 lib/windows32/libpng16.dll create mode 100644 lib/windows32/libpng16.lib create mode 100644 lib/windows32/libpng16.pdb create mode 100644 lib/windows32/ogg.lib create mode 100644 lib/windows32/steam_api.dll create mode 100644 lib/windows32/steam_api.lib create mode 100644 lib/windows32/vorbis.lib create mode 100644 lib/windows32/vorbisenc.lib create mode 100644 lib/windows32/vorbisfile.lib create mode 100644 lib/windows32/zlib.lib create mode 100644 lib/windows32/zlib1.dll create mode 100644 lib/windows64/SDL2.dll create mode 100644 lib/windows64/SDL2.lib create mode 100644 lib/windows64/discord_game_sdk.dll create mode 100644 lib/windows64/discord_game_sdk.lib create mode 100644 lib/windows64/freetype.lib create mode 100644 lib/windows64/glew32.dll create mode 100644 lib/windows64/glew32.lib create mode 100644 lib/windows64/include/C99/stdbool.h create mode 100644 lib/windows64/include/C99/stdint.h create mode 100644 lib/windows64/include/GL/glew.h create mode 100644 lib/windows64/include/GL/glxew.h create mode 100644 lib/windows64/include/GL/wglew.h create mode 100644 lib/windows64/include/SDL.h create mode 100644 lib/windows64/include/SDL_assert.h create mode 100644 lib/windows64/include/SDL_atomic.h create mode 100644 lib/windows64/include/SDL_audio.h create mode 100644 lib/windows64/include/SDL_bits.h create mode 100644 lib/windows64/include/SDL_blendmode.h create mode 100644 lib/windows64/include/SDL_clipboard.h create mode 100644 lib/windows64/include/SDL_config.h create mode 100644 lib/windows64/include/SDL_cpuinfo.h create mode 100644 lib/windows64/include/SDL_egl.h create mode 100644 lib/windows64/include/SDL_endian.h create mode 100644 lib/windows64/include/SDL_error.h create mode 100644 lib/windows64/include/SDL_events.h create mode 100644 lib/windows64/include/SDL_filesystem.h create mode 100644 lib/windows64/include/SDL_gamecontroller.h create mode 100644 lib/windows64/include/SDL_gesture.h create mode 100644 lib/windows64/include/SDL_guid.h create mode 100644 lib/windows64/include/SDL_haptic.h create mode 100644 lib/windows64/include/SDL_hidapi.h create mode 100644 lib/windows64/include/SDL_hints.h create mode 100644 lib/windows64/include/SDL_joystick.h create mode 100644 lib/windows64/include/SDL_keyboard.h create mode 100644 lib/windows64/include/SDL_keycode.h create mode 100644 lib/windows64/include/SDL_loadso.h create mode 100644 lib/windows64/include/SDL_locale.h create mode 100644 lib/windows64/include/SDL_log.h create mode 100644 lib/windows64/include/SDL_main.h create mode 100644 lib/windows64/include/SDL_messagebox.h create mode 100644 lib/windows64/include/SDL_metal.h create mode 100644 lib/windows64/include/SDL_misc.h create mode 100644 lib/windows64/include/SDL_mouse.h create mode 100644 lib/windows64/include/SDL_mutex.h create mode 100644 lib/windows64/include/SDL_name.h create mode 100644 lib/windows64/include/SDL_opengl.h create mode 100644 lib/windows64/include/SDL_opengl_glext.h create mode 100644 lib/windows64/include/SDL_opengles.h create mode 100644 lib/windows64/include/SDL_opengles2.h create mode 100644 lib/windows64/include/SDL_opengles2_gl2.h create mode 100644 lib/windows64/include/SDL_opengles2_gl2ext.h create mode 100644 lib/windows64/include/SDL_opengles2_gl2platform.h create mode 100644 lib/windows64/include/SDL_opengles2_khrplatform.h create mode 100644 lib/windows64/include/SDL_pixels.h create mode 100644 lib/windows64/include/SDL_platform.h create mode 100644 lib/windows64/include/SDL_power.h create mode 100644 lib/windows64/include/SDL_quit.h create mode 100644 lib/windows64/include/SDL_rect.h create mode 100644 lib/windows64/include/SDL_render.h create mode 100644 lib/windows64/include/SDL_revision.h create mode 100644 lib/windows64/include/SDL_rwops.h create mode 100644 lib/windows64/include/SDL_scancode.h create mode 100644 lib/windows64/include/SDL_sensor.h create mode 100644 lib/windows64/include/SDL_shape.h create mode 100644 lib/windows64/include/SDL_stdinc.h create mode 100644 lib/windows64/include/SDL_surface.h create mode 100644 lib/windows64/include/SDL_system.h create mode 100644 lib/windows64/include/SDL_syswm.h create mode 100644 lib/windows64/include/SDL_test.h create mode 100644 lib/windows64/include/SDL_test_assert.h create mode 100644 lib/windows64/include/SDL_test_common.h create mode 100644 lib/windows64/include/SDL_test_compare.h create mode 100644 lib/windows64/include/SDL_test_crc32.h create mode 100644 lib/windows64/include/SDL_test_font.h create mode 100644 lib/windows64/include/SDL_test_fuzzer.h create mode 100644 lib/windows64/include/SDL_test_harness.h create mode 100644 lib/windows64/include/SDL_test_images.h create mode 100644 lib/windows64/include/SDL_test_log.h create mode 100644 lib/windows64/include/SDL_test_md5.h create mode 100644 lib/windows64/include/SDL_test_memory.h create mode 100644 lib/windows64/include/SDL_test_random.h create mode 100644 lib/windows64/include/SDL_thread.h create mode 100644 lib/windows64/include/SDL_timer.h create mode 100644 lib/windows64/include/SDL_touch.h create mode 100644 lib/windows64/include/SDL_types.h create mode 100644 lib/windows64/include/SDL_version.h create mode 100644 lib/windows64/include/SDL_video.h create mode 100644 lib/windows64/include/SDL_vulkan.h create mode 100644 lib/windows64/include/begin_code.h create mode 100644 lib/windows64/include/close_code.h create mode 100644 lib/windows64/include/discord_game_sdk.h create mode 100644 lib/windows64/include/freetype/config/ftconfig.h create mode 100644 lib/windows64/include/freetype/config/ftheader.h create mode 100644 lib/windows64/include/freetype/config/ftmodule.h create mode 100644 lib/windows64/include/freetype/config/ftoption.h create mode 100644 lib/windows64/include/freetype/config/ftstdlib.h create mode 100644 lib/windows64/include/freetype/freetype.h create mode 100644 lib/windows64/include/freetype/ftadvanc.h create mode 100644 lib/windows64/include/freetype/ftautoh.h create mode 100644 lib/windows64/include/freetype/ftbbox.h create mode 100644 lib/windows64/include/freetype/ftbdf.h create mode 100644 lib/windows64/include/freetype/ftbitmap.h create mode 100644 lib/windows64/include/freetype/ftbzip2.h create mode 100644 lib/windows64/include/freetype/ftcache.h create mode 100644 lib/windows64/include/freetype/ftcffdrv.h create mode 100644 lib/windows64/include/freetype/ftchapters.h create mode 100644 lib/windows64/include/freetype/ftcid.h create mode 100644 lib/windows64/include/freetype/fterrdef.h create mode 100644 lib/windows64/include/freetype/fterrors.h create mode 100644 lib/windows64/include/freetype/ftfntfmt.h create mode 100644 lib/windows64/include/freetype/ftgasp.h create mode 100644 lib/windows64/include/freetype/ftglyph.h create mode 100644 lib/windows64/include/freetype/ftgxval.h create mode 100644 lib/windows64/include/freetype/ftgzip.h create mode 100644 lib/windows64/include/freetype/ftimage.h create mode 100644 lib/windows64/include/freetype/ftincrem.h create mode 100644 lib/windows64/include/freetype/ftlcdfil.h create mode 100644 lib/windows64/include/freetype/ftlist.h create mode 100644 lib/windows64/include/freetype/ftlzw.h create mode 100644 lib/windows64/include/freetype/ftmac.h create mode 100644 lib/windows64/include/freetype/ftmm.h create mode 100644 lib/windows64/include/freetype/ftmodapi.h create mode 100644 lib/windows64/include/freetype/ftmoderr.h create mode 100644 lib/windows64/include/freetype/ftotval.h create mode 100644 lib/windows64/include/freetype/ftoutln.h create mode 100644 lib/windows64/include/freetype/ftpfr.h create mode 100644 lib/windows64/include/freetype/ftrender.h create mode 100644 lib/windows64/include/freetype/ftsizes.h create mode 100644 lib/windows64/include/freetype/ftsnames.h create mode 100644 lib/windows64/include/freetype/ftstroke.h create mode 100644 lib/windows64/include/freetype/ftsynth.h create mode 100644 lib/windows64/include/freetype/ftsystem.h create mode 100644 lib/windows64/include/freetype/fttrigon.h create mode 100644 lib/windows64/include/freetype/ftttdrv.h create mode 100644 lib/windows64/include/freetype/fttypes.h create mode 100644 lib/windows64/include/freetype/ftwinfnt.h create mode 100644 lib/windows64/include/freetype/internal/autohint.h create mode 100644 lib/windows64/include/freetype/internal/ftcalc.h create mode 100644 lib/windows64/include/freetype/internal/ftdebug.h create mode 100644 lib/windows64/include/freetype/internal/ftdriver.h create mode 100644 lib/windows64/include/freetype/internal/ftgloadr.h create mode 100644 lib/windows64/include/freetype/internal/ftmemory.h create mode 100644 lib/windows64/include/freetype/internal/ftobjs.h create mode 100644 lib/windows64/include/freetype/internal/ftpic.h create mode 100644 lib/windows64/include/freetype/internal/ftrfork.h create mode 100644 lib/windows64/include/freetype/internal/ftserv.h create mode 100644 lib/windows64/include/freetype/internal/ftstream.h create mode 100644 lib/windows64/include/freetype/internal/fttrace.h create mode 100644 lib/windows64/include/freetype/internal/ftvalid.h create mode 100644 lib/windows64/include/freetype/internal/internal.h create mode 100644 lib/windows64/include/freetype/internal/psaux.h create mode 100644 lib/windows64/include/freetype/internal/pshints.h create mode 100644 lib/windows64/include/freetype/internal/services/svbdf.h create mode 100644 lib/windows64/include/freetype/internal/services/svcid.h create mode 100644 lib/windows64/include/freetype/internal/services/svfntfmt.h create mode 100644 lib/windows64/include/freetype/internal/services/svgldict.h create mode 100644 lib/windows64/include/freetype/internal/services/svgxval.h create mode 100644 lib/windows64/include/freetype/internal/services/svkern.h create mode 100644 lib/windows64/include/freetype/internal/services/svmm.h create mode 100644 lib/windows64/include/freetype/internal/services/svotval.h create mode 100644 lib/windows64/include/freetype/internal/services/svpfr.h create mode 100644 lib/windows64/include/freetype/internal/services/svpostnm.h create mode 100644 lib/windows64/include/freetype/internal/services/svprop.h create mode 100644 lib/windows64/include/freetype/internal/services/svpscmap.h create mode 100644 lib/windows64/include/freetype/internal/services/svpsinfo.h create mode 100644 lib/windows64/include/freetype/internal/services/svsfnt.h create mode 100644 lib/windows64/include/freetype/internal/services/svttcmap.h create mode 100644 lib/windows64/include/freetype/internal/services/svtteng.h create mode 100644 lib/windows64/include/freetype/internal/services/svttglyf.h create mode 100644 lib/windows64/include/freetype/internal/services/svwinfnt.h create mode 100644 lib/windows64/include/freetype/internal/sfnt.h create mode 100644 lib/windows64/include/freetype/internal/t1types.h create mode 100644 lib/windows64/include/freetype/internal/tttypes.h create mode 100644 lib/windows64/include/freetype/t1tables.h create mode 100644 lib/windows64/include/freetype/ttnameid.h create mode 100644 lib/windows64/include/freetype/tttables.h create mode 100644 lib/windows64/include/freetype/tttags.h create mode 100644 lib/windows64/include/freetype/ttunpat.h create mode 100644 lib/windows64/include/ft2build.h create mode 100644 lib/windows64/include/ftoption.h create mode 100644 lib/windows64/include/jemalloc/jemalloc.h create mode 100644 lib/windows64/include/ogg/config_types.h create mode 100644 lib/windows64/include/ogg/ogg.h create mode 100644 lib/windows64/include/ogg/os_types.h create mode 100644 lib/windows64/include/png.h create mode 100644 lib/windows64/include/pngconf.h create mode 100644 lib/windows64/include/pnglibconf.h create mode 100644 lib/windows64/include/steam/isteamapplist.h create mode 100644 lib/windows64/include/steam/isteamapps.h create mode 100644 lib/windows64/include/steam/isteamappticket.h create mode 100644 lib/windows64/include/steam/isteamclient.h create mode 100644 lib/windows64/include/steam/isteamcontroller.h create mode 100644 lib/windows64/include/steam/isteamfriends.h create mode 100644 lib/windows64/include/steam/isteamgamecoordinator.h create mode 100644 lib/windows64/include/steam/isteamgameserver.h create mode 100644 lib/windows64/include/steam/isteamgameserverstats.h create mode 100644 lib/windows64/include/steam/isteamhtmlsurface.h create mode 100644 lib/windows64/include/steam/isteamhttp.h create mode 100644 lib/windows64/include/steam/isteaminventory.h create mode 100644 lib/windows64/include/steam/isteammasterserverupdater.h create mode 100644 lib/windows64/include/steam/isteammatchmaking.h create mode 100644 lib/windows64/include/steam/isteammusic.h create mode 100644 lib/windows64/include/steam/isteammusicremote.h create mode 100644 lib/windows64/include/steam/isteamnetworking.h create mode 100644 lib/windows64/include/steam/isteamps3overlayrenderer.h create mode 100644 lib/windows64/include/steam/isteamremotestorage.h create mode 100644 lib/windows64/include/steam/isteamscreenshots.h create mode 100644 lib/windows64/include/steam/isteamugc.h create mode 100644 lib/windows64/include/steam/isteamunifiedmessages.h create mode 100644 lib/windows64/include/steam/isteamuser.h create mode 100644 lib/windows64/include/steam/isteamuserstats.h create mode 100644 lib/windows64/include/steam/isteamutils.h create mode 100644 lib/windows64/include/steam/isteamvideo.h create mode 100644 lib/windows64/include/steam/matchmakingtypes.h create mode 100644 lib/windows64/include/steam/steam_api.h create mode 100644 lib/windows64/include/steam/steam_api.json create mode 100644 lib/windows64/include/steam/steam_api_flat.h create mode 100644 lib/windows64/include/steam/steam_api_internal.h create mode 100644 lib/windows64/include/steam/steam_api_interop.cs create mode 100644 lib/windows64/include/steam/steam_gameserver.h create mode 100644 lib/windows64/include/steam/steamclientpublic.h create mode 100644 lib/windows64/include/steam/steamencryptedappticket.h create mode 100644 lib/windows64/include/steam/steamhttpenums.h create mode 100644 lib/windows64/include/steam/steamps3params.h create mode 100644 lib/windows64/include/steam/steamtypes.h create mode 100644 lib/windows64/include/steam/steamuniverse.h create mode 100644 lib/windows64/include/strings.h create mode 100644 lib/windows64/include/vorbis/codec.h create mode 100644 lib/windows64/include/vorbis/vorbisenc.h create mode 100644 lib/windows64/include/vorbis/vorbisfile.h create mode 100644 lib/windows64/include/windows_extra.h create mode 100644 lib/windows64/include/zconf.h create mode 100644 lib/windows64/include/zlib.h create mode 100644 lib/windows64/jemalloc.lib create mode 100644 lib/windows64/libpng16.lib create mode 100644 lib/windows64/ogg.lib create mode 100644 lib/windows64/steam_api.lib create mode 100644 lib/windows64/steam_api64.dll create mode 100644 lib/windows64/vorbis.lib create mode 100644 lib/windows64/vorbisfile.lib create mode 100644 lib/windows64/zlib.lib create mode 100644 lib/windows64/zlib1.dll diff --git a/.gitignore b/.gitignore index 65b745d..9efd49c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ build/ dist/ attic/ -lib/ tiled/ assets/user/ assets/devel/ diff --git a/lib/linux/include/GL/gl.h b/lib/linux/include/GL/gl.h new file mode 100644 index 0000000..e65e1bc --- /dev/null +++ b/lib/linux/include/GL/gl.h @@ -0,0 +1,2235 @@ +/* + * Mesa 3-D graphics library + * Version: 7.6 + * + * 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 + * BRIAN PAUL 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. Do not do any of this when building + * for SciTech SNAP, as this is all done before this header file is + * included. + */ +#if !defined(__SCITECH_SNAP__) + +#if defined(__BEOS__) +#include /* to get some BeOS-isms */ +#endif + +#if !defined(OPENSTEP) && (defined(NeXT) || defined(NeXT_PDO)) +#define OPENSTEP +#endif + +#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__) +#define __WIN32__ +#endif + +#if !defined(OPENSTEP) && (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(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define GLAPI __attribute__((visibility("default"))) +# define GLAPIENTRY +#endif /* WIN32 && !CYGWIN */ + +#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__) +# define PRAGMA_EXPORT_SUPPORTED 1 +#endif + +/* + * 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 +#include +#endif + +#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED +#pragma import on +#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 + +#ifdef CENTERLINE_CLPP +#define signed +#endif + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#endif + +#endif /* !__SCITECH_SNAP__ */ +/* + * 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 0x0 +#define GL_TRUE 0x1 + +/* 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 0x0 +#define GL_ONE 0x1 +#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 0x0 +#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 0x0 +#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 ); + +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); + + + +/* + * 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(GL_GLEXT_LEGACY) + +/* All extensions that used to be here are now found in glext.h */ + +#else /* GL_GLEXT_LEGACY */ + +#include + +#endif /* GL_GLEXT_LEGACY */ + + + +#if GL_ARB_shader_objects + +#ifndef GL_MESA_shader_debug +#define GL_MESA_shader_debug 1 + +#define GL_DEBUG_OBJECT_MESA 0x8759 +#define GL_DEBUG_PRINT_MESA 0x875A +#define GL_DEBUG_ASSERT_MESA 0x875B + +GLAPI GLhandleARB GLAPIENTRY glCreateDebugObjectMESA (void); +GLAPI void GLAPIENTRY glClearDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType); +GLAPI void GLAPIENTRY glGetDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, + GLsizei *length, GLcharARB *debugLog); +GLAPI GLsizei GLAPIENTRY glGetDebugLogLengthMESA (GLhandleARB obj, GLenum logType, GLenum shaderType); + +#endif /* GL_MESA_shader_debug */ + +#endif /* GL_ARB_shader_objects */ + + +/* + * ???. 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_MESA_program_debug +#define GL_MESA_program_debug 1 + +#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0 +#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1 +#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2 +#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3 +#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4 +#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5 +#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6 +#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7 + +typedef void (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); + +GLAPI void GLAPIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data); + +GLAPI void GLAPIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v); + +#endif /* GL_MESA_program_debug */ + + +#ifndef GL_MESA_texture_array +#define GL_MESA_texture_array 1 + +/* GL_MESA_texture_array uses the same enum values as GL_EXT_texture_array. + */ +#ifndef GL_EXT_texture_array + +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureLayerEXT(GLenum target, + GLenum attachment, GLuint texture, GLint level, GLint layer); +#endif /* GL_GLEXT_PROTOTYPES */ + +#if 0 +/* (temporarily) disabled because of collision with typedef in glext.h + * that happens if apps include both gl.h and glext.h + */ +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, + GLenum attachment, GLuint texture, GLint level, GLint layer); +#endif + +#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_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#endif + +#endif + + +#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 + +#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED +#pragma import off +#endif +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ diff --git a/lib/linux/include/GL/gl_mangle.h b/lib/linux/include/GL/gl_mangle.h new file mode 100644 index 0000000..3684803 --- /dev/null +++ b/lib/linux/include/GL/gl_mangle.h @@ -0,0 +1,2311 @@ +#if 0 +#define GL_MANGLE_C1 "DO NOT EDIT!!! - TO REGENERATE from gl.h, EXECUTE THIS FILE IN SHELL (/bin/sh) and save the output" +#define GL_MANGLE_C2 "This file is used to create GL function protypes and aliases for the function names" + files="gl.h glext.h" +#define GL_MANGLE_C3 "get regeneration header - copy everything in this file above the 'REGENERATE_TO_END' line" + awk '!done; /^\/\*REGENERATE_TO_END/ {done=1}' $0 + echo "" +#define GL_MANGLE_C4 get aliases + grep '^GLAPI' $files | sed -e 's/.*ENTRY gl\([^( ]*\).*$/#define gl\1 MANGLE(\1)/' | sort | uniq + echo "" + echo "#endif /* GL_MANGLE_H */" + exit +#endif /* REGENERATION */ + +/* + * If you compile Mesa with USE_MGL_NAMESPACE defined then you can link + * your application both with OpenGL and Mesa. The Mesa functions will + * be redefined so they are prefixed with "mgl" instead of "gl". + * Mgl contributed by Randy Frank (rfrank@rsinc.com) + * Regneration code contributed by Ray Tice (rayt@ma.ultra.net) + */ + +#ifndef GL_MANGLE_H +#define GL_MANGLE_H + +#ifndef MANGLE +#define MANGLE(x) mgl##x +#endif /*MANGLE*/ + +/*REGENERATE_TO_END-----------ALL LINES BELOW HERE GET REPLACED ON REGENERATION */ + +#define glAccum MANGLE(Accum) +#define glActiveProgramEXT MANGLE(ActiveProgramEXT) +#define glActiveShaderProgram MANGLE(ActiveShaderProgram) +#define glActiveStencilFaceEXT MANGLE(ActiveStencilFaceEXT) +#define glActiveTextureARB MANGLE(ActiveTextureARB) +#define glActiveTexture MANGLE(ActiveTexture) +#define glActiveVaryingNV MANGLE(ActiveVaryingNV) +#define glAlphaFragmentOp1ATI MANGLE(AlphaFragmentOp1ATI) +#define glAlphaFragmentOp2ATI MANGLE(AlphaFragmentOp2ATI) +#define glAlphaFragmentOp3ATI MANGLE(AlphaFragmentOp3ATI) +#define glAlphaFunc MANGLE(AlphaFunc) +#define glApplyTextureEXT MANGLE(ApplyTextureEXT) +#define glAreProgramsResidentNV MANGLE(AreProgramsResidentNV) +#define glAreTexturesResidentEXT MANGLE(AreTexturesResidentEXT) +#define glAreTexturesResident MANGLE(AreTexturesResident) +#define glArrayElementEXT MANGLE(ArrayElementEXT) +#define glArrayElement MANGLE(ArrayElement) +#define glArrayObjectATI MANGLE(ArrayObjectATI) +#define glAsyncMarkerSGIX MANGLE(AsyncMarkerSGIX) +#define glAttachObjectARB MANGLE(AttachObjectARB) +#define glAttachShader MANGLE(AttachShader) +#define glBeginConditionalRender MANGLE(BeginConditionalRender) +#define glBeginConditionalRenderNV MANGLE(BeginConditionalRenderNV) +#define glBeginFragmentShaderATI MANGLE(BeginFragmentShaderATI) +#define glBegin MANGLE(Begin) +#define glBeginOcclusionQueryNV MANGLE(BeginOcclusionQueryNV) +#define glBeginPerfMonitorAMD MANGLE(BeginPerfMonitorAMD) +#define glBeginQueryARB MANGLE(BeginQueryARB) +#define glBeginQueryIndexed MANGLE(BeginQueryIndexed) +#define glBeginQuery MANGLE(BeginQuery) +#define glBeginTransformFeedbackEXT MANGLE(BeginTransformFeedbackEXT) +#define glBeginTransformFeedback MANGLE(BeginTransformFeedback) +#define glBeginTransformFeedbackNV MANGLE(BeginTransformFeedbackNV) +#define glBeginVertexShaderEXT MANGLE(BeginVertexShaderEXT) +#define glBeginVideoCaptureNV MANGLE(BeginVideoCaptureNV) +#define glBindAttribLocationARB MANGLE(BindAttribLocationARB) +#define glBindAttribLocation MANGLE(BindAttribLocation) +#define glBindBufferARB MANGLE(BindBufferARB) +#define glBindBufferBaseEXT MANGLE(BindBufferBaseEXT) +#define glBindBufferBase MANGLE(BindBufferBase) +#define glBindBufferBaseNV MANGLE(BindBufferBaseNV) +#define glBindBuffer MANGLE(BindBuffer) +#define glBindBufferOffsetEXT MANGLE(BindBufferOffsetEXT) +#define glBindBufferOffsetNV MANGLE(BindBufferOffsetNV) +#define glBindBufferRangeEXT MANGLE(BindBufferRangeEXT) +#define glBindBufferRange MANGLE(BindBufferRange) +#define glBindBufferRangeNV MANGLE(BindBufferRangeNV) +#define glBindFragDataLocationEXT MANGLE(BindFragDataLocationEXT) +#define glBindFragDataLocationIndexed MANGLE(BindFragDataLocationIndexed) +#define glBindFragDataLocation MANGLE(BindFragDataLocation) +#define glBindFragmentShaderATI MANGLE(BindFragmentShaderATI) +#define glBindFramebufferEXT MANGLE(BindFramebufferEXT) +#define glBindFramebuffer MANGLE(BindFramebuffer) +#define glBindImageTextureEXT MANGLE(BindImageTextureEXT) +#define glBindLightParameterEXT MANGLE(BindLightParameterEXT) +#define glBindMaterialParameterEXT MANGLE(BindMaterialParameterEXT) +#define glBindMultiTextureEXT MANGLE(BindMultiTextureEXT) +#define glBindParameterEXT MANGLE(BindParameterEXT) +#define glBindProgramARB MANGLE(BindProgramARB) +#define glBindProgramNV MANGLE(BindProgramNV) +#define glBindProgramPipeline MANGLE(BindProgramPipeline) +#define glBindRenderbufferEXT MANGLE(BindRenderbufferEXT) +#define glBindRenderbuffer MANGLE(BindRenderbuffer) +#define glBindSampler MANGLE(BindSampler) +#define glBindTexGenParameterEXT MANGLE(BindTexGenParameterEXT) +#define glBindTextureEXT MANGLE(BindTextureEXT) +#define glBindTexture MANGLE(BindTexture) +#define glBindTextureUnitParameterEXT MANGLE(BindTextureUnitParameterEXT) +#define glBindTransformFeedback MANGLE(BindTransformFeedback) +#define glBindTransformFeedbackNV MANGLE(BindTransformFeedbackNV) +#define glBindVertexArrayAPPLE MANGLE(BindVertexArrayAPPLE) +#define glBindVertexArray MANGLE(BindVertexArray) +#define glBindVertexShaderEXT MANGLE(BindVertexShaderEXT) +#define glBindVideoCaptureStreamBufferNV MANGLE(BindVideoCaptureStreamBufferNV) +#define glBindVideoCaptureStreamTextureNV MANGLE(BindVideoCaptureStreamTextureNV) +#define glBinormal3bEXT MANGLE(Binormal3bEXT) +#define glBinormal3bvEXT MANGLE(Binormal3bvEXT) +#define glBinormal3dEXT MANGLE(Binormal3dEXT) +#define glBinormal3dvEXT MANGLE(Binormal3dvEXT) +#define glBinormal3fEXT MANGLE(Binormal3fEXT) +#define glBinormal3fvEXT MANGLE(Binormal3fvEXT) +#define glBinormal3iEXT MANGLE(Binormal3iEXT) +#define glBinormal3ivEXT MANGLE(Binormal3ivEXT) +#define glBinormal3sEXT MANGLE(Binormal3sEXT) +#define glBinormal3svEXT MANGLE(Binormal3svEXT) +#define glBinormalPointerEXT MANGLE(BinormalPointerEXT) +#define glBitmap MANGLE(Bitmap) +#define glBlendColorEXT MANGLE(BlendColorEXT) +#define glBlendColor MANGLE(BlendColor) +#define glBlendEquationEXT MANGLE(BlendEquationEXT) +#define glBlendEquationiARB MANGLE(BlendEquationiARB) +#define glBlendEquationi MANGLE(BlendEquationi) +#define glBlendEquationIndexedAMD MANGLE(BlendEquationIndexedAMD) +#define glBlendEquation MANGLE(BlendEquation) +#define glBlendEquationSeparateATI MANGLE(BlendEquationSeparateATI) +#define glBlendEquationSeparateEXT MANGLE(BlendEquationSeparateEXT) +#define glBlendEquationSeparateiARB MANGLE(BlendEquationSeparateiARB) +#define glBlendEquationSeparatei MANGLE(BlendEquationSeparatei) +#define glBlendEquationSeparateIndexedAMD MANGLE(BlendEquationSeparateIndexedAMD) +#define glBlendEquationSeparate MANGLE(BlendEquationSeparate) +#define glBlendFunciARB MANGLE(BlendFunciARB) +#define glBlendFunci MANGLE(BlendFunci) +#define glBlendFuncIndexedAMD MANGLE(BlendFuncIndexedAMD) +#define glBlendFunc MANGLE(BlendFunc) +#define glBlendFuncSeparateEXT MANGLE(BlendFuncSeparateEXT) +#define glBlendFuncSeparateiARB MANGLE(BlendFuncSeparateiARB) +#define glBlendFuncSeparatei MANGLE(BlendFuncSeparatei) +#define glBlendFuncSeparateIndexedAMD MANGLE(BlendFuncSeparateIndexedAMD) +#define glBlendFuncSeparateINGR MANGLE(BlendFuncSeparateINGR) +#define glBlendFuncSeparate MANGLE(BlendFuncSeparate) +#define glBlitFramebufferEXT MANGLE(BlitFramebufferEXT) +#define glBlitFramebuffer MANGLE(BlitFramebuffer) +#define glBufferAddressRangeNV MANGLE(BufferAddressRangeNV) +#define glBufferDataARB MANGLE(BufferDataARB) +#define glBufferData MANGLE(BufferData) +#define glBufferParameteriAPPLE MANGLE(BufferParameteriAPPLE) +#define glBufferSubDataARB MANGLE(BufferSubDataARB) +#define glBufferSubData MANGLE(BufferSubData) +#define glCallList MANGLE(CallList) +#define glCallLists MANGLE(CallLists) +#define glCheckFramebufferStatusEXT MANGLE(CheckFramebufferStatusEXT) +#define glCheckFramebufferStatus MANGLE(CheckFramebufferStatus) +#define glCheckNamedFramebufferStatusEXT MANGLE(CheckNamedFramebufferStatusEXT) +#define glClampColorARB MANGLE(ClampColorARB) +#define glClampColor MANGLE(ClampColor) +#define glClearAccum MANGLE(ClearAccum) +#define glClearBufferfi MANGLE(ClearBufferfi) +#define glClearBufferfv MANGLE(ClearBufferfv) +#define glClearBufferiv MANGLE(ClearBufferiv) +#define glClearBufferuiv MANGLE(ClearBufferuiv) +#define glClearColorIiEXT MANGLE(ClearColorIiEXT) +#define glClearColorIuiEXT MANGLE(ClearColorIuiEXT) +#define glClearColor MANGLE(ClearColor) +#define glClearDebugLogMESA MANGLE(ClearDebugLogMESA) +#define glClearDepthdNV MANGLE(ClearDepthdNV) +#define glClearDepthf MANGLE(ClearDepthf) +#define glClearDepth MANGLE(ClearDepth) +#define glClearIndex MANGLE(ClearIndex) +#define glClear MANGLE(Clear) +#define glClearStencil MANGLE(ClearStencil) +#define glClientActiveTextureARB MANGLE(ClientActiveTextureARB) +#define glClientActiveTexture MANGLE(ClientActiveTexture) +#define glClientActiveVertexStreamATI MANGLE(ClientActiveVertexStreamATI) +#define glClientAttribDefaultEXT MANGLE(ClientAttribDefaultEXT) +#define glClientWaitSync MANGLE(ClientWaitSync) +#define glClipPlane MANGLE(ClipPlane) +#define glColor3b MANGLE(Color3b) +#define glColor3bv MANGLE(Color3bv) +#define glColor3d MANGLE(Color3d) +#define glColor3dv MANGLE(Color3dv) +#define glColor3f MANGLE(Color3f) +#define glColor3fVertex3fSUN MANGLE(Color3fVertex3fSUN) +#define glColor3fVertex3fvSUN MANGLE(Color3fVertex3fvSUN) +#define glColor3fv MANGLE(Color3fv) +#define glColor3hNV MANGLE(Color3hNV) +#define glColor3hvNV MANGLE(Color3hvNV) +#define glColor3i MANGLE(Color3i) +#define glColor3iv MANGLE(Color3iv) +#define glColor3s MANGLE(Color3s) +#define glColor3sv MANGLE(Color3sv) +#define glColor3ub MANGLE(Color3ub) +#define glColor3ubv MANGLE(Color3ubv) +#define glColor3ui MANGLE(Color3ui) +#define glColor3uiv MANGLE(Color3uiv) +#define glColor3us MANGLE(Color3us) +#define glColor3usv MANGLE(Color3usv) +#define glColor4b MANGLE(Color4b) +#define glColor4bv MANGLE(Color4bv) +#define glColor4d MANGLE(Color4d) +#define glColor4dv MANGLE(Color4dv) +#define glColor4f MANGLE(Color4f) +#define glColor4fNormal3fVertex3fSUN MANGLE(Color4fNormal3fVertex3fSUN) +#define glColor4fNormal3fVertex3fvSUN MANGLE(Color4fNormal3fVertex3fvSUN) +#define glColor4fv MANGLE(Color4fv) +#define glColor4hNV MANGLE(Color4hNV) +#define glColor4hvNV MANGLE(Color4hvNV) +#define glColor4i MANGLE(Color4i) +#define glColor4iv MANGLE(Color4iv) +#define glColor4s MANGLE(Color4s) +#define glColor4sv MANGLE(Color4sv) +#define glColor4ub MANGLE(Color4ub) +#define glColor4ubVertex2fSUN MANGLE(Color4ubVertex2fSUN) +#define glColor4ubVertex2fvSUN MANGLE(Color4ubVertex2fvSUN) +#define glColor4ubVertex3fSUN MANGLE(Color4ubVertex3fSUN) +#define glColor4ubVertex3fvSUN MANGLE(Color4ubVertex3fvSUN) +#define glColor4ubv MANGLE(Color4ubv) +#define glColor4ui MANGLE(Color4ui) +#define glColor4uiv MANGLE(Color4uiv) +#define glColor4us MANGLE(Color4us) +#define glColor4usv MANGLE(Color4usv) +#define glColorFormatNV MANGLE(ColorFormatNV) +#define glColorFragmentOp1ATI MANGLE(ColorFragmentOp1ATI) +#define glColorFragmentOp2ATI MANGLE(ColorFragmentOp2ATI) +#define glColorFragmentOp3ATI MANGLE(ColorFragmentOp3ATI) +#define glColorMaski MANGLE(ColorMaski) +#define glColorMaskIndexedEXT MANGLE(ColorMaskIndexedEXT) +#define glColorMask MANGLE(ColorMask) +#define glColorMaterial MANGLE(ColorMaterial) +#define glColorP3ui MANGLE(ColorP3ui) +#define glColorP3uiv MANGLE(ColorP3uiv) +#define glColorP4ui MANGLE(ColorP4ui) +#define glColorP4uiv MANGLE(ColorP4uiv) +#define glColorPointerEXT MANGLE(ColorPointerEXT) +#define glColorPointerListIBM MANGLE(ColorPointerListIBM) +#define glColorPointer MANGLE(ColorPointer) +#define glColorPointervINTEL MANGLE(ColorPointervINTEL) +#define glColorSubTableEXT MANGLE(ColorSubTableEXT) +#define glColorSubTable MANGLE(ColorSubTable) +#define glColorTableEXT MANGLE(ColorTableEXT) +#define glColorTable MANGLE(ColorTable) +#define glColorTableParameterfv MANGLE(ColorTableParameterfv) +#define glColorTableParameterfvSGI MANGLE(ColorTableParameterfvSGI) +#define glColorTableParameteriv MANGLE(ColorTableParameteriv) +#define glColorTableParameterivSGI MANGLE(ColorTableParameterivSGI) +#define glColorTableSGI MANGLE(ColorTableSGI) +#define glCombinerInputNV MANGLE(CombinerInputNV) +#define glCombinerOutputNV MANGLE(CombinerOutputNV) +#define glCombinerParameterfNV MANGLE(CombinerParameterfNV) +#define glCombinerParameterfvNV MANGLE(CombinerParameterfvNV) +#define glCombinerParameteriNV MANGLE(CombinerParameteriNV) +#define glCombinerParameterivNV MANGLE(CombinerParameterivNV) +#define glCombinerStageParameterfvNV MANGLE(CombinerStageParameterfvNV) +#define glCompileShaderARB MANGLE(CompileShaderARB) +#define glCompileShaderIncludeARB MANGLE(CompileShaderIncludeARB) +#define glCompileShader MANGLE(CompileShader) +#define glCompressedMultiTexImage1DEXT MANGLE(CompressedMultiTexImage1DEXT) +#define glCompressedMultiTexImage2DEXT MANGLE(CompressedMultiTexImage2DEXT) +#define glCompressedMultiTexImage3DEXT MANGLE(CompressedMultiTexImage3DEXT) +#define glCompressedMultiTexSubImage1DEXT MANGLE(CompressedMultiTexSubImage1DEXT) +#define glCompressedMultiTexSubImage2DEXT MANGLE(CompressedMultiTexSubImage2DEXT) +#define glCompressedMultiTexSubImage3DEXT MANGLE(CompressedMultiTexSubImage3DEXT) +#define glCompressedTexImage1DARB MANGLE(CompressedTexImage1DARB) +#define glCompressedTexImage1D MANGLE(CompressedTexImage1D) +#define glCompressedTexImage2DARB MANGLE(CompressedTexImage2DARB) +#define glCompressedTexImage2D MANGLE(CompressedTexImage2D) +#define glCompressedTexImage3DARB MANGLE(CompressedTexImage3DARB) +#define glCompressedTexImage3D MANGLE(CompressedTexImage3D) +#define glCompressedTexSubImage1DARB MANGLE(CompressedTexSubImage1DARB) +#define glCompressedTexSubImage1D MANGLE(CompressedTexSubImage1D) +#define glCompressedTexSubImage2DARB MANGLE(CompressedTexSubImage2DARB) +#define glCompressedTexSubImage2D MANGLE(CompressedTexSubImage2D) +#define glCompressedTexSubImage3DARB MANGLE(CompressedTexSubImage3DARB) +#define glCompressedTexSubImage3D MANGLE(CompressedTexSubImage3D) +#define glCompressedTextureImage1DEXT MANGLE(CompressedTextureImage1DEXT) +#define glCompressedTextureImage2DEXT MANGLE(CompressedTextureImage2DEXT) +#define glCompressedTextureImage3DEXT MANGLE(CompressedTextureImage3DEXT) +#define glCompressedTextureSubImage1DEXT MANGLE(CompressedTextureSubImage1DEXT) +#define glCompressedTextureSubImage2DEXT MANGLE(CompressedTextureSubImage2DEXT) +#define glCompressedTextureSubImage3DEXT MANGLE(CompressedTextureSubImage3DEXT) +#define glConvolutionFilter1DEXT MANGLE(ConvolutionFilter1DEXT) +#define glConvolutionFilter1D MANGLE(ConvolutionFilter1D) +#define glConvolutionFilter2DEXT MANGLE(ConvolutionFilter2DEXT) +#define glConvolutionFilter2D MANGLE(ConvolutionFilter2D) +#define glConvolutionParameterfEXT MANGLE(ConvolutionParameterfEXT) +#define glConvolutionParameterf MANGLE(ConvolutionParameterf) +#define glConvolutionParameterfvEXT MANGLE(ConvolutionParameterfvEXT) +#define glConvolutionParameterfv MANGLE(ConvolutionParameterfv) +#define glConvolutionParameteriEXT MANGLE(ConvolutionParameteriEXT) +#define glConvolutionParameteri MANGLE(ConvolutionParameteri) +#define glConvolutionParameterivEXT MANGLE(ConvolutionParameterivEXT) +#define glConvolutionParameteriv MANGLE(ConvolutionParameteriv) +#define glCopyBufferSubData MANGLE(CopyBufferSubData) +#define glCopyColorSubTableEXT MANGLE(CopyColorSubTableEXT) +#define glCopyColorSubTable MANGLE(CopyColorSubTable) +#define glCopyColorTable MANGLE(CopyColorTable) +#define glCopyColorTableSGI MANGLE(CopyColorTableSGI) +#define glCopyConvolutionFilter1DEXT MANGLE(CopyConvolutionFilter1DEXT) +#define glCopyConvolutionFilter1D MANGLE(CopyConvolutionFilter1D) +#define glCopyConvolutionFilter2DEXT MANGLE(CopyConvolutionFilter2DEXT) +#define glCopyConvolutionFilter2D MANGLE(CopyConvolutionFilter2D) +#define glCopyImageSubDataNV MANGLE(CopyImageSubDataNV) +#define glCopyMultiTexImage1DEXT MANGLE(CopyMultiTexImage1DEXT) +#define glCopyMultiTexImage2DEXT MANGLE(CopyMultiTexImage2DEXT) +#define glCopyMultiTexSubImage1DEXT MANGLE(CopyMultiTexSubImage1DEXT) +#define glCopyMultiTexSubImage2DEXT MANGLE(CopyMultiTexSubImage2DEXT) +#define glCopyMultiTexSubImage3DEXT MANGLE(CopyMultiTexSubImage3DEXT) +#define glCopyPixels MANGLE(CopyPixels) +#define glCopyTexImage1DEXT MANGLE(CopyTexImage1DEXT) +#define glCopyTexImage1D MANGLE(CopyTexImage1D) +#define glCopyTexImage2DEXT MANGLE(CopyTexImage2DEXT) +#define glCopyTexImage2D MANGLE(CopyTexImage2D) +#define glCopyTexSubImage1DEXT MANGLE(CopyTexSubImage1DEXT) +#define glCopyTexSubImage1D MANGLE(CopyTexSubImage1D) +#define glCopyTexSubImage2DEXT MANGLE(CopyTexSubImage2DEXT) +#define glCopyTexSubImage2D MANGLE(CopyTexSubImage2D) +#define glCopyTexSubImage3DEXT MANGLE(CopyTexSubImage3DEXT) +#define glCopyTexSubImage3D MANGLE(CopyTexSubImage3D) +#define glCopyTextureImage1DEXT MANGLE(CopyTextureImage1DEXT) +#define glCopyTextureImage2DEXT MANGLE(CopyTextureImage2DEXT) +#define glCopyTextureSubImage1DEXT MANGLE(CopyTextureSubImage1DEXT) +#define glCopyTextureSubImage2DEXT MANGLE(CopyTextureSubImage2DEXT) +#define glCopyTextureSubImage3DEXT MANGLE(CopyTextureSubImage3DEXT) +#define glCreateDebugObjectMESA MANGLE(CreateDebugObjectMESA) +#define glCreateProgram MANGLE(CreateProgram) +#define glCreateProgramObjectARB MANGLE(CreateProgramObjectARB) +#define glCreateShader MANGLE(CreateShader) +#define glCreateShaderObjectARB MANGLE(CreateShaderObjectARB) +#define glCreateShaderProgramEXT MANGLE(CreateShaderProgramEXT) +#define glCreateShaderProgramv MANGLE(CreateShaderProgramv) +#define glCreateSyncFromCLeventARB MANGLE(CreateSyncFromCLeventARB) +#define glCullFace MANGLE(CullFace) +#define glCullParameterdvEXT MANGLE(CullParameterdvEXT) +#define glCullParameterfvEXT MANGLE(CullParameterfvEXT) +#define glCurrentPaletteMatrixARB MANGLE(CurrentPaletteMatrixARB) +#define glDebugMessageCallbackAMD MANGLE(DebugMessageCallbackAMD) +#define glDebugMessageCallbackARB MANGLE(DebugMessageCallbackARB) +#define glDebugMessageControlARB MANGLE(DebugMessageControlARB) +#define glDebugMessageEnableAMD MANGLE(DebugMessageEnableAMD) +#define glDebugMessageInsertAMD MANGLE(DebugMessageInsertAMD) +#define glDebugMessageInsertARB MANGLE(DebugMessageInsertARB) +#define glDeformationMap3dSGIX MANGLE(DeformationMap3dSGIX) +#define glDeformationMap3fSGIX MANGLE(DeformationMap3fSGIX) +#define glDeformSGIX MANGLE(DeformSGIX) +#define glDeleteAsyncMarkersSGIX MANGLE(DeleteAsyncMarkersSGIX) +#define glDeleteBuffersARB MANGLE(DeleteBuffersARB) +#define glDeleteBuffers MANGLE(DeleteBuffers) +#define glDeleteFencesAPPLE MANGLE(DeleteFencesAPPLE) +#define glDeleteFencesNV MANGLE(DeleteFencesNV) +#define glDeleteFragmentShaderATI MANGLE(DeleteFragmentShaderATI) +#define glDeleteFramebuffersEXT MANGLE(DeleteFramebuffersEXT) +#define glDeleteFramebuffers MANGLE(DeleteFramebuffers) +#define glDeleteLists MANGLE(DeleteLists) +#define glDeleteNamedStringARB MANGLE(DeleteNamedStringARB) +#define glDeleteNamesAMD MANGLE(DeleteNamesAMD) +#define glDeleteObjectARB MANGLE(DeleteObjectARB) +#define glDeleteOcclusionQueriesNV MANGLE(DeleteOcclusionQueriesNV) +#define glDeletePerfMonitorsAMD MANGLE(DeletePerfMonitorsAMD) +#define glDeleteProgram MANGLE(DeleteProgram) +#define glDeleteProgramPipelines MANGLE(DeleteProgramPipelines) +#define glDeleteProgramsARB MANGLE(DeleteProgramsARB) +#define glDeleteProgramsNV MANGLE(DeleteProgramsNV) +#define glDeleteQueriesARB MANGLE(DeleteQueriesARB) +#define glDeleteQueries MANGLE(DeleteQueries) +#define glDeleteRenderbuffersEXT MANGLE(DeleteRenderbuffersEXT) +#define glDeleteRenderbuffers MANGLE(DeleteRenderbuffers) +#define glDeleteSamplers MANGLE(DeleteSamplers) +#define glDeleteShader MANGLE(DeleteShader) +#define glDeleteSync MANGLE(DeleteSync) +#define glDeleteTexturesEXT MANGLE(DeleteTexturesEXT) +#define glDeleteTextures MANGLE(DeleteTextures) +#define glDeleteTransformFeedbacks MANGLE(DeleteTransformFeedbacks) +#define glDeleteTransformFeedbacksNV MANGLE(DeleteTransformFeedbacksNV) +#define glDeleteVertexArraysAPPLE MANGLE(DeleteVertexArraysAPPLE) +#define glDeleteVertexArrays MANGLE(DeleteVertexArrays) +#define glDeleteVertexShaderEXT MANGLE(DeleteVertexShaderEXT) +#define glDepthBoundsdNV MANGLE(DepthBoundsdNV) +#define glDepthBoundsEXT MANGLE(DepthBoundsEXT) +#define glDepthFunc MANGLE(DepthFunc) +#define glDepthMask MANGLE(DepthMask) +#define glDepthRangeArrayv MANGLE(DepthRangeArrayv) +#define glDepthRangedNV MANGLE(DepthRangedNV) +#define glDepthRangef MANGLE(DepthRangef) +#define glDepthRangeIndexed MANGLE(DepthRangeIndexed) +#define glDepthRange MANGLE(DepthRange) +#define glDetachObjectARB MANGLE(DetachObjectARB) +#define glDetachShader MANGLE(DetachShader) +#define glDetailTexFuncSGIS MANGLE(DetailTexFuncSGIS) +#define glDisableClientStateIndexedEXT MANGLE(DisableClientStateIndexedEXT) +#define glDisableClientState MANGLE(DisableClientState) +#define glDisablei MANGLE(Disablei) +#define glDisableIndexedEXT MANGLE(DisableIndexedEXT) +#define glDisable MANGLE(Disable) +#define glDisableVariantClientStateEXT MANGLE(DisableVariantClientStateEXT) +#define glDisableVertexAttribAPPLE MANGLE(DisableVertexAttribAPPLE) +#define glDisableVertexAttribArrayARB MANGLE(DisableVertexAttribArrayARB) +#define glDisableVertexAttribArray MANGLE(DisableVertexAttribArray) +#define glDrawArraysEXT MANGLE(DrawArraysEXT) +#define glDrawArraysIndirect MANGLE(DrawArraysIndirect) +#define glDrawArraysInstancedARB MANGLE(DrawArraysInstancedARB) +#define glDrawArraysInstancedEXT MANGLE(DrawArraysInstancedEXT) +#define glDrawArraysInstanced MANGLE(DrawArraysInstanced) +#define glDrawArrays MANGLE(DrawArrays) +#define glDrawBuffer MANGLE(DrawBuffer) +#define glDrawBuffersARB MANGLE(DrawBuffersARB) +#define glDrawBuffersATI MANGLE(DrawBuffersATI) +#define glDrawBuffers MANGLE(DrawBuffers) +#define glDrawElementArrayAPPLE MANGLE(DrawElementArrayAPPLE) +#define glDrawElementArrayATI MANGLE(DrawElementArrayATI) +#define glDrawElementsBaseVertex MANGLE(DrawElementsBaseVertex) +#define glDrawElementsIndirect MANGLE(DrawElementsIndirect) +#define glDrawElementsInstancedARB MANGLE(DrawElementsInstancedARB) +#define glDrawElementsInstancedBaseVertex MANGLE(DrawElementsInstancedBaseVertex) +#define glDrawElementsInstancedEXT MANGLE(DrawElementsInstancedEXT) +#define glDrawElementsInstanced MANGLE(DrawElementsInstanced) +#define glDrawElements MANGLE(DrawElements) +#define glDrawMeshArraysSUN MANGLE(DrawMeshArraysSUN) +#define glDrawPixels MANGLE(DrawPixels) +#define glDrawRangeElementArrayAPPLE MANGLE(DrawRangeElementArrayAPPLE) +#define glDrawRangeElementArrayATI MANGLE(DrawRangeElementArrayATI) +#define glDrawRangeElementsBaseVertex MANGLE(DrawRangeElementsBaseVertex) +#define glDrawRangeElementsEXT MANGLE(DrawRangeElementsEXT) +#define glDrawRangeElements MANGLE(DrawRangeElements) +#define glDrawTransformFeedback MANGLE(DrawTransformFeedback) +#define glDrawTransformFeedbackNV MANGLE(DrawTransformFeedbackNV) +#define glDrawTransformFeedbackStream MANGLE(DrawTransformFeedbackStream) +#define glEdgeFlagFormatNV MANGLE(EdgeFlagFormatNV) +#define glEdgeFlag MANGLE(EdgeFlag) +#define glEdgeFlagPointerEXT MANGLE(EdgeFlagPointerEXT) +#define glEdgeFlagPointerListIBM MANGLE(EdgeFlagPointerListIBM) +#define glEdgeFlagPointer MANGLE(EdgeFlagPointer) +#define glEdgeFlagv MANGLE(EdgeFlagv) +#define glEGLImageTargetRenderbufferStorageOES MANGLE(EGLImageTargetRenderbufferStorageOES) +#define glEGLImageTargetTexture2DOES MANGLE(EGLImageTargetTexture2DOES) +#define glElementPointerAPPLE MANGLE(ElementPointerAPPLE) +#define glElementPointerATI MANGLE(ElementPointerATI) +#define glEnableClientStateIndexedEXT MANGLE(EnableClientStateIndexedEXT) +#define glEnableClientState MANGLE(EnableClientState) +#define glEnablei MANGLE(Enablei) +#define glEnableIndexedEXT MANGLE(EnableIndexedEXT) +#define glEnable MANGLE(Enable) +#define glEnableVariantClientStateEXT MANGLE(EnableVariantClientStateEXT) +#define glEnableVertexAttribAPPLE MANGLE(EnableVertexAttribAPPLE) +#define glEnableVertexAttribArrayARB MANGLE(EnableVertexAttribArrayARB) +#define glEnableVertexAttribArray MANGLE(EnableVertexAttribArray) +#define glEndConditionalRender MANGLE(EndConditionalRender) +#define glEndConditionalRenderNV MANGLE(EndConditionalRenderNV) +#define glEndFragmentShaderATI MANGLE(EndFragmentShaderATI) +#define glEndList MANGLE(EndList) +#define glEnd MANGLE(End) +#define glEndOcclusionQueryNV MANGLE(EndOcclusionQueryNV) +#define glEndPerfMonitorAMD MANGLE(EndPerfMonitorAMD) +#define glEndQueryARB MANGLE(EndQueryARB) +#define glEndQueryIndexed MANGLE(EndQueryIndexed) +#define glEndQuery MANGLE(EndQuery) +#define glEndTransformFeedbackEXT MANGLE(EndTransformFeedbackEXT) +#define glEndTransformFeedback MANGLE(EndTransformFeedback) +#define glEndTransformFeedbackNV MANGLE(EndTransformFeedbackNV) +#define glEndVertexShaderEXT MANGLE(EndVertexShaderEXT) +#define glEndVideoCaptureNV MANGLE(EndVideoCaptureNV) +#define glEvalCoord1d MANGLE(EvalCoord1d) +#define glEvalCoord1dv MANGLE(EvalCoord1dv) +#define glEvalCoord1f MANGLE(EvalCoord1f) +#define glEvalCoord1fv MANGLE(EvalCoord1fv) +#define glEvalCoord2d MANGLE(EvalCoord2d) +#define glEvalCoord2dv MANGLE(EvalCoord2dv) +#define glEvalCoord2f MANGLE(EvalCoord2f) +#define glEvalCoord2fv MANGLE(EvalCoord2fv) +#define glEvalMapsNV MANGLE(EvalMapsNV) +#define glEvalMesh1 MANGLE(EvalMesh1) +#define glEvalMesh2 MANGLE(EvalMesh2) +#define glEvalPoint1 MANGLE(EvalPoint1) +#define glEvalPoint2 MANGLE(EvalPoint2) +#define glExecuteProgramNV MANGLE(ExecuteProgramNV) +#define glExtractComponentEXT MANGLE(ExtractComponentEXT) +#define glFeedbackBuffer MANGLE(FeedbackBuffer) +#define glFenceSync MANGLE(FenceSync) +#define glFinalCombinerInputNV MANGLE(FinalCombinerInputNV) +#define glFinishAsyncSGIX MANGLE(FinishAsyncSGIX) +#define glFinishFenceAPPLE MANGLE(FinishFenceAPPLE) +#define glFinishFenceNV MANGLE(FinishFenceNV) +#define glFinish MANGLE(Finish) +#define glFinishObjectAPPLE MANGLE(FinishObjectAPPLE) +#define glFinishTextureSUNX MANGLE(FinishTextureSUNX) +#define glFlush MANGLE(Flush) +#define glFlushMappedBufferRangeAPPLE MANGLE(FlushMappedBufferRangeAPPLE) +#define glFlushMappedBufferRange MANGLE(FlushMappedBufferRange) +#define glFlushMappedNamedBufferRangeEXT MANGLE(FlushMappedNamedBufferRangeEXT) +#define glFlushPixelDataRangeNV MANGLE(FlushPixelDataRangeNV) +#define glFlushRasterSGIX MANGLE(FlushRasterSGIX) +#define glFlushVertexArrayRangeAPPLE MANGLE(FlushVertexArrayRangeAPPLE) +#define glFlushVertexArrayRangeNV MANGLE(FlushVertexArrayRangeNV) +#define glFogCoorddEXT MANGLE(FogCoorddEXT) +#define glFogCoordd MANGLE(FogCoordd) +#define glFogCoorddvEXT MANGLE(FogCoorddvEXT) +#define glFogCoorddv MANGLE(FogCoorddv) +#define glFogCoordfEXT MANGLE(FogCoordfEXT) +#define glFogCoordf MANGLE(FogCoordf) +#define glFogCoordFormatNV MANGLE(FogCoordFormatNV) +#define glFogCoordfvEXT MANGLE(FogCoordfvEXT) +#define glFogCoordfv MANGLE(FogCoordfv) +#define glFogCoordhNV MANGLE(FogCoordhNV) +#define glFogCoordhvNV MANGLE(FogCoordhvNV) +#define glFogCoordPointerEXT MANGLE(FogCoordPointerEXT) +#define glFogCoordPointerListIBM MANGLE(FogCoordPointerListIBM) +#define glFogCoordPointer MANGLE(FogCoordPointer) +#define glFogf MANGLE(Fogf) +#define glFogFuncSGIS MANGLE(FogFuncSGIS) +#define glFogfv MANGLE(Fogfv) +#define glFogi MANGLE(Fogi) +#define glFogiv MANGLE(Fogiv) +#define glFragmentColorMaterialSGIX MANGLE(FragmentColorMaterialSGIX) +#define glFragmentLightfSGIX MANGLE(FragmentLightfSGIX) +#define glFragmentLightfvSGIX MANGLE(FragmentLightfvSGIX) +#define glFragmentLightiSGIX MANGLE(FragmentLightiSGIX) +#define glFragmentLightivSGIX MANGLE(FragmentLightivSGIX) +#define glFragmentLightModelfSGIX MANGLE(FragmentLightModelfSGIX) +#define glFragmentLightModelfvSGIX MANGLE(FragmentLightModelfvSGIX) +#define glFragmentLightModeliSGIX MANGLE(FragmentLightModeliSGIX) +#define glFragmentLightModelivSGIX MANGLE(FragmentLightModelivSGIX) +#define glFragmentMaterialfSGIX MANGLE(FragmentMaterialfSGIX) +#define glFragmentMaterialfvSGIX MANGLE(FragmentMaterialfvSGIX) +#define glFragmentMaterialiSGIX MANGLE(FragmentMaterialiSGIX) +#define glFragmentMaterialivSGIX MANGLE(FragmentMaterialivSGIX) +#define glFramebufferDrawBufferEXT MANGLE(FramebufferDrawBufferEXT) +#define glFramebufferDrawBuffersEXT MANGLE(FramebufferDrawBuffersEXT) +#define glFramebufferReadBufferEXT MANGLE(FramebufferReadBufferEXT) +#define glFramebufferRenderbufferEXT MANGLE(FramebufferRenderbufferEXT) +#define glFramebufferRenderbuffer MANGLE(FramebufferRenderbuffer) +#define glFramebufferTexture1DEXT MANGLE(FramebufferTexture1DEXT) +#define glFramebufferTexture1D MANGLE(FramebufferTexture1D) +#define glFramebufferTexture2DEXT MANGLE(FramebufferTexture2DEXT) +#define glFramebufferTexture2D MANGLE(FramebufferTexture2D) +#define glFramebufferTexture3DEXT MANGLE(FramebufferTexture3DEXT) +#define glFramebufferTexture3D MANGLE(FramebufferTexture3D) +#define glFramebufferTextureARB MANGLE(FramebufferTextureARB) +#define glFramebufferTextureEXT MANGLE(FramebufferTextureEXT) +#define glFramebufferTextureFaceARB MANGLE(FramebufferTextureFaceARB) +#define glFramebufferTextureFaceEXT MANGLE(FramebufferTextureFaceEXT) +#define glFramebufferTextureLayerARB MANGLE(FramebufferTextureLayerARB) +#define glFramebufferTextureLayerEXT MANGLE(FramebufferTextureLayerEXT) +#define glFramebufferTextureLayer MANGLE(FramebufferTextureLayer) +#define glFramebufferTexture MANGLE(FramebufferTexture) +#define glFrameTerminatorGREMEDY MANGLE(FrameTerminatorGREMEDY) +#define glFrameZoomSGIX MANGLE(FrameZoomSGIX) +#define glFreeObjectBufferATI MANGLE(FreeObjectBufferATI) +#define glFrontFace MANGLE(FrontFace) +#define glFrustum MANGLE(Frustum) +#define glGenAsyncMarkersSGIX MANGLE(GenAsyncMarkersSGIX) +#define glGenBuffersARB MANGLE(GenBuffersARB) +#define glGenBuffers MANGLE(GenBuffers) +#define glGenerateMipmapEXT MANGLE(GenerateMipmapEXT) +#define glGenerateMipmap MANGLE(GenerateMipmap) +#define glGenerateMultiTexMipmapEXT MANGLE(GenerateMultiTexMipmapEXT) +#define glGenerateTextureMipmapEXT MANGLE(GenerateTextureMipmapEXT) +#define glGenFencesAPPLE MANGLE(GenFencesAPPLE) +#define glGenFencesNV MANGLE(GenFencesNV) +#define glGenFragmentShadersATI MANGLE(GenFragmentShadersATI) +#define glGenFramebuffersEXT MANGLE(GenFramebuffersEXT) +#define glGenFramebuffers MANGLE(GenFramebuffers) +#define glGenLists MANGLE(GenLists) +#define glGenNamesAMD MANGLE(GenNamesAMD) +#define glGenOcclusionQueriesNV MANGLE(GenOcclusionQueriesNV) +#define glGenPerfMonitorsAMD MANGLE(GenPerfMonitorsAMD) +#define glGenProgramPipelines MANGLE(GenProgramPipelines) +#define glGenProgramsARB MANGLE(GenProgramsARB) +#define glGenProgramsNV MANGLE(GenProgramsNV) +#define glGenQueriesARB MANGLE(GenQueriesARB) +#define glGenQueries MANGLE(GenQueries) +#define glGenRenderbuffersEXT MANGLE(GenRenderbuffersEXT) +#define glGenRenderbuffers MANGLE(GenRenderbuffers) +#define glGenSamplers MANGLE(GenSamplers) +#define glGenSymbolsEXT MANGLE(GenSymbolsEXT) +#define glGenTexturesEXT MANGLE(GenTexturesEXT) +#define glGenTextures MANGLE(GenTextures) +#define glGenTransformFeedbacks MANGLE(GenTransformFeedbacks) +#define glGenTransformFeedbacksNV MANGLE(GenTransformFeedbacksNV) +#define glGenVertexArraysAPPLE MANGLE(GenVertexArraysAPPLE) +#define glGenVertexArrays MANGLE(GenVertexArrays) +#define glGenVertexShadersEXT MANGLE(GenVertexShadersEXT) +#define glGetActiveAttribARB MANGLE(GetActiveAttribARB) +#define glGetActiveAttrib MANGLE(GetActiveAttrib) +#define glGetActiveSubroutineName MANGLE(GetActiveSubroutineName) +#define glGetActiveSubroutineUniformiv MANGLE(GetActiveSubroutineUniformiv) +#define glGetActiveSubroutineUniformName MANGLE(GetActiveSubroutineUniformName) +#define glGetActiveUniformARB MANGLE(GetActiveUniformARB) +#define glGetActiveUniformBlockiv MANGLE(GetActiveUniformBlockiv) +#define glGetActiveUniformBlockName MANGLE(GetActiveUniformBlockName) +#define glGetActiveUniform MANGLE(GetActiveUniform) +#define glGetActiveUniformName MANGLE(GetActiveUniformName) +#define glGetActiveUniformsiv MANGLE(GetActiveUniformsiv) +#define glGetActiveVaryingNV MANGLE(GetActiveVaryingNV) +#define glGetArrayObjectfvATI MANGLE(GetArrayObjectfvATI) +#define glGetArrayObjectivATI MANGLE(GetArrayObjectivATI) +#define glGetAttachedObjectsARB MANGLE(GetAttachedObjectsARB) +#define glGetAttachedShaders MANGLE(GetAttachedShaders) +#define glGetAttribLocationARB MANGLE(GetAttribLocationARB) +#define glGetAttribLocation MANGLE(GetAttribLocation) +#define glGetBooleanIndexedvEXT MANGLE(GetBooleanIndexedvEXT) +#define glGetBooleani_v MANGLE(GetBooleani_v) +#define glGetBooleanv MANGLE(GetBooleanv) +#define glGetBufferParameteri64v MANGLE(GetBufferParameteri64v) +#define glGetBufferParameterivARB MANGLE(GetBufferParameterivARB) +#define glGetBufferParameteriv MANGLE(GetBufferParameteriv) +#define glGetBufferParameterui64vNV MANGLE(GetBufferParameterui64vNV) +#define glGetBufferPointervARB MANGLE(GetBufferPointervARB) +#define glGetBufferPointerv MANGLE(GetBufferPointerv) +#define glGetBufferSubDataARB MANGLE(GetBufferSubDataARB) +#define glGetBufferSubData MANGLE(GetBufferSubData) +#define glGetClipPlane MANGLE(GetClipPlane) +#define glGetColorTableEXT MANGLE(GetColorTableEXT) +#define glGetColorTable MANGLE(GetColorTable) +#define glGetColorTableParameterfvEXT MANGLE(GetColorTableParameterfvEXT) +#define glGetColorTableParameterfv MANGLE(GetColorTableParameterfv) +#define glGetColorTableParameterfvSGI MANGLE(GetColorTableParameterfvSGI) +#define glGetColorTableParameterivEXT MANGLE(GetColorTableParameterivEXT) +#define glGetColorTableParameteriv MANGLE(GetColorTableParameteriv) +#define glGetColorTableParameterivSGI MANGLE(GetColorTableParameterivSGI) +#define glGetColorTableSGI MANGLE(GetColorTableSGI) +#define glGetCombinerInputParameterfvNV MANGLE(GetCombinerInputParameterfvNV) +#define glGetCombinerInputParameterivNV MANGLE(GetCombinerInputParameterivNV) +#define glGetCombinerOutputParameterfvNV MANGLE(GetCombinerOutputParameterfvNV) +#define glGetCombinerOutputParameterivNV MANGLE(GetCombinerOutputParameterivNV) +#define glGetCombinerStageParameterfvNV MANGLE(GetCombinerStageParameterfvNV) +#define glGetCompressedMultiTexImageEXT MANGLE(GetCompressedMultiTexImageEXT) +#define glGetCompressedTexImageARB MANGLE(GetCompressedTexImageARB) +#define glGetCompressedTexImage MANGLE(GetCompressedTexImage) +#define glGetCompressedTextureImageEXT MANGLE(GetCompressedTextureImageEXT) +#define glGetConvolutionFilterEXT MANGLE(GetConvolutionFilterEXT) +#define glGetConvolutionFilter MANGLE(GetConvolutionFilter) +#define glGetConvolutionParameterfvEXT MANGLE(GetConvolutionParameterfvEXT) +#define glGetConvolutionParameterfv MANGLE(GetConvolutionParameterfv) +#define glGetConvolutionParameterivEXT MANGLE(GetConvolutionParameterivEXT) +#define glGetConvolutionParameteriv MANGLE(GetConvolutionParameteriv) +#define glGetDebugLogLengthMESA MANGLE(GetDebugLogLengthMESA) +#define glGetDebugLogMESA MANGLE(GetDebugLogMESA) +#define glGetDebugMessageLogAMD MANGLE(GetDebugMessageLogAMD) +#define glGetDebugMessageLogARB MANGLE(GetDebugMessageLogARB) +#define glGetDetailTexFuncSGIS MANGLE(GetDetailTexFuncSGIS) +#define glGetDoubleIndexedvEXT MANGLE(GetDoubleIndexedvEXT) +#define glGetDoublei_v MANGLE(GetDoublei_v) +#define glGetDoublev MANGLE(GetDoublev) +#define glGetError MANGLE(GetError) +#define glGetFenceivNV MANGLE(GetFenceivNV) +#define glGetFinalCombinerInputParameterfvNV MANGLE(GetFinalCombinerInputParameterfvNV) +#define glGetFinalCombinerInputParameterivNV MANGLE(GetFinalCombinerInputParameterivNV) +#define glGetFloatIndexedvEXT MANGLE(GetFloatIndexedvEXT) +#define glGetFloati_v MANGLE(GetFloati_v) +#define glGetFloatv MANGLE(GetFloatv) +#define glGetFogFuncSGIS MANGLE(GetFogFuncSGIS) +#define glGetFragDataIndex MANGLE(GetFragDataIndex) +#define glGetFragDataLocationEXT MANGLE(GetFragDataLocationEXT) +#define glGetFragDataLocation MANGLE(GetFragDataLocation) +#define glGetFragmentLightfvSGIX MANGLE(GetFragmentLightfvSGIX) +#define glGetFragmentLightivSGIX MANGLE(GetFragmentLightivSGIX) +#define glGetFragmentMaterialfvSGIX MANGLE(GetFragmentMaterialfvSGIX) +#define glGetFragmentMaterialivSGIX MANGLE(GetFragmentMaterialivSGIX) +#define glGetFramebufferAttachmentParameterivEXT MANGLE(GetFramebufferAttachmentParameterivEXT) +#define glGetFramebufferAttachmentParameteriv MANGLE(GetFramebufferAttachmentParameteriv) +#define glGetFramebufferParameterivEXT MANGLE(GetFramebufferParameterivEXT) +#define glGetGraphicsResetStatusARB MANGLE(GetGraphicsResetStatusARB) +#define glGetHandleARB MANGLE(GetHandleARB) +#define glGetHistogramEXT MANGLE(GetHistogramEXT) +#define glGetHistogram MANGLE(GetHistogram) +#define glGetHistogramParameterfvEXT MANGLE(GetHistogramParameterfvEXT) +#define glGetHistogramParameterfv MANGLE(GetHistogramParameterfv) +#define glGetHistogramParameterivEXT MANGLE(GetHistogramParameterivEXT) +#define glGetHistogramParameteriv MANGLE(GetHistogramParameteriv) +#define glGetImageTransformParameterfvHP MANGLE(GetImageTransformParameterfvHP) +#define glGetImageTransformParameterivHP MANGLE(GetImageTransformParameterivHP) +#define glGetInfoLogARB MANGLE(GetInfoLogARB) +#define glGetInstrumentsSGIX MANGLE(GetInstrumentsSGIX) +#define glGetInteger64i_v MANGLE(GetInteger64i_v) +#define glGetInteger64v MANGLE(GetInteger64v) +#define glGetIntegerIndexedvEXT MANGLE(GetIntegerIndexedvEXT) +#define glGetIntegeri_v MANGLE(GetIntegeri_v) +#define glGetIntegerui64i_vNV MANGLE(GetIntegerui64i_vNV) +#define glGetIntegerui64vNV MANGLE(GetIntegerui64vNV) +#define glGetIntegerv MANGLE(GetIntegerv) +#define glGetInvariantBooleanvEXT MANGLE(GetInvariantBooleanvEXT) +#define glGetInvariantFloatvEXT MANGLE(GetInvariantFloatvEXT) +#define glGetInvariantIntegervEXT MANGLE(GetInvariantIntegervEXT) +#define glGetLightfv MANGLE(GetLightfv) +#define glGetLightiv MANGLE(GetLightiv) +#define glGetListParameterfvSGIX MANGLE(GetListParameterfvSGIX) +#define glGetListParameterivSGIX MANGLE(GetListParameterivSGIX) +#define glGetLocalConstantBooleanvEXT MANGLE(GetLocalConstantBooleanvEXT) +#define glGetLocalConstantFloatvEXT MANGLE(GetLocalConstantFloatvEXT) +#define glGetLocalConstantIntegervEXT MANGLE(GetLocalConstantIntegervEXT) +#define glGetMapAttribParameterfvNV MANGLE(GetMapAttribParameterfvNV) +#define glGetMapAttribParameterivNV MANGLE(GetMapAttribParameterivNV) +#define glGetMapControlPointsNV MANGLE(GetMapControlPointsNV) +#define glGetMapdv MANGLE(GetMapdv) +#define glGetMapfv MANGLE(GetMapfv) +#define glGetMapiv MANGLE(GetMapiv) +#define glGetMapParameterfvNV MANGLE(GetMapParameterfvNV) +#define glGetMapParameterivNV MANGLE(GetMapParameterivNV) +#define glGetMaterialfv MANGLE(GetMaterialfv) +#define glGetMaterialiv MANGLE(GetMaterialiv) +#define glGetMinmaxEXT MANGLE(GetMinmaxEXT) +#define glGetMinmax MANGLE(GetMinmax) +#define glGetMinmaxParameterfvEXT MANGLE(GetMinmaxParameterfvEXT) +#define glGetMinmaxParameterfv MANGLE(GetMinmaxParameterfv) +#define glGetMinmaxParameterivEXT MANGLE(GetMinmaxParameterivEXT) +#define glGetMinmaxParameteriv MANGLE(GetMinmaxParameteriv) +#define glGetMultisamplefv MANGLE(GetMultisamplefv) +#define glGetMultisamplefvNV MANGLE(GetMultisamplefvNV) +#define glGetMultiTexEnvfvEXT MANGLE(GetMultiTexEnvfvEXT) +#define glGetMultiTexEnvivEXT MANGLE(GetMultiTexEnvivEXT) +#define glGetMultiTexGendvEXT MANGLE(GetMultiTexGendvEXT) +#define glGetMultiTexGenfvEXT MANGLE(GetMultiTexGenfvEXT) +#define glGetMultiTexGenivEXT MANGLE(GetMultiTexGenivEXT) +#define glGetMultiTexImageEXT MANGLE(GetMultiTexImageEXT) +#define glGetMultiTexLevelParameterfvEXT MANGLE(GetMultiTexLevelParameterfvEXT) +#define glGetMultiTexLevelParameterivEXT MANGLE(GetMultiTexLevelParameterivEXT) +#define glGetMultiTexParameterfvEXT MANGLE(GetMultiTexParameterfvEXT) +#define glGetMultiTexParameterIivEXT MANGLE(GetMultiTexParameterIivEXT) +#define glGetMultiTexParameterIuivEXT MANGLE(GetMultiTexParameterIuivEXT) +#define glGetMultiTexParameterivEXT MANGLE(GetMultiTexParameterivEXT) +#define glGetNamedBufferParameterivEXT MANGLE(GetNamedBufferParameterivEXT) +#define glGetNamedBufferParameterui64vNV MANGLE(GetNamedBufferParameterui64vNV) +#define glGetNamedBufferPointervEXT MANGLE(GetNamedBufferPointervEXT) +#define glGetNamedBufferSubDataEXT MANGLE(GetNamedBufferSubDataEXT) +#define glGetNamedFramebufferAttachmentParameterivEXT MANGLE(GetNamedFramebufferAttachmentParameterivEXT) +#define glGetNamedProgramivEXT MANGLE(GetNamedProgramivEXT) +#define glGetNamedProgramLocalParameterdvEXT MANGLE(GetNamedProgramLocalParameterdvEXT) +#define glGetNamedProgramLocalParameterfvEXT MANGLE(GetNamedProgramLocalParameterfvEXT) +#define glGetNamedProgramLocalParameterIivEXT MANGLE(GetNamedProgramLocalParameterIivEXT) +#define glGetNamedProgramLocalParameterIuivEXT MANGLE(GetNamedProgramLocalParameterIuivEXT) +#define glGetNamedProgramStringEXT MANGLE(GetNamedProgramStringEXT) +#define glGetNamedRenderbufferParameterivEXT MANGLE(GetNamedRenderbufferParameterivEXT) +#define glGetNamedStringARB MANGLE(GetNamedStringARB) +#define glGetNamedStringivARB MANGLE(GetNamedStringivARB) +#define glGetnColorTableARB MANGLE(GetnColorTableARB) +#define glGetnCompressedTexImageARB MANGLE(GetnCompressedTexImageARB) +#define glGetnConvolutionFilterARB MANGLE(GetnConvolutionFilterARB) +#define glGetnHistogramARB MANGLE(GetnHistogramARB) +#define glGetnMapdvARB MANGLE(GetnMapdvARB) +#define glGetnMapfvARB MANGLE(GetnMapfvARB) +#define glGetnMapivARB MANGLE(GetnMapivARB) +#define glGetnMinmaxARB MANGLE(GetnMinmaxARB) +#define glGetnPixelMapfvARB MANGLE(GetnPixelMapfvARB) +#define glGetnPixelMapuivARB MANGLE(GetnPixelMapuivARB) +#define glGetnPixelMapusvARB MANGLE(GetnPixelMapusvARB) +#define glGetnPolygonStippleARB MANGLE(GetnPolygonStippleARB) +#define glGetnSeparableFilterARB MANGLE(GetnSeparableFilterARB) +#define glGetnTexImageARB MANGLE(GetnTexImageARB) +#define glGetnUniformdvARB MANGLE(GetnUniformdvARB) +#define glGetnUniformfvARB MANGLE(GetnUniformfvARB) +#define glGetnUniformivARB MANGLE(GetnUniformivARB) +#define glGetnUniformuivARB MANGLE(GetnUniformuivARB) +#define glGetObjectBufferfvATI MANGLE(GetObjectBufferfvATI) +#define glGetObjectBufferivATI MANGLE(GetObjectBufferivATI) +#define glGetObjectParameterfvARB MANGLE(GetObjectParameterfvARB) +#define glGetObjectParameterivAPPLE MANGLE(GetObjectParameterivAPPLE) +#define glGetObjectParameterivARB MANGLE(GetObjectParameterivARB) +#define glGetOcclusionQueryivNV MANGLE(GetOcclusionQueryivNV) +#define glGetOcclusionQueryuivNV MANGLE(GetOcclusionQueryuivNV) +#define glGetPerfMonitorCounterDataAMD MANGLE(GetPerfMonitorCounterDataAMD) +#define glGetPerfMonitorCounterInfoAMD MANGLE(GetPerfMonitorCounterInfoAMD) +#define glGetPerfMonitorCountersAMD MANGLE(GetPerfMonitorCountersAMD) +#define glGetPerfMonitorCounterStringAMD MANGLE(GetPerfMonitorCounterStringAMD) +#define glGetPerfMonitorGroupsAMD MANGLE(GetPerfMonitorGroupsAMD) +#define glGetPerfMonitorGroupStringAMD MANGLE(GetPerfMonitorGroupStringAMD) +#define glGetPixelMapfv MANGLE(GetPixelMapfv) +#define glGetPixelMapuiv MANGLE(GetPixelMapuiv) +#define glGetPixelMapusv MANGLE(GetPixelMapusv) +#define glGetPixelTexGenParameterfvSGIS MANGLE(GetPixelTexGenParameterfvSGIS) +#define glGetPixelTexGenParameterivSGIS MANGLE(GetPixelTexGenParameterivSGIS) +#define glGetPointerIndexedvEXT MANGLE(GetPointerIndexedvEXT) +#define glGetPointervEXT MANGLE(GetPointervEXT) +#define glGetPointerv MANGLE(GetPointerv) +#define glGetPolygonStipple MANGLE(GetPolygonStipple) +#define glGetProgramBinary MANGLE(GetProgramBinary) +#define glGetProgramEnvParameterdvARB MANGLE(GetProgramEnvParameterdvARB) +#define glGetProgramEnvParameterfvARB MANGLE(GetProgramEnvParameterfvARB) +#define glGetProgramEnvParameterIivNV MANGLE(GetProgramEnvParameterIivNV) +#define glGetProgramEnvParameterIuivNV MANGLE(GetProgramEnvParameterIuivNV) +#define glGetProgramInfoLog MANGLE(GetProgramInfoLog) +#define glGetProgramivARB MANGLE(GetProgramivARB) +#define glGetProgramiv MANGLE(GetProgramiv) +#define glGetProgramivNV MANGLE(GetProgramivNV) +#define glGetProgramLocalParameterdvARB MANGLE(GetProgramLocalParameterdvARB) +#define glGetProgramLocalParameterfvARB MANGLE(GetProgramLocalParameterfvARB) +#define glGetProgramLocalParameterIivNV MANGLE(GetProgramLocalParameterIivNV) +#define glGetProgramLocalParameterIuivNV MANGLE(GetProgramLocalParameterIuivNV) +#define glGetProgramNamedParameterdvNV MANGLE(GetProgramNamedParameterdvNV) +#define glGetProgramNamedParameterfvNV MANGLE(GetProgramNamedParameterfvNV) +#define glGetProgramParameterdvNV MANGLE(GetProgramParameterdvNV) +#define glGetProgramParameterfvNV MANGLE(GetProgramParameterfvNV) +#define glGetProgramPipelineInfoLog MANGLE(GetProgramPipelineInfoLog) +#define glGetProgramPipelineiv MANGLE(GetProgramPipelineiv) +#define glGetProgramRegisterfvMESA MANGLE(GetProgramRegisterfvMESA) +#define glGetProgramStageiv MANGLE(GetProgramStageiv) +#define glGetProgramStringARB MANGLE(GetProgramStringARB) +#define glGetProgramStringNV MANGLE(GetProgramStringNV) +#define glGetProgramSubroutineParameteruivNV MANGLE(GetProgramSubroutineParameteruivNV) +#define glGetQueryIndexediv MANGLE(GetQueryIndexediv) +#define glGetQueryivARB MANGLE(GetQueryivARB) +#define glGetQueryiv MANGLE(GetQueryiv) +#define glGetQueryObjecti64vEXT MANGLE(GetQueryObjecti64vEXT) +#define glGetQueryObjecti64v MANGLE(GetQueryObjecti64v) +#define glGetQueryObjectivARB MANGLE(GetQueryObjectivARB) +#define glGetQueryObjectiv MANGLE(GetQueryObjectiv) +#define glGetQueryObjectui64vEXT MANGLE(GetQueryObjectui64vEXT) +#define glGetQueryObjectui64v MANGLE(GetQueryObjectui64v) +#define glGetQueryObjectuivARB MANGLE(GetQueryObjectuivARB) +#define glGetQueryObjectuiv MANGLE(GetQueryObjectuiv) +#define glGetRenderbufferParameterivEXT MANGLE(GetRenderbufferParameterivEXT) +#define glGetRenderbufferParameteriv MANGLE(GetRenderbufferParameteriv) +#define glGetSamplerParameterfv MANGLE(GetSamplerParameterfv) +#define glGetSamplerParameterIiv MANGLE(GetSamplerParameterIiv) +#define glGetSamplerParameterIuiv MANGLE(GetSamplerParameterIuiv) +#define glGetSamplerParameteriv MANGLE(GetSamplerParameteriv) +#define glGetSeparableFilterEXT MANGLE(GetSeparableFilterEXT) +#define glGetSeparableFilter MANGLE(GetSeparableFilter) +#define glGetShaderInfoLog MANGLE(GetShaderInfoLog) +#define glGetShaderiv MANGLE(GetShaderiv) +#define glGetShaderPrecisionFormat MANGLE(GetShaderPrecisionFormat) +#define glGetShaderSourceARB MANGLE(GetShaderSourceARB) +#define glGetShaderSource MANGLE(GetShaderSource) +#define glGetSharpenTexFuncSGIS MANGLE(GetSharpenTexFuncSGIS) +#define glGetStringi MANGLE(GetStringi) +#define glGetString MANGLE(GetString) +#define glGetSubroutineIndex MANGLE(GetSubroutineIndex) +#define glGetSubroutineUniformLocation MANGLE(GetSubroutineUniformLocation) +#define glGetSynciv MANGLE(GetSynciv) +#define glGetTexBumpParameterfvATI MANGLE(GetTexBumpParameterfvATI) +#define glGetTexBumpParameterivATI MANGLE(GetTexBumpParameterivATI) +#define glGetTexEnvfv MANGLE(GetTexEnvfv) +#define glGetTexEnviv MANGLE(GetTexEnviv) +#define glGetTexFilterFuncSGIS MANGLE(GetTexFilterFuncSGIS) +#define glGetTexGendv MANGLE(GetTexGendv) +#define glGetTexGenfv MANGLE(GetTexGenfv) +#define glGetTexGeniv MANGLE(GetTexGeniv) +#define glGetTexImage MANGLE(GetTexImage) +#define glGetTexLevelParameterfv MANGLE(GetTexLevelParameterfv) +#define glGetTexLevelParameteriv MANGLE(GetTexLevelParameteriv) +#define glGetTexParameterfv MANGLE(GetTexParameterfv) +#define glGetTexParameterIivEXT MANGLE(GetTexParameterIivEXT) +#define glGetTexParameterIiv MANGLE(GetTexParameterIiv) +#define glGetTexParameterIuivEXT MANGLE(GetTexParameterIuivEXT) +#define glGetTexParameterIuiv MANGLE(GetTexParameterIuiv) +#define glGetTexParameteriv MANGLE(GetTexParameteriv) +#define glGetTexParameterPointervAPPLE MANGLE(GetTexParameterPointervAPPLE) +#define glGetTextureImageEXT MANGLE(GetTextureImageEXT) +#define glGetTextureLevelParameterfvEXT MANGLE(GetTextureLevelParameterfvEXT) +#define glGetTextureLevelParameterivEXT MANGLE(GetTextureLevelParameterivEXT) +#define glGetTextureParameterfvEXT MANGLE(GetTextureParameterfvEXT) +#define glGetTextureParameterIivEXT MANGLE(GetTextureParameterIivEXT) +#define glGetTextureParameterIuivEXT MANGLE(GetTextureParameterIuivEXT) +#define glGetTextureParameterivEXT MANGLE(GetTextureParameterivEXT) +#define glGetTrackMatrixivNV MANGLE(GetTrackMatrixivNV) +#define glGetTransformFeedbackVaryingEXT MANGLE(GetTransformFeedbackVaryingEXT) +#define glGetTransformFeedbackVarying MANGLE(GetTransformFeedbackVarying) +#define glGetTransformFeedbackVaryingNV MANGLE(GetTransformFeedbackVaryingNV) +#define glGetUniformBlockIndex MANGLE(GetUniformBlockIndex) +#define glGetUniformBufferSizeEXT MANGLE(GetUniformBufferSizeEXT) +#define glGetUniformdv MANGLE(GetUniformdv) +#define glGetUniformfvARB MANGLE(GetUniformfvARB) +#define glGetUniformfv MANGLE(GetUniformfv) +#define glGetUniformi64vNV MANGLE(GetUniformi64vNV) +#define glGetUniformIndices MANGLE(GetUniformIndices) +#define glGetUniformivARB MANGLE(GetUniformivARB) +#define glGetUniformiv MANGLE(GetUniformiv) +#define glGetUniformLocationARB MANGLE(GetUniformLocationARB) +#define glGetUniformLocation MANGLE(GetUniformLocation) +#define glGetUniformOffsetEXT MANGLE(GetUniformOffsetEXT) +#define glGetUniformSubroutineuiv MANGLE(GetUniformSubroutineuiv) +#define glGetUniformui64vNV MANGLE(GetUniformui64vNV) +#define glGetUniformuivEXT MANGLE(GetUniformuivEXT) +#define glGetUniformuiv MANGLE(GetUniformuiv) +#define glGetVariantArrayObjectfvATI MANGLE(GetVariantArrayObjectfvATI) +#define glGetVariantArrayObjectivATI MANGLE(GetVariantArrayObjectivATI) +#define glGetVariantBooleanvEXT MANGLE(GetVariantBooleanvEXT) +#define glGetVariantFloatvEXT MANGLE(GetVariantFloatvEXT) +#define glGetVariantIntegervEXT MANGLE(GetVariantIntegervEXT) +#define glGetVariantPointervEXT MANGLE(GetVariantPointervEXT) +#define glGetVaryingLocationNV MANGLE(GetVaryingLocationNV) +#define glGetVertexAttribArrayObjectfvATI MANGLE(GetVertexAttribArrayObjectfvATI) +#define glGetVertexAttribArrayObjectivATI MANGLE(GetVertexAttribArrayObjectivATI) +#define glGetVertexAttribdvARB MANGLE(GetVertexAttribdvARB) +#define glGetVertexAttribdv MANGLE(GetVertexAttribdv) +#define glGetVertexAttribdvNV MANGLE(GetVertexAttribdvNV) +#define glGetVertexAttribfvARB MANGLE(GetVertexAttribfvARB) +#define glGetVertexAttribfv MANGLE(GetVertexAttribfv) +#define glGetVertexAttribfvNV MANGLE(GetVertexAttribfvNV) +#define glGetVertexAttribIivEXT MANGLE(GetVertexAttribIivEXT) +#define glGetVertexAttribIiv MANGLE(GetVertexAttribIiv) +#define glGetVertexAttribIuivEXT MANGLE(GetVertexAttribIuivEXT) +#define glGetVertexAttribIuiv MANGLE(GetVertexAttribIuiv) +#define glGetVertexAttribivARB MANGLE(GetVertexAttribivARB) +#define glGetVertexAttribiv MANGLE(GetVertexAttribiv) +#define glGetVertexAttribivNV MANGLE(GetVertexAttribivNV) +#define glGetVertexAttribLdvEXT MANGLE(GetVertexAttribLdvEXT) +#define glGetVertexAttribLdv MANGLE(GetVertexAttribLdv) +#define glGetVertexAttribLi64vNV MANGLE(GetVertexAttribLi64vNV) +#define glGetVertexAttribLui64vNV MANGLE(GetVertexAttribLui64vNV) +#define glGetVertexAttribPointervARB MANGLE(GetVertexAttribPointervARB) +#define glGetVertexAttribPointerv MANGLE(GetVertexAttribPointerv) +#define glGetVertexAttribPointervNV MANGLE(GetVertexAttribPointervNV) +#define glGetVideoCaptureivNV MANGLE(GetVideoCaptureivNV) +#define glGetVideoCaptureStreamdvNV MANGLE(GetVideoCaptureStreamdvNV) +#define glGetVideoCaptureStreamfvNV MANGLE(GetVideoCaptureStreamfvNV) +#define glGetVideoCaptureStreamivNV MANGLE(GetVideoCaptureStreamivNV) +#define glGetVideoi64vNV MANGLE(GetVideoi64vNV) +#define glGetVideoivNV MANGLE(GetVideoivNV) +#define glGetVideoui64vNV MANGLE(GetVideoui64vNV) +#define glGetVideouivNV MANGLE(GetVideouivNV) +#define glGlobalAlphaFactorbSUN MANGLE(GlobalAlphaFactorbSUN) +#define glGlobalAlphaFactordSUN MANGLE(GlobalAlphaFactordSUN) +#define glGlobalAlphaFactorfSUN MANGLE(GlobalAlphaFactorfSUN) +#define glGlobalAlphaFactoriSUN MANGLE(GlobalAlphaFactoriSUN) +#define glGlobalAlphaFactorsSUN MANGLE(GlobalAlphaFactorsSUN) +#define glGlobalAlphaFactorubSUN MANGLE(GlobalAlphaFactorubSUN) +#define glGlobalAlphaFactoruiSUN MANGLE(GlobalAlphaFactoruiSUN) +#define glGlobalAlphaFactorusSUN MANGLE(GlobalAlphaFactorusSUN) +#define glHint MANGLE(Hint) +#define glHintPGI MANGLE(HintPGI) +#define glHistogramEXT MANGLE(HistogramEXT) +#define glHistogram MANGLE(Histogram) +#define glIglooInterfaceSGIX MANGLE(IglooInterfaceSGIX) +#define glImageTransformParameterfHP MANGLE(ImageTransformParameterfHP) +#define glImageTransformParameterfvHP MANGLE(ImageTransformParameterfvHP) +#define glImageTransformParameteriHP MANGLE(ImageTransformParameteriHP) +#define glImageTransformParameterivHP MANGLE(ImageTransformParameterivHP) +#define glIndexd MANGLE(Indexd) +#define glIndexdv MANGLE(Indexdv) +#define glIndexf MANGLE(Indexf) +#define glIndexFormatNV MANGLE(IndexFormatNV) +#define glIndexFuncEXT MANGLE(IndexFuncEXT) +#define glIndexfv MANGLE(Indexfv) +#define glIndexi MANGLE(Indexi) +#define glIndexiv MANGLE(Indexiv) +#define glIndexMask MANGLE(IndexMask) +#define glIndexMaterialEXT MANGLE(IndexMaterialEXT) +#define glIndexPointerEXT MANGLE(IndexPointerEXT) +#define glIndexPointerListIBM MANGLE(IndexPointerListIBM) +#define glIndexPointer MANGLE(IndexPointer) +#define glIndexs MANGLE(Indexs) +#define glIndexsv MANGLE(Indexsv) +#define glIndexub MANGLE(Indexub) +#define glIndexubv MANGLE(Indexubv) +#define glInitNames MANGLE(InitNames) +#define glInsertComponentEXT MANGLE(InsertComponentEXT) +#define glInstrumentsBufferSGIX MANGLE(InstrumentsBufferSGIX) +#define glInterleavedArrays MANGLE(InterleavedArrays) +#define glIsAsyncMarkerSGIX MANGLE(IsAsyncMarkerSGIX) +#define glIsBufferARB MANGLE(IsBufferARB) +#define glIsBuffer MANGLE(IsBuffer) +#define glIsBufferResidentNV MANGLE(IsBufferResidentNV) +#define glIsEnabledi MANGLE(IsEnabledi) +#define glIsEnabledIndexedEXT MANGLE(IsEnabledIndexedEXT) +#define glIsEnabled MANGLE(IsEnabled) +#define glIsFenceAPPLE MANGLE(IsFenceAPPLE) +#define glIsFenceNV MANGLE(IsFenceNV) +#define glIsFramebufferEXT MANGLE(IsFramebufferEXT) +#define glIsFramebuffer MANGLE(IsFramebuffer) +#define glIsList MANGLE(IsList) +#define glIsNameAMD MANGLE(IsNameAMD) +#define glIsNamedBufferResidentNV MANGLE(IsNamedBufferResidentNV) +#define glIsNamedStringARB MANGLE(IsNamedStringARB) +#define glIsObjectBufferATI MANGLE(IsObjectBufferATI) +#define glIsOcclusionQueryNV MANGLE(IsOcclusionQueryNV) +#define glIsProgramARB MANGLE(IsProgramARB) +#define glIsProgram MANGLE(IsProgram) +#define glIsProgramNV MANGLE(IsProgramNV) +#define glIsProgramPipeline MANGLE(IsProgramPipeline) +#define glIsQueryARB MANGLE(IsQueryARB) +#define glIsQuery MANGLE(IsQuery) +#define glIsRenderbufferEXT MANGLE(IsRenderbufferEXT) +#define glIsRenderbuffer MANGLE(IsRenderbuffer) +#define glIsSampler MANGLE(IsSampler) +#define glIsShader MANGLE(IsShader) +#define glIsSync MANGLE(IsSync) +#define glIsTextureEXT MANGLE(IsTextureEXT) +#define glIsTexture MANGLE(IsTexture) +#define glIsTransformFeedback MANGLE(IsTransformFeedback) +#define glIsTransformFeedbackNV MANGLE(IsTransformFeedbackNV) +#define glIsVariantEnabledEXT MANGLE(IsVariantEnabledEXT) +#define glIsVertexArrayAPPLE MANGLE(IsVertexArrayAPPLE) +#define glIsVertexArray MANGLE(IsVertexArray) +#define glIsVertexAttribEnabledAPPLE MANGLE(IsVertexAttribEnabledAPPLE) +#define glLightEnviSGIX MANGLE(LightEnviSGIX) +#define glLightf MANGLE(Lightf) +#define glLightfv MANGLE(Lightfv) +#define glLighti MANGLE(Lighti) +#define glLightiv MANGLE(Lightiv) +#define glLightModelf MANGLE(LightModelf) +#define glLightModelfv MANGLE(LightModelfv) +#define glLightModeli MANGLE(LightModeli) +#define glLightModeliv MANGLE(LightModeliv) +#define glLineStipple MANGLE(LineStipple) +#define glLineWidth MANGLE(LineWidth) +#define glLinkProgramARB MANGLE(LinkProgramARB) +#define glLinkProgram MANGLE(LinkProgram) +#define glListBase MANGLE(ListBase) +#define glListParameterfSGIX MANGLE(ListParameterfSGIX) +#define glListParameterfvSGIX MANGLE(ListParameterfvSGIX) +#define glListParameteriSGIX MANGLE(ListParameteriSGIX) +#define glListParameterivSGIX MANGLE(ListParameterivSGIX) +#define glLoadIdentityDeformationMapSGIX MANGLE(LoadIdentityDeformationMapSGIX) +#define glLoadIdentity MANGLE(LoadIdentity) +#define glLoadMatrixd MANGLE(LoadMatrixd) +#define glLoadMatrixf MANGLE(LoadMatrixf) +#define glLoadName MANGLE(LoadName) +#define glLoadProgramNV MANGLE(LoadProgramNV) +#define glLoadTransposeMatrixdARB MANGLE(LoadTransposeMatrixdARB) +#define glLoadTransposeMatrixd MANGLE(LoadTransposeMatrixd) +#define glLoadTransposeMatrixfARB MANGLE(LoadTransposeMatrixfARB) +#define glLoadTransposeMatrixf MANGLE(LoadTransposeMatrixf) +#define glLockArraysEXT MANGLE(LockArraysEXT) +#define glLogicOp MANGLE(LogicOp) +#define glMakeBufferNonResidentNV MANGLE(MakeBufferNonResidentNV) +#define glMakeBufferResidentNV MANGLE(MakeBufferResidentNV) +#define glMakeNamedBufferNonResidentNV MANGLE(MakeNamedBufferNonResidentNV) +#define glMakeNamedBufferResidentNV MANGLE(MakeNamedBufferResidentNV) +#define glMap1d MANGLE(Map1d) +#define glMap1f MANGLE(Map1f) +#define glMap2d MANGLE(Map2d) +#define glMap2f MANGLE(Map2f) +#define glMapBufferARB MANGLE(MapBufferARB) +#define glMapBuffer MANGLE(MapBuffer) +#define glMapBufferRange MANGLE(MapBufferRange) +#define glMapControlPointsNV MANGLE(MapControlPointsNV) +#define glMapGrid1d MANGLE(MapGrid1d) +#define glMapGrid1f MANGLE(MapGrid1f) +#define glMapGrid2d MANGLE(MapGrid2d) +#define glMapGrid2f MANGLE(MapGrid2f) +#define glMapNamedBufferEXT MANGLE(MapNamedBufferEXT) +#define glMapNamedBufferRangeEXT MANGLE(MapNamedBufferRangeEXT) +#define glMapObjectBufferATI MANGLE(MapObjectBufferATI) +#define glMapParameterfvNV MANGLE(MapParameterfvNV) +#define glMapParameterivNV MANGLE(MapParameterivNV) +#define glMapVertexAttrib1dAPPLE MANGLE(MapVertexAttrib1dAPPLE) +#define glMapVertexAttrib1fAPPLE MANGLE(MapVertexAttrib1fAPPLE) +#define glMapVertexAttrib2dAPPLE MANGLE(MapVertexAttrib2dAPPLE) +#define glMapVertexAttrib2fAPPLE MANGLE(MapVertexAttrib2fAPPLE) +#define glMaterialf MANGLE(Materialf) +#define glMaterialfv MANGLE(Materialfv) +#define glMateriali MANGLE(Materiali) +#define glMaterialiv MANGLE(Materialiv) +#define glMatrixFrustumEXT MANGLE(MatrixFrustumEXT) +#define glMatrixIndexPointerARB MANGLE(MatrixIndexPointerARB) +#define glMatrixIndexubvARB MANGLE(MatrixIndexubvARB) +#define glMatrixIndexuivARB MANGLE(MatrixIndexuivARB) +#define glMatrixIndexusvARB MANGLE(MatrixIndexusvARB) +#define glMatrixLoaddEXT MANGLE(MatrixLoaddEXT) +#define glMatrixLoadfEXT MANGLE(MatrixLoadfEXT) +#define glMatrixLoadIdentityEXT MANGLE(MatrixLoadIdentityEXT) +#define glMatrixLoadTransposedEXT MANGLE(MatrixLoadTransposedEXT) +#define glMatrixLoadTransposefEXT MANGLE(MatrixLoadTransposefEXT) +#define glMatrixMode MANGLE(MatrixMode) +#define glMatrixMultdEXT MANGLE(MatrixMultdEXT) +#define glMatrixMultfEXT MANGLE(MatrixMultfEXT) +#define glMatrixMultTransposedEXT MANGLE(MatrixMultTransposedEXT) +#define glMatrixMultTransposefEXT MANGLE(MatrixMultTransposefEXT) +#define glMatrixOrthoEXT MANGLE(MatrixOrthoEXT) +#define glMatrixPopEXT MANGLE(MatrixPopEXT) +#define glMatrixPushEXT MANGLE(MatrixPushEXT) +#define glMatrixRotatedEXT MANGLE(MatrixRotatedEXT) +#define glMatrixRotatefEXT MANGLE(MatrixRotatefEXT) +#define glMatrixScaledEXT MANGLE(MatrixScaledEXT) +#define glMatrixScalefEXT MANGLE(MatrixScalefEXT) +#define glMatrixTranslatedEXT MANGLE(MatrixTranslatedEXT) +#define glMatrixTranslatefEXT MANGLE(MatrixTranslatefEXT) +#define glMemoryBarrierEXT MANGLE(MemoryBarrierEXT) +#define glMinmaxEXT MANGLE(MinmaxEXT) +#define glMinmax MANGLE(Minmax) +#define glMinSampleShadingARB MANGLE(MinSampleShadingARB) +#define glMinSampleShading MANGLE(MinSampleShading) +#define glMultiDrawArraysEXT MANGLE(MultiDrawArraysEXT) +#define glMultiDrawArrays MANGLE(MultiDrawArrays) +#define glMultiDrawElementArrayAPPLE MANGLE(MultiDrawElementArrayAPPLE) +#define glMultiDrawElementsBaseVertex MANGLE(MultiDrawElementsBaseVertex) +#define glMultiDrawElementsEXT MANGLE(MultiDrawElementsEXT) +#define glMultiDrawElements MANGLE(MultiDrawElements) +#define glMultiDrawRangeElementArrayAPPLE MANGLE(MultiDrawRangeElementArrayAPPLE) +#define glMultiModeDrawArraysIBM MANGLE(MultiModeDrawArraysIBM) +#define glMultiModeDrawElementsIBM MANGLE(MultiModeDrawElementsIBM) +#define glMultiTexBufferEXT MANGLE(MultiTexBufferEXT) +#define glMultiTexCoord1dARB MANGLE(MultiTexCoord1dARB) +#define glMultiTexCoord1d MANGLE(MultiTexCoord1d) +#define glMultiTexCoord1dvARB MANGLE(MultiTexCoord1dvARB) +#define glMultiTexCoord1dv MANGLE(MultiTexCoord1dv) +#define glMultiTexCoord1fARB MANGLE(MultiTexCoord1fARB) +#define glMultiTexCoord1f MANGLE(MultiTexCoord1f) +#define glMultiTexCoord1fvARB MANGLE(MultiTexCoord1fvARB) +#define glMultiTexCoord1fv MANGLE(MultiTexCoord1fv) +#define glMultiTexCoord1hNV MANGLE(MultiTexCoord1hNV) +#define glMultiTexCoord1hvNV MANGLE(MultiTexCoord1hvNV) +#define glMultiTexCoord1iARB MANGLE(MultiTexCoord1iARB) +#define glMultiTexCoord1i MANGLE(MultiTexCoord1i) +#define glMultiTexCoord1ivARB MANGLE(MultiTexCoord1ivARB) +#define glMultiTexCoord1iv MANGLE(MultiTexCoord1iv) +#define glMultiTexCoord1sARB MANGLE(MultiTexCoord1sARB) +#define glMultiTexCoord1s MANGLE(MultiTexCoord1s) +#define glMultiTexCoord1svARB MANGLE(MultiTexCoord1svARB) +#define glMultiTexCoord1sv MANGLE(MultiTexCoord1sv) +#define glMultiTexCoord2dARB MANGLE(MultiTexCoord2dARB) +#define glMultiTexCoord2d MANGLE(MultiTexCoord2d) +#define glMultiTexCoord2dvARB MANGLE(MultiTexCoord2dvARB) +#define glMultiTexCoord2dv MANGLE(MultiTexCoord2dv) +#define glMultiTexCoord2fARB MANGLE(MultiTexCoord2fARB) +#define glMultiTexCoord2f MANGLE(MultiTexCoord2f) +#define glMultiTexCoord2fvARB MANGLE(MultiTexCoord2fvARB) +#define glMultiTexCoord2fv MANGLE(MultiTexCoord2fv) +#define glMultiTexCoord2hNV MANGLE(MultiTexCoord2hNV) +#define glMultiTexCoord2hvNV MANGLE(MultiTexCoord2hvNV) +#define glMultiTexCoord2iARB MANGLE(MultiTexCoord2iARB) +#define glMultiTexCoord2i MANGLE(MultiTexCoord2i) +#define glMultiTexCoord2ivARB MANGLE(MultiTexCoord2ivARB) +#define glMultiTexCoord2iv MANGLE(MultiTexCoord2iv) +#define glMultiTexCoord2sARB MANGLE(MultiTexCoord2sARB) +#define glMultiTexCoord2s MANGLE(MultiTexCoord2s) +#define glMultiTexCoord2svARB MANGLE(MultiTexCoord2svARB) +#define glMultiTexCoord2sv MANGLE(MultiTexCoord2sv) +#define glMultiTexCoord3dARB MANGLE(MultiTexCoord3dARB) +#define glMultiTexCoord3d MANGLE(MultiTexCoord3d) +#define glMultiTexCoord3dvARB MANGLE(MultiTexCoord3dvARB) +#define glMultiTexCoord3dv MANGLE(MultiTexCoord3dv) +#define glMultiTexCoord3fARB MANGLE(MultiTexCoord3fARB) +#define glMultiTexCoord3f MANGLE(MultiTexCoord3f) +#define glMultiTexCoord3fvARB MANGLE(MultiTexCoord3fvARB) +#define glMultiTexCoord3fv MANGLE(MultiTexCoord3fv) +#define glMultiTexCoord3hNV MANGLE(MultiTexCoord3hNV) +#define glMultiTexCoord3hvNV MANGLE(MultiTexCoord3hvNV) +#define glMultiTexCoord3iARB MANGLE(MultiTexCoord3iARB) +#define glMultiTexCoord3i MANGLE(MultiTexCoord3i) +#define glMultiTexCoord3ivARB MANGLE(MultiTexCoord3ivARB) +#define glMultiTexCoord3iv MANGLE(MultiTexCoord3iv) +#define glMultiTexCoord3sARB MANGLE(MultiTexCoord3sARB) +#define glMultiTexCoord3s MANGLE(MultiTexCoord3s) +#define glMultiTexCoord3svARB MANGLE(MultiTexCoord3svARB) +#define glMultiTexCoord3sv MANGLE(MultiTexCoord3sv) +#define glMultiTexCoord4dARB MANGLE(MultiTexCoord4dARB) +#define glMultiTexCoord4d MANGLE(MultiTexCoord4d) +#define glMultiTexCoord4dvARB MANGLE(MultiTexCoord4dvARB) +#define glMultiTexCoord4dv MANGLE(MultiTexCoord4dv) +#define glMultiTexCoord4fARB MANGLE(MultiTexCoord4fARB) +#define glMultiTexCoord4f MANGLE(MultiTexCoord4f) +#define glMultiTexCoord4fvARB MANGLE(MultiTexCoord4fvARB) +#define glMultiTexCoord4fv MANGLE(MultiTexCoord4fv) +#define glMultiTexCoord4hNV MANGLE(MultiTexCoord4hNV) +#define glMultiTexCoord4hvNV MANGLE(MultiTexCoord4hvNV) +#define glMultiTexCoord4iARB MANGLE(MultiTexCoord4iARB) +#define glMultiTexCoord4i MANGLE(MultiTexCoord4i) +#define glMultiTexCoord4ivARB MANGLE(MultiTexCoord4ivARB) +#define glMultiTexCoord4iv MANGLE(MultiTexCoord4iv) +#define glMultiTexCoord4sARB MANGLE(MultiTexCoord4sARB) +#define glMultiTexCoord4s MANGLE(MultiTexCoord4s) +#define glMultiTexCoord4svARB MANGLE(MultiTexCoord4svARB) +#define glMultiTexCoord4sv MANGLE(MultiTexCoord4sv) +#define glMultiTexCoordP1ui MANGLE(MultiTexCoordP1ui) +#define glMultiTexCoordP1uiv MANGLE(MultiTexCoordP1uiv) +#define glMultiTexCoordP2ui MANGLE(MultiTexCoordP2ui) +#define glMultiTexCoordP2uiv MANGLE(MultiTexCoordP2uiv) +#define glMultiTexCoordP3ui MANGLE(MultiTexCoordP3ui) +#define glMultiTexCoordP3uiv MANGLE(MultiTexCoordP3uiv) +#define glMultiTexCoordP4ui MANGLE(MultiTexCoordP4ui) +#define glMultiTexCoordP4uiv MANGLE(MultiTexCoordP4uiv) +#define glMultiTexCoordPointerEXT MANGLE(MultiTexCoordPointerEXT) +#define glMultiTexEnvfEXT MANGLE(MultiTexEnvfEXT) +#define glMultiTexEnvfvEXT MANGLE(MultiTexEnvfvEXT) +#define glMultiTexEnviEXT MANGLE(MultiTexEnviEXT) +#define glMultiTexEnvivEXT MANGLE(MultiTexEnvivEXT) +#define glMultiTexGendEXT MANGLE(MultiTexGendEXT) +#define glMultiTexGendvEXT MANGLE(MultiTexGendvEXT) +#define glMultiTexGenfEXT MANGLE(MultiTexGenfEXT) +#define glMultiTexGenfvEXT MANGLE(MultiTexGenfvEXT) +#define glMultiTexGeniEXT MANGLE(MultiTexGeniEXT) +#define glMultiTexGenivEXT MANGLE(MultiTexGenivEXT) +#define glMultiTexImage1DEXT MANGLE(MultiTexImage1DEXT) +#define glMultiTexImage2DEXT MANGLE(MultiTexImage2DEXT) +#define glMultiTexImage3DEXT MANGLE(MultiTexImage3DEXT) +#define glMultiTexParameterfEXT MANGLE(MultiTexParameterfEXT) +#define glMultiTexParameterfvEXT MANGLE(MultiTexParameterfvEXT) +#define glMultiTexParameteriEXT MANGLE(MultiTexParameteriEXT) +#define glMultiTexParameterIivEXT MANGLE(MultiTexParameterIivEXT) +#define glMultiTexParameterIuivEXT MANGLE(MultiTexParameterIuivEXT) +#define glMultiTexParameterivEXT MANGLE(MultiTexParameterivEXT) +#define glMultiTexRenderbufferEXT MANGLE(MultiTexRenderbufferEXT) +#define glMultiTexSubImage1DEXT MANGLE(MultiTexSubImage1DEXT) +#define glMultiTexSubImage2DEXT MANGLE(MultiTexSubImage2DEXT) +#define glMultiTexSubImage3DEXT MANGLE(MultiTexSubImage3DEXT) +#define glMultMatrixd MANGLE(MultMatrixd) +#define glMultMatrixf MANGLE(MultMatrixf) +#define glMultTransposeMatrixdARB MANGLE(MultTransposeMatrixdARB) +#define glMultTransposeMatrixd MANGLE(MultTransposeMatrixd) +#define glMultTransposeMatrixfARB MANGLE(MultTransposeMatrixfARB) +#define glMultTransposeMatrixf MANGLE(MultTransposeMatrixf) +#define glNamedBufferDataEXT MANGLE(NamedBufferDataEXT) +#define glNamedBufferSubDataEXT MANGLE(NamedBufferSubDataEXT) +#define glNamedCopyBufferSubDataEXT MANGLE(NamedCopyBufferSubDataEXT) +#define glNamedFramebufferRenderbufferEXT MANGLE(NamedFramebufferRenderbufferEXT) +#define glNamedFramebufferTexture1DEXT MANGLE(NamedFramebufferTexture1DEXT) +#define glNamedFramebufferTexture2DEXT MANGLE(NamedFramebufferTexture2DEXT) +#define glNamedFramebufferTexture3DEXT MANGLE(NamedFramebufferTexture3DEXT) +#define glNamedFramebufferTextureEXT MANGLE(NamedFramebufferTextureEXT) +#define glNamedFramebufferTextureFaceEXT MANGLE(NamedFramebufferTextureFaceEXT) +#define glNamedFramebufferTextureLayerEXT MANGLE(NamedFramebufferTextureLayerEXT) +#define glNamedProgramLocalParameter4dEXT MANGLE(NamedProgramLocalParameter4dEXT) +#define glNamedProgramLocalParameter4dvEXT MANGLE(NamedProgramLocalParameter4dvEXT) +#define glNamedProgramLocalParameter4fEXT MANGLE(NamedProgramLocalParameter4fEXT) +#define glNamedProgramLocalParameter4fvEXT MANGLE(NamedProgramLocalParameter4fvEXT) +#define glNamedProgramLocalParameterI4iEXT MANGLE(NamedProgramLocalParameterI4iEXT) +#define glNamedProgramLocalParameterI4ivEXT MANGLE(NamedProgramLocalParameterI4ivEXT) +#define glNamedProgramLocalParameterI4uiEXT MANGLE(NamedProgramLocalParameterI4uiEXT) +#define glNamedProgramLocalParameterI4uivEXT MANGLE(NamedProgramLocalParameterI4uivEXT) +#define glNamedProgramLocalParameters4fvEXT MANGLE(NamedProgramLocalParameters4fvEXT) +#define glNamedProgramLocalParametersI4ivEXT MANGLE(NamedProgramLocalParametersI4ivEXT) +#define glNamedProgramLocalParametersI4uivEXT MANGLE(NamedProgramLocalParametersI4uivEXT) +#define glNamedProgramStringEXT MANGLE(NamedProgramStringEXT) +#define glNamedRenderbufferStorageEXT MANGLE(NamedRenderbufferStorageEXT) +#define glNamedRenderbufferStorageMultisampleCoverageEXT MANGLE(NamedRenderbufferStorageMultisampleCoverageEXT) +#define glNamedRenderbufferStorageMultisampleEXT MANGLE(NamedRenderbufferStorageMultisampleEXT) +#define glNamedStringARB MANGLE(NamedStringARB) +#define glNewList MANGLE(NewList) +#define glNewObjectBufferATI MANGLE(NewObjectBufferATI) +#define glNormal3b MANGLE(Normal3b) +#define glNormal3bv MANGLE(Normal3bv) +#define glNormal3d MANGLE(Normal3d) +#define glNormal3dv MANGLE(Normal3dv) +#define glNormal3f MANGLE(Normal3f) +#define glNormal3fVertex3fSUN MANGLE(Normal3fVertex3fSUN) +#define glNormal3fVertex3fvSUN MANGLE(Normal3fVertex3fvSUN) +#define glNormal3fv MANGLE(Normal3fv) +#define glNormal3hNV MANGLE(Normal3hNV) +#define glNormal3hvNV MANGLE(Normal3hvNV) +#define glNormal3i MANGLE(Normal3i) +#define glNormal3iv MANGLE(Normal3iv) +#define glNormal3s MANGLE(Normal3s) +#define glNormal3sv MANGLE(Normal3sv) +#define glNormalFormatNV MANGLE(NormalFormatNV) +#define glNormalP3ui MANGLE(NormalP3ui) +#define glNormalP3uiv MANGLE(NormalP3uiv) +#define glNormalPointerEXT MANGLE(NormalPointerEXT) +#define glNormalPointerListIBM MANGLE(NormalPointerListIBM) +#define glNormalPointer MANGLE(NormalPointer) +#define glNormalPointervINTEL MANGLE(NormalPointervINTEL) +#define glNormalStream3bATI MANGLE(NormalStream3bATI) +#define glNormalStream3bvATI MANGLE(NormalStream3bvATI) +#define glNormalStream3dATI MANGLE(NormalStream3dATI) +#define glNormalStream3dvATI MANGLE(NormalStream3dvATI) +#define glNormalStream3fATI MANGLE(NormalStream3fATI) +#define glNormalStream3fvATI MANGLE(NormalStream3fvATI) +#define glNormalStream3iATI MANGLE(NormalStream3iATI) +#define glNormalStream3ivATI MANGLE(NormalStream3ivATI) +#define glNormalStream3sATI MANGLE(NormalStream3sATI) +#define glNormalStream3svATI MANGLE(NormalStream3svATI) +#define glObjectPurgeableAPPLE MANGLE(ObjectPurgeableAPPLE) +#define glObjectUnpurgeableAPPLE MANGLE(ObjectUnpurgeableAPPLE) +#define glOrtho MANGLE(Ortho) +#define glPassTexCoordATI MANGLE(PassTexCoordATI) +#define glPassThrough MANGLE(PassThrough) +#define glPatchParameterfv MANGLE(PatchParameterfv) +#define glPatchParameteri MANGLE(PatchParameteri) +#define glPauseTransformFeedback MANGLE(PauseTransformFeedback) +#define glPauseTransformFeedbackNV MANGLE(PauseTransformFeedbackNV) +#define glPixelDataRangeNV MANGLE(PixelDataRangeNV) +#define glPixelMapfv MANGLE(PixelMapfv) +#define glPixelMapuiv MANGLE(PixelMapuiv) +#define glPixelMapusv MANGLE(PixelMapusv) +#define glPixelStoref MANGLE(PixelStoref) +#define glPixelStorei MANGLE(PixelStorei) +#define glPixelTexGenParameterfSGIS MANGLE(PixelTexGenParameterfSGIS) +#define glPixelTexGenParameterfvSGIS MANGLE(PixelTexGenParameterfvSGIS) +#define glPixelTexGenParameteriSGIS MANGLE(PixelTexGenParameteriSGIS) +#define glPixelTexGenParameterivSGIS MANGLE(PixelTexGenParameterivSGIS) +#define glPixelTexGenSGIX MANGLE(PixelTexGenSGIX) +#define glPixelTransferf MANGLE(PixelTransferf) +#define glPixelTransferi MANGLE(PixelTransferi) +#define glPixelTransformParameterfEXT MANGLE(PixelTransformParameterfEXT) +#define glPixelTransformParameterfvEXT MANGLE(PixelTransformParameterfvEXT) +#define glPixelTransformParameteriEXT MANGLE(PixelTransformParameteriEXT) +#define glPixelTransformParameterivEXT MANGLE(PixelTransformParameterivEXT) +#define glPixelZoom MANGLE(PixelZoom) +#define glPNTrianglesfATI MANGLE(PNTrianglesfATI) +#define glPNTrianglesiATI MANGLE(PNTrianglesiATI) +#define glPointParameterfARB MANGLE(PointParameterfARB) +#define glPointParameterfEXT MANGLE(PointParameterfEXT) +#define glPointParameterf MANGLE(PointParameterf) +#define glPointParameterfSGIS MANGLE(PointParameterfSGIS) +#define glPointParameterfvARB MANGLE(PointParameterfvARB) +#define glPointParameterfvEXT MANGLE(PointParameterfvEXT) +#define glPointParameterfv MANGLE(PointParameterfv) +#define glPointParameterfvSGIS MANGLE(PointParameterfvSGIS) +#define glPointParameteri MANGLE(PointParameteri) +#define glPointParameteriNV MANGLE(PointParameteriNV) +#define glPointParameteriv MANGLE(PointParameteriv) +#define glPointParameterivNV MANGLE(PointParameterivNV) +#define glPointSize MANGLE(PointSize) +#define glPollAsyncSGIX MANGLE(PollAsyncSGIX) +#define glPollInstrumentsSGIX MANGLE(PollInstrumentsSGIX) +#define glPolygonMode MANGLE(PolygonMode) +#define glPolygonOffsetEXT MANGLE(PolygonOffsetEXT) +#define glPolygonOffset MANGLE(PolygonOffset) +#define glPolygonStipple MANGLE(PolygonStipple) +#define glPopAttrib MANGLE(PopAttrib) +#define glPopClientAttrib MANGLE(PopClientAttrib) +#define glPopMatrix MANGLE(PopMatrix) +#define glPopName MANGLE(PopName) +#define glPresentFrameDualFillNV MANGLE(PresentFrameDualFillNV) +#define glPresentFrameKeyedNV MANGLE(PresentFrameKeyedNV) +#define glPrimitiveRestartIndex MANGLE(PrimitiveRestartIndex) +#define glPrimitiveRestartIndexNV MANGLE(PrimitiveRestartIndexNV) +#define glPrimitiveRestartNV MANGLE(PrimitiveRestartNV) +#define glPrioritizeTexturesEXT MANGLE(PrioritizeTexturesEXT) +#define glPrioritizeTextures MANGLE(PrioritizeTextures) +#define glProgramBinary MANGLE(ProgramBinary) +#define glProgramBufferParametersfvNV MANGLE(ProgramBufferParametersfvNV) +#define glProgramBufferParametersIivNV MANGLE(ProgramBufferParametersIivNV) +#define glProgramBufferParametersIuivNV MANGLE(ProgramBufferParametersIuivNV) +#define glProgramCallbackMESA MANGLE(ProgramCallbackMESA) +#define glProgramEnvParameter4dARB MANGLE(ProgramEnvParameter4dARB) +#define glProgramEnvParameter4dvARB MANGLE(ProgramEnvParameter4dvARB) +#define glProgramEnvParameter4fARB MANGLE(ProgramEnvParameter4fARB) +#define glProgramEnvParameter4fvARB MANGLE(ProgramEnvParameter4fvARB) +#define glProgramEnvParameterI4iNV MANGLE(ProgramEnvParameterI4iNV) +#define glProgramEnvParameterI4ivNV MANGLE(ProgramEnvParameterI4ivNV) +#define glProgramEnvParameterI4uiNV MANGLE(ProgramEnvParameterI4uiNV) +#define glProgramEnvParameterI4uivNV MANGLE(ProgramEnvParameterI4uivNV) +#define glProgramEnvParameters4fvEXT MANGLE(ProgramEnvParameters4fvEXT) +#define glProgramEnvParametersI4ivNV MANGLE(ProgramEnvParametersI4ivNV) +#define glProgramEnvParametersI4uivNV MANGLE(ProgramEnvParametersI4uivNV) +#define glProgramLocalParameter4dARB MANGLE(ProgramLocalParameter4dARB) +#define glProgramLocalParameter4dvARB MANGLE(ProgramLocalParameter4dvARB) +#define glProgramLocalParameter4fARB MANGLE(ProgramLocalParameter4fARB) +#define glProgramLocalParameter4fvARB MANGLE(ProgramLocalParameter4fvARB) +#define glProgramLocalParameterI4iNV MANGLE(ProgramLocalParameterI4iNV) +#define glProgramLocalParameterI4ivNV MANGLE(ProgramLocalParameterI4ivNV) +#define glProgramLocalParameterI4uiNV MANGLE(ProgramLocalParameterI4uiNV) +#define glProgramLocalParameterI4uivNV MANGLE(ProgramLocalParameterI4uivNV) +#define glProgramLocalParameters4fvEXT MANGLE(ProgramLocalParameters4fvEXT) +#define glProgramLocalParametersI4ivNV MANGLE(ProgramLocalParametersI4ivNV) +#define glProgramLocalParametersI4uivNV MANGLE(ProgramLocalParametersI4uivNV) +#define glProgramNamedParameter4dNV MANGLE(ProgramNamedParameter4dNV) +#define glProgramNamedParameter4dvNV MANGLE(ProgramNamedParameter4dvNV) +#define glProgramNamedParameter4fNV MANGLE(ProgramNamedParameter4fNV) +#define glProgramNamedParameter4fvNV MANGLE(ProgramNamedParameter4fvNV) +#define glProgramParameter4dNV MANGLE(ProgramParameter4dNV) +#define glProgramParameter4dvNV MANGLE(ProgramParameter4dvNV) +#define glProgramParameter4fNV MANGLE(ProgramParameter4fNV) +#define glProgramParameter4fvNV MANGLE(ProgramParameter4fvNV) +#define glProgramParameteriARB MANGLE(ProgramParameteriARB) +#define glProgramParameteriEXT MANGLE(ProgramParameteriEXT) +#define glProgramParameteri MANGLE(ProgramParameteri) +#define glProgramParameters4dvNV MANGLE(ProgramParameters4dvNV) +#define glProgramParameters4fvNV MANGLE(ProgramParameters4fvNV) +#define glProgramStringARB MANGLE(ProgramStringARB) +#define glProgramSubroutineParametersuivNV MANGLE(ProgramSubroutineParametersuivNV) +#define glProgramUniform1dEXT MANGLE(ProgramUniform1dEXT) +#define glProgramUniform1d MANGLE(ProgramUniform1d) +#define glProgramUniform1dvEXT MANGLE(ProgramUniform1dvEXT) +#define glProgramUniform1dv MANGLE(ProgramUniform1dv) +#define glProgramUniform1fEXT MANGLE(ProgramUniform1fEXT) +#define glProgramUniform1f MANGLE(ProgramUniform1f) +#define glProgramUniform1fvEXT MANGLE(ProgramUniform1fvEXT) +#define glProgramUniform1fv MANGLE(ProgramUniform1fv) +#define glProgramUniform1i64NV MANGLE(ProgramUniform1i64NV) +#define glProgramUniform1i64vNV MANGLE(ProgramUniform1i64vNV) +#define glProgramUniform1iEXT MANGLE(ProgramUniform1iEXT) +#define glProgramUniform1i MANGLE(ProgramUniform1i) +#define glProgramUniform1ivEXT MANGLE(ProgramUniform1ivEXT) +#define glProgramUniform1iv MANGLE(ProgramUniform1iv) +#define glProgramUniform1ui64NV MANGLE(ProgramUniform1ui64NV) +#define glProgramUniform1ui64vNV MANGLE(ProgramUniform1ui64vNV) +#define glProgramUniform1uiEXT MANGLE(ProgramUniform1uiEXT) +#define glProgramUniform1ui MANGLE(ProgramUniform1ui) +#define glProgramUniform1uivEXT MANGLE(ProgramUniform1uivEXT) +#define glProgramUniform1uiv MANGLE(ProgramUniform1uiv) +#define glProgramUniform2dEXT MANGLE(ProgramUniform2dEXT) +#define glProgramUniform2d MANGLE(ProgramUniform2d) +#define glProgramUniform2dvEXT MANGLE(ProgramUniform2dvEXT) +#define glProgramUniform2dv MANGLE(ProgramUniform2dv) +#define glProgramUniform2fEXT MANGLE(ProgramUniform2fEXT) +#define glProgramUniform2f MANGLE(ProgramUniform2f) +#define glProgramUniform2fvEXT MANGLE(ProgramUniform2fvEXT) +#define glProgramUniform2fv MANGLE(ProgramUniform2fv) +#define glProgramUniform2i64NV MANGLE(ProgramUniform2i64NV) +#define glProgramUniform2i64vNV MANGLE(ProgramUniform2i64vNV) +#define glProgramUniform2iEXT MANGLE(ProgramUniform2iEXT) +#define glProgramUniform2i MANGLE(ProgramUniform2i) +#define glProgramUniform2ivEXT MANGLE(ProgramUniform2ivEXT) +#define glProgramUniform2iv MANGLE(ProgramUniform2iv) +#define glProgramUniform2ui64NV MANGLE(ProgramUniform2ui64NV) +#define glProgramUniform2ui64vNV MANGLE(ProgramUniform2ui64vNV) +#define glProgramUniform2uiEXT MANGLE(ProgramUniform2uiEXT) +#define glProgramUniform2ui MANGLE(ProgramUniform2ui) +#define glProgramUniform2uivEXT MANGLE(ProgramUniform2uivEXT) +#define glProgramUniform2uiv MANGLE(ProgramUniform2uiv) +#define glProgramUniform3dEXT MANGLE(ProgramUniform3dEXT) +#define glProgramUniform3d MANGLE(ProgramUniform3d) +#define glProgramUniform3dvEXT MANGLE(ProgramUniform3dvEXT) +#define glProgramUniform3dv MANGLE(ProgramUniform3dv) +#define glProgramUniform3fEXT MANGLE(ProgramUniform3fEXT) +#define glProgramUniform3f MANGLE(ProgramUniform3f) +#define glProgramUniform3fvEXT MANGLE(ProgramUniform3fvEXT) +#define glProgramUniform3fv MANGLE(ProgramUniform3fv) +#define glProgramUniform3i64NV MANGLE(ProgramUniform3i64NV) +#define glProgramUniform3i64vNV MANGLE(ProgramUniform3i64vNV) +#define glProgramUniform3iEXT MANGLE(ProgramUniform3iEXT) +#define glProgramUniform3i MANGLE(ProgramUniform3i) +#define glProgramUniform3ivEXT MANGLE(ProgramUniform3ivEXT) +#define glProgramUniform3iv MANGLE(ProgramUniform3iv) +#define glProgramUniform3ui64NV MANGLE(ProgramUniform3ui64NV) +#define glProgramUniform3ui64vNV MANGLE(ProgramUniform3ui64vNV) +#define glProgramUniform3uiEXT MANGLE(ProgramUniform3uiEXT) +#define glProgramUniform3ui MANGLE(ProgramUniform3ui) +#define glProgramUniform3uivEXT MANGLE(ProgramUniform3uivEXT) +#define glProgramUniform3uiv MANGLE(ProgramUniform3uiv) +#define glProgramUniform4dEXT MANGLE(ProgramUniform4dEXT) +#define glProgramUniform4d MANGLE(ProgramUniform4d) +#define glProgramUniform4dvEXT MANGLE(ProgramUniform4dvEXT) +#define glProgramUniform4dv MANGLE(ProgramUniform4dv) +#define glProgramUniform4fEXT MANGLE(ProgramUniform4fEXT) +#define glProgramUniform4f MANGLE(ProgramUniform4f) +#define glProgramUniform4fvEXT MANGLE(ProgramUniform4fvEXT) +#define glProgramUniform4fv MANGLE(ProgramUniform4fv) +#define glProgramUniform4i64NV MANGLE(ProgramUniform4i64NV) +#define glProgramUniform4i64vNV MANGLE(ProgramUniform4i64vNV) +#define glProgramUniform4iEXT MANGLE(ProgramUniform4iEXT) +#define glProgramUniform4i MANGLE(ProgramUniform4i) +#define glProgramUniform4ivEXT MANGLE(ProgramUniform4ivEXT) +#define glProgramUniform4iv MANGLE(ProgramUniform4iv) +#define glProgramUniform4ui64NV MANGLE(ProgramUniform4ui64NV) +#define glProgramUniform4ui64vNV MANGLE(ProgramUniform4ui64vNV) +#define glProgramUniform4uiEXT MANGLE(ProgramUniform4uiEXT) +#define glProgramUniform4ui MANGLE(ProgramUniform4ui) +#define glProgramUniform4uivEXT MANGLE(ProgramUniform4uivEXT) +#define glProgramUniform4uiv MANGLE(ProgramUniform4uiv) +#define glProgramUniformMatrix2dvEXT MANGLE(ProgramUniformMatrix2dvEXT) +#define glProgramUniformMatrix2dv MANGLE(ProgramUniformMatrix2dv) +#define glProgramUniformMatrix2fvEXT MANGLE(ProgramUniformMatrix2fvEXT) +#define glProgramUniformMatrix2fv MANGLE(ProgramUniformMatrix2fv) +#define glProgramUniformMatrix2x3dvEXT MANGLE(ProgramUniformMatrix2x3dvEXT) +#define glProgramUniformMatrix2x3dv MANGLE(ProgramUniformMatrix2x3dv) +#define glProgramUniformMatrix2x3fvEXT MANGLE(ProgramUniformMatrix2x3fvEXT) +#define glProgramUniformMatrix2x3fv MANGLE(ProgramUniformMatrix2x3fv) +#define glProgramUniformMatrix2x4dvEXT MANGLE(ProgramUniformMatrix2x4dvEXT) +#define glProgramUniformMatrix2x4dv MANGLE(ProgramUniformMatrix2x4dv) +#define glProgramUniformMatrix2x4fvEXT MANGLE(ProgramUniformMatrix2x4fvEXT) +#define glProgramUniformMatrix2x4fv MANGLE(ProgramUniformMatrix2x4fv) +#define glProgramUniformMatrix3dvEXT MANGLE(ProgramUniformMatrix3dvEXT) +#define glProgramUniformMatrix3dv MANGLE(ProgramUniformMatrix3dv) +#define glProgramUniformMatrix3fvEXT MANGLE(ProgramUniformMatrix3fvEXT) +#define glProgramUniformMatrix3fv MANGLE(ProgramUniformMatrix3fv) +#define glProgramUniformMatrix3x2dvEXT MANGLE(ProgramUniformMatrix3x2dvEXT) +#define glProgramUniformMatrix3x2dv MANGLE(ProgramUniformMatrix3x2dv) +#define glProgramUniformMatrix3x2fvEXT MANGLE(ProgramUniformMatrix3x2fvEXT) +#define glProgramUniformMatrix3x2fv MANGLE(ProgramUniformMatrix3x2fv) +#define glProgramUniformMatrix3x4dvEXT MANGLE(ProgramUniformMatrix3x4dvEXT) +#define glProgramUniformMatrix3x4dv MANGLE(ProgramUniformMatrix3x4dv) +#define glProgramUniformMatrix3x4fvEXT MANGLE(ProgramUniformMatrix3x4fvEXT) +#define glProgramUniformMatrix3x4fv MANGLE(ProgramUniformMatrix3x4fv) +#define glProgramUniformMatrix4dvEXT MANGLE(ProgramUniformMatrix4dvEXT) +#define glProgramUniformMatrix4dv MANGLE(ProgramUniformMatrix4dv) +#define glProgramUniformMatrix4fvEXT MANGLE(ProgramUniformMatrix4fvEXT) +#define glProgramUniformMatrix4fv MANGLE(ProgramUniformMatrix4fv) +#define glProgramUniformMatrix4x2dvEXT MANGLE(ProgramUniformMatrix4x2dvEXT) +#define glProgramUniformMatrix4x2dv MANGLE(ProgramUniformMatrix4x2dv) +#define glProgramUniformMatrix4x2fvEXT MANGLE(ProgramUniformMatrix4x2fvEXT) +#define glProgramUniformMatrix4x2fv MANGLE(ProgramUniformMatrix4x2fv) +#define glProgramUniformMatrix4x3dvEXT MANGLE(ProgramUniformMatrix4x3dvEXT) +#define glProgramUniformMatrix4x3dv MANGLE(ProgramUniformMatrix4x3dv) +#define glProgramUniformMatrix4x3fvEXT MANGLE(ProgramUniformMatrix4x3fvEXT) +#define glProgramUniformMatrix4x3fv MANGLE(ProgramUniformMatrix4x3fv) +#define glProgramUniformui64NV MANGLE(ProgramUniformui64NV) +#define glProgramUniformui64vNV MANGLE(ProgramUniformui64vNV) +#define glProgramVertexLimitNV MANGLE(ProgramVertexLimitNV) +#define glProvokingVertexEXT MANGLE(ProvokingVertexEXT) +#define glProvokingVertex MANGLE(ProvokingVertex) +#define glPushAttrib MANGLE(PushAttrib) +#define glPushClientAttribDefaultEXT MANGLE(PushClientAttribDefaultEXT) +#define glPushClientAttrib MANGLE(PushClientAttrib) +#define glPushMatrix MANGLE(PushMatrix) +#define glPushName MANGLE(PushName) +#define glQueryCounter MANGLE(QueryCounter) +#define glRasterPos2d MANGLE(RasterPos2d) +#define glRasterPos2dv MANGLE(RasterPos2dv) +#define glRasterPos2f MANGLE(RasterPos2f) +#define glRasterPos2fv MANGLE(RasterPos2fv) +#define glRasterPos2i MANGLE(RasterPos2i) +#define glRasterPos2iv MANGLE(RasterPos2iv) +#define glRasterPos2s MANGLE(RasterPos2s) +#define glRasterPos2sv MANGLE(RasterPos2sv) +#define glRasterPos3d MANGLE(RasterPos3d) +#define glRasterPos3dv MANGLE(RasterPos3dv) +#define glRasterPos3f MANGLE(RasterPos3f) +#define glRasterPos3fv MANGLE(RasterPos3fv) +#define glRasterPos3i MANGLE(RasterPos3i) +#define glRasterPos3iv MANGLE(RasterPos3iv) +#define glRasterPos3s MANGLE(RasterPos3s) +#define glRasterPos3sv MANGLE(RasterPos3sv) +#define glRasterPos4d MANGLE(RasterPos4d) +#define glRasterPos4dv MANGLE(RasterPos4dv) +#define glRasterPos4f MANGLE(RasterPos4f) +#define glRasterPos4fv MANGLE(RasterPos4fv) +#define glRasterPos4i MANGLE(RasterPos4i) +#define glRasterPos4iv MANGLE(RasterPos4iv) +#define glRasterPos4s MANGLE(RasterPos4s) +#define glRasterPos4sv MANGLE(RasterPos4sv) +#define glReadBuffer MANGLE(ReadBuffer) +#define glReadInstrumentsSGIX MANGLE(ReadInstrumentsSGIX) +#define glReadnPixelsARB MANGLE(ReadnPixelsARB) +#define glReadPixels MANGLE(ReadPixels) +#define glRectd MANGLE(Rectd) +#define glRectdv MANGLE(Rectdv) +#define glRectf MANGLE(Rectf) +#define glRectfv MANGLE(Rectfv) +#define glRecti MANGLE(Recti) +#define glRectiv MANGLE(Rectiv) +#define glRects MANGLE(Rects) +#define glRectsv MANGLE(Rectsv) +#define glReferencePlaneSGIX MANGLE(ReferencePlaneSGIX) +#define glReleaseShaderCompiler MANGLE(ReleaseShaderCompiler) +#define glRenderbufferStorageEXT MANGLE(RenderbufferStorageEXT) +#define glRenderbufferStorage MANGLE(RenderbufferStorage) +#define glRenderbufferStorageMultisampleCoverageNV MANGLE(RenderbufferStorageMultisampleCoverageNV) +#define glRenderbufferStorageMultisampleEXT MANGLE(RenderbufferStorageMultisampleEXT) +#define glRenderbufferStorageMultisample MANGLE(RenderbufferStorageMultisample) +#define glRenderMode MANGLE(RenderMode) +#define glReplacementCodePointerSUN MANGLE(ReplacementCodePointerSUN) +#define glReplacementCodeubSUN MANGLE(ReplacementCodeubSUN) +#define glReplacementCodeubvSUN MANGLE(ReplacementCodeubvSUN) +#define glReplacementCodeuiColor3fVertex3fSUN MANGLE(ReplacementCodeuiColor3fVertex3fSUN) +#define glReplacementCodeuiColor3fVertex3fvSUN MANGLE(ReplacementCodeuiColor3fVertex3fvSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor4ubVertex3fSUN MANGLE(ReplacementCodeuiColor4ubVertex3fSUN) +#define glReplacementCodeuiColor4ubVertex3fvSUN MANGLE(ReplacementCodeuiColor4ubVertex3fvSUN) +#define glReplacementCodeuiNormal3fVertex3fSUN MANGLE(ReplacementCodeuiNormal3fVertex3fSUN) +#define glReplacementCodeuiNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiNormal3fVertex3fvSUN) +#define glReplacementCodeuiSUN MANGLE(ReplacementCodeuiSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fvSUN) +#define glReplacementCodeuiVertex3fSUN MANGLE(ReplacementCodeuiVertex3fSUN) +#define glReplacementCodeuiVertex3fvSUN MANGLE(ReplacementCodeuiVertex3fvSUN) +#define glReplacementCodeuivSUN MANGLE(ReplacementCodeuivSUN) +#define glReplacementCodeusSUN MANGLE(ReplacementCodeusSUN) +#define glReplacementCodeusvSUN MANGLE(ReplacementCodeusvSUN) +#define glRequestResidentProgramsNV MANGLE(RequestResidentProgramsNV) +#define glResetHistogramEXT MANGLE(ResetHistogramEXT) +#define glResetHistogram MANGLE(ResetHistogram) +#define glResetMinmaxEXT MANGLE(ResetMinmaxEXT) +#define glResetMinmax MANGLE(ResetMinmax) +#define glResizeBuffersMESA MANGLE(ResizeBuffersMESA) +#define glResumeTransformFeedback MANGLE(ResumeTransformFeedback) +#define glResumeTransformFeedbackNV MANGLE(ResumeTransformFeedbackNV) +#define glRotated MANGLE(Rotated) +#define glRotatef MANGLE(Rotatef) +#define glSampleCoverageARB MANGLE(SampleCoverageARB) +#define glSampleCoverage MANGLE(SampleCoverage) +#define glSampleMapATI MANGLE(SampleMapATI) +#define glSampleMaskEXT MANGLE(SampleMaskEXT) +#define glSampleMaski MANGLE(SampleMaski) +#define glSampleMaskIndexedNV MANGLE(SampleMaskIndexedNV) +#define glSampleMaskSGIS MANGLE(SampleMaskSGIS) +#define glSamplePatternEXT MANGLE(SamplePatternEXT) +#define glSamplePatternSGIS MANGLE(SamplePatternSGIS) +#define glSamplerParameterf MANGLE(SamplerParameterf) +#define glSamplerParameterfv MANGLE(SamplerParameterfv) +#define glSamplerParameterIiv MANGLE(SamplerParameterIiv) +#define glSamplerParameteri MANGLE(SamplerParameteri) +#define glSamplerParameterIuiv MANGLE(SamplerParameterIuiv) +#define glSamplerParameteriv MANGLE(SamplerParameteriv) +#define glScaled MANGLE(Scaled) +#define glScalef MANGLE(Scalef) +#define glScissorArrayv MANGLE(ScissorArrayv) +#define glScissorIndexed MANGLE(ScissorIndexed) +#define glScissorIndexedv MANGLE(ScissorIndexedv) +#define glScissor MANGLE(Scissor) +#define glSecondaryColor3bEXT MANGLE(SecondaryColor3bEXT) +#define glSecondaryColor3b MANGLE(SecondaryColor3b) +#define glSecondaryColor3bvEXT MANGLE(SecondaryColor3bvEXT) +#define glSecondaryColor3bv MANGLE(SecondaryColor3bv) +#define glSecondaryColor3dEXT MANGLE(SecondaryColor3dEXT) +#define glSecondaryColor3d MANGLE(SecondaryColor3d) +#define glSecondaryColor3dvEXT MANGLE(SecondaryColor3dvEXT) +#define glSecondaryColor3dv MANGLE(SecondaryColor3dv) +#define glSecondaryColor3fEXT MANGLE(SecondaryColor3fEXT) +#define glSecondaryColor3f MANGLE(SecondaryColor3f) +#define glSecondaryColor3fvEXT MANGLE(SecondaryColor3fvEXT) +#define glSecondaryColor3fv MANGLE(SecondaryColor3fv) +#define glSecondaryColor3hNV MANGLE(SecondaryColor3hNV) +#define glSecondaryColor3hvNV MANGLE(SecondaryColor3hvNV) +#define glSecondaryColor3iEXT MANGLE(SecondaryColor3iEXT) +#define glSecondaryColor3i MANGLE(SecondaryColor3i) +#define glSecondaryColor3ivEXT MANGLE(SecondaryColor3ivEXT) +#define glSecondaryColor3iv MANGLE(SecondaryColor3iv) +#define glSecondaryColor3sEXT MANGLE(SecondaryColor3sEXT) +#define glSecondaryColor3s MANGLE(SecondaryColor3s) +#define glSecondaryColor3svEXT MANGLE(SecondaryColor3svEXT) +#define glSecondaryColor3sv MANGLE(SecondaryColor3sv) +#define glSecondaryColor3ubEXT MANGLE(SecondaryColor3ubEXT) +#define glSecondaryColor3ub MANGLE(SecondaryColor3ub) +#define glSecondaryColor3ubvEXT MANGLE(SecondaryColor3ubvEXT) +#define glSecondaryColor3ubv MANGLE(SecondaryColor3ubv) +#define glSecondaryColor3uiEXT MANGLE(SecondaryColor3uiEXT) +#define glSecondaryColor3ui MANGLE(SecondaryColor3ui) +#define glSecondaryColor3uivEXT MANGLE(SecondaryColor3uivEXT) +#define glSecondaryColor3uiv MANGLE(SecondaryColor3uiv) +#define glSecondaryColor3usEXT MANGLE(SecondaryColor3usEXT) +#define glSecondaryColor3us MANGLE(SecondaryColor3us) +#define glSecondaryColor3usvEXT MANGLE(SecondaryColor3usvEXT) +#define glSecondaryColor3usv MANGLE(SecondaryColor3usv) +#define glSecondaryColorFormatNV MANGLE(SecondaryColorFormatNV) +#define glSecondaryColorP3ui MANGLE(SecondaryColorP3ui) +#define glSecondaryColorP3uiv MANGLE(SecondaryColorP3uiv) +#define glSecondaryColorPointerEXT MANGLE(SecondaryColorPointerEXT) +#define glSecondaryColorPointerListIBM MANGLE(SecondaryColorPointerListIBM) +#define glSecondaryColorPointer MANGLE(SecondaryColorPointer) +#define glSelectBuffer MANGLE(SelectBuffer) +#define glSelectPerfMonitorCountersAMD MANGLE(SelectPerfMonitorCountersAMD) +#define glSeparableFilter2DEXT MANGLE(SeparableFilter2DEXT) +#define glSeparableFilter2D MANGLE(SeparableFilter2D) +#define glSetFenceAPPLE MANGLE(SetFenceAPPLE) +#define glSetFenceNV MANGLE(SetFenceNV) +#define glSetFragmentShaderConstantATI MANGLE(SetFragmentShaderConstantATI) +#define glSetInvariantEXT MANGLE(SetInvariantEXT) +#define glSetLocalConstantEXT MANGLE(SetLocalConstantEXT) +#define glShadeModel MANGLE(ShadeModel) +#define glShaderBinary MANGLE(ShaderBinary) +#define glShaderOp1EXT MANGLE(ShaderOp1EXT) +#define glShaderOp2EXT MANGLE(ShaderOp2EXT) +#define glShaderOp3EXT MANGLE(ShaderOp3EXT) +#define glShaderSourceARB MANGLE(ShaderSourceARB) +#define glShaderSource MANGLE(ShaderSource) +#define glSharpenTexFuncSGIS MANGLE(SharpenTexFuncSGIS) +#define glSpriteParameterfSGIX MANGLE(SpriteParameterfSGIX) +#define glSpriteParameterfvSGIX MANGLE(SpriteParameterfvSGIX) +#define glSpriteParameteriSGIX MANGLE(SpriteParameteriSGIX) +#define glSpriteParameterivSGIX MANGLE(SpriteParameterivSGIX) +#define glStartInstrumentsSGIX MANGLE(StartInstrumentsSGIX) +#define glStencilClearTagEXT MANGLE(StencilClearTagEXT) +#define glStencilFunc MANGLE(StencilFunc) +#define glStencilFuncSeparateATI MANGLE(StencilFuncSeparateATI) +#define glStencilFuncSeparate MANGLE(StencilFuncSeparate) +#define glStencilMask MANGLE(StencilMask) +#define glStencilMaskSeparate MANGLE(StencilMaskSeparate) +#define glStencilOp MANGLE(StencilOp) +#define glStencilOpSeparateATI MANGLE(StencilOpSeparateATI) +#define glStencilOpSeparate MANGLE(StencilOpSeparate) +#define glStopInstrumentsSGIX MANGLE(StopInstrumentsSGIX) +#define glStringMarkerGREMEDY MANGLE(StringMarkerGREMEDY) +#define glSwizzleEXT MANGLE(SwizzleEXT) +#define glTagSampleBufferSGIX MANGLE(TagSampleBufferSGIX) +#define glTangent3bEXT MANGLE(Tangent3bEXT) +#define glTangent3bvEXT MANGLE(Tangent3bvEXT) +#define glTangent3dEXT MANGLE(Tangent3dEXT) +#define glTangent3dvEXT MANGLE(Tangent3dvEXT) +#define glTangent3fEXT MANGLE(Tangent3fEXT) +#define glTangent3fvEXT MANGLE(Tangent3fvEXT) +#define glTangent3iEXT MANGLE(Tangent3iEXT) +#define glTangent3ivEXT MANGLE(Tangent3ivEXT) +#define glTangent3sEXT MANGLE(Tangent3sEXT) +#define glTangent3svEXT MANGLE(Tangent3svEXT) +#define glTangentPointerEXT MANGLE(TangentPointerEXT) +#define glTbufferMask3DFX MANGLE(TbufferMask3DFX) +#define glTessellationFactorAMD MANGLE(TessellationFactorAMD) +#define glTessellationModeAMD MANGLE(TessellationModeAMD) +#define glTestFenceAPPLE MANGLE(TestFenceAPPLE) +#define glTestFenceNV MANGLE(TestFenceNV) +#define glTestObjectAPPLE MANGLE(TestObjectAPPLE) +#define glTexBufferARB MANGLE(TexBufferARB) +#define glTexBufferEXT MANGLE(TexBufferEXT) +#define glTexBuffer MANGLE(TexBuffer) +#define glTexBumpParameterfvATI MANGLE(TexBumpParameterfvATI) +#define glTexBumpParameterivATI MANGLE(TexBumpParameterivATI) +#define glTexCoord1d MANGLE(TexCoord1d) +#define glTexCoord1dv MANGLE(TexCoord1dv) +#define glTexCoord1f MANGLE(TexCoord1f) +#define glTexCoord1fv MANGLE(TexCoord1fv) +#define glTexCoord1hNV MANGLE(TexCoord1hNV) +#define glTexCoord1hvNV MANGLE(TexCoord1hvNV) +#define glTexCoord1i MANGLE(TexCoord1i) +#define glTexCoord1iv MANGLE(TexCoord1iv) +#define glTexCoord1s MANGLE(TexCoord1s) +#define glTexCoord1sv MANGLE(TexCoord1sv) +#define glTexCoord2d MANGLE(TexCoord2d) +#define glTexCoord2dv MANGLE(TexCoord2dv) +#define glTexCoord2fColor3fVertex3fSUN MANGLE(TexCoord2fColor3fVertex3fSUN) +#define glTexCoord2fColor3fVertex3fvSUN MANGLE(TexCoord2fColor3fVertex3fvSUN) +#define glTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fSUN) +#define glTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fvSUN) +#define glTexCoord2fColor4ubVertex3fSUN MANGLE(TexCoord2fColor4ubVertex3fSUN) +#define glTexCoord2fColor4ubVertex3fvSUN MANGLE(TexCoord2fColor4ubVertex3fvSUN) +#define glTexCoord2f MANGLE(TexCoord2f) +#define glTexCoord2fNormal3fVertex3fSUN MANGLE(TexCoord2fNormal3fVertex3fSUN) +#define glTexCoord2fNormal3fVertex3fvSUN MANGLE(TexCoord2fNormal3fVertex3fvSUN) +#define glTexCoord2fVertex3fSUN MANGLE(TexCoord2fVertex3fSUN) +#define glTexCoord2fVertex3fvSUN MANGLE(TexCoord2fVertex3fvSUN) +#define glTexCoord2fv MANGLE(TexCoord2fv) +#define glTexCoord2hNV MANGLE(TexCoord2hNV) +#define glTexCoord2hvNV MANGLE(TexCoord2hvNV) +#define glTexCoord2i MANGLE(TexCoord2i) +#define glTexCoord2iv MANGLE(TexCoord2iv) +#define glTexCoord2s MANGLE(TexCoord2s) +#define glTexCoord2sv MANGLE(TexCoord2sv) +#define glTexCoord3d MANGLE(TexCoord3d) +#define glTexCoord3dv MANGLE(TexCoord3dv) +#define glTexCoord3f MANGLE(TexCoord3f) +#define glTexCoord3fv MANGLE(TexCoord3fv) +#define glTexCoord3hNV MANGLE(TexCoord3hNV) +#define glTexCoord3hvNV MANGLE(TexCoord3hvNV) +#define glTexCoord3i MANGLE(TexCoord3i) +#define glTexCoord3iv MANGLE(TexCoord3iv) +#define glTexCoord3s MANGLE(TexCoord3s) +#define glTexCoord3sv MANGLE(TexCoord3sv) +#define glTexCoord4d MANGLE(TexCoord4d) +#define glTexCoord4dv MANGLE(TexCoord4dv) +#define glTexCoord4fColor4fNormal3fVertex4fSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fSUN) +#define glTexCoord4fColor4fNormal3fVertex4fvSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fvSUN) +#define glTexCoord4f MANGLE(TexCoord4f) +#define glTexCoord4fVertex4fSUN MANGLE(TexCoord4fVertex4fSUN) +#define glTexCoord4fVertex4fvSUN MANGLE(TexCoord4fVertex4fvSUN) +#define glTexCoord4fv MANGLE(TexCoord4fv) +#define glTexCoord4hNV MANGLE(TexCoord4hNV) +#define glTexCoord4hvNV MANGLE(TexCoord4hvNV) +#define glTexCoord4i MANGLE(TexCoord4i) +#define glTexCoord4iv MANGLE(TexCoord4iv) +#define glTexCoord4s MANGLE(TexCoord4s) +#define glTexCoord4sv MANGLE(TexCoord4sv) +#define glTexCoordFormatNV MANGLE(TexCoordFormatNV) +#define glTexCoordP1ui MANGLE(TexCoordP1ui) +#define glTexCoordP1uiv MANGLE(TexCoordP1uiv) +#define glTexCoordP2ui MANGLE(TexCoordP2ui) +#define glTexCoordP2uiv MANGLE(TexCoordP2uiv) +#define glTexCoordP3ui MANGLE(TexCoordP3ui) +#define glTexCoordP3uiv MANGLE(TexCoordP3uiv) +#define glTexCoordP4ui MANGLE(TexCoordP4ui) +#define glTexCoordP4uiv MANGLE(TexCoordP4uiv) +#define glTexCoordPointerEXT MANGLE(TexCoordPointerEXT) +#define glTexCoordPointerListIBM MANGLE(TexCoordPointerListIBM) +#define glTexCoordPointer MANGLE(TexCoordPointer) +#define glTexCoordPointervINTEL MANGLE(TexCoordPointervINTEL) +#define glTexEnvf MANGLE(TexEnvf) +#define glTexEnvfv MANGLE(TexEnvfv) +#define glTexEnvi MANGLE(TexEnvi) +#define glTexEnviv MANGLE(TexEnviv) +#define glTexFilterFuncSGIS MANGLE(TexFilterFuncSGIS) +#define glTexGend MANGLE(TexGend) +#define glTexGendv MANGLE(TexGendv) +#define glTexGenf MANGLE(TexGenf) +#define glTexGenfv MANGLE(TexGenfv) +#define glTexGeni MANGLE(TexGeni) +#define glTexGeniv MANGLE(TexGeniv) +#define glTexImage1D MANGLE(TexImage1D) +#define glTexImage2D MANGLE(TexImage2D) +#define glTexImage2DMultisample MANGLE(TexImage2DMultisample) +#define glTexImage3DEXT MANGLE(TexImage3DEXT) +#define glTexImage3D MANGLE(TexImage3D) +#define glTexImage3DMultisample MANGLE(TexImage3DMultisample) +#define glTexImage4DSGIS MANGLE(TexImage4DSGIS) +#define glTexParameterf MANGLE(TexParameterf) +#define glTexParameterfv MANGLE(TexParameterfv) +#define glTexParameterIivEXT MANGLE(TexParameterIivEXT) +#define glTexParameterIiv MANGLE(TexParameterIiv) +#define glTexParameteri MANGLE(TexParameteri) +#define glTexParameterIuivEXT MANGLE(TexParameterIuivEXT) +#define glTexParameterIuiv MANGLE(TexParameterIuiv) +#define glTexParameteriv MANGLE(TexParameteriv) +#define glTexRenderbufferNV MANGLE(TexRenderbufferNV) +#define glTexSubImage1DEXT MANGLE(TexSubImage1DEXT) +#define glTexSubImage1D MANGLE(TexSubImage1D) +#define glTexSubImage2DEXT MANGLE(TexSubImage2DEXT) +#define glTexSubImage2D MANGLE(TexSubImage2D) +#define glTexSubImage3DEXT MANGLE(TexSubImage3DEXT) +#define glTexSubImage3D MANGLE(TexSubImage3D) +#define glTexSubImage4DSGIS MANGLE(TexSubImage4DSGIS) +#define glTextureBarrierNV MANGLE(TextureBarrierNV) +#define glTextureBufferEXT MANGLE(TextureBufferEXT) +#define glTextureColorMaskSGIS MANGLE(TextureColorMaskSGIS) +#define glTextureImage1DEXT MANGLE(TextureImage1DEXT) +#define glTextureImage2DEXT MANGLE(TextureImage2DEXT) +#define glTextureImage3DEXT MANGLE(TextureImage3DEXT) +#define glTextureLightEXT MANGLE(TextureLightEXT) +#define glTextureMaterialEXT MANGLE(TextureMaterialEXT) +#define glTextureNormalEXT MANGLE(TextureNormalEXT) +#define glTextureParameterfEXT MANGLE(TextureParameterfEXT) +#define glTextureParameterfvEXT MANGLE(TextureParameterfvEXT) +#define glTextureParameteriEXT MANGLE(TextureParameteriEXT) +#define glTextureParameterIivEXT MANGLE(TextureParameterIivEXT) +#define glTextureParameterIuivEXT MANGLE(TextureParameterIuivEXT) +#define glTextureParameterivEXT MANGLE(TextureParameterivEXT) +#define glTextureRangeAPPLE MANGLE(TextureRangeAPPLE) +#define glTextureRenderbufferEXT MANGLE(TextureRenderbufferEXT) +#define glTextureSubImage1DEXT MANGLE(TextureSubImage1DEXT) +#define glTextureSubImage2DEXT MANGLE(TextureSubImage2DEXT) +#define glTextureSubImage3DEXT MANGLE(TextureSubImage3DEXT) +#define glTrackMatrixNV MANGLE(TrackMatrixNV) +#define glTransformFeedbackAttribsNV MANGLE(TransformFeedbackAttribsNV) +#define glTransformFeedbackStreamAttribsNV MANGLE(TransformFeedbackStreamAttribsNV) +#define glTransformFeedbackVaryingsEXT MANGLE(TransformFeedbackVaryingsEXT) +#define glTransformFeedbackVaryings MANGLE(TransformFeedbackVaryings) +#define glTransformFeedbackVaryingsNV MANGLE(TransformFeedbackVaryingsNV) +#define glTranslated MANGLE(Translated) +#define glTranslatef MANGLE(Translatef) +#define glUniform1d MANGLE(Uniform1d) +#define glUniform1dv MANGLE(Uniform1dv) +#define glUniform1fARB MANGLE(Uniform1fARB) +#define glUniform1f MANGLE(Uniform1f) +#define glUniform1fvARB MANGLE(Uniform1fvARB) +#define glUniform1fv MANGLE(Uniform1fv) +#define glUniform1i64NV MANGLE(Uniform1i64NV) +#define glUniform1i64vNV MANGLE(Uniform1i64vNV) +#define glUniform1iARB MANGLE(Uniform1iARB) +#define glUniform1i MANGLE(Uniform1i) +#define glUniform1ivARB MANGLE(Uniform1ivARB) +#define glUniform1iv MANGLE(Uniform1iv) +#define glUniform1ui64NV MANGLE(Uniform1ui64NV) +#define glUniform1ui64vNV MANGLE(Uniform1ui64vNV) +#define glUniform1uiEXT MANGLE(Uniform1uiEXT) +#define glUniform1ui MANGLE(Uniform1ui) +#define glUniform1uivEXT MANGLE(Uniform1uivEXT) +#define glUniform1uiv MANGLE(Uniform1uiv) +#define glUniform2d MANGLE(Uniform2d) +#define glUniform2dv MANGLE(Uniform2dv) +#define glUniform2fARB MANGLE(Uniform2fARB) +#define glUniform2f MANGLE(Uniform2f) +#define glUniform2fvARB MANGLE(Uniform2fvARB) +#define glUniform2fv MANGLE(Uniform2fv) +#define glUniform2i64NV MANGLE(Uniform2i64NV) +#define glUniform2i64vNV MANGLE(Uniform2i64vNV) +#define glUniform2iARB MANGLE(Uniform2iARB) +#define glUniform2i MANGLE(Uniform2i) +#define glUniform2ivARB MANGLE(Uniform2ivARB) +#define glUniform2iv MANGLE(Uniform2iv) +#define glUniform2ui64NV MANGLE(Uniform2ui64NV) +#define glUniform2ui64vNV MANGLE(Uniform2ui64vNV) +#define glUniform2uiEXT MANGLE(Uniform2uiEXT) +#define glUniform2ui MANGLE(Uniform2ui) +#define glUniform2uivEXT MANGLE(Uniform2uivEXT) +#define glUniform2uiv MANGLE(Uniform2uiv) +#define glUniform3d MANGLE(Uniform3d) +#define glUniform3dv MANGLE(Uniform3dv) +#define glUniform3fARB MANGLE(Uniform3fARB) +#define glUniform3f MANGLE(Uniform3f) +#define glUniform3fvARB MANGLE(Uniform3fvARB) +#define glUniform3fv MANGLE(Uniform3fv) +#define glUniform3i64NV MANGLE(Uniform3i64NV) +#define glUniform3i64vNV MANGLE(Uniform3i64vNV) +#define glUniform3iARB MANGLE(Uniform3iARB) +#define glUniform3i MANGLE(Uniform3i) +#define glUniform3ivARB MANGLE(Uniform3ivARB) +#define glUniform3iv MANGLE(Uniform3iv) +#define glUniform3ui64NV MANGLE(Uniform3ui64NV) +#define glUniform3ui64vNV MANGLE(Uniform3ui64vNV) +#define glUniform3uiEXT MANGLE(Uniform3uiEXT) +#define glUniform3ui MANGLE(Uniform3ui) +#define glUniform3uivEXT MANGLE(Uniform3uivEXT) +#define glUniform3uiv MANGLE(Uniform3uiv) +#define glUniform4d MANGLE(Uniform4d) +#define glUniform4dv MANGLE(Uniform4dv) +#define glUniform4fARB MANGLE(Uniform4fARB) +#define glUniform4f MANGLE(Uniform4f) +#define glUniform4fvARB MANGLE(Uniform4fvARB) +#define glUniform4fv MANGLE(Uniform4fv) +#define glUniform4i64NV MANGLE(Uniform4i64NV) +#define glUniform4i64vNV MANGLE(Uniform4i64vNV) +#define glUniform4iARB MANGLE(Uniform4iARB) +#define glUniform4i MANGLE(Uniform4i) +#define glUniform4ivARB MANGLE(Uniform4ivARB) +#define glUniform4iv MANGLE(Uniform4iv) +#define glUniform4ui64NV MANGLE(Uniform4ui64NV) +#define glUniform4ui64vNV MANGLE(Uniform4ui64vNV) +#define glUniform4uiEXT MANGLE(Uniform4uiEXT) +#define glUniform4ui MANGLE(Uniform4ui) +#define glUniform4uivEXT MANGLE(Uniform4uivEXT) +#define glUniform4uiv MANGLE(Uniform4uiv) +#define glUniformBlockBinding MANGLE(UniformBlockBinding) +#define glUniformBufferEXT MANGLE(UniformBufferEXT) +#define glUniformMatrix2dv MANGLE(UniformMatrix2dv) +#define glUniformMatrix2fvARB MANGLE(UniformMatrix2fvARB) +#define glUniformMatrix2fv MANGLE(UniformMatrix2fv) +#define glUniformMatrix2x3dv MANGLE(UniformMatrix2x3dv) +#define glUniformMatrix2x3fv MANGLE(UniformMatrix2x3fv) +#define glUniformMatrix2x4dv MANGLE(UniformMatrix2x4dv) +#define glUniformMatrix2x4fv MANGLE(UniformMatrix2x4fv) +#define glUniformMatrix3dv MANGLE(UniformMatrix3dv) +#define glUniformMatrix3fvARB MANGLE(UniformMatrix3fvARB) +#define glUniformMatrix3fv MANGLE(UniformMatrix3fv) +#define glUniformMatrix3x2dv MANGLE(UniformMatrix3x2dv) +#define glUniformMatrix3x2fv MANGLE(UniformMatrix3x2fv) +#define glUniformMatrix3x4dv MANGLE(UniformMatrix3x4dv) +#define glUniformMatrix3x4fv MANGLE(UniformMatrix3x4fv) +#define glUniformMatrix4dv MANGLE(UniformMatrix4dv) +#define glUniformMatrix4fvARB MANGLE(UniformMatrix4fvARB) +#define glUniformMatrix4fv MANGLE(UniformMatrix4fv) +#define glUniformMatrix4x2dv MANGLE(UniformMatrix4x2dv) +#define glUniformMatrix4x2fv MANGLE(UniformMatrix4x2fv) +#define glUniformMatrix4x3dv MANGLE(UniformMatrix4x3dv) +#define glUniformMatrix4x3fv MANGLE(UniformMatrix4x3fv) +#define glUniformSubroutinesuiv MANGLE(UniformSubroutinesuiv) +#define glUniformui64NV MANGLE(Uniformui64NV) +#define glUniformui64vNV MANGLE(Uniformui64vNV) +#define glUnlockArraysEXT MANGLE(UnlockArraysEXT) +#define glUnmapBufferARB MANGLE(UnmapBufferARB) +#define glUnmapBuffer MANGLE(UnmapBuffer) +#define glUnmapNamedBufferEXT MANGLE(UnmapNamedBufferEXT) +#define glUnmapObjectBufferATI MANGLE(UnmapObjectBufferATI) +#define glUpdateObjectBufferATI MANGLE(UpdateObjectBufferATI) +#define glUseProgram MANGLE(UseProgram) +#define glUseProgramObjectARB MANGLE(UseProgramObjectARB) +#define glUseProgramStages MANGLE(UseProgramStages) +#define glUseShaderProgramEXT MANGLE(UseShaderProgramEXT) +#define glValidateProgramARB MANGLE(ValidateProgramARB) +#define glValidateProgram MANGLE(ValidateProgram) +#define glValidateProgramPipeline MANGLE(ValidateProgramPipeline) +#define glVariantArrayObjectATI MANGLE(VariantArrayObjectATI) +#define glVariantbvEXT MANGLE(VariantbvEXT) +#define glVariantdvEXT MANGLE(VariantdvEXT) +#define glVariantfvEXT MANGLE(VariantfvEXT) +#define glVariantivEXT MANGLE(VariantivEXT) +#define glVariantPointerEXT MANGLE(VariantPointerEXT) +#define glVariantsvEXT MANGLE(VariantsvEXT) +#define glVariantubvEXT MANGLE(VariantubvEXT) +#define glVariantuivEXT MANGLE(VariantuivEXT) +#define glVariantusvEXT MANGLE(VariantusvEXT) +#define glVDPAUFiniNV MANGLE(VDPAUFiniNV) +#define glVDPAUGetSurfaceivNV MANGLE(VDPAUGetSurfaceivNV) +#define glVDPAUInitNV MANGLE(VDPAUInitNV) +#define glVDPAUIsSurfaceNV MANGLE(VDPAUIsSurfaceNV) +#define glVDPAUMapSurfacesNV MANGLE(VDPAUMapSurfacesNV) +#define glVDPAURegisterOutputSurfaceNV MANGLE(VDPAURegisterOutputSurfaceNV) +#define glVDPAURegisterVideoSurfaceNV MANGLE(VDPAURegisterVideoSurfaceNV) +#define glVDPAUSurfaceAccessNV MANGLE(VDPAUSurfaceAccessNV) +#define glVDPAUUnmapSurfacesNV MANGLE(VDPAUUnmapSurfacesNV) +#define glVDPAUUnregisterSurfaceNV MANGLE(VDPAUUnregisterSurfaceNV) +#define glVertex2d MANGLE(Vertex2d) +#define glVertex2dv MANGLE(Vertex2dv) +#define glVertex2f MANGLE(Vertex2f) +#define glVertex2fv MANGLE(Vertex2fv) +#define glVertex2hNV MANGLE(Vertex2hNV) +#define glVertex2hvNV MANGLE(Vertex2hvNV) +#define glVertex2i MANGLE(Vertex2i) +#define glVertex2iv MANGLE(Vertex2iv) +#define glVertex2s MANGLE(Vertex2s) +#define glVertex2sv MANGLE(Vertex2sv) +#define glVertex3d MANGLE(Vertex3d) +#define glVertex3dv MANGLE(Vertex3dv) +#define glVertex3f MANGLE(Vertex3f) +#define glVertex3fv MANGLE(Vertex3fv) +#define glVertex3hNV MANGLE(Vertex3hNV) +#define glVertex3hvNV MANGLE(Vertex3hvNV) +#define glVertex3i MANGLE(Vertex3i) +#define glVertex3iv MANGLE(Vertex3iv) +#define glVertex3s MANGLE(Vertex3s) +#define glVertex3sv MANGLE(Vertex3sv) +#define glVertex4d MANGLE(Vertex4d) +#define glVertex4dv MANGLE(Vertex4dv) +#define glVertex4f MANGLE(Vertex4f) +#define glVertex4fv MANGLE(Vertex4fv) +#define glVertex4hNV MANGLE(Vertex4hNV) +#define glVertex4hvNV MANGLE(Vertex4hvNV) +#define glVertex4i MANGLE(Vertex4i) +#define glVertex4iv MANGLE(Vertex4iv) +#define glVertex4s MANGLE(Vertex4s) +#define glVertex4sv MANGLE(Vertex4sv) +#define glVertexArrayParameteriAPPLE MANGLE(VertexArrayParameteriAPPLE) +#define glVertexArrayRangeAPPLE MANGLE(VertexArrayRangeAPPLE) +#define glVertexArrayRangeNV MANGLE(VertexArrayRangeNV) +#define glVertexArrayVertexAttribLOffsetEXT MANGLE(VertexArrayVertexAttribLOffsetEXT) +#define glVertexAttrib1dARB MANGLE(VertexAttrib1dARB) +#define glVertexAttrib1d MANGLE(VertexAttrib1d) +#define glVertexAttrib1dNV MANGLE(VertexAttrib1dNV) +#define glVertexAttrib1dvARB MANGLE(VertexAttrib1dvARB) +#define glVertexAttrib1dv MANGLE(VertexAttrib1dv) +#define glVertexAttrib1dvNV MANGLE(VertexAttrib1dvNV) +#define glVertexAttrib1fARB MANGLE(VertexAttrib1fARB) +#define glVertexAttrib1f MANGLE(VertexAttrib1f) +#define glVertexAttrib1fNV MANGLE(VertexAttrib1fNV) +#define glVertexAttrib1fvARB MANGLE(VertexAttrib1fvARB) +#define glVertexAttrib1fv MANGLE(VertexAttrib1fv) +#define glVertexAttrib1fvNV MANGLE(VertexAttrib1fvNV) +#define glVertexAttrib1hNV MANGLE(VertexAttrib1hNV) +#define glVertexAttrib1hvNV MANGLE(VertexAttrib1hvNV) +#define glVertexAttrib1sARB MANGLE(VertexAttrib1sARB) +#define glVertexAttrib1s MANGLE(VertexAttrib1s) +#define glVertexAttrib1sNV MANGLE(VertexAttrib1sNV) +#define glVertexAttrib1svARB MANGLE(VertexAttrib1svARB) +#define glVertexAttrib1sv MANGLE(VertexAttrib1sv) +#define glVertexAttrib1svNV MANGLE(VertexAttrib1svNV) +#define glVertexAttrib2dARB MANGLE(VertexAttrib2dARB) +#define glVertexAttrib2d MANGLE(VertexAttrib2d) +#define glVertexAttrib2dNV MANGLE(VertexAttrib2dNV) +#define glVertexAttrib2dvARB MANGLE(VertexAttrib2dvARB) +#define glVertexAttrib2dv MANGLE(VertexAttrib2dv) +#define glVertexAttrib2dvNV MANGLE(VertexAttrib2dvNV) +#define glVertexAttrib2fARB MANGLE(VertexAttrib2fARB) +#define glVertexAttrib2f MANGLE(VertexAttrib2f) +#define glVertexAttrib2fNV MANGLE(VertexAttrib2fNV) +#define glVertexAttrib2fvARB MANGLE(VertexAttrib2fvARB) +#define glVertexAttrib2fv MANGLE(VertexAttrib2fv) +#define glVertexAttrib2fvNV MANGLE(VertexAttrib2fvNV) +#define glVertexAttrib2hNV MANGLE(VertexAttrib2hNV) +#define glVertexAttrib2hvNV MANGLE(VertexAttrib2hvNV) +#define glVertexAttrib2sARB MANGLE(VertexAttrib2sARB) +#define glVertexAttrib2s MANGLE(VertexAttrib2s) +#define glVertexAttrib2sNV MANGLE(VertexAttrib2sNV) +#define glVertexAttrib2svARB MANGLE(VertexAttrib2svARB) +#define glVertexAttrib2sv MANGLE(VertexAttrib2sv) +#define glVertexAttrib2svNV MANGLE(VertexAttrib2svNV) +#define glVertexAttrib3dARB MANGLE(VertexAttrib3dARB) +#define glVertexAttrib3d MANGLE(VertexAttrib3d) +#define glVertexAttrib3dNV MANGLE(VertexAttrib3dNV) +#define glVertexAttrib3dvARB MANGLE(VertexAttrib3dvARB) +#define glVertexAttrib3dv MANGLE(VertexAttrib3dv) +#define glVertexAttrib3dvNV MANGLE(VertexAttrib3dvNV) +#define glVertexAttrib3fARB MANGLE(VertexAttrib3fARB) +#define glVertexAttrib3f MANGLE(VertexAttrib3f) +#define glVertexAttrib3fNV MANGLE(VertexAttrib3fNV) +#define glVertexAttrib3fvARB MANGLE(VertexAttrib3fvARB) +#define glVertexAttrib3fv MANGLE(VertexAttrib3fv) +#define glVertexAttrib3fvNV MANGLE(VertexAttrib3fvNV) +#define glVertexAttrib3hNV MANGLE(VertexAttrib3hNV) +#define glVertexAttrib3hvNV MANGLE(VertexAttrib3hvNV) +#define glVertexAttrib3sARB MANGLE(VertexAttrib3sARB) +#define glVertexAttrib3s MANGLE(VertexAttrib3s) +#define glVertexAttrib3sNV MANGLE(VertexAttrib3sNV) +#define glVertexAttrib3svARB MANGLE(VertexAttrib3svARB) +#define glVertexAttrib3sv MANGLE(VertexAttrib3sv) +#define glVertexAttrib3svNV MANGLE(VertexAttrib3svNV) +#define glVertexAttrib4bvARB MANGLE(VertexAttrib4bvARB) +#define glVertexAttrib4bv MANGLE(VertexAttrib4bv) +#define glVertexAttrib4dARB MANGLE(VertexAttrib4dARB) +#define glVertexAttrib4d MANGLE(VertexAttrib4d) +#define glVertexAttrib4dNV MANGLE(VertexAttrib4dNV) +#define glVertexAttrib4dvARB MANGLE(VertexAttrib4dvARB) +#define glVertexAttrib4dv MANGLE(VertexAttrib4dv) +#define glVertexAttrib4dvNV MANGLE(VertexAttrib4dvNV) +#define glVertexAttrib4fARB MANGLE(VertexAttrib4fARB) +#define glVertexAttrib4f MANGLE(VertexAttrib4f) +#define glVertexAttrib4fNV MANGLE(VertexAttrib4fNV) +#define glVertexAttrib4fvARB MANGLE(VertexAttrib4fvARB) +#define glVertexAttrib4fv MANGLE(VertexAttrib4fv) +#define glVertexAttrib4fvNV MANGLE(VertexAttrib4fvNV) +#define glVertexAttrib4hNV MANGLE(VertexAttrib4hNV) +#define glVertexAttrib4hvNV MANGLE(VertexAttrib4hvNV) +#define glVertexAttrib4ivARB MANGLE(VertexAttrib4ivARB) +#define glVertexAttrib4iv MANGLE(VertexAttrib4iv) +#define glVertexAttrib4NbvARB MANGLE(VertexAttrib4NbvARB) +#define glVertexAttrib4Nbv MANGLE(VertexAttrib4Nbv) +#define glVertexAttrib4NivARB MANGLE(VertexAttrib4NivARB) +#define glVertexAttrib4Niv MANGLE(VertexAttrib4Niv) +#define glVertexAttrib4NsvARB MANGLE(VertexAttrib4NsvARB) +#define glVertexAttrib4Nsv MANGLE(VertexAttrib4Nsv) +#define glVertexAttrib4NubARB MANGLE(VertexAttrib4NubARB) +#define glVertexAttrib4Nub MANGLE(VertexAttrib4Nub) +#define glVertexAttrib4NubvARB MANGLE(VertexAttrib4NubvARB) +#define glVertexAttrib4Nubv MANGLE(VertexAttrib4Nubv) +#define glVertexAttrib4NuivARB MANGLE(VertexAttrib4NuivARB) +#define glVertexAttrib4Nuiv MANGLE(VertexAttrib4Nuiv) +#define glVertexAttrib4NusvARB MANGLE(VertexAttrib4NusvARB) +#define glVertexAttrib4Nusv MANGLE(VertexAttrib4Nusv) +#define glVertexAttrib4sARB MANGLE(VertexAttrib4sARB) +#define glVertexAttrib4s MANGLE(VertexAttrib4s) +#define glVertexAttrib4sNV MANGLE(VertexAttrib4sNV) +#define glVertexAttrib4svARB MANGLE(VertexAttrib4svARB) +#define glVertexAttrib4sv MANGLE(VertexAttrib4sv) +#define glVertexAttrib4svNV MANGLE(VertexAttrib4svNV) +#define glVertexAttrib4ubNV MANGLE(VertexAttrib4ubNV) +#define glVertexAttrib4ubvARB MANGLE(VertexAttrib4ubvARB) +#define glVertexAttrib4ubv MANGLE(VertexAttrib4ubv) +#define glVertexAttrib4ubvNV MANGLE(VertexAttrib4ubvNV) +#define glVertexAttrib4uivARB MANGLE(VertexAttrib4uivARB) +#define glVertexAttrib4uiv MANGLE(VertexAttrib4uiv) +#define glVertexAttrib4usvARB MANGLE(VertexAttrib4usvARB) +#define glVertexAttrib4usv MANGLE(VertexAttrib4usv) +#define glVertexAttribArrayObjectATI MANGLE(VertexAttribArrayObjectATI) +#define glVertexAttribDivisorARB MANGLE(VertexAttribDivisorARB) +#define glVertexAttribDivisor MANGLE(VertexAttribDivisor) +#define glVertexAttribFormatNV MANGLE(VertexAttribFormatNV) +#define glVertexAttribI1iEXT MANGLE(VertexAttribI1iEXT) +#define glVertexAttribI1i MANGLE(VertexAttribI1i) +#define glVertexAttribI1ivEXT MANGLE(VertexAttribI1ivEXT) +#define glVertexAttribI1iv MANGLE(VertexAttribI1iv) +#define glVertexAttribI1uiEXT MANGLE(VertexAttribI1uiEXT) +#define glVertexAttribI1ui MANGLE(VertexAttribI1ui) +#define glVertexAttribI1uivEXT MANGLE(VertexAttribI1uivEXT) +#define glVertexAttribI1uiv MANGLE(VertexAttribI1uiv) +#define glVertexAttribI2iEXT MANGLE(VertexAttribI2iEXT) +#define glVertexAttribI2i MANGLE(VertexAttribI2i) +#define glVertexAttribI2ivEXT MANGLE(VertexAttribI2ivEXT) +#define glVertexAttribI2iv MANGLE(VertexAttribI2iv) +#define glVertexAttribI2uiEXT MANGLE(VertexAttribI2uiEXT) +#define glVertexAttribI2ui MANGLE(VertexAttribI2ui) +#define glVertexAttribI2uivEXT MANGLE(VertexAttribI2uivEXT) +#define glVertexAttribI2uiv MANGLE(VertexAttribI2uiv) +#define glVertexAttribI3iEXT MANGLE(VertexAttribI3iEXT) +#define glVertexAttribI3i MANGLE(VertexAttribI3i) +#define glVertexAttribI3ivEXT MANGLE(VertexAttribI3ivEXT) +#define glVertexAttribI3iv MANGLE(VertexAttribI3iv) +#define glVertexAttribI3uiEXT MANGLE(VertexAttribI3uiEXT) +#define glVertexAttribI3ui MANGLE(VertexAttribI3ui) +#define glVertexAttribI3uivEXT MANGLE(VertexAttribI3uivEXT) +#define glVertexAttribI3uiv MANGLE(VertexAttribI3uiv) +#define glVertexAttribI4bvEXT MANGLE(VertexAttribI4bvEXT) +#define glVertexAttribI4bv MANGLE(VertexAttribI4bv) +#define glVertexAttribI4iEXT MANGLE(VertexAttribI4iEXT) +#define glVertexAttribI4i MANGLE(VertexAttribI4i) +#define glVertexAttribI4ivEXT MANGLE(VertexAttribI4ivEXT) +#define glVertexAttribI4iv MANGLE(VertexAttribI4iv) +#define glVertexAttribI4svEXT MANGLE(VertexAttribI4svEXT) +#define glVertexAttribI4sv MANGLE(VertexAttribI4sv) +#define glVertexAttribI4ubvEXT MANGLE(VertexAttribI4ubvEXT) +#define glVertexAttribI4ubv MANGLE(VertexAttribI4ubv) +#define glVertexAttribI4uiEXT MANGLE(VertexAttribI4uiEXT) +#define glVertexAttribI4ui MANGLE(VertexAttribI4ui) +#define glVertexAttribI4uivEXT MANGLE(VertexAttribI4uivEXT) +#define glVertexAttribI4uiv MANGLE(VertexAttribI4uiv) +#define glVertexAttribI4usvEXT MANGLE(VertexAttribI4usvEXT) +#define glVertexAttribI4usv MANGLE(VertexAttribI4usv) +#define glVertexAttribIFormatNV MANGLE(VertexAttribIFormatNV) +#define glVertexAttribIPointerEXT MANGLE(VertexAttribIPointerEXT) +#define glVertexAttribIPointer MANGLE(VertexAttribIPointer) +#define glVertexAttribL1dEXT MANGLE(VertexAttribL1dEXT) +#define glVertexAttribL1d MANGLE(VertexAttribL1d) +#define glVertexAttribL1dvEXT MANGLE(VertexAttribL1dvEXT) +#define glVertexAttribL1dv MANGLE(VertexAttribL1dv) +#define glVertexAttribL1i64NV MANGLE(VertexAttribL1i64NV) +#define glVertexAttribL1i64vNV MANGLE(VertexAttribL1i64vNV) +#define glVertexAttribL1ui64NV MANGLE(VertexAttribL1ui64NV) +#define glVertexAttribL1ui64vNV MANGLE(VertexAttribL1ui64vNV) +#define glVertexAttribL2dEXT MANGLE(VertexAttribL2dEXT) +#define glVertexAttribL2d MANGLE(VertexAttribL2d) +#define glVertexAttribL2dvEXT MANGLE(VertexAttribL2dvEXT) +#define glVertexAttribL2dv MANGLE(VertexAttribL2dv) +#define glVertexAttribL2i64NV MANGLE(VertexAttribL2i64NV) +#define glVertexAttribL2i64vNV MANGLE(VertexAttribL2i64vNV) +#define glVertexAttribL2ui64NV MANGLE(VertexAttribL2ui64NV) +#define glVertexAttribL2ui64vNV MANGLE(VertexAttribL2ui64vNV) +#define glVertexAttribL3dEXT MANGLE(VertexAttribL3dEXT) +#define glVertexAttribL3d MANGLE(VertexAttribL3d) +#define glVertexAttribL3dvEXT MANGLE(VertexAttribL3dvEXT) +#define glVertexAttribL3dv MANGLE(VertexAttribL3dv) +#define glVertexAttribL3i64NV MANGLE(VertexAttribL3i64NV) +#define glVertexAttribL3i64vNV MANGLE(VertexAttribL3i64vNV) +#define glVertexAttribL3ui64NV MANGLE(VertexAttribL3ui64NV) +#define glVertexAttribL3ui64vNV MANGLE(VertexAttribL3ui64vNV) +#define glVertexAttribL4dEXT MANGLE(VertexAttribL4dEXT) +#define glVertexAttribL4d MANGLE(VertexAttribL4d) +#define glVertexAttribL4dvEXT MANGLE(VertexAttribL4dvEXT) +#define glVertexAttribL4dv MANGLE(VertexAttribL4dv) +#define glVertexAttribL4i64NV MANGLE(VertexAttribL4i64NV) +#define glVertexAttribL4i64vNV MANGLE(VertexAttribL4i64vNV) +#define glVertexAttribL4ui64NV MANGLE(VertexAttribL4ui64NV) +#define glVertexAttribL4ui64vNV MANGLE(VertexAttribL4ui64vNV) +#define glVertexAttribLFormatNV MANGLE(VertexAttribLFormatNV) +#define glVertexAttribLPointerEXT MANGLE(VertexAttribLPointerEXT) +#define glVertexAttribLPointer MANGLE(VertexAttribLPointer) +#define glVertexAttribP1ui MANGLE(VertexAttribP1ui) +#define glVertexAttribP1uiv MANGLE(VertexAttribP1uiv) +#define glVertexAttribP2ui MANGLE(VertexAttribP2ui) +#define glVertexAttribP2uiv MANGLE(VertexAttribP2uiv) +#define glVertexAttribP3ui MANGLE(VertexAttribP3ui) +#define glVertexAttribP3uiv MANGLE(VertexAttribP3uiv) +#define glVertexAttribP4ui MANGLE(VertexAttribP4ui) +#define glVertexAttribP4uiv MANGLE(VertexAttribP4uiv) +#define glVertexAttribPointerARB MANGLE(VertexAttribPointerARB) +#define glVertexAttribPointer MANGLE(VertexAttribPointer) +#define glVertexAttribPointerNV MANGLE(VertexAttribPointerNV) +#define glVertexAttribs1dvNV MANGLE(VertexAttribs1dvNV) +#define glVertexAttribs1fvNV MANGLE(VertexAttribs1fvNV) +#define glVertexAttribs1hvNV MANGLE(VertexAttribs1hvNV) +#define glVertexAttribs1svNV MANGLE(VertexAttribs1svNV) +#define glVertexAttribs2dvNV MANGLE(VertexAttribs2dvNV) +#define glVertexAttribs2fvNV MANGLE(VertexAttribs2fvNV) +#define glVertexAttribs2hvNV MANGLE(VertexAttribs2hvNV) +#define glVertexAttribs2svNV MANGLE(VertexAttribs2svNV) +#define glVertexAttribs3dvNV MANGLE(VertexAttribs3dvNV) +#define glVertexAttribs3fvNV MANGLE(VertexAttribs3fvNV) +#define glVertexAttribs3hvNV MANGLE(VertexAttribs3hvNV) +#define glVertexAttribs3svNV MANGLE(VertexAttribs3svNV) +#define glVertexAttribs4dvNV MANGLE(VertexAttribs4dvNV) +#define glVertexAttribs4fvNV MANGLE(VertexAttribs4fvNV) +#define glVertexAttribs4hvNV MANGLE(VertexAttribs4hvNV) +#define glVertexAttribs4svNV MANGLE(VertexAttribs4svNV) +#define glVertexAttribs4ubvNV MANGLE(VertexAttribs4ubvNV) +#define glVertexBlendARB MANGLE(VertexBlendARB) +#define glVertexBlendEnvfATI MANGLE(VertexBlendEnvfATI) +#define glVertexBlendEnviATI MANGLE(VertexBlendEnviATI) +#define glVertexFormatNV MANGLE(VertexFormatNV) +#define glVertexP2ui MANGLE(VertexP2ui) +#define glVertexP2uiv MANGLE(VertexP2uiv) +#define glVertexP3ui MANGLE(VertexP3ui) +#define glVertexP3uiv MANGLE(VertexP3uiv) +#define glVertexP4ui MANGLE(VertexP4ui) +#define glVertexP4uiv MANGLE(VertexP4uiv) +#define glVertexPointerEXT MANGLE(VertexPointerEXT) +#define glVertexPointerListIBM MANGLE(VertexPointerListIBM) +#define glVertexPointer MANGLE(VertexPointer) +#define glVertexPointervINTEL MANGLE(VertexPointervINTEL) +#define glVertexStream1dATI MANGLE(VertexStream1dATI) +#define glVertexStream1dvATI MANGLE(VertexStream1dvATI) +#define glVertexStream1fATI MANGLE(VertexStream1fATI) +#define glVertexStream1fvATI MANGLE(VertexStream1fvATI) +#define glVertexStream1iATI MANGLE(VertexStream1iATI) +#define glVertexStream1ivATI MANGLE(VertexStream1ivATI) +#define glVertexStream1sATI MANGLE(VertexStream1sATI) +#define glVertexStream1svATI MANGLE(VertexStream1svATI) +#define glVertexStream2dATI MANGLE(VertexStream2dATI) +#define glVertexStream2dvATI MANGLE(VertexStream2dvATI) +#define glVertexStream2fATI MANGLE(VertexStream2fATI) +#define glVertexStream2fvATI MANGLE(VertexStream2fvATI) +#define glVertexStream2iATI MANGLE(VertexStream2iATI) +#define glVertexStream2ivATI MANGLE(VertexStream2ivATI) +#define glVertexStream2sATI MANGLE(VertexStream2sATI) +#define glVertexStream2svATI MANGLE(VertexStream2svATI) +#define glVertexStream3dATI MANGLE(VertexStream3dATI) +#define glVertexStream3dvATI MANGLE(VertexStream3dvATI) +#define glVertexStream3fATI MANGLE(VertexStream3fATI) +#define glVertexStream3fvATI MANGLE(VertexStream3fvATI) +#define glVertexStream3iATI MANGLE(VertexStream3iATI) +#define glVertexStream3ivATI MANGLE(VertexStream3ivATI) +#define glVertexStream3sATI MANGLE(VertexStream3sATI) +#define glVertexStream3svATI MANGLE(VertexStream3svATI) +#define glVertexStream4dATI MANGLE(VertexStream4dATI) +#define glVertexStream4dvATI MANGLE(VertexStream4dvATI) +#define glVertexStream4fATI MANGLE(VertexStream4fATI) +#define glVertexStream4fvATI MANGLE(VertexStream4fvATI) +#define glVertexStream4iATI MANGLE(VertexStream4iATI) +#define glVertexStream4ivATI MANGLE(VertexStream4ivATI) +#define glVertexStream4sATI MANGLE(VertexStream4sATI) +#define glVertexStream4svATI MANGLE(VertexStream4svATI) +#define glVertexWeightfEXT MANGLE(VertexWeightfEXT) +#define glVertexWeightfvEXT MANGLE(VertexWeightfvEXT) +#define glVertexWeighthNV MANGLE(VertexWeighthNV) +#define glVertexWeighthvNV MANGLE(VertexWeighthvNV) +#define glVertexWeightPointerEXT MANGLE(VertexWeightPointerEXT) +#define glVideoCaptureNV MANGLE(VideoCaptureNV) +#define glVideoCaptureStreamParameterdvNV MANGLE(VideoCaptureStreamParameterdvNV) +#define glVideoCaptureStreamParameterfvNV MANGLE(VideoCaptureStreamParameterfvNV) +#define glVideoCaptureStreamParameterivNV MANGLE(VideoCaptureStreamParameterivNV) +#define glViewportArrayv MANGLE(ViewportArrayv) +#define glViewportIndexedf MANGLE(ViewportIndexedf) +#define glViewportIndexedfv MANGLE(ViewportIndexedfv) +#define glViewport MANGLE(Viewport) +#define glWaitSync MANGLE(WaitSync) +#define glWeightbvARB MANGLE(WeightbvARB) +#define glWeightdvARB MANGLE(WeightdvARB) +#define glWeightfvARB MANGLE(WeightfvARB) +#define glWeightivARB MANGLE(WeightivARB) +#define glWeightPointerARB MANGLE(WeightPointerARB) +#define glWeightsvARB MANGLE(WeightsvARB) +#define glWeightubvARB MANGLE(WeightubvARB) +#define glWeightuivARB MANGLE(WeightuivARB) +#define glWeightusvARB MANGLE(WeightusvARB) +#define glWindowPos2dARB MANGLE(WindowPos2dARB) +#define glWindowPos2d MANGLE(WindowPos2d) +#define glWindowPos2dMESA MANGLE(WindowPos2dMESA) +#define glWindowPos2dvARB MANGLE(WindowPos2dvARB) +#define glWindowPos2dv MANGLE(WindowPos2dv) +#define glWindowPos2dvMESA MANGLE(WindowPos2dvMESA) +#define glWindowPos2fARB MANGLE(WindowPos2fARB) +#define glWindowPos2f MANGLE(WindowPos2f) +#define glWindowPos2fMESA MANGLE(WindowPos2fMESA) +#define glWindowPos2fvARB MANGLE(WindowPos2fvARB) +#define glWindowPos2fv MANGLE(WindowPos2fv) +#define glWindowPos2fvMESA MANGLE(WindowPos2fvMESA) +#define glWindowPos2iARB MANGLE(WindowPos2iARB) +#define glWindowPos2i MANGLE(WindowPos2i) +#define glWindowPos2iMESA MANGLE(WindowPos2iMESA) +#define glWindowPos2ivARB MANGLE(WindowPos2ivARB) +#define glWindowPos2iv MANGLE(WindowPos2iv) +#define glWindowPos2ivMESA MANGLE(WindowPos2ivMESA) +#define glWindowPos2sARB MANGLE(WindowPos2sARB) +#define glWindowPos2s MANGLE(WindowPos2s) +#define glWindowPos2sMESA MANGLE(WindowPos2sMESA) +#define glWindowPos2svARB MANGLE(WindowPos2svARB) +#define glWindowPos2sv MANGLE(WindowPos2sv) +#define glWindowPos2svMESA MANGLE(WindowPos2svMESA) +#define glWindowPos3dARB MANGLE(WindowPos3dARB) +#define glWindowPos3d MANGLE(WindowPos3d) +#define glWindowPos3dMESA MANGLE(WindowPos3dMESA) +#define glWindowPos3dvARB MANGLE(WindowPos3dvARB) +#define glWindowPos3dv MANGLE(WindowPos3dv) +#define glWindowPos3dvMESA MANGLE(WindowPos3dvMESA) +#define glWindowPos3fARB MANGLE(WindowPos3fARB) +#define glWindowPos3f MANGLE(WindowPos3f) +#define glWindowPos3fMESA MANGLE(WindowPos3fMESA) +#define glWindowPos3fvARB MANGLE(WindowPos3fvARB) +#define glWindowPos3fv MANGLE(WindowPos3fv) +#define glWindowPos3fvMESA MANGLE(WindowPos3fvMESA) +#define glWindowPos3iARB MANGLE(WindowPos3iARB) +#define glWindowPos3i MANGLE(WindowPos3i) +#define glWindowPos3iMESA MANGLE(WindowPos3iMESA) +#define glWindowPos3ivARB MANGLE(WindowPos3ivARB) +#define glWindowPos3iv MANGLE(WindowPos3iv) +#define glWindowPos3ivMESA MANGLE(WindowPos3ivMESA) +#define glWindowPos3sARB MANGLE(WindowPos3sARB) +#define glWindowPos3s MANGLE(WindowPos3s) +#define glWindowPos3sMESA MANGLE(WindowPos3sMESA) +#define glWindowPos3svARB MANGLE(WindowPos3svARB) +#define glWindowPos3sv MANGLE(WindowPos3sv) +#define glWindowPos3svMESA MANGLE(WindowPos3svMESA) +#define glWindowPos4dMESA MANGLE(WindowPos4dMESA) +#define glWindowPos4dvMESA MANGLE(WindowPos4dvMESA) +#define glWindowPos4fMESA MANGLE(WindowPos4fMESA) +#define glWindowPos4fvMESA MANGLE(WindowPos4fvMESA) +#define glWindowPos4iMESA MANGLE(WindowPos4iMESA) +#define glWindowPos4ivMESA MANGLE(WindowPos4ivMESA) +#define glWindowPos4sMESA MANGLE(WindowPos4sMESA) +#define glWindowPos4svMESA MANGLE(WindowPos4svMESA) +#define glWriteMaskEXT MANGLE(WriteMaskEXT) + +#endif /* GL_MANGLE_H */ diff --git a/lib/linux/include/GL/glew.h b/lib/linux/include/GL/glew.h new file mode 100644 index 0000000..0cd6ae3 --- /dev/null +++ b/lib/linux/include/GL/glew.h @@ -0,0 +1,16126 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2002-2008, Milan Ikits +** Copyright (C) 2002-2008, Marcelo E. Magallon +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glew_h__ +#define __glew_h__ +#define __GLEW_H__ + +#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H) +#error gl.h included before glew.h +#endif +#if defined(__glext_h_) || defined(__GLEXT_H_) +#error glext.h included before glew.h +#endif +#if defined(__gl_ATI_h_) +#error glATI.h included before glew.h +#endif + +#define __gl_h_ +#define __GL_H__ +#define __X_GL_H +#define __glext_h_ +#define __GLEXT_H_ +#define __gl_ATI_h_ + +#if defined(_WIN32) + +/* + * GLEW does not include to avoid name space pollution. + * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t + * defined properly. + */ +/* */ +#ifndef APIENTRY +#define GLEW_APIENTRY_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define APIENTRY __stdcall +# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) +# define APIENTRY __stdcall +# else +# define APIENTRY +# endif +#endif +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# endif +#endif +/* */ +#ifndef CALLBACK +#define GLEW_CALLBACK_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define CALLBACK __attribute__ ((__stdcall__)) +# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) +# define CALLBACK __stdcall +# else +# define CALLBACK +# endif +#endif +/* and */ +#ifndef WINGDIAPI +#define GLEW_WINGDIAPI_DEFINED +#define WINGDIAPI __declspec(dllimport) +#endif +/* */ +#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short wchar_t; +# define _WCHAR_T_DEFINED +#endif +/* */ +#if !defined(_W64) +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif +#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) +# ifdef _WIN64 +typedef __int64 ptrdiff_t; +# else +typedef _W64 int ptrdiff_t; +# endif +# define _PTRDIFF_T_DEFINED +# define _PTRDIFF_T_ +#endif + +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# else +# define GLAPI WINGDIAPI +# endif +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#endif + +/* + * GLEW_STATIC is defined for static library. + * GLEW_BUILD is defined for building the DLL library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#else /* _UNIX */ + +/* + * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO + * C. On my system, this amounts to _3 lines_ of included code, all of + * them pretty much harmless. If you know of a way of detecting 32 vs + * 64 _targets_ at compile time you are free to replace this with + * something that's portable. For now, _this_ is the portable solution. + * (mem, 2004-01-04) + */ + +#include + +/* SGI MIPSPro doesn't like stdint.h in C++ mode */ +/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */ + +#if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__) +#include +#else +#include +#endif + +#define GLEW_APIENTRY_DEFINED +#define APIENTRY + +/* + * GLEW_STATIC is defined for static library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# if defined(__GNUC__) && __GNUC__>=4 +# define GLEWAPI extern __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# define GLEWAPI extern __global +# else +# define GLEWAPI extern +# endif +#endif + +/* */ +#ifndef GLAPI +#define GLAPI extern +#endif +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#endif /* _WIN32 */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ + +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 + +typedef unsigned int GLenum; +typedef unsigned int GLbitfield; +typedef unsigned int GLuint; +typedef int GLint; +typedef int GLsizei; +typedef unsigned char GLboolean; +typedef signed char GLbyte; +typedef short GLshort; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; +typedef unsigned long GLulong; +typedef float GLfloat; +typedef float GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void GLvoid; +#if defined(_MSC_VER) && _MSC_VER < 1400 +typedef __int64 GLint64EXT; +typedef unsigned __int64 GLuint64EXT; +#elif defined(_MSC_VER) || defined(__BORLANDC__) +typedef signed long long GLint64EXT; +typedef unsigned long long GLuint64EXT; +#else +# if defined(__MINGW32__) || defined(__CYGWIN__) +#include +# endif +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif +typedef GLint64EXT GLint64; +typedef GLuint64EXT GLuint64; +typedef struct __GLsync *GLsync; + +typedef char GLchar; + +#define GL_ZERO 0 +#define GL_FALSE 0 +#define GL_LOGIC_OP 0x0BF1 +#define GL_NONE 0 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_NO_ERROR 0 +#define GL_POINTS 0x0000 +#define GL_CURRENT_BIT 0x00000001 +#define GL_TRUE 1 +#define GL_ONE 1 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_POINT_BIT 0x00000002 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_BIT 0x00000004 +#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_BIT 0x00000008 +#define GL_POLYGON 0x0009 +#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 0x0100 +#define GL_LOAD 0x0101 +#define GL_RETURN 0x0102 +#define GL_MULT 0x0103 +#define GL_ADD 0x0104 +#define GL_NEVER 0x0200 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#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_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_STENCIL_BUFFER_BIT 0x00000400 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#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 +#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_PASS_THROUGH_TOKEN 0x0700 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_EXP 0x0800 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_EXP2 0x0801 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LIST_MODE 0x0B30 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#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_LIGHTING 0x0B50 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_SHADE_MODEL 0x0B54 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_FOG 0x0B60 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#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_MATRIX_MODE 0x0BA0 +#define GL_NORMALIZE 0x0BA1 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_INDEX_MODE 0x0C30 +#define GL_RGBA_MODE 0x0C31 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_RENDER_MODE 0x0C40 +#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_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#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_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#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_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#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_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#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_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 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_INDEX_BITS 0x0D51 +#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_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_NAME_STACK_DEPTH 0x0D70 +#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_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#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_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#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 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_COLOR_INDEX 0x1900 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_BITMAP 0x1A00 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_RENDER 0x1C00 +#define GL_FEEDBACK 0x1C01 +#define GL_SELECT 0x1C02 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_S 0x2000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV 0x2300 +#define GL_EYE_LINEAR 0x2400 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_SPHERE_MAP 0x2402 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_PLANE 0x2502 +#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_CLAMP 0x2900 +#define GL_REPEAT 0x2901 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_R3_G3_B2 0x2A10 +#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 +#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 +#define GL_LIGHT0 0x4000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#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_HINT_BIT 0x00008000 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#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_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_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_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_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_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_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000fffff +#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff + +GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); +GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); +GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void GLAPIENTRY glArrayElement (GLint i); +GLAPI void GLAPIENTRY glBegin (GLenum mode); +GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); +GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); +GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GLAPI void GLAPIENTRY glCallList (GLuint list); +GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists); +GLAPI void GLAPIENTRY glClear (GLbitfield mask); +GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); +GLAPI void GLAPIENTRY glClearIndex (GLfloat c); +GLAPI void GLAPIENTRY glClearStencil (GLint s); +GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); +GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); +GLAPI void GLAPIENTRY glColor3iv (const GLint *v); +GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); +GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void GLAPIENTRY glColor4iv (const GLint *v); +GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); +GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); +GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); +GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); +GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +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); +GLAPI void GLAPIENTRY glCullFace (GLenum mode); +GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); +GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GLAPI void GLAPIENTRY glDepthFunc (GLenum func); +GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); +GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); +GLAPI void GLAPIENTRY glDisable (GLenum cap); +GLAPI void GLAPIENTRY glDisableClientState (GLenum array); +GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); +GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); +GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); +GLAPI void GLAPIENTRY glEnable (GLenum cap); +GLAPI void GLAPIENTRY glEnableClientState (GLenum array); +GLAPI void GLAPIENTRY glEnd (void); +GLAPI void GLAPIENTRY glEndList (void); +GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); +GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); +GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); +GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); +GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); +GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); +GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); +GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); +GLAPI void GLAPIENTRY glFinish (void); +GLAPI void GLAPIENTRY glFlush (void); +GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glFrontFace (GLenum mode); +GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); +GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); +GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); +GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); +GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); +GLAPI GLenum GLAPIENTRY glGetError (void); +GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, 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 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 glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); +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 glGetPointerv (GLenum pname, GLvoid* *params); +GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); +GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); +GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, 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 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); +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 glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); +GLAPI void GLAPIENTRY glIndexMask (GLuint mask); +GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glIndexd (GLdouble c); +GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); +GLAPI void GLAPIENTRY glIndexf (GLfloat c); +GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); +GLAPI void GLAPIENTRY glIndexi (GLint c); +GLAPI void GLAPIENTRY glIndexiv (const GLint *c); +GLAPI void GLAPIENTRY glIndexs (GLshort c); +GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); +GLAPI void GLAPIENTRY glIndexub (GLubyte c); +GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); +GLAPI void GLAPIENTRY glInitNames (void); +GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); +GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); +GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); +GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); +GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); +GLAPI void GLAPIENTRY glLineWidth (GLfloat width); +GLAPI void GLAPIENTRY glListBase (GLuint base); +GLAPI void GLAPIENTRY glLoadIdentity (void); +GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glLoadName (GLuint name); +GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); +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 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 glMaterialf (GLenum face, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); +GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); +GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); +GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); +GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); +GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); +GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void GLAPIENTRY glPassThrough (GLfloat token); +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 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 glPixelZoom (GLfloat xfactor, GLfloat yfactor); +GLAPI void GLAPIENTRY glPointSize (GLfloat size); +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 glPopAttrib (void); +GLAPI void GLAPIENTRY glPopClientAttrib (void); +GLAPI void GLAPIENTRY glPopMatrix (void); +GLAPI void GLAPIENTRY glPopName (void); +GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushMatrix (void); +GLAPI void GLAPIENTRY glPushName (GLuint name); +GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); +GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); +GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); +GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); +GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); +GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); +GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); +GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); +GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); +GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); +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 glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); +GLAPI void GLAPIENTRY glShadeModel (GLenum mode); +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 glTexCoord1d (GLdouble s); +GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); +GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord1i (GLint s); +GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); +GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); +GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); +GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); +GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); +GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); +GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); +GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); +GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); +GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); +GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); +GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const 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 glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +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 glTranslated (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) + +#endif /* GL_VERSION_1_1 */ + +/* ---------------------------------- GLU ---------------------------------- */ + +#ifndef GLEW_NO_GLU +/* this is where we can safely include GLU */ +# if defined(__APPLE__) && defined(__MACH__) +# include +# else +# include +# endif +#endif + +/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 + +#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_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_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_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_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E + +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + +#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) +#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) +#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) +#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) + +#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) + +#endif /* GL_VERSION_1_2 */ + +/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ + +#ifndef GL_VERSION_1_2_1 +#define GL_VERSION_1_2_1 1 + +#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) + +#endif /* GL_VERSION_1_2_1 */ + +/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 + +#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_CLAMP_TO_BORDER 0x812D +#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_SUBTRACT 0x84E7 +#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_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_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#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_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_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_MULTISAMPLE_BIT 0x20000000 + +typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); + +#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) +#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) +#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) +#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) +#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) +#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) +#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) +#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) +#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) +#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) +#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) +#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) +#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) +#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) +#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) +#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) +#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) +#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) +#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) +#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) +#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) +#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) +#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) +#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) +#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) +#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) +#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) +#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) +#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) +#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) +#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) +#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) +#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) +#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) +#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) +#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) +#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) +#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) +#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) +#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) +#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) +#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) +#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) +#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) +#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) +#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) + +#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) + +#endif /* GL_VERSION_1_3 */ + +/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); + +#define glBlendColor GLEW_GET_FUN(__glewBlendColor) +#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) +#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) +#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) +#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) +#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) +#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) +#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) +#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) +#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) +#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) +#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) +#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) +#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) +#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) +#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) +#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) +#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) +#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) +#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) +#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) +#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) +#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) +#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) +#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) +#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) +#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) +#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) +#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) +#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) +#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) +#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) +#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) +#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) +#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) +#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) +#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) +#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) +#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) +#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) +#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) +#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) +#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) +#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) +#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) +#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) +#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) + +#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) + +#endif /* GL_VERSION_1_4 */ + +/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 + +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#define GL_SRC2_RGB GL_SOURCE2_RGB +#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 + +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); +typedef GLvoid* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); + +#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) +#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) +#define glBufferData GLEW_GET_FUN(__glewBufferData) +#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) +#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) +#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) +#define glEndQuery GLEW_GET_FUN(__glewEndQuery) +#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) +#define glGenQueries GLEW_GET_FUN(__glewGenQueries) +#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) +#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) +#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) +#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) +#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) +#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) +#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) +#define glIsQuery GLEW_GET_FUN(__glewIsQuery) +#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) +#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) + +#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) + +#endif /* GL_VERSION_1_5 */ + +/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLuint obj, GLsizei maxLength, GLsizei* length, GLchar* source); +typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid**); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint, GLenum, GLdouble*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); +typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); + +#define glAttachShader GLEW_GET_FUN(__glewAttachShader) +#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) +#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) +#define glCompileShader GLEW_GET_FUN(__glewCompileShader) +#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) +#define glCreateShader GLEW_GET_FUN(__glewCreateShader) +#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) +#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) +#define glDetachShader GLEW_GET_FUN(__glewDetachShader) +#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) +#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) +#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) +#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) +#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) +#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) +#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) +#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) +#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) +#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) +#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) +#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) +#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) +#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) +#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) +#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) +#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) +#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) +#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) +#define glIsProgram GLEW_GET_FUN(__glewIsProgram) +#define glIsShader GLEW_GET_FUN(__glewIsShader) +#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) +#define glShaderSource GLEW_GET_FUN(__glewShaderSource) +#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) +#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) +#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) +#define glUniform1f GLEW_GET_FUN(__glewUniform1f) +#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) +#define glUniform1i GLEW_GET_FUN(__glewUniform1i) +#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) +#define glUniform2f GLEW_GET_FUN(__glewUniform2f) +#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) +#define glUniform2i GLEW_GET_FUN(__glewUniform2i) +#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) +#define glUniform3f GLEW_GET_FUN(__glewUniform3f) +#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) +#define glUniform3i GLEW_GET_FUN(__glewUniform3i) +#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) +#define glUniform4f GLEW_GET_FUN(__glewUniform4f) +#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) +#define glUniform4i GLEW_GET_FUN(__glewUniform4i) +#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) +#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) +#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) +#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) +#define glUseProgram GLEW_GET_FUN(__glewUseProgram) +#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) +#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) +#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) +#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) +#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) +#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) +#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) +#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) +#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) +#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) +#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) +#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) +#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) +#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) +#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) +#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) +#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) +#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) +#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) +#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) +#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) +#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) +#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) +#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) +#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) +#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) +#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) +#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) +#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) +#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) +#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) +#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) +#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) +#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) +#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) +#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) +#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) +#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) + +#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) + +#endif /* GL_VERSION_2_0 */ + +/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 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 + +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + +#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) +#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) +#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) +#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) +#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) +#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) + +#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) + +#endif /* GL_VERSION_2_1 */ + +/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 + +#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES +#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 +#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 +#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 +#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB +#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 +#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 +#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 +#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#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_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#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_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#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_ALPHA_INTEGER 0x8D97 +#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 + +typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint, GLenum); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum); +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint, GLuint, const GLchar*); +typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum, GLenum); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum, GLint, GLfloat, GLint); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum, GLint, const GLfloat*); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum, GLint, const GLint*); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum, GLint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum, GLuint, GLboolean*); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint, const GLchar*); +typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum, GLenum, GLint*); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum, GLenum, GLuint*); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint, GLint, GLuint*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint, GLenum, GLint*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint, GLenum, GLuint*); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum, GLenum, const GLint*); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum, GLenum, const GLuint*); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint, GLsizei, const GLchar **, GLenum); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint, GLuint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint, GLint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint, GLint, GLint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint, const GLbyte*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint, GLint, GLint, GLint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint, const GLshort*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint, const GLubyte*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint, GLuint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint, const GLushort*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum, GLsizei, const GLvoid*); + +#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) +#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) +#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) +#define glClampColor GLEW_GET_FUN(__glewClampColor) +#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) +#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) +#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) +#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) +#define glColorMaski GLEW_GET_FUN(__glewColorMaski) +#define glDisablei GLEW_GET_FUN(__glewDisablei) +#define glEnablei GLEW_GET_FUN(__glewEnablei) +#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) +#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) +#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) +#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) +#define glGetStringi GLEW_GET_FUN(__glewGetStringi) +#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) +#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) +#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) +#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) +#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) +#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) +#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) +#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) +#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) +#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) +#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) +#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) +#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) +#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) +#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) +#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) +#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) +#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) +#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) +#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) +#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) +#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) +#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) +#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) +#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) +#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) +#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) +#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) +#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) +#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) +#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) +#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) +#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) +#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) +#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) +#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) +#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) +#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) +#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) + +#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) + +#endif /* GL_VERSION_3_0 */ + +/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 + +#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_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#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_BUFFER_FORMAT 0x8C2E +#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_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum, GLint, GLsizei, GLsizei); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint); +typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint); + +#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) +#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) +#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) +#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) + +#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) + +#endif /* GL_VERSION_3_1 */ + +/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 + +#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_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#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_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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum, GLenum, GLint64 *); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum, GLuint, GLint64 *); + +#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) +#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) +#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) + +#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) + +#endif /* GL_VERSION_3_2 */ + +/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#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_RGB10_A2UI 0x906F + +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); + +#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) + +#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) + +#endif /* GL_VERSION_3_3 */ + +/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 + +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#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_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F +#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 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); + +#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) +#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) +#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) +#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) +#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) + +#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) + +#endif /* GL_VERSION_4_0 */ + +/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 + +#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) + +#endif /* GL_VERSION_4_1 */ + +/* ----------------------------- GL_VERSION_4_2 ---------------------------- */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 + +#define GLEW_VERSION_4_2 GLEW_GET_VAR(__GLEW_VERSION_4_2) + +#endif /* GL_VERSION_4_2 */ + +/* -------------------------- GL_3DFX_multisample -------------------------- */ + +#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 + +#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) + +#endif /* GL_3DFX_multisample */ + +/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 + +typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); + +#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) + +#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) + +#endif /* GL_3DFX_tbuffer */ + +/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ + +#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 + +#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) + +#endif /* GL_3DFX_texture_compression_FXT1 */ + +/* ----------------------- GL_AMD_blend_minmax_factor ---------------------- */ + +#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 + +#define GLEW_AMD_blend_minmax_factor GLEW_GET_VAR(__GLEW_AMD_blend_minmax_factor) + +#endif /* GL_AMD_blend_minmax_factor */ + +/* ----------------------- GL_AMD_conservative_depth ----------------------- */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 + +#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) + +#endif /* GL_AMD_conservative_depth */ + +/* -------------------------- GL_AMD_debug_output -------------------------- */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 + +#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 (APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void* userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const char* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, char* message); + +#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) +#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) +#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) +#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) + +#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) + +#endif /* GL_AMD_debug_output */ + +/* ---------------------- GL_AMD_depth_clamp_separate ---------------------- */ + +#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 + +#define GLEW_AMD_depth_clamp_separate GLEW_GET_VAR(__GLEW_AMD_depth_clamp_separate) + +#endif /* GL_AMD_depth_clamp_separate */ + +/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + +#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) +#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) +#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) +#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) + +#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) + +#endif /* GL_AMD_draw_buffers_blend */ + +/* ----------------------- GL_AMD_multi_draw_indirect ---------------------- */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void* indirect, GLsizei primcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void* indirect, GLsizei primcount, GLsizei stride); + +#define glMultiDrawArraysIndirectAMD GLEW_GET_FUN(__glewMultiDrawArraysIndirectAMD) +#define glMultiDrawElementsIndirectAMD GLEW_GET_FUN(__glewMultiDrawElementsIndirectAMD) + +#define GLEW_AMD_multi_draw_indirect GLEW_GET_VAR(__GLEW_AMD_multi_draw_indirect) + +#endif /* GL_AMD_multi_draw_indirect */ + +/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); +typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); + +#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) +#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) +#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) + +#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) + +#endif /* GL_AMD_name_gen_delete */ + +/* ----------------------- GL_AMD_performance_monitor ---------------------- */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 + +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#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 (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void* data); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char *counterString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, char *groupString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); + +#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) +#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) +#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) +#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) +#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) +#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) +#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) +#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) +#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) +#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) +#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) + +#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) + +#endif /* GL_AMD_performance_monitor */ + +/* ------------------------ GL_AMD_sample_positions ------------------------ */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 + +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F + +typedef void (GLAPIENTRY * PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat* val); + +#define glSetMultisamplefvAMD GLEW_GET_FUN(__glewSetMultisamplefvAMD) + +#define GLEW_AMD_sample_positions GLEW_GET_VAR(__GLEW_AMD_sample_positions) + +#endif /* GL_AMD_sample_positions */ + +/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F + +#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) + +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 + +#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) + +#endif /* GL_AMD_shader_stencil_export */ + +/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 + +#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) + +#endif /* GL_AMD_texture_texture4 */ + +/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 + +#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) + +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ + +#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 (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); + +#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) +#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) + +#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) + +#endif /* GL_AMD_vertex_shader_tessellator */ + +/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 + +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 + +#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) + +#endif /* GL_APPLE_aux_depth_stencil */ + +/* ------------------------ GL_APPLE_client_storage ------------------------ */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 + +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 + +#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) + +#endif /* GL_APPLE_client_storage */ + +/* ------------------------- GL_APPLE_element_array ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void* pointer); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); + +#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) +#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) +#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) +#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) +#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) + +#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) + +#endif /* GL_APPLE_element_array */ + +/* ----------------------------- GL_APPLE_fence ---------------------------- */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 + +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B + +typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); + +#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) +#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) +#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) +#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) +#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) +#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) +#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) +#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) + +#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) + +#endif /* GL_APPLE_fence */ + +/* ------------------------- GL_APPLE_float_pixels ------------------------- */ + +#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 + +#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) + +#endif /* GL_APPLE_float_pixels */ + +/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); + +#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) +#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) + +#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) + +#endif /* GL_APPLE_flush_buffer_range */ + +/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); + +#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) +#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) +#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) + +#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) + +#endif /* GL_APPLE_object_purgeable */ + +/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ + +#ifndef GL_APPLE_pixel_buffer +#define GL_APPLE_pixel_buffer 1 + +#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 + +#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) + +#endif /* GL_APPLE_pixel_buffer */ + +/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 + +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_422_APPLE 0x8A1F + +#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) + +#endif /* GL_APPLE_rgb_422 */ + +/* --------------------------- GL_APPLE_row_bytes -------------------------- */ + +#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 + +#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) + +#endif /* GL_APPLE_row_bytes */ + +/* ------------------------ GL_APPLE_specular_vector ----------------------- */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 + +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 + +#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) + +#endif /* GL_APPLE_specular_vector */ + +/* ------------------------- GL_APPLE_texture_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); +typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid *pointer); + +#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) +#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) + +#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) + +#endif /* GL_APPLE_texture_range */ + +/* ------------------------ GL_APPLE_transform_hint ------------------------ */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 + +#define GL_TRANSFORM_HINT_APPLE 0x85B1 + +#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) + +#endif /* GL_APPLE_transform_hint */ + +/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); + +#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) +#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) +#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) +#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) + +#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) + +#endif /* GL_APPLE_vertex_array_object */ + +/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ + +#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_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF + +typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); + +#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) +#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) +#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) + +#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) + +#endif /* GL_APPLE_vertex_array_range */ + +/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ + +#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 (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); + +#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) +#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) +#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) +#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) +#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) +#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) +#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) + +#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) + +#endif /* GL_APPLE_vertex_program_evaluators */ + +/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 + +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB + +#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) + +#endif /* GL_APPLE_ycbcr_422 */ + +/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 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_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); +typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const GLvoid*binary, GLsizei length); + +#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) +#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) +#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) +#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) +#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) + +#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) + +#endif /* GL_ARB_ES2_compatibility */ + +/* -------------------------- GL_ARB_base_instance ------------------------- */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); + +#define glDrawArraysInstancedBaseInstance GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstance) +#define glDrawElementsInstancedBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstance) +#define glDrawElementsInstancedBaseVertexBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstance) + +#define GLEW_ARB_base_instance GLEW_GET_VAR(__GLEW_ARB_base_instance) + +#endif /* GL_ARB_base_instance */ + +/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const char * name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const char * name); + +#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) +#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) + +#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) + +#endif /* GL_ARB_blend_func_extended */ + +/* ---------------------------- GL_ARB_cl_event ---------------------------- */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 + +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 + +typedef struct _cl_context *cl_context; +typedef struct _cl_event *cl_event; + +typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); + +#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) + +#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) + +#endif /* GL_ARB_cl_event */ + +/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); + +#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) + +#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) + +#endif /* GL_ARB_color_buffer_float */ + +/* -------------------------- GL_ARB_compatibility ------------------------- */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 + +#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) + +#endif /* GL_ARB_compatibility */ + +/* ---------------- GL_ARB_compressed_texture_pixel_storage ---------------- */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 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 GLEW_ARB_compressed_texture_pixel_storage GLEW_GET_VAR(__GLEW_ARB_compressed_texture_pixel_storage) + +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +/* ----------------------- GL_ARB_conservative_depth ----------------------- */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 + +#define GLEW_ARB_conservative_depth GLEW_GET_VAR(__GLEW_ARB_conservative_depth) + +#endif /* GL_ARB_conservative_depth */ + +/* --------------------------- GL_ARB_copy_buffer -------------------------- */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 + +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 + +typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); + +#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) + +#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) + +#endif /* GL_ARB_copy_buffer */ + +/* -------------------------- GL_ARB_debug_output -------------------------- */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 + +#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 (APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, void* userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, char* messageLog); + +#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) +#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) +#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) +#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) + +#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) + +#endif /* GL_ARB_debug_output */ + +/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 + +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD + +#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) + +#endif /* GL_ARB_depth_buffer_float */ + +/* --------------------------- GL_ARB_depth_clamp -------------------------- */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 + +#define GL_DEPTH_CLAMP 0x864F + +#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) + +#endif /* GL_ARB_depth_clamp */ + +/* -------------------------- GL_ARB_depth_texture ------------------------- */ + +#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 + +#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) + +#endif /* GL_ARB_depth_texture */ + +/* -------------------------- GL_ARB_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) + +#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) + +#endif /* GL_ARB_draw_buffers */ + +/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); + +#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) +#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) +#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) +#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) + +#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) + +#endif /* GL_ARB_draw_buffers_blend */ + +/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 + +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, void* indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, void* indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei* count, GLenum type, GLvoid**indices, GLsizei primcount, GLint *basevertex); + +#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) +#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) +#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) +#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) + +#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) + +#endif /* GL_ARB_draw_elements_base_vertex */ + +/* -------------------------- GL_ARB_draw_indirect ------------------------- */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 + +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void* indirect); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void* indirect); + +#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) +#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) + +#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) + +#endif /* GL_ARB_draw_indirect */ + +/* ------------------------- GL_ARB_draw_instanced ------------------------- */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 + +#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) + +#endif /* GL_ARB_draw_instanced */ + +/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 + +#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) + +#endif /* GL_ARB_explicit_attrib_location */ + +/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 + +#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) + +#endif /* GL_ARB_fragment_coord_conventions */ + +/* ------------------------ GL_ARB_fragment_program ------------------------ */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 + +#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 + +#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) + +#endif /* GL_ARB_fragment_program */ + +/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 + +#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) + +#endif /* GL_ARB_fragment_program_shadow */ + +/* ------------------------- GL_ARB_fragment_shader ------------------------ */ + +#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 + +#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) + +#endif /* GL_ARB_fragment_shader */ + +/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 + +#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_INDEX 0x8222 +#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_UNSIGNED_NORMALIZED 0x8C17 +#define GL_SRGB 0x8C40 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) +#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) +#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) +#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) +#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) +#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) +#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) +#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) +#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) +#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) +#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) +#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) +#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) +#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) +#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) +#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) +#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) +#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) +#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) +#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) + +#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) + +#endif /* GL_ARB_framebuffer_object */ + +/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB 0x8DB9 + +#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) + +#endif /* GL_ARB_framebuffer_sRGB */ + +/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_ARB 0xA +#define GL_LINE_STRIP_ADJACENCY_ARB 0xB +#define GL_TRIANGLES_ADJACENCY_ARB 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#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 (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) +#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) +#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) +#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) + +#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) + +#endif /* GL_ARB_geometry_shader4 */ + +/* ----------------------- GL_ARB_get_program_binary ----------------------- */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, GLvoid*binary); +typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); + +#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) +#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) +#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) + +#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) + +#endif /* GL_ARB_get_program_binary */ + +/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 + +#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 GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) + +#endif /* GL_ARB_gpu_shader5 */ + +/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 + +#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_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + +#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) +#define glProgramUniform1dEXT GLEW_GET_FUN(__glewProgramUniform1dEXT) +#define glProgramUniform1dvEXT GLEW_GET_FUN(__glewProgramUniform1dvEXT) +#define glProgramUniform2dEXT GLEW_GET_FUN(__glewProgramUniform2dEXT) +#define glProgramUniform2dvEXT GLEW_GET_FUN(__glewProgramUniform2dvEXT) +#define glProgramUniform3dEXT GLEW_GET_FUN(__glewProgramUniform3dEXT) +#define glProgramUniform3dvEXT GLEW_GET_FUN(__glewProgramUniform3dvEXT) +#define glProgramUniform4dEXT GLEW_GET_FUN(__glewProgramUniform4dEXT) +#define glProgramUniform4dvEXT GLEW_GET_FUN(__glewProgramUniform4dvEXT) +#define glProgramUniformMatrix2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2dvEXT) +#define glProgramUniformMatrix2x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3dvEXT) +#define glProgramUniformMatrix2x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4dvEXT) +#define glProgramUniformMatrix3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3dvEXT) +#define glProgramUniformMatrix3x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2dvEXT) +#define glProgramUniformMatrix3x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4dvEXT) +#define glProgramUniformMatrix4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4dvEXT) +#define glProgramUniformMatrix4x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2dvEXT) +#define glProgramUniformMatrix4x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3dvEXT) +#define glUniform1d GLEW_GET_FUN(__glewUniform1d) +#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) +#define glUniform2d GLEW_GET_FUN(__glewUniform2d) +#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) +#define glUniform3d GLEW_GET_FUN(__glewUniform3d) +#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) +#define glUniform4d GLEW_GET_FUN(__glewUniform4d) +#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) +#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) +#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) +#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) +#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) +#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) +#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) +#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) +#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) +#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) + +#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) + +#endif /* GL_ARB_gpu_shader_fp64 */ + +/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 + +#define GL_HALF_FLOAT_ARB 0x140B + +#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) + +#endif /* GL_ARB_half_float_pixel */ + +/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 + +#define GL_HALF_FLOAT 0x140B + +#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) + +#endif /* GL_ARB_half_float_vertex */ + +/* ----------------------------- GL_ARB_imaging ---------------------------- */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 + +#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_IGNORE_BORDER 0x8150 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_WRAP_BORDER 0x8152 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + +#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) +#define glColorTable GLEW_GET_FUN(__glewColorTable) +#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) +#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) +#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) +#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) +#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) +#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) +#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) +#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) +#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) +#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) +#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) +#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) +#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) +#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) +#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) +#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) +#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) +#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) +#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) +#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) +#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) +#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) +#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) +#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) +#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) +#define glHistogram GLEW_GET_FUN(__glewHistogram) +#define glMinmax GLEW_GET_FUN(__glewMinmax) +#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) +#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) +#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) + +#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) + +#endif /* GL_ARB_imaging */ + +/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); + +#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) +#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) +#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) + +#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) + +#endif /* GL_ARB_instanced_arrays */ + +/* ---------------------- GL_ARB_internalformat_query ---------------------- */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 + +#define GL_NUM_SAMPLE_COUNTS 0x9380 + +typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); + +#define glGetInternalformativ GLEW_GET_FUN(__glewGetInternalformativ) + +#define GLEW_ARB_internalformat_query GLEW_GET_VAR(__GLEW_ARB_internalformat_query) + +#endif /* GL_ARB_internalformat_query */ + +/* ---------------------- GL_ARB_map_buffer_alignment ---------------------- */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 + +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC + +#define GLEW_ARB_map_buffer_alignment GLEW_GET_VAR(__GLEW_ARB_map_buffer_alignment) + +#endif /* GL_ARB_map_buffer_alignment */ + +/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + +#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) +#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) + +#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) + +#endif /* GL_ARB_map_buffer_range */ + +/* ------------------------- GL_ARB_matrix_palette ------------------------- */ + +#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 (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); + +#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) +#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) +#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) +#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) +#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) + +#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) + +#endif /* GL_ARB_matrix_palette */ + +/* --------------------------- GL_ARB_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); + +#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) + +#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) + +#endif /* GL_ARB_multisample */ + +/* -------------------------- GL_ARB_multitexture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) +#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) +#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) +#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) +#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) +#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) +#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) +#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) +#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) +#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) +#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) +#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) +#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) +#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) +#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) +#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) +#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) +#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) +#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) +#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) +#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) +#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) +#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) +#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) +#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) +#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) +#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) +#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) +#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) +#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) +#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) +#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) +#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) +#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) + +#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) + +#endif /* GL_ARB_multitexture */ + +/* ------------------------- GL_ARB_occlusion_query ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); + +#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) +#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) +#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) +#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) +#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) +#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) +#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) +#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) + +#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) + +#endif /* GL_ARB_occlusion_query */ + +/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 + +#define GL_ANY_SAMPLES_PASSED 0x8C2F + +#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) + +#endif /* GL_ARB_occlusion_query2 */ + +/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) + +#endif /* GL_ARB_pixel_buffer_object */ + +/* ------------------------ GL_ARB_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) +#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) + +#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) + +#endif /* GL_ARB_point_parameters */ + +/* -------------------------- GL_ARB_point_sprite -------------------------- */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 + +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 + +#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) + +#endif /* GL_ARB_point_sprite */ + +/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); + +#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) + +#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) + +#endif /* GL_ARB_provoking_vertex */ + +/* --------------------------- GL_ARB_robustness --------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); +typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); +typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); +typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); +typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); +typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, GLvoid*column, GLvoid*span); +typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); +typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); + +#define glGetGraphicsResetStatusARB GLEW_GET_FUN(__glewGetGraphicsResetStatusARB) +#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) +#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) +#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) +#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) +#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) +#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) +#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) +#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) +#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) +#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) +#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) +#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) +#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) +#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) +#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) +#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) +#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) +#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) +#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) + +#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) + +#endif /* GL_ARB_robustness */ + +/* ------------------------- GL_ARB_sample_shading ------------------------- */ + +#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 (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); + +#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) + +#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) + +#endif /* GL_ARB_sample_shading */ + +/* ------------------------- GL_ARB_sampler_objects ------------------------ */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 + +#define GL_SAMPLER_BINDING 0x8919 + +typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); +typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); + +#define glBindSampler GLEW_GET_FUN(__glewBindSampler) +#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) +#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) +#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) +#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) +#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) +#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) +#define glIsSampler GLEW_GET_FUN(__glewIsSampler) +#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) +#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) +#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) +#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) +#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) +#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) + +#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) + +#endif /* GL_ARB_sampler_objects */ + +/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F + +#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) + +#endif /* GL_ARB_seamless_cube_map */ + +/* --------------------- GL_ARB_separate_shader_objects -------------------- */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 + +#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_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_ALL_SHADER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const char ** strings); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, char *infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); + +#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) +#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) +#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) +#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) +#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) +#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) +#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) +#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) +#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) +#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) +#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) +#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) +#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) +#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) +#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) +#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) +#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) +#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) +#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) +#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) +#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) +#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) +#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) +#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) +#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) +#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) +#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) +#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) +#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) +#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) +#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) +#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) +#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) +#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) +#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) +#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) +#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) +#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) +#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) +#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) +#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) +#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) +#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) +#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) +#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) +#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) +#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) +#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) +#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) +#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) +#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) +#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) +#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) +#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) +#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) +#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) +#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) +#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) +#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) +#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) + +#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) + +#endif /* GL_ARB_separate_shader_objects */ + +/* --------------------- GL_ARB_shader_atomic_counters --------------------- */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 + +#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_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC + +typedef void (GLAPIENTRY * PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params); + +#define glGetActiveAtomicCounterBufferiv GLEW_GET_FUN(__glewGetActiveAtomicCounterBufferiv) + +#define GLEW_ARB_shader_atomic_counters GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counters) + +#endif /* GL_ARB_shader_atomic_counters */ + +/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 + +#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) + +#endif /* GL_ARB_shader_bit_encoding */ + +/* --------------------- GL_ARB_shader_image_load_store -------------------- */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); + +#define glBindImageTexture GLEW_GET_FUN(__glewBindImageTexture) +#define glMemoryBarrier GLEW_GET_FUN(__glewMemoryBarrier) + +#define GLEW_ARB_shader_image_load_store GLEW_GET_VAR(__GLEW_ARB_shader_image_load_store) + +#endif /* GL_ARB_shader_image_load_store */ + +/* ------------------------- GL_ARB_shader_objects ------------------------- */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 + +#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 char GLcharARB; +typedef unsigned int GLhandleARB; + +typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); +typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); + +#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) +#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) +#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) +#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) +#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) +#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) +#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) +#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) +#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) +#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) +#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) +#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) +#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) +#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) +#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) +#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) +#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) +#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) +#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) +#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) +#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) +#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) +#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) +#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) +#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) +#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) +#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) +#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) +#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) +#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) +#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) +#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) +#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) +#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) +#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) +#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) +#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) +#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) +#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) + +#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) + +#endif /* GL_ARB_shader_objects */ + +/* ------------------------ GL_ARB_shader_precision ------------------------ */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 + +#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) + +#endif /* GL_ARB_shader_precision */ + +/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 + +#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) + +#endif /* GL_ARB_shader_stencil_export */ + +/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 + +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B + +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); +typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const char* name); +typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const char* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); +typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); + +#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) +#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) +#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) +#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) +#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) +#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) +#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) +#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) + +#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) + +#endif /* GL_ARB_shader_subroutine */ + +/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 + +#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) + +#endif /* GL_ARB_shader_texture_lod */ + +/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 + +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C + +#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) + +#endif /* GL_ARB_shading_language_100 */ + +/* -------------------- GL_ARB_shading_language_420pack -------------------- */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 + +#define GLEW_ARB_shading_language_420pack GLEW_GET_VAR(__GLEW_ARB_shading_language_420pack) + +#endif /* GL_ARB_shading_language_420pack */ + +/* -------------------- GL_ARB_shading_language_include -------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const char ** path, const GLint *length); +typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const char* name); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const char* name, GLsizei bufSize, GLint *stringlen, char *string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const char* name, GLenum pname, GLint *params); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const char* name); +typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const char* name, GLint stringlen, const char *string); + +#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) +#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) +#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) +#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) +#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) +#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) + +#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) + +#endif /* GL_ARB_shading_language_include */ + +/* -------------------- GL_ARB_shading_language_packing -------------------- */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 + +#define GLEW_ARB_shading_language_packing GLEW_GET_VAR(__GLEW_ARB_shading_language_packing) + +#endif /* GL_ARB_shading_language_packing */ + +/* ----------------------------- GL_ARB_shadow ----------------------------- */ + +#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 + +#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) + +#endif /* GL_ARB_shadow */ + +/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 + +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF + +#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) + +#endif /* GL_ARB_shadow_ambient */ + +/* ------------------------------ GL_ARB_sync ------------------------------ */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 + +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#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 0xFFFFFFFFFFFFFFFF + +typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); +typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); +typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); +typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); +typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); + +#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) +#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) +#define glFenceSync GLEW_GET_FUN(__glewFenceSync) +#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) +#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) +#define glIsSync GLEW_GET_FUN(__glewIsSync) +#define glWaitSync GLEW_GET_FUN(__glewWaitSync) + +#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) + +#endif /* GL_ARB_sync */ + +/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 + +#define GL_PATCHES 0xE +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#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_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_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A + +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); + +#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) +#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) + +#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) + +#endif /* GL_ARB_tessellation_shader */ + +/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_ARB 0x812D + +#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) + +#endif /* GL_ARB_texture_border_clamp */ + +/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) + +#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) + +#endif /* GL_ARB_texture_buffer_object */ + +/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 + +#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) + +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +/* ----------------------- GL_ARB_texture_compression ---------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void* img); + +#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) +#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) +#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) +#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) +#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) +#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) +#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) + +#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) + +#endif /* GL_ARB_texture_compression */ + +/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ + +#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 + +#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) + +#endif /* GL_ARB_texture_compression_bptc */ + +/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 + +#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 GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) + +#endif /* GL_ARB_texture_compression_rgtc */ + +/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) + +#endif /* GL_ARB_texture_cube_map */ + +/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ + +#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 + +#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) + +#endif /* GL_ARB_texture_cube_map_array */ + +/* ------------------------- GL_ARB_texture_env_add ------------------------ */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 + +#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) + +#endif /* GL_ARB_texture_env_add */ + +/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 + +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#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 GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) + +#endif /* GL_ARB_texture_env_combine */ + +/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 + +#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) + +#endif /* GL_ARB_texture_env_crossbar */ + +/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) + +#endif /* GL_ARB_texture_env_dot3 */ + +/* -------------------------- GL_ARB_texture_float ------------------------- */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 + +#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 +#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 GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) + +#endif /* GL_ARB_texture_float */ + +/* ------------------------- GL_ARB_texture_gather ------------------------- */ + +#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 + +#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) + +#endif /* GL_ARB_texture_gather */ + +/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_ARB 0x8370 + +#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) + +#endif /* GL_ARB_texture_mirrored_repeat */ + +/* ----------------------- GL_ARB_texture_multisample ---------------------- */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + +#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) +#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) +#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) +#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) + +#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) + +#endif /* GL_ARB_texture_multisample */ + +/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 + +#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) + +#endif /* GL_ARB_texture_non_power_of_two */ + +/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 + +#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) + +#endif /* GL_ARB_texture_query_lod */ + +/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ + +#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 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 + +#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) + +#endif /* GL_ARB_texture_rectangle */ + +/* --------------------------- GL_ARB_texture_rg --------------------------- */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 + +#define GL_RED 0x1903 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#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 GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) + +#endif /* GL_ARB_texture_rg */ + +/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 + +#define GL_RGB10_A2UI 0x906F + +#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) + +#endif /* GL_ARB_texture_rgb10_a2ui */ + +/* ------------------------- GL_ARB_texture_storage ------------------------ */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 + +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + +#define glTexStorage1D GLEW_GET_FUN(__glewTexStorage1D) +#define glTexStorage2D GLEW_GET_FUN(__glewTexStorage2D) +#define glTexStorage3D GLEW_GET_FUN(__glewTexStorage3D) +#define glTextureStorage1DEXT GLEW_GET_FUN(__glewTextureStorage1DEXT) +#define glTextureStorage2DEXT GLEW_GET_FUN(__glewTextureStorage2DEXT) +#define glTextureStorage3DEXT GLEW_GET_FUN(__glewTextureStorage3DEXT) + +#define GLEW_ARB_texture_storage GLEW_GET_VAR(__GLEW_ARB_texture_storage) + +#endif /* GL_ARB_texture_storage */ + +/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 + +#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 GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) + +#endif /* GL_ARB_texture_swizzle */ + +/* --------------------------- GL_ARB_timer_query -------------------------- */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 + +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); +typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); + +#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) +#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) +#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) + +#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) + +#endif /* GL_ARB_timer_query */ + +/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); + +#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) +#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) +#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) +#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) +#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) +#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) +#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) + +#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) + +#endif /* GL_ARB_transform_feedback2 */ + +/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 + +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_VERTEX_STREAMS 0x8E71 + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); + +#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) +#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) +#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) +#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) + +#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) + +#endif /* GL_ARB_transform_feedback3 */ + +/* ------------------ GL_ARB_transform_feedback_instanced ------------------ */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); + +#define glDrawTransformFeedbackInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackInstanced) +#define glDrawTransformFeedbackStreamInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackStreamInstanced) + +#define GLEW_ARB_transform_feedback_instanced GLEW_GET_VAR(__GLEW_ARB_transform_feedback_instanced) + +#endif /* GL_ARB_transform_feedback_instanced */ + +/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ + +#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 (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); + +#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) +#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) +#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) +#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) + +#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) + +#endif /* GL_ARB_transpose_matrix */ + +/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 + +#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 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, char* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, char* uniformName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); +typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const char* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const char** uniformNames, GLuint* uniformIndices); +typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + +#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) +#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) +#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) +#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) +#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) +#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) +#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) +#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) +#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) +#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) + +#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) + +#endif /* GL_ARB_uniform_buffer_object */ + +/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) + +#endif /* GL_ARB_vertex_array_bgra */ + +/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); + +#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) +#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) +#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) +#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) + +#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) + +#endif /* GL_ARB_vertex_array_object */ + +/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 + +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + +#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) +#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) +#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) +#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) +#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) +#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) +#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) +#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) +#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) +#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) + +#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) + +#endif /* GL_ARB_vertex_attrib_64bit */ + +/* -------------------------- GL_ARB_vertex_blend -------------------------- */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 + +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#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_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 (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); +typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); + +#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) +#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) +#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) +#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) +#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) +#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) +#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) +#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) +#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) +#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) + +#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) + +#endif /* GL_ARB_vertex_blend */ + +/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 + +#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 ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid* data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid* data); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); + +#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) +#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) +#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) +#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) +#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) +#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) +#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) +#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) +#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) +#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) +#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) + +#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) + +#endif /* GL_ARB_vertex_buffer_object */ + +/* ------------------------- GL_ARB_vertex_program ------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void* string); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void* string); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); + +#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) +#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) +#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) +#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) +#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) +#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) +#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) +#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) +#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) +#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) +#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) +#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) +#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) +#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) +#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) +#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) +#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) +#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) +#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) +#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) +#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) +#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) +#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) +#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) +#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) +#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) +#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) +#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) +#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) +#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) +#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) +#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) +#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) +#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) +#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) +#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) +#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) +#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) +#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) +#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) +#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) +#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) +#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) +#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) +#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) +#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) +#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) +#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) +#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) +#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) +#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) +#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) +#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) +#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) +#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) +#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) +#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) +#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) +#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) +#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) +#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) +#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) + +#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) + +#endif /* GL_ARB_vertex_program */ + +/* -------------------------- GL_ARB_vertex_shader ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); + +#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) +#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) +#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) + +#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) + +#endif /* GL_ARB_vertex_shader */ + +/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 + +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_INT_2_10_10_10_REV 0x8D9F + +typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); + +#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) +#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) +#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) +#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) +#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) +#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) +#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) +#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) +#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) +#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) +#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) +#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) +#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) +#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) +#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) +#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) +#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) +#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) +#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) +#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) +#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) +#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) +#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) +#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) +#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) +#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) +#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) +#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) +#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) +#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) +#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) +#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) +#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) +#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) +#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) +#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) +#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) +#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) + +#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) + +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +/* ------------------------- GL_ARB_viewport_array ------------------------- */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 + +#define GL_DEPTH_RANGE 0x0B70 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#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 +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F + +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); + +#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) +#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) +#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) +#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) +#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) +#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) +#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) +#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) +#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) +#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) + +#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) + +#endif /* GL_ARB_viewport_array */ + +/* --------------------------- GL_ARB_window_pos --------------------------- */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); + +#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) +#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) +#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) +#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) +#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) +#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) +#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) +#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) +#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) +#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) +#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) +#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) +#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) +#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) +#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) +#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) + +#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) + +#endif /* GL_ARB_window_pos */ + +/* ------------------------- GL_ATIX_point_sprites ------------------------- */ + +#ifndef GL_ATIX_point_sprites +#define GL_ATIX_point_sprites 1 + +#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 +#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 +#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 +#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 +#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 +#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 + +#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) + +#endif /* GL_ATIX_point_sprites */ + +/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ + +#ifndef GL_ATIX_texture_env_combine3 +#define GL_ATIX_texture_env_combine3 1 + +#define GL_MODULATE_ADD_ATIX 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 +#define GL_MODULATE_SUBTRACT_ATIX 0x8746 + +#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) + +#endif /* GL_ATIX_texture_env_combine3 */ + +/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ + +#ifndef GL_ATIX_texture_env_route +#define GL_ATIX_texture_env_route 1 + +#define GL_SECONDARY_COLOR_ATIX 0x8747 +#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 +#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 + +#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) + +#endif /* GL_ATIX_texture_env_route */ + +/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ + +#ifndef GL_ATIX_vertex_shader_output_point_size +#define GL_ATIX_vertex_shader_output_point_size 1 + +#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E + +#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) + +#endif /* GL_ATIX_vertex_shader_output_point_size */ + +/* -------------------------- GL_ATI_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) + +#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) + +#endif /* GL_ATI_draw_buffers */ + +/* -------------------------- GL_ATI_element_array ------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void* pointer); + +#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) +#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) +#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) + +#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) + +#endif /* GL_ATI_element_array */ + +/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); + +#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) +#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) +#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) +#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) + +#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) + +#endif /* GL_ATI_envmap_bumpmap */ + +/* ------------------------- GL_ATI_fragment_shader ------------------------ */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 + +#define GL_RED_BIT_ATI 0x00000001 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#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_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_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_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 + +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); + +#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) +#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) +#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) +#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) +#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) +#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) +#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) +#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) +#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) +#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) +#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) +#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) +#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) +#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) + +#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) + +#endif /* GL_ATI_fragment_shader */ + +/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 + +typedef void* (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); + +#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) +#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) + +#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) + +#endif /* GL_ATI_map_object_buffer */ + +/* ----------------------------- GL_ATI_meminfo ---------------------------- */ + +#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 + +#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) + +#endif /* GL_ATI_meminfo */ + +/* -------------------------- GL_ATI_pn_triangles -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); + +#define glPNTrianglesfATI GLEW_GET_FUN(__glewPNTrianglesfATI) +#define glPNTrianglesiATI GLEW_GET_FUN(__glewPNTrianglesiATI) + +#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) + +#endif /* GL_ATI_pn_triangles */ + +/* ------------------------ GL_ATI_separate_stencil ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + +#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) +#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) + +#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) + +#endif /* GL_ATI_separate_stencil */ + +/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ + +#ifndef GL_ATI_shader_texture_lod +#define GL_ATI_shader_texture_lod 1 + +#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) + +#endif /* GL_ATI_shader_texture_lod */ + +/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 + +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 + +#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) + +#endif /* GL_ATI_text_fragment_shader */ + +/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ + +#ifndef GL_ATI_texture_compression_3dc +#define GL_ATI_texture_compression_3dc 1 + +#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 + +#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) + +#endif /* GL_ATI_texture_compression_3dc */ + +/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ + +#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 + +#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) + +#endif /* GL_ATI_texture_env_combine3 */ + +/* -------------------------- GL_ATI_texture_float ------------------------- */ + +#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 + +#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) + +#endif /* GL_ATI_texture_float */ + +/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ + +#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 + +#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) + +#endif /* GL_ATI_texture_mirror_once */ + +/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ + +#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 void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void* pointer, GLenum usage); +typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); +typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + +#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) +#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) +#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) +#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) +#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) +#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) +#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) +#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) +#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) +#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) +#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) +#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) + +#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) + +#endif /* GL_ATI_vertex_array_object */ + +/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); + +#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) +#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) +#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) + +#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) + +#endif /* GL_ATI_vertex_attrib_array_object */ + +/* ------------------------- GL_ATI_vertex_streams ------------------------- */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 + +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_SOURCE_ATI 0x876C +#define GL_VERTEX_STREAM0_ATI 0x876D +#define GL_VERTEX_STREAM1_ATI 0x876E +#define GL_VERTEX_STREAM2_ATI 0x876F +#define GL_VERTEX_STREAM3_ATI 0x8770 +#define GL_VERTEX_STREAM4_ATI 0x8771 +#define GL_VERTEX_STREAM5_ATI 0x8772 +#define GL_VERTEX_STREAM6_ATI 0x8773 +#define GL_VERTEX_STREAM7_ATI 0x8774 + +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *v); + +#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) +#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) +#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) +#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) +#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) +#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) +#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) +#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) +#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) +#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) +#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) +#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) +#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) +#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) +#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) +#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) +#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) +#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) +#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) +#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) +#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) +#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) +#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) +#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) +#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) +#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) +#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) +#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) +#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) +#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) +#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) +#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) +#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) +#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) +#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) +#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) +#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) + +#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) + +#endif /* GL_ATI_vertex_streams */ + +/* --------------------------- GL_EXT_422_pixels --------------------------- */ + +#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 + +#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) + +#endif /* GL_EXT_422_pixels */ + +/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ + +#ifndef GL_EXT_Cg_shader +#define GL_EXT_Cg_shader 1 + +#define GL_CG_VERTEX_SHADER_EXT 0x890E +#define GL_CG_FRAGMENT_SHADER_EXT 0x890F + +#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) + +#endif /* GL_EXT_Cg_shader */ + +/* ------------------------------ GL_EXT_abgr ------------------------------ */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 + +#define GL_ABGR_EXT 0x8000 + +#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) + +#endif /* GL_EXT_abgr */ + +/* ------------------------------ GL_EXT_bgra ------------------------------ */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 + +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 + +#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) + +#endif /* GL_EXT_bgra */ + +/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ + +#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 GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); + +#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) +#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) +#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) + +#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) + +#endif /* GL_EXT_bindable_uniform */ + +/* --------------------------- GL_EXT_blend_color -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + +#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) + +#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) + +#endif /* GL_EXT_blend_color */ + +/* --------------------- GL_EXT_blend_equation_separate -------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); + +#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) + +#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) + +#endif /* GL_EXT_blend_equation_separate */ + +/* ----------------------- GL_EXT_blend_func_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 (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) + +#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) + +#endif /* GL_EXT_blend_func_separate */ + +/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 + +#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) + +#endif /* GL_EXT_blend_logic_op */ + +/* -------------------------- GL_EXT_blend_minmax -------------------------- */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 + +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); + +#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) + +#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) + +#endif /* GL_EXT_blend_minmax */ + +/* ------------------------- GL_EXT_blend_subtract ------------------------- */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 + +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B + +#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) + +#endif /* GL_EXT_blend_subtract */ + +/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 + +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 + +#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) + +#endif /* GL_EXT_clip_volume_hint */ + +/* ------------------------------ GL_EXT_cmyka ----------------------------- */ + +#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 + +#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) + +#endif /* GL_EXT_cmyka */ + +/* ------------------------- GL_EXT_color_subtable ------------------------- */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + +#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) +#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) + +#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) + +#endif /* GL_EXT_color_subtable */ + +/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ + +#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 (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); + +#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) +#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) + +#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) + +#endif /* GL_EXT_compiled_vertex_array */ + +/* --------------------------- GL_EXT_convolution -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* row, const void* column); + +#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) +#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) +#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) +#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) +#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) +#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) +#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) +#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) +#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) +#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) +#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) +#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) +#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) + +#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) + +#endif /* GL_EXT_convolution */ + +/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); +typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); + +#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) +#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) + +#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) + +#endif /* GL_EXT_coordinate_frame */ + +/* -------------------------- GL_EXT_copy_texture -------------------------- */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 + +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) +#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) +#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) +#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) +#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) + +#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) + +#endif /* GL_EXT_copy_texture */ + +/* --------------------------- GL_EXT_cull_vertex -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); + +#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) +#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) + +#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) + +#endif /* GL_EXT_cull_vertex */ + +/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ + +#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 (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); + +#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) + +#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) + +#endif /* GL_EXT_depth_bounds_test */ + +/* ----------------------- GL_EXT_direct_state_access ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * 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* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * 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* data); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void* img); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void* img); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void* string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLvoid** param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, GLvoid** param); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); +typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + +#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) +#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) +#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) +#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) +#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) +#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) +#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) +#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) +#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) +#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) +#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) +#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) +#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) +#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) +#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) +#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) +#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) +#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) +#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) +#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) +#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) +#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) +#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) +#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) +#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) +#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) +#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) +#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) +#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) +#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) +#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) +#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) +#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) +#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) +#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) +#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) +#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) +#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) +#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) +#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) +#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) +#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) +#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) +#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) +#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) +#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) +#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) +#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) +#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) +#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) +#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) +#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) +#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) +#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) +#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) +#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) +#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) +#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) +#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) +#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) +#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) +#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) +#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) +#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) +#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) +#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) +#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) +#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) +#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) +#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) +#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) +#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) +#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) +#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) +#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) +#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) +#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) +#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) +#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) +#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) +#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) +#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) +#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) +#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) +#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) +#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) +#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) +#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) +#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) +#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) +#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) +#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) +#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) +#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) +#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) +#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) +#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) +#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) +#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) +#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) +#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) +#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) +#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) +#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) +#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) +#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) +#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) +#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) +#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) +#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) +#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) +#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) +#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) +#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) +#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) +#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) +#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) +#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) +#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) +#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) +#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) +#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) +#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) +#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) +#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) +#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) +#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) +#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) +#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) +#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) +#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) +#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) +#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) +#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) +#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) +#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) +#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) +#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) +#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) +#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) +#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) +#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) +#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) +#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) +#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) +#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) +#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) +#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) +#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) +#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) +#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) +#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) +#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) +#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) +#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) +#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) +#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) +#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) +#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) +#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) +#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) +#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) +#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) +#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) +#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) +#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) +#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) +#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) +#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) +#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) +#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) +#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) +#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) +#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) +#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) +#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) +#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) +#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) +#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) +#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) +#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) +#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) +#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) +#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) +#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) +#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) +#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) +#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) +#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) +#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) +#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) +#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) +#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) +#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) +#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) +#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) +#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) +#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) +#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) +#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) +#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) +#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) +#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) +#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) +#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) +#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) +#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) +#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) +#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) +#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) +#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) +#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) +#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) + +#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) + +#endif /* GL_EXT_direct_state_access */ + +/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 + +typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); +typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); + +#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) +#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) +#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) +#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) +#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) +#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) + +#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) + +#endif /* GL_EXT_draw_buffers2 */ + +/* ------------------------- GL_EXT_draw_instanced ------------------------- */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); + +#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) +#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) + +#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) + +#endif /* GL_EXT_draw_instanced */ + +/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + +#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) + +#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) + +#endif /* GL_EXT_draw_range_elements */ + +/* ---------------------------- GL_EXT_fog_coord --------------------------- */ + +#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 (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); + +#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) +#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) +#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) +#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) +#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) + +#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) + +#endif /* GL_EXT_fog_coord */ + +/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ + +#ifndef GL_EXT_fragment_lighting +#define GL_EXT_fragment_lighting 1 + +#define GL_FRAGMENT_LIGHTING_EXT 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 +#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 +#define GL_LIGHT_ENV_MODE_EXT 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B +#define GL_FRAGMENT_LIGHT0_EXT 0x840C +#define GL_FRAGMENT_LIGHT7_EXT 0x8413 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); + +#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) +#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) +#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) +#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) +#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) +#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) +#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) +#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) +#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) +#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) +#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) +#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) +#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) +#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) +#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) +#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) +#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) +#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) + +#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) + +#endif /* GL_EXT_fragment_lighting */ + +/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 + +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA + +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) + +#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) + +#endif /* GL_EXT_framebuffer_blit */ + +/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) + +#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) + +#endif /* GL_EXT_framebuffer_multisample */ + +/* --------------- GL_EXT_framebuffer_multisample_blit_scaled -------------- */ + +#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 + +#define GLEW_EXT_framebuffer_multisample_blit_scaled GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample_blit_scaled) + +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) +#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) +#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) +#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) +#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) +#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) +#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) +#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) +#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) +#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) +#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) +#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) +#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) +#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) +#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) +#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) +#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) + +#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) + +#endif /* GL_EXT_framebuffer_object */ + +/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA + +#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) + +#endif /* GL_EXT_framebuffer_sRGB */ + +/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_EXT 0xA +#define GL_LINE_STRIP_ADJACENCY_EXT 0xB +#define GL_TRIANGLES_ADJACENCY_EXT 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#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_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_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) +#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) +#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) + +#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) + +#endif /* GL_EXT_geometry_shader4 */ + +/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 + +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); + +#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) +#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) + +#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) + +#endif /* GL_EXT_gpu_program_parameters */ + +/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) +#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) +#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) +#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) +#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) +#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) +#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) +#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) +#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) +#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) +#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) +#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) +#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) +#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) +#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) +#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) +#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) +#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) +#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) +#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) +#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) +#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) +#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) +#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) +#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) +#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) +#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) +#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) +#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) +#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) +#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) +#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) +#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) +#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) + +#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) + +#endif /* GL_EXT_gpu_shader4 */ + +/* ---------------------------- GL_EXT_histogram --------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); + +#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) +#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) +#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) +#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) +#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) +#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) +#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) +#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) +#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) +#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) + +#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) + +#endif /* GL_EXT_histogram */ + +/* ----------------------- GL_EXT_index_array_formats ---------------------- */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 + +#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) + +#endif /* GL_EXT_index_array_formats */ + +/* --------------------------- GL_EXT_index_func --------------------------- */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 + +typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); + +#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) + +#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) + +#endif /* GL_EXT_index_func */ + +/* ------------------------- GL_EXT_index_material ------------------------- */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 + +typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) + +#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) + +#endif /* GL_EXT_index_material */ + +/* -------------------------- GL_EXT_index_texture ------------------------- */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 + +#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) + +#endif /* GL_EXT_index_texture */ + +/* -------------------------- GL_EXT_light_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 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 + +typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) +#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) +#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) + +#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) + +#endif /* GL_EXT_light_texture */ + +/* ------------------------- GL_EXT_misc_attribute ------------------------- */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 + +#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) + +#endif /* GL_EXT_misc_attribute */ + +/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const GLvoid **indices, GLsizei primcount); + +#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) +#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) + +#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) + +#endif /* GL_EXT_multi_draw_arrays */ + +/* --------------------------- GL_EXT_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); + +#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) +#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) + +#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) + +#endif /* GL_EXT_multisample */ + +/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) + +#endif /* GL_EXT_packed_depth_stencil */ + +/* -------------------------- GL_EXT_packed_float -------------------------- */ + +#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 + +#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) + +#endif /* GL_EXT_packed_float */ + +/* -------------------------- GL_EXT_packed_pixels ------------------------- */ + +#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 + +#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) + +#endif /* GL_EXT_packed_pixels */ + +/* ------------------------ GL_EXT_paletted_texture ------------------------ */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 + +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 +#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF +#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 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B + +typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void* data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); + +#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) +#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) +#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) +#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) + +#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) + +#endif /* GL_EXT_paletted_texture */ + +/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) + +#endif /* GL_EXT_pixel_buffer_object */ + +/* ------------------------- GL_EXT_pixel_transform ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) +#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) +#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) +#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) +#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) +#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) + +#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) + +#endif /* GL_EXT_pixel_transform */ + +/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 + +#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) + +#endif /* GL_EXT_pixel_transform_color_table */ + +/* ------------------------ GL_EXT_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) +#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) + +#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) + +#endif /* GL_EXT_point_parameters */ + +/* ------------------------- GL_EXT_polygon_offset ------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); + +#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) + +#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) + +#endif /* GL_EXT_polygon_offset */ + +/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); + +#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) + +#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) + +#endif /* GL_EXT_provoking_vertex */ + +/* ------------------------- GL_EXT_rescale_normal ------------------------- */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 + +#define GL_RESCALE_NORMAL_EXT 0x803A + +#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) + +#endif /* GL_EXT_rescale_normal */ + +/* -------------------------- GL_EXT_scene_marker -------------------------- */ + +#ifndef GL_EXT_scene_marker +#define GL_EXT_scene_marker 1 + +typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); + +#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) +#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) + +#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) + +#endif /* GL_EXT_scene_marker */ + +/* ------------------------- GL_EXT_secondary_color ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) +#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) +#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) +#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) +#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) +#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) +#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) +#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) +#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) +#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) +#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) +#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) +#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) +#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) +#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) +#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) +#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) + +#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) + +#endif /* GL_EXT_secondary_color */ + +/* --------------------- GL_EXT_separate_shader_objects -------------------- */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 + +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D + +typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const char* string); +typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); + +#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) +#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) +#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) + +#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) + +#endif /* GL_EXT_separate_shader_objects */ + +/* --------------------- GL_EXT_separate_specular_color -------------------- */ + +#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 + +#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) + +#endif /* GL_EXT_separate_specular_color */ + +/* --------------------- GL_EXT_shader_image_load_store -------------------- */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS_EXT 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); + +#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) +#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) + +#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) + +#endif /* GL_EXT_shader_image_load_store */ + +/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 + +#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) + +#endif /* GL_EXT_shadow_funcs */ + +/* --------------------- GL_EXT_shared_texture_palette --------------------- */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 + +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB + +#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) + +#endif /* GL_EXT_shared_texture_palette */ + +/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ + +#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 + +#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) + +#endif /* GL_EXT_stencil_clear_tag */ + +/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ + +#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 (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); + +#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) + +#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) + +#endif /* GL_EXT_stencil_two_side */ + +/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 + +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 + +#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) + +#endif /* GL_EXT_stencil_wrap */ + +/* --------------------------- GL_EXT_subtexture --------------------------- */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 + +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); + +#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) +#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) +#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) + +#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) + +#endif /* GL_EXT_subtexture */ + +/* ----------------------------- GL_EXT_texture ---------------------------- */ + +#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 GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) + +#endif /* GL_EXT_texture */ + +/* ---------------------------- GL_EXT_texture3D --------------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); + +#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) + +#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) + +#endif /* GL_EXT_texture3D */ + +/* -------------------------- GL_EXT_texture_array ------------------------- */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 + +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + +#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) + +#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) + +#endif /* GL_EXT_texture_array */ + +/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) + +#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) + +#endif /* GL_EXT_texture_buffer_object */ + +/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) + +#endif /* GL_EXT_texture_compression_dxt1 */ + +/* -------------------- GL_EXT_texture_compression_latc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) + +#endif /* GL_EXT_texture_compression_latc */ + +/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) + +#endif /* GL_EXT_texture_compression_rgtc */ + +/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) + +#endif /* GL_EXT_texture_compression_s3tc */ + +/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) + +#endif /* GL_EXT_texture_cube_map */ + +/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ + +#ifndef GL_EXT_texture_edge_clamp +#define GL_EXT_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_EXT 0x812F + +#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) + +#endif /* GL_EXT_texture_edge_clamp */ + +/* --------------------------- GL_EXT_texture_env -------------------------- */ + +#ifndef GL_EXT_texture_env +#define GL_EXT_texture_env 1 + +#define GL_TEXTURE_ENV0_EXT 0 +#define GL_ENV_BLEND_EXT 0 +#define GL_TEXTURE_ENV_SHIFT_EXT 0 +#define GL_ENV_REPLACE_EXT 0 +#define GL_ENV_ADD_EXT 0 +#define GL_ENV_SUBTRACT_EXT 0 +#define GL_TEXTURE_ENV_MODE_ALPHA_EXT 0 +#define GL_ENV_REVERSE_SUBTRACT_EXT 0 +#define GL_ENV_REVERSE_BLEND_EXT 0 +#define GL_ENV_COPY_EXT 0 +#define GL_ENV_MODULATE_EXT 0 + +#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) + +#endif /* GL_EXT_texture_env */ + +/* ------------------------- GL_EXT_texture_env_add ------------------------ */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 + +#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) + +#endif /* GL_EXT_texture_env_add */ + +/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ + +#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 + +#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) + +#endif /* GL_EXT_texture_env_combine */ + +/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) + +#endif /* GL_EXT_texture_env_dot3 */ + +/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ + +#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 + +#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) + +#endif /* GL_EXT_texture_filter_anisotropic */ + +/* ------------------------- GL_EXT_texture_integer ------------------------ */ + +#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 (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); + +#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) +#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) +#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) +#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) +#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) +#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) + +#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) + +#endif /* GL_EXT_texture_integer */ + +/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ + +#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 + +#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) + +#endif /* GL_EXT_texture_lod_bias */ + +/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ + +#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 + +#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) + +#endif /* GL_EXT_texture_mirror_clamp */ + +/* ------------------------- GL_EXT_texture_object ------------------------- */ + +#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 (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); +typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); + +#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) +#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) +#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) +#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) +#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) +#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) + +#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) + +#endif /* GL_EXT_texture_object */ + +/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); + +#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) + +#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) + +#endif /* GL_EXT_texture_perturb_normal */ + +/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ + +#ifndef GL_EXT_texture_rectangle +#define GL_EXT_texture_rectangle 1 + +#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 + +#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) + +#endif /* GL_EXT_texture_rectangle */ + +/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ + +#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 + +#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) + +#endif /* GL_EXT_texture_sRGB */ + +/* ----------------------- 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 + +#define GLEW_EXT_texture_sRGB_decode GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_decode) + +#endif /* GL_EXT_texture_sRGB_decode */ + +/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ + +#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 + +#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) + +#endif /* GL_EXT_texture_shared_exponent */ + +/* -------------------------- GL_EXT_texture_snorm ------------------------- */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 + +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_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 GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) + +#endif /* GL_EXT_texture_snorm */ + +/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ + +#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 + +#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) + +#endif /* GL_EXT_texture_swizzle */ + +/* --------------------------- GL_EXT_timer_query -------------------------- */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 + +#define GL_TIME_ELAPSED_EXT 0x88BF + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); + +#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) +#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) + +#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) + +#endif /* GL_EXT_timer_query */ + +/* ----------------------- GL_EXT_transform_feedback ----------------------- */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 + +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#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_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F + +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, char *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); + +#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) +#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) +#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) +#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) +#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) +#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) +#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) + +#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) + +#endif /* GL_EXT_transform_feedback */ + +/* -------------------------- GL_EXT_vertex_array -------------------------- */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 + +#define GL_DOUBLE_EXT 0x140A +#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 (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); + +#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) +#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) +#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) +#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) +#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) +#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) +#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) +#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) + +#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) + +#endif /* GL_EXT_vertex_array */ + +/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) + +#endif /* GL_EXT_vertex_array_bgra */ + +/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 + +#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 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + +#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) +#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) +#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) +#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) +#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) +#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) +#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) +#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) +#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) +#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) +#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) + +#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) + +#endif /* GL_EXT_vertex_attrib_64bit */ + +/* -------------------------- GL_EXT_vertex_shader ------------------------- */ + +#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_INVARIANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_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 (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); +typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); +typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); +typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); +typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, GLvoid *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); +typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + +#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) +#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) +#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) +#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) +#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) +#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) +#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) +#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) +#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) +#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) +#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) +#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) +#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) +#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) +#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) +#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) +#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) +#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) +#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) +#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) +#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) +#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) +#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) +#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) +#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) +#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) +#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) +#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) +#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) +#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) +#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) +#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) +#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) +#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) +#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) +#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) +#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) +#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) +#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) +#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) +#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) +#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) + +#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) + +#endif /* GL_EXT_vertex_shader */ + +/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 + +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#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 (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); + +#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) +#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) +#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) + +#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) + +#endif /* GL_EXT_vertex_weighting */ + +/* ------------------------- GL_EXT_x11_sync_object ------------------------ */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 + +#define GL_SYNC_X11_FENCE_EXT 0x90E1 + +typedef GLsync (GLAPIENTRY * PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); + +#define glImportSyncEXT GLEW_GET_FUN(__glewImportSyncEXT) + +#define GLEW_EXT_x11_sync_object GLEW_GET_VAR(__GLEW_EXT_x11_sync_object) + +#endif /* GL_EXT_x11_sync_object */ + +/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 + +typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); + +#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) + +#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) + +#endif /* GL_GREMEDY_frame_terminator */ + +/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 + +typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void* string); + +#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) + +#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) + +#endif /* GL_GREMEDY_string_marker */ + +/* --------------------- GL_HP_convolution_border_modes -------------------- */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 + +#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) + +#endif /* GL_HP_convolution_border_modes */ + +/* ------------------------- GL_HP_image_transform ------------------------- */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 + +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) +#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) +#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) +#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) +#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) +#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) + +#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) + +#endif /* GL_HP_image_transform */ + +/* -------------------------- GL_HP_occlusion_test ------------------------- */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 + +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 + +#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) + +#endif /* GL_HP_occlusion_test */ + +/* ------------------------- GL_HP_texture_lighting ------------------------ */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 + +#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) + +#endif /* GL_HP_texture_lighting */ + +/* --------------------------- GL_IBM_cull_vertex -------------------------- */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 + +#define GL_CULL_VERTEX_IBM 103050 + +#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) + +#endif /* GL_IBM_cull_vertex */ + +/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); + +#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) +#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) + +#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) + +#endif /* GL_IBM_multimode_draw_arrays */ + +/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 + +#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 + +#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) + +#endif /* GL_IBM_rasterpos_clip */ + +/* --------------------------- GL_IBM_static_data -------------------------- */ + +#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 + +#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) + +#endif /* GL_IBM_static_data */ + +/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_IBM 0x8370 + +#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) + +#endif /* GL_IBM_texture_mirrored_repeat */ + +/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); + +#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) +#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) +#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) +#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) +#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) +#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) +#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) +#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) + +#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) + +#endif /* GL_IBM_vertex_array_lists */ + +/* -------------------------- GL_INGR_color_clamp -------------------------- */ + +#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 + +#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) + +#endif /* GL_INGR_color_clamp */ + +/* ------------------------- GL_INGR_interlace_read ------------------------ */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 + +#define GL_INTERLACE_READ_INGR 0x8568 + +#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) + +#endif /* GL_INGR_interlace_read */ + +/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); + +#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) +#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) +#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) +#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) + +#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) + +#endif /* GL_INTEL_parallel_arrays */ + +/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ + +#ifndef GL_INTEL_texture_scissor +#define GL_INTEL_texture_scissor 1 + +typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); +typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); + +#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) +#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) + +#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) + +#endif /* GL_INTEL_texture_scissor */ + +/* -------------------------- GL_KTX_buffer_region ------------------------- */ + +#ifndef GL_KTX_buffer_region +#define GL_KTX_buffer_region 1 + +#define GL_KTX_FRONT_REGION 0x0 +#define GL_KTX_BACK_REGION 0x1 +#define GL_KTX_Z_REGION 0x2 +#define GL_KTX_STENCIL_REGION 0x3 + +typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDPROC) (void); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); +typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glBufferRegionEnabled GLEW_GET_FUN(__glewBufferRegionEnabled) +#define glDeleteBufferRegion GLEW_GET_FUN(__glewDeleteBufferRegion) +#define glDrawBufferRegion GLEW_GET_FUN(__glewDrawBufferRegion) +#define glNewBufferRegion GLEW_GET_FUN(__glewNewBufferRegion) +#define glReadBufferRegion GLEW_GET_FUN(__glewReadBufferRegion) + +#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) + +#endif /* GL_KTX_buffer_region */ + +/* ------------------------- GL_MESAX_texture_stack ------------------------ */ + +#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 + +#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) + +#endif /* GL_MESAX_texture_stack */ + +/* -------------------------- GL_MESA_pack_invert -------------------------- */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 + +#define GL_PACK_INVERT_MESA 0x8758 + +#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) + +#endif /* GL_MESA_pack_invert */ + +/* ------------------------- GL_MESA_resize_buffers ------------------------ */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 + +typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); + +#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) + +#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) + +#endif /* GL_MESA_resize_buffers */ + +/* --------------------------- GL_MESA_window_pos -------------------------- */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); + +#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) +#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) +#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) +#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) +#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) +#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) +#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) +#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) +#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) +#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) +#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) +#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) +#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) +#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) +#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) +#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) +#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) +#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) +#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) +#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) +#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) +#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) +#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) +#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) + +#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) + +#endif /* GL_MESA_window_pos */ + +/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ + +#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 + +#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) + +#endif /* GL_MESA_ycbcr_texture */ + +/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ + +#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 + +#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) + +#endif /* GL_NVX_gpu_memory_info */ + +/* --------------------------- GL_NV_blend_square -------------------------- */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 + +#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) + +#endif /* GL_NV_blend_square */ + +/* ------------------------ GL_NV_conditional_render ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); + +#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) +#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) + +#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) + +#endif /* GL_NV_conditional_render */ + +/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ + +#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 + +#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) + +#endif /* GL_NV_copy_depth_to_color */ + +/* ---------------------------- GL_NV_copy_image --------------------------- */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 + +typedef void (GLAPIENTRY * 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); + +#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) + +#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) + +#endif /* GL_NV_copy_image */ + +/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); + +#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) +#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) +#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) + +#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) + +#endif /* GL_NV_depth_buffer_float */ + +/* --------------------------- GL_NV_depth_clamp --------------------------- */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 + +#define GL_DEPTH_CLAMP_NV 0x864F + +#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) + +#endif /* GL_NV_depth_clamp */ + +/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ + +#ifndef GL_NV_depth_range_unclamped +#define GL_NV_depth_range_unclamped 1 + +#define GL_SAMPLE_COUNT_BITS_NV 0x8864 +#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 +#define GL_QUERY_RESULT_NV 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 +#define GL_SAMPLE_COUNT_NV 0x8914 + +#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) + +#endif /* GL_NV_depth_range_unclamped */ + +/* ---------------------------- GL_NV_evaluators --------------------------- */ + +#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 (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void* points); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void* points); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) +#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) +#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) +#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) +#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) +#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) +#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) +#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) +#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) + +#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) + +#endif /* GL_NV_evaluators */ + +/* ----------------------- GL_NV_explicit_multisample ---------------------- */ + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); + +#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) +#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) +#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) + +#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) + +#endif /* GL_NV_explicit_multisample */ + +/* ------------------------------ GL_NV_fence ------------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); +typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); + +#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) +#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) +#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) +#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) +#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) +#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) +#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) + +#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) + +#endif /* GL_NV_fence */ + +/* --------------------------- GL_NV_float_buffer -------------------------- */ + +#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 + +#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) + +#endif /* GL_NV_float_buffer */ + +/* --------------------------- GL_NV_fog_distance -------------------------- */ + +#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 + +#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) + +#endif /* GL_NV_fog_distance */ + +/* ------------------------- GL_NV_fragment_program ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); + +#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) +#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) +#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) +#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) +#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) +#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) + +#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) + +#endif /* GL_NV_fragment_program */ + +/* ------------------------ GL_NV_fragment_program2 ------------------------ */ + +#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 + +#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) + +#endif /* GL_NV_fragment_program2 */ + +/* ------------------------ GL_NV_fragment_program4 ------------------------ */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 + +#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) + +#endif /* GL_NV_fragment_program4 */ + +/* --------------------- GL_NV_fragment_program_option --------------------- */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 + +#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) + +#endif /* GL_NV_fragment_program_option */ + +/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) + +#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) + +#endif /* GL_NV_framebuffer_multisample_coverage */ + +/* ------------------------ GL_NV_geometry_program4 ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); + +#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) + +#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) + +#endif /* GL_NV_geometry_program4 */ + +/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 + +#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) + +#endif /* GL_NV_geometry_shader4 */ + +/* --------------------------- GL_NV_gpu_program4 -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); + +#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) +#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) +#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) +#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) +#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) +#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) +#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) +#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) +#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) +#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) +#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) +#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) + +#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) + +#endif /* GL_NV_gpu_program4 */ + +/* --------------------------- GL_NV_gpu_program5 -------------------------- */ + +#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 GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) + +#endif /* GL_NV_gpu_program5 */ + +/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ + +#ifndef GL_NV_gpu_program_fp64 +#define GL_NV_gpu_program_fp64 1 + +#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) + +#endif /* GL_NV_gpu_program_fp64 */ + +/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 + +#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 (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) +#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) +#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) +#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) +#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) +#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) +#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) +#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) +#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) +#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) +#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) +#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) +#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) +#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) +#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) +#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) +#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) +#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) +#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) +#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) +#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) +#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) +#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) +#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) +#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) +#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) +#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) +#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) +#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) +#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) +#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) +#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) +#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) +#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) + +#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) + +#endif /* GL_NV_gpu_shader5 */ + +/* ---------------------------- GL_NV_half_float --------------------------- */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 + +#define GL_HALF_FLOAT_NV 0x140B + +typedef unsigned short GLhalf; + +typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); +typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); +typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); + +#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) +#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) +#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) +#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) +#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) +#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) +#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) +#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) +#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) +#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) +#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) +#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) +#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) +#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) +#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) +#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) +#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) +#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) +#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) +#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) +#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) +#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) +#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) +#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) +#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) +#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) +#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) +#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) +#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) +#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) +#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) +#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) +#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) +#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) +#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) +#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) +#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) +#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) +#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) +#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) +#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) +#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) +#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) +#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) +#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) +#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) + +#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) + +#endif /* GL_NV_half_float */ + +/* ------------------------ GL_NV_light_max_exponent ----------------------- */ + +#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 + +#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) + +#endif /* GL_NV_light_max_exponent */ + +/* ----------------------- GL_NV_multisample_coverage ---------------------- */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 + +#define GL_COVERAGE_SAMPLES_NV 0x80A9 +#define GL_COLOR_SAMPLES_NV 0x8E20 + +#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) + +#endif /* GL_NV_multisample_coverage */ + +/* --------------------- GL_NV_multisample_filter_hint --------------------- */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 + +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 + +#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) + +#endif /* GL_NV_multisample_filter_hint */ + +/* ------------------------- GL_NV_occlusion_query ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); + +#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) +#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) +#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) +#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) +#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) +#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) +#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) + +#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) + +#endif /* GL_NV_occlusion_query */ + +/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) + +#endif /* GL_NV_packed_depth_stencil */ + +/* --------------------- GL_NV_parameter_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); + +#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) +#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) +#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) + +#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) + +#endif /* GL_NV_parameter_buffer_object */ + +/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 + +#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) + +#endif /* GL_NV_parameter_buffer_object2 */ + +/* -------------------------- GL_NV_path_rendering ------------------------- */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 + +#define GL_CLOSE_PATH_NV 0x00 +#define GL_BOLD_BIT_NV 0x01 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_MOVE_TO_NV 0x02 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_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_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#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_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#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_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_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_GLYPH_HAS_KERNING_NV 0x100 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PRIMARY_COLOR 0x8577 +#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_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#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_FONT_X_MIN_BOUNDS_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_NV 0x00100000 +#define GL_FONT_ASCENDER_NV 0x00200000 +#define GL_FONT_DESCENDER_NV 0x00400000 +#define GL_FONT_HEIGHT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_NV 0x08000000 +#define GL_FONT_HAS_KERNING_NV 0x10000000 + +typedef void (GLAPIENTRY * PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHNVPROC) (GLuint name, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLuint (GLAPIENTRY * PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOMMANDSNVPROC) (GLuint name, GLubyte* commands); +typedef void (GLAPIENTRY * PFNGLGETPATHCOORDSNVPROC) (GLuint name, GLfloat* coords); +typedef void (GLAPIENTRY * PFNGLGETPATHDASHARRAYNVPROC) (GLuint name, GLfloat* dashArray); +typedef GLfloat (GLAPIENTRY * PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERFVNVPROC) (GLuint name, GLenum param, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERIVNVPROC) (GLuint name, GLenum param, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef GLboolean (GLAPIENTRY * PFNGLISPATHNVPROC) (GLuint path); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs); +typedef void (GLAPIENTRY * PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const GLvoid*coords); +typedef void (GLAPIENTRY * PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void* coords); +typedef void (GLAPIENTRY * PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum zfunc); +typedef void (GLAPIENTRY * PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat* dashArray); +typedef void (GLAPIENTRY * PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLint units); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void* pathString); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const GLvoid*coords); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords); +typedef void (GLAPIENTRY * PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs); +typedef GLboolean (GLAPIENTRY * PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GLAPIENTRY * PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues); +typedef void (GLAPIENTRY * PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]); + +#define glCopyPathNV GLEW_GET_FUN(__glewCopyPathNV) +#define glCoverFillPathInstancedNV GLEW_GET_FUN(__glewCoverFillPathInstancedNV) +#define glCoverFillPathNV GLEW_GET_FUN(__glewCoverFillPathNV) +#define glCoverStrokePathInstancedNV GLEW_GET_FUN(__glewCoverStrokePathInstancedNV) +#define glCoverStrokePathNV GLEW_GET_FUN(__glewCoverStrokePathNV) +#define glDeletePathsNV GLEW_GET_FUN(__glewDeletePathsNV) +#define glGenPathsNV GLEW_GET_FUN(__glewGenPathsNV) +#define glGetPathColorGenfvNV GLEW_GET_FUN(__glewGetPathColorGenfvNV) +#define glGetPathColorGenivNV GLEW_GET_FUN(__glewGetPathColorGenivNV) +#define glGetPathCommandsNV GLEW_GET_FUN(__glewGetPathCommandsNV) +#define glGetPathCoordsNV GLEW_GET_FUN(__glewGetPathCoordsNV) +#define glGetPathDashArrayNV GLEW_GET_FUN(__glewGetPathDashArrayNV) +#define glGetPathLengthNV GLEW_GET_FUN(__glewGetPathLengthNV) +#define glGetPathMetricRangeNV GLEW_GET_FUN(__glewGetPathMetricRangeNV) +#define glGetPathMetricsNV GLEW_GET_FUN(__glewGetPathMetricsNV) +#define glGetPathParameterfvNV GLEW_GET_FUN(__glewGetPathParameterfvNV) +#define glGetPathParameterivNV GLEW_GET_FUN(__glewGetPathParameterivNV) +#define glGetPathSpacingNV GLEW_GET_FUN(__glewGetPathSpacingNV) +#define glGetPathTexGenfvNV GLEW_GET_FUN(__glewGetPathTexGenfvNV) +#define glGetPathTexGenivNV GLEW_GET_FUN(__glewGetPathTexGenivNV) +#define glInterpolatePathsNV GLEW_GET_FUN(__glewInterpolatePathsNV) +#define glIsPathNV GLEW_GET_FUN(__glewIsPathNV) +#define glIsPointInFillPathNV GLEW_GET_FUN(__glewIsPointInFillPathNV) +#define glIsPointInStrokePathNV GLEW_GET_FUN(__glewIsPointInStrokePathNV) +#define glPathColorGenNV GLEW_GET_FUN(__glewPathColorGenNV) +#define glPathCommandsNV GLEW_GET_FUN(__glewPathCommandsNV) +#define glPathCoordsNV GLEW_GET_FUN(__glewPathCoordsNV) +#define glPathCoverDepthFuncNV GLEW_GET_FUN(__glewPathCoverDepthFuncNV) +#define glPathDashArrayNV GLEW_GET_FUN(__glewPathDashArrayNV) +#define glPathFogGenNV GLEW_GET_FUN(__glewPathFogGenNV) +#define glPathGlyphRangeNV GLEW_GET_FUN(__glewPathGlyphRangeNV) +#define glPathGlyphsNV GLEW_GET_FUN(__glewPathGlyphsNV) +#define glPathParameterfNV GLEW_GET_FUN(__glewPathParameterfNV) +#define glPathParameterfvNV GLEW_GET_FUN(__glewPathParameterfvNV) +#define glPathParameteriNV GLEW_GET_FUN(__glewPathParameteriNV) +#define glPathParameterivNV GLEW_GET_FUN(__glewPathParameterivNV) +#define glPathStencilDepthOffsetNV GLEW_GET_FUN(__glewPathStencilDepthOffsetNV) +#define glPathStencilFuncNV GLEW_GET_FUN(__glewPathStencilFuncNV) +#define glPathStringNV GLEW_GET_FUN(__glewPathStringNV) +#define glPathSubCommandsNV GLEW_GET_FUN(__glewPathSubCommandsNV) +#define glPathSubCoordsNV GLEW_GET_FUN(__glewPathSubCoordsNV) +#define glPathTexGenNV GLEW_GET_FUN(__glewPathTexGenNV) +#define glPointAlongPathNV GLEW_GET_FUN(__glewPointAlongPathNV) +#define glStencilFillPathInstancedNV GLEW_GET_FUN(__glewStencilFillPathInstancedNV) +#define glStencilFillPathNV GLEW_GET_FUN(__glewStencilFillPathNV) +#define glStencilStrokePathInstancedNV GLEW_GET_FUN(__glewStencilStrokePathInstancedNV) +#define glStencilStrokePathNV GLEW_GET_FUN(__glewStencilStrokePathNV) +#define glTransformPathNV GLEW_GET_FUN(__glewTransformPathNV) +#define glWeightPathsNV GLEW_GET_FUN(__glewWeightPathsNV) + +#define GLEW_NV_path_rendering GLEW_GET_VAR(__GLEW_NV_path_rendering) + +#endif /* GL_NV_path_rendering */ + +/* ------------------------- GL_NV_pixel_data_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void* pointer); + +#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) +#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) + +#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) + +#endif /* GL_NV_pixel_data_range */ + +/* --------------------------- GL_NV_point_sprite -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); + +#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) +#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) + +#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) + +#endif /* GL_NV_point_sprite */ + +/* -------------------------- GL_NV_present_video -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); + +#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) +#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) +#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) +#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) +#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) +#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) + +#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) + +#endif /* GL_NV_present_video */ + +/* ------------------------ GL_NV_primitive_restart ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); + +#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) +#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) + +#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) + +#endif /* GL_NV_primitive_restart */ + +/* ------------------------ GL_NV_register_combiners ----------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); + +#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) +#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) +#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) +#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) +#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) +#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) +#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) +#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) +#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) +#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) +#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) +#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) +#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) + +#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) + +#endif /* GL_NV_register_combiners */ + +/* ----------------------- GL_NV_register_combiners2 ----------------------- */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 + +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 + +typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); + +#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) +#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) + +#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) + +#endif /* GL_NV_register_combiners2 */ + +/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ + +#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 (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) +#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) +#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) +#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) +#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) +#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) +#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) +#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) +#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) +#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) +#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) +#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) +#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) + +#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) + +#endif /* GL_NV_shader_buffer_load */ + +/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ + +#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 + +#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) + +#endif /* GL_NV_tessellation_program5 */ + +/* -------------------------- GL_NV_texgen_emboss -------------------------- */ + +#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 + +#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) + +#endif /* GL_NV_texgen_emboss */ + +/* ------------------------ GL_NV_texgen_reflection ------------------------ */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 + +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 + +#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) + +#endif /* GL_NV_texgen_reflection */ + +/* ------------------------- GL_NV_texture_barrier ------------------------- */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 + +typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); + +#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) + +#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) + +#endif /* GL_NV_texture_barrier */ + +/* --------------------- GL_NV_texture_compression_vtc --------------------- */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 + +#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) + +#endif /* GL_NV_texture_compression_vtc */ + +/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ + +#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 + +#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) + +#endif /* GL_NV_texture_env_combine4 */ + +/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 + +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F + +#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) + +#endif /* GL_NV_texture_expand_normal */ + +/* ----------------------- GL_NV_texture_multisample ----------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + +#define glTexImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage2DMultisampleCoverageNV) +#define glTexImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage3DMultisampleCoverageNV) +#define glTextureImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage2DMultisampleCoverageNV) +#define glTextureImage2DMultisampleNV GLEW_GET_FUN(__glewTextureImage2DMultisampleNV) +#define glTextureImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage3DMultisampleCoverageNV) +#define glTextureImage3DMultisampleNV GLEW_GET_FUN(__glewTextureImage3DMultisampleNV) + +#define GLEW_NV_texture_multisample GLEW_GET_VAR(__GLEW_NV_texture_multisample) + +#endif /* GL_NV_texture_multisample */ + +/* ------------------------ GL_NV_texture_rectangle ------------------------ */ + +#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 + +#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) + +#endif /* GL_NV_texture_rectangle */ + +/* -------------------------- GL_NV_texture_shader ------------------------- */ + +#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_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#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 + +#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) + +#endif /* GL_NV_texture_shader */ + +/* ------------------------- GL_NV_texture_shader2 ------------------------- */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 + +#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_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#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 GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) + +#endif /* GL_NV_texture_shader2 */ + +/* ------------------------- GL_NV_texture_shader3 ------------------------- */ + +#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 + +#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) + +#endif /* GL_NV_texture_shader3 */ + +/* ------------------------ GL_NV_transform_feedback ----------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); + +#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) +#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) +#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) +#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) +#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) +#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) +#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) +#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) +#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) +#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) +#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) + +#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) + +#endif /* GL_NV_transform_feedback */ + +/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); + +#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) +#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) +#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) +#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) +#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) +#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) +#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) + +#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) + +#endif /* GL_NV_transform_feedback2 */ + +/* -------------------------- GL_NV_vdpau_interop -------------------------- */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 + +#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 GLintptr GLvdpauSurfaceNV; + +typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); +typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const GLvoid*getProcAddress); +typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); +typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); + +#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) +#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) +#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) +#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) +#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) +#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) +#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) +#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) +#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) +#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) + +#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) + +#endif /* GL_NV_vdpau_interop */ + +/* ------------------------ GL_NV_vertex_array_range ----------------------- */ + +#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 (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* pointer); + +#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) +#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) + +#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) + +#endif /* GL_NV_vertex_array_range */ + +/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 + +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 + +#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) + +#endif /* GL_NV_vertex_array_range2 */ + +/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 + +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); + +#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) +#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) +#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) +#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) +#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) +#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) +#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) +#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) +#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) +#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) +#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) +#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) +#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) +#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) +#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) +#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) +#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) +#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) +#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) + +#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) + +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ + +#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 (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); +typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); + +#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) +#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) +#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) +#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) +#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) +#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) +#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) +#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) +#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) +#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) +#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) +#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) + +#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) + +#endif /* GL_NV_vertex_buffer_unified_memory */ + +/* -------------------------- GL_NV_vertex_program ------------------------- */ + +#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 (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); + +#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) +#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) +#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) +#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) +#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) +#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) +#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) +#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) +#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) +#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) +#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) +#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) +#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) +#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) +#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) +#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) +#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) +#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) +#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) +#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) +#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) +#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) +#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) +#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) +#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) +#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) +#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) +#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) +#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) +#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) +#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) +#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) +#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) +#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) +#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) +#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) +#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) +#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) +#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) +#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) +#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) +#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) +#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) +#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) +#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) +#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) +#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) +#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) +#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) +#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) +#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) +#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) +#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) +#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) +#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) +#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) +#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) +#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) +#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) +#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) +#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) +#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) +#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) +#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) + +#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) + +#endif /* GL_NV_vertex_program */ + +/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 + +#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) + +#endif /* GL_NV_vertex_program1_1 */ + +/* ------------------------- GL_NV_vertex_program2 ------------------------- */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 + +#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) + +#endif /* GL_NV_vertex_program2 */ + +/* ---------------------- GL_NV_vertex_program2_option --------------------- */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 + +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 + +#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) + +#endif /* GL_NV_vertex_program2_option */ + +/* ------------------------- GL_NV_vertex_program3 ------------------------- */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 + +#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C + +#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) + +#endif /* GL_NV_vertex_program3 */ + +/* ------------------------- GL_NV_vertex_program4 ------------------------- */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 + +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD + +#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) + +#endif /* GL_NV_vertex_program4 */ + +/* -------------------------- GL_NV_video_capture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params); + +#define glBeginVideoCaptureNV GLEW_GET_FUN(__glewBeginVideoCaptureNV) +#define glBindVideoCaptureStreamBufferNV GLEW_GET_FUN(__glewBindVideoCaptureStreamBufferNV) +#define glBindVideoCaptureStreamTextureNV GLEW_GET_FUN(__glewBindVideoCaptureStreamTextureNV) +#define glEndVideoCaptureNV GLEW_GET_FUN(__glewEndVideoCaptureNV) +#define glGetVideoCaptureStreamdvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamdvNV) +#define glGetVideoCaptureStreamfvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamfvNV) +#define glGetVideoCaptureStreamivNV GLEW_GET_FUN(__glewGetVideoCaptureStreamivNV) +#define glGetVideoCaptureivNV GLEW_GET_FUN(__glewGetVideoCaptureivNV) +#define glVideoCaptureNV GLEW_GET_FUN(__glewVideoCaptureNV) +#define glVideoCaptureStreamParameterdvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterdvNV) +#define glVideoCaptureStreamParameterfvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterfvNV) +#define glVideoCaptureStreamParameterivNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterivNV) + +#define GLEW_NV_video_capture GLEW_GET_VAR(__GLEW_NV_video_capture) + +#endif /* GL_NV_video_capture */ + +/* ------------------------ GL_OES_byte_coordinates ------------------------ */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 + +#define GL_BYTE 0x1400 + +#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) + +#endif /* GL_OES_byte_coordinates */ + +/* ------------------- GL_OES_compressed_paletted_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 + +#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) + +#endif /* GL_OES_compressed_paletted_texture */ + +/* --------------------------- GL_OES_read_format -------------------------- */ + +#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 + +#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) + +#endif /* GL_OES_read_format */ + +/* ------------------------ GL_OES_single_precision ------------------------ */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); +typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); + +#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) +#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) +#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) +#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) +#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) +#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) + +#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) + +#endif /* GL_OES_single_precision */ + +/* ---------------------------- GL_OML_interlace --------------------------- */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 + +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 + +#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) + +#endif /* GL_OML_interlace */ + +/* ---------------------------- GL_OML_resample ---------------------------- */ + +#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 + +#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) + +#endif /* GL_OML_resample */ + +/* ---------------------------- GL_OML_subsample --------------------------- */ + +#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 + +#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) + +#endif /* GL_OML_subsample */ + +/* --------------------------- GL_PGI_misc_hints --------------------------- */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 + +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 +#define GL_CONSERVE_MEMORY_HINT_PGI 107005 +#define GL_RECLAIM_MEMORY_HINT_PGI 107006 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 +#define GL_ALWAYS_FAST_HINT_PGI 107020 +#define GL_ALWAYS_SOFT_HINT_PGI 107021 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 +#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 +#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 +#define GL_STRICT_LIGHTING_HINT_PGI 107031 +#define GL_STRICT_SCISSOR_HINT_PGI 107032 +#define GL_FULL_STIPPLE_HINT_PGI 107033 +#define GL_CLIP_NEAR_HINT_PGI 107040 +#define GL_CLIP_FAR_HINT_PGI 107041 +#define GL_WIDE_LINE_HINT_PGI 107042 +#define GL_BACK_NORMALS_HINT_PGI 107043 + +#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) + +#endif /* GL_PGI_misc_hints */ + +/* -------------------------- GL_PGI_vertex_hints -------------------------- */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 + +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#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_VERTEX_DATA_HINT_PGI 107050 +#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 +#define GL_MATERIAL_SIDE_HINT_PGI 107052 +#define GL_MAX_VERTEX_HINT_PGI 107053 +#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 GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) + +#endif /* GL_PGI_vertex_hints */ + +/* ----------------------- GL_REND_screen_coordinates ---------------------- */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 + +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 + +#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) + +#endif /* GL_REND_screen_coordinates */ + +/* ------------------------------- GL_S3_s3tc ------------------------------ */ + +#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 + +#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) + +#endif /* GL_S3_s3tc */ + +/* -------------------------- GL_SGIS_color_range -------------------------- */ + +#ifndef GL_SGIS_color_range +#define GL_SGIS_color_range 1 + +#define GL_EXTENDED_RANGE_SGIS 0x85A5 +#define GL_MIN_RED_SGIS 0x85A6 +#define GL_MAX_RED_SGIS 0x85A7 +#define GL_MIN_GREEN_SGIS 0x85A8 +#define GL_MAX_GREEN_SGIS 0x85A9 +#define GL_MIN_BLUE_SGIS 0x85AA +#define GL_MAX_BLUE_SGIS 0x85AB +#define GL_MIN_ALPHA_SGIS 0x85AC +#define GL_MAX_ALPHA_SGIS 0x85AD + +#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) + +#endif /* GL_SGIS_color_range */ + +/* ------------------------- GL_SGIS_detail_texture ------------------------ */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 + +typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); + +#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) +#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) + +#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) + +#endif /* GL_SGIS_detail_texture */ + +/* -------------------------- GL_SGIS_fog_function ------------------------- */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 + +typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); + +#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) +#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) + +#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) + +#endif /* GL_SGIS_fog_function */ + +/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 + +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 + +#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) + +#endif /* GL_SGIS_generate_mipmap */ + +/* -------------------------- GL_SGIS_multisample -------------------------- */ + +#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 +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 + +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); + +#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) +#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) + +#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) + +#endif /* GL_SGIS_multisample */ + +/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 + +#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) + +#endif /* GL_SGIS_pixel_texture */ + +/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ + +#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 + +#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) + +#endif /* GL_SGIS_point_line_texgen */ + +/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 + +typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); +typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); + +#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) +#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) + +#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) + +#endif /* GL_SGIS_sharpen_texture */ + +/* --------------------------- GL_SGIS_texture4D --------------------------- */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 + +typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void* pixels); + +#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) +#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) + +#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) + +#endif /* GL_SGIS_texture4D */ + +/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_SGIS 0x812D + +#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) + +#endif /* GL_SGIS_texture_border_clamp */ + +/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_SGIS 0x812F + +#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) + +#endif /* GL_SGIS_texture_edge_clamp */ + +/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 + +typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); +typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); + +#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) +#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) + +#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) + +#endif /* GL_SGIS_texture_filter4 */ + +/* -------------------------- GL_SGIS_texture_lod -------------------------- */ + +#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 + +#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) + +#endif /* GL_SGIS_texture_lod */ + +/* ------------------------- GL_SGIS_texture_select ------------------------ */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 + +#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) + +#endif /* GL_SGIS_texture_select */ + +/* ----------------------------- GL_SGIX_async ----------------------------- */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 + +#define GL_ASYNC_MARKER_SGIX 0x8329 + +typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); +typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); + +#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) +#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) +#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) +#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) +#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) +#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) + +#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) + +#endif /* GL_SGIX_async */ + +/* ------------------------ GL_SGIX_async_histogram ------------------------ */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 + +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D + +#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) + +#endif /* GL_SGIX_async_histogram */ + +/* -------------------------- GL_SGIX_async_pixel -------------------------- */ + +#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 + +#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) + +#endif /* GL_SGIX_async_pixel */ + +/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ + +#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 + +#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) + +#endif /* GL_SGIX_blend_alpha_minmax */ + +/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 + +#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) + +#endif /* GL_SGIX_clipmap */ + +/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 + +#define GL_CONVOLUTION_HINT_SGIX 0x8316 + +#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) + +#endif /* GL_SGIX_convolution_accuracy */ + +/* ------------------------- GL_SGIX_depth_texture ------------------------- */ + +#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 + +#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) + +#endif /* GL_SGIX_depth_texture */ + +/* -------------------------- GL_SGIX_flush_raster ------------------------- */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 + +typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); + +#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) + +#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) + +#endif /* GL_SGIX_flush_raster */ + +/* --------------------------- GL_SGIX_fog_offset -------------------------- */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 + +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 + +#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) + +#endif /* GL_SGIX_fog_offset */ + +/* -------------------------- GL_SGIX_fog_texture -------------------------- */ + +#ifndef GL_SGIX_fog_texture +#define GL_SGIX_fog_texture 1 + +#define GL_TEXTURE_FOG_SGIX 0 +#define GL_FOG_PATCHY_FACTOR_SGIX 0 +#define GL_FRAGMENT_FOG_SGIX 0 + +typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); + +#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) + +#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) + +#endif /* GL_SGIX_fog_texture */ + +/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ + +#ifndef GL_SGIX_fragment_specular_lighting +#define GL_SGIX_fragment_specular_lighting 1 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); + +#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) +#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) +#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) +#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) +#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) +#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) +#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) +#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) +#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) +#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) +#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) +#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) +#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) +#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) +#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) +#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) +#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) + +#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) + +#endif /* GL_SGIX_fragment_specular_lighting */ + +/* --------------------------- GL_SGIX_framezoom --------------------------- */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 + +typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); + +#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) + +#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) + +#endif /* GL_SGIX_framezoom */ + +/* --------------------------- GL_SGIX_interlace --------------------------- */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 + +#define GL_INTERLACE_SGIX 0x8094 + +#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) + +#endif /* GL_SGIX_interlace */ + +/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 + +#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) + +#endif /* GL_SGIX_ir_instrument1 */ + +/* ------------------------- GL_SGIX_list_priority ------------------------- */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 + +#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) + +#endif /* GL_SGIX_list_priority */ + +/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 + +typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); + +#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) + +#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) + +#endif /* GL_SGIX_pixel_texture */ + +/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ + +#ifndef GL_SGIX_pixel_texture_bits +#define GL_SGIX_pixel_texture_bits 1 + +#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) + +#endif /* GL_SGIX_pixel_texture_bits */ + +/* ------------------------ GL_SGIX_reference_plane ------------------------ */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 + +typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); + +#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) + +#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) + +#endif /* GL_SGIX_reference_plane */ + +/* ---------------------------- GL_SGIX_resample --------------------------- */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 + +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 + +#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) + +#endif /* GL_SGIX_resample */ + +/* ----------------------------- GL_SGIX_shadow ---------------------------- */ + +#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 + +#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) + +#endif /* GL_SGIX_shadow */ + +/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 + +#define GL_SHADOW_AMBIENT_SGIX 0x80BF + +#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) + +#endif /* GL_SGIX_shadow_ambient */ + +/* ----------------------------- GL_SGIX_sprite ---------------------------- */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 + +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); + +#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) +#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) +#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) +#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) + +#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) + +#endif /* GL_SGIX_sprite */ + +/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 + +typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); + +#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) + +#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) + +#endif /* GL_SGIX_tag_sample_buffer */ + +/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 + +#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) + +#endif /* GL_SGIX_texture_add_env */ + +/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ + +#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 + +#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) + +#endif /* GL_SGIX_texture_coordinate_clamp */ + +/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 + +#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) + +#endif /* GL_SGIX_texture_lod_bias */ + +/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 + +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E + +#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) + +#endif /* GL_SGIX_texture_multi_buffer */ + +/* ------------------------- GL_SGIX_texture_range ------------------------- */ + +#ifndef GL_SGIX_texture_range +#define GL_SGIX_texture_range 1 + +#define GL_RGB_SIGNED_SGIX 0x85E0 +#define GL_RGBA_SIGNED_SGIX 0x85E1 +#define GL_ALPHA_SIGNED_SGIX 0x85E2 +#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 +#define GL_INTENSITY_SIGNED_SGIX 0x85E4 +#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 +#define GL_RGB16_SIGNED_SGIX 0x85E6 +#define GL_RGBA16_SIGNED_SGIX 0x85E7 +#define GL_ALPHA16_SIGNED_SGIX 0x85E8 +#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 +#define GL_INTENSITY16_SIGNED_SGIX 0x85EA +#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB +#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC +#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED +#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE +#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF +#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 +#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 +#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 +#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 +#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 +#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 +#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 +#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 +#define GL_MIN_LUMINANCE_SGIS 0x85F8 +#define GL_MAX_LUMINANCE_SGIS 0x85F9 +#define GL_MIN_INTENSITY_SGIS 0x85FA +#define GL_MAX_INTENSITY_SGIS 0x85FB + +#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) + +#endif /* GL_SGIX_texture_range */ + +/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ + +#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 + +#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) + +#endif /* GL_SGIX_texture_scale_bias */ + +/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) + +#endif /* GL_SGIX_vertex_preclip */ + +/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ + +#ifndef GL_SGIX_vertex_preclip_hint +#define GL_SGIX_vertex_preclip_hint 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) + +#endif /* GL_SGIX_vertex_preclip_hint */ + +/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 + +#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) + +#endif /* GL_SGIX_ycrcb */ + +/* -------------------------- GL_SGI_color_matrix -------------------------- */ + +#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 + +#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) + +#endif /* GL_SGI_color_matrix */ + +/* --------------------------- GL_SGI_color_table -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void* table); + +#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) +#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) +#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) +#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) +#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) +#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) +#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) + +#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) + +#endif /* GL_SGI_color_table */ + +/* ----------------------- GL_SGI_texture_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 + +#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) + +#endif /* GL_SGI_texture_color_table */ + +/* ------------------------- GL_SUNX_constant_data ------------------------- */ + +#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 (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); + +#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) + +#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) + +#endif /* GL_SUNX_constant_data */ + +/* -------------------- GL_SUN_convolution_border_modes -------------------- */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 + +#define GL_WRAP_BORDER_SUN 0x81D4 + +#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) + +#endif /* GL_SUN_convolution_border_modes */ + +/* -------------------------- GL_SUN_global_alpha -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); + +#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) +#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) +#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) +#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) +#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) +#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) +#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) +#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) + +#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) + +#endif /* GL_SUN_global_alpha */ + +/* --------------------------- GL_SUN_mesh_array --------------------------- */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 + +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 + +#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) + +#endif /* GL_SUN_mesh_array */ + +/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ + +#ifndef GL_SUN_read_video_pixels +#define GL_SUN_read_video_pixels 1 + +typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); + +#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) + +#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) + +#endif /* GL_SUN_read_video_pixels */ + +/* --------------------------- GL_SUN_slice_accum -------------------------- */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 + +#define GL_SLICE_ACCUM_SUN 0x85CC + +#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) + +#endif /* GL_SUN_slice_accum */ + +/* -------------------------- GL_SUN_triangle_list ------------------------- */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 + +#define GL_RESTART_SUN 0x01 +#define GL_REPLACE_MIDDLE_SUN 0x02 +#define GL_REPLACE_OLDEST_SUN 0x03 +#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 (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void* pointer); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); + +#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) +#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) +#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) +#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) +#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) +#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) +#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) + +#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) + +#endif /* GL_SUN_triangle_list */ + +/* ----------------------------- GL_SUN_vertex ----------------------------- */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 + +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); + +#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) +#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) +#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) +#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) +#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) +#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) +#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) +#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) +#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) +#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) +#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) +#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) +#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) +#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) +#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) +#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) +#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) +#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) +#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) +#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) +#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) +#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) +#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) +#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) +#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) +#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) +#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) +#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) +#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) + +#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) + +#endif /* GL_SUN_vertex */ + +/* -------------------------- GL_WIN_phong_shading ------------------------- */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 + +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB + +#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) + +#endif /* GL_WIN_phong_shading */ + +/* -------------------------- GL_WIN_specular_fog -------------------------- */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 + +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC + +#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) + +#endif /* GL_WIN_specular_fog */ + +/* ---------------------------- GL_WIN_swap_hint --------------------------- */ + +#ifndef GL_WIN_swap_hint +#define GL_WIN_swap_hint 1 + +typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); + +#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) + +#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) + +#endif /* GL_WIN_swap_hint */ + +/* ------------------------------------------------------------------------- */ + +#if defined(GLEW_MX) && defined(_WIN32) +#define GLEW_FUN_EXPORT +#else +#define GLEW_FUN_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) +#define GLEW_VAR_EXPORT +#else +#define GLEW_VAR_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) && defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; + +GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; +GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; +GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; +GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; +GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; +GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; +GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; +GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; +GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; +GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; +GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; +GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; + +GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; +GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; +GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; +GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; +GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; +GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; +GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; +GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; +GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; +GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; +GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; +GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; +GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; +GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; +GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; +GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; + +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; +GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; +GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; +GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; +GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; +GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; +GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; +GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; +GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; +GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; + +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; + +GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD; + +GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; +GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; +GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; + +GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; +GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; + +GLEW_FUN_EXPORT PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD; + +GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; +GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; +GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; +GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; +GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; + +GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; + +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; +GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; +GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; +GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; +GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; +GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; + +GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; + +GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; + +GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DEXTPROC __glewProgramUniform1dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVEXTPROC __glewProgramUniform1dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DEXTPROC __glewProgramUniform2dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVEXTPROC __glewProgramUniform2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DEXTPROC __glewProgramUniform3dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVEXTPROC __glewProgramUniform3dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DEXTPROC __glewProgramUniform4dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVEXTPROC __glewProgramUniform4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC __glewProgramUniformMatrix2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC __glewProgramUniformMatrix2x3dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC __glewProgramUniformMatrix2x4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC __glewProgramUniformMatrix3dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC __glewProgramUniformMatrix3x2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC __glewProgramUniformMatrix3x4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC __glewProgramUniformMatrix4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC __glewProgramUniformMatrix4x2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC __glewProgramUniformMatrix4x3dvEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; +GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; +GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; +GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; +GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; +GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; +GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; +GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; +GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; +GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; +GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ; + +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; +GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; + +GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; + +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; +GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; +GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; +GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; + +GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB; +GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; +GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; +GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; +GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; +GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; +GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; +GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; +GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; +GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; + +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; + +GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; +GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; +GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; +GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; + +GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; +GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; + +GLEW_FUN_EXPORT PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIERPROC __glewMemoryBarrier; + +GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; +GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; +GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; +GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; +GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; +GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; +GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; + +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; +GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; + +GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; +GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; +GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; +GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; + +GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; +GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; +GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; +GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; +GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; +GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; +GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; + +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; + +GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; + +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DPROC __glewTexStorage1D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DPROC __glewTexStorage2D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DPROC __glewTexStorage3D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; +GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; +GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; +GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; + +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced; + +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; +GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; +GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; +GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; +GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; + +GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; +GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; +GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; +GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; +GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; +GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; + +GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; +GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; + +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; + +GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; +GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; +GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; +GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; +GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; + +GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; +GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; +GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; + +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; + +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; +GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; +GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; +GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; + +GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; + +GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI; +GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI; + +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; + +GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; +GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; +GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; +GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; +GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; + +GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; + +GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; +GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; + +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; + +GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; + +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; +GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; + +GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; +GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; +GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; +GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; + +GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; +GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; + +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; + +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; +GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; +GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; +GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; + +GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; + +GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; + +GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; +GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; + +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; + +GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; +GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; + +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; + +GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; +GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; + +GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; + +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; + +GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; + +GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; +GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; + +GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; +GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; +GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; +GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; +GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; + +GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; + +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; + +GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; +GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; +GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; +GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; +GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; + +GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; +GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; +GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; +GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; +GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; +GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; +GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; +GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; +GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; +GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; +GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; +GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; + +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; + +GLEW_FUN_EXPORT PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT; + +GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; + +GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; + +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; + +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; + +GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; +GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; + +GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion; +GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion; +GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion; + +GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; + +GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; + +GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; +GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; +GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; +GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; +GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; +GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; +GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; +GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; +GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; +GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; + +GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; +GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; + +GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; +GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; + +GLEW_FUN_EXPORT PFNGLCOPYPATHNVPROC __glewCopyPathNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV; +GLEW_FUN_EXPORT PFNGLDELETEPATHSNVPROC __glewDeletePathsNV; +GLEW_FUN_EXPORT PFNGLGENPATHSNVPROC __glewGenPathsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV; +GLEW_FUN_EXPORT PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV; +GLEW_FUN_EXPORT PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV; +GLEW_FUN_EXPORT PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV; +GLEW_FUN_EXPORT PFNGLISPATHNVPROC __glewIsPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV; +GLEW_FUN_EXPORT PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV; +GLEW_FUN_EXPORT PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHCOORDSNVPROC __glewPathCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV; +GLEW_FUN_EXPORT PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLPATHFOGGENNVPROC __glewPathFogGenNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV; +GLEW_FUN_EXPORT PFNGLPATHSTRINGNVPROC __glewPathStringNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHTEXGENNVPROC __glewPathTexGenNV; +GLEW_FUN_EXPORT PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV; +GLEW_FUN_EXPORT PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV; + +GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; +GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; + +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; +GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; +GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; + +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; +GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; + +GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV; + +GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; +GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; + +GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; +GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; +GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; +GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; + +GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; +GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; +GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; +GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; +GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; +GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; + +GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; +GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; +GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; +GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; +GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; +GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; +GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; + +GLEW_FUN_EXPORT PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV; +GLEW_FUN_EXPORT PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; +GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; +GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; +GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; + +GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; + +GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; + +GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; +GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; + +GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; +GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; + +GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; + +GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; + +GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; + +GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; + +GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; + +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; + +GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; + +GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; + +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; + +GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; + +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; + +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; + +GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; + +#if defined(GLEW_MX) && !defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_2; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_blend_minmax_factor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sample_positions; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_base_instance; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compressed_texture_pixel_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_alignment; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_420pack; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_packing; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_decode; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_x11_sync_object; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; +GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; +GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_video_capture; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; + +#ifdef GLEW_MX +}; /* GLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +/* error codes */ +#define GLEW_OK 0 +#define GLEW_NO_ERROR 0 +#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ +#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */ +#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */ + +/* string codes */ +#define GLEW_VERSION 1 +#define GLEW_VERSION_MAJOR 2 +#define GLEW_VERSION_MINOR 3 +#define GLEW_VERSION_MICRO 4 + +/* API */ +#ifdef GLEW_MX + +typedef struct GLEWContextStruct GLEWContext; +GLEWAPI GLenum glewContextInit (GLEWContext* ctx); +GLEWAPI GLboolean glewContextIsSupported (const GLEWContext* ctx, const char* name); + +#define glewInit() glewContextInit(glewGetContext()) +#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) +#ifdef _WIN32 +# define GLEW_GET_FUN(x) glewGetContext()->x +#else +# define GLEW_GET_FUN(x) x +#endif + +#else /* GLEW_MX */ + +GLEWAPI GLenum glewInit (); +GLEWAPI GLboolean glewIsSupported (const char* name); +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLEW_GET_FUN(x) x + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean glewExperimental; +GLEWAPI GLboolean glewGetExtension (const char* name); +GLEWAPI const GLubyte* glewGetErrorString (GLenum error); +GLEWAPI const GLubyte* glewGetString (GLenum name); + +#ifdef __cplusplus +} +#endif + +#ifdef GLEW_APIENTRY_DEFINED +#undef GLEW_APIENTRY_DEFINED +#undef APIENTRY +#undef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifdef GLEW_CALLBACK_DEFINED +#undef GLEW_CALLBACK_DEFINED +#undef CALLBACK +#endif + +#ifdef GLEW_WINGDIAPI_DEFINED +#undef GLEW_WINGDIAPI_DEFINED +#undef WINGDIAPI +#endif + +#undef GLAPI +/* #undef GLEWAPI */ + +#endif /* __glew_h__ */ diff --git a/lib/linux/include/GL/glext.h b/lib/linux/include/GL/glext.h new file mode 100644 index 0000000..0940021 --- /dev/null +++ b/lib/linux/include/GL/glext.h @@ -0,0 +1,11488 @@ +#ifndef __glext_h_ +#define __glext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007-2011 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. +*/ + +/* Header file version number, required by OpenGL ABI for Linux */ +/* glext.h last updated $Date: 2011-08-08 00:34:29 -0700 (Mon, 08 Aug 2011) $ */ +/* Current version at http://www.opengl.org/registry/ */ +#define GL_GLEXT_VERSION 72 +/* Function declaration macros - to move into glplatform.h */ + +#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 + +/*************************************************************/ + +#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_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 +#endif + +#ifndef GL_VERSION_1_2_DEPRECATED +#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 +#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 +#endif + +#ifndef GL_ARB_imaging_DEPRECATED +#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_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 +#endif + +#ifndef GL_VERSION_1_3_DEPRECATED +#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 +#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_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 +#endif + +#ifndef GL_VERSION_1_4_DEPRECATED +#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 +#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_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 +#endif + +#ifndef GL_VERSION_1_5_DEPRECATED +#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_SRC1_ALPHA 0x8589 +#define GL_SRC2_ALPHA 0x858A +#endif + +#ifndef GL_VERSION_2_0 +#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 +#endif + +#ifndef GL_VERSION_2_0_DEPRECATED +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 +#endif + +#ifndef GL_VERSION_2_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 +#endif + +#ifndef GL_VERSION_2_1_DEPRECATED +#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 +#endif + +#ifndef GL_VERSION_3_0 +#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_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 +#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 +/* Reuse tokens from ARB_depth_buffer_float */ +/* reuse GL_DEPTH_COMPONENT32F */ +/* reuse GL_DEPTH32F_STENCIL8 */ +/* reuse GL_FLOAT_32_UNSIGNED_INT_24_8_REV */ +/* Reuse tokens from ARB_framebuffer_object */ +/* reuse GL_INVALID_FRAMEBUFFER_OPERATION */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ +/* reuse GL_FRAMEBUFFER_DEFAULT */ +/* reuse GL_FRAMEBUFFER_UNDEFINED */ +/* reuse GL_DEPTH_STENCIL_ATTACHMENT */ +/* reuse GL_INDEX */ +/* reuse GL_MAX_RENDERBUFFER_SIZE */ +/* reuse GL_DEPTH_STENCIL */ +/* reuse GL_UNSIGNED_INT_24_8 */ +/* reuse GL_DEPTH24_STENCIL8 */ +/* reuse GL_TEXTURE_STENCIL_SIZE */ +/* reuse GL_TEXTURE_RED_TYPE */ +/* reuse GL_TEXTURE_GREEN_TYPE */ +/* reuse GL_TEXTURE_BLUE_TYPE */ +/* reuse GL_TEXTURE_ALPHA_TYPE */ +/* reuse GL_TEXTURE_DEPTH_TYPE */ +/* reuse GL_UNSIGNED_NORMALIZED */ +/* reuse GL_FRAMEBUFFER_BINDING */ +/* reuse GL_DRAW_FRAMEBUFFER_BINDING */ +/* reuse GL_RENDERBUFFER_BINDING */ +/* reuse GL_READ_FRAMEBUFFER */ +/* reuse GL_DRAW_FRAMEBUFFER */ +/* reuse GL_READ_FRAMEBUFFER_BINDING */ +/* reuse GL_RENDERBUFFER_SAMPLES */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ +/* reuse GL_FRAMEBUFFER_COMPLETE */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ +/* reuse GL_FRAMEBUFFER_UNSUPPORTED */ +/* reuse GL_MAX_COLOR_ATTACHMENTS */ +/* reuse GL_COLOR_ATTACHMENT0 */ +/* reuse GL_COLOR_ATTACHMENT1 */ +/* reuse GL_COLOR_ATTACHMENT2 */ +/* reuse GL_COLOR_ATTACHMENT3 */ +/* reuse GL_COLOR_ATTACHMENT4 */ +/* reuse GL_COLOR_ATTACHMENT5 */ +/* reuse GL_COLOR_ATTACHMENT6 */ +/* reuse GL_COLOR_ATTACHMENT7 */ +/* reuse GL_COLOR_ATTACHMENT8 */ +/* reuse GL_COLOR_ATTACHMENT9 */ +/* reuse GL_COLOR_ATTACHMENT10 */ +/* reuse GL_COLOR_ATTACHMENT11 */ +/* reuse GL_COLOR_ATTACHMENT12 */ +/* reuse GL_COLOR_ATTACHMENT13 */ +/* reuse GL_COLOR_ATTACHMENT14 */ +/* reuse GL_COLOR_ATTACHMENT15 */ +/* reuse GL_DEPTH_ATTACHMENT */ +/* reuse GL_STENCIL_ATTACHMENT */ +/* reuse GL_FRAMEBUFFER */ +/* reuse GL_RENDERBUFFER */ +/* reuse GL_RENDERBUFFER_WIDTH */ +/* reuse GL_RENDERBUFFER_HEIGHT */ +/* reuse GL_RENDERBUFFER_INTERNAL_FORMAT */ +/* reuse GL_STENCIL_INDEX1 */ +/* reuse GL_STENCIL_INDEX4 */ +/* reuse GL_STENCIL_INDEX8 */ +/* reuse GL_STENCIL_INDEX16 */ +/* reuse GL_RENDERBUFFER_RED_SIZE */ +/* reuse GL_RENDERBUFFER_GREEN_SIZE */ +/* reuse GL_RENDERBUFFER_BLUE_SIZE */ +/* reuse GL_RENDERBUFFER_ALPHA_SIZE */ +/* reuse GL_RENDERBUFFER_DEPTH_SIZE */ +/* reuse GL_RENDERBUFFER_STENCIL_SIZE */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ +/* reuse GL_MAX_SAMPLES */ +/* Reuse tokens from ARB_framebuffer_sRGB */ +/* reuse GL_FRAMEBUFFER_SRGB */ +/* Reuse tokens from ARB_half_float_vertex */ +/* reuse GL_HALF_FLOAT */ +/* Reuse tokens from ARB_map_buffer_range */ +/* reuse GL_MAP_READ_BIT */ +/* reuse GL_MAP_WRITE_BIT */ +/* reuse GL_MAP_INVALIDATE_RANGE_BIT */ +/* reuse GL_MAP_INVALIDATE_BUFFER_BIT */ +/* reuse GL_MAP_FLUSH_EXPLICIT_BIT */ +/* reuse GL_MAP_UNSYNCHRONIZED_BIT */ +/* Reuse tokens from ARB_texture_compression_rgtc */ +/* reuse GL_COMPRESSED_RED_RGTC1 */ +/* reuse GL_COMPRESSED_SIGNED_RED_RGTC1 */ +/* reuse GL_COMPRESSED_RG_RGTC2 */ +/* reuse GL_COMPRESSED_SIGNED_RG_RGTC2 */ +/* Reuse tokens from ARB_texture_rg */ +/* reuse GL_RG */ +/* reuse GL_RG_INTEGER */ +/* reuse GL_R8 */ +/* reuse GL_R16 */ +/* reuse GL_RG8 */ +/* reuse GL_RG16 */ +/* reuse GL_R16F */ +/* reuse GL_R32F */ +/* reuse GL_RG16F */ +/* reuse GL_RG32F */ +/* reuse GL_R8I */ +/* reuse GL_R8UI */ +/* reuse GL_R16I */ +/* reuse GL_R16UI */ +/* reuse GL_R32I */ +/* reuse GL_R32UI */ +/* reuse GL_RG8I */ +/* reuse GL_RG8UI */ +/* reuse GL_RG16I */ +/* reuse GL_RG16UI */ +/* reuse GL_RG32I */ +/* reuse GL_RG32UI */ +/* Reuse tokens from ARB_vertex_array_object */ +/* reuse GL_VERTEX_ARRAY_BINDING */ +#endif + +#ifndef GL_VERSION_3_0_DEPRECATED +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 +/* Reuse tokens from ARB_framebuffer_object */ +/* reuse GL_TEXTURE_LUMINANCE_TYPE */ +/* reuse GL_TEXTURE_INTENSITY_TYPE */ +#endif + +#ifndef GL_VERSION_3_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_BUFFER_FORMAT 0x8C2E +#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_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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 +/* Reuse tokens from ARB_copy_buffer */ +/* reuse GL_COPY_READ_BUFFER */ +/* reuse GL_COPY_WRITE_BUFFER */ +/* Reuse tokens from ARB_draw_instanced (none) */ +/* Reuse tokens from ARB_uniform_buffer_object */ +/* reuse GL_UNIFORM_BUFFER */ +/* reuse GL_UNIFORM_BUFFER_BINDING */ +/* reuse GL_UNIFORM_BUFFER_START */ +/* reuse GL_UNIFORM_BUFFER_SIZE */ +/* reuse GL_MAX_VERTEX_UNIFORM_BLOCKS */ +/* reuse GL_MAX_FRAGMENT_UNIFORM_BLOCKS */ +/* reuse GL_MAX_COMBINED_UNIFORM_BLOCKS */ +/* reuse GL_MAX_UNIFORM_BUFFER_BINDINGS */ +/* reuse GL_MAX_UNIFORM_BLOCK_SIZE */ +/* reuse GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS */ +/* reuse GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS */ +/* reuse GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT */ +/* reuse GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH */ +/* reuse GL_ACTIVE_UNIFORM_BLOCKS */ +/* reuse GL_UNIFORM_TYPE */ +/* reuse GL_UNIFORM_SIZE */ +/* reuse GL_UNIFORM_NAME_LENGTH */ +/* reuse GL_UNIFORM_BLOCK_INDEX */ +/* reuse GL_UNIFORM_OFFSET */ +/* reuse GL_UNIFORM_ARRAY_STRIDE */ +/* reuse GL_UNIFORM_MATRIX_STRIDE */ +/* reuse GL_UNIFORM_IS_ROW_MAJOR */ +/* reuse GL_UNIFORM_BLOCK_BINDING */ +/* reuse GL_UNIFORM_BLOCK_DATA_SIZE */ +/* reuse GL_UNIFORM_BLOCK_NAME_LENGTH */ +/* reuse GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS */ +/* reuse GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES */ +/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER */ +/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER */ +/* reuse GL_INVALID_INDEX */ +#endif + +#ifndef GL_VERSION_3_2 +#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 +/* reuse GL_MAX_VARYING_COMPONENTS */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ +/* Reuse tokens from ARB_depth_clamp */ +/* reuse GL_DEPTH_CLAMP */ +/* Reuse tokens from ARB_draw_elements_base_vertex (none) */ +/* Reuse tokens from ARB_fragment_coord_conventions (none) */ +/* Reuse tokens from ARB_provoking_vertex */ +/* reuse GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ +/* reuse GL_FIRST_VERTEX_CONVENTION */ +/* reuse GL_LAST_VERTEX_CONVENTION */ +/* reuse GL_PROVOKING_VERTEX */ +/* Reuse tokens from ARB_seamless_cube_map */ +/* reuse GL_TEXTURE_CUBE_MAP_SEAMLESS */ +/* Reuse tokens from ARB_sync */ +/* reuse GL_MAX_SERVER_WAIT_TIMEOUT */ +/* reuse GL_OBJECT_TYPE */ +/* reuse GL_SYNC_CONDITION */ +/* reuse GL_SYNC_STATUS */ +/* reuse GL_SYNC_FLAGS */ +/* reuse GL_SYNC_FENCE */ +/* reuse GL_SYNC_GPU_COMMANDS_COMPLETE */ +/* reuse GL_UNSIGNALED */ +/* reuse GL_SIGNALED */ +/* reuse GL_ALREADY_SIGNALED */ +/* reuse GL_TIMEOUT_EXPIRED */ +/* reuse GL_CONDITION_SATISFIED */ +/* reuse GL_WAIT_FAILED */ +/* reuse GL_TIMEOUT_IGNORED */ +/* reuse GL_SYNC_FLUSH_COMMANDS_BIT */ +/* reuse GL_TIMEOUT_IGNORED */ +/* Reuse tokens from ARB_texture_multisample */ +/* reuse GL_SAMPLE_POSITION */ +/* reuse GL_SAMPLE_MASK */ +/* reuse GL_SAMPLE_MASK_VALUE */ +/* reuse GL_MAX_SAMPLE_MASK_WORDS */ +/* reuse GL_TEXTURE_2D_MULTISAMPLE */ +/* reuse GL_PROXY_TEXTURE_2D_MULTISAMPLE */ +/* reuse GL_TEXTURE_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_TEXTURE_BINDING_2D_MULTISAMPLE */ +/* reuse GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_TEXTURE_SAMPLES */ +/* reuse GL_TEXTURE_FIXED_SAMPLE_LOCATIONS */ +/* reuse GL_SAMPLER_2D_MULTISAMPLE */ +/* reuse GL_INT_SAMPLER_2D_MULTISAMPLE */ +/* reuse GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE */ +/* reuse GL_SAMPLER_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_MAX_COLOR_TEXTURE_SAMPLES */ +/* reuse GL_MAX_DEPTH_TEXTURE_SAMPLES */ +/* reuse GL_MAX_INTEGER_SAMPLES */ +/* Don't need to reuse tokens from ARB_vertex_array_bgra since they're already in 1.2 core */ +#endif + +#ifndef GL_VERSION_3_3 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +/* Reuse tokens from ARB_blend_func_extended */ +/* reuse GL_SRC1_COLOR */ +/* reuse GL_ONE_MINUS_SRC1_COLOR */ +/* reuse GL_ONE_MINUS_SRC1_ALPHA */ +/* reuse GL_MAX_DUAL_SOURCE_DRAW_BUFFERS */ +/* Reuse tokens from ARB_explicit_attrib_location (none) */ +/* Reuse tokens from ARB_occlusion_query2 */ +/* reuse GL_ANY_SAMPLES_PASSED */ +/* Reuse tokens from ARB_sampler_objects */ +/* reuse GL_SAMPLER_BINDING */ +/* Reuse tokens from ARB_shader_bit_encoding (none) */ +/* Reuse tokens from ARB_texture_rgb10_a2ui */ +/* reuse GL_RGB10_A2UI */ +/* Reuse tokens from ARB_texture_swizzle */ +/* reuse GL_TEXTURE_SWIZZLE_R */ +/* reuse GL_TEXTURE_SWIZZLE_G */ +/* reuse GL_TEXTURE_SWIZZLE_B */ +/* reuse GL_TEXTURE_SWIZZLE_A */ +/* reuse GL_TEXTURE_SWIZZLE_RGBA */ +/* Reuse tokens from ARB_timer_query */ +/* reuse GL_TIME_ELAPSED */ +/* reuse GL_TIMESTAMP */ +/* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */ +/* reuse GL_INT_2_10_10_10_REV */ +#endif + +#ifndef GL_VERSION_4_0 +#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 +/* Reuse tokens from ARB_texture_query_lod (none) */ +/* Reuse tokens from ARB_draw_buffers_blend (none) */ +/* Reuse tokens from ARB_draw_indirect */ +/* reuse GL_DRAW_INDIRECT_BUFFER */ +/* reuse GL_DRAW_INDIRECT_BUFFER_BINDING */ +/* Reuse tokens from ARB_gpu_shader5 */ +/* reuse GL_GEOMETRY_SHADER_INVOCATIONS */ +/* reuse GL_MAX_GEOMETRY_SHADER_INVOCATIONS */ +/* reuse GL_MIN_FRAGMENT_INTERPOLATION_OFFSET */ +/* reuse GL_MAX_FRAGMENT_INTERPOLATION_OFFSET */ +/* reuse GL_FRAGMENT_INTERPOLATION_OFFSET_BITS */ +/* reuse GL_MAX_VERTEX_STREAMS */ +/* Reuse tokens from ARB_gpu_shader_fp64 */ +/* reuse GL_DOUBLE_VEC2 */ +/* reuse GL_DOUBLE_VEC3 */ +/* reuse GL_DOUBLE_VEC4 */ +/* reuse GL_DOUBLE_MAT2 */ +/* reuse GL_DOUBLE_MAT3 */ +/* reuse GL_DOUBLE_MAT4 */ +/* reuse GL_DOUBLE_MAT2x3 */ +/* reuse GL_DOUBLE_MAT2x4 */ +/* reuse GL_DOUBLE_MAT3x2 */ +/* reuse GL_DOUBLE_MAT3x4 */ +/* reuse GL_DOUBLE_MAT4x2 */ +/* reuse GL_DOUBLE_MAT4x3 */ +/* Reuse tokens from ARB_shader_subroutine */ +/* reuse GL_ACTIVE_SUBROUTINES */ +/* reuse GL_ACTIVE_SUBROUTINE_UNIFORMS */ +/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS */ +/* reuse GL_ACTIVE_SUBROUTINE_MAX_LENGTH */ +/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH */ +/* reuse GL_MAX_SUBROUTINES */ +/* reuse GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS */ +/* reuse GL_NUM_COMPATIBLE_SUBROUTINES */ +/* reuse GL_COMPATIBLE_SUBROUTINES */ +/* Reuse tokens from ARB_tessellation_shader */ +/* reuse GL_PATCHES */ +/* reuse GL_PATCH_VERTICES */ +/* reuse GL_PATCH_DEFAULT_INNER_LEVEL */ +/* reuse GL_PATCH_DEFAULT_OUTER_LEVEL */ +/* reuse GL_TESS_CONTROL_OUTPUT_VERTICES */ +/* reuse GL_TESS_GEN_MODE */ +/* reuse GL_TESS_GEN_SPACING */ +/* reuse GL_TESS_GEN_VERTEX_ORDER */ +/* reuse GL_TESS_GEN_POINT_MODE */ +/* reuse GL_ISOLINES */ +/* reuse GL_FRACTIONAL_ODD */ +/* reuse GL_FRACTIONAL_EVEN */ +/* reuse GL_MAX_PATCH_VERTICES */ +/* reuse GL_MAX_TESS_GEN_LEVEL */ +/* reuse GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS */ +/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS */ +/* reuse GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS */ +/* reuse GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS */ +/* reuse GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS */ +/* reuse GL_MAX_TESS_PATCH_COMPONENTS */ +/* reuse GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS */ +/* reuse GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS */ +/* reuse GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS */ +/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS */ +/* reuse GL_MAX_TESS_CONTROL_INPUT_COMPONENTS */ +/* reuse GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS */ +/* reuse GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS */ +/* reuse GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS */ +/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER */ +/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER */ +/* reuse GL_TESS_EVALUATION_SHADER */ +/* reuse GL_TESS_CONTROL_SHADER */ +/* Reuse tokens from ARB_texture_buffer_object_rgb32 (none) */ +/* Reuse tokens from ARB_transform_feedback2 */ +/* reuse GL_TRANSFORM_FEEDBACK */ +/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ +/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ +/* reuse GL_TRANSFORM_FEEDBACK_BINDING */ +/* Reuse tokens from ARB_transform_feedback3 */ +/* reuse GL_MAX_TRANSFORM_FEEDBACK_BUFFERS */ +/* reuse GL_MAX_VERTEX_STREAMS */ +#endif + +#ifndef GL_VERSION_4_1 +/* Reuse tokens from ARB_ES2_compatibility */ +/* reuse GL_FIXED */ +/* reuse GL_IMPLEMENTATION_COLOR_READ_TYPE */ +/* reuse GL_IMPLEMENTATION_COLOR_READ_FORMAT */ +/* reuse GL_LOW_FLOAT */ +/* reuse GL_MEDIUM_FLOAT */ +/* reuse GL_HIGH_FLOAT */ +/* reuse GL_LOW_INT */ +/* reuse GL_MEDIUM_INT */ +/* reuse GL_HIGH_INT */ +/* reuse GL_SHADER_COMPILER */ +/* reuse GL_NUM_SHADER_BINARY_FORMATS */ +/* reuse GL_MAX_VERTEX_UNIFORM_VECTORS */ +/* reuse GL_MAX_VARYING_VECTORS */ +/* reuse GL_MAX_FRAGMENT_UNIFORM_VECTORS */ +/* Reuse tokens from ARB_get_program_binary */ +/* reuse GL_PROGRAM_BINARY_RETRIEVABLE_HINT */ +/* reuse GL_PROGRAM_BINARY_LENGTH */ +/* reuse GL_NUM_PROGRAM_BINARY_FORMATS */ +/* reuse GL_PROGRAM_BINARY_FORMATS */ +/* Reuse tokens from ARB_separate_shader_objects */ +/* reuse GL_VERTEX_SHADER_BIT */ +/* reuse GL_FRAGMENT_SHADER_BIT */ +/* reuse GL_GEOMETRY_SHADER_BIT */ +/* reuse GL_TESS_CONTROL_SHADER_BIT */ +/* reuse GL_TESS_EVALUATION_SHADER_BIT */ +/* reuse GL_ALL_SHADER_BITS */ +/* reuse GL_PROGRAM_SEPARABLE */ +/* reuse GL_ACTIVE_PROGRAM */ +/* reuse GL_PROGRAM_PIPELINE_BINDING */ +/* Reuse tokens from ARB_shader_precision (none) */ +/* Reuse tokens from ARB_vertex_attrib_64bit - all are in GL 3.0 and 4.0 already */ +/* Reuse tokens from ARB_viewport_array - some are in GL 1.1 and ARB_provoking_vertex already */ +/* reuse GL_MAX_VIEWPORTS */ +/* reuse GL_VIEWPORT_SUBPIXEL_BITS */ +/* reuse GL_VIEWPORT_BOUNDS_RANGE */ +/* reuse GL_LAYER_PROVOKING_VERTEX */ +/* reuse GL_VIEWPORT_INDEX_PROVOKING_VERTEX */ +/* reuse GL_UNDEFINED_VERTEX */ +#endif + +#ifndef GL_VERSION_4_2 +/* Reuse tokens from ARB_base_instance (none) */ +/* Reuse tokens from ARB_shading_language_420pack (none) */ +/* Reuse tokens from ARB_transform_feedback_instanced (none) */ +/* Reuse tokens from ARB_compressed_texture_pixel_storage */ +/* reuse GL_UNPACK_COMPRESSED_BLOCK_WIDTH */ +/* reuse GL_UNPACK_COMPRESSED_BLOCK_HEIGHT */ +/* reuse GL_UNPACK_COMPRESSED_BLOCK_DEPTH */ +/* reuse GL_UNPACK_COMPRESSED_BLOCK_SIZE */ +/* reuse GL_PACK_COMPRESSED_BLOCK_WIDTH */ +/* reuse GL_PACK_COMPRESSED_BLOCK_HEIGHT */ +/* reuse GL_PACK_COMPRESSED_BLOCK_DEPTH */ +/* reuse GL_PACK_COMPRESSED_BLOCK_SIZE */ +/* Reuse tokens from ARB_conservative_depth (none) */ +/* Reuse tokens from ARB_internalformat_query */ +/* reuse GL_NUM_SAMPLE_COUNTS */ +/* Reuse tokens from ARB_map_buffer_alignment */ +/* reuse GL_MIN_MAP_BUFFER_ALIGNMENT */ +/* Reuse tokens from ARB_shader_atomic_counters */ +/* reuse GL_ATOMIC_COUNTER_BUFFER */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_BINDING */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_START */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_SIZE */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER */ +/* reuse GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_VERTEX_ATOMIC_COUNTERS */ +/* reuse GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS */ +/* reuse GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS */ +/* reuse GL_MAX_GEOMETRY_ATOMIC_COUNTERS */ +/* reuse GL_MAX_FRAGMENT_ATOMIC_COUNTERS */ +/* reuse GL_MAX_COMBINED_ATOMIC_COUNTERS */ +/* reuse GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE */ +/* reuse GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS */ +/* reuse GL_ACTIVE_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX */ +/* reuse GL_UNSIGNED_INT_ATOMIC_COUNTER */ +/* Reuse tokens from ARB_shader_image_load_store */ +/* reuse GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT */ +/* reuse GL_ELEMENT_ARRAY_BARRIER_BIT */ +/* reuse GL_UNIFORM_BARRIER_BIT */ +/* reuse GL_TEXTURE_FETCH_BARRIER_BIT */ +/* reuse GL_SHADER_IMAGE_ACCESS_BARRIER_BIT */ +/* reuse GL_COMMAND_BARRIER_BIT */ +/* reuse GL_PIXEL_BUFFER_BARRIER_BIT */ +/* reuse GL_TEXTURE_UPDATE_BARRIER_BIT */ +/* reuse GL_BUFFER_UPDATE_BARRIER_BIT */ +/* reuse GL_FRAMEBUFFER_BARRIER_BIT */ +/* reuse GL_TRANSFORM_FEEDBACK_BARRIER_BIT */ +/* reuse GL_ATOMIC_COUNTER_BARRIER_BIT */ +/* reuse GL_ALL_BARRIER_BITS */ +/* reuse GL_MAX_IMAGE_UNITS */ +/* reuse GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS */ +/* reuse GL_IMAGE_BINDING_NAME */ +/* reuse GL_IMAGE_BINDING_LEVEL */ +/* reuse GL_IMAGE_BINDING_LAYERED */ +/* reuse GL_IMAGE_BINDING_LAYER */ +/* reuse GL_IMAGE_BINDING_ACCESS */ +/* reuse GL_IMAGE_1D */ +/* reuse GL_IMAGE_2D */ +/* reuse GL_IMAGE_3D */ +/* reuse GL_IMAGE_2D_RECT */ +/* reuse GL_IMAGE_CUBE */ +/* reuse GL_IMAGE_BUFFER */ +/* reuse GL_IMAGE_1D_ARRAY */ +/* reuse GL_IMAGE_2D_ARRAY */ +/* reuse GL_IMAGE_CUBE_MAP_ARRAY */ +/* reuse GL_IMAGE_2D_MULTISAMPLE */ +/* reuse GL_IMAGE_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_INT_IMAGE_1D */ +/* reuse GL_INT_IMAGE_2D */ +/* reuse GL_INT_IMAGE_3D */ +/* reuse GL_INT_IMAGE_2D_RECT */ +/* reuse GL_INT_IMAGE_CUBE */ +/* reuse GL_INT_IMAGE_BUFFER */ +/* reuse GL_INT_IMAGE_1D_ARRAY */ +/* reuse GL_INT_IMAGE_2D_ARRAY */ +/* reuse GL_INT_IMAGE_CUBE_MAP_ARRAY */ +/* reuse GL_INT_IMAGE_2D_MULTISAMPLE */ +/* reuse GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_UNSIGNED_INT_IMAGE_1D */ +/* reuse GL_UNSIGNED_INT_IMAGE_2D */ +/* reuse GL_UNSIGNED_INT_IMAGE_3D */ +/* reuse GL_UNSIGNED_INT_IMAGE_2D_RECT */ +/* reuse GL_UNSIGNED_INT_IMAGE_CUBE */ +/* reuse GL_UNSIGNED_INT_IMAGE_BUFFER */ +/* reuse GL_UNSIGNED_INT_IMAGE_1D_ARRAY */ +/* reuse GL_UNSIGNED_INT_IMAGE_2D_ARRAY */ +/* reuse GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY */ +/* reuse GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE */ +/* reuse GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_MAX_IMAGE_SAMPLES */ +/* reuse GL_IMAGE_BINDING_FORMAT */ +/* reuse GL_IMAGE_FORMAT_COMPATIBILITY_TYPE */ +/* reuse GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE */ +/* reuse GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS */ +/* reuse GL_MAX_VERTEX_IMAGE_UNIFORMS */ +/* reuse GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS */ +/* reuse GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS */ +/* reuse GL_MAX_GEOMETRY_IMAGE_UNIFORMS */ +/* reuse GL_MAX_FRAGMENT_IMAGE_UNIFORMS */ +/* reuse GL_MAX_COMBINED_IMAGE_UNIFORMS */ +/* Reuse tokens from ARB_shading_language_packing (none) */ +/* Reuse tokens from ARB_texture_storage */ +/* reuse GL_TEXTURE_IMMUTABLE_FORMAT */ +#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_ARB_depth_buffer_float +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#endif + +#ifndef GL_ARB_draw_instanced +#endif + +#ifndef GL_ARB_framebuffer_object +#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 GL_FRAMEBUFFER_BINDING +#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 +#endif + +#ifndef GL_ARB_framebuffer_object_DEPRECATED +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#endif + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#endif + +#ifndef GL_ARB_geometry_shader4 +#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 +/* reuse GL_MAX_VARYING_COMPONENTS */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ +#endif + +#ifndef GL_ARB_half_float_vertex +#define GL_HALF_FLOAT 0x140B +#endif + +#ifndef GL_ARB_instanced_arrays +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +#endif + +#ifndef GL_ARB_map_buffer_range +#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 +#endif + +#ifndef GL_ARB_texture_buffer_object +#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 +#endif + +#ifndef GL_ARB_texture_compression_rgtc +#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 +#endif + +#ifndef GL_ARB_texture_rg +#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 +#endif + +#ifndef GL_ARB_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#endif + +#ifndef GL_ARB_uniform_buffer_object +#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 +#endif + +#ifndef GL_ARB_compatibility +/* ARB_compatibility just defines tokens from core 3.0 */ +#endif + +#ifndef GL_ARB_copy_buffer +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#endif + +#ifndef GL_ARB_shader_texture_lod +#endif + +#ifndef GL_ARB_depth_clamp +#define GL_DEPTH_CLAMP 0x864F +#endif + +#ifndef GL_ARB_draw_elements_base_vertex +#endif + +#ifndef GL_ARB_fragment_coord_conventions +#endif + +#ifndef GL_ARB_provoking_vertex +#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 +#endif + +#ifndef GL_ARB_seamless_cube_map +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#endif + +#ifndef GL_ARB_sync +#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_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#endif + +#ifndef GL_ARB_texture_multisample +#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 +#endif + +#ifndef GL_ARB_vertex_array_bgra +/* reuse GL_BGRA */ +#endif + +#ifndef GL_ARB_draw_buffers_blend +#endif + +#ifndef GL_ARB_sample_shading +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +#endif + +#ifndef GL_ARB_texture_cube_map_array +#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 + +#ifndef GL_ARB_texture_gather +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#endif + +#ifndef GL_ARB_texture_query_lod +#endif + +#ifndef GL_ARB_shading_language_include +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +#endif + +#ifndef GL_ARB_texture_compression_bptc +#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 + +#ifndef GL_ARB_blend_func_extended +#define GL_SRC1_COLOR 0x88F9 +/* reuse GL_SRC1_ALPHA */ +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#endif + +#ifndef GL_ARB_explicit_attrib_location +#endif + +#ifndef GL_ARB_occlusion_query2 +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#endif + +#ifndef GL_ARB_sampler_objects +#define GL_SAMPLER_BINDING 0x8919 +#endif + +#ifndef GL_ARB_shader_bit_encoding +#endif + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_RGB10_A2UI 0x906F +#endif + +#ifndef GL_ARB_texture_swizzle +#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 +#endif + +#ifndef GL_ARB_timer_query +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#endif + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +/* reuse GL_UNSIGNED_INT_2_10_10_10_REV */ +#define GL_INT_2_10_10_10_REV 0x8D9F +#endif + +#ifndef GL_ARB_draw_indirect +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#endif + +#ifndef GL_ARB_gpu_shader5 +#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 +/* reuse GL_MAX_VERTEX_STREAMS */ +#endif + +#ifndef GL_ARB_gpu_shader_fp64 +/* reuse GL_DOUBLE */ +#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 +#endif + +#ifndef GL_ARB_shader_subroutine +#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 +/* reuse GL_UNIFORM_SIZE */ +/* reuse GL_UNIFORM_NAME_LENGTH */ +#endif + +#ifndef GL_ARB_tessellation_shader +#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 +/* reuse GL_TRIANGLES */ +/* reuse GL_QUADS */ +#define GL_ISOLINES 0x8E7A +/* reuse GL_EQUAL */ +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +/* reuse GL_CCW */ +/* reuse GL_CW */ +#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 +#endif + +#ifndef GL_ARB_texture_buffer_object_rgb32 +/* reuse GL_RGB32F */ +/* reuse GL_RGB32UI */ +/* reuse GL_RGB32I */ +#endif + +#ifndef GL_ARB_transform_feedback2 +#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 +#endif + +#ifndef GL_ARB_transform_feedback3 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#endif + +#ifndef GL_ARB_ES2_compatibility +#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_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 +#endif + +#ifndef GL_ARB_get_program_binary +#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 +#endif + +#ifndef GL_ARB_separate_shader_objects +#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 +#endif + +#ifndef GL_ARB_shader_precision +#endif + +#ifndef GL_ARB_vertex_attrib_64bit +/* reuse GL_RGB32I */ +/* reuse GL_DOUBLE_VEC2 */ +/* reuse GL_DOUBLE_VEC3 */ +/* reuse GL_DOUBLE_VEC4 */ +/* reuse GL_DOUBLE_MAT2 */ +/* reuse GL_DOUBLE_MAT3 */ +/* reuse GL_DOUBLE_MAT4 */ +/* reuse GL_DOUBLE_MAT2x3 */ +/* reuse GL_DOUBLE_MAT2x4 */ +/* reuse GL_DOUBLE_MAT3x2 */ +/* reuse GL_DOUBLE_MAT3x4 */ +/* reuse GL_DOUBLE_MAT4x2 */ +/* reuse GL_DOUBLE_MAT4x3 */ +#endif + +#ifndef GL_ARB_viewport_array +/* reuse GL_SCISSOR_BOX */ +/* reuse GL_VIEWPORT */ +/* reuse GL_DEPTH_RANGE */ +/* reuse GL_SCISSOR_TEST */ +#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 +/* reuse GL_FIRST_VERTEX_CONVENTION */ +/* reuse GL_LAST_VERTEX_CONVENTION */ +/* reuse GL_PROVOKING_VERTEX */ +#endif + +#ifndef GL_ARB_cl_event +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +#endif + +#ifndef GL_ARB_debug_output +#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 +#endif + +#ifndef GL_ARB_robustness +/* reuse GL_NO_ERROR */ +#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 +#endif + +#ifndef GL_ARB_shader_stencil_export +#endif + +#ifndef GL_ARB_base_instance +#endif + +#ifndef GL_ARB_shading_language_420pack +#endif + +#ifndef GL_ARB_transform_feedback_instanced +#endif + +#ifndef GL_ARB_compressed_texture_pixel_storage +#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 +#endif + +#ifndef GL_ARB_conservative_depth +#endif + +#ifndef GL_ARB_internalformat_query +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#endif + +#ifndef GL_ARB_map_buffer_alignment +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#endif + +#ifndef GL_ARB_shader_atomic_counters +#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 +#endif + +#ifndef GL_ARB_shader_image_load_store +#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 +#endif + +#ifndef GL_ARB_shading_language_packing +#endif + +#ifndef GL_ARB_texture_storage +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#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 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +#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_CLIENT_APPLE 0x85B4 +#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 0x8009 +#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 +#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 +#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 + +#ifndef GL_NV_conditional_render +#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 +#endif + +#ifndef GL_NV_present_video +#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 +#endif + +#ifndef GL_EXT_transform_feedback +#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 +#endif + +#ifndef GL_EXT_direct_state_access +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +#endif + +#ifndef GL_EXT_vertex_array_bgra +/* reuse GL_BGRA */ +#endif + +#ifndef GL_EXT_texture_swizzle +#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 + +#ifndef GL_NV_explicit_multisample +#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 +#endif + +#ifndef GL_NV_transform_feedback2 +#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 +#endif + +#ifndef GL_ATI_meminfo +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#endif + +#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 + +#ifndef GL_AMD_texture_texture4 +#endif + +#ifndef GL_AMD_vertex_shader_tesselator +#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 +#endif + +#ifndef GL_EXT_provoking_vertex +#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 +#endif + +#ifndef GL_EXT_texture_snorm +#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 +/* reuse GL_RED_SNORM */ +/* reuse GL_RG_SNORM */ +/* reuse GL_RGB_SNORM */ +/* reuse GL_RGBA_SNORM */ +/* reuse GL_R8_SNORM */ +/* reuse GL_RG8_SNORM */ +/* reuse GL_RGB8_SNORM */ +/* reuse GL_RGBA8_SNORM */ +/* reuse GL_R16_SNORM */ +/* reuse GL_RG16_SNORM */ +/* reuse GL_RGB16_SNORM */ +/* reuse GL_RGBA16_SNORM */ +/* reuse GL_SIGNED_NORMALIZED */ +#endif + +#ifndef GL_AMD_draw_buffers_blend +#endif + +#ifndef GL_APPLE_texture_range +#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 +/* reuse GL_STORAGE_CACHED_APPLE */ +/* reuse GL_STORAGE_SHARED_APPLE */ +#endif + +#ifndef GL_APPLE_float_pixels +#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 + +#ifndef GL_APPLE_vertex_program_evaluators +#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 +#endif + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#endif + +#ifndef GL_APPLE_object_purgeable +#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 +#endif + +#ifndef GL_APPLE_row_bytes +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#endif + +#ifndef GL_APPLE_rgb_422 +#define GL_RGB_422_APPLE 0x8A1F +/* reuse GL_UNSIGNED_SHORT_8_8_APPLE */ +/* reuse GL_UNSIGNED_SHORT_8_8_REV_APPLE */ +#endif + +#ifndef GL_NV_video_capture +#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 +#endif + +#ifndef GL_NV_copy_image +#endif + +#ifndef GL_EXT_separate_shader_objects +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +#endif + +#ifndef GL_NV_parameter_buffer_object2 +#endif + +#ifndef GL_NV_shader_buffer_load +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +#endif + +#ifndef GL_NV_vertex_buffer_unified_memory +#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 +#endif + +#ifndef GL_NV_texture_barrier +#endif + +#ifndef GL_AMD_shader_stencil_export +#endif + +#ifndef GL_AMD_seamless_cubemap_per_texture +/* reuse GL_TEXTURE_CUBE_MAP_SEAMLESS */ +#endif + +#ifndef GL_AMD_conservative_depth +#endif + +#ifndef GL_EXT_shader_image_load_store +#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 +#endif + +#ifndef GL_EXT_vertex_attrib_64bit +/* reuse GL_DOUBLE */ +#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 +#endif + +#ifndef GL_NV_gpu_program5 +#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 +#endif + +#ifndef GL_NV_gpu_shader5 +#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 +/* reuse GL_PATCHES */ +#endif + +#ifndef GL_NV_shader_buffer_store +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +/* reuse GL_READ_WRITE */ +/* reuse GL_WRITE_ONLY */ +#endif + +#ifndef GL_NV_tessellation_program5 +#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 + +#ifndef GL_NV_vertex_attrib_integer_64bit +/* reuse GL_INT64_NV */ +/* reuse GL_UNSIGNED_INT64_NV */ +#endif + +#ifndef GL_NV_multisample_coverage +#define GL_COVERAGE_SAMPLES_NV 0x80A9 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#endif + +#ifndef GL_AMD_name_gen_delete +#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 +#endif + +#ifndef GL_AMD_debug_output +#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 +#endif + +#ifndef GL_NV_vdpau_interop +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE +#endif + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#endif + +#ifndef GL_AMD_depth_clamp_separate +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#endif + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif + +#ifndef GL_NV_texture_multisample +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +#endif + +#ifndef GL_AMD_blend_minmax_factor +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif + +#ifndef GL_AMD_sample_positions +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#endif + +#ifndef GL_EXT_x11_sync_object +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +#endif + +#ifndef GL_AMD_multi_draw_indirect +#endif + +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#endif + + +/*************************************************************/ + +#include +#ifndef GL_VERSION_2_0 +/* GL type for program/shader text */ +typedef char GLchar; +#endif + +#ifndef GL_VERSION_1_5 +/* GL types for handling large vertex buffer objects */ +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +#endif + +#ifndef GL_ARB_vertex_buffer_object +/* GL types for handling large vertex buffer objects */ +typedef ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; +#endif + +#ifndef GL_ARB_shader_objects +/* GL types for program/shader text and shader object handles */ +typedef char GLcharARB; +typedef unsigned int GLhandleARB; +#endif + +/* GL type 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__) +#include +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +/* Fallback if nothing above works */ +#include +#endif +#endif + +#ifndef GL_EXT_timer_query +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif + +#ifndef GL_ARB_sync +typedef int64_t GLint64; +typedef uint64_t GLuint64; +typedef struct __GLsync *GLsync; +#endif + +#ifndef GL_ARB_cl_event +/* These incomplete types let us declare types compatible with OpenCL's cl_context and cl_event */ +struct _cl_context; +struct _cl_event; +#endif + +#ifndef GL_ARB_debug_output +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#endif + +#ifndef GL_AMD_debug_output +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#endif + +#ifndef GL_NV_vdpau_interop +typedef GLintptr GLvdpauSurfaceNV; +#endif + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GLAPI void APIENTRY glBlendEquation (GLenum mode); +GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *pixels); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#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 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_2_DEPRECATED +#define GL_VERSION_1_2_DEPRECATED 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *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, GLvoid *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 GLvoid *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 GLvoid *image); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *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, GLvoid *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, GLvoid *row, GLvoid *column, GLvoid *span); +GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *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, GLvoid *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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum texture); +GLAPI void APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *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 GLvoid *data); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_VERSION_1_3_DEPRECATED +#define GL_VERSION_1_3_DEPRECATED 1 +#ifdef GL_GLEXT_PROTOTYPES +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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#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 primcount); +GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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 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); +#endif + +#ifndef GL_VERSION_1_4_DEPRECATED +#define GL_VERSION_1_4_DEPRECATED 1 +#ifdef GL_GLEXT_PROTOTYPES +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 GLvoid *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 GLvoid *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); +#endif /* GL_GLEXT_PROTOTYPES */ +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 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 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 GLvoid *data, GLenum usage); +GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); +GLAPI GLvoid* 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, GLvoid* *params); +#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 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 *obj); +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, GLvoid* *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* *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 GLvoid *pointer); +#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 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 *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 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 /* 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_VERSION_3_0 +#define GL_VERSION_3_0 1 +/* OpenGL 3.0 also reuses entry points from these extensions: */ +/* ARB_framebuffer_object */ +/* ARB_map_buffer_range */ +/* ARB_vertex_array_object */ +#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* *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 GLvoid *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); +#endif /* GL_GLEXT_PROTOTYPES */ +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* *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 GLvoid *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); +#endif + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +/* OpenGL 3.1 also reuses entry points from these extensions: */ +/* ARB_copy_buffer */ +/* ARB_uniform_buffer_object */ +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +#endif + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +/* OpenGL 3.2 also reuses entry points from these extensions: */ +/* ARB_draw_elements_base_vertex */ +/* ARB_provoking_vertex */ +/* ARB_sync */ +/* ARB_texture_multisample */ +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +/* OpenGL 3.3 also reuses entry points from these extensions: */ +/* ARB_blend_func_extended */ +/* ARB_sampler_objects */ +/* ARB_explicit_attrib_location, but it has none */ +/* ARB_occlusion_query2 (no entry points) */ +/* ARB_shader_bit_encoding (no entry points) */ +/* ARB_texture_rgb10_a2ui (no entry points) */ +/* ARB_texture_swizzle (no entry points) */ +/* ARB_timer_query */ +/* ARB_vertex_type_2_10_10_10_rev */ +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +#endif + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +/* OpenGL 4.0 also reuses entry points from these extensions: */ +/* ARB_texture_query_lod (no entry points) */ +/* ARB_draw_indirect */ +/* ARB_gpu_shader5 (no entry points) */ +/* ARB_gpu_shader_fp64 */ +/* ARB_shader_subroutine */ +/* ARB_tessellation_shader */ +/* ARB_texture_buffer_object_rgb32 (no entry points) */ +/* ARB_texture_cube_map_array (no entry points) */ +/* ARB_texture_gather (no entry points) */ +/* ARB_transform_feedback2 */ +/* ARB_transform_feedback3 */ +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShading (GLclampf 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); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf 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); +#endif + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +/* OpenGL 4.1 reuses entry points from these extensions: */ +/* ARB_ES2_compatibility */ +/* ARB_get_program_binary */ +/* ARB_separate_shader_objects */ +/* ARB_shader_precision (no entry points) */ +/* ARB_vertex_attrib_64bit */ +/* ARB_viewport_array */ +#endif + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 +/* OpenGL 4.2 reuses entry points from these extensions: */ +/* ARB_base_instance */ +/* ARB_shading_language_420pack (no entry points) */ +/* ARB_transform_feedback_instanced */ +/* ARB_compressed_texture_pixel_storage (no entry points) */ +/* ARB_conservative_depth (no entry points) */ +/* ARB_internalformat_query */ +/* ARB_map_buffer_alignment (no entry points) */ +/* ARB_shader_atomic_counters */ +/* ARB_shader_image_load_store */ +/* ARB_shading_language_packing (no entry points) */ +/* ARB_texture_storage */ +#endif + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#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 /* 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 *m); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m); +#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 value, GLboolean invert); +#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 target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *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 GLvoid *data); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img); +#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 pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params); +#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 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 GLvoid *pointer); +GLAPI void APIENTRY glVertexBlendARB (GLint count); +#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 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 GLvoid *pointer); +#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 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 /* 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 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 GLvoid *pointer); +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *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, GLvoid *string); +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, GLvoid* *pointer); +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program); +#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 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 GLvoid *data, GLenum usage); +GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); +GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); +GLAPI GLvoid* 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, GLvoid* *params); +#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 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 /* 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 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 /* 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 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 /* 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 n, const GLenum *bufs); +#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 target, GLenum clamp); +#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_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +#endif + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 +#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 GLvoid *indices, GLsizei primcount); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +#endif + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +#endif + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +#endif + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#endif + +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#endif + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +#endif + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +#endif + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* *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 /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *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); +#endif + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +#endif + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +#endif + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#endif + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex); +#endif + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#endif + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProvokingVertex (GLenum mode); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); +#endif + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#endif + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#ifdef GL_GLEXT_PROTOTYPES +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 *params); +GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif /* GL_GLEXT_PROTOTYPES */ +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 *params); +typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +#endif + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#endif + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShadingARB (GLclampf value); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); +#endif + +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +#endif + +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +#endif + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +#endif + +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +#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* *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 /* GL_GLEXT_PROTOTYPES */ +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* *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); +#endif + +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +#endif + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +#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); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); +#endif + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +#endif + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +#endif + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +#endif + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +#endif + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +#endif + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +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); +#endif + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const GLvoid *indirect); +GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect); +#endif + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +#endif + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value); +GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); +#endif + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +#endif + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +#ifdef GL_GLEXT_PROTOTYPES +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); +#endif /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +#ifdef GL_GLEXT_PROTOTYPES +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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReleaseShaderCompiler (void); +GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); +GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI void APIENTRY glDepthRangef (GLclampf n, GLclampf f); +GLAPI void APIENTRY glClearDepthf (GLclampf d); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLclampf d); +#endif + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); +GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); +#endif + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +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* *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); +#endif /* GL_GLEXT_PROTOTYPES */ +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* *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); +#endif + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +#ifdef GL_GLEXT_PROTOTYPES +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 GLvoid *pointer); +GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params); +#endif /* GL_GLEXT_PROTOTYPES */ +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 GLvoid *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); +#endif + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 +#ifdef GL_GLEXT_PROTOTYPES +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 GLclampd *v); +GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLclampd n, GLclampd f); +GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data); +#endif /* GL_GLEXT_PROTOTYPES */ +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 GLclampd *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); +#endif + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); +#endif + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 +#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 GLvoid *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#endif /* GL_GLEXT_PROTOTYPES */ +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 GLvoid *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#endif + +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); +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, GLvoid *table); +GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); +GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); +GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); +GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); +GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, GLvoid *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); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +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, GLvoid *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); +typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *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); +#endif + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +#endif + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); +#endif + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +#endif + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei primcount); +GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); +#endif + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +#endif + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +#endif + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +#endif + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +#endif + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +#endif + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); +#endif + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +#endif + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +#ifdef GL_GLEXT_PROTOTYPES +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 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); +#endif /* GL_GLEXT_PROTOTYPES */ +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 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); +#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 red, GLclampf green, GLclampf blue, GLclampf alpha); +#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 factor, GLfloat bias); +#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 target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *pixels); +#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 target, GLenum filter, GLfloat *weights); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#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 target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +#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 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 /* 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 target, GLboolean reset, GLenum format, GLenum type, GLvoid *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, GLvoid *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 /* 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 target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *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, GLvoid *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, GLvoid *row, GLvoid *column, GLvoid *span); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +#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 target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *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, GLvoid *table); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params); +#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 mode); +#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 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 /* 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 target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *pixels); +#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 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 /* 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 target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points); +#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 target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points); +#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 value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern); +#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 i); +GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *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, GLvoid* *params); +GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +#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 mode); +#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 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 /* 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 pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params); +#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 pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params); +#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 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 /* 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 factor); +#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 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 /* 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 *equation); +#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 n, const GLfloat *points); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points); +#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 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 /* 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 target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#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 target, GLint mode); +#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 target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *data); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +#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 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 /* 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 face, GLenum mode); +#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 func, GLclampf ref); +#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 first, GLsizei count); +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 pname, GLdouble *params); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params); +#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 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 /* 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 mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +#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 mode); +GLAPI void APIENTRY glTextureLightEXT (GLenum pname); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode); +#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 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 /* 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 size, GLenum type, const GLvoid* *pointer); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const GLvoid* *pointer); +GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer); +#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 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); +#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 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 GLvoid *pointer); +#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 mode); +#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 mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif /* GL_GLEXT_PROTOTYPES */ +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 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 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 GLvoid *pointer); +#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 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 GLvoid *pointer); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer); +#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 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 /* 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 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 GLvoid* *pointer); +#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 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 /* 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 sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#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 sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#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 weight); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +#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 length, const GLvoid *pointer); +#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 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 /* 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 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 /* 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 *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); +#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 size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean* *pointer, GLint ptrstride); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +#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 mask); +#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 value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern); +#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 red, GLboolean green, GLboolean blue, GLboolean alpha); +#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 pname, const GLvoid *params); +#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 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 /* 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 target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *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, GLvoid *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 /* 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 stage, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params); +#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 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, GLvoid* *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 GLvoid *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 /* 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, 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 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 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 /* 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 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 /* 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 pname, GLint param); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param); +#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 size, const GLvoid *pointer, GLenum usage); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *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 /* 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 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 GLvoid *addr); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const GLvoid *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 GLvoid *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, GLvoid* *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 /* 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 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 /* 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 type, const GLvoid *pointer); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count); +#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 mode, GLint first, GLsizei count, GLsizei width); +#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 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 /* 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 pname, GLint param); +GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params); +#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 face); +#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 type, const GLvoid *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 /* 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 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 /* 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 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 /* 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 length, GLvoid *pointer); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param); +#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 n, const GLenum *bufs); +#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 id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +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 /* 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 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 /* 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 target, GLsizei length, GLvoid *pointer); +GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target); +#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 index); +#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 buffer); +GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer); +#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 face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#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 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 /* 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 zmin, GLclampd zmax); +#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 modeRGB, GLenum modeAlpha); +#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 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 /* 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 len, const GLvoid *string); +#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 stencilTagBits, GLuint stencilClearTag); +#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 srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#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 target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#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 id, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64EXT *params); +#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 target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#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 target, GLenum pname, GLint param); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size); +#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 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 /* 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 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 /* 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 program, GLenum pname, GLint value); +#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 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 GLvoid *pointer); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); +#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 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 /* 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 mode, GLint start, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#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 target, GLenum internalformat, GLuint buffer); +#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 zNear, GLdouble zFar); +GLAPI void APIENTRY glClearDepthdNV (GLdouble depth); +GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax); +#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 target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#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 target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +#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 index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *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); +#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 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 /* 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); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#endif + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#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 /* 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 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 /* 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 + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRenderNV (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#endif + +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +#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* *varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#endif /* GL_GLEXT_PROTOTYPES */ +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* *varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#endif + +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask); +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 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 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, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *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, GLvoid *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, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *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 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 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 glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *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, GLvoid *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, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *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 glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture); +GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *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 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, GLvoid* *data); +GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *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 GLvoid *bits); +GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, GLvoid *img); +GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *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 GLvoid *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); +GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, GLvoid *img); +GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *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, GLvoid *string); +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 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 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 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 glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); +GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); +GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access); +GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer); +GLAPI GLvoid* APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, GLvoid* *params); +GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); +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 glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params); +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 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 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 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); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +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 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 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, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *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, GLvoid *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, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *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 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 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 PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *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, GLvoid *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, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *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 GLvoid *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 PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *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 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, GLvoid* *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *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 GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, GLvoid *img); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *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 GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, GLvoid *img); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *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, GLvoid *string); +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 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 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 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 PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); +typedef GLvoid* (APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef GLvoid* (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, GLvoid* *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); +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 PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params); +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 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 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 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); +#endif + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +#endif + +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +#endif + +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +#endif + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#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, GLvoid *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 /* GL_GLEXT_PROTOTYPES */ +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, GLvoid *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); +#endif + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +#endif + +#ifndef GL_AMD_vertex_shader_tesselator +#define GL_AMD_vertex_shader_tesselator 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor); +GLAPI void APIENTRY glTessellationModeAMD (GLenum mode); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +#endif + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const GLvoid *pointer); +GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, GLvoid* *params); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid* *params); +#endif + +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#endif + +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +#endif + +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +#endif + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#endif + +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#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 /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); +typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string); +#endif + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +#endif + +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +#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 glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params); +GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value); +GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif /* GL_GLEXT_PROTOTYPES */ +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 PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif + +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureBarrierNV (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void); +#endif + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +#endif + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +#endif + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +#endif + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +#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 /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); +#endif + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +#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 GLvoid *pointer); +GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +#endif /* GL_GLEXT_PROTOTYPES */ +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 GLvoid *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +#endif + +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +#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 /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param); +#endif + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +#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 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 /* GL_GLEXT_PROTOTYPES */ +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 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); +#endif + +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +#endif + +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +#endif + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +#endif + +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 +#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, GLvoid *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#endif /* GL_GLEXT_PROTOTYPES */ +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, GLvoid *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#endif + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVDPAUInitNV (const GLvoid *vdpDevice, const GLvoid *getProcAddress); +GLAPI void APIENTRY glVDPAUFiniNV (void); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI void 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 /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const GLvoid *vdpDevice, const GLvoid *getProcAddress); +typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef void (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); +#endif + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +#endif + +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +#endif + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#endif + +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +#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 /* GL_GLEXT_PROTOTYPES */ +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); +#endif + +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +#endif + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val); +#endif + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#endif + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride); +#endif + +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/linux/include/GL/glu.h b/lib/linux/include/GL/glu.h new file mode 100644 index 0000000..ba2228d --- /dev/null +++ b/lib/linux/include/GL/glu.h @@ -0,0 +1,353 @@ +/* + * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) + * Copyright (C) 1991-2000 Silicon Graphics, 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 including the dates of first publication and + * either this permission notice or a reference to + * http://oss.sgi.com/projects/FreeB/ + * 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 + * SILICON GRAPHICS, INC. 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. + * + * Except as contained in this notice, the name of Silicon Graphics, Inc. + * shall not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization from + * Silicon Graphics, Inc. + */ + +#ifndef __glu_h__ +#define __glu_h__ + +#if defined(USE_MGL_NAMESPACE) +#include "glu_mangle.h" +#endif + +#include + +#ifndef GLAPIENTRY +#if defined(_MSC_VER) || defined(__MINGW32__) +#define GLAPIENTRY __stdcall +#else +#define GLAPIENTRY +#endif +#endif + +#ifndef GLAPIENTRYP +#define GLAPIENTRYP GLAPIENTRY * +#endif + +#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32) +# undef GLAPI +# define GLAPI __declspec(dllexport) +#elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) +/* tag specifying we're building for DLL runtime support */ +# undef GLAPI +# define GLAPI __declspec(dllimport) +#elif !defined(GLAPI) +/* for use with static link lib build of Win32 edition only */ +# define GLAPI extern +#endif /* _STATIC_MESA support */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*************************************************************/ + +/* Extensions */ +#define GLU_EXT_object_space_tess 1 +#define GLU_EXT_nurbs_tessellator 1 + +/* Boolean */ +#define GLU_FALSE 0 +#define GLU_TRUE 1 + +/* Version */ +#define GLU_VERSION_1_1 1 +#define GLU_VERSION_1_2 1 +#define GLU_VERSION_1_3 1 + +/* StringName */ +#define GLU_VERSION 100800 +#define GLU_EXTENSIONS 100801 + +/* ErrorCode */ +#define GLU_INVALID_ENUM 100900 +#define GLU_INVALID_VALUE 100901 +#define GLU_OUT_OF_MEMORY 100902 +#define GLU_INCOMPATIBLE_GL_VERSION 100903 +#define GLU_INVALID_OPERATION 100904 + +/* NurbsDisplay */ +/* GLU_FILL */ +#define GLU_OUTLINE_POLYGON 100240 +#define GLU_OUTLINE_PATCH 100241 + +/* NurbsCallback */ +#define GLU_NURBS_ERROR 100103 +#define GLU_ERROR 100103 +#define GLU_NURBS_BEGIN 100164 +#define GLU_NURBS_BEGIN_EXT 100164 +#define GLU_NURBS_VERTEX 100165 +#define GLU_NURBS_VERTEX_EXT 100165 +#define GLU_NURBS_NORMAL 100166 +#define GLU_NURBS_NORMAL_EXT 100166 +#define GLU_NURBS_COLOR 100167 +#define GLU_NURBS_COLOR_EXT 100167 +#define GLU_NURBS_TEXTURE_COORD 100168 +#define GLU_NURBS_TEX_COORD_EXT 100168 +#define GLU_NURBS_END 100169 +#define GLU_NURBS_END_EXT 100169 +#define GLU_NURBS_BEGIN_DATA 100170 +#define GLU_NURBS_BEGIN_DATA_EXT 100170 +#define GLU_NURBS_VERTEX_DATA 100171 +#define GLU_NURBS_VERTEX_DATA_EXT 100171 +#define GLU_NURBS_NORMAL_DATA 100172 +#define GLU_NURBS_NORMAL_DATA_EXT 100172 +#define GLU_NURBS_COLOR_DATA 100173 +#define GLU_NURBS_COLOR_DATA_EXT 100173 +#define GLU_NURBS_TEXTURE_COORD_DATA 100174 +#define GLU_NURBS_TEX_COORD_DATA_EXT 100174 +#define GLU_NURBS_END_DATA 100175 +#define GLU_NURBS_END_DATA_EXT 100175 + +/* NurbsError */ +#define GLU_NURBS_ERROR1 100251 +#define GLU_NURBS_ERROR2 100252 +#define GLU_NURBS_ERROR3 100253 +#define GLU_NURBS_ERROR4 100254 +#define GLU_NURBS_ERROR5 100255 +#define GLU_NURBS_ERROR6 100256 +#define GLU_NURBS_ERROR7 100257 +#define GLU_NURBS_ERROR8 100258 +#define GLU_NURBS_ERROR9 100259 +#define GLU_NURBS_ERROR10 100260 +#define GLU_NURBS_ERROR11 100261 +#define GLU_NURBS_ERROR12 100262 +#define GLU_NURBS_ERROR13 100263 +#define GLU_NURBS_ERROR14 100264 +#define GLU_NURBS_ERROR15 100265 +#define GLU_NURBS_ERROR16 100266 +#define GLU_NURBS_ERROR17 100267 +#define GLU_NURBS_ERROR18 100268 +#define GLU_NURBS_ERROR19 100269 +#define GLU_NURBS_ERROR20 100270 +#define GLU_NURBS_ERROR21 100271 +#define GLU_NURBS_ERROR22 100272 +#define GLU_NURBS_ERROR23 100273 +#define GLU_NURBS_ERROR24 100274 +#define GLU_NURBS_ERROR25 100275 +#define GLU_NURBS_ERROR26 100276 +#define GLU_NURBS_ERROR27 100277 +#define GLU_NURBS_ERROR28 100278 +#define GLU_NURBS_ERROR29 100279 +#define GLU_NURBS_ERROR30 100280 +#define GLU_NURBS_ERROR31 100281 +#define GLU_NURBS_ERROR32 100282 +#define GLU_NURBS_ERROR33 100283 +#define GLU_NURBS_ERROR34 100284 +#define GLU_NURBS_ERROR35 100285 +#define GLU_NURBS_ERROR36 100286 +#define GLU_NURBS_ERROR37 100287 + +/* NurbsProperty */ +#define GLU_AUTO_LOAD_MATRIX 100200 +#define GLU_CULLING 100201 +#define GLU_SAMPLING_TOLERANCE 100203 +#define GLU_DISPLAY_MODE 100204 +#define GLU_PARAMETRIC_TOLERANCE 100202 +#define GLU_SAMPLING_METHOD 100205 +#define GLU_U_STEP 100206 +#define GLU_V_STEP 100207 +#define GLU_NURBS_MODE 100160 +#define GLU_NURBS_MODE_EXT 100160 +#define GLU_NURBS_TESSELLATOR 100161 +#define GLU_NURBS_TESSELLATOR_EXT 100161 +#define GLU_NURBS_RENDERER 100162 +#define GLU_NURBS_RENDERER_EXT 100162 + +/* NurbsSampling */ +#define GLU_OBJECT_PARAMETRIC_ERROR 100208 +#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208 +#define GLU_OBJECT_PATH_LENGTH 100209 +#define GLU_OBJECT_PATH_LENGTH_EXT 100209 +#define GLU_PATH_LENGTH 100215 +#define GLU_PARAMETRIC_ERROR 100216 +#define GLU_DOMAIN_DISTANCE 100217 + +/* NurbsTrim */ +#define GLU_MAP1_TRIM_2 100210 +#define GLU_MAP1_TRIM_3 100211 + +/* QuadricDrawStyle */ +#define GLU_POINT 100010 +#define GLU_LINE 100011 +#define GLU_FILL 100012 +#define GLU_SILHOUETTE 100013 + +/* QuadricCallback */ +/* GLU_ERROR */ + +/* QuadricNormal */ +#define GLU_SMOOTH 100000 +#define GLU_FLAT 100001 +#define GLU_NONE 100002 + +/* QuadricOrientation */ +#define GLU_OUTSIDE 100020 +#define GLU_INSIDE 100021 + +/* TessCallback */ +#define GLU_TESS_BEGIN 100100 +#define GLU_BEGIN 100100 +#define GLU_TESS_VERTEX 100101 +#define GLU_VERTEX 100101 +#define GLU_TESS_END 100102 +#define GLU_END 100102 +#define GLU_TESS_ERROR 100103 +#define GLU_TESS_EDGE_FLAG 100104 +#define GLU_EDGE_FLAG 100104 +#define GLU_TESS_COMBINE 100105 +#define GLU_TESS_BEGIN_DATA 100106 +#define GLU_TESS_VERTEX_DATA 100107 +#define GLU_TESS_END_DATA 100108 +#define GLU_TESS_ERROR_DATA 100109 +#define GLU_TESS_EDGE_FLAG_DATA 100110 +#define GLU_TESS_COMBINE_DATA 100111 + +/* TessContour */ +#define GLU_CW 100120 +#define GLU_CCW 100121 +#define GLU_INTERIOR 100122 +#define GLU_EXTERIOR 100123 +#define GLU_UNKNOWN 100124 + +/* TessProperty */ +#define GLU_TESS_WINDING_RULE 100140 +#define GLU_TESS_BOUNDARY_ONLY 100141 +#define GLU_TESS_TOLERANCE 100142 + +/* TessError */ +#define GLU_TESS_ERROR1 100151 +#define GLU_TESS_ERROR2 100152 +#define GLU_TESS_ERROR3 100153 +#define GLU_TESS_ERROR4 100154 +#define GLU_TESS_ERROR5 100155 +#define GLU_TESS_ERROR6 100156 +#define GLU_TESS_ERROR7 100157 +#define GLU_TESS_ERROR8 100158 +#define GLU_TESS_MISSING_BEGIN_POLYGON 100151 +#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152 +#define GLU_TESS_MISSING_END_POLYGON 100153 +#define GLU_TESS_MISSING_END_CONTOUR 100154 +#define GLU_TESS_COORD_TOO_LARGE 100155 +#define GLU_TESS_NEED_COMBINE_CALLBACK 100156 + +/* TessWinding */ +#define GLU_TESS_WINDING_ODD 100130 +#define GLU_TESS_WINDING_NONZERO 100131 +#define GLU_TESS_WINDING_POSITIVE 100132 +#define GLU_TESS_WINDING_NEGATIVE 100133 +#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134 + +/*************************************************************/ + + +#ifdef __cplusplus +class GLUnurbs; +class GLUquadric; +class GLUtesselator; +#else +typedef struct GLUnurbs GLUnurbs; +typedef struct GLUquadric GLUquadric; +typedef struct GLUtesselator GLUtesselator; +#endif + +typedef GLUnurbs GLUnurbsObj; +typedef GLUquadric GLUquadricObj; +typedef GLUtesselator GLUtesselatorObj; +typedef GLUtesselator GLUtriangulatorObj; + +#define GLU_TESS_MAX_COORD 1.0e150 + +/* Internal convenience typedefs */ +typedef void (GLAPIENTRYP _GLUfuncptr)(void); + +GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb); +GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess); +GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb); +GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb); +GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); +GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); +GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); +GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data); +GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); +GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString); +GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks); +GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb); +GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad); +GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess); +GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops); +GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb); +GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess); +GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb); +GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb); +GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error); +GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data); +GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name); +GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data); +GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view); +GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); +GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void); +GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void); +GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void); +GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type); +GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc); +GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData); +GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData); +GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type); +GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value); +GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type); +GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); +GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep); +GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); +GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport); +GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); +GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type); +GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc); +GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw); +GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal); +GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation); +GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture); +GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut); +GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks); +GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess); +GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data); +GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc); +GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess); +GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess); +GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); +GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data); +GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data); +GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); +GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); + +#ifdef __cplusplus +} +#endif + +#endif /* __glu_h__ */ diff --git a/lib/linux/include/GL/glu_mangle.h b/lib/linux/include/GL/glu_mangle.h new file mode 100644 index 0000000..9c25aa8 --- /dev/null +++ b/lib/linux/include/GL/glu_mangle.h @@ -0,0 +1,86 @@ +/* + * Mesa 3-D graphics library + * Version: 3.0 + * Copyright (C) 1995-1998 Brian Paul + * + * 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 + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#ifndef GLU_MANGLE_H +#define GLU_MANGLE_H + + +#define gluLookAt mgluLookAt +#define gluOrtho2D mgluOrtho2D +#define gluPerspective mgluPerspective +#define gluPickMatrix mgluPickMatrix +#define gluProject mgluProject +#define gluUnProject mgluUnProject +#define gluErrorString mgluErrorString +#define gluScaleImage mgluScaleImage +#define gluBuild1DMipmaps mgluBuild1DMipmaps +#define gluBuild2DMipmaps mgluBuild2DMipmaps +#define gluNewQuadric mgluNewQuadric +#define gluDeleteQuadric mgluDeleteQuadric +#define gluQuadricDrawStyle mgluQuadricDrawStyle +#define gluQuadricOrientation mgluQuadricOrientation +#define gluQuadricNormals mgluQuadricNormals +#define gluQuadricTexture mgluQuadricTexture +#define gluQuadricCallback mgluQuadricCallback +#define gluCylinder mgluCylinder +#define gluSphere mgluSphere +#define gluDisk mgluDisk +#define gluPartialDisk mgluPartialDisk +#define gluNewNurbsRenderer mgluNewNurbsRenderer +#define gluDeleteNurbsRenderer mgluDeleteNurbsRenderer +#define gluLoadSamplingMatrices mgluLoadSamplingMatrices +#define gluNurbsProperty mgluNurbsProperty +#define gluGetNurbsProperty mgluGetNurbsProperty +#define gluBeginCurve mgluBeginCurve +#define gluEndCurve mgluEndCurve +#define gluNurbsCurve mgluNurbsCurve +#define gluBeginSurface mgluBeginSurface +#define gluEndSurface mgluEndSurface +#define gluNurbsSurface mgluNurbsSurface +#define gluBeginTrim mgluBeginTrim +#define gluEndTrim mgluEndTrim +#define gluPwlCurve mgluPwlCurve +#define gluNurbsCallback mgluNurbsCallback +#define gluNewTess mgluNewTess +#define gluDeleteTess mgluDeleteTess +#define gluTessBeginPolygon mgluTessBeginPolygon +#define gluTessBeginContour mgluTessBeginContour +#define gluTessVertex mgluTessVertex +#define gluTessEndPolygon mgluTessEndPolygon +#define gluTessEndContour mgluTessEndContour +#define gluTessProperty mgluTessProperty +#define gluTessNormal mgluTessNormal +#define gluTessCallback mgluTessCallback +#define gluGetTessProperty mgluGetTessProperty +#define gluBeginPolygon mgluBeginPolygon +#define gluNextContour mgluNextContour +#define gluEndPolygon mgluEndPolygon +#define gluGetString mgluGetString +#define gluBuild1DMipmapLevels mgluBuild1DMipmapLevels +#define gluBuild2DMipmapLevels mgluBuild2DMipmapLevels +#define gluBuild3DMipmapLevels mgluBuild3DMipmapLevels +#define gluBuild3DMipmaps mgluBuild3DMipmaps +#define gluCheckExtension mgluCheckExtension +#define gluUnProject4 mgluUnProject4 +#define gluNurbsCallbackData mgluNurbsCallbackData +#define gluNurbsCallbackDataEXT mgluNurbsCallbackDataEXT + +#endif diff --git a/lib/linux/include/GL/glx.h b/lib/linux/include/GL/glx.h new file mode 100644 index 0000000..a3a7d97 --- /dev/null +++ b/lib/linux/include/GL/glx.h @@ -0,0 +1,526 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5 + * + * Copyright (C) 1999-2006 Brian Paul 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 + * BRIAN PAUL 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 GLX_H +#define GLX_H + + +#ifdef __VMS +#include +# ifdef __cplusplus +/* VMS Xlib.h gives problems with C++. + * this avoids a bunch of trivial warnings */ +#pragma message disable nosimpint +#endif +#endif +#include +#include +#ifdef __VMS +# ifdef __cplusplus +#pragma message enable nosimpint +#endif +#endif +#include + + +#if defined(USE_MGL_NAMESPACE) +#include "glx_mangle.h" +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + + +#define GLX_VERSION_1_1 1 +#define GLX_VERSION_1_2 1 +#define GLX_VERSION_1_3 1 +#define GLX_VERSION_1_4 1 + +#define GLX_EXTENSION_NAME "GLX" + + + +/* + * Tokens for glXChooseVisual and glXGetConfig: + */ +#define GLX_USE_GL 1 +#define GLX_BUFFER_SIZE 2 +#define GLX_LEVEL 3 +#define GLX_RGBA 4 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 + + +/* + * Error codes returned by glXGetConfig: + */ +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_NO_EXTENSION 3 +#define GLX_BAD_VISUAL 4 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_ENUM 7 + + +/* + * GLX 1.1 and later: + */ +#define GLX_VENDOR 1 +#define GLX_VERSION 2 +#define GLX_EXTENSIONS 3 + + +/* + * GLX 1.3 and later: + */ +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_DONT_CARE 0xFFFFFFFF +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 + + +/* + * GLX 1.4 and later: + */ +#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ +#define GLX_SAMPLES 0x186a1 /*100001*/ + + + +typedef struct __GLXcontextRec *GLXContext; +typedef XID GLXPixmap; +typedef XID GLXDrawable; +/* GLX 1.3 and later */ +typedef struct __GLXFBConfigRec *GLXFBConfig; +typedef XID GLXFBConfigID; +typedef XID GLXContextID; +typedef XID GLXWindow; +typedef XID GLXPbuffer; + + +/* +** Events. +** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX +** event - this helps initialization if the server supports the pbuffer +** extension and the client doesn't. +*/ +#define GLX_PbufferClobber 0 +#define GLX_BufferSwapComplete 1 + +#define __GLX_NUMBER_EVENTS 17 + +extern XVisualInfo* glXChooseVisual( Display *dpy, int screen, + int *attribList ); + +extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, + GLXContext shareList, Bool direct ); + +extern void glXDestroyContext( Display *dpy, GLXContext ctx ); + +extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, + GLXContext ctx); + +extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, + unsigned long mask ); + +extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); + +extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, + Pixmap pixmap ); + +extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); + +extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event ); + +extern Bool glXQueryVersion( Display *dpy, int *maj, int *min ); + +extern Bool glXIsDirect( Display *dpy, GLXContext ctx ); + +extern int glXGetConfig( Display *dpy, XVisualInfo *visual, + int attrib, int *value ); + +extern GLXContext glXGetCurrentContext( void ); + +extern GLXDrawable glXGetCurrentDrawable( void ); + +extern void glXWaitGL( void ); + +extern void glXWaitX( void ); + +extern void glXUseXFont( Font font, int first, int count, int list ); + + + +/* GLX 1.1 and later */ +extern const char *glXQueryExtensionsString( Display *dpy, int screen ); + +extern const char *glXQueryServerString( Display *dpy, int screen, int name ); + +extern const char *glXGetClientString( Display *dpy, int name ); + + +/* GLX 1.2 and later */ +extern Display *glXGetCurrentDisplay( void ); + + +/* GLX 1.3 and later */ +extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen, + const int *attribList, int *nitems ); + +extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config, + int attribute, int *value ); + +extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen, + int *nelements ); + +extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, + GLXFBConfig config ); + +extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config, + Window win, const int *attribList ); + +extern void glXDestroyWindow( Display *dpy, GLXWindow window ); + +extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config, + Pixmap pixmap, const int *attribList ); + +extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap ); + +extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config, + const int *attribList ); + +extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); + +extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute, + unsigned int *value ); + +extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config, + int renderType, GLXContext shareList, + Bool direct ); + +extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw, + GLXDrawable read, GLXContext ctx ); + +extern GLXDrawable glXGetCurrentReadDrawable( void ); + +extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute, + int *value ); + +extern void glXSelectEvent( Display *dpy, GLXDrawable drawable, + unsigned long mask ); + +extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, + unsigned long *mask ); + +/* GLX 1.3 function pointer typedefs */ +typedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); +typedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); +typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); +typedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +typedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); +typedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +typedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); +typedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); +typedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); +typedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +typedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void); +typedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void); +typedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); +typedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); +typedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); + + +/* + * ARB 2. GLX_ARB_get_proc_address + */ +#ifndef GLX_ARB_get_proc_address +#define GLX_ARB_get_proc_address 1 + +typedef void (*__GLXextFuncPtr)(void); +extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); + +#endif /* GLX_ARB_get_proc_address */ + + + +/* GLX 1.4 and later */ +extern void (*glXGetProcAddress(const GLubyte *procname))( void ); + +/* GLX 1.4 function pointer typedefs */ +typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); + + +#ifndef GLX_GLXEXT_LEGACY + +#include + +#endif /* GLX_GLXEXT_LEGACY */ + + +/** + ** The following aren't in glxext.h yet. + **/ + + +/* + * ???. GLX_NV_vertex_array_range + */ +#ifndef GLX_NV_vertex_array_range +#define GLX_NV_vertex_array_range + +extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); +extern void glXFreeMemoryNV(GLvoid *pointer); +typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); +typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer); + +#endif /* GLX_NV_vertex_array_range */ + + +/* + * ARB ?. GLX_ARB_render_texture + * XXX This was never finalized! + */ +#ifndef GLX_ARB_render_texture +#define GLX_ARB_render_texture 1 + +extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); +extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); +extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList); + +#endif /* GLX_ARB_render_texture */ + + +/* + * Remove this when glxext.h is updated. + */ +#ifndef GLX_NV_float_buffer +#define GLX_NV_float_buffer 1 + +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 + +#endif /* GLX_NV_float_buffer */ + + + +/* + * #?. GLX_MESA_swap_frame_usage + */ +#ifndef GLX_MESA_swap_frame_usage +#define GLX_MESA_swap_frame_usage 1 + +extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage); +extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable); +extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable); +extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); + +typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage); +typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); +typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); +typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); + +#endif /* GLX_MESA_swap_frame_usage */ + + + +/* + * #?. GLX_MESA_swap_control + */ +#ifndef GLX_MESA_swap_control +#define GLX_MESA_swap_control 1 + +extern int glXSwapIntervalMESA(unsigned int interval); +extern int glXGetSwapIntervalMESA(void); + +typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval); +typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void); + +#endif /* GLX_MESA_swap_control */ + + + +/* + * #?. GLX_EXT_texture_from_pixmap + * XXX not finished? + */ +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_EXT_texture_from_pixmap 1 + +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 + +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 + +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 + +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD + +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT +#define GLX_BACK_EXT GLX_BACK_LEFT_EXT +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB + +extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); +extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer); + +#endif /* GLX_EXT_texture_from_pixmap */ + + + + +/*** Should these go here, or in another header? */ +/* +** GLX Events +*/ +typedef struct { + int event_type; /* GLX_DAMAGED or GLX_SAVED */ + int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display *display; /* display the event was read from */ + GLXDrawable drawable; /* XID of Drawable */ + unsigned int buffer_mask; /* mask indicating which buffers are affected */ + unsigned int aux_buffer; /* which aux buffer was affected */ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ +} GLXPbufferClobberEvent; + +typedef struct { + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came from a SendEvent request */ + Display *display; /* Display the event was read from */ + GLXDrawable drawable; /* drawable on which event was requested in event mask */ + int event_type; + int64_t ust; + int64_t msc; + int64_t sbc; +} GLXBufferSwapComplete; + +typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + GLXBufferSwapComplete glxbufferswapcomplete; + long pad[24]; +} GLXEvent; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/linux/include/GL/glx_mangle.h b/lib/linux/include/GL/glx_mangle.h new file mode 100644 index 0000000..fa664a7 --- /dev/null +++ b/lib/linux/include/GL/glx_mangle.h @@ -0,0 +1,82 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5 + * + * Copyright (C) 1999-2006 Brian Paul 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 + * BRIAN PAUL 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 GLX_MANGLE_H +#define GLX_MANGLE_H + +#define glXChooseVisual mglXChooseVisual +#define glXCreateContext mglXCreateContext +#define glXDestroyContext mglXDestroyContext +#define glXMakeCurrent mglXMakeCurrent +#define glXCopyContext mglXCopyContext +#define glXSwapBuffers mglXSwapBuffers +#define glXCreateGLXPixmap mglXCreateGLXPixmap +#define glXDestroyGLXPixmap mglXDestroyGLXPixmap +#define glXQueryExtension mglXQueryExtension +#define glXQueryVersion mglXQueryVersion +#define glXIsDirect mglXIsDirect +#define glXGetConfig mglXGetConfig +#define glXGetCurrentContext mglXGetCurrentContext +#define glXGetCurrentDrawable mglXGetCurrentDrawable +#define glXWaitGL mglXWaitGL +#define glXWaitX mglXWaitX +#define glXUseXFont mglXUseXFont +#define glXQueryExtensionsString mglXQueryExtensionsString +#define glXQueryServerString mglXQueryServerString +#define glXGetClientString mglXGetClientString +#define glXCreateGLXPixmapMESA mglXCreateGLXPixmapMESA +#define glXReleaseBuffersMESA mglXReleaseBuffersMESA +#define glXCopySubBufferMESA mglXCopySubBufferMESA +#define glXGetVideoSyncSGI mglXGetVideoSyncSGI +#define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI + +/* GLX 1.2 */ +#define glXGetCurrentDisplay mglXGetCurrentDisplay + +/* GLX 1.3 */ +#define glXChooseFBConfig mglXChooseFBConfig +#define glXGetFBConfigAttrib mglXGetFBConfigAttrib +#define glXGetFBConfigs mglXGetFBConfigs +#define glXGetVisualFromFBConfig mglXGetVisualFromFBConfig +#define glXCreateWindow mglXCreateWindow +#define glXDestroyWindow mglXDestroyWindow +#define glXCreatePixmap mglXCreatePixmap +#define glXDestroyPixmap mglXDestroyPixmap +#define glXCreatePbuffer mglXCreatePbuffer +#define glXDestroyPbuffer mglXDestroyPbuffer +#define glXQueryDrawable mglXQueryDrawable +#define glXCreateNewContext mglXCreateNewContext +#define glXMakeContextCurrent mglXMakeContextCurrent +#define glXGetCurrentReadDrawable mglXGetCurrentReadDrawable +#define glXQueryContext mglXQueryContext +#define glXSelectEvent mglXSelectEvent +#define glXGetSelectedEvent mglXGetSelectedEvent + +/* GLX 1.4 */ +#define glXGetProcAddress mglXGetProcAddress +#define glXGetProcAddressARB mglXGetProcAddressARB + + +#endif diff --git a/lib/linux/include/GL/glxew.h b/lib/linux/include/GL/glxew.h new file mode 100644 index 0000000..6d249f7 --- /dev/null +++ b/lib/linux/include/GL/glxew.h @@ -0,0 +1,1587 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2002-2008, Milan Ikits +** Copyright (C) 2002-2008, Marcelo E. Magallon +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glxew_h__ +#define __glxew_h__ +#define __GLXEW_H__ + +#ifdef __glxext_h_ +#error glxext.h included before glxew.h +#endif + +#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__) +#error glx.h included before glxew.h +#endif + +#define __glxext_h_ + +#define GLX_H +#define __GLX_glx_h__ +#define __glx_h__ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ---------------------------- GLX_VERSION_1_0 --------------------------- */ + +#ifndef GLX_VERSION_1_0 +#define GLX_VERSION_1_0 1 + +#define GLX_USE_GL 1 +#define GLX_BUFFER_SIZE 2 +#define GLX_LEVEL 3 +#define GLX_RGBA 4 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_NO_EXTENSION 3 +#define GLX_BAD_VISUAL 4 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_ENUM 7 + +typedef XID GLXDrawable; +typedef XID GLXPixmap; +#ifdef __sun +typedef struct __glXContextRec *GLXContext; +#else +typedef struct __GLXcontextRec *GLXContext; +#endif + +typedef unsigned int GLXVideoDeviceNV; + +extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase); +extern Bool glXQueryVersion (Display *dpy, int *major, int *minor); +extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value); +extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList); +extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap); +extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix); +extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct); +extern void glXDestroyContext (Display *dpy, GLXContext ctx); +extern Bool glXIsDirect (Display *dpy, GLXContext ctx); +extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask); +extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx); +extern GLXContext glXGetCurrentContext (void); +extern GLXDrawable glXGetCurrentDrawable (void); +extern void glXWaitGL (void); +extern void glXWaitX (void); +extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable); +extern void glXUseXFont (Font font, int first, int count, int listBase); + +#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0) + +#endif /* GLX_VERSION_1_0 */ + +/* ---------------------------- GLX_VERSION_1_1 --------------------------- */ + +#ifndef GLX_VERSION_1_1 +#define GLX_VERSION_1_1 + +#define GLX_VENDOR 0x1 +#define GLX_VERSION 0x2 +#define GLX_EXTENSIONS 0x3 + +extern const char* glXQueryExtensionsString (Display *dpy, int screen); +extern const char* glXGetClientString (Display *dpy, int name); +extern const char* glXQueryServerString (Display *dpy, int screen, int name); + +#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1) + +#endif /* GLX_VERSION_1_1 */ + +/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */ + +#ifndef GLX_VERSION_1_2 +#define GLX_VERSION_1_2 1 + +typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void); + +#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay) + +#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2) + +#endif /* GLX_VERSION_1_2 */ + +/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */ + +#ifndef GLX_VERSION_1_3 +#define GLX_VERSION_1_3 1 + +#define GLX_RGBA_BIT 0x00000001 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_DONT_CARE 0xFFFFFFFF + +typedef XID GLXFBConfigID; +typedef XID GLXPbuffer; +typedef XID GLXWindow; +typedef struct __GLXFBConfigRec *GLXFBConfig; + +typedef struct { + int event_type; + int draw_type; + unsigned long serial; + Bool send_event; + Display *display; + GLXDrawable drawable; + unsigned int buffer_mask; + unsigned int aux_buffer; + int x, y; + int width, height; + int count; +} GLXPbufferClobberEvent; +typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + long pad[24]; +} GLXEvent; + +typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); +typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); + +#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig) +#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext) +#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer) +#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap) +#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow) +#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer) +#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap) +#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow) +#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable) +#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib) +#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs) +#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent) +#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig) +#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent) +#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext) +#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable) +#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent) + +#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3) + +#endif /* GLX_VERSION_1_3 */ + +/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */ + +#ifndef GLX_VERSION_1_4 +#define GLX_VERSION_1_4 1 + +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLES 100001 + +extern void ( * glXGetProcAddress (const GLubyte *procName)) (void); + +#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4) + +#endif /* GLX_VERSION_1_4 */ + +/* -------------------------- GLX_3DFX_multisample ------------------------- */ + +#ifndef GLX_3DFX_multisample +#define GLX_3DFX_multisample 1 + +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 +#define GLX_SAMPLES_3DFX 0x8051 + +#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample) + +#endif /* GLX_3DFX_multisample */ + +/* ------------------------ GLX_AMD_gpu_association ------------------------ */ + +#ifndef GLX_AMD_gpu_association +#define GLX_AMD_gpu_association 1 + +#define GLX_GPU_VENDOR_AMD 0x1F00 +#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 +#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define GLX_GPU_RAM_AMD 0x21A3 +#define GLX_GPU_CLOCK_AMD 0x21A4 +#define GLX_GPU_NUM_PIPES_AMD 0x21A5 +#define GLX_GPU_NUM_SIMD_AMD 0x21A6 +#define GLX_GPU_NUM_RB_AMD 0x21A7 +#define GLX_GPU_NUM_SPI_AMD 0x21A8 + +#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association) + +#endif /* GLX_AMD_gpu_association */ + +/* ------------------------- GLX_ARB_create_context ------------------------ */ + +#ifndef GLX_ARB_create_context +#define GLX_ARB_create_context 1 + +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 + +typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); + +#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB) + +#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context) + +#endif /* GLX_ARB_create_context */ + +/* --------------------- GLX_ARB_create_context_profile -------------------- */ + +#ifndef GLX_ARB_create_context_profile +#define GLX_ARB_create_context_profile 1 + +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define GLXEW_ARB_create_context_profile GLXEW_GET_VAR(__GLXEW_ARB_create_context_profile) + +#endif /* GLX_ARB_create_context_profile */ + +/* ------------------- GLX_ARB_create_context_robustness ------------------- */ + +#ifndef GLX_ARB_create_context_robustness +#define GLX_ARB_create_context_robustness 1 + +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define GLXEW_ARB_create_context_robustness GLXEW_GET_VAR(__GLXEW_ARB_create_context_robustness) + +#endif /* GLX_ARB_create_context_robustness */ + +/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */ + +#ifndef GLX_ARB_fbconfig_float +#define GLX_ARB_fbconfig_float 1 + +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#define GLX_RGBA_FLOAT_TYPE 0x20B9 + +#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float) + +#endif /* GLX_ARB_fbconfig_float */ + +/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_ARB_framebuffer_sRGB +#define GLX_ARB_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 + +#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB) + +#endif /* GLX_ARB_framebuffer_sRGB */ + +/* ------------------------ GLX_ARB_get_proc_address ----------------------- */ + +#ifndef GLX_ARB_get_proc_address +#define GLX_ARB_get_proc_address 1 + +extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void); + +#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address) + +#endif /* GLX_ARB_get_proc_address */ + +/* -------------------------- GLX_ARB_multisample -------------------------- */ + +#ifndef GLX_ARB_multisample +#define GLX_ARB_multisample 1 + +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAMPLES_ARB 100001 + +#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample) + +#endif /* GLX_ARB_multisample */ + +/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */ + +#ifndef GLX_ARB_vertex_buffer_object +#define GLX_ARB_vertex_buffer_object 1 + +#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095 + +#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object) + +#endif /* GLX_ARB_vertex_buffer_object */ + +/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */ + +#ifndef GLX_ATI_pixel_format_float +#define GLX_ATI_pixel_format_float 1 + +#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100 + +#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float) + +#endif /* GLX_ATI_pixel_format_float */ + +/* ------------------------- GLX_ATI_render_texture ------------------------ */ + +#ifndef GLX_ATI_render_texture +#define GLX_ATI_render_texture 1 + +#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800 +#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801 +#define GLX_TEXTURE_FORMAT_ATI 0x9802 +#define GLX_TEXTURE_TARGET_ATI 0x9803 +#define GLX_MIPMAP_TEXTURE_ATI 0x9804 +#define GLX_TEXTURE_RGB_ATI 0x9805 +#define GLX_TEXTURE_RGBA_ATI 0x9806 +#define GLX_NO_TEXTURE_ATI 0x9807 +#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808 +#define GLX_TEXTURE_1D_ATI 0x9809 +#define GLX_TEXTURE_2D_ATI 0x980A +#define GLX_MIPMAP_LEVEL_ATI 0x980B +#define GLX_CUBE_MAP_FACE_ATI 0x980C +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810 +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811 +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812 +#define GLX_FRONT_LEFT_ATI 0x9813 +#define GLX_FRONT_RIGHT_ATI 0x9814 +#define GLX_BACK_LEFT_ATI 0x9815 +#define GLX_BACK_RIGHT_ATI 0x9816 +#define GLX_AUX0_ATI 0x9817 +#define GLX_AUX1_ATI 0x9818 +#define GLX_AUX2_ATI 0x9819 +#define GLX_AUX3_ATI 0x981A +#define GLX_AUX4_ATI 0x981B +#define GLX_AUX5_ATI 0x981C +#define GLX_AUX6_ATI 0x981D +#define GLX_AUX7_ATI 0x981E +#define GLX_AUX8_ATI 0x981F +#define GLX_AUX9_ATI 0x9820 +#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821 +#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822 + +typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); +typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); + +#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI) +#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI) +#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI) + +#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture) + +#endif /* GLX_ATI_render_texture */ + +/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */ + +#ifndef GLX_EXT_create_context_es2_profile +#define GLX_EXT_create_context_es2_profile 1 + +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define GLXEW_EXT_create_context_es2_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es2_profile) + +#endif /* GLX_EXT_create_context_es2_profile */ + +/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */ + +#ifndef GLX_EXT_fbconfig_packed_float +#define GLX_EXT_fbconfig_packed_float 1 + +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 + +#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float) + +#endif /* GLX_EXT_fbconfig_packed_float */ + +/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_EXT_framebuffer_sRGB +#define GLX_EXT_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 + +#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB) + +#endif /* GLX_EXT_framebuffer_sRGB */ + +/* ------------------------- GLX_EXT_import_context ------------------------ */ + +#ifndef GLX_EXT_import_context +#define GLX_EXT_import_context 1 + +#define GLX_SHARE_CONTEXT_EXT 0x800A +#define GLX_VISUAL_ID_EXT 0x800B +#define GLX_SCREEN_EXT 0x800C + +typedef XID GLXContextID; + +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context); +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID); +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute,int *value); + +#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT) +#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT) +#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT) +#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT) + +#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context) + +#endif /* GLX_EXT_import_context */ + +/* -------------------------- GLX_EXT_scene_marker ------------------------- */ + +#ifndef GLX_EXT_scene_marker +#define GLX_EXT_scene_marker 1 + +#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker) + +#endif /* GLX_EXT_scene_marker */ + +/* -------------------------- GLX_EXT_swap_control ------------------------- */ + +#ifndef GLX_EXT_swap_control +#define GLX_EXT_swap_control 1 + +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 + +typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable, int interval); + +#define glXSwapIntervalEXT GLXEW_GET_FUN(__glewXSwapIntervalEXT) + +#define GLXEW_EXT_swap_control GLXEW_GET_VAR(__GLXEW_EXT_swap_control) + +#endif /* GLX_EXT_swap_control */ + +/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */ + +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_EXT_texture_from_pixmap 1 + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB + +typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer); + +#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT) +#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT) + +#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap) + +#endif /* GLX_EXT_texture_from_pixmap */ + +/* -------------------------- GLX_EXT_visual_info -------------------------- */ + +#ifndef GLX_EXT_visual_info +#define GLX_EXT_visual_info 1 + +#define GLX_X_VISUAL_TYPE_EXT 0x22 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 +#define GLX_NONE_EXT 0x8000 +#define GLX_TRUE_COLOR_EXT 0x8002 +#define GLX_DIRECT_COLOR_EXT 0x8003 +#define GLX_PSEUDO_COLOR_EXT 0x8004 +#define GLX_STATIC_COLOR_EXT 0x8005 +#define GLX_GRAY_SCALE_EXT 0x8006 +#define GLX_STATIC_GRAY_EXT 0x8007 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 + +#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info) + +#endif /* GLX_EXT_visual_info */ + +/* ------------------------- GLX_EXT_visual_rating ------------------------- */ + +#ifndef GLX_EXT_visual_rating +#define GLX_EXT_visual_rating 1 + +#define GLX_VISUAL_CAVEAT_EXT 0x20 +#define GLX_SLOW_VISUAL_EXT 0x8001 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D + +#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating) + +#endif /* GLX_EXT_visual_rating */ + +/* -------------------------- GLX_INTEL_swap_event ------------------------- */ + +#ifndef GLX_INTEL_swap_event +#define GLX_INTEL_swap_event 1 + +#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180 +#define GLX_COPY_COMPLETE_INTEL 0x8181 +#define GLX_FLIP_COMPLETE_INTEL 0x8182 +#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000 + +#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event) + +#endif /* GLX_INTEL_swap_event */ + +/* -------------------------- GLX_MESA_agp_offset -------------------------- */ + +#ifndef GLX_MESA_agp_offset +#define GLX_MESA_agp_offset 1 + +typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer); + +#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA) + +#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset) + +#endif /* GLX_MESA_agp_offset */ + +/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */ + +#ifndef GLX_MESA_copy_sub_buffer +#define GLX_MESA_copy_sub_buffer 1 + +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height); + +#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA) + +#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer) + +#endif /* GLX_MESA_copy_sub_buffer */ + +/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */ + +#ifndef GLX_MESA_pixmap_colormap +#define GLX_MESA_pixmap_colormap 1 + +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); + +#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA) + +#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap) + +#endif /* GLX_MESA_pixmap_colormap */ + +/* ------------------------ GLX_MESA_release_buffers ----------------------- */ + +#ifndef GLX_MESA_release_buffers +#define GLX_MESA_release_buffers 1 + +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable d); + +#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA) + +#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers) + +#endif /* GLX_MESA_release_buffers */ + +/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */ + +#ifndef GLX_MESA_set_3dfx_mode +#define GLX_MESA_set_3dfx_mode 1 + +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 + +typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode); + +#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA) + +#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode) + +#endif /* GLX_MESA_set_3dfx_mode */ + +/* ------------------------- GLX_MESA_swap_control ------------------------- */ + +#ifndef GLX_MESA_swap_control +#define GLX_MESA_swap_control 1 + +typedef int ( * PFNGLXGETSWAPINTERVALMESAPROC) (void); +typedef int ( * PFNGLXSWAPINTERVALMESAPROC) (unsigned int interval); + +#define glXGetSwapIntervalMESA GLXEW_GET_FUN(__glewXGetSwapIntervalMESA) +#define glXSwapIntervalMESA GLXEW_GET_FUN(__glewXSwapIntervalMESA) + +#define GLXEW_MESA_swap_control GLXEW_GET_VAR(__GLXEW_MESA_swap_control) + +#endif /* GLX_MESA_swap_control */ + +/* --------------------------- GLX_NV_copy_image --------------------------- */ + +#ifndef GLX_NV_copy_image +#define GLX_NV_copy_image 1 + +typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define glXCopyImageSubDataNV GLXEW_GET_FUN(__glewXCopyImageSubDataNV) + +#define GLXEW_NV_copy_image GLXEW_GET_VAR(__GLXEW_NV_copy_image) + +#endif /* GLX_NV_copy_image */ + +/* -------------------------- GLX_NV_float_buffer -------------------------- */ + +#ifndef GLX_NV_float_buffer +#define GLX_NV_float_buffer 1 + +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 + +#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer) + +#endif /* GLX_NV_float_buffer */ + +/* ---------------------- GLX_NV_multisample_coverage ---------------------- */ + +#ifndef GLX_NV_multisample_coverage +#define GLX_NV_multisample_coverage 1 + +#define GLX_COLOR_SAMPLES_NV 0x20B3 +#define GLX_COVERAGE_SAMPLES_NV 100001 + +#define GLXEW_NV_multisample_coverage GLXEW_GET_VAR(__GLXEW_NV_multisample_coverage) + +#endif /* GLX_NV_multisample_coverage */ + +/* -------------------------- GLX_NV_present_video ------------------------- */ + +#ifndef GLX_NV_present_video +#define GLX_NV_present_video 1 + +#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 + +typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); +typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements); + +#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV) +#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV) + +#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video) + +#endif /* GLX_NV_present_video */ + +/* --------------------------- GLX_NV_swap_group --------------------------- */ + +#ifndef GLX_NV_swap_group +#define GLX_NV_swap_group 1 + +typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier); +typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group); +typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint *count); +typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); +typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); +typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen); + +#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV) +#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV) +#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV) +#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV) +#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV) +#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV) + +#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group) + +#endif /* GLX_NV_swap_group */ + +/* ----------------------- GLX_NV_vertex_array_range ----------------------- */ + +#ifndef GLX_NV_vertex_array_range +#define GLX_NV_vertex_array_range 1 + +typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer); + +#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV) +#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV) + +#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range) + +#endif /* GLX_NV_vertex_array_range */ + +/* -------------------------- GLX_NV_video_capture ------------------------- */ + +#ifndef GLX_NV_video_capture +#define GLX_NV_video_capture 1 + +#define GLX_DEVICE_ID_NV 0x20CD +#define GLX_UNIQUE_ID_NV 0x20CE +#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +typedef XID GLXVideoCaptureDeviceNV; + +typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); +typedef GLXVideoCaptureDeviceNV * ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display* dpy, int screen, int *nelements); +typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); +typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); +typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); + +#define glXBindVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXBindVideoCaptureDeviceNV) +#define glXEnumerateVideoCaptureDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoCaptureDevicesNV) +#define glXLockVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXLockVideoCaptureDeviceNV) +#define glXQueryVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXQueryVideoCaptureDeviceNV) +#define glXReleaseVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoCaptureDeviceNV) + +#define GLXEW_NV_video_capture GLXEW_GET_VAR(__GLXEW_NV_video_capture) + +#endif /* GLX_NV_video_capture */ + +/* -------------------------- GLX_NV_video_output -------------------------- */ + +#ifndef GLX_NV_video_output +#define GLX_NV_video_output 1 + +#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 +#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 +#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 +#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 +#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 +#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA +#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB +#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC + +typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); +typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); +typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice); +typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf); +typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); + +#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV) +#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV) +#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV) +#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV) +#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV) +#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV) + +#define GLXEW_NV_video_output GLXEW_GET_VAR(__GLXEW_NV_video_output) + +#endif /* GLX_NV_video_output */ + +/* -------------------------- GLX_OML_swap_method -------------------------- */ + +#ifndef GLX_OML_swap_method +#define GLX_OML_swap_method 1 + +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 + +#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method) + +#endif /* GLX_OML_swap_method */ + +/* -------------------------- GLX_OML_sync_control ------------------------- */ + +#ifndef GLX_OML_sync_control +#define GLX_OML_sync_control 1 + +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator); +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc); + +#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML) +#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML) +#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML) +#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML) +#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML) + +#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control) + +#endif /* GLX_OML_sync_control */ + +/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */ + +#ifndef GLX_SGIS_blended_overlay +#define GLX_SGIS_blended_overlay 1 + +#define GLX_BLENDED_RGBA_SGIS 0x8025 + +#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay) + +#endif /* GLX_SGIS_blended_overlay */ + +/* -------------------------- GLX_SGIS_color_range ------------------------- */ + +#ifndef GLX_SGIS_color_range +#define GLX_SGIS_color_range 1 + +#define GLX_MIN_RED_SGIS 0 +#define GLX_MAX_GREEN_SGIS 0 +#define GLX_MIN_BLUE_SGIS 0 +#define GLX_MAX_ALPHA_SGIS 0 +#define GLX_MIN_GREEN_SGIS 0 +#define GLX_MIN_ALPHA_SGIS 0 +#define GLX_MAX_RED_SGIS 0 +#define GLX_EXTENDED_RANGE_SGIS 0 +#define GLX_MAX_BLUE_SGIS 0 + +#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range) + +#endif /* GLX_SGIS_color_range */ + +/* -------------------------- GLX_SGIS_multisample ------------------------- */ + +#ifndef GLX_SGIS_multisample +#define GLX_SGIS_multisample 1 + +#define GLX_SAMPLE_BUFFERS_SGIS 100000 +#define GLX_SAMPLES_SGIS 100001 + +#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample) + +#endif /* GLX_SGIS_multisample */ + +/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */ + +#ifndef GLX_SGIS_shared_multisample +#define GLX_SGIS_shared_multisample 1 + +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 + +#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample) + +#endif /* GLX_SGIS_shared_multisample */ + +/* --------------------------- GLX_SGIX_fbconfig --------------------------- */ + +#ifndef GLX_SGIX_fbconfig +#define GLX_SGIX_fbconfig 1 + +#define GLX_WINDOW_BIT_SGIX 0x00000001 +#define GLX_RGBA_BIT_SGIX 0x00000001 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 +#define GLX_SCREEN_EXT 0x800C +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 +#define GLX_RENDER_TYPE_SGIX 0x8011 +#define GLX_X_RENDERABLE_SGIX 0x8012 +#define GLX_FBCONFIG_ID_SGIX 0x8013 +#define GLX_RGBA_TYPE_SGIX 0x8014 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 + +typedef XID GLXFBConfigIDSGIX; +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; + +typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, Pixmap pixmap); +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int *value); +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo *vis); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfig config); + +#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX) +#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX) +#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX) +#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX) +#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX) +#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX) + +#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig) + +#endif /* GLX_SGIX_fbconfig */ + +/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */ + +#ifndef GLX_SGIX_hyperpipe +#define GLX_SGIX_hyperpipe 1 + +#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 +#define GLX_PIPE_RECT_SGIX 0x00000001 +#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 +#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 +#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 +#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 +#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 +#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 +#define GLX_BAD_HYPERPIPE_SGIX 92 +#define GLX_HYPERPIPE_ID_SGIX 0x8030 + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int networkId; +} GLXHyperpipeNetworkSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int XOrigin; + int YOrigin; + int maxHeight; + int maxWidth; +} GLXPipeRectLimits; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int channel; + unsigned int participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int srcXOrigin; + int srcYOrigin; + int srcWidth; + int srcHeight; + int destXOrigin; + int destYOrigin; + int destWidth; + int destHeight; +} GLXPipeRect; + +typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); +typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); +typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); +typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); +typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); + +#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX) +#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX) +#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX) +#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX) +#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX) +#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX) +#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX) +#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX) + +#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe) + +#endif /* GLX_SGIX_hyperpipe */ + +/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */ + +#ifndef GLX_SGIX_pbuffer +#define GLX_SGIX_pbuffer 1 + +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 +#define GLX_PBUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B +#define GLX_LARGEST_PBUFFER_SGIX 0x801C +#define GLX_WIDTH_SGIX 0x801D +#define GLX_HEIGHT_SGIX 0x801E +#define GLX_EVENT_MASK_SGIX 0x801F +#define GLX_DAMAGED_SGIX 0x8020 +#define GLX_SAVED_SGIX 0x8021 +#define GLX_WINDOW_SGIX 0x8022 +#define GLX_PBUFFER_SGIX 0x8023 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 + +typedef XID GLXPbufferSGIX; +typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX; + +typedef GLXPbuffer ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfig config, unsigned int width, unsigned int height, int *attrib_list); +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long *mask); +typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask); + +#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX) +#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX) +#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX) +#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX) +#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX) + +#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer) + +#endif /* GLX_SGIX_pbuffer */ + +/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */ + +#ifndef GLX_SGIX_swap_barrier +#define GLX_SGIX_swap_barrier 1 + +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); + +#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX) +#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX) + +#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier) + +#endif /* GLX_SGIX_swap_barrier */ + +/* -------------------------- GLX_SGIX_swap_group -------------------------- */ + +#ifndef GLX_SGIX_swap_group +#define GLX_SGIX_swap_group 1 + +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); + +#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX) + +#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group) + +#endif /* GLX_SGIX_swap_group */ + +/* ------------------------- GLX_SGIX_video_resize ------------------------- */ + +#ifndef GLX_SGIX_video_resize +#define GLX_SGIX_video_resize 1 + +#define GLX_SYNC_FRAME_SGIX 0x00000000 +#define GLX_SYNC_SWAP_SGIX 0x00000001 + +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window); +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h); +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype); +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int *x, int *y, int *w, int *h); +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); + +#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX) +#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX) +#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX) +#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX) +#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX) + +#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize) + +#endif /* GLX_SGIX_video_resize */ + +/* ---------------------- GLX_SGIX_visual_select_group --------------------- */ + +#ifndef GLX_SGIX_visual_select_group +#define GLX_SGIX_visual_select_group 1 + +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 + +#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group) + +#endif /* GLX_SGIX_visual_select_group */ + +/* ---------------------------- GLX_SGI_cushion ---------------------------- */ + +#ifndef GLX_SGI_cushion +#define GLX_SGI_cushion 1 + +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion); + +#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI) + +#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion) + +#endif /* GLX_SGI_cushion */ + +/* ----------------------- GLX_SGI_make_current_read ----------------------- */ + +#ifndef GLX_SGI_make_current_read +#define GLX_SGI_make_current_read 1 + +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); + +#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI) +#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI) + +#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read) + +#endif /* GLX_SGI_make_current_read */ + +/* -------------------------- GLX_SGI_swap_control ------------------------- */ + +#ifndef GLX_SGI_swap_control +#define GLX_SGI_swap_control 1 + +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); + +#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI) + +#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control) + +#endif /* GLX_SGI_swap_control */ + +/* --------------------------- GLX_SGI_video_sync -------------------------- */ + +#ifndef GLX_SGI_video_sync +#define GLX_SGI_video_sync 1 + +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int* count); +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count); + +#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI) +#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI) + +#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync) + +#endif /* GLX_SGI_video_sync */ + +/* --------------------- GLX_SUN_get_transparent_index --------------------- */ + +#ifndef GLX_SUN_get_transparent_index +#define GLX_SUN_get_transparent_index 1 + +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long *pTransparentIndex); + +#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN) + +#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index) + +#endif /* GLX_SUN_get_transparent_index */ + +/* -------------------------- GLX_SUN_video_resize ------------------------- */ + +#ifndef GLX_SUN_video_resize +#define GLX_SUN_video_resize 1 + +#define GLX_VIDEO_RESIZE_SUN 0x8171 +#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD + +typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor); +typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor); + +#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN) +#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN) + +#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize) + +#endif /* GLX_SUN_video_resize */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define GLXEW_EXPORT +#else +#define GLXEW_EXPORT extern +#endif /* GLEW_MX */ + +extern PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay; + +extern PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig; +extern PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext; +extern PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer; +extern PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap; +extern PFNGLXCREATEWINDOWPROC __glewXCreateWindow; +extern PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer; +extern PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap; +extern PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow; +extern PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable; +extern PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib; +extern PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs; +extern PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent; +extern PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig; +extern PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent; +extern PFNGLXQUERYCONTEXTPROC __glewXQueryContext; +extern PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable; +extern PFNGLXSELECTEVENTPROC __glewXSelectEvent; + +extern PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB; + +extern PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI; +extern PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI; +extern PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI; + +extern PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT; +extern PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT; +extern PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT; +extern PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT; + +extern PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT; + +extern PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT; +extern PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT; + +extern PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA; + +extern PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA; + +extern PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA; + +extern PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA; + +extern PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA; + +extern PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA; +extern PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA; + +extern PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV; + +extern PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV; +extern PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV; + +extern PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV; +extern PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV; +extern PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV; +extern PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV; +extern PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV; +extern PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV; + +extern PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV; +extern PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV; + +extern PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV; +extern PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV; +extern PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV; +extern PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV; +extern PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV; + +extern PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV; +extern PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV; +extern PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV; +extern PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV; +extern PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV; +extern PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV; + +extern PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML; +extern PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML; +extern PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML; +extern PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML; +extern PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML; + +extern PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX; +extern PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX; +extern PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX; +extern PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX; +extern PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX; +extern PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX; + +extern PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX; +extern PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX; +extern PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX; +extern PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX; +extern PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX; +extern PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX; +extern PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX; +extern PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX; + +extern PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX; +extern PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX; +extern PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX; +extern PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX; +extern PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX; + +extern PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX; +extern PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX; + +extern PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX; + +extern PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX; +extern PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX; +extern PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX; +extern PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX; +extern PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX; + +extern PFNGLXCUSHIONSGIPROC __glewXCushionSGI; + +extern PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI; +extern PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI; + +extern PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI; + +extern PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI; +extern PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI; + +extern PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN; + +extern PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN; +extern PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN; + +#if defined(GLEW_MX) +struct GLXEWContextStruct +{ +#endif /* GLEW_MX */ + +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_0; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_1; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_2; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_3; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_4; +GLXEW_EXPORT GLboolean __GLXEW_3DFX_multisample; +GLXEW_EXPORT GLboolean __GLXEW_AMD_gpu_association; +GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context; +GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context_profile; +GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context_robustness; +GLXEW_EXPORT GLboolean __GLXEW_ARB_fbconfig_float; +GLXEW_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB; +GLXEW_EXPORT GLboolean __GLXEW_ARB_get_proc_address; +GLXEW_EXPORT GLboolean __GLXEW_ARB_multisample; +GLXEW_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object; +GLXEW_EXPORT GLboolean __GLXEW_ATI_pixel_format_float; +GLXEW_EXPORT GLboolean __GLXEW_ATI_render_texture; +GLXEW_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile; +GLXEW_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float; +GLXEW_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB; +GLXEW_EXPORT GLboolean __GLXEW_EXT_import_context; +GLXEW_EXPORT GLboolean __GLXEW_EXT_scene_marker; +GLXEW_EXPORT GLboolean __GLXEW_EXT_swap_control; +GLXEW_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap; +GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_info; +GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_rating; +GLXEW_EXPORT GLboolean __GLXEW_INTEL_swap_event; +GLXEW_EXPORT GLboolean __GLXEW_MESA_agp_offset; +GLXEW_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer; +GLXEW_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap; +GLXEW_EXPORT GLboolean __GLXEW_MESA_release_buffers; +GLXEW_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode; +GLXEW_EXPORT GLboolean __GLXEW_MESA_swap_control; +GLXEW_EXPORT GLboolean __GLXEW_NV_copy_image; +GLXEW_EXPORT GLboolean __GLXEW_NV_float_buffer; +GLXEW_EXPORT GLboolean __GLXEW_NV_multisample_coverage; +GLXEW_EXPORT GLboolean __GLXEW_NV_present_video; +GLXEW_EXPORT GLboolean __GLXEW_NV_swap_group; +GLXEW_EXPORT GLboolean __GLXEW_NV_vertex_array_range; +GLXEW_EXPORT GLboolean __GLXEW_NV_video_capture; +GLXEW_EXPORT GLboolean __GLXEW_NV_video_output; +GLXEW_EXPORT GLboolean __GLXEW_OML_swap_method; +GLXEW_EXPORT GLboolean __GLXEW_OML_sync_control; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_blended_overlay; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_color_range; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_multisample; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_shared_multisample; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_fbconfig; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_hyperpipe; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_pbuffer; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_barrier; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_group; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_video_resize; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_visual_select_group; +GLXEW_EXPORT GLboolean __GLXEW_SGI_cushion; +GLXEW_EXPORT GLboolean __GLXEW_SGI_make_current_read; +GLXEW_EXPORT GLboolean __GLXEW_SGI_swap_control; +GLXEW_EXPORT GLboolean __GLXEW_SGI_video_sync; +GLXEW_EXPORT GLboolean __GLXEW_SUN_get_transparent_index; +GLXEW_EXPORT GLboolean __GLXEW_SUN_video_resize; + +#ifdef GLEW_MX +}; /* GLXEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------ */ + +#ifdef GLEW_MX + +typedef struct GLXEWContextStruct GLXEWContext; +extern GLenum glxewContextInit (GLXEWContext* ctx); +extern GLboolean glxewContextIsSupported (const GLXEWContext* ctx, const char* name); + +#define glxewInit() glxewContextInit(glxewGetContext()) +#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x) + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&(glxewGetContext()->x)) +#define GLXEW_GET_FUN(x) x + +#else /* GLEW_MX */ + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLXEW_GET_FUN(x) x + +extern GLboolean glxewIsSupported (const char* name); + +#endif /* GLEW_MX */ + +extern GLboolean glxewGetExtension (const char* name); + +#ifdef __cplusplus +} +#endif + +#endif /* __glxew_h__ */ diff --git a/lib/linux/include/GL/glxext.h b/lib/linux/include/GL/glxext.h new file mode 100644 index 0000000..3c47dc3 --- /dev/null +++ b/lib/linux/include/GL/glxext.h @@ -0,0 +1,993 @@ +#ifndef __glxext_h_ +#define __glxext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007-2010 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. +*/ + +/* Function declaration macros - to move into glplatform.h */ + +#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 */ +/* glxext.h last updated 2010/08/06 */ +/* Current version at http://www.opengl.org/registry/ */ +#define GLX_GLXEXT_VERSION 32 + +#ifndef GLX_VERSION_1_3 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_DONT_CARE 0xFFFFFFFF +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#endif + +#ifndef GLX_VERSION_1_4 +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLES 100001 +#endif + +#ifndef GLX_ARB_get_proc_address +#endif + +#ifndef GLX_ARB_multisample +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAMPLES_ARB 100001 +#endif + +#ifndef GLX_ARB_vertex_buffer_object +#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095 +#endif + +#ifndef GLX_ARB_fbconfig_float +#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9 +#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 +#endif + +#ifndef GLX_ARB_framebuffer_sRGB +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 +#endif + +#ifndef GLX_ARB_create_context +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 +#endif + +#ifndef GLX_ARB_create_context_profile +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#endif + +#ifndef GLX_ARB_create_context_robustness +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 +#endif + +#ifndef GLX_SGIS_multisample +#define GLX_SAMPLE_BUFFERS_SGIS 100000 +#define GLX_SAMPLES_SGIS 100001 +#endif + +#ifndef GLX_EXT_visual_info +#define GLX_X_VISUAL_TYPE_EXT 0x22 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 +#define GLX_NONE_EXT 0x8000 +#define GLX_TRUE_COLOR_EXT 0x8002 +#define GLX_DIRECT_COLOR_EXT 0x8003 +#define GLX_PSEUDO_COLOR_EXT 0x8004 +#define GLX_STATIC_COLOR_EXT 0x8005 +#define GLX_GRAY_SCALE_EXT 0x8006 +#define GLX_STATIC_GRAY_EXT 0x8007 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 +#endif + +#ifndef GLX_SGI_swap_control +#endif + +#ifndef GLX_SGI_video_sync +#endif + +#ifndef GLX_SGI_make_current_read +#endif + +#ifndef GLX_SGIX_video_source +#endif + +#ifndef GLX_EXT_visual_rating +#define GLX_VISUAL_CAVEAT_EXT 0x20 +#define GLX_SLOW_VISUAL_EXT 0x8001 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D +/* reuse GLX_NONE_EXT */ +#endif + +#ifndef GLX_EXT_import_context +#define GLX_SHARE_CONTEXT_EXT 0x800A +#define GLX_VISUAL_ID_EXT 0x800B +#define GLX_SCREEN_EXT 0x800C +#endif + +#ifndef GLX_SGIX_fbconfig +#define GLX_WINDOW_BIT_SGIX 0x00000001 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 +#define GLX_RGBA_BIT_SGIX 0x00000001 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 +#define GLX_RENDER_TYPE_SGIX 0x8011 +#define GLX_X_RENDERABLE_SGIX 0x8012 +#define GLX_FBCONFIG_ID_SGIX 0x8013 +#define GLX_RGBA_TYPE_SGIX 0x8014 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 +/* reuse GLX_SCREEN_EXT */ +#endif + +#ifndef GLX_SGIX_pbuffer +#define GLX_PBUFFER_BIT_SGIX 0x00000004 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B +#define GLX_LARGEST_PBUFFER_SGIX 0x801C +#define GLX_WIDTH_SGIX 0x801D +#define GLX_HEIGHT_SGIX 0x801E +#define GLX_EVENT_MASK_SGIX 0x801F +#define GLX_DAMAGED_SGIX 0x8020 +#define GLX_SAVED_SGIX 0x8021 +#define GLX_WINDOW_SGIX 0x8022 +#define GLX_PBUFFER_SGIX 0x8023 +#endif + +#ifndef GLX_SGI_cushion +#endif + +#ifndef GLX_SGIX_video_resize +#define GLX_SYNC_FRAME_SGIX 0x00000000 +#define GLX_SYNC_SWAP_SGIX 0x00000001 +#endif + +#ifndef GLX_SGIX_dmbuffer +#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 +#endif + +#ifndef GLX_SGIX_swap_group +#endif + +#ifndef GLX_SGIX_swap_barrier +#endif + +#ifndef GLX_SGIS_blended_overlay +#define GLX_BLENDED_RGBA_SGIS 0x8025 +#endif + +#ifndef GLX_SGIS_shared_multisample +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 +#endif + +#ifndef GLX_SUN_get_transparent_index +#endif + +#ifndef GLX_3DFX_multisample +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 +#define GLX_SAMPLES_3DFX 0x8051 +#endif + +#ifndef GLX_MESA_copy_sub_buffer +#endif + +#ifndef GLX_MESA_pixmap_colormap +#endif + +#ifndef GLX_MESA_release_buffers +#endif + +#ifndef GLX_MESA_set_3dfx_mode +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 +#endif + +#ifndef GLX_SGIX_visual_select_group +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 +#endif + +#ifndef GLX_OML_swap_method +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 +#endif + +#ifndef GLX_OML_sync_control +#endif + +#ifndef GLX_NV_float_buffer +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 +#endif + +#ifndef GLX_SGIX_hyperpipe +#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 +#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 +#define GLX_BAD_HYPERPIPE_SGIX 92 +#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 +#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 +#define GLX_PIPE_RECT_SGIX 0x00000001 +#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 +#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 +#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 +#define GLX_HYPERPIPE_ID_SGIX 0x8030 +#endif + +#ifndef GLX_MESA_agp_offset +#endif + +#ifndef GLX_EXT_fbconfig_packed_float +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#endif + +#ifndef GLX_EXT_framebuffer_sRGB +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 +#endif + +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT +#define GLX_BACK_EXT GLX_BACK_LEFT_EXT +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB +#endif + +#ifndef GLX_NV_present_video +#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 +#endif + +#ifndef GLX_NV_video_out +#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 +#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 +#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 +#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 +#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 +#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA +#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB +#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC +#endif + +#ifndef GLX_NV_swap_group +#endif + +#ifndef GLX_NV_video_capture +#define GLX_DEVICE_ID_NV 0x20CD +#define GLX_UNIQUE_ID_NV 0x20CE +#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF +#endif + +#ifndef GLX_EXT_swap_control +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 +#endif + +#ifndef GLX_NV_copy_image +#endif + +#ifndef GLX_INTEL_swap_event +#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000 +#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180 +#define GLX_COPY_COMPLETE_INTEL 0x8181 +#define GLX_FLIP_COMPLETE_INTEL 0x8182 +#endif + +#ifndef GLX_NV_multisample_coverage +#define GLX_COVERAGE_SAMPLES_NV 100001 +#define GLX_COLOR_SAMPLES_NV 0x20B3 +#endif + +#ifndef GLX_AMD_gpu_association +#define GLX_GPU_VENDOR_AMD 0x1F00 +#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 +#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define GLX_GPU_RAM_AMD 0x21A3 +#define GLX_GPU_CLOCK_AMD 0x21A4 +#define GLX_GPU_NUM_PIPES_AMD 0x21A5 +#define GLX_GPU_NUM_SIMD_AMD 0x21A6 +#define GLX_GPU_NUM_RB_AMD 0x21A7 +#define GLX_GPU_NUM_SPI_AMD 0x21A8 +#endif + +#ifndef GLX_EXT_create_context_es2_profile +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#endif + + +/*************************************************************/ + +#ifndef GLX_ARB_get_proc_address +typedef void (*__GLXextFuncPtr)(void); +#endif + +#ifndef GLX_SGIX_video_source +typedef XID GLXVideoSourceSGIX; +#endif + +#ifndef GLX_SGIX_fbconfig +typedef XID GLXFBConfigIDSGIX; +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; +#endif + +#ifndef GLX_SGIX_pbuffer +typedef XID GLXPbufferSGIX; +typedef struct { + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display *display; /* display the event was read from */ + GLXDrawable drawable; /* i.d. of Drawable */ + int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ + int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ + unsigned int mask; /* mask indicating which buffers are affected*/ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ +} GLXBufferClobberEventSGIX; +#endif + +#ifndef GLX_NV_video_output +typedef unsigned int GLXVideoDeviceNV; +#endif + +#ifndef GLX_NV_video_capture +typedef XID GLXVideoCaptureDeviceNV; +#endif + +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glext.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 GLX_OML_sync_control 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__) +#include +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +#include /* Fallback option */ +#endif +#endif + +#ifndef GLX_VERSION_1_3 +#define GLX_VERSION_1_3 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLXFBConfig * glXGetFBConfigs (Display *dpy, int screen, int *nelements); +extern GLXFBConfig * glXChooseFBConfig (Display *dpy, int screen, const int *attrib_list, int *nelements); +extern int glXGetFBConfigAttrib (Display *dpy, GLXFBConfig config, int attribute, int *value); +extern XVisualInfo * glXGetVisualFromFBConfig (Display *dpy, GLXFBConfig config); +extern GLXWindow glXCreateWindow (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +extern void glXDestroyWindow (Display *dpy, GLXWindow win); +extern GLXPixmap glXCreatePixmap (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +extern void glXDestroyPixmap (Display *dpy, GLXPixmap pixmap); +extern GLXPbuffer glXCreatePbuffer (Display *dpy, GLXFBConfig config, const int *attrib_list); +extern void glXDestroyPbuffer (Display *dpy, GLXPbuffer pbuf); +extern void glXQueryDrawable (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +extern GLXContext glXCreateNewContext (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +extern Bool glXMakeContextCurrent (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +extern GLXDrawable glXGetCurrentReadDrawable (void); +extern Display * glXGetCurrentDisplay (void); +extern int glXQueryContext (Display *dpy, GLXContext ctx, int attribute, int *value); +extern void glXSelectEvent (Display *dpy, GLXDrawable draw, unsigned long event_mask); +extern void glXGetSelectedEvent (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); +typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); +typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); +typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void); +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +#endif + +#ifndef GLX_VERSION_1_4 +#define GLX_VERSION_1_4 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *procName); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); +#endif + +#ifndef GLX_ARB_get_proc_address +#define GLX_ARB_get_proc_address 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); +#endif + +#ifndef GLX_ARB_multisample +#define GLX_ARB_multisample 1 +#endif + +#ifndef GLX_ARB_fbconfig_float +#define GLX_ARB_fbconfig_float 1 +#endif + +#ifndef GLX_ARB_framebuffer_sRGB +#define GLX_ARB_framebuffer_sRGB 1 +#endif + +#ifndef GLX_ARB_create_context +#define GLX_ARB_create_context 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLXContext glXCreateContextAttribsARB (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); +#endif + +#ifndef GLX_ARB_create_context_profile +#define GLX_ARB_create_context_profile 1 +#endif + +#ifndef GLX_ARB_create_context_robustness +#define GLX_ARB_create_context_robustness 1 +#endif + +#ifndef GLX_SGIS_multisample +#define GLX_SGIS_multisample 1 +#endif + +#ifndef GLX_EXT_visual_info +#define GLX_EXT_visual_info 1 +#endif + +#ifndef GLX_SGI_swap_control +#define GLX_SGI_swap_control 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXSwapIntervalSGI (int interval); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); +#endif + +#ifndef GLX_SGI_video_sync +#define GLX_SGI_video_sync 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXGetVideoSyncSGI (unsigned int *count); +extern int glXWaitVideoSyncSGI (int divisor, int remainder, unsigned int *count); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count); +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count); +#endif + +#ifndef GLX_SGI_make_current_read +#define GLX_SGI_make_current_read 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Bool glXMakeCurrentReadSGI (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +extern GLXDrawable glXGetCurrentReadDrawableSGI (void); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); +#endif + +#ifndef GLX_SGIX_video_source +#define GLX_SGIX_video_source 1 +#ifdef _VL_H +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); +extern void glXDestroyGLXVideoSourceSGIX (Display *dpy, GLXVideoSourceSGIX glxvideosource); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); +typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource); +#endif /* _VL_H */ +#endif + +#ifndef GLX_EXT_visual_rating +#define GLX_EXT_visual_rating 1 +#endif + +#ifndef GLX_EXT_import_context +#define GLX_EXT_import_context 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Display * glXGetCurrentDisplayEXT (void); +extern int glXQueryContextInfoEXT (Display *dpy, GLXContext context, int attribute, int *value); +extern GLXContextID glXGetContextIDEXT (const GLXContext context); +extern GLXContext glXImportContextEXT (Display *dpy, GLXContextID contextID); +extern void glXFreeContextEXT (Display *dpy, GLXContext context); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void); +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value); +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID); +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context); +#endif + +#ifndef GLX_SGIX_fbconfig +#define GLX_SGIX_fbconfig 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXGetFBConfigAttribSGIX (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); +extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *dpy, int screen, int *attrib_list, int *nelements); +extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); +extern GLXContext glXCreateContextWithConfigSGIX (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); +extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *dpy, GLXFBConfigSGIX config); +extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *dpy, XVisualInfo *vis); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); +typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements); +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); +typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config); +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis); +#endif + +#ifndef GLX_SGIX_pbuffer +#define GLX_SGIX_pbuffer 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); +extern void glXDestroyGLXPbufferSGIX (Display *dpy, GLXPbufferSGIX pbuf); +extern int glXQueryGLXPbufferSGIX (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); +extern void glXSelectEventSGIX (Display *dpy, GLXDrawable drawable, unsigned long mask); +extern void glXGetSelectedEventSGIX (Display *dpy, GLXDrawable drawable, unsigned long *mask); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf); +typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask); +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask); +#endif + +#ifndef GLX_SGI_cushion +#define GLX_SGI_cushion 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern void glXCushionSGI (Display *dpy, Window window, float cushion); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion); +#endif + +#ifndef GLX_SGIX_video_resize +#define GLX_SGIX_video_resize 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXBindChannelToWindowSGIX (Display *display, int screen, int channel, Window window); +extern int glXChannelRectSGIX (Display *display, int screen, int channel, int x, int y, int w, int h); +extern int glXQueryChannelRectSGIX (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); +extern int glXQueryChannelDeltasSGIX (Display *display, int screen, int channel, int *x, int *y, int *w, int *h); +extern int glXChannelRectSyncSGIX (Display *display, int screen, int channel, GLenum synctype); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window); +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h); +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h); +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype); +#endif + +#ifndef GLX_SGIX_dmbuffer +#define GLX_SGIX_dmbuffer 1 +#ifdef _DM_BUFFER_H_ +#ifdef GLX_GLXEXT_PROTOTYPES +extern Bool glXAssociateDMPbufferSGIX (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); +#endif /* _DM_BUFFER_H_ */ +#endif + +#ifndef GLX_SGIX_swap_group +#define GLX_SGIX_swap_group 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern void glXJoinSwapGroupSGIX (Display *dpy, GLXDrawable drawable, GLXDrawable member); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); +#endif + +#ifndef GLX_SGIX_swap_barrier +#define GLX_SGIX_swap_barrier 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern void glXBindSwapBarrierSGIX (Display *dpy, GLXDrawable drawable, int barrier); +extern Bool glXQueryMaxSwapBarriersSGIX (Display *dpy, int screen, int *max); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); +#endif + +#ifndef GLX_SUN_get_transparent_index +#define GLX_SUN_get_transparent_index 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Status glXGetTransparentIndexSUN (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex); +#endif + +#ifndef GLX_MESA_copy_sub_buffer +#define GLX_MESA_copy_sub_buffer 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern void glXCopySubBufferMESA (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); +#endif + +#ifndef GLX_MESA_pixmap_colormap +#define GLX_MESA_pixmap_colormap 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); +#endif + +#ifndef GLX_MESA_release_buffers +#define GLX_MESA_release_buffers 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Bool glXReleaseBuffersMESA (Display *dpy, GLXDrawable drawable); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); +#endif + +#ifndef GLX_MESA_set_3dfx_mode +#define GLX_MESA_set_3dfx_mode 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Bool glXSet3DfxModeMESA (int mode); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); +#endif + +#ifndef GLX_SGIX_visual_select_group +#define GLX_SGIX_visual_select_group 1 +#endif + +#ifndef GLX_OML_swap_method +#define GLX_OML_swap_method 1 +#endif + +#ifndef GLX_OML_sync_control +#define GLX_OML_sync_control 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Bool glXGetSyncValuesOML (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); +extern Bool glXGetMscRateOML (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); +extern int64_t glXSwapBuffersMscOML (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); +extern Bool glXWaitForMscOML (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); +extern Bool glXWaitForSbcOML (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); +#endif + +#ifndef GLX_NV_float_buffer +#define GLX_NV_float_buffer 1 +#endif + +#ifndef GLX_SGIX_hyperpipe +#define GLX_SGIX_hyperpipe 1 + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int networkId; +} GLXHyperpipeNetworkSGIX; + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int channel; + unsigned int + participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int srcXOrigin, srcYOrigin, srcWidth, srcHeight; + int destXOrigin, destYOrigin, destWidth, destHeight; +} GLXPipeRect; + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int XOrigin, YOrigin, maxHeight, maxWidth; +} GLXPipeRectLimits; + +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *dpy, int *npipes); +extern int glXHyperpipeConfigSGIX (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); +extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *dpy, int hpId, int *npipes); +extern int glXDestroyHyperpipeConfigSGIX (Display *dpy, int hpId); +extern int glXBindHyperpipeSGIX (Display *dpy, int hpId); +extern int glXQueryHyperpipeBestAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); +extern int glXHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *attribList); +extern int glXQueryHyperpipeAttribSGIX (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); +typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); +typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); +typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); +typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); +typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +#endif + +#ifndef GLX_MESA_agp_offset +#define GLX_MESA_agp_offset 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern unsigned int glXGetAGPOffsetMESA (const void *pointer); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer); +#endif + +#ifndef GLX_EXT_fbconfig_packed_float +#define GLX_EXT_fbconfig_packed_float 1 +#endif + +#ifndef GLX_EXT_framebuffer_sRGB +#define GLX_EXT_framebuffer_sRGB 1 +#endif + +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_EXT_texture_from_pixmap 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern void glXBindTexImageEXT (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); +extern void glXReleaseTexImageEXT (Display *dpy, GLXDrawable drawable, int buffer); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer); +#endif + +#ifndef GLX_NV_present_video +#define GLX_NV_present_video 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern unsigned int * glXEnumerateVideoDevicesNV (Display *dpy, int screen, int *nelements); +extern int glXBindVideoDeviceNV (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef unsigned int * ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements); +typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); +#endif + +#ifndef GLX_NV_video_output +#define GLX_NV_video_output 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXGetVideoDeviceNV (Display *dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); +extern int glXReleaseVideoDeviceNV (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice); +extern int glXBindVideoImageNV (Display *dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); +extern int glXReleaseVideoImageNV (Display *dpy, GLXPbuffer pbuf); +extern int glXSendPbufferToVideoNV (Display *dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); +extern int glXGetVideoInfoNV (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display *dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); +typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice); +typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display *dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); +typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display *dpy, GLXPbuffer pbuf); +typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display *dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); +typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +#endif + +#ifndef GLX_NV_swap_group +#define GLX_NV_swap_group 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern Bool glXJoinSwapGroupNV (Display *dpy, GLXDrawable drawable, GLuint group); +extern Bool glXBindSwapBarrierNV (Display *dpy, GLuint group, GLuint barrier); +extern Bool glXQuerySwapGroupNV (Display *dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); +extern Bool glXQueryMaxSwapGroupsNV (Display *dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); +extern Bool glXQueryFrameCountNV (Display *dpy, int screen, GLuint *count); +extern Bool glXResetFrameCountNV (Display *dpy, int screen); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint group); +typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display *dpy, GLuint group, GLuint barrier); +typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display *dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); +typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display *dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); +typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display *dpy, int screen, GLuint *count); +typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display *dpy, int screen); +#endif + +#ifndef GLX_NV_video_capture +#define GLX_NV_video_capture 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXBindVideoCaptureDeviceNV (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); +extern GLXVideoCaptureDeviceNV * glXEnumerateVideoCaptureDevicesNV (Display *dpy, int screen, int *nelements); +extern void glXLockVideoCaptureDeviceNV (Display *dpy, GLXVideoCaptureDeviceNV device); +extern int glXQueryVideoCaptureDeviceNV (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); +extern void glXReleaseVideoCaptureDeviceNV (Display *dpy, GLXVideoCaptureDeviceNV device); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); +typedef GLXVideoCaptureDeviceNV * ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display *dpy, int screen, int *nelements); +typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device); +typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); +typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device); +#endif + +#ifndef GLX_EXT_swap_control +#define GLX_EXT_swap_control 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern int glXSwapIntervalEXT (Display *dpy, GLXDrawable drawable, int interval); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef int ( * PFNGLXSWAPINTERVALEXTPROC) (Display *dpy, GLXDrawable drawable, int interval); +#endif + +#ifndef GLX_NV_copy_image +#define GLX_NV_copy_image 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#endif + +#ifndef GLX_INTEL_swap_event +#define GLX_INTEL_swap_event 1 +#endif + +#ifndef GLX_NV_multisample_coverage +#define GLX_NV_multisample_coverage 1 +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/linux/include/GL/internal/dri_interface.h b/lib/linux/include/GL/internal/dri_interface.h new file mode 100644 index 0000000..b21445f --- /dev/null +++ b/lib/linux/include/GL/internal/dri_interface.h @@ -0,0 +1,986 @@ +/* + * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + * Copyright 2007-2008 Red Hat, Inc. + * (C) Copyright IBM Corporation 2004 + * 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 + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, 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 (including the next + * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS 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. + */ + +/** + * \file dri_interface.h + * + * This file contains all the types and functions that define the interface + * between a DRI driver and driver loader. Currently, the most common driver + * loader is the XFree86 libGL.so. However, other loaders do exist, and in + * the future the server-side libglx.a will also be a loader. + * + * \author Kevin E. Martin + * \author Ian Romanick + * \author Kristian Høgsberg + */ + +#ifndef DRI_INTERFACE_H +#define DRI_INTERFACE_H + +/* For archs with no drm.h */ +#if defined(__APPLE__) || defined(__CYGWIN__) || defined(__GNU__) +#ifndef __NOT_HAVE_DRM_H +#define __NOT_HAVE_DRM_H +#endif +#endif + +#ifndef __NOT_HAVE_DRM_H +#include +#else +typedef unsigned int drm_context_t; +typedef unsigned int drm_drawable_t; +typedef struct drm_clip_rect drm_clip_rect_t; +#endif + +/** + * \name DRI interface structures + * + * The following structures define the interface between the GLX client + * side library and the DRI (direct rendering infrastructure). + */ +/*@{*/ +typedef struct __DRIdisplayRec __DRIdisplay; +typedef struct __DRIscreenRec __DRIscreen; +typedef struct __DRIcontextRec __DRIcontext; +typedef struct __DRIdrawableRec __DRIdrawable; +typedef struct __DRIconfigRec __DRIconfig; +typedef struct __DRIframebufferRec __DRIframebuffer; +typedef struct __DRIversionRec __DRIversion; + +typedef struct __DRIcoreExtensionRec __DRIcoreExtension; +typedef struct __DRIextensionRec __DRIextension; +typedef struct __DRIcopySubBufferExtensionRec __DRIcopySubBufferExtension; +typedef struct __DRIswapControlExtensionRec __DRIswapControlExtension; +typedef struct __DRIframeTrackingExtensionRec __DRIframeTrackingExtension; +typedef struct __DRImediaStreamCounterExtensionRec __DRImediaStreamCounterExtension; +typedef struct __DRItexOffsetExtensionRec __DRItexOffsetExtension; +typedef struct __DRItexBufferExtensionRec __DRItexBufferExtension; +typedef struct __DRIlegacyExtensionRec __DRIlegacyExtension; +typedef struct __DRIswrastExtensionRec __DRIswrastExtension; +typedef struct __DRIbufferRec __DRIbuffer; +typedef struct __DRIdri2ExtensionRec __DRIdri2Extension; +typedef struct __DRIdri2LoaderExtensionRec __DRIdri2LoaderExtension; +typedef struct __DRI2flushExtensionRec __DRI2flushExtension; +typedef struct __DRI2throttleExtensionRec __DRI2throttleExtension; + +/*@}*/ + + +/** + * Extension struct. Drivers 'inherit' from this struct by embedding + * it as the first element in the extension struct. + * + * We never break API in for a DRI extension. If we need to change + * the way things work in a non-backwards compatible manner, we + * introduce a new extension. During a transition period, we can + * leave both the old and the new extension in the driver, which + * allows us to move to the new interface without having to update the + * loader(s) in lock step. + * + * However, we can add entry points to an extension over time as long + * as we don't break the old ones. As we add entry points to an + * extension, we increase the version number. The corresponding + * #define can be used to guard code that accesses the new entry + * points at compile time and the version field in the extension + * struct can be used at run-time to determine how to use the + * extension. + */ +struct __DRIextensionRec { + const char *name; + int version; +}; + +/** + * The first set of extension are the screen extensions, returned by + * __DRIcore::getExtensions(). This entry point will return a list of + * extensions and the loader can use the ones it knows about by + * casting them to more specific extensions and advertising any GLX + * extensions the DRI extensions enables. + */ + +/** + * Used by drivers to indicate support for setting the read drawable. + */ +#define __DRI_READ_DRAWABLE "DRI_ReadDrawable" +#define __DRI_READ_DRAWABLE_VERSION 1 + +/** + * Used by drivers that implement the GLX_MESA_copy_sub_buffer extension. + */ +#define __DRI_COPY_SUB_BUFFER "DRI_CopySubBuffer" +#define __DRI_COPY_SUB_BUFFER_VERSION 1 +struct __DRIcopySubBufferExtensionRec { + __DRIextension base; + void (*copySubBuffer)(__DRIdrawable *drawable, int x, int y, int w, int h); +}; + +/** + * Used by drivers that implement the GLX_SGI_swap_control or + * GLX_MESA_swap_control extension. + */ +#define __DRI_SWAP_CONTROL "DRI_SwapControl" +#define __DRI_SWAP_CONTROL_VERSION 1 +struct __DRIswapControlExtensionRec { + __DRIextension base; + void (*setSwapInterval)(__DRIdrawable *drawable, unsigned int inteval); + unsigned int (*getSwapInterval)(__DRIdrawable *drawable); +}; + +/** + * Used by drivers that implement the GLX_MESA_swap_frame_usage extension. + */ +#define __DRI_FRAME_TRACKING "DRI_FrameTracking" +#define __DRI_FRAME_TRACKING_VERSION 1 +struct __DRIframeTrackingExtensionRec { + __DRIextension base; + + /** + * Enable or disable frame usage tracking. + * + * \since Internal API version 20030317. + */ + int (*frameTracking)(__DRIdrawable *drawable, GLboolean enable); + + /** + * Retrieve frame usage information. + * + * \since Internal API version 20030317. + */ + int (*queryFrameTracking)(__DRIdrawable *drawable, + int64_t * sbc, int64_t * missedFrames, + float * lastMissedUsage, float * usage); +}; + + +/** + * Used by drivers that implement the GLX_SGI_video_sync extension. + */ +#define __DRI_MEDIA_STREAM_COUNTER "DRI_MediaStreamCounter" +#define __DRI_MEDIA_STREAM_COUNTER_VERSION 1 +struct __DRImediaStreamCounterExtensionRec { + __DRIextension base; + + /** + * Wait for the MSC to equal target_msc, or, if that has already passed, + * the next time (MSC % divisor) is equal to remainder. If divisor is + * zero, the function will return as soon as MSC is greater than or equal + * to target_msc. + */ + int (*waitForMSC)(__DRIdrawable *drawable, + int64_t target_msc, int64_t divisor, int64_t remainder, + int64_t * msc, int64_t * sbc); + + /** + * Get the number of vertical refreshes since some point in time before + * this function was first called (i.e., system start up). + */ + int (*getDrawableMSC)(__DRIscreen *screen, __DRIdrawable *drawable, + int64_t *msc); +}; + + +#define __DRI_TEX_OFFSET "DRI_TexOffset" +#define __DRI_TEX_OFFSET_VERSION 1 +struct __DRItexOffsetExtensionRec { + __DRIextension base; + + /** + * Method to override base texture image with a driver specific 'offset'. + * The depth passed in allows e.g. to ignore the alpha channel of texture + * images where the non-alpha components don't occupy a whole texel. + * + * For GLX_EXT_texture_from_pixmap with AIGLX. + */ + void (*setTexOffset)(__DRIcontext *pDRICtx, GLint texname, + unsigned long long offset, GLint depth, GLuint pitch); +}; + + +/* Valid values for format in the setTexBuffer2 function below. These + * values match the GLX tokens for compatibility reasons, but we + * define them here since the DRI interface can't depend on GLX. */ +#define __DRI_TEXTURE_FORMAT_NONE 0x20D8 +#define __DRI_TEXTURE_FORMAT_RGB 0x20D9 +#define __DRI_TEXTURE_FORMAT_RGBA 0x20DA + +#define __DRI_TEX_BUFFER "DRI_TexBuffer" +#define __DRI_TEX_BUFFER_VERSION 2 +struct __DRItexBufferExtensionRec { + __DRIextension base; + + /** + * Method to override base texture image with the contents of a + * __DRIdrawable. + * + * For GLX_EXT_texture_from_pixmap with AIGLX. Deprecated in favor of + * setTexBuffer2 in version 2 of this interface + */ + void (*setTexBuffer)(__DRIcontext *pDRICtx, + GLint target, + __DRIdrawable *pDraw); + + /** + * Method to override base texture image with the contents of a + * __DRIdrawable, including the required texture format attribute. + * + * For GLX_EXT_texture_from_pixmap with AIGLX. + */ + void (*setTexBuffer2)(__DRIcontext *pDRICtx, + GLint target, + GLint format, + __DRIdrawable *pDraw); + /** + * Method to release texture buffer in case some special platform + * need this. + * + * For GLX_EXT_texture_from_pixmap with AIGLX. + */ + void (*releaseTexBuffer)(__DRIcontext *pDRICtx, + GLint target, + __DRIdrawable *pDraw); +}; + +/** + * Used by drivers that implement DRI2 + */ +#define __DRI2_FLUSH "DRI2_Flush" +#define __DRI2_FLUSH_VERSION 3 +struct __DRI2flushExtensionRec { + __DRIextension base; + void (*flush)(__DRIdrawable *drawable); + + /** + * Ask the driver to call getBuffers/getBuffersWithFormat before + * it starts rendering again. + * + * \param drawable the drawable to invalidate + * + * \since 3 + */ + void (*invalidate)(__DRIdrawable *drawable); +}; + + +/** + * Extension that the driver uses to request + * throttle callbacks. + */ + +#define __DRI2_THROTTLE "DRI2_Throttle" +#define __DRI2_THROTTLE_VERSION 1 + +enum __DRI2throttleReason { + __DRI2_THROTTLE_SWAPBUFFER, + __DRI2_THROTTLE_COPYSUBBUFFER, + __DRI2_THROTTLE_FLUSHFRONT +}; + +struct __DRI2throttleExtensionRec { + __DRIextension base; + void (*throttle)(__DRIcontext *ctx, + __DRIdrawable *drawable, + enum __DRI2throttleReason reason); +}; + +/** + * XML document describing the configuration options supported by the + * driver. + */ +extern const char __driConfigOptions[]; + +/*@}*/ + +/** + * The following extensions describe loader features that the DRI + * driver can make use of. Some of these are mandatory, such as the + * getDrawableInfo extension for DRI and the DRI Loader extensions for + * DRI2, while others are optional, and if present allow the driver to + * expose certain features. The loader pass in a NULL terminated + * array of these extensions to the driver in the createNewScreen + * constructor. + */ + +typedef struct __DRIgetDrawableInfoExtensionRec __DRIgetDrawableInfoExtension; +typedef struct __DRIsystemTimeExtensionRec __DRIsystemTimeExtension; +typedef struct __DRIdamageExtensionRec __DRIdamageExtension; +typedef struct __DRIloaderExtensionRec __DRIloaderExtension; +typedef struct __DRIswrastLoaderExtensionRec __DRIswrastLoaderExtension; + + +/** + * Callback to getDrawableInfo protocol + */ +#define __DRI_GET_DRAWABLE_INFO "DRI_GetDrawableInfo" +#define __DRI_GET_DRAWABLE_INFO_VERSION 1 +struct __DRIgetDrawableInfoExtensionRec { + __DRIextension base; + + /** + * This function is used to get information about the position, size, and + * clip rects of a drawable. + */ + GLboolean (* getDrawableInfo) ( __DRIdrawable *drawable, + unsigned int * index, unsigned int * stamp, + int * x, int * y, int * width, int * height, + int * numClipRects, drm_clip_rect_t ** pClipRects, + int * backX, int * backY, + int * numBackClipRects, drm_clip_rect_t ** pBackClipRects, + void *loaderPrivate); +}; + +/** + * Callback to get system time for media stream counter extensions. + */ +#define __DRI_SYSTEM_TIME "DRI_SystemTime" +#define __DRI_SYSTEM_TIME_VERSION 1 +struct __DRIsystemTimeExtensionRec { + __DRIextension base; + + /** + * Get the 64-bit unadjusted system time (UST). + */ + int (*getUST)(int64_t * ust); + + /** + * Get the media stream counter (MSC) rate. + * + * Matching the definition in GLX_OML_sync_control, this function returns + * the rate of the "media stream counter". In practical terms, this is + * the frame refresh rate of the display. + */ + GLboolean (*getMSCRate)(__DRIdrawable *draw, + int32_t * numerator, int32_t * denominator, + void *loaderPrivate); +}; + +/** + * Damage reporting + */ +#define __DRI_DAMAGE "DRI_Damage" +#define __DRI_DAMAGE_VERSION 1 +struct __DRIdamageExtensionRec { + __DRIextension base; + + /** + * Reports areas of the given drawable which have been modified by the + * driver. + * + * \param drawable which the drawing was done to. + * \param rects rectangles affected, with the drawable origin as the + * origin. + * \param x X offset of the drawable within the screen (used in the + * front_buffer case) + * \param y Y offset of the drawable within the screen. + * \param front_buffer boolean flag for whether the drawing to the + * drawable was actually done directly to the front buffer (instead + * of backing storage, for example) + * \param loaderPrivate the data passed in at createNewDrawable time + */ + void (*reportDamage)(__DRIdrawable *draw, + int x, int y, + drm_clip_rect_t *rects, int num_rects, + GLboolean front_buffer, + void *loaderPrivate); +}; + +#define __DRI_SWRAST_IMAGE_OP_DRAW 1 +#define __DRI_SWRAST_IMAGE_OP_CLEAR 2 +#define __DRI_SWRAST_IMAGE_OP_SWAP 3 + +/** + * SWRast Loader extension. + */ +#define __DRI_SWRAST_LOADER "DRI_SWRastLoader" +#define __DRI_SWRAST_LOADER_VERSION 1 +struct __DRIswrastLoaderExtensionRec { + __DRIextension base; + + /* + * Drawable position and size + */ + void (*getDrawableInfo)(__DRIdrawable *drawable, + int *x, int *y, int *width, int *height, + void *loaderPrivate); + + /** + * Put image to drawable + */ + void (*putImage)(__DRIdrawable *drawable, int op, + int x, int y, int width, int height, + char *data, void *loaderPrivate); + + /** + * Get image from readable + */ + void (*getImage)(__DRIdrawable *readable, + int x, int y, int width, int height, + char *data, void *loaderPrivate); +}; + +/** + * Invalidate loader extension. The presence of this extension + * indicates to the DRI driver that the loader will call invalidate in + * the __DRI2_FLUSH extension, whenever the needs to query for new + * buffers. This means that the DRI driver can drop the polling in + * glViewport(). + * + * The extension doesn't provide any functionality, it's only use to + * indicate to the driver that it can use the new semantics. A DRI + * driver can use this to switch between the different semantics or + * just refuse to initialize if this extension isn't present. + */ +#define __DRI_USE_INVALIDATE "DRI_UseInvalidate" +#define __DRI_USE_INVALIDATE_VERSION 1 + +typedef struct __DRIuseInvalidateExtensionRec __DRIuseInvalidateExtension; +struct __DRIuseInvalidateExtensionRec { + __DRIextension base; +}; + +/** + * The remaining extensions describe driver extensions, immediately + * available interfaces provided by the driver. To start using the + * driver, dlsym() for the __DRI_DRIVER_EXTENSIONS symbol and look for + * the extension you need in the array. + */ +#define __DRI_DRIVER_EXTENSIONS "__driDriverExtensions" + +/** + * Tokens for __DRIconfig attribs. A number of attributes defined by + * GLX or EGL standards are not in the table, as they must be provided + * by the loader. For example, FBConfig ID or visual ID, drawable type. + */ + +#define __DRI_ATTRIB_BUFFER_SIZE 1 +#define __DRI_ATTRIB_LEVEL 2 +#define __DRI_ATTRIB_RED_SIZE 3 +#define __DRI_ATTRIB_GREEN_SIZE 4 +#define __DRI_ATTRIB_BLUE_SIZE 5 +#define __DRI_ATTRIB_LUMINANCE_SIZE 6 +#define __DRI_ATTRIB_ALPHA_SIZE 7 +#define __DRI_ATTRIB_ALPHA_MASK_SIZE 8 +#define __DRI_ATTRIB_DEPTH_SIZE 9 +#define __DRI_ATTRIB_STENCIL_SIZE 10 +#define __DRI_ATTRIB_ACCUM_RED_SIZE 11 +#define __DRI_ATTRIB_ACCUM_GREEN_SIZE 12 +#define __DRI_ATTRIB_ACCUM_BLUE_SIZE 13 +#define __DRI_ATTRIB_ACCUM_ALPHA_SIZE 14 +#define __DRI_ATTRIB_SAMPLE_BUFFERS 15 +#define __DRI_ATTRIB_SAMPLES 16 +#define __DRI_ATTRIB_RENDER_TYPE 17 +#define __DRI_ATTRIB_CONFIG_CAVEAT 18 +#define __DRI_ATTRIB_CONFORMANT 19 +#define __DRI_ATTRIB_DOUBLE_BUFFER 20 +#define __DRI_ATTRIB_STEREO 21 +#define __DRI_ATTRIB_AUX_BUFFERS 22 +#define __DRI_ATTRIB_TRANSPARENT_TYPE 23 +#define __DRI_ATTRIB_TRANSPARENT_INDEX_VALUE 24 +#define __DRI_ATTRIB_TRANSPARENT_RED_VALUE 25 +#define __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE 26 +#define __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE 27 +#define __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE 28 +#define __DRI_ATTRIB_FLOAT_MODE 29 +#define __DRI_ATTRIB_RED_MASK 30 +#define __DRI_ATTRIB_GREEN_MASK 31 +#define __DRI_ATTRIB_BLUE_MASK 32 +#define __DRI_ATTRIB_ALPHA_MASK 33 +#define __DRI_ATTRIB_MAX_PBUFFER_WIDTH 34 +#define __DRI_ATTRIB_MAX_PBUFFER_HEIGHT 35 +#define __DRI_ATTRIB_MAX_PBUFFER_PIXELS 36 +#define __DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH 37 +#define __DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT 38 +#define __DRI_ATTRIB_VISUAL_SELECT_GROUP 39 +#define __DRI_ATTRIB_SWAP_METHOD 40 +#define __DRI_ATTRIB_MAX_SWAP_INTERVAL 41 +#define __DRI_ATTRIB_MIN_SWAP_INTERVAL 42 +#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGB 43 +#define __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA 44 +#define __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE 45 +#define __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS 46 +#define __DRI_ATTRIB_YINVERTED 47 +#define __DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE 48 + +/* __DRI_ATTRIB_RENDER_TYPE */ +#define __DRI_ATTRIB_RGBA_BIT 0x01 +#define __DRI_ATTRIB_COLOR_INDEX_BIT 0x02 +#define __DRI_ATTRIB_LUMINANCE_BIT 0x04 + +/* __DRI_ATTRIB_CONFIG_CAVEAT */ +#define __DRI_ATTRIB_SLOW_BIT 0x01 +#define __DRI_ATTRIB_NON_CONFORMANT_CONFIG 0x02 + +/* __DRI_ATTRIB_TRANSPARENT_TYPE */ +#define __DRI_ATTRIB_TRANSPARENT_RGB 0x00 +#define __DRI_ATTRIB_TRANSPARENT_INDEX 0x01 + +/* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS */ +#define __DRI_ATTRIB_TEXTURE_1D_BIT 0x01 +#define __DRI_ATTRIB_TEXTURE_2D_BIT 0x02 +#define __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT 0x04 + +/** + * This extension defines the core DRI functionality. + */ +#define __DRI_CORE "DRI_Core" +#define __DRI_CORE_VERSION 1 + +struct __DRIcoreExtensionRec { + __DRIextension base; + + __DRIscreen *(*createNewScreen)(int screen, int fd, + unsigned int sarea_handle, + const __DRIextension **extensions, + const __DRIconfig ***driverConfigs, + void *loaderPrivate); + + void (*destroyScreen)(__DRIscreen *screen); + + const __DRIextension **(*getExtensions)(__DRIscreen *screen); + + int (*getConfigAttrib)(const __DRIconfig *config, + unsigned int attrib, + unsigned int *value); + + int (*indexConfigAttrib)(const __DRIconfig *config, int index, + unsigned int *attrib, unsigned int *value); + + __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, + const __DRIconfig *config, + unsigned int drawable_id, + unsigned int head, + void *loaderPrivate); + + void (*destroyDrawable)(__DRIdrawable *drawable); + + void (*swapBuffers)(__DRIdrawable *drawable); + + __DRIcontext *(*createNewContext)(__DRIscreen *screen, + const __DRIconfig *config, + __DRIcontext *shared, + void *loaderPrivate); + + int (*copyContext)(__DRIcontext *dest, + __DRIcontext *src, + unsigned long mask); + + void (*destroyContext)(__DRIcontext *context); + + int (*bindContext)(__DRIcontext *ctx, + __DRIdrawable *pdraw, + __DRIdrawable *pread); + + int (*unbindContext)(__DRIcontext *ctx); +}; + +/** + * Stored version of some component (i.e., server-side DRI module, kernel-side + * DRM, etc.). + * + * \todo + * There are several data structures that explicitly store a major version, + * minor version, and patch level. These structures should be modified to + * have a \c __DRIversionRec instead. + */ +struct __DRIversionRec { + int major; /**< Major version number. */ + int minor; /**< Minor version number. */ + int patch; /**< Patch-level. */ +}; + +/** + * Framebuffer information record. Used by libGL to communicate information + * about the framebuffer to the driver's \c __driCreateNewScreen function. + * + * In XFree86, most of this information is derrived from data returned by + * calling \c XF86DRIGetDeviceInfo. + * + * \sa XF86DRIGetDeviceInfo __DRIdisplayRec::createNewScreen + * __driUtilCreateNewScreen CallCreateNewScreen + * + * \bug This structure could be better named. + */ +struct __DRIframebufferRec { + unsigned char *base; /**< Framebuffer base address in the CPU's + * address space. This value is calculated by + * calling \c drmMap on the framebuffer handle + * returned by \c XF86DRIGetDeviceInfo (or a + * similar function). + */ + int size; /**< Framebuffer size, in bytes. */ + int stride; /**< Number of bytes from one line to the next. */ + int width; /**< Pixel width of the framebuffer. */ + int height; /**< Pixel height of the framebuffer. */ + int dev_priv_size; /**< Size of the driver's dev-priv structure. */ + void *dev_priv; /**< Pointer to the driver's dev-priv structure. */ +}; + + +/** + * This extension provides alternative screen, drawable and context + * constructors for legacy DRI functionality. This is used in + * conjunction with the core extension. + */ +#define __DRI_LEGACY "DRI_Legacy" +#define __DRI_LEGACY_VERSION 1 + +struct __DRIlegacyExtensionRec { + __DRIextension base; + + __DRIscreen *(*createNewScreen)(int screen, + const __DRIversion *ddx_version, + const __DRIversion *dri_version, + const __DRIversion *drm_version, + const __DRIframebuffer *frame_buffer, + void *pSAREA, int fd, + const __DRIextension **extensions, + const __DRIconfig ***driver_configs, + void *loaderPrivate); + + __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, + const __DRIconfig *config, + drm_drawable_t hwDrawable, + int renderType, const int *attrs, + void *loaderPrivate); + + __DRIcontext *(*createNewContext)(__DRIscreen *screen, + const __DRIconfig *config, + int render_type, + __DRIcontext *shared, + drm_context_t hwContext, + void *loaderPrivate); +}; + +/** + * This extension provides alternative screen, drawable and context + * constructors for swrast DRI functionality. This is used in + * conjunction with the core extension. + */ +#define __DRI_SWRAST "DRI_SWRast" +#define __DRI_SWRAST_VERSION 3 + +struct __DRIswrastExtensionRec { + __DRIextension base; + + __DRIscreen *(*createNewScreen)(int screen, + const __DRIextension **extensions, + const __DRIconfig ***driver_configs, + void *loaderPrivate); + + __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, + const __DRIconfig *config, + void *loaderPrivate); + + /* Since version 2 */ + __DRIcontext *(*createNewContextForAPI)(__DRIscreen *screen, + int api, + const __DRIconfig *config, + __DRIcontext *shared, + void *data); + + /** + * Create a context for a particular API with a set of attributes + * + * \since version 3 + * + * \sa __DRIdri2ExtensionRec::createContextAttribs + */ + __DRIcontext *(*createContextAttribs)(__DRIscreen *screen, + int api, + const __DRIconfig *config, + __DRIcontext *shared, + unsigned num_attribs, + const uint32_t *attribs, + unsigned *error, + void *loaderPrivate); +}; + +/** + * DRI2 Loader extension. + */ +#define __DRI_BUFFER_FRONT_LEFT 0 +#define __DRI_BUFFER_BACK_LEFT 1 +#define __DRI_BUFFER_FRONT_RIGHT 2 +#define __DRI_BUFFER_BACK_RIGHT 3 +#define __DRI_BUFFER_DEPTH 4 +#define __DRI_BUFFER_STENCIL 5 +#define __DRI_BUFFER_ACCUM 6 +#define __DRI_BUFFER_FAKE_FRONT_LEFT 7 +#define __DRI_BUFFER_FAKE_FRONT_RIGHT 8 +#define __DRI_BUFFER_DEPTH_STENCIL 9 /**< Only available with DRI2 1.1 */ +#define __DRI_BUFFER_HIZ 10 + +/* Inofficial and for internal use. Increase when adding a new buffer token. */ +#define __DRI_BUFFER_COUNT 11 + +struct __DRIbufferRec { + unsigned int attachment; + unsigned int name; + unsigned int pitch; + unsigned int cpp; + unsigned int flags; +}; + +#define __DRI_DRI2_LOADER "DRI_DRI2Loader" +#define __DRI_DRI2_LOADER_VERSION 3 +struct __DRIdri2LoaderExtensionRec { + __DRIextension base; + + __DRIbuffer *(*getBuffers)(__DRIdrawable *driDrawable, + int *width, int *height, + unsigned int *attachments, int count, + int *out_count, void *loaderPrivate); + + /** + * Flush pending front-buffer rendering + * + * Any rendering that has been performed to the + * \c __DRI_BUFFER_FAKE_FRONT_LEFT will be flushed to the + * \c __DRI_BUFFER_FRONT_LEFT. + * + * \param driDrawable Drawable whose front-buffer is to be flushed + * \param loaderPrivate Loader's private data that was previously passed + * into __DRIdri2ExtensionRec::createNewDrawable + */ + void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate); + + + /** + * Get list of buffers from the server + * + * Gets a list of buffer for the specified set of attachments. Unlike + * \c ::getBuffers, this function takes a list of attachments paired with + * opaque \c unsigned \c int value describing the format of the buffer. + * It is the responsibility of the caller to know what the service that + * allocates the buffers will expect to receive for the format. + * + * \param driDrawable Drawable whose buffers are being queried. + * \param width Output where the width of the buffers is stored. + * \param height Output where the height of the buffers is stored. + * \param attachments List of pairs of attachment ID and opaque format + * requested for the drawable. + * \param count Number of attachment / format pairs stored in + * \c attachments. + * \param loaderPrivate Loader's private data that was previously passed + * into __DRIdri2ExtensionRec::createNewDrawable. + */ + __DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable, + int *width, int *height, + unsigned int *attachments, int count, + int *out_count, void *loaderPrivate); +}; + +/** + * This extension provides alternative screen, drawable and context + * constructors for DRI2. + */ +#define __DRI_DRI2 "DRI_DRI2" +#define __DRI_DRI2_VERSION 3 + +#define __DRI_API_OPENGL 0 /**< OpenGL compatibility profile */ +#define __DRI_API_GLES 1 +#define __DRI_API_GLES2 2 +#define __DRI_API_OPENGL_CORE 3 /**< OpenGL 3.2+ core profile */ + +#define __DRI_CTX_ATTRIB_MAJOR_VERSION 0 +#define __DRI_CTX_ATTRIB_MINOR_VERSION 1 +#define __DRI_CTX_ATTRIB_FLAGS 2 + +#define __DRI_CTX_FLAG_DEBUG 0x00000001 +#define __DRI_CTX_FLAG_FORWARD_COMPATIBLE 0x00000002 + +/** + * \name Reasons that __DRIdri2Extension::createContextAttribs might fail + */ +/*@{*/ +/** Success! */ +#define __DRI_CTX_ERROR_SUCCESS 0 + +/** Memory allocation failure */ +#define __DRI_CTX_ERROR_NO_MEMORY 1 + +/** Client requested an API (e.g., OpenGL ES 2.0) that the driver can't do. */ +#define __DRI_CTX_ERROR_BAD_API 2 + +/** Client requested an API version that the driver can't do. */ +#define __DRI_CTX_ERROR_BAD_VERSION 3 + +/** Client requested a flag or combination of flags the driver can't do. */ +#define __DRI_CTX_ERROR_BAD_FLAG 4 + +/** Client requested an attribute the driver doesn't understand. */ +#define __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE 5 + +/** Client requested a flag the driver doesn't understand. */ +#define __DRI_CTX_ERROR_UNKNOWN_FLAG 6 +/*@}*/ + +struct __DRIdri2ExtensionRec { + __DRIextension base; + + __DRIscreen *(*createNewScreen)(int screen, int fd, + const __DRIextension **extensions, + const __DRIconfig ***driver_configs, + void *loaderPrivate); + + __DRIdrawable *(*createNewDrawable)(__DRIscreen *screen, + const __DRIconfig *config, + void *loaderPrivate); + + __DRIcontext *(*createNewContext)(__DRIscreen *screen, + const __DRIconfig *config, + __DRIcontext *shared, + void *loaderPrivate); + + /* Since version 2 */ + unsigned int (*getAPIMask)(__DRIscreen *screen); + + __DRIcontext *(*createNewContextForAPI)(__DRIscreen *screen, + int api, + const __DRIconfig *config, + __DRIcontext *shared, + void *data); + + __DRIbuffer *(*allocateBuffer)(__DRIscreen *screen, + unsigned int attachment, + unsigned int format, + int width, + int height); + void (*releaseBuffer)(__DRIscreen *screen, + __DRIbuffer *buffer); + + /** + * Create a context for a particular API with a set of attributes + * + * \since version 3 + * + * \sa __DRIswrastExtensionRec::createContextAttribs + */ + __DRIcontext *(*createContextAttribs)(__DRIscreen *screen, + int api, + const __DRIconfig *config, + __DRIcontext *shared, + unsigned num_attribs, + const uint32_t *attribs, + unsigned *error, + void *loaderPrivate); +}; + + +/** + * This extension provides functionality to enable various EGLImage + * extensions. + */ +#define __DRI_IMAGE "DRI_IMAGE" +#define __DRI_IMAGE_VERSION 1 + +/** + * These formats correspond to the similarly named MESA_FORMAT_* + * tokens, except in the native endian of the CPU. For example, on + * little endian __DRI_IMAGE_FORMAT_XRGB8888 corresponds to + * MESA_FORMAT_XRGB8888, but MESA_FORMAT_XRGB8888_REV on big endian. + */ +#define __DRI_IMAGE_FORMAT_RGB565 0x1001 +#define __DRI_IMAGE_FORMAT_XRGB8888 0x1002 +#define __DRI_IMAGE_FORMAT_ARGB8888 0x1003 +#define __DRI_IMAGE_FORMAT_ABGR8888 0x1004 + +#define __DRI_IMAGE_USE_SHARE 0x0001 +#define __DRI_IMAGE_USE_SCANOUT 0x0002 +#define __DRI_IMAGE_USE_CURSOR 0x0004 + +/** + * queryImage attributes + */ + +#define __DRI_IMAGE_ATTRIB_STRIDE 0x2000 +#define __DRI_IMAGE_ATTRIB_HANDLE 0x2001 +#define __DRI_IMAGE_ATTRIB_NAME 0x2002 + +typedef struct __DRIimageRec __DRIimage; +typedef struct __DRIimageExtensionRec __DRIimageExtension; +struct __DRIimageExtensionRec { + __DRIextension base; + + __DRIimage *(*createImageFromName)(__DRIscreen *screen, + int width, int height, int format, + int name, int pitch, + void *loaderPrivate); + + __DRIimage *(*createImageFromRenderbuffer)(__DRIcontext *context, + int renderbuffer, + void *loaderPrivate); + + void (*destroyImage)(__DRIimage *image); + + __DRIimage *(*createImage)(__DRIscreen *screen, + int width, int height, int format, + unsigned int use, + void *loaderPrivate); + + GLboolean (*queryImage)(__DRIimage *image, int attrib, int *value); + + /** + * The new __DRIimage will share the content with the old one, see dup(2). + */ + __DRIimage *(*dupImage)(__DRIimage *image, void *loaderPrivate); +}; + + +/** + * This extension must be implemented by the loader and passed to the + * driver at screen creation time. The EGLImage entry points in the + * various client APIs take opaque EGLImage handles and use this + * extension to map them to a __DRIimage. At version 1, this + * extensions allows mapping EGLImage pointers to __DRIimage pointers, + * but future versions could support other EGLImage-like, opaque types + * with new lookup functions. + */ +#define __DRI_IMAGE_LOOKUP "DRI_IMAGE_LOOKUP" +#define __DRI_IMAGE_LOOKUP_VERSION 1 + +typedef struct __DRIimageLookupExtensionRec __DRIimageLookupExtension; +struct __DRIimageLookupExtensionRec { + __DRIextension base; + + __DRIimage *(*lookupEGLImage)(__DRIscreen *screen, void *image, + void *loaderPrivate); +}; + +/** + * This extension allows for common DRI2 options + */ +#define __DRI2_CONFIG_QUERY "DRI_CONFIG_QUERY" +#define __DRI2_CONFIG_QUERY_VERSION 1 + +typedef struct __DRI2configQueryExtensionRec __DRI2configQueryExtension; +struct __DRI2configQueryExtensionRec { + __DRIextension base; + + int (*configQueryb)(__DRIscreen *screen, const char *var, GLboolean *val); + int (*configQueryi)(__DRIscreen *screen, const char *var, GLint *val); + int (*configQueryf)(__DRIscreen *screen, const char *var, GLfloat *val); +}; +#endif diff --git a/lib/linux/include/GL/wglew.h b/lib/linux/include/GL/wglew.h new file mode 100644 index 0000000..05f054f --- /dev/null +++ b/lib/linux/include/GL/wglew.h @@ -0,0 +1,1363 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2002-2008, Milan Ikits +** Copyright (C) 2002-2008, Marcelo E. Magallon +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* +** 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. +*/ + +#ifndef __wglew_h__ +#define __wglew_h__ +#define __WGLEW_H__ + +#ifdef __wglext_h_ +#error wglext.h included before wglew.h +#endif + +#define __wglext_h_ + +#if !defined(WINAPI) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN 1 +# endif +#include +# undef WIN32_LEAN_AND_MEAN +#endif + +/* + * GLEW_STATIC needs to be set when using the static version. + * GLEW_BUILD is set when building the DLL version. + */ +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* -------------------------- WGL_3DFX_multisample ------------------------- */ + +#ifndef WGL_3DFX_multisample +#define WGL_3DFX_multisample 1 + +#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 +#define WGL_SAMPLES_3DFX 0x2061 + +#define WGLEW_3DFX_multisample WGLEW_GET_VAR(__WGLEW_3DFX_multisample) + +#endif /* WGL_3DFX_multisample */ + +/* ------------------------- WGL_3DL_stereo_control ------------------------ */ + +#ifndef WGL_3DL_stereo_control +#define WGL_3DL_stereo_control 1 + +#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 + +typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState); + +#define wglSetStereoEmitterState3DL WGLEW_GET_FUN(__wglewSetStereoEmitterState3DL) + +#define WGLEW_3DL_stereo_control WGLEW_GET_VAR(__WGLEW_3DL_stereo_control) + +#endif /* WGL_3DL_stereo_control */ + +/* ------------------------ WGL_AMD_gpu_association ------------------------ */ + +#ifndef WGL_AMD_gpu_association +#define WGL_AMD_gpu_association 1 + +#define WGL_GPU_VENDOR_AMD 0x1F00 +#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_RAM_AMD 0x21A3 +#define WGL_GPU_CLOCK_AMD 0x21A4 +#define WGL_GPU_NUM_PIPES_AMD 0x21A5 +#define WGL_GPU_NUM_SIMD_AMD 0x21A6 +#define WGL_GPU_NUM_RB_AMD 0x21A7 +#define WGL_GPU_NUM_SPI_AMD 0x21A8 + +typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int* attribList); +typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc); +typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc); +typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids); +typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data); +typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc); + +#define wglBlitContextFramebufferAMD WGLEW_GET_FUN(__wglewBlitContextFramebufferAMD) +#define wglCreateAssociatedContextAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAMD) +#define wglCreateAssociatedContextAttribsAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAttribsAMD) +#define wglDeleteAssociatedContextAMD WGLEW_GET_FUN(__wglewDeleteAssociatedContextAMD) +#define wglGetContextGPUIDAMD WGLEW_GET_FUN(__wglewGetContextGPUIDAMD) +#define wglGetCurrentAssociatedContextAMD WGLEW_GET_FUN(__wglewGetCurrentAssociatedContextAMD) +#define wglGetGPUIDsAMD WGLEW_GET_FUN(__wglewGetGPUIDsAMD) +#define wglGetGPUInfoAMD WGLEW_GET_FUN(__wglewGetGPUInfoAMD) +#define wglMakeAssociatedContextCurrentAMD WGLEW_GET_FUN(__wglewMakeAssociatedContextCurrentAMD) + +#define WGLEW_AMD_gpu_association WGLEW_GET_VAR(__WGLEW_AMD_gpu_association) + +#endif /* WGL_AMD_gpu_association */ + +/* ------------------------- WGL_ARB_buffer_region ------------------------- */ + +#ifndef WGL_ARB_buffer_region +#define WGL_ARB_buffer_region 1 + +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 +#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 +#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 + +typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType); +typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion); +typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); +typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height); + +#define wglCreateBufferRegionARB WGLEW_GET_FUN(__wglewCreateBufferRegionARB) +#define wglDeleteBufferRegionARB WGLEW_GET_FUN(__wglewDeleteBufferRegionARB) +#define wglRestoreBufferRegionARB WGLEW_GET_FUN(__wglewRestoreBufferRegionARB) +#define wglSaveBufferRegionARB WGLEW_GET_FUN(__wglewSaveBufferRegionARB) + +#define WGLEW_ARB_buffer_region WGLEW_GET_VAR(__WGLEW_ARB_buffer_region) + +#endif /* WGL_ARB_buffer_region */ + +/* ------------------------- WGL_ARB_create_context ------------------------ */ + +#ifndef WGL_ARB_create_context +#define WGL_ARB_create_context 1 + +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 + +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int* attribList); + +#define wglCreateContextAttribsARB WGLEW_GET_FUN(__wglewCreateContextAttribsARB) + +#define WGLEW_ARB_create_context WGLEW_GET_VAR(__WGLEW_ARB_create_context) + +#endif /* WGL_ARB_create_context */ + +/* --------------------- WGL_ARB_create_context_profile -------------------- */ + +#ifndef WGL_ARB_create_context_profile +#define WGL_ARB_create_context_profile 1 + +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define WGLEW_ARB_create_context_profile WGLEW_GET_VAR(__WGLEW_ARB_create_context_profile) + +#endif /* WGL_ARB_create_context_profile */ + +/* ------------------- WGL_ARB_create_context_robustness ------------------- */ + +#ifndef WGL_ARB_create_context_robustness +#define WGL_ARB_create_context_robustness 1 + +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define WGLEW_ARB_create_context_robustness WGLEW_GET_VAR(__WGLEW_ARB_create_context_robustness) + +#endif /* WGL_ARB_create_context_robustness */ + +/* ----------------------- WGL_ARB_extensions_string ----------------------- */ + +#ifndef WGL_ARB_extensions_string +#define WGL_ARB_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); + +#define wglGetExtensionsStringARB WGLEW_GET_FUN(__wglewGetExtensionsStringARB) + +#define WGLEW_ARB_extensions_string WGLEW_GET_VAR(__WGLEW_ARB_extensions_string) + +#endif /* WGL_ARB_extensions_string */ + +/* ------------------------ WGL_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_ARB_framebuffer_sRGB +#define WGL_ARB_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 + +#define WGLEW_ARB_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_ARB_framebuffer_sRGB) + +#endif /* WGL_ARB_framebuffer_sRGB */ + +/* ----------------------- WGL_ARB_make_current_read ----------------------- */ + +#ifndef WGL_ARB_make_current_read +#define WGL_ARB_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCARB WGLEW_GET_FUN(__wglewGetCurrentReadDCARB) +#define wglMakeContextCurrentARB WGLEW_GET_FUN(__wglewMakeContextCurrentARB) + +#define WGLEW_ARB_make_current_read WGLEW_GET_VAR(__WGLEW_ARB_make_current_read) + +#endif /* WGL_ARB_make_current_read */ + +/* -------------------------- WGL_ARB_multisample -------------------------- */ + +#ifndef WGL_ARB_multisample +#define WGL_ARB_multisample 1 + +#define WGL_SAMPLE_BUFFERS_ARB 0x2041 +#define WGL_SAMPLES_ARB 0x2042 + +#define WGLEW_ARB_multisample WGLEW_GET_VAR(__WGLEW_ARB_multisample) + +#endif /* WGL_ARB_multisample */ + +/* ---------------------------- WGL_ARB_pbuffer ---------------------------- */ + +#ifndef WGL_ARB_pbuffer +#define WGL_ARB_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_ARB 0x202D +#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 +#define WGL_PBUFFER_LARGEST_ARB 0x2033 +#define WGL_PBUFFER_WIDTH_ARB 0x2034 +#define WGL_PBUFFER_HEIGHT_ARB 0x2035 +#define WGL_PBUFFER_LOST_ARB 0x2036 + +DECLARE_HANDLE(HPBUFFERARB); + +typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC); + +#define wglCreatePbufferARB WGLEW_GET_FUN(__wglewCreatePbufferARB) +#define wglDestroyPbufferARB WGLEW_GET_FUN(__wglewDestroyPbufferARB) +#define wglGetPbufferDCARB WGLEW_GET_FUN(__wglewGetPbufferDCARB) +#define wglQueryPbufferARB WGLEW_GET_FUN(__wglewQueryPbufferARB) +#define wglReleasePbufferDCARB WGLEW_GET_FUN(__wglewReleasePbufferDCARB) + +#define WGLEW_ARB_pbuffer WGLEW_GET_VAR(__WGLEW_ARB_pbuffer) + +#endif /* WGL_ARB_pbuffer */ + +/* -------------------------- WGL_ARB_pixel_format ------------------------- */ + +#ifndef WGL_ARB_pixel_format +#define WGL_ARB_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_DRAW_TO_BITMAP_ARB 0x2002 +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_NEED_PALETTE_ARB 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 +#define WGL_SWAP_METHOD_ARB 0x2007 +#define WGL_NUMBER_OVERLAYS_ARB 0x2008 +#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 +#define WGL_TRANSPARENT_ARB 0x200A +#define WGL_SHARE_DEPTH_ARB 0x200C +#define WGL_SHARE_STENCIL_ARB 0x200D +#define WGL_SHARE_ACCUM_ARB 0x200E +#define WGL_SUPPORT_GDI_ARB 0x200F +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_STEREO_ARB 0x2012 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201A +#define WGL_ALPHA_BITS_ARB 0x201B +#define WGL_ALPHA_SHIFT_ARB 0x201C +#define WGL_ACCUM_BITS_ARB 0x201D +#define WGL_ACCUM_RED_BITS_ARB 0x201E +#define WGL_ACCUM_GREEN_BITS_ARB 0x201F +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_GENERIC_ACCELERATION_ARB 0x2026 +#define WGL_FULL_ACCELERATION_ARB 0x2027 +#define WGL_SWAP_EXCHANGE_ARB 0x2028 +#define WGL_SWAP_COPY_ARB 0x2029 +#define WGL_SWAP_UNDEFINED_ARB 0x202A +#define WGL_TYPE_RGBA_ARB 0x202B +#define WGL_TYPE_COLORINDEX_ARB 0x202C +#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int *piValues); + +#define wglChoosePixelFormatARB WGLEW_GET_FUN(__wglewChoosePixelFormatARB) +#define wglGetPixelFormatAttribfvARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvARB) +#define wglGetPixelFormatAttribivARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribivARB) + +#define WGLEW_ARB_pixel_format WGLEW_GET_VAR(__WGLEW_ARB_pixel_format) + +#endif /* WGL_ARB_pixel_format */ + +/* ----------------------- WGL_ARB_pixel_format_float ---------------------- */ + +#ifndef WGL_ARB_pixel_format_float +#define WGL_ARB_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 + +#define WGLEW_ARB_pixel_format_float WGLEW_GET_VAR(__WGLEW_ARB_pixel_format_float) + +#endif /* WGL_ARB_pixel_format_float */ + +/* ------------------------- WGL_ARB_render_texture ------------------------ */ + +#ifndef WGL_ARB_render_texture +#define WGL_ARB_render_texture 1 + +#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 +#define WGL_TEXTURE_FORMAT_ARB 0x2072 +#define WGL_TEXTURE_TARGET_ARB 0x2073 +#define WGL_MIPMAP_TEXTURE_ARB 0x2074 +#define WGL_TEXTURE_RGB_ARB 0x2075 +#define WGL_TEXTURE_RGBA_ARB 0x2076 +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 +#define WGL_TEXTURE_1D_ARB 0x2079 +#define WGL_TEXTURE_2D_ARB 0x207A +#define WGL_MIPMAP_LEVEL_ARB 0x207B +#define WGL_CUBE_MAP_FACE_ARB 0x207C +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_FRONT_LEFT_ARB 0x2083 +#define WGL_FRONT_RIGHT_ARB 0x2084 +#define WGL_BACK_LEFT_ARB 0x2085 +#define WGL_BACK_RIGHT_ARB 0x2086 +#define WGL_AUX0_ARB 0x2087 +#define WGL_AUX1_ARB 0x2088 +#define WGL_AUX2_ARB 0x2089 +#define WGL_AUX3_ARB 0x208A +#define WGL_AUX4_ARB 0x208B +#define WGL_AUX5_ARB 0x208C +#define WGL_AUX6_ARB 0x208D +#define WGL_AUX7_ARB 0x208E +#define WGL_AUX8_ARB 0x208F +#define WGL_AUX9_ARB 0x2090 + +typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int* piAttribList); + +#define wglBindTexImageARB WGLEW_GET_FUN(__wglewBindTexImageARB) +#define wglReleaseTexImageARB WGLEW_GET_FUN(__wglewReleaseTexImageARB) +#define wglSetPbufferAttribARB WGLEW_GET_FUN(__wglewSetPbufferAttribARB) + +#define WGLEW_ARB_render_texture WGLEW_GET_VAR(__WGLEW_ARB_render_texture) + +#endif /* WGL_ARB_render_texture */ + +/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */ + +#ifndef WGL_ATI_pixel_format_float +#define WGL_ATI_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 + +#define WGLEW_ATI_pixel_format_float WGLEW_GET_VAR(__WGLEW_ATI_pixel_format_float) + +#endif /* WGL_ATI_pixel_format_float */ + +/* -------------------- WGL_ATI_render_texture_rectangle ------------------- */ + +#ifndef WGL_ATI_render_texture_rectangle +#define WGL_ATI_render_texture_rectangle 1 + +#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 + +#define WGLEW_ATI_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_ATI_render_texture_rectangle) + +#endif /* WGL_ATI_render_texture_rectangle */ + +/* ------------------- WGL_EXT_create_context_es2_profile ------------------ */ + +#ifndef WGL_EXT_create_context_es2_profile +#define WGL_EXT_create_context_es2_profile 1 + +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define WGLEW_EXT_create_context_es2_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es2_profile) + +#endif /* WGL_EXT_create_context_es2_profile */ + +/* -------------------------- WGL_EXT_depth_float -------------------------- */ + +#ifndef WGL_EXT_depth_float +#define WGL_EXT_depth_float 1 + +#define WGL_DEPTH_FLOAT_EXT 0x2040 + +#define WGLEW_EXT_depth_float WGLEW_GET_VAR(__WGLEW_EXT_depth_float) + +#endif /* WGL_EXT_depth_float */ + +/* ---------------------- WGL_EXT_display_color_table ---------------------- */ + +#ifndef WGL_EXT_display_color_table +#define WGL_EXT_display_color_table 1 + +typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef void (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (GLushort* table, GLuint length); + +#define wglBindDisplayColorTableEXT WGLEW_GET_FUN(__wglewBindDisplayColorTableEXT) +#define wglCreateDisplayColorTableEXT WGLEW_GET_FUN(__wglewCreateDisplayColorTableEXT) +#define wglDestroyDisplayColorTableEXT WGLEW_GET_FUN(__wglewDestroyDisplayColorTableEXT) +#define wglLoadDisplayColorTableEXT WGLEW_GET_FUN(__wglewLoadDisplayColorTableEXT) + +#define WGLEW_EXT_display_color_table WGLEW_GET_VAR(__WGLEW_EXT_display_color_table) + +#endif /* WGL_EXT_display_color_table */ + +/* ----------------------- WGL_EXT_extensions_string ----------------------- */ + +#ifndef WGL_EXT_extensions_string +#define WGL_EXT_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void); + +#define wglGetExtensionsStringEXT WGLEW_GET_FUN(__wglewGetExtensionsStringEXT) + +#define WGLEW_EXT_extensions_string WGLEW_GET_VAR(__WGLEW_EXT_extensions_string) + +#endif /* WGL_EXT_extensions_string */ + +/* ------------------------ WGL_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_EXT_framebuffer_sRGB +#define WGL_EXT_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 + +#define WGLEW_EXT_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_EXT_framebuffer_sRGB) + +#endif /* WGL_EXT_framebuffer_sRGB */ + +/* ----------------------- WGL_EXT_make_current_read ----------------------- */ + +#ifndef WGL_EXT_make_current_read +#define WGL_EXT_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCEXT WGLEW_GET_FUN(__wglewGetCurrentReadDCEXT) +#define wglMakeContextCurrentEXT WGLEW_GET_FUN(__wglewMakeContextCurrentEXT) + +#define WGLEW_EXT_make_current_read WGLEW_GET_VAR(__WGLEW_EXT_make_current_read) + +#endif /* WGL_EXT_make_current_read */ + +/* -------------------------- WGL_EXT_multisample -------------------------- */ + +#ifndef WGL_EXT_multisample +#define WGL_EXT_multisample 1 + +#define WGL_SAMPLE_BUFFERS_EXT 0x2041 +#define WGL_SAMPLES_EXT 0x2042 + +#define WGLEW_EXT_multisample WGLEW_GET_VAR(__WGLEW_EXT_multisample) + +#endif /* WGL_EXT_multisample */ + +/* ---------------------------- WGL_EXT_pbuffer ---------------------------- */ + +#ifndef WGL_EXT_pbuffer +#define WGL_EXT_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_EXT 0x202D +#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E +#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_PBUFFER_LARGEST_EXT 0x2033 +#define WGL_PBUFFER_WIDTH_EXT 0x2034 +#define WGL_PBUFFER_HEIGHT_EXT 0x2035 + +DECLARE_HANDLE(HPBUFFEREXT); + +typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC); + +#define wglCreatePbufferEXT WGLEW_GET_FUN(__wglewCreatePbufferEXT) +#define wglDestroyPbufferEXT WGLEW_GET_FUN(__wglewDestroyPbufferEXT) +#define wglGetPbufferDCEXT WGLEW_GET_FUN(__wglewGetPbufferDCEXT) +#define wglQueryPbufferEXT WGLEW_GET_FUN(__wglewQueryPbufferEXT) +#define wglReleasePbufferDCEXT WGLEW_GET_FUN(__wglewReleasePbufferDCEXT) + +#define WGLEW_EXT_pbuffer WGLEW_GET_VAR(__WGLEW_EXT_pbuffer) + +#endif /* WGL_EXT_pbuffer */ + +/* -------------------------- WGL_EXT_pixel_format ------------------------- */ + +#ifndef WGL_EXT_pixel_format +#define WGL_EXT_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 +#define WGL_DRAW_TO_WINDOW_EXT 0x2001 +#define WGL_DRAW_TO_BITMAP_EXT 0x2002 +#define WGL_ACCELERATION_EXT 0x2003 +#define WGL_NEED_PALETTE_EXT 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 +#define WGL_SWAP_METHOD_EXT 0x2007 +#define WGL_NUMBER_OVERLAYS_EXT 0x2008 +#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 +#define WGL_TRANSPARENT_EXT 0x200A +#define WGL_TRANSPARENT_VALUE_EXT 0x200B +#define WGL_SHARE_DEPTH_EXT 0x200C +#define WGL_SHARE_STENCIL_EXT 0x200D +#define WGL_SHARE_ACCUM_EXT 0x200E +#define WGL_SUPPORT_GDI_EXT 0x200F +#define WGL_SUPPORT_OPENGL_EXT 0x2010 +#define WGL_DOUBLE_BUFFER_EXT 0x2011 +#define WGL_STEREO_EXT 0x2012 +#define WGL_PIXEL_TYPE_EXT 0x2013 +#define WGL_COLOR_BITS_EXT 0x2014 +#define WGL_RED_BITS_EXT 0x2015 +#define WGL_RED_SHIFT_EXT 0x2016 +#define WGL_GREEN_BITS_EXT 0x2017 +#define WGL_GREEN_SHIFT_EXT 0x2018 +#define WGL_BLUE_BITS_EXT 0x2019 +#define WGL_BLUE_SHIFT_EXT 0x201A +#define WGL_ALPHA_BITS_EXT 0x201B +#define WGL_ALPHA_SHIFT_EXT 0x201C +#define WGL_ACCUM_BITS_EXT 0x201D +#define WGL_ACCUM_RED_BITS_EXT 0x201E +#define WGL_ACCUM_GREEN_BITS_EXT 0x201F +#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 +#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 +#define WGL_DEPTH_BITS_EXT 0x2022 +#define WGL_STENCIL_BITS_EXT 0x2023 +#define WGL_AUX_BUFFERS_EXT 0x2024 +#define WGL_NO_ACCELERATION_EXT 0x2025 +#define WGL_GENERIC_ACCELERATION_EXT 0x2026 +#define WGL_FULL_ACCELERATION_EXT 0x2027 +#define WGL_SWAP_EXCHANGE_EXT 0x2028 +#define WGL_SWAP_COPY_EXT 0x2029 +#define WGL_SWAP_UNDEFINED_EXT 0x202A +#define WGL_TYPE_RGBA_EXT 0x202B +#define WGL_TYPE_COLORINDEX_EXT 0x202C + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int *piValues); + +#define wglChoosePixelFormatEXT WGLEW_GET_FUN(__wglewChoosePixelFormatEXT) +#define wglGetPixelFormatAttribfvEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvEXT) +#define wglGetPixelFormatAttribivEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribivEXT) + +#define WGLEW_EXT_pixel_format WGLEW_GET_VAR(__WGLEW_EXT_pixel_format) + +#endif /* WGL_EXT_pixel_format */ + +/* ------------------- WGL_EXT_pixel_format_packed_float ------------------- */ + +#ifndef WGL_EXT_pixel_format_packed_float +#define WGL_EXT_pixel_format_packed_float 1 + +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 + +#define WGLEW_EXT_pixel_format_packed_float WGLEW_GET_VAR(__WGLEW_EXT_pixel_format_packed_float) + +#endif /* WGL_EXT_pixel_format_packed_float */ + +/* -------------------------- WGL_EXT_swap_control ------------------------- */ + +#ifndef WGL_EXT_swap_control +#define WGL_EXT_swap_control 1 + +typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void); +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval); + +#define wglGetSwapIntervalEXT WGLEW_GET_FUN(__wglewGetSwapIntervalEXT) +#define wglSwapIntervalEXT WGLEW_GET_FUN(__wglewSwapIntervalEXT) + +#define WGLEW_EXT_swap_control WGLEW_GET_VAR(__WGLEW_EXT_swap_control) + +#endif /* WGL_EXT_swap_control */ + +/* --------------------- WGL_I3D_digital_video_control --------------------- */ + +#ifndef WGL_I3D_digital_video_control +#define WGL_I3D_digital_video_control 1 + +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 + +typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewGetDigitalVideoParametersI3D) +#define wglSetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewSetDigitalVideoParametersI3D) + +#define WGLEW_I3D_digital_video_control WGLEW_GET_VAR(__WGLEW_I3D_digital_video_control) + +#endif /* WGL_I3D_digital_video_control */ + +/* ----------------------------- WGL_I3D_gamma ----------------------------- */ + +#ifndef WGL_I3D_gamma +#define WGL_I3D_gamma 1 + +#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F + +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT* puRed, USHORT *puGreen, USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT* puRed, const USHORT *puGreen, const USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetGammaTableI3D WGLEW_GET_FUN(__wglewGetGammaTableI3D) +#define wglGetGammaTableParametersI3D WGLEW_GET_FUN(__wglewGetGammaTableParametersI3D) +#define wglSetGammaTableI3D WGLEW_GET_FUN(__wglewSetGammaTableI3D) +#define wglSetGammaTableParametersI3D WGLEW_GET_FUN(__wglewSetGammaTableParametersI3D) + +#define WGLEW_I3D_gamma WGLEW_GET_VAR(__WGLEW_I3D_gamma) + +#endif /* WGL_I3D_gamma */ + +/* ---------------------------- WGL_I3D_genlock ---------------------------- */ + +#ifndef WGL_I3D_genlock +#define WGL_I3D_genlock 1 + +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C + +typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT* uRate); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT* uDelay); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT* uEdge); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT* uSource); +typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT* uMaxLineDelay, UINT *uMaxPixelDelay); + +#define wglDisableGenlockI3D WGLEW_GET_FUN(__wglewDisableGenlockI3D) +#define wglEnableGenlockI3D WGLEW_GET_FUN(__wglewEnableGenlockI3D) +#define wglGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGenlockSampleRateI3D) +#define wglGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGenlockSourceDelayI3D) +#define wglGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGenlockSourceEdgeI3D) +#define wglGenlockSourceI3D WGLEW_GET_FUN(__wglewGenlockSourceI3D) +#define wglGetGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGetGenlockSampleRateI3D) +#define wglGetGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGetGenlockSourceDelayI3D) +#define wglGetGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGetGenlockSourceEdgeI3D) +#define wglGetGenlockSourceI3D WGLEW_GET_FUN(__wglewGetGenlockSourceI3D) +#define wglIsEnabledGenlockI3D WGLEW_GET_FUN(__wglewIsEnabledGenlockI3D) +#define wglQueryGenlockMaxSourceDelayI3D WGLEW_GET_FUN(__wglewQueryGenlockMaxSourceDelayI3D) + +#define WGLEW_I3D_genlock WGLEW_GET_VAR(__WGLEW_I3D_genlock) + +#endif /* WGL_I3D_genlock */ + +/* -------------------------- WGL_I3D_image_buffer ------------------------- */ + +#ifndef WGL_I3D_image_buffer +#define WGL_I3D_image_buffer 1 + +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 + +typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, HANDLE* pEvent, LPVOID *pAddress, DWORD *pSize, UINT count); +typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags); +typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress); +typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, LPVOID* pAddress, UINT count); + +#define wglAssociateImageBufferEventsI3D WGLEW_GET_FUN(__wglewAssociateImageBufferEventsI3D) +#define wglCreateImageBufferI3D WGLEW_GET_FUN(__wglewCreateImageBufferI3D) +#define wglDestroyImageBufferI3D WGLEW_GET_FUN(__wglewDestroyImageBufferI3D) +#define wglReleaseImageBufferEventsI3D WGLEW_GET_FUN(__wglewReleaseImageBufferEventsI3D) + +#define WGLEW_I3D_image_buffer WGLEW_GET_VAR(__WGLEW_I3D_image_buffer) + +#endif /* WGL_I3D_image_buffer */ + +/* ------------------------ WGL_I3D_swap_frame_lock ------------------------ */ + +#ifndef WGL_I3D_swap_frame_lock +#define WGL_I3D_swap_frame_lock 1 + +typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL* pFlag); + +#define wglDisableFrameLockI3D WGLEW_GET_FUN(__wglewDisableFrameLockI3D) +#define wglEnableFrameLockI3D WGLEW_GET_FUN(__wglewEnableFrameLockI3D) +#define wglIsEnabledFrameLockI3D WGLEW_GET_FUN(__wglewIsEnabledFrameLockI3D) +#define wglQueryFrameLockMasterI3D WGLEW_GET_FUN(__wglewQueryFrameLockMasterI3D) + +#define WGLEW_I3D_swap_frame_lock WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_lock) + +#endif /* WGL_I3D_swap_frame_lock */ + +/* ------------------------ WGL_I3D_swap_frame_usage ----------------------- */ + +#ifndef WGL_I3D_swap_frame_usage +#define WGL_I3D_swap_frame_usage 1 + +typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float* pUsage); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD* pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage); + +#define wglBeginFrameTrackingI3D WGLEW_GET_FUN(__wglewBeginFrameTrackingI3D) +#define wglEndFrameTrackingI3D WGLEW_GET_FUN(__wglewEndFrameTrackingI3D) +#define wglGetFrameUsageI3D WGLEW_GET_FUN(__wglewGetFrameUsageI3D) +#define wglQueryFrameTrackingI3D WGLEW_GET_FUN(__wglewQueryFrameTrackingI3D) + +#define WGLEW_I3D_swap_frame_usage WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_usage) + +#endif /* WGL_I3D_swap_frame_usage */ + +/* --------------------------- WGL_NV_DX_interop --------------------------- */ + +#ifndef WGL_NV_DX_interop +#define WGL_NV_DX_interop 1 + +#define WGL_ACCESS_READ_ONLY_NV 0x0000 +#define WGL_ACCESS_READ_WRITE_NV 0x0001 +#define WGL_ACCESS_WRITE_DISCARD_NV 0x0002 + +typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice); +typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access); +typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice); +typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access); +typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void* dxObject, HANDLE shareHandle); +typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject); + +#define wglDXCloseDeviceNV WGLEW_GET_FUN(__wglewDXCloseDeviceNV) +#define wglDXLockObjectsNV WGLEW_GET_FUN(__wglewDXLockObjectsNV) +#define wglDXObjectAccessNV WGLEW_GET_FUN(__wglewDXObjectAccessNV) +#define wglDXOpenDeviceNV WGLEW_GET_FUN(__wglewDXOpenDeviceNV) +#define wglDXRegisterObjectNV WGLEW_GET_FUN(__wglewDXRegisterObjectNV) +#define wglDXSetResourceShareHandleNV WGLEW_GET_FUN(__wglewDXSetResourceShareHandleNV) +#define wglDXUnlockObjectsNV WGLEW_GET_FUN(__wglewDXUnlockObjectsNV) +#define wglDXUnregisterObjectNV WGLEW_GET_FUN(__wglewDXUnregisterObjectNV) + +#define WGLEW_NV_DX_interop WGLEW_GET_VAR(__WGLEW_NV_DX_interop) + +#endif /* WGL_NV_DX_interop */ + +/* --------------------------- WGL_NV_copy_image --------------------------- */ + +#ifndef WGL_NV_copy_image +#define WGL_NV_copy_image 1 + +typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define wglCopyImageSubDataNV WGLEW_GET_FUN(__wglewCopyImageSubDataNV) + +#define WGLEW_NV_copy_image WGLEW_GET_VAR(__WGLEW_NV_copy_image) + +#endif /* WGL_NV_copy_image */ + +/* -------------------------- WGL_NV_float_buffer -------------------------- */ + +#ifndef WGL_NV_float_buffer +#define WGL_NV_float_buffer 1 + +#define WGL_FLOAT_COMPONENTS_NV 0x20B0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 +#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 +#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 +#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 + +#define WGLEW_NV_float_buffer WGLEW_GET_VAR(__WGLEW_NV_float_buffer) + +#endif /* WGL_NV_float_buffer */ + +/* -------------------------- WGL_NV_gpu_affinity -------------------------- */ + +#ifndef WGL_NV_gpu_affinity +#define WGL_NV_gpu_affinity 1 + +#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 + +DECLARE_HANDLE(HGPUNV); +typedef struct _GPU_DEVICE { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD Flags; + RECT rcVirtualScreen; +} GPU_DEVICE, *PGPU_DEVICE; + +typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList); +typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc); +typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); +typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu); +typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu); + +#define wglCreateAffinityDCNV WGLEW_GET_FUN(__wglewCreateAffinityDCNV) +#define wglDeleteDCNV WGLEW_GET_FUN(__wglewDeleteDCNV) +#define wglEnumGpuDevicesNV WGLEW_GET_FUN(__wglewEnumGpuDevicesNV) +#define wglEnumGpusFromAffinityDCNV WGLEW_GET_FUN(__wglewEnumGpusFromAffinityDCNV) +#define wglEnumGpusNV WGLEW_GET_FUN(__wglewEnumGpusNV) + +#define WGLEW_NV_gpu_affinity WGLEW_GET_VAR(__WGLEW_NV_gpu_affinity) + +#endif /* WGL_NV_gpu_affinity */ + +/* ---------------------- WGL_NV_multisample_coverage ---------------------- */ + +#ifndef WGL_NV_multisample_coverage +#define WGL_NV_multisample_coverage 1 + +#define WGL_COVERAGE_SAMPLES_NV 0x2042 +#define WGL_COLOR_SAMPLES_NV 0x20B9 + +#define WGLEW_NV_multisample_coverage WGLEW_GET_VAR(__WGLEW_NV_multisample_coverage) + +#endif /* WGL_NV_multisample_coverage */ + +/* -------------------------- WGL_NV_present_video ------------------------- */ + +#ifndef WGL_NV_present_video +#define WGL_NV_present_video 1 + +#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 + +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList); +typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int* piValue); + +#define wglBindVideoDeviceNV WGLEW_GET_FUN(__wglewBindVideoDeviceNV) +#define wglEnumerateVideoDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoDevicesNV) +#define wglQueryCurrentContextNV WGLEW_GET_FUN(__wglewQueryCurrentContextNV) + +#define WGLEW_NV_present_video WGLEW_GET_VAR(__WGLEW_NV_present_video) + +#endif /* WGL_NV_present_video */ + +/* ---------------------- WGL_NV_render_depth_texture ---------------------- */ + +#ifndef WGL_NV_render_depth_texture +#define WGL_NV_render_depth_texture 1 + +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_DEPTH_COMPONENT_NV 0x20A7 + +#define WGLEW_NV_render_depth_texture WGLEW_GET_VAR(__WGLEW_NV_render_depth_texture) + +#endif /* WGL_NV_render_depth_texture */ + +/* -------------------- WGL_NV_render_texture_rectangle -------------------- */ + +#ifndef WGL_NV_render_texture_rectangle +#define WGL_NV_render_texture_rectangle 1 + +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 + +#define WGLEW_NV_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_NV_render_texture_rectangle) + +#endif /* WGL_NV_render_texture_rectangle */ + +/* --------------------------- WGL_NV_swap_group --------------------------- */ + +#ifndef WGL_NV_swap_group +#define WGL_NV_swap_group 1 + +typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier); +typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint* count); +typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint* maxGroups, GLuint *maxBarriers); +typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint* group, GLuint *barrier); +typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC); + +#define wglBindSwapBarrierNV WGLEW_GET_FUN(__wglewBindSwapBarrierNV) +#define wglJoinSwapGroupNV WGLEW_GET_FUN(__wglewJoinSwapGroupNV) +#define wglQueryFrameCountNV WGLEW_GET_FUN(__wglewQueryFrameCountNV) +#define wglQueryMaxSwapGroupsNV WGLEW_GET_FUN(__wglewQueryMaxSwapGroupsNV) +#define wglQuerySwapGroupNV WGLEW_GET_FUN(__wglewQuerySwapGroupNV) +#define wglResetFrameCountNV WGLEW_GET_FUN(__wglewResetFrameCountNV) + +#define WGLEW_NV_swap_group WGLEW_GET_VAR(__WGLEW_NV_swap_group) + +#endif /* WGL_NV_swap_group */ + +/* ----------------------- WGL_NV_vertex_array_range ----------------------- */ + +#ifndef WGL_NV_vertex_array_range +#define WGL_NV_vertex_array_range 1 + +typedef void * (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer); + +#define wglAllocateMemoryNV WGLEW_GET_FUN(__wglewAllocateMemoryNV) +#define wglFreeMemoryNV WGLEW_GET_FUN(__wglewFreeMemoryNV) + +#define WGLEW_NV_vertex_array_range WGLEW_GET_VAR(__WGLEW_NV_vertex_array_range) + +#endif /* WGL_NV_vertex_array_range */ + +/* -------------------------- WGL_NV_video_capture ------------------------- */ + +#ifndef WGL_NV_video_capture +#define WGL_NV_video_capture 1 + +#define WGL_UNIQUE_ID_NV 0x20CE +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice); +typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); + +#define wglBindVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewBindVideoCaptureDeviceNV) +#define wglEnumerateVideoCaptureDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoCaptureDevicesNV) +#define wglLockVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewLockVideoCaptureDeviceNV) +#define wglQueryVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewQueryVideoCaptureDeviceNV) +#define wglReleaseVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoCaptureDeviceNV) + +#define WGLEW_NV_video_capture WGLEW_GET_VAR(__WGLEW_NV_video_capture) + +#endif /* WGL_NV_video_capture */ + +/* -------------------------- WGL_NV_video_output -------------------------- */ + +#ifndef WGL_NV_video_output +#define WGL_NV_video_output 1 + +#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 +#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 +#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 +#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_FRAME 0x20C8 +#define WGL_VIDEO_OUT_FIELD_1 0x20C9 +#define WGL_VIDEO_OUT_FIELD_2 0x20CA +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC + +DECLARE_HANDLE(HPVIDEODEV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice); +typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock); + +#define wglBindVideoImageNV WGLEW_GET_FUN(__wglewBindVideoImageNV) +#define wglGetVideoDeviceNV WGLEW_GET_FUN(__wglewGetVideoDeviceNV) +#define wglGetVideoInfoNV WGLEW_GET_FUN(__wglewGetVideoInfoNV) +#define wglReleaseVideoDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoDeviceNV) +#define wglReleaseVideoImageNV WGLEW_GET_FUN(__wglewReleaseVideoImageNV) +#define wglSendPbufferToVideoNV WGLEW_GET_FUN(__wglewSendPbufferToVideoNV) + +#define WGLEW_NV_video_output WGLEW_GET_VAR(__WGLEW_NV_video_output) + +#endif /* WGL_NV_video_output */ + +/* -------------------------- WGL_OML_sync_control ------------------------- */ + +#ifndef WGL_OML_sync_control +#define WGL_OML_sync_control 1 + +typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32* numerator, INT32 *denominator); +typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64* ust, INT64 *msc, INT64 *sbc); +typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64 *msc, INT64 *sbc); +typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64* ust, INT64 *msc, INT64 *sbc); + +#define wglGetMscRateOML WGLEW_GET_FUN(__wglewGetMscRateOML) +#define wglGetSyncValuesOML WGLEW_GET_FUN(__wglewGetSyncValuesOML) +#define wglSwapBuffersMscOML WGLEW_GET_FUN(__wglewSwapBuffersMscOML) +#define wglSwapLayerBuffersMscOML WGLEW_GET_FUN(__wglewSwapLayerBuffersMscOML) +#define wglWaitForMscOML WGLEW_GET_FUN(__wglewWaitForMscOML) +#define wglWaitForSbcOML WGLEW_GET_FUN(__wglewWaitForSbcOML) + +#define WGLEW_OML_sync_control WGLEW_GET_VAR(__WGLEW_OML_sync_control) + +#endif /* WGL_OML_sync_control */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define WGLEW_EXPORT +#else +#define WGLEW_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#ifdef GLEW_MX +struct WGLEWContextStruct +{ +#endif /* GLEW_MX */ + +WGLEW_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL; + +WGLEW_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD; +WGLEW_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD; +WGLEW_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD; +WGLEW_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD; +WGLEW_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD; +WGLEW_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD; +WGLEW_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD; +WGLEW_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD; +WGLEW_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD; + +WGLEW_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB; +WGLEW_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB; +WGLEW_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB; +WGLEW_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB; + +WGLEW_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB; + +WGLEW_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB; + +WGLEW_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB; +WGLEW_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB; + +WGLEW_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB; +WGLEW_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB; +WGLEW_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB; +WGLEW_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB; +WGLEW_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB; + +WGLEW_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB; + +WGLEW_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB; +WGLEW_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB; +WGLEW_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB; + +WGLEW_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT; +WGLEW_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT; +WGLEW_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT; +WGLEW_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT; + +WGLEW_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT; + +WGLEW_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT; +WGLEW_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT; + +WGLEW_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT; +WGLEW_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT; +WGLEW_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT; +WGLEW_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT; +WGLEW_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT; + +WGLEW_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT; + +WGLEW_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT; +WGLEW_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT; + +WGLEW_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D; +WGLEW_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D; + +WGLEW_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D; +WGLEW_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D; +WGLEW_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D; +WGLEW_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D; + +WGLEW_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D; +WGLEW_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D; +WGLEW_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D; +WGLEW_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D; +WGLEW_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D; +WGLEW_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D; +WGLEW_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D; +WGLEW_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D; + +WGLEW_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D; +WGLEW_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D; +WGLEW_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D; +WGLEW_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D; + +WGLEW_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D; +WGLEW_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D; +WGLEW_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D; +WGLEW_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D; + +WGLEW_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D; +WGLEW_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D; +WGLEW_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D; +WGLEW_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D; + +WGLEW_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV; +WGLEW_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV; +WGLEW_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV; +WGLEW_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV; +WGLEW_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV; +WGLEW_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV; +WGLEW_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV; +WGLEW_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV; + +WGLEW_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV; + +WGLEW_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV; +WGLEW_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV; +WGLEW_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV; +WGLEW_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV; +WGLEW_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV; + +WGLEW_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV; +WGLEW_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV; +WGLEW_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV; + +WGLEW_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV; +WGLEW_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV; +WGLEW_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV; +WGLEW_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV; +WGLEW_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV; +WGLEW_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV; + +WGLEW_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV; +WGLEW_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV; + +WGLEW_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV; +WGLEW_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV; +WGLEW_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV; +WGLEW_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV; +WGLEW_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV; + +WGLEW_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV; +WGLEW_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV; +WGLEW_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV; +WGLEW_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV; +WGLEW_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV; +WGLEW_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV; + +WGLEW_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML; +WGLEW_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML; +WGLEW_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML; +WGLEW_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML; +WGLEW_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML; +WGLEW_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML; +WGLEW_EXPORT GLboolean __WGLEW_3DFX_multisample; +WGLEW_EXPORT GLboolean __WGLEW_3DL_stereo_control; +WGLEW_EXPORT GLboolean __WGLEW_AMD_gpu_association; +WGLEW_EXPORT GLboolean __WGLEW_ARB_buffer_region; +WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context; +WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context_profile; +WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context_robustness; +WGLEW_EXPORT GLboolean __WGLEW_ARB_extensions_string; +WGLEW_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB; +WGLEW_EXPORT GLboolean __WGLEW_ARB_make_current_read; +WGLEW_EXPORT GLboolean __WGLEW_ARB_multisample; +WGLEW_EXPORT GLboolean __WGLEW_ARB_pbuffer; +WGLEW_EXPORT GLboolean __WGLEW_ARB_pixel_format; +WGLEW_EXPORT GLboolean __WGLEW_ARB_pixel_format_float; +WGLEW_EXPORT GLboolean __WGLEW_ARB_render_texture; +WGLEW_EXPORT GLboolean __WGLEW_ATI_pixel_format_float; +WGLEW_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle; +WGLEW_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile; +WGLEW_EXPORT GLboolean __WGLEW_EXT_depth_float; +WGLEW_EXPORT GLboolean __WGLEW_EXT_display_color_table; +WGLEW_EXPORT GLboolean __WGLEW_EXT_extensions_string; +WGLEW_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB; +WGLEW_EXPORT GLboolean __WGLEW_EXT_make_current_read; +WGLEW_EXPORT GLboolean __WGLEW_EXT_multisample; +WGLEW_EXPORT GLboolean __WGLEW_EXT_pbuffer; +WGLEW_EXPORT GLboolean __WGLEW_EXT_pixel_format; +WGLEW_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float; +WGLEW_EXPORT GLboolean __WGLEW_EXT_swap_control; +WGLEW_EXPORT GLboolean __WGLEW_I3D_digital_video_control; +WGLEW_EXPORT GLboolean __WGLEW_I3D_gamma; +WGLEW_EXPORT GLboolean __WGLEW_I3D_genlock; +WGLEW_EXPORT GLboolean __WGLEW_I3D_image_buffer; +WGLEW_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock; +WGLEW_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage; +WGLEW_EXPORT GLboolean __WGLEW_NV_DX_interop; +WGLEW_EXPORT GLboolean __WGLEW_NV_copy_image; +WGLEW_EXPORT GLboolean __WGLEW_NV_float_buffer; +WGLEW_EXPORT GLboolean __WGLEW_NV_gpu_affinity; +WGLEW_EXPORT GLboolean __WGLEW_NV_multisample_coverage; +WGLEW_EXPORT GLboolean __WGLEW_NV_present_video; +WGLEW_EXPORT GLboolean __WGLEW_NV_render_depth_texture; +WGLEW_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle; +WGLEW_EXPORT GLboolean __WGLEW_NV_swap_group; +WGLEW_EXPORT GLboolean __WGLEW_NV_vertex_array_range; +WGLEW_EXPORT GLboolean __WGLEW_NV_video_capture; +WGLEW_EXPORT GLboolean __WGLEW_NV_video_output; +WGLEW_EXPORT GLboolean __WGLEW_OML_sync_control; + +#ifdef GLEW_MX +}; /* WGLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX + +typedef struct WGLEWContextStruct WGLEWContext; +GLEWAPI GLenum wglewContextInit (WGLEWContext* ctx); +GLEWAPI GLboolean wglewContextIsSupported (const WGLEWContext* ctx, const char* name); + +#define wglewInit() wglewContextInit(wglewGetContext()) +#define wglewIsSupported(x) wglewContextIsSupported(wglewGetContext(), x) + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&(wglewGetContext()->x)) +#define WGLEW_GET_FUN(x) wglewGetContext()->x + +#else /* GLEW_MX */ + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define WGLEW_GET_FUN(x) x + +GLEWAPI GLboolean wglewIsSupported (const char* name); + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean wglewGetExtension (const char* name); + +#ifdef __cplusplus +} +#endif + +#undef GLEWAPI + +#endif /* __wglew_h__ */ diff --git a/lib/linux/include/config/ftconfig.h b/lib/linux/include/config/ftconfig.h new file mode 100644 index 0000000..22d70fd --- /dev/null +++ b/lib/linux/include/config/ftconfig.h @@ -0,0 +1,450 @@ +/***************************************************************************/ +/* */ +/* ftconfig.h */ +/* */ +/* ANSI-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2004, 2006-2008, 2010-2011, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This header file contains a number of macro definitions that are used */ + /* by the rest of the engine. Most of the macros here are automatically */ + /* determined at compile time, and you should not need to change it to */ + /* port FreeType, except to compile the library with a non-ANSI */ + /* compiler. */ + /* */ + /* Note however that if some specific modifications are needed, we */ + /* advise you to place a modified copy in your build directory. */ + /* */ + /* The build directory is usually `builds/', and contains */ + /* system-specific files that are always included first when building */ + /* the library. */ + /* */ + /* This ANSI version should stay in `include/config/'. */ + /* */ + /*************************************************************************/ + +#ifndef __FTCONFIG_H__ +#define __FTCONFIG_H__ + +#include +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ + /* */ + /* These macros can be toggled to suit a specific system. The current */ + /* ones are defaults used to compile FreeType in an ANSI C environment */ + /* (16bit compilers are also supported). Copy this file to your own */ + /* `builds/' directory, and edit it to port the engine. */ + /* */ + /*************************************************************************/ + + + /* There are systems (like the Texas Instruments 'C54x) where a `char' */ + /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ + /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ + /* `char' type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + + /* The size of an `int' type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `int' type!" +#endif + + /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `long' type!" +#endif + + + /* FT_UNUSED is a macro used to indicate that a given parameter is not */ + /* used -- this is only used to get rid of unpleasant compiler warnings */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + + /*************************************************************************/ + /* */ + /* AUTOMATIC CONFIGURATION MACROS */ + /* */ + /* These macros are computed from the ones defined above. Don't touch */ + /* their definition, unless you know precisely what you are doing. No */ + /* porter should need to mess with them. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Mac support */ + /* */ + /* This is the only necessary change, so it is defined here instead */ + /* providing a new configuration file. */ + /* */ +#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* no Carbon frameworks for 64bit 10.4.x */ + /* AvailabilityMacros.h is available since Mac OS X 10.2, */ + /* so guess the system version by maximum errno before inclusion */ +#include +#ifdef ECANCELED /* defined since 10.2 */ +#include "AvailabilityMacros.h" +#endif +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#undef FT_MACINTOSH +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif + + + /*************************************************************************/ + /* */ + /*
*/ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* FT_Int16 */ + /* */ + /* */ + /* A typedef for a 16bit signed integer type. */ + /* */ + typedef signed short FT_Int16; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt16 */ + /* */ + /* */ + /* A typedef for a 16bit unsigned integer type. */ + /* */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + + /*************************************************************************/ + /* */ + /* */ + /* FT_Int32 */ + /* */ + /* */ + /* A typedef for a 32bit signed integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef signed XXX FT_Int32; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt32 */ + /* */ + /* A typedef for a 32bit unsigned integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef unsigned XXX FT_UInt32; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_Int64 */ + /* */ + /* A typedef for a 64bit signed integer type. The size depends on */ + /* the configuration. Only defined if there is real 64bit support; */ + /* otherwise, it gets emulated with a structure (if necessary). */ + /* */ + typedef signed XXX FT_Int64; + + + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt64 */ + /* */ + /* A typedef for a 64bit unsigned integer type. The size depends on */ + /* the configuration. Only defined if there is real 64bit support; */ + /* otherwise, it gets emulated with a structure (if necessary). */ + /* */ + typedef unsigned XXX FT_UInt64; + + /* */ + +#endif + +#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT) + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT) + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32 bits */ +#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT) + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit int type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) + + /* FT_LONG64 must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long +#define FT_UINT64 unsigned long + + /*************************************************************************/ + /* */ + /* A 64-bit data type may create compilation problems if you compile */ + /* in strict ANSI mode. To avoid them, we disable other 64-bit data */ + /* types if __STDC__ is defined. You can however ignore this rule */ + /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* */ +#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of __BORLANDC__ in order */ + /* to test the compiler version. */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long' type */ +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#endif /* _MSC_VER */ + +#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ + +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#endif + + +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + +#ifdef FT_MAKE_OPTION_SINGLE_OBJECT + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#ifdef __cplusplus +#define FT_LOCAL( x ) extern "C" x +#define FT_LOCAL_DEF( x ) extern "C" x +#else +#define FT_LOCAL( x ) extern x +#define FT_LOCAL_DEF( x ) x +#endif + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + +#define FT_LOCAL_ARRAY( x ) extern const x +#define FT_LOCAL_ARRAY_DEF( x ) const x + + +#ifndef FT_BASE + +#ifdef __cplusplus +#define FT_BASE( x ) extern "C" x +#else +#define FT_BASE( x ) extern x +#endif + +#endif /* !FT_BASE */ + + +#ifndef FT_BASE_DEF + +#ifdef __cplusplus +#define FT_BASE_DEF( x ) x +#else +#define FT_BASE_DEF( x ) x +#endif + +#endif /* !FT_BASE_DEF */ + + +#ifndef FT_EXPORT + +#ifdef __cplusplus +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif + +#endif /* !FT_EXPORT */ + + +#ifndef FT_EXPORT_DEF + +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) extern "C" x +#else +#define FT_EXPORT_DEF( x ) extern x +#endif + +#endif /* !FT_EXPORT_DEF */ + + +#ifndef FT_EXPORT_VAR + +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif + +#endif /* !FT_EXPORT_VAR */ + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"' for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + + +FT_END_HEADER + + +#endif /* __FTCONFIG_H__ */ + + +/* END */ diff --git a/lib/linux/include/config/ftheader.h b/lib/linux/include/config/ftheader.h new file mode 100644 index 0000000..b623629 --- /dev/null +++ b/lib/linux/include/config/ftheader.h @@ -0,0 +1,832 @@ +/***************************************************************************/ +/* */ +/* ftheader.h */ +/* */ +/* Build macros of the FreeType 2 library. */ +/* */ +/* Copyright 1996-2008, 2010, 2012, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __FT_HEADER_H__ +#define __FT_HEADER_H__ + + + /*@***********************************************************************/ + /* */ + /* */ + /* FT_BEGIN_HEADER */ + /* */ + /* */ + /* This macro is used in association with @FT_END_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_BEGIN_HEADER extern "C" { +#else +#define FT_BEGIN_HEADER /* nothing */ +#endif + + + /*@***********************************************************************/ + /* */ + /* */ + /* FT_END_HEADER */ + /* */ + /* */ + /* This macro is used in association with @FT_BEGIN_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_END_HEADER } +#else +#define FT_END_HEADER /* nothing */ +#endif + + + /*************************************************************************/ + /* */ + /* Aliases for the FreeType 2 public and configuration files. */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /*
*/ + /* header_file_macros */ + /* */ + /* */ + /* Header File Macros */ + /* */ + /* <Abstract> */ + /* Macro definitions used to #include specific header files. */ + /* */ + /* <Description> */ + /* The following macros are defined to the name of specific */ + /* FreeType~2 header files. They can be used directly in #include */ + /* statements as in: */ + /* */ + /* { */ + /* #include FT_FREETYPE_H */ + /* #include FT_MULTIPLE_MASTERS_H */ + /* #include FT_GLYPH_H */ + /* } */ + /* */ + /* There are several reasons why we are now using macros to name */ + /* public header files. The first one is that such macros are not */ + /* limited to the infamous 8.3~naming rule required by DOS (and */ + /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ + /* */ + /* The second reason is that it allows for more flexibility in the */ + /* way FreeType~2 is installed on a given system. */ + /* */ + /*************************************************************************/ + + + /* configuration files */ + + /************************************************************************* + * + * @macro: + * FT_CONFIG_CONFIG_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 configuration data. + * + */ +#ifndef FT_CONFIG_CONFIG_H +#define FT_CONFIG_CONFIG_H <config/ftconfig.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_STANDARD_LIBRARY_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 interface to the standard C library functions. + * + */ +#ifndef FT_CONFIG_STANDARD_LIBRARY_H +#define FT_CONFIG_STANDARD_LIBRARY_H <config/ftstdlib.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_OPTIONS_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 project-specific configuration options. + * + */ +#ifndef FT_CONFIG_OPTIONS_H +#define FT_CONFIG_OPTIONS_H <config/ftoption.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_MODULES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 modules that are statically linked to new library + * instances in @FT_Init_FreeType. + * + */ +#ifndef FT_CONFIG_MODULES_H +#define FT_CONFIG_MODULES_H <config/ftmodule.h> +#endif + + /* */ + + /* public headers */ + + /************************************************************************* + * + * @macro: + * FT_FREETYPE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * base FreeType~2 API. + * + */ +#define FT_FREETYPE_H <freetype.h> + + + /************************************************************************* + * + * @macro: + * FT_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 error codes (and messages). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_ERRORS_H <fterrors.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). + * + */ +#define FT_MODULE_ERRORS_H <ftmoderr.h> + + + /************************************************************************* + * + * @macro: + * FT_SYSTEM_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management + * and stream i/o). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_SYSTEM_H <ftsystem.h> + + + /************************************************************************* + * + * @macro: + * FT_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing type + * definitions related to glyph images (i.e., bitmaps, outlines, + * scan-converter parameters). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_IMAGE_H <ftimage.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * basic data types defined by FreeType~2. + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_TYPES_H <fttypes.h> + + + /************************************************************************* + * + * @macro: + * FT_LIST_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list management API of FreeType~2. + * + * (Most applications will never need to include this file.) + * + */ +#define FT_LIST_H <ftlist.h> + + + /************************************************************************* + * + * @macro: + * FT_OUTLINE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * scalable outline management API of FreeType~2. + * + */ +#define FT_OUTLINE_H <ftoutln.h> + + + /************************************************************************* + * + * @macro: + * FT_SIZES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API which manages multiple @FT_Size objects per face. + * + */ +#define FT_SIZES_H <ftsizes.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * module management API of FreeType~2. + * + */ +#define FT_MODULE_H <ftmodapi.h> + + + /************************************************************************* + * + * @macro: + * FT_RENDER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * renderer module management API of FreeType~2. + * + */ +#define FT_RENDER_H <ftrender.h> + + + /************************************************************************* + * + * @macro: + * FT_AUTOHINTER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the auto-hinting module. + * + */ +#define FT_AUTOHINTER_H <ftautoh.h> + + + /************************************************************************* + * + * @macro: + * FT_CFF_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the CFF driver module. + * + */ +#define FT_CFF_DRIVER_H <ftcffdrv.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the TrueType driver module. + * + */ +#define FT_TRUETYPE_DRIVER_H <ftttdrv.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPE1_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the Type~1 format. + * + */ +#define FT_TYPE1_TABLES_H <t1tables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_IDS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * enumeration values which identify name strings, languages, encodings, + * etc. This file really contains a _large_ set of constant macro + * definitions, taken from the TrueType and OpenType specifications. + * + */ +#define FT_TRUETYPE_IDS_H <ttnameid.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the TrueType (as well as OpenType) format. + * + */ +#define FT_TRUETYPE_TABLES_H <tttables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TAGS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of TrueType four-byte `tags' which identify blocks in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_TRUETYPE_TAGS_H <tttags.h> + + + /************************************************************************* + * + * @macro: + * FT_BDF_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which accesses BDF-specific strings from a + * face. + * + */ +#define FT_BDF_H <ftbdf.h> + + + /************************************************************************* + * + * @macro: + * FT_CID_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which access CID font information from a + * face. + * + */ +#define FT_CID_H <ftcid.h> + + + /************************************************************************* + * + * @macro: + * FT_GZIP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports gzip-compressed files. + * + */ +#define FT_GZIP_H <ftgzip.h> + + + /************************************************************************* + * + * @macro: + * FT_LZW_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports LZW-compressed files. + * + */ +#define FT_LZW_H <ftlzw.h> + + + /************************************************************************* + * + * @macro: + * FT_BZIP2_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports bzip2-compressed files. + * + */ +#define FT_BZIP2_H <ftbzip2.h> + + + /************************************************************************* + * + * @macro: + * FT_WINFONTS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports Windows FNT files. + * + */ +#define FT_WINFONTS_H <ftwinfnt.h> + + + /************************************************************************* + * + * @macro: + * FT_GLYPH_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional glyph management component. + * + */ +#define FT_GLYPH_H <ftglyph.h> + + + /************************************************************************* + * + * @macro: + * FT_BITMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional bitmap conversion component. + * + */ +#define FT_BITMAP_H <ftbitmap.h> + + + /************************************************************************* + * + * @macro: + * FT_BBOX_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional exact bounding box computation routines. + * + */ +#define FT_BBOX_H <ftbbox.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. + * + */ +#define FT_CACHE_H <ftcache.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `glyph image' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for @FT_Glyph elements. You can also + * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to + * store small glyph bitmaps, as it will use less memory. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * glyph image-related cache declarations. + * + */ +#define FT_CACHE_IMAGE_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_SMALL_BITMAPS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `small bitmaps' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for small glyph bitmaps in a relatively + * memory-efficient way. You can also use the API defined in + * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, + * including scalable outlines. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * small bitmaps-related cache declarations. + * + */ +#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_CHARMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `charmap' API of the FreeType~2 cache sub-system. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * charmap-based cache declarations. + * + */ +#define FT_CACHE_CHARMAP_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_MAC_H + * + * @description: + * A macro used in #include statements to name the file containing the + * Macintosh-specific FreeType~2 API. The latter is used to access + * fonts embedded in resource forks. + * + * This header file must be explicitly included by client applications + * compiled on the Mac (note that the base API still works though). + * + */ +#define FT_MAC_H <ftmac.h> + + + /************************************************************************* + * + * @macro: + * FT_MULTIPLE_MASTERS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional multiple-masters management API of FreeType~2. + * + */ +#define FT_MULTIPLE_MASTERS_H <ftmm.h> + + + /************************************************************************* + * + * @macro: + * FT_SFNT_NAMES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which accesses embedded `name' strings in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_SFNT_NAMES_H <ftsnames.h> + + + /************************************************************************* + * + * @macro: + * FT_OPENTYPE_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, + * GPOS, GSUB, JSTF). + * + */ +#define FT_OPENTYPE_VALIDATE_H <ftotval.h> + + + /************************************************************************* + * + * @macro: + * FT_GX_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, + * mort, morx, bsln, just, kern, opbd, trak, prop). + * + */ +#define FT_GX_VALIDATE_H <ftgxval.h> + + + /************************************************************************* + * + * @macro: + * FT_PFR_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which accesses PFR-specific data. + * + */ +#define FT_PFR_H <ftpfr.h> + + + /************************************************************************* + * + * @macro: + * FT_STROKER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions to stroke outline paths. + */ +#define FT_STROKER_H <ftstroke.h> + + + /************************************************************************* + * + * @macro: + * FT_SYNTHESIS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs artificial obliquing and emboldening. + */ +#define FT_SYNTHESIS_H <ftsynth.h> + + + /************************************************************************* + * + * @macro: + * FT_XFREE86_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions specific to the XFree86 and + * X.Org X11 servers. + */ +#define FT_XFREE86_H <ftxf86.h> + + + /************************************************************************* + * + * @macro: + * FT_TRIGONOMETRY_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs trigonometric computations (e.g., + * cosines and arc tangents). + */ +#define FT_TRIGONOMETRY_H <fttrigon.h> + + + /************************************************************************* + * + * @macro: + * FT_LCD_FILTER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_LCD_FILTER_H <ftlcdfil.h> + + + /************************************************************************* + * + * @macro: + * FT_UNPATENTED_HINTING_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_UNPATENTED_HINTING_H <ttunpat.h> + + + /************************************************************************* + * + * @macro: + * FT_INCREMENTAL_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_INCREMENTAL_H <ftincrem.h> + + + /************************************************************************* + * + * @macro: + * FT_GASP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns entries from the TrueType GASP table. + */ +#define FT_GASP_H <ftgasp.h> + + + /************************************************************************* + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ +#define FT_ADVANCES_H <ftadvanc.h> + + + /* */ + +#define FT_ERROR_DEFINITIONS_H <fterrdef.h> + + + /* The internals of the cache sub-system are no longer exposed. We */ + /* default to FT_CACHE_H at the moment just in case, but we know of */ + /* no rogue client that uses them. */ + /* */ +#define FT_CACHE_MANAGER_H <ftcache.h> +#define FT_CACHE_INTERNAL_MRU_H <ftcache.h> +#define FT_CACHE_INTERNAL_MANAGER_H <ftcache.h> +#define FT_CACHE_INTERNAL_CACHE_H <ftcache.h> +#define FT_CACHE_INTERNAL_GLYPH_H <ftcache.h> +#define FT_CACHE_INTERNAL_IMAGE_H <ftcache.h> +#define FT_CACHE_INTERNAL_SBITS_H <ftcache.h> + + +#define FT_INCREMENTAL_H <ftincrem.h> + +#define FT_TRUETYPE_UNPATENTED_H <ttunpat.h> + + + /* + * Include internal headers definitions from <internal/...> + * only when building the library. + */ +#ifdef FT2_BUILD_LIBRARY +#define FT_INTERNAL_INTERNAL_H <internal/internal.h> +#include FT_INTERNAL_INTERNAL_H +#endif /* FT2_BUILD_LIBRARY */ + + +#endif /* __FT2_BUILD_H__ */ + + +/* END */ diff --git a/lib/linux/include/config/ftmodule.h b/lib/linux/include/config/ftmodule.h new file mode 100644 index 0000000..76d271a --- /dev/null +++ b/lib/linux/include/config/ftmodule.h @@ -0,0 +1,32 @@ +/* + * This file registers the FreeType modules compiled into the library. + * + * If you use GNU make, this file IS NOT USED! Instead, it is created in + * the objects directory (normally `<topdir>/objs/') based on information + * from `<topdir>/modules.cfg'. + * + * Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile + * FreeType without GNU make. + * + */ + +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) + +/* EOF */ diff --git a/lib/linux/include/config/ftoption.h b/lib/linux/include/config/ftoption.h new file mode 100644 index 0000000..2b0b67e --- /dev/null +++ b/lib/linux/include/config/ftoption.h @@ -0,0 +1,899 @@ +/***************************************************************************/ +/* */ +/* ftoption.h */ +/* */ +/* User-selectable configuration macros (specification only). */ +/* */ +/* Copyright 1996-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOPTION_H__ +#define __FTOPTION_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* USER-SELECTABLE CONFIGURATION MACROS */ + /* */ + /* This file contains the default configuration macro definitions for */ + /* a standard build of the FreeType library. There are three ways to */ + /* use this file to build project-specific versions of the library: */ + /* */ + /* - You can modify this file by hand, but this is not recommended in */ + /* cases where you would like to build several versions of the */ + /* library from a single source directory. */ + /* */ + /* - You can put a copy of this file in your build directory, more */ + /* precisely in `$BUILD/config/ftoption.h', where `$BUILD' is the */ + /* name of a directory that is included _before_ the FreeType include */ + /* path during compilation. */ + /* */ + /* The default FreeType Makefiles and Jamfiles use the build */ + /* directory `builds/<system>' by default, but you can easily change */ + /* that for your own projects. */ + /* */ + /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ + /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ + /* locate this file during the build. For example, */ + /* */ + /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ + /* #include <config/ftheader.h> */ + /* */ + /* will use `$BUILD/myftoptions.h' instead of this file for macro */ + /* definitions. */ + /* */ + /* Note also that you can similarly pre-define the macro */ + /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ + /* that are statically linked to the library at compile time. By */ + /* default, this file is <config/ftmodule.h>. */ + /* */ + /* We highly recommend using the third method whenever possible. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Uncomment the line below if you want to activate sub-pixel rendering */ + /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* */ + /* Note that this feature is covered by several Microsoft patents */ + /* and should not be activated in any default build of the library. */ + /* */ + /* This macro has no impact on the FreeType API, only on its */ + /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ + /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ + /* the original size in case this macro isn't defined; however, each */ + /* triplet of subpixels has R=G=B. */ + /* */ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + + /*************************************************************************/ + /* */ + /* Many compilers provide a non-ANSI 64-bit data type that can be used */ + /* by FreeType to speed up some computations. However, this will create */ + /* some problems when compiling the library in strict ANSI mode. */ + /* */ + /* For this reason, the use of 64-bit integers is normally disabled when */ + /* the __STDC__ macro is defined. You can however disable this by */ + /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ + /* */ + /* For most compilers, this will only create compilation warnings when */ + /* building the library. */ + /* */ + /* ObNote: The compiler-specific 64-bit integers are detected in the */ + /* file `ftconfig.h' either statically or through the */ + /* `configure' script on supported platforms. */ + /* */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /*************************************************************************/ + /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /*************************************************************************/ + /* */ + /* LZW-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `compress' program. This is mostly used to parse many of the PCF */ + /* files that come with various X11 distributions. The implementation */ + /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ + /* (see src/lzw/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_LZW + + + /*************************************************************************/ + /* */ + /* Gzip-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `gzip' program. This is mostly used to parse many of the PCF files */ + /* that come with XFree86. The implementation uses `zlib' to */ + /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. See also */ + /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ + /* */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /*************************************************************************/ + /* */ + /* ZLib library selection */ + /* */ + /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ + /* It allows FreeType's `ftgzip' component to link to the system's */ + /* installation of the ZLib library. This is useful on systems like */ + /* Unix or VMS where it generally is already available. */ + /* */ + /* If you let it undefined, the component will use its own copy */ + /* of the zlib sources instead. These have been modified to be */ + /* included directly within the component and *not* export external */ + /* function names. This allows you to link any program with FreeType */ + /* _and_ ZLib without linking conflicts. */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + + + /*************************************************************************/ + /* */ + /* Bzip2-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `bzip2' program. This is mostly used to parse many of the PCF */ + /* files that come with XFree86. The implementation uses `libbz2' to */ + /* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */ + /* Contrary to gzip, bzip2 currently is not included and need to use */ + /* the system available bzip2 implementation. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_BZIP2 */ + + + /*************************************************************************/ + /* */ + /* Define to disable the use of file stream functions and types, FILE, */ + /* fopen() etc. Enables the use of smaller system libraries on embedded */ + /* systems that have multiple system libraries, some with or without */ + /* file stream support, in the cases where file stream support is not */ + /* necessary such as memory loading of font files. */ + /* */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /*************************************************************************/ + /* */ + /* PNG bitmap support. */ + /* */ + /* FreeType now handles loading color bitmap glyphs in the PNG format. */ + /* This requires help from the external libpng library. Uncompressed */ + /* color bitmaps do not need any external libraries and will be */ + /* supported regardless of this configuration. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_PNG */ + + + /*************************************************************************/ + /* */ + /* HarfBuzz support. */ + /* */ + /* FreeType uses the HarfBuzz library to improve auto-hinting of */ + /* OpenType fonts. If available, many glyphs not directly addressable */ + /* by a font's character map will be hinted also. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */ + + + /*************************************************************************/ + /* */ + /* DLL export compilation */ + /* */ + /* When compiling FreeType as a DLL, some systems/compilers need a */ + /* special keyword in front OR after the return type of function */ + /* declarations. */ + /* */ + /* Two macros are used within the FreeType source code to define */ + /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ + /* */ + /* FT_EXPORT( return_type ) */ + /* */ + /* is used in a function declaration, as in */ + /* */ + /* FT_EXPORT( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* */ + /* */ + /* FT_EXPORT_DEF( return_type ) */ + /* */ + /* is used in a function definition, as in */ + /* */ + /* FT_EXPORT_DEF( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ) */ + /* { */ + /* ... some code ... */ + /* return FT_Err_Ok; */ + /* } */ + /* */ + /* You can provide your own implementation of FT_EXPORT and */ + /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ + /* will be later automatically defined as `extern return_type' to */ + /* allow normal compilation. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_EXPORT(x) extern x */ +/* #define FT_EXPORT_DEF(x) x */ + + + /*************************************************************************/ + /* */ + /* Glyph Postscript Names handling */ + /* */ + /* By default, FreeType 2 is compiled with the `psnames' module. This */ + /* module is in charge of converting a glyph name string into a */ + /* Unicode value, or return a Macintosh standard glyph name for the */ + /* use with the TrueType `post' table. */ + /* */ + /* Undefine this macro if you do not want `psnames' compiled in your */ + /* build of FreeType. This has the following effects: */ + /* */ + /* - The TrueType driver will provide its own set of glyph names, */ + /* if you build it to support postscript names in the TrueType */ + /* `post' table. */ + /* */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ + /* charmap out of the glyphs found in the fonts. */ + /* */ + /* You would normally undefine this configuration macro when building */ + /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ + /* */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Postscript Names to Unicode Values support */ + /* */ + /* By default, FreeType 2 is built with the `PSNames' module compiled */ + /* in. Among other things, the module is used to convert a glyph name */ + /* into a Unicode value. This is especially useful in order to */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* through a big table named the `Adobe Glyph List' (AGL). */ + /* */ + /* Undefine this macro if you do not want the Adobe Glyph List */ + /* compiled in your `PSNames' module. The Type 1 driver will not be */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ + /* fonts. */ + /* */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /*************************************************************************/ + /* */ + /* Support for Mac fonts */ + /* */ + /* Define this macro if you want support for outline fonts in Mac */ + /* format (mac dfont, mac resource, macbinary containing a mac */ + /* resource) on non-Mac platforms. */ + /* */ + /* Note that the `FOND' resource isn't checked. */ + /* */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /*************************************************************************/ + /* */ + /* Guessing methods to access embedded resource forks */ + /* */ + /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ + /* GNU/Linux). */ + /* */ + /* Resource forks which include fonts data are stored sometimes in */ + /* locations which users or developers don't expected. In some cases, */ + /* resource forks start with some offset from the head of a file. In */ + /* other cases, the actual resource fork is stored in file different */ + /* from what the user specifies. If this option is activated, */ + /* FreeType tries to guess whether such offsets or different file */ + /* names must be used. */ + /* */ + /* Note that normal, direct access of resource forks is controlled via */ + /* the FT_CONFIG_OPTION_MAC_FONTS option. */ + /* */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /*************************************************************************/ + /* */ + /* Allow the use of FT_Incremental_Interface to load typefaces that */ + /* contain no glyph data, but supply it via a callback function. */ + /* This is required by clients supporting document formats which */ + /* supply font data incrementally as the document is parsed, such */ + /* as the Ghostscript interpreter for the PostScript language. */ + /* */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /*************************************************************************/ + /* */ + /* The size in bytes of the render pool used by the scan-line converter */ + /* to do all of its work. */ + /* */ + /* This must be greater than 4KByte if you use FreeType to rasterize */ + /* glyphs; otherwise, you may set it to zero to avoid unnecessary */ + /* allocation of the render pool. */ + /* */ +#define FT_RENDER_POOL_SIZE 16384L + + + /*************************************************************************/ + /* */ + /* FT_MAX_MODULES */ + /* */ + /* The maximum number of modules that can be registered in a single */ + /* FreeType library object. 32 is the default. */ + /* */ +#define FT_MAX_MODULES 32 + + + /*************************************************************************/ + /* */ + /* Debug level */ + /* */ + /* FreeType can be compiled in debug or trace mode. In debug mode, */ + /* errors are reported through the `ftdebug' component. In trace */ + /* mode, additional messages are sent to the standard output during */ + /* execution. */ + /* */ + /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ + /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ + /* */ + /* Don't define any of these macros to compile in `release' mode! */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_LEVEL_ERROR */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Autofitter debugging */ + /* */ + /* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */ + /* control the autofitter behaviour for debugging purposes with global */ + /* boolean variables (consequently, you should *never* enable this */ + /* while compiling in `release' mode): */ + /* */ + /* _af_debug_disable_horz_hints */ + /* _af_debug_disable_vert_hints */ + /* _af_debug_disable_blue_hints */ + /* */ + /* Additionally, the following functions provide dumps of various */ + /* internal autofit structures to stdout (using `printf'): */ + /* */ + /* af_glyph_hints_dump_points */ + /* af_glyph_hints_dump_segments */ + /* af_glyph_hints_dump_edges */ + /* */ + /* As an argument, they use another global variable: */ + /* */ + /* _af_debug_hints */ + /* */ + /* Please have a look at the `ftgrid' demo program to see how those */ + /* variables and macros should be used. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_AUTOFIT */ + + + /*************************************************************************/ + /* */ + /* Memory Debugging */ + /* */ + /* FreeType now comes with an integrated memory debugger that is */ + /* capable of detecting simple errors like memory leaks or double */ + /* deletes. To compile it within your build of the library, you */ + /* should define FT_DEBUG_MEMORY here. */ + /* */ + /* Note that the memory debugger is only activated at runtime when */ + /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_DEBUG_MEMORY */ + + + /*************************************************************************/ + /* */ + /* Module errors */ + /* */ + /* If this macro is set (which is _not_ the default), the higher byte */ + /* of an error code gives the module in which the error has occurred, */ + /* while the lower byte is the real error code. */ + /* */ + /* Setting this macro makes sense for debugging purposes only, since */ + /* it would break source compatibility of certain programs that use */ + /* FreeType 2. */ + /* */ + /* More details can be found in the files ftmoderr.h and fterrors.h. */ + /* */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /*************************************************************************/ + /* */ + /* Position Independent Code */ + /* */ + /* If this macro is set (which is _not_ the default), FreeType2 will */ + /* avoid creating constants that require address fixups. Instead the */ + /* constants will be moved into a struct and additional intialization */ + /* code will be used. */ + /* */ + /* Setting this macro is needed for systems that prohibit address */ + /* fixups, such as BREW. */ + /* */ +/* #define FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ + /* embedded bitmaps in all formats using the SFNT module (namely */ + /* TrueType & OpenType). */ + /* */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ + /* load and enumerate the glyph Postscript names in a TrueType or */ + /* OpenType file. */ + /* */ + /* Note that when you do not compile the `PSNames' module by undefining */ + /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ + /* contain additional code used to read the PS Names table from a font. */ + /* */ + /* (By default, the module uses `PSNames' to extract glyph names.) */ + /* */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ + /* access the internal name table in a SFNT-based format like TrueType */ + /* or OpenType. The name table contains various strings used to */ + /* describe the font, like family name, copyright, version, etc. It */ + /* does not contain any glyph name though. */ + /* */ + /* Accessing SFNT names is done through the functions declared in */ + /* `ftsnames.h'. */ + /* */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /*************************************************************************/ + /* */ + /* TrueType CMap support */ + /* */ + /* Here you can fine-tune which TrueType CMap table format shall be */ + /* supported. */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ + /* a bytecode interpreter in the TrueType driver. */ + /* */ + /* By undefining this, you will only compile the code necessary to load */ + /* TrueType glyphs without hinting. */ + /* */ + /* Do not #undef this macro here, since the build system might */ + /* define it for certain configurations only. */ + /* */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ + /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ + /* replaces the native TrueType hinting mechanism when anything but */ + /* FT_RENDER_MODE_MONO is requested. */ + /* */ + /* Enabling this causes the TrueType driver to ignore instructions under */ + /* certain conditions. This is done in accordance with the guide here, */ + /* with some minor differences: */ + /* */ + /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ + /* By undefining this, you only compile the code necessary to hint */ + /* TrueType glyphs with native TT hinting. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + + + /*************************************************************************/ + /* */ + /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ + /* of the TrueType bytecode interpreter is used that doesn't implement */ + /* any of the patented opcodes and algorithms. The patents related to */ + /* TrueType hinting have expired worldwide since May 2010; this option */ + /* is now deprecated. */ + /* */ + /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ + /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ + /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ + /* */ + /* This macro is only useful for a small number of font files (mostly */ + /* for Asian scripts) that require bytecode interpretation to properly */ + /* load glyphs. For all other fonts, this produces unpleasant results, */ + /* thus the unpatented interpreter is never used to load glyphs from */ + /* TrueType fonts unless one of the following two options is used. */ + /* */ + /* - The unpatented interpreter is explicitly activated by the user */ + /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ + /* when opening the FT_Face. */ + /* */ + /* - FreeType detects that the FT_Face corresponds to one of the */ + /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ + /* contains a hard-coded list of font names and other matching */ + /* parameters (see function `tt_face_init' in file */ + /* `src/truetype/ttobjs.c'). */ + /* */ + /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* */ + /* { */ + /* FT_Parameter parameter; */ + /* FT_Open_Args open_args; */ + /* */ + /* */ + /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ + /* */ + /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ + /* open_args.pathname = my_font_pathname; */ + /* open_args.num_params = 1; */ + /* open_args.params = ¶meter; */ + /* */ + /* error = FT_Open_Face( library, &open_args, index, &face ); */ + /* ... */ + /* } */ + /* */ +/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ + /* bytecode interpreter with a huge switch statement, rather than a call */ + /* table. This results in smaller and faster code for a number of */ + /* architectures. */ + /* */ + /* Note however that on some compiler/processor combinations, undefining */ + /* this macro will generate faster, though larger, code. */ + /* */ +#define TT_CONFIG_OPTION_INTERPRETER_SWITCH + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ + /* TrueType glyph loader to use Apple's definition of how to handle */ + /* component offsets in composite glyphs. */ + /* */ + /* Apple and MS disagree on the default behavior of component offsets */ + /* in composites. Apple says that they should be scaled by the scaling */ + /* factors in the transformation matrix (roughly, it's more complex) */ + /* while MS says they should not. OpenType defines two bits in the */ + /* composite flags array which can be used to disambiguate, but old */ + /* fonts will not have them. */ + /* */ + /* http://www.microsoft.com/typography/otspec/glyf.htm */ + /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ + /* */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ + /* support for Apple's distortable font technology (fvar, gvar, cvar, */ + /* and avar tables). This has many similarities to Type 1 Multiple */ + /* Masters support. */ + /* */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ + /* an embedded `BDF ' table within SFNT-based bitmap formats. */ + /* */ +#define TT_CONFIG_OPTION_BDF + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */ + /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ + /* required. */ + /* */ +#define T1_MAX_DICT_DEPTH 5 + + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 16 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ + /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ + /* files into an existing face. Note that if set, the T1 driver will be */ + /* unable to produce kerning distances. */ + /* */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of the Multiple Masters font support in the Type 1 */ + /* driver. */ + /* */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */ + /* possible to set up the default values of the four control points that */ + /* define the stem darkening behaviour of the (new) CFF engine. For */ + /* more details please read the documentation of the */ + /* `darkening-parameters' property of the cff driver module (file */ + /* `ftcffdrv.h'), which allows the control at run-time. */ + /* */ + /* Do *not* undefine these macros! */ + /* */ +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0 + + + /*************************************************************************/ + /* */ + /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */ + /* engine gets compiled into FreeType. If defined, it is possible to */ + /* switch between the two engines using the `hinting-engine' property of */ + /* the cff driver module. */ + /* */ +/* #define CFF_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ + /* support. */ + /* */ +#define AF_CONFIG_OPTION_CJK + + /*************************************************************************/ + /* */ + /* Compile autofit module with Indic script support. */ + /* */ +#define AF_CONFIG_OPTION_INDIC + + /*************************************************************************/ + /* */ + /* Compile autofit module with warp hinting. The idea of the warping */ + /* code is to slightly scale and shift a glyph within a single dimension */ + /* so that as much of its segments are aligned (more or less) on the */ + /* grid. To find out the optimal scaling and shifting value, various */ + /* parameter combinations are tried and scored. */ + /* */ + /* This experimental option is only active if the render mode is */ + /* FT_RENDER_MODE_LIGHT. */ + /* */ +/* #define AF_CONFIG_OPTION_USE_WARPER */ + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType + * version 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * This macro is defined if either unpatented or native TrueType + * hinting is requested by the definitions above. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING +#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING +#define TT_USE_BYTECODE_INTERPRETER +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set' in file `cffdrivr.c'. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + +FT_END_HEADER + + +#endif /* __FTOPTION_H__ */ + + +/* END */ diff --git a/lib/linux/include/config/ftstdlib.h b/lib/linux/include/config/ftstdlib.h new file mode 100644 index 0000000..b940efc --- /dev/null +++ b/lib/linux/include/config/ftstdlib.h @@ -0,0 +1,174 @@ +/***************************************************************************/ +/* */ +/* ftstdlib.h */ +/* */ +/* ANSI-specific library and header configuration file (specification */ +/* only). */ +/* */ +/* Copyright 2002-2007, 2009, 2011-2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to group all #includes to the ANSI C library that */ + /* FreeType normally requires. It also defines macros to rename the */ + /* standard functions within the FreeType source code. */ + /* */ + /* Load a file which defines __FTSTDLIB_H__ before this one to override */ + /* it. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSTDLIB_H__ +#define __FTSTDLIB_H__ + + +#include <stddef.h> + +#define ft_ptrdiff_t ptrdiff_t + + + /**********************************************************************/ + /* */ + /* integer limits */ + /* */ + /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ + /* of `int' and `long' in bytes at compile-time. So far, this works */ + /* for all platforms the library has been tested on. */ + /* */ + /* Note that on the extremely rare platforms that do not provide */ + /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ + /* old Crays where `int' is 36 bits), we do not make any guarantee */ + /* about the correct behaviour of FT2 with all fonts. */ + /* */ + /* In these case, `ftconfig.h' will refuse to compile anyway with a */ + /* message like `couldn't find 32-bit type' or something similar. */ + /* */ + /**********************************************************************/ + + +#include <limits.h> + +#define FT_CHAR_BIT CHAR_BIT +#define FT_USHORT_MAX USHRT_MAX +#define FT_INT_MAX INT_MAX +#define FT_INT_MIN INT_MIN +#define FT_UINT_MAX UINT_MAX +#define FT_ULONG_MAX ULONG_MAX + + + /**********************************************************************/ + /* */ + /* character and string processing */ + /* */ + /**********************************************************************/ + + +#include <string.h> + +#define ft_memchr memchr +#define ft_memcmp memcmp +#define ft_memcpy memcpy +#define ft_memmove memmove +#define ft_memset memset +#define ft_strcat strcat +#define ft_strcmp strcmp +#define ft_strcpy strcpy +#define ft_strlen strlen +#define ft_strncmp strncmp +#define ft_strncpy strncpy +#define ft_strrchr strrchr +#define ft_strstr strstr + + + /**********************************************************************/ + /* */ + /* file handling */ + /* */ + /**********************************************************************/ + + +#include <stdio.h> + +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell +#define ft_sprintf sprintf + + + /**********************************************************************/ + /* */ + /* sorting */ + /* */ + /**********************************************************************/ + + +#include <stdlib.h> + +#define ft_qsort qsort + + + /**********************************************************************/ + /* */ + /* memory allocation */ + /* */ + /**********************************************************************/ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /**********************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /**********************************************************************/ + + +#define ft_atol atol +#define ft_labs labs + + + /**********************************************************************/ + /* */ + /* execution control */ + /* */ + /**********************************************************************/ + + +#include <setjmp.h> + +#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ + /* jmp_buf is defined as a macro */ + /* on certain platforms */ + +#define ft_longjmp longjmp +#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ + + + /* the following is only used for debugging purposes, i.e., if */ + /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ + +#include <stdarg.h> + + +#endif /* __FTSTDLIB_H__ */ + + +/* END */ diff --git a/lib/linux/include/freetype.h b/lib/linux/include/freetype.h new file mode 100644 index 0000000..27fd44b --- /dev/null +++ b/lib/linux/include/freetype.h @@ -0,0 +1,4048 @@ +/***************************************************************************/ +/* */ +/* freetype.h */ +/* */ +/* FreeType high-level API and common types (specification only). */ +/* */ +/* Copyright 1996-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FREETYPE_H__ +#define __FREETYPE_H__ + + +#ifndef FT_FREETYPE_H +#error "`ft2build.h' hasn't been included yet!" +#error "Please always use macros to include FreeType header files." +#error "Example:" +#error " #include <ft2build.h>" +#error " #include FT_FREETYPE_H" +#endif + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H +#include FT_ERRORS_H + + +FT_BEGIN_HEADER + + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* header_inclusion */ + /* */ + /* <Title> */ + /* FreeType's header inclusion scheme */ + /* */ + /* <Abstract> */ + /* How client applications should include FreeType header files. */ + /* */ + /* <Description> */ + /* To be as flexible as possible (and for historical reasons), */ + /* FreeType uses a very special inclusion scheme to load header */ + /* files, for example */ + /* */ + /* { */ + /* #include <ft2build.h> */ + /* */ + /* #include FT_FREETYPE_H */ + /* #include FT_OUTLINE_H */ + /* } */ + /* */ + /* A compiler and its preprocessor only needs an include path to find */ + /* the file `ft2build.h'; the exact locations and names of the other */ + /* FreeType header files are hidden by preprocessor macro names, */ + /* loaded by `ft2build.h'. The API documentation always gives the */ + /* header macro name needed for a particular function. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* user_allocation */ + /* */ + /* <Title> */ + /* User allocation */ + /* */ + /* <Abstract> */ + /* How client applications should allocate FreeType data structures. */ + /* */ + /* <Description> */ + /* FreeType assumes that structures allocated by the user and passed */ + /* as arguments are zeroed out except for the actual data. In other */ + /* words, it is recommended to use `calloc' (or variants of it) */ + /* instead of `malloc' for allocation. */ + /* */ + /*************************************************************************/ + + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S I C T Y P E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /* <Title> */ + /* Base Interface */ + /* */ + /* <Abstract> */ + /* The FreeType~2 base font interface. */ + /* */ + /* <Description> */ + /* This section describes the most important public high-level API */ + /* functions of FreeType~2. */ + /* */ + /* <Order> */ + /* FT_Library */ + /* FT_Face */ + /* FT_Size */ + /* FT_GlyphSlot */ + /* FT_CharMap */ + /* FT_Encoding */ + /* FT_ENC_TAG */ + /* */ + /* FT_FaceRec */ + /* */ + /* FT_FACE_FLAG_SCALABLE */ + /* FT_FACE_FLAG_FIXED_SIZES */ + /* FT_FACE_FLAG_FIXED_WIDTH */ + /* FT_FACE_FLAG_HORIZONTAL */ + /* FT_FACE_FLAG_VERTICAL */ + /* FT_FACE_FLAG_COLOR */ + /* FT_FACE_FLAG_SFNT */ + /* FT_FACE_FLAG_CID_KEYED */ + /* FT_FACE_FLAG_TRICKY */ + /* FT_FACE_FLAG_KERNING */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS */ + /* FT_FACE_FLAG_GLYPH_NAMES */ + /* FT_FACE_FLAG_EXTERNAL_STREAM */ + /* FT_FACE_FLAG_HINTER */ + /* FT_FACE_FLAG_TRICKY */ + /* */ + /* FT_HAS_HORIZONTAL */ + /* FT_HAS_VERTICAL */ + /* FT_HAS_KERNING */ + /* FT_HAS_FIXED_SIZES */ + /* FT_HAS_GLYPH_NAMES */ + /* FT_HAS_MULTIPLE_MASTERS */ + /* FT_HAS_COLOR */ + /* */ + /* FT_IS_SFNT */ + /* FT_IS_SCALABLE */ + /* FT_IS_FIXED_WIDTH */ + /* FT_IS_CID_KEYED */ + /* FT_IS_TRICKY */ + /* */ + /* FT_STYLE_FLAG_BOLD */ + /* FT_STYLE_FLAG_ITALIC */ + /* */ + /* FT_SizeRec */ + /* FT_Size_Metrics */ + /* */ + /* FT_GlyphSlotRec */ + /* FT_Glyph_Metrics */ + /* FT_SubGlyph */ + /* */ + /* FT_Bitmap_Size */ + /* */ + /* FT_Init_FreeType */ + /* FT_Done_FreeType */ + /* */ + /* FT_New_Face */ + /* FT_Done_Face */ + /* FT_Reference_Face */ + /* FT_New_Memory_Face */ + /* FT_Open_Face */ + /* FT_Open_Args */ + /* FT_Parameter */ + /* FT_Attach_File */ + /* FT_Attach_Stream */ + /* */ + /* FT_Set_Char_Size */ + /* FT_Set_Pixel_Sizes */ + /* FT_Request_Size */ + /* FT_Select_Size */ + /* FT_Size_Request_Type */ + /* FT_Size_RequestRec */ + /* FT_Size_Request */ + /* FT_Set_Transform */ + /* FT_Load_Glyph */ + /* FT_Get_Char_Index */ + /* FT_Get_First_Char */ + /* FT_Get_Next_Char */ + /* FT_Get_Name_Index */ + /* FT_Load_Char */ + /* */ + /* FT_OPEN_MEMORY */ + /* FT_OPEN_STREAM */ + /* FT_OPEN_PATHNAME */ + /* FT_OPEN_DRIVER */ + /* FT_OPEN_PARAMS */ + /* */ + /* FT_LOAD_DEFAULT */ + /* FT_LOAD_RENDER */ + /* FT_LOAD_MONOCHROME */ + /* FT_LOAD_LINEAR_DESIGN */ + /* FT_LOAD_NO_SCALE */ + /* FT_LOAD_NO_HINTING */ + /* FT_LOAD_NO_BITMAP */ + /* FT_LOAD_NO_AUTOHINT */ + /* FT_LOAD_COLOR */ + /* */ + /* FT_LOAD_VERTICAL_LAYOUT */ + /* FT_LOAD_IGNORE_TRANSFORM */ + /* FT_LOAD_FORCE_AUTOHINT */ + /* FT_LOAD_NO_RECURSE */ + /* FT_LOAD_PEDANTIC */ + /* */ + /* FT_LOAD_TARGET_NORMAL */ + /* FT_LOAD_TARGET_LIGHT */ + /* FT_LOAD_TARGET_MONO */ + /* FT_LOAD_TARGET_LCD */ + /* FT_LOAD_TARGET_LCD_V */ + /* */ + /* FT_LOAD_TARGET_MODE */ + /* */ + /* FT_Render_Glyph */ + /* FT_Render_Mode */ + /* FT_Get_Kerning */ + /* FT_Kerning_Mode */ + /* FT_Get_Track_Kerning */ + /* FT_Get_Glyph_Name */ + /* FT_Get_Postscript_Name */ + /* */ + /* FT_CharMapRec */ + /* FT_Select_Charmap */ + /* FT_Set_Charmap */ + /* FT_Get_Charmap_Index */ + /* */ + /* FT_Get_FSType_Flags */ + /* FT_Get_SubGlyph_Info */ + /* */ + /* FT_Face_Internal */ + /* FT_Size_Internal */ + /* FT_Slot_Internal */ + /* */ + /* FT_FACE_FLAG_XXX */ + /* FT_STYLE_FLAG_XXX */ + /* FT_OPEN_XXX */ + /* FT_LOAD_XXX */ + /* FT_LOAD_TARGET_XXX */ + /* FT_SUBGLYPH_FLAG_XXX */ + /* FT_FSTYPE_XXX */ + /* */ + /* FT_HAS_FAST_GLYPHS */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Glyph_Metrics */ + /* */ + /* <Description> */ + /* A structure used to model the metrics of a single glyph. The */ + /* values are expressed in 26.6 fractional pixel format; if the flag */ + /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ + /* are expressed in font units instead. */ + /* */ + /* <Fields> */ + /* width :: */ + /* The glyph's width. */ + /* */ + /* height :: */ + /* The glyph's height. */ + /* */ + /* horiBearingX :: */ + /* Left side bearing for horizontal layout. */ + /* */ + /* horiBearingY :: */ + /* Top side bearing for horizontal layout. */ + /* */ + /* horiAdvance :: */ + /* Advance width for horizontal layout. */ + /* */ + /* vertBearingX :: */ + /* Left side bearing for vertical layout. */ + /* */ + /* vertBearingY :: */ + /* Top side bearing for vertical layout. Larger positive values */ + /* mean further below the vertical glyph origin. */ + /* */ + /* vertAdvance :: */ + /* Advance height for vertical layout. Positive values mean the */ + /* glyph has a positive advance downward. */ + /* */ + /* <Note> */ + /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ + /* dimensions of the hinted glyph (in case hinting is applicable). */ + /* */ + /* Stroking a glyph with an outside border does not increase */ + /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ + /* values to account for the added width and height. */ + /* */ + typedef struct FT_Glyph_Metrics_ + { + FT_Pos width; + FT_Pos height; + + FT_Pos horiBearingX; + FT_Pos horiBearingY; + FT_Pos horiAdvance; + + FT_Pos vertBearingX; + FT_Pos vertBearingY; + FT_Pos vertAdvance; + + } FT_Glyph_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap_Size */ + /* */ + /* <Description> */ + /* This structure models the metrics of a bitmap strike (i.e., a set */ + /* of glyphs for a given point size and resolution) in a bitmap font. */ + /* It is used for the `available_sizes' field of @FT_Face. */ + /* */ + /* <Fields> */ + /* height :: The vertical distance, in pixels, between two */ + /* consecutive baselines. It is always positive. */ + /* */ + /* width :: The average width, in pixels, of all glyphs in the */ + /* strike. */ + /* */ + /* size :: The nominal size of the strike in 26.6 fractional */ + /* points. This field is not very useful. */ + /* */ + /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ + /* pixels. */ + /* */ + /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ + /* pixels. */ + /* */ + /* <Note> */ + /* Windows FNT: */ + /* The nominal size given in a FNT font is not reliable. Thus when */ + /* the driver finds it incorrect, it sets `size' to some calculated */ + /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ + /* height given in the font, respectively. */ + /* */ + /* TrueType embedded bitmaps: */ + /* `size', `width', and `height' values are not contained in the */ + /* bitmap strike itself. They are computed from the global font */ + /* parameters. */ + /* */ + typedef struct FT_Bitmap_Size_ + { + FT_Short height; + FT_Short width; + + FT_Pos size; + + FT_Pos x_ppem; + FT_Pos y_ppem; + + } FT_Bitmap_Size; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Library */ + /* */ + /* <Description> */ + /* A handle to a FreeType library instance. Each `library' is */ + /* completely independent from the others; it is the `root' of a set */ + /* of objects like fonts, faces, sizes, etc. */ + /* */ + /* It also embeds a memory manager (see @FT_Memory), as well as a */ + /* scan-line converter object (see @FT_Raster). */ + /* */ + /* In multi-threaded applications, make sure that the same FT_Library */ + /* object or any of its children doesn't get accessed in parallel. */ + /* */ + /* <Note> */ + /* Library objects are normally created by @FT_Init_FreeType, and */ + /* destroyed with @FT_Done_FreeType. If you need reference-counting */ + /* (cf. @FT_Reference_Library), use @FT_New_Library and */ + /* @FT_Done_Library. */ + /* */ + typedef struct FT_LibraryRec_ *FT_Library; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Module */ + /* */ + /* <Description> */ + /* A handle to a given FreeType module object. Each module can be a */ + /* font driver, a renderer, or anything else that provides services */ + /* to the formers. */ + /* */ + typedef struct FT_ModuleRec_* FT_Module; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Driver */ + /* */ + /* <Description> */ + /* A handle to a given FreeType font driver object. Each font driver */ + /* is a special module capable of creating faces from font files. */ + /* */ + typedef struct FT_DriverRec_* FT_Driver; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Renderer */ + /* */ + /* <Description> */ + /* A handle to a given FreeType renderer. A renderer is a special */ + /* module in charge of converting a glyph image to a bitmap, when */ + /* necessary. Each renderer supports a given glyph image format, and */ + /* one or more target surface depths. */ + /* */ + typedef struct FT_RendererRec_* FT_Renderer; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face */ + /* */ + /* <Description> */ + /* A handle to a given typographic face object. A face object models */ + /* a given typeface, in a given style. */ + /* */ + /* <Note> */ + /* Each face object also owns a single @FT_GlyphSlot object, as well */ + /* as one or more @FT_Size objects. */ + /* */ + /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ + /* a given filepathname or a custom input stream. */ + /* */ + /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ + /* */ + /* <Also> */ + /* See @FT_FaceRec for the publicly accessible fields of a given face */ + /* object. */ + /* */ + typedef struct FT_FaceRec_* FT_Face; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size */ + /* */ + /* <Description> */ + /* A handle to an object used to model a face scaled to a given */ + /* character size. */ + /* */ + /* <Note> */ + /* Each @FT_Face has an _active_ @FT_Size object that is used by */ + /* functions like @FT_Load_Glyph to determine the scaling */ + /* transformation that in turn is used to load and hint glyphs and */ + /* metrics. */ + /* */ + /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ + /* @FT_Request_Size or even @FT_Select_Size to change the content */ + /* (i.e., the scaling values) of the active @FT_Size. */ + /* */ + /* You can use @FT_New_Size to create additional size objects for a */ + /* given @FT_Face, but they won't be used by other functions until */ + /* you activate it through @FT_Activate_Size. Only one size can be */ + /* activated at any given time per face. */ + /* */ + /* <Also> */ + /* See @FT_SizeRec for the publicly accessible fields of a given size */ + /* object. */ + /* */ + typedef struct FT_SizeRec_* FT_Size; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_GlyphSlot */ + /* */ + /* <Description> */ + /* A handle to a given `glyph slot'. A slot is a container where it */ + /* is possible to load any of the glyphs contained in its parent */ + /* face. */ + /* */ + /* In other words, each time you call @FT_Load_Glyph or */ + /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ + /* i.e., the glyph's metrics, its image (bitmap or outline), and */ + /* other control information. */ + /* */ + /* <Also> */ + /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ + /* */ + typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_CharMap */ + /* */ + /* <Description> */ + /* A handle to a given character map. A charmap is used to translate */ + /* character codes in a given encoding into glyph indexes for its */ + /* parent's face. Some font formats may provide several charmaps per */ + /* font. */ + /* */ + /* Each face object owns zero or more charmaps, but only one of them */ + /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ + /* */ + /* The list of available charmaps in a face is available through the */ + /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ + /* */ + /* The currently active charmap is available as `face->charmap'. */ + /* You should call @FT_Set_Charmap to change it. */ + /* */ + /* <Note> */ + /* When a new face is created (either through @FT_New_Face or */ + /* @FT_Open_Face), the library looks for a Unicode charmap within */ + /* the list and automatically activates it. */ + /* */ + /* <Also> */ + /* See @FT_CharMapRec for the publicly accessible fields of a given */ + /* character map. */ + /* */ + typedef struct FT_CharMapRec_* FT_CharMap; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_ENC_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags into an unsigned long. It is */ + /* used to define `encoding' identifiers (see @FT_Encoding). */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_ENC_TAG( value, a, b, c, d ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) \ + value = ( ( (FT_UInt32)(a) << 24 ) | \ + ( (FT_UInt32)(b) << 16 ) | \ + ( (FT_UInt32)(c) << 8 ) | \ + (FT_UInt32)(d) ) + +#endif /* FT_ENC_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Encoding */ + /* */ + /* <Description> */ + /* An enumeration used to specify character sets supported by */ + /* charmaps. Used in the @FT_Select_Charmap API function. */ + /* */ + /* <Note> */ + /* Despite the name, this enumeration lists specific character */ + /* repertories (i.e., charsets), and not text encoding methods (e.g., */ + /* UTF-8, UTF-16, etc.). */ + /* */ + /* Other encodings might be defined in the future. */ + /* */ + /* <Values> */ + /* FT_ENCODING_NONE :: */ + /* The encoding value~0 is reserved. */ + /* */ + /* FT_ENCODING_UNICODE :: */ + /* Corresponds to the Unicode character set. This value covers */ + /* all versions of the Unicode repertoire, including ASCII and */ + /* Latin-1. Most fonts include a Unicode charmap, but not all */ + /* of them. */ + /* */ + /* For example, if you want to access Unicode value U+1F028 (and */ + /* the font contains it), use value 0x1F028 as the input value for */ + /* @FT_Get_Char_Index. */ + /* */ + /* FT_ENCODING_MS_SYMBOL :: */ + /* Corresponds to the Microsoft Symbol encoding, used to encode */ + /* mathematical symbols in the 32..255 character code range. For */ + /* more information, see */ + /* `http://www.kostis.net/charsets/symbol.htm'. */ + /* */ + /* FT_ENCODING_SJIS :: */ + /* Corresponds to Japanese SJIS encoding. More info at */ + /* at `http://en.wikipedia.org/wiki/Shift_JIS'. */ + /* See note on multi-byte encodings below. */ + /* */ + /* FT_ENCODING_GB2312 :: */ + /* Corresponds to an encoding system for Simplified Chinese as used */ + /* used in mainland China. */ + /* */ + /* FT_ENCODING_BIG5 :: */ + /* Corresponds to an encoding system for Traditional Chinese as */ + /* used in Taiwan and Hong Kong. */ + /* */ + /* FT_ENCODING_WANSUNG :: */ + /* Corresponds to the Korean encoding system known as Wansung. */ + /* For more information see */ + /* `http://msdn.microsoft.com/en-US/goglobal/cc305154'. */ + /* */ + /* FT_ENCODING_JOHAB :: */ + /* The Korean standard character set (KS~C 5601-1992), which */ + /* corresponds to MS Windows code page 1361. This character set */ + /* includes all possible Hangeul character combinations. */ + /* */ + /* FT_ENCODING_ADOBE_LATIN_1 :: */ + /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ + /* PostScript font. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_ADOBE_STANDARD :: */ + /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_EXPERT :: */ + /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_CUSTOM :: */ + /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ + /* OpenType/CFF fonts. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_APPLE_ROMAN :: */ + /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ + /* and OpenType fonts contain a charmap for this encoding, since */ + /* older versions of Mac OS are able to use it. */ + /* */ + /* FT_ENCODING_OLD_LATIN_2 :: */ + /* This value is deprecated and was never used nor reported by */ + /* FreeType. Don't use or test for it. */ + /* */ + /* FT_ENCODING_MS_SJIS :: */ + /* Same as FT_ENCODING_SJIS. Deprecated. */ + /* */ + /* FT_ENCODING_MS_GB2312 :: */ + /* Same as FT_ENCODING_GB2312. Deprecated. */ + /* */ + /* FT_ENCODING_MS_BIG5 :: */ + /* Same as FT_ENCODING_BIG5. Deprecated. */ + /* */ + /* FT_ENCODING_MS_WANSUNG :: */ + /* Same as FT_ENCODING_WANSUNG. Deprecated. */ + /* */ + /* FT_ENCODING_MS_JOHAB :: */ + /* Same as FT_ENCODING_JOHAB. Deprecated. */ + /* */ + /* <Note> */ + /* By default, FreeType automatically synthesizes a Unicode charmap */ + /* for PostScript fonts, using their glyph names dictionaries. */ + /* However, it also reports the encodings defined explicitly in the */ + /* font file, for the cases when they are needed, with the Adobe */ + /* values as well. */ + /* */ + /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ + /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ + /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ + /* which encoding is really present. If, for example, the */ + /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ + /* the font is encoded in KOI8-R. */ + /* */ + /* FT_ENCODING_NONE is always set (with a single exception) by the */ + /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ + /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ + /* which encoding is really present. For example, */ + /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ + /* Russian). */ + /* */ + /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ + /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ + /* FT_ENCODING_APPLE_ROMAN). */ + /* */ + /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ + /* @FT_Get_CMap_Language_ID to query the Mac language ID that may */ + /* be needed to be able to distinguish Apple encoding variants. See */ + /* */ + /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt */ + /* */ + /* to get an idea how to do that. Basically, if the language ID */ + /* is~0, don't use it, otherwise subtract 1 from the language ID. */ + /* Then examine `encoding_id'. If, for example, `encoding_id' is */ + /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ + /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ + /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ + /* variant the Arabic encoding. */ + /* */ + typedef enum FT_Encoding_ + { + FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), + + FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), + + FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), + FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), + + /* for backwards compatibility */ + FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, + FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, + FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, + FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, + FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, + + FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), + + FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), + + FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) + + } FT_Encoding; + + + /* these constants are deprecated; use the corresponding `FT_Encoding' */ + /* values instead */ +#define ft_encoding_none FT_ENCODING_NONE +#define ft_encoding_unicode FT_ENCODING_UNICODE +#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL +#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 +#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 +#define ft_encoding_sjis FT_ENCODING_SJIS +#define ft_encoding_gb2312 FT_ENCODING_GB2312 +#define ft_encoding_big5 FT_ENCODING_BIG5 +#define ft_encoding_wansung FT_ENCODING_WANSUNG +#define ft_encoding_johab FT_ENCODING_JOHAB + +#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD +#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT +#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM +#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_CharMapRec */ + /* */ + /* <Description> */ + /* The base charmap structure. */ + /* */ + /* <Fields> */ + /* face :: A handle to the parent face object. */ + /* */ + /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ + /* this with @FT_Select_Charmap. */ + /* */ + /* platform_id :: An ID number describing the platform for the */ + /* following encoding ID. This comes directly from */ + /* the TrueType specification and should be emulated */ + /* for other formats. */ + /* */ + /* encoding_id :: A platform specific encoding number. This also */ + /* comes from the TrueType specification and should be */ + /* emulated similarly. */ + /* */ + typedef struct FT_CharMapRec_ + { + FT_Face face; + FT_Encoding encoding; + FT_UShort platform_id; + FT_UShort encoding_id; + + } FT_CharMapRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S E O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ + /* model private data of a given @FT_Face object. */ + /* */ + /* This structure might change between releases of FreeType~2 and is */ + /* not generally available to client applications. */ + /* */ + typedef struct FT_Face_InternalRec_* FT_Face_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_FaceRec */ + /* */ + /* <Description> */ + /* FreeType root face class structure. A face object models a */ + /* typeface in a font file. */ + /* */ + /* <Fields> */ + /* num_faces :: The number of faces in the font file. Some */ + /* font formats can have multiple faces in */ + /* a font file. */ + /* */ + /* face_index :: The index of the face in the font file. It */ + /* is set to~0 if there is only one face in */ + /* the font file. */ + /* */ + /* face_flags :: A set of bit flags that give important */ + /* information about the face; see */ + /* @FT_FACE_FLAG_XXX for the details. */ + /* */ + /* style_flags :: A set of bit flags indicating the style of */ + /* the face; see @FT_STYLE_FLAG_XXX for the */ + /* details. */ + /* */ + /* num_glyphs :: The number of glyphs in the face. If the */ + /* face is scalable and has sbits (see */ + /* `num_fixed_sizes'), it is set to the number */ + /* of outline glyphs. */ + /* */ + /* For CID-keyed fonts, this value gives the */ + /* highest CID used in the font. */ + /* */ + /* family_name :: The face's family name. This is an ASCII */ + /* string, usually in English, that describes */ + /* the typeface's family (like `Times New */ + /* Roman', `Bodoni', `Garamond', etc). This */ + /* is a least common denominator used to list */ + /* fonts. Some formats (TrueType & OpenType) */ + /* provide localized and Unicode versions of */ + /* this string. Applications should use the */ + /* format specific interface to access them. */ + /* Can be NULL (e.g., in fonts embedded in a */ + /* PDF file). */ + /* */ + /* style_name :: The face's style name. This is an ASCII */ + /* string, usually in English, that describes */ + /* the typeface's style (like `Italic', */ + /* `Bold', `Condensed', etc). Not all font */ + /* formats provide a style name, so this field */ + /* is optional, and can be set to NULL. As */ + /* for `family_name', some formats provide */ + /* localized and Unicode versions of this */ + /* string. Applications should use the format */ + /* specific interface to access them. */ + /* */ + /* num_fixed_sizes :: The number of bitmap strikes in the face. */ + /* Even if the face is scalable, there might */ + /* still be bitmap strikes, which are called */ + /* `sbits' in that case. */ + /* */ + /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ + /* strikes in the face. It is set to NULL if */ + /* there is no bitmap strike. */ + /* */ + /* num_charmaps :: The number of charmaps in the face. */ + /* */ + /* charmaps :: An array of the charmaps of the face. */ + /* */ + /* generic :: A field reserved for client uses. See the */ + /* @FT_Generic type description. */ + /* */ + /* bbox :: The font bounding box. Coordinates are */ + /* expressed in font units (see */ + /* `units_per_EM'). The box is large enough */ + /* to contain any glyph from the font. Thus, */ + /* `bbox.yMax' can be seen as the `maximum */ + /* ascender', and `bbox.yMin' as the `minimum */ + /* descender'. Only relevant for scalable */ + /* formats. */ + /* */ + /* Note that the bounding box might be off by */ + /* (at least) one pixel for hinted fonts. See */ + /* @FT_Size_Metrics for further discussion. */ + /* */ + /* units_per_EM :: The number of font units per EM square for */ + /* this face. This is typically 2048 for */ + /* TrueType fonts, and 1000 for Type~1 fonts. */ + /* Only relevant for scalable formats. */ + /* */ + /* ascender :: The typographic ascender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMax'. Only relevant for scalable */ + /* formats. */ + /* */ + /* descender :: The typographic descender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMin'. Note that this field is */ + /* usually negative. Only relevant for */ + /* scalable formats. */ + /* */ + /* height :: This value is the vertical distance */ + /* between two consecutive baselines, */ + /* expressed in font units. It is always */ + /* positive. Only relevant for scalable */ + /* formats. */ + /* */ + /* If you want the global glyph height, use */ + /* `ascender - descender'. */ + /* */ + /* max_advance_width :: The maximum advance width, in font units, */ + /* for all glyphs in this face. This can be */ + /* used to make word wrapping computations */ + /* faster. Only relevant for scalable */ + /* formats. */ + /* */ + /* max_advance_height :: The maximum advance height, in font units, */ + /* for all glyphs in this face. This is only */ + /* relevant for vertical layouts, and is set */ + /* to `height' for fonts that do not provide */ + /* vertical metrics. Only relevant for */ + /* scalable formats. */ + /* */ + /* underline_position :: The position, in font units, of the */ + /* underline line for this face. It is the */ + /* center of the underlining stem. Only */ + /* relevant for scalable formats. */ + /* */ + /* underline_thickness :: The thickness, in font units, of the */ + /* underline for this face. Only relevant for */ + /* scalable formats. */ + /* */ + /* glyph :: The face's associated glyph slot(s). */ + /* */ + /* size :: The current active size for this face. */ + /* */ + /* charmap :: The current active charmap for this face. */ + /* */ + /* <Note> */ + /* Fields may be changed after a call to @FT_Attach_File or */ + /* @FT_Attach_Stream. */ + /* */ + typedef struct FT_FaceRec_ + { + FT_Long num_faces; + FT_Long face_index; + + FT_Long face_flags; + FT_Long style_flags; + + FT_Long num_glyphs; + + FT_String* family_name; + FT_String* style_name; + + FT_Int num_fixed_sizes; + FT_Bitmap_Size* available_sizes; + + FT_Int num_charmaps; + FT_CharMap* charmaps; + + FT_Generic generic; + + /*# The following member variables (down to `underline_thickness') */ + /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ + /*# for bitmap fonts. */ + FT_BBox bbox; + + FT_UShort units_per_EM; + FT_Short ascender; + FT_Short descender; + FT_Short height; + + FT_Short max_advance_width; + FT_Short max_advance_height; + + FT_Short underline_position; + FT_Short underline_thickness; + + FT_GlyphSlot glyph; + FT_Size size; + FT_CharMap charmap; + + /*@private begin */ + + FT_Driver driver; + FT_Memory memory; + FT_Stream stream; + + FT_ListRec sizes_list; + + FT_Generic autohint; /* face-specific auto-hinter data */ + void* extensions; /* unused */ + + FT_Face_Internal internal; + + /*@private end */ + + } FT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FACE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `face_flags' field of the */ + /* @FT_FaceRec structure. They inform client applications of */ + /* properties of the corresponding face. */ + /* */ + /* <Values> */ + /* FT_FACE_FLAG_SCALABLE :: */ + /* Indicates that the face contains outline glyphs. This doesn't */ + /* prevent bitmap strikes, i.e., a face can have both this and */ + /* and @FT_FACE_FLAG_FIXED_SIZES set. */ + /* */ + /* FT_FACE_FLAG_FIXED_SIZES :: */ + /* Indicates that the face contains bitmap strikes. See also the */ + /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ + /* */ + /* FT_FACE_FLAG_FIXED_WIDTH :: */ + /* Indicates that the face contains fixed-width characters (like */ + /* Courier, Lucido, MonoType, etc.). */ + /* */ + /* FT_FACE_FLAG_SFNT :: */ + /* Indicates that the face uses the `sfnt' storage scheme. For */ + /* now, this means TrueType and OpenType. */ + /* */ + /* FT_FACE_FLAG_HORIZONTAL :: */ + /* Indicates that the face contains horizontal glyph metrics. This */ + /* should be set for all common formats. */ + /* */ + /* FT_FACE_FLAG_VERTICAL :: */ + /* Indicates that the face contains vertical glyph metrics. This */ + /* is only available in some formats, not all of them. */ + /* */ + /* FT_FACE_FLAG_KERNING :: */ + /* Indicates that the face contains kerning information. If set, */ + /* the kerning distance can be retrieved through the function */ + /* @FT_Get_Kerning. Otherwise the function always return the */ + /* vector (0,0). Note that FreeType doesn't handle kerning data */ + /* from the `GPOS' table (as present in some OpenType fonts). */ + /* */ + /* FT_FACE_FLAG_FAST_GLYPHS :: */ + /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ + /* */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ + /* Indicates that the font contains multiple masters and is capable */ + /* of interpolating between them. See the multiple-masters */ + /* specific API for details. */ + /* */ + /* FT_FACE_FLAG_GLYPH_NAMES :: */ + /* Indicates that the font contains glyph names that can be */ + /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ + /* fonts contain broken glyph name tables. Use the function */ + /* @FT_Has_PS_Glyph_Names when needed. */ + /* */ + /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ + /* Used internally by FreeType to indicate that a face's stream was */ + /* provided by the client application and should not be destroyed */ + /* when @FT_Done_Face is called. Don't read or test this flag. */ + /* */ + /* FT_FACE_FLAG_HINTER :: */ + /* Set if the font driver has a hinting machine of its own. For */ + /* example, with TrueType fonts, it makes sense to use data from */ + /* the SFNT `gasp' table only if the native TrueType hinting engine */ + /* (with the bytecode interpreter) is available and active. */ + /* */ + /* FT_FACE_FLAG_CID_KEYED :: */ + /* Set if the font is CID-keyed. In that case, the font is not */ + /* accessed by glyph indices but by CID values. For subsetted */ + /* CID-keyed fonts this has the consequence that not all index */ + /* values are a valid argument to FT_Load_Glyph. Only the CID */ + /* values for which corresponding glyphs in the subsetted font */ + /* exist make FT_Load_Glyph return successfully; in all other cases */ + /* you get an `FT_Err_Invalid_Argument' error. */ + /* */ + /* Note that CID-keyed fonts that are in an SFNT wrapper don't */ + /* have this flag set since the glyphs are accessed in the normal */ + /* way (using contiguous indices); the `CID-ness' isn't visible to */ + /* the application. */ + /* */ + /* FT_FACE_FLAG_TRICKY :: */ + /* Set if the font is `tricky', this is, it always needs the */ + /* font format's native hinting engine to get a reasonable result. */ + /* A typical example is the Chinese font `mingli.ttf' that uses */ + /* TrueType bytecode instructions to move and scale all of its */ + /* subglyphs. */ + /* */ + /* It is not possible to autohint such fonts using */ + /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ + /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ + /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ + /* probably never want this except for demonstration purposes. */ + /* */ + /* Currently, there are about a dozen TrueType fonts in the list of */ + /* tricky fonts; they are hard-coded in file `ttobjs.c'. */ + /* */ + /* FT_FACE_FLAG_COLOR :: */ + /* Set if the font has color glyph tables. To access color glyphs */ + /* use @FT_LOAD_COLOR. */ + /* */ +#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) +#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) +#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) +#define FT_FACE_FLAG_SFNT ( 1L << 3 ) +#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) +#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) +#define FT_FACE_FLAG_KERNING ( 1L << 6 ) +#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) +#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) +#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) +#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) +#define FT_FACE_FLAG_HINTER ( 1L << 11 ) +#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) +#define FT_FACE_FLAG_COLOR ( 1L << 14 ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_HORIZONTAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * horizontal metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ +#define FT_HAS_HORIZONTAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_VERTICAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains real + * vertical metrics (and not only synthesized ones). + * + */ +#define FT_HAS_VERTICAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_KERNING( face ) + * + * @description: + * A macro that returns true whenever a face object contains kerning + * data that can be accessed with @FT_Get_Kerning. + * + */ +#define FT_HAS_KERNING( face ) \ + ( face->face_flags & FT_FACE_FLAG_KERNING ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SCALABLE( face ) + * + * @description: + * A macro that returns true whenever a face object contains a scalable + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, + * and PFR font formats. + * + */ +#define FT_IS_SCALABLE( face ) \ + ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SFNT( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font + * whose format is based on the SFNT storage scheme. This usually + * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded + * bitmap fonts. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ +#define FT_IS_SFNT( face ) \ + ( face->face_flags & FT_FACE_FLAG_SFNT ) + + + /************************************************************************* + * + * @macro: + * FT_IS_FIXED_WIDTH( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or `monospace', `fixed-pitch', etc.) + * glyphs. + * + */ +#define FT_IS_FIXED_WIDTH( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FIXED_SIZES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes' field of the + * @FT_FaceRec structure. + * + */ +#define FT_HAS_FIXED_SIZES( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FAST_GLYPHS( face ) + * + * @description: + * Deprecated. + * + */ +#define FT_HAS_FAST_GLYPHS( face ) 0 + + + /************************************************************************* + * + * @macro: + * FT_HAS_GLYPH_NAMES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ +#define FT_HAS_GLYPH_NAMES( face ) \ + ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ +#define FT_HAS_MULTIPLE_MASTERS( face ) \ + ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + + + /************************************************************************* + * + * @macro: + * FT_IS_CID_KEYED( face ) + * + * @description: + * A macro that returns true whenever a face object contains a CID-keyed + * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more + * details. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ +#define FT_IS_CID_KEYED( face ) \ + ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + + + /************************************************************************* + * + * @macro: + * FT_IS_TRICKY( face ) + * + * @description: + * A macro that returns true whenever a face represents a `tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( face->face_flags & FT_FACE_FLAG_TRICKY ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_COLOR( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * tables for color glyphs. + * + */ +#define FT_HAS_COLOR( face ) \ + ( face->face_flags & FT_FACE_FLAG_COLOR ) + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_STYLE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit-flags used to indicate the style of a given face. */ + /* These are used in the `style_flags' field of @FT_FaceRec. */ + /* */ + /* <Values> */ + /* FT_STYLE_FLAG_ITALIC :: */ + /* Indicates that a given face style is italic or oblique. */ + /* */ + /* FT_STYLE_FLAG_BOLD :: */ + /* Indicates that a given face is bold. */ + /* */ + /* <Note> */ + /* The style information as provided by FreeType is very basic. More */ + /* details are beyond the scope and should be done on a higher level */ + /* (for example, by analyzing various fields of the `OS/2' table in */ + /* SFNT based fonts). */ + /* */ +#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) +#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ + /* model private data of a given @FT_Size object. */ + /* */ + typedef struct FT_Size_InternalRec_* FT_Size_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Metrics */ + /* */ + /* <Description> */ + /* The size metrics structure gives the metrics of a size object. */ + /* */ + /* <Fields> */ + /* x_ppem :: The width of the scaled EM square in pixels, hence */ + /* the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal width'. */ + /* */ + /* y_ppem :: The height of the scaled EM square in pixels, */ + /* hence the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal height'. */ + /* */ + /* x_scale :: A 16.16 fractional scaling value used to convert */ + /* horizontal metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* y_scale :: A 16.16 fractional scaling value used to convert */ + /* vertical metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* ascender :: The ascender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* descender :: The descender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* height :: The height in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* max_advance :: The maximum advance width in 26.6 fractional */ + /* pixels. See @FT_FaceRec for the details. */ + /* */ + /* <Note> */ + /* The scaling values, if relevant, are determined first during a */ + /* size changing operation. The remaining fields are then set by the */ + /* driver. For scalable formats, they are usually set to scaled */ + /* values of the corresponding fields in @FT_FaceRec. */ + /* */ + /* Note that due to glyph hinting, these values might not be exact */ + /* for certain fonts. Thus they must be treated as unreliable */ + /* with an error margin of at least one pixel! */ + /* */ + /* Indeed, the only way to get the exact metrics is to render _all_ */ + /* glyphs. As this would be a definite performance hit, it is up to */ + /* client applications to perform such computations. */ + /* */ + /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ + /* */ + typedef struct FT_Size_Metrics_ + { + FT_UShort x_ppem; /* horizontal pixels per EM */ + FT_UShort y_ppem; /* vertical pixels per EM */ + + FT_Fixed x_scale; /* scaling values used to convert font */ + FT_Fixed y_scale; /* units to 26.6 fractional pixels */ + + FT_Pos ascender; /* ascender in 26.6 frac. pixels */ + FT_Pos descender; /* descender in 26.6 frac. pixels */ + FT_Pos height; /* text height in 26.6 frac. pixels */ + FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ + + } FT_Size_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SizeRec */ + /* */ + /* <Description> */ + /* FreeType root size class structure. A size object models a face */ + /* object at a given size. */ + /* */ + /* <Fields> */ + /* face :: Handle to the parent face object. */ + /* */ + /* generic :: A typeless pointer, unused by the FreeType library or */ + /* any of its drivers. It can be used by client */ + /* applications to link their own data to each size */ + /* object. */ + /* */ + /* metrics :: Metrics for this size object. This field is read-only. */ + /* */ + typedef struct FT_SizeRec_ + { + FT_Face face; /* parent face object */ + FT_Generic generic; /* generic pointer for client uses */ + FT_Size_Metrics metrics; /* size metrics */ + FT_Size_Internal internal; + + } FT_SizeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SubGlyph */ + /* */ + /* <Description> */ + /* The subglyph structure is an internal object used to describe */ + /* subglyphs (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The subglyph implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + /* You can however retrieve subglyph information with */ + /* @FT_Get_SubGlyph_Info. */ + /* */ + typedef struct FT_SubGlyphRec_* FT_SubGlyph; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Slot_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ + /* model private data of a given @FT_GlyphSlot object. */ + /* */ + typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphSlotRec */ + /* */ + /* <Description> */ + /* FreeType root glyph slot class structure. A glyph slot is a */ + /* container where individual glyphs can be loaded, be they in */ + /* outline or bitmap format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library instance */ + /* this slot belongs to. */ + /* */ + /* face :: A handle to the parent face object. */ + /* */ + /* next :: In some cases (like some font tools), several */ + /* glyph slots per face object can be a good */ + /* thing. As this is rare, the glyph slots are */ + /* listed through a direct, single-linked list */ + /* using its `next' field. */ + /* */ + /* generic :: A typeless pointer unused by the FreeType */ + /* library or any of its drivers. It can be */ + /* used by client applications to link their own */ + /* data to each glyph slot object. */ + /* */ + /* metrics :: The metrics of the last loaded glyph in the */ + /* slot. The returned values depend on the last */ + /* load flags (see the @FT_Load_Glyph API */ + /* function) and can be expressed either in 26.6 */ + /* fractional pixels or font units. */ + /* */ + /* Note that even when the glyph image is */ + /* transformed, the metrics are not. */ + /* */ + /* linearHoriAdvance :: The advance width of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* linearVertAdvance :: The advance height of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* advance :: This shorthand is, depending on */ + /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ + /* (hinted) advance width for the glyph, in 26.6 */ + /* fractional pixel format. As specified with */ + /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ + /* `horiAdvance' or the `vertAdvance' value of */ + /* `metrics' field. */ + /* */ + /* format :: This field indicates the format of the image */ + /* contained in the glyph slot. Typically */ + /* @FT_GLYPH_FORMAT_BITMAP, */ + /* @FT_GLYPH_FORMAT_OUTLINE, or */ + /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ + /* possible. */ + /* */ + /* bitmap :: This field is used as a bitmap descriptor */ + /* when the slot format is */ + /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ + /* address and content of the bitmap buffer can */ + /* change between calls of @FT_Load_Glyph and a */ + /* few other functions. */ + /* */ + /* bitmap_left :: The bitmap's left bearing expressed in */ + /* integer pixels. Only valid if the format is */ + /* @FT_GLYPH_FORMAT_BITMAP, this is, if the */ + /* glyph slot contains a bitmap. */ + /* */ + /* bitmap_top :: The bitmap's top bearing expressed in integer */ + /* pixels. Remember that this is the distance */ + /* from the baseline to the top-most glyph */ + /* scanline, upwards y~coordinates being */ + /* *positive*. */ + /* */ + /* outline :: The outline descriptor for the current glyph */ + /* image if its format is */ + /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ + /* loaded, `outline' can be transformed, */ + /* distorted, embolded, etc. However, it must */ + /* not be freed. */ + /* */ + /* num_subglyphs :: The number of subglyphs in a composite glyph. */ + /* This field is only valid for the composite */ + /* glyph format that should normally only be */ + /* loaded with the @FT_LOAD_NO_RECURSE flag. */ + /* */ + /* subglyphs :: An array of subglyph descriptors for */ + /* composite glyphs. There are `num_subglyphs' */ + /* elements in there. Currently internal to */ + /* FreeType. */ + /* */ + /* control_data :: Certain font drivers can also return the */ + /* control data for a given glyph image (e.g. */ + /* TrueType bytecode, Type~1 charstrings, etc.). */ + /* This field is a pointer to such data. */ + /* */ + /* control_len :: This is the length in bytes of the control */ + /* data. */ + /* */ + /* other :: Really wicked formats can use this pointer to */ + /* present their own glyph image to client */ + /* applications. Note that the application */ + /* needs to know about the image format. */ + /* */ + /* lsb_delta :: The difference between hinted and unhinted */ + /* left side bearing while autohinting is */ + /* active. Zero otherwise. */ + /* */ + /* rsb_delta :: The difference between hinted and unhinted */ + /* right side bearing while autohinting is */ + /* active. Zero otherwise. */ + /* */ + /* <Note> */ + /* If @FT_Load_Glyph is called with default flags (see */ + /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ + /* its native format (e.g., an outline glyph for TrueType and Type~1 */ + /* formats). */ + /* */ + /* This image can later be converted into a bitmap by calling */ + /* @FT_Render_Glyph. This function finds the current renderer for */ + /* the native image's format, then invokes it. */ + /* */ + /* The renderer is in charge of transforming the native image through */ + /* the slot's face transformation fields, then converting it into a */ + /* bitmap that is returned in `slot->bitmap'. */ + /* */ + /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ + /* to specify the position of the bitmap relative to the current pen */ + /* position (e.g., coordinates (0,0) on the baseline). Of course, */ + /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ + /* */ + /* <Note> */ + /* Here a small pseudo code fragment that shows how to use */ + /* `lsb_delta' and `rsb_delta': */ + /* */ + /* { */ + /* FT_Pos origin_x = 0; */ + /* FT_Pos prev_rsb_delta = 0; */ + /* */ + /* */ + /* for all glyphs do */ + /* <compute kern between current and previous glyph and add it to */ + /* `origin_x'> */ + /* */ + /* <load glyph with `FT_Load_Glyph'> */ + /* */ + /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ + /* origin_x -= 64; */ + /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ + /* origin_x += 64; */ + /* */ + /* prev_rsb_delta = face->glyph->rsb_delta; */ + /* */ + /* <save glyph image, or render glyph, or ...> */ + /* */ + /* origin_x += face->glyph->advance.x; */ + /* endfor */ + /* } */ + /* */ + typedef struct FT_GlyphSlotRec_ + { + FT_Library library; + FT_Face face; + FT_GlyphSlot next; + FT_UInt reserved; /* retained for binary compatibility */ + FT_Generic generic; + + FT_Glyph_Metrics metrics; + FT_Fixed linearHoriAdvance; + FT_Fixed linearVertAdvance; + FT_Vector advance; + + FT_Glyph_Format format; + + FT_Bitmap bitmap; + FT_Int bitmap_left; + FT_Int bitmap_top; + + FT_Outline outline; + + FT_UInt num_subglyphs; + FT_SubGlyph subglyphs; + + void* control_data; + long control_len; + + FT_Pos lsb_delta; + FT_Pos rsb_delta; + + void* other; + + FT_Slot_Internal internal; + + } FT_GlyphSlotRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* F U N C T I O N S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Init_FreeType */ + /* */ + /* <Description> */ + /* Initialize a new FreeType library object. The set of modules */ + /* that are registered by this function is determined at build time. */ + /* */ + /* <Output> */ + /* alibrary :: A handle to a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case you want to provide your own memory allocating routines, */ + /* use @FT_New_Library instead, followed by a call to */ + /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ + /* */ + /* For multi-threading applications each thread should have its own */ + /* FT_Library object. */ + /* */ + /* If you need reference-counting (cf. @FT_Reference_Library), use */ + /* @FT_New_Library and @FT_Done_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_FreeType */ + /* */ + /* <Description> */ + /* Destroy a given FreeType library object and all of its children, */ + /* including resources, drivers, faces, sizes, etc. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_FreeType( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OPEN_XXX */ + /* */ + /* <Description> */ + /* A list of bit-field constants used within the `flags' field of the */ + /* @FT_Open_Args structure. */ + /* */ + /* <Values> */ + /* FT_OPEN_MEMORY :: This is a memory-based stream. */ + /* */ + /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ + /* */ + /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ + /* name. */ + /* */ + /* FT_OPEN_DRIVER :: Use the `driver' field. */ + /* */ + /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ + /* */ + /* <Note> */ + /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ + /* flags are mutually exclusive. */ + /* */ +#define FT_OPEN_MEMORY 0x1 +#define FT_OPEN_STREAM 0x2 +#define FT_OPEN_PATHNAME 0x4 +#define FT_OPEN_DRIVER 0x8 +#define FT_OPEN_PARAMS 0x10 + + + /* these constants are deprecated; use the corresponding `FT_OPEN_XXX' */ + /* values instead */ +#define ft_open_memory FT_OPEN_MEMORY +#define ft_open_stream FT_OPEN_STREAM +#define ft_open_pathname FT_OPEN_PATHNAME +#define ft_open_driver FT_OPEN_DRIVER +#define ft_open_params FT_OPEN_PARAMS + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Parameter */ + /* */ + /* <Description> */ + /* A simple structure used to pass more or less generic parameters to */ + /* @FT_Open_Face. */ + /* */ + /* <Fields> */ + /* tag :: A four-byte identification tag. */ + /* */ + /* data :: A pointer to the parameter data. */ + /* */ + /* <Note> */ + /* The ID and function of parameters are driver-specific. See the */ + /* various FT_PARAM_TAG_XXX flags for more information. */ + /* */ + typedef struct FT_Parameter_ + { + FT_ULong tag; + FT_Pointer data; + + } FT_Parameter; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Open_Args */ + /* */ + /* <Description> */ + /* A structure used to indicate how to open a new font file or */ + /* stream. A pointer to such a structure can be used as a parameter */ + /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ + /* */ + /* <Fields> */ + /* flags :: A set of bit flags indicating how to use the */ + /* structure. */ + /* */ + /* memory_base :: The first byte of the file in memory. */ + /* */ + /* memory_size :: The size in bytes of the file in memory. */ + /* */ + /* pathname :: A pointer to an 8-bit file pathname. */ + /* */ + /* stream :: A handle to a source stream object. */ + /* */ + /* driver :: This field is exclusively used by @FT_Open_Face; */ + /* it simply specifies the font driver to use to open */ + /* the face. If set to~0, FreeType tries to load the */ + /* face with each one of the drivers in its list. */ + /* */ + /* num_params :: The number of extra parameters. */ + /* */ + /* params :: Extra parameters passed to the font driver when */ + /* opening a new face. */ + /* */ + /* <Note> */ + /* The stream type is determined by the contents of `flags' that */ + /* are tested in the following order by @FT_Open_Face: */ + /* */ + /* If the @FT_OPEN_MEMORY bit is set, assume that this is a */ + /* memory file of `memory_size' bytes, located at `memory_address'. */ + /* The data are are not copied, and the client is responsible for */ + /* releasing and destroying them _after_ the corresponding call to */ + /* @FT_Done_Face. */ + /* */ + /* Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a */ + /* custom input stream `stream' is used. */ + /* */ + /* Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this */ + /* is a normal file and use `pathname' to open it. */ + /* */ + /* If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to */ + /* open the file with the driver whose handler is in `driver'. */ + /* */ + /* If the @FT_OPEN_PARAMS bit is set, the parameters given by */ + /* `num_params' and `params' is used. They are ignored otherwise. */ + /* */ + /* Ideally, both the `pathname' and `params' fields should be tagged */ + /* as `const'; this is missing for API backwards compatibility. In */ + /* other words, applications should treat them as read-only. */ + /* */ + typedef struct FT_Open_Args_ + { + FT_UInt flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; + + } FT_Open_Args; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font by its pathname. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* pathname :: A path to the font file. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See @FT_Open_Face for more details. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Use @FT_Done_Face to destroy the created @FT_Face object (along */ + /* with its slot and sizes). */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font that has been */ + /* loaded into memory. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* file_base :: A pointer to the beginning of the font data. */ + /* */ + /* file_size :: The size of the memory chunk used by the font data. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See @FT_Open_Face for more details. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You must not deallocate the memory before calling @FT_Done_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Open_Face */ + /* */ + /* <Description> */ + /* Create a face object from a given resource described by */ + /* @FT_Open_Args. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* args :: A pointer to an `FT_Open_Args' structure that must */ + /* be filled by the caller. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See note below. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Unlike FreeType 1.x, this function automatically creates a glyph */ + /* slot for the face object that can be accessed directly through */ + /* `face->glyph'. */ + /* */ + /* FT_Open_Face can be used to quickly check whether the font */ + /* format of a given font resource is supported by FreeType. If the */ + /* `face_index' field is negative, the function's return value is~0 */ + /* if the font format is recognized, or non-zero otherwise; */ + /* the function returns a more or less empty face handle in `*aface' */ + /* (if `aface' isn't NULL). The only useful field in this special */ + /* case is `face->num_faces' that gives the number of faces within */ + /* the font file. After examination, the returned @FT_Face structure */ + /* should be deallocated with a call to @FT_Done_Face. */ + /* */ + /* Each new face object created with this function also owns a */ + /* default @FT_Size object, accessible as `face->size'. */ + /* */ + /* One @FT_Library instance can have multiple face objects, this is, */ + /* @FT_Open_Face and its siblings can be called multiple times using */ + /* the same `library' argument. */ + /* */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Open_Face( FT_Library library, + const FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_File */ + /* */ + /* <Description> */ + /* This function calls @FT_Attach_Stream to attach a file. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* filepathname :: The pathname. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_Stream */ + /* */ + /* <Description> */ + /* `Attach' data to a face object. Normally, this is used to read */ + /* additional information for the face object. For example, you can */ + /* attach an AFM file that comes with a Type~1 font to get the */ + /* kerning values and other metrics. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* parameters :: A pointer to @FT_Open_Args that must be filled by */ + /* the caller. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The meaning of the `attach' (i.e., what really happens when the */ + /* new file is read) is not fixed by FreeType itself. It really */ + /* depends on the font format (and thus the font driver). */ + /* */ + /* Client applications are expected to know what they are doing */ + /* when invoking this function. Most drivers simply do not implement */ + /* file attachments. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Face */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Face structure */ + /* is created. This function increments the counter. @FT_Done_Face */ + /* then only destroys a face if the counter is~1, otherwise it simply */ + /* decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures that */ + /* reference @FT_Face objects. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Face */ + /* */ + /* <Description> */ + /* Discard a given face object, as well as all of its child slots and */ + /* sizes. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Size */ + /* */ + /* <Description> */ + /* Select a bitmap strike. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* strike_index :: The index of the bitmap strike in the */ + /* `available_sizes' field of @FT_FaceRec structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Size_Request_Type */ + /* */ + /* <Description> */ + /* An enumeration type that lists the supported size request types. */ + /* */ + /* <Values> */ + /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ + /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ + /* used to determine both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ + /* The real dimension. The sum of the the `ascender' and (minus */ + /* of) the `descender' fields of @FT_FaceRec are used to determine */ + /* both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_BBOX :: */ + /* The font bounding box. The width and height of the `bbox' field */ + /* of @FT_FaceRec are used to determine the horizontal and vertical */ + /* scaling value, respectively. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_CELL :: */ + /* The `max_advance_width' field of @FT_FaceRec is used to */ + /* determine the horizontal scaling value; the vertical scaling */ + /* value is determined the same way as */ + /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ + /* values are set to the smaller one. This type is useful if you */ + /* want to specify the font size for, say, a window of a given */ + /* dimension and 80x24 cells. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_SCALES :: */ + /* Specify the scaling values directly. */ + /* */ + /* <Note> */ + /* The above descriptions only apply to scalable formats. For bitmap */ + /* formats, the behaviour is up to the driver. */ + /* */ + /* See the note section of @FT_Size_Metrics if you wonder how size */ + /* requesting relates to scaling values. */ + /* */ + typedef enum FT_Size_Request_Type_ + { + FT_SIZE_REQUEST_TYPE_NOMINAL, + FT_SIZE_REQUEST_TYPE_REAL_DIM, + FT_SIZE_REQUEST_TYPE_BBOX, + FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, + + FT_SIZE_REQUEST_TYPE_MAX + + } FT_Size_Request_Type; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_RequestRec */ + /* */ + /* <Description> */ + /* A structure used to model a size request. */ + /* */ + /* <Fields> */ + /* type :: See @FT_Size_Request_Type. */ + /* */ + /* width :: The desired width. */ + /* */ + /* height :: The desired height. */ + /* */ + /* horiResolution :: The horizontal resolution. If set to zero, */ + /* `width' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* vertResolution :: The vertical resolution. If set to zero, */ + /* `height' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* <Note> */ + /* If `width' is zero, then the horizontal scaling value is set equal */ + /* to the vertical scaling value, and vice versa. */ + /* */ + typedef struct FT_Size_RequestRec_ + { + FT_Size_Request_Type type; + FT_Long width; + FT_Long height; + FT_UInt horiResolution; + FT_UInt vertResolution; + + } FT_Size_RequestRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Request */ + /* */ + /* <Description> */ + /* A handle to a size request structure. */ + /* */ + typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Request_Size */ + /* */ + /* <Description> */ + /* Resize the scale of the active @FT_Size object in a face. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* req :: A pointer to a @FT_Size_RequestRec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Although drivers may select the bitmap strike matching the */ + /* request, you should not rely on this if you intend to select a */ + /* particular bitmap strike. Use @FT_Select_Size instead in that */ + /* case. */ + /* */ + /* The relation between the requested size and the resulting glyph */ + /* size is dependent entirely on how the size is defined in the */ + /* source face. The font designer chooses the final size of each */ + /* glyph relative to this size. For more information refer to */ + /* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Char_Size */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in points). */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* char_width :: The nominal width, in 26.6 fractional points. */ + /* */ + /* char_height :: The nominal height, in 26.6 fractional points. */ + /* */ + /* horz_resolution :: The horizontal resolution in dpi. */ + /* */ + /* vert_resolution :: The vertical resolution in dpi. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If either the character width or height is zero, it is set equal */ + /* to the other value. */ + /* */ + /* If either the horizontal or vertical resolution is zero, it is set */ + /* equal to the other value. */ + /* */ + /* A character width or height smaller than 1pt is set to 1pt; if */ + /* both resolution values are zero, they are set to 72dpi. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Pixel_Sizes */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in pixels). */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Input> */ + /* pixel_width :: The nominal width, in pixels. */ + /* */ + /* pixel_height :: The nominal height, in pixels. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should not rely on the resulting glyphs matching, or being */ + /* constrained, to this pixel size. Refer to @FT_Request_Size to */ + /* understand how requested sizes relate to actual sizes. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Glyph */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object. */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* glyph_index :: The index of the glyph in the font file. For */ + /* CID-keyed fonts (either in PS or in CFF format) */ + /* this argument specifies the CID value. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The loaded glyph may be transformed. See @FT_Set_Transform for */ + /* the details. */ + /* */ + /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ + /* returned for invalid CID values (this is, for CID values that */ + /* don't have a corresponding glyph in the font). See the discussion */ + /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Char */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object, according to its character code. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* char_code :: The glyph's character code, according to the */ + /* current charmap used in the face. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + + /************************************************************************* + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit-field constants used with @FT_Load_Glyph to indicate + * what kind of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. + * The bitmap data can be accessed from the glyph slot (see note + * below). + * + * 2. If no embedded bitmap is searched or found, FreeType looks for a + * scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then `hinted' to the pixel grid + * in order to optimize it. The outline data can be accessed from + * the glyph slot (see note below). + * + * Note that by default, the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the loaded outline glyph but keep it in font units. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using + * FT_LOAD_NO_SCALE usually yields meaningless outlines because the + * subglyphs must be scaled and positioned with hinting instructions. + * This can be solved by loading the font without FT_LOAD_NO_SCALE and + * setting the character size to `font->units_per_EM'. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates `blurrier' bitmap glyphs + * when the glyph are rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. In particular, the + * `advance' value in the @FT_GlyphSlotRec structure is set to the + * `vertAdvance' value of the `metrics' field. + * + * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use + * this flag currently. Reason is that in this case vertical metrics + * get synthesized, and those values are not always consistent across + * various font formats. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Indicates that the auto-hinter is preferred over the font's native + * hinter. See also the note below. + * + * FT_LOAD_PEDANTIC :: + * Indicates that the font driver should perform pedantic verifications + * during glyph loading. This is mostly used to detect broken glyphs + * in fonts. By default, FreeType tries to handle broken fonts also. + * + * In particular, errors from the TrueType bytecode engine are not + * passed to the application if this flag is not set; this might + * result in partially hinted or distorted glyphs in case a glyph's + * bytecode is buggy. + * + * FT_LOAD_NO_RECURSE :: + * Indicate that the font driver should not load composite glyphs + * recursively. Instead, it should set the `num_subglyph' and + * `subglyphs' values of the glyph slot accordingly, and set + * `glyph->format' to @FT_GLYPH_FORMAT_COMPOSITE. The description of + * subglyphs can then be accessed with @FT_Get_SubGlyph_Info. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Indicates that the transform matrix set by @FT_Set_Transform should + * be ignored. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Indicates that the `linearHoriAdvance' and `linearVertAdvance' + * fields of @FT_GlyphSlotRec should be kept in font units. See + * @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable auto-hinter. See also the note below. + * + * FT_LOAD_COLOR :: + * This flag is used to request loading of color embedded-bitmap + * images. The resulting color bitmaps, if available, will have the + * @FT_PIXEL_MODE_BGRA format. When the flag is not used and color + * bitmaps are found, they will be converted to 256-level gray + * bitmaps transparently. Those bitmaps will be in the + * @FT_PIXEL_MODE_GRAY format. + * + * FT_LOAD_CROP_BITMAP :: + * Ignored. Deprecated. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Ignored. Deprecated. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be + * used at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + * Note that the auto-hinter needs a valid Unicode cmap (either a native + * one or synthesized by FreeType) for producing correct results. If a + * font provides an incorrect mapping (for example, assigning the + * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a + * mathematical integral sign), the auto-hinter might produce useless + * results. + * + */ +#define FT_LOAD_DEFAULT 0x0 +#define FT_LOAD_NO_SCALE ( 1L << 0 ) +#define FT_LOAD_NO_HINTING ( 1L << 1 ) +#define FT_LOAD_RENDER ( 1L << 2 ) +#define FT_LOAD_NO_BITMAP ( 1L << 3 ) +#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) +#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) +#define FT_LOAD_CROP_BITMAP ( 1L << 6 ) +#define FT_LOAD_PEDANTIC ( 1L << 7 ) +#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) +#define FT_LOAD_NO_RECURSE ( 1L << 10 ) +#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) +#define FT_LOAD_MONOCHROME ( 1L << 12 ) +#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) +#define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) + /* Bits 16..19 are used by `FT_LOAD_TARGET_' */ +#define FT_LOAD_COLOR ( 1L << 20 ) + + /* */ + + /* used internally only by certain font drivers! */ +#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) +#define FT_LOAD_SBITS_ONLY ( 1L << 14 ) + + + /************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values that are used to select a specific hinting algorithm + * to use by the hinter. You should OR one of these values to your + * `load_flags' when calling @FT_Load_Glyph. + * + * Note that font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it + * always implies @FT_LOAD_FORCE_AUTOHINT. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * This corresponds to the default hinting algorithm, optimized for + * standard gray-level rendering. For monochrome output, use + * @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for non-monochrome modes. Many + * generated glyphs are more fuzzy but better resemble its original + * shape. A bit like rendering on Mac OS~X. + * + * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your + * `load_flags'. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode that matches the used algorithm + * best). An exeption is FT_LOAD_TARGET_MONO since it implies + * @FT_LOAD_MONOCHROME. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the `light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * { + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * } + * + */ +#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) + +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) + + + /************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ +#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Transform */ + /* */ + /* <Description> */ + /* A function used to set the transformation that is applied to glyph */ + /* images when they are loaded into a glyph slot through */ + /* @FT_Load_Glyph. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ + /* the identity matrix. */ + /* delta :: A pointer to the translation vector. Use~0 for the null */ + /* vector. */ + /* */ + /* <Note> */ + /* The transformation is only applied to scalable image formats after */ + /* the glyph has been loaded. It means that hinting is unaltered by */ + /* the transformation and is performed on the character size given in */ + /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ + /* */ + /* Note that this also transforms the `face.glyph.advance' field, but */ + /* *not* the values in `face.glyph.metrics'. */ + /* */ + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Render_Mode */ + /* */ + /* <Description> */ + /* An enumeration type that lists the render modes supported by */ + /* FreeType~2. Each mode corresponds to a specific type of scanline */ + /* conversion performed on the outline. */ + /* */ + /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ + /* field in the @FT_GlyphSlotRec structure gives the format of the */ + /* returned bitmap. */ + /* */ + /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ + /* */ + /* <Values> */ + /* FT_RENDER_MODE_NORMAL :: */ + /* This is the default render mode; it corresponds to 8-bit */ + /* anti-aliased bitmaps. */ + /* */ + /* FT_RENDER_MODE_LIGHT :: */ + /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ + /* defined as a separate value because render modes are also used */ + /* indirectly to define hinting algorithm selectors. See */ + /* @FT_LOAD_TARGET_XXX for details. */ + /* */ + /* FT_RENDER_MODE_MONO :: */ + /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ + /* opacity). */ + /* */ + /* FT_RENDER_MODE_LCD :: */ + /* This mode corresponds to horizontal RGB and BGR sub-pixel */ + /* displays like LCD screens. It produces 8-bit bitmaps that are */ + /* 3~times the width of the original glyph outline in pixels, and */ + /* which use the @FT_PIXEL_MODE_LCD mode. */ + /* */ + /* FT_RENDER_MODE_LCD_V :: */ + /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ + /* (like PDA screens, rotated LCD displays, etc.). It produces */ + /* 8-bit bitmaps that are 3~times the height of the original */ + /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ + /* */ + /* <Note> */ + /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ + /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ + /* (not active in the default builds). It is up to the caller to */ + /* either call @FT_Library_SetLcdFilter (if available) or do the */ + /* filtering itself. */ + /* */ + /* The selected render mode only affects vector glyphs of a font. */ + /* Embedded bitmaps often have a different pixel mode like */ + /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ + /* them into 8-bit pixmaps. */ + /* */ + typedef enum FT_Render_Mode_ + { + FT_RENDER_MODE_NORMAL = 0, + FT_RENDER_MODE_LIGHT, + FT_RENDER_MODE_MONO, + FT_RENDER_MODE_LCD, + FT_RENDER_MODE_LCD_V, + + FT_RENDER_MODE_MAX + + } FT_Render_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Render_Mode' values instead */ +#define ft_render_mode_normal FT_RENDER_MODE_NORMAL +#define ft_render_mode_mono FT_RENDER_MODE_MONO + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Render_Glyph */ + /* */ + /* <Description> */ + /* Convert a given glyph image to a bitmap. It does so by inspecting */ + /* the glyph image format, finding the relevant renderer, and */ + /* invoking it. */ + /* */ + /* <InOut> */ + /* slot :: A handle to the glyph slot containing the image to */ + /* convert. */ + /* */ + /* <Input> */ + /* render_mode :: This is the render mode used to render the glyph */ + /* image into a bitmap. See @FT_Render_Mode for a */ + /* list of possible values. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Kerning_Mode */ + /* */ + /* <Description> */ + /* An enumeration used to specify which kerning values to return in */ + /* @FT_Get_Kerning. */ + /* */ + /* <Values> */ + /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ + /* distances (value is~0). */ + /* */ + /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ + /* distances. */ + /* */ + /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ + /* units. */ + /* */ + typedef enum FT_Kerning_Mode_ + { + FT_KERNING_DEFAULT = 0, + FT_KERNING_UNFITTED, + FT_KERNING_UNSCALED + + } FT_Kerning_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Kerning_Mode' values instead */ +#define ft_kerning_default FT_KERNING_DEFAULT +#define ft_kerning_unfitted FT_KERNING_UNFITTED +#define ft_kerning_unscaled FT_KERNING_UNSCALED + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Kerning */ + /* */ + /* <Description> */ + /* Return the kerning vector between two glyphs of a same face. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* left_glyph :: The index of the left glyph in the kern pair. */ + /* */ + /* right_glyph :: The index of the right glyph in the kern pair. */ + /* */ + /* kern_mode :: See @FT_Kerning_Mode for more information. */ + /* Determines the scale and dimension of the returned */ + /* kerning vector. */ + /* */ + /* <Output> */ + /* akerning :: The kerning vector. This is either in font units */ + /* or in pixels (26.6 format) for scalable formats, */ + /* and in pixels for fixed-sizes formats. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Only horizontal layouts (left-to-right & right-to-left) are */ + /* supported by this method. Other layouts, or more sophisticated */ + /* kernings, are out of the scope of this API function -- they can be */ + /* implemented through format-specific interfaces. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Track_Kerning */ + /* */ + /* <Description> */ + /* Return the track kerning for a given face object at a given size. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* point_size :: The point size in 16.16 fractional points. */ + /* */ + /* degree :: The degree of tightness. Increasingly negative */ + /* values represent tighter track kerning, while */ + /* increasingly positive values represent looser track */ + /* kerning. Value zero means no track kerning. */ + /* */ + /* <Output> */ + /* akerning :: The kerning in 16.16 fractional points, to be */ + /* uniformly applied between all glyphs. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Currently, only the Type~1 font driver supports track kerning, */ + /* using data from AFM files (if attached with @FT_Attach_File or */ + /* @FT_Attach_Stream). */ + /* */ + /* Only very few AFM files come with track kerning data; please refer */ + /* to the Adobe's AFM specification for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII name of a given glyph in a face. This only */ + /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* buffer_max :: The maximum number of bytes available in the */ + /* buffer. */ + /* */ + /* <Output> */ + /* buffer :: A pointer to a target buffer where the name is */ + /* copied to. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error is returned if the face doesn't provide glyph names or if */ + /* the glyph index is invalid. In all cases of failure, the first */ + /* byte of `buffer' is set to~0 to indicate an empty name. */ + /* */ + /* The glyph name is truncated to fit within the buffer if it is too */ + /* long. The returned string is always zero-terminated. */ + /* */ + /* Be aware that FreeType reorders glyph indices internally so that */ + /* glyph index~0 always corresponds to the `missing glyph' (called */ + /* `.notdef'). */ + /* */ + /* This function always returns an error if the config macro */ + /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoptions.h'. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Postscript_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII PostScript name of a given face, if available. */ + /* This only works with PostScript and TrueType fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to the face's PostScript name. NULL if unavailable. */ + /* */ + /* <Note> */ + /* The returned pointer is owned by the face and is destroyed with */ + /* it. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap by its encoding tag (as listed in */ + /* `freetype.h'). */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* encoding :: A handle to the selected encoding. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if no charmap in the face */ + /* corresponds to the encoding queried here. */ + /* */ + /* Because many fonts contain more than a single cmap for Unicode */ + /* encoding, this function has some special code to select the one */ + /* that covers Unicode best (`best' in the sense that a UCS-4 cmap is */ + /* preferred to a UCS-2 cmap). It is thus preferable to */ + /* @FT_Set_Charmap in this case. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap for character code to glyph index mapping. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* charmap :: A handle to the selected charmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if the charmap is not part of */ + /* the face (i.e., if it is not listed in the `face->charmaps' */ + /* table). */ + /* */ + /* It also fails if a type~14 charmap is selected. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); + + + /************************************************************************* + * + * @function: + * FT_Get_Charmap_Index + * + * @description: + * Retrieve index of a given charmap. + * + * @input: + * charmap :: + * A handle to a charmap. + * + * @return: + * The index into the array of character maps within the face to which + * `charmap' belongs. If an error occurs, -1 is returned. + * + */ + FT_EXPORT( FT_Int ) + FT_Get_Charmap_Index( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Char_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code. This function */ + /* uses a charmap object to do the mapping. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* charcode :: The character code. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within the */ + /* file. This is done to ensure that value~0 always corresponds to */ + /* the `missing glyph'. If the first glyph is not named `.notdef', */ + /* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ + /* the glyph ID~0 position, and whatever was there will be moved to */ + /* the position `.notdef' had. For Type~1 fonts, if there is no */ + /* `.notdef' glyph at all, then one will be created at index~0 and */ + /* whatever was there will be moved to the last index -- Type~42 */ + /* fonts are considered invalid under this condition. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_First_Char */ + /* */ + /* <Description> */ + /* This function is used to return the first character code in the */ + /* current charmap of a given face. It also returns the */ + /* corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of first character code. 0~if charmap is */ + /* empty. */ + /* */ + /* <Return> */ + /* The charmap's first character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_Next_Char to be able to */ + /* parse all character codes available in a given charmap. The code */ + /* should look like this: */ + /* */ + /* { */ + /* FT_ULong charcode; */ + /* FT_UInt gindex; */ + /* */ + /* */ + /* charcode = FT_Get_First_Char( face, &gindex ); */ + /* while ( gindex != 0 ) */ + /* { */ + /* ... do something with (charcode,gindex) pair ... */ + /* */ + /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ + /* } */ + /* } */ + /* */ + /* Note that `*agindex' is set to~0 if the charmap is empty. The */ + /* result itself can be~0 in two cases: if the charmap is empty or */ + /* if the value~0 is the first valid character code. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Next_Char */ + /* */ + /* <Description> */ + /* This function is used to return the next character code in the */ + /* current charmap of a given face following the value `char_code', */ + /* as well as the corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* char_code :: The starting character code. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of next character code. 0~if charmap */ + /* is empty. */ + /* */ + /* <Return> */ + /* The charmap's next character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_First_Char to walk */ + /* over all character codes available in a given charmap. See the */ + /* note for this function for a simple code example. */ + /* */ + /* Note that `*agindex' is set to~0 when there are no more codes in */ + /* the charmap. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Name_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given glyph name. This function uses */ + /* driver specific objects to do the translation. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ); + + + /************************************************************************* + * + * @macro: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants used to describe subglyphs. Please refer to the + * TrueType specification for the meaning of the various flags. + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 + + + /************************************************************************* + * + * @func: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be + * interpreted depending on the flags returned in `*p_flags'. See the + * TrueType specification for details. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FSTYPE_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `fsType' field of the OS/2 table */ + /* in a TrueType or OpenType font and the `FSType' entry in a */ + /* PostScript font. These bit flags are returned by */ + /* @FT_Get_FSType_Flags; they inform client applications of embedding */ + /* and subsetting restrictions associated with a font. */ + /* */ + /* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ + /* more details. */ + /* */ + /* <Values> */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ + /* Fonts with no fsType bit set may be embedded and permanently */ + /* installed on the remote system by an application. */ + /* */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ + /* Fonts that have only this bit set must not be modified, embedded */ + /* or exchanged in any manner without first obtaining permission of */ + /* the font software copyright owner. */ + /* */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ + /* If this bit is set, the font may be embedded and temporarily */ + /* loaded on the remote system. Documents containing Preview & */ + /* Print fonts must be opened `read-only'; no edits can be applied */ + /* to the document. */ + /* */ + /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ + /* If this bit is set, the font may be embedded but must only be */ + /* installed temporarily on other systems. In contrast to Preview */ + /* & Print fonts, documents containing editable fonts may be opened */ + /* for reading, editing is permitted, and changes may be saved. */ + /* */ + /* FT_FSTYPE_NO_SUBSETTING :: */ + /* If this bit is set, the font may not be subsetted prior to */ + /* embedding. */ + /* */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ + /* If this bit is set, only bitmaps contained in the font may be */ + /* embedded; no outline data may be embedded. If there are no */ + /* bitmaps available in the font, then the font is unembeddable. */ + /* */ + /* <Note> */ + /* While the fsType flags can indicate that a font may be embedded, a */ + /* license with the font vendor may be separately required to use the */ + /* font in this way. */ + /* */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_FSType_Flags */ + /* */ + /* <Description> */ + /* Return the fsType flags for a font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* The fsType flags, @FT_FSTYPE_XXX. */ + /* */ + /* <Note> */ + /* Use this function rather than directly reading the `fs_type' field */ + /* in the @PS_FontInfoRec structure, which is only guaranteed to */ + /* return the correct results for Type~1 fonts. */ + /* */ + /* <Since> */ + /* 2.3.8 */ + /* */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_variants */ + /* */ + /* <Title> */ + /* Glyph Variants */ + /* */ + /* <Abstract> */ + /* The FreeType~2 interface to Unicode Ideographic Variation */ + /* Sequences (IVS), using the SFNT cmap format~14. */ + /* */ + /* <Description> */ + /* Many CJK characters have variant forms. They are a sort of grey */ + /* area somewhere between being totally irrelevant and semantically */ + /* distinct; for this reason, the Unicode consortium decided to */ + /* introduce Ideographic Variation Sequences (IVS), consisting of a */ + /* Unicode base character and one of 240 variant selectors */ + /* (U+E0100-U+E01EF), instead of further extending the already huge */ + /* code range for CJK characters. */ + /* */ + /* An IVS is registered and unique; for further details please refer */ + /* to Unicode Technical Standard #37, the Ideographic Variation */ + /* Database: */ + /* */ + /* http://www.unicode.org/reports/tr37/ */ + /* */ + /* To date (November 2014), the character with the most variants is */ + /* U+9089, having 32 such IVS. */ + /* */ + /* Adobe and MS decided to support IVS with a new cmap subtable */ + /* (format~14). It is an odd subtable because it is not a mapping of */ + /* input code points to glyphs, but contains lists of all variants */ + /* supported by the font. */ + /* */ + /* A variant may be either `default' or `non-default'. A default */ + /* variant is the one you will get for that code point if you look it */ + /* up in the standard Unicode cmap. A non-default variant is a */ + /* different glyph. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIndex */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code as modified by */ + /* the variation selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character code point in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode code point of the variation selector. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means either `undefined character code', or */ + /* `undefined selector code', or `no variation selector cmap */ + /* subtable', or `current CharMap is not Unicode'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within */ + /* the file. This is done to ensure that value~0 always corresponds */ + /* to the `missing glyph'. */ + /* */ + /* This function is only meaningful if */ + /* a) the font has a variation selector cmap sub table, */ + /* and */ + /* b) the current charmap has a Unicode encoding. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIsDefault */ + /* */ + /* <Description> */ + /* Check whether this variant of this Unicode character is the one to */ + /* be found in the `cmap'. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode codepoint of the variation selector. */ + /* */ + /* <Return> */ + /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ + /* variation selector cmap, or -1 if it is not a variant. */ + /* */ + /* <Note> */ + /* This function is only meaningful if the font has a variation */ + /* selector cmap subtable. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_Int ) + FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantSelectors */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* in the font. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to an array of selector code points, or NULL if there is */ + /* no valid variant selector cmap subtable. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantSelectors( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantsOfChar */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* for the specified character code. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* <Return> */ + /* A pointer to an array of variant selector code points that are */ + /* active for the given character, or NULL if the corresponding list */ + /* is empty. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharsOfVariant */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode character codes found for */ + /* the specified variant selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* variantSelector :: */ + /* The variant selector code point in Unicode. */ + /* */ + /* <Return> */ + /* A list of all the code points that are specified by this selector */ + /* (both default and non-default codes are returned) or NULL if there */ + /* is no valid cmap or the variant selector is invalid. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /* <Title> */ + /* Computations */ + /* */ + /* <Abstract> */ + /* Crunching fixed numbers and vectors. */ + /* */ + /* <Description> */ + /* This section contains various functions used to perform */ + /* computations on 16.16 fixed-float numbers or 2d vectors. */ + /* */ + /* <Order> */ + /* FT_MulDiv */ + /* FT_MulFix */ + /* FT_DivFix */ + /* FT_RoundFix */ + /* FT_CeilFix */ + /* FT_FloorFix */ + /* FT_Vector_Transform */ + /* FT_Matrix_Multiply */ + /* FT_Matrix_Invert */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* with maximum accuracy (it uses a 64-bit intermediate integer */ + /* whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ + /* used to multiply a given value by a 16.16 fixed-point factor. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. Use a 16.16 factor here whenever */ + /* possible (see note below). */ + /* */ + /* <Return> */ + /* The result of `(a*b)/0x10000'. */ + /* */ + /* <Note> */ + /* This function has been optimized for the case where the absolute */ + /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ + /* As this happens mainly when scaling from notional units to */ + /* fractional pixels in FreeType, it resulted in noticeable speed */ + /* improvements between versions 2.x and 1.x. */ + /* */ + /* As a conclusion, always try to place a 16.16 factor as the */ + /* _second_ argument of this function; this can make a great */ + /* difference. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_DivFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ + /* used to divide a given value by a 16.16 fixed-point factor. */ + /* */ + /* <Input> */ + /* a :: The numerator. */ + /* b :: The denominator. Use a 16.16 factor here. */ + /* */ + /* <Return> */ + /* The result of `(a*0x10000)/b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_RoundFix */ + /* */ + /* <Description> */ + /* A very simple function used to round a 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number to be rounded. */ + /* */ + /* <Return> */ + /* The result of `(a + 0x8000) & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_CeilFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the ceiling function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the ceiling function is to be computed. */ + /* */ + /* <Return> */ + /* The result of `(a + 0x10000 - 1) & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_FloorFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the floor function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the floor function is to be computed. */ + /* */ + /* <Return> */ + /* The result of `a & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Vector_Transform */ + /* */ + /* <Description> */ + /* Transform a single vector through a 2x2 matrix. */ + /* */ + /* <InOut> */ + /* vector :: The target vector to transform. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the source 2x2 matrix. */ + /* */ + /* <Note> */ + /* The result is undefined if either `vector' or `matrix' is invalid. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vec, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* version */ + /* */ + /* <Title> */ + /* FreeType Version */ + /* */ + /* <Abstract> */ + /* Functions and macros related to FreeType versions. */ + /* */ + /* <Description> */ + /* Note that those functions and macros are of limited use because */ + /* even a new release of FreeType with only documentation changes */ + /* increases the version number. */ + /* */ + /* <Order> */ + /* FT_Library_Version */ + /* */ + /* FREETYPE_MAJOR */ + /* FREETYPE_MINOR */ + /* FREETYPE_PATCH */ + /* */ + /* FT_Face_CheckTrueTypePatents */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* FREETYPE_XXX */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. + * Use @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: The major version number. + * FREETYPE_MINOR :: The minor version number. + * FREETYPE_PATCH :: The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library + * with the `libtool' package is _not_ controlled by these three + * macros. + * + */ +#define FREETYPE_MAJOR 2 +#define FREETYPE_MINOR 5 +#define FREETYPE_PATCH 5 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Library_Version */ + /* */ + /* <Description> */ + /* Return the version of the FreeType library being used. This is */ + /* useful when dynamically linking to the library, since one cannot */ + /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ + /* @FREETYPE_PATCH. */ + /* */ + /* <Input> */ + /* library :: A source library handle. */ + /* */ + /* <Output> */ + /* amajor :: The major version number. */ + /* */ + /* aminor :: The minor version number. */ + /* */ + /* apatch :: The patch version number. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' argument is because */ + /* certain programs implement library initialization in a custom way */ + /* that doesn't use @FT_Init_FreeType. */ + /* */ + /* In such cases, the library version might not be available before */ + /* the library object has been created. */ + /* */ + FT_EXPORT( void ) + FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_CheckTrueTypePatents */ + /* */ + /* <Description> */ + /* Parse all bytecode instructions of a TrueType font file to check */ + /* whether any of the patented opcodes are used. This is only useful */ + /* if you want to be able to use the unpatented hinter with */ + /* fonts that do *not* use these opcodes. */ + /* */ + /* Note that this function parses *all* glyph instructions in the */ + /* font file, which may be slow. */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* <Return> */ + /* 1~if this is a TrueType font that uses one of the patented */ + /* opcodes, 0~otherwise. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_CheckTrueTypePatents( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* <Description> */ + /* Enable or disable the unpatented hinter for a given face. */ + /* Only enable it if you have determined that the face doesn't */ + /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* value :: New boolean setting. */ + /* */ + /* <Return> */ + /* The old setting value. This will always be false if this is not */ + /* an SFNT font, or if the unpatented hinter is not compiled in this */ + /* instance of the library. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + + /* */ + + +FT_END_HEADER + +#endif /* __FREETYPE_H__ */ + + +/* END */ diff --git a/lib/linux/include/ft2build.h b/lib/linux/include/ft2build.h new file mode 100644 index 0000000..6f8eb7f --- /dev/null +++ b/lib/linux/include/ft2build.h @@ -0,0 +1,42 @@ +/***************************************************************************/ +/* */ +/* ft2build.h */ +/* */ +/* FreeType 2 build and setup macros. */ +/* */ +/* Copyright 1996-2001, 2006, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This is the `entry point' for FreeType header file inclusions. It is */ + /* the only header file which should be included directly; all other */ + /* FreeType header files should be accessed with macro names (after */ + /* including `ft2build.h'). */ + /* */ + /* A typical example is */ + /* */ + /* #include <ft2build.h> */ + /* #include FT_FREETYPE_H */ + /* */ + /*************************************************************************/ + + +#ifndef __FT2BUILD_H__ +#define __FT2BUILD_H__ + +#include <config/ftheader.h> + +#endif /* __FT2BUILD_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftadvanc.h b/lib/linux/include/ftadvanc.h new file mode 100644 index 0000000..955f93f --- /dev/null +++ b/lib/linux/include/ftadvanc.h @@ -0,0 +1,187 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.h */ +/* */ +/* Quick computation of advance widths (specification only). */ +/* */ +/* Copyright 2008, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTADVANC_H__ +#define __FTADVANC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + * + * @order: + * FT_Get_Advance + * FT_Get_Advances + * + */ + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_ADVANCE_FLAG_FAST_ONLY */ + /* */ + /* <Description> */ + /* A bit-flag to be OR-ed with the `flags' parameter of the */ + /* @FT_Get_Advance and @FT_Get_Advances functions. */ + /* */ + /* If set, it indicates that you want these functions to fail if the */ + /* corresponding hinting mode or font driver doesn't allow for very */ + /* quick advance computation. */ + /* */ + /* Typically, glyphs that are either unscaled, unhinted, bitmapped, */ + /* or light-hinted can have their advance width computed very */ + /* quickly. */ + /* */ + /* Normal and bytecode hinted modes that require loading, scaling, */ + /* and hinting of the glyph outline, are extremely slow by */ + /* comparison. */ + /* */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advance */ + /* */ + /* <Description> */ + /* Retrieve the advance value of a given glyph outline in an */ + /* @FT_Face. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph, used to determine what kind */ + /* of advances you need. */ + /* <Output> */ + /* padvance :: The advance value. If scaling is performed (based on */ + /* the value of `load_flags'), the advance value is in */ + /* 16.16 format. Otherwise, it is in font units. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ + /* vertical advance corresponding to a vertical layout. */ + /* Otherwise, it is the horizontal advance in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* A scaled advance is returned in 16.16 format but isn't transformed */ + /* by the affine transformation specified by @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advances */ + /* */ + /* <Description> */ + /* Retrieve the advance values of several glyph outlines in an */ + /* @FT_Face. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* start :: The first glyph index. */ + /* */ + /* count :: The number of advance values you want to retrieve. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph. */ + /* */ + /* <Output> */ + /* padvance :: The advance values. This array, to be provided by the */ + /* caller, must contain at least `count' elements. */ + /* */ + /* If scaling is performed (based on the value of */ + /* `load_flags'), the advance values are in 16.16 format. */ + /* Otherwise, they are in font units. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ + /* vertical advances corresponding to a vertical layout. */ + /* Otherwise, they are the horizontal advances in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* Scaled advances are returned in 16.16 format but aren't */ + /* transformed by the affine transformation specified by */ + /* @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTADVANC_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftautoh.h b/lib/linux/include/ftautoh.h new file mode 100644 index 0000000..59191ab --- /dev/null +++ b/lib/linux/include/ftautoh.h @@ -0,0 +1,402 @@ +/***************************************************************************/ +/* */ +/* ftautoh.h */ +/* */ +/* FreeType API for controlling the auto-hinter (specification only). */ +/* */ +/* Copyright 2012, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTAUTOH_H__ +#define __FTAUTOH_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * auto_hinter + * + * @title: + * The auto-hinter + * + * @abstract: + * Controlling the auto-hinting module. + * + * @description: + * While FreeType's auto-hinter doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * Note that the auto-hinter's module name is `autofitter' for + * historical reasons. + * + */ + + + /************************************************************************** + * + * @property: + * glyph-to-script-map + * + * @description: + * *Experimental* *only* + * + * The auto-hinter provides various script modules to hint glyphs. + * Examples of supported scripts are Latin or CJK. Before a glyph is + * auto-hinted, the Unicode character map of the font gets examined, and + * the script is then determined based on Unicode character ranges, see + * below. + * + * OpenType fonts, however, often provide much more glyphs than + * character codes (small caps, superscripts, ligatures, swashes, etc.), + * to be controlled by so-called `features'. Handling OpenType features + * can be quite complicated and thus needs a separate library on top of + * FreeType. + * + * The mapping between glyph indices and scripts (in the auto-hinter + * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an + * array with `num_glyphs' elements, as found in the font's @FT_Face + * structure. The `glyph-to-script-map' property returns a pointer to + * this array, which can be modified as needed. Note that the + * modification should happen before the first glyph gets processed by + * the auto-hinter so that the global analysis of the font shapes + * actually uses the modified mapping. + * + * The following example code demonstrates how to access it (omitting + * the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_GlyphToScriptMap prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * + * prop.face = face; + * + * FT_Property_Get( library, "autofitter", + * "glyph-to-script-map", &prop ); + * + * // adjust `prop.map' as needed right here + * + * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); + * } + * + */ + + + /************************************************************************** + * + * @enum: + * FT_AUTOHINTER_SCRIPT_XXX + * + * @description: + * *Experimental* *only* + * + * A list of constants used for the @glyph-to-script-map property to + * specify the script submodule the auto-hinter should use for hinting a + * particular glyph. + * + * @values: + * FT_AUTOHINTER_SCRIPT_NONE :: + * Don't auto-hint this glyph. + * + * FT_AUTOHINTER_SCRIPT_LATIN :: + * Apply the latin auto-hinter. For the auto-hinter, `latin' is a + * very broad term, including Cyrillic and Greek also since characters + * from those scripts share the same design constraints. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0020 - U+007F // Basic Latin (no control characters) + * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) + * U+0100 - U+017F // Latin Extended-A + * U+0180 - U+024F // Latin Extended-B + * U+0250 - U+02AF // IPA Extensions + * U+02B0 - U+02FF // Spacing Modifier Letters + * U+0300 - U+036F // Combining Diacritical Marks + * U+0370 - U+03FF // Greek and Coptic + * U+0400 - U+04FF // Cyrillic + * U+0500 - U+052F // Cyrillic Supplement + * U+1D00 - U+1D7F // Phonetic Extensions + * U+1D80 - U+1DBF // Phonetic Extensions Supplement + * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement + * U+1E00 - U+1EFF // Latin Extended Additional + * U+1F00 - U+1FFF // Greek Extended + * U+2000 - U+206F // General Punctuation + * U+2070 - U+209F // Superscripts and Subscripts + * U+20A0 - U+20CF // Currency Symbols + * U+2150 - U+218F // Number Forms + * U+2460 - U+24FF // Enclosed Alphanumerics + * U+2C60 - U+2C7F // Latin Extended-C + * U+2DE0 - U+2DFF // Cyrillic Extended-A + * U+2E00 - U+2E7F // Supplemental Punctuation + * U+A640 - U+A69F // Cyrillic Extended-B + * U+A720 - U+A7FF // Latin Extended-D + * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) + * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols + * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_CJK :: + * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old + * Vietnamese, and some other scripts. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+1100 - U+11FF // Hangul Jamo + * U+2E80 - U+2EFF // CJK Radicals Supplement + * U+2F00 - U+2FDF // Kangxi Radicals + * U+2FF0 - U+2FFF // Ideographic Description Characters + * U+3000 - U+303F // CJK Symbols and Punctuation + * U+3040 - U+309F // Hiragana + * U+30A0 - U+30FF // Katakana + * U+3100 - U+312F // Bopomofo + * U+3130 - U+318F // Hangul Compatibility Jamo + * U+3190 - U+319F // Kanbun + * U+31A0 - U+31BF // Bopomofo Extended + * U+31C0 - U+31EF // CJK Strokes + * U+31F0 - U+31FF // Katakana Phonetic Extensions + * U+3200 - U+32FF // Enclosed CJK Letters and Months + * U+3300 - U+33FF // CJK Compatibility + * U+3400 - U+4DBF // CJK Unified Ideographs Extension A + * U+4DC0 - U+4DFF // Yijing Hexagram Symbols + * U+4E00 - U+9FFF // CJK Unified Ideographs + * U+A960 - U+A97F // Hangul Jamo Extended-A + * U+AC00 - U+D7AF // Hangul Syllables + * U+D7B0 - U+D7FF // Hangul Jamo Extended-B + * U+F900 - U+FAFF // CJK Compatibility Ideographs + * U+FE10 - U+FE1F // Vertical forms + * U+FE30 - U+FE4F // CJK Compatibility Forms + * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms + * U+1B000 - U+1B0FF // Kana Supplement + * U+1D300 - U+1D35F // Tai Xuan Hing Symbols + * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement + * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B + * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C + * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D + * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_INDIC :: + * Apply the indic auto-hinter, covering all major scripts from the + * Indian sub-continent and some other related scripts like Thai, Lao, + * or Tibetan. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0900 - U+0DFF // Indic Range + * U+0F00 - U+0FFF // Tibetan + * U+1900 - U+194F // Limbu + * U+1B80 - U+1BBF // Sundanese + * U+1C80 - U+1CDF // Meetei Mayak + * U+A800 - U+A82F // Syloti Nagri + * U+11800 - U+118DF // Sharada + * } + * + * Note that currently Indic support is rudimentary only, missing blue + * zone support. + * + */ +#define FT_AUTOHINTER_SCRIPT_NONE 0 +#define FT_AUTOHINTER_SCRIPT_LATIN 1 +#define FT_AUTOHINTER_SCRIPT_CJK 2 +#define FT_AUTOHINTER_SCRIPT_INDIC 3 + + + /************************************************************************** + * + * @struct: + * FT_Prop_GlyphToScriptMap + * + * @description: + * *Experimental* *only* + * + * The data exchange structure for the @glyph-to-script-map property. + * + */ + typedef struct FT_Prop_GlyphToScriptMap_ + { + FT_Face face; + FT_Byte* map; + + } FT_Prop_GlyphToScriptMap; + + + /************************************************************************** + * + * @property: + * fallback-script + * + * @description: + * *Experimental* *only* + * + * If no auto-hinter script module can be assigned to a glyph, a + * fallback script gets assigned to it (see also the + * @glyph-to-script-map property). By default, this is + * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property, + * this fallback value can be changed. + * + * { + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * fallback script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback script will affect this face. + * + */ + + + /************************************************************************** + * + * @property: + * default-script + * + * @description: + * *Experimental* *only* + * + * If Freetype gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make + * the HarfBuzz library access OpenType features for getting better + * glyph coverages, this property sets the (auto-fitter) script to be + * used for the default (OpenType) script data of a font's GSUB table. + * Features for the default script are intended for all scripts not + * explicitly handled in GSUB; an example is a `dlig' feature, + * containing the combination of the characters `T', `E', and `L' to + * form a `TEL' ligature. + * + * By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the + * `default-script' property, this default value can be changed. + * + * { + * FT_Library library; + * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "default-script", &default_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * default script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the default script will affect this face. + * + */ + + + /************************************************************************** + * + * @property: + * increase-x-height + * + * @description: + * For ppem values in the range 6~<= ppem <= `increase-x-height', round + * up the font's x~height much more often than normally. If the value + * is set to~0, which is the default, this feature is switched off. Use + * this property to improve the legibility of small font sizes if + * necessary. + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_IncreaseXHeight prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); + * + * prop.face = face; + * prop.limit = 14; + * + * FT_Property_Set( library, "autofitter", + * "increase-x-height", &prop ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Prop_IncreaseXHeight + * + * @description: + * The data exchange structure for the @increase-x-height property. + * + */ + typedef struct FT_Prop_IncreaseXHeight_ + { + FT_Face face; + FT_UInt limit; + + } FT_Prop_IncreaseXHeight; + + /* */ + + +FT_END_HEADER + +#endif /* __FTAUTOH_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftbbox.h b/lib/linux/include/ftbbox.h new file mode 100644 index 0000000..d6800e2 --- /dev/null +++ b/lib/linux/include/ftbbox.h @@ -0,0 +1,101 @@ +/***************************************************************************/ +/* */ +/* ftbbox.h */ +/* */ +/* FreeType exact bbox computation (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2007, 2011, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This component has a _single_ role: to compute exact outline bounding */ + /* boxes. */ + /* */ + /* It is separated from the rest of the engine for various technical */ + /* reasons. It may well be integrated in `ftoutln' later. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTBBOX_H__ +#define __FTBBOX_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_BBox */ + /* */ + /* <Description> */ + /* Compute the exact bounding box of an outline. This is slower */ + /* than computing the control box. However, it uses an advanced */ + /* algorithm that returns _very_ quickly when the two boxes */ + /* coincide. Otherwise, the outline Bézier arcs are traversed to */ + /* extract their extrema. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline. */ + /* */ + /* <Output> */ + /* abbox :: The outline's exact bounding box. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the font is tricky and the glyph has been loaded with */ + /* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */ + /* reasonable values for the BBox it is necessary to load the glyph */ + /* at a large ppem value (so that the hinting instructions can */ + /* properly shift and scale the subglyphs), then extracting the BBox, */ + /* which can be eventually converted back to font units. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTBBOX_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/linux/include/ftbdf.h b/lib/linux/include/ftbdf.h new file mode 100644 index 0000000..6d262e4 --- /dev/null +++ b/lib/linux/include/ftbdf.h @@ -0,0 +1,210 @@ +/***************************************************************************/ +/* */ +/* ftbdf.h */ +/* */ +/* FreeType API for accessing BDF-specific strings (specification). */ +/* */ +/* Copyright 2002-2004, 2006, 2009, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBDF_H__ +#define __FTBDF_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bdf_fonts */ + /* */ + /* <Title> */ + /* BDF and PCF Files */ + /* */ + /* <Abstract> */ + /* BDF and PCF specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions specific to BDF */ + /* and PCF fonts. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * BDF_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ + typedef enum BDF_PropertyType_ + { + BDF_PROPERTY_TYPE_NONE = 0, + BDF_PROPERTY_TYPE_ATOM = 1, + BDF_PROPERTY_TYPE_INTEGER = 2, + BDF_PROPERTY_TYPE_CARDINAL = 3 + + } BDF_PropertyType; + + + /********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ + typedef struct BDF_PropertyRec_* BDF_Property; + + + /********************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be + * NULL, indicating an empty string. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ + typedef struct BDF_PropertyRec_ + { + BDF_PropertyType type; + union { + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; + + } u; + + } BDF_PropertyRec; + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to + * the BDF specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Charset_ID( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: A handle to the input face. + * + * name :: The property name. + * + * @output: + * aproperty :: The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A `property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props' array within a `FontRec' structure of a PCF font. + * + * Integer properties are always stored as `signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type' is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + /* */ + +FT_END_HEADER + +#endif /* __FTBDF_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftbitmap.h b/lib/linux/include/ftbitmap.h new file mode 100644 index 0000000..eae7169 --- /dev/null +++ b/lib/linux/include/ftbitmap.h @@ -0,0 +1,232 @@ +/***************************************************************************/ +/* */ +/* ftbitmap.h */ +/* */ +/* FreeType utility functions for bitmaps (specification). */ +/* */ +/* Copyright 2004-2006, 2008, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBITMAP_H__ +#define __FTBITMAP_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bitmap_handling */ + /* */ + /* <Title> */ + /* Bitmap Handling */ + /* */ + /* <Abstract> */ + /* Handling FT_Bitmap objects. */ + /* */ + /* <Description> */ + /* This section contains functions for handling @FT_Bitmap objects. */ + /* Note that none of the functions changes the bitmap's `flow' (as */ + /* indicated by the sign of the `pitch' field in `FT_Bitmap'). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_New */ + /* */ + /* <Description> */ + /* Initialize a pointer to an @FT_Bitmap structure. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the bitmap structure. */ + /* */ + FT_EXPORT( void ) + FT_Bitmap_New( FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Copy */ + /* */ + /* <Description> */ + /* Copy a bitmap into another one. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: A handle to the source bitmap. */ + /* */ + /* <Output> */ + /* target :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Copy( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Embolden */ + /* */ + /* <Description> */ + /* Embolden a bitmap. The new bitmap will be about `xStrength' */ + /* pixels wider and `yStrength' pixels higher. The left and bottom */ + /* borders are kept unchanged. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* xStrength :: How strong the glyph is emboldened horizontally. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* yStrength :: How strong the glyph is emboldened vertically. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* <InOut> */ + /* bitmap :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The current implementation restricts `xStrength' to be less than */ + /* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ + /* */ + /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ + /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ + /* */ + /* Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format */ + /* are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Embolden( FT_Library library, + FT_Bitmap* bitmap, + FT_Pos xStrength, + FT_Pos yStrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Convert */ + /* */ + /* <Description> */ + /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */ + /* to a bitmap object with depth 8bpp, making the number of used */ + /* bytes line (a.k.a. the `pitch') a multiple of `alignment'. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: The source bitmap. */ + /* */ + /* alignment :: The pitch of the bitmap is a multiple of this */ + /* parameter. Common values are 1, 2, or 4. */ + /* */ + /* <Output> */ + /* target :: The target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* It is possible to call @FT_Bitmap_Convert multiple times without */ + /* calling @FT_Bitmap_Done (the memory is simply reallocated). */ + /* */ + /* Use @FT_Bitmap_Done to finally remove the bitmap object. */ + /* */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Convert( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target, + FT_Int alignment ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GlyphSlot_Own_Bitmap */ + /* */ + /* <Description> */ + /* Make sure that a glyph slot owns `slot->bitmap'. */ + /* */ + /* <Input> */ + /* slot :: The glyph slot. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function is to be used in combination with */ + /* @FT_Bitmap_Embolden. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Done */ + /* */ + /* <Description> */ + /* Destroy a bitmap object created with @FT_Bitmap_New. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* bitmap :: The bitmap object to be freed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Done( FT_Library library, + FT_Bitmap *bitmap ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTBITMAP_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftbzip2.h b/lib/linux/include/ftbzip2.h new file mode 100644 index 0000000..4dce161 --- /dev/null +++ b/lib/linux/include/ftbzip2.h @@ -0,0 +1,102 @@ +/***************************************************************************/ +/* */ +/* ftbzip2.h */ +/* */ +/* Bzip2-compressed stream support. */ +/* */ +/* Copyright 2010 by */ +/* Joel Klinghed. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBZIP2_H__ +#define __FTBZIP2_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bzip2 */ + /* */ + /* <Title> */ + /* BZIP2 Streams */ + /* */ + /* <Abstract> */ + /* Using bzip2-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Bzip2-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenBzip2 + * + * @description: + * Open a new stream to parse bzip2-compressed font files. This is + * mainly used to support the compressed `*.pcf.bz2' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed stream + * from it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with bzip2 support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTBZIP2_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftcache.h b/lib/linux/include/ftcache.h new file mode 100644 index 0000000..a30e925 --- /dev/null +++ b/lib/linux/include/ftcache.h @@ -0,0 +1,1057 @@ +/***************************************************************************/ +/* */ +/* ftcache.h */ +/* */ +/* FreeType Cache subsystem (specification). */ +/* */ +/* Copyright 1996-2008, 2010, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCACHE_H__ +#define __FTCACHE_H__ + + +#include <ft2build.h> +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************* + * + * <Section> + * cache_subsystem + * + * <Title> + * Cache Sub-System + * + * <Abstract> + * How to cache face, size, and glyph data with FreeType~2. + * + * <Description> + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_' prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert an @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. To monitor termination of face objects, the + * finalizer callback in the `generic' field of the @FT_Face object can + * be used, which might also be used to store the @FTC_FaceID of the + * face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * *persistent*, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may + * keep internally. Failure to do so will lead to incorrect behaviour + * or even crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then + * later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient + * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small + * bitmaps directly. (A small bitmap is one whose metrics and + * dimensions all fit into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * <Order> + * FTC_Manager + * FTC_FaceID + * FTC_Face_Requester + * + * FTC_Manager_New + * FTC_Manager_Reset + * FTC_Manager_Done + * FTC_Manager_LookupFace + * FTC_Manager_LookupSize + * FTC_Manager_RemoveFaceID + * + * FTC_Node + * FTC_Node_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC TYPE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined + * structure containing a font file path, and face index. + * + * @note: + * Never use NULL as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager that calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even + * memory leaks and crashes. + */ + typedef FT_Pointer FTC_FaceID; + + + /************************************************************************ + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * <Input> + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * <Output> + * aface :: + * A new @FT_Face handle. + * + * <Return> + * FreeType error code. 0~means success. + * + * <Note> + * The third parameter `req_data' is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer req_data, + FT_Face* aface ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Manager */ + /* */ + /* <Description> */ + /* This object corresponds to one instance of the cache-subsystem. */ + /* It is used to cache one or more @FT_Face objects, along with */ + /* corresponding @FT_Size objects. */ + /* */ + /* The manager intentionally limits the total number of opened */ + /* @FT_Face and @FT_Size objects to control memory usage. See the */ + /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ + /* */ + /* The manager is also used to cache `nodes' of various types while */ + /* limiting their total memory usage. */ + /* */ + /* All limitations are enforced by keeping lists of managed objects */ + /* in most-recently-used order, and flushing old nodes to make room */ + /* for new ones. */ + /* */ + typedef struct FTC_ManagerRec_* FTC_Manager; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Node */ + /* */ + /* <Description> */ + /* An opaque handle to a cache node object. Each cache node is */ + /* reference-counted. A node with a count of~0 might be flushed */ + /* out of a full cache whenever a lookup request is performed. */ + /* */ + /* If you look up nodes, you have the ability to `acquire' them, */ + /* i.e., to increment their reference count. This will prevent the */ + /* node from being flushed out of the cache until you explicitly */ + /* `release' it (see @FTC_Node_Unref). */ + /* */ + /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ + /* */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_New */ + /* */ + /* <Description> */ + /* Create a new cache manager. */ + /* */ + /* <Input> */ + /* library :: The parent FreeType library handle to use. */ + /* */ + /* max_faces :: Maximum number of opened @FT_Face objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ + /* Use~0 for defaults. Note that this value does not */ + /* account for managed @FT_Face and @FT_Size objects. */ + /* */ + /* requester :: An application-provided callback used to translate */ + /* face IDs into real @FT_Face objects. */ + /* */ + /* req_data :: A generic pointer that is passed to the requester */ + /* each time it is called (see @FTC_Face_Requester). */ + /* */ + /* <Output> */ + /* amanager :: A handle to a new manager object. 0~in case of */ + /* failure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Reset */ + /* */ + /* <Description> */ + /* Empty a given cache manager. This simply gets rid of all the */ + /* currently cached @FT_Face and @FT_Size objects within the manager. */ + /* */ + /* <InOut> */ + /* manager :: A handle to the manager. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Done */ + /* */ + /* <Description> */ + /* Destroy a given manager after emptying it. */ + /* */ + /* <Input> */ + /* manager :: A handle to the target cache manager object. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupFace */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Face object that corresponds to a given face ID */ + /* through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* face_id :: The ID of the face object. */ + /* */ + /* <Output> */ + /* aface :: A handle to the face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Face object is always owned by the manager. You */ + /* should never try to discard it yourself. */ + /* */ + /* The @FT_Face object doesn't necessarily have a current size object */ + /* (i.e., face->size can be~0). If you need a specific `font size', */ + /* use @FTC_Manager_LookupSize instead. */ + /* */ + /* Never change the face's transformation matrix (i.e., never call */ + /* the @FT_Set_Transform function) on a returned face! If you need */ + /* to transform glyphs, do it yourself after glyph loading. */ + /* */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory was available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_ScalerRec */ + /* */ + /* <Description> */ + /* A structure used to describe a given character size in either */ + /* pixels or points to the cache manager. See */ + /* @FTC_Manager_LookupSize. */ + /* */ + /* <Fields> */ + /* face_id :: The source face ID. */ + /* */ + /* width :: The character width. */ + /* */ + /* height :: The character height. */ + /* */ + /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ + /* interpreted as integer pixel character sizes. */ + /* Otherwise, they are expressed as 1/64th of points. */ + /* */ + /* x_res :: Only used when `pixel' is value~0 to indicate the */ + /* horizontal resolution in dpi. */ + /* */ + /* y_res :: Only used when `pixel' is value~0 to indicate the */ + /* vertical resolution in dpi. */ + /* */ + /* <Note> */ + /* This type is mainly used to retrieve @FT_Size objects through the */ + /* cache manager. */ + /* */ + typedef struct FTC_ScalerRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int pixel; + FT_UInt x_res; + FT_UInt y_res; + + } FTC_ScalerRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_Scaler */ + /* */ + /* <Description> */ + /* A handle to an @FTC_ScalerRec structure. */ + /* */ + typedef struct FTC_ScalerRec_* FTC_Scaler; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupSize */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Size object that corresponds to a given */ + /* @FTC_ScalerRec pointer through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* scaler :: A scaler handle. */ + /* */ + /* <Output> */ + /* asize :: A handle to the size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Size object is always owned by the manager. You */ + /* should never try to discard it by yourself. */ + /* */ + /* You can access the parent @FT_Face object simply as `size->face' */ + /* if you need it. Note that this object is also owned by the */ + /* manager. */ + /* */ + /* <Note> */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory is available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Node_Unref */ + /* */ + /* <Description> */ + /* Decrement a cache node's internal reference count. When the count */ + /* reaches 0, it is not destroyed but becomes eligible for subsequent */ + /* cache flushes. */ + /* */ + /* <Input> */ + /* node :: The cache node handle. */ + /* */ + /* manager :: The cache manager handle. */ + /* */ + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + + /************************************************************************* + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that + * a given @FTC_FaceID is no longer valid, either because its + * content changed, or because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id', with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear + * in later lookups with the same `face_id' value, and to be immediately + * destroyed when released by all their users. + * + */ + FT_EXPORT( void ) + FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to + * hold character codes -> glyph indices mappings. + * + */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /************************************************************************* + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /************************************************************************ + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means `no glyph'. + * + */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** IMAGE CACHE OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ + typedef struct FTC_ImageTypeRec_ + { + FTC_FaceID face_id; + FT_Int width; + FT_Int height; + FT_Int32 flags; + + } FTC_ImageTypeRec; + + + /************************************************************************* + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ + typedef struct FTC_ImageTypeRec_* FTC_ImageType; + + + /* */ + + +#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ + ( (d1)->face_id == (d2)->face_id && \ + (d1)->width == (d2)->width && \ + (d1)->flags == (d2)->flags ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_ImageCache */ + /* */ + /* <Description> */ + /* A handle to a glyph image cache object. They are designed to */ + /* hold many distinct glyph images while not exceeding a certain */ + /* memory threshold. */ + /* */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_New */ + /* */ + /* <Description> */ + /* Create a new glyph image cache. */ + /* */ + /* <Input> */ + /* manager :: The parent manager for the image cache. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new glyph image cache object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_Lookup */ + /* */ + /* <Description> */ + /* Retrieve a given glyph image from a glyph image cache. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* type :: A pointer to a glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* scaler :: A pointer to a scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ + /* glyphs; you should always use the FreeType cache API instead. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBit */ + /* */ + /* <Description> */ + /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ + /* structure for details. */ + /* */ + typedef struct FTC_SBitRec_* FTC_SBit; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_SBitRec */ + /* */ + /* <Description> */ + /* A very compact structure used to describe a small glyph bitmap. */ + /* */ + /* <Fields> */ + /* width :: The bitmap width in pixels. */ + /* */ + /* height :: The bitmap height in pixels. */ + /* */ + /* left :: The horizontal distance from the pen position to the */ + /* left bitmap border (a.k.a. `left side bearing', or */ + /* `lsb'). */ + /* */ + /* top :: The vertical distance from the pen position (on the */ + /* baseline) to the upper bitmap border (a.k.a. `top */ + /* side bearing'). The distance is positive for upwards */ + /* y~coordinates. */ + /* */ + /* format :: The format of the glyph bitmap (monochrome or gray). */ + /* */ + /* max_grays :: Maximum gray level value (in the range 1 to~255). */ + /* */ + /* pitch :: The number of bytes per bitmap line. May be positive */ + /* or negative. */ + /* */ + /* xadvance :: The horizontal advance width in pixels. */ + /* */ + /* yadvance :: The vertical advance height in pixels. */ + /* */ + /* buffer :: A pointer to the bitmap pixels. */ + /* */ + typedef struct FTC_SBitRec_ + { + FT_Byte width; + FT_Byte height; + FT_Char left; + FT_Char top; + + FT_Byte format; + FT_Byte max_grays; + FT_Short pitch; + FT_Char xadvance; + FT_Char yadvance; + + FT_Byte* buffer; + + } FTC_SBitRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBitCache */ + /* */ + /* <Description> */ + /* A handle to a small bitmap cache. These are special cache objects */ + /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ + /* much more efficient way than the traditional glyph image cache */ + /* implemented by @FTC_ImageCache. */ + /* */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_New */ + /* */ + /* <Description> */ + /* Create a new cache to store small glyph bitmaps. */ + /* */ + /* <Input> */ + /* manager :: A handle to the source cache manager. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new sbit cache. NULL in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_Lookup */ + /* */ + /* <Description> */ + /* Look up a given small glyph bitmap in a given sbit cache and */ + /* `lock' it to prevent its flushing from the cache until needed. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* type :: A pointer to the glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* scaler :: A pointer to the scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTCACHE_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftcffdrv.h b/lib/linux/include/ftcffdrv.h new file mode 100644 index 0000000..f7031bc --- /dev/null +++ b/lib/linux/include/ftcffdrv.h @@ -0,0 +1,262 @@ +/***************************************************************************/ +/* */ +/* ftcffdrv.h */ +/* */ +/* FreeType API for controlling the CFF driver (specification only). */ +/* */ +/* Copyright 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCFFDRV_H__ +#define __FTCFFDRV_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cff_driver + * + * @title: + * The CFF driver + * + * @abstract: + * Controlling the CFF driver module. + * + * @description: + * While FreeType's CFF driver doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The list below gives the available properties + * together with the necessary macros and structures. + * + * The CFF driver's module name is `cff'. + * + * *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine* + * + * The rasterizer is positioning horizontal features (e.g., ascender + * height & x-height, or crossbars) on the pixel grid and minimizing the + * amount of antialiasing applied to them, while placing vertical + * features (vertical stems) on the pixel grid without hinting, thus + * representing the stem position and weight accurately. Sometimes the + * vertical stems may be only partially black. In this context, + * `antialiasing' means that stems are not positioned exactly on pixel + * borders, causing a fuzzy appearance. + * + * There are two principles behind this approach. + * + * 1) No hinting in the horizontal direction: Unlike `superhinted' + * TrueType, which changes glyph widths to accommodate regular + * inter-glyph spacing, Adobe's approach is `faithful to the design' in + * representing both the glyph width and the inter-glyph spacing + * designed for the font. This makes the screen display as close as it + * can be to the result one would get with infinite resolution, while + * preserving what is considered the key characteristics of each glyph. + * Note that the distances between unhinted and grid-fitted positions at + * small sizes are comparable to kerning values and thus would be + * noticeable (and distracting) while reading if hinting were applied. + * + * One of the reasons to not hint horizontally is antialiasing for LCD + * screens: The pixel geometry of modern displays supplies three + * vertical sub-pixels as the eye moves horizontally across each visible + * pixel. On devices where we can be certain this characteristic is + * present a rasterizer can take advantage of the sub-pixels to add + * increments of weight. In Western writing systems this turns out to + * be the more critical direction anyway; the weights and spacing of + * vertical stems (see above) are central to Armenian, Cyrillic, Greek, + * and Latin type designs. Even when the rasterizer uses greyscale + * antialiasing instead of color (a necessary compromise when one + * doesn't know the screen characteristics), the unhinted vertical + * features preserve the design's weight and spacing much better than + * aliased type would. + * + * 2) Aligment in the vertical direction: Weights and spacing along the + * y~axis are less critical; what is much more important is the visual + * alignment of related features (like cap-height and x-height). The + * sense of alignment for these is enhanced by the sharpness of grid-fit + * edges, while the cruder vertical resolution (full pixels instead of + * 1/3 pixels) is less of a problem. + * + * On the technical side, horizontal alignment zones for ascender, + * x-height, and other important height values (traditionally called + * `blue zones') as defined in the font are positioned independently, + * each being rounded to the nearest pixel edge, taking care of + * overshoot suppression at small sizes, stem darkening, and scaling. + * + * Hstems (this is, hint values defined in the font to help align + * horizontal features) that fall within a blue zone are said to be + * `captured' and are aligned to that zone. Uncaptured stems are moved + * in one of four ways, top edge up or down, bottom edge up or down. + * Unless there are conflicting hstems, the smallest movement is taken + * to minimize distortion. + * + * @order: + * hinting-engine + * no-stem-darkening + * darkening-parameters + * + */ + + + /************************************************************************** + * + * @property: + * hinting-engine + * + * @description: + * Thanks to Adobe, which contributed a new hinting (and parsing) + * engine, an application can select between `freetype' and `adobe' if + * compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration + * macro isn't defined, `hinting-engine' does nothing. + * + * The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is + * defined, and `adobe' otherwise. + * + * The following example code demonstrates how to select Adobe's hinting + * engine (omitting the error handling). + * + * { + * FT_Library library; + * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_CFF_HINTING_XXX + * + * @description: + * A list of constants used for the @hinting-engine property to select + * the hinting engine for CFF fonts. + * + * @values: + * FT_CFF_HINTING_FREETYPE :: + * Use the old FreeType hinting engine. + * + * FT_CFF_HINTING_ADOBE :: + * Use the hinting engine contributed by Adobe. + * + */ +#define FT_CFF_HINTING_FREETYPE 0 +#define FT_CFF_HINTING_ADOBE 1 + + + /************************************************************************** + * + * @property: + * no-stem-darkening + * + * @description: + * By default, the Adobe CFF engine darkens stems at smaller sizes, + * regardless of hinting, to enhance contrast. This feature requires + * a rendering system with proper gamma correction. Setting this + * property, stem darkening gets switched off. + * + * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. + * + * { + * FT_Library library; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @property: + * darkening-parameters + * + * @description: + * By default, the Adobe CFF engine darkens stems as follows (if the + * `no-stem-darkening' property isn't set): + * + * { + * stem width <= 0.5px: darkening amount = 0.4px + * stem width = 1px: darkening amount = 0.275px + * stem width = 1.667px: darkening amount = 0.275px + * stem width >= 2.333px: darkening amount = 0px + * } + * + * and piecewise linear in-between. At configuration time, these four + * control points can be set with the macro + * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control + * points can be changed using the `darkening-parameters' property, as + * the following example demonstrates. + * + * { + * FT_Library library; + * FT_Int darken_params[8] = { 500, 300, // x1, y1 + * 1000, 200, // x2, y2 + * 1500, 100, // x3, y3 + * 2000, 0 }; // x4, y4 + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "darkening-parameters", darken_params ); + * } + * + * The x~values give the stem width, and the y~values the darkening + * amount. The unit is 1000th of pixels. All coordinate values must be + * positive; the x~values must be monotonically increasing; the + * y~values must be monotonically decreasing and smaller than or + * equal to 500 (corresponding to half a pixel); the slope of each + * linear piece must be shallower than -1 (e.g., -.4). + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + /* */ + + +FT_END_HEADER + + +#endif /* __FTCFFDRV_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftchapters.h b/lib/linux/include/ftchapters.h new file mode 100644 index 0000000..d333761 --- /dev/null +++ b/lib/linux/include/ftchapters.h @@ -0,0 +1,121 @@ +/***************************************************************************/ +/* */ +/* This file defines the structure of the FreeType reference. */ +/* It is used by the python script that generates the HTML files. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* general_remarks */ +/* */ +/* <Title> */ +/* General Remarks */ +/* */ +/* <Sections> */ +/* header_inclusion */ +/* user_allocation */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* core_api */ +/* */ +/* <Title> */ +/* Core API */ +/* */ +/* <Sections> */ +/* version */ +/* basic_types */ +/* base_interface */ +/* glyph_variants */ +/* glyph_management */ +/* mac_specific */ +/* sizes_management */ +/* header_file_macros */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* format_specific */ +/* */ +/* <Title> */ +/* Format-Specific API */ +/* */ +/* <Sections> */ +/* multiple_masters */ +/* truetype_tables */ +/* type1_tables */ +/* sfnt_names */ +/* bdf_fonts */ +/* cid_fonts */ +/* pfr_fonts */ +/* winfnt_fonts */ +/* font_formats */ +/* gasp_table */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* module_specific */ +/* */ +/* <Title> */ +/* Controlling FreeType Modules */ +/* */ +/* <Sections> */ +/* auto_hinter */ +/* cff_driver */ +/* tt_driver */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* cache_subsystem */ +/* */ +/* <Title> */ +/* Cache Sub-System */ +/* */ +/* <Sections> */ +/* cache_subsystem */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* support_api */ +/* */ +/* <Title> */ +/* Support API */ +/* */ +/* <Sections> */ +/* computations */ +/* list_processing */ +/* outline_processing */ +/* quick_advance */ +/* bitmap_handling */ +/* raster */ +/* glyph_stroker */ +/* system_interface */ +/* module_management */ +/* gzip */ +/* lzw */ +/* bzip2 */ +/* lcd_filtering */ +/* */ +/***************************************************************************/ diff --git a/lib/linux/include/ftcid.h b/lib/linux/include/ftcid.h new file mode 100644 index 0000000..17550d8 --- /dev/null +++ b/lib/linux/include/ftcid.h @@ -0,0 +1,167 @@ +/***************************************************************************/ +/* */ +/* ftcid.h */ +/* */ +/* FreeType API for accessing CID font information (specification). */ +/* */ +/* Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCID_H__ +#define __FTCID_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cid_fonts */ + /* */ + /* <Title> */ + /* CID Fonts */ + /* */ + /* <Abstract> */ + /* CID-keyed font specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of CID-keyed font specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In + * constrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SNFT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTCID_H__ */ + + +/* END */ diff --git a/lib/linux/include/fterrdef.h b/lib/linux/include/fterrdef.h new file mode 100644 index 0000000..99b2fad --- /dev/null +++ b/lib/linux/include/fterrdef.h @@ -0,0 +1,249 @@ +/***************************************************************************/ +/* */ +/* fterrdef.h */ +/* */ +/* FreeType error codes (specification). */ +/* */ +/* Copyright 2002, 2004, 2006, 2007, 2010-2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST OF ERROR CODES/MESSAGES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + + /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ + /* including this file. */ + + + /* generic errors */ + + FT_NOERRORDEF_( Ok, 0x00, + "no error" ) + + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, + "cannot open resource" ) + FT_ERRORDEF_( Unknown_File_Format, 0x02, + "unknown file format" ) + FT_ERRORDEF_( Invalid_File_Format, 0x03, + "broken file" ) + FT_ERRORDEF_( Invalid_Version, 0x04, + "invalid FreeType version" ) + FT_ERRORDEF_( Lower_Module_Version, 0x05, + "module version is too low" ) + FT_ERRORDEF_( Invalid_Argument, 0x06, + "invalid argument" ) + FT_ERRORDEF_( Unimplemented_Feature, 0x07, + "unimplemented feature" ) + FT_ERRORDEF_( Invalid_Table, 0x08, + "broken table" ) + FT_ERRORDEF_( Invalid_Offset, 0x09, + "broken offset within table" ) + FT_ERRORDEF_( Array_Too_Large, 0x0A, + "array allocation size too large" ) + FT_ERRORDEF_( Missing_Module, 0x0B, + "missing module" ) + FT_ERRORDEF_( Missing_Property, 0x0C, + "missing property" ) + + /* glyph/character errors */ + + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, + "invalid glyph index" ) + FT_ERRORDEF_( Invalid_Character_Code, 0x11, + "invalid character code" ) + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, + "unsupported glyph image format" ) + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, + "cannot render this glyph format" ) + FT_ERRORDEF_( Invalid_Outline, 0x14, + "invalid outline" ) + FT_ERRORDEF_( Invalid_Composite, 0x15, + "invalid composite glyph" ) + FT_ERRORDEF_( Too_Many_Hints, 0x16, + "too many hints" ) + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, + "invalid pixel size" ) + + /* handle errors */ + + FT_ERRORDEF_( Invalid_Handle, 0x20, + "invalid object handle" ) + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, + "invalid library handle" ) + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, + "invalid module handle" ) + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, + "invalid face handle" ) + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, + "invalid size handle" ) + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, + "invalid glyph slot handle" ) + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, + "invalid charmap handle" ) + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, + "invalid cache manager handle" ) + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, + "invalid stream handle" ) + + /* driver errors */ + + FT_ERRORDEF_( Too_Many_Drivers, 0x30, + "too many modules" ) + FT_ERRORDEF_( Too_Many_Extensions, 0x31, + "too many extensions" ) + + /* memory errors */ + + FT_ERRORDEF_( Out_Of_Memory, 0x40, + "out of memory" ) + FT_ERRORDEF_( Unlisted_Object, 0x41, + "unlisted object" ) + + /* stream errors */ + + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, + "cannot open stream" ) + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, + "invalid stream seek" ) + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, + "invalid stream skip" ) + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, + "invalid stream read" ) + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, + "invalid stream operation" ) + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, + "invalid frame operation" ) + FT_ERRORDEF_( Nested_Frame_Access, 0x57, + "nested frame access" ) + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, + "invalid frame read" ) + + /* raster errors */ + + FT_ERRORDEF_( Raster_Uninitialized, 0x60, + "raster uninitialized" ) + FT_ERRORDEF_( Raster_Corrupted, 0x61, + "raster corrupted" ) + FT_ERRORDEF_( Raster_Overflow, 0x62, + "raster overflow" ) + FT_ERRORDEF_( Raster_Negative_Height, 0x63, + "negative height while rastering" ) + + /* cache errors */ + + FT_ERRORDEF_( Too_Many_Caches, 0x70, + "too many registered caches" ) + + /* TrueType and SFNT errors */ + + FT_ERRORDEF_( Invalid_Opcode, 0x80, + "invalid opcode" ) + FT_ERRORDEF_( Too_Few_Arguments, 0x81, + "too few arguments" ) + FT_ERRORDEF_( Stack_Overflow, 0x82, + "stack overflow" ) + FT_ERRORDEF_( Code_Overflow, 0x83, + "code overflow" ) + FT_ERRORDEF_( Bad_Argument, 0x84, + "bad argument" ) + FT_ERRORDEF_( Divide_By_Zero, 0x85, + "division by zero" ) + FT_ERRORDEF_( Invalid_Reference, 0x86, + "invalid reference" ) + FT_ERRORDEF_( Debug_OpCode, 0x87, + "found debug opcode" ) + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, + "found ENDF opcode in execution stream" ) + FT_ERRORDEF_( Nested_DEFS, 0x89, + "nested DEFS" ) + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, + "invalid code range" ) + FT_ERRORDEF_( Execution_Too_Long, 0x8B, + "execution context too long" ) + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, + "too many function definitions" ) + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, + "too many instruction definitions" ) + FT_ERRORDEF_( Table_Missing, 0x8E, + "SFNT font table missing" ) + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, + "horizontal header (hhea) table missing" ) + FT_ERRORDEF_( Locations_Missing, 0x90, + "locations (loca) table missing" ) + FT_ERRORDEF_( Name_Table_Missing, 0x91, + "name table missing" ) + FT_ERRORDEF_( CMap_Table_Missing, 0x92, + "character map (cmap) table missing" ) + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, + "horizontal metrics (hmtx) table missing" ) + FT_ERRORDEF_( Post_Table_Missing, 0x94, + "PostScript (post) table missing" ) + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, + "invalid horizontal metrics" ) + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, + "invalid character map (cmap) format" ) + FT_ERRORDEF_( Invalid_PPem, 0x97, + "invalid ppem value" ) + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, + "invalid vertical metrics" ) + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, + "could not find context" ) + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, + "invalid PostScript (post) table format" ) + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, + "invalid PostScript (post) table" ) + + /* CFF, CID, and Type 1 errors */ + + FT_ERRORDEF_( Syntax_Error, 0xA0, + "opcode syntax error" ) + FT_ERRORDEF_( Stack_Underflow, 0xA1, + "argument stack underflow" ) + FT_ERRORDEF_( Ignore, 0xA2, + "ignore" ) + FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, + "no Unicode glyph name found" ) + FT_ERRORDEF_( Glyph_Too_Big, 0xA4, + "glyph to big for hinting" ) + + /* BDF errors */ + + FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, + "`STARTFONT' field missing" ) + FT_ERRORDEF_( Missing_Font_Field, 0xB1, + "`FONT' field missing" ) + FT_ERRORDEF_( Missing_Size_Field, 0xB2, + "`SIZE' field missing" ) + FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, + "`FONTBOUNDINGBOX' field missing" ) + FT_ERRORDEF_( Missing_Chars_Field, 0xB4, + "`CHARS' field missing" ) + FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, + "`STARTCHAR' field missing" ) + FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, + "`ENCODING' field missing" ) + FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, + "`BBX' field missing" ) + FT_ERRORDEF_( Bbx_Too_Big, 0xB8, + "`BBX' too big" ) + FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, + "Font header corrupted or missing fields" ) + FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, + "Font glyphs corrupted or missing fields" ) + + +/* END */ diff --git a/lib/linux/include/fterrors.h b/lib/linux/include/fterrors.h new file mode 100644 index 0000000..0fa3e4d --- /dev/null +++ b/lib/linux/include/fterrors.h @@ -0,0 +1,198 @@ +/***************************************************************************/ +/* */ +/* fterrors.h */ +/* */ +/* FreeType error code handling (specification). */ +/* */ +/* Copyright 1996-2002, 2004, 2007, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This special header file is used to define the handling of FT2 */ + /* enumeration constants. It can also be used to generate error message */ + /* strings with a small macro trick explained below. */ + /* */ + /* I - Error Formats */ + /* ----------------- */ + /* */ + /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ + /* defined in ftoption.h in order to make the higher byte indicate */ + /* the module where the error has happened (this is not compatible */ + /* with standard builds of FreeType 2). See the file `ftmoderr.h' for */ + /* more details. */ + /* */ + /* */ + /* II - Error Message strings */ + /* -------------------------- */ + /* */ + /* The error definitions below are made through special macros that */ + /* allow client applications to build a table of error message strings */ + /* if they need it. The strings are not included in a normal build of */ + /* FreeType 2 to save space (most client applications do not use */ + /* them). */ + /* */ + /* To do so, you have to define the following macros before including */ + /* this file: */ + /* */ + /* FT_ERROR_START_LIST :: */ + /* This macro is called before anything else to define the start of */ + /* the error list. It is followed by several FT_ERROR_DEF calls */ + /* (see below). */ + /* */ + /* FT_ERROR_DEF( e, v, s ) :: */ + /* This macro is called to define one single error. */ + /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ + /* `v' is the error numerical value. */ + /* `s' is the corresponding error string. */ + /* */ + /* FT_ERROR_END_LIST :: */ + /* This macro ends the list. */ + /* */ + /* Additionally, you have to undefine __FTERRORS_H__ before #including */ + /* this file. */ + /* */ + /* Here is a simple example: */ + /* */ + /* { */ + /* #undef __FTERRORS_H__ */ + /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ + /* #define FT_ERROR_START_LIST { */ + /* #define FT_ERROR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int err_code; */ + /* const char* err_msg; */ + /* } ft_errors[] = */ + /* */ + /* #include FT_ERRORS_H */ + /* } */ + /* */ + /*************************************************************************/ + + +#ifndef __FTERRORS_H__ +#define __FTERRORS_H__ + + + /* include module base error codes */ +#include FT_MODULE_ERRORS_H + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_'. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS + +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ +#ifndef FT_ERRORDEF + +#define FT_ERRORDEF( e, v, s ) e = v, +#define FT_ERROR_START_LIST enum { +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_ERRORDEF */ + + + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for <module>_Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + +#ifdef FT_ERROR_START_LIST + FT_ERROR_START_LIST +#endif + + + /* now include the error codes */ +#include FT_ERROR_DEFINITIONS_H + + +#ifdef FT_ERROR_END_LIST + FT_ERROR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST + +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_BASE + + /* FT_ERR_PREFIX is needed internally */ +#ifndef FT2_BUILD_LIBRARY +#undef FT_ERR_PREFIX +#endif + +#endif /* __FTERRORS_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftgasp.h b/lib/linux/include/ftgasp.h new file mode 100644 index 0000000..3f3d765 --- /dev/null +++ b/lib/linux/include/ftgasp.h @@ -0,0 +1,129 @@ +/***************************************************************************/ +/* */ +/* ftgasp.h */ +/* */ +/* Access of TrueType's `gasp' table (specification). */ +/* */ +/* Copyright 2007, 2008, 2011 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef _FT_GASP_H_ +#define _FT_GASP_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + + /*************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType `gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its `gasp' table, if any. This is + * mainly useful when implementing native TrueType hinting with the + * bytecode interpreter to duplicate the Windows text rendering results. + */ + + /************************************************************************* + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This *really* means TrueType bytecode interpretation. If this bit + * is not set, no hinting gets applied. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * If not set, do monochrome rendering. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * If set, smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be + * used for standard font rasterization only. Independently of that, + * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to + * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and + * `FT_GASP_DO_GRAY' are consequently ignored). + * + * `ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ +#define FT_GASP_NO_TABLE -1 +#define FT_GASP_DO_GRIDFIT 0x01 +#define FT_GASP_DO_GRAY 0x02 +#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 +#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 + + + /************************************************************************* + * + * @func: + * FT_Get_Gasp + * + * @description: + * Read the `gasp' table from a TrueType or OpenType font file and + * return the entry corresponding to a given character pixel size. + * + * @input: + * face :: The source face handle. + * ppem :: The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * `gasp' table in the face. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Int ) + FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); + + /* */ + + +#endif /* _FT_GASP_H_ */ + + +/* END */ diff --git a/lib/linux/include/ftglyph.h b/lib/linux/include/ftglyph.h new file mode 100644 index 0000000..15fa6a9 --- /dev/null +++ b/lib/linux/include/ftglyph.h @@ -0,0 +1,605 @@ +/***************************************************************************/ +/* */ +/* ftglyph.h */ +/* */ +/* FreeType convenience functions to handle glyphs (specification). */ +/* */ +/* Copyright 1996-2003, 2006, 2008, 2009, 2011, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of several convenience functions */ + /* that can be used by client applications to easily retrieve glyph */ + /* bitmaps and outlines from a given face. */ + /* */ + /* These functions should be optional if you are writing a font server */ + /* or text layout engine on top of FreeType. However, they are pretty */ + /* handy for many other simple uses of the library. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTGLYPH_H__ +#define __FTGLYPH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_management */ + /* */ + /* <Title> */ + /* Glyph Management */ + /* */ + /* <Abstract> */ + /* Generic interface to manage individual glyph data. */ + /* */ + /* <Description> */ + /* This section contains definitions used to manage glyph data */ + /* through generic FT_Glyph objects. Each of them can contain a */ + /* bitmap, a vector outline, or even images in other formats. */ + /* */ + /*************************************************************************/ + + + /* forward declaration to a private type */ + typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Glyph */ + /* */ + /* <Description> */ + /* Handle to an object used to model generic glyph images. It is a */ + /* pointer to the @FT_GlyphRec structure and can contain a glyph */ + /* bitmap or pointer. */ + /* */ + /* <Note> */ + /* Glyph objects are not owned by the library. You must thus release */ + /* them manually (through @FT_Done_Glyph) _before_ calling */ + /* @FT_Done_FreeType. */ + /* */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphRec */ + /* */ + /* <Description> */ + /* The root glyph structure contains a given glyph image plus its */ + /* advance width in 16.16 fixed-point format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library object. */ + /* */ + /* clazz :: A pointer to the glyph's class. Private. */ + /* */ + /* format :: The format of the glyph's image. */ + /* */ + /* advance :: A 16.16 vector that gives the glyph's advance width. */ + /* */ + typedef struct FT_GlyphRec_ + { + FT_Library library; + const FT_Glyph_Class* clazz; + FT_Glyph_Format format; + FT_Vector advance; + + } FT_GlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_BitmapGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model a bitmap glyph image. This is */ + /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ + /* */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BitmapGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for bitmap glyph images. This really is a */ + /* `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* left :: The left-side bearing, i.e., the horizontal distance */ + /* from the current pen position to the left border of the */ + /* glyph bitmap. */ + /* */ + /* top :: The top-side bearing, i.e., the vertical distance from */ + /* the current pen position to the top border of the glyph */ + /* bitmap. This distance is positive for upwards~y! */ + /* */ + /* bitmap :: A descriptor for the bitmap. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ + /* the bitmap's contents easily. */ + /* */ + /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ + /* and is thus created and destroyed with it. */ + /* */ + typedef struct FT_BitmapGlyphRec_ + { + FT_GlyphRec root; + FT_Int left; + FT_Int top; + FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_OutlineGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model an outline glyph image. This */ + /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ + /* */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_OutlineGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for outline (vectorial) glyph images. This */ + /* really is a `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* outline :: A descriptor for the outline. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ + /* the outline's content easily. */ + /* */ + /* As the outline is extracted from a glyph slot, its coordinates are */ + /* expressed normally in 26.6 pixels, unless the flag */ + /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ + /* */ + /* The outline's tables are always owned by the object and are */ + /* destroyed with it. */ + /* */ + typedef struct FT_OutlineGlyphRec_ + { + FT_GlyphRec root; + FT_Outline outline; + + } FT_OutlineGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph */ + /* */ + /* <Description> */ + /* A function used to extract a glyph image from a slot. Note that */ + /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* slot :: A handle to the source glyph slot. */ + /* */ + /* <Output> */ + /* aglyph :: A handle to the glyph object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Copy */ + /* */ + /* <Description> */ + /* A function used to copy a glyph image. Note that the created */ + /* @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* source :: A handle to the source glyph object. */ + /* */ + /* <Output> */ + /* target :: A handle to the target glyph object. 0~in case of */ + /* error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Transform */ + /* */ + /* <Description> */ + /* Transform a glyph image if its format is scalable. */ + /* */ + /* <InOut> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to a 2x2 matrix to apply. */ + /* */ + /* delta :: A pointer to a 2d vector to apply. Coordinates are */ + /* expressed in 1/64th of a pixel. */ + /* */ + /* <Return> */ + /* FreeType error code (if not 0, the glyph format is not scalable). */ + /* */ + /* <Note> */ + /* The 2x2 transformation matrix is also applied to the glyph's */ + /* advance vector. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_BBox_Mode */ + /* */ + /* <Description> */ + /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ + /* */ + /* <Values> */ + /* FT_GLYPH_BBOX_UNSCALED :: */ + /* Return unscaled font units. */ + /* */ + /* FT_GLYPH_BBOX_SUBPIXELS :: */ + /* Return unfitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_GRIDFIT :: */ + /* Return grid-fitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_TRUNCATE :: */ + /* Return coordinates in integer pixels. */ + /* */ + /* FT_GLYPH_BBOX_PIXELS :: */ + /* Return grid-fitted pixel coordinates. */ + /* */ + typedef enum FT_Glyph_BBox_Mode_ + { + FT_GLYPH_BBOX_UNSCALED = 0, + FT_GLYPH_BBOX_SUBPIXELS = 0, + FT_GLYPH_BBOX_GRIDFIT = 1, + FT_GLYPH_BBOX_TRUNCATE = 2, + FT_GLYPH_BBOX_PIXELS = 3 + + } FT_Glyph_BBox_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_BBox_Mode' values instead */ +#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED +#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS +#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT +#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE +#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Get_CBox */ + /* */ + /* <Description> */ + /* Return a glyph's `control box'. The control box encloses all the */ + /* outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* that contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component, which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the source glyph object. */ + /* */ + /* mode :: The mode that indicates how to interpret the returned */ + /* bounding box values. */ + /* */ + /* <Output> */ + /* acbox :: The glyph coordinate bounding box. Coordinates are */ + /* expressed in 1/64th of pixels if it is grid-fitted. */ + /* */ + /* <Note> */ + /* Coordinates are relative to the glyph origin, using the y~upwards */ + /* convention. */ + /* */ + /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ + /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ + /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ + /* is another name for this constant. */ + /* */ + /* If the font is tricky and the glyph has been loaded with */ + /* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */ + /* reasonable values for the CBox it is necessary to load the glyph */ + /* at a large ppem value (so that the hinting instructions can */ + /* properly shift and scale the subglyphs), then extracting the CBox, */ + /* which can be eventually converted back to font units. */ + /* */ + /* Note that the maximum coordinates are exclusive, which means that */ + /* one can compute the width and height of the glyph image (be it in */ + /* integer or 26.6 pixels) as: */ + /* */ + /* { */ + /* width = bbox.xMax - bbox.xMin; */ + /* height = bbox.yMax - bbox.yMin; */ + /* } */ + /* */ + /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ + /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ + /* which corresponds to: */ + /* */ + /* { */ + /* bbox.xMin = FLOOR(bbox.xMin); */ + /* bbox.yMin = FLOOR(bbox.yMin); */ + /* bbox.xMax = CEILING(bbox.xMax); */ + /* bbox.yMax = CEILING(bbox.yMax); */ + /* } */ + /* */ + /* To get the bbox in pixel coordinates, set `bbox_mode' to */ + /* @FT_GLYPH_BBOX_TRUNCATE. */ + /* */ + /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ + /* to @FT_GLYPH_BBOX_PIXELS. */ + /* */ + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_To_Bitmap */ + /* */ + /* <Description> */ + /* Convert a given glyph object to a bitmap glyph object. */ + /* */ + /* <InOut> */ + /* the_glyph :: A pointer to a handle to the target glyph. */ + /* */ + /* <Input> */ + /* render_mode :: An enumeration that describes how the data is */ + /* rendered. */ + /* */ + /* origin :: A pointer to a vector used to translate the glyph */ + /* image before rendering. Can be~0 (if no */ + /* translation). The origin is expressed in */ + /* 26.6 pixels. */ + /* */ + /* destroy :: A boolean that indicates that the original glyph */ + /* image should be destroyed by this function. It is */ + /* never destroyed in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does nothing if the glyph format isn't scalable. */ + /* */ + /* The glyph image is translated with the `origin' vector before */ + /* rendering. */ + /* */ + /* The first parameter is a pointer to an @FT_Glyph handle, that will */ + /* be _replaced_ by this function (with newly allocated data). */ + /* Typically, you would use (omitting error handling): */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyph; */ + /* FT_BitmapGlyph glyph_bitmap; */ + /* */ + /* */ + /* // load glyph */ + /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ + /* */ + /* // extract glyph image */ + /* error = FT_Get_Glyph( face->glyph, &glyph ); */ + /* */ + /* // convert to a bitmap (default render mode + destroying old) */ + /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ + /* { */ + /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ + /* 0, 1 ); */ + /* if ( error ) // `glyph' unchanged */ + /* ... */ + /* } */ + /* */ + /* // access bitmap content by typecasting */ + /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ + /* */ + /* // do funny stuff with it, like blitting/drawing */ + /* ... */ + /* */ + /* // discard glyph image (bitmap or not) */ + /* FT_Done_Glyph( glyph ); */ + /* } */ + /* */ + /* */ + /* Here another example, again without error handling: */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyphs[MAX_GLYPHS] */ + /* */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ + /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* { */ + /* FT_Glyph bitmap = glyphs[idx]; */ + /* */ + /* */ + /* ... */ + /* */ + /* // after this call, `bitmap' no longer points into */ + /* // the `glyphs' array (and the old value isn't destroyed) */ + /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ + /* */ + /* ... */ + /* */ + /* FT_Done_Glyph( bitmap ); */ + /* } */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* FT_Done_Glyph( glyphs[idx] ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + FT_Vector* origin, + FT_Bool destroy ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Glyph */ + /* */ + /* <Description> */ + /* Destroy a given glyph. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); + + /* */ + + + /* other helpful functions */ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Multiply */ + /* */ + /* <Description> */ + /* Perform the matrix operation `b = a*b'. */ + /* */ + /* <Input> */ + /* a :: A pointer to matrix `a'. */ + /* */ + /* <InOut> */ + /* b :: A pointer to matrix `b'. */ + /* */ + /* <Note> */ + /* The result is undefined if either `a' or `b' is zero. */ + /* */ + FT_EXPORT( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Invert */ + /* */ + /* <Description> */ + /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ + /* */ + /* <InOut> */ + /* matrix :: A pointer to the target matrix. Remains untouched in */ + /* case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLYPH_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/linux/include/ftgxval.h b/lib/linux/include/ftgxval.h new file mode 100644 index 0000000..88c3d93 --- /dev/null +++ b/lib/linux/include/ftgxval.h @@ -0,0 +1,357 @@ +/***************************************************************************/ +/* */ +/* ftgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004-2006, 2013 by */ +/* Masatake YAMATO, Redhat K.K, */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGXVAL_H__ +#define __FTGXVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gx_validation */ + /* */ + /* <Title> */ + /* TrueTypeGX/AAT Validation */ + /* */ + /* <Abstract> */ + /* An API to validate TrueTypeGX/AAT tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ + /* trak, prop, lcar). */ + /* */ + /* <Order> */ + /* FT_TrueTypeGX_Validate */ + /* FT_TrueTypeGX_Free */ + /* */ + /* FT_ClassicKern_Validate */ + /* FT_ClassicKern_Free */ + /* */ + /* FT_VALIDATE_GX_LENGTH */ + /* FT_VALIDATE_GXXXX */ + /* FT_VALIDATE_CKERNXXX */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* */ + /* Warning: Use FT_VALIDATE_XXX to validate a table. */ + /* Following definitions are for gxvalid developers. */ + /* */ + /* */ + /*************************************************************************/ + +#define FT_VALIDATE_feat_INDEX 0 +#define FT_VALIDATE_mort_INDEX 1 +#define FT_VALIDATE_morx_INDEX 2 +#define FT_VALIDATE_bsln_INDEX 3 +#define FT_VALIDATE_just_INDEX 4 +#define FT_VALIDATE_kern_INDEX 5 +#define FT_VALIDATE_opbd_INDEX 6 +#define FT_VALIDATE_trak_INDEX 7 +#define FT_VALIDATE_prop_INDEX 8 +#define FT_VALIDATE_lcar_INDEX 9 +#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX + + + /************************************************************************* + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length' argument of function @FT_TrueTypeGX_Validate. + */ +#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) + + /* */ + + /* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate `feat' table. + * + * FT_VALIDATE_mort :: + * Validate `mort' table. + * + * FT_VALIDATE_morx :: + * Validate `morx' table. + * + * FT_VALIDATE_bsln :: + * Validate `bsln' table. + * + * FT_VALIDATE_just :: + * Validate `just' table. + * + * FT_VALIDATE_kern :: + * Validate `kern' table. + * + * FT_VALIDATE_opbd :: + * Validate `opbd' table. + * + * FT_VALIDATE_trak :: + * Validate `trak' table. + * + * FT_VALIDATE_prop :: + * Validate `prop' table. + * + * FT_VALIDATE_lcar :: + * Validate `lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ + +#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) +#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) +#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) +#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) +#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) +#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) +#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) +#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) +#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) +#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) + +#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ + FT_VALIDATE_mort | \ + FT_VALIDATE_morx | \ + FT_VALIDATE_bsln | \ + FT_VALIDATE_just | \ + FT_VALIDATE_kern | \ + FT_VALIDATE_opbd | \ + FT_VALIDATE_trak | \ + FT_VALIDATE_prop | \ + FT_VALIDATE_lcar ) + + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_GXXXX for possible values. + * + * table_length :: + * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. + * The array itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ + FT_EXPORT( FT_Error ) + FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by + * @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ + FT_EXPORT( void ) + FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate + * to indicate the classic kern dialect or dialects. If the selected + * type doesn't fit, @FT_ClassicKern_Validate regards the table as + * invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the `kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the `kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the `kern' as either classic Apple or Microsoft kern table. + */ +#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) +#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) + +#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) + + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the offsets + * and indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value + * indicates that the table doesn't exist in the font. + */ + FT_EXPORT( FT_Error ) + FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ + FT_EXPORT( void ) + FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGXVAL_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftgzip.h b/lib/linux/include/ftgzip.h new file mode 100644 index 0000000..eb346c6 --- /dev/null +++ b/lib/linux/include/ftgzip.h @@ -0,0 +1,148 @@ +/***************************************************************************/ +/* */ +/* ftgzip.h */ +/* */ +/* Gzip-compressed stream support. */ +/* */ +/* Copyright 2002-2004, 2006, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGZIP_H__ +#define __FTGZIP_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gzip */ + /* */ + /* <Title> */ + /* GZIP Streams */ + /* */ + /* <Abstract> */ + /* Using gzip-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Gzip-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is + * mainly used to support the compressed `*.pcf.gz' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from + * it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); + + + /************************************************************************ + * + * @function: + * FT_Gzip_Uncompress + * + * @description: + * Decompress a zipped input buffer into an output buffer. This function + * is modeled after zlib's `uncompress' function. + * + * @input: + * memory :: + * A FreeType memory handle. + * + * input :: + * The input buffer. + * + * input_len :: + * The length of the input buffer. + * + * @output: + * output:: + * The output buffer. + * + * @inout: + * output_len :: + * Before calling the function, this is the the total size of the + * output buffer, which must be large enough to hold the entire + * uncompressed data (so the size of the uncompressed data must be + * known in advance). After calling the function, `output_len' is the + * size of the used data in `output'. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Gzip_Uncompress( FT_Memory memory, + FT_Byte* output, + FT_ULong* output_len, + const FT_Byte* input, + FT_ULong input_len ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGZIP_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftimage.h b/lib/linux/include/ftimage.h new file mode 100644 index 0000000..2f7ca2a --- /dev/null +++ b/lib/linux/include/ftimage.h @@ -0,0 +1,1220 @@ +/***************************************************************************/ +/* */ +/* ftimage.h */ +/* */ +/* FreeType glyph image formats and default raster interface */ +/* (specification). */ +/* */ +/* Copyright 1996-2010, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Note: A `raster' is simply a scan-line converter, used to render */ + /* FT_Outlines into FT_Bitmaps. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTIMAGE_H__ +#define __FTIMAGE_H__ + + + /* _STANDALONE_ is from ftgrays.c */ +#ifndef _STANDALONE_ +#include <ft2build.h> +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pos */ + /* */ + /* <Description> */ + /* The type FT_Pos is used to store vectorial coordinates. Depending */ + /* on the context, these can represent distances in integer font */ + /* units, or 16.16, or 26.6 fixed-point pixel coordinates. */ + /* */ + typedef signed long FT_Pos; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Vector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector; coordinates are of */ + /* the FT_Pos type. */ + /* */ + /* <Fields> */ + /* x :: The horizontal coordinate. */ + /* y :: The vertical coordinate. */ + /* */ + typedef struct FT_Vector_ + { + FT_Pos x; + FT_Pos y; + + } FT_Vector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BBox */ + /* */ + /* <Description> */ + /* A structure used to hold an outline's bounding box, i.e., the */ + /* coordinates of its extrema in the horizontal and vertical */ + /* directions. */ + /* */ + /* <Fields> */ + /* xMin :: The horizontal minimum (left-most). */ + /* */ + /* yMin :: The vertical minimum (bottom-most). */ + /* */ + /* xMax :: The horizontal maximum (right-most). */ + /* */ + /* yMax :: The vertical maximum (top-most). */ + /* */ + /* <Note> */ + /* The bounding box is specified with the coordinates of the lower */ + /* left and the upper right corner. In PostScript, those values are */ + /* often called (llx,lly) and (urx,ury), respectively. */ + /* */ + /* If `yMin' is negative, this value gives the glyph's descender. */ + /* Otherwise, the glyph doesn't descend below the baseline. */ + /* Similarly, if `ymax' is positive, this value gives the glyph's */ + /* ascender. */ + /* */ + /* `xMin' gives the horizontal distance from the glyph's origin to */ + /* the left edge of the glyph's bounding box. If `xMin' is negative, */ + /* the glyph extends to the left of the origin. */ + /* */ + typedef struct FT_BBox_ + { + FT_Pos xMin, yMin; + FT_Pos xMax, yMax; + + } FT_BBox; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Pixel_Mode */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of pixels in a */ + /* given bitmap. Note that additional formats may be added in the */ + /* future. */ + /* */ + /* <Values> */ + /* FT_PIXEL_MODE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_PIXEL_MODE_MONO :: */ + /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ + /* are stored in most-significant order (MSB), which means that */ + /* the left-most pixel in a byte has value 128. */ + /* */ + /* FT_PIXEL_MODE_GRAY :: */ + /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ + /* images. Each pixel is stored in one byte. Note that the number */ + /* of `gray' levels is stored in the `num_grays' field of the */ + /* @FT_Bitmap structure (it generally is 256). */ + /* */ + /* FT_PIXEL_MODE_GRAY2 :: */ + /* A 2-bit per pixel bitmap, used to represent embedded */ + /* anti-aliased bitmaps in font files according to the OpenType */ + /* specification. We haven't found a single font using this */ + /* format, however. */ + /* */ + /* FT_PIXEL_MODE_GRAY4 :: */ + /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ + /* bitmaps in font files according to the OpenType specification. */ + /* We haven't found a single font using this format, however. */ + /* */ + /* FT_PIXEL_MODE_LCD :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on LCD displays; the bitmap is three times */ + /* wider than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD. */ + /* */ + /* FT_PIXEL_MODE_LCD_V :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on rotated LCD displays; the bitmap is three */ + /* times taller than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD_V. */ + /* */ + /* FT_PIXEL_MODE_BGRA :: */ + /* An image with four 8-bit channels per pixel, representing a */ + /* color image (such as emoticons) with alpha channel. For each */ + /* pixel, the format is BGRA, which means, the blue channel comes */ + /* first in memory. The color channels are pre-multiplied and in */ + /* the sRGB colorspace. For example, full red at half-translucent */ + /* opacity will be represented as `00,00,80,80', not `00,00,FF,80'. */ + /* See also @FT_LOAD_COLOR. */ + /* */ + typedef enum FT_Pixel_Mode_ + { + FT_PIXEL_MODE_NONE = 0, + FT_PIXEL_MODE_MONO, + FT_PIXEL_MODE_GRAY, + FT_PIXEL_MODE_GRAY2, + FT_PIXEL_MODE_GRAY4, + FT_PIXEL_MODE_LCD, + FT_PIXEL_MODE_LCD_V, + FT_PIXEL_MODE_BGRA, + + FT_PIXEL_MODE_MAX /* do not remove */ + + } FT_Pixel_Mode; + + + /* these constants are deprecated; use the corresponding `FT_Pixel_Mode' */ + /* values instead. */ +#define ft_pixel_mode_none FT_PIXEL_MODE_NONE +#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO +#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY +#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 +#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap */ + /* */ + /* <Description> */ + /* A structure used to describe a bitmap or pixmap to the raster. */ + /* Note that we now manage pixmaps of various depths through the */ + /* `pixel_mode' field. */ + /* */ + /* <Fields> */ + /* rows :: The number of bitmap rows. */ + /* */ + /* width :: The number of pixels in bitmap row. */ + /* */ + /* pitch :: The pitch's absolute value is the number of bytes */ + /* taken by one bitmap row, including padding. */ + /* However, the pitch is positive when the bitmap has */ + /* a `down' flow, and negative when it has an `up' */ + /* flow. In all cases, the pitch is an offset to add */ + /* to a bitmap pointer in order to go down one row. */ + /* */ + /* Note that `padding' means the alignment of a */ + /* bitmap to a byte border, and FreeType functions */ + /* normally align to the smallest possible integer */ + /* value. */ + /* */ + /* For the B/W rasterizer, `pitch' is always an even */ + /* number. */ + /* */ + /* To change the pitch of a bitmap (say, to make it a */ + /* multiple of 4), use @FT_Bitmap_Convert. */ + /* Alternatively, you might use callback functions to */ + /* directly render to the application's surface; see */ + /* the file `example2.cpp' in the tutorial for a */ + /* demonstration. */ + /* */ + /* buffer :: A typeless pointer to the bitmap buffer. This */ + /* value should be aligned on 32-bit boundaries in */ + /* most cases. */ + /* */ + /* num_grays :: This field is only used with */ + /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ + /* levels used in the bitmap. */ + /* */ + /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ + /* See @FT_Pixel_Mode for possible values. */ + /* */ + /* palette_mode :: This field is intended for paletted pixel modes; */ + /* it indicates how the palette is stored. Not */ + /* used currently. */ + /* */ + /* palette :: A typeless pointer to the bitmap palette; this */ + /* field is intended for paletted pixel modes. Not */ + /* used currently. */ + /* */ + /* <Note> */ + /* For now, the only pixel modes supported by FreeType are mono and */ + /* grays. However, drivers might be added in the future to support */ + /* more `colorful' options. */ + /* */ + typedef struct FT_Bitmap_ + { + unsigned int rows; + unsigned int width; + int pitch; + unsigned char* buffer; + unsigned short num_grays; + unsigned char pixel_mode; + unsigned char palette_mode; + void* palette; + + } FT_Bitmap; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline */ + /* */ + /* <Description> */ + /* This structure is used to describe an outline to the scan-line */ + /* converter. */ + /* */ + /* <Fields> */ + /* n_contours :: The number of contours in the outline. */ + /* */ + /* n_points :: The number of points in the outline. */ + /* */ + /* points :: A pointer to an array of `n_points' @FT_Vector */ + /* elements, giving the outline's point coordinates. */ + /* */ + /* tags :: A pointer to an array of `n_points' chars, giving */ + /* each outline point's type. */ + /* */ + /* If bit~0 is unset, the point is `off' the curve, */ + /* i.e., a Bézier control point, while it is `on' if */ + /* set. */ + /* */ + /* Bit~1 is meaningful for `off' points only. If set, */ + /* it indicates a third-order Bézier arc control point; */ + /* and a second-order control point if unset. */ + /* */ + /* If bit~2 is set, bits 5-7 contain the drop-out mode */ + /* (as defined in the OpenType specification; the value */ + /* is the same as the argument to the SCANMODE */ + /* instruction). */ + /* */ + /* Bits 3 and~4 are reserved for internal purposes. */ + /* */ + /* contours :: An array of `n_contours' shorts, giving the end */ + /* point of each contour within the outline. For */ + /* example, the first contour is defined by the points */ + /* `0' to `contours[0]', the second one is defined by */ + /* the points `contours[0]+1' to `contours[1]', etc. */ + /* */ + /* flags :: A set of bit flags used to characterize the outline */ + /* and give hints to the scan-converter and hinter on */ + /* how to convert/grid-fit it. See @FT_OUTLINE_XXX. */ + /* */ + /* <Note> */ + /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ + /* first point of each contour. The drop-out mode as given with */ + /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ + /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ + /* */ + typedef struct FT_Outline_ + { + short n_contours; /* number of contours in glyph */ + short n_points; /* number of points in the glyph */ + + FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + short* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } FT_Outline; + + /* */ + + /* Following limits must be consistent with */ + /* FT_Outline.{n_contours,n_points} */ +#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX +#define FT_OUTLINE_POINTS_MAX SHRT_MAX + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OUTLINE_XXX */ + /* */ + /* <Description> */ + /* A list of bit-field constants use for the flags in an outline's */ + /* `flags' field. */ + /* */ + /* <Values> */ + /* FT_OUTLINE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_OUTLINE_OWNER :: */ + /* If set, this flag indicates that the outline's field arrays */ + /* (i.e., `points', `flags', and `contours') are `owned' by the */ + /* outline object, and should thus be freed when it is destroyed. */ + /* */ + /* FT_OUTLINE_EVEN_ODD_FILL :: */ + /* By default, outlines are filled using the non-zero winding rule. */ + /* If set to 1, the outline will be filled using the even-odd fill */ + /* rule (only works with the smooth rasterizer). */ + /* */ + /* FT_OUTLINE_REVERSE_FILL :: */ + /* By default, outside contours of an outline are oriented in */ + /* clock-wise direction, as defined in the TrueType specification. */ + /* This flag is set if the outline uses the opposite direction */ + /* (typically for Type~1 fonts). This flag is ignored by the scan */ + /* converter. */ + /* */ + /* FT_OUTLINE_IGNORE_DROPOUTS :: */ + /* By default, the scan converter will try to detect drop-outs in */ + /* an outline and correct the glyph bitmap to ensure consistent */ + /* shape continuity. If set, this flag hints the scan-line */ + /* converter to ignore such cases. See below for more information. */ + /* */ + /* FT_OUTLINE_SMART_DROPOUTS :: */ + /* Select smart dropout control. If unset, use simple dropout */ + /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ + /* below for more information. */ + /* */ + /* FT_OUTLINE_INCLUDE_STUBS :: */ + /* If set, turn pixels on for `stubs', otherwise exclude them. */ + /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ + /* more information. */ + /* */ + /* FT_OUTLINE_HIGH_PRECISION :: */ + /* This flag indicates that the scan-line converter should try to */ + /* convert this outline to bitmaps with the highest possible */ + /* quality. It is typically set for small character sizes. Note */ + /* that this is only a hint that might be completely ignored by a */ + /* given scan-converter. */ + /* */ + /* FT_OUTLINE_SINGLE_PASS :: */ + /* This flag is set to force a given scan-converter to only use a */ + /* single pass over the outline to render a bitmap glyph image. */ + /* Normally, it is set for very large character sizes. It is only */ + /* a hint that might be completely ignored by a given */ + /* scan-converter. */ + /* */ + /* <Note> */ + /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ + /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ + /* rasterizer. */ + /* */ + /* There exists a second mechanism to pass the drop-out mode to the */ + /* B/W rasterizer; see the `tags' field in @FT_Outline. */ + /* */ + /* Please refer to the description of the `SCANTYPE' instruction in */ + /* the OpenType specification (in file `ttinst1.doc') how simple */ + /* drop-outs, smart drop-outs, and stubs are defined. */ + /* */ +#define FT_OUTLINE_NONE 0x0 +#define FT_OUTLINE_OWNER 0x1 +#define FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define FT_OUTLINE_REVERSE_FILL 0x4 +#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 + +#define FT_OUTLINE_HIGH_PRECISION 0x100 +#define FT_OUTLINE_SINGLE_PASS 0x200 + + + /* these constants are deprecated; use the corresponding */ + /* `FT_OUTLINE_XXX' values instead */ +#define ft_outline_none FT_OUTLINE_NONE +#define ft_outline_owner FT_OUTLINE_OWNER +#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL +#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL +#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS +#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION +#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS + + /* */ + +#define FT_CURVE_TAG( flag ) ( flag & 3 ) + +#define FT_CURVE_TAG_ON 1 +#define FT_CURVE_TAG_CONIC 0 +#define FT_CURVE_TAG_CUBIC 2 + +#define FT_CURVE_TAG_HAS_SCANMODE 4 + +#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ + +#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ + FT_CURVE_TAG_TOUCH_Y ) + +#define FT_Curve_Tag_On FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_MoveToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `move */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `move to' is emitted to start a new contour in an outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `move to'. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_LineToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `line */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `line to' is emitted to indicate a segment in the outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `line to'. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_ConicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `conic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `conic to' is emitted to indicate a second-order Bézier arc in */ + /* the outline. */ + /* */ + /* <Input> */ + /* control :: An intermediate control point between the last position */ + /* and the new target in `to'. */ + /* */ + /* to :: A pointer to the target end point of the conic arc. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); + +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_CubicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `cubic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ + /* */ + /* <Input> */ + /* control1 :: A pointer to the first Bézier control point. */ + /* */ + /* control2 :: A pointer to the second Bézier control point. */ + /* */ + /* to :: A pointer to the target end point. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); + +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline_Funcs */ + /* */ + /* <Description> */ + /* A structure to hold various function pointers used during outline */ + /* decomposition in order to emit segments, conic, and cubic Béziers. */ + /* */ + /* <Fields> */ + /* move_to :: The `move to' emitter. */ + /* */ + /* line_to :: The segment emitter. */ + /* */ + /* conic_to :: The second-order Bézier arc emitter. */ + /* */ + /* cubic_to :: The third-order Bézier arc emitter. */ + /* */ + /* shift :: The shift that is applied to coordinates before they */ + /* are sent to the emitter. */ + /* */ + /* delta :: The delta that is applied to coordinates before they */ + /* are sent to the emitter, but after the shift. */ + /* */ + /* <Note> */ + /* The point coordinates sent to the emitters are the transformed */ + /* version of the original coordinates (this is important for high */ + /* accuracy during scan-conversion). The transformation is simple: */ + /* */ + /* { */ + /* x' = (x << shift) - delta */ + /* y' = (x << shift) - delta */ + /* } */ + /* */ + /* Set the values of `shift' and `delta' to~0 to get the original */ + /* point coordinates. */ + /* */ + typedef struct FT_Outline_Funcs_ + { + FT_Outline_MoveToFunc move_to; + FT_Outline_LineToFunc line_to; + FT_Outline_ConicToFunc conic_to; + FT_Outline_CubicToFunc cubic_to; + + int shift; + FT_Pos delta; + + } FT_Outline_Funcs; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_IMAGE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags to an unsigned long type. */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_IMAGE_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_Format */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of a given glyph */ + /* image. Note that this version of FreeType only supports two image */ + /* formats, even though future font drivers will be able to register */ + /* their own format. */ + /* */ + /* <Values> */ + /* FT_GLYPH_FORMAT_NONE :: */ + /* The value~0 is reserved. */ + /* */ + /* FT_GLYPH_FORMAT_COMPOSITE :: */ + /* The glyph image is a composite of several other images. This */ + /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ + /* report compound glyphs (like accented characters). */ + /* */ + /* FT_GLYPH_FORMAT_BITMAP :: */ + /* The glyph image is a bitmap, and can be described as an */ + /* @FT_Bitmap. You generally need to access the `bitmap' field of */ + /* the @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_OUTLINE :: */ + /* The glyph image is a vectorial outline made of line segments */ + /* and Bézier arcs; it can be described as an @FT_Outline; you */ + /* generally want to access the `outline' field of the */ + /* @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_PLOTTER :: */ + /* The glyph image is a vectorial path with no inside and outside */ + /* contours. Some Type~1 fonts, like those in the Hershey family, */ + /* contain glyphs in this format. These are described as */ + /* @FT_Outline, but FreeType isn't currently capable of rendering */ + /* them correctly. */ + /* */ + typedef enum FT_Glyph_Format_ + { + FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) + + } FT_Glyph_Format; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_Format' values instead. */ +#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE +#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE +#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP +#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE +#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* A raster is a scan converter, in charge of rendering an outline into */ + /* a a bitmap. This section contains the public API for rasters. */ + /* */ + /* Note that in FreeType 2, all rasters are now encapsulated within */ + /* specific modules called `renderers'. See `ftrender.h' for more */ + /* details on renderers. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* raster */ + /* */ + /* <Title> */ + /* Scanline Converter */ + /* */ + /* <Abstract> */ + /* How vectorial outlines are converted into bitmaps and pixmaps. */ + /* */ + /* <Description> */ + /* This section contains technical definitions. */ + /* */ + /* <Order> */ + /* FT_Raster */ + /* FT_Span */ + /* FT_SpanFunc */ + /* */ + /* FT_Raster_Params */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* FT_Raster_NewFunc */ + /* FT_Raster_DoneFunc */ + /* FT_Raster_ResetFunc */ + /* FT_Raster_SetModeFunc */ + /* FT_Raster_RenderFunc */ + /* FT_Raster_Funcs */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Raster */ + /* */ + /* <Description> */ + /* An opaque handle (pointer) to a raster object. Each object can be */ + /* used independently to convert an outline into a bitmap or pixmap. */ + /* */ + typedef struct FT_RasterRec_* FT_Raster; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Span */ + /* */ + /* <Description> */ + /* A structure used to model a single span of gray pixels when */ + /* rendering an anti-aliased bitmap. */ + /* */ + /* <Fields> */ + /* x :: The span's horizontal start position. */ + /* */ + /* len :: The span's length in pixels. */ + /* */ + /* coverage :: The span color/coverage, ranging from 0 (background) */ + /* to 255 (foreground). */ + /* */ + /* <Note> */ + /* This structure is used by the span drawing callback type named */ + /* @FT_SpanFunc that takes the y~coordinate of the span as a */ + /* parameter. */ + /* */ + /* The coverage value is always between 0 and 255. If you want less */ + /* gray values, the callback function has to reduce them. */ + /* */ + typedef struct FT_Span_ + { + short x; + unsigned short len; + unsigned char coverage; + + } FT_Span; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_SpanFunc */ + /* */ + /* <Description> */ + /* A function used as a call-back by the anti-aliased renderer in */ + /* order to let client applications draw themselves the gray pixel */ + /* spans on each scan line. */ + /* */ + /* <Input> */ + /* y :: The scanline's y~coordinate. */ + /* */ + /* count :: The number of spans to draw on this scanline. */ + /* */ + /* spans :: A table of `count' spans to draw on the scanline. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Note> */ + /* This callback allows client applications to directly render the */ + /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ + /* */ + /* This can be used to write anti-aliased outlines directly to a */ + /* given background bitmap, and even perform translucency. */ + /* */ + /* Note that the `count' field cannot be greater than a fixed value */ + /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ + /* `ftoption.h'. By default, this value is set to~32, which means */ + /* that if there are more than 32~spans on a given scanline, the */ + /* callback is called several times with the same `y' parameter in */ + /* order to draw all callbacks. */ + /* */ + /* Otherwise, the callback is only called once per scan-line, and */ + /* only for those scanlines that do have `gray' pixels on them. */ + /* */ + typedef void + (*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); + +#define FT_Raster_Span_Func FT_SpanFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitTest_Func */ + /* */ + /* <Description> */ + /* Deprecated, unimplemented. */ + /* */ + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitSet_Func */ + /* */ + /* <Description> */ + /* Deprecated, unimplemented. */ + /* */ + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flag constants as used in the `flags' field of a */ + /* @FT_Raster_Params structure. */ + /* */ + /* <Values> */ + /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ + /* */ + /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ + /* anti-aliased glyph image should be */ + /* generated. Otherwise, it will be */ + /* monochrome (1-bit). */ + /* */ + /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ + /* rendering. In this mode, client */ + /* applications must provide their own span */ + /* callback. This lets them directly */ + /* draw or compose over an existing bitmap. */ + /* If this bit is not set, the target */ + /* pixmap's buffer _must_ be zeroed before */ + /* rendering. */ + /* */ + /* Direct rendering is only possible with */ + /* anti-aliased glyphs. */ + /* */ + /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ + /* rendering mode. If set, the output will */ + /* be clipped to a box specified in the */ + /* `clip_box' field of the */ + /* @FT_Raster_Params structure. */ + /* */ + /* Note that by default, the glyph bitmap */ + /* is clipped to the target pixmap, except */ + /* in direct rendering mode where all spans */ + /* are generated if no clipping box is set. */ + /* */ +#define FT_RASTER_FLAG_DEFAULT 0x0 +#define FT_RASTER_FLAG_AA 0x1 +#define FT_RASTER_FLAG_DIRECT 0x2 +#define FT_RASTER_FLAG_CLIP 0x4 + + /* these constants are deprecated; use the corresponding */ + /* `FT_RASTER_FLAG_XXX' values instead */ +#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT +#define ft_raster_flag_aa FT_RASTER_FLAG_AA +#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT +#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Params */ + /* */ + /* <Description> */ + /* A structure to hold the arguments used by a raster's render */ + /* function. */ + /* */ + /* <Fields> */ + /* target :: The target bitmap. */ + /* */ + /* source :: A pointer to the source glyph image (e.g., an */ + /* @FT_Outline). */ + /* */ + /* flags :: The rendering flags. */ + /* */ + /* gray_spans :: The gray span drawing callback. */ + /* */ + /* black_spans :: Unused. */ + /* */ + /* bit_test :: Unused. */ + /* */ + /* bit_set :: Unused. */ + /* */ + /* user :: User-supplied data that is passed to each drawing */ + /* callback. */ + /* */ + /* clip_box :: An optional clipping box. It is only used in */ + /* direct rendering mode. Note that coordinates here */ + /* should be expressed in _integer_ pixels (and not in */ + /* 26.6 fixed-point units). */ + /* */ + /* <Note> */ + /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ + /* bit flag is set in the `flags' field, otherwise a monochrome */ + /* bitmap is generated. */ + /* */ + /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ + /* raster will call the `gray_spans' callback to draw gray pixel */ + /* spans. This allows direct composition over a pre-existing bitmap */ + /* through user-provided callbacks to perform the span drawing and */ + /* composition. Not supported by the monochrome rasterizer. */ + /* */ + typedef struct FT_Raster_Params_ + { + const FT_Bitmap* target; + const void* source; + int flags; + FT_SpanFunc gray_spans; + FT_SpanFunc black_spans; /* unused */ + FT_Raster_BitTest_Func bit_test; /* unused */ + FT_Raster_BitSet_Func bit_set; /* unused */ + void* user; + FT_BBox clip_box; + + } FT_Raster_Params; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_NewFunc */ + /* */ + /* <Description> */ + /* A function used to create a new raster object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory allocator. */ + /* */ + /* <Output> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `memory' parameter is a typeless pointer in order to avoid */ + /* un-wanted dependencies on the rest of the FreeType code. In */ + /* practice, it is an @FT_Memory object, i.e., a handle to the */ + /* standard FreeType memory allocator. However, this field can be */ + /* completely ignored by a given raster implementation. */ + /* */ + typedef int + (*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); + +#define FT_Raster_New_Func FT_Raster_NewFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_DoneFunc */ + /* */ + /* <Description> */ + /* A function used to destroy a given raster object. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + typedef void + (*FT_Raster_DoneFunc)( FT_Raster raster ); + +#define FT_Raster_Done_Func FT_Raster_DoneFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_ResetFunc */ + /* */ + /* <Description> */ + /* FreeType provides an area of memory called the `render pool', */ + /* available to all registered rasters. This pool can be freely used */ + /* during a given scan-conversion but is shared by all rasters. Its */ + /* content is thus transient. */ + /* */ + /* This function is called each time the render pool changes, or just */ + /* after a new raster object is created. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* pool_base :: The address in memory of the render pool. */ + /* */ + /* pool_size :: The size in bytes of the render pool. */ + /* */ + /* <Note> */ + /* Rasters can ignore the render pool and rely on dynamic memory */ + /* allocation if they want to (a handle to the memory allocator is */ + /* passed to the raster constructor). However, this is not */ + /* recommended for efficiency purposes. */ + /* */ + typedef void + (*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_SetModeFunc */ + /* */ + /* <Description> */ + /* This function is a generic facility to change modes or attributes */ + /* in a given raster. This can be used for debugging purposes, or */ + /* simply to allow implementation-specific `features' in a given */ + /* raster module. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* mode :: A 4-byte tag used to name the mode or property. */ + /* */ + /* args :: A pointer to the new mode/property to use. */ + /* */ + typedef int + (*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); + +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_RenderFunc */ + /* */ + /* <Description> */ + /* Invoke a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* store the rendering parameters. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The exact format of the source image depends on the raster's glyph */ + /* format defined in its @FT_Raster_Funcs structure. It can be an */ + /* @FT_Outline or anything else in order to support a large array of */ + /* glyph formats. */ + /* */ + /* Note also that the render function can fail and return a */ + /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ + /* not support direct composition. */ + /* */ + /* XXX: For now, the standard raster doesn't support direct */ + /* composition but this should change for the final release (see */ + /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ + /* for examples of distinct implementations that support direct */ + /* composition). */ + /* */ + typedef int + (*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); + +#define FT_Raster_Render_Func FT_Raster_RenderFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Funcs */ + /* */ + /* <Description> */ + /* A structure used to describe a given raster class to the library. */ + /* */ + /* <Fields> */ + /* glyph_format :: The supported glyph format for this raster. */ + /* */ + /* raster_new :: The raster constructor. */ + /* */ + /* raster_reset :: Used to reset the render pool within the raster. */ + /* */ + /* raster_render :: A function to render a glyph into a given bitmap. */ + /* */ + /* raster_done :: The raster destructor. */ + /* */ + typedef struct FT_Raster_Funcs_ + { + FT_Glyph_Format glyph_format; + FT_Raster_NewFunc raster_new; + FT_Raster_ResetFunc raster_reset; + FT_Raster_SetModeFunc raster_set_mode; + FT_Raster_RenderFunc raster_render; + FT_Raster_DoneFunc raster_done; + + } FT_Raster_Funcs; + + /* */ + + +FT_END_HEADER + +#endif /* __FTIMAGE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/linux/include/ftincrem.h b/lib/linux/include/ftincrem.h new file mode 100644 index 0000000..4c0246c --- /dev/null +++ b/lib/linux/include/ftincrem.h @@ -0,0 +1,354 @@ +/***************************************************************************/ +/* */ +/* ftincrem.h */ +/* */ +/* FreeType incremental loading (specification). */ +/* */ +/* Copyright 2002, 2003, 2006-2008, 2010, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTINCREM_H__ +#define __FTINCREM_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * `incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application. + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + + /*************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * `incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript interpreters), + * where the glyph data isn't in the font file, or must be overridden by + * different values. + * + * @note: + * It is up to client applications to create and implement @FT_Incremental + * objects, as long as they provide implementations for the methods + * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc + * and @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ + typedef struct FT_IncrementalRec_* FT_Incremental; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned + * by the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical' argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ + typedef struct FT_Incremental_MetricsRec_ + { + FT_Long bearing_x; + FT_Long bearing_y; + FT_Long advance; + FT_Long advance_v; /* since 2.3.12 */ + + } FT_Incremental_MetricsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ + typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the `glyf' table. For PostScript formats, it must correspond to the + * *unencrypted* charstring bytes, without any `lenIV' header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release + * the data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ + typedef void + (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This is necessary because, in certain + * formats like TrueType, the metrics are stored in a different place from + * the glyph images proper. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. + * The original glyph metrics, if any, in font units. If metrics are + * not available all the values must be set to zero. + * + * @output: + * ametrics :: + * The replacement glyph metrics in font units. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphMetricsFunc) + ( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + + /************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data + * incrementally. Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does + * not provide overriding glyph metrics. + * + */ + typedef struct FT_Incremental_FuncsRec_ + { + FT_Incremental_GetGlyphDataFunc get_glyph_data; + FT_Incremental_FreeGlyphDataFunc free_glyph_data; + FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; + + } FT_Incremental_FuncsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * { + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * } + * + */ + typedef struct FT_Incremental_InterfaceRec_ + { + const FT_Incremental_FuncsRec* funcs; + FT_Incremental object; + + } FT_Incremental_InterfaceRec; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ + typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * A constant used as the tag of @FT_Parameter structures to indicate + * an incremental loading object to be used by FreeType. + * + */ +#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FTINCREM_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftlcdfil.h b/lib/linux/include/ftlcdfil.h new file mode 100644 index 0000000..e8679c1 --- /dev/null +++ b/lib/linux/include/ftlcdfil.h @@ -0,0 +1,251 @@ +/***************************************************************************/ +/* */ +/* ftlcdfil.h */ +/* */ +/* FreeType API for color filtering of subpixel bitmap glyphs */ +/* (specification). */ +/* */ +/* Copyright 2006-2008, 2010, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_LCD_FILTER_H__ +#define __FT_LCD_FILTER_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * lcd_filtering + * + * @title: + * LCD Filtering + * + * @abstract: + * Reduce color fringes of LCD-optimized bitmaps. + * + * @description: + * The @FT_Library_SetLcdFilter API can be used to specify a low-pass + * filter, which is then applied to LCD-optimized bitmaps generated + * through @FT_Render_Glyph. This is useful to reduce color fringes + * that would occur with unfiltered rendering. + * + * Note that no filter is active by default, and that this function is + * *not* implemented in default builds of the library. You need to + * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file + * in order to activate it. + * + * FreeType generates alpha coverage maps, which are linear by nature. + * For instance, the value 0x80 in bitmap representation means that + * (within numerical precision) 0x80/0xFF fraction of that pixel is + * covered by the glyph's outline. The blending function for placing + * text over a background is + * + * { + * dst = alpha * src + (1 - alpha) * dst , + * } + * + * which is known as OVER. However, when calculating the output of the + * OVER operator, the source colors should first be transformed to a + * linear color space, then alpha blended in that space, and transformed + * back to the output color space. + * + * When linear light blending is used, the default FIR5 filtering + * weights (as given by FT_LCD_FILTER_DEFAULT) are no longer optimal, as + * they have been designed for black on white rendering while lacking + * gamma correction. To preserve color neutrality, weights for a FIR5 + * filter should be chosen according to two free parameters `a' and `c', + * and the FIR weights should be + * + * { + * [a - c, a + c, 2 * a, a + c, a - c] . + * } + * + * This formula generates equal weights for all the color primaries + * across the filter kernel, which makes it colorless. One suggested + * set of weights is + * + * { + * [0x10, 0x50, 0x60, 0x50, 0x10] , + * } + * + * where `a' has value 0x30 and `b' value 0x20. The weights in filter + * may have a sum larger than 0x100, which increases coloration slightly + * but also improves contrast. + */ + + + /**************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * The default filter reduces color fringes considerably, at the cost + * of a slight blurriness in the output. + * + * FT_LCD_FILTER_LIGHT :: + * The light filter is a variant that produces less blurriness at the + * cost of slightly more color fringes than the default one. It might + * be better, depending on taste, your monitor, or your personal vision. + * + * FT_LCD_FILTER_LEGACY :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * In other words, it only works well if the TrueType bytecode + * interpreter is enabled *and* high-quality hinted fonts are used. + * + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. + * + * @since: + * 2.3.0 + */ + typedef enum FT_LcdFilter_ + { + FT_LCD_FILTER_NONE = 0, + FT_LCD_FILTER_DEFAULT = 1, + FT_LCD_FILTER_LIGHT = 2, + FT_LCD_FILTER_LEGACY = 16, + + FT_LCD_FILTER_MAX /* do not remove */ + + } FT_LcdFilter; + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work + * well on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This feature is always disabled by default. Clients must make an + * explicit call to this function with a `filter' value other than + * @FT_LCD_FILTER_NONE in order to enable it. + * + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, + * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. + * + * It does _not_ affect the output of @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * If this feature is activated, the dimensions of LCD glyph bitmaps are + * either larger or taller than the dimensions of the corresponding + * outline with regards to the pixel grid. For example, for + * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and + * up to 3~pixels to the right. + * + * The bitmap offset values are adjusted correctly, so clients shouldn't + * need to modify their layout and glyph positioning code when enabling + * the filter. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilterWeights + * + * @description: + * Use this function to override the filter weights selected by + * @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple + * (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10, + * 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and + * FT_LCD_FILTER_LEGACY. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * This function must be called after @FT_Library_SetLcdFilter to have + * any effect. + * + * @since: + * 2.4.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + + /* */ + + +FT_END_HEADER + +#endif /* __FT_LCD_FILTER_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftlist.h b/lib/linux/include/ftlist.h new file mode 100644 index 0000000..9950a27 --- /dev/null +++ b/lib/linux/include/ftlist.h @@ -0,0 +1,276 @@ +/***************************************************************************/ +/* */ +/* ftlist.h */ +/* */ +/* Generic list support for FreeType (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2007, 2010, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file implements functions relative to list processing. Its */ + /* data structures are defined in `freetype.h'. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTLIST_H__ +#define __FTLIST_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /* <Title> */ + /* List Processing */ + /* */ + /* <Abstract> */ + /* Simple management of lists. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to list */ + /* processing using doubly-linked nodes. */ + /* */ + /* <Order> */ + /* FT_List */ + /* FT_ListNode */ + /* FT_ListRec */ + /* FT_ListNodeRec */ + /* */ + /* FT_List_Add */ + /* FT_List_Insert */ + /* FT_List_Find */ + /* FT_List_Remove */ + /* FT_List_Up */ + /* FT_List_Iterate */ + /* FT_List_Iterator */ + /* FT_List_Finalize */ + /* FT_List_Destructor */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Find */ + /* */ + /* <Description> */ + /* Find the list node for a given listed object. */ + /* */ + /* <Input> */ + /* list :: A pointer to the parent list. */ + /* data :: The address of the listed object. */ + /* */ + /* <Return> */ + /* List node. NULL if it wasn't found. */ + /* */ + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Add */ + /* */ + /* <Description> */ + /* Append an element to the end of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to append. */ + /* */ + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Insert */ + /* */ + /* <Description> */ + /* Insert an element at the head of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to parent list. */ + /* node :: The node to insert. */ + /* */ + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Remove */ + /* */ + /* <Description> */ + /* Remove a node from a list. This function doesn't check whether */ + /* the node is in the list! */ + /* */ + /* <Input> */ + /* node :: The node to remove. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* */ + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Up */ + /* */ + /* <Description> */ + /* Move a node to the head/top of a list. Used to maintain LRU */ + /* lists. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to move. */ + /* */ + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Iterator */ + /* */ + /* <Description> */ + /* An FT_List iterator function that is called during a list parse */ + /* by @FT_List_Iterate. */ + /* */ + /* <Input> */ + /* node :: The current iteration list node. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. */ + /* Can be used to point to the iteration's state. */ + /* */ + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Iterate */ + /* */ + /* <Description> */ + /* Parse a list and calls a given iterator function on each element. */ + /* Note that parsing is stopped as soon as one of the iterator calls */ + /* returns a non-zero value. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* iterator :: An iterator function, called on each node of the list. */ + /* user :: A user-supplied field that is passed as the second */ + /* argument to the iterator. */ + /* */ + /* <Return> */ + /* The result (a FreeType error code) of the last iterator call. */ + /* */ + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Destructor */ + /* */ + /* <Description> */ + /* An @FT_List iterator function that is called during a list */ + /* finalization by @FT_List_Finalize to destroy all elements in a */ + /* given list. */ + /* */ + /* <Input> */ + /* system :: The current system object. */ + /* */ + /* data :: The current object to destroy. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ + /* be used to point to the iteration's state. */ + /* */ + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Finalize */ + /* */ + /* <Description> */ + /* Destroy all elements in the list as well as the list itself. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* */ + /* destroy :: A list destructor that will be applied to each element */ + /* of the list. Set this to NULL if not needed. */ + /* */ + /* memory :: The current memory object that handles deallocation. */ + /* */ + /* user :: A user-supplied field that is passed as the last */ + /* argument to the destructor. */ + /* */ + /* <Note> */ + /* This function expects that all nodes added by @FT_List_Add or */ + /* @FT_List_Insert have been dynamically allocated. */ + /* */ + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLIST_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftlzw.h b/lib/linux/include/ftlzw.h new file mode 100644 index 0000000..857c0c5 --- /dev/null +++ b/lib/linux/include/ftlzw.h @@ -0,0 +1,99 @@ +/***************************************************************************/ +/* */ +/* ftlzw.h */ +/* */ +/* LZW-compressed stream support. */ +/* */ +/* Copyright 2004, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTLZW_H__ +#define __FTLZW_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* lzw */ + /* */ + /* <Title> */ + /* LZW Streams */ + /* */ + /* <Abstract> */ + /* Using LZW-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of LZW-specific functions. */ + /* */ + /*************************************************************************/ + + /************************************************************************ + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is + * mainly used to support the compressed `*.pcf.Z' fonts that come + * with XFree86. + * + * @input: + * stream :: The target embedding stream. + * + * source :: The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream + * + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it + * and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with LZW support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLZW_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftmac.h b/lib/linux/include/ftmac.h new file mode 100644 index 0000000..42874fe --- /dev/null +++ b/lib/linux/include/ftmac.h @@ -0,0 +1,274 @@ +/***************************************************************************/ +/* */ +/* ftmac.h */ +/* */ +/* Additional Mac-specific API. */ +/* */ +/* Copyright 1996-2001, 2004, 2006, 2007, 2013 by */ +/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* NOTE: Include this file after FT_FREETYPE_H and after any */ +/* Mac-specific headers (because this header uses Mac types such as */ +/* Handle, FSSpec, FSRef, etc.) */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMAC_H__ +#define __FTMAC_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + +/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ +#ifndef FT_DEPRECATED_ATTRIBUTE +#if defined(__GNUC__) && \ + ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) +#else +#define FT_DEPRECATED_ATTRIBUTE +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* mac_specific */ + /* */ + /* <Title> */ + /* Mac Specific Interface */ + /* */ + /* <Abstract> */ + /* Only available on the Macintosh. */ + /* */ + /* <Description> */ + /* The following definitions are only available if FreeType is */ + /* compiled on a Macintosh. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FOND */ + /* */ + /* <Description> */ + /* Create a new face object from a FOND resource. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* fond :: A FOND resource. */ + /* */ + /* face_index :: Only supported for the -1 `sanity check' special */ + /* case. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Notes> */ + /* This function can be used to create @FT_Face objects from fonts */ + /* that are installed in the system as follows. */ + /* */ + /* { */ + /* fond = GetResource( 'FOND', fontName ); */ + /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font (e.g., Times New Roman */ + /* Bold). */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFilePath_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return a pathname of the disk file and face index for given font */ + /* name that is handled by ATS framework. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* path :: Buffer to store pathname of the file. For passing */ + /* to @FT_New_Face. The client must allocate this */ + /* buffer before calling this function. */ + /* */ + /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ + /* */ + /* face_index :: Index of the face. For passing to @FT_New_Face. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSSpec */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSSpec to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSSpec to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ + /* it accepts an FSSpec instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSRef */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSRef to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSRef to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ + /* it accepts an FSRef instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + /* */ + + +FT_END_HEADER + + +#endif /* __FTMAC_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftmm.h b/lib/linux/include/ftmm.h new file mode 100644 index 0000000..2dcfd67 --- /dev/null +++ b/lib/linux/include/ftmm.h @@ -0,0 +1,373 @@ +/***************************************************************************/ +/* */ +/* ftmm.h */ +/* */ +/* FreeType Multiple Master font interface (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2004, 2006, 2009, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMM_H__ +#define __FTMM_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* multiple_masters */ + /* */ + /* <Title> */ + /* Multiple Masters */ + /* */ + /* <Abstract> */ + /* How to manage Multiple Masters fonts. */ + /* */ + /* <Description> */ + /* The following types and functions are used to manage Multiple */ + /* Master fonts, i.e., the selection of specific design instances by */ + /* setting design axis coordinates. */ + /* */ + /* George Williams has extended this interface to make it work with */ + /* both Type~1 Multiple Masters fonts and GX distortable (var) */ + /* fonts. Some of these routines only work with MM fonts, others */ + /* will work with both types. They are similar enough that a */ + /* consistent interface makes sense. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters fonts. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + typedef struct FT_MM_Axis_ + { + FT_String* name; + FT_Long minimum; + FT_Long maximum; + + } FT_MM_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Multi_Master */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* font. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* num_axis :: Number of axes. Cannot exceed~4. */ + /* */ + /* num_designs :: Number of designs; should be normally 2^num_axis */ + /* even though the Type~1 specification strangely */ + /* allows for intermediate designs to be present. This */ + /* number cannot exceed~16. */ + /* */ + /* axis :: A table of axis descriptors. */ + /* */ + typedef struct FT_Multi_Master_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_MM_Axis axis[T1_MAX_MM_AXIS]; + + } FT_Multi_Master; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters and GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* Not always meaningful for GX. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* def :: The axis's default design coordinate. */ + /* FreeType computes meaningful default values for MM; it */ + /* is then an integer value, not in 16.16 format. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + /* tag :: The axis's tag (the GX equivalent to `name'). */ + /* FreeType provides default values for MM if possible. */ + /* */ + /* strid :: The entry in `name' table (another GX version of */ + /* `name'). */ + /* Not meaningful for MM. */ + /* */ + typedef struct FT_Var_Axis_ + { + FT_String* name; + + FT_Fixed minimum; + FT_Fixed def; + FT_Fixed maximum; + + FT_ULong tag; + FT_UInt strid; + + } FT_Var_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Named_Style */ + /* */ + /* <Description> */ + /* A simple structure used to model a named style in a GX var font. */ + /* */ + /* This structure can't be used for MM fonts. */ + /* */ + /* <Fields> */ + /* coords :: The design coordinates for this style. */ + /* This is an array with one entry for each axis. */ + /* */ + /* strid :: The entry in `name' table identifying this style. */ + /* */ + typedef struct FT_Var_Named_Style_ + { + FT_Fixed* coords; + FT_UInt strid; + + } FT_Var_Named_Style; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Var */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* or GX var distortable font. */ + /* */ + /* Some fields are specific to one format and not to the other. */ + /* */ + /* <Fields> */ + /* num_axis :: The number of axes. The maximum value is~4 for */ + /* MM; no limit in GX. */ + /* */ + /* num_designs :: The number of designs; should be normally */ + /* 2^num_axis for MM fonts. Not meaningful for GX */ + /* (where every glyph could have a different */ + /* number of designs). */ + /* */ + /* num_namedstyles :: The number of named styles; only meaningful for */ + /* GX that allows certain design coordinates to */ + /* have a string ID (in the `name' table) */ + /* associated with them. The font can tell the */ + /* user that, for example, Weight=1.5 is `Bold'. */ + /* */ + /* axis :: A table of axis descriptors. */ + /* GX fonts contain slightly more data than MM. */ + /* */ + /* namedstyles :: A table of named styles. */ + /* Only meaningful with GX. */ + /* */ + typedef struct FT_MM_Var_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_UInt num_namedstyles; + FT_Var_Axis* axis; + FT_Var_Named_Style* namedstyle; + + } FT_MM_Var; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Multi_Master */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master descriptor of a given font. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_MM_Var */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master/GX var descriptor of a given font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters/GX var descriptor. */ + /* Allocates a data structure, which the user must free. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Var( FT_Face face, + FT_MM_Var* *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters fonts, choose an interpolated font design */ + /* through design coordinates. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of design coordinates (must be equal to */ + /* the number of axes in the font). */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Master or GX Var fonts, choose an interpolated font */ + /* design through design coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of design coordinates (must be equal to */ + /* the number of axes in the font). */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Blend_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters and GX var fonts, choose an interpolated font */ + /* design through normalized blend coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of design coordinates (must be equal to */ + /* the number of axes in the font). */ + /* */ + /* coords :: The design coordinates array (each element must be */ + /* between 0 and 1.0). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Blend_Coordinates */ + /* */ + /* <Description> */ + /* This is another name of @FT_Set_MM_Blend_Coordinates. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTMM_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftmodapi.h b/lib/linux/include/ftmodapi.h new file mode 100644 index 0000000..980f15d --- /dev/null +++ b/lib/linux/include/ftmodapi.h @@ -0,0 +1,667 @@ +/***************************************************************************/ +/* */ +/* ftmodapi.h */ +/* */ +/* FreeType modules public interface (specification). */ +/* */ +/* Copyright 1996-2003, 2006, 2008-2010, 2012, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMODAPI_H__ +#define __FTMODAPI_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /* <Title> */ + /* Module Management */ + /* */ + /* <Abstract> */ + /* How to add, upgrade, remove, and control modules from FreeType. */ + /* */ + /* <Description> */ + /* The definitions below are used to manage modules within FreeType. */ + /* Modules can be added, upgraded, and removed at runtime. */ + /* Additionally, some module properties can be controlled also. */ + /* */ + /* Here is a list of possible values of the `module_name' field in */ + /* the @FT_Module_Class structure. */ + /* */ + /* { */ + /* autofitter */ + /* bdf */ + /* cff */ + /* gxvalid */ + /* otvalid */ + /* pcf */ + /* pfr */ + /* psaux */ + /* pshinter */ + /* psnames */ + /* raster1, raster5 */ + /* sfnt */ + /* smooth, smooth-lcd, smooth-lcdv */ + /* truetype */ + /* type1 */ + /* type42 */ + /* t1cid */ + /* winfonts */ + /* } */ + /* */ + /* Note that the FreeType Cache sub-system is not a FreeType module. */ + /* */ + /* <Order> */ + /* FT_Module */ + /* FT_Module_Constructor */ + /* FT_Module_Destructor */ + /* FT_Module_Requester */ + /* FT_Module_Class */ + /* */ + /* FT_Add_Module */ + /* FT_Get_Module */ + /* FT_Remove_Module */ + /* FT_Add_Default_Modules */ + /* */ + /* FT_Property_Set */ + /* FT_Property_Get */ + /* */ + /* FT_New_Library */ + /* FT_Done_Library */ + /* FT_Reference_Library */ + /* */ + /* FT_Renderer */ + /* FT_Renderer_Class */ + /* */ + /* FT_Get_Renderer */ + /* FT_Set_Renderer */ + /* */ + /* FT_Set_Debug_Hook */ + /* */ + /*************************************************************************/ + + + /* module bit flags */ +#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ +#define FT_MODULE_RENDERER 2 /* this module is a renderer */ +#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ +#define FT_MODULE_STYLER 8 /* this module is a styler */ + +#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ + /* scalable fonts */ +#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ + /* support vector outlines */ +#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ + /* own hinter */ + + + /* deprecated values */ +#define ft_module_font_driver FT_MODULE_FONT_DRIVER +#define ft_module_renderer FT_MODULE_RENDERER +#define ft_module_hinter FT_MODULE_HINTER +#define ft_module_styler FT_MODULE_STYLER + +#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE +#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES +#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER + + + typedef FT_Pointer FT_Module_Interface; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Constructor */ + /* */ + /* <Description> */ + /* A function used to initialize (not create) a new module object. */ + /* */ + /* <Input> */ + /* module :: The module to initialize. */ + /* */ + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destructor */ + /* */ + /* <Description> */ + /* A function used to finalize (not destroy) a given module object. */ + /* */ + /* <Input> */ + /* module :: The module to finalize. */ + /* */ + typedef void + (*FT_Module_Destructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Requester */ + /* */ + /* <Description> */ + /* A function used to query a given module for a specific interface. */ + /* */ + /* <Input> */ + /* module :: The module to be searched. */ + /* */ + /* name :: The name of the interface in the module. */ + /* */ + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Module_Class */ + /* */ + /* <Description> */ + /* The module class descriptor. */ + /* */ + /* <Fields> */ + /* module_flags :: Bit flags describing the module. */ + /* */ + /* module_size :: The size of one module object/instance in */ + /* bytes. */ + /* */ + /* module_name :: The name of the module. */ + /* */ + /* module_version :: The version, as a 16.16 fixed number */ + /* (major.minor). */ + /* */ + /* module_requires :: The version of FreeType this module requires, */ + /* as a 16.16 fixed number (major.minor). Starts */ + /* at version 2.0, i.e., 0x20000. */ + /* */ + /* module_init :: The initializing function. */ + /* */ + /* module_done :: The finalizing function. */ + /* */ + /* get_interface :: The interface requesting function. */ + /* */ + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Long module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Module */ + /* */ + /* <Description> */ + /* Add a new module to a given library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* clazz :: A pointer to class descriptor for the module. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module */ + /* */ + /* <Description> */ + /* Find a module by its name. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module handle. 0~if none was found. */ + /* */ + /* <Note> */ + /* FreeType's internal modules aren't documented very well, and you */ + /* should look up the source code for details. */ + /* */ + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Remove_Module */ + /* */ + /* <Description> */ + /* Remove a given module from a library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to a library object. */ + /* */ + /* <Input> */ + /* module :: A handle to a module object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The module object is destroyed by the function in case of success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); + + + /********************************************************************** + * + * @function: + * FT_Property_Set + * + * @description: + * Set a property for a given module. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * Note that only a few modules have properties. + * + * value :: + * A generic pointer to a variable or structure that gives the new + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example sets property `bar' (a simple integer) in + * module `foo' to value~1. + * + * { + * FT_UInt bar; + * + * + * bar = 1; + * FT_Property_Set( library, "foo", "bar", &bar ); + * } + * + * Note that the FreeType Cache sub-system doesn't recognize module + * property changes. To avoid glyph lookup confusion within the cache + * you should call @FTC_Manager_Reset to completely flush the cache if + * a module property gets changed after @FTC_Manager_New has been + * called. + * + * It is not possible to set properties of the FreeType Cache + * sub-system itself with FT_Property_Set; use @FTC_Property_Set + * instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Set( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + const void* value ); + + + /********************************************************************** + * + * @function: + * FT_Property_Get + * + * @description: + * Get a module's property value. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * @inout: + * value :: + * A generic pointer to a variable or structure that gives the + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example gets property `baz' (a range) in module `foo'. + * + * { + * typedef range_ + * { + * FT_Int32 min; + * FT_Int32 max; + * + * } range; + * + * range baz; + * + * + * FT_Property_Get( library, "foo", "baz", &baz ); + * } + * + * It is not possible to retrieve properties of the FreeType Cache + * sub-system with FT_Property_Get; use @FTC_Property_Get instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Get( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + void* value ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Library */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Library */ + /* structure is created. This function increments the counter. */ + /* @FT_Done_Library then only destroys a library if the counter is~1, */ + /* otherwise it simply decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures that */ + /* reference @FT_Library objects. */ + /* */ + /* <Input> */ + /* library :: A handle to a target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Library( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Library */ + /* */ + /* <Description> */ + /* This function is used to create a new FreeType library instance */ + /* from a given memory object. It is thus possible to use libraries */ + /* with distinct memory allocators within the same program. */ + /* */ + /* Normally, you would call this function (followed by a call to */ + /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ + /* instead of @FT_Init_FreeType to initialize the FreeType library. */ + /* */ + /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ + /* library instance. */ + /* */ + /* <Input> */ + /* memory :: A handle to the original memory object. */ + /* */ + /* <Output> */ + /* alibrary :: A pointer to handle of a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Library */ + /* */ + /* <Description> */ + /* Discard a given library object. This closes all drivers and */ + /* discards all resource objects. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); + + /* */ + + typedef void + (*FT_DebugHook_Func)( void* arg ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Debug_Hook */ + /* */ + /* <Description> */ + /* Set a debug hook function for debugging the interpreter of a font */ + /* format. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* hook_index :: The index of the debug hook. You should use the */ + /* values defined in `ftobjs.h', e.g., */ + /* `FT_DEBUG_HOOK_TRUETYPE'. */ + /* */ + /* debug_hook :: The function used to debug the interpreter. */ + /* */ + /* <Note> */ + /* Currently, four debug hook slots are available, but only two (for */ + /* the TrueType and the Type~1 interpreter) are defined. */ + /* */ + /* Since the internal headers of FreeType are no longer installed, */ + /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ + /* This is a bug and will be fixed in a forthcoming release. */ + /* */ + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Default_Modules */ + /* */ + /* <Description> */ + /* Add the set of default drivers to a given library object. */ + /* This is only useful when you create a library object with */ + /* @FT_New_Library (usually to plug a custom memory manager). */ + /* */ + /* <InOut> */ + /* library :: A handle to a new library object. */ + /* */ + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); + + + + /************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode + * engine is implemented in a given FT_Library instance. It is used + * by the @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * The library implements a bytecode interpreter that doesn't + * support the patented operations of the TrueType virtual machine. + * + * Its main use is to load certain Asian fonts that position and + * scale glyph components with bytecode instructions. It produces + * bad output for most other fonts. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers + * the full instruction set of the TrueType virtual machine (this + * was governed by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ + typedef enum FT_TrueTypeEngineType_ + { + FT_TRUETYPE_ENGINE_TYPE_NONE = 0, + FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, + FT_TRUETYPE_ENGINE_TYPE_PATENTED + + } FT_TrueTypeEngineType; + + + /************************************************************************** + * + * @func: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of + * the TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ + FT_EXPORT( FT_TrueTypeEngineType ) + FT_Get_TrueType_Engine_Type( FT_Library library ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTMODAPI_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftmoderr.h b/lib/linux/include/ftmoderr.h new file mode 100644 index 0000000..5a27db1 --- /dev/null +++ b/lib/linux/include/ftmoderr.h @@ -0,0 +1,194 @@ +/***************************************************************************/ +/* */ +/* ftmoderr.h */ +/* */ +/* FreeType module error offsets (specification). */ +/* */ +/* Copyright 2001-2005, 2010, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the FreeType module error codes. */ + /* */ + /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is */ + /* set, the lower byte of an error value identifies the error code as */ + /* usual. In addition, the higher byte identifies the module. For */ + /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */ + /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error */ + /* `T1_Err_Invalid_File_Format' has value 0x1403, etc. */ + /* */ + /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero, */ + /* including the high byte. */ + /* */ + /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of */ + /* an error value is set to zero. */ + /* */ + /* To hide the various `XXX_Err_' prefixes in the source code, FreeType */ + /* provides some macros in `fttypes.h'. */ + /* */ + /* FT_ERR( err ) */ + /* Add current error module prefix (as defined with the */ + /* `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module */ + /* the line */ + /* */ + /* error = FT_ERR( Invalid_Outline ); */ + /* */ + /* expands to */ + /* */ + /* error = BDF_Err_Invalid_Outline; */ + /* */ + /* For simplicity, you can always use `FT_Err_Ok' directly instead */ + /* of `FT_ERR( Ok )'. */ + /* */ + /* FT_ERR_EQ( errcode, err ) */ + /* FT_ERR_NEQ( errcode, err ) */ + /* Compare error code `errcode' with the error `err' for equality */ + /* and inequality, respectively. Example: */ + /* */ + /* if ( FT_ERR_EQ( error, Invalid_Outline ) ) */ + /* ... */ + /* */ + /* Using this macro you don't have to think about error prefixes. */ + /* Of course, if module errors are not active, the above example is */ + /* the same as */ + /* */ + /* if ( error == FT_Err_Invalid_Outline ) */ + /* ... */ + /* */ + /* FT_ERROR_BASE( errcode ) */ + /* FT_ERROR_MODULE( errcode ) */ + /* Get base error and module error code, respectively. */ + /* */ + /* */ + /* It can also be used to create a module error message table easily */ + /* with something like */ + /* */ + /* { */ + /* #undef __FTMODERR_H__ */ + /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ + /* #define FT_MODERR_START_LIST { */ + /* #define FT_MODERR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int mod_err_offset; */ + /* const char* mod_err_msg */ + /* } ft_mod_errors[] = */ + /* */ + /* #include FT_MODULE_ERRORS_H */ + /* } */ + /* */ + /*************************************************************************/ + + +#ifndef __FTMODERR_H__ +#define __FTMODERR_H__ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) + FT_MODERRDEF( BDF, 0x200, "BDF module" ) + FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) + FT_MODERRDEF( Cache, 0x400, "cache module" ) + FT_MODERRDEF( CFF, 0x500, "CFF module" ) + FT_MODERRDEF( CID, 0x600, "CID module" ) + FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) + FT_MODERRDEF( LZW, 0x800, "LZW module" ) + FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) + FT_MODERRDEF( PCF, 0xA00, "PCF module" ) + FT_MODERRDEF( PFR, 0xB00, "PFR module" ) + FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) + FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) + FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) + FT_MODERRDEF( Raster, 0xF00, "raster module" ) + FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) + FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) + FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) + FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) + FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) + FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* __FTMODERR_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftotval.h b/lib/linux/include/ftotval.h new file mode 100644 index 0000000..75ba03e --- /dev/null +++ b/lib/linux/include/ftotval.h @@ -0,0 +1,204 @@ +/***************************************************************************/ +/* */ +/* ftotval.h */ +/* */ +/* FreeType API for validating OpenType tables (specification). */ +/* */ +/* Copyright 2004-2007, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* */ +/* Warning: This module might be moved to a different library in the */ +/* future to avoid a tight dependency between FreeType and the */ +/* OpenType specification. */ +/* */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOTVAL_H__ +#define __FTOTVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* ot_validation */ + /* */ + /* <Title> */ + /* OpenType Validation */ + /* */ + /* <Abstract> */ + /* An API to validate OpenType tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */ + /* */ + /* <Order> */ + /* FT_OpenType_Validate */ + /* FT_OpenType_Free */ + /* */ + /* FT_VALIDATE_OTXXX */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @description: + * A list of bit-field constants used with @FT_OpenType_Validate to + * indicate which OpenType tables should be validated. + * + * @values: + * FT_VALIDATE_BASE :: + * Validate BASE table. + * + * FT_VALIDATE_GDEF :: + * Validate GDEF table. + * + * FT_VALIDATE_GPOS :: + * Validate GPOS table. + * + * FT_VALIDATE_GSUB :: + * Validate GSUB table. + * + * FT_VALIDATE_JSTF :: + * Validate JSTF table. + * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ +#define FT_VALIDATE_BASE 0x0100 +#define FT_VALIDATE_GDEF 0x0200 +#define FT_VALIDATE_GPOS 0x0400 +#define FT_VALIDATE_GSUB 0x0800 +#define FT_VALIDATE_JSTF 0x1000 +#define FT_VALIDATE_MATH 0x2000 + +#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH + + /********************************************************************** + * + * @function: + * FT_OpenType_Validate + * + * @description: + * Validate various OpenType tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_OTXXX for possible values. + * + * @output: + * BASE_table :: + * A pointer to the BASE table. + * + * GDEF_table :: + * A pointer to the GDEF table. + * + * GPOS_table :: + * A pointer to the GPOS table. + * + * GSUB_table :: + * A pointer to the GSUB table. + * + * JSTF_table :: + * A pointer to the JSTF table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with OpenType fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the five tables with + * @FT_OpenType_Free. A NULL value indicates that the table either + * doesn't exist in the font, or the application hasn't asked for + * validation. + */ + FT_EXPORT( FT_Error ) + FT_OpenType_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *BASE_table, + FT_Bytes *GDEF_table, + FT_Bytes *GPOS_table, + FT_Bytes *GSUB_table, + FT_Bytes *JSTF_table ); + + /********************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ + FT_EXPORT( void ) + FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTOTVAL_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftoutln.h b/lib/linux/include/ftoutln.h new file mode 100644 index 0000000..d3b8fbd --- /dev/null +++ b/lib/linux/include/ftoutln.h @@ -0,0 +1,574 @@ +/***************************************************************************/ +/* */ +/* ftoutln.h */ +/* */ +/* Support for the FT_Outline type used to store glyph shapes of */ +/* most scalable font formats (specification). */ +/* */ +/* Copyright 1996-2003, 2005-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOUTLN_H__ +#define __FTOUTLN_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /* <Title> */ + /* Outline Processing */ + /* */ + /* <Abstract> */ + /* Functions to create, transform, and render vectorial glyph images. */ + /* */ + /* <Description> */ + /* This section contains routines used to create and destroy scalable */ + /* glyph images known as `outlines'. These can also be measured, */ + /* transformed, and converted into bitmaps and pixmaps. */ + /* */ + /* <Order> */ + /* FT_Outline */ + /* FT_Outline_New */ + /* FT_Outline_Done */ + /* FT_Outline_Copy */ + /* FT_Outline_Translate */ + /* FT_Outline_Transform */ + /* FT_Outline_Embolden */ + /* FT_Outline_EmboldenXY */ + /* FT_Outline_Reverse */ + /* FT_Outline_Check */ + /* */ + /* FT_Outline_Get_CBox */ + /* FT_Outline_Get_BBox */ + /* */ + /* FT_Outline_Get_Bitmap */ + /* FT_Outline_Render */ + /* FT_Outline_Decompose */ + /* FT_Outline_Funcs */ + /* FT_Outline_MoveToFunc */ + /* FT_Outline_LineToFunc */ + /* FT_Outline_ConicToFunc */ + /* FT_Outline_CubicToFunc */ + /* */ + /* FT_Orientation */ + /* FT_Outline_Get_Orientation */ + /* */ + /* FT_OUTLINE_XXX */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Decompose */ + /* */ + /* <Description> */ + /* Walk over an outline's structure to decompose it into individual */ + /* segments and Bézier arcs. This function also emits `move to' */ + /* operations to indicate the start of new contours in the outline. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source target. */ + /* */ + /* func_interface :: A table of `emitters', i.e., function pointers */ + /* called during decomposition to indicate path */ + /* operations. */ + /* */ + /* <InOut> */ + /* user :: A typeless pointer that is passed to each */ + /* emitter during the decomposition. It can be */ + /* used to store the state during the */ + /* decomposition. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* A contour that contains a single point only is represented by a */ + /* `move to' operation followed by `line to' to the same point. In */ + /* most cases, it is best to filter this out before using the */ + /* outline for stroking purposes (otherwise it would result in a */ + /* visible dot when round caps are used). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_New */ + /* */ + /* <Description> */ + /* Create a new outline of a given size. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object from where the */ + /* outline is allocated. Note however that the new */ + /* outline will *not* necessarily be *freed*, when */ + /* destroying the library, by @FT_Done_FreeType. */ + /* */ + /* numPoints :: The maximum number of points within the outline. */ + /* Must be smaller than or equal to 0xFFFF (65535). */ + /* */ + /* numContours :: The maximum number of contours within the outline. */ + /* This value must be in the range 0 to `numPoints'. */ + /* */ + /* <Output> */ + /* anoutline :: A handle to the new outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' parameter is simply */ + /* to use the library's memory allocator. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_New_Internal( FT_Memory memory, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Done */ + /* */ + /* <Description> */ + /* Destroy an outline created with @FT_Outline_New. */ + /* */ + /* <Input> */ + /* library :: A handle of the library object used to allocate the */ + /* outline. */ + /* */ + /* outline :: A pointer to the outline object to be discarded. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the outline's `owner' field is not set, only the outline */ + /* descriptor will be released. */ + /* */ + /* The reason why this function takes an `library' parameter is */ + /* simply to use ft_mem_free(). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Check */ + /* */ + /* <Description> */ + /* Check the contents of an outline descriptor. */ + /* */ + /* <Input> */ + /* outline :: A handle to a source outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_CBox */ + /* */ + /* <Description> */ + /* Return an outline's `control box'. The control box encloses all */ + /* the outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* that contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component, which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <Output> */ + /* acbox :: The outline's control box. */ + /* */ + /* <Note> */ + /* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Translate */ + /* */ + /* <Description> */ + /* Apply a simple translation to the points of an outline. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* xOffset :: The horizontal offset. */ + /* */ + /* yOffset :: The vertical offset. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Copy */ + /* */ + /* <Description> */ + /* Copy an outline into another one. Both objects must have the */ + /* same sizes (number of points & number of contours) when this */ + /* function is called. */ + /* */ + /* <Input> */ + /* source :: A handle to the source outline. */ + /* */ + /* <Output> */ + /* target :: A handle to the target outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Transform */ + /* */ + /* <Description> */ + /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ + /* for applying rotations, slanting, flipping, etc. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation matrix. */ + /* */ + /* <Note> */ + /* You can use @FT_Outline_Translate if you need to translate the */ + /* outline's points. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Embolden */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be at most 4~times */ + /* `strength' pixels wider and higher. You may think of the left and */ + /* bottom borders as unchanged. */ + /* */ + /* Negative `strength' values to reduce the outline thickness are */ + /* possible also. */ + /* */ + /* <InOut> */ + /* outline :: A handle to the target outline. */ + /* */ + /* <Input> */ + /* strength :: How strong the glyph is emboldened. Expressed in */ + /* 26.6 pixel format. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The used algorithm to increase or decrease the thickness of the */ + /* glyph doesn't change the number of points; this means that certain */ + /* situations like acute angles or intersections are sometimes */ + /* handled incorrectly. */ + /* */ + /* If you need `better' metrics values you should call */ + /* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */ + /* */ + /* Example call: */ + /* */ + /* { */ + /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ + /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ + /* FT_Outline_Embolden( &face->slot->outline, strength ); */ + /* } */ + /* */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_EmboldenXY */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be `xstrength' pixels */ + /* wider and `ystrength' pixels higher. Otherwise, it is similar to */ + /* @FT_Outline_Embolden, which uses the same strength in both */ + /* directions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_EmboldenXY( FT_Outline* outline, + FT_Pos xstrength, + FT_Pos ystrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Reverse */ + /* */ + /* <Description> */ + /* Reverse the drawing direction of an outline. This is used to */ + /* ensure consistent fill conventions for mirrored glyphs. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Note> */ + /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ + /* the outline's `flags' field. */ + /* */ + /* It shouldn't be used by a normal client application, unless it */ + /* knows what it is doing. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_Bitmap */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap. The outline's image is simply */ + /* OR-ed to the target bitmap. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the target bitmap descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does NOT CREATE the bitmap, it only renders an */ + /* outline image within the one you pass to it! Consequently, the */ + /* various fields in `abitmap' should be set accordingly. */ + /* */ + /* It will use the raster corresponding to the default glyph format. */ + /* */ + /* The value of the `num_grays' field in `abitmap' is ignored. If */ + /* you select the gray-level rasterizer, and you want less than 256 */ + /* gray levels, you have to use @FT_Outline_Render directly. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Render */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap using the current scan-convert. */ + /* This function uses an @FT_Raster_Params structure as an argument, */ + /* allowing advanced features like direct composition, translucency, */ + /* etc. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* describe the rendering operation. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should know what you are doing and how @FT_Raster_Params works */ + /* to use this function. */ + /* */ + /* The field `params.source' will be set to `outline' before the scan */ + /* converter is called, which means that the value you give to it is */ + /* actually ignored. */ + /* */ + /* The gray-level rasterizer always uses 256 gray levels. If you */ + /* want less gray levels, you have to provide your own span callback. */ + /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ + /* @FT_Raster_Params structure for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + + /************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must + * be filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise contours + * must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ + typedef enum FT_Orientation_ + { + FT_ORIENTATION_TRUETYPE = 0, + FT_ORIENTATION_POSTSCRIPT = 1, + FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, + FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, + FT_ORIENTATION_NONE + + } FT_Orientation; + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its + * fill orientation (see @FT_Orientation). This is done by integrating + * the total area covered by the outline. The positive integral + * corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT + * is returned. The negative integral corresponds to the counter-clockwise + * orientation and @FT_ORIENTATION_TRUETYPE is returned. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ + FT_EXPORT( FT_Orientation ) + FT_Outline_Get_Orientation( FT_Outline* outline ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTOUTLN_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/linux/include/ftpfr.h b/lib/linux/include/ftpfr.h new file mode 100644 index 0000000..7d50353 --- /dev/null +++ b/lib/linux/include/ftpfr.h @@ -0,0 +1,172 @@ +/***************************************************************************/ +/* */ +/* ftpfr.h */ +/* */ +/* FreeType API for accessing PFR-specific data (specification only). */ +/* */ +/* Copyright 2002, 2003, 2004, 2006, 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTPFR_H__ +#define __FTPFR_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* pfr_fonts */ + /* */ + /* <Title> */ + /* PFR Fonts */ + /* */ + /* <Abstract> */ + /* PFR/TrueDoc specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of PFR-specific functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed + * in metrics units to device sub-pixels. This is equivalent to + * `face->size->x_scale', but for metrics only. Optional (parameter + * can be NULL). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale' but for the vertical direction. + * optional (parameter can be NULL). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: A handle to the input face. + * + * left :: Index of the left glyph. + * + * right :: Index of the right glyph. + * + * @output: + * avector :: A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics + * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED + * mode, which always returns distances converted to outline units. + * + * You can use the value of the `x_scale' and `y_scale' parameters + * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: A handle to the input face. + * + * gindex :: The glyph index. + * + * @output: + * aadvance :: The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics + * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTPFR_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftrender.h b/lib/linux/include/ftrender.h new file mode 100644 index 0000000..e8d3636 --- /dev/null +++ b/lib/linux/include/ftrender.h @@ -0,0 +1,237 @@ +/***************************************************************************/ +/* */ +/* ftrender.h */ +/* */ +/* FreeType renderer modules public interface (specification). */ +/* */ +/* Copyright 1996-2001, 2005, 2006, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTRENDER_H__ +#define __FTRENDER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + + /* create a new glyph object */ + typedef FT_Error + (*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + + /* destroys a given glyph object */ + typedef void + (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); + + typedef void + (*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + typedef void + (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + +/* deprecated */ +#define FT_Glyph_Init_Func FT_Glyph_InitFunc +#define FT_Glyph_Done_Func FT_Glyph_DoneFunc +#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc +#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc +#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc +#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc + + + struct FT_Glyph_Class_ + { + FT_Long glyph_size; + FT_Glyph_Format glyph_format; + FT_Glyph_InitFunc glyph_init; + FT_Glyph_DoneFunc glyph_done; + FT_Glyph_CopyFunc glyph_copy; + FT_Glyph_TransformFunc glyph_transform; + FT_Glyph_GetBBoxFunc glyph_bbox; + FT_Glyph_PrepareFunc glyph_prepare; + }; + + + typedef FT_Error + (*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode, + const FT_Vector* origin ); + + typedef FT_Error + (*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + typedef void + (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + + typedef FT_Error + (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + +/* deprecated identifiers */ +#define FTRenderer_render FT_Renderer_RenderFunc +#define FTRenderer_transform FT_Renderer_TransformFunc +#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc +#define FTRenderer_setMode FT_Renderer_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Renderer_Class */ + /* */ + /* <Description> */ + /* The renderer module class descriptor. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Module_Class fields. */ + /* */ + /* glyph_format :: The glyph image format this renderer handles. */ + /* */ + /* render_glyph :: A method used to render the image that is in a */ + /* given glyph slot into a bitmap. */ + /* */ + /* transform_glyph :: A method used to transform the image that is in */ + /* a given glyph slot. */ + /* */ + /* get_glyph_cbox :: A method used to access the glyph's cbox. */ + /* */ + /* set_mode :: A method used to pass additional parameters. */ + /* */ + /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ + /* This is a pointer to its raster's class. */ + /* */ + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FT_Renderer_RenderFunc render_glyph; + FT_Renderer_TransformFunc transform_glyph; + FT_Renderer_GetCBoxFunc get_glyph_cbox; + FT_Renderer_SetModeFunc set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Renderer */ + /* */ + /* <Description> */ + /* Retrieve the current renderer for a given glyph format. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* format :: The glyph format. */ + /* */ + /* <Return> */ + /* A renderer handle. 0~if none found. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ + /* renderer by its name, use @FT_Get_Module. */ + /* */ + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Renderer */ + /* */ + /* <Description> */ + /* Set the current renderer to use, and set additional mode. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* renderer :: A handle to the renderer object. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* parameters :: Additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case of success, the renderer will be used to convert glyph */ + /* images in the renderer's known format into bitmaps. */ + /* */ + /* This doesn't change the current renderer for other formats. */ + /* */ + /* Currently, only the B/W renderer, if compiled with */ + /* FT_RASTER_OPTION_ANTI_ALIASING (providing a 5-levels */ + /* anti-aliasing mode; this option must be set directly in */ + /* `ftraster.c' and is undefined by default) accepts a single tag */ + /* `pal5' to set its gray palette as a character string with */ + /* 5~elements. Consequently, the third and fourth argument are zero */ + /* normally. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTRENDER_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftsizes.h b/lib/linux/include/ftsizes.h new file mode 100644 index 0000000..4167045 --- /dev/null +++ b/lib/linux/include/ftsizes.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftsizes.h */ +/* */ +/* FreeType size objects management (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2004, 2006, 2009, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Typical application would normally not need to use these functions. */ + /* However, they have been placed in a public API for the rare cases */ + /* where they are needed. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSIZES_H__ +#define __FTSIZES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sizes_management */ + /* */ + /* <Title> */ + /* Size Management */ + /* */ + /* <Abstract> */ + /* Managing multiple sizes per face. */ + /* */ + /* <Description> */ + /* When creating a new face object (e.g., with @FT_New_Face), an */ + /* @FT_Size object is automatically created and used to store all */ + /* pixel-size dependent information, available in the `face->size' */ + /* field. */ + /* */ + /* It is however possible to create more sizes for a given face, */ + /* mostly in order to manage several character pixel sizes of the */ + /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ + /* */ + /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ + /* modify the contents of the current `active' size; you thus need */ + /* to use @FT_Activate_Size to change it. */ + /* */ + /* 99% of applications won't need the functions provided here, */ + /* especially if they use the caching sub-system, so be cautious */ + /* when using these. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Size */ + /* */ + /* <Description> */ + /* Create a new size object from a given face object. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* asize :: A handle to a new size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You need to call @FT_Activate_Size in order to select the new size */ + /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ + /* @FT_Load_Glyph, @FT_Load_Char, etc. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Size */ + /* */ + /* <Description> */ + /* Discard a given size object. Note that @FT_Done_Face */ + /* automatically discards all size objects allocated with */ + /* @FT_New_Size. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Activate_Size */ + /* */ + /* <Description> */ + /* Even though it is possible to create several size objects for a */ + /* given face (see @FT_New_Size for details), functions like */ + /* @FT_Load_Glyph or @FT_Load_Char only use the one that has been */ + /* activated last to determine the `current character pixel size'. */ + /* */ + /* This function can be used to `activate' a previously created size */ + /* object. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If `face' is the size's parent face object, this function changes */ + /* the value of `face->size' to the input size handle. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSIZES_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftsnames.h b/lib/linux/include/ftsnames.h new file mode 100644 index 0000000..88af440 --- /dev/null +++ b/lib/linux/include/ftsnames.h @@ -0,0 +1,200 @@ +/***************************************************************************/ +/* */ +/* ftsnames.h */ +/* */ +/* Simple interface to access SFNT name tables (which are used */ +/* to hold font names, copyright info, notices, etc.) (specification). */ +/* */ +/* This is _not_ used to retrieve glyph names! */ +/* */ +/* Copyright 1996-2003, 2006, 2009, 2010, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_SFNT_NAMES_H__ +#define __FT_SFNT_NAMES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sfnt_names */ + /* */ + /* <Title> */ + /* SFNT Names */ + /* */ + /* <Abstract> */ + /* Access the names embedded in TrueType and OpenType files. */ + /* */ + /* <Description> */ + /* The TrueType and OpenType specifications allow the inclusion of */ + /* a special `names table' in font files. This table contains */ + /* textual (and internationalized) information regarding the font, */ + /* like family name, copyright, version, etc. */ + /* */ + /* The definitions below are used to access them if available. */ + /* */ + /* Note that this has nothing to do with glyph names! */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SfntName */ + /* */ + /* <Description> */ + /* A structure used to model an SFNT `name' table entry. */ + /* */ + /* <Fields> */ + /* platform_id :: The platform ID for `string'. */ + /* */ + /* encoding_id :: The encoding ID for `string'. */ + /* */ + /* language_id :: The language ID for `string'. */ + /* */ + /* name_id :: An identifier for `string'. */ + /* */ + /* string :: The `name' string. Note that its format differs */ + /* depending on the (platform,encoding) pair. It can */ + /* be a Pascal String, a UTF-16 one, etc. */ + /* */ + /* Generally speaking, the string is not */ + /* zero-terminated. Please refer to the TrueType */ + /* specification for details. */ + /* */ + /* string_len :: The length of `string' in bytes. */ + /* */ + /* <Note> */ + /* Possible values for `platform_id', `encoding_id', `language_id', */ + /* and `name_id' are given in the file `ttnameid.h'. For details */ + /* please refer to the TrueType or OpenType specification. */ + /* */ + /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ + /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ + /* */ + typedef struct FT_SfntName_ + { + FT_UShort platform_id; + FT_UShort encoding_id; + FT_UShort language_id; + FT_UShort name_id; + + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntName; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name_Count */ + /* */ + /* <Description> */ + /* Retrieve the number of name strings in the SFNT `name' table. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Return> */ + /* The number of strings in the `name' table. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name */ + /* */ + /* <Description> */ + /* Retrieve a string of the SFNT `name' table for a given index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* idx :: The index of the `name' string. */ + /* */ + /* <Output> */ + /* aname :: The indexed @FT_SfntName structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `string' array returned in the `aname' structure is not */ + /* null-terminated. The application should deallocate it if it is no */ + /* longer in use. */ + /* */ + /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ + /* `name' table entries, then do a loop until you get the right */ + /* platform, encoding, and name ID. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred family subfamily names in `name' + * table since OpenType version 1.4. For backwards compatibility with + * legacy systems that have a 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred subfamily names in `name' table since + * OpenType version 1.4. For backwards compatibility with legacy + * systems that have a 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FT_SFNT_NAMES_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftstroke.h b/lib/linux/include/ftstroke.h new file mode 100644 index 0000000..bd31170 --- /dev/null +++ b/lib/linux/include/ftstroke.h @@ -0,0 +1,785 @@ +/***************************************************************************/ +/* */ +/* ftstroke.h */ +/* */ +/* FreeType path stroker (specification). */ +/* */ +/* Copyright 2002-2006, 2008, 2009, 2011-2012, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_STROKE_H__ +#define __FT_STROKE_H__ + +#include <ft2build.h> +#include FT_OUTLINE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************ + * + * @section: + * glyph_stroker + * + * @title: + * Glyph Stroker + * + * @abstract: + * Generating bordered and stroked glyphs. + * + * @description: + * This component generates stroked outlines of a given vectorial + * glyph. It also allows you to retrieve the `outside' and/or the + * `inside' borders of the stroke. + * + * This can be useful to generate `bordered' glyph, i.e., glyphs + * displayed with a coloured (and anti-aliased) border around their + * shape. + * + * @order: + * FT_Stroker + * + * FT_Stroker_LineJoin + * FT_Stroker_LineCap + * FT_StrokerBorder + * + * FT_Outline_GetInsideBorder + * FT_Outline_GetOutsideBorder + * + * FT_Glyph_Stroke + * FT_Glyph_StrokeBorder + * + * FT_Stroker_New + * FT_Stroker_Set + * FT_Stroker_Rewind + * FT_Stroker_ParseOutline + * FT_Stroker_Done + * + * FT_Stroker_BeginSubPath + * FT_Stroker_EndSubPath + * + * FT_Stroker_LineTo + * FT_Stroker_ConicTo + * FT_Stroker_CubicTo + * + * FT_Stroker_GetBorderCounts + * FT_Stroker_ExportBorder + * FT_Stroker_GetCounts + * FT_Stroker_Export + * + */ + + + /************************************************************** + * + * @type: + * FT_Stroker + * + * @description: + * Opaque handle to a path stroker object. + */ + typedef struct FT_StrokerRec_* FT_Stroker; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineJoin + * + * @description: + * These values determine how two joining lines are rendered + * in a stroker. + * + * @values: + * FT_STROKER_LINEJOIN_ROUND :: + * Used to render rounded line joins. Circular arcs are used + * to join two lines smoothly. + * + * FT_STROKER_LINEJOIN_BEVEL :: + * Used to render beveled line joins. The outer corner of + * the joined lines is filled by enclosing the triangular + * region of the corner with a straight line between the + * outer corners of each stroke. + * + * FT_STROKER_LINEJOIN_MITER_FIXED :: + * Used to render mitered line joins, with fixed bevels if the + * miter limit is exceeded. The outer edges of the strokes + * for the two segments are extended until they meet at an + * angle. If the segments meet at too sharp an angle (such + * that the miter would extend from the intersection of the + * segments a distance greater than the product of the miter + * limit value and the border radius), then a bevel join (see + * above) is used instead. This prevents long spikes being + * created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter + * line join as used in PostScript and PDF. + * + * FT_STROKER_LINEJOIN_MITER_VARIABLE :: + * FT_STROKER_LINEJOIN_MITER :: + * Used to render mitered line joins, with variable bevels if + * the miter limit is exceeded. The intersection of the + * strokes is clipped at a line perpendicular to the bisector + * of the angle between the strokes, at the distance from the + * intersection of the segments equal to the product of the + * miter limit value and the border radius. This prevents + * long spikes being created. + * FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line + * join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias + * for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for + * backwards compatibility. + */ + typedef enum FT_Stroker_LineJoin_ + { + FT_STROKER_LINEJOIN_ROUND = 0, + FT_STROKER_LINEJOIN_BEVEL = 1, + FT_STROKER_LINEJOIN_MITER_VARIABLE = 2, + FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE, + FT_STROKER_LINEJOIN_MITER_FIXED = 3 + + } FT_Stroker_LineJoin; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineCap + * + * @description: + * These values determine how the end of opened sub-paths are + * rendered in a stroke. + * + * @values: + * FT_STROKER_LINECAP_BUTT :: + * The end of lines is rendered as a full stop on the last + * point itself. + * + * FT_STROKER_LINECAP_ROUND :: + * The end of lines is rendered as a half-circle around the + * last point. + * + * FT_STROKER_LINECAP_SQUARE :: + * The end of lines is rendered as a square around the + * last point. + */ + typedef enum FT_Stroker_LineCap_ + { + FT_STROKER_LINECAP_BUTT = 0, + FT_STROKER_LINECAP_ROUND, + FT_STROKER_LINECAP_SQUARE + + } FT_Stroker_LineCap; + + + /************************************************************** + * + * @enum: + * FT_StrokerBorder + * + * @description: + * These values are used to select a given stroke border + * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * + * @values: + * FT_STROKER_BORDER_LEFT :: + * Select the left border, relative to the drawing direction. + * + * FT_STROKER_BORDER_RIGHT :: + * Select the right border, relative to the drawing direction. + * + * @note: + * Applications are generally interested in the `inside' and `outside' + * borders. However, there is no direct mapping between these and the + * `left' and `right' ones, since this really depends on the glyph's + * drawing orientation, which varies between font formats. + * + * You can however use @FT_Outline_GetInsideBorder and + * @FT_Outline_GetOutsideBorder to get these. + */ + typedef enum FT_StrokerBorder_ + { + FT_STROKER_BORDER_LEFT = 0, + FT_STROKER_BORDER_RIGHT + + } FT_StrokerBorder; + + + /************************************************************** + * + * @function: + * FT_Outline_GetInsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `inside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetInsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Outline_GetOutsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `outside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetOutsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_New + * + * @description: + * Create a new stroker object. + * + * @input: + * library :: + * FreeType library handle. + * + * @output: + * astroker :: + * A new stroker object handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_New( FT_Library library, + FT_Stroker *astroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Set + * + * @description: + * Reset a stroker object's attributes. + * + * @input: + * stroker :: + * The target stroker handle. + * + * radius :: + * The border radius. + * + * line_cap :: + * The line cap style. + * + * line_join :: + * The line join style. + * + * miter_limit :: + * The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and + * FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles, + * expressed as 16.16 fixed-point value. + * + * @note: + * The radius is expressed in the same units as the outline + * coordinates. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( void ) + FT_Stroker_Set( FT_Stroker stroker, + FT_Fixed radius, + FT_Stroker_LineCap line_cap, + FT_Stroker_LineJoin line_join, + FT_Fixed miter_limit ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Rewind + * + * @description: + * Reset a stroker object without changing its attributes. + * You should call this function before beginning a new + * series of calls to @FT_Stroker_BeginSubPath or + * @FT_Stroker_EndSubPath. + * + * @input: + * stroker :: + * The target stroker handle. + */ + FT_EXPORT( void ) + FT_Stroker_Rewind( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ParseOutline + * + * @description: + * A convenience function used to parse a whole outline with + * the stroker. The resulting outline(s) can be retrieved + * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The source outline. + * + * opened :: + * A boolean. If~1, the outline is treated as an open path instead + * of a closed one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `opened' is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct `border' outlines. + * + * If `opened' is~1, the outline is processed as an open path, and the + * stroker generates a single `stroke' outline. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ParseOutline( FT_Stroker stroker, + FT_Outline* outline, + FT_Bool opened ); + + + /************************************************************** + * + * @function: + * FT_Stroker_BeginSubPath + * + * @description: + * Start a new sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the start vector. + * + * open :: + * A boolean. If~1, the sub-path is treated as an open one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is useful when you need to stroke a path that is + * not stored as an @FT_Outline object. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_BeginSubPath( FT_Stroker stroker, + FT_Vector* to, + FT_Bool open ); + + + /************************************************************** + * + * @function: + * FT_Stroker_EndSubPath + * + * @description: + * Close the current sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function after @FT_Stroker_BeginSubPath. + * If the subpath was not `opened', this function `draws' a + * single line segment to the start position when needed. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_EndSubPath( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_LineTo + * + * @description: + * `Draw' a single line segment in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_LineTo( FT_Stroker stroker, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ConicTo + * + * @description: + * `Draw' a single quadratic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control :: + * A pointer to a Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ConicTo( FT_Stroker stroker, + FT_Vector* control, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_CubicTo + * + * @description: + * `Draw' a single cubic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control1 :: + * A pointer to the first Bézier control point. + * + * control2 :: + * A pointer to second Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_CubicTo( FT_Stroker stroker, + FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetBorderCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export one of the `border' or `stroke' + * outlines generated by the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_GetCounts instead if you want to + * retrieve the counts associated to both borders. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetBorderCounts( FT_Stroker stroker, + FT_StrokerBorder border, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ExportBorder + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export the corresponding border to your own @FT_Outline + * structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * outline :: + * The target outline handle. + * + * @note: + * Always call this function after @FT_Stroker_GetBorderCounts to + * get sure that there is enough room in your @FT_Outline object to + * receive all new data. + * + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_Export instead if you want to + * retrieve all borders at once. + */ + FT_EXPORT( void ) + FT_Stroker_ExportBorder( FT_Stroker stroker, + FT_StrokerBorder border, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export all points/borders from the stroked + * outline/path. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetCounts( FT_Stroker stroker, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Export + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export all borders to your own @FT_Outline structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The target outline handle. + */ + FT_EXPORT( void ) + FT_Stroker_Export( FT_Stroker stroker, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Done + * + * @description: + * Destroy a stroker object. + * + * @input: + * stroker :: + * A stroker handle. Can be NULL. + */ + FT_EXPORT( void ) + FT_Stroker_Done( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Glyph_Stroke + * + * @description: + * Stroke a given outline glyph object with a given stroker. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Stroke( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool destroy ); + + + /************************************************************** + * + * @function: + * FT_Glyph_StrokeBorder + * + * @description: + * Stroke a given outline glyph object with a given stroker, but + * only return either its inside or outside border. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * inside :: + * A Boolean. If~1, return the inside border, otherwise + * the outside border. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_StrokeBorder( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool inside, + FT_Bool destroy ); + + /* */ + +FT_END_HEADER + +#endif /* __FT_STROKE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/linux/include/ftsynth.h b/lib/linux/include/ftsynth.h new file mode 100644 index 0000000..d0ea730 --- /dev/null +++ b/lib/linux/include/ftsynth.h @@ -0,0 +1,82 @@ +/***************************************************************************/ +/* */ +/* ftsynth.h */ +/* */ +/* FreeType synthesizing code for emboldening and slanting */ +/* (specification). */ +/* */ +/* Copyright 2000-2001, 2003, 2006, 2008, 2012, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /********* *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ + /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ + /********* FREETYPE DEVELOPMENT TEAM *********/ + /********* *********/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* Main reason for not lifting the functions in this module to a */ + /* `standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource that should be copied into the application and */ + /* adapted to the particular needs. */ + + +#ifndef __FTSYNTH_H__ +#define __FTSYNTH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the height, width, and advance metrics are */ + /* increased by the strength of the emboldening. You can also call */ + /* @FT_Outline_Get_CBox to get precise values. */ + FT_EXPORT( void ) + FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + + /* Slant an outline glyph to the right by about 12 degrees. */ + FT_EXPORT( void ) + FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYNTH_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftsystem.h b/lib/linux/include/ftsystem.h new file mode 100644 index 0000000..7436ed2 --- /dev/null +++ b/lib/linux/include/ftsystem.h @@ -0,0 +1,355 @@ +/***************************************************************************/ +/* */ +/* ftsystem.h */ +/* */ +/* FreeType low-level system interface definition (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2005, 2010, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSYSTEM_H__ +#define __FTSYSTEM_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* system_interface */ + /* */ + /* <Title> */ + /* System Interface */ + /* */ + /* <Abstract> */ + /* How FreeType manages memory and i/o. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to memory */ + /* management and i/o access. You need to understand this */ + /* information if you want to use a custom memory manager or you own */ + /* i/o streams. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* M E M O R Y M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Memory + * + * @description: + * A handle to a given memory manager object, defined with an + * @FT_MemoryRec structure. + * + */ + typedef struct FT_MemoryRec_* FT_Memory; + + + /************************************************************************* + * + * @functype: + * FT_Alloc_Func + * + * @description: + * A function used to allocate `size' bytes from `memory'. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * size :: + * The size in bytes to allocate. + * + * @return: + * Address of new memory block. 0~in case of failure. + * + */ + typedef void* + (*FT_Alloc_Func)( FT_Memory memory, + long size ); + + + /************************************************************************* + * + * @functype: + * FT_Free_Func + * + * @description: + * A function used to release a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * block :: + * The address of the target memory block. + * + */ + typedef void + (*FT_Free_Func)( FT_Memory memory, + void* block ); + + + /************************************************************************* + * + * @functype: + * FT_Realloc_Func + * + * @description: + * A function used to re-allocate a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * cur_size :: + * The block's current size in bytes. + * + * new_size :: + * The block's requested new size. + * + * block :: + * The block's current address. + * + * @return: + * New block address. 0~in case of memory shortage. + * + * @note: + * In case of error, the old block must still be available. + * + */ + typedef void* + (*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + + /************************************************************************* + * + * @struct: + * FT_MemoryRec + * + * @description: + * A structure used to describe a given memory manager to FreeType~2. + * + * @fields: + * user :: + * A generic typeless pointer for user data. + * + * alloc :: + * A pointer type to an allocation function. + * + * free :: + * A pointer type to an memory freeing function. + * + * realloc :: + * A pointer type to a reallocation function. + * + */ + struct FT_MemoryRec_ + { + void* user; + FT_Alloc_Func alloc; + FT_Free_Func free; + FT_Realloc_Func realloc; + }; + + + /*************************************************************************/ + /* */ + /* I / O M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Stream + * + * @description: + * A handle to an input stream. + * + * @also: + * See @FT_StreamRec for the publicly accessible fields of a given + * stream object. + * + */ + typedef struct FT_StreamRec_* FT_Stream; + + + /************************************************************************* + * + * @struct: + * FT_StreamDesc + * + * @description: + * A union type used to store either a long or a pointer. This is used + * to store a file descriptor or a `FILE*' in an input stream. + * + */ + typedef union FT_StreamDesc_ + { + long value; + void* pointer; + + } FT_StreamDesc; + + + /************************************************************************* + * + * @functype: + * FT_Stream_IoFunc + * + * @description: + * A function used to seek and read data from a given input stream. + * + * @input: + * stream :: + * A handle to the source stream. + * + * offset :: + * The offset of read in stream (always from start). + * + * buffer :: + * The address of the read buffer. + * + * count :: + * The number of bytes to read from the stream. + * + * @return: + * The number of bytes effectively read by the stream. + * + * @note: + * This function might be called to perform a seek or skip operation + * with a `count' of~0. A non-zero return value then indicates an + * error. + * + */ + typedef unsigned long + (*FT_Stream_IoFunc)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + + /************************************************************************* + * + * @functype: + * FT_Stream_CloseFunc + * + * @description: + * A function used to close a given input stream. + * + * @input: + * stream :: + * A handle to the target stream. + * + */ + typedef void + (*FT_Stream_CloseFunc)( FT_Stream stream ); + + + /************************************************************************* + * + * @struct: + * FT_StreamRec + * + * @description: + * A structure used to describe an input stream. + * + * @input: + * base :: + * For memory-based streams, this is the address of the first stream + * byte in memory. This field should always be set to NULL for + * disk-based streams. + * + * size :: + * The stream size in bytes. + * + * In case of compressed streams where the size is unknown before + * actually doing the decompression, the value is set to 0x7FFFFFFF. + * (Note that this size value can occur for normal streams also; it is + * thus just a hint.) + * + * pos :: + * The current position within the stream. + * + * descriptor :: + * This field is a union that can hold an integer or a pointer. It is + * used by stream implementations to store file descriptors or `FILE*' + * pointers. + * + * pathname :: + * This field is completely ignored by FreeType. However, it is often + * useful during debugging to use it to store the stream's filename + * (where available). + * + * read :: + * The stream's input function. + * + * close :: + * The stream's close function. + * + * memory :: + * The memory manager to use to preload frames. This is set + * internally by FreeType and shouldn't be touched by stream + * implementations. + * + * cursor :: + * This field is set and used internally by FreeType when parsing + * frames. + * + * limit :: + * This field is set and used internally by FreeType when parsing + * frames. + * + */ + typedef struct FT_StreamRec_ + { + unsigned char* base; + unsigned long size; + unsigned long pos; + + FT_StreamDesc descriptor; + FT_StreamDesc pathname; + FT_Stream_IoFunc read; + FT_Stream_CloseFunc close; + + FT_Memory memory; + unsigned char* cursor; + unsigned char* limit; + + } FT_StreamRec; + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYSTEM_H__ */ + + +/* END */ diff --git a/lib/linux/include/fttrigon.h b/lib/linux/include/fttrigon.h new file mode 100644 index 0000000..9c7b543 --- /dev/null +++ b/lib/linux/include/fttrigon.h @@ -0,0 +1,350 @@ +/***************************************************************************/ +/* */ +/* fttrigon.h */ +/* */ +/* FreeType trigonometric functions (specification). */ +/* */ +/* Copyright 2001, 2003, 2005, 2007, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTRIGON_H__ +#define __FTTRIGON_H__ + +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Angle + * + * @description: + * This type is used to model angle values in FreeType. Note that the + * angle is a 16.16 fixed-point value expressed in degrees. + * + */ + typedef FT_Fixed FT_Angle; + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI + * + * @description: + * The angle pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI ( 180L << 16 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_2PI + * + * @description: + * The angle 2*pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI2 + * + * @description: + * The angle pi/2 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI4 + * + * @description: + * The angle pi/4 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) + + + /************************************************************************* + * + * @function: + * FT_Sin + * + * @description: + * Return the sinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The sinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Sin( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Cos + * + * @description: + * Return the cosinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The cosinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Cos( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Tan + * + * @description: + * Return the tangent of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The tangent value. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Tan( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Atan2 + * + * @description: + * Return the arc-tangent corresponding to a given vector (x,y) in + * the 2d plane. + * + * @input: + * x :: + * The horizontal vector coordinate. + * + * y :: + * The vertical vector coordinate. + * + * @return: + * The arc-tangent value (i.e. angle). + * + */ + FT_EXPORT( FT_Angle ) + FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + + /************************************************************************* + * + * @function: + * FT_Angle_Diff + * + * @description: + * Return the difference between two angles. The result is always + * constrained to the ]-PI..PI] interval. + * + * @input: + * angle1 :: + * First angle. + * + * angle2 :: + * Second angle. + * + * @return: + * Constrained value of `value2-value1'. + * + */ + FT_EXPORT( FT_Angle ) + FT_Angle_Diff( FT_Angle angle1, + FT_Angle angle2 ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Unit + * + * @description: + * Return the unit vector corresponding to a given angle. After the + * call, the value of `vec.x' will be `sin(angle)', and the value of + * `vec.y' will be `cos(angle)'. + * + * This function is useful to retrieve both the sinus and cosinus of a + * given angle quickly. + * + * @output: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Rotate + * + * @description: + * Rotate a vector by a given angle. + * + * @inout: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Length + * + * @description: + * Return the length of a given vector. + * + * @input: + * vec :: + * The address of target vector. + * + * @return: + * The vector length, expressed in the same units that the original + * vector coordinates. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Polarize + * + * @description: + * Compute both the length and angle of a given vector. + * + * @input: + * vec :: + * The address of source vector. + * + * @output: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_From_Polar + * + * @description: + * Compute vector coordinates from a length and angle. + * + * @output: + * vec :: + * The address of source vector. + * + * @input: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_From_Polar( FT_Vector* vec, + FT_Fixed length, + FT_Angle angle ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTTRIGON_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftttdrv.h b/lib/linux/include/ftttdrv.h new file mode 100644 index 0000000..3588413 --- /dev/null +++ b/lib/linux/include/ftttdrv.h @@ -0,0 +1,170 @@ +/***************************************************************************/ +/* */ +/* ftttdrv.h */ +/* */ +/* FreeType API for controlling the TrueType driver */ +/* (specification only). */ +/* */ +/* Copyright 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTTDRV_H__ +#define __FTTTDRV_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * tt_driver + * + * @title: + * The TrueType driver + * + * @abstract: + * Controlling the TrueType driver module. + * + * @description: + * While FreeType's TrueType driver doesn't expose API functions by + * itself, it is possible to control its behaviour with @FT_Property_Set + * and @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * The TrueType driver's module name is `truetype'. + * + */ + + + /************************************************************************** + * + * @property: + * interpreter-version + * + * @description: + * Currently, two versions are available, representing the bytecode + * interpreter with and without subpixel hinting support, + * respectively. The default is subpixel support if + * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel + * support otherwise (since it isn't available then). + * + * If subpixel hinting is on, many TrueType bytecode instructions + * behave differently compared to B/W or grayscale rendering. The + * main idea is to render at a much increased horizontal resolution, + * then sampling down the created output to subpixel precision. + * However, many older fonts are not suited to this and must be + * specially taken care of by applying (hardcoded) font-specific + * tweaks. + * + * Details on subpixel hinting and some of the necessary tweaks can be + * found in Greg Hitchcock's whitepaper at + * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * + * The following example code demonstrates how to activate subpixel + * hinting (omitting the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "truetype", + * "interpreter-version", + * &interpreter_version ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @enum: + * TT_INTERPRETER_VERSION_XXX + * + * @description: + * A list of constants used for the @interpreter-version property to + * select the hinting engine for Truetype fonts. + * + * The numeric value in the constant names represents the version + * number as returned by the `GETINFO' bytecode instruction. + * + * @values: + * TT_INTERPRETER_VERSION_35 :: + * Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in + * Windows~98; only grayscale and B/W rasterizing is supported. + * + * TT_INTERPRETER_VERSION_38 :: + * Version~38 corresponds to MS rasterizer v.1.9; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as + * can be found, for example, in the Internet Explorer~9 running on + * Windows~7). + * + * @note: + * This property controls the behaviour of the bytecode interpreter + * and thus how outlines get hinted. It does *not* control how glyph + * get rasterized! In particular, it does not control subpixel color + * filtering. + * + * If FreeType has not been compiled with configuration option + * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an + * `FT_Err_Unimplemented_Feature' error. + * + * Depending on the graphics framework, Microsoft uses different + * bytecode engines. As a consequence, the version numbers returned by + * a call to the `GETINFO[1]' bytecode instruction are more convoluted + * than desired. + * + * { + * framework Windows version result of GETINFO[1] + * ---------------------------------------------------- + * GDI before XP 35 + * GDI XP and later 37 + * GDI+ old before Vista 37 + * GDI+ old Vista, 7 38 + * GDI+ after 7 40 + * DWrite before 8 39 + * DWrite 8 and later 40 + * } + * + * Since FreeType doesn't provide all capabilities of DWrite ClearType, + * using version~38 seems justified. + * + */ +#define TT_INTERPRETER_VERSION_35 35 +#define TT_INTERPRETER_VERSION_38 38 + + /* */ + + +FT_END_HEADER + + +#endif /* __FTTTDRV_H__ */ + + +/* END */ diff --git a/lib/linux/include/fttypes.h b/lib/linux/include/fttypes.h new file mode 100644 index 0000000..2c01e87 --- /dev/null +++ b/lib/linux/include/fttypes.h @@ -0,0 +1,602 @@ +/***************************************************************************/ +/* */ +/* fttypes.h */ +/* */ +/* FreeType simple types definitions (specification only). */ +/* */ +/* Copyright 1996-2002, 2004, 2006-2009, 2012-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTYPES_H__ +#define __FTTYPES_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_SYSTEM_H +#include FT_IMAGE_H + +#include <stddef.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /* <Title> */ + /* Basic Data Types */ + /* */ + /* <Abstract> */ + /* The basic data types defined by the library. */ + /* */ + /* <Description> */ + /* This section contains the basic data types defined by FreeType~2, */ + /* ranging from simple scalar types to bitmap descriptors. More */ + /* font-specific structures are defined in a different section. */ + /* */ + /* <Order> */ + /* FT_Byte */ + /* FT_Bytes */ + /* FT_Char */ + /* FT_Int */ + /* FT_UInt */ + /* FT_Int16 */ + /* FT_UInt16 */ + /* FT_Int32 */ + /* FT_UInt32 */ + /* FT_Int64 */ + /* FT_UInt64 */ + /* FT_Short */ + /* FT_UShort */ + /* FT_Long */ + /* FT_ULong */ + /* FT_Bool */ + /* FT_Offset */ + /* FT_PtrDist */ + /* FT_String */ + /* FT_Tag */ + /* FT_Error */ + /* FT_Fixed */ + /* FT_Pointer */ + /* FT_Pos */ + /* FT_Vector */ + /* FT_BBox */ + /* FT_Matrix */ + /* FT_FWord */ + /* FT_UFWord */ + /* FT_F2Dot14 */ + /* FT_UnitVector */ + /* FT_F26Dot6 */ + /* FT_Data */ + /* */ + /* FT_MAKE_TAG */ + /* */ + /* FT_Generic */ + /* FT_Generic_Finalizer */ + /* */ + /* FT_Bitmap */ + /* FT_Pixel_Mode */ + /* FT_Palette_Mode */ + /* FT_Glyph_Format */ + /* FT_IMAGE_TAG */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bool */ + /* */ + /* <Description> */ + /* A typedef of unsigned char, used for simple booleans. As usual, */ + /* values 1 and~0 represent true and false, respectively. */ + /* */ + typedef unsigned char FT_Bool; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_FWord */ + /* */ + /* <Description> */ + /* A signed 16-bit integer used to store a distance in original font */ + /* units. */ + /* */ + typedef signed short FT_FWord; /* distance in FUnits */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UFWord */ + /* */ + /* <Description> */ + /* An unsigned 16-bit integer used to store a distance in original */ + /* font units. */ + /* */ + typedef unsigned short FT_UFWord; /* unsigned distance */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Char */ + /* */ + /* <Description> */ + /* A simple typedef for the _signed_ char type. */ + /* */ + typedef signed char FT_Char; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Byte */ + /* */ + /* <Description> */ + /* A simple typedef for the _unsigned_ char type. */ + /* */ + typedef unsigned char FT_Byte; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bytes */ + /* */ + /* <Description> */ + /* A typedef for constant memory areas. */ + /* */ + typedef const FT_Byte* FT_Bytes; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Tag */ + /* */ + /* <Description> */ + /* A typedef for 32-bit tags (as used in the SFNT format). */ + /* */ + typedef FT_UInt32 FT_Tag; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_String */ + /* */ + /* <Description> */ + /* A simple typedef for the char type, usually used for strings. */ + /* */ + typedef char FT_String; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Short */ + /* */ + /* <Description> */ + /* A typedef for signed short. */ + /* */ + typedef signed short FT_Short; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UShort */ + /* */ + /* <Description> */ + /* A typedef for unsigned short. */ + /* */ + typedef unsigned short FT_UShort; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int */ + /* */ + /* <Description> */ + /* A typedef for the int type. */ + /* */ + typedef signed int FT_Int; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt */ + /* */ + /* <Description> */ + /* A typedef for the unsigned int type. */ + /* */ + typedef unsigned int FT_UInt; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Long */ + /* */ + /* <Description> */ + /* A typedef for signed long. */ + /* */ + typedef signed long FT_Long; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ULong */ + /* */ + /* <Description> */ + /* A typedef for unsigned long. */ + /* */ + typedef unsigned long FT_ULong; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F2Dot14 */ + /* */ + /* <Description> */ + /* A signed 2.14 fixed-point type used for unit vectors. */ + /* */ + typedef signed short FT_F2Dot14; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F26Dot6 */ + /* */ + /* <Description> */ + /* A signed 26.6 fixed-point type used for vectorial pixel */ + /* coordinates. */ + /* */ + typedef signed long FT_F26Dot6; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Fixed */ + /* */ + /* <Description> */ + /* This type is used to store 16.16 fixed-point values, like scaling */ + /* values or matrix coefficients. */ + /* */ + typedef signed long FT_Fixed; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Error */ + /* */ + /* <Description> */ + /* The FreeType error code type. A value of~0 is always interpreted */ + /* as a successful operation. */ + /* */ + typedef int FT_Error; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pointer */ + /* */ + /* <Description> */ + /* A simple typedef for a typeless pointer. */ + /* */ + typedef void* FT_Pointer; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Offset */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ + /* _unsigned_ integer type used to express a file size or position, */ + /* or a memory block size. */ + /* */ + typedef size_t FT_Offset; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_PtrDist */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ + /* largest _signed_ integer type used to express the distance */ + /* between two pointers. */ + /* */ + typedef ft_ptrdiff_t FT_PtrDist; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_UnitVector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector unit vector. Uses */ + /* FT_F2Dot14 types. */ + /* */ + /* <Fields> */ + /* x :: Horizontal coordinate. */ + /* */ + /* y :: Vertical coordinate. */ + /* */ + typedef struct FT_UnitVector_ + { + FT_F2Dot14 x; + FT_F2Dot14 y; + + } FT_UnitVector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Matrix */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2x2 matrix. Coefficients are */ + /* in 16.16 fixed-point format. The computation performed is: */ + /* */ + /* { */ + /* x' = x*xx + y*xy */ + /* y' = x*yx + y*yy */ + /* } */ + /* */ + /* <Fields> */ + /* xx :: Matrix coefficient. */ + /* */ + /* xy :: Matrix coefficient. */ + /* */ + /* yx :: Matrix coefficient. */ + /* */ + /* yy :: Matrix coefficient. */ + /* */ + typedef struct FT_Matrix_ + { + FT_Fixed xx, xy; + FT_Fixed yx, yy; + + } FT_Matrix; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Data */ + /* */ + /* <Description> */ + /* Read-only binary data represented as a pointer and a length. */ + /* */ + /* <Fields> */ + /* pointer :: The data. */ + /* */ + /* length :: The length of the data in bytes. */ + /* */ + typedef struct FT_Data_ + { + const FT_Byte* pointer; + FT_Int length; + + } FT_Data; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Generic_Finalizer */ + /* */ + /* <Description> */ + /* Describe a function used to destroy the `client' data of any */ + /* FreeType object. See the description of the @FT_Generic type for */ + /* details of usage. */ + /* */ + /* <Input> */ + /* The address of the FreeType object that is under finalization. */ + /* Its client data is accessed through its `generic' field. */ + /* */ + typedef void (*FT_Generic_Finalizer)(void* object); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Generic */ + /* */ + /* <Description> */ + /* Client applications often need to associate their own data to a */ + /* variety of FreeType core objects. For example, a text layout API */ + /* might want to associate a glyph cache to a given size object. */ + /* */ + /* Some FreeType object contains a `generic' field, of type */ + /* FT_Generic, which usage is left to client applications and font */ + /* servers. */ + /* */ + /* It can be used to store a pointer to client-specific data, as well */ + /* as the address of a `finalizer' function, which will be called by */ + /* FreeType when the object is destroyed (for example, the previous */ + /* client example would put the address of the glyph cache destructor */ + /* in the `finalizer' field). */ + /* */ + /* <Fields> */ + /* data :: A typeless pointer to any client-specified data. This */ + /* field is completely ignored by the FreeType library. */ + /* */ + /* finalizer :: A pointer to a `generic finalizer' function, which */ + /* will be called when the object is destroyed. If this */ + /* field is set to NULL, no code will be called. */ + /* */ + typedef struct FT_Generic_ + { + void* data; + FT_Generic_Finalizer finalizer; + + } FT_Generic; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_MAKE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags that are used to label */ + /* TrueType tables into an unsigned long, to be used within FreeType. */ + /* */ + /* <Note> */ + /* The produced values *must* be 32-bit integers. Don't redefine */ + /* this macro. */ + /* */ +#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + (FT_Tag) \ + ( ( (FT_ULong)_x1 << 24 ) | \ + ( (FT_ULong)_x2 << 16 ) | \ + ( (FT_ULong)_x3 << 8 ) | \ + (FT_ULong)_x4 ) + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* L I S T M A N A G E M E N T */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ListNode */ + /* */ + /* <Description> */ + /* Many elements and objects in FreeType are listed through an */ + /* @FT_List record (see @FT_ListRec). As its name suggests, an */ + /* FT_ListNode is a handle to a single list element. */ + /* */ + typedef struct FT_ListNodeRec_* FT_ListNode; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_List */ + /* */ + /* <Description> */ + /* A handle to a list record (see @FT_ListRec). */ + /* */ + typedef struct FT_ListRec_* FT_List; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListNodeRec */ + /* */ + /* <Description> */ + /* A structure used to hold a single list element. */ + /* */ + /* <Fields> */ + /* prev :: The previous element in the list. NULL if first. */ + /* */ + /* next :: The next element in the list. NULL if last. */ + /* */ + /* data :: A typeless pointer to the listed object. */ + /* */ + typedef struct FT_ListNodeRec_ + { + FT_ListNode prev; + FT_ListNode next; + void* data; + + } FT_ListNodeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListRec */ + /* */ + /* <Description> */ + /* A structure used to hold a simple doubly-linked list. These are */ + /* used in many parts of FreeType. */ + /* */ + /* <Fields> */ + /* head :: The head (first element) of doubly-linked list. */ + /* */ + /* tail :: The tail (last element) of doubly-linked list. */ + /* */ + typedef struct FT_ListRec_ + { + FT_ListNode head; + FT_ListNode tail; + + } FT_ListRec; + + /* */ + + +#define FT_IS_EMPTY( list ) ( (list).head == 0 ) +#define FT_BOOL( x ) ( (FT_Bool)( x ) ) + + /* concatenate C tokens */ +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + /* see `ftmoderr.h' for descriptions of the following macros */ + +#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_ERR_EQ( x, e ) \ + ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) +#define FT_ERR_NEQ( x, e ) \ + ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) + + +FT_END_HEADER + +#endif /* __FTTYPES_H__ */ + + +/* END */ diff --git a/lib/linux/include/ftwinfnt.h b/lib/linux/include/ftwinfnt.h new file mode 100644 index 0000000..5026158 --- /dev/null +++ b/lib/linux/include/ftwinfnt.h @@ -0,0 +1,275 @@ +/***************************************************************************/ +/* */ +/* ftwinfnt.h */ +/* */ +/* FreeType API for accessing Windows fnt-specific data. */ +/* */ +/* Copyright 2003, 2004, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTWINFNT_H__ +#define __FTWINFNT_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* winfnt_fonts */ + /* */ + /* <Title> */ + /* Window FNT Files */ + /* */ + /* <Abstract> */ + /* Windows FNT specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Windows FNT specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset' byte in + * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX + * encodings (except for cp1361) can be found at + * ftp://ftp.unicode.org/public in the MAPPINGS/VENDORS/MICSFT/WINDOWS + * subdirectory. cp1361 is roughly a superset of + * MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a + * `don't care' value. Valid font files don't contain this value. + * When querying for information about the character set of the font + * that is currently selected into a specified device context, this + * return value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Pöttgen <michael@poettgen.de>: + * + * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM + * is used for the charset of vector fonts, like `modern.fon', + * `roman.fon', and `script.fon' on Windows. + * + * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value + * specifies a character set that is operating-system dependent. + * + * The `IFIMETRICS' documentation from the `Windows Driver + * Development Kit' says: This font supports an OEM-specific + * character set. The OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the + * second default codepage that most international versions of + * Windows have. It is one of the OEM codepages from + * + * http://www.microsoft.com/globaldev/reference/cphome.mspx, + * + * and is used for the `DOS boxes', to support legacy applications. + * A German Windows version for example usually uses ANSI codepage + * 1252 and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ + +#define FT_WinFNT_ID_CP1252 0 +#define FT_WinFNT_ID_DEFAULT 1 +#define FT_WinFNT_ID_SYMBOL 2 +#define FT_WinFNT_ID_MAC 77 +#define FT_WinFNT_ID_CP932 128 +#define FT_WinFNT_ID_CP949 129 +#define FT_WinFNT_ID_CP1361 130 +#define FT_WinFNT_ID_CP936 134 +#define FT_WinFNT_ID_CP950 136 +#define FT_WinFNT_ID_CP1253 161 +#define FT_WinFNT_ID_CP1254 162 +#define FT_WinFNT_ID_CP1258 163 +#define FT_WinFNT_ID_CP1255 177 +#define FT_WinFNT_ID_CP1256 178 +#define FT_WinFNT_ID_CP1257 186 +#define FT_WinFNT_ID_CP1251 204 +#define FT_WinFNT_ID_CP874 222 +#define FT_WinFNT_ID_CP1250 238 +#define FT_WinFNT_ID_OEM 255 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_HeaderRec */ + /* */ + /* <Description> */ + /* Windows FNT Header info. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_ + { + FT_UShort version; + FT_ULong file_size; + FT_Byte copyright[60]; + FT_UShort file_type; + FT_UShort nominal_point_size; + FT_UShort vertical_resolution; + FT_UShort horizontal_resolution; + FT_UShort ascent; + FT_UShort internal_leading; + FT_UShort external_leading; + FT_Byte italic; + FT_Byte underline; + FT_Byte strike_out; + FT_UShort weight; + FT_Byte charset; + FT_UShort pixel_width; + FT_UShort pixel_height; + FT_Byte pitch_and_family; + FT_UShort avg_width; + FT_UShort max_width; + FT_Byte first_char; + FT_Byte last_char; + FT_Byte default_char; + FT_Byte break_char; + FT_UShort bytes_per_row; + FT_ULong device_offset; + FT_ULong face_name_offset; + FT_ULong bits_pointer; + FT_ULong bits_offset; + FT_Byte reserved; + FT_ULong flags; + FT_UShort A_space; + FT_UShort B_space; + FT_UShort C_space; + FT_UShort color_table_offset; + FT_ULong reserved1[4]; + + } FT_WinFNT_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_Header */ + /* */ + /* <Description> */ + /* A handle to an @FT_WinFNT_HeaderRec structure. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; + + + /********************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: A handle to the input face. + * + * @output: + * aheader :: The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTWINFNT_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/linux/include/ftxf86.h b/lib/linux/include/ftxf86.h new file mode 100644 index 0000000..89d1993 --- /dev/null +++ b/lib/linux/include/ftxf86.h @@ -0,0 +1,84 @@ +/***************************************************************************/ +/* */ +/* ftxf86.h */ +/* */ +/* Support functions for X11. */ +/* */ +/* Copyright 2002-2004, 2006, 2007, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTXF86_H__ +#define __FTXF86_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* font_formats */ + /* */ + /* <Title> */ + /* Font Formats */ + /* */ + /* <Abstract> */ + /* Getting the font format. */ + /* */ + /* <Description> */ + /* The single function in this section can be used to get the font */ + /* format. Note that this information is not needed normally; */ + /* however, there are special cases (like in PDF devices) where it is */ + /* important to differentiate, in spite of FreeType's uniform API. */ + /* */ + /* This function is in the X11/xf86 namespace for historical reasons */ + /* and in no way depends on that windowing system. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_X11_Font_Format */ + /* */ + /* <Description> */ + /* Return a string describing the format of a given face, using values */ + /* that can be used as an X11 FONT_PROPERTY. Possible values are */ + /* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ + /* `PFR', and `Windows~FNT'. */ + /* */ + /* <Input> */ + /* face :: */ + /* Input face handle. */ + /* */ + /* <Return> */ + /* Font format string. NULL in case of error. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_X11_Font_Format( FT_Face face ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTXF86_H__ */ diff --git a/lib/linux/include/internal/autohint.h b/lib/linux/include/internal/autohint.h new file mode 100644 index 0000000..545de93 --- /dev/null +++ b/lib/linux/include/internal/autohint.h @@ -0,0 +1,244 @@ +/***************************************************************************/ +/* */ +/* autohint.h */ +/* */ +/* High-level `autohint' module-specific interface (specification). */ +/* */ +/* Copyright 1996-2002, 2007, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* The auto-hinter is used to load and automatically hint glyphs if a */ + /* format-specific hinter isn't available. */ + /* */ + /*************************************************************************/ + + +#ifndef __AUTOHINT_H__ +#define __AUTOHINT_H__ + + + /*************************************************************************/ + /* */ + /* A small technical note regarding automatic hinting in order to */ + /* clarify this module interface. */ + /* */ + /* An automatic hinter might compute two kinds of data for a given face: */ + /* */ + /* - global hints: Usually some metrics that describe global properties */ + /* of the face. It is computed by scanning more or less */ + /* aggressively the glyphs in the face, and thus can be */ + /* very slow to compute (even if the size of global */ + /* hints is really small). */ + /* */ + /* - glyph hints: These describe some important features of the glyph */ + /* outline, as well as how to align them. They are */ + /* generally much faster to compute than global hints. */ + /* */ + /* The current FreeType auto-hinter does a pretty good job while */ + /* performing fast computations for both global and glyph hints. */ + /* However, we might be interested in introducing more complex and */ + /* powerful algorithms in the future, like the one described in the John */ + /* D. Hobby paper, which unfortunately requires a lot more horsepower. */ + /* */ + /* Because a sufficiently sophisticated font management system would */ + /* typically implement an LRU cache of opened face objects to reduce */ + /* memory usage, it is a good idea to be able to avoid recomputing */ + /* global hints every time the same face is re-opened. */ + /* */ + /* We thus provide the ability to cache global hints outside of the face */ + /* object, in order to speed up font re-opening time. Of course, this */ + /* feature is purely optional, so most client programs won't even notice */ + /* it. */ + /* */ + /* I initially thought that it would be a good idea to cache the glyph */ + /* hints too. However, my general idea now is that if you really need */ + /* to cache these too, you are simply in need of a new font format, */ + /* where all this information could be stored within the font file and */ + /* decoded on the fly. */ + /* */ + /*************************************************************************/ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + typedef struct FT_AutoHinterRec_ *FT_AutoHinter; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalGetFunc */ + /* */ + /* <Description> */ + /* Retrieve the global hints computed for a given face object. The */ + /* resulting data is dissociated from the face and will survive a */ + /* call to FT_Done_Face(). It must be discarded through the API */ + /* FT_AutoHinter_GlobalDoneFunc(). */ + /* */ + /* <Input> */ + /* hinter :: A handle to the source auto-hinter. */ + /* */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* global_hints :: A typeless pointer to the global hints. */ + /* */ + /* global_len :: The size in bytes of the global hints. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter hinter, + FT_Face face, + void** global_hints, + long* global_len ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalDoneFunc */ + /* */ + /* <Description> */ + /* Discard the global hints retrieved through */ + /* FT_AutoHinter_GlobalGetFunc(). This is the only way these hints */ + /* are freed from memory. */ + /* */ + /* <Input> */ + /* hinter :: A handle to the auto-hinter module. */ + /* */ + /* global :: A pointer to retrieved global hints to discard. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter hinter, + void* global ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalResetFunc */ + /* */ + /* <Description> */ + /* This function is used to recompute the global metrics in a given */ + /* font. This is useful when global font data changes (e.g. Multiple */ + /* Masters fonts where blend coordinates change). */ + /* */ + /* <Input> */ + /* hinter :: A handle to the source auto-hinter. */ + /* */ + /* face :: A handle to the face. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter hinter, + FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlyphLoadFunc */ + /* */ + /* <Description> */ + /* This function is used to load, scale, and automatically hint a */ + /* glyph from a given face. */ + /* */ + /* <Input> */ + /* face :: A handle to the face. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* load_flags :: The load flags. */ + /* */ + /* <Note> */ + /* This function is capable of loading composite glyphs by hinting */ + /* each sub-glyph independently (which improves quality). */ + /* */ + /* It will call the font driver with @FT_Load_Glyph, with */ + /* @FT_LOAD_NO_SCALE set. */ + /* */ + typedef FT_Error + (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter hinter, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_AutoHinter_InterfaceRec */ + /* */ + /* <Description> */ + /* The auto-hinter module's interface. */ + /* */ + typedef struct FT_AutoHinter_InterfaceRec_ + { + FT_AutoHinter_GlobalResetFunc reset_face; + FT_AutoHinter_GlobalGetFunc get_global_hints; + FT_AutoHinter_GlobalDoneFunc done_global_hints; + FT_AutoHinter_GlyphLoadFunc load_glyph; + + } FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_AUTOHINTER_INTERFACE( \ + class_, \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_AutoHinter_InterfaceRec class_ = \ + { \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_AUTOHINTER_INTERFACE( \ + class_, \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_AutoHinter_InterfaceRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->reset_face = reset_face_; \ + clazz->get_global_hints = get_global_hints_; \ + clazz->done_global_hints = done_global_hints_; \ + clazz->load_glyph = load_glyph_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __AUTOHINT_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftcalc.h b/lib/linux/include/internal/ftcalc.h new file mode 100644 index 0000000..14ec37b --- /dev/null +++ b/lib/linux/include/internal/ftcalc.h @@ -0,0 +1,406 @@ +/***************************************************************************/ +/* */ +/* ftcalc.h */ +/* */ +/* Arithmetic computations (specification). */ +/* */ +/* Copyright 1996-2006, 2008, 2009, 2012-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCALC_H__ +#define __FTCALC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* FT_MulDiv() and FT_MulFix() are declared in freetype.h. */ + /* */ + /*************************************************************************/ + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER + /* Provide assembler fragments for performance-critical functions. */ + /* These must be defined `static __inline__' with GCC. */ + +#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */ + +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + __asm + { + smull t2, t, b, a /* (lo=t2,hi=t) = a*b */ + mov a, t, asr #31 /* a = (hi >> 31) */ + add a, a, #0x8000 /* a += 0x8000 */ + adds t2, t2, a /* t2 += a */ + adc t, t, #0 /* t += carry */ + mov a, t2, lsr #16 /* a = t2 >> 16 */ + orr a, a, t, lsl #16 /* a |= t << 16 */ + } + return a; + } + +#endif /* __CC_ARM || __ARMCC__ */ + + +#ifdef __GNUC__ + +#if defined( __arm__ ) && \ + ( !defined( __thumb__ ) || defined( __thumb2__ ) ) && \ + !( defined( __CC_ARM ) || defined( __ARMCC__ ) ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + __asm__ __volatile__ ( + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ +#if defined( __clang__ ) && defined( __thumb2__ ) + "add.w %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ +#else + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ +#endif + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) + : "cc" ); + return a; + } + +#endif /* __arm__ && */ + /* ( __thumb2__ || !__thumb__ ) && */ + /* !( __CC_ARM || __ARMCC__ ) */ + + +#if defined( __i386__ ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + + __asm__ __volatile__ ( + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "=d"(b) + : "a"(a), "d"(b) + : "%ecx", "cc" ); + return result; + } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + + +#ifdef _MSC_VER /* Visual C++ */ + +#ifdef _M_IX86 + +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + __asm + { + mov eax, a + mov edx, b + imul edx + mov ecx, edx + sar ecx, 31 + add ecx, 8000h + add eax, ecx + adc edx, 0 + shr eax, 16 + shl edx, 16 + add eax, edx + mov result, eax + } + return result; + } + +#endif /* _M_IX86 */ + +#endif /* _MSC_VER */ + + +#if defined( __GNUC__ ) && defined( __x86_64__ ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_x86_64 + + static __inline__ FT_Int32 + FT_MulFix_x86_64( FT_Int32 a, + FT_Int32 b ) + { + /* Temporarily disable the warning that C90 doesn't support */ + /* `long long'. */ +#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wlong-long" +#endif + +#if 1 + /* Technically not an assembly fragment, but GCC does a really good */ + /* job at inlining it and generating good machine code for it. */ + long long ret, tmp; + + + ret = (long long)a * b; + tmp = ret >> 63; + ret += 0x8000 + tmp; + + return (FT_Int32)( ret >> 16 ); +#else + + /* For some reason, GCC 4.6 on Ubuntu 12.04 generates invalid machine */ + /* code from the lines below. The main issue is that `wide_a' is not */ + /* properly initialized by sign-extending `a'. Instead, the generated */ + /* machine code assumes that the register that contains `a' on input */ + /* can be used directly as a 64-bit value, which is wrong most of the */ + /* time. */ + long long wide_a = (long long)a; + long long wide_b = (long long)b; + long long result; + + + __asm__ __volatile__ ( + "imul %2, %1\n" + "mov %1, %0\n" + "sar $63, %0\n" + "lea 0x8000(%1, %0), %0\n" + "sar $16, %0\n" + : "=&r"(result), "=&r"(wide_a) + : "r"(wide_b) + : "cc" ); + + return (FT_Int32)result; +#endif + +#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 ) +#pragma GCC diagnostic pop +#endif + } + +#endif /* __GNUC__ && __x86_64__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MulFix( a, b ) FT_MULFIX_ASSEMBLER( (FT_Int32)(a), (FT_Int32)(b) ) +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv_No_Round */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* (without rounding) with maximum accuracy (it uses a 64-bit */ + /* intermediate integer whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_BASE( FT_Long ) + FT_MulDiv_No_Round( FT_Long a, + FT_Long b, + FT_Long c ); + + + /* + * A variant of FT_Matrix_Multiply which scales its result afterwards. + * The idea is that both `a' and `b' are scaled by factors of 10 so that + * the values are as precise as possible to get a correct result during + * the 64bit multiplication. Let `sa' and `sb' be the scaling factors of + * `a' and `b', respectively, then the scaling factor of the result is + * `sa*sb'. + */ + FT_BASE( void ) + FT_Matrix_Multiply_Scaled( const FT_Matrix* a, + FT_Matrix *b, + FT_Long scaling ); + + + /* + * A variant of FT_Vector_Transform. See comments for + * FT_Matrix_Multiply_Scaled. + */ + FT_BASE( void ) + FT_Vector_Transform_Scaled( FT_Vector* vector, + const FT_Matrix* matrix, + FT_Long scaling ); + + + /* + * Return -1, 0, or +1, depending on the orientation of a given corner. + * We use the Cartesian coordinate system, with positive vertical values + * going upwards. The function returns +1 if the corner turns to the + * left, -1 to the right, and 0 for undecidable cases. + */ + FT_BASE( FT_Int ) + ft_corner_orientation( FT_Pos in_x, + FT_Pos in_y, + FT_Pos out_x, + FT_Pos out_y ); + + + /* + * Return TRUE if a corner is flat or nearly flat. This is equivalent to + * saying that the corner point is close to its neighbors, or inside an + * ellipse defined by the neighbor focal points to be more precise. + */ + FT_BASE( FT_Int ) + ft_corner_is_flat( FT_Pos in_x, + FT_Pos in_y, + FT_Pos out_x, + FT_Pos out_y ); + + + /* + * Return the most significant bit index. + */ + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER +#if defined( __GNUC__ ) && \ + ( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) ) + +#if FT_SIZEOF_INT == 4 + +#define FT_MSB( x ) ( 31 - __builtin_clz( x ) ) + +#elif FT_SIZEOF_LONG == 4 + +#define FT_MSB( x ) ( 31 - __builtin_clzl( x ) ) + +#endif + +#endif /* __GNUC__ */ +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + +#ifndef FT_MSB + + FT_BASE( FT_Int ) + FT_MSB( FT_UInt32 z ); + +#endif + + + /* + * Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses + * two fixed-point arguments instead. + */ + FT_BASE( FT_Fixed ) + FT_Hypot( FT_Fixed x, + FT_Fixed y ); + + +#if 0 + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_SqrtFixed */ + /* */ + /* <Description> */ + /* Computes the square root of a 16.16 fixed-point value. */ + /* */ + /* <Input> */ + /* x :: The value to compute the root for. */ + /* */ + /* <Return> */ + /* The result of `sqrt(x)'. */ + /* */ + /* <Note> */ + /* This function is not very fast. */ + /* */ + FT_BASE( FT_Int32 ) + FT_SqrtFixed( FT_Int32 x ); + +#endif /* 0 */ + + +#define INT_TO_F26DOT6( x ) ( (FT_Long)(x) << 6 ) +#define INT_TO_F2DOT14( x ) ( (FT_Long)(x) << 14 ) +#define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 ) +#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 ) +#define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) ) +#define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 ) + +#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \ + : ( -( ( 32 - (x) ) & -64 ) ) ) + + +FT_END_HEADER + +#endif /* __FTCALC_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftdebug.h b/lib/linux/include/internal/ftdebug.h new file mode 100644 index 0000000..58a3916 --- /dev/null +++ b/lib/linux/include/internal/ftdebug.h @@ -0,0 +1,255 @@ +/***************************************************************************/ +/* */ +/* ftdebug.h */ +/* */ +/* Debugging and logging component (specification). */ +/* */ +/* Copyright 1996-2002, 2004, 2006-2009, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/* */ +/* IMPORTANT: A description of FreeType's debugging support can be */ +/* found in `docs/DEBUG.TXT'. Read it if you need to use or */ +/* understand this code. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTDEBUG_H__ +#define __FTDEBUG_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */ + /* is already defined; this simplifies the following #ifdefs */ + /* */ +#ifdef FT_DEBUG_LEVEL_TRACE +#undef FT_DEBUG_LEVEL_ERROR +#define FT_DEBUG_LEVEL_ERROR +#endif + + + /*************************************************************************/ + /* */ + /* Define the trace enums as well as the trace levels array when they */ + /* are needed. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_TRACE + +#define FT_TRACE_DEF( x ) trace_ ## x , + + /* defining the enumeration */ + typedef enum FT_Trace_ + { +#include FT_INTERNAL_TRACE_H + trace_count + + } FT_Trace; + + + /* defining the array of trace levels, provided by `src/base/ftdebug.c' */ + extern int ft_trace_levels[trace_count]; + +#undef FT_TRACE_DEF + +#endif /* FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Define the FT_TRACE macro */ + /* */ + /* IMPORTANT! */ + /* */ + /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */ + /* value before using any TRACE macro. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_TRACE + +#define FT_TRACE( level, varformat ) \ + do \ + { \ + if ( ft_trace_levels[FT_COMPONENT] >= level ) \ + FT_Message varformat; \ + } while ( 0 ) + +#else /* !FT_DEBUG_LEVEL_TRACE */ + +#define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Trace_Get_Count */ + /* */ + /* <Description> */ + /* Return the number of available trace components. */ + /* */ + /* <Return> */ + /* The number of trace components. 0 if FreeType 2 is not built with */ + /* FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* <Note> */ + /* This function may be useful if you want to access elements of */ + /* the internal `ft_trace_levels' array by an index. */ + /* */ + FT_BASE( FT_Int ) + FT_Trace_Get_Count( void ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Trace_Get_Name */ + /* */ + /* <Description> */ + /* Return the name of a trace component. */ + /* */ + /* <Input> */ + /* The index of the trace component. */ + /* */ + /* <Return> */ + /* The name of the trace component. This is a statically allocated */ + /* C string, so do not free it after use. NULL if FreeType 2 is not */ + /* built with FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* <Note> */ + /* Use @FT_Trace_Get_Count to get the number of available trace */ + /* components. */ + /* */ + /* This function may be useful if you want to control FreeType 2's */ + /* debug level in your application. */ + /* */ + FT_BASE( const char * ) + FT_Trace_Get_Name( FT_Int idx ); + + + /*************************************************************************/ + /* */ + /* You need two opening and closing parentheses! */ + /* */ + /* Example: FT_TRACE0(( "Value is %i", foo )) */ + /* */ + /* Output of the FT_TRACEX macros is sent to stderr. */ + /* */ + /*************************************************************************/ + +#define FT_TRACE0( varformat ) FT_TRACE( 0, varformat ) +#define FT_TRACE1( varformat ) FT_TRACE( 1, varformat ) +#define FT_TRACE2( varformat ) FT_TRACE( 2, varformat ) +#define FT_TRACE3( varformat ) FT_TRACE( 3, varformat ) +#define FT_TRACE4( varformat ) FT_TRACE( 4, varformat ) +#define FT_TRACE5( varformat ) FT_TRACE( 5, varformat ) +#define FT_TRACE6( varformat ) FT_TRACE( 6, varformat ) +#define FT_TRACE7( varformat ) FT_TRACE( 7, varformat ) + + + /*************************************************************************/ + /* */ + /* Define the FT_ERROR macro. */ + /* */ + /* Output of this macro is sent to stderr. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define FT_ERROR( varformat ) FT_Message varformat + +#else /* !FT_DEBUG_LEVEL_ERROR */ + +#define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_ERROR */ + + + /*************************************************************************/ + /* */ + /* Define the FT_ASSERT and FT_THROW macros. The call to `FT_Throw' */ + /* makes it possible to easily set a breakpoint at this function. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define FT_ASSERT( condition ) \ + do \ + { \ + if ( !( condition ) ) \ + FT_Panic( "assertion failed on line %d of file %s\n", \ + __LINE__, __FILE__ ); \ + } while ( 0 ) + +#define FT_THROW( e ) \ + ( FT_Throw( FT_ERR_CAT( FT_ERR_PREFIX, e ), \ + __LINE__, \ + __FILE__ ) | \ + FT_ERR_CAT( FT_ERR_PREFIX, e ) ) + +#else /* !FT_DEBUG_LEVEL_ERROR */ + +#define FT_ASSERT( condition ) do { } while ( 0 ) + +#define FT_THROW( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#endif /* !FT_DEBUG_LEVEL_ERROR */ + + + /*************************************************************************/ + /* */ + /* Define `FT_Message' and `FT_Panic' when needed. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#include "stdio.h" /* for vfprintf() */ + + /* print a message */ + FT_BASE( void ) + FT_Message( const char* fmt, + ... ); + + /* print a message and exit */ + FT_BASE( void ) + FT_Panic( const char* fmt, + ... ); + + /* report file name and line number of an error */ + FT_BASE( int ) + FT_Throw( FT_Error error, + int line, + const char* file ); + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + + FT_BASE( void ) + ft_debug_init( void ); + +FT_END_HEADER + +#endif /* __FTDEBUG_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftdriver.h b/lib/linux/include/internal/ftdriver.h new file mode 100644 index 0000000..940218e --- /dev/null +++ b/lib/linux/include/internal/ftdriver.h @@ -0,0 +1,409 @@ +/***************************************************************************/ +/* */ +/* ftdriver.h */ +/* */ +/* FreeType font driver interface (specification). */ +/* */ +/* Copyright 1996-2003, 2006, 2008, 2011-2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTDRIVER_H__ +#define __FTDRIVER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + typedef FT_Error + (*FT_Face_InitFunc)( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ); + + typedef void + (*FT_Face_DoneFunc)( FT_Face face ); + + + typedef FT_Error + (*FT_Size_InitFunc)( FT_Size size ); + + typedef void + (*FT_Size_DoneFunc)( FT_Size size ); + + + typedef FT_Error + (*FT_Slot_InitFunc)( FT_GlyphSlot slot ); + + typedef void + (*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); + + + typedef FT_Error + (*FT_Size_RequestFunc)( FT_Size size, + FT_Size_Request req ); + + typedef FT_Error + (*FT_Size_SelectFunc)( FT_Size size, + FT_ULong size_index ); + + typedef FT_Error + (*FT_Slot_LoadFunc)( FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + typedef FT_UInt + (*FT_CharMap_CharIndexFunc)( FT_CharMap charmap, + FT_Long charcode ); + + typedef FT_Long + (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, + FT_Long charcode ); + + + typedef FT_Error + (*FT_Face_GetKerningFunc)( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ); + + + typedef FT_Error + (*FT_Face_AttachFunc)( FT_Face face, + FT_Stream stream ); + + + typedef FT_Error + (*FT_Face_GetAdvancesFunc)( FT_Face face, + FT_UInt first, + FT_UInt count, + FT_Int32 flags, + FT_Fixed* advances ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Driver_ClassRec */ + /* */ + /* <Description> */ + /* The font driver class. This structure mostly contains pointers to */ + /* driver methods. */ + /* */ + /* <Fields> */ + /* root :: The parent module. */ + /* */ + /* face_object_size :: The size of a face object in bytes. */ + /* */ + /* size_object_size :: The size of a size object in bytes. */ + /* */ + /* slot_object_size :: The size of a glyph object in bytes. */ + /* */ + /* init_face :: The format-specific face constructor. */ + /* */ + /* done_face :: The format-specific face destructor. */ + /* */ + /* init_size :: The format-specific size constructor. */ + /* */ + /* done_size :: The format-specific size destructor. */ + /* */ + /* init_slot :: The format-specific slot constructor. */ + /* */ + /* done_slot :: The format-specific slot destructor. */ + /* */ + /* */ + /* load_glyph :: A function handle to load a glyph to a slot. */ + /* This field is mandatory! */ + /* */ + /* get_kerning :: A function handle to return the unscaled */ + /* kerning for a given pair of glyphs. Can be */ + /* set to 0 if the format doesn't support */ + /* kerning. */ + /* */ + /* attach_file :: This function handle is used to read */ + /* additional data for a face from another */ + /* file/stream. For example, this can be used to */ + /* add data from AFM or PFM files on a Type 1 */ + /* face, or a CIDMap on a CID-keyed face. */ + /* */ + /* get_advances :: A function handle used to return advance */ + /* widths of `count' glyphs (in font units), */ + /* starting at `first'. The `vertical' flag must */ + /* be set to get vertical advance heights. The */ + /* `advances' buffer is caller-allocated. */ + /* The idea of this function is to be able to */ + /* perform device-independent text layout without */ + /* loading a single glyph image. */ + /* */ + /* request_size :: A handle to a function used to request the new */ + /* character size. Can be set to 0 if the */ + /* scaling done in the base layer suffices. */ + /* */ + /* select_size :: A handle to a function used to select a new */ + /* fixed size. It is used only if */ + /* @FT_FACE_FLAG_FIXED_SIZES is set. Can be set */ + /* to 0 if the scaling done in the base layer */ + /* suffices. */ + /* <Note> */ + /* Most function pointers, with the exception of `load_glyph', can be */ + /* set to 0 to indicate a default behaviour. */ + /* */ + typedef struct FT_Driver_ClassRec_ + { + FT_Module_Class root; + + FT_Long face_object_size; + FT_Long size_object_size; + FT_Long slot_object_size; + + FT_Face_InitFunc init_face; + FT_Face_DoneFunc done_face; + + FT_Size_InitFunc init_size; + FT_Size_DoneFunc done_size; + + FT_Slot_InitFunc init_slot; + FT_Slot_DoneFunc done_slot; + + FT_Slot_LoadFunc load_glyph; + + FT_Face_GetKerningFunc get_kerning; + FT_Face_AttachFunc attach_file; + FT_Face_GetAdvancesFunc get_advances; + + /* since version 2.2 */ + FT_Size_RequestFunc request_size; + FT_Size_SelectFunc select_size; + + } FT_Driver_ClassRec, *FT_Driver_Class; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_DRIVER */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of an FT_Driver_ClassRec */ + /* struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_DRIVER */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Driver_ClassRec struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function has to be */ + /* called with a pointer where the allocated structure is returned. */ + /* And when it is no longer needed a `destroy' function needs to be */ + /* called to release that allocation. */ + /* */ + /* `fcinit.c' (ft_create_default_module_classes) already contains a */ + /* mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by driver definition calling `FT_DEFINE_DRIVER' in following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro is */ + /* used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_DRIVER( class_ ) \ + FT_CALLBACK_TABLE \ + const FT_Driver_ClassRec class_; + +#define FT_DEFINE_DRIVER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + init_face_, \ + done_face_, \ + init_size_, \ + done_size_, \ + init_slot_, \ + done_slot_, \ + load_glyph_, \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + request_size_, \ + select_size_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Driver_ClassRec class_ = \ + { \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + \ + init_face_, \ + done_face_, \ + \ + init_size_, \ + done_size_, \ + \ + init_slot_, \ + done_slot_, \ + \ + load_glyph_, \ + \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + \ + request_size_, \ + select_size_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_DRIVER( class_ ) FT_DECLARE_MODULE( class_ ) + +#define FT_DEFINE_DRIVER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + init_face_, \ + done_face_, \ + init_size_, \ + done_size_, \ + init_slot_, \ + done_slot_, \ + load_glyph_, \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + request_size_, \ + select_size_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + FT_Driver_Class dclazz = (FT_Driver_Class)clazz; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( dclazz ) \ + FT_FREE( dclazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Driver_Class clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + clazz->face_object_size = face_object_size_; \ + clazz->size_object_size = size_object_size_; \ + clazz->slot_object_size = slot_object_size_; \ + \ + clazz->init_face = init_face_; \ + clazz->done_face = done_face_; \ + \ + clazz->init_size = init_size_; \ + clazz->done_size = done_size_; \ + \ + clazz->init_slot = init_slot_; \ + clazz->done_slot = done_slot_; \ + \ + clazz->load_glyph = load_glyph_; \ + \ + clazz->get_kerning = get_kerning_; \ + clazz->attach_file = attach_file_; \ + clazz->get_advances = get_advances_; \ + \ + clazz->request_size = request_size_; \ + clazz->select_size = select_size_; \ + \ + *output_class = (FT_Module_Class*)clazz; \ + \ + return FT_Err_Ok; \ + } + + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __FTDRIVER_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftgloadr.h b/lib/linux/include/internal/ftgloadr.h new file mode 100644 index 0000000..f70774f --- /dev/null +++ b/lib/linux/include/internal/ftgloadr.h @@ -0,0 +1,170 @@ +/***************************************************************************/ +/* */ +/* ftgloadr.h */ +/* */ +/* The FreeType glyph loader (specification). */ +/* */ +/* Copyright 2002, 2003, 2005, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGLOADR_H__ +#define __FTGLOADR_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphLoader */ + /* */ + /* <Description> */ + /* The glyph loader is an internal object used to load several glyphs */ + /* together (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The glyph loader implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ; + + +#if 0 /* moved to freetype.h in version 2.2 */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 +#endif + + + typedef struct FT_SubGlyphRec_ + { + FT_Int index; + FT_UShort flags; + FT_Int arg1; + FT_Int arg2; + FT_Matrix transform; + + } FT_SubGlyphRec; + + + typedef struct FT_GlyphLoadRec_ + { + FT_Outline outline; /* outline */ + FT_Vector* extra_points; /* extra points table */ + FT_Vector* extra_points2; /* second extra points table */ + FT_UInt num_subglyphs; /* number of subglyphs */ + FT_SubGlyph subglyphs; /* subglyphs */ + + } FT_GlyphLoadRec, *FT_GlyphLoad; + + + typedef struct FT_GlyphLoaderRec_ + { + FT_Memory memory; + FT_UInt max_points; + FT_UInt max_contours; + FT_UInt max_subglyphs; + FT_Bool use_extra; + + FT_GlyphLoadRec base; + FT_GlyphLoadRec current; + + void* other; /* for possible future extension? */ + + } FT_GlyphLoaderRec; + + + /* create new empty glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_New( FT_Memory memory, + FT_GlyphLoader *aloader ); + + /* add an extra points table to a glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CreateExtra( FT_GlyphLoader loader ); + + /* destroy a glyph loader */ + FT_BASE( void ) + FT_GlyphLoader_Done( FT_GlyphLoader loader ); + + /* reset a glyph loader (frees everything int it) */ + FT_BASE( void ) + FT_GlyphLoader_Reset( FT_GlyphLoader loader ); + + /* rewind a glyph loader */ + FT_BASE( void ) + FT_GlyphLoader_Rewind( FT_GlyphLoader loader ); + + /* check that there is enough space to add `n_points' and `n_contours' */ + /* to the glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CheckPoints( FT_GlyphLoader loader, + FT_UInt n_points, + FT_UInt n_contours ); + + +#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \ + ( (_count) == 0 || \ + ( (_loader)->base.outline.n_points + \ + (_loader)->current.outline.n_points + \ + (unsigned long)(_count) ) <= (_loader)->max_points ) + +#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \ + ( (_count) == 0 || \ + ( (_loader)->base.outline.n_contours + \ + (_loader)->current.outline.n_contours + \ + (unsigned long)(_count)) <= (_loader)->max_contours ) + +#define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points, _contours ) \ + ( ( FT_GLYPHLOADER_CHECK_P( _loader, _points ) && \ + FT_GLYPHLOADER_CHECK_C( _loader, _contours ) ) \ + ? 0 \ + : FT_GlyphLoader_CheckPoints( (_loader), (_points), (_contours) ) ) + + + /* check that there is enough space to add `n_subs' sub-glyphs to */ + /* a glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader loader, + FT_UInt n_subs ); + + /* prepare a glyph loader, i.e. empty the current glyph */ + FT_BASE( void ) + FT_GlyphLoader_Prepare( FT_GlyphLoader loader ); + + /* add the current glyph to the base glyph */ + FT_BASE( void ) + FT_GlyphLoader_Add( FT_GlyphLoader loader ); + + /* copy points from one glyph loader to another */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CopyPoints( FT_GlyphLoader target, + FT_GlyphLoader source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLOADR_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftmemory.h b/lib/linux/include/internal/ftmemory.h new file mode 100644 index 0000000..3d51aee --- /dev/null +++ b/lib/linux/include/internal/ftmemory.h @@ -0,0 +1,378 @@ +/***************************************************************************/ +/* */ +/* ftmemory.h */ +/* */ +/* The FreeType memory management macros (specification). */ +/* */ +/* Copyright 1996-2002, 2004-2007, 2010, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMEMORY_H__ +#define __FTMEMORY_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_SET_ERROR */ + /* */ + /* <Description> */ + /* This macro is used to set an implicit `error' variable to a given */ + /* expression's value (usually a function call), and convert it to a */ + /* boolean which is set whenever the value is != 0. */ + /* */ +#undef FT_SET_ERROR +#define FT_SET_ERROR( expression ) \ + ( ( error = (expression) ) != 0 ) + + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** M E M O R Y ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* + * C++ refuses to handle statements like p = (void*)anything, with `p' a + * typed pointer. Since we don't have a `typeof' operator in standard + * C++, we have to use a template to emulate it. + */ + +#ifdef __cplusplus + + extern "C++" + template <typename T> inline T* + cplusplus_typeof( T*, + void *v ) + { + return static_cast <T*> ( v ); + } + +#define FT_ASSIGNP( p, val ) (p) = cplusplus_typeof( (p), (val) ) + +#else + +#define FT_ASSIGNP( p, val ) (p) = (val) + +#endif + + + +#ifdef FT_DEBUG_MEMORY + + FT_BASE( const char* ) _ft_debug_file; + FT_BASE( long ) _ft_debug_lineno; + +#define FT_DEBUG_INNER( exp ) ( _ft_debug_file = __FILE__, \ + _ft_debug_lineno = __LINE__, \ + (exp) ) + +#define FT_ASSIGNP_INNER( p, exp ) ( _ft_debug_file = __FILE__, \ + _ft_debug_lineno = __LINE__, \ + FT_ASSIGNP( p, exp ) ) + +#else /* !FT_DEBUG_MEMORY */ + +#define FT_DEBUG_INNER( exp ) (exp) +#define FT_ASSIGNP_INNER( p, exp ) FT_ASSIGNP( p, exp ) + +#endif /* !FT_DEBUG_MEMORY */ + + + /* + * The allocation functions return a pointer, and the error code + * is written to through the `p_error' parameter. See below for + * for documentation. + */ + + FT_BASE( FT_Pointer ) + ft_mem_alloc( FT_Memory memory, + FT_Long size, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_qalloc( FT_Memory memory, + FT_Long size, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_realloc( FT_Memory memory, + FT_Long item_size, + FT_Long cur_count, + FT_Long new_count, + void* block, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_qrealloc( FT_Memory memory, + FT_Long item_size, + FT_Long cur_count, + FT_Long new_count, + void* block, + FT_Error *p_error ); + + FT_BASE( void ) + ft_mem_free( FT_Memory memory, + const void* P ); + + +#define FT_MEM_ALLOC( ptr, size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_alloc( memory, \ + (FT_Long)(size), \ + &error ) ) + +#define FT_MEM_FREE( ptr ) \ + FT_BEGIN_STMNT \ + ft_mem_free( memory, (ptr) ); \ + (ptr) = NULL; \ + FT_END_STMNT + +#define FT_MEM_NEW( ptr ) \ + FT_MEM_ALLOC( ptr, sizeof ( *(ptr) ) ) + +#define FT_MEM_REALLOC( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + 1, \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QALLOC( ptr, size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qalloc( memory, \ + (FT_Long)(size), \ + &error ) ) + +#define FT_MEM_QNEW( ptr ) \ + FT_MEM_QALLOC( ptr, sizeof ( *(ptr) ) ) + +#define FT_MEM_QREALLOC( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + 1, \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_ALLOC_MULT( ptr, count, item_size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + (FT_Long)(item_size), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + (FT_Long)(itmsz), \ + (FT_Long)(oldcnt), \ + (FT_Long)(newcnt), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QALLOC_MULT( ptr, count, item_size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + (FT_Long)(item_size), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + (FT_Long)(itmsz), \ + (FT_Long)(oldcnt), \ + (FT_Long)(newcnt), \ + (ptr), \ + &error ) ) + + +#define FT_MEM_SET_ERROR( cond ) ( (cond), error != 0 ) + + +#define FT_MEM_SET( dest, byte, count ) ft_memset( dest, byte, count ) + +#define FT_MEM_COPY( dest, source, count ) ft_memcpy( dest, source, count ) + +#define FT_MEM_MOVE( dest, source, count ) ft_memmove( dest, source, count ) + + +#define FT_MEM_ZERO( dest, count ) FT_MEM_SET( dest, 0, count ) + +#define FT_ZERO( p ) FT_MEM_ZERO( p, sizeof ( *(p) ) ) + + +#define FT_ARRAY_ZERO( dest, count ) \ + FT_MEM_ZERO( dest, (count) * sizeof ( *(dest) ) ) + +#define FT_ARRAY_COPY( dest, source, count ) \ + FT_MEM_COPY( dest, source, (count) * sizeof ( *(dest) ) ) + +#define FT_ARRAY_MOVE( dest, source, count ) \ + FT_MEM_MOVE( dest, source, (count) * sizeof ( *(dest) ) ) + + + /* + * Return the maximum number of addressable elements in an array. + * We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid + * any problems. + */ +#define FT_ARRAY_MAX( ptr ) ( FT_INT_MAX / sizeof ( *(ptr) ) ) + +#define FT_ARRAY_CHECK( ptr, count ) ( (count) <= FT_ARRAY_MAX( ptr ) ) + + + /*************************************************************************/ + /* */ + /* The following functions macros expect that their pointer argument is */ + /* _typed_ in order to automatically compute array element sizes. */ + /* */ + +#define FT_MEM_NEW_ARRAY( ptr, count ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + sizeof ( *(ptr) ), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_RENEW_ARRAY( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + sizeof ( *(ptr) ), \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QNEW_ARRAY( ptr, count ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + sizeof ( *(ptr) ), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_QRENEW_ARRAY( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + sizeof ( *(ptr) ), \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_ALLOC( ptr, size ) \ + FT_MEM_SET_ERROR( FT_MEM_ALLOC( ptr, size ) ) + +#define FT_REALLOC( ptr, cursz, newsz ) \ + FT_MEM_SET_ERROR( FT_MEM_REALLOC( ptr, cursz, newsz ) ) + +#define FT_ALLOC_MULT( ptr, count, item_size ) \ + FT_MEM_SET_ERROR( FT_MEM_ALLOC_MULT( ptr, count, item_size ) ) + +#define FT_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_MEM_SET_ERROR( FT_MEM_REALLOC_MULT( ptr, oldcnt, \ + newcnt, itmsz ) ) + +#define FT_QALLOC( ptr, size ) \ + FT_MEM_SET_ERROR( FT_MEM_QALLOC( ptr, size ) ) + +#define FT_QREALLOC( ptr, cursz, newsz ) \ + FT_MEM_SET_ERROR( FT_MEM_QREALLOC( ptr, cursz, newsz ) ) + +#define FT_QALLOC_MULT( ptr, count, item_size ) \ + FT_MEM_SET_ERROR( FT_MEM_QALLOC_MULT( ptr, count, item_size ) ) + +#define FT_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_MEM_SET_ERROR( FT_MEM_QREALLOC_MULT( ptr, oldcnt, \ + newcnt, itmsz ) ) + +#define FT_FREE( ptr ) FT_MEM_FREE( ptr ) + +#define FT_NEW( ptr ) FT_MEM_SET_ERROR( FT_MEM_NEW( ptr ) ) + +#define FT_NEW_ARRAY( ptr, count ) \ + FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) ) + +#define FT_RENEW_ARRAY( ptr, curcnt, newcnt ) \ + FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) ) + +#define FT_QNEW( ptr ) \ + FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) ) + +#define FT_QNEW_ARRAY( ptr, count ) \ + FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) ) + +#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \ + FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) ) + + + FT_BASE( FT_Pointer ) + ft_mem_strdup( FT_Memory memory, + const char* str, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_dup( FT_Memory memory, + const void* address, + FT_ULong size, + FT_Error *p_error ); + + +#define FT_MEM_STRDUP( dst, str ) \ + (dst) = (char*)ft_mem_strdup( memory, (const char*)(str), &error ) + +#define FT_STRDUP( dst, str ) \ + FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) ) + +#define FT_MEM_DUP( dst, address, size ) \ + (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), &error ) + +#define FT_DUP( dst, address, size ) \ + FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) ) + + + /* Return >= 1 if a truncation occurs. */ + /* Return 0 if the source string fits the buffer. */ + /* This is *not* the same as strlcpy(). */ + FT_BASE( FT_Int ) + ft_mem_strcpyn( char* dst, + const char* src, + FT_ULong size ); + +#define FT_STRCPYN( dst, src, size ) \ + ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) ) + + /* */ + + +FT_END_HEADER + +#endif /* __FTMEMORY_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftobjs.h b/lib/linux/include/internal/ftobjs.h new file mode 100644 index 0000000..b45a5ed --- /dev/null +++ b/lib/linux/include/internal/ftobjs.h @@ -0,0 +1,1571 @@ +/***************************************************************************/ +/* */ +/* ftobjs.h */ +/* */ +/* The FreeType private base classes (specification). */ +/* */ +/* Copyright 1996-2006, 2008, 2010, 2012-2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of all internal FreeType classes. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTOBJS_H__ +#define __FTOBJS_H__ + +#include <ft2build.h> +#include FT_RENDER_H +#include FT_SIZES_H +#include FT_LCD_FILTER_H +#include FT_INTERNAL_MEMORY_H +#include FT_INTERNAL_GLYPH_LOADER_H +#include FT_INTERNAL_DRIVER_H +#include FT_INTERNAL_AUTOHINT_H +#include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_PIC_H + +#ifdef FT_CONFIG_OPTION_INCREMENTAL +#include FT_INCREMENTAL_H +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* Some generic definitions. */ + /* */ +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef NULL +#define NULL (void*)0 +#endif + + + /*************************************************************************/ + /* */ + /* The min and max functions missing in C. As usual, be careful not to */ + /* write things like FT_MIN( a++, b++ ) to avoid side effects. */ + /* */ +#define FT_MIN( a, b ) ( (a) < (b) ? (a) : (b) ) +#define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) ) + +#define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) ) + + /* + * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min' + * algorithm. We use alpha = 1, beta = 3/8, giving us results with a + * largest error less than 7% compared to the exact value. + */ +#define FT_HYPOT( x, y ) \ + ( x = FT_ABS( x ), \ + y = FT_ABS( y ), \ + x > y ? x + ( 3 * y >> 3 ) \ + : y + ( 3 * x >> 3 ) ) + +#define FT_PAD_FLOOR( x, n ) ( (x) & ~((n)-1) ) +#define FT_PAD_ROUND( x, n ) FT_PAD_FLOOR( (x) + ((n)/2), n ) +#define FT_PAD_CEIL( x, n ) FT_PAD_FLOOR( (x) + ((n)-1), n ) + +#define FT_PIX_FLOOR( x ) ( (x) & ~63 ) +#define FT_PIX_ROUND( x ) FT_PIX_FLOOR( (x) + 32 ) +#define FT_PIX_CEIL( x ) FT_PIX_FLOOR( (x) + 63 ) + + + /* + * character classification functions -- since these are used to parse + * font files, we must not use those in <ctypes.h> which are + * locale-dependent + */ +#define ft_isdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U ) + +#define ft_isxdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U || \ + ( (unsigned)(x) - 'a' ) < 6U || \ + ( (unsigned)(x) - 'A' ) < 6U ) + + /* the next two macros assume ASCII representation */ +#define ft_isupper( x ) ( ( (unsigned)(x) - 'A' ) < 26U ) +#define ft_islower( x ) ( ( (unsigned)(x) - 'a' ) < 26U ) + +#define ft_isalpha( x ) ( ft_isupper( x ) || ft_islower( x ) ) +#define ft_isalnum( x ) ( ft_isdigit( x ) || ft_isalpha( x ) ) + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** C H A R M A P S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to internal charmap object */ + typedef struct FT_CMapRec_* FT_CMap; + + /* handle to charmap class structure */ + typedef const struct FT_CMap_ClassRec_* FT_CMap_Class; + + /* internal charmap object structure */ + typedef struct FT_CMapRec_ + { + FT_CharMapRec charmap; + FT_CMap_Class clazz; + + } FT_CMapRec; + + /* typecase any pointer to a charmap handle */ +#define FT_CMAP( x ) ((FT_CMap)( x )) + + /* obvious macros */ +#define FT_CMAP_PLATFORM_ID( x ) FT_CMAP( x )->charmap.platform_id +#define FT_CMAP_ENCODING_ID( x ) FT_CMAP( x )->charmap.encoding_id +#define FT_CMAP_ENCODING( x ) FT_CMAP( x )->charmap.encoding +#define FT_CMAP_FACE( x ) FT_CMAP( x )->charmap.face + + + /* class method definitions */ + typedef FT_Error + (*FT_CMap_InitFunc)( FT_CMap cmap, + FT_Pointer init_data ); + + typedef void + (*FT_CMap_DoneFunc)( FT_CMap cmap ); + + typedef FT_UInt + (*FT_CMap_CharIndexFunc)( FT_CMap cmap, + FT_UInt32 char_code ); + + typedef FT_UInt + (*FT_CMap_CharNextFunc)( FT_CMap cmap, + FT_UInt32 *achar_code ); + + typedef FT_UInt + (*FT_CMap_CharVarIndexFunc)( FT_CMap cmap, + FT_CMap unicode_cmap, + FT_UInt32 char_code, + FT_UInt32 variant_selector ); + + typedef FT_Bool + (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap cmap, + FT_UInt32 char_code, + FT_UInt32 variant_selector ); + + typedef FT_UInt32 * + (*FT_CMap_VariantListFunc)( FT_CMap cmap, + FT_Memory mem ); + + typedef FT_UInt32 * + (*FT_CMap_CharVariantListFunc)( FT_CMap cmap, + FT_Memory mem, + FT_UInt32 char_code ); + + typedef FT_UInt32 * + (*FT_CMap_VariantCharListFunc)( FT_CMap cmap, + FT_Memory mem, + FT_UInt32 variant_selector ); + + + typedef struct FT_CMap_ClassRec_ + { + FT_ULong size; + FT_CMap_InitFunc init; + FT_CMap_DoneFunc done; + FT_CMap_CharIndexFunc char_index; + FT_CMap_CharNextFunc char_next; + + /* Subsequent entries are special ones for format 14 -- the variant */ + /* selector subtable which behaves like no other */ + + FT_CMap_CharVarIndexFunc char_var_index; + FT_CMap_CharVarIsDefaultFunc char_var_default; + FT_CMap_VariantListFunc variant_list; + FT_CMap_CharVariantListFunc charvariant_list; + FT_CMap_VariantCharListFunc variantchar_list; + + } FT_CMap_ClassRec; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + FT_CALLBACK_TABLE const FT_CMap_ClassRec class_; + +#define FT_DEFINE_CMAP_CLASS( \ + class_, \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_CMap_ClassRec class_ = \ + { \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_CMap_ClassRec* clazz ); + +#define FT_DEFINE_CMAP_CLASS( \ + class_, \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_CMap_ClassRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->size = size_; \ + clazz->init = init_; \ + clazz->done = done_; \ + clazz->char_index = char_index_; \ + clazz->char_next = char_next_; \ + clazz->char_var_index = char_var_index_; \ + clazz->char_var_default = char_var_default_; \ + clazz->variant_list = variant_list_; \ + clazz->charvariant_list = charvariant_list_; \ + clazz->variantchar_list = variantchar_list_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* create a new charmap and add it to charmap->face */ + FT_BASE( FT_Error ) + FT_CMap_New( FT_CMap_Class clazz, + FT_Pointer init_data, + FT_CharMap charmap, + FT_CMap *acmap ); + + /* destroy a charmap and remove it from face's list */ + FT_BASE( void ) + FT_CMap_Done( FT_CMap cmap ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Face_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_Face */ + /* object. These fields may change between different releases of */ + /* FreeType. */ + /* */ + /* <Fields> */ + /* max_points :: */ + /* The maximum number of points used to store the vectorial outline */ + /* of any glyph in this face. If this value cannot be known in */ + /* advance, or if the face isn't scalable, this should be set to 0. */ + /* Only relevant for scalable formats. */ + /* */ + /* max_contours :: */ + /* The maximum number of contours used to store the vectorial */ + /* outline of any glyph in this face. If this value cannot be */ + /* known in advance, or if the face isn't scalable, this should be */ + /* set to 0. Only relevant for scalable formats. */ + /* */ + /* transform_matrix :: */ + /* A 2x2 matrix of 16.16 coefficients used to transform glyph */ + /* outlines after they are loaded from the font. Only used by the */ + /* convenience functions. */ + /* */ + /* transform_delta :: */ + /* A translation vector used to transform glyph outlines after they */ + /* are loaded from the font. Only used by the convenience */ + /* functions. */ + /* */ + /* transform_flags :: */ + /* Some flags used to classify the transform. Only used by the */ + /* convenience functions. */ + /* */ + /* services :: */ + /* A cache for frequently used services. It should be only */ + /* accessed with the macro `FT_FACE_LOOKUP_SERVICE'. */ + /* */ + /* incremental_interface :: */ + /* If non-null, the interface through which glyph data and metrics */ + /* are loaded incrementally for faces that do not provide all of */ + /* this data when first opened. This field exists only if */ + /* @FT_CONFIG_OPTION_INCREMENTAL is defined. */ + /* */ + /* ignore_unpatented_hinter :: */ + /* This boolean flag instructs the glyph loader to ignore the */ + /* native font hinter, if one is found. This is exclusively used */ + /* in the case when the unpatented hinter is compiled within the */ + /* library. */ + /* */ + /* refcount :: */ + /* A counter initialized to~1 at the time an @FT_Face structure is */ + /* created. @FT_Reference_Face increments this counter, and */ + /* @FT_Done_Face only destroys a face if the counter is~1, */ + /* otherwise it simply decrements it. */ + /* */ + typedef struct FT_Face_InternalRec_ + { + FT_Matrix transform_matrix; + FT_Vector transform_delta; + FT_Int transform_flags; + + FT_ServiceCacheRec services; + +#ifdef FT_CONFIG_OPTION_INCREMENTAL + FT_Incremental_InterfaceRec* incremental_interface; +#endif + + FT_Bool ignore_unpatented_hinter; + FT_Int refcount; + + } FT_Face_InternalRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Slot_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_GlyphSlot */ + /* object. These fields may change between different releases of */ + /* FreeType. */ + /* */ + /* <Fields> */ + /* loader :: The glyph loader object used to load outlines */ + /* into the glyph slot. */ + /* */ + /* flags :: Possible values are zero or */ + /* FT_GLYPH_OWN_BITMAP. The latter indicates */ + /* that the FT_GlyphSlot structure owns the */ + /* bitmap buffer. */ + /* */ + /* glyph_transformed :: Boolean. Set to TRUE when the loaded glyph */ + /* must be transformed through a specific */ + /* font transformation. This is _not_ the same */ + /* as the face transform set through */ + /* FT_Set_Transform(). */ + /* */ + /* glyph_matrix :: The 2x2 matrix corresponding to the glyph */ + /* transformation, if necessary. */ + /* */ + /* glyph_delta :: The 2d translation vector corresponding to */ + /* the glyph transformation, if necessary. */ + /* */ + /* glyph_hints :: Format-specific glyph hints management. */ + /* */ + +#define FT_GLYPH_OWN_BITMAP 0x1 + + typedef struct FT_Slot_InternalRec_ + { + FT_GlyphLoader loader; + FT_UInt flags; + FT_Bool glyph_transformed; + FT_Matrix glyph_matrix; + FT_Vector glyph_delta; + void* glyph_hints; + + } FT_GlyphSlot_InternalRec; + + +#if 0 + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_Size */ + /* object. Currently, it's empty. */ + /* */ + /*************************************************************************/ + + typedef struct FT_Size_InternalRec_ + { + /* empty */ + + } FT_Size_InternalRec; + +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** M O D U L E S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ModuleRec */ + /* */ + /* <Description> */ + /* A module object instance. */ + /* */ + /* <Fields> */ + /* clazz :: A pointer to the module's class. */ + /* */ + /* library :: A handle to the parent library object. */ + /* */ + /* memory :: A handle to the memory manager. */ + /* */ + typedef struct FT_ModuleRec_ + { + FT_Module_Class* clazz; + FT_Library library; + FT_Memory memory; + + } FT_ModuleRec; + + + /* typecast an object to an FT_Module */ +#define FT_MODULE( x ) ((FT_Module)( x )) +#define FT_MODULE_CLASS( x ) FT_MODULE( x )->clazz +#define FT_MODULE_LIBRARY( x ) FT_MODULE( x )->library +#define FT_MODULE_MEMORY( x ) FT_MODULE( x )->memory + + +#define FT_MODULE_IS_DRIVER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_FONT_DRIVER ) + +#define FT_MODULE_IS_RENDERER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_RENDERER ) + +#define FT_MODULE_IS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_HINTER ) + +#define FT_MODULE_IS_STYLER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_STYLER ) + +#define FT_DRIVER_IS_SCALABLE( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_SCALABLE ) + +#define FT_DRIVER_USES_OUTLINES( x ) !( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_NO_OUTLINES ) + +#define FT_DRIVER_HAS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_HAS_HINTER ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module_Interface */ + /* */ + /* <Description> */ + /* Finds a module and returns its specific interface as a typeless */ + /* pointer. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module-specific interface if available, 0 otherwise. */ + /* */ + /* <Note> */ + /* You should better be familiar with FreeType internals to know */ + /* which module to look for, and what its interface is :-) */ + /* */ + FT_BASE( const void* ) + FT_Get_Module_Interface( FT_Library library, + const char* mod_name ); + + FT_BASE( FT_Pointer ) + ft_module_get_service( FT_Module module, + const char* service_id ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** F A C E, S I Z E & G L Y P H S L O T O B J E C T S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* a few macros used to perform easy typecasts with minimal brain damage */ + +#define FT_FACE( x ) ((FT_Face)(x)) +#define FT_SIZE( x ) ((FT_Size)(x)) +#define FT_SLOT( x ) ((FT_GlyphSlot)(x)) + +#define FT_FACE_DRIVER( x ) FT_FACE( x )->driver +#define FT_FACE_LIBRARY( x ) FT_FACE_DRIVER( x )->root.library +#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory +#define FT_FACE_STREAM( x ) FT_FACE( x )->stream + +#define FT_SIZE_FACE( x ) FT_SIZE( x )->face +#define FT_SLOT_FACE( x ) FT_SLOT( x )->face + +#define FT_FACE_SLOT( x ) FT_FACE( x )->glyph +#define FT_FACE_SIZE( x ) FT_FACE( x )->size + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_GlyphSlot */ + /* */ + /* <Description> */ + /* It is sometimes useful to have more than one glyph slot for a */ + /* given face object. This function is used to create additional */ + /* slots. All of them are automatically discarded when the face is */ + /* destroyed. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* aslot :: A handle to a new glyph slot object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + FT_BASE( FT_Error ) + FT_New_GlyphSlot( FT_Face face, + FT_GlyphSlot *aslot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_GlyphSlot */ + /* */ + /* <Description> */ + /* Destroys a given glyph slot. Remember however that all slots are */ + /* automatically destroyed with its parent. Using this function is */ + /* not always mandatory. */ + /* */ + /* <Input> */ + /* slot :: A handle to a target glyph slot. */ + /* */ + FT_BASE( void ) + FT_Done_GlyphSlot( FT_GlyphSlot slot ); + + /* */ + +#define FT_REQUEST_WIDTH( req ) \ + ( (req)->horiResolution \ + ? (FT_Pos)( (req)->width * (req)->horiResolution + 36 ) / 72 \ + : (req)->width ) + +#define FT_REQUEST_HEIGHT( req ) \ + ( (req)->vertResolution \ + ? (FT_Pos)( (req)->height * (req)->vertResolution + 36 ) / 72 \ + : (req)->height ) + + + /* Set the metrics according to a bitmap strike. */ + FT_BASE( void ) + FT_Select_Metrics( FT_Face face, + FT_ULong strike_index ); + + + /* Set the metrics according to a size request. */ + FT_BASE( void ) + FT_Request_Metrics( FT_Face face, + FT_Size_Request req ); + + + /* Match a size request against `available_sizes'. */ + FT_BASE( FT_Error ) + FT_Match_Size( FT_Face face, + FT_Size_Request req, + FT_Bool ignore_width, + FT_ULong* size_index ); + + + /* Use the horizontal metrics to synthesize the vertical metrics. */ + /* If `advance' is zero, it is also synthesized. */ + FT_BASE( void ) + ft_synthesize_vertical_metrics( FT_Glyph_Metrics* metrics, + FT_Pos advance ); + + + /* Free the bitmap of a given glyphslot when needed (i.e., only when it */ + /* was allocated with ft_glyphslot_alloc_bitmap). */ + FT_BASE( void ) + ft_glyphslot_free_bitmap( FT_GlyphSlot slot ); + + + /* Allocate a new bitmap buffer in a glyph slot. */ + FT_BASE( FT_Error ) + ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, + FT_ULong size ); + + + /* Set the bitmap buffer in a glyph slot to a given pointer. The buffer */ + /* will not be freed by a later call to ft_glyphslot_free_bitmap. */ + FT_BASE( void ) + ft_glyphslot_set_bitmap( FT_GlyphSlot slot, + FT_Byte* buffer ); + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** R E N D E R E R S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + +#define FT_RENDERER( x ) ((FT_Renderer)( x )) +#define FT_GLYPH( x ) ((FT_Glyph)( x )) +#define FT_BITMAP_GLYPH( x ) ((FT_BitmapGlyph)( x )) +#define FT_OUTLINE_GLYPH( x ) ((FT_OutlineGlyph)( x )) + + + typedef struct FT_RendererRec_ + { + FT_ModuleRec root; + FT_Renderer_Class* clazz; + FT_Glyph_Format glyph_format; + FT_Glyph_Class glyph_class; + + FT_Raster raster; + FT_Raster_Render_Func raster_render; + FT_Renderer_RenderFunc render; + + } FT_RendererRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** F O N T D R I V E R S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* typecast a module into a driver easily */ +#define FT_DRIVER( x ) ((FT_Driver)(x)) + + /* typecast a module as a driver, and get its driver class */ +#define FT_DRIVER_CLASS( x ) FT_DRIVER( x )->clazz + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_DriverRec */ + /* */ + /* <Description> */ + /* The root font driver class. A font driver is responsible for */ + /* managing and loading font files of a given format. */ + /* */ + /* <Fields> */ + /* root :: Contains the fields of the root module class. */ + /* */ + /* clazz :: A pointer to the font driver's class. Note that */ + /* this is NOT root.clazz. `class' wasn't used */ + /* as it is a reserved word in C++. */ + /* */ + /* faces_list :: The list of faces currently opened by this */ + /* driver. */ + /* */ + /* glyph_loader :: The glyph loader for all faces managed by this */ + /* driver. This object isn't defined for unscalable */ + /* formats. */ + /* */ + typedef struct FT_DriverRec_ + { + FT_ModuleRec root; + FT_Driver_Class clazz; + FT_ListRec faces_list; + FT_GlyphLoader glyph_loader; + + } FT_DriverRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** L I B R A R I E S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* This hook is used by the TrueType debugger. It must be set to an */ + /* alternate truetype bytecode interpreter function. */ +#define FT_DEBUG_HOOK_TRUETYPE 0 + + + /* Set this debug hook to a non-null pointer to force unpatented hinting */ + /* for all faces when both TT_USE_BYTECODE_INTERPRETER and */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING are defined. This is only used */ + /* during debugging. */ +#define FT_DEBUG_HOOK_UNPATENTED_HINTING 1 + + + typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap, + FT_Render_Mode render_mode, + FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_LibraryRec */ + /* */ + /* <Description> */ + /* The FreeType library class. This is the root of all FreeType */ + /* data. Use FT_New_Library() to create a library object, and */ + /* FT_Done_Library() to discard it and all child objects. */ + /* */ + /* <Fields> */ + /* memory :: The library's memory object. Manages memory */ + /* allocation. */ + /* */ + /* version_major :: The major version number of the library. */ + /* */ + /* version_minor :: The minor version number of the library. */ + /* */ + /* version_patch :: The current patch level of the library. */ + /* */ + /* num_modules :: The number of modules currently registered */ + /* within this library. This is set to 0 for new */ + /* libraries. New modules are added through the */ + /* FT_Add_Module() API function. */ + /* */ + /* modules :: A table used to store handles to the currently */ + /* registered modules. Note that each font driver */ + /* contains a list of its opened faces. */ + /* */ + /* renderers :: The list of renderers currently registered */ + /* within the library. */ + /* */ + /* cur_renderer :: The current outline renderer. This is a */ + /* shortcut used to avoid parsing the list on */ + /* each call to FT_Outline_Render(). It is a */ + /* handle to the current renderer for the */ + /* FT_GLYPH_FORMAT_OUTLINE format. */ + /* */ + /* auto_hinter :: XXX */ + /* */ + /* raster_pool :: The raster object's render pool. This can */ + /* ideally be changed dynamically at run-time. */ + /* */ + /* raster_pool_size :: The size of the render pool in bytes. */ + /* */ + /* debug_hooks :: XXX */ + /* */ + /* lcd_filter :: If subpixel rendering is activated, the */ + /* selected LCD filter mode. */ + /* */ + /* lcd_extra :: If subpixel rendering is activated, the number */ + /* of extra pixels needed for the LCD filter. */ + /* */ + /* lcd_weights :: If subpixel rendering is activated, the LCD */ + /* filter weights, if any. */ + /* */ + /* lcd_filter_func :: If subpixel rendering is activated, the LCD */ + /* filtering callback function. */ + /* */ + /* pic_container :: Contains global structs and tables, instead */ + /* of defining them globallly. */ + /* */ + /* refcount :: A counter initialized to~1 at the time an */ + /* @FT_Library structure is created. */ + /* @FT_Reference_Library increments this counter, */ + /* and @FT_Done_Library only destroys a library */ + /* if the counter is~1, otherwise it simply */ + /* decrements it. */ + /* */ + typedef struct FT_LibraryRec_ + { + FT_Memory memory; /* library's memory manager */ + + FT_Int version_major; + FT_Int version_minor; + FT_Int version_patch; + + FT_UInt num_modules; + FT_Module modules[FT_MAX_MODULES]; /* module objects */ + + FT_ListRec renderers; /* list of renderers */ + FT_Renderer cur_renderer; /* current outline renderer */ + FT_Module auto_hinter; + + FT_Byte* raster_pool; /* scan-line conversion */ + /* render pool */ + FT_ULong raster_pool_size; /* size of render pool in bytes */ + + FT_DebugHook_Func debug_hooks[4]; + +#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING + FT_LcdFilter lcd_filter; + FT_Int lcd_extra; /* number of extra pixels */ + FT_Byte lcd_weights[7]; /* filter weights, if any */ + FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */ +#endif + +#ifdef FT_CONFIG_OPTION_PIC + FT_PIC_Container pic_container; +#endif + + FT_Int refcount; + + } FT_LibraryRec; + + + FT_BASE( FT_Renderer ) + FT_Lookup_Renderer( FT_Library library, + FT_Glyph_Format format, + FT_ListNode* node ); + + FT_BASE( FT_Error ) + FT_Render_Glyph_Internal( FT_Library library, + FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + typedef const char* + (*FT_Face_GetPostscriptNameFunc)( FT_Face face ); + + typedef FT_Error + (*FT_Face_GetGlyphNameFunc)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_Face_GetGlyphNameIndexFunc)( FT_Face face, + FT_String* glyph_name ); + + +#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory */ + /* */ + /* <Description> */ + /* Creates a new memory object. */ + /* */ + /* <Return> */ + /* A pointer to the new memory object. 0 in case of error. */ + /* */ + FT_BASE( FT_Memory ) + FT_New_Memory( void ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Memory */ + /* */ + /* <Description> */ + /* Discards memory manager. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* */ + FT_BASE( void ) + FT_Done_Memory( FT_Memory memory ); + +#endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ + + + /* Define default raster's interface. The default raster is located in */ + /* `src/base/ftraster.c'. */ + /* */ + /* Client applications can register new rasters through the */ + /* FT_Set_Raster() API. */ + +#ifndef FT_NO_DEFAULT_RASTER + FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster; +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** P I C S U P P O R T ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* PIC support macros for ftimage.h */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_OUTLINE_FUNCS */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Outline_Funcs struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_OUTLINE_FUNCS( \ + class_, \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ ) \ + static const FT_Outline_Funcs class_ = \ + { \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_OUTLINE_FUNCS( \ + class_, \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ ) \ + static FT_Error \ + Init_Class_ ## class_( FT_Outline_Funcs* clazz ) \ + { \ + clazz->move_to = move_to_; \ + clazz->line_to = line_to_; \ + clazz->conic_to = conic_to_; \ + clazz->cubic_to = cubic_to_; \ + clazz->shift = shift_; \ + clazz->delta = delta_; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_RASTER_FUNCS */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Raster_Funcs struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_RASTER_FUNCS( \ + class_, \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ ) \ + const FT_Raster_Funcs class_ = \ + { \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_RASTER_FUNCS( \ + class_, \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Raster_Funcs* clazz ) \ + { \ + clazz->glyph_format = glyph_format_; \ + clazz->raster_new = raster_new_; \ + clazz->raster_reset = raster_reset_; \ + clazz->raster_set_mode = raster_set_mode_; \ + clazz->raster_render = raster_render_; \ + clazz->raster_done = raster_done_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* PIC support macros for ftrender.h */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_GLYPH */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Glyph_Class struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated stcture to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_GLYPH( \ + class_, \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Glyph_Class class_ = \ + { \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_GLYPH( \ + class_, \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Glyph_Class* clazz ) \ + { \ + clazz->glyph_size = size_; \ + clazz->glyph_format = format_; \ + clazz->glyph_init = init_; \ + clazz->glyph_done = done_; \ + clazz->glyph_copy = copy_; \ + clazz->glyph_transform = transform_; \ + clazz->glyph_bbox = bbox_; \ + clazz->glyph_prepare = prepare_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_RENDERER */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of a */ + /* FT_Renderer_Class struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_RENDERER */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Renderer_Class struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion will need */ + /* to be called with a pointer where the allocated structure is */ + /* returned. And when it is no longer needed a `destroy' function */ + /* needs to be called to release that allocation. */ + /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* a mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by the renderer definition calling `FT_DEFINE_RENDERER' in the */ + /* following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_RENDERER( class_ ) \ + FT_EXPORT_VAR( const FT_Renderer_Class ) class_; + +#define FT_DEFINE_RENDERER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + glyph_format_, \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + raster_class_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Renderer_Class class_ = \ + { \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + glyph_format_, \ + \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + \ + raster_class_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_RENDERER( class_ ) FT_DECLARE_MODULE( class_ ) + +#define FT_DEFINE_RENDERER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + glyph_format_, \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + raster_class_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Renderer_Class* rclazz = (FT_Renderer_Class*)clazz; \ + FT_Memory memory = library->memory; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( rclazz ) \ + FT_FREE( rclazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Renderer_Class* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + clazz->glyph_format = glyph_format_; \ + \ + clazz->render_glyph = render_glyph_; \ + clazz->transform_glyph = transform_glyph_; \ + clazz->get_glyph_cbox = get_glyph_cbox_; \ + clazz->set_mode = set_mode_; \ + \ + clazz->raster_class = raster_class_; \ + \ + *output_class = (FT_Module_Class*)clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* PIC support macros for ftmodapi.h **/ + + +#ifdef FT_CONFIG_OPTION_PIC + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Creator */ + /* */ + /* <Description> */ + /* A function used to create (allocate) a new module class object. */ + /* The object's members are initialized, but the module itself is */ + /* not. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* output_class :: Initialized with the newly allocated class. */ + /* */ + typedef FT_Error + (*FT_Module_Creator)( FT_Memory memory, + FT_Module_Class** output_class ); + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destroyer */ + /* */ + /* <Description> */ + /* A function used to destroy (deallocate) a module class object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* clazz :: Module class to destroy. */ + /* */ + typedef void + (*FT_Module_Destroyer)( FT_Memory memory, + FT_Module_Class* clazz ); + +#endif + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_MODULE */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of a */ + /* FT_Module_Class struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_MODULE */ + /* */ + /* <Description> */ + /* Used to initialize an instance of an FT_Module_Class struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion needs to */ + /* be called with a pointer where the allocated structure is */ + /* returned. And when it is no longer needed a `destroy' function */ + /* needs to be called to release that allocation. */ + /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* a mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by the module definition calling `FT_DEFINE_MODULE' in the */ + /* following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ + /* <Macro> */ + /* FT_DEFINE_ROOT_MODULE */ + /* */ + /* <Description> */ + /* Used to initialize an instance of an FT_Module_Class struct inside */ + /* another struct that contains it or in a function that initializes */ + /* that containing struct. */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_MODULE( class_ ) \ + FT_CALLBACK_TABLE \ + const FT_Module_Class class_; + +#define FT_DEFINE_ROOT_MODULE( \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + { \ + flags_, \ + size_, \ + \ + name_, \ + version_, \ + requires_, \ + \ + interface_, \ + \ + init_, \ + done_, \ + get_interface_, \ + }, + +#define FT_DEFINE_MODULE( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Module_Class class_ = \ + { \ + flags_, \ + size_, \ + \ + name_, \ + version_, \ + requires_, \ + \ + interface_, \ + \ + init_, \ + done_, \ + get_interface_, \ + }; + + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_MODULE( class_ ) \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ); \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ); + +#define FT_DEFINE_ROOT_MODULE( \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + clazz->root.module_flags = flags_; \ + clazz->root.module_size = size_; \ + clazz->root.module_name = name_; \ + clazz->root.module_version = version_; \ + clazz->root.module_requires = requires_; \ + \ + clazz->root.module_interface = interface_; \ + \ + clazz->root.module_init = init_; \ + clazz->root.module_done = done_; \ + clazz->root.get_interface = get_interface_; + +#define FT_DEFINE_MODULE( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Memory memory = library->memory; \ + FT_Module_Class* clazz = NULL; \ + FT_Error error; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + clazz->module_flags = flags_; \ + clazz->module_size = size_; \ + clazz->module_name = name_; \ + clazz->module_version = version_; \ + clazz->module_requires = requires_; \ + \ + clazz->module_interface = interface_; \ + \ + clazz->module_init = init_; \ + clazz->module_done = done_; \ + clazz->get_interface = get_interface_; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + +FT_END_HEADER + +#endif /* __FTOBJS_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftpic.h b/lib/linux/include/internal/ftpic.h new file mode 100644 index 0000000..485ce7a --- /dev/null +++ b/lib/linux/include/internal/ftpic.h @@ -0,0 +1,71 @@ +/***************************************************************************/ +/* */ +/* ftpic.h */ +/* */ +/* The FreeType position independent code services (declaration). */ +/* */ +/* Copyright 2009, 2012 by */ +/* Oran Agra and Mickey Gabel. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Modules that ordinarily have const global data that need address */ + /* can instead define pointers here. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTPIC_H__ +#define __FTPIC_H__ + + +FT_BEGIN_HEADER + +#ifdef FT_CONFIG_OPTION_PIC + + typedef struct FT_PIC_Container_ + { + /* pic containers for base */ + void* base; + + /* pic containers for modules */ + void* autofit; + void* cff; + void* pshinter; + void* psnames; + void* raster; + void* sfnt; + void* smooth; + void* truetype; + + } FT_PIC_Container; + + + /* Initialize the various function tables, structs, etc. */ + /* stored in the container. */ + FT_BASE( FT_Error ) + ft_pic_container_init( FT_Library library ); + + + /* Destroy the contents of the container. */ + FT_BASE( void ) + ft_pic_container_destroy( FT_Library library ); + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + +FT_END_HEADER + +#endif /* __FTPIC_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftrfork.h b/lib/linux/include/internal/ftrfork.h new file mode 100644 index 0000000..d750cbe --- /dev/null +++ b/lib/linux/include/internal/ftrfork.h @@ -0,0 +1,266 @@ +/***************************************************************************/ +/* */ +/* ftrfork.h */ +/* */ +/* Embedded resource forks accessor (specification). */ +/* */ +/* Copyright 2004, 2006, 2007, 2012, 2013 by */ +/* Masatake YAMATO and Redhat K.K. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* Development of the code in this file is support of */ +/* Information-technology Promotion Agency, Japan. */ +/***************************************************************************/ + + +#ifndef __FTRFORK_H__ +#define __FTRFORK_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* Number of guessing rules supported in `FT_Raccess_Guess'. */ + /* Don't forget to increment the number if you add a new guessing rule. */ +#define FT_RACCESS_N_RULES 9 + + + /* A structure to describe a reference in a resource by its resource ID */ + /* and internal offset. The `POST' resource expects to be concatenated */ + /* by the order of resource IDs instead of its appearance in the file. */ + + typedef struct FT_RFork_Ref_ + { + FT_UShort res_id; + FT_ULong offset; + + } FT_RFork_Ref; + +#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK + typedef FT_Error + (*ft_raccess_guess_func)( FT_Library library, + FT_Stream stream, + char *base_file_name, + char **result_file_name, + FT_Long *result_offset ); + + typedef enum FT_RFork_Rule_ { + FT_RFork_Rule_invalid = -2, + FT_RFork_Rule_uknown, /* -1 */ + FT_RFork_Rule_apple_double, + FT_RFork_Rule_apple_single, + FT_RFork_Rule_darwin_ufs_export, + FT_RFork_Rule_darwin_newvfs, + FT_RFork_Rule_darwin_hfsplus, + FT_RFork_Rule_vfat, + FT_RFork_Rule_linux_cap, + FT_RFork_Rule_linux_double, + FT_RFork_Rule_linux_netatalk + } FT_RFork_Rule; + + /* For fast translation between rule index and rule type, + * the macros FT_RFORK_xxx should be kept consistent with + * the raccess_guess_funcs table + */ + typedef struct ft_raccess_guess_rec_ { + ft_raccess_guess_func func; + FT_RFork_Rule type; + } ft_raccess_guess_rec; + +#ifndef FT_CONFIG_OPTION_PIC + + /* this array is a storage in non-PIC mode, so ; is needed in END */ +#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type ) \ + const type name[] = { +#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix ) \ + { raccess_guess_ ## func_suffix, \ + FT_RFork_Rule_ ## type_suffix }, +#define CONST_FT_RFORK_RULE_ARRAY_END }; + +#else /* FT_CONFIG_OPTION_PIC */ + + /* this array is a function in PIC mode, so no ; is needed in END */ +#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type ) \ + void \ + FT_Init_Table_ ## name( type* storage ) \ + { \ + type* local = storage; \ + \ + \ + int i = 0; +#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix ) \ + local[i].func = raccess_guess_ ## func_suffix; \ + local[i].type = FT_RFork_Rule_ ## type_suffix; \ + i++; +#define CONST_FT_RFORK_RULE_ARRAY_END } + +#endif /* FT_CONFIG_OPTION_PIC */ + +#endif /* FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Guess */ + /* */ + /* <Description> */ + /* Guess a file name and offset where the actual resource fork is */ + /* stored. The macro FT_RACCESS_N_RULES holds the number of */ + /* guessing rules; the guessed result for the Nth rule is */ + /* represented as a triplet: a new file name (new_names[N]), a file */ + /* offset (offsets[N]), and an error code (errors[N]). */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* base_name :: */ + /* The (base) file name of the resource fork used for some */ + /* guessing rules. */ + /* */ + /* <Output> */ + /* new_names :: */ + /* An array of guessed file names in which the resource forks may */ + /* exist. If `new_names[N]' is NULL, the guessed file name is */ + /* equal to `base_name'. */ + /* */ + /* offsets :: */ + /* An array of guessed file offsets. `offsets[N]' holds the file */ + /* offset of the possible start of the resource fork in file */ + /* `new_names[N]'. */ + /* */ + /* errors :: */ + /* An array of FreeType error codes. `errors[N]' is the error */ + /* code of Nth guessing rule function. If `errors[N]' is not */ + /* FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless. */ + /* */ + FT_BASE( void ) + FT_Raccess_Guess( FT_Library library, + FT_Stream stream, + char* base_name, + char** new_names, + FT_Long* offsets, + FT_Error* errors ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Get_HeaderInfo */ + /* */ + /* <Description> */ + /* Get the information from the header of resource fork. The */ + /* information includes the file offset where the resource map */ + /* starts, and the file offset where the resource data starts. */ + /* `FT_Raccess_Get_DataOffsets' requires these two data. */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* rfork_offset :: */ + /* The file offset where the resource fork starts. */ + /* */ + /* <Output> */ + /* map_offset :: */ + /* The file offset where the resource map starts. */ + /* */ + /* rdata_pos :: */ + /* The file offset where the resource data starts. */ + /* */ + /* <Return> */ + /* FreeType error code. FT_Err_Ok means success. */ + /* */ + FT_BASE( FT_Error ) + FT_Raccess_Get_HeaderInfo( FT_Library library, + FT_Stream stream, + FT_Long rfork_offset, + FT_Long *map_offset, + FT_Long *rdata_pos ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Get_DataOffsets */ + /* */ + /* <Description> */ + /* Get the data offsets for a tag in a resource fork. Offsets are */ + /* stored in an array because, in some cases, resources in a resource */ + /* fork have the same tag. */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* map_offset :: */ + /* The file offset where the resource map starts. */ + /* */ + /* rdata_pos :: */ + /* The file offset where the resource data starts. */ + /* */ + /* tag :: */ + /* The resource tag. */ + /* */ + /* sort_by_res_id :: */ + /* A Boolean to sort the fragmented resource by their ids. */ + /* The fragmented resources for `POST' resource should be sorted */ + /* to restore Type1 font properly. For `snft' resources, sorting */ + /* may induce a different order of the faces in comparison to that */ + /* by QuickDraw API. */ + /* */ + /* <Output> */ + /* offsets :: */ + /* The stream offsets for the resource data specified by `tag'. */ + /* This array is allocated by the function, so you have to call */ + /* @ft_mem_free after use. */ + /* */ + /* count :: */ + /* The length of offsets array. */ + /* */ + /* <Return> */ + /* FreeType error code. FT_Err_Ok means success. */ + /* */ + /* <Note> */ + /* Normally you should use `FT_Raccess_Get_HeaderInfo' to get the */ + /* value for `map_offset' and `rdata_pos'. */ + /* */ + FT_BASE( FT_Error ) + FT_Raccess_Get_DataOffsets( FT_Library library, + FT_Stream stream, + FT_Long map_offset, + FT_Long rdata_pos, + FT_Long tag, + FT_Bool sort_by_res_id, + FT_Long **offsets, + FT_Long *count ); + + +FT_END_HEADER + +#endif /* __FTRFORK_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftserv.h b/lib/linux/include/internal/ftserv.h new file mode 100644 index 0000000..1203ec8 --- /dev/null +++ b/lib/linux/include/internal/ftserv.h @@ -0,0 +1,763 @@ +/***************************************************************************/ +/* */ +/* ftserv.h */ +/* */ +/* The FreeType services (specification only). */ +/* */ +/* Copyright 2003-2007, 2009, 2012, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Each module can export one or more `services'. Each service is */ + /* identified by a constant string and modeled by a pointer; the latter */ + /* generally corresponds to a structure containing function pointers. */ + /* */ + /* Note that a service's data cannot be a mere function pointer because */ + /* in C it is possible that function pointers might be implemented */ + /* differently than data pointers (e.g. 48 bits instead of 32). */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSERV_H__ +#define __FTSERV_H__ + + +FT_BEGIN_HEADER + + /* + * @macro: + * FT_FACE_FIND_SERVICE + * + * @description: + * This macro is used to look up a service from a face's driver module. + * + * @input: + * face :: + * The source face handle. + * + * id :: + * A string describing the service as defined in the service's + * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to + * `multi-masters'). It is automatically prefixed with + * `FT_SERVICE_ID_'. + * + * @output: + * ptr :: + * A variable that receives the service pointer. Will be NULL + * if not found. + */ +#ifdef __cplusplus + +#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_ = NULL; \ + FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \ + \ + \ + if ( module->clazz->get_interface ) \ + _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ + *_pptr_ = _tmp_; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_ = NULL; \ + \ + if ( module->clazz->get_interface ) \ + _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ + ptr = _tmp_; \ + FT_END_STMNT + +#endif /* !C++ */ + + + /* + * @macro: + * FT_FACE_FIND_GLOBAL_SERVICE + * + * @description: + * This macro is used to look up a service from all modules. + * + * @input: + * face :: + * The source face handle. + * + * id :: + * A string describing the service as defined in the service's + * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to + * `multi-masters'). It is automatically prefixed with + * `FT_SERVICE_ID_'. + * + * @output: + * ptr :: + * A variable that receives the service pointer. Will be NULL + * if not found. + */ +#ifdef __cplusplus + +#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_; \ + FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \ + \ + \ + _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ + *_pptr_ = _tmp_; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_; \ + \ + \ + _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ + ptr = _tmp_; \ + FT_END_STMNT + +#endif /* !C++ */ + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** S E R V I C E D E S C R I P T O R S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * The following structure is used to _describe_ a given service + * to the library. This is useful to build simple static service lists. + */ + typedef struct FT_ServiceDescRec_ + { + const char* serv_id; /* service name */ + const void* serv_data; /* service pointer/data */ + + } FT_ServiceDescRec; + + typedef const FT_ServiceDescRec* FT_ServiceDesc; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_SERVICEDESCREC1 */ + /* FT_DEFINE_SERVICEDESCREC2 */ + /* FT_DEFINE_SERVICEDESCREC3 */ + /* FT_DEFINE_SERVICEDESCREC4 */ + /* FT_DEFINE_SERVICEDESCREC5 */ + /* FT_DEFINE_SERVICEDESCREC6 */ + /* FT_DEFINE_SERVICEDESCREC7 */ + /* */ + /* <Description> */ + /* Used to initialize an array of FT_ServiceDescRec structures. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs to */ + /* be called with a pointer to return an allocated array. As soon as */ + /* it is no longer needed, a `destroy' function needs to be called to */ + /* release that allocation. */ + /* */ + /* These functions should be manually called from the `pic_init' and */ + /* `pic_free' functions of your module (see FT_DEFINE_MODULE). */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the array will be */ + /* allocated in the global scope (or the scope where the macro is */ + /* used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICEDESCREC1( class_, \ + serv_id_1, serv_data_1 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC2( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC3( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC4( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC5( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC6( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { serv_id_6, serv_data_6 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC7( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6, \ + serv_id_7, serv_data_7 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { serv_id_6, serv_data_6 }, \ + { serv_id_7, serv_data_7 }, \ + { NULL, NULL } \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICEDESCREC1( class_, \ + serv_id_1, serv_data_1 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = NULL; \ + clazz[1].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC2( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = NULL; \ + clazz[2].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC3( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = NULL; \ + clazz[3].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC4( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = NULL; \ + clazz[4].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC5( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = NULL; \ + clazz[5].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC6( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = serv_id_6; \ + clazz[5].serv_data = serv_data_6; \ + clazz[6].serv_id = NULL; \ + clazz[6].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC7( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6, \ + serv_id_7, serv_data_7 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = serv_id_6; \ + clazz[5].serv_data = serv_data_6; \ + clazz[6].serv_id = serv_id_7; \ + clazz[6].serv_data = serv_data_7; \ + clazz[7].serv_id = NULL; \ + clazz[7].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* + * Parse a list of FT_ServiceDescRec descriptors and look for + * a specific service by ID. Note that the last element in the + * array must be { NULL, NULL }, and that the function should + * return NULL if the service isn't available. + * + * This function can be used by modules to implement their + * `get_service' method. + */ + FT_BASE( FT_Pointer ) + ft_service_list_lookup( FT_ServiceDesc service_descriptors, + const char* service_id ); + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** S E R V I C E S C A C H E *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * This structure is used to store a cache for several frequently used + * services. It is the type of `face->internal->services'. You + * should only use FT_FACE_LOOKUP_SERVICE to access it. + * + * All fields should have the type FT_Pointer to relax compilation + * dependencies. We assume the developer isn't completely stupid. + * + * Each field must be named `service_XXXX' where `XXX' corresponds to + * the correct FT_SERVICE_ID_XXXX macro. See the definition of + * FT_FACE_LOOKUP_SERVICE below how this is implemented. + * + */ + typedef struct FT_ServiceCacheRec_ + { + FT_Pointer service_POSTSCRIPT_FONT_NAME; + FT_Pointer service_MULTI_MASTERS; + FT_Pointer service_GLYPH_DICT; + FT_Pointer service_PFR_METRICS; + FT_Pointer service_WINFNT; + + } FT_ServiceCacheRec, *FT_ServiceCache; + + + /* + * A magic number used within the services cache. + */ + + /* ensure that value `1' has the same width as a pointer */ +#define FT_SERVICE_UNAVAILABLE ((FT_Pointer)~(FT_PtrDist)1) + + + /* + * @macro: + * FT_FACE_LOOKUP_SERVICE + * + * @description: + * This macro is used to lookup a service from a face's driver module + * using its cache. + * + * @input: + * face:: + * The source face handle containing the cache. + * + * field :: + * The field name in the cache. + * + * id :: + * The service ID. + * + * @output: + * ptr :: + * A variable receiving the service data. NULL if not available. + */ +#ifdef __cplusplus + +#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Pointer svc; \ + FT_Pointer* Pptr = (FT_Pointer*)&(ptr); \ + \ + \ + svc = FT_FACE( face )->internal->services. service_ ## id; \ + if ( svc == FT_SERVICE_UNAVAILABLE ) \ + svc = NULL; \ + else if ( svc == NULL ) \ + { \ + FT_FACE_FIND_SERVICE( face, svc, id ); \ + \ + FT_FACE( face )->internal->services. service_ ## id = \ + (FT_Pointer)( svc != NULL ? svc \ + : FT_SERVICE_UNAVAILABLE ); \ + } \ + *Pptr = svc; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Pointer svc; \ + \ + \ + svc = FT_FACE( face )->internal->services. service_ ## id; \ + if ( svc == FT_SERVICE_UNAVAILABLE ) \ + svc = NULL; \ + else if ( svc == NULL ) \ + { \ + FT_FACE_FIND_SERVICE( face, svc, id ); \ + \ + FT_FACE( face )->internal->services. service_ ## id = \ + (FT_Pointer)( svc != NULL ? svc \ + : FT_SERVICE_UNAVAILABLE ); \ + } \ + ptr = svc; \ + FT_END_STMNT + +#endif /* !C++ */ + + /* + * A macro used to define new service structure types. + */ + +#define FT_DEFINE_SERVICE( name ) \ + typedef struct FT_Service_ ## name ## Rec_ \ + FT_Service_ ## name ## Rec ; \ + typedef struct FT_Service_ ## name ## Rec_ \ + const * FT_Service_ ## name ; \ + struct FT_Service_ ## name ## Rec_ + + /* */ + + /* + * The header files containing the services. + */ + +#define FT_SERVICE_BDF_H <internal/services/svbdf.h> +#define FT_SERVICE_CID_H <internal/services/svcid.h> +#define FT_SERVICE_GLYPH_DICT_H <internal/services/svgldict.h> +#define FT_SERVICE_GX_VALIDATE_H <internal/services/svgxval.h> +#define FT_SERVICE_KERNING_H <internal/services/svkern.h> +#define FT_SERVICE_MULTIPLE_MASTERS_H <internal/services/svmm.h> +#define FT_SERVICE_OPENTYPE_VALIDATE_H <internal/services/svotval.h> +#define FT_SERVICE_PFR_H <internal/services/svpfr.h> +#define FT_SERVICE_POSTSCRIPT_CMAPS_H <internal/services/svpscmap.h> +#define FT_SERVICE_POSTSCRIPT_INFO_H <internal/services/svpsinfo.h> +#define FT_SERVICE_POSTSCRIPT_NAME_H <internal/services/svpostnm.h> +#define FT_SERVICE_PROPERTIES_H <internal/services/svprop.h> +#define FT_SERVICE_SFNT_H <internal/services/svsfnt.h> +#define FT_SERVICE_TRUETYPE_ENGINE_H <internal/services/svtteng.h> +#define FT_SERVICE_TT_CMAP_H <internal/services/svttcmap.h> +#define FT_SERVICE_WINFNT_H <internal/services/svwinfnt.h> +#define FT_SERVICE_XFREE86_NAME_H <internal/services/svxf86nm.h> +#define FT_SERVICE_TRUETYPE_GLYF_H <internal/services/svttglyf.h> + + /* */ + +FT_END_HEADER + +#endif /* __FTSERV_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/ftstream.h b/lib/linux/include/internal/ftstream.h new file mode 100644 index 0000000..2661858 --- /dev/null +++ b/lib/linux/include/internal/ftstream.h @@ -0,0 +1,536 @@ +/***************************************************************************/ +/* */ +/* ftstream.h */ +/* */ +/* Stream handling (specification). */ +/* */ +/* Copyright 1996-2002, 2004-2006, 2011, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSTREAM_H__ +#define __FTSTREAM_H__ + + +#include <ft2build.h> +#include FT_SYSTEM_H +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* format of an 8-bit frame_op value: */ + /* */ + /* bit 76543210 */ + /* xxxxxxes */ + /* */ + /* s is set to 1 if the value is signed. */ + /* e is set to 1 if the value is little-endian. */ + /* xxx is a command. */ + +#define FT_FRAME_OP_SHIFT 2 +#define FT_FRAME_OP_SIGNED 1 +#define FT_FRAME_OP_LITTLE 2 +#define FT_FRAME_OP_COMMAND( x ) ( x >> FT_FRAME_OP_SHIFT ) + +#define FT_MAKE_FRAME_OP( command, little, sign ) \ + ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign ) + +#define FT_FRAME_OP_END 0 +#define FT_FRAME_OP_START 1 /* start a new frame */ +#define FT_FRAME_OP_BYTE 2 /* read 1-byte value */ +#define FT_FRAME_OP_SHORT 3 /* read 2-byte value */ +#define FT_FRAME_OP_LONG 4 /* read 4-byte value */ +#define FT_FRAME_OP_OFF3 5 /* read 3-byte value */ +#define FT_FRAME_OP_BYTES 6 /* read a bytes sequence */ + + + typedef enum FT_Frame_Op_ + { + ft_frame_end = 0, + ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ), + + ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ), + ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ), + + ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ), + ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ), + ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ), + ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ), + + ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ), + ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ), + ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ), + ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ), + + ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ), + ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ), + ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ), + ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ), + + ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ), + ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 ) + + } FT_Frame_Op; + + + typedef struct FT_Frame_Field_ + { + FT_Byte value; + FT_Byte size; + FT_UShort offset; + + } FT_Frame_Field; + + + /* Construct an FT_Frame_Field out of a structure type and a field name. */ + /* The structure type must be set in the FT_STRUCTURE macro before */ + /* calling the FT_FRAME_START() macro. */ + /* */ +#define FT_FIELD_SIZE( f ) \ + (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f ) + +#define FT_FIELD_SIZE_DELTA( f ) \ + (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] ) + +#define FT_FIELD_OFFSET( f ) \ + (FT_UShort)( offsetof( FT_STRUCTURE, f ) ) + +#define FT_FRAME_FIELD( frame_op, field ) \ + { \ + frame_op, \ + FT_FIELD_SIZE( field ), \ + FT_FIELD_OFFSET( field ) \ + } + +#define FT_MAKE_EMPTY_FIELD( frame_op ) { frame_op, 0, 0 } + +#define FT_FRAME_START( size ) { ft_frame_start, 0, size } +#define FT_FRAME_END { ft_frame_end, 0, 0 } + +#define FT_FRAME_LONG( f ) FT_FRAME_FIELD( ft_frame_long_be, f ) +#define FT_FRAME_ULONG( f ) FT_FRAME_FIELD( ft_frame_ulong_be, f ) +#define FT_FRAME_SHORT( f ) FT_FRAME_FIELD( ft_frame_short_be, f ) +#define FT_FRAME_USHORT( f ) FT_FRAME_FIELD( ft_frame_ushort_be, f ) +#define FT_FRAME_OFF3( f ) FT_FRAME_FIELD( ft_frame_off3_be, f ) +#define FT_FRAME_UOFF3( f ) FT_FRAME_FIELD( ft_frame_uoff3_be, f ) +#define FT_FRAME_BYTE( f ) FT_FRAME_FIELD( ft_frame_byte, f ) +#define FT_FRAME_CHAR( f ) FT_FRAME_FIELD( ft_frame_schar, f ) + +#define FT_FRAME_LONG_LE( f ) FT_FRAME_FIELD( ft_frame_long_le, f ) +#define FT_FRAME_ULONG_LE( f ) FT_FRAME_FIELD( ft_frame_ulong_le, f ) +#define FT_FRAME_SHORT_LE( f ) FT_FRAME_FIELD( ft_frame_short_le, f ) +#define FT_FRAME_USHORT_LE( f ) FT_FRAME_FIELD( ft_frame_ushort_le, f ) +#define FT_FRAME_OFF3_LE( f ) FT_FRAME_FIELD( ft_frame_off3_le, f ) +#define FT_FRAME_UOFF3_LE( f ) FT_FRAME_FIELD( ft_frame_uoff3_le, f ) + +#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 } +#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 } +#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 } + +#define FT_FRAME_BYTES( field, count ) \ + { \ + ft_frame_bytes, \ + count, \ + FT_FIELD_OFFSET( field ) \ + } + +#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 } + + + /*************************************************************************/ + /* */ + /* Integer extraction macros -- the `buffer' parameter must ALWAYS be of */ + /* type `char*' or equivalent (1-byte elements). */ + /* */ + +#define FT_BYTE_( p, i ) ( ((const FT_Byte*)(p))[(i)] ) + +#define FT_INT16( x ) ( (FT_Int16)(x) ) +#define FT_UINT16( x ) ( (FT_UInt16)(x) ) +#define FT_INT32( x ) ( (FT_Int32)(x) ) +#define FT_UINT32( x ) ( (FT_UInt32)(x) ) + + +#define FT_BYTE_U16( p, i, s ) ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) ) +#define FT_BYTE_U32( p, i, s ) ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) ) + + +#define FT_PEEK_SHORT( p ) FT_INT16( FT_BYTE_U16( p, 0, 8) | \ + FT_BYTE_U16( p, 1, 0) ) + +#define FT_PEEK_USHORT( p ) FT_UINT16( FT_BYTE_U16( p, 0, 8 ) | \ + FT_BYTE_U16( p, 1, 0 ) ) + +#define FT_PEEK_LONG( p ) FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) | \ + FT_BYTE_U32( p, 3, 0 ) ) + +#define FT_PEEK_ULONG( p ) FT_UINT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) | \ + FT_BYTE_U32( p, 3, 0 ) ) + +#define FT_PEEK_OFF3( p ) FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 2, 0 ) ) + +#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 2, 0 ) ) + +#define FT_PEEK_SHORT_LE( p ) FT_INT16( FT_BYTE_U16( p, 1, 8 ) | \ + FT_BYTE_U16( p, 0, 0 ) ) + +#define FT_PEEK_USHORT_LE( p ) FT_UINT16( FT_BYTE_U16( p, 1, 8 ) | \ + FT_BYTE_U16( p, 0, 0 ) ) + +#define FT_PEEK_LONG_LE( p ) FT_INT32( FT_BYTE_U32( p, 3, 24 ) | \ + FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_ULONG_LE( p ) FT_UINT32( FT_BYTE_U32( p, 3, 24 ) | \ + FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + + +#define FT_NEXT_CHAR( buffer ) \ + ( (signed char)*buffer++ ) + +#define FT_NEXT_BYTE( buffer ) \ + ( (unsigned char)*buffer++ ) + +#define FT_NEXT_SHORT( buffer ) \ + ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) ) + +#define FT_NEXT_USHORT( buffer ) \ + ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) ) + +#define FT_NEXT_OFF3( buffer ) \ + ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) ) + +#define FT_NEXT_UOFF3( buffer ) \ + ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) ) + +#define FT_NEXT_LONG( buffer ) \ + ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) ) + +#define FT_NEXT_ULONG( buffer ) \ + ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) ) + + +#define FT_NEXT_SHORT_LE( buffer ) \ + ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) ) + +#define FT_NEXT_USHORT_LE( buffer ) \ + ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) ) + +#define FT_NEXT_OFF3_LE( buffer ) \ + ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) ) + +#define FT_NEXT_UOFF3_LE( buffer ) \ + ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) ) + +#define FT_NEXT_LONG_LE( buffer ) \ + ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) ) + +#define FT_NEXT_ULONG_LE( buffer ) \ + ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) ) + + + /*************************************************************************/ + /* */ + /* Each GET_xxxx() macro uses an implicit `stream' variable. */ + /* */ +#if 0 +#define FT_GET_MACRO( type ) FT_NEXT_ ## type ( stream->cursor ) + +#define FT_GET_CHAR() FT_GET_MACRO( CHAR ) +#define FT_GET_BYTE() FT_GET_MACRO( BYTE ) +#define FT_GET_SHORT() FT_GET_MACRO( SHORT ) +#define FT_GET_USHORT() FT_GET_MACRO( USHORT ) +#define FT_GET_OFF3() FT_GET_MACRO( OFF3 ) +#define FT_GET_UOFF3() FT_GET_MACRO( UOFF3 ) +#define FT_GET_LONG() FT_GET_MACRO( LONG ) +#define FT_GET_ULONG() FT_GET_MACRO( ULONG ) +#define FT_GET_TAG4() FT_GET_MACRO( ULONG ) + +#define FT_GET_SHORT_LE() FT_GET_MACRO( SHORT_LE ) +#define FT_GET_USHORT_LE() FT_GET_MACRO( USHORT_LE ) +#define FT_GET_LONG_LE() FT_GET_MACRO( LONG_LE ) +#define FT_GET_ULONG_LE() FT_GET_MACRO( ULONG_LE ) + +#else +#define FT_GET_MACRO( func, type ) ( (type)func( stream ) ) + +#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char ) +#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte ) +#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short ) +#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort ) +#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long ) +#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong ) +#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long ) +#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong ) +#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong ) + +#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short ) +#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort ) +#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long ) +#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong ) +#endif + +#define FT_READ_MACRO( func, type, var ) \ + ( var = (type)func( stream, &error ), \ + error != FT_Err_Ok ) + +#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var ) +#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var ) +#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var ) +#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var ) +#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var ) +#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var ) +#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var ) +#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var ) + +#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var ) +#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var ) +#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var ) +#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var ) + + +#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM + + /* initialize a stream for reading a regular system stream */ + FT_BASE( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ); + +#endif /* FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ + + + /* create a new (input) stream from an FT_Open_Args structure */ + FT_BASE( FT_Error ) + FT_Stream_New( FT_Library library, + const FT_Open_Args* args, + FT_Stream *astream ); + + /* free a stream */ + FT_BASE( void ) + FT_Stream_Free( FT_Stream stream, + FT_Int external ); + + /* initialize a stream for reading in-memory data */ + FT_BASE( void ) + FT_Stream_OpenMemory( FT_Stream stream, + const FT_Byte* base, + FT_ULong size ); + + /* close a stream (does not destroy the stream structure) */ + FT_BASE( void ) + FT_Stream_Close( FT_Stream stream ); + + + /* seek within a stream. position is relative to start of stream */ + FT_BASE( FT_Error ) + FT_Stream_Seek( FT_Stream stream, + FT_ULong pos ); + + /* skip bytes in a stream */ + FT_BASE( FT_Error ) + FT_Stream_Skip( FT_Stream stream, + FT_Long distance ); + + /* return current stream position */ + FT_BASE( FT_Long ) + FT_Stream_Pos( FT_Stream stream ); + + /* read bytes from a stream into a user-allocated buffer, returns an */ + /* error if not all bytes could be read. */ + FT_BASE( FT_Error ) + FT_Stream_Read( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); + + /* read bytes from a stream at a given position */ + FT_BASE( FT_Error ) + FT_Stream_ReadAt( FT_Stream stream, + FT_ULong pos, + FT_Byte* buffer, + FT_ULong count ); + + /* try to read bytes at the end of a stream; return number of bytes */ + /* really available */ + FT_BASE( FT_ULong ) + FT_Stream_TryRead( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); + + /* Enter a frame of `count' consecutive bytes in a stream. Returns an */ + /* error if the frame could not be read/accessed. The caller can use */ + /* the FT_Stream_Get_XXX functions to retrieve frame data without */ + /* error checks. */ + /* */ + /* You must _always_ call FT_Stream_ExitFrame() once you have entered */ + /* a stream frame! */ + /* */ + FT_BASE( FT_Error ) + FT_Stream_EnterFrame( FT_Stream stream, + FT_ULong count ); + + /* exit a stream frame */ + FT_BASE( void ) + FT_Stream_ExitFrame( FT_Stream stream ); + + /* Extract a stream frame. If the stream is disk-based, a heap block */ + /* is allocated and the frame bytes are read into it. If the stream */ + /* is memory-based, this function simply set a pointer to the data. */ + /* */ + /* Useful to optimize access to memory-based streams transparently. */ + /* */ + /* All extracted frames must be `freed' with a call to the function */ + /* FT_Stream_ReleaseFrame(). */ + /* */ + FT_BASE( FT_Error ) + FT_Stream_ExtractFrame( FT_Stream stream, + FT_ULong count, + FT_Byte** pbytes ); + + /* release an extract frame (see FT_Stream_ExtractFrame) */ + FT_BASE( void ) + FT_Stream_ReleaseFrame( FT_Stream stream, + FT_Byte** pbytes ); + + /* read a byte from an entered frame */ + FT_BASE( FT_Char ) + FT_Stream_GetChar( FT_Stream stream ); + + /* read a 16-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_UShort ) + FT_Stream_GetUShort( FT_Stream stream ); + + /* read a 24-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetUOffset( FT_Stream stream ); + + /* read a 32-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetULong( FT_Stream stream ); + + /* read a 16-bit little-endian unsigned integer from an entered frame */ + FT_BASE( FT_UShort ) + FT_Stream_GetUShortLE( FT_Stream stream ); + + /* read a 32-bit little-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetULongLE( FT_Stream stream ); + + + /* read a byte from a stream */ + FT_BASE( FT_Char ) + FT_Stream_ReadChar( FT_Stream stream, + FT_Error* error ); + + /* read a 16-bit big-endian unsigned integer from a stream */ + FT_BASE( FT_UShort ) + FT_Stream_ReadUShort( FT_Stream stream, + FT_Error* error ); + + /* read a 24-bit big-endian unsigned integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadUOffset( FT_Stream stream, + FT_Error* error ); + + /* read a 32-bit big-endian integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadULong( FT_Stream stream, + FT_Error* error ); + + /* read a 16-bit little-endian unsigned integer from a stream */ + FT_BASE( FT_UShort ) + FT_Stream_ReadUShortLE( FT_Stream stream, + FT_Error* error ); + + /* read a 32-bit little-endian unsigned integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadULongLE( FT_Stream stream, + FT_Error* error ); + + /* Read a structure from a stream. The structure must be described */ + /* by an array of FT_Frame_Field records. */ + FT_BASE( FT_Error ) + FT_Stream_ReadFields( FT_Stream stream, + const FT_Frame_Field* fields, + void* structure ); + + +#define FT_STREAM_POS() \ + FT_Stream_Pos( stream ) + +#define FT_STREAM_SEEK( position ) \ + FT_SET_ERROR( FT_Stream_Seek( stream, \ + (FT_ULong)(position) ) ) + +#define FT_STREAM_SKIP( distance ) \ + FT_SET_ERROR( FT_Stream_Skip( stream, \ + (FT_Long)(distance) ) ) + +#define FT_STREAM_READ( buffer, count ) \ + FT_SET_ERROR( FT_Stream_Read( stream, \ + (FT_Byte*)(buffer), \ + (FT_ULong)(count) ) ) + +#define FT_STREAM_READ_AT( position, buffer, count ) \ + FT_SET_ERROR( FT_Stream_ReadAt( stream, \ + (FT_ULong)(position), \ + (FT_Byte*)buffer, \ + (FT_ULong)(count) ) ) + +#define FT_STREAM_READ_FIELDS( fields, object ) \ + FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) ) + + +#define FT_FRAME_ENTER( size ) \ + FT_SET_ERROR( \ + FT_DEBUG_INNER( FT_Stream_EnterFrame( stream, \ + (FT_ULong)(size) ) ) ) + +#define FT_FRAME_EXIT() \ + FT_DEBUG_INNER( FT_Stream_ExitFrame( stream ) ) + +#define FT_FRAME_EXTRACT( size, bytes ) \ + FT_SET_ERROR( \ + FT_DEBUG_INNER( FT_Stream_ExtractFrame( stream, \ + (FT_ULong)(size), \ + (FT_Byte**)&(bytes) ) ) ) + +#define FT_FRAME_RELEASE( bytes ) \ + FT_DEBUG_INNER( FT_Stream_ReleaseFrame( stream, \ + (FT_Byte**)&(bytes) ) ) + + +FT_END_HEADER + +#endif /* __FTSTREAM_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/fttrace.h b/lib/linux/include/internal/fttrace.h new file mode 100644 index 0000000..d5253db --- /dev/null +++ b/lib/linux/include/internal/fttrace.h @@ -0,0 +1,154 @@ +/***************************************************************************/ +/* */ +/* fttrace.h */ +/* */ +/* Tracing handling (specification only). */ +/* */ +/* Copyright 2002, 2004-2007, 2009, 2011-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /* definitions of trace levels for FreeType 2 */ + + /* the first level must always be `trace_any' */ +FT_TRACE_DEF( any ) + + /* base components */ +FT_TRACE_DEF( calc ) /* calculations (ftcalc.c) */ +FT_TRACE_DEF( memory ) /* memory manager (ftobjs.c) */ +FT_TRACE_DEF( stream ) /* stream manager (ftstream.c) */ +FT_TRACE_DEF( io ) /* i/o interface (ftsystem.c) */ +FT_TRACE_DEF( list ) /* list management (ftlist.c) */ +FT_TRACE_DEF( init ) /* initialization (ftinit.c) */ +FT_TRACE_DEF( objs ) /* base objects (ftobjs.c) */ +FT_TRACE_DEF( outline ) /* outline management (ftoutln.c) */ +FT_TRACE_DEF( glyph ) /* glyph management (ftglyph.c) */ +FT_TRACE_DEF( gloader ) /* glyph loader (ftgloadr.c) */ + +FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */ +FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */ +FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */ +FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */ +FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */ +FT_TRACE_DEF( bitmap ) /* bitmap checksum (ftobjs.c) */ + + /* Cache sub-system */ +FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */ + + /* SFNT driver components */ +FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */ +FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */ +FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */ +FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */ +FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */ +FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */ +FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */ +FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */ +FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */ + + /* TrueType driver components */ +FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */ +FT_TRACE_DEF( ttgload ) /* TT glyph loader (ttgload.c) */ +FT_TRACE_DEF( ttinterp ) /* bytecode interpreter (ttinterp.c) */ +FT_TRACE_DEF( ttobjs ) /* TT objects manager (ttobjs.c) */ +FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */ +FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */ + + /* Type 1 driver components */ +FT_TRACE_DEF( t1afm ) +FT_TRACE_DEF( t1driver ) +FT_TRACE_DEF( t1gload ) +FT_TRACE_DEF( t1hint ) +FT_TRACE_DEF( t1load ) +FT_TRACE_DEF( t1objs ) +FT_TRACE_DEF( t1parse ) + + /* PostScript helper module `psaux' */ +FT_TRACE_DEF( t1decode ) +FT_TRACE_DEF( psobjs ) +FT_TRACE_DEF( psconv ) + + /* PostScript hinting module `pshinter' */ +FT_TRACE_DEF( pshrec ) +FT_TRACE_DEF( pshalgo1 ) +FT_TRACE_DEF( pshalgo2 ) + + /* Type 2 driver components */ +FT_TRACE_DEF( cffdriver ) +FT_TRACE_DEF( cffgload ) +FT_TRACE_DEF( cffload ) +FT_TRACE_DEF( cffobjs ) +FT_TRACE_DEF( cffparse ) + +FT_TRACE_DEF( cf2blues ) +FT_TRACE_DEF( cf2hints ) +FT_TRACE_DEF( cf2interp ) + + /* Type 42 driver component */ +FT_TRACE_DEF( t42 ) + + /* CID driver components */ +FT_TRACE_DEF( cidafm ) +FT_TRACE_DEF( ciddriver ) +FT_TRACE_DEF( cidgload ) +FT_TRACE_DEF( cidload ) +FT_TRACE_DEF( cidobjs ) +FT_TRACE_DEF( cidparse ) + + /* Windows font component */ +FT_TRACE_DEF( winfnt ) + + /* PCF font components */ +FT_TRACE_DEF( pcfdriver ) +FT_TRACE_DEF( pcfread ) + + /* BDF font components */ +FT_TRACE_DEF( bdfdriver ) +FT_TRACE_DEF( bdflib ) + + /* PFR font component */ +FT_TRACE_DEF( pfr ) + + /* OpenType validation components */ +FT_TRACE_DEF( otvmodule ) +FT_TRACE_DEF( otvcommon ) +FT_TRACE_DEF( otvbase ) +FT_TRACE_DEF( otvgdef ) +FT_TRACE_DEF( otvgpos ) +FT_TRACE_DEF( otvgsub ) +FT_TRACE_DEF( otvjstf ) +FT_TRACE_DEF( otvmath ) + + /* TrueTypeGX/AAT validation components */ +FT_TRACE_DEF( gxvmodule ) +FT_TRACE_DEF( gxvcommon ) +FT_TRACE_DEF( gxvfeat ) +FT_TRACE_DEF( gxvmort ) +FT_TRACE_DEF( gxvmorx ) +FT_TRACE_DEF( gxvbsln ) +FT_TRACE_DEF( gxvjust ) +FT_TRACE_DEF( gxvkern ) +FT_TRACE_DEF( gxvopbd ) +FT_TRACE_DEF( gxvtrak ) +FT_TRACE_DEF( gxvprop ) +FT_TRACE_DEF( gxvlcar ) + + /* autofit components */ +FT_TRACE_DEF( afmodule ) +FT_TRACE_DEF( afhints ) +FT_TRACE_DEF( afcjk ) +FT_TRACE_DEF( aflatin ) +FT_TRACE_DEF( aflatin2 ) +FT_TRACE_DEF( afwarp ) +FT_TRACE_DEF( afharfbuzz ) +FT_TRACE_DEF( afglobal ) + +/* END */ diff --git a/lib/linux/include/internal/ftvalid.h b/lib/linux/include/internal/ftvalid.h new file mode 100644 index 0000000..c281b14 --- /dev/null +++ b/lib/linux/include/internal/ftvalid.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftvalid.h */ +/* */ +/* FreeType validation support (specification). */ +/* */ +/* Copyright 2004, 2013, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTVALID_H__ +#define __FTVALID_H__ + +#include <ft2build.h> +#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */ + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** V A L I D A T I O N ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to a validation object */ + typedef struct FT_ValidatorRec_ volatile* FT_Validator; + + + /*************************************************************************/ + /* */ + /* There are three distinct validation levels defined here: */ + /* */ + /* FT_VALIDATE_DEFAULT :: */ + /* A table that passes this validation level can be used reliably by */ + /* FreeType. It generally means that all offsets have been checked to */ + /* prevent out-of-bound reads, that array counts are correct, etc. */ + /* */ + /* FT_VALIDATE_TIGHT :: */ + /* A table that passes this validation level can be used reliably and */ + /* doesn't contain invalid data. For example, a charmap table that */ + /* returns invalid glyph indices will not pass, even though it can */ + /* be used with FreeType in default mode (the library will simply */ + /* return an error later when trying to load the glyph). */ + /* */ + /* It also checks that fields which must be a multiple of 2, 4, or 8, */ + /* don't have incorrect values, etc. */ + /* */ + /* FT_VALIDATE_PARANOID :: */ + /* Only for font debugging. Checks that a table follows the */ + /* specification by 100%. Very few fonts will be able to pass this */ + /* level anyway but it can be useful for certain tools like font */ + /* editors/converters. */ + /* */ + typedef enum FT_ValidationLevel_ + { + FT_VALIDATE_DEFAULT = 0, + FT_VALIDATE_TIGHT, + FT_VALIDATE_PARANOID + + } FT_ValidationLevel; + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + /* We disable the warning `structure was padded due to */ + /* __declspec(align())' in order to compile cleanly with */ + /* the maximum level of warnings. */ +#pragma warning( push ) +#pragma warning( disable : 4324 ) +#endif /* _MSC_VER */ + + /* validator structure */ + typedef struct FT_ValidatorRec_ + { + ft_jmp_buf jump_buffer; /* used for exception handling */ + + const FT_Byte* base; /* address of table in memory */ + const FT_Byte* limit; /* `base' + sizeof(table) in memory */ + FT_ValidationLevel level; /* validation level */ + FT_Error error; /* error returned. 0 means success */ + + } FT_ValidatorRec; + +#if defined( _MSC_VER ) +#pragma warning( pop ) +#endif + +#define FT_VALIDATOR( x ) ( (FT_Validator)( x ) ) + + + FT_BASE( void ) + ft_validator_init( FT_Validator valid, + const FT_Byte* base, + const FT_Byte* limit, + FT_ValidationLevel level ); + + /* Do not use this. It's broken and will cause your validator to crash */ + /* if you run it on an invalid font. */ + FT_BASE( FT_Int ) + ft_validator_run( FT_Validator valid ); + + /* Sets the error field in a validator, then calls `longjmp' to return */ + /* to high-level caller. Using `setjmp/longjmp' avoids many stupid */ + /* error checks within the validation routines. */ + /* */ + FT_BASE( void ) + ft_validator_error( FT_Validator valid, + FT_Error error ); + + + /* Calls ft_validate_error. Assumes that the `valid' local variable */ + /* holds a pointer to the current validator object. */ + /* */ +#define FT_INVALID( _error ) FT_INVALID_( _error ) +#define FT_INVALID_( _error ) \ + ft_validator_error( valid, FT_THROW( _error ) ) + + /* called when a broken table is detected */ +#define FT_INVALID_TOO_SHORT \ + FT_INVALID( Invalid_Table ) + + /* called when an invalid offset is detected */ +#define FT_INVALID_OFFSET \ + FT_INVALID( Invalid_Offset ) + + /* called when an invalid format/value is detected */ +#define FT_INVALID_FORMAT \ + FT_INVALID( Invalid_Table ) + + /* called when an invalid glyph index is detected */ +#define FT_INVALID_GLYPH_ID \ + FT_INVALID( Invalid_Glyph_Index ) + + /* called when an invalid field value is detected */ +#define FT_INVALID_DATA \ + FT_INVALID( Invalid_Table ) + + +FT_END_HEADER + +#endif /* __FTVALID_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/internal.h b/lib/linux/include/internal/internal.h new file mode 100644 index 0000000..e0ddb06 --- /dev/null +++ b/lib/linux/include/internal/internal.h @@ -0,0 +1,63 @@ +/***************************************************************************/ +/* */ +/* internal.h */ +/* */ +/* Internal header files (specification only). */ +/* */ +/* Copyright 1996-2004, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is automatically included by `ft2build.h'. */ + /* Do not include it manually! */ + /* */ + /*************************************************************************/ + + +#define FT_INTERNAL_OBJECTS_H <internal/ftobjs.h> +#define FT_INTERNAL_PIC_H <internal/ftpic.h> +#define FT_INTERNAL_STREAM_H <internal/ftstream.h> +#define FT_INTERNAL_MEMORY_H <internal/ftmemory.h> +#define FT_INTERNAL_DEBUG_H <internal/ftdebug.h> +#define FT_INTERNAL_CALC_H <internal/ftcalc.h> +#define FT_INTERNAL_DRIVER_H <internal/ftdriver.h> +#define FT_INTERNAL_TRACE_H <internal/fttrace.h> +#define FT_INTERNAL_GLYPH_LOADER_H <internal/ftgloadr.h> +#define FT_INTERNAL_SFNT_H <internal/sfnt.h> +#define FT_INTERNAL_SERVICE_H <internal/ftserv.h> +#define FT_INTERNAL_RFORK_H <internal/ftrfork.h> +#define FT_INTERNAL_VALIDATE_H <internal/ftvalid.h> + +#define FT_INTERNAL_TRUETYPE_TYPES_H <internal/tttypes.h> +#define FT_INTERNAL_TYPE1_TYPES_H <internal/t1types.h> + +#define FT_INTERNAL_POSTSCRIPT_AUX_H <internal/psaux.h> +#define FT_INTERNAL_POSTSCRIPT_HINTS_H <internal/pshints.h> +#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H <internal/psglobal.h> + +#define FT_INTERNAL_AUTOHINT_H <internal/autohint.h> + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + + /* We disable the warning `conditional expression is constant' here */ + /* in order to compile cleanly with the maximum level of warnings. */ + /* In particular, the warning complains about stuff like `while(0)' */ + /* which is very useful in macro definitions. There is no benefit */ + /* in having it enabled. */ +#pragma warning( disable : 4127 ) + +#endif /* _MSC_VER */ + + +/* END */ diff --git a/lib/linux/include/internal/psaux.h b/lib/linux/include/internal/psaux.h new file mode 100644 index 0000000..e903114 --- /dev/null +++ b/lib/linux/include/internal/psaux.h @@ -0,0 +1,877 @@ +/***************************************************************************/ +/* */ +/* psaux.h */ +/* */ +/* Auxiliary functions and data structures related to PostScript fonts */ +/* (specification). */ +/* */ +/* Copyright 1996-2004, 2006, 2008, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSAUX_H__ +#define __PSAUX_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_TYPE1_TYPES_H +#include FT_SERVICE_POSTSCRIPT_CMAPS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1_TABLE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct PS_TableRec_* PS_Table; + typedef const struct PS_Table_FuncsRec_* PS_Table_Funcs; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Table_FuncsRec */ + /* */ + /* <Description> */ + /* A set of function pointers to manage PS_Table objects. */ + /* */ + /* <Fields> */ + /* table_init :: Used to initialize a table. */ + /* */ + /* table_done :: Finalizes resp. destroy a given table. */ + /* */ + /* table_add :: Adds a new object to a table. */ + /* */ + /* table_release :: Releases table data, then finalizes it. */ + /* */ + typedef struct PS_Table_FuncsRec_ + { + FT_Error + (*init)( PS_Table table, + FT_Int count, + FT_Memory memory ); + + void + (*done)( PS_Table table ); + + FT_Error + (*add)( PS_Table table, + FT_Int idx, + void* object, + FT_PtrDist length ); + + void + (*release)( PS_Table table ); + + } PS_Table_FuncsRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_TableRec */ + /* */ + /* <Description> */ + /* A PS_Table is a simple object used to store an array of objects in */ + /* a single memory block. */ + /* */ + /* <Fields> */ + /* block :: The address in memory of the growheap's block. This */ + /* can change between two object adds, due to */ + /* reallocation. */ + /* */ + /* cursor :: The current top of the grow heap within its block. */ + /* */ + /* capacity :: The current size of the heap block. Increments by */ + /* 1kByte chunks. */ + /* */ + /* init :: Set to 0xDEADBEEF if `elements' and `lengths' have */ + /* been allocated. */ + /* */ + /* max_elems :: The maximum number of elements in table. */ + /* */ + /* num_elems :: The current number of elements in table. */ + /* */ + /* elements :: A table of element addresses within the block. */ + /* */ + /* lengths :: A table of element sizes within the block. */ + /* */ + /* memory :: The object used for memory operations */ + /* (alloc/realloc). */ + /* */ + /* funcs :: A table of method pointers for this object. */ + /* */ + typedef struct PS_TableRec_ + { + FT_Byte* block; /* current memory block */ + FT_Offset cursor; /* current cursor in memory block */ + FT_Offset capacity; /* current size of memory block */ + FT_Long init; + + FT_Int max_elems; + FT_Int num_elems; + FT_Byte** elements; /* addresses of table elements */ + FT_PtrDist* lengths; /* lengths of table elements */ + + FT_Memory memory; + PS_Table_FuncsRec funcs; + + } PS_TableRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 FIELDS & TOKENS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PS_ParserRec_* PS_Parser; + + typedef struct T1_TokenRec_* T1_Token; + + typedef struct T1_FieldRec_* T1_Field; + + + /* simple enumeration type used to identify token types */ + typedef enum T1_TokenType_ + { + T1_TOKEN_TYPE_NONE = 0, + T1_TOKEN_TYPE_ANY, + T1_TOKEN_TYPE_STRING, + T1_TOKEN_TYPE_ARRAY, + T1_TOKEN_TYPE_KEY, /* aka `name' */ + + /* do not remove */ + T1_TOKEN_TYPE_MAX + + } T1_TokenType; + + + /* a simple structure used to identify tokens */ + typedef struct T1_TokenRec_ + { + FT_Byte* start; /* first character of token in input stream */ + FT_Byte* limit; /* first character after the token */ + T1_TokenType type; /* type of token */ + + } T1_TokenRec; + + + /* enumeration type used to identify object fields */ + typedef enum T1_FieldType_ + { + T1_FIELD_TYPE_NONE = 0, + T1_FIELD_TYPE_BOOL, + T1_FIELD_TYPE_INTEGER, + T1_FIELD_TYPE_FIXED, + T1_FIELD_TYPE_FIXED_1000, + T1_FIELD_TYPE_STRING, + T1_FIELD_TYPE_KEY, + T1_FIELD_TYPE_BBOX, + T1_FIELD_TYPE_MM_BBOX, + T1_FIELD_TYPE_INTEGER_ARRAY, + T1_FIELD_TYPE_FIXED_ARRAY, + T1_FIELD_TYPE_CALLBACK, + + /* do not remove */ + T1_FIELD_TYPE_MAX + + } T1_FieldType; + + + typedef enum T1_FieldLocation_ + { + T1_FIELD_LOCATION_CID_INFO, + T1_FIELD_LOCATION_FONT_DICT, + T1_FIELD_LOCATION_FONT_EXTRA, + T1_FIELD_LOCATION_FONT_INFO, + T1_FIELD_LOCATION_PRIVATE, + T1_FIELD_LOCATION_BBOX, + T1_FIELD_LOCATION_LOADER, + T1_FIELD_LOCATION_FACE, + T1_FIELD_LOCATION_BLEND, + + /* do not remove */ + T1_FIELD_LOCATION_MAX + + } T1_FieldLocation; + + + typedef void + (*T1_Field_ParseFunc)( FT_Face face, + FT_Pointer parser ); + + + /* structure type used to model object fields */ + typedef struct T1_FieldRec_ + { + const char* ident; /* field identifier */ + T1_FieldLocation location; + T1_FieldType type; /* type of field */ + T1_Field_ParseFunc reader; + FT_UInt offset; /* offset of field in object */ + FT_Byte size; /* size of field in bytes */ + FT_UInt array_max; /* maximum number of elements for */ + /* array */ + FT_UInt count_offset; /* offset of element count for */ + /* arrays; must not be zero if in */ + /* use -- in other words, a */ + /* `num_FOO' element must not */ + /* start the used structure if we */ + /* parse a `FOO' array */ + FT_UInt dict; /* where we expect it */ + } T1_FieldRec; + +#define T1_FIELD_DICT_FONTDICT ( 1 << 0 ) /* also FontInfo and FDArray */ +#define T1_FIELD_DICT_PRIVATE ( 1 << 1 ) + + + +#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE( _fname ), \ + 0, 0, \ + _dict \ + }, + +#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \ + { \ + _ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \ + (T1_Field_ParseFunc)_reader, \ + 0, 0, \ + 0, 0, \ + _dict \ + }, + +#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE_DELTA( _fname ), \ + _max, \ + FT_FIELD_OFFSET( num_ ## _fname ), \ + _dict \ + }, + +#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE_DELTA( _fname ), \ + _max, 0, \ + _dict \ + }, + + +#define T1_FIELD_BOOL( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname, _dict ) + +#define T1_FIELD_NUM( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname, _dict ) + +#define T1_FIELD_FIXED( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname, _dict ) + +#define T1_FIELD_FIXED_1000( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname, \ + _dict ) + +#define T1_FIELD_STRING( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname, _dict ) + +#define T1_FIELD_KEY( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname, _dict ) + +#define T1_FIELD_BBOX( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname, _dict ) + + +#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_CALLBACK( _ident, _name, _dict ) \ + T1_NEW_CALLBACK_FIELD( _ident, _name, _dict ) + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 PARSER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef const struct PS_Parser_FuncsRec_* PS_Parser_Funcs; + + typedef struct PS_Parser_FuncsRec_ + { + void + (*init)( PS_Parser parser, + FT_Byte* base, + FT_Byte* limit, + FT_Memory memory ); + + void + (*done)( PS_Parser parser ); + + void + (*skip_spaces)( PS_Parser parser ); + void + (*skip_PS_token)( PS_Parser parser ); + + FT_Long + (*to_int)( PS_Parser parser ); + FT_Fixed + (*to_fixed)( PS_Parser parser, + FT_Int power_ten ); + + FT_Error + (*to_bytes)( PS_Parser parser, + FT_Byte* bytes, + FT_Offset max_bytes, + FT_Long* pnum_bytes, + FT_Bool delimiters ); + + FT_Int + (*to_coord_array)( PS_Parser parser, + FT_Int max_coords, + FT_Short* coords ); + FT_Int + (*to_fixed_array)( PS_Parser parser, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ); + + void + (*to_token)( PS_Parser parser, + T1_Token token ); + void + (*to_token_array)( PS_Parser parser, + T1_Token tokens, + FT_UInt max_tokens, + FT_Int* pnum_tokens ); + + FT_Error + (*load_field)( PS_Parser parser, + const T1_Field field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + FT_Error + (*load_field_table)( PS_Parser parser, + const T1_Field field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + } PS_Parser_FuncsRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_ParserRec */ + /* */ + /* <Description> */ + /* A PS_Parser is an object used to parse a Type 1 font very quickly. */ + /* */ + /* <Fields> */ + /* cursor :: The current position in the text. */ + /* */ + /* base :: Start of the processed text. */ + /* */ + /* limit :: End of the processed text. */ + /* */ + /* error :: The last error returned. */ + /* */ + /* memory :: The object used for memory operations (alloc/realloc). */ + /* */ + /* funcs :: A table of functions for the parser. */ + /* */ + typedef struct PS_ParserRec_ + { + FT_Byte* cursor; + FT_Byte* base; + FT_Byte* limit; + FT_Error error; + FT_Memory memory; + + PS_Parser_FuncsRec funcs; + + } PS_ParserRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 BUILDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct T1_BuilderRec_* T1_Builder; + + + typedef FT_Error + (*T1_Builder_Check_Points_Func)( T1_Builder builder, + FT_Int count ); + + typedef void + (*T1_Builder_Add_Point_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ); + + typedef FT_Error + (*T1_Builder_Add_Point1_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y ); + + typedef FT_Error + (*T1_Builder_Add_Contour_Func)( T1_Builder builder ); + + typedef FT_Error + (*T1_Builder_Start_Point_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y ); + + typedef void + (*T1_Builder_Close_Contour_Func)( T1_Builder builder ); + + + typedef const struct T1_Builder_FuncsRec_* T1_Builder_Funcs; + + typedef struct T1_Builder_FuncsRec_ + { + void + (*init)( T1_Builder builder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Bool hinting ); + + void + (*done)( T1_Builder builder ); + + T1_Builder_Check_Points_Func check_points; + T1_Builder_Add_Point_Func add_point; + T1_Builder_Add_Point1_Func add_point1; + T1_Builder_Add_Contour_Func add_contour; + T1_Builder_Start_Point_Func start_point; + T1_Builder_Close_Contour_Func close_contour; + + } T1_Builder_FuncsRec; + + + /* an enumeration type to handle charstring parsing states */ + typedef enum T1_ParseState_ + { + T1_Parse_Start, + T1_Parse_Have_Width, + T1_Parse_Have_Moveto, + T1_Parse_Have_Path + + } T1_ParseState; + + + /*************************************************************************/ + /* */ + /* <Structure> */ + /* T1_BuilderRec */ + /* */ + /* <Description> */ + /* A structure used during glyph loading to store its outline. */ + /* */ + /* <Fields> */ + /* memory :: The current memory object. */ + /* */ + /* face :: The current face object. */ + /* */ + /* glyph :: The current glyph slot. */ + /* */ + /* loader :: XXX */ + /* */ + /* base :: The base glyph outline. */ + /* */ + /* current :: The current glyph outline. */ + /* */ + /* max_points :: maximum points in builder outline */ + /* */ + /* max_contours :: Maximum number of contours in builder outline. */ + /* */ + /* pos_x :: The horizontal translation (if composite glyph). */ + /* */ + /* pos_y :: The vertical translation (if composite glyph). */ + /* */ + /* left_bearing :: The left side bearing point. */ + /* */ + /* advance :: The horizontal advance vector. */ + /* */ + /* bbox :: Unused. */ + /* */ + /* parse_state :: An enumeration which controls the charstring */ + /* parsing state. */ + /* */ + /* load_points :: If this flag is not set, no points are loaded. */ + /* */ + /* no_recurse :: Set but not used. */ + /* */ + /* metrics_only :: A boolean indicating that we only want to compute */ + /* the metrics of a given glyph, not load all of its */ + /* points. */ + /* */ + /* funcs :: An array of function pointers for the builder. */ + /* */ + typedef struct T1_BuilderRec_ + { + FT_Memory memory; + FT_Face face; + FT_GlyphSlot glyph; + FT_GlyphLoader loader; + FT_Outline* base; + FT_Outline* current; + + FT_Pos pos_x; + FT_Pos pos_y; + + FT_Vector left_bearing; + FT_Vector advance; + + FT_BBox bbox; /* bounding box */ + T1_ParseState parse_state; + FT_Bool load_points; + FT_Bool no_recurse; + + FT_Bool metrics_only; + + void* hints_funcs; /* hinter-specific */ + void* hints_globals; /* hinter-specific */ + + T1_Builder_FuncsRec funcs; + + } T1_BuilderRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 DECODER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#if 0 + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 8 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 32 + +#endif /* 0 */ + + + typedef struct T1_Decoder_ZoneRec_ + { + FT_Byte* cursor; + FT_Byte* base; + FT_Byte* limit; + + } T1_Decoder_ZoneRec, *T1_Decoder_Zone; + + + typedef struct T1_DecoderRec_* T1_Decoder; + typedef const struct T1_Decoder_FuncsRec_* T1_Decoder_Funcs; + + + typedef FT_Error + (*T1_Decoder_Callback)( T1_Decoder decoder, + FT_UInt glyph_index ); + + + typedef struct T1_Decoder_FuncsRec_ + { + FT_Error + (*init)( T1_Decoder decoder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Byte** glyph_names, + PS_Blend blend, + FT_Bool hinting, + FT_Render_Mode hint_mode, + T1_Decoder_Callback callback ); + + void + (*done)( T1_Decoder decoder ); + + FT_Error + (*parse_charstrings)( T1_Decoder decoder, + FT_Byte* base, + FT_UInt len ); + + } T1_Decoder_FuncsRec; + + + typedef struct T1_DecoderRec_ + { + T1_BuilderRec builder; + + FT_Long stack[T1_MAX_CHARSTRINGS_OPERANDS]; + FT_Long* top; + + T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS + 1]; + T1_Decoder_Zone zone; + + FT_Service_PsCMaps psnames; /* for seac */ + FT_UInt num_glyphs; + FT_Byte** glyph_names; + + FT_Int lenIV; /* internal for sub routine calls */ + FT_UInt num_subrs; + FT_Byte** subrs; + FT_PtrDist* subrs_len; /* array of subrs length (optional) */ + + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_Int flex_state; + FT_Int num_flex_vectors; + FT_Vector flex_vectors[7]; + + PS_Blend blend; /* for multiple master support */ + + FT_Render_Mode hint_mode; + + T1_Decoder_Callback parse_callback; + T1_Decoder_FuncsRec funcs; + + FT_Long* buildchar; + FT_UInt len_buildchar; + + FT_Bool seac; + + } T1_DecoderRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** AFM PARSER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct AFM_ParserRec_* AFM_Parser; + + typedef struct AFM_Parser_FuncsRec_ + { + FT_Error + (*init)( AFM_Parser parser, + FT_Memory memory, + FT_Byte* base, + FT_Byte* limit ); + + void + (*done)( AFM_Parser parser ); + + FT_Error + (*parse)( AFM_Parser parser ); + + } AFM_Parser_FuncsRec; + + + typedef struct AFM_StreamRec_* AFM_Stream; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* AFM_ParserRec */ + /* */ + /* <Description> */ + /* An AFM_Parser is a parser for the AFM files. */ + /* */ + /* <Fields> */ + /* memory :: The object used for memory operations (alloc and */ + /* realloc). */ + /* */ + /* stream :: This is an opaque object. */ + /* */ + /* FontInfo :: The result will be stored here. */ + /* */ + /* get_index :: A user provided function to get a glyph index by its */ + /* name. */ + /* */ + typedef struct AFM_ParserRec_ + { + FT_Memory memory; + AFM_Stream stream; + + AFM_FontInfo FontInfo; + + FT_Int + (*get_index)( const char* name, + FT_Offset len, + void* user_data ); + + void* user_data; + + } AFM_ParserRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** TYPE1 CHARMAPS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef const struct T1_CMap_ClassesRec_* T1_CMap_Classes; + + typedef struct T1_CMap_ClassesRec_ + { + FT_CMap_Class standard; + FT_CMap_Class expert; + FT_CMap_Class custom; + FT_CMap_Class unicode; + + } T1_CMap_ClassesRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PSAux Module Interface *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSAux_ServiceRec_ + { + /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */ + const PS_Table_FuncsRec* ps_table_funcs; + const PS_Parser_FuncsRec* ps_parser_funcs; + const T1_Builder_FuncsRec* t1_builder_funcs; + const T1_Decoder_FuncsRec* t1_decoder_funcs; + + void + (*t1_decrypt)( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ); + + T1_CMap_Classes t1_cmap_classes; + + /* fields after this comment line were added after version 2.1.10 */ + const AFM_Parser_FuncsRec* afm_parser_funcs; + + } PSAux_ServiceRec, *PSAux_Service; + + /* backwards-compatible type definition */ + typedef PSAux_ServiceRec PSAux_Interface; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** Some convenience functions *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#define IS_PS_NEWLINE( ch ) \ + ( (ch) == '\r' || \ + (ch) == '\n' ) + +#define IS_PS_SPACE( ch ) \ + ( (ch) == ' ' || \ + IS_PS_NEWLINE( ch ) || \ + (ch) == '\t' || \ + (ch) == '\f' || \ + (ch) == '\0' ) + +#define IS_PS_SPECIAL( ch ) \ + ( (ch) == '/' || \ + (ch) == '(' || (ch) == ')' || \ + (ch) == '<' || (ch) == '>' || \ + (ch) == '[' || (ch) == ']' || \ + (ch) == '{' || (ch) == '}' || \ + (ch) == '%' ) + +#define IS_PS_DELIM( ch ) \ + ( IS_PS_SPACE( ch ) || \ + IS_PS_SPECIAL( ch ) ) + +#define IS_PS_DIGIT( ch ) \ + ( (ch) >= '0' && (ch) <= '9' ) + +#define IS_PS_XDIGIT( ch ) \ + ( IS_PS_DIGIT( ch ) || \ + ( (ch) >= 'A' && (ch) <= 'F' ) || \ + ( (ch) >= 'a' && (ch) <= 'f' ) ) + +#define IS_PS_BASE85( ch ) \ + ( (ch) >= '!' && (ch) <= 'u' ) + +#define IS_PS_TOKEN( cur, limit, token ) \ + ( (char)(cur)[0] == (token)[0] && \ + ( (cur) + sizeof ( (token) ) == (limit) || \ + ( (cur) + sizeof( (token) ) < (limit) && \ + IS_PS_DELIM( (cur)[sizeof ( (token) ) - 1] ) ) ) && \ + ft_strncmp( (char*)(cur), (token), sizeof ( (token) ) - 1 ) == 0 ) + + +FT_END_HEADER + +#endif /* __PSAUX_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/pshints.h b/lib/linux/include/internal/pshints.h new file mode 100644 index 0000000..f05ea68 --- /dev/null +++ b/lib/linux/include/internal/pshints.h @@ -0,0 +1,722 @@ +/***************************************************************************/ +/* */ +/* pshints.h */ +/* */ +/* Interface to Postscript-specific (Type 1 and Type 2) hints */ +/* recorders (specification only). These are used to support native */ +/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */ +/* */ +/* Copyright 2001-2003, 2005-2007, 2009, 2012, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHINTS_H__ +#define __PSHINTS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** INTERNAL REPRESENTATION OF GLOBALS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSH_GlobalsRec_* PSH_Globals; + + typedef FT_Error + (*PSH_Globals_NewFunc)( FT_Memory memory, + T1_Private* private_dict, + PSH_Globals* aglobals ); + + typedef void + (*PSH_Globals_SetScaleFunc)( PSH_Globals globals, + FT_Fixed x_scale, + FT_Fixed y_scale, + FT_Fixed x_delta, + FT_Fixed y_delta ); + + typedef void + (*PSH_Globals_DestroyFunc)( PSH_Globals globals ); + + + typedef struct PSH_Globals_FuncsRec_ + { + PSH_Globals_NewFunc create; + PSH_Globals_SetScaleFunc set_scale; + PSH_Globals_DestroyFunc destroy; + + } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 1 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * T1_Hints + * + * @description: + * This is a handle to an opaque structure used to record glyph hints + * from a Type 1 character glyph character string. + * + * The methods used to operate on this object are defined by the + * @T1_Hints_FuncsRec structure. Recording glyph hints is normally + * achieved through the following scheme: + * + * - Open a new hint recording session by calling the `open' method. + * This rewinds the recorder and prepare it for new input. + * + * - For each hint found in the glyph charstring, call the corresponding + * method (`stem', `stem3', or `reset'). Note that these functions do + * not return an error code. + * + * - Close the recording session by calling the `close' method. It + * returns an error code if the hints were invalid or something + * strange happened (e.g., memory shortage). + * + * The hints accumulated in the object can later be used by the + * PostScript hinter. + * + */ + typedef struct T1_HintsRec_* T1_Hints; + + + /************************************************************************* + * + * @type: + * T1_Hints_Funcs + * + * @description: + * A pointer to the @T1_Hints_FuncsRec structure that defines the API of + * a given @T1_Hints object. + * + */ + typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs; + + + /************************************************************************* + * + * @functype: + * T1_Hints_OpenFunc + * + * @description: + * A method of the @T1_Hints class used to prepare it for a new Type 1 + * hints recording session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * @note: + * You should always call the @T1_Hints_CloseFunc method in order to + * close an opened recording session. + * + */ + typedef void + (*T1_Hints_OpenFunc)( T1_Hints hints ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_SetStemFunc + * + * @description: + * A method of the @T1_Hints class used to record a new horizontal or + * vertical stem. This corresponds to the Type 1 `hstem' and `vstem' + * operators. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * dimension :: + * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). + * + * coords :: + * Array of 2 coordinates in 16.16 format, used as (position,length) + * stem descriptor. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * `coords[0]' is the absolute stem position (lowest coordinate); + * `coords[1]' is the length. + * + * The length can be negative, in which case it must be either -20 or + * -21. It is interpreted as a `ghost' stem, according to the Type 1 + * specification. + * + * If the length is -21 (corresponding to a bottom ghost stem), then + * the real stem position is `coords[0]+coords[1]'. + * + */ + typedef void + (*T1_Hints_SetStemFunc)( T1_Hints hints, + FT_UInt dimension, + FT_Fixed* coords ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_SetStem3Func + * + * @description: + * A method of the @T1_Hints class used to record three + * counter-controlled horizontal or vertical stems at once. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * dimension :: + * 0 for horizontal stems, 1 for vertical ones. + * + * coords :: + * An array of 6 values in 16.16 format, holding 3 (position,length) + * pairs for the counter-controlled stems. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * The lengths cannot be negative (ghost stems are never + * counter-controlled). + * + */ + typedef void + (*T1_Hints_SetStem3Func)( T1_Hints hints, + FT_UInt dimension, + FT_Fixed* coords ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_ResetFunc + * + * @description: + * A method of the @T1_Hints class used to reset the stems hints in a + * recording session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph in which the + * previously defined hints apply. + * + */ + typedef void + (*T1_Hints_ResetFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_CloseFunc + * + * @description: + * A method of the @T1_Hints class used to close a hint recording + * session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * The error code is set to indicate that an error occurred during the + * recording session. + * + */ + typedef FT_Error + (*T1_Hints_CloseFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_ApplyFunc + * + * @description: + * A method of the @T1_Hints class used to apply hints to the + * corresponding glyph outline. Must be called once all hints have been + * recorded. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * outline :: + * A pointer to the target outline descriptor. + * + * globals :: + * The hinter globals for this font. + * + * hint_mode :: + * Hinting information. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * On input, all points within the outline are in font coordinates. On + * output, they are in 1/64th of pixels. + * + * The scaling transformation is taken from the `globals' object which + * must correspond to the same font as the glyph. + * + */ + typedef FT_Error + (*T1_Hints_ApplyFunc)( T1_Hints hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + + /************************************************************************* + * + * @struct: + * T1_Hints_FuncsRec + * + * @description: + * The structure used to provide the API to @T1_Hints objects. + * + * @fields: + * hints :: + * A handle to the T1 Hints recorder. + * + * open :: + * The function to open a recording session. + * + * close :: + * The function to close a recording session. + * + * stem :: + * The function to set a simple stem. + * + * stem3 :: + * The function to set counter-controlled stems. + * + * reset :: + * The function to reset stem hints. + * + * apply :: + * The function to apply the hints to the corresponding glyph outline. + * + */ + typedef struct T1_Hints_FuncsRec_ + { + T1_Hints hints; + T1_Hints_OpenFunc open; + T1_Hints_CloseFunc close; + T1_Hints_SetStemFunc stem; + T1_Hints_SetStem3Func stem3; + T1_Hints_ResetFunc reset; + T1_Hints_ApplyFunc apply; + + } T1_Hints_FuncsRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 2 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * T2_Hints + * + * @description: + * This is a handle to an opaque structure used to record glyph hints + * from a Type 2 character glyph character string. + * + * The methods used to operate on this object are defined by the + * @T2_Hints_FuncsRec structure. Recording glyph hints is normally + * achieved through the following scheme: + * + * - Open a new hint recording session by calling the `open' method. + * This rewinds the recorder and prepare it for new input. + * + * - For each hint found in the glyph charstring, call the corresponding + * method (`stems', `hintmask', `counters'). Note that these + * functions do not return an error code. + * + * - Close the recording session by calling the `close' method. It + * returns an error code if the hints were invalid or something + * strange happened (e.g., memory shortage). + * + * The hints accumulated in the object can later be used by the + * Postscript hinter. + * + */ + typedef struct T2_HintsRec_* T2_Hints; + + + /************************************************************************* + * + * @type: + * T2_Hints_Funcs + * + * @description: + * A pointer to the @T2_Hints_FuncsRec structure that defines the API of + * a given @T2_Hints object. + * + */ + typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs; + + + /************************************************************************* + * + * @functype: + * T2_Hints_OpenFunc + * + * @description: + * A method of the @T2_Hints class used to prepare it for a new Type 2 + * hints recording session. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * @note: + * You should always call the @T2_Hints_CloseFunc method in order to + * close an opened recording session. + * + */ + typedef void + (*T2_Hints_OpenFunc)( T2_Hints hints ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_StemsFunc + * + * @description: + * A method of the @T2_Hints class used to set the table of stems in + * either the vertical or horizontal dimension. Equivalent to the + * `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * dimension :: + * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). + * + * count :: + * The number of stems. + * + * coords :: + * An array of `count' (position,length) pairs in 16.16 format. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * There are `2*count' elements in the `coords' array. Each even + * element is an absolute position in font units, each odd element is a + * length in font units. + * + * A length can be negative, in which case it must be either -20 or + * -21. It is interpreted as a `ghost' stem, according to the Type 1 + * specification. + * + */ + typedef void + (*T2_Hints_StemsFunc)( T2_Hints hints, + FT_UInt dimension, + FT_UInt count, + FT_Fixed* coordinates ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_MaskFunc + * + * @description: + * A method of the @T2_Hints class used to set a given hintmask (this + * corresponds to the `hintmask' Type 2 operator). + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * The glyph index of the last point to which the previously defined + * or activated hints apply. + * + * bit_count :: + * The number of bits in the hint mask. + * + * bytes :: + * An array of bytes modelling the hint mask. + * + * @note: + * If the hintmask starts the charstring (before any glyph point + * definition), the value of `end_point' should be 0. + * + * `bit_count' is the number of meaningful bits in the `bytes' array; it + * must be equal to the total number of hints defined so far (i.e., + * horizontal+verticals). + * + * The `bytes' array can come directly from the Type 2 charstring and + * respects the same format. + * + */ + typedef void + (*T2_Hints_MaskFunc)( T2_Hints hints, + FT_UInt end_point, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_CounterFunc + * + * @description: + * A method of the @T2_Hints class used to set a given counter mask + * (this corresponds to the `hintmask' Type 2 operator). + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * A glyph index of the last point to which the previously defined or + * active hints apply. + * + * bit_count :: + * The number of bits in the hint mask. + * + * bytes :: + * An array of bytes modelling the hint mask. + * + * @note: + * If the hintmask starts the charstring (before any glyph point + * definition), the value of `end_point' should be 0. + * + * `bit_count' is the number of meaningful bits in the `bytes' array; it + * must be equal to the total number of hints defined so far (i.e., + * horizontal+verticals). + * + * The `bytes' array can come directly from the Type 2 charstring and + * respects the same format. + * + */ + typedef void + (*T2_Hints_CounterFunc)( T2_Hints hints, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_CloseFunc + * + * @description: + * A method of the @T2_Hints class used to close a hint recording + * session. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * The error code is set to indicate that an error occurred during the + * recording session. + * + */ + typedef FT_Error + (*T2_Hints_CloseFunc)( T2_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_ApplyFunc + * + * @description: + * A method of the @T2_Hints class used to apply hints to the + * corresponding glyph outline. Must be called after the `close' + * method. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * outline :: + * A pointer to the target outline descriptor. + * + * globals :: + * The hinter globals for this font. + * + * hint_mode :: + * Hinting information. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * On input, all points within the outline are in font coordinates. On + * output, they are in 1/64th of pixels. + * + * The scaling transformation is taken from the `globals' object which + * must correspond to the same font than the glyph. + * + */ + typedef FT_Error + (*T2_Hints_ApplyFunc)( T2_Hints hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + + /************************************************************************* + * + * @struct: + * T2_Hints_FuncsRec + * + * @description: + * The structure used to provide the API to @T2_Hints objects. + * + * @fields: + * hints :: + * A handle to the T2 hints recorder object. + * + * open :: + * The function to open a recording session. + * + * close :: + * The function to close a recording session. + * + * stems :: + * The function to set the dimension's stems table. + * + * hintmask :: + * The function to set hint masks. + * + * counter :: + * The function to set counter masks. + * + * apply :: + * The function to apply the hints on the corresponding glyph outline. + * + */ + typedef struct T2_Hints_FuncsRec_ + { + T2_Hints hints; + T2_Hints_OpenFunc open; + T2_Hints_CloseFunc close; + T2_Hints_StemsFunc stems; + T2_Hints_MaskFunc hintmask; + T2_Hints_CounterFunc counter; + T2_Hints_ApplyFunc apply; + + } T2_Hints_FuncsRec; + + + /* */ + + + typedef struct PSHinter_Interface_ + { + PSH_Globals_Funcs (*get_globals_funcs)( FT_Module module ); + T1_Hints_Funcs (*get_t1_funcs) ( FT_Module module ); + T2_Hints_Funcs (*get_t2_funcs) ( FT_Module module ); + + } PSHinter_Interface; + + typedef PSHinter_Interface* PSHinter_Service; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_PSHINTER_INTERFACE( \ + class_, \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ ) \ + static const PSHinter_Interface class_ = \ + { \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_PSHINTER_INTERFACE( \ + class_, \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + PSHinter_Interface* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_globals_funcs = get_globals_funcs_; \ + clazz->get_t1_funcs = get_t1_funcs_; \ + clazz->get_t2_funcs = get_t2_funcs_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __PSHINTS_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svbdf.h b/lib/linux/include/internal/services/svbdf.h new file mode 100644 index 0000000..0974752 --- /dev/null +++ b/lib/linux/include/internal/services/svbdf.h @@ -0,0 +1,82 @@ +/***************************************************************************/ +/* */ +/* svbdf.h */ +/* */ +/* The FreeType BDF services (specification). */ +/* */ +/* Copyright 2003, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVBDF_H__ +#define __SVBDF_H__ + +#include FT_BDF_H +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_BDF "bdf" + + typedef FT_Error + (*FT_BDF_GetCharsetIdFunc)( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + typedef FT_Error + (*FT_BDF_GetPropertyFunc)( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + + FT_DEFINE_SERVICE( BDF ) + { + FT_BDF_GetCharsetIdFunc get_charset_id; + FT_BDF_GetPropertyFunc get_property; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_BDFRec( class_, \ + get_charset_id_, \ + get_property_ ) \ + static const FT_Service_BDFRec class_ = \ + { \ + get_charset_id_, get_property_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_BDFRec( class_, \ + get_charset_id_, \ + get_property_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_BDFRec* clazz ) \ + { \ + clazz->get_charset_id = get_charset_id_; \ + clazz->get_property = get_property_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVBDF_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svcid.h b/lib/linux/include/internal/services/svcid.h new file mode 100644 index 0000000..6be3f93 --- /dev/null +++ b/lib/linux/include/internal/services/svcid.h @@ -0,0 +1,89 @@ +/***************************************************************************/ +/* */ +/* svcid.h */ +/* */ +/* The FreeType CID font services (specification). */ +/* */ +/* Copyright 2007, 2009, 2012 by Derek Clegg, Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVCID_H__ +#define __SVCID_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_CID "CID" + + typedef FT_Error + (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement ); + typedef FT_Error + (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face face, + FT_Bool *is_cid ); + typedef FT_Error + (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + FT_DEFINE_SERVICE( CID ) + { + FT_CID_GetRegistryOrderingSupplementFunc get_ros; + FT_CID_GetIsInternallyCIDKeyedFunc get_is_cid; + FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_CIDREC( class_, \ + get_ros_, \ + get_is_cid_, \ + get_cid_from_glyph_index_ ) \ + static const FT_Service_CIDRec class_ = \ + { \ + get_ros_, get_is_cid_, get_cid_from_glyph_index_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_CIDREC( class_, \ + get_ros_, \ + get_is_cid_, \ + get_cid_from_glyph_index_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_CIDRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_ros = get_ros_; \ + clazz->get_is_cid = get_is_cid_; \ + clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVCID_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svgldict.h b/lib/linux/include/internal/services/svgldict.h new file mode 100644 index 0000000..1d12534 --- /dev/null +++ b/lib/linux/include/internal/services/svgldict.h @@ -0,0 +1,88 @@ +/***************************************************************************/ +/* */ +/* svgldict.h */ +/* */ +/* The FreeType glyph dictionary services (specification). */ +/* */ +/* Copyright 2003, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVGLDICT_H__ +#define __SVGLDICT_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A service used to retrieve glyph names, as well as to find the + * index of a given glyph name in a font. + * + */ + +#define FT_SERVICE_ID_GLYPH_DICT "glyph-dict" + + + typedef FT_Error + (*FT_GlyphDict_GetNameFunc)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_GlyphDict_NameIndexFunc)( FT_Face face, + FT_String* glyph_name ); + + + FT_DEFINE_SERVICE( GlyphDict ) + { + FT_GlyphDict_GetNameFunc get_name; + FT_GlyphDict_NameIndexFunc name_index; /* optional */ + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ + get_name_, \ + name_index_) \ + static const FT_Service_GlyphDictRec class_ = \ + { \ + get_name_, name_index_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ + get_name_, \ + name_index_) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_GlyphDictRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_name = get_name_; \ + clazz->name_index = name_index_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVGLDICT_H__ */ diff --git a/lib/linux/include/internal/services/svgxval.h b/lib/linux/include/internal/services/svgxval.h new file mode 100644 index 0000000..2cdab50 --- /dev/null +++ b/lib/linux/include/internal/services/svgxval.h @@ -0,0 +1,72 @@ +/***************************************************************************/ +/* */ +/* svgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004, 2005 by */ +/* Masatake YAMATO, Red Hat K.K., */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVGXVAL_H__ +#define __SVGXVAL_H__ + +#include FT_GX_VALIDATE_H +#include FT_INTERNAL_VALIDATE_H + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_GX_VALIDATE "truetypegx-validate" +#define FT_SERVICE_ID_CLASSICKERN_VALIDATE "classickern-validate" + + typedef FT_Error + (*gxv_validate_func)( FT_Face face, + FT_UInt gx_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + typedef FT_Error + (*ckern_validate_func)( FT_Face face, + FT_UInt ckern_flags, + FT_Bytes *ckern_table ); + + + FT_DEFINE_SERVICE( GXvalidate ) + { + gxv_validate_func validate; + }; + + FT_DEFINE_SERVICE( CKERNvalidate ) + { + ckern_validate_func validate; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVGXVAL_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svkern.h b/lib/linux/include/internal/services/svkern.h new file mode 100644 index 0000000..1488adf --- /dev/null +++ b/lib/linux/include/internal/services/svkern.h @@ -0,0 +1,51 @@ +/***************************************************************************/ +/* */ +/* svkern.h */ +/* */ +/* The FreeType Kerning service (specification). */ +/* */ +/* Copyright 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVKERN_H__ +#define __SVKERN_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + +#define FT_SERVICE_ID_KERNING "kerning" + + + typedef FT_Error + (*FT_Kerning_TrackGetFunc)( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + FT_DEFINE_SERVICE( Kerning ) + { + FT_Kerning_TrackGetFunc get_track; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVKERN_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svmm.h b/lib/linux/include/internal/services/svmm.h new file mode 100644 index 0000000..b08a663 --- /dev/null +++ b/lib/linux/include/internal/services/svmm.h @@ -0,0 +1,113 @@ +/***************************************************************************/ +/* */ +/* svmm.h */ +/* */ +/* The FreeType Multiple Masters and GX var services (specification). */ +/* */ +/* Copyright 2003, 2004, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVMM_H__ +#define __SVMM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A service used to manage multiple-masters data in a given face. + * + * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H). + * + */ + +#define FT_SERVICE_ID_MULTI_MASTERS "multi-masters" + + + typedef FT_Error + (*FT_Get_MM_Func)( FT_Face face, + FT_Multi_Master* master ); + + typedef FT_Error + (*FT_Get_MM_Var_Func)( FT_Face face, + FT_MM_Var* *master ); + + typedef FT_Error + (*FT_Set_MM_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + typedef FT_Error + (*FT_Set_Var_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + typedef FT_Error + (*FT_Set_MM_Blend_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + FT_DEFINE_SERVICE( MultiMasters ) + { + FT_Get_MM_Func get_mm; + FT_Set_MM_Design_Func set_mm_design; + FT_Set_MM_Blend_Func set_mm_blend; + FT_Get_MM_Var_Func get_mm_var; + FT_Set_Var_Design_Func set_var_design; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \ + get_mm_, \ + set_mm_design_, \ + set_mm_blend_, \ + get_mm_var_, \ + set_var_design_ ) \ + static const FT_Service_MultiMastersRec class_ = \ + { \ + get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \ + get_mm_, \ + set_mm_design_, \ + set_mm_blend_, \ + get_mm_var_, \ + set_var_design_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_MultiMastersRec* clazz ) \ + { \ + clazz->get_mm = get_mm_; \ + clazz->set_mm_design = set_mm_design_; \ + clazz->set_mm_blend = set_mm_blend_; \ + clazz->get_mm_var = get_mm_var_; \ + clazz->set_var_design = set_var_design_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVMM_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svotval.h b/lib/linux/include/internal/services/svotval.h new file mode 100644 index 0000000..970bbd5 --- /dev/null +++ b/lib/linux/include/internal/services/svotval.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* svotval.h */ +/* */ +/* The FreeType OpenType validation service (specification). */ +/* */ +/* Copyright 2004, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVOTVAL_H__ +#define __SVOTVAL_H__ + +#include FT_OPENTYPE_VALIDATE_H +#include FT_INTERNAL_VALIDATE_H + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_OPENTYPE_VALIDATE "opentype-validate" + + + typedef FT_Error + (*otv_validate_func)( FT_Face volatile face, + FT_UInt ot_flags, + FT_Bytes *base, + FT_Bytes *gdef, + FT_Bytes *gpos, + FT_Bytes *gsub, + FT_Bytes *jstf ); + + + FT_DEFINE_SERVICE( OTvalidate ) + { + otv_validate_func validate; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVOTVAL_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svpfr.h b/lib/linux/include/internal/services/svpfr.h new file mode 100644 index 0000000..462786f --- /dev/null +++ b/lib/linux/include/internal/services/svpfr.h @@ -0,0 +1,66 @@ +/***************************************************************************/ +/* */ +/* svpfr.h */ +/* */ +/* Internal PFR service functions (specification). */ +/* */ +/* Copyright 2003, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPFR_H__ +#define __SVPFR_H__ + +#include FT_PFR_H +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_PFR_METRICS "pfr-metrics" + + + typedef FT_Error + (*FT_PFR_GetMetricsFunc)( FT_Face face, + FT_UInt *aoutline, + FT_UInt *ametrics, + FT_Fixed *ax_scale, + FT_Fixed *ay_scale ); + + typedef FT_Error + (*FT_PFR_GetKerningFunc)( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + typedef FT_Error + (*FT_PFR_GetAdvanceFunc)( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + + FT_DEFINE_SERVICE( PfrMetrics ) + { + FT_PFR_GetMetricsFunc get_metrics; + FT_PFR_GetKerningFunc get_kerning; + FT_PFR_GetAdvanceFunc get_advance; + + }; + + /* */ + +FT_END_HEADER + +#endif /* __SVPFR_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svpostnm.h b/lib/linux/include/internal/services/svpostnm.h new file mode 100644 index 0000000..a76b4fe --- /dev/null +++ b/lib/linux/include/internal/services/svpostnm.h @@ -0,0 +1,81 @@ +/***************************************************************************/ +/* */ +/* svpostnm.h */ +/* */ +/* The FreeType PostScript name services (specification). */ +/* */ +/* Copyright 2003, 2007, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPOSTNM_H__ +#define __SVPOSTNM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + /* + * A trivial service used to retrieve the PostScript name of a given + * font when available. The `get_name' field should never be NULL. + * + * The corresponding function can return NULL to indicate that the + * PostScript name is not available. + * + * The name is owned by the face and will be destroyed with it. + */ + +#define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME "postscript-font-name" + + + typedef const char* + (*FT_PsName_GetFunc)( FT_Face face ); + + + FT_DEFINE_SERVICE( PsFontName ) + { + FT_PsName_GetFunc get_ps_font_name; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \ + static const FT_Service_PsFontNameRec class_ = \ + { \ + get_ps_font_name_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsFontNameRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_ps_font_name = get_ps_font_name_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPOSTNM_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svprop.h b/lib/linux/include/internal/services/svprop.h new file mode 100644 index 0000000..22da0bb --- /dev/null +++ b/lib/linux/include/internal/services/svprop.h @@ -0,0 +1,81 @@ +/***************************************************************************/ +/* */ +/* svprop.h */ +/* */ +/* The FreeType property service (specification). */ +/* */ +/* Copyright 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPROP_H__ +#define __SVPROP_H__ + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_PROPERTIES "properties" + + + typedef FT_Error + (*FT_Properties_SetFunc)( FT_Module module, + const char* property_name, + const void* value ); + + typedef FT_Error + (*FT_Properties_GetFunc)( FT_Module module, + const char* property_name, + void* value ); + + + FT_DEFINE_SERVICE( Properties ) + { + FT_Properties_SetFunc set_property; + FT_Properties_GetFunc get_property; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ + set_property_, \ + get_property_ ) \ + static const FT_Service_PropertiesRec class_ = \ + { \ + set_property_, \ + get_property_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ + set_property_, \ + get_property_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_PropertiesRec* clazz ) \ + { \ + clazz->set_property = set_property_; \ + clazz->get_property = get_property_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPROP_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svpscmap.h b/lib/linux/include/internal/services/svpscmap.h new file mode 100644 index 0000000..030948e --- /dev/null +++ b/lib/linux/include/internal/services/svpscmap.h @@ -0,0 +1,177 @@ +/***************************************************************************/ +/* */ +/* svpscmap.h */ +/* */ +/* The FreeType PostScript charmap service (specification). */ +/* */ +/* Copyright 2003, 2006, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPSCMAP_H__ +#define __SVPSCMAP_H__ + +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" + + + /* + * Adobe glyph name to unicode value. + */ + typedef FT_UInt32 + (*PS_Unicode_ValueFunc)( const char* glyph_name ); + + /* + * Macintosh name id to glyph name. NULL if invalid index. + */ + typedef const char* + (*PS_Macintosh_NameFunc)( FT_UInt name_index ); + + /* + * Adobe standard string ID to glyph name. NULL if invalid index. + */ + typedef const char* + (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index ); + + + /* + * Simple unicode -> glyph index charmap built from font glyph names + * table. + */ + typedef struct PS_UniMap_ + { + FT_UInt32 unicode; /* bit 31 set: is glyph variant */ + FT_UInt glyph_index; + + } PS_UniMap; + + + typedef struct PS_UnicodesRec_* PS_Unicodes; + + typedef struct PS_UnicodesRec_ + { + FT_CMapRec cmap; + FT_UInt num_maps; + PS_UniMap* maps; + + } PS_UnicodesRec; + + + /* + * A function which returns a glyph name for a given index. Returns + * NULL if invalid index. + */ + typedef const char* + (*PS_GetGlyphNameFunc)( FT_Pointer data, + FT_UInt string_index ); + + /* + * A function used to release the glyph name returned by + * PS_GetGlyphNameFunc, when needed + */ + typedef void + (*PS_FreeGlyphNameFunc)( FT_Pointer data, + const char* name ); + + typedef FT_Error + (*PS_Unicodes_InitFunc)( FT_Memory memory, + PS_Unicodes unicodes, + FT_UInt num_glyphs, + PS_GetGlyphNameFunc get_glyph_name, + PS_FreeGlyphNameFunc free_glyph_name, + FT_Pointer glyph_data ); + + typedef FT_UInt + (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes, + FT_UInt32 unicode ); + + typedef FT_UInt32 + (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes, + FT_UInt32 *unicode ); + + + FT_DEFINE_SERVICE( PsCMaps ) + { + PS_Unicode_ValueFunc unicode_value; + + PS_Unicodes_InitFunc unicodes_init; + PS_Unicodes_CharIndexFunc unicodes_char_index; + PS_Unicodes_CharNextFunc unicodes_char_next; + + PS_Macintosh_NameFunc macintosh_name; + PS_Adobe_Std_StringsFunc adobe_std_strings; + const unsigned short* adobe_std_encoding; + const unsigned short* adobe_expert_encoding; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ + unicode_value_, \ + unicodes_init_, \ + unicodes_char_index_, \ + unicodes_char_next_, \ + macintosh_name_, \ + adobe_std_strings_, \ + adobe_std_encoding_, \ + adobe_expert_encoding_ ) \ + static const FT_Service_PsCMapsRec class_ = \ + { \ + unicode_value_, unicodes_init_, \ + unicodes_char_index_, unicodes_char_next_, macintosh_name_, \ + adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ + unicode_value_, \ + unicodes_init_, \ + unicodes_char_index_, \ + unicodes_char_next_, \ + macintosh_name_, \ + adobe_std_strings_, \ + adobe_std_encoding_, \ + adobe_expert_encoding_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsCMapsRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->unicode_value = unicode_value_; \ + clazz->unicodes_init = unicodes_init_; \ + clazz->unicodes_char_index = unicodes_char_index_; \ + clazz->unicodes_char_next = unicodes_char_next_; \ + clazz->macintosh_name = macintosh_name_; \ + clazz->adobe_std_strings = adobe_std_strings_; \ + clazz->adobe_std_encoding = adobe_std_encoding_; \ + clazz->adobe_expert_encoding = adobe_expert_encoding_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPSCMAP_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svpsinfo.h b/lib/linux/include/internal/services/svpsinfo.h new file mode 100644 index 0000000..4bfb506 --- /dev/null +++ b/lib/linux/include/internal/services/svpsinfo.h @@ -0,0 +1,111 @@ +/***************************************************************************/ +/* */ +/* svpsinfo.h */ +/* */ +/* The FreeType PostScript info service (specification). */ +/* */ +/* Copyright 2003, 2004, 2009, 2011, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPSINFO_H__ +#define __SVPSINFO_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_TYPE1_TYPES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_POSTSCRIPT_INFO "postscript-info" + + + typedef FT_Error + (*PS_GetFontInfoFunc)( FT_Face face, + PS_FontInfoRec* afont_info ); + + typedef FT_Error + (*PS_GetFontExtraFunc)( FT_Face face, + PS_FontExtraRec* afont_extra ); + + typedef FT_Int + (*PS_HasGlyphNamesFunc)( FT_Face face ); + + typedef FT_Error + (*PS_GetFontPrivateFunc)( FT_Face face, + PS_PrivateRec* afont_private ); + + typedef FT_Long + (*PS_GetFontValueFunc)( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + + FT_DEFINE_SERVICE( PsInfo ) + { + PS_GetFontInfoFunc ps_get_font_info; + PS_GetFontExtraFunc ps_get_font_extra; + PS_HasGlyphNamesFunc ps_has_glyph_names; + PS_GetFontPrivateFunc ps_get_font_private; + PS_GetFontValueFunc ps_get_font_value; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSINFOREC( class_, \ + get_font_info_, \ + ps_get_font_extra_, \ + has_glyph_names_, \ + get_font_private_, \ + get_font_value_ ) \ + static const FT_Service_PsInfoRec class_ = \ + { \ + get_font_info_, ps_get_font_extra_, has_glyph_names_, \ + get_font_private_, get_font_value_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSINFOREC( class_, \ + get_font_info_, \ + ps_get_font_extra_, \ + has_glyph_names_, \ + get_font_private_, \ + get_font_value_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsInfoRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->ps_get_font_info = get_font_info_; \ + clazz->ps_get_font_extra = ps_get_font_extra_; \ + clazz->ps_has_glyph_names = has_glyph_names_; \ + clazz->ps_get_font_private = get_font_private_; \ + clazz->ps_get_font_value = get_font_value_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPSINFO_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svsfnt.h b/lib/linux/include/internal/services/svsfnt.h new file mode 100644 index 0000000..d3835aa --- /dev/null +++ b/lib/linux/include/internal/services/svsfnt.h @@ -0,0 +1,103 @@ +/***************************************************************************/ +/* */ +/* svsfnt.h */ +/* */ +/* The FreeType SFNT table loading service (specification). */ +/* */ +/* Copyright 2003, 2004, 2009, 2012 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVSFNT_H__ +#define __SVSFNT_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + + /* + * SFNT table loading service. + */ + +#define FT_SERVICE_ID_SFNT_TABLE "sfnt-table" + + + /* + * Used to implement FT_Load_Sfnt_Table(). + */ + typedef FT_Error + (*FT_SFNT_TableLoadFunc)( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + /* + * Used to implement FT_Get_Sfnt_Table(). + */ + typedef void* + (*FT_SFNT_TableGetFunc)( FT_Face face, + FT_Sfnt_Tag tag ); + + + /* + * Used to implement FT_Sfnt_Table_Info(). + */ + typedef FT_Error + (*FT_SFNT_TableInfoFunc)( FT_Face face, + FT_UInt idx, + FT_ULong *tag, + FT_ULong *offset, + FT_ULong *length ); + + + FT_DEFINE_SERVICE( SFNT_Table ) + { + FT_SFNT_TableLoadFunc load_table; + FT_SFNT_TableGetFunc get_table; + FT_SFNT_TableInfoFunc table_info; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \ + static const FT_Service_SFNT_TableRec class_ = \ + { \ + load_, get_, info_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_SFNT_TableRec* clazz ) \ + { \ + clazz->load_table = load_; \ + clazz->get_table = get_; \ + clazz->table_info = info_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVSFNT_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svttcmap.h b/lib/linux/include/internal/services/svttcmap.h new file mode 100644 index 0000000..4370f4c --- /dev/null +++ b/lib/linux/include/internal/services/svttcmap.h @@ -0,0 +1,107 @@ +/***************************************************************************/ +/* */ +/* svttcmap.h */ +/* */ +/* The FreeType TrueType/sfnt cmap extra information service. */ +/* */ +/* Copyright 2003 by */ +/* Masatake YAMATO, Redhat K.K. */ +/* */ +/* Copyright 2003, 2008, 2009, 2012, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* Development of this service is support of + Information-technology Promotion Agency, Japan. */ + +#ifndef __SVTTCMAP_H__ +#define __SVTTCMAP_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_TT_CMAP "tt-cmaps" + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_CMapInfo */ + /* */ + /* <Description> */ + /* A structure used to store TrueType/sfnt specific cmap information */ + /* which is not covered by the generic @FT_CharMap structure. This */ + /* structure can be accessed with the @FT_Get_TT_CMap_Info function. */ + /* */ + /* <Fields> */ + /* language :: */ + /* The language ID used in Mac fonts. Definitions of values are in */ + /* `ttnameid.h'. */ + /* */ + /* format :: */ + /* The cmap format. OpenType 1.5 defines the formats 0 (byte */ + /* encoding table), 2~(high-byte mapping through table), 4~(segment */ + /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */ + /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */ + /* coverage), and 14 (Unicode Variation Sequences). */ + /* */ + typedef struct TT_CMapInfo_ + { + FT_ULong language; + FT_Long format; + + } TT_CMapInfo; + + + typedef FT_Error + (*TT_CMap_Info_GetFunc)( FT_CharMap charmap, + TT_CMapInfo *cmap_info ); + + + FT_DEFINE_SERVICE( TTCMaps ) + { + TT_CMap_Info_GetFunc get_cmap_info; + }; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ + static const FT_Service_TTCMapsRec class_ = \ + { \ + get_cmap_info_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_TTCMapsRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_cmap_info = get_cmap_info_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVTTCMAP_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svtteng.h b/lib/linux/include/internal/services/svtteng.h new file mode 100644 index 0000000..58e02a6 --- /dev/null +++ b/lib/linux/include/internal/services/svtteng.h @@ -0,0 +1,53 @@ +/***************************************************************************/ +/* */ +/* svtteng.h */ +/* */ +/* The FreeType TrueType engine query service (specification). */ +/* */ +/* Copyright 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVTTENG_H__ +#define __SVTTENG_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + /* + * SFNT table loading service. + */ + +#define FT_SERVICE_ID_TRUETYPE_ENGINE "truetype-engine" + + /* + * Used to implement FT_Get_TrueType_Engine_Type + */ + + FT_DEFINE_SERVICE( TrueTypeEngine ) + { + FT_TrueTypeEngineType engine_type; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVTTENG_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svttglyf.h b/lib/linux/include/internal/services/svttglyf.h new file mode 100644 index 0000000..369eb84 --- /dev/null +++ b/lib/linux/include/internal/services/svttglyf.h @@ -0,0 +1,68 @@ +/***************************************************************************/ +/* */ +/* svttglyf.h */ +/* */ +/* The FreeType TrueType glyph service. */ +/* */ +/* Copyright 2007, 2009, 2012 by David Turner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __SVTTGLYF_H__ +#define __SVTTGLYF_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_TT_GLYF "tt-glyf" + + + typedef FT_ULong + (*TT_Glyf_GetLocationFunc)( FT_Face face, + FT_UInt gindex, + FT_ULong *psize ); + + FT_DEFINE_SERVICE( TTGlyf ) + { + TT_Glyf_GetLocationFunc get_location; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ ) \ + static const FT_Service_TTGlyfRec class_ = \ + { \ + get_location_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_TTGlyfRec* clazz ) \ + { \ + clazz->get_location = get_location_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVTTGLYF_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svwinfnt.h b/lib/linux/include/internal/services/svwinfnt.h new file mode 100644 index 0000000..57f7765 --- /dev/null +++ b/lib/linux/include/internal/services/svwinfnt.h @@ -0,0 +1,50 @@ +/***************************************************************************/ +/* */ +/* svwinfnt.h */ +/* */ +/* The FreeType Windows FNT/FONT service (specification). */ +/* */ +/* Copyright 2003 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVWINFNT_H__ +#define __SVWINFNT_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_WINFONTS_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_WINFNT "winfonts" + + typedef FT_Error + (*FT_WinFnt_GetHeaderFunc)( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + + FT_DEFINE_SERVICE( WinFnt ) + { + FT_WinFnt_GetHeaderFunc get_header; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVWINFNT_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/services/svxf86nm.h b/lib/linux/include/internal/services/svxf86nm.h new file mode 100644 index 0000000..ca5d884 --- /dev/null +++ b/lib/linux/include/internal/services/svxf86nm.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* svxf86nm.h */ +/* */ +/* The FreeType XFree86 services (specification only). */ +/* */ +/* Copyright 2003 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVXF86NM_H__ +#define __SVXF86NM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A trivial service used to return the name of a face's font driver, + * according to the XFree86 nomenclature. Note that the service data + * is a simple constant string pointer. + */ + +#define FT_SERVICE_ID_XF86_NAME "xf86-driver-name" + +#define FT_XF86_FORMAT_TRUETYPE "TrueType" +#define FT_XF86_FORMAT_TYPE_1 "Type 1" +#define FT_XF86_FORMAT_BDF "BDF" +#define FT_XF86_FORMAT_PCF "PCF" +#define FT_XF86_FORMAT_TYPE_42 "Type 42" +#define FT_XF86_FORMAT_CID "CID Type 1" +#define FT_XF86_FORMAT_CFF "CFF" +#define FT_XF86_FORMAT_PFR "PFR" +#define FT_XF86_FORMAT_WINFNT "Windows FNT" + + /* */ + + +FT_END_HEADER + + +#endif /* __SVXF86NM_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/sfnt.h b/lib/linux/include/internal/sfnt.h new file mode 100644 index 0000000..d558e86 --- /dev/null +++ b/lib/linux/include/internal/sfnt.h @@ -0,0 +1,711 @@ +/***************************************************************************/ +/* */ +/* sfnt.h */ +/* */ +/* High-level `sfnt' driver interface (specification). */ +/* */ +/* Copyright 1996-2006, 2009, 2012-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SFNT_H__ +#define __SFNT_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_DRIVER_H +#include FT_INTERNAL_TRUETYPE_TYPES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Init_Face_Func */ + /* */ + /* <Description> */ + /* First part of the SFNT face object initialization. This finds */ + /* the face in a SFNT file or collection, and load its format tag in */ + /* face->format_tag. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* face :: A handle to the target face object. */ + /* */ + /* face_index :: The index of the TrueType font, if we are opening a */ + /* collection. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* params :: Optional additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be at the font file's origin. */ + /* */ + /* This function recognizes fonts embedded in a `TrueType */ + /* collection'. */ + /* */ + /* Once the format tag has been validated by the font driver, it */ + /* should then call the TT_Load_Face_Func() callback to read the rest */ + /* of the SFNT tables in the object. */ + /* */ + typedef FT_Error + (*TT_Init_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Face_Func */ + /* */ + /* <Description> */ + /* Second part of the SFNT face object initialization. This loads */ + /* the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the */ + /* face object. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* face :: A handle to the target face object. */ + /* */ + /* face_index :: The index of the TrueType font, if we are opening a */ + /* collection. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* params :: Optional additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function must be called after TT_Init_Face_Func(). */ + /* */ + typedef FT_Error + (*TT_Load_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Done_Face_Func */ + /* */ + /* <Description> */ + /* A callback used to delete the common SFNT data from a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Note> */ + /* This function does NOT destroy the face object. */ + /* */ + typedef void + (*TT_Done_Face_Func)( TT_Face face ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Any_Func */ + /* */ + /* <Description> */ + /* Load any font table into client memory. */ + /* */ + /* <Input> */ + /* face :: The face object to look for. */ + /* */ + /* tag :: The tag of table to load. Use the value 0 if you want */ + /* to access the whole font file, else set this parameter */ + /* to a valid TrueType table tag that you can forge with */ + /* the MAKE_TT_TAG macro. */ + /* */ + /* offset :: The starting offset in the table (or the file if */ + /* tag == 0). */ + /* */ + /* length :: The address of the decision variable: */ + /* */ + /* If length == NULL: */ + /* Loads the whole table. Returns an error if */ + /* `offset' == 0! */ + /* */ + /* If *length == 0: */ + /* Exits immediately; returning the length of the given */ + /* table or of the font file, depending on the value of */ + /* `tag'. */ + /* */ + /* If *length != 0: */ + /* Loads the next `length' bytes of table or font, */ + /* starting at offset `offset' (in table or font too). */ + /* */ + /* <Output> */ + /* buffer :: The address of target buffer. */ + /* */ + /* <Return> */ + /* TrueType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Load_Any_Func)( TT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte *buffer, + FT_ULong* length ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Find_SBit_Image_Func */ + /* */ + /* <Description> */ + /* Check whether an embedded bitmap (an `sbit') exists for a given */ + /* glyph, at a given strike. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* strike_index :: The current strike index. */ + /* */ + /* <Output> */ + /* arange :: The SBit range containing the glyph index. */ + /* */ + /* astrike :: The SBit strike containing the glyph index. */ + /* */ + /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns */ + /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ + /* glyph. */ + /* */ + typedef FT_Error + (*TT_Find_SBit_Image_Func)( TT_Face face, + FT_UInt glyph_index, + FT_ULong strike_index, + TT_SBit_Range *arange, + TT_SBit_Strike *astrike, + FT_ULong *aglyph_offset ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_SBit_Metrics_Func */ + /* */ + /* <Description> */ + /* Get the big metrics for a given embedded bitmap. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* range :: The SBit range containing the glyph. */ + /* */ + /* <Output> */ + /* big_metrics :: A big SBit metrics structure for the glyph. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be positioned at the glyph's offset within */ + /* the `EBDT' table before the call. */ + /* */ + /* If the image format uses variable metrics, the stream cursor is */ + /* positioned just after the metrics header in the `EBDT' table on */ + /* function exit. */ + /* */ + typedef FT_Error + (*TT_Load_SBit_Metrics_Func)( FT_Stream stream, + TT_SBit_Range range, + TT_SBit_Metrics metrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_SBit_Image_Func */ + /* */ + /* <Description> */ + /* Load a given glyph sbit image from the font resource. This also */ + /* returns its metrics. */ + /* */ + /* <Input> */ + /* face :: */ + /* The target face object. */ + /* */ + /* strike_index :: */ + /* The strike index. */ + /* */ + /* glyph_index :: */ + /* The current glyph index. */ + /* */ + /* load_flags :: */ + /* The current load flags. */ + /* */ + /* stream :: */ + /* The input stream. */ + /* */ + /* <Output> */ + /* amap :: */ + /* The target pixmap. */ + /* */ + /* ametrics :: */ + /* A big sbit metrics structure for the glyph image. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* glyph sbit exists for the index. */ + /* */ + /* <Note> */ + /* The `map.buffer' field is always freed before the glyph is loaded. */ + /* */ + typedef FT_Error + (*TT_Load_SBit_Image_Func)( TT_Face face, + FT_ULong strike_index, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_Stream stream, + FT_Bitmap *amap, + TT_SBit_MetricsRec *ametrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Set_SBit_Strike_Func */ + /* */ + /* <Description> */ + /* Select an sbit strike for a given size request. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* req :: The size request. */ + /* */ + /* <Output> */ + /* astrike_index :: The index of the sbit strike. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* sbit strike exists for the selected ppem values. */ + /* */ + typedef FT_Error + (*TT_Set_SBit_Strike_Func)( TT_Face face, + FT_Size_Request req, + FT_ULong* astrike_index ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Strike_Metrics_Func */ + /* */ + /* <Description> */ + /* Load the metrics of a given strike. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* strike_index :: The strike index. */ + /* */ + /* <Output> */ + /* metrics :: the metrics of the strike. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* such sbit strike exists. */ + /* */ + typedef FT_Error + (*TT_Load_Strike_Metrics_Func)( TT_Face face, + FT_ULong strike_index, + FT_Size_Metrics* metrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_PS_Name_Func */ + /* */ + /* <Description> */ + /* Get the PostScript glyph name of a glyph. */ + /* */ + /* <Input> */ + /* idx :: The glyph index. */ + /* */ + /* PSname :: The address of a string pointer. Will be NULL in case */ + /* of error, otherwise it is a pointer to the glyph name. */ + /* */ + /* You must not modify the returned string! */ + /* */ + /* <Output> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Get_PS_Name_Func)( TT_Face face, + FT_UInt idx, + FT_String** PSname ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Metrics_Func */ + /* */ + /* <Description> */ + /* Load a metrics table, which is a table with a horizontal and a */ + /* vertical version. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* vertical :: A boolean flag. If set, load the vertical one. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Load_Metrics_Func)( TT_Face face, + FT_Stream stream, + FT_Bool vertical ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_Metrics_Func */ + /* */ + /* <Description> */ + /* Load the horizontal or vertical header in a face object. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* vertical :: A boolean flag. If set, load vertical metrics. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* abearing :: The horizontal (or vertical) bearing. Set to zero in */ + /* case of error. */ + /* */ + /* aadvance :: The horizontal (or vertical) advance. Set to zero in */ + /* case of error. */ + /* */ + typedef void + (*TT_Get_Metrics_Func)( TT_Face face, + FT_Bool vertical, + FT_UInt gindex, + FT_Short* abearing, + FT_UShort* aadvance ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Table_Func */ + /* */ + /* <Description> */ + /* Load a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The function uses `face->goto_table' to seek the stream to the */ + /* start of the table, except while loading the font directory. */ + /* */ + typedef FT_Error + (*TT_Load_Table_Func)( TT_Face face, + FT_Stream stream ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Free_Table_Func */ + /* */ + /* <Description> */ + /* Free a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + typedef void + (*TT_Free_Table_Func)( TT_Face face ); + + + /* + * @functype: + * TT_Face_GetKerningFunc + * + * @description: + * Return the horizontal kerning value between two glyphs. + * + * @input: + * face :: A handle to the source face object. + * left_glyph :: The left glyph index. + * right_glyph :: The right glyph index. + * + * @return: + * The kerning value in font units. + */ + typedef FT_Int + (*TT_Face_GetKerningFunc)( TT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* SFNT_Interface */ + /* */ + /* <Description> */ + /* This structure holds pointers to the functions used to load and */ + /* free the basic tables that are required in a `sfnt' font file. */ + /* */ + /* <Fields> */ + /* Check the various xxx_Func() descriptions for details. */ + /* */ + typedef struct SFNT_Interface_ + { + TT_Loader_GotoTableFunc goto_table; + + TT_Init_Face_Func init_face; + TT_Load_Face_Func load_face; + TT_Done_Face_Func done_face; + FT_Module_Requester get_interface; + + TT_Load_Any_Func load_any; + + /* these functions are called by `load_face' but they can also */ + /* be called from external modules, if there is a need to do so */ + TT_Load_Table_Func load_head; + TT_Load_Metrics_Func load_hhea; + TT_Load_Table_Func load_cmap; + TT_Load_Table_Func load_maxp; + TT_Load_Table_Func load_os2; + TT_Load_Table_Func load_post; + + TT_Load_Table_Func load_name; + TT_Free_Table_Func free_name; + + /* this field was called `load_kerning' up to version 2.1.10 */ + TT_Load_Table_Func load_kern; + + TT_Load_Table_Func load_gasp; + TT_Load_Table_Func load_pclt; + + /* see `ttload.h'; this field was called `load_bitmap_header' up to */ + /* version 2.1.10 */ + TT_Load_Table_Func load_bhed; + + TT_Load_SBit_Image_Func load_sbit_image; + + /* see `ttpost.h' */ + TT_Get_PS_Name_Func get_psname; + TT_Free_Table_Func free_psnames; + + /* starting here, the structure differs from version 2.1.7 */ + + /* this field was introduced in version 2.1.8, named `get_psname' */ + TT_Face_GetKerningFunc get_kerning; + + /* new elements introduced after version 2.1.10 */ + + /* load the font directory, i.e., the offset table and */ + /* the table directory */ + TT_Load_Table_Func load_font_dir; + TT_Load_Metrics_Func load_hmtx; + + TT_Load_Table_Func load_eblc; + TT_Free_Table_Func free_eblc; + + TT_Set_SBit_Strike_Func set_sbit_strike; + TT_Load_Strike_Metrics_Func load_strike_metrics; + + TT_Get_Metrics_Func get_metrics; + + } SFNT_Interface; + + + /* transitional */ + typedef SFNT_Interface* SFNT_Service; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SFNT_INTERFACE( \ + class_, \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_ ) \ + static const SFNT_Interface class_ = \ + { \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_, \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_INTERNAL( a, a_ ) \ + clazz->a = a_; + +#define FT_DEFINE_SFNT_INTERFACE( \ + class_, \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + SFNT_Interface* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->goto_table = goto_table_; \ + clazz->init_face = init_face_; \ + clazz->load_face = load_face_; \ + clazz->done_face = done_face_; \ + clazz->get_interface = get_interface_; \ + clazz->load_any = load_any_; \ + clazz->load_head = load_head_; \ + clazz->load_hhea = load_hhea_; \ + clazz->load_cmap = load_cmap_; \ + clazz->load_maxp = load_maxp_; \ + clazz->load_os2 = load_os2_; \ + clazz->load_post = load_post_; \ + clazz->load_name = load_name_; \ + clazz->free_name = free_name_; \ + clazz->load_kern = load_kern_; \ + clazz->load_gasp = load_gasp_; \ + clazz->load_pclt = load_pclt_; \ + clazz->load_bhed = load_bhed_; \ + clazz->load_sbit_image = load_sbit_image_; \ + clazz->get_psname = get_psname_; \ + clazz->free_psnames = free_psnames_; \ + clazz->get_kerning = get_kerning_; \ + clazz->load_font_dir = load_font_dir_; \ + clazz->load_hmtx = load_hmtx_; \ + clazz->load_eblc = load_eblc_; \ + clazz->free_eblc = free_eblc_; \ + clazz->set_sbit_strike = set_sbit_strike_; \ + clazz->load_strike_metrics = load_strike_metrics_; \ + clazz->get_metrics = get_metrics_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __SFNT_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/t1types.h b/lib/linux/include/internal/t1types.h new file mode 100644 index 0000000..e20237c --- /dev/null +++ b/lib/linux/include/internal/t1types.h @@ -0,0 +1,255 @@ +/***************************************************************************/ +/* */ +/* t1types.h */ +/* */ +/* Basic Type1/Type2 type definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2004, 2006, 2008, 2009, 2011, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TYPES_H__ +#define __T1TYPES_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include FT_INTERNAL_SERVICE_H +#include FT_SERVICE_POSTSCRIPT_CMAPS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_EncodingRec */ + /* */ + /* <Description> */ + /* A structure modeling a custom encoding. */ + /* */ + /* <Fields> */ + /* num_chars :: The number of character codes in the encoding. */ + /* Usually 256. */ + /* */ + /* code_first :: The lowest valid character code in the encoding. */ + /* */ + /* code_last :: The highest valid character code in the encoding */ + /* + 1. When equal to code_first there are no valid */ + /* character codes. */ + /* */ + /* char_index :: An array of corresponding glyph indices. */ + /* */ + /* char_name :: An array of corresponding glyph names. */ + /* */ + typedef struct T1_EncodingRecRec_ + { + FT_Int num_chars; + FT_Int code_first; + FT_Int code_last; + + FT_UShort* char_index; + FT_String** char_name; + + } T1_EncodingRec, *T1_Encoding; + + + /* used to hold extra data of PS_FontInfoRec that + * cannot be stored in the publicly defined structure. + * + * Note these can't be blended with multiple-masters. + */ + typedef struct PS_FontExtraRec_ + { + FT_UShort fs_type; + + } PS_FontExtraRec; + + + typedef struct T1_FontRec_ + { + PS_FontInfoRec font_info; /* font info dictionary */ + PS_FontExtraRec font_extra; /* font info extra fields */ + PS_PrivateRec private_dict; /* private dictionary */ + FT_String* font_name; /* top-level dictionary */ + + T1_EncodingType encoding_type; + T1_EncodingRec encoding; + + FT_Byte* subrs_block; + FT_Byte* charstrings_block; + FT_Byte* glyph_names_block; + + FT_Int num_subrs; + FT_Byte** subrs; + FT_PtrDist* subrs_len; + + FT_Int num_glyphs; + FT_String** glyph_names; /* array of glyph names */ + FT_Byte** charstrings; /* array of glyph charstrings */ + FT_PtrDist* charstrings_len; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + FT_BBox font_bbox; + FT_Long font_id; + + FT_Fixed stroke_width; + + } T1_FontRec, *T1_Font; + + + typedef struct CID_SubrsRec_ + { + FT_UInt num_subrs; + FT_Byte** code; + + } CID_SubrsRec, *CID_Subrs; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** AFM FONT INFORMATION STRUCTURES ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct AFM_TrackKernRec_ + { + FT_Int degree; + FT_Fixed min_ptsize; + FT_Fixed min_kern; + FT_Fixed max_ptsize; + FT_Fixed max_kern; + + } AFM_TrackKernRec, *AFM_TrackKern; + + typedef struct AFM_KernPairRec_ + { + FT_Int index1; + FT_Int index2; + FT_Int x; + FT_Int y; + + } AFM_KernPairRec, *AFM_KernPair; + + typedef struct AFM_FontInfoRec_ + { + FT_Bool IsCIDFont; + FT_BBox FontBBox; + FT_Fixed Ascender; + FT_Fixed Descender; + AFM_TrackKern TrackKerns; /* free if non-NULL */ + FT_Int NumTrackKern; + AFM_KernPair KernPairs; /* free if non-NULL */ + FT_Int NumKernPair; + + } AFM_FontInfoRec, *AFM_FontInfo; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** ORIGINAL T1_FACE CLASS DEFINITION ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct T1_FaceRec_* T1_Face; + typedef struct CID_FaceRec_* CID_Face; + + + typedef struct T1_FaceRec_ + { + FT_FaceRec root; + T1_FontRec type1; + const void* psnames; + const void* psaux; + const void* afm_data; + FT_CharMapRec charmaprecs[2]; + FT_CharMap charmaps[2]; + + /* support for Multiple Masters fonts */ + PS_Blend blend; + + /* undocumented, optional: indices of subroutines that express */ + /* the NormalizeDesignVector and the ConvertDesignVector procedure, */ + /* respectively, as Type 2 charstrings; -1 if keywords not present */ + FT_Int ndv_idx; + FT_Int cdv_idx; + + /* undocumented, optional: has the same meaning as len_buildchar */ + /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */ + FT_UInt len_buildchar; + FT_Long* buildchar; + + /* since version 2.1 - interface to PostScript hinter */ + const void* pshinter; + + } T1_FaceRec; + + + typedef struct CID_FaceRec_ + { + FT_FaceRec root; + void* psnames; + void* psaux; + CID_FaceInfoRec cid; + PS_FontExtraRec font_extra; +#if 0 + void* afm_data; +#endif + CID_Subrs subrs; + + /* since version 2.1 - interface to PostScript hinter */ + void* pshinter; + + /* since version 2.1.8, but was originally positioned after `afm_data' */ + FT_Byte* binary_data; /* used if hex data has been converted */ + FT_Stream cid_stream; + + } CID_FaceRec; + + +FT_END_HEADER + +#endif /* __T1TYPES_H__ */ + + +/* END */ diff --git a/lib/linux/include/internal/tttypes.h b/lib/linux/include/internal/tttypes.h new file mode 100644 index 0000000..ad302b8 --- /dev/null +++ b/lib/linux/include/internal/tttypes.h @@ -0,0 +1,1516 @@ +/***************************************************************************/ +/* */ +/* tttypes.h */ +/* */ +/* Basic SFNT/TrueType type definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2002, 2004-2008, 2012-2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTYPES_H__ +#define __TTTYPES_H__ + + +#include <ft2build.h> +#include FT_TRUETYPE_TABLES_H +#include FT_INTERNAL_OBJECTS_H + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT +#include FT_MULTIPLE_MASTERS_H +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TTC_HeaderRec */ + /* */ + /* <Description> */ + /* TrueType collection header. This table contains the offsets of */ + /* the font headers of each distinct TrueType face in the file. */ + /* */ + /* <Fields> */ + /* tag :: Must be `ttc ' to indicate a TrueType collection. */ + /* */ + /* version :: The version number. */ + /* */ + /* count :: The number of faces in the collection. The */ + /* specification says this should be an unsigned long, but */ + /* we use a signed long since we need the value -1 for */ + /* specific purposes. */ + /* */ + /* offsets :: The offsets of the font headers, one per face. */ + /* */ + typedef struct TTC_HeaderRec_ + { + FT_ULong tag; + FT_Fixed version; + FT_Long count; + FT_ULong* offsets; + + } TTC_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* SFNT_HeaderRec */ + /* */ + /* <Description> */ + /* SFNT file format header. */ + /* */ + /* <Fields> */ + /* format_tag :: The font format tag. */ + /* */ + /* num_tables :: The number of tables in file. */ + /* */ + /* search_range :: Must be `16 * (max power of 2 <= num_tables)'. */ + /* */ + /* entry_selector :: Must be log2 of `search_range / 16'. */ + /* */ + /* range_shift :: Must be `num_tables * 16 - search_range'. */ + /* */ + typedef struct SFNT_HeaderRec_ + { + FT_ULong format_tag; + FT_UShort num_tables; + FT_UShort search_range; + FT_UShort entry_selector; + FT_UShort range_shift; + + FT_ULong offset; /* not in file */ + + } SFNT_HeaderRec, *SFNT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_TableRec */ + /* */ + /* <Description> */ + /* This structure describes a given table of a TrueType font. */ + /* */ + /* <Fields> */ + /* Tag :: A four-bytes tag describing the table. */ + /* */ + /* CheckSum :: The table checksum. This value can be ignored. */ + /* */ + /* Offset :: The offset of the table from the start of the TrueType */ + /* font in its resource. */ + /* */ + /* Length :: The table length (in bytes). */ + /* */ + typedef struct TT_TableRec_ + { + FT_ULong Tag; /* table type */ + FT_ULong CheckSum; /* table checksum */ + FT_ULong Offset; /* table file offset */ + FT_ULong Length; /* table length */ + + } TT_TableRec, *TT_Table; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* WOFF_HeaderRec */ + /* */ + /* <Description> */ + /* WOFF file format header. */ + /* */ + /* <Fields> */ + /* See */ + /* */ + /* http://www.w3.org/TR/WOFF/#WOFFHeader */ + /* */ + typedef struct WOFF_HeaderRec_ + { + FT_ULong signature; + FT_ULong flavor; + FT_ULong length; + FT_UShort num_tables; + FT_UShort reserved; + FT_ULong totalSfntSize; + FT_UShort majorVersion; + FT_UShort minorVersion; + FT_ULong metaOffset; + FT_ULong metaLength; + FT_ULong metaOrigLength; + FT_ULong privOffset; + FT_ULong privLength; + + } WOFF_HeaderRec, *WOFF_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* WOFF_TableRec */ + /* */ + /* <Description> */ + /* This structure describes a given table of a WOFF font. */ + /* */ + /* <Fields> */ + /* Tag :: A four-bytes tag describing the table. */ + /* */ + /* Offset :: The offset of the table from the start of the WOFF */ + /* font in its resource. */ + /* */ + /* CompLength :: Compressed table length (in bytes). */ + /* */ + /* OrigLength :: Unompressed table length (in bytes). */ + /* */ + /* CheckSum :: The table checksum. This value can be ignored. */ + /* */ + /* OrigOffset :: The uncompressed table file offset. This value gets */ + /* computed while constructing the (uncompressed) SFNT */ + /* header. It is not contained in the WOFF file. */ + /* */ + typedef struct WOFF_TableRec_ + { + FT_ULong Tag; /* table ID */ + FT_ULong Offset; /* table file offset */ + FT_ULong CompLength; /* compressed table length */ + FT_ULong OrigLength; /* uncompressed table length */ + FT_ULong CheckSum; /* uncompressed checksum */ + + FT_ULong OrigOffset; /* uncompressed table file offset */ + /* (not in the WOFF file) */ + } WOFF_TableRec, *WOFF_Table; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_LongMetricsRec */ + /* */ + /* <Description> */ + /* A structure modeling the long metrics of the `hmtx' and `vmtx' */ + /* TrueType tables. The values are expressed in font units. */ + /* */ + /* <Fields> */ + /* advance :: The advance width or height for the glyph. */ + /* */ + /* bearing :: The left-side or top-side bearing for the glyph. */ + /* */ + typedef struct TT_LongMetricsRec_ + { + FT_UShort advance; + FT_Short bearing; + + } TT_LongMetricsRec, *TT_LongMetrics; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_ShortMetrics */ + /* */ + /* <Description> */ + /* A simple type to model the short metrics of the `hmtx' and `vmtx' */ + /* tables. */ + /* */ + typedef FT_Short TT_ShortMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_NameEntryRec */ + /* */ + /* <Description> */ + /* A structure modeling TrueType name records. Name records are used */ + /* to store important strings like family name, style name, */ + /* copyright, etc. in _localized_ versions (i.e., language, encoding, */ + /* etc). */ + /* */ + /* <Fields> */ + /* platformID :: The ID of the name's encoding platform. */ + /* */ + /* encodingID :: The platform-specific ID for the name's encoding. */ + /* */ + /* languageID :: The platform-specific ID for the name's language. */ + /* */ + /* nameID :: The ID specifying what kind of name this is. */ + /* */ + /* stringLength :: The length of the string in bytes. */ + /* */ + /* stringOffset :: The offset to the string in the `name' table. */ + /* */ + /* string :: A pointer to the string's bytes. Note that these */ + /* are usually UTF-16 encoded characters. */ + /* */ + typedef struct TT_NameEntryRec_ + { + FT_UShort platformID; + FT_UShort encodingID; + FT_UShort languageID; + FT_UShort nameID; + FT_UShort stringLength; + FT_ULong stringOffset; + + /* this last field is not defined in the spec */ + /* but used by the FreeType engine */ + + FT_Byte* string; + + } TT_NameEntryRec, *TT_NameEntry; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_NameTableRec */ + /* */ + /* <Description> */ + /* A structure modeling the TrueType name table. */ + /* */ + /* <Fields> */ + /* format :: The format of the name table. */ + /* */ + /* numNameRecords :: The number of names in table. */ + /* */ + /* storageOffset :: The offset of the name table in the `name' */ + /* TrueType table. */ + /* */ + /* names :: An array of name records. */ + /* */ + /* stream :: the file's input stream. */ + /* */ + typedef struct TT_NameTableRec_ + { + FT_UShort format; + FT_UInt numNameRecords; + FT_UInt storageOffset; + TT_NameEntryRec* names; + FT_Stream stream; + + } TT_NameTableRec, *TT_NameTable; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GaspRangeRec */ + /* */ + /* <Description> */ + /* A tiny structure used to model a gasp range according to the */ + /* TrueType specification. */ + /* */ + /* <Fields> */ + /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */ + /* */ + /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */ + /* modes to be used. */ + /* */ + typedef struct TT_GaspRangeRec_ + { + FT_UShort maxPPEM; + FT_UShort gaspFlag; + + } TT_GaspRangeRec, *TT_GaspRange; + + +#define TT_GASP_GRIDFIT 0x01 +#define TT_GASP_DOGRAY 0x02 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GaspRec */ + /* */ + /* <Description> */ + /* A structure modeling the TrueType `gasp' table used to specify */ + /* grid-fitting and anti-aliasing behaviour. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numRanges :: The number of gasp ranges in table. */ + /* */ + /* gaspRanges :: An array of gasp ranges. */ + /* */ + typedef struct TT_Gasp_ + { + FT_UShort version; + FT_UShort numRanges; + TT_GaspRange gaspRanges; + + } TT_GaspRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** EMBEDDED BITMAPS SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_MetricsRec */ + /* */ + /* <Description> */ + /* A structure used to hold the big metrics of a given glyph bitmap */ + /* in a TrueType or OpenType font. These are usually found in the */ + /* `EBDT' (Microsoft) or `bloc' (Apple) table. */ + /* */ + /* <Fields> */ + /* height :: The glyph height in pixels. */ + /* */ + /* width :: The glyph width in pixels. */ + /* */ + /* horiBearingX :: The horizontal left bearing. */ + /* */ + /* horiBearingY :: The horizontal top bearing. */ + /* */ + /* horiAdvance :: The horizontal advance. */ + /* */ + /* vertBearingX :: The vertical left bearing. */ + /* */ + /* vertBearingY :: The vertical top bearing. */ + /* */ + /* vertAdvance :: The vertical advance. */ + /* */ + typedef struct TT_SBit_MetricsRec_ + { + FT_UShort height; + FT_UShort width; + + FT_Short horiBearingX; + FT_Short horiBearingY; + FT_UShort horiAdvance; + + FT_Short vertBearingX; + FT_Short vertBearingY; + FT_UShort vertAdvance; + + } TT_SBit_MetricsRec, *TT_SBit_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_SmallMetricsRec */ + /* */ + /* <Description> */ + /* A structure used to hold the small metrics of a given glyph bitmap */ + /* in a TrueType or OpenType font. These are usually found in the */ + /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */ + /* */ + /* <Fields> */ + /* height :: The glyph height in pixels. */ + /* */ + /* width :: The glyph width in pixels. */ + /* */ + /* bearingX :: The left-side bearing. */ + /* */ + /* bearingY :: The top-side bearing. */ + /* */ + /* advance :: The advance width or height. */ + /* */ + typedef struct TT_SBit_Small_Metrics_ + { + FT_Byte height; + FT_Byte width; + + FT_Char bearingX; + FT_Char bearingY; + FT_Byte advance; + + } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_LineMetricsRec */ + /* */ + /* <Description> */ + /* A structure used to describe the text line metrics of a given */ + /* bitmap strike, for either a horizontal or vertical layout. */ + /* */ + /* <Fields> */ + /* ascender :: The ascender in pixels. */ + /* */ + /* descender :: The descender in pixels. */ + /* */ + /* max_width :: The maximum glyph width in pixels. */ + /* */ + /* caret_slope_enumerator :: Rise of the caret slope, typically set */ + /* to 1 for non-italic fonts. */ + /* */ + /* caret_slope_denominator :: Rise of the caret slope, typically set */ + /* to 0 for non-italic fonts. */ + /* */ + /* caret_offset :: Offset in pixels to move the caret for */ + /* proper positioning. */ + /* */ + /* min_origin_SB :: Minimum of horiBearingX (resp. */ + /* vertBearingY). */ + /* min_advance_SB :: Minimum of */ + /* */ + /* horizontal advance - */ + /* ( horiBearingX + width ) */ + /* */ + /* resp. */ + /* */ + /* vertical advance - */ + /* ( vertBearingY + height ) */ + /* */ + /* max_before_BL :: Maximum of horiBearingY (resp. */ + /* vertBearingY). */ + /* */ + /* min_after_BL :: Minimum of */ + /* */ + /* horiBearingY - height */ + /* */ + /* resp. */ + /* */ + /* vertBearingX - width */ + /* */ + /* pads :: Unused (to make the size of the record */ + /* a multiple of 32 bits. */ + /* */ + typedef struct TT_SBit_LineMetricsRec_ + { + FT_Char ascender; + FT_Char descender; + FT_Byte max_width; + FT_Char caret_slope_numerator; + FT_Char caret_slope_denominator; + FT_Char caret_offset; + FT_Char min_origin_SB; + FT_Char min_advance_SB; + FT_Char max_before_BL; + FT_Char min_after_BL; + FT_Char pads[2]; + + } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_RangeRec */ + /* */ + /* <Description> */ + /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */ + /* (Microsoft) or `bloc' (Apple) tables. */ + /* */ + /* <Fields> */ + /* first_glyph :: The first glyph index in the range. */ + /* */ + /* last_glyph :: The last glyph index in the range. */ + /* */ + /* index_format :: The format of index table. Valid values are 1 */ + /* to 5. */ + /* */ + /* image_format :: The format of `EBDT' image data. */ + /* */ + /* image_offset :: The offset to image data in `EBDT'. */ + /* */ + /* image_size :: For index formats 2 and 5. This is the size in */ + /* bytes of each glyph bitmap. */ + /* */ + /* big_metrics :: For index formats 2 and 5. This is the big */ + /* metrics for each glyph bitmap. */ + /* */ + /* num_glyphs :: For index formats 4 and 5. This is the number of */ + /* glyphs in the code array. */ + /* */ + /* glyph_offsets :: For index formats 1 and 3. */ + /* */ + /* glyph_codes :: For index formats 4 and 5. */ + /* */ + /* table_offset :: The offset of the index table in the `EBLC' */ + /* table. Only used during strike loading. */ + /* */ + typedef struct TT_SBit_RangeRec_ + { + FT_UShort first_glyph; + FT_UShort last_glyph; + + FT_UShort index_format; + FT_UShort image_format; + FT_ULong image_offset; + + FT_ULong image_size; + TT_SBit_MetricsRec metrics; + FT_ULong num_glyphs; + + FT_ULong* glyph_offsets; + FT_UShort* glyph_codes; + + FT_ULong table_offset; + + } TT_SBit_RangeRec, *TT_SBit_Range; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_StrikeRec */ + /* */ + /* <Description> */ + /* A structure used describe a given bitmap strike in the `EBLC' */ + /* (Microsoft) or `bloc' (Apple) tables. */ + /* */ + /* <Fields> */ + /* num_index_ranges :: The number of index ranges. */ + /* */ + /* index_ranges :: An array of glyph index ranges. */ + /* */ + /* color_ref :: Unused. `color_ref' is put in for future */ + /* enhancements, but these fields are already */ + /* in use by other platforms (e.g. Newton). */ + /* For details, please see */ + /* */ + /* http://fonts.apple.com/ */ + /* TTRefMan/RM06/Chap6bloc.html */ + /* */ + /* hori :: The line metrics for horizontal layouts. */ + /* */ + /* vert :: The line metrics for vertical layouts. */ + /* */ + /* start_glyph :: The lowest glyph index for this strike. */ + /* */ + /* end_glyph :: The highest glyph index for this strike. */ + /* */ + /* x_ppem :: The number of horizontal pixels per EM. */ + /* */ + /* y_ppem :: The number of vertical pixels per EM. */ + /* */ + /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ + /* and 8. */ + /* */ + /* flags :: Is this a vertical or horizontal strike? For */ + /* details, please see */ + /* */ + /* http://fonts.apple.com/ */ + /* TTRefMan/RM06/Chap6bloc.html */ + /* */ + typedef struct TT_SBit_StrikeRec_ + { + FT_Int num_ranges; + TT_SBit_Range sbit_ranges; + FT_ULong ranges_offset; + + FT_ULong color_ref; + + TT_SBit_LineMetricsRec hori; + TT_SBit_LineMetricsRec vert; + + FT_UShort start_glyph; + FT_UShort end_glyph; + + FT_Byte x_ppem; + FT_Byte y_ppem; + + FT_Byte bit_depth; + FT_Char flags; + + } TT_SBit_StrikeRec, *TT_SBit_Strike; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_ComponentRec */ + /* */ + /* <Description> */ + /* A simple structure to describe a compound sbit element. */ + /* */ + /* <Fields> */ + /* glyph_code :: The element's glyph index. */ + /* */ + /* x_offset :: The element's left bearing. */ + /* */ + /* y_offset :: The element's top bearing. */ + /* */ + typedef struct TT_SBit_ComponentRec_ + { + FT_UShort glyph_code; + FT_Char x_offset; + FT_Char y_offset; + + } TT_SBit_ComponentRec, *TT_SBit_Component; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_ScaleRec */ + /* */ + /* <Description> */ + /* A structure used describe a given bitmap scaling table, as defined */ + /* in the `EBSC' table. */ + /* */ + /* <Fields> */ + /* hori :: The horizontal line metrics. */ + /* */ + /* vert :: The vertical line metrics. */ + /* */ + /* x_ppem :: The number of horizontal pixels per EM. */ + /* */ + /* y_ppem :: The number of vertical pixels per EM. */ + /* */ + /* x_ppem_substitute :: Substitution x_ppem value. */ + /* */ + /* y_ppem_substitute :: Substitution y_ppem value. */ + /* */ + typedef struct TT_SBit_ScaleRec_ + { + TT_SBit_LineMetricsRec hori; + TT_SBit_LineMetricsRec vert; + + FT_Byte x_ppem; + FT_Byte y_ppem; + + FT_Byte x_ppem_substitute; + FT_Byte y_ppem_substitute; + + } TT_SBit_ScaleRec, *TT_SBit_Scale; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_20Rec */ + /* */ + /* <Description> */ + /* Postscript names sub-table, format 2.0. Stores the PS name of */ + /* each glyph in the font face. */ + /* */ + /* <Fields> */ + /* num_glyphs :: The number of named glyphs in the table. */ + /* */ + /* num_names :: The number of PS names stored in the table. */ + /* */ + /* glyph_indices :: The indices of the glyphs in the names arrays. */ + /* */ + /* glyph_names :: The PS names not in Mac Encoding. */ + /* */ + typedef struct TT_Post_20Rec_ + { + FT_UShort num_glyphs; + FT_UShort num_names; + FT_UShort* glyph_indices; + FT_Char** glyph_names; + + } TT_Post_20Rec, *TT_Post_20; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_25Rec */ + /* */ + /* <Description> */ + /* Postscript names sub-table, format 2.5. Stores the PS name of */ + /* each glyph in the font face. */ + /* */ + /* <Fields> */ + /* num_glyphs :: The number of glyphs in the table. */ + /* */ + /* offsets :: An array of signed offsets in a normal Mac */ + /* Postscript name encoding. */ + /* */ + typedef struct TT_Post_25_ + { + FT_UShort num_glyphs; + FT_Char* offsets; + + } TT_Post_25Rec, *TT_Post_25; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_NamesRec */ + /* */ + /* <Description> */ + /* Postscript names table, either format 2.0 or 2.5. */ + /* */ + /* <Fields> */ + /* loaded :: A flag to indicate whether the PS names are loaded. */ + /* */ + /* format_20 :: The sub-table used for format 2.0. */ + /* */ + /* format_25 :: The sub-table used for format 2.5. */ + /* */ + typedef struct TT_Post_NamesRec_ + { + FT_Bool loaded; + + union + { + TT_Post_20Rec format_20; + TT_Post_25Rec format_25; + + } names; + + } TT_Post_NamesRec, *TT_Post_Names; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** GX VARIATION TABLE SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + typedef struct GX_BlendRec_ *GX_Blend; +#endif + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** EMBEDDED BDF PROPERTIES TABLE SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * These types are used to support a `BDF ' table that isn't part of the + * official TrueType specification. It is mainly used in SFNT-based + * bitmap fonts that were generated from a set of BDF fonts. + * + * The format of the table is as follows. + * + * USHORT version `BDF ' table version number, should be 0x0001. + * USHORT strikeCount Number of strikes (bitmap sizes) in this table. + * ULONG stringTable Offset (from start of BDF table) to string + * table. + * + * This is followed by an array of `strikeCount' descriptors, having the + * following format. + * + * USHORT ppem Vertical pixels per EM for this strike. + * USHORT numItems Number of items for this strike (properties and + * atoms). Maximum is 255. + * + * This array in turn is followed by `strikeCount' value sets. Each + * `value set' is an array of `numItems' items with the following format. + * + * ULONG item_name Offset in string table to item name. + * USHORT item_type The item type. Possible values are + * 0 => string (e.g., COMMENT) + * 1 => atom (e.g., FONT or even SIZE) + * 2 => int32 + * 3 => uint32 + * 0x10 => A flag to indicate a properties. This + * is ORed with the above values. + * ULONG item_value For strings => Offset into string table without + * the corresponding double quotes. + * For atoms => Offset into string table. + * For integers => Direct value. + * + * All strings in the string table consist of bytes and are + * zero-terminated. + * + */ + +#ifdef TT_CONFIG_OPTION_BDF + + typedef struct TT_BDFRec_ + { + FT_Byte* table; + FT_Byte* table_end; + FT_Byte* strings; + FT_ULong strings_size; + FT_UInt num_strikes; + FT_Bool loaded; + + } TT_BDFRec, *TT_BDF; + +#endif /* TT_CONFIG_OPTION_BDF */ + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** ORIGINAL TT_FACE CLASS DEFINITION ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This structure/class is defined here because it is common to the */ + /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ + /* */ + /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */ + /* shared between font drivers, and are thus defined in `ttobjs.h'. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_Face */ + /* */ + /* <Description> */ + /* A handle to a TrueType face/font object. A TT_Face encapsulates */ + /* the resolution and scaling independent parts of a TrueType font */ + /* resource. */ + /* */ + /* <Note> */ + /* The TT_Face structure is also used as a `parent class' for the */ + /* OpenType-CFF class (T2_Face). */ + /* */ + typedef struct TT_FaceRec_* TT_Face; + + + /* a function type used for the truetype bytecode interpreter hooks */ + typedef FT_Error + (*TT_Interpreter)( void* exec_context ); + + /* forward declaration */ + typedef struct TT_LoaderRec_* TT_Loader; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_GotoTableFunc */ + /* */ + /* <Description> */ + /* Seeks a stream to the start of a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* tag :: A 4-byte tag used to name the table. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* <Output> */ + /* length :: The length of the table in bytes. Set to 0 if not */ + /* needed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be at the font file's origin. */ + /* */ + typedef FT_Error + (*TT_Loader_GotoTableFunc)( TT_Face face, + FT_ULong tag, + FT_Stream stream, + FT_ULong* length ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_StartGlyphFunc */ + /* */ + /* <Description> */ + /* Seeks a stream to the start of a given glyph element, and opens a */ + /* frame for it. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + /* glyph index :: The index of the glyph to access. */ + /* */ + /* offset :: The offset of the glyph according to the */ + /* `locations' table. */ + /* */ + /* byte_count :: The size of the frame in bytes. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function is normally equivalent to FT_STREAM_SEEK(offset) */ + /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */ + /* but alternative formats (e.g. compressed ones) might use something */ + /* different. */ + /* */ + typedef FT_Error + (*TT_Loader_StartGlyphFunc)( TT_Loader loader, + FT_UInt glyph_index, + FT_ULong offset, + FT_UInt byte_count ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_ReadGlyphFunc */ + /* */ + /* <Description> */ + /* Reads one glyph element (its header, a simple glyph, or a */ + /* composite) from the loader's current stream frame. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Loader_ReadGlyphFunc)( TT_Loader loader ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_EndGlyphFunc */ + /* */ + /* <Description> */ + /* Closes the current loader stream frame for the glyph. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + typedef void + (*TT_Loader_EndGlyphFunc)( TT_Loader loader ); + + + typedef enum TT_SbitTableType_ + { + TT_SBIT_TABLE_TYPE_NONE = 0, + TT_SBIT_TABLE_TYPE_EBLC, /* `EBLC' (Microsoft), */ + /* `bloc' (Apple) */ + TT_SBIT_TABLE_TYPE_CBLC, /* `CBLC' (Google) */ + TT_SBIT_TABLE_TYPE_SBIX, /* `sbix' (Apple) */ + + /* do not remove */ + TT_SBIT_TABLE_TYPE_MAX + + } TT_SbitTableType; + + + /*************************************************************************/ + /* */ + /* TrueType Face Type */ + /* */ + /* <Struct> */ + /* TT_Face */ + /* */ + /* <Description> */ + /* The TrueType face class. These objects model the resolution and */ + /* point-size independent data found in a TrueType font file. */ + /* */ + /* <Fields> */ + /* root :: The base FT_Face structure, managed by the */ + /* base layer. */ + /* */ + /* ttc_header :: The TrueType collection header, used when */ + /* the file is a `ttc' rather than a `ttf'. */ + /* For ordinary font files, the field */ + /* `ttc_header.count' is set to 0. */ + /* */ + /* format_tag :: The font format tag. */ + /* */ + /* num_tables :: The number of TrueType tables in this font */ + /* file. */ + /* */ + /* dir_tables :: The directory of TrueType tables for this */ + /* font file. */ + /* */ + /* header :: The font's font header (`head' table). */ + /* Read on font opening. */ + /* */ + /* horizontal :: The font's horizontal header (`hhea' */ + /* table). This field also contains the */ + /* associated horizontal metrics table */ + /* (`hmtx'). */ + /* */ + /* max_profile :: The font's maximum profile table. Read on */ + /* font opening. Note that some maximum */ + /* values cannot be taken directly from this */ + /* table. We thus define additional fields */ + /* below to hold the computed maxima. */ + /* */ + /* vertical_info :: A boolean which is set when the font file */ + /* contains vertical metrics. If not, the */ + /* value of the `vertical' field is */ + /* undefined. */ + /* */ + /* vertical :: The font's vertical header (`vhea' table). */ + /* This field also contains the associated */ + /* vertical metrics table (`vmtx'), if found. */ + /* IMPORTANT: The contents of this field is */ + /* undefined if the `verticalInfo' field is */ + /* unset. */ + /* */ + /* num_names :: The number of name records within this */ + /* TrueType font. */ + /* */ + /* name_table :: The table of name records (`name'). */ + /* */ + /* os2 :: The font's OS/2 table (`OS/2'). */ + /* */ + /* postscript :: The font's PostScript table (`post' */ + /* table). The PostScript glyph names are */ + /* not loaded by the driver on face opening. */ + /* See the `ttpost' module for more details. */ + /* */ + /* cmap_table :: Address of the face's `cmap' SFNT table */ + /* in memory (it's an extracted frame). */ + /* */ + /* cmap_size :: The size in bytes of the `cmap_table' */ + /* described above. */ + /* */ + /* goto_table :: A function called by each TrueType table */ + /* loader to position a stream's cursor to */ + /* the start of a given table according to */ + /* its tag. It defaults to TT_Goto_Face but */ + /* can be different for strange formats (e.g. */ + /* Type 42). */ + /* */ + /* access_glyph_frame :: A function used to access the frame of a */ + /* given glyph within the face's font file. */ + /* */ + /* forget_glyph_frame :: A function used to forget the frame of a */ + /* given glyph when all data has been loaded. */ + /* */ + /* read_glyph_header :: A function used to read a glyph header. */ + /* It must be called between an `access' and */ + /* `forget'. */ + /* */ + /* read_simple_glyph :: A function used to read a simple glyph. */ + /* It must be called after the header was */ + /* read, and before the `forget'. */ + /* */ + /* read_composite_glyph :: A function used to read a composite glyph. */ + /* It must be called after the header was */ + /* read, and before the `forget'. */ + /* */ + /* sfnt :: A pointer to the SFNT service. */ + /* */ + /* psnames :: A pointer to the PostScript names service. */ + /* */ + /* hdmx :: The face's horizontal device metrics */ + /* (`hdmx' table). This table is optional in */ + /* TrueType/OpenType fonts. */ + /* */ + /* gasp :: The grid-fitting and scaling properties */ + /* table (`gasp'). This table is optional in */ + /* TrueType/OpenType fonts. */ + /* */ + /* pclt :: The `pclt' SFNT table. */ + /* */ + /* num_sbit_scales :: The number of sbit scales for this font. */ + /* */ + /* sbit_scales :: Array of sbit scales embedded in this */ + /* font. This table is optional in a */ + /* TrueType/OpenType font. */ + /* */ + /* postscript_names :: A table used to store the Postscript names */ + /* of the glyphs for this font. See the */ + /* file `ttconfig.h' for comments on the */ + /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */ + /* */ + /* num_locations :: The number of glyph locations in this */ + /* TrueType file. This should be */ + /* identical to the number of glyphs. */ + /* Ignored for Type 2 fonts. */ + /* */ + /* glyph_locations :: An array of longs. These are offsets to */ + /* glyph data within the `glyf' table. */ + /* Ignored for Type 2 font faces. */ + /* */ + /* glyf_len :: The length of the `glyf' table. Needed */ + /* for malformed `loca' tables. */ + /* */ + /* font_program_size :: Size in bytecodes of the face's font */ + /* program. 0 if none defined. Ignored for */ + /* Type 2 fonts. */ + /* */ + /* font_program :: The face's font program (bytecode stream) */ + /* executed at load time, also used during */ + /* glyph rendering. Comes from the `fpgm' */ + /* table. Ignored for Type 2 font fonts. */ + /* */ + /* cvt_program_size :: The size in bytecodes of the face's cvt */ + /* program. Ignored for Type 2 fonts. */ + /* */ + /* cvt_program :: The face's cvt program (bytecode stream) */ + /* executed each time an instance/size is */ + /* changed/reset. Comes from the `prep' */ + /* table. Ignored for Type 2 fonts. */ + /* */ + /* cvt_size :: Size of the control value table (in */ + /* entries). Ignored for Type 2 fonts. */ + /* */ + /* cvt :: The face's original control value table. */ + /* Coordinates are expressed in unscaled font */ + /* units. Comes from the `cvt ' table. */ + /* Ignored for Type 2 fonts. */ + /* */ + /* num_kern_pairs :: The number of kerning pairs present in the */ + /* font file. The engine only loads the */ + /* first horizontal format 0 kern table it */ + /* finds in the font file. Ignored for */ + /* Type 2 fonts. */ + /* */ + /* kern_table_index :: The index of the kerning table in the font */ + /* kerning directory. Ignored for Type 2 */ + /* fonts. */ + /* */ + /* interpreter :: A pointer to the TrueType bytecode */ + /* interpreters field is also used to hook */ + /* the debugger in `ttdebug'. */ + /* */ + /* unpatented_hinting :: If true, use only unpatented methods in */ + /* the bytecode interpreter. */ + /* */ + /* doblend :: A boolean which is set if the font should */ + /* be blended (this is for GX var). */ + /* */ + /* blend :: Contains the data needed to control GX */ + /* variation tables (rather like Multiple */ + /* Master data). */ + /* */ + /* extra :: Reserved for third-party font drivers. */ + /* */ + /* postscript_name :: The PS name of the font. Used by the */ + /* postscript name service. */ + /* */ + typedef struct TT_FaceRec_ + { + FT_FaceRec root; + + TTC_HeaderRec ttc_header; + + FT_ULong format_tag; + FT_UShort num_tables; + TT_Table dir_tables; + + TT_Header header; /* TrueType header table */ + TT_HoriHeader horizontal; /* TrueType horizontal header */ + + TT_MaxProfile max_profile; + + FT_Bool vertical_info; + TT_VertHeader vertical; /* TT Vertical header, if present */ + + FT_UShort num_names; /* number of name records */ + TT_NameTableRec name_table; /* name table */ + + TT_OS2 os2; /* TrueType OS/2 table */ + TT_Postscript postscript; /* TrueType Postscript table */ + + FT_Byte* cmap_table; /* extracted `cmap' table */ + FT_ULong cmap_size; + + TT_Loader_GotoTableFunc goto_table; + + TT_Loader_StartGlyphFunc access_glyph_frame; + TT_Loader_EndGlyphFunc forget_glyph_frame; + TT_Loader_ReadGlyphFunc read_glyph_header; + TT_Loader_ReadGlyphFunc read_simple_glyph; + TT_Loader_ReadGlyphFunc read_composite_glyph; + + /* a typeless pointer to the SFNT_Interface table used to load */ + /* the basic TrueType tables in the face object */ + void* sfnt; + + /* a typeless pointer to the FT_Service_PsCMapsRec table used to */ + /* handle glyph names <-> unicode & Mac values */ + void* psnames; + + + /***********************************************************************/ + /* */ + /* Optional TrueType/OpenType tables */ + /* */ + /***********************************************************************/ + + /* grid-fitting and scaling table */ + TT_GaspRec gasp; /* the `gasp' table */ + + /* PCL 5 table */ + TT_PCLT pclt; + + /* embedded bitmaps support */ + FT_ULong num_sbit_scales; + TT_SBit_Scale sbit_scales; + + /* postscript names table */ + TT_Post_NamesRec postscript_names; + + + /***********************************************************************/ + /* */ + /* TrueType-specific fields (ignored by the OTF-Type2 driver) */ + /* */ + /***********************************************************************/ + + /* the font program, if any */ + FT_ULong font_program_size; + FT_Byte* font_program; + + /* the cvt program, if any */ + FT_ULong cvt_program_size; + FT_Byte* cvt_program; + + /* the original, unscaled, control value table */ + FT_ULong cvt_size; + FT_Short* cvt; + + /* A pointer to the bytecode interpreter to use. This is also */ + /* used to hook the debugger for the `ttdebug' utility. */ + TT_Interpreter interpreter; + +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING + /* Use unpatented hinting only. */ + FT_Bool unpatented_hinting; +#endif + + /***********************************************************************/ + /* */ + /* Other tables or fields. This is used by derivative formats like */ + /* OpenType. */ + /* */ + /***********************************************************************/ + + FT_Generic extra; + + const char* postscript_name; + + FT_ULong glyf_len; + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + FT_Bool doblend; + GX_Blend blend; +#endif + + /* since version 2.2 */ + + FT_Byte* horz_metrics; + FT_ULong horz_metrics_size; + + FT_Byte* vert_metrics; + FT_ULong vert_metrics_size; + + FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */ + FT_Byte* glyph_locations; + + FT_Byte* hdmx_table; + FT_ULong hdmx_table_size; + FT_UInt hdmx_record_count; + FT_ULong hdmx_record_size; + FT_Byte* hdmx_record_sizes; + + FT_Byte* sbit_table; + FT_ULong sbit_table_size; + TT_SbitTableType sbit_table_type; + FT_UInt sbit_num_strikes; + + FT_Byte* kern_table; + FT_ULong kern_table_size; + FT_UInt num_kern_tables; + FT_UInt32 kern_avail_bits; + FT_UInt32 kern_order_bits; + +#ifdef TT_CONFIG_OPTION_BDF + TT_BDFRec bdf; +#endif /* TT_CONFIG_OPTION_BDF */ + + /* since 2.3.0 */ + FT_ULong horz_metrics_offset; + FT_ULong vert_metrics_offset; + +#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING + /* since 2.4.12 */ + FT_ULong sph_found_func_flags; /* special functions found */ + /* for this face */ + FT_Bool sph_compatibility_mode; +#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + + } TT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GlyphZoneRec */ + /* */ + /* <Description> */ + /* A glyph zone is used to load, scale and hint glyph outline */ + /* coordinates. */ + /* */ + /* <Fields> */ + /* memory :: A handle to the memory manager. */ + /* */ + /* max_points :: The maximum size in points of the zone. */ + /* */ + /* max_contours :: Max size in links contours of the zone. */ + /* */ + /* n_points :: The current number of points in the zone. */ + /* */ + /* n_contours :: The current number of contours in the zone. */ + /* */ + /* org :: The original glyph coordinates (font */ + /* units/scaled). */ + /* */ + /* cur :: The current glyph coordinates (scaled/hinted). */ + /* */ + /* tags :: The point control tags. */ + /* */ + /* contours :: The contours end points. */ + /* */ + /* first_point :: Offset of the current subglyph's first point. */ + /* */ + typedef struct TT_GlyphZoneRec_ + { + FT_Memory memory; + FT_UShort max_points; + FT_UShort max_contours; + FT_UShort n_points; /* number of points in zone */ + FT_Short n_contours; /* number of contours */ + + FT_Vector* org; /* original point coordinates */ + FT_Vector* cur; /* current point coordinates */ + FT_Vector* orus; /* original (unscaled) point coordinates */ + + FT_Byte* tags; /* current touch flags */ + FT_UShort* contours; /* contour end points */ + + FT_UShort first_point; /* offset of first (#0) point */ + + } TT_GlyphZoneRec, *TT_GlyphZone; + + + /* handle to execution context */ + typedef struct TT_ExecContextRec_* TT_ExecContext; + + /* glyph loader structure */ + typedef struct TT_LoaderRec_ + { + FT_Face face; + FT_Size size; + FT_GlyphSlot glyph; + FT_GlyphLoader gloader; + + FT_ULong load_flags; + FT_UInt glyph_index; + + FT_Stream stream; + FT_Int byte_len; + + FT_Short n_contours; + FT_BBox bbox; + FT_Int left_bearing; + FT_Int advance; + FT_Int linear; + FT_Bool linear_def; + FT_Vector pp1; + FT_Vector pp2; + + FT_ULong glyf_offset; + + /* the zone where we load our glyphs */ + TT_GlyphZoneRec base; + TT_GlyphZoneRec zone; + + TT_ExecContext exec; + FT_Byte* instructions; + FT_ULong ins_pos; + + /* for possible extensibility in other formats */ + void* other; + + /* since version 2.1.8 */ + FT_Int top_bearing; + FT_Int vadvance; + FT_Vector pp3; + FT_Vector pp4; + + /* since version 2.2.1 */ + FT_Byte* cursor; + FT_Byte* limit; + + } TT_LoaderRec; + + +FT_END_HEADER + +#endif /* __TTTYPES_H__ */ + + +/* END */ diff --git a/lib/linux/include/jemalloc/jemalloc.h b/lib/linux/include/jemalloc/jemalloc.h new file mode 100644 index 0000000..a308223 --- /dev/null +++ b/lib/linux/include/jemalloc/jemalloc.h @@ -0,0 +1,382 @@ +#ifndef JEMALLOC_H_ +#define JEMALLOC_H_ +#ifdef __cplusplus +extern "C" { +#endif + +/* Defined if __attribute__((...)) syntax is supported. */ +#define JEMALLOC_HAVE_ATTR + +/* Defined if alloc_size attribute is supported. */ +#define JEMALLOC_HAVE_ATTR_ALLOC_SIZE + +/* Defined if format(gnu_printf, ...) attribute is supported. */ +#define JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF + +/* Defined if format(printf, ...) attribute is supported. */ +#define JEMALLOC_HAVE_ATTR_FORMAT_PRINTF + +/* + * Define overrides for non-standard allocator-related functions if they are + * present on the system. + */ +#define JEMALLOC_OVERRIDE_MEMALIGN +#define JEMALLOC_OVERRIDE_VALLOC + +/* + * At least Linux omits the "const" in: + * + * size_t malloc_usable_size(const void *ptr); + * + * Match the operating system's prototype. + */ +#define JEMALLOC_USABLE_SIZE_CONST + +/* + * If defined, specify throw() for the public function prototypes when compiling + * with C++. The only justification for this is to match the prototypes that + * glibc defines. + */ +#define JEMALLOC_USE_CXX_THROW + +#ifdef _MSC_VER +# ifdef _WIN64 +# define LG_SIZEOF_PTR_WIN 3 +# else +# define LG_SIZEOF_PTR_WIN 2 +# endif +#endif + +/* sizeof(void *) == 2^LG_SIZEOF_PTR. */ +#define LG_SIZEOF_PTR 3 + +/* + * Name mangling for public symbols is controlled by --with-mangling and + * --with-jemalloc-prefix. With default settings the je_ prefix is stripped by + * these macro definitions. + */ +#ifndef JEMALLOC_NO_RENAME +# define je_malloc_conf je_malloc_conf +# define je_malloc_message je_malloc_message +# define je_malloc je_malloc +# define je_calloc je_calloc +# define je_posix_memalign je_posix_memalign +# define je_aligned_alloc je_aligned_alloc +# define je_realloc je_realloc +# define je_free je_free +# define je_mallocx je_mallocx +# define je_rallocx je_rallocx +# define je_xallocx je_xallocx +# define je_sallocx je_sallocx +# define je_dallocx je_dallocx +# define je_sdallocx je_sdallocx +# define je_nallocx je_nallocx +# define je_mallctl je_mallctl +# define je_mallctlnametomib je_mallctlnametomib +# define je_mallctlbymib je_mallctlbymib +# define je_malloc_stats_print je_malloc_stats_print +# define je_malloc_usable_size je_malloc_usable_size +# define je_memalign je_memalign +# define je_valloc je_valloc +#endif + +#include <stdlib.h> +#include <stdbool.h> +#include <stdint.h> +#include <limits.h> +#include <strings.h> + +#define JEMALLOC_VERSION "4.2.1-0-g3de035335255d553bdb344c32ffdb603816195d8" +#define JEMALLOC_VERSION_MAJOR 4 +#define JEMALLOC_VERSION_MINOR 2 +#define JEMALLOC_VERSION_BUGFIX 1 +#define JEMALLOC_VERSION_NREV 0 +#define JEMALLOC_VERSION_GID "3de035335255d553bdb344c32ffdb603816195d8" + +# define MALLOCX_LG_ALIGN(la) ((int)(la)) +# if LG_SIZEOF_PTR == 2 +# define MALLOCX_ALIGN(a) ((int)(ffs((int)(a))-1)) +# else +# define MALLOCX_ALIGN(a) \ + ((int)(((size_t)(a) < (size_t)INT_MAX) ? ffs((int)(a))-1 : \ + ffs((int)(((size_t)(a))>>32))+31)) +# endif +# define MALLOCX_ZERO ((int)0x40) +/* + * Bias tcache index bits so that 0 encodes "automatic tcache management", and 1 + * encodes MALLOCX_TCACHE_NONE. + */ +# define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8)) +# define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1) +/* + * Bias arena index bits so that 0 encodes "use an automatically chosen arena". + */ +# define MALLOCX_ARENA(a) ((((int)(a))+1) << 20) + +#if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW) +# define JEMALLOC_CXX_THROW throw() +#else +# define JEMALLOC_CXX_THROW +#endif + +#if _MSC_VER +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) __declspec(align(s)) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# ifndef JEMALLOC_EXPORT +# ifdef DLLEXPORT +# define JEMALLOC_EXPORT __declspec(dllexport) +# else +# define JEMALLOC_EXPORT __declspec(dllimport) +# endif +# endif +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE __declspec(noinline) +# ifdef __cplusplus +# define JEMALLOC_NOTHROW __declspec(nothrow) +# else +# define JEMALLOC_NOTHROW +# endif +# define JEMALLOC_SECTION(s) __declspec(allocate(s)) +# define JEMALLOC_RESTRICT_RETURN __declspec(restrict) +# if _MSC_VER >= 1900 && !defined(__EDG__) +# define JEMALLOC_ALLOCATOR __declspec(allocator) +# else +# define JEMALLOC_ALLOCATOR +# endif +#elif defined(JEMALLOC_HAVE_ATTR) +# define JEMALLOC_ATTR(s) __attribute__((s)) +# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s)) +# ifdef JEMALLOC_HAVE_ATTR_ALLOC_SIZE +# define JEMALLOC_ALLOC_SIZE(s) JEMALLOC_ATTR(alloc_size(s)) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) JEMALLOC_ATTR(alloc_size(s1, s2)) +# else +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# endif +# ifndef JEMALLOC_EXPORT +# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default")) +# endif +# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i)) +# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF) +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(printf, s, i)) +# else +# define JEMALLOC_FORMAT_PRINTF(s, i) +# endif +# define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline) +# define JEMALLOC_NOTHROW JEMALLOC_ATTR(nothrow) +# define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s)) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#else +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# define JEMALLOC_EXPORT +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE +# define JEMALLOC_NOTHROW +# define JEMALLOC_SECTION(s) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#endif + +/* + * The je_ prefix on the following public symbol declarations is an artifact + * of namespace management, and should be omitted in application code unless + * JEMALLOC_NO_DEMANGLE is defined (see jemalloc_mangle.h). + */ +extern JEMALLOC_EXPORT const char *je_malloc_conf; +extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque, + const char *s); + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_malloc(size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_calloc(size_t num, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_posix_memalign(void **memptr, + size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1)); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_aligned_alloc(size_t alignment, + size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) + JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_realloc(void *ptr, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr) + JEMALLOC_CXX_THROW; + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_mallocx(size_t size, int flags) + JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_rallocx(void *ptr, size_t size, + int flags) JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_xallocx(void *ptr, size_t size, + size_t extra, int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_sallocx(const void *ptr, + int flags) JEMALLOC_ATTR(pure); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_dallocx(void *ptr, int flags); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size, + int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_nallocx(size_t size, int flags) + JEMALLOC_ATTR(pure); + +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctl(const char *name, + void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlnametomib(const char *name, + size_t *mibp, size_t *miblenp); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_malloc_stats_print( + void (*write_cb)(void *, const char *), void *je_cbopaque, + const char *opts); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size( + JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW; + +#ifdef JEMALLOC_OVERRIDE_MEMALIGN +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_memalign(size_t alignment, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc); +#endif + +#ifdef JEMALLOC_OVERRIDE_VALLOC +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_valloc(size_t size) JEMALLOC_CXX_THROW + JEMALLOC_ATTR(malloc); +#endif + +/* + * void * + * chunk_alloc(void *new_addr, size_t size, size_t alignment, bool *zero, + * bool *commit, unsigned arena_ind); + */ +typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); + +/* + * bool + * chunk_dalloc(void *chunk, size_t size, bool committed, unsigned arena_ind); + */ +typedef bool (chunk_dalloc_t)(void *, size_t, bool, unsigned); + +/* + * bool + * chunk_commit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_commit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_decommit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_decommit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_purge(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_purge_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_split(void *chunk, size_t size, size_t size_a, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_split_t)(void *, size_t, size_t, size_t, bool, unsigned); + +/* + * bool + * chunk_merge(void *chunk_a, size_t size_a, void *chunk_b, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_merge_t)(void *, size_t, void *, size_t, bool, unsigned); + +typedef struct { + chunk_alloc_t *alloc; + chunk_dalloc_t *dalloc; + chunk_commit_t *commit; + chunk_decommit_t *decommit; + chunk_purge_t *purge; + chunk_split_t *split; + chunk_merge_t *merge; +} chunk_hooks_t; + +/* + * By default application code must explicitly refer to mangled symbol names, + * so that it is possible to use jemalloc in conjunction with another allocator + * in the same application. Define JEMALLOC_MANGLE in order to cause automatic + * name mangling that matches the API prefixing that happened as a result of + * --with-mangling and/or --with-jemalloc-prefix configuration settings. + */ +#ifdef JEMALLOC_MANGLE +# ifndef JEMALLOC_NO_DEMANGLE +# define JEMALLOC_NO_DEMANGLE +# endif +# define malloc_conf je_malloc_conf +# define malloc_message je_malloc_message +# define malloc je_malloc +# define calloc je_calloc +# define posix_memalign je_posix_memalign +# define aligned_alloc je_aligned_alloc +# define realloc je_realloc +# define free je_free +# define mallocx je_mallocx +# define rallocx je_rallocx +# define xallocx je_xallocx +# define sallocx je_sallocx +# define dallocx je_dallocx +# define sdallocx je_sdallocx +# define nallocx je_nallocx +# define mallctl je_mallctl +# define mallctlnametomib je_mallctlnametomib +# define mallctlbymib je_mallctlbymib +# define malloc_stats_print je_malloc_stats_print +# define malloc_usable_size je_malloc_usable_size +# define memalign je_memalign +# define valloc je_valloc +#endif + +/* + * The je_* macros can be used as stable alternative names for the + * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily + * meant for use in jemalloc itself, but it can be used by application code to + * provide isolation from the name mangling specified via --with-mangling + * and/or --with-jemalloc-prefix. + */ +#ifndef JEMALLOC_NO_DEMANGLE +# undef je_malloc_conf +# undef je_malloc_message +# undef je_malloc +# undef je_calloc +# undef je_posix_memalign +# undef je_aligned_alloc +# undef je_realloc +# undef je_free +# undef je_mallocx +# undef je_rallocx +# undef je_xallocx +# undef je_sallocx +# undef je_dallocx +# undef je_sdallocx +# undef je_nallocx +# undef je_mallctl +# undef je_mallctlnametomib +# undef je_mallctlbymib +# undef je_malloc_stats_print +# undef je_malloc_usable_size +# undef je_memalign +# undef je_valloc +#endif + +#ifdef __cplusplus +} +#endif +#endif /* JEMALLOC_H_ */ diff --git a/lib/linux/include/ogg/config_types.h b/lib/linux/include/ogg/config_types.h new file mode 100644 index 0000000..4b00047 --- /dev/null +++ b/lib/linux/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/lib/linux/include/ogg/ogg.h b/lib/linux/include/ogg/ogg.h new file mode 100644 index 0000000..cea4ebe --- /dev/null +++ b/lib/linux/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/lib/linux/include/ogg/os_types.h b/lib/linux/include/ogg/os_types.h new file mode 100644 index 0000000..d6691b7 --- /dev/null +++ b/lib/linux/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 17712 2010-12-03 17:10:02Z xiphmont $ + + ********************************************************************/ +#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/lib/linux/include/png.h b/lib/linux/include/png.h new file mode 100644 index 0000000..2cdede0 --- /dev/null +++ b/lib/linux/include/png.h @@ -0,0 +1,3810 @@ +/* png.h - header file for PNG reference library + * + * libpng version 1.2.49 - March 29, 2012 + * Copyright (c) 1998-2012 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.2.49 - March 29, 2012: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 10.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 10.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 10.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-8 13 10210 12.so.0.10[.0] + * 1.2.10rc1-3 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.0.19rc1-5 10 10019 10.so.0.19[.0] + * 1.2.11rc1-5 13 10211 12.so.0.11[.0] + * 1.0.19 10 10019 10.so.0.19[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.0.20 10 10020 10.so.0.20[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.2.13beta1 13 10213 12.so.0.13[.0] + * 1.0.21 10 10021 10.so.0.21[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.2.14beta1-2 13 10214 12.so.0.14[.0] + * 1.0.22rc1 10 10022 10.so.0.22[.0] + * 1.2.14rc1 13 10214 12.so.0.14[.0] + * 1.0.22 10 10022 10.so.0.22[.0] + * 1.2.14 13 10214 12.so.0.14[.0] + * 1.2.15beta1-6 13 10215 12.so.0.15[.0] + * 1.0.23rc1-5 10 10023 10.so.0.23[.0] + * 1.2.15rc1-5 13 10215 12.so.0.15[.0] + * 1.0.23 10 10023 10.so.0.23[.0] + * 1.2.15 13 10215 12.so.0.15[.0] + * 1.2.16beta1-2 13 10216 12.so.0.16[.0] + * 1.2.16rc1 13 10216 12.so.0.16[.0] + * 1.0.24 10 10024 10.so.0.24[.0] + * 1.2.16 13 10216 12.so.0.16[.0] + * 1.2.17beta1-2 13 10217 12.so.0.17[.0] + * 1.0.25rc1 10 10025 10.so.0.25[.0] + * 1.2.17rc1-3 13 10217 12.so.0.17[.0] + * 1.0.25 10 10025 10.so.0.25[.0] + * 1.2.17 13 10217 12.so.0.17[.0] + * 1.0.26 10 10026 10.so.0.26[.0] + * 1.2.18 13 10218 12.so.0.18[.0] + * 1.2.19beta1-31 13 10219 12.so.0.19[.0] + * 1.0.27rc1-6 10 10027 10.so.0.27[.0] + * 1.2.19rc1-6 13 10219 12.so.0.19[.0] + * 1.0.27 10 10027 10.so.0.27[.0] + * 1.2.19 13 10219 12.so.0.19[.0] + * 1.2.20beta01-04 13 10220 12.so.0.20[.0] + * 1.0.28rc1-6 10 10028 10.so.0.28[.0] + * 1.2.20rc1-6 13 10220 12.so.0.20[.0] + * 1.0.28 10 10028 10.so.0.28[.0] + * 1.2.20 13 10220 12.so.0.20[.0] + * 1.2.21beta1-2 13 10221 12.so.0.21[.0] + * 1.2.21rc1-3 13 10221 12.so.0.21[.0] + * 1.0.29 10 10029 10.so.0.29[.0] + * 1.2.21 13 10221 12.so.0.21[.0] + * 1.2.22beta1-4 13 10222 12.so.0.22[.0] + * 1.0.30rc1 10 10030 10.so.0.30[.0] + * 1.2.22rc1 13 10222 12.so.0.22[.0] + * 1.0.30 10 10030 10.so.0.30[.0] + * 1.2.22 13 10222 12.so.0.22[.0] + * 1.2.23beta01-05 13 10223 12.so.0.23[.0] + * 1.2.23rc01 13 10223 12.so.0.23[.0] + * 1.2.23 13 10223 12.so.0.23[.0] + * 1.2.24beta01-02 13 10224 12.so.0.24[.0] + * 1.2.24rc01 13 10224 12.so.0.24[.0] + * 1.2.24 13 10224 12.so.0.24[.0] + * 1.2.25beta01-06 13 10225 12.so.0.25[.0] + * 1.2.25rc01-02 13 10225 12.so.0.25[.0] + * 1.0.31 10 10031 10.so.0.31[.0] + * 1.2.25 13 10225 12.so.0.25[.0] + * 1.2.26beta01-06 13 10226 12.so.0.26[.0] + * 1.2.26rc01 13 10226 12.so.0.26[.0] + * 1.2.26 13 10226 12.so.0.26[.0] + * 1.0.32 10 10032 10.so.0.32[.0] + * 1.2.27beta01-06 13 10227 12.so.0.27[.0] + * 1.2.27rc01 13 10227 12.so.0.27[.0] + * 1.0.33 10 10033 10.so.0.33[.0] + * 1.2.27 13 10227 12.so.0.27[.0] + * 1.0.34 10 10034 10.so.0.34[.0] + * 1.2.28 13 10228 12.so.0.28[.0] + * 1.2.29beta01-03 13 10229 12.so.0.29[.0] + * 1.2.29rc01 13 10229 12.so.0.29[.0] + * 1.0.35 10 10035 10.so.0.35[.0] + * 1.2.29 13 10229 12.so.0.29[.0] + * 1.0.37 10 10037 10.so.0.37[.0] + * 1.2.30beta01-04 13 10230 12.so.0.30[.0] + * 1.0.38rc01-08 10 10038 10.so.0.38[.0] + * 1.2.30rc01-08 13 10230 12.so.0.30[.0] + * 1.0.38 10 10038 10.so.0.38[.0] + * 1.2.30 13 10230 12.so.0.30[.0] + * 1.0.39rc01-03 10 10039 10.so.0.39[.0] + * 1.2.31rc01-03 13 10231 12.so.0.31[.0] + * 1.0.39 10 10039 10.so.0.39[.0] + * 1.2.31 13 10231 12.so.0.31[.0] + * 1.2.32beta01-02 13 10232 12.so.0.32[.0] + * 1.0.40rc01 10 10040 10.so.0.40[.0] + * 1.2.32rc01 13 10232 12.so.0.32[.0] + * 1.0.40 10 10040 10.so.0.40[.0] + * 1.2.32 13 10232 12.so.0.32[.0] + * 1.2.33beta01-02 13 10233 12.so.0.33[.0] + * 1.2.33rc01-02 13 10233 12.so.0.33[.0] + * 1.0.41rc01 10 10041 10.so.0.41[.0] + * 1.2.33 13 10233 12.so.0.33[.0] + * 1.0.41 10 10041 10.so.0.41[.0] + * 1.2.34beta01-07 13 10234 12.so.0.34[.0] + * 1.0.42rc01 10 10042 10.so.0.42[.0] + * 1.2.34rc01 13 10234 12.so.0.34[.0] + * 1.0.42 10 10042 10.so.0.42[.0] + * 1.2.34 13 10234 12.so.0.34[.0] + * 1.2.35beta01-03 13 10235 12.so.0.35[.0] + * 1.0.43rc01-02 10 10043 10.so.0.43[.0] + * 1.2.35rc01-02 13 10235 12.so.0.35[.0] + * 1.0.43 10 10043 10.so.0.43[.0] + * 1.2.35 13 10235 12.so.0.35[.0] + * 1.2.36beta01-05 13 10236 12.so.0.36[.0] + * 1.2.36rc01 13 10236 12.so.0.36[.0] + * 1.0.44 10 10044 10.so.0.44[.0] + * 1.2.36 13 10236 12.so.0.36[.0] + * 1.2.37beta01-03 13 10237 12.so.0.37[.0] + * 1.2.37rc01 13 10237 12.so.0.37[.0] + * 1.2.37 13 10237 12.so.0.37[.0] + * 1.0.45 10 10045 12.so.0.45[.0] + * 1.0.46 10 10046 10.so.0.46[.0] + * 1.2.38beta01 13 10238 12.so.0.38[.0] + * 1.2.38rc01-03 13 10238 12.so.0.38[.0] + * 1.0.47 10 10047 10.so.0.47[.0] + * 1.2.38 13 10238 12.so.0.38[.0] + * 1.2.39beta01-05 13 10239 12.so.0.39[.0] + * 1.2.39rc01 13 10239 12.so.0.39[.0] + * 1.0.48 10 10048 10.so.0.48[.0] + * 1.2.39 13 10239 12.so.0.39[.0] + * 1.2.40beta01 13 10240 12.so.0.40[.0] + * 1.2.40rc01 13 10240 12.so.0.40[.0] + * 1.0.49 10 10049 10.so.0.49[.0] + * 1.2.40 13 10240 12.so.0.40[.0] + * 1.2.41beta01-18 13 10241 12.so.0.41[.0] + * 1.0.51rc01 10 10051 10.so.0.51[.0] + * 1.2.41rc01-03 13 10241 12.so.0.41[.0] + * 1.0.51 10 10051 10.so.0.51[.0] + * 1.2.41 13 10241 12.so.0.41[.0] + * 1.2.42beta01-02 13 10242 12.so.0.42[.0] + * 1.2.42rc01-05 13 10242 12.so.0.42[.0] + * 1.0.52 10 10052 10.so.0.52[.0] + * 1.2.42 13 10242 12.so.0.42[.0] + * 1.2.43beta01-05 13 10243 12.so.0.43[.0] + * 1.0.53rc01-02 10 10053 10.so.0.53[.0] + * 1.2.43rc01-02 13 10243 12.so.0.43[.0] + * 1.0.53 10 10053 10.so.0.53[.0] + * 1.2.43 13 10243 12.so.0.43[.0] + * 1.2.44beta01-03 13 10244 12.so.0.44[.0] + * 1.2.44rc01-03 13 10244 12.so.0.44[.0] + * 1.2.44 13 10244 12.so.0.44[.0] + * 1.2.45beta01-03 13 10245 12.so.0.45[.0] + * 1.0.55rc01 10 10055 10.so.0.55[.0] + * 1.2.45rc01 13 10245 12.so.0.45[.0] + * 1.0.55 10 10055 10.so.0.55[.0] + * 1.2.45 13 10245 12.so.0.45[.0] + * 1.2.46rc01-02 13 10246 12.so.0.46[.0] + * 1.0.56 10 10056 10.so.0.56[.0] + * 1.2.46 13 10246 12.so.0.46[.0] + * 1.2.47beta01 13 10247 12.so.0.47[.0] + * 1.2.47rc01 13 10247 12.so.0.47[.0] + * 1.0.57rc01 10 10057 10.so.0.57[.0] + * 1.2.47 13 10247 12.so.0.47[.0] + * 1.0.57 10 10057 10.so.0.57[.0] + * 1.2.48beta01 13 10248 12.so.0.48[.0] + * 1.2.48rc01-02 13 10248 12.so.0.48[.0] + * 1.0.58 10 10058 10.so.0.58[.0] + * 1.2.48 13 10248 12.so.0.48[.0] + * 1.2.49rc01 13 10249 12.so.0.49[.0] + * 1.0.59 10 10059 10.so.0.59[.0] + * 1.2.49 13 10249 12.so.0.49[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcNN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng.txt or libpng.3 for more information. The PNG specification + * is available as a W3C Recommendation and as an ISO Specification, + * <http://www.w3.org/TR/2003/REC-PNG-20031110/ + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + * + * If you modify libpng you may insert additional notices immediately following + * this sentence. + * + * This code is released under the libpng license. + * + * libpng versions 1.2.6, August 15, 2004, through 1.2.49, March 29, 2012, are + * Copyright (c) 2004, 2006-2011 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.2.5 + * with the following individual added to the list of Contributing Authors: + * + * Cosmin Truta + * + * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are + * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.0.6 + * with the following individuals added to the list of Contributing Authors: + * + * Simon-Pierre Cadieux + * Eric S. Raymond + * Gilles Vollant + * + * and with the following additions to the disclaimer: + * + * There is no warranty against interference with your enjoyment of the + * library or against infringement. There is no warranty that our + * efforts or the library will fulfill any of your particular purposes + * or needs. This library is provided with all faults, and the entire + * risk of satisfactory quality, performance, accuracy, and effort is with + * the user. + * + * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-0.96, + * with the following individuals added to the list of Contributing Authors: + * + * Tom Lane + * Glenn Randers-Pehrson + * Willem van Schaik + * + * libpng versions 0.89, June 1996, through 0.96, May 1997, are + * Copyright (c) 1996, 1997 Andreas Dilger + * Distributed according to the same disclaimer and license as libpng-0.88, + * with the following individuals added to the list of Contributing Authors: + * + * John Bowler + * Kevin Bracey + * Sam Bushell + * Magnus Holmgren + * Greg Roelofs + * Tom Tanner + * + * libpng versions 0.5, May 1995, through 0.88, January 1996, are + * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + * + * For the purposes of this copyright and license, "Contributing Authors" + * is defined as the following set of individuals: + * + * Andreas Dilger + * Dave Martindale + * Guy Eric Schalnat + * Paul Schmidt + * Tim Wegner + * + * The PNG Reference Library is supplied "AS IS". The Contributing Authors + * and Group 42, Inc. disclaim all warranties, expressed or implied, + * including, without limitation, the warranties of merchantability and of + * fitness for any purpose. The Contributing Authors and Group 42, Inc. + * assume no liability for direct, indirect, incidental, special, exemplary, + * or consequential damages, which may result from the use of the PNG + * Reference Library, even if advised of the possibility of such damage. + * + * Permission is hereby granted to use, copy, modify, and distribute this + * source code, or portions hereof, for any purpose, without fee, subject + * to the following restrictions: + * + * 1. The origin of this source code must not be misrepresented. + * + * 2. Altered versions must be plainly marked as such and + * must not be misrepresented as being the original source. + * + * 3. This Copyright notice may not be removed or altered from + * any source or altered source distribution. + * + * The Contributing Authors and Group 42, Inc. specifically permit, without + * fee, and encourage the use of this source code as a component to + * supporting the PNG file format in commercial products. If you use this + * source code in a product, acknowledgment is not required but would be + * appreciated. + */ + +/* + * A "png_get_copyright" function is available, for convenient use in "about" + * boxes and the like: + * + * printf("%s",png_get_copyright(NULL)); + * + * Also, the PNG logo (in PNG format, of course) is supplied in the + * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + */ + +/* + * Libpng is OSI Certified Open Source Software. OSI Certified is a + * certification mark of the Open Source Initiative. + */ + +/* + * The contributing authors would like to thank all those who helped + * with testing, bug fixes, and patience. This wouldn't have been + * possible without all of you. + * + * Thanks to Frank J. T. Wojcik for helping with the documentation. + */ + +/* + * Y2K compliance in libpng: + * ========================= + * + * March 29, 2012 + * + * Since the PNG Development group is an ad-hoc body, we can't make + * an official declaration. + * + * This is your unofficial assurance that libpng from version 0.71 and + * upward through 1.2.49 are Y2K compliant. It is my belief that earlier + * versions were also Y2K compliant. + * + * Libpng only has three year fields. One is a 2-byte unsigned integer + * that will hold years up to 65535. The other two hold the date in text + * format, and will hold years up to 9999. + * + * The integer is + * "png_uint_16 year" in png_time_struct. + * + * The strings are + * "png_charp time_buffer" in png_struct and + * "near_time_buffer", which is a local character string in png.c. + * + * There are seven time-related functions: + * png.c: png_convert_to_rfc_1123() in png.c + * (formerly png_convert_to_rfc_1152() in error) + * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c + * png_convert_from_time_t() in pngwrite.c + * png_get_tIME() in pngget.c + * png_handle_tIME() in pngrutil.c, called in pngread.c + * png_set_tIME() in pngset.c + * png_write_tIME() in pngwutil.c, called in pngwrite.c + * + * All handle dates properly in a Y2K environment. The + * png_convert_from_time_t() function calls gmtime() to convert from system + * clock time, which returns (year - 1900), which we properly convert to + * the full 4-digit year. There is a possibility that applications using + * libpng are not passing 4-digit years into the png_convert_to_rfc_1123() + * function, or that they are incorrectly passing only a 2-digit year + * instead of "year - 1900" into the png_convert_from_struct_tm() function, + * but this is not under our control. The libpng documentation has always + * stated that it works with 4-digit years, and the APIs have been + * documented as such. + * + * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned + * integer to hold the year, and can hold years as large as 65535. + * + * zlib, upon which libpng depends, is also Y2K compliant. It contains + * no date-related code. + * + * Glenn Randers-Pehrson + * libpng maintainer + * PNG Development Group + */ + +#ifndef PNG_H +#define PNG_H + +/* This is not the place to learn how to use libpng. The file libpng.txt + * describes how to use libpng, and the file example.c summarizes it + * with some code on which to build. This file is useful for looking + * at the actual function definitions and structure components. + */ + +/* Version information for png.h - this should match the version in png.c */ +#define PNG_LIBPNG_VER_STRING "1.2.49" +#define PNG_HEADER_VERSION_STRING \ + " libpng version 1.2.49 - March 29, 2012\n" + +#define PNG_LIBPNG_VER_SONUM 0 +#define PNG_LIBPNG_VER_DLLNUM 13 + +/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ +#define PNG_LIBPNG_VER_MAJOR 1 +#define PNG_LIBPNG_VER_MINOR 2 +#define PNG_LIBPNG_VER_RELEASE 49 +/* This should match the numeric part of the final component of + * PNG_LIBPNG_VER_STRING, omitting any leading zero: + */ + +#define PNG_LIBPNG_VER_BUILD 0 + +/* Release Status */ +#define PNG_LIBPNG_BUILD_ALPHA 1 +#define PNG_LIBPNG_BUILD_BETA 2 +#define PNG_LIBPNG_BUILD_RC 3 +#define PNG_LIBPNG_BUILD_STABLE 4 +#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 + +/* Release-Specific Flags */ +#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with + PNG_LIBPNG_BUILD_STABLE only */ +#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_SPECIAL */ +#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_PRIVATE */ + +#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE + +/* Careful here. At one time, Guy wanted to use 082, but that would be octal. + * We must not include leading zeros. + * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only + * version 1.0.0 was mis-numbered 100 instead of 10000). From + * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release + */ +#define PNG_LIBPNG_VER 10249 /* 1.2.49 */ + +#ifndef PNG_VERSION_INFO_ONLY +/* Include the compression library's header */ +#include "zlib.h" +#endif + +/* Include all user configurable info, including optional assembler routines */ +#include "pngconf.h" + +/* + * Added at libpng-1.2.8 */ +/* Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* This file is arranged in several sections. The first section contains + * structure and type definitions. The second section contains the external + * library functions, while the third has the internal library functions, + * which applications aren't expected to use directly. + */ + +#ifndef PNG_NO_TYPECAST_NULL +#define int_p_NULL (int *)NULL +#define png_bytep_NULL (png_bytep)NULL +#define png_bytepp_NULL (png_bytepp)NULL +#define png_doublep_NULL (png_doublep)NULL +#define png_error_ptr_NULL (png_error_ptr)NULL +#define png_flush_ptr_NULL (png_flush_ptr)NULL +#define png_free_ptr_NULL (png_free_ptr)NULL +#define png_infopp_NULL (png_infopp)NULL +#define png_malloc_ptr_NULL (png_malloc_ptr)NULL +#define png_read_status_ptr_NULL (png_read_status_ptr)NULL +#define png_rw_ptr_NULL (png_rw_ptr)NULL +#define png_structp_NULL (png_structp)NULL +#define png_uint_16p_NULL (png_uint_16p)NULL +#define png_voidp_NULL (png_voidp)NULL +#define png_write_status_ptr_NULL (png_write_status_ptr)NULL +#else +#define int_p_NULL NULL +#define png_bytep_NULL NULL +#define png_bytepp_NULL NULL +#define png_doublep_NULL NULL +#define png_error_ptr_NULL NULL +#define png_flush_ptr_NULL NULL +#define png_free_ptr_NULL NULL +#define png_infopp_NULL NULL +#define png_malloc_ptr_NULL NULL +#define png_read_status_ptr_NULL NULL +#define png_rw_ptr_NULL NULL +#define png_structp_NULL NULL +#define png_uint_16p_NULL NULL +#define png_voidp_NULL NULL +#define png_write_status_ptr_NULL NULL +#endif + +/* Variables declared in png.c - only it needs to define PNG_NO_EXTERN */ +#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#ifdef PNG_USE_GLOBAL_ARRAYS +PNG_EXPORT_VAR (PNG_CONST char) png_libpng_ver[18]; + /* Need room for 99.99.99beta99z */ +#else +#define png_libpng_ver png_get_header_ver(NULL) +#endif + +#ifdef PNG_USE_GLOBAL_ARRAYS +/* This was removed in version 1.0.5c */ +/* Structures to facilitate easy interlacing. See png.c for more details */ +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_start[7]; +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_inc[7]; +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_ystart[7]; +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_yinc[7]; +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_mask[7]; +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_dsp_mask[7]; +/* This isn't currently used. If you need it, see png.c for more details. +PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_height[7]; +*/ +#endif + +#endif /* PNG_NO_EXTERN */ + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color FAR * png_colorp; +typedef png_color FAR * FAR * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 FAR * png_color_16p; +typedef png_color_16 FAR * FAR * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 FAR * png_color_8p; +typedef png_color_8 FAR * FAR * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry FAR * png_sPLT_entryp; +typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t FAR * png_sPLT_tp; +typedef png_sPLT_t FAR * FAR * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text", "lang", and + * "lang_key" fields can be regular C strings, empty strings, or NULL pointers. + * However, the * structure returned by png_get_text() will always contain + * regular zero-terminated C strings (possibly empty), never NULL pointers, + * so they can be safely used in printf() and other string-handling functions. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ +#ifdef PNG_iTXt_SUPPORTED + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +#endif +} png_text; +typedef png_text FAR * png_textp; +typedef png_text FAR * FAR * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. + */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time FAR * png_timep; +typedef png_time FAR * FAR * png_timepp; + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + */ +#define PNG_CHUNK_NAME_LENGTH 5 +typedef struct png_unknown_chunk_t +{ + png_byte name[PNG_CHUNK_NAME_LENGTH]; + png_byte *data; + png_size_t size; + + /* libpng-using applications should NOT directly modify this byte. */ + png_byte location; /* mode of operation at read time */ +} +png_unknown_chunk; +typedef png_unknown_chunk FAR * png_unknown_chunkp; +typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp; +#endif + +/* png_info is a structure that holds the information in a PNG file so + * that the application can find out the characteristics of the image. + * If you are reading the file, this structure will tell you what is + * in the PNG file. If you are writing the file, fill in the information + * you want to put into the PNG file, then call png_write_info(). + * The names chosen should be very close to the PNG specification, so + * consult that document for information about the meaning of each field. + * + * With libpng < 0.95, it was only possible to directly set and read the + * the values in the png_info_struct, which meant that the contents and + * order of the values had to remain fixed. With libpng 0.95 and later, + * however, there are now functions that abstract the contents of + * png_info_struct from the application, so this makes it easier to use + * libpng with dynamic libraries, and even makes it possible to use + * libraries that don't have all of the libpng ancillary chunk-handing + * functionality. + * + * In any case, the order of the parameters in png_info_struct should NOT + * be changed for as long as possible to keep compatibility with applications + * that use the old direct-access method with png_info_struct. + * + * The following members may have allocated storage attached that should be + * cleaned up before the structure is discarded: palette, trans, text, + * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, + * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these + * are automatically freed when the info structure is deallocated, if they were + * allocated internally by libpng. This behavior can be changed by means + * of the png_data_freer() function. + * + * More allocation details: all the chunk-reading functions that + * change these members go through the corresponding png_set_* + * functions. A function to clear these members is available: see + * png_free_data(). The png_set_* functions do not depend on being + * able to point info structure members to any of the storage they are + * passed (they make their own copies), EXCEPT that the png_set_text + * functions use the same storage passed to them in the text_ptr or + * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns + * functions do not make their own copies. + */ +typedef struct png_info_struct +{ + /* The following are necessary for every PNG file */ + png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels (from IHDR) */ + png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels (from IHDR) */ + png_uint_32 valid PNG_DEPSTRUCT; /* valid chunk data (see PNG_INFO_ below) */ + png_uint_32 rowbytes PNG_DEPSTRUCT; /* bytes needed to hold an untransformed row */ + png_colorp palette PNG_DEPSTRUCT; /* array of color values (valid & PNG_INFO_PLTE) */ + png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in "palette" (PLTE) */ + png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparent palette color (tRNS) */ + png_byte bit_depth PNG_DEPSTRUCT; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */ + png_byte color_type PNG_DEPSTRUCT; /* see PNG_COLOR_TYPE_ below (from IHDR) */ + /* The following three should have been named *_method not *_type */ + png_byte compression_type PNG_DEPSTRUCT; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */ + png_byte filter_type PNG_DEPSTRUCT; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */ + png_byte interlace_type PNG_DEPSTRUCT; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ + + /* The following is informational only on read, and not used on writes. */ + png_byte channels PNG_DEPSTRUCT; /* number of data channels per pixel (1, 2, 3, 4) */ + png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ + png_byte spare_byte PNG_DEPSTRUCT; /* to align the data, and for future use */ + png_byte signature[8] PNG_DEPSTRUCT; /* magic bytes read by libpng from start of file */ + + /* The rest of the data is optional. If you are reading, check the + * valid field to see if the information in these are valid. If you + * are writing, set the valid field to those chunks you want written, + * and initialize the appropriate fields below. + */ + +#if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) + /* The gAMA chunk describes the gamma characteristics of the system + * on which the image was created, normally in the range [1.0, 2.5]. + * Data is valid if (valid & PNG_INFO_gAMA) is non-zero. + */ + float gamma PNG_DEPSTRUCT; /* gamma value of image, if (valid & PNG_INFO_gAMA) */ +#endif + +#ifdef PNG_sRGB_SUPPORTED + /* GR-P, 0.96a */ + /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */ + png_byte srgb_intent PNG_DEPSTRUCT; /* sRGB rendering intent [0, 1, 2, or 3] */ +#endif + +#ifdef PNG_TEXT_SUPPORTED + /* The tEXt, and zTXt chunks contain human-readable textual data in + * uncompressed, compressed, and optionally compressed forms, respectively. + * The data in "text" is an array of pointers to uncompressed, + * null-terminated C strings. Each chunk has a keyword that describes the + * textual data contained in that chunk. Keywords are not required to be + * unique, and the text string may be empty. Any number of text chunks may + * be in an image. + */ + int num_text PNG_DEPSTRUCT; /* number of comments read/to write */ + int max_text PNG_DEPSTRUCT; /* current size of text array */ + png_textp text PNG_DEPSTRUCT; /* array of comments read/to write */ +#endif /* PNG_TEXT_SUPPORTED */ + +#ifdef PNG_tIME_SUPPORTED + /* The tIME chunk holds the last time the displayed image data was + * modified. See the png_time struct for the contents of this struct. + */ + png_time mod_time PNG_DEPSTRUCT; +#endif + +#ifdef PNG_sBIT_SUPPORTED + /* The sBIT chunk specifies the number of significant high-order bits + * in the pixel data. Values are in the range [1, bit_depth], and are + * only specified for the channels in the pixel data. The contents of + * the low-order bits is not specified. Data is valid if + * (valid & PNG_INFO_sBIT) is non-zero. + */ + png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in color channels */ +#endif + +#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ +defined(PNG_READ_BACKGROUND_SUPPORTED) + /* The tRNS chunk supplies transparency data for paletted images and + * other image types that don't need a full alpha channel. There are + * "num_trans" transparency values for a paletted image, stored in the + * same order as the palette colors, starting from index 0. Values + * for the data are in the range [0, 255], ranging from fully transparent + * to fully opaque, respectively. For non-paletted images, there is a + * single color specified that should be treated as fully transparent. + * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. + */ + png_bytep trans PNG_DEPSTRUCT; /* transparent values for paletted image */ + png_color_16 trans_values PNG_DEPSTRUCT; /* transparent color for non-palette image */ +#endif + +#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + /* The bKGD chunk gives the suggested image background color if the + * display program does not have its own background color and the image + * is needs to composited onto a background before display. The colors + * in "background" are normally in the same color space/depth as the + * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. + */ + png_color_16 background PNG_DEPSTRUCT; +#endif + +#ifdef PNG_oFFs_SUPPORTED + /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards + * and downwards from the top-left corner of the display, page, or other + * application-specific co-ordinate space. See the PNG_OFFSET_ defines + * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. + */ + png_int_32 x_offset PNG_DEPSTRUCT; /* x offset on page */ + png_int_32 y_offset PNG_DEPSTRUCT; /* y offset on page */ + png_byte offset_unit_type PNG_DEPSTRUCT; /* offset units type */ +#endif + +#ifdef PNG_pHYs_SUPPORTED + /* The pHYs chunk gives the physical pixel density of the image for + * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ + * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. + */ + png_uint_32 x_pixels_per_unit PNG_DEPSTRUCT; /* horizontal pixel density */ + png_uint_32 y_pixels_per_unit PNG_DEPSTRUCT; /* vertical pixel density */ + png_byte phys_unit_type PNG_DEPSTRUCT; /* resolution type (see PNG_RESOLUTION_ below) */ +#endif + +#ifdef PNG_hIST_SUPPORTED + /* The hIST chunk contains the relative frequency or importance of the + * various palette entries, so that a viewer can intelligently select a + * reduced-color palette, if required. Data is an array of "num_palette" + * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) + * is non-zero. + */ + png_uint_16p hist PNG_DEPSTRUCT; +#endif + +#ifdef PNG_cHRM_SUPPORTED + /* The cHRM chunk describes the CIE color characteristics of the monitor + * on which the PNG was created. This data allows the viewer to do gamut + * mapping of the input image to ensure that the viewer sees the same + * colors in the image as the creator. Values are in the range + * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero. + */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + float x_white PNG_DEPSTRUCT; + float y_white PNG_DEPSTRUCT; + float x_red PNG_DEPSTRUCT; + float y_red PNG_DEPSTRUCT; + float x_green PNG_DEPSTRUCT; + float y_green PNG_DEPSTRUCT; + float x_blue PNG_DEPSTRUCT; + float y_blue PNG_DEPSTRUCT; +#endif +#endif + +#ifdef PNG_pCAL_SUPPORTED + /* The pCAL chunk describes a transformation between the stored pixel + * values and original physical data values used to create the image. + * The integer range [0, 2^bit_depth - 1] maps to the floating-point + * range given by [pcal_X0, pcal_X1], and are further transformed by a + * (possibly non-linear) transformation function given by "pcal_type" + * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ + * defines below, and the PNG-Group's PNG extensions document for a + * complete description of the transformations and how they should be + * implemented, and for a description of the ASCII parameter strings. + * Data values are valid if (valid & PNG_INFO_pCAL) non-zero. + */ + png_charp pcal_purpose PNG_DEPSTRUCT; /* pCAL chunk description string */ + png_int_32 pcal_X0 PNG_DEPSTRUCT; /* minimum value */ + png_int_32 pcal_X1 PNG_DEPSTRUCT; /* maximum value */ + png_charp pcal_units PNG_DEPSTRUCT; /* Latin-1 string giving physical units */ + png_charpp pcal_params PNG_DEPSTRUCT; /* ASCII strings containing parameter values */ + png_byte pcal_type PNG_DEPSTRUCT; /* equation type (see PNG_EQUATION_ below) */ + png_byte pcal_nparams PNG_DEPSTRUCT; /* number of parameters given in pcal_params */ +#endif + +/* New members added in libpng-1.0.6 */ +#ifdef PNG_FREE_ME_SUPPORTED + png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is responsible for freeing */ +#endif + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) + /* Storage for unknown chunks that the library doesn't recognize. */ + png_unknown_chunkp unknown_chunks PNG_DEPSTRUCT; + png_size_t unknown_chunks_num PNG_DEPSTRUCT; +#endif + +#ifdef PNG_iCCP_SUPPORTED + /* iCCP chunk data. */ + png_charp iccp_name PNG_DEPSTRUCT; /* profile name */ + png_charp iccp_profile PNG_DEPSTRUCT; /* International Color Consortium profile data */ + /* Note to maintainer: should be png_bytep */ + png_uint_32 iccp_proflen PNG_DEPSTRUCT; /* ICC profile data length */ + png_byte iccp_compression PNG_DEPSTRUCT; /* Always zero */ +#endif + +#ifdef PNG_sPLT_SUPPORTED + /* Data on sPLT chunks (there may be more than one). */ + png_sPLT_tp splt_palettes PNG_DEPSTRUCT; + png_uint_32 splt_palettes_num PNG_DEPSTRUCT; +#endif + +#ifdef PNG_sCAL_SUPPORTED + /* The sCAL chunk describes the actual physical dimensions of the + * subject matter of the graphic. The chunk contains a unit specification + * a byte value, and two ASCII strings representing floating-point + * values. The values are width and height corresponsing to one pixel + * in the image. This external representation is converted to double + * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero. + */ + png_byte scal_unit PNG_DEPSTRUCT; /* unit of physical scale */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + double scal_pixel_width PNG_DEPSTRUCT; /* width of one pixel */ + double scal_pixel_height PNG_DEPSTRUCT; /* height of one pixel */ +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + png_charp scal_s_width PNG_DEPSTRUCT; /* string containing height */ + png_charp scal_s_height PNG_DEPSTRUCT; /* string containing width */ +#endif +#endif + +#ifdef PNG_INFO_IMAGE_SUPPORTED + /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) non-zero */ + /* Data valid if (valid & PNG_INFO_IDAT) non-zero */ + png_bytepp row_pointers PNG_DEPSTRUCT; /* the image bits */ +#endif + +#if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED) + png_fixed_point int_gamma PNG_DEPSTRUCT; /* gamma of image, if (valid & PNG_INFO_gAMA) */ +#endif + +#if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED) + png_fixed_point int_x_white PNG_DEPSTRUCT; + png_fixed_point int_y_white PNG_DEPSTRUCT; + png_fixed_point int_x_red PNG_DEPSTRUCT; + png_fixed_point int_y_red PNG_DEPSTRUCT; + png_fixed_point int_x_green PNG_DEPSTRUCT; + png_fixed_point int_y_green PNG_DEPSTRUCT; + png_fixed_point int_x_blue PNG_DEPSTRUCT; + png_fixed_point int_y_blue PNG_DEPSTRUCT; +#endif + +} png_info; + +typedef png_info FAR * png_infop; +typedef png_info FAR * FAR * png_infopp; + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* PNG_MAX_UINT is deprecated; use PNG_UINT_31_MAX instead. */ +#define PNG_MAX_UINT PNG_UINT_31_MAX +#endif + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_<chunk> defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_uint_32 rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info FAR * png_row_infop; +typedef png_row_info FAR * FAR * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. + */ +typedef struct png_struct_def png_struct; +typedef png_struct FAR * png_structp; + +typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp)); +typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); +typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp)); +typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32, + int)); +typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop)); +typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); +typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp, + png_row_infop, png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp)); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only, deprecated */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE 0x0800 /* write only */ +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.2.41 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t)); +typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp)); + +/* The structure that holds the information to read and write PNG files. + * The only people who need to care about what is inside of this are the + * people who will be modifying the library for their own special needs. + * It should NOT be accessed directly by an application, except to store + * the jmp_buf. + */ + +struct png_struct_def +{ +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf jmpbuf; /* used in png_error */ +#endif + png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing errors and aborting */ + png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing warnings */ + png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for error functions */ + png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing output data */ + png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading input data */ + png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct for I/O functions */ + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED + png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read transform */ +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED + png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write transform */ +#endif + +/* These were added in libpng-1.0.2 */ +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) + png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct for user transform */ + png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user transformed pixels */ + png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user transformed pixels */ +#endif +#endif + + png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in the PNG file */ + png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various things to libpng */ + png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations to perform */ + + z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression structure (below) */ + png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */ + png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */ + int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */ + int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */ + int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window bits */ + int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory level */ + int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression strategy */ + + png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */ + png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */ + png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */ + png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */ + png_uint_32 rowbytes PNG_DEPSTRUCT; /* size of row in bytes */ +#if 0 /* Replaced with the following in libpng-1.2.43 */ + png_size_t irowbytes PNG_DEPSTRUCT; +#endif +/* Added in libpng-1.2.43 */ +#ifdef PNG_USER_LIMITS_SUPPORTED + /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown + * chunks that can be stored (0 means unlimited). + */ + png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT; +#endif + png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced row in pixels */ + png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */ + png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous (unfiltered) row */ + png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */ +#ifndef PNG_NO_WRITE_FILTER + png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row when filtering */ + png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row when filtering */ + png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row when filtering */ + png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row when filtering */ +#endif + png_row_info row_info PNG_DEPSTRUCT; /* used for transformation routines */ + + png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */ + png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */ + png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */ + png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in palette */ + png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */ + png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current chunk */ + png_byte compression PNG_DEPSTRUCT; /* file compression type (always 0) */ + png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */ + png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ + png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */ + png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see PNG_FILTER_ below ) */ + png_byte color_type PNG_DEPSTRUCT; /* color type of file */ + png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */ + png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */ + png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ + png_byte channels PNG_DEPSTRUCT; /* number of channels in file */ + png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */ + png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from start of file */ + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +#ifdef PNG_LEGACY_SUPPORTED + png_byte filler PNG_DEPSTRUCT; /* filler byte for pixel expansion */ +#else + png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel expansion */ +#endif +#endif + +#ifdef PNG_bKGD_SUPPORTED + png_byte background_gamma_type PNG_DEPSTRUCT; +# ifdef PNG_FLOATING_POINT_SUPPORTED + float background_gamma PNG_DEPSTRUCT; +# endif + png_color_16 background PNG_DEPSTRUCT; /* background color in screen gamma space */ +#ifdef PNG_READ_GAMMA_SUPPORTED + png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized to gamma 1.0 */ +#endif +#endif /* PNG_bKGD_SUPPORTED */ + +#ifdef PNG_WRITE_FLUSH_SUPPORTED + png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing output */ + png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, 0 - no flush */ + png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since last flush */ +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits 16-bit gamma */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + float gamma PNG_DEPSTRUCT; /* file gamma value */ + float screen_gamma PNG_DEPSTRUCT; /* screen gamma value (display_exponent) */ +#endif +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit depth files */ + png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */ + png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ + png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit depth files */ + png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */ + png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) + png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each available channel */ +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) + png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit tranformation */ +#endif + +#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ + || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_bytep trans PNG_DEPSTRUCT; /* transparency values for paletted files */ + png_color_16 trans_values PNG_DEPSTRUCT; /* transparency values for non-paletted files */ +#endif + + png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each row is decoded */ + png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each row is encoded */ +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED + png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header data fully read */ + png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each prog. row is decoded */ + png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image is complete */ + png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in save_buffer */ + png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously read data */ + png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in current_buffer */ + png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently used data */ + png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input chunk */ + png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in input data */ + png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now in save_buffer */ + png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of save_buffer */ + png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of available input data */ + png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now in current_buffer */ + int process_mode PNG_DEPSTRUCT; /* what push library is currently doing */ + int cur_palette PNG_DEPSTRUCT; /* current push library palette index */ + +# ifdef PNG_TEXT_SUPPORTED + png_size_t current_text_size PNG_DEPSTRUCT; /* current size of text input data */ + png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left to read in input */ + png_charp current_text PNG_DEPSTRUCT; /* current text chunk buffer */ + png_charp current_text_ptr PNG_DEPSTRUCT; /* current location in current_text */ +# endif /* PNG_TEXT_SUPPORTED */ +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) +/* for the Borland special 64K segment handler */ + png_bytepp offset_table_ptr PNG_DEPSTRUCT; + png_bytep offset_table PNG_DEPSTRUCT; + png_uint_16 offset_table_number PNG_DEPSTRUCT; + png_uint_16 offset_table_count PNG_DEPSTRUCT; + png_uint_16 offset_table_count_free PNG_DEPSTRUCT; +#endif + +#ifdef PNG_READ_DITHER_SUPPORTED + png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for dithering */ + png_bytep dither_index PNG_DEPSTRUCT; /* index translation for palette files */ +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED) + png_uint_16p hist PNG_DEPSTRUCT; /* histogram */ +#endif + +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED + png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row filter selection */ + png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights for previous rows */ + png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of previous row(s) */ + png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous line(s) */ + png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for previous line(s) */ + png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter calculation cost */ + png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter calculation cost */ +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED + png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */ +#endif + +/* New members added in libpng-1.0.6 */ + +#ifdef PNG_FREE_ME_SUPPORTED + png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is responsible for freeing */ +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED + png_voidp user_chunk_ptr PNG_DEPSTRUCT; + png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read chunk handler */ +#endif + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + int num_chunk_list PNG_DEPSTRUCT; + png_bytep chunk_list PNG_DEPSTRUCT; +#endif + +/* New members added in libpng-1.0.3 */ +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED + png_byte rgb_to_gray_status PNG_DEPSTRUCT; + /* These were changed from png_byte in libpng-1.0.6 */ + png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT; + png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT; + png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ +#if defined(PNG_MNG_FEATURES_SUPPORTED) || \ + defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ + defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) +/* Changed from png_byte to png_uint_32 at version 1.2.0 */ +#ifdef PNG_1_0_X + png_byte mng_features_permitted PNG_DEPSTRUCT; +#else + png_uint_32 mng_features_permitted PNG_DEPSTRUCT; +#endif /* PNG_1_0_X */ +#endif + +/* New member added in libpng-1.0.7 */ +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_fixed_point int_gamma PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ +#ifdef PNG_MNG_FEATURES_SUPPORTED + png_byte filter_type PNG_DEPSTRUCT; +#endif + +#ifdef PNG_1_0_X +/* New member added in libpng-1.0.10, ifdef'ed out in 1.2.0 */ + png_uint_32 row_buf_size PNG_DEPSTRUCT; +#endif + +/* New members added in libpng-1.2.0 */ +#ifdef PNG_ASSEMBLER_CODE_SUPPORTED +# ifndef PNG_1_0_X +# ifdef PNG_MMX_CODE_SUPPORTED + png_byte mmx_bitdepth_threshold PNG_DEPSTRUCT; + png_uint_32 mmx_rowbytes_threshold PNG_DEPSTRUCT; +# endif + png_uint_32 asm_flags PNG_DEPSTRUCT; +# endif +#endif + +/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ +#ifdef PNG_USER_MEM_SUPPORTED + png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for mem functions */ + png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for allocating memory */ + png_free_ptr free_fn PNG_DEPSTRUCT; /* function for freeing memory */ +#endif + +/* New member added in libpng-1.0.13 and 1.2.0 */ + png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */ + +#ifdef PNG_READ_DITHER_SUPPORTED +/* The following three members were added at version 1.0.14 and 1.2.4 */ + png_bytep dither_sort PNG_DEPSTRUCT; /* working sort array */ + png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original index currently is */ + /* in the palette */ + png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index points to this */ + /* palette color */ +#endif + +/* New members added in libpng-1.0.16 and 1.2.6 */ + png_byte compression_type PNG_DEPSTRUCT; + +#ifdef PNG_USER_LIMITS_SUPPORTED + png_uint_32 user_width_max PNG_DEPSTRUCT; + png_uint_32 user_height_max PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.25 and 1.2.17 */ +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED + /* Storage for unknown chunk that the library doesn't recognize. */ + png_unknown_chunk unknown_chunk PNG_DEPSTRUCT; +#endif + +/* New members added in libpng-1.2.26 */ + png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT; + png_uint_32 old_prev_row_size PNG_DEPSTRUCT; + +/* New member added in libpng-1.2.30 */ + png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */ + + +}; + + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef png_structp version_1_2_49; + +typedef png_struct FAR * FAR * png_structpp; + +/* Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + */ + +/* Returns the version number of the library */ +extern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void)); + +/* Tell lib we have already handled the first <num_bytes> magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, + int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num)) PNG_DEPRECATED; + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +extern PNG_EXPORT(png_structp,png_create_read_struct) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +extern PNG_EXPORT(png_structp,png_create_write_struct) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; + +#ifdef PNG_WRITE_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size) + PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_WRITE_SUPPORTED +extern PNG_EXPORT(void,png_set_compression_buffer_size) + PNGARG((png_structp png_ptr, png_uint_32 size)); +#endif + +/* Reset the compression stream */ +extern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr)); + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +extern PNG_EXPORT(png_structp,png_create_read_struct_2) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; +extern PNG_EXPORT(png_structp,png_create_write_struct_2) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; +#endif + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, + png_bytep chunk_name, png_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, + png_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); + +/* Allocate and initialize the info structure */ +extern PNG_EXPORT(png_infop,png_create_info_struct) + PNGARG((png_structp png_ptr)) PNG_ALLOCATED; + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Initialize the info structure (old interface - DEPRECATED) */ +extern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr)) + PNG_DEPRECATED; +#undef png_info_init +#define png_info_init(info_ptr) png_info_init_3(&info_ptr,\ + png_sizeof(png_info)); +#endif + +extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, + png_size_t png_info_struct_size)); + +/* Writes all the PNG information before the image. */ +extern PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED +extern PNG_EXPORT(png_charp,png_convert_to_rfc1123) + PNGARG((png_structp png_ptr, png_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, + struct tm FAR * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, + time_t ttime)); +#endif /* PNG_CONVERT_tIME_SUPPORTED */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); +#ifndef PNG_1_0_X +extern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp + png_ptr)); +#endif +extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr)); +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Deprecated */ +extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp + png_ptr)) PNG_DEPRECATED; +#endif +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr, + int error_action, double red, double green )); +#endif +extern PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green )); +extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp + png_ptr)); +#endif + +extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, + png_colorp palette)); + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, + png_uint_32 filler, int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +#define PNG_FILLER_BEFORE 0 +#define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +#ifndef PNG_1_0_X +extern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr, + png_uint_32 filler, int flags)); +#endif +#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, + png_color_8p true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. */ +extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, + png_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)); +#endif +#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +#define PNG_BACKGROUND_GAMMA_SCREEN 1 +#define PNG_BACKGROUND_GAMMA_FILE 2 +#define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_16_TO_8_SUPPORTED +/* Strip the second byte of information from a 16-bit depth file. */ +extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_DITHER_SUPPORTED +/* Turn on dithering, and reduce the palette to the number of colors available. */ +extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr, + png_colorp palette, int num_palette, int maximum_colors, + png_uint_16p histogram, int full_dither)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* Handle gamma correction. Screen_gamma=(display_exponent) */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, + double screen_gamma, double default_file_gamma)); +#endif +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ + defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) +/* Permit or disallow empty PLTE (0: not permitted, 1: permitted) */ +/* Deprecated and will be removed. Use png_permit_mng_features() instead. */ +extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr, + int empty_plte_permitted)) PNG_DEPRECATED; +#endif +#endif + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); + +/* Optional call to update the users info structure */ +extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, + png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, + png_bytep row, + png_bytep display_row)); +#endif + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, + png_bytepp image)); +#endif + +/* Write a row of image data */ +extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, + png_bytep row)); + +/* Write a few rows of image data */ +extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, + png_bytepp row, png_uint_32 num_rows)); + +/* Write the image data */ +extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, + png_bytepp image)); + +/* Writes the end of the PNG file. */ +extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp + png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free all memory used by the read (old method - NOT DLL EXPORTED) */ +/* Debian note: exporting as it is required by legacy applications */ +extern PNG_EXPORT(void,png_read_destroy) PNGARG((png_structp png_ptr, png_infop info_ptr, + png_infop end_info_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +extern PNG_EXPORT(void,png_destroy_write_struct) + PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); + +/* Free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */ +/* Debian note: exporting as it is required by legacy applications */ +extern PNG_EXPORT(void,png_write_destroy) PNGARG((png_structp png_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, + int crit_action, int ancil_action)); + +/* Values for png_set_crc_action() to say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, + int filters)); + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* EXPERIMENTAL */ +/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ + * defines, either the default (minimum-sum-of-absolute-differences), or + * the experimental method (weighted-minimum-sum-of-absolute-differences). + * + * Weights are factors >= 1.0, indicating how important it is to keep the + * filter type consistent between rows. Larger numbers mean the current + * filter is that many times as likely to be the same as the "num_weights" + * previous filters. This is cumulative for each previous row with a weight. + * There needs to be "num_weights" values in "filter_weights", or it can be + * NULL if the weights aren't being specified. Weights have no influence on + * the selection of the first row filter. Well chosen weights can (in theory) + * improve the compression for a given image. + * + * Costs are factors >= 1.0 indicating the relative decoding costs of a + * filter type. Higher costs indicate more decoding expense, and are + * therefore less likely to be selected over a filter with lower computational + * costs. There needs to be a value in "filter_costs" for each valid filter + * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't + * setting the costs. Costs try to improve the speed of decompression without + * unduly increasing the compressed image size. + * + * A negative weight or cost indicates the default value is to be used, and + * values in the range [0.0, 1.0) indicate the value is to remain unchanged. + * The default values for both weights and costs are currently 1.0, but may + * change if good general weighting/cost heuristics can be found. If both + * the weights and costs are set to 1.0, this degenerates the WEIGHTED method + * to the UNWEIGHTED method, but with added encoding time/computation. + */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, + int heuristic_method, int num_weights, png_doublep filter_weights, + png_doublep filter_costs)); +#endif +#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ + +/* Heuristic used for row filter selection. These defines should NOT be + * changed. + */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, + int level)); + +extern PNG_EXPORT(void,png_set_compression_mem_level) + PNGARG((png_structp png_ptr, int mem_level)); + +extern PNG_EXPORT(void,png_set_compression_strategy) + PNGARG((png_structp png_ptr, int strategy)); + +extern PNG_EXPORT(void,png_set_compression_window_bits) + PNGARG((png_structp png_ptr, int window_bits)); + +extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, + int method)); + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, + png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, + png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, + png_voidp io_ptr, png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); + +extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, + png_read_status_ptr read_row_fn)); + +extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +extern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +extern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp + png_ptr, png_user_transform_ptr read_user_transform_fn)); +#endif + +#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp + png_ptr, png_user_transform_ptr write_user_transform_fn)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +extern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp + png_ptr, png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +extern PNG_EXPORT(png_voidp,png_get_user_transform_ptr) + PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +extern PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +extern PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp + png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, + png_voidp progressive_ptr, + png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, + png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +extern PNG_EXPORT(png_voidp,png_get_progressive_ptr) + PNGARG((png_structp png_ptr)); + +/* Function to be called when data becomes available */ +extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); + +/* Function that combines rows. Not very much different than the + * png_combine_row() call. Is this even used????? + */ +extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, + png_bytep old_row, png_bytep new_row)); +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, + png_uint_32 size)) PNG_ALLOCATED; + +#ifdef PNG_1_0_X +# define png_malloc_warn png_malloc +#else +/* Added at libpng version 1.2.4 */ +extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, + png_uint_32 size)) PNG_ALLOCATED; +#endif + +/* Frees a pointer allocated by png_malloc() */ +extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); + +#ifdef PNG_1_0_X +/* Function to allocate memory for zlib. */ +extern PNG_EXPORT(voidpf,png_zalloc) PNGARG((voidpf png_ptr, uInt items, + uInt size)); + +/* Function to free memory for zlib */ +extern PNG_EXPORT(void,png_zfree) PNGARG((voidpf png_ptr, voidpf ptr)); +#endif + +/* Free data that was allocated internally */ +extern PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 free_me, int num)); +#ifdef PNG_FREE_ME_SUPPORTED +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application + */ +extern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, + png_infop info_ptr, int freer, png_uint_32 mask)); +#endif +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#define PNG_FREE_UNKN 0x0200 +#define PNG_FREE_LIST 0x0400 +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, + png_uint_32 size)) PNG_ALLOCATED; +extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, + png_voidp ptr)); +#endif + +extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr, + png_voidp s1, png_voidp s2, png_uint_32 size)) PNG_DEPRECATED; + +extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr, + png_voidp s1, int value, png_uint_32 size)) PNG_DEPRECATED; + +#if defined(USE_FAR_KEYWORD) /* memory model conversion function */ +extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr, + int check)); +#endif /* USE_FAR_KEYWORD */ + +#ifndef PNG_NO_ERROR_TEXT +/* Fatal error in PNG image of libpng - can't continue */ +extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, + png_const_charp error_message)) PNG_NORETURN; + +/* The same, but the chunk name is prepended to the error string. */ +extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, + png_const_charp error_message)) PNG_NORETURN; +#else +/* Fatal error in PNG image of libpng - can't continue */ +extern PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)) PNG_NORETURN; +#endif + +#ifndef PNG_NO_WARNINGS +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_READ_SUPPORTED +/* Non-fatal error in libpng, chunk name is prepended to message. */ +extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); +#endif /* PNG_READ_SUPPORTED */ +#endif /* PNG_NO_WARNINGS */ + +/* The png_set_<chunk> functions are for storing values in the png_info_struct. + * Similarly, the png_get_<chunk> calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_<chunk> functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, +png_infop info_ptr, png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +extern PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr, +png_infop info_ptr)); +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +extern PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image height in pixels. */ +extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image bit_depth. */ +extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image color_type. */ +extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image filter_type. */ +extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image interlace_type. */ +extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image compression_type. */ +extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +#endif + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +#endif /* PNG_EASY_ACCESS_SUPPORTED */ + +/* Returns pointer to signature string read from PNG header */ +extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_bKGD_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point + *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, + png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point + *int_blue_x, png_fixed_point *int_blue_y)); +#endif +#endif + +#ifdef PNG_cHRM_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, double white_x, double white_y, double red_x, + double red_y, double green_x, double green_y, double blue_x, double blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); +#endif +#endif + +#ifdef PNG_gAMA_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, + png_infop info_ptr, double *file_gamma)); +#endif +extern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point *int_file_gamma)); +#endif + +#ifdef PNG_gAMA_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, + png_infop info_ptr, double file_gamma)); +#endif +extern PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_file_gamma)); +#endif + +#ifdef PNG_hIST_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_16p hist)); +#endif + +extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); + +extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, + int *type, int *nparams, png_charp *units, png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, + int type, int nparams, png_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_colorp *palette, int *num_palette)); + +extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, + png_infop info_ptr, int intent)); +extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, int intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charpp name, int *compression_type, + png_charpp profile, png_uint_32 *proflen)); + /* Note to maintainer: profile should be png_bytepp */ +#endif + +#ifdef PNG_iCCP_SUPPORTED +extern PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp name, int compression_type, + png_charp profile, png_uint_32 proflen)); + /* Note to maintainer: profile should be png_bytep */ +#endif + +#ifdef PNG_sPLT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +extern PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp *text_ptr, int *num_text)); +#endif + +/* + * Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep *trans, int *num_trans, + png_color_16p *trans_values)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep trans, int num_trans, + png_color_16p trans_values)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +#endif + +#ifdef PNG_sCAL_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *unit, double *width, double *height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight)); +#endif +#endif +#endif /* PNG_sCAL_SUPPORTED */ + +#ifdef PNG_sCAL_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, int unit, double width, double height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, + png_infop info_ptr, int unit, png_charp swidth, png_charp sheight)); +#endif +#endif +#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +/* Provide a list of chunks and how they are to be handled, if the built-in + handling or default unknown chunk handling is not desired. Any chunks not + listed will be handled in the default manner. The IHDR and IEND chunks + must not be listed. + keep = 0: follow default behaviour + = 1: do not keep + = 2: keep only if safe-to-copy + = 3: keep even if unsafe-to-copy +*/ +extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp + png_ptr, int keep, png_bytep chunk_list, int num_chunks)); +PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep + chunk_name)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +extern PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)); +extern PNG_EXPORT(void, png_set_unknown_chunk_location) + PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location)); +extern PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp + png_ptr, png_infop info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +extern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr, + png_infop info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +extern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr, + png_infop info_ptr, + int transforms, + png_voidp params)); +extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr, + png_infop info_ptr, + int transforms, + png_voidp params)); +#endif + +/* Define PNG_DEBUG at compile time for debugging information. Higher + * numbers for PNG_DEBUG mean more debugging information. This has + * only been added since version 0.95 so it is not implemented throughout + * libpng yet, but more support will be added as needed. + */ +#ifdef PNG_DEBUG +#if (PNG_DEBUG > 0) +#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER) +#include <crtdbg.h> +#if (PNG_DEBUG > 1) +#ifndef _DEBUG +# define _DEBUG +#endif +#ifndef png_debug +#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE) +#endif +#ifndef png_debug1 +#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1) +#endif +#ifndef png_debug2 +#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2) +#endif +#endif +#else /* PNG_DEBUG_FILE || !_MSC_VER */ +#ifndef PNG_DEBUG_FILE +#define PNG_DEBUG_FILE stderr +#endif /* PNG_DEBUG_FILE */ + +#if (PNG_DEBUG > 1) +/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on non-ISO + * compilers. + */ +# ifdef __STDC__ +# ifndef png_debug +# define png_debug(l,m) \ + { \ + int num_tabs=l; \ + fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \ + } +# endif +# ifndef png_debug1 +# define png_debug1(l,m,p1) \ + { \ + int num_tabs=l; \ + fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \ + } +# endif +# ifndef png_debug2 +# define png_debug2(l,m,p1,p2) \ + { \ + int num_tabs=l; \ + fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \ + } +# endif +# else /* __STDC __ */ +# ifndef png_debug +# define png_debug(l,m) \ + { \ + int num_tabs=l; \ + char format[256]; \ + snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ + m,PNG_STRING_NEWLINE); \ + fprintf(PNG_DEBUG_FILE,format); \ + } +# endif +# ifndef png_debug1 +# define png_debug1(l,m,p1) \ + { \ + int num_tabs=l; \ + char format[256]; \ + snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ + m,PNG_STRING_NEWLINE); \ + fprintf(PNG_DEBUG_FILE,format,p1); \ + } +# endif +# ifndef png_debug2 +# define png_debug2(l,m,p1,p2) \ + { \ + int num_tabs=l; \ + char format[256]; \ + snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ + m,PNG_STRING_NEWLINE); \ + fprintf(PNG_DEBUG_FILE,format,p1,p2); \ + } +# endif +# endif /* __STDC __ */ +#endif /* (PNG_DEBUG > 1) */ + +#endif /* _MSC_VER */ +#endif /* (PNG_DEBUG > 0) */ +#endif /* PNG_DEBUG */ +#ifndef png_debug +#define png_debug(l, m) +#endif +#ifndef png_debug1 +#define png_debug1(l, m, p1) +#endif +#ifndef png_debug2 +#define png_debug2(l, m, p1, p2) +#endif + +extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp + png_ptr, png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 + +/* Added to version 1.2.0 */ +#ifdef PNG_ASSEMBLER_CODE_SUPPORTED +#ifdef PNG_MMX_CODE_SUPPORTED +#define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01 /* not user-settable */ +#define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02 /* not user-settable */ +#define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04 +#define PNG_ASM_FLAG_MMX_READ_INTERLACE 0x08 +#define PNG_ASM_FLAG_MMX_READ_FILTER_SUB 0x10 +#define PNG_ASM_FLAG_MMX_READ_FILTER_UP 0x20 +#define PNG_ASM_FLAG_MMX_READ_FILTER_AVG 0x40 +#define PNG_ASM_FLAG_MMX_READ_FILTER_PAETH 0x80 +#define PNG_ASM_FLAGS_INITIALIZED 0x80000000 /* not user-settable */ + +#define PNG_MMX_READ_FLAGS ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \ + | PNG_ASM_FLAG_MMX_READ_INTERLACE \ + | PNG_ASM_FLAG_MMX_READ_FILTER_SUB \ + | PNG_ASM_FLAG_MMX_READ_FILTER_UP \ + | PNG_ASM_FLAG_MMX_READ_FILTER_AVG \ + | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ) +#define PNG_MMX_WRITE_FLAGS ( 0 ) + +#define PNG_MMX_FLAGS ( PNG_ASM_FLAG_MMX_SUPPORT_COMPILED \ + | PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU \ + | PNG_MMX_READ_FLAGS \ + | PNG_MMX_WRITE_FLAGS ) + +#define PNG_SELECT_READ 1 +#define PNG_SELECT_WRITE 2 +#endif /* PNG_MMX_CODE_SUPPORTED */ + +#ifndef PNG_1_0_X +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_mmx_flagmask) + PNGARG((int flag_select, int *compilerID)); + +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_asm_flagmask) + PNGARG((int flag_select)); + +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_asm_flags) + PNGARG((png_structp png_ptr)); + +/* pngget.c */ +extern PNG_EXPORT(png_byte,png_get_mmx_bitdepth_threshold) + PNGARG((png_structp png_ptr)); + +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_mmx_rowbytes_threshold) + PNGARG((png_structp png_ptr)); + +/* pngset.c */ +extern PNG_EXPORT(void,png_set_asm_flags) + PNGARG((png_structp png_ptr, png_uint_32 asm_flags)); + +/* pngset.c */ +extern PNG_EXPORT(void,png_set_mmx_thresholds) + PNGARG((png_structp png_ptr, png_byte mmx_bitdepth_threshold, + png_uint_32 mmx_rowbytes_threshold)); + +#endif /* PNG_1_0_X */ + +#ifndef PNG_1_0_X +/* png.c, pnggccrd.c, or pngvcrd.c */ +extern PNG_EXPORT(int,png_mmx_support) PNGARG((void)); +#endif /* PNG_1_0_X */ +#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */ + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +extern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp + png_ptr, png_uint_32 strip_mode)); +#endif + +/* Added at libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +extern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp + png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); +extern PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp + png_ptr)); +extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp + png_ptr)); +#endif +/* Maintainer: Put new public prototypes here ^, in libpng.3, and in + * project defs + */ + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 - \ + (png_uint_16)(alpha)) + (png_uint_16)128); \ + (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(png_uint_32)(65535L - \ + (png_uint_32)(alpha)) + (png_uint_32)32768L); \ + (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + (png_uint_16)127) / 255) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ + (png_uint_32)32767) / (png_uint_32)65535L) + +#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ + +/* Inline macros to do direct reads of bytes from the input buffer. These + * require that you are using an architecture that uses PNG byte ordering + * (MSB first) and supports unaligned data storage. I think that PowerPC + * in big-endian mode and 680x0 are the only ones that will support this. + * The x86 line of processors definitely do not. The png_get_int_32() + * routine also assumes we are using two's complement format for negative + * values, which is almost certainly true. + */ +#ifdef PNG_READ_BIG_ENDIAN_SUPPORTED +# define png_get_uint_32(buf) ( *((png_uint_32p) (buf))) +# define png_get_uint_16(buf) ( *((png_uint_16p) (buf))) +# define png_get_int_32(buf) ( *((png_int_32p) (buf))) +#else +extern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf)); +extern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf)); +extern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf)); +#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */ +extern PNG_EXPORT(png_uint_32,png_get_uint_31) + PNGARG((png_structp png_ptr, png_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). + */ +extern PNG_EXPORT(void,png_save_uint_32) + PNGARG((png_bytep buf, png_uint_32 i)); +extern PNG_EXPORT(void,png_save_int_32) + PNGARG((png_bytep buf, png_int_32 i)); + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +extern PNG_EXPORT(void,png_save_uint_16) + PNGARG((png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ + +/* ************************************************************************* */ + +/* These next functions are used internally in the code. They generally + * shouldn't be used unless you are writing code to add or replace some + * functionality in libpng. More information about most functions can + * be found in the files where the functions are located. + */ + + +/* Various modes of operation, that are visible to applications because + * they are used for unknown chunk location. + */ +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_HAVE_IDAT 0x04 +#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ +#define PNG_HAVE_IEND 0x10 + +#ifdef PNG_INTERNAL + +/* More modes of operation. Note that after an init, mode is set to + * zero automatically when the structure is created. + */ +#define PNG_HAVE_gAMA 0x20 +#define PNG_HAVE_cHRM 0x40 +#define PNG_HAVE_sRGB 0x80 +#define PNG_HAVE_CHUNK_HEADER 0x100 +#define PNG_WROTE_tIME 0x200 +#define PNG_WROTE_INFO_BEFORE_PLTE 0x400 +#define PNG_BACKGROUND_IS_GRAY 0x800 +#define PNG_HAVE_PNG_SIGNATURE 0x1000 +#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ + +/* Flags for the transformations the PNG library does on the image data */ +#define PNG_BGR 0x0001 +#define PNG_INTERLACE 0x0002 +#define PNG_PACK 0x0004 +#define PNG_SHIFT 0x0008 +#define PNG_SWAP_BYTES 0x0010 +#define PNG_INVERT_MONO 0x0020 +#define PNG_DITHER 0x0040 +#define PNG_BACKGROUND 0x0080 +#define PNG_BACKGROUND_EXPAND 0x0100 + /* 0x0200 unused */ +#define PNG_16_TO_8 0x0400 +#define PNG_RGBA 0x0800 +#define PNG_EXPAND 0x1000 +#define PNG_GAMMA 0x2000 +#define PNG_GRAY_TO_RGB 0x4000 +#define PNG_FILLER 0x8000L +#define PNG_PACKSWAP 0x10000L +#define PNG_SWAP_ALPHA 0x20000L +#define PNG_STRIP_ALPHA 0x40000L +#define PNG_INVERT_ALPHA 0x80000L +#define PNG_USER_TRANSFORM 0x100000L +#define PNG_RGB_TO_GRAY_ERR 0x200000L +#define PNG_RGB_TO_GRAY_WARN 0x400000L +#define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */ + /* 0x800000L Unused */ +#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */ +#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */ +#define PNG_PREMULTIPLY_ALPHA 0x4000000L /* Added to libpng-1.2.41 */ + /* by volker */ + /* 0x8000000L unused */ + /* 0x10000000L unused */ + /* 0x20000000L unused */ + /* 0x40000000L unused */ + +/* Flags for png_create_struct */ +#define PNG_STRUCT_PNG 0x0001 +#define PNG_STRUCT_INFO 0x0002 + +/* Scaling factor for filter heuristic weighting calculations */ +#define PNG_WEIGHT_SHIFT 8 +#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) +#define PNG_COST_SHIFT 3 +#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) + +/* Flags for the png_ptr->flags rather than declaring a byte for each one */ +#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 +#define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002 +#define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004 +#define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008 +#define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010 +#define PNG_FLAG_ZLIB_FINISHED 0x0020 +#define PNG_FLAG_ROW_INIT 0x0040 +#define PNG_FLAG_FILLER_AFTER 0x0080 +#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 +#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 +#define PNG_FLAG_CRC_CRITICAL_USE 0x0400 +#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 +#define PNG_FLAG_FREE_PLTE 0x1000 +#define PNG_FLAG_FREE_TRNS 0x2000 +#define PNG_FLAG_FREE_HIST 0x4000 +#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L +#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L +#define PNG_FLAG_LIBRARY_MISMATCH 0x20000L +#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L +#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L +#define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L +#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */ +#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */ + /* 0x800000L unused */ + /* 0x1000000L unused */ + /* 0x2000000L unused */ + /* 0x4000000L unused */ + /* 0x8000000L unused */ + /* 0x10000000L unused */ + /* 0x20000000L unused */ + /* 0x40000000L unused */ + +#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ + PNG_FLAG_CRC_ANCILLARY_NOWARN) + +#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ + PNG_FLAG_CRC_CRITICAL_IGNORE) + +#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ + PNG_FLAG_CRC_CRITICAL_MASK) + +/* Save typing and make code easier to understand */ + +#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ + abs((int)((c1).green) - (int)((c2).green)) + \ + abs((int)((c1).blue) - (int)((c2).blue))) + +/* Added to libpng-1.2.6 JB */ +#define PNG_ROWBYTES(pixel_bits, width) \ + ((pixel_bits) >= 8 ? \ + ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \ + (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) ) + +/* PNG_OUT_OF_RANGE returns true if value is outside the range + * ideal-delta..ideal+delta. Each argument is evaluated twice. + * "ideal" and "delta" should be constants, normally simple + * integers, "value" a variable. Added to libpng-1.2.6 JB + */ +#define PNG_OUT_OF_RANGE(value, ideal, delta) \ + ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) + +/* Variables declared in png.c - only it needs to define PNG_NO_EXTERN */ +#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) +/* Place to hold the signature string for a PNG file. */ +#ifdef PNG_USE_GLOBAL_ARRAYS + PNG_EXPORT_VAR (PNG_CONST png_byte FARDATA) png_sig[8]; +#else +#endif +#endif /* PNG_NO_EXTERN */ + +/* Constant strings for known chunk types. If you need to add a chunk, + * define the name here, and add an invocation of the macro in png.c and + * wherever it's needed. + */ +#define PNG_IHDR png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'} +#define PNG_IDAT png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'} +#define PNG_IEND png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'} +#define PNG_PLTE png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'} +#define PNG_bKGD png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'} +#define PNG_cHRM png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'} +#define PNG_gAMA png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'} +#define PNG_hIST png_byte png_hIST[5] = {104, 73, 83, 84, '\0'} +#define PNG_iCCP png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'} +#define PNG_iTXt png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'} +#define PNG_oFFs png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'} +#define PNG_pCAL png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'} +#define PNG_sCAL png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'} +#define PNG_pHYs png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'} +#define PNG_sBIT png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'} +#define PNG_sPLT png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'} +#define PNG_sRGB png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'} +#define PNG_tEXt png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'} +#define PNG_tIME png_byte png_tIME[5] = {116, 73, 77, 69, '\0'} +#define PNG_tRNS png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'} +#define PNG_zTXt png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'} + +#ifdef PNG_USE_GLOBAL_ARRAYS +PNG_EXPORT_VAR (png_byte FARDATA) png_IHDR[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_IDAT[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_IEND[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_PLTE[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_bKGD[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_cHRM[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_gAMA[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_hIST[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_iCCP[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_iTXt[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_oFFs[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_pCAL[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sCAL[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_pHYs[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sBIT[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sPLT[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sRGB[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_tEXt[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_tIME[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_tRNS[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_zTXt[5]; +#endif /* PNG_USE_GLOBAL_ARRAYS */ + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Initialize png_ptr struct for reading, and allocate any other memory. + * (old interface - DEPRECATED - use png_create_read_struct instead). + */ +extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr)) + PNG_DEPRECATED; +#undef png_read_init +#define png_read_init(png_ptr) png_read_init_3(&png_ptr, \ + PNG_LIBPNG_VER_STRING, png_sizeof(png_struct)); +#endif + +extern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size)); +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t + png_info_size)); +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Initialize png_ptr struct for writing, and allocate any other memory. + * (old interface - DEPRECATED - use png_create_write_struct instead). + */ +extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr)) + PNG_DEPRECATED; +#undef png_write_init +#define png_write_init(png_ptr) png_write_init_3(&png_ptr, \ + PNG_LIBPNG_VER_STRING, png_sizeof(png_struct)); +#endif + +extern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size)); +extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t + png_info_size)); + +/* Allocate memory for an internal libpng struct */ +PNG_EXTERN png_voidp png_create_struct PNGARG((int type)) PNG_PRIVATE; + +/* Free memory from internal libpng struct */ +PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)) PNG_PRIVATE; + +PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr + malloc_fn, png_voidp mem_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr, + png_free_ptr free_fn, png_voidp mem_ptr)) PNG_PRIVATE; + +/* Free any memory that info_ptr points to and reset struct. */ +PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; + +#ifndef PNG_1_0_X +/* Function to allocate memory for zlib. */ +PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, + uInt size)) PNG_PRIVATE; + +/* Function to free memory for zlib */ +PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)) PNG_PRIVATE; + +#ifdef PNG_SIZE_T +/* Function to convert a sizeof an item to png_sizeof item */ + PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size)) + PNG_PRIVATE; +#endif + +/* Next four functions are used internally as callbacks. PNGAPI is required + * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3. + */ + +PNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)) PNG_PRIVATE; + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t length)) PNG_PRIVATE; +#endif + +PNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)) PNG_PRIVATE; + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +#ifdef PNG_STDIO_SUPPORTED +PNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr)) + PNG_PRIVATE; +#endif +#endif +#else /* PNG_1_0_X */ +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t length)) PNG_PRIVATE; +#endif +#endif /* PNG_1_0_X */ + +/* Reset the CRC variable */ +PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +/* Write the "data" buffer to whatever output you are using. */ +PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data, + png_size_t length)) PNG_PRIVATE; + +/* Read data from whatever input you are using into the "data" buffer */ +PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data, + png_size_t length)) PNG_PRIVATE; + +/* Read bytes into buf, and update png_ptr->crc */ +PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf, + png_size_t length)) PNG_PRIVATE; + +/* Decompress data in a chunk that uses compression */ +#if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \ + defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) +PNG_EXTERN void png_decompress_chunk PNGARG((png_structp png_ptr, + int comp_type, png_size_t chunklength, + png_size_t prefix_length, png_size_t *data_length)) PNG_PRIVATE; +#endif + +/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ +PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip) + PNG_PRIVATE); + +/* Read the CRC from the file and compare it to the libpng calculated CRC */ +PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +/* Calculate the CRC over a section of data. Note that we are only + * passing a maximum of 64K on systems that have this as a memory limit, + * since this is the maximum buffer size we can specify. + */ +PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr, + png_size_t length)) PNG_PRIVATE; + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)) PNG_PRIVATE; +#endif + +/* Simple function to write the signature */ +PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +/* Write various chunks */ + +/* Write the IHDR chunk, and update the png_struct with the necessary + * information. + */ +PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width, + png_uint_32 height, + int bit_depth, int color_type, int compression_method, int filter_method, + int interlace_method)) PNG_PRIVATE; + +PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette, + png_uint_32 num_pal)) PNG_PRIVATE; + +PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data, + png_size_t length)) PNG_PRIVATE; + +PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +#ifdef PNG_WRITE_gAMA_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma)) + PNG_PRIVATE; +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, + png_fixed_point file_gamma)) PNG_PRIVATE; +#endif +#endif + +#ifdef PNG_WRITE_sBIT_SUPPORTED +PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit, + int color_type)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_cHRM_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr, + double white_x, double white_y, + double red_x, double red_y, double green_x, double green_y, + double blue_x, double blue_y)) PNG_PRIVATE; +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr, + png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) PNG_PRIVATE; +#endif +#endif + +#ifdef PNG_WRITE_sRGB_SUPPORTED +PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr, + int intent)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_iCCP_SUPPORTED +PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr, + png_charp name, int compression_type, + png_charp profile, int proflen)) PNG_PRIVATE; + /* Note to maintainer: profile should be png_bytep */ +#endif + +#ifdef PNG_WRITE_sPLT_SUPPORTED +PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr, + png_sPLT_tp palette)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_tRNS_SUPPORTED +PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans, + png_color_16p values, int number, int color_type)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_bKGD_SUPPORTED +PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr, + png_color_16p values, int color_type)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_hIST_SUPPORTED +PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist, + int num_hist)) PNG_PRIVATE; +#endif + +#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ + defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) +PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr, + png_charp key, png_charpp new_key)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_tEXt_SUPPORTED +PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key, + png_charp text, png_size_t text_len)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_zTXt_SUPPORTED +PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key, + png_charp text, png_size_t text_len, int compression)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_iTXt_SUPPORTED +PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr, + int compression, png_charp key, png_charp lang, png_charp lang_key, + png_charp text)) PNG_PRIVATE; +#endif + +#ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ +PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp text_ptr, int num_text)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_oFFs_SUPPORTED +PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr, + png_int_32 x_offset, png_int_32 y_offset, int unit_type)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_pCAL_SUPPORTED +PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose, + png_int_32 X0, png_int_32 X1, int type, int nparams, + png_charp units, png_charpp params)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_pHYs_SUPPORTED +PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr, + png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, + int unit_type)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_tIME_SUPPORTED +PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr, + png_timep mod_time)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_sCAL_SUPPORTED +#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO) +PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr, + int unit, double width, double height)) PNG_PRIVATE; +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr, + int unit, png_charp width, png_charp height)) PNG_PRIVATE; +#endif +#endif +#endif + +/* Called when finished processing a row of data */ +PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +/* Internal use only. Called before first row of data */ +PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +#ifdef PNG_READ_GAMMA_SUPPORTED +PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr)) PNG_PRIVATE; +#endif + +/* Combine a row of data, dealing with alpha, etc. if requested */ +PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row, + int mask)) PNG_PRIVATE; + +#ifdef PNG_READ_INTERLACING_SUPPORTED +/* Expand an interlaced row */ +/* OLD pre-1.0.9 interface: +PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info, + png_bytep row, int pass, png_uint_32 transformations)) PNG_PRIVATE; + */ +PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)) PNG_PRIVATE; +#endif + +/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ + +#ifdef PNG_WRITE_INTERLACING_SUPPORTED +/* Grab pixels out of a row for an interlaced pass */ +PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info, + png_bytep row, int pass)) PNG_PRIVATE; +#endif + +/* Unfilter a row */ +PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr, + png_row_infop row_info, png_bytep row, png_bytep prev_row, + int filter)) PNG_PRIVATE; + +/* Choose the best filter to use and filter the row data */ +PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr, + png_row_infop row_info)) PNG_PRIVATE; + +/* Write out the filtered row. */ +PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr, + png_bytep filtered_row)) PNG_PRIVATE; +/* Finish a row while reading, dealing with interlacing passes, etc. */ +PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); + +/* Initialize the row buffers, etc. */ +PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)) PNG_PRIVATE; +/* Optional call to update the users info structure */ +PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; + +/* These are the functions that do the transformations */ +#ifdef PNG_READ_FILLER_SUPPORTED +PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, + png_bytep row, png_uint_32 filler, png_uint_32 flags)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED +PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED +PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED +PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED +PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ + defined(PNG_READ_STRIP_ALPHA_SUPPORTED) +PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info, + png_bytep row, png_uint_32 flags)) PNG_PRIVATE; +#endif + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) +PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop + row_info, png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_PACK_SUPPORTED +PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_SHIFT_SUPPORTED +PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row, + png_color_8p sig_bits)) PNG_PRIVATE; +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_16_TO_8_SUPPORTED +PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_DITHER_SUPPORTED +PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info, + png_bytep row, png_bytep palette_lookup, + png_bytep dither_lookup)) PNG_PRIVATE; + +# ifdef PNG_CORRECT_PALETTE_SUPPORTED +PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr, + png_colorp palette, int num_palette)) PNG_PRIVATE; +# endif +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_PACK_SUPPORTED +PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info, + png_bytep row, png_uint_32 bit_depth)) PNG_PRIVATE; +#endif + +#ifdef PNG_WRITE_SHIFT_SUPPORTED +PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row, + png_color_8p bit_depth)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +#ifdef PNG_READ_GAMMA_SUPPORTED +PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, + png_color_16p trans_values, png_color_16p background, + png_color_16p background_1, + png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, + png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, + png_uint_16pp gamma_16_to_1, int gamma_shift)) PNG_PRIVATE; +#else +PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, + png_color_16p trans_values, png_color_16p background)) PNG_PRIVATE; +#endif +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row, + png_bytep gamma_table, png_uint_16pp gamma_16_table, + int gamma_shift)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_EXPAND_SUPPORTED +PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info, + png_bytep row, png_colorp palette, png_bytep trans, + int num_trans)) PNG_PRIVATE; +PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, + png_bytep row, png_color_16p trans_value)) PNG_PRIVATE; +#endif + +/* The following decodes the appropriate chunks, and does error correction, + * then calls the appropriate callback for the chunk if it is valid. + */ + +/* Decode the IHDR chunk */ +PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); + +#ifdef PNG_READ_bKGD_SUPPORTED +PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_cHRM_SUPPORTED +PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_gAMA_SUPPORTED +PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_hIST_SUPPORTED +PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_iCCP_SUPPORTED +extern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif /* PNG_READ_iCCP_SUPPORTED */ + +#ifdef PNG_READ_iTXt_SUPPORTED +PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_oFFs_SUPPORTED +PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_pCAL_SUPPORTED +PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_pHYs_SUPPORTED +PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_sBIT_SUPPORTED +PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_sCAL_SUPPORTED +PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_sPLT_SUPPORTED +extern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif /* PNG_READ_sPLT_SUPPORTED */ + +#ifdef PNG_READ_sRGB_SUPPORTED +PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_tEXt_SUPPORTED +PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_tIME_SUPPORTED +PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_tRNS_SUPPORTED +PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +#ifdef PNG_READ_zTXt_SUPPORTED +PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)) PNG_PRIVATE; +#endif + +PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE; + +PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr, + png_bytep chunk_name)) PNG_PRIVATE; + +/* Handle the transformations for reading and writing */ +PNG_EXTERN void png_do_read_transformations + PNGARG((png_structp png_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_do_write_transformations + PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +PNG_EXTERN void png_init_read_transformations + PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr, + png_uint_32 length)) PNG_PRIVATE; +PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t buffer_length)) PNG_PRIVATE; +PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t buffer_length)) PNG_PRIVATE; +PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE; +PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, + png_bytep row)) PNG_PRIVATE; +PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +PNG_EXTERN void png_read_push_finish_row + PNGARG((png_structp png_ptr)) PNG_PRIVATE; +#ifdef PNG_READ_tEXt_SUPPORTED +PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE; +PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +#endif +#ifdef PNG_READ_zTXt_SUPPORTED +PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE; +PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +#endif +#ifdef PNG_READ_iTXt_SUPPORTED +PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE; +PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr, + png_infop info_ptr)) PNG_PRIVATE; +#endif + +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info, + png_bytep row)) PNG_PRIVATE; +#endif + +#ifdef PNG_ASSEMBLER_CODE_SUPPORTED +#ifdef PNG_MMX_CODE_SUPPORTED +/* png.c */ /* PRIVATE */ +PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr)) PNG_PRIVATE; +#endif +#endif + + +/* The following six functions will be exported in libpng-1.4.0. */ +#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) +PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr, +png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ + +/* Read the chunk header (length + type name) */ +PNG_EXTERN png_uint_32 png_read_chunk_header + PNGARG((png_structp png_ptr)) PNG_PRIVATE; + +/* Added at libpng version 1.2.34 */ +#ifdef PNG_cHRM_SUPPORTED +PNG_EXTERN int png_check_cHRM_fixed PNGARG((png_structp png_ptr, + png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) PNG_PRIVATE; +#endif + +#ifdef PNG_cHRM_SUPPORTED +#ifdef PNG_CHECK_cHRM_SUPPORTED +/* Added at libpng version 1.2.34 */ +PNG_EXTERN void png_64bit_product PNGARG((long v1, long v2, + unsigned long *hi_product, unsigned long *lo_product)) PNG_PRIVATE; +#endif +#endif + +/* Added at libpng version 1.2.41 */ +PNG_EXTERN void png_check_IHDR PNGARG((png_structp png_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_type, int compression_type, + int filter_type)) PNG_PRIVATE; + +/* Added at libpng version 1.2.41 */ +PNG_EXTERN png_voidp png_calloc PNGARG((png_structp png_ptr, + png_uint_32 size)); + +/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */ + +#endif /* PNG_INTERNAL */ + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff --git a/lib/linux/include/pngconf.h b/lib/linux/include/pngconf.h new file mode 100644 index 0000000..85d9b2a --- /dev/null +++ b/lib/linux/include/pngconf.h @@ -0,0 +1,1665 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.2.49 - March 29, 2012 + * Copyright (c) 1998-2012 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + */ + +/* Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#define PNG_1_2_X + +/* + * PNG_USER_CONFIG has to be defined on the compiler command line. This + * includes the resource compiler for Windows DLL configurations. + */ +#ifdef PNG_USER_CONFIG +# ifndef PNG_USER_PRIVATEBUILD +# define PNG_USER_PRIVATEBUILD +# endif +#include "pngusr.h" +#endif + +/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */ +#ifdef PNG_CONFIGURE_LIBPNG +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#endif + +/* + * Added at libpng-1.2.8 + * + * If you create a private DLL you need to define in "pngusr.h" the followings: + * #define PNG_USER_PRIVATEBUILD <Describes by whom and why this version of + * the DLL was built> + * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons." + * #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to + * distinguish your DLL from those of the official release. These + * correspond to the trailing letters that come after the version + * number and must match your private DLL name> + * e.g. // private DLL "libpng13gx.dll" + * #define PNG_USER_DLLFNAME_POSTFIX "gx" + * + * The following macros are also at your disposal if you want to complete the + * DLL VERSIONINFO structure. + * - PNG_USER_VERSIONINFO_COMMENTS + * - PNG_USER_VERSIONINFO_COMPANYNAME + * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS + */ + +#ifdef __STDC__ +#ifdef SPECIALBUILD +# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\ + are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.") +#endif + +#ifdef PRIVATEBUILD +# pragma message("PRIVATEBUILD is deprecated.\ + Use PNG_USER_PRIVATEBUILD instead.") +# define PNG_USER_PRIVATEBUILD PRIVATEBUILD +#endif +#endif /* __STDC__ */ + +#ifndef PNG_VERSION_INFO_ONLY + +/* End of material added to libpng-1.2.8 */ + +/* Added at libpng-1.2.19, removed at libpng-1.2.20 because it caused trouble + Restored at libpng-1.2.21 */ +#if !defined(PNG_NO_WARN_UNINITIALIZED_ROW) && \ + !defined(PNG_WARN_UNINITIALIZED_ROW) +# define PNG_WARN_UNINITIALIZED_ROW 1 +#endif +/* End of material added at libpng-1.2.19/1.2.21 */ + +/* This is the size of the compression buffer, and thus the size of + * an IDAT chunk. Make this whatever size you feel is best for your + * machine. One of these will be allocated per png_struct. When this + * is full, it writes the data to the disk, and does some other + * calculations. Making this an extremely small size will slow + * the library down, but you may want to experiment to determine + * where it becomes significant, if you are concerned with memory + * usage. Note that zlib allocates at least 32Kb also. For readers, + * this describes the size of the buffer available to read the data in. + * Unless this gets smaller than the size of a row (compressed), + * it should not make much difference how big this is. + */ + +#ifndef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 8192 +#endif + +/* Enable if you want a write-only libpng */ + +#ifndef PNG_NO_READ_SUPPORTED +# define PNG_READ_SUPPORTED +#endif + +/* Enable if you want a read-only libpng */ + +#ifndef PNG_NO_WRITE_SUPPORTED +# define PNG_WRITE_SUPPORTED +#endif + +/* Enabled in 1.2.41. */ +#ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +#else +# ifndef PNG_BENIGN_ERRORS_SUPPORTED +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* Added in libpng-1.2.41 */ +#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED) +# define PNG_WARNINGS_SUPPORTED +#endif + +#if !defined(PNG_NO_ERROR_TEXT) && !defined(PNG_ERROR_TEXT_SUPPORTED) +# define PNG_ERROR_TEXT_SUPPORTED +#endif + +#if !defined(PNG_NO_CHECK_cHRM) && !defined(PNG_CHECK_cHRM_SUPPORTED) +# define PNG_CHECK_cHRM_SUPPORTED +#endif + +/* Enabled by default in 1.2.0. You can disable this if you don't need to + * support PNGs that are embedded in MNG datastreams + */ +#if !defined(PNG_1_0_X) && !defined(PNG_NO_MNG_FEATURES) +# ifndef PNG_MNG_FEATURES_SUPPORTED +# define PNG_MNG_FEATURES_SUPPORTED +# endif +#endif + +#ifndef PNG_NO_FLOATING_POINT_SUPPORTED +# ifndef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FLOATING_POINT_SUPPORTED +# endif +#endif + +/* If you are running on a machine where you cannot allocate more + * than 64K of memory at once, uncomment this. While libpng will not + * normally need that much memory in a chunk (unless you load up a very + * large file), zlib needs to know how big of a chunk it can use, and + * libpng thus makes sure to check any memory allocation to verify it + * will fit into memory. +#define PNG_MAX_MALLOC_64K + */ +#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) +# define PNG_MAX_MALLOC_64K +#endif + +/* Special munging to support doing things the 'cygwin' way: + * 'Normal' png-on-win32 defines/defaults: + * PNG_BUILD_DLL -- building dll + * PNG_USE_DLL -- building an application, linking to dll + * (no define) -- building static library, or building an + * application and linking to the static lib + * 'Cygwin' defines/defaults: + * PNG_BUILD_DLL -- (ignored) building the dll + * (no define) -- (ignored) building an application, linking to the dll + * PNG_STATIC -- (ignored) building the static lib, or building an + * application that links to the static lib. + * ALL_STATIC -- (ignored) building various static libs, or building an + * application that links to the static libs. + * Thus, + * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and + * this bit of #ifdefs will define the 'correct' config variables based on + * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but + * unnecessary. + * + * Also, the precedence order is: + * ALL_STATIC (since we can't #undef something outside our namespace) + * PNG_BUILD_DLL + * PNG_STATIC + * (nothing) == PNG_USE_DLL + * + * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent + * of auto-import in binutils, we no longer need to worry about + * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore, + * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes + * to __declspec() stuff. However, we DO need to worry about + * PNG_BUILD_DLL and PNG_STATIC because those change some defaults + * such as CONSOLE_IO and whether GLOBAL_ARRAYS are allowed. + */ +#ifdef __CYGWIN__ +# ifdef ALL_STATIC +# ifdef PNG_BUILD_DLL +# undef PNG_BUILD_DLL +# endif +# ifdef PNG_USE_DLL +# undef PNG_USE_DLL +# endif +# ifdef PNG_DLL +# undef PNG_DLL +# endif +# ifndef PNG_STATIC +# define PNG_STATIC +# endif +# else +# ifdef PNG_BUILD_DLL +# ifdef PNG_STATIC +# undef PNG_STATIC +# endif +# ifdef PNG_USE_DLL +# undef PNG_USE_DLL +# endif +# ifndef PNG_DLL +# define PNG_DLL +# endif +# else +# ifdef PNG_STATIC +# ifdef PNG_USE_DLL +# undef PNG_USE_DLL +# endif +# ifdef PNG_DLL +# undef PNG_DLL +# endif +# else +# ifndef PNG_USE_DLL +# define PNG_USE_DLL +# endif +# ifndef PNG_DLL +# define PNG_DLL +# endif +# endif +# endif +# endif +#endif + +/* This protects us against compilers that run on a windowing system + * and thus don't have or would rather us not use the stdio types: + * stdin, stdout, and stderr. The only one currently used is stderr + * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will + * prevent these from being compiled and used. #defining PNG_NO_STDIO + * will also prevent these, plus will prevent the entire set of stdio + * macros and functions (FILE *, printf, etc.) from being compiled and used, + * unless (PNG_DEBUG > 0) has been #defined. + * + * #define PNG_NO_CONSOLE_IO + * #define PNG_NO_STDIO + */ + +#if !defined(PNG_NO_STDIO) && !defined(PNG_STDIO_SUPPORTED) +# define PNG_STDIO_SUPPORTED +#endif + +#ifdef _WIN32_WCE +# include <windows.h> + /* Console I/O functions are not supported on WindowsCE */ +# define PNG_NO_CONSOLE_IO + /* abort() may not be supported on some/all Windows CE platforms */ +# define PNG_ABORT() exit(-1) +# ifdef PNG_DEBUG +# undef PNG_DEBUG +# endif +#endif + +#ifdef PNG_BUILD_DLL +# ifndef PNG_CONSOLE_IO_SUPPORTED +# ifndef PNG_NO_CONSOLE_IO +# define PNG_NO_CONSOLE_IO +# endif +# endif +#endif + +# ifdef PNG_NO_STDIO +# ifndef PNG_NO_CONSOLE_IO +# define PNG_NO_CONSOLE_IO +# endif +# ifdef PNG_DEBUG +# if (PNG_DEBUG > 0) +# include <stdio.h> +# endif +# endif +# else +# ifndef _WIN32_WCE +/* "stdio.h" functions are not supported on WindowsCE */ +# include <stdio.h> +# endif +# endif + +#if !(defined PNG_NO_CONSOLE_IO) && !defined(PNG_CONSOLE_IO_SUPPORTED) +# define PNG_CONSOLE_IO_SUPPORTED +#endif + +/* This macro protects us against machines that don't have function + * prototypes (ie K&R style headers). If your compiler does not handle + * function prototypes, define this macro and use the included ansi2knr. + * I've always been able to use _NO_PROTO as the indicator, but you may + * need to drag the empty declaration out in front of here, or change the + * ifdef to suit your own needs. + */ +#ifndef PNGARG + +#ifdef OF /* zlib prototype munger */ +# define PNGARG(arglist) OF(arglist) +#else + +#ifdef _NO_PROTO +# define PNGARG(arglist) () +# ifndef PNG_TYPECAST_NULL +# define PNG_TYPECAST_NULL +# endif +#else +# define PNGARG(arglist) arglist +#endif /* _NO_PROTO */ + + +#endif /* OF */ + +#endif /* PNGARG */ + +/* Try to determine if we are compiling on a Mac. Note that testing for + * just __MWERKS__ is not good enough, because the Codewarrior is now used + * on non-Mac platforms. + */ +#ifndef MACOS +# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ + defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) +# define MACOS +# endif +#endif + +/* enough people need this for various reasons to include it here */ +#if !defined(MACOS) && !defined(RISCOS) && !defined(_WIN32_WCE) +# include <sys/types.h> +#endif + +#if !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED) +# define PNG_SETJMP_SUPPORTED +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This is an attempt to force a single setjmp behaviour on Linux. If + * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. + * + * You can bypass this test if you know that your application uses exactly + * the same setjmp.h that was included when libpng was built. Only define + * PNG_SKIP_SETJMP_CHECK while building your application, prior to the + * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK + * while building a separate libpng library for general use. + */ + +# ifndef PNG_SKIP_SETJMP_CHECK +# ifdef __linux__ +# ifdef _BSD_SOURCE +# define PNG_SAVE_BSD_SOURCE +# undef _BSD_SOURCE +# endif +# ifdef _SETJMP_H + /* If you encounter a compiler error here, see the explanation + * near the end of INSTALL. + */ + __pngconf.h__ in libpng already includes setjmp.h; + __dont__ include it again.; +# endif +# endif /* __linux__ */ +# endif /* PNG_SKIP_SETJMP_CHECK */ + + /* include setjmp.h for error handling */ +# include <setjmp.h> + +# ifdef __linux__ +# ifdef PNG_SAVE_BSD_SOURCE +# ifndef _BSD_SOURCE +# define _BSD_SOURCE +# endif +# undef PNG_SAVE_BSD_SOURCE +# endif +# endif /* __linux__ */ +#endif /* PNG_SETJMP_SUPPORTED */ + +#ifdef BSD +# include <strings.h> +#else +# include <string.h> +#endif + +/* Other defines for things like memory and the like can go here. */ +#ifdef PNG_INTERNAL + +#include <stdlib.h> + +/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which + * aren't usually used outside the library (as far as I know), so it is + * debatable if they should be exported at all. In the future, when it is + * possible to have run-time registry of chunk-handling functions, some of + * these will be made available again. +#define PNG_EXTERN extern + */ +#define PNG_EXTERN + +/* Other defines specific to compilers can go here. Try to keep + * them inside an appropriate ifdef/endif pair for portability. + */ + +#ifdef PNG_FLOATING_POINT_SUPPORTED +# ifdef MACOS + /* We need to check that <math.h> hasn't already been included earlier + * as it seems it doesn't agree with <fp.h>, yet we should really use + * <fp.h> if possible. + */ +# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) +# include <fp.h> +# endif +# else +# include <math.h> +# endif +# if defined(_AMIGA) && defined(__SASC) && defined(_M68881) + /* Amiga SAS/C: We must include builtin FPU functions when compiling using + * MATH=68881 + */ +# include <m68881.h> +# endif +#endif + +/* Codewarrior on NT has linking problems without this. */ +#if (defined(__MWERKS__) && defined(WIN32)) || defined(__STDC__) +# define PNG_ALWAYS_EXTERN +#endif + +/* This provides the non-ANSI (far) memory allocation routines. */ +#if defined(__TURBOC__) && defined(__MSDOS__) +# include <mem.h> +# include <alloc.h> +#endif + +/* I have no idea why is this necessary... */ +#if defined(_MSC_VER) && (defined(WIN32) || defined(_Windows) || \ + defined(_WINDOWS) || defined(_WIN32) || defined(__WIN32__)) +# include <malloc.h> +#endif + +/* This controls how fine the dithering gets. As this allocates + * a largish chunk of memory (32K), those who are not as concerned + * with dithering quality can decrease some or all of these. + */ +#ifndef PNG_DITHER_RED_BITS +# define PNG_DITHER_RED_BITS 5 +#endif +#ifndef PNG_DITHER_GREEN_BITS +# define PNG_DITHER_GREEN_BITS 5 +#endif +#ifndef PNG_DITHER_BLUE_BITS +# define PNG_DITHER_BLUE_BITS 5 +#endif + +/* This controls how fine the gamma correction becomes when you + * are only interested in 8 bits anyway. Increasing this value + * results in more memory being used, and more pow() functions + * being called to fill in the gamma tables. Don't set this value + * less then 8, and even that may not work (I haven't tested it). + */ + +#ifndef PNG_MAX_GAMMA_8 +# define PNG_MAX_GAMMA_8 11 +#endif + +/* This controls how much a difference in gamma we can tolerate before + * we actually start doing gamma conversion. + */ +#ifndef PNG_GAMMA_THRESHOLD +# define PNG_GAMMA_THRESHOLD 0.05 +#endif + +#endif /* PNG_INTERNAL */ + +/* The following uses const char * instead of char * for error + * and warning message functions, so some compilers won't complain. + * If you do not want to use const, define PNG_NO_CONST here. + */ + +#ifndef PNG_NO_CONST +# define PNG_CONST const +#else +# define PNG_CONST +#endif + +/* The following defines give you the ability to remove code from the + * library that you will not be using. I wish I could figure out how to + * automate this, but I can't do that without making it seriously hard + * on the users. So if you are not using an ability, change the #define + * to and #undef, and that part of the library will not be compiled. If + * your linker can't find a function, you may want to make sure the + * ability is defined here. Some of these depend upon some others being + * defined. I haven't figured out all the interactions here, so you may + * have to experiment awhile to get everything to compile. If you are + * creating or using a shared library, you probably shouldn't touch this, + * as it will affect the size of the structures, and this will cause bad + * things to happen if the library and/or application ever change. + */ + +/* Any features you will not be using can be undef'ed here */ + +/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user + * to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS + * on the compile line, then pick and choose which ones to define without + * having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED + * if you only want to have a png-compliant reader/writer but don't need + * any of the extra transformations. This saves about 80 kbytes in a + * typical installation of the library. (PNG_NO_* form added in version + * 1.0.1c, for consistency) + */ + +/* The size of the png_text structure changed in libpng-1.0.6 when + * iTXt support was added. iTXt support was turned off by default through + * libpng-1.2.x, to support old apps that malloc the png_text structure + * instead of calling png_set_text() and letting libpng malloc it. It + * will be turned on by default in libpng-1.4.0. + */ + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +# ifndef PNG_NO_iTXt_SUPPORTED +# define PNG_NO_iTXt_SUPPORTED +# endif +# ifndef PNG_NO_READ_iTXt +# define PNG_NO_READ_iTXt +# endif +# ifndef PNG_NO_WRITE_iTXt +# define PNG_NO_WRITE_iTXt +# endif +#endif + +#if !defined(PNG_NO_iTXt_SUPPORTED) +# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt) +# define PNG_READ_iTXt +# endif +# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt) +# define PNG_WRITE_iTXt +# endif +#endif + +/* The following support, added after version 1.0.0, can be turned off here en + * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility + * with old applications that require the length of png_struct and png_info + * to remain unchanged. + */ + +#ifdef PNG_LEGACY_SUPPORTED +# define PNG_NO_FREE_ME +# define PNG_NO_READ_UNKNOWN_CHUNKS +# define PNG_NO_WRITE_UNKNOWN_CHUNKS +# define PNG_NO_HANDLE_AS_UNKNOWN +# define PNG_NO_READ_USER_CHUNKS +# define PNG_NO_READ_iCCP +# define PNG_NO_WRITE_iCCP +# define PNG_NO_READ_iTXt +# define PNG_NO_WRITE_iTXt +# define PNG_NO_READ_sCAL +# define PNG_NO_WRITE_sCAL +# define PNG_NO_READ_sPLT +# define PNG_NO_WRITE_sPLT +# define PNG_NO_INFO_IMAGE +# define PNG_NO_READ_RGB_TO_GRAY +# define PNG_NO_READ_USER_TRANSFORM +# define PNG_NO_WRITE_USER_TRANSFORM +# define PNG_NO_USER_MEM +# define PNG_NO_READ_EMPTY_PLTE +# define PNG_NO_MNG_FEATURES +# define PNG_NO_FIXED_POINT_SUPPORTED +#endif + +/* Ignore attempt to turn off both floating and fixed point support */ +#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \ + !defined(PNG_NO_FIXED_POINT_SUPPORTED) +# define PNG_FIXED_POINT_SUPPORTED +#endif + +#ifndef PNG_NO_FREE_ME +# define PNG_FREE_ME_SUPPORTED +#endif + +#ifdef PNG_READ_SUPPORTED + +#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \ + !defined(PNG_NO_READ_TRANSFORMS) +# define PNG_READ_TRANSFORMS_SUPPORTED +#endif + +#ifdef PNG_READ_TRANSFORMS_SUPPORTED +# ifndef PNG_NO_READ_EXPAND +# define PNG_READ_EXPAND_SUPPORTED +# endif +# ifndef PNG_NO_READ_SHIFT +# define PNG_READ_SHIFT_SUPPORTED +# endif +# ifndef PNG_NO_READ_PACK +# define PNG_READ_PACK_SUPPORTED +# endif +# ifndef PNG_NO_READ_BGR +# define PNG_READ_BGR_SUPPORTED +# endif +# ifndef PNG_NO_READ_SWAP +# define PNG_READ_SWAP_SUPPORTED +# endif +# ifndef PNG_NO_READ_PACKSWAP +# define PNG_READ_PACKSWAP_SUPPORTED +# endif +# ifndef PNG_NO_READ_INVERT +# define PNG_READ_INVERT_SUPPORTED +# endif +# ifndef PNG_NO_READ_DITHER +# define PNG_READ_DITHER_SUPPORTED +# endif +# ifndef PNG_NO_READ_BACKGROUND +# define PNG_READ_BACKGROUND_SUPPORTED +# endif +# ifndef PNG_NO_READ_16_TO_8 +# define PNG_READ_16_TO_8_SUPPORTED +# endif +# ifndef PNG_NO_READ_FILLER +# define PNG_READ_FILLER_SUPPORTED +# endif +# ifndef PNG_NO_READ_GAMMA +# define PNG_READ_GAMMA_SUPPORTED +# endif +# ifndef PNG_NO_READ_GRAY_TO_RGB +# define PNG_READ_GRAY_TO_RGB_SUPPORTED +# endif +# ifndef PNG_NO_READ_SWAP_ALPHA +# define PNG_READ_SWAP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_INVERT_ALPHA +# define PNG_READ_INVERT_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_STRIP_ALPHA +# define PNG_READ_STRIP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_USER_TRANSFORM +# define PNG_READ_USER_TRANSFORM_SUPPORTED +# endif +# ifndef PNG_NO_READ_RGB_TO_GRAY +# define PNG_READ_RGB_TO_GRAY_SUPPORTED +# endif +#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ + +/* PNG_PROGRESSIVE_READ_NOT_SUPPORTED is deprecated. */ +#if !defined(PNG_NO_PROGRESSIVE_READ) && \ + !defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */ +# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ +#endif /* about interlacing capability! You'll */ + /* still have interlacing unless you change the following define: */ +#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */ + +/* PNG_NO_SEQUENTIAL_READ_SUPPORTED is deprecated. */ +#if !defined(PNG_NO_SEQUENTIAL_READ) && \ + !defined(PNG_SEQUENTIAL_READ_SUPPORTED) && \ + !defined(PNG_NO_SEQUENTIAL_READ_SUPPORTED) +# define PNG_SEQUENTIAL_READ_SUPPORTED +#endif + +#define PNG_READ_INTERLACING_SUPPORTED /* required in PNG-compliant decoders */ + +#ifndef PNG_NO_READ_COMPOSITE_NODIV +# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */ +# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */ +# endif +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Deprecated, will be removed from version 2.0.0. + Use PNG_MNG_FEATURES_SUPPORTED instead. */ +#ifndef PNG_NO_READ_EMPTY_PLTE +# define PNG_READ_EMPTY_PLTE_SUPPORTED +#endif +#endif + +#endif /* PNG_READ_SUPPORTED */ + +#ifdef PNG_WRITE_SUPPORTED + +# if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \ + !defined(PNG_NO_WRITE_TRANSFORMS) +# define PNG_WRITE_TRANSFORMS_SUPPORTED +#endif + +#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED +# ifndef PNG_NO_WRITE_SHIFT +# define PNG_WRITE_SHIFT_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_PACK +# define PNG_WRITE_PACK_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_BGR +# define PNG_WRITE_BGR_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_SWAP +# define PNG_WRITE_SWAP_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_PACKSWAP +# define PNG_WRITE_PACKSWAP_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_INVERT +# define PNG_WRITE_INVERT_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_FILLER +# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */ +# endif +# ifndef PNG_NO_WRITE_SWAP_ALPHA +# define PNG_WRITE_SWAP_ALPHA_SUPPORTED +# endif +#ifndef PNG_1_0_X +# ifndef PNG_NO_WRITE_INVERT_ALPHA +# define PNG_WRITE_INVERT_ALPHA_SUPPORTED +# endif +#endif +# ifndef PNG_NO_WRITE_USER_TRANSFORM +# define PNG_WRITE_USER_TRANSFORM_SUPPORTED +# endif +#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ + +#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \ + !defined(PNG_WRITE_INTERLACING_SUPPORTED) +#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant + encoders, but can cause trouble + if left undefined */ +#endif + +#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \ + !defined(PNG_WRITE_WEIGHTED_FILTER) && \ + defined(PNG_FLOATING_POINT_SUPPORTED) +# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#endif + +#ifndef PNG_NO_WRITE_FLUSH +# define PNG_WRITE_FLUSH_SUPPORTED +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Deprecated, see PNG_MNG_FEATURES_SUPPORTED, above */ +#ifndef PNG_NO_WRITE_EMPTY_PLTE +# define PNG_WRITE_EMPTY_PLTE_SUPPORTED +#endif +#endif + +#endif /* PNG_WRITE_SUPPORTED */ + +#ifndef PNG_1_0_X +# ifndef PNG_NO_ERROR_NUMBERS +# define PNG_ERROR_NUMBERS_SUPPORTED +# endif +#endif /* PNG_1_0_X */ + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +# ifndef PNG_NO_USER_TRANSFORM_PTR +# define PNG_USER_TRANSFORM_PTR_SUPPORTED +# endif +#endif + +#ifndef PNG_NO_STDIO +# define PNG_TIME_RFC1123_SUPPORTED +#endif + +/* This adds extra functions in pngget.c for accessing data from the + * info pointer (added in version 0.99) + * png_get_image_width() + * png_get_image_height() + * png_get_bit_depth() + * png_get_color_type() + * png_get_compression_type() + * png_get_filter_type() + * png_get_interlace_type() + * png_get_pixel_aspect_ratio() + * png_get_pixels_per_meter() + * png_get_x_offset_pixels() + * png_get_y_offset_pixels() + * png_get_x_offset_microns() + * png_get_y_offset_microns() + */ +#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED) +# define PNG_EASY_ACCESS_SUPPORTED +#endif + +/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0 + * and removed from version 1.2.20. The following will be removed + * from libpng-1.4.0 +*/ + +#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_OPTIMIZED_CODE) +# ifndef PNG_OPTIMIZED_CODE_SUPPORTED +# define PNG_OPTIMIZED_CODE_SUPPORTED +# endif +#endif + +#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_ASSEMBLER_CODE) +# ifndef PNG_ASSEMBLER_CODE_SUPPORTED +# define PNG_ASSEMBLER_CODE_SUPPORTED +# endif + +# if defined(__GNUC__) && defined(__x86_64__) && (__GNUC__ < 4) + /* work around 64-bit gcc compiler bugs in gcc-3.x */ +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_NO_MMX_CODE +# endif +# endif + +# ifdef __APPLE__ +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_NO_MMX_CODE +# endif +# endif + +# if (defined(__MWERKS__) && ((__MWERKS__ < 0x0900) || macintosh)) +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_NO_MMX_CODE +# endif +# endif + +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_MMX_CODE_SUPPORTED +# endif + +#endif +/* end of obsolete code to be removed from libpng-1.4.0 */ + +/* Added at libpng-1.2.0 */ +#ifndef PNG_1_0_X +#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED) +# define PNG_USER_MEM_SUPPORTED +#endif +#endif /* PNG_1_0_X */ + +/* Added at libpng-1.2.6 */ +#ifndef PNG_1_0_X +# ifndef PNG_SET_USER_LIMITS_SUPPORTED +# ifndef PNG_NO_SET_USER_LIMITS +# define PNG_SET_USER_LIMITS_SUPPORTED +# endif +# endif +#endif /* PNG_1_0_X */ + +/* Added at libpng-1.0.53 and 1.2.43 */ +#ifndef PNG_USER_LIMITS_SUPPORTED +# ifndef PNG_NO_USER_LIMITS +# define PNG_USER_LIMITS_SUPPORTED +# endif +#endif + +/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGS no matter + * how large, set these limits to 0x7fffffffL + */ +#ifndef PNG_USER_WIDTH_MAX +# define PNG_USER_WIDTH_MAX 1000000L +#endif +#ifndef PNG_USER_HEIGHT_MAX +# define PNG_USER_HEIGHT_MAX 1000000L +#endif + +/* Added at libpng-1.2.43. To accept all valid PNGs no matter + * how large, set these two limits to 0. + */ +#ifndef PNG_USER_CHUNK_CACHE_MAX +# define PNG_USER_CHUNK_CACHE_MAX 0 +#endif + +/* Added at libpng-1.2.43 */ +#ifndef PNG_USER_CHUNK_MALLOC_MAX +# define PNG_USER_CHUNK_MALLOC_MAX 0 +#endif + +#ifndef PNG_LITERAL_SHARP +# define PNG_LITERAL_SHARP 0x23 +#endif +#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET +# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b +#endif +#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET +# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d +#endif + +/* Added at libpng-1.2.34 */ +#ifndef PNG_STRING_NEWLINE +#define PNG_STRING_NEWLINE "\n" +#endif + +/* These are currently experimental features, define them if you want */ + +/* very little testing */ +/* +#ifdef PNG_READ_SUPPORTED +# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +# endif +#endif +*/ + +/* This is only for PowerPC big-endian and 680x0 systems */ +/* some testing */ +/* +#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED +# define PNG_READ_BIG_ENDIAN_SUPPORTED +#endif +*/ + +/* Buggy compilers (e.g., gcc 2.7.2.2) need this */ +/* +#define PNG_NO_POINTER_INDEXING +*/ + +#if !defined(PNG_NO_POINTER_INDEXING) && \ + !defined(PNG_POINTER_INDEXING_SUPPORTED) +# define PNG_POINTER_INDEXING_SUPPORTED +#endif + +/* These functions are turned off by default, as they will be phased out. */ +/* +#define PNG_USELESS_TESTS_SUPPORTED +#define PNG_CORRECT_PALETTE_SUPPORTED +*/ + +/* Any chunks you are not interested in, you can undef here. The + * ones that allocate memory may be expecially important (hIST, + * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info + * a bit smaller. + */ + +#if defined(PNG_READ_SUPPORTED) && \ + !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ + !defined(PNG_NO_READ_ANCILLARY_CHUNKS) +# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#endif + +#if defined(PNG_WRITE_SUPPORTED) && \ + !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ + !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS) +# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#endif + +#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED + +#ifdef PNG_NO_READ_TEXT +# define PNG_NO_READ_iTXt +# define PNG_NO_READ_tEXt +# define PNG_NO_READ_zTXt +#endif +#ifndef PNG_NO_READ_bKGD +# define PNG_READ_bKGD_SUPPORTED +# define PNG_bKGD_SUPPORTED +#endif +#ifndef PNG_NO_READ_cHRM +# define PNG_READ_cHRM_SUPPORTED +# define PNG_cHRM_SUPPORTED +#endif +#ifndef PNG_NO_READ_gAMA +# define PNG_READ_gAMA_SUPPORTED +# define PNG_gAMA_SUPPORTED +#endif +#ifndef PNG_NO_READ_hIST +# define PNG_READ_hIST_SUPPORTED +# define PNG_hIST_SUPPORTED +#endif +#ifndef PNG_NO_READ_iCCP +# define PNG_READ_iCCP_SUPPORTED +# define PNG_iCCP_SUPPORTED +#endif +#ifndef PNG_NO_READ_iTXt +# ifndef PNG_READ_iTXt_SUPPORTED +# define PNG_READ_iTXt_SUPPORTED +# endif +# ifndef PNG_iTXt_SUPPORTED +# define PNG_iTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_READ_oFFs +# define PNG_READ_oFFs_SUPPORTED +# define PNG_oFFs_SUPPORTED +#endif +#ifndef PNG_NO_READ_pCAL +# define PNG_READ_pCAL_SUPPORTED +# define PNG_pCAL_SUPPORTED +#endif +#ifndef PNG_NO_READ_sCAL +# define PNG_READ_sCAL_SUPPORTED +# define PNG_sCAL_SUPPORTED +#endif +#ifndef PNG_NO_READ_pHYs +# define PNG_READ_pHYs_SUPPORTED +# define PNG_pHYs_SUPPORTED +#endif +#ifndef PNG_NO_READ_sBIT +# define PNG_READ_sBIT_SUPPORTED +# define PNG_sBIT_SUPPORTED +#endif +#ifndef PNG_NO_READ_sPLT +# define PNG_READ_sPLT_SUPPORTED +# define PNG_sPLT_SUPPORTED +#endif +#ifndef PNG_NO_READ_sRGB +# define PNG_READ_sRGB_SUPPORTED +# define PNG_sRGB_SUPPORTED +#endif +#ifndef PNG_NO_READ_tEXt +# define PNG_READ_tEXt_SUPPORTED +# define PNG_tEXt_SUPPORTED +#endif +#ifndef PNG_NO_READ_tIME +# define PNG_READ_tIME_SUPPORTED +# define PNG_tIME_SUPPORTED +#endif +#ifndef PNG_NO_READ_tRNS +# define PNG_READ_tRNS_SUPPORTED +# define PNG_tRNS_SUPPORTED +#endif +#ifndef PNG_NO_READ_zTXt +# define PNG_READ_zTXt_SUPPORTED +# define PNG_zTXt_SUPPORTED +#endif +#ifndef PNG_NO_READ_OPT_PLTE +# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */ +#endif /* optional PLTE chunk in RGB and RGBA images */ +#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \ + defined(PNG_READ_zTXt_SUPPORTED) +# define PNG_READ_TEXT_SUPPORTED +# define PNG_TEXT_SUPPORTED +#endif + +#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ + +#ifndef PNG_NO_READ_UNKNOWN_CHUNKS +# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_UNKNOWN_CHUNKS_SUPPORTED +# endif +#endif +#if !defined(PNG_NO_READ_USER_CHUNKS) && \ + defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) +# define PNG_READ_USER_CHUNKS_SUPPORTED +# define PNG_USER_CHUNKS_SUPPORTED +# ifdef PNG_NO_READ_UNKNOWN_CHUNKS +# undef PNG_NO_READ_UNKNOWN_CHUNKS +# endif +# ifdef PNG_NO_HANDLE_AS_UNKNOWN +# undef PNG_NO_HANDLE_AS_UNKNOWN +# endif +#endif + +#ifndef PNG_NO_HANDLE_AS_UNKNOWN +# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# endif +#endif + +#ifdef PNG_WRITE_SUPPORTED +#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED + +#ifdef PNG_NO_WRITE_TEXT +# define PNG_NO_WRITE_iTXt +# define PNG_NO_WRITE_tEXt +# define PNG_NO_WRITE_zTXt +#endif +#ifndef PNG_NO_WRITE_bKGD +# define PNG_WRITE_bKGD_SUPPORTED +# ifndef PNG_bKGD_SUPPORTED +# define PNG_bKGD_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_cHRM +# define PNG_WRITE_cHRM_SUPPORTED +# ifndef PNG_cHRM_SUPPORTED +# define PNG_cHRM_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_gAMA +# define PNG_WRITE_gAMA_SUPPORTED +# ifndef PNG_gAMA_SUPPORTED +# define PNG_gAMA_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_hIST +# define PNG_WRITE_hIST_SUPPORTED +# ifndef PNG_hIST_SUPPORTED +# define PNG_hIST_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_iCCP +# define PNG_WRITE_iCCP_SUPPORTED +# ifndef PNG_iCCP_SUPPORTED +# define PNG_iCCP_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_iTXt +# ifndef PNG_WRITE_iTXt_SUPPORTED +# define PNG_WRITE_iTXt_SUPPORTED +# endif +# ifndef PNG_iTXt_SUPPORTED +# define PNG_iTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_oFFs +# define PNG_WRITE_oFFs_SUPPORTED +# ifndef PNG_oFFs_SUPPORTED +# define PNG_oFFs_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_pCAL +# define PNG_WRITE_pCAL_SUPPORTED +# ifndef PNG_pCAL_SUPPORTED +# define PNG_pCAL_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sCAL +# define PNG_WRITE_sCAL_SUPPORTED +# ifndef PNG_sCAL_SUPPORTED +# define PNG_sCAL_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_pHYs +# define PNG_WRITE_pHYs_SUPPORTED +# ifndef PNG_pHYs_SUPPORTED +# define PNG_pHYs_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sBIT +# define PNG_WRITE_sBIT_SUPPORTED +# ifndef PNG_sBIT_SUPPORTED +# define PNG_sBIT_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sPLT +# define PNG_WRITE_sPLT_SUPPORTED +# ifndef PNG_sPLT_SUPPORTED +# define PNG_sPLT_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sRGB +# define PNG_WRITE_sRGB_SUPPORTED +# ifndef PNG_sRGB_SUPPORTED +# define PNG_sRGB_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tEXt +# define PNG_WRITE_tEXt_SUPPORTED +# ifndef PNG_tEXt_SUPPORTED +# define PNG_tEXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tIME +# define PNG_WRITE_tIME_SUPPORTED +# ifndef PNG_tIME_SUPPORTED +# define PNG_tIME_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tRNS +# define PNG_WRITE_tRNS_SUPPORTED +# ifndef PNG_tRNS_SUPPORTED +# define PNG_tRNS_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_zTXt +# define PNG_WRITE_zTXt_SUPPORTED +# ifndef PNG_zTXt_SUPPORTED +# define PNG_zTXt_SUPPORTED +# endif +#endif +#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ + defined(PNG_WRITE_zTXt_SUPPORTED) +# define PNG_WRITE_TEXT_SUPPORTED +# ifndef PNG_TEXT_SUPPORTED +# define PNG_TEXT_SUPPORTED +# endif +#endif + +#ifdef PNG_WRITE_tIME_SUPPORTED +# ifndef PNG_NO_CONVERT_tIME +# ifndef _WIN32_WCE +/* The "tm" structure is not supported on WindowsCE */ +# ifndef PNG_CONVERT_tIME_SUPPORTED +# define PNG_CONVERT_tIME_SUPPORTED +# endif +# endif +# endif +#endif + +#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ + +#if !defined(PNG_NO_WRITE_FILTER) && !defined(PNG_WRITE_FILTER_SUPPORTED) +# define PNG_WRITE_FILTER_SUPPORTED +#endif + +#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS +# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_UNKNOWN_CHUNKS_SUPPORTED +# endif +#endif + +#ifndef PNG_NO_HANDLE_AS_UNKNOWN +# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# endif +#endif +#endif /* PNG_WRITE_SUPPORTED */ + +/* Turn this off to disable png_read_png() and + * png_write_png() and leave the row_pointers member + * out of the info structure. + */ +#ifndef PNG_NO_INFO_IMAGE +# define PNG_INFO_IMAGE_SUPPORTED +#endif + +/* Need the time information for converting tIME chunks */ +#ifdef PNG_CONVERT_tIME_SUPPORTED + /* "time.h" functions are not supported on WindowsCE */ +# include <time.h> +#endif + +/* Some typedefs to get us started. These should be safe on most of the + * common platforms. The typedefs should be at least as large as the + * numbers suggest (a png_uint_32 must be at least 32 bits long), but they + * don't have to be exactly that size. Some compilers dislike passing + * unsigned shorts as function parameters, so you may be better off using + * unsigned int for png_uint_16. Likewise, for 64-bit systems, you may + * want to have unsigned int for png_uint_32 instead of unsigned long. + */ + +typedef unsigned long png_uint_32; +typedef long png_int_32; +typedef unsigned short png_uint_16; +typedef short png_int_16; +typedef unsigned char png_byte; + +/* This is usually size_t. It is typedef'ed just in case you need it to + change (I'm not sure if you will or not, so I thought I'd be safe) */ +#ifdef PNG_SIZE_T + typedef PNG_SIZE_T png_size_t; +# define png_sizeof(x) png_convert_size(sizeof(x)) +#else + typedef size_t png_size_t; +# define png_sizeof(x) sizeof(x) +#endif + +/* The following is needed for medium model support. It cannot be in the + * PNG_INTERNAL section. Needs modification for other compilers besides + * MSC. Model independent support declares all arrays and pointers to be + * large using the far keyword. The zlib version used must also support + * model independent data. As of version zlib 1.0.4, the necessary changes + * have been made in zlib. The USE_FAR_KEYWORD define triggers other + * changes that are needed. (Tim Wegner) + */ + +/* Separate compiler dependencies (problem here is that zlib.h always + defines FAR. (SJT) */ +#ifdef __BORLANDC__ +# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) +# define LDATA 1 +# else +# define LDATA 0 +# endif + /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ +# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) +# define PNG_MAX_MALLOC_64K +# if (LDATA != 1) +# ifndef FAR +# define FAR __far +# endif +# define USE_FAR_KEYWORD +# endif /* LDATA != 1 */ + /* Possibly useful for moving data out of default segment. + * Uncomment it if you want. Could also define FARDATA as + * const if your compiler supports it. (SJT) +# define FARDATA FAR + */ +# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ +#endif /* __BORLANDC__ */ + + +/* Suggest testing for specific compiler first before testing for + * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, + * making reliance oncertain keywords suspect. (SJT) + */ + +/* MSC Medium model */ +#ifdef FAR +# ifdef M_I86MM +# define USE_FAR_KEYWORD +# define FARDATA FAR +# include <dos.h> +# endif +#endif + +/* SJT: default case */ +#ifndef FAR +# define FAR +#endif + +/* At this point FAR is always defined */ +#ifndef FARDATA +# define FARDATA +#endif + +/* Typedef for floating-point numbers that are converted + to fixed-point with a multiple of 100,000, e.g., int_gamma */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void FAR * png_voidp; +typedef png_byte FAR * png_bytep; +typedef png_uint_32 FAR * png_uint_32p; +typedef png_int_32 FAR * png_int_32p; +typedef png_uint_16 FAR * png_uint_16p; +typedef png_int_16 FAR * png_int_16p; +typedef PNG_CONST char FAR * png_const_charp; +typedef char FAR * png_charp; +typedef png_fixed_point FAR * png_fixed_point_p; + +#ifndef PNG_NO_STDIO +#ifdef _WIN32_WCE +typedef HANDLE png_FILE_p; +#else +typedef FILE * png_FILE_p; +#endif +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * png_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte FAR * FAR * png_bytepp; +typedef png_uint_32 FAR * FAR * png_uint_32pp; +typedef png_int_32 FAR * FAR * png_int_32pp; +typedef png_uint_16 FAR * FAR * png_uint_16pp; +typedef png_int_16 FAR * FAR * png_int_16pp; +typedef PNG_CONST char FAR * FAR * png_const_charpp; +typedef char FAR * FAR * png_charpp; +typedef png_fixed_point FAR * FAR * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * FAR * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char FAR * FAR * FAR * png_charppp; + +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +/* SPC - Is this stuff deprecated? */ +/* It'll be removed as of libpng-1.4.0 - GR-P */ +/* libpng typedefs for types in zlib. If zlib changes + * or another compression library is used, then change these. + * Eliminates need to change all the source files. + */ +typedef charf * png_zcharp; +typedef charf * FAR * png_zcharpp; +typedef z_stream FAR * png_zstreamp; +#endif /* (PNG_1_0_X) || defined(PNG_1_2_X) */ + +/* + * Define PNG_BUILD_DLL if the module being built is a Windows + * LIBPNG DLL. + * + * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL. + * It is equivalent to Microsoft predefined macro _DLL that is + * automatically defined when you compile using the share + * version of the CRT (C Run-Time library) + * + * The cygwin mods make this behavior a little different: + * Define PNG_BUILD_DLL if you are building a dll for use with cygwin + * Define PNG_STATIC if you are building a static library for use with cygwin, + * -or- if you are building an application that you want to link to the + * static library. + * PNG_USE_DLL is defined by default (no user action needed) unless one of + * the other flags is defined. + */ + +#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL)) +# define PNG_DLL +#endif +/* If CYGWIN, then disallow GLOBAL ARRAYS unless building a static lib. + * When building a static lib, default to no GLOBAL ARRAYS, but allow + * command-line override + */ +#ifdef __CYGWIN__ +# ifndef PNG_STATIC +# ifdef PNG_USE_GLOBAL_ARRAYS +# undef PNG_USE_GLOBAL_ARRAYS +# endif +# ifndef PNG_USE_LOCAL_ARRAYS +# define PNG_USE_LOCAL_ARRAYS +# endif +# else +# if defined(PNG_USE_LOCAL_ARRAYS) || defined(PNG_NO_GLOBAL_ARRAYS) +# ifdef PNG_USE_GLOBAL_ARRAYS +# undef PNG_USE_GLOBAL_ARRAYS +# endif +# endif +# endif +# if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS) +# define PNG_USE_LOCAL_ARRAYS +# endif +#endif + +/* Do not use global arrays (helps with building DLL's) + * They are no longer used in libpng itself, since version 1.0.5c, + * but might be required for some pre-1.0.5c applications. + */ +#if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS) +# if defined(PNG_NO_GLOBAL_ARRAYS) || \ + (defined(__GNUC__) && defined(PNG_DLL)) || defined(_MSC_VER) +# define PNG_USE_LOCAL_ARRAYS +# else +# define PNG_USE_GLOBAL_ARRAYS +# endif +#endif + +#ifdef __CYGWIN__ +# undef PNGAPI +# define PNGAPI __cdecl +# undef PNG_IMPEXP +# define PNG_IMPEXP +#endif + +/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall", + * you may get warnings regarding the linkage of png_zalloc and png_zfree. + * Don't ignore those warnings; you must also reset the default calling + * convention in your compiler to match your PNGAPI, and you must build + * zlib and your applications the same way you build libpng. + */ + +#if defined(__MINGW32__) && !defined(PNG_MODULEDEF) +# ifndef PNG_NO_MODULEDEF +# define PNG_NO_MODULEDEF +# endif +#endif + +#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF) +# define PNG_IMPEXP +#endif + +#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \ + (( defined(_Windows) || defined(_WINDOWS) || \ + defined(WIN32) || defined(_WIN32) || defined(__WIN32__) )) + +# ifndef PNGAPI +# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) +# define PNGAPI __cdecl +# else +# define PNGAPI _cdecl +# endif +# endif + +# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \ + 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */) +# define PNG_IMPEXP +# endif + +# ifndef PNG_IMPEXP + +# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol +# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol + + /* Borland/Microsoft */ +# if defined(_MSC_VER) || defined(__BORLANDC__) +# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500) +# define PNG_EXPORT PNG_EXPORT_TYPE1 +# else +# define PNG_EXPORT PNG_EXPORT_TYPE2 +# ifdef PNG_BUILD_DLL +# define PNG_IMPEXP __export +# else +# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in + VC++ */ +# endif /* Exists in Borland C++ for + C++ classes (== huge) */ +# endif +# endif + +# ifndef PNG_IMPEXP +# ifdef PNG_BUILD_DLL +# define PNG_IMPEXP __declspec(dllexport) +# else +# define PNG_IMPEXP __declspec(dllimport) +# endif +# endif +# endif /* PNG_IMPEXP */ +#else /* !(DLL || non-cygwin WINDOWS) */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# ifndef PNGAPI +# define PNGAPI _System +# endif +# else +# if 0 /* ... other platforms, with other meanings */ +# endif +# endif +#endif + +#ifndef PNGAPI +# define PNGAPI +#endif +#ifndef PNG_IMPEXP +# define PNG_IMPEXP +#endif + +#ifdef PNG_BUILDSYMS +# ifndef PNG_EXPORT +# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END +# endif +# ifdef PNG_USE_GLOBAL_ARRAYS +# ifndef PNG_EXPORT_VAR +# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT +# endif +# endif +#endif + +#ifndef PNG_EXPORT +# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol +#endif + +#ifdef PNG_USE_GLOBAL_ARRAYS +# ifndef PNG_EXPORT_VAR +# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. + */ +# ifdef __GNUC__ +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif + + /* This specifically protects structure members that should only be + * accessed from within the library, therefore should be empty during + * a library build. + */ +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif /* PNG_PRIVATE */ +# endif /* __GNUC__ */ +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif + +/* User may want to use these so they are not in PNG_INTERNAL. Any library + * functions that are passed far data must be model independent. + */ + +#ifndef PNG_ABORT +# define PNG_ABORT() abort() +#endif + +#ifdef PNG_SETJMP_SUPPORTED +# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_SETJMP_NOT_SUPPORTED) +#endif + +#ifdef USE_FAR_KEYWORD /* memory model independent fns */ +/* Use this to make far-to-near assignments */ +# define CHECK 1 +# define NOCHECK 0 +# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) +# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) +# define png_snprintf _fsnprintf /* Added to v 1.2.19 */ +# define png_strlen _fstrlen +# define png_memcmp _fmemcmp /* SJT: added */ +# define png_memcpy _fmemcpy +# define png_memset _fmemset +#else /* Use the usual functions */ +# define CVT_PTR(ptr) (ptr) +# define CVT_PTR_NOCHECK(ptr) (ptr) +# ifndef PNG_NO_SNPRINTF +# ifdef _MSC_VER +# define png_snprintf _snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 _snprintf +# define png_snprintf6 _snprintf +# else +# define png_snprintf snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 snprintf +# define png_snprintf6 snprintf +# endif +# else + /* You don't have or don't want to use snprintf(). Caution: Using + * sprintf instead of snprintf exposes your application to accidental + * or malevolent buffer overflows. If you don't have snprintf() + * as a general rule you should provide one (you can get one from + * Portable OpenSSH). + */ +# define png_snprintf(s1,n,fmt,x1) sprintf(s1,fmt,x1) +# define png_snprintf2(s1,n,fmt,x1,x2) sprintf(s1,fmt,x1,x2) +# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ + sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) +# endif +# define png_strlen strlen +# define png_memcmp memcmp /* SJT: added */ +# define png_memcpy memcpy +# define png_memset memset +#endif +/* End of memory model independent support */ + +/* Just a little check that someone hasn't tried to define something + * contradictory. + */ +#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) +# undef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 65536L +#endif + +/* Added at libpng-1.2.8 */ +#endif /* PNG_VERSION_INFO_ONLY */ + +#endif /* PNGCONF_H */ diff --git a/lib/linux/include/steam/isteamapplist.h b/lib/linux/include/steam/isteamapplist.h new file mode 100644 index 0000000..d678909 --- /dev/null +++ b/lib/linux/include/steam/isteamapplist.h @@ -0,0 +1,63 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPLIST_H +#define ISTEAMAPPLIST_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamtypes.h" + +//----------------------------------------------------------------------------- +// Purpose: This is a restricted interface that can only be used by previously approved apps, +// contact your Steam Account Manager if you believe you need access to this API. +// This interface lets you detect installed apps for the local Steam client, useful for debugging tools +// to offer lists of apps to debug via Steam. +//----------------------------------------------------------------------------- +class ISteamAppList +{ +public: + virtual uint32 GetNumInstalledApps() = 0; + virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; + + virtual int GetAppName( AppId_t nAppID, OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found + virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found + + virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game +}; + +#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when a new app is installed +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when an app is uninstalled +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) +#endif // ISTEAMAPPLIST_H diff --git a/lib/linux/include/steam/isteamapps.h b/lib/linux/include/steam/isteamapps.h new file mode 100644 index 0000000..9a97b4a --- /dev/null +++ b/lib/linux/include/steam/isteamapps.h @@ -0,0 +1,176 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPS_H +#define ISTEAMAPPS_H +#ifdef _WIN32 +#pragma once +#endif + +const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key + + +//----------------------------------------------------------------------------- +// Purpose: interface to app data +//----------------------------------------------------------------------------- +class ISteamApps +{ +public: + virtual bool BIsSubscribed() = 0; + virtual bool BIsLowViolence() = 0; + virtual bool BIsCybercafe() = 0; + virtual bool BIsVACBanned() = 0; + virtual const char *GetCurrentGameLanguage() = 0; + virtual const char *GetAvailableGameLanguages() = 0; + + // only use this member if you need to check ownership of another game related to yours, a demo for example + virtual bool BIsSubscribedApp( AppId_t appID ) = 0; + + // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed + virtual bool BIsDlcInstalled( AppId_t appID ) = 0; + + // returns the Unix time of the purchase of the app + virtual uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID ) = 0; + + // Checks if the user is subscribed to the current app through a free weekend + // This function will return false for users who have a retail or other type of license + // Before using, please ask your Valve technical contact how to package and secure your free weekened + virtual bool BIsSubscribedFromFreeWeekend() = 0; + + // Returns the number of DLC pieces for the running app + virtual int GetDLCCount() = 0; + + // Returns metadata for DLC by index, of range [0, GetDLCCount()] + virtual bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize ) = 0; + + // Install/Uninstall control for optional DLC + virtual void InstallDLC( AppId_t nAppID ) = 0; + virtual void UninstallDLC( AppId_t nAppID ) = 0; + + // Request legacy cd-key for yourself or owned DLC. If you are interested in this + // data then make sure you provide us with a list of valid keys to be distributed + // to users when they purchase the game, before the game ships. + // You'll receive an AppProofOfPurchaseKeyResponse_t callback when + // the key is available (which may be immediately). + virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0; + + virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch + virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing + virtual uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots ) = 0; // return installed depots in mount order + + // returns current app install folder for AppID, returns folder name length + virtual uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize ) = 0; + virtual bool BIsAppInstalled( AppId_t appID ) = 0; // returns true if that app is installed (not necessarily owned) + + virtual CSteamID GetAppOwner() = 0; // returns the SteamID of the original owner. If different from current user, it's borrowed + + // Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc. + // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. + // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + // but it is advised that you not param names beginning with an underscore for your own features. + virtual const char *GetLaunchQueryParam( const char *pchKey ) = 0; + + // get download progress for optional DLC + virtual bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // return the buildid of this app, may change at any time based on backend updates to the game + virtual int GetAppBuildId() = 0; + + // Request all proof of purchase keys for the calling appid and asociated DLC. + // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with + // appropriate appid values, ending with a final callback where the m_nAppId + // member is k_uAppIdInvalid (zero). + virtual void RequestAllProofOfPurchaseKeys() = 0; + + CALL_RESULT( FileDetailsResult_t ) + virtual SteamAPICall_t GetFileDetails( const char* pszFileName ) = 0; +}; + +#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: posted after the user gains ownership of DLC & that DLC is installed +//----------------------------------------------------------------------------- +struct DlcInstalled_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 5 }; + AppId_t m_nAppID; // AppID of the DLC +}; + + +//----------------------------------------------------------------------------- +// Purpose: possible results when registering an activation code +//----------------------------------------------------------------------------- +enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RegisterActivationCode() +//----------------------------------------------------------------------------- +struct RegisterActivationCodeResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; + ERegisterActivationCodeResult m_eResult; + uint32 m_unPackageRegistered; // package that was registered. Only set on success +}; + + +//--------------------------------------------------------------------------------- +// Purpose: posted after the user gains executes a steam url with query parameters +// such as steam://run/<appid>//?param1=value1;param2=value2;param3=value3; etc +// while the game is already running. The new params can be queried +// with GetLaunchQueryParam. +//--------------------------------------------------------------------------------- +struct NewLaunchQueryParameters_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys +// for supporting third-party CD keys, or other proof-of-purchase systems. +//----------------------------------------------------------------------------- +struct AppProofOfPurchaseKeyResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; + EResult m_eResult; + uint32 m_nAppID; + uint32 m_cchKeyLength; + char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to GetFileDetails +//----------------------------------------------------------------------------- +struct FileDetailsResult_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 23 }; + EResult m_eResult; + uint64 m_ulFileSize; // original file size in bytes + uint8 m_FileSHA[20]; // original file SHA1 hash + uint32 m_unFlags; // +}; + + +#pragma pack( pop ) +#endif // ISTEAMAPPS_H diff --git a/lib/linux/include/steam/isteamappticket.h b/lib/linux/include/steam/isteamappticket.h new file mode 100644 index 0000000..21fb9e1 --- /dev/null +++ b/lib/linux/include/steam/isteamappticket.h @@ -0,0 +1,28 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: a private, but well versioned, interface to get at critical bits +// of a steam3 appticket - consumed by the simple drm wrapper to let it +// ask about ownership with greater confidence. +// +//============================================================================= + +#ifndef ISTEAMAPPTICKET_H +#define ISTEAMAPPTICKET_H +#pragma once + +//----------------------------------------------------------------------------- +// Purpose: hand out a reasonable "future proof" view of an app ownership ticket +// the raw (signed) buffer, and indices into that buffer where the appid and +// steamid are located. the sizes of the appid and steamid are implicit in +// (each version of) the interface - currently uin32 appid and uint64 steamid +//----------------------------------------------------------------------------- +class ISteamAppTicket +{ +public: + virtual uint32 GetAppOwnershipTicketData( uint32 nAppID, void *pvBuffer, uint32 cbBufferLength, uint32 *piAppId, uint32 *piSteamId, uint32 *piSignature, uint32 *pcbSignature ) = 0; +}; + +#define STEAMAPPTICKET_INTERFACE_VERSION "STEAMAPPTICKET_INTERFACE_VERSION001" + + +#endif // ISTEAMAPPTICKET_H diff --git a/lib/linux/include/steam/isteamclient.h b/lib/linux/include/steam/isteamclient.h new file mode 100644 index 0000000..45d707d --- /dev/null +++ b/lib/linux/include/steam/isteamclient.h @@ -0,0 +1,520 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: Main interface for loading and accessing Steamworks API's from the +// Steam client. +// For most uses, this code is wrapped inside of SteamAPI_Init() +//============================================================================= + +#ifndef ISTEAMCLIENT_H +#define ISTEAMCLIENT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + +// Define compile time assert macros to let us validate the structure sizes. +#define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; + +#ifndef REFERENCE +#define REFERENCE(arg) ((void)arg) +#endif + +#if defined(STEAM_API_EXPORTS) && !defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) __VA_ARGS__ +#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) +#else +#define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: +#endif + +#if defined(__linux__) || defined(__APPLE__) +// The 32-bit version of gcc has the alignment requirement for uint64 and double set to +// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. +// The 64-bit version of gcc has the alignment requirement for these types set to +// 8 meaning that unless we use #pragma pack(4) our structures will get bigger. +// The 64-bit structure packing has to match the 32-bit structure packing for each platform. +#define VALVE_CALLBACK_PACK_SMALL +#else +#define VALVE_CALLBACK_PACK_LARGE +#endif + +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error ??? +#endif + +typedef struct ValvePackingSentinel_t +{ + uint32 m_u32; + uint64 m_u64; + uint16 m_u16; + double m_d; +} ValvePackingSentinel_t; + +#pragma pack( pop ) + + +#if defined(VALVE_CALLBACK_PACK_SMALL) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 ) +#elif defined(VALVE_CALLBACK_PACK_LARGE) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 ) +#else +#error ??? +#endif + + +// handle to a communication pipe to the Steam client +typedef int32 HSteamPipe; +// handle to single instance of a steam user +typedef int32 HSteamUser; +// function prototype +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); +extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); +#if defined( __SNC__ ) + #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor +#endif + +// interface predec +class ISteamUser; +class ISteamGameServer; +class ISteamFriends; +class ISteamUtils; +class ISteamMatchmaking; +class ISteamContentServer; +class ISteamMatchmakingServers; +class ISteamUserStats; +class ISteamApps; +class ISteamNetworking; +class ISteamRemoteStorage; +class ISteamScreenshots; +class ISteamMusic; +class ISteamMusicRemote; +class ISteamGameServerStats; +class ISteamPS3OverlayRender; +class ISteamHTTP; +class ISteamUnifiedMessages; +class ISteamController; +class ISteamUGC; +class ISteamAppList; +class ISteamHTMLSurface; +class ISteamInventory; +class ISteamVideo; + +//----------------------------------------------------------------------------- +// Purpose: Interface to creating a new steam instance, or to +// connect to an existing steam instance, whether it's in a +// different process or is local. +// +// For most scenarios this is all handled automatically via SteamAPI_Init(). +// You'll only need these APIs if you have a more complex versioning scheme, +// or if you want to implement a multiplexed gameserver where a single process +// is handling multiple games at once with independent gameserver SteamIDs. +//----------------------------------------------------------------------------- +class ISteamClient +{ +public: + // Creates a communication pipe to the Steam client. + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamPipe CreateSteamPipe() = 0; + + // Releases a previously created communications pipe + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; + + // connects to an existing global user, failing if none exists + // used by the game to coordinate with the steamUI + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; + + // used by game servers, create a steam user that won't be shared with anyone else + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0; + + // removes an allocated user + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0; + + // retrieves the ISteamUser interface associated with the handle + virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // retrieves the ISteamGameServer interface associated with the handle + virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // set the local IP and Port to bind to + // this must be set before CreateLocalUser() + virtual void SetLocalIPBinding( uint32 unIP, uint16 usPort ) = 0; + + // returns the ISteamFriends interface + virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUtils interface + virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmaking interface + virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmakingServers interface + virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the a generic interface + virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUserStats interface + virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamGameServerStats interface + virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns apps interface + virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // networking + virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // remote storage + virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // user screenshots + virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message. + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Trigger global shutdown for the DLL + virtual bool BShutdownIfAllPipesClosed() = 0; + + // Expose HTTP interface + virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUnifiedMessages interface + virtual ISteamUnifiedMessages *GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamController interface + virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUGC interface + virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns app list interface, only available on specially registered apps + virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player + virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player Remote + virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // html page display + virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // Helper functions for internal Steam usage + STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) + + // inventory + virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Video + virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; +}; + + +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient017" + +//----------------------------------------------------------------------------- +// Purpose: Base values for callback identifiers, each callback must +// have a unique ID. +//----------------------------------------------------------------------------- +enum { k_iSteamUserCallbacks = 100 }; +enum { k_iSteamGameServerCallbacks = 200 }; +enum { k_iSteamFriendsCallbacks = 300 }; +enum { k_iSteamBillingCallbacks = 400 }; +enum { k_iSteamMatchmakingCallbacks = 500 }; +enum { k_iSteamContentServerCallbacks = 600 }; +enum { k_iSteamUtilsCallbacks = 700 }; +enum { k_iClientFriendsCallbacks = 800 }; +enum { k_iClientUserCallbacks = 900 }; +enum { k_iSteamAppsCallbacks = 1000 }; +enum { k_iSteamUserStatsCallbacks = 1100 }; +enum { k_iSteamNetworkingCallbacks = 1200 }; +enum { k_iClientRemoteStorageCallbacks = 1300 }; +enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamGameServerItemsCallbacks = 1500 }; +enum { k_iClientUtilsCallbacks = 1600 }; +enum { k_iSteamGameCoordinatorCallbacks = 1700 }; +enum { k_iSteamGameServerStatsCallbacks = 1800 }; +enum { k_iSteam2AsyncCallbacks = 1900 }; +enum { k_iSteamGameStatsCallbacks = 2000 }; +enum { k_iClientHTTPCallbacks = 2100 }; +enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamScreenshotsCallbacks = 2300 }; +enum { k_iClientAudioCallbacks = 2400 }; +enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +enum { k_iSteamStreamLauncherCallbacks = 2600 }; +enum { k_iClientControllerCallbacks = 2700 }; +enum { k_iSteamControllerCallbacks = 2800 }; +enum { k_iClientParentalSettingsCallbacks = 2900 }; +enum { k_iClientDeviceAuthCallbacks = 3000 }; +enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; +enum { k_iClientMusicCallbacks = 3200 }; +enum { k_iClientRemoteClientManagerCallbacks = 3300 }; +enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamStreamClientCallbacks = 3500 }; +enum { k_IClientProductBuilderCallbacks = 3600 }; +enum { k_iClientShortcutsCallbacks = 3700 }; +enum { k_iClientRemoteControlManagerCallbacks = 3800 }; +enum { k_iSteamAppListCallbacks = 3900 }; +enum { k_iSteamMusicCallbacks = 4000 }; +enum { k_iSteamMusicRemoteCallbacks = 4100 }; +enum { k_iClientVRCallbacks = 4200 }; +enum { k_iClientGameNotificationCallbacks = 4300 }; +enum { k_iSteamGameNotificationCallbacks = 4400 }; +enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; +enum { k_iClientVideoCallbacks = 4600 }; +enum { k_iClientInventoryCallbacks = 4700 }; +enum { k_iClientBluetoothManagerCallbacks = 4800 }; + +//----------------------------------------------------------------------------- +// The CALLBACK macros are for client side callback logging enabled with +// log_callback <first callnbackID> <last callbackID> +// Do not change any of these. +//----------------------------------------------------------------------------- + +#ifdef STEAM_CALLBACK_INSPECTION_ENABLED + +#define DEFINE_CALLBACK( callbackname, callbackid ) \ +struct callbackname { \ + typedef callbackname SteamCallback_t; \ + enum { k_iCallback = callbackid }; \ + static callbackname *GetNullPointer() { return 0; } \ + static const char *GetCallbackName() { return #callbackname; } \ + static uint32 GetCallbackID() { return callbackname::k_iCallback; } + +#define CALLBACK_MEMBER( varidx, vartype, varname ) \ + public: vartype varname ; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname; \ + varSize = sizeof( vartype ); \ + varCount = 1; \ + *pszName = #varname; *pszType = #vartype; } + +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) \ + public: vartype varname [ varcount ]; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname[0]; \ + varSize = sizeof( vartype ); \ + varCount = varcount; \ + *pszName = #varname; *pszType = #vartype; } + + +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) \ + static uint32 GetNumMemberVariables() { return numvars; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + switch ( index ) { default : return false; + + +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) case varidx : GetMemberVar_##varidx( varOffset, varSize, varCount, pszName, pszType ); return true; + +#define END_CALLBACK_INTERNAL_END() }; } }; + +#define END_DEFINE_CALLBACK_0() \ + static uint32 GetNumMemberVariables() { return 0; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { REFERENCE( pszType ); REFERENCE( pszName ); REFERENCE( varCount ); REFERENCE( varSize ); REFERENCE( varOffset ); REFERENCE( index ); return false; } \ + }; + +#else + +#define DEFINE_CALLBACK( callbackname, callbackid ) struct callbackname { typedef callbackname SteamCallback_t; enum { k_iCallback = callbackid }; +#define CALLBACK_MEMBER( varidx, vartype, varname ) public: vartype varname ; +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) public: vartype varname [ varcount ]; +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) +#define END_CALLBACK_INTERNAL_END() }; +#define END_DEFINE_CALLBACK_0() }; + +#endif + +#define END_DEFINE_CALLBACK_1() \ + END_CALLBACK_INTERNAL_BEGIN( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_2() \ + END_CALLBACK_INTERNAL_BEGIN( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_3() \ + END_CALLBACK_INTERNAL_BEGIN( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_4() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_5() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_END() + + +#define END_DEFINE_CALLBACK_6() \ + END_CALLBACK_INTERNAL_BEGIN( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_7() \ + END_CALLBACK_INTERNAL_BEGIN( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_8() \ + END_CALLBACK_INTERNAL_BEGIN( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_9() \ + END_CALLBACK_INTERNAL_BEGIN( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_10() \ + END_CALLBACK_INTERNAL_BEGIN( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_11() \ + END_CALLBACK_INTERNAL_BEGIN( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_12() \ + END_CALLBACK_INTERNAL_BEGIN( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_13() \ + END_CALLBACK_INTERNAL_BEGIN( 13 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_14() \ + END_CALLBACK_INTERNAL_BEGIN( 14 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 13 ) \ + END_CALLBACK_INTERNAL_END() + +#endif // ISTEAMCLIENT_H diff --git a/lib/linux/include/steam/isteamcontroller.h b/lib/linux/include/steam/isteamcontroller.h new file mode 100644 index 0000000..68f7af6 --- /dev/null +++ b/lib/linux/include/steam/isteamcontroller.h @@ -0,0 +1,251 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to valve controller +// +//============================================================================= + +#ifndef ISTEAMCONTROLLER_H +#define ISTEAMCONTROLLER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define STEAM_CONTROLLER_MAX_COUNT 16 + +#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 + +#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 + +#define STEAM_CONTROLLER_MAX_ORIGINS 8 + +// When sending an option to a specific controller handle, you can send to all controllers via this command +#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX + +#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f +#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f + +enum ESteamControllerPad +{ + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right +}; + +enum EControllerSource +{ + k_EControllerSource_None, + k_EControllerSource_LeftTrackpad, + k_EControllerSource_RightTrackpad, + k_EControllerSource_Joystick, + k_EControllerSource_ABXY, + k_EControllerSource_Switch, + k_EControllerSource_LeftTrigger, + k_EControllerSource_RightTrigger, + k_EControllerSource_Gyro, + k_EControllerSource_Count +}; + +enum EControllerSourceMode +{ + k_EControllerSourceMode_None, + k_EControllerSourceMode_Dpad, + k_EControllerSourceMode_Buttons, + k_EControllerSourceMode_FourButtons, + k_EControllerSourceMode_AbsoluteMouse, + k_EControllerSourceMode_RelativeMouse, + k_EControllerSourceMode_JoystickMove, + k_EControllerSourceMode_JoystickCamera, + k_EControllerSourceMode_ScrollWheel, + k_EControllerSourceMode_Trigger, + k_EControllerSourceMode_TouchMenu, + k_EControllerSourceMode_MouseJoystick, + k_EControllerSourceMode_MouseRegion, + k_EControllerSourceMode_RadialMenu, + k_EControllerSourceMode_Switches +}; + +enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None, + k_EControllerActionOrigin_A, + k_EControllerActionOrigin_B, + k_EControllerActionOrigin_X, + k_EControllerActionOrigin_Y, + k_EControllerActionOrigin_LeftBumper, + k_EControllerActionOrigin_RightBumper, + k_EControllerActionOrigin_LeftGrip, + k_EControllerActionOrigin_RightGrip, + k_EControllerActionOrigin_Start, + k_EControllerActionOrigin_Back, + k_EControllerActionOrigin_LeftPad_Touch, + k_EControllerActionOrigin_LeftPad_Swipe, + k_EControllerActionOrigin_LeftPad_Click, + k_EControllerActionOrigin_LeftPad_DPadNorth, + k_EControllerActionOrigin_LeftPad_DPadSouth, + k_EControllerActionOrigin_LeftPad_DPadWest, + k_EControllerActionOrigin_LeftPad_DPadEast, + k_EControllerActionOrigin_RightPad_Touch, + k_EControllerActionOrigin_RightPad_Swipe, + k_EControllerActionOrigin_RightPad_Click, + k_EControllerActionOrigin_RightPad_DPadNorth, + k_EControllerActionOrigin_RightPad_DPadSouth, + k_EControllerActionOrigin_RightPad_DPadWest, + k_EControllerActionOrigin_RightPad_DPadEast, + k_EControllerActionOrigin_LeftTrigger_Pull, + k_EControllerActionOrigin_LeftTrigger_Click, + k_EControllerActionOrigin_RightTrigger_Pull, + k_EControllerActionOrigin_RightTrigger_Click, + k_EControllerActionOrigin_LeftStick_Move, + k_EControllerActionOrigin_LeftStick_Click, + k_EControllerActionOrigin_LeftStick_DPadNorth, + k_EControllerActionOrigin_LeftStick_DPadSouth, + k_EControllerActionOrigin_LeftStick_DPadWest, + k_EControllerActionOrigin_LeftStick_DPadEast, + k_EControllerActionOrigin_Gyro_Move, + k_EControllerActionOrigin_Gyro_Pitch, + k_EControllerActionOrigin_Gyro_Yaw, + k_EControllerActionOrigin_Gyro_Roll, + + k_EControllerActionOrigin_Count +}; + +// ControllerHandle_t is used to refer to a specific controller. +// This handle will consistently identify a controller, even if it is disconnected and re-connected +typedef uint64 ControllerHandle_t; + + +// These handles are used to refer to a specific in-game action or action set +// All action handles should be queried during initialization for performance reasons +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; + +#pragma pack( push, 1 ) + +struct ControllerAnalogActionData_t +{ + // Type of data coming from this action, this will match what got specified in the action set + EControllerSourceMode eMode; + + // The current state of this action; will be delta updates for mouse actions + float x, y; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerDigitalActionData_t +{ + // The current state of this action; will be true if currently pressed + bool bState; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerMotionData_t +{ + // Sensor-fused absolute rotation; will drift in heading + float rotQuatX; + float rotQuatY; + float rotQuatZ; + float rotQuatW; + + // Positional acceleration + float posAccelX; + float posAccelY; + float posAccelZ; + + // Angular velocity + float rotVelX; + float rotVelY; + float rotVelZ; +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Native Steam controller support API +//----------------------------------------------------------------------------- +class ISteamController +{ +public: + + // Init and Shutdown must be called when starting/ending use of this interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. + virtual void RunFrame() = 0; + + // Enumerate currently connected controllers + // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetConnectedControllers( ControllerHandle_t *handlesOut ) = 0; + + // Invokes the Steam overlay and brings up the binding screen + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; + + // ACTION SETS + // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; + + // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') + // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in + // your state loops, instead of trying to place it in all of your state transitions. + virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0; + virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0; + + // ACTIONS + // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of the supplied digital game action + virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0; + + // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) = 0; + + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of these supplied analog game action + virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0; + + // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) = 0; + + virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0; + + // Trigger a haptic pulse on a controller + virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + + // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. + // nFlags is currently unused and reserved for future use. + virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + + // Returns the associated gamepad index for the specified controller, if emulating a gamepad + virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; + + // Returns the associated controller handle for the specified emulated gamepad + virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; + + // Returns raw motion data from the specified controller + virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0; + + // Attempt to display origins of given action in the controller HUD, for the currently active action set + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; + virtual bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; +}; + +#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController004" + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/linux/include/steam/isteamfriends.h b/lib/linux/include/steam/isteamfriends.h new file mode 100644 index 0000000..8013356 --- /dev/null +++ b/lib/linux/include/steam/isteamfriends.h @@ -0,0 +1,636 @@ +//====== Copyright (C) 1996-2008, Valve Corporation, All rights reserved. ===== +// +// Purpose: interface to both friends list data and general information about users +// +//============================================================================= + +#ifndef ISTEAMFRIENDS_H +#define ISTEAMFRIENDS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamclientpublic.h" + + +//----------------------------------------------------------------------------- +// Purpose: set of relationships to other users +//----------------------------------------------------------------------------- +enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, // was used by the original implementation of the facebook linking feature, but now unused. + + // keep this updated + k_EFriendRelationshipMax = 8, +}; + +// maximum length of friend group name (not including terminating nul!) +const int k_cchMaxFriendsGroupName = 64; + +// maximum number of groups a single user is allowed +const int k_cFriendsGroupLimit = 100; + +// friends group identifier type +typedef int16 FriendsGroupID_t; + +// invalid friends group identifier constant +const FriendsGroupID_t k_FriendsGroupID_Invalid = -1; + +const int k_cEnumerateFollowersMax = 50; + + +//----------------------------------------------------------------------------- +// Purpose: list of states a friend can be in +//----------------------------------------------------------------------------- +enum EPersonaState +{ + k_EPersonaStateOffline = 0, // friend is not currently logged on + k_EPersonaStateOnline = 1, // friend is logged on + k_EPersonaStateBusy = 2, // user is on, but busy + k_EPersonaStateAway = 3, // auto-away feature + k_EPersonaStateSnooze = 4, // auto-away for a long time + k_EPersonaStateLookingToTrade = 5, // Online, trading + k_EPersonaStateLookingToPlay = 6, // Online, wanting to play + k_EPersonaStateMax, +}; + + +//----------------------------------------------------------------------------- +// Purpose: flags for enumerating friends list, or quickly checking a the relationship between users +//----------------------------------------------------------------------------- +enum EFriendFlags +{ + k_EFriendFlagNone = 0x00, + k_EFriendFlagBlocked = 0x01, + k_EFriendFlagFriendshipRequested = 0x02, + k_EFriendFlagImmediate = 0x04, // "regular" friend + k_EFriendFlagClanMember = 0x08, + k_EFriendFlagOnGameServer = 0x10, + // k_EFriendFlagHasPlayedWith = 0x20, // not currently used + // k_EFriendFlagFriendOfFriend = 0x40, // not currently used + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + k_EFriendFlagSuggested = 0x800, + k_EFriendFlagChatMember = 0x1000, + k_EFriendFlagAll = 0xFFFF, +}; + + +// friend game played information +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct FriendGameInfo_t +{ + CGameID m_gameID; + uint32 m_unGameIP; + uint16 m_usGamePort; + uint16 m_usQueryPort; + CSteamID m_steamIDLobby; +}; +#pragma pack( pop ) + +// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. +// The UTF-8 version has to be very generous to accomodate characters that get large when encoded +// in UTF-8. +enum +{ + k_cchPersonaNameMax = 128, + k_cwchPersonaNameMax = 32, +}; + +//----------------------------------------------------------------------------- +// Purpose: user restriction flags +//----------------------------------------------------------------------------- +enum EUserRestriction +{ + k_nUserRestrictionNone = 0, // no known chat/content restriction + k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) + k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat + k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat + k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat + k_nUserRestrictionRating = 16, // user is too young according to rating in current region + k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) + k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) +}; + +//----------------------------------------------------------------------------- +// Purpose: information about user sessions +//----------------------------------------------------------------------------- +struct FriendSessionStateInfo_t +{ + uint32 m_uiOnlineSessionInstances; + uint8 m_uiPublishedToFriendsSessionInstance; +}; + + + +// size limit on chat room or member metadata +const uint32 k_cubChatMetadataMax = 8192; + +// size limits on Rich Presence data +enum { k_cchMaxRichPresenceKeys = 20 }; +enum { k_cchMaxRichPresenceKeyLength = 64 }; +enum { k_cchMaxRichPresenceValueLength = 256 }; + +// These values are passed as parameters to the store +enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +}; + +//----------------------------------------------------------------------------- +// Purpose: interface to accessing information about individual users, +// that can be a friend, in a group, on a game server or in a lobby with the local user +//----------------------------------------------------------------------------- +class ISteamFriends +{ +public: + // returns the local players name - guaranteed to not be NULL. + // this is the same name as on the users community profile page + // this is stored in UTF-8 format + // like all the other interface functions that return a char *, it's important that this pointer is not saved + // off; it will eventually be free'd or re-allocated + virtual const char *GetPersonaName() = 0; + + // Sets the player name, stores it on the server and publishes the changes to all friends who are online. + // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. + // + // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. + // + // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted + // to change the name back, in addition to the SetPersonaNameResponse_t callback. + CALL_RESULT( SetPersonaNameResponse_t ) + virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0; + + // gets the status of the current user + virtual EPersonaState GetPersonaState() = 0; + + // friend iteration + // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria + // then GetFriendByIndex() can then be used to return the id's of each of those users + virtual int GetFriendCount( int iFriendFlags ) = 0; + + // returns the steamID of a user + // iFriend is a index of range [0, GetFriendCount()) + // iFriendsFlags must be the same value as used in GetFriendCount() + // the returned CSteamID can then be used by all the functions below to access details about the user + virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0; + + // returns a relationship to a user + virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0; + + // returns the current status of the specified user + // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user + virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0; + + // returns the name another user - guaranteed to not be NULL. + // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user + // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously + // + virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0; + + // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details + virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0; + // accesses old friends names - returns an empty string when their are no more items in the history + virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0; + // friends steam level + virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0; + + // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. + virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0; + + // friend grouping (tag) apis + // returns the number of friends groups + virtual int GetFriendsGroupCount() = 0; + // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) + virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0; + // returns the name for the given friends group (NULL in the case of invalid friends group IDs) + virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0; + // returns the number of members in a given friends group + virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0; + // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid + virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0; + + // returns true if the specified user meets any of the criteria specified in iFriendFlags + // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values + virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0; + + // clan (group) iteration and access functions + virtual int GetClanCount() = 0; + virtual CSteamID GetClanByIndex( int iClan ) = 0; + virtual const char *GetClanName( CSteamID steamIDClan ) = 0; + virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; + // returns the most recent information we have about what's happening in a clan + virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; + // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + virtual SteamAPICall_t DownloadClanActivityCounts( ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; + + // iterators for getting users in a chat room, lobby, game server or clan + // note that large clans that cannot be iterated by the local user + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + // steamIDSource can be the steamID of a group, game server, lobby or chat room + virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0; + virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0; + + // returns true if the local user can see that steamIDUser is a member or in steamIDSource + virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0; + + // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) + virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0; + + // activates the game overlay, with an optional dialog to open + // valid options are "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements" + virtual void ActivateGameOverlay( const char *pchDialog ) = 0; + + // activates game overlay to a specific place + // valid options are + // "steamid" - opens the overlay web browser to the specified user or groups profile + // "chat" - opens a chat window to the specified user, or joins the group chat + // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API + // "stats" - opens the overlay web browser to the specified user's stats + // "achievements" - opens the overlay web browser to the specified user's achievements + // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend + // "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend + // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite + // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite + virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0; + + // activates game overlay web browser directly to the specified URL + // full address with protocol type is required, e.g. http://www.steamgames.com/ + virtual void ActivateGameOverlayToWebPage( const char *pchURL ) = 0; + + // activates game overlay to store page for app + virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0; + + // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is + // in game + virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0; + + // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. + virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0; + + // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again + virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0; + + // requests information about a user - persona name & avatar + // if bRequireNameOnly is set, then the avatar of a user isn't downloaded + // - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them + // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved + // if returns false, it means that we already have all the details about that user, and functions can be called immediately + virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; + + // requests information about a clan officer list + // when complete, data is returned in ClanOfficerListResponse_t call result + // this makes available the calls below + // you can only ask about clans that a user is a member of + // note that this won't download avatars automatically; if you get an officer, + // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar + CALL_RESULT( ClanOfficerListResponse_t ) + virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0; + + // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed + + // returns the steamID of the clan owner + virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0; + // returns the number of officers in a clan (including the owner) + virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0; + // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) + virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0; + // if current user is chat restricted, he can't send or receive any text/voice chat messages. + // the user can't see custom avatars. But the user can be online and send/recv game invites. + // a chat restricted user can't add friends or join any groups. + virtual uint32 GetUserRestrictions() = 0; + + // Rich Presence data is automatically shared between friends who are in the same game + // Each user has a set of Key/Value pairs + // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength + // There are two magic keys: + // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list + // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + // GetFriendRichPresence() returns an empty string "" if no value is set + // SetRichPresence() to a NULL or an empty string deletes the key + // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() + // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) + virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0; + virtual void ClearRichPresence() = 0; + virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0; + virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0; + virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0; + // Requests rich presence for a specific user. + virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0; + + // rich invite support + // if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game + // if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string + // invites can only be sent to friends + virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; + + // recently-played-with friends iteration + // this iterates the entire list of users recently played with, across games + // GetFriendCoplayTime() returns as a unix time + virtual int GetCoplayFriendCount() = 0; + virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0; + virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0; + virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0; + + // chat interface for games + // this allows in-game access to group (clan) chats from in the game + // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay + // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat + CALL_RESULT( JoinClanChatRoomCompletionResult_t ) + virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0; + virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0; + virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0; + virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0; + virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0; + virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, OUT_STRUCT() CSteamID *psteamidChatter ) = 0; + virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0; + + // interact with the Steam (game overlay / desktop) + virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + + // peer-to-peer chat interception + // this is so you can show P2P chats inline in the game + virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0; + virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0; + virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // following apis + CALL_RESULT( FriendsGetFollowerCount_t ) + virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0; + CALL_RESULT( FriendsIsFollowing_t ) + virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0; + CALL_RESULT( FriendsEnumerateFollowingList_t ) + virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0; +}; + +#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends015" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a friends' status changes +//----------------------------------------------------------------------------- +struct PersonaStateChange_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 4 }; + + uint64 m_ulSteamID; // steamID of the friend who changed + int m_nChangeFlags; // what's changed +}; + + +// used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user +// these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend +enum EPersonaChange +{ + k_EPersonaChangeName = 0x0001, + k_EPersonaChangeStatus = 0x0002, + k_EPersonaChangeComeOnline = 0x0004, + k_EPersonaChangeGoneOffline = 0x0008, + k_EPersonaChangeGamePlayed = 0x0010, + k_EPersonaChangeGameServer = 0x0020, + k_EPersonaChangeAvatar = 0x0040, + k_EPersonaChangeJoinedSource= 0x0080, + k_EPersonaChangeLeftSource = 0x0100, + k_EPersonaChangeRelationshipChanged = 0x0200, + k_EPersonaChangeNameFirstSet = 0x0400, + k_EPersonaChangeFacebookInfo = 0x0800, + k_EPersonaChangeNickname = 0x1000, + k_EPersonaChangeSteamLevel = 0x2000, +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted when game overlay activates or deactivates +// the game can use this to be pause or resume single player games +//----------------------------------------------------------------------------- +struct GameOverlayActivated_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; + uint8 m_bActive; // true if it's just been activated, false otherwise +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a different game server from their friends list +// game client should attempt to connect to specified server when this is received +//----------------------------------------------------------------------------- +struct GameServerChangeRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 32 }; + char m_rgchServer[64]; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") + char m_rgchPassword[64]; // server password, if any +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a lobby from their friends list +// game client should attempt to connect to specified lobby when this is received +//----------------------------------------------------------------------------- +struct GameLobbyJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 33 }; + CSteamID m_steamIDLobby; + + // The friend they did the join via (will be invalid if not directly via a friend) + // + // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but + // the account type will be console user so you can tell at least that this was from a PSN friend + // rather than a Steam friend. + CSteamID m_steamIDFriend; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call +// if the image wasn't already available +//----------------------------------------------------------------------------- +struct AvatarImageLoaded_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 34 }; + CSteamID m_steamID; // steamid the avatar has been loaded for + int m_iImage; // the image index of the now loaded image + int m_iWide; // width of the loaded image + int m_iTall; // height of the loaded image +}; + + +//----------------------------------------------------------------------------- +// Purpose: marks the return of a request officer list call +//----------------------------------------------------------------------------- +struct ClanOfficerListResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 35 }; + CSteamID m_steamIDClan; + int m_cOfficers; + uint8 m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating updated data about friends rich presence information +//----------------------------------------------------------------------------- +struct FriendRichPresenceUpdate_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 36 }; + CSteamID m_steamIDFriend; // friend who's rich presence has changed + AppId_t m_nAppID; // the appID of the game (should always be the current game) +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a game from their friends list +// rich presence will have been set with the "connect" key which is set here +//----------------------------------------------------------------------------- +struct GameRichPresenceJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 37 }; + CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) + char m_rgchConnect[k_cchMaxRichPresenceValueLength]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received for a clan chat the game has joined +//----------------------------------------------------------------------------- +struct GameConnectedClanChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 38 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has joined a clan chat +//----------------------------------------------------------------------------- +struct GameConnectedChatJoin_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 39 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has left the chat we're in +//----------------------------------------------------------------------------- +struct GameConnectedChatLeave_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 40 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + bool m_bKicked; // true if admin kicked + bool m_bDropped; // true if Steam connection dropped +}; + + +//----------------------------------------------------------------------------- +// Purpose: a DownloadClanActivityCounts() call has finished +//----------------------------------------------------------------------------- +struct DownloadClanActivityCountsResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 41 }; + bool m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a JoinClanChatRoom() call has finished +//----------------------------------------------------------------------------- +struct JoinClanChatRoomCompletionResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 42 }; + CSteamID m_steamIDClanChat; + EChatRoomEnterResponse m_eChatRoomEnterResponse; +}; + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received from a user +//----------------------------------------------------------------------------- +struct GameConnectedFriendChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 43 }; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +struct FriendsGetFollowerCount_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 44 }; + EResult m_eResult; + CSteamID m_steamID; + int m_nCount; +}; + + +struct FriendsIsFollowing_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 45 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bIsFollowing; +}; + + +struct FriendsEnumerateFollowingList_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 46 }; + EResult m_eResult; + CSteamID m_rgSteamID[ k_cEnumerateFollowersMax ]; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; +}; + +//----------------------------------------------------------------------------- +// Purpose: reports the result of an attempt to change the user's persona name +//----------------------------------------------------------------------------- +struct SetPersonaNameResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 47 }; + + bool m_bSuccess; // true if name change succeeded completely. + bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) + EResult m_result; // detailed result code +}; + + +#pragma pack( pop ) + +#endif // ISTEAMFRIENDS_H diff --git a/lib/linux/include/steam/isteamgamecoordinator.h b/lib/linux/include/steam/isteamgamecoordinator.h new file mode 100644 index 0000000..5ab0637 --- /dev/null +++ b/lib/linux/include/steam/isteamgamecoordinator.h @@ -0,0 +1,75 @@ +//====== Copyright ©, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to the game coordinator for this application +// +//============================================================================= + +#ifndef ISTEAMGAMECOORDINATOR +#define ISTEAMGAMECOORDINATOR +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible return values from the ISteamGameCoordinator API +enum EGCResults +{ + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for sending and receiving messages from the Game Coordinator +// for this application +//----------------------------------------------------------------------------- +class ISteamGameCoordinator +{ +public: + + // sends a message to the Game Coordinator + virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0; + + // returns true if there is a message waiting from the game coordinator + virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0; + + // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or + // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. + // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned + // and the message remains at the head of the queue. + virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + +}; +#define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - A new message is available for reading from the message queue +struct GCMessageAvailable_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 }; + uint32 m_nMessageSize; +}; + +// callback notification - A message failed to make it to the GC. It may be down temporarily +struct GCMessageFailed_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMGAMECOORDINATOR diff --git a/lib/linux/include/steam/isteamgameserver.h b/lib/linux/include/steam/isteamgameserver.h new file mode 100644 index 0000000..e19f1dd --- /dev/null +++ b/lib/linux/include/steam/isteamgameserver.h @@ -0,0 +1,387 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam for game servers +// +//============================================================================= + +#ifndef ISTEAMGAMESERVER_H +#define ISTEAMGAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServer +{ +public: + +// +// Basic server data. These properties, if set, must be set before before calling LogOn. They +// may not be changed after logged in. +// + + /// This is called by SteamGameServer_Init, and you will usually not need to call it directly + virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; + + /// Game product identifier. This is currently used by the master server for version checking purposes. + /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. + virtual void SetProduct( const char *pszProduct ) = 0; + + /// Description of the game. This is a required field and is displayed in the steam server browser....for now. + /// This is a required field, but it will go away eventually, as the data should be determined from the AppID. + virtual void SetGameDescription( const char *pszGameDescription ) = 0; + + /// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning + /// this application is the original game, not a mod. + /// + /// @see k_cbMaxGameServerGameDir + virtual void SetModDir( const char *pszModDir ) = 0; + + /// Is this is a dedicated server? The default value is false. + virtual void SetDedicatedServer( bool bDedicated ) = 0; + +// +// Login +// + + /// Begin process to login to a persistent game server account + /// + /// You need to register for callbacks to determine the result of this operation. + /// @see SteamServersConnected_t + /// @see SteamServerConnectFailure_t + /// @see SteamServersDisconnected_t + virtual void LogOn( const char *pszToken ) = 0; + + /// Login to a generic, anonymous account. + /// + /// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, + /// but this is no longer the case. + virtual void LogOnAnonymous() = 0; + + /// Begin process of logging game server out of steam + virtual void LogOff() = 0; + + // status functions + virtual bool BLoggedOn() = 0; + virtual bool BSecure() = 0; + virtual CSteamID GetSteamID() = 0; + + /// Returns true if the master server has requested a restart. + /// Only returns true once per request. + virtual bool WasRestartRequested() = 0; + +// +// Server state. These properties may be changed at any time. +// + + /// Max player count that will be reported to server browser and client queries + virtual void SetMaxPlayerCount( int cPlayersMax ) = 0; + + /// Number of bots. Default value is zero + virtual void SetBotPlayerCount( int cBotplayers ) = 0; + + /// Set the name of server as it will appear in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetServerName( const char *pszServerName ) = 0; + + /// Set name of map to report in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetMapName( const char *pszMapName ) = 0; + + /// Let people know if your server will require a password + virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; + + /// Spectator server. The default value is zero, meaning the service + /// is not used. + virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; + + /// Name of the spectator server. (Only used if spectator port is nonzero.) + /// + /// @see k_cbMaxGameServerMapName + virtual void SetSpectatorServerName( const char *pszSpectatorServerName ) = 0; + + /// Call this to clear the whole list of key/values that are sent in rules queries. + virtual void ClearAllKeyValues() = 0; + + /// Call this to add/update a key/value pair. + virtual void SetKeyValue( const char *pKey, const char *pValue ) = 0; + + /// Sets a string defining the "gametags" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// + /// @see k_cbMaxGameServerTags + virtual void SetGameTags( const char *pchGameTags ) = 0; + + /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// don't set this unless it actually changes, its only uploaded to the master once (when + /// acknowledged) + /// + /// @see k_cbMaxGameServerGameData + virtual void SetGameData( const char *pchGameData ) = 0; + + /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region + virtual void SetRegion( const char *pszRegion ) = 0; + +// +// Player list management / authentication +// + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + + // New auth system APIs - do not mix with the old auth system APIs. + // ---------------------------------------------------------------- + + // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t + // returns false if we're not connected to the steam servers and thus cannot ask + virtual bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) = 0; + + + // these two functions s are deprecated, and will not return results + // they will be removed in a future version of the SDK + virtual void GetGameplayStats( ) = 0; + CALL_RESULT( GSReputation_t ) + virtual SteamAPICall_t GetServerReputation() = 0; + + // Returns the public IP of the server according to Steam, useful when the server is + // behind NAT and you want to advertise its IP in a lobby for other clients to directly + // connect to + virtual uint32 GetPublicIP() = 0; + +// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own +// socket to talk to the master server on, it lets the game use its socket to forward messages +// back and forth. This prevents us from requiring server ops to open up yet another port +// in their firewalls. +// +// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + + // These are used when you've elected to multiplex the game server's UDP socket + // rather than having the master server updater use its own sockets. + // + // Source games use this to simplify the job of the server admins, so they + // don't have to open up more ports on their firewalls. + + // Call this when a packet that starts with 0xFFFFFFFF comes in. That means + // it's for us. + virtual bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort ) = 0; + + // AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. + // This gets a packet that the master server updater needs to send out on UDP. + // It returns the length of the packet it wants to send, or 0 if there are no more packets to send. + // Call this each frame until it returns 0. + virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; + +// +// Control heartbeats / advertisement with master server +// + + // Call this as often as you like to tell the master server updater whether or not + // you want it to be active (default: off). + virtual void EnableHeartbeats( bool bActive ) = 0; + + // You usually don't need to modify this. + // Pass -1 to use the default value for iHeartbeatInterval. + // Some mods change this. + virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; + + // Force a heartbeat to steam at the next opportunity + virtual void ForceHeartbeat() = 0; + + // associate this game server with this clan for the purposes of computing player compat + CALL_RESULT( AssociateWithClanResult_t ) + virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; + + // ask if any of the current players dont want to play with this new player - or vice versa + CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) + virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + +}; + +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer012" + +// game server flags +const uint32 k_unServerFlagNone = 0x00; +const uint32 k_unServerFlagActive = 0x01; // server has users playing +const uint32 k_unServerFlagSecure = 0x02; // server wants to be secure +const uint32 k_unServerFlagDedicated = 0x04; // server is dedicated +const uint32 k_unServerFlagLinux = 0x08; // linux build +const uint32 k_unServerFlagPassworded = 0x10; // password protected +const uint32 k_unServerFlagPrivate = 0x20; // server shouldn't list on master server and + // won't enforce authentication of users that connect to the server. + // Useful when you run a server where the clients may not + // be connected to the internet but you want them to play (i.e LANs) + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// client has been approved to connect to this game server +struct GSClientApprove_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 1 }; + CSteamID m_SteamID; // SteamID of approved player + CSteamID m_OwnerSteamID; // SteamID of original owner for game license +}; + + +// client has been denied to connection to this game server +struct GSClientDeny_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 2 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; + char m_rgchOptionalText[128]; +}; + + +// request the game server should kick the user +struct GSClientKick_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 3 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; +}; + +// NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, +// do not reuse them here. + + +// client achievement info +struct GSClientAchievementStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 6 }; + uint64 m_SteamID; + char m_pchAchievement[128]; + bool m_bUnlocked; +}; + +// received when the game server requests to be displayed as secure (VAC protected) +// m_bSecure is true if the game server should display itself as secure to users, false otherwise +struct GSPolicyResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 15 }; + uint8 m_bSecure; +}; + +// GS gameplay stats info +struct GSGameplayStats_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 7 }; + EResult m_eResult; // Result of the call + int32 m_nRank; // Overall rank of the server (0-based) + uint32 m_unTotalConnects; // Total number of clients who have ever connected to the server + uint32 m_unTotalMinutesPlayed; // Total number of minutes ever played on the server +}; + +// send as a reply to RequestUserGroupStatus() +struct GSClientGroupStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 8 }; + CSteamID m_SteamIDUser; + CSteamID m_SteamIDGroup; + bool m_bMember; + bool m_bOfficer; +}; + +// Sent as a reply to GetServerReputation() +struct GSReputation_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 9 }; + EResult m_eResult; // Result of the call; + uint32 m_unReputationScore; // The reputation score for the game server + bool m_bBanned; // True if the server is banned from the Steam + // master servers + + // The following members are only filled out if m_bBanned is true. They will all + // be set to zero otherwise. Master server bans are by IP so it is possible to be + // banned even when the score is good high if there is a bad server on another port. + // This information can be used to determine which server is bad. + + uint32 m_unBannedIP; // The IP of the banned server + uint16 m_usBannedPort; // The port of the banned server + uint64 m_ulBannedGameID; // The game ID the banned server is serving + uint32 m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) +}; + +// Sent as a reply to AssociateWithClan() +struct AssociateWithClanResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 10 }; + EResult m_eResult; // Result of the call; +}; + +// Sent as a reply to ComputeNewPlayerCompatibility() +struct ComputeNewPlayerCompatibilityResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 11 }; + EResult m_eResult; // Result of the call; + int m_cPlayersThatDontLikeCandidate; + int m_cPlayersThatCandidateDoesntLike; + int m_cClanPlayersThatDontLikeCandidate; + CSteamID m_SteamIDCandidate; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMGAMESERVER_H diff --git a/lib/linux/include/steam/isteamgameserverstats.h b/lib/linux/include/steam/isteamgameserverstats.h new file mode 100644 index 0000000..e7922c9 --- /dev/null +++ b/lib/linux/include/steam/isteamgameserverstats.h @@ -0,0 +1,101 @@ +//====== Copyright © Valve Corporation, All rights reserved. ======= +// +// Purpose: interface for game servers to steam stats and achievements +// +//============================================================================= + +#ifndef ISTEAMGAMESERVERSTATS_H +#define ISTEAMGAMESERVERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServerStats +{ +public: + // downloads stats for the user + // returns a GSStatsReceived_t callback when completed + // if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats will only be auto-updated for clients playing on the server. For other + // users you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( GSStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + + // Set / update stats and achievements. + // Note: These updates will work only on stats game servers are allowed to edit and only for + // game servers that have been declared as officially controlled by the game creators. + // Set the IP range of your official servers on the Steamworks page + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; + virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + + // Store the current data on the server, will get a GSStatsStored_t callback when set. + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + CALL_RESULT( GSStatsStored_t ) + virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; +}; + +#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct GSStatsReceived_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct GSStatsStored_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; + EResult m_eResult; // success / error + CSteamID m_steamIDUser; // The user for whom the stats were stored +}; + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct GSStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + +#pragma pack( pop ) + + +#endif // ISTEAMGAMESERVERSTATS_H diff --git a/lib/linux/include/steam/isteamhtmlsurface.h b/lib/linux/include/steam/isteamhtmlsurface.h new file mode 100644 index 0000000..ccfc6af --- /dev/null +++ b/lib/linux/include/steam/isteamhtmlsurface.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to display html pages in a texture +// +//============================================================================= + +#ifndef ISTEAMHTMLSURFACE_H +#define ISTEAMHTMLSURFACE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +typedef uint32 HHTMLBrowser; +const uint32 INVALID_HTMLBROWSER = 0; + +//----------------------------------------------------------------------------- +// Purpose: Functions for displaying HTML pages and interacting with them +//----------------------------------------------------------------------------- +class ISteamHTMLSurface +{ +public: + virtual ~ISteamHTMLSurface() {} + + // Must call init and shutdown when starting/ending use of the interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Create a browser object for display of a html page, when creation is complete the call handle + // will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. + // The user agent string is a substring to be added to the general user agent string so you can + // identify your client on web servers. + // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if + // you do not require this functionality. + // + // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, + // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS + // section of this interface (AllowStartRequest, etc) for more details. If you do + // not implement these callback handlers, the browser may appear to hang instead of + // navigating to new pages or triggering javascript popups. + // + CALL_RESULT( HTML_BrowserReady_t ) + virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; + + // Call this when you are done with a html surface, this lets us free the resources being used by it + virtual void RemoveBrowser( HHTMLBrowser unBrowserHandle ) = 0; + + // Navigate to this URL, results in a HTML_StartRequest_t as the request commences + virtual void LoadURL( HHTMLBrowser unBrowserHandle, const char *pchURL, const char *pchPostData ) = 0; + + // Tells the surface the size in pixels to display the surface + virtual void SetSize( HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ) = 0; + + // Stop the load of the current html page + virtual void StopLoad( HHTMLBrowser unBrowserHandle ) = 0; + // Reload (most likely from local cache) the current page + virtual void Reload( HHTMLBrowser unBrowserHandle ) = 0; + // navigate back in the page history + virtual void GoBack( HHTMLBrowser unBrowserHandle ) = 0; + // navigate forward in the page history + virtual void GoForward( HHTMLBrowser unBrowserHandle ) = 0; + + // add this header to any url requests from this browser + virtual void AddHeader( HHTMLBrowser unBrowserHandle, const char *pchKey, const char *pchValue ) = 0; + // run this javascript script in the currently loaded page + virtual void ExecuteJavascript( HHTMLBrowser unBrowserHandle, const char *pchScript ) = 0; + + enum EHTMLMouseButton + { + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, + }; + + // Mouse click and mouse movement commands + virtual void MouseUp( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDown( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDoubleClick( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + // x and y are relative to the HTML bounds + virtual void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + // nDelta is pixels of scroll + virtual void MouseWheel( HHTMLBrowser unBrowserHandle, int32 nDelta ) = 0; + + enum EMouseCursor + { + dc_user = 0, + dc_none, + dc_arrow, + dc_ibeam, + dc_hourglass, + dc_waitarrow, + dc_crosshair, + dc_up, + dc_sizenw, + dc_sizese, + dc_sizene, + dc_sizesw, + dc_sizew, + dc_sizee, + dc_sizen, + dc_sizes, + dc_sizewe, + dc_sizens, + dc_sizeall, + dc_no, + dc_hand, + dc_blank, // don't show any custom cursor, just use your default + dc_middle_pan, + dc_north_pan, + dc_north_east_pan, + dc_east_pan, + dc_south_east_pan, + dc_south_pan, + dc_south_west_pan, + dc_west_pan, + dc_north_west_pan, + dc_alias, + dc_cell, + dc_colresize, + dc_copycur, + dc_verticaltext, + dc_rowresize, + dc_zoomin, + dc_zoomout, + dc_help, + dc_custom, + + dc_last, // custom cursors start from this value and up + }; + + enum EHTMLKeyModifiers + { + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1 << 0, + k_eHTMLKeyModifier_CtrlDown = 1 << 1, + k_eHTMLKeyModifier_ShiftDown = 1 << 2, + }; + + // keyboard interactions, native keycode is the virtual key code value from your OS + virtual void KeyDown( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + virtual void KeyUp( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + // cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) + virtual void KeyChar( HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + + // programmatically scroll this many pixels on the page + virtual void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + virtual void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + + // tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things + virtual void SetKeyFocus( HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ) = 0; + + // open the current pages html code in the local editor of choice, used for debugging + virtual void ViewSource( HHTMLBrowser unBrowserHandle ) = 0; + // copy the currently selected text on the html page to the local clipboard + virtual void CopyToClipboard( HHTMLBrowser unBrowserHandle ) = 0; + // paste from the local clipboard to the current html page + virtual void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) = 0; + + // find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element + virtual void Find( HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse ) = 0; + // cancel a currently running find + virtual void StopFind( HHTMLBrowser unBrowserHandle ) = 0; + + // return details about the link at position x,y on the current page + virtual void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + + // set a webcookie for the hostname in question + virtual void SetCookie( const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath = "/", RTime32 nExpires = 0, bool bSecure = false, bool bHTTPOnly = false ) = 0; + + // Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) + virtual void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) = 0; + + // Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are + // more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, + // all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". + // When background mode is disabled, any video or audio objects with that property will resume with ".play()". + virtual void SetBackgroundMode( HHTMLBrowser unBrowserHandle, bool bBackgroundMode ) = 0; + + // CALLBACKS + // + // These set of functions are used as responses to callback requests + // + + // You MUST call this in response to a HTML_StartRequest_t callback + // Set bAllowed to true to allow this navigation, false to cancel it and stay + // on the current page. You can use this feature to limit the valid pages + // allowed in your HTML surface. + virtual void AllowStartRequest( HHTMLBrowser unBrowserHandle, bool bAllowed ) = 0; + + // You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback + // Set bResult to true for the OK option of a confirm, use false otherwise + virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; + + // You MUST call this in response to a HTML_FileOpenDialog_t callback + IGNOREATTR() + virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; +}; + +#define STEAMHTMLSURFACE_INTERFACE_VERSION "STEAMHTMLSURFACE_INTERFACE_VERSION_003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//----------------------------------------------------------------------------- +// Purpose: The browser is ready for use +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_BrowserReady_t, k_iSteamHTMLSurfaceCallbacks + 1 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this browser is now fully created and ready to navigate to pages +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser has a pending paint +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_NeedsPaint_t, k_iSteamHTMLSurfaceCallbacks + 2) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint +CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called +CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture +CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture +CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update +CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update +CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update +CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update +CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered +CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages +END_DEFINE_CALLBACK_12() + + +//----------------------------------------------------------------------------- +// Purpose: The browser wanted to navigate to a new page +// NOTE - you MUST call AllowStartRequest in response to this callback +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_StartRequest_t, k_iSteamHTMLSurfaceCallbacks + 3) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface navigating +CALLBACK_MEMBER(1, const char *, pchURL) // the url they wish to navigate to +CALLBACK_MEMBER(2, const char *, pchTarget) // the html link target type (i.e _blank, _self, _parent, _top ) +CALLBACK_MEMBER(3, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER(4, bool, bIsRedirect) // true if this was a http/html redirect from the last load request +END_DEFINE_CALLBACK_5() + + +//----------------------------------------------------------------------------- +// Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_CloseBrowser_t, k_iSteamHTMLSurfaceCallbacks + 4) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser is navigating to a new url +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_URLChanged_t, k_iSteamHTMLSurfaceCallbacks + 5 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface navigating +CALLBACK_MEMBER( 1, const char *, pchURL ) // the url they wish to navigate to +CALLBACK_MEMBER( 2, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER( 3, bool, bIsRedirect ) // true if this was a http/html redirect from the last load request +CALLBACK_MEMBER( 4, const char *, pchPageTitle ) // the title of the page +CALLBACK_MEMBER( 5, bool, bNewNavigation ) // true if this was from a fresh tab and not a click on an existing page +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: A page is finished loading +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FinishedRequest_t, k_iSteamHTMLSurfaceCallbacks + 6 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +CALLBACK_MEMBER( 2, const char *, pchPageTitle ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a request to load this url in a new tab +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_OpenLinkInNewTab_t, k_iSteamHTMLSurfaceCallbacks + 7 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: the page has a new title now +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ChangedTitle_t, k_iSteamHTMLSurfaceCallbacks + 8 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: results from a search +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SearchResults_t, k_iSteamHTMLSurfaceCallbacks + 9 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unResults ) // +CALLBACK_MEMBER( 2, uint32, unCurrentMatch ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: page history status changed on the ability to go backwards and forward +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_CanGoBackAndForward_t, k_iSteamHTMLSurfaceCallbacks + 10 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, bool, bCanGoBack ) // +CALLBACK_MEMBER( 2, bool, bCanGoForward ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the horizontal scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HorizontalScroll_t, k_iSteamHTMLSurfaceCallbacks + 11 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool , bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the vertical scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_VerticalScroll_t, k_iSteamHTMLSurfaceCallbacks + 12 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool, bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: response to GetLinkAtPosition call +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_LinkAtPosition_t, k_iSteamHTMLSurfaceCallbacks + 13 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, x ) // NOTE - Not currently set +CALLBACK_MEMBER( 2, uint32, y ) // NOTE - Not currently set +CALLBACK_MEMBER( 3, const char *, pchURL ) // +CALLBACK_MEMBER( 4, bool, bInput ) // +CALLBACK_MEMBER( 5, bool, bLiveLink ) // +END_DEFINE_CALLBACK_6() + + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript alert dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSAlert_t, k_iSteamHTMLSurfaceCallbacks + 14 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript confirmation dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSConfirm_t, k_iSteamHTMLSurfaceCallbacks + 15 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: when received show a file open dialog +// then call FileLoadDialogResponse with the file(s) the user selected. +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FileOpenDialog_t, k_iSteamHTMLSurfaceCallbacks + 16 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +CALLBACK_MEMBER( 2, const char *, pchInitialFile ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a new html window has been created +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_NewWindow_t, k_iSteamHTMLSurfaceCallbacks + 21 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the current surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // the page to load +CALLBACK_MEMBER( 2, uint32, unX ) // the x pos into the page to display the popup +CALLBACK_MEMBER( 3, uint32, unY ) // the y pos into the page to display the popup +CALLBACK_MEMBER( 4, uint32, unWide ) // the total width of the pBGRA texture +CALLBACK_MEMBER( 5, uint32, unTall ) // the total height of the pBGRA texture +CALLBACK_MEMBER( 6, HHTMLBrowser, unNewWindow_BrowserHandle ) // the handle of the new window surface +END_DEFINE_CALLBACK_7() + + +//----------------------------------------------------------------------------- +// Purpose: change the cursor to display +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: informational message from the browser +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: update the text of an existing tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: hide the tooltip you are showing +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HideToolTip_t, k_iSteamHTMLSurfaceCallbacks + 26 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMHTMLSURFACE_H diff --git a/lib/linux/include/steam/isteamhttp.h b/lib/linux/include/steam/isteamhttp.h new file mode 100644 index 0000000..8fab537 --- /dev/null +++ b/lib/linux/include/steam/isteamhttp.h @@ -0,0 +1,210 @@ +//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to http client +// +//============================================================================= + +#ifndef ISTEAMHTTP_H +#define ISTEAMHTTP_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamhttpenums.h" + +// Handle to a HTTP Request handle +typedef uint32 HTTPRequestHandle; +#define INVALID_HTTPREQUEST_HANDLE 0 + +typedef uint32 HTTPCookieContainerHandle; +#define INVALID_HTTPCOOKIE_HANDLE 0 + +//----------------------------------------------------------------------------- +// Purpose: interface to http client +//----------------------------------------------------------------------------- +class ISteamHTTP +{ +public: + + // Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + // the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + // so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + // or such. + virtual HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL ) = 0; + + // Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + // sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + virtual bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue ) = 0; + + // Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + // timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + // has already been sent. + virtual bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ) = 0; + + // Set a request header value for the request, must be called prior to sending the request. Will + // return false if the handle is invalid or the request is already sent. + virtual bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue ) = 0; + + // Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + // when creating the request. Must be called prior to sending the request. Will return false if the + // handle is invalid or the request is already sent. + virtual bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback. + // + // Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + // header and only do a local cache lookup rather than sending any actual remote request. + virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + // HTTPRequestDataReceived_t callbacks while streaming. + virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + // returns the size of the header value if present so the caller and allocate a correctly sized buffer for + // GetHTTPResponseHeaderValue. + virtual bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize ) = 0; + + // Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // header is not present or if your buffer is too small to contain it's value. You should first call + // BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + virtual bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize ) = 0; + + // Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid. + virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0; + + // Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + // the correct buffer size to use. + virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + // handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + // do not match the size and offset sent in HTTPRequestDataReceived_t. + virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + // callback and finishing using the response. + virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Gets progress on downloading the body for the request. This will be zero unless a response header has already been + // received which included a content-length field. For responses that contain no content-length it will report + // zero for the duration of the request as the size is unknown until the connection closes. + virtual bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut ) = 0; + + // Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + // have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + // parameter will set the content-type header for the request so the server may know how to interpret the body. + virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0; + + // Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + // than any response to your requests using this cookie container may add new cookies which may be transmitted with + // future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + // during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + // repeat executions of your process. + virtual HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify ) = 0; + + // Release a cookie container you are finished using, freeing it's memory + virtual bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Adds a cookie to the specified cookie container that will be used with future requests. + virtual bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie ) = 0; + + // Set the cookie container to use for a HTTP request + virtual bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + virtual bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo ) = 0; + + // Set that https request should require verified SSL certificate via machines certificate trust store + virtual bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ) = 0; + + // Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + // which can bump everytime we get more data + virtual bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds ) = 0; + + // Check if the reason the request failed was because we timed it out (rather than some harder failure) + virtual bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut ) = 0; +}; + +#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION002" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct HTTPRequestCompleted_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + + // Handle value for the request that has completed. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + // This will be true if we actually got any sort of response from the server (even an error). + // It will be false if we failed due to an internal error or client side network failure. + bool m_bRequestSuccessful; + + // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal + // OK response, if you get something else you probably need to treat it as a failure. + EHTTPStatusCode m_eStatusCode; + + uint32 m_unBodySize; // Same as GetHTTPResponseBodySize() +}; + + +struct HTTPRequestHeadersReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + + // Handle value for the request that has received headers. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; +}; + +struct HTTPRequestDataReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + + // Handle value for the request that has received data. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + + // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cOffset; + + // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cBytesReceived; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMHTTP_H \ No newline at end of file diff --git a/lib/linux/include/steam/isteaminventory.h b/lib/linux/include/steam/isteaminventory.h new file mode 100644 index 0000000..5d236a5 --- /dev/null +++ b/lib/linux/include/steam/isteaminventory.h @@ -0,0 +1,357 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Inventory +// +//============================================================================= + +#ifndef ISTEAMINVENTORY_H +#define ISTEAMINVENTORY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// Every individual instance of an item has a globally-unique ItemInstanceID. +// This ID is unique to the combination of (player, specific item instance) +// and will not be transferred to another player or re-used for another item. +typedef uint64 SteamItemInstanceID_t; + +static const SteamItemInstanceID_t k_SteamItemInstanceIDInvalid = (SteamItemInstanceID_t)~0; + +// Types of items in your game are identified by a 32-bit "item definition number". +// Valid definition numbers are between 1 and 999999999; numbers less than or equal to +// zero are invalid, and numbers greater than or equal to one billion (1x10^9) are +// reserved for internal Steam use. +typedef int32 SteamItemDef_t; + + +enum ESteamItemFlags +{ + // Item status flags - these flags are permanently attached to specific item instances + k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. + + // Action confirmation flags - these flags are set one time only, as part of a result set + k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated + k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. + + // All other flag bits are currently reserved for internal Steam use at this time. + // Do not assume anything about the state of other flags which are not defined here. +}; + +struct SteamItemDetails_t +{ + SteamItemInstanceID_t m_itemId; + SteamItemDef_t m_iDefinition; + uint16 m_unQuantity; + uint16 m_unFlags; // see ESteamItemFlags +}; + +typedef int32 SteamInventoryResult_t; + +static const SteamInventoryResult_t k_SteamInventoryResultInvalid = -1; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Inventory query and manipulation API +//----------------------------------------------------------------------------- +class ISteamInventory +{ +public: + + // INVENTORY ASYNC RESULT MANAGEMENT + // + // Asynchronous inventory queries always output a result handle which can be used with + // GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + // be triggered when the asynchronous result becomes ready (or fails). + // + + // Find out the status of an asynchronous inventory result handle. Possible values: + // k_EResultPending - still in progress + // k_EResultOK - done, result ready + // k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + // k_EResultInvalidParam - ERROR: invalid API call parameters + // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + // k_EResultFail - ERROR: unknown / generic error + METHOD_DESC(Find out the status of an asynchronous inventory result handle.) + virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; + + // Copies the contents of a result set into a flat array. The specific + // contents of the result set depend on which query which was used. + METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) + virtual bool GetResultItems( SteamInventoryResult_t resultHandle, + OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, + uint32 *punOutItemsArraySize ) = 0; + + // Returns the server time at which the result was generated. Compare against + // the value of IClientUtils::GetServerRealTime() to determine age. + METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) + virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; + + // Returns true if the result belongs to the target steam ID, false if the + // result does not. This is important when using DeserializeResult, to verify + // that a remote player is not pretending to have a different user's inventory. + METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) + virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; + + // Destroys a result handle and frees all associated memory. + METHOD_DESC(Destroys a result handle and frees all associated memory.) + virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; + + + // INVENTORY ASYNC QUERY + // + + // Captures the entire state of the current user's Steam inventory. + // You must call DestroyResult on this handle when you are done with it. + // Returns false and sets *pResultHandle to zero if inventory is unavailable. + // Note: calls to this function are subject to rate limits and may return + // cached results if called too frequently. It is suggested that you call + // this function only when you are about to display the user's full inventory, + // or if you expect that the inventory may have changed. + METHOD_DESC(Captures the entire state of the current users Steam inventory.) + virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; + + + // Captures the state of a subset of the current user's Steam inventory, + // identified by an array of item instance IDs. The results from this call + // can be serialized and passed to other players to "prove" that the current + // user owns specific items, without exposing the user's entire inventory. + // For example, you could call GetItemsByID with the IDs of the user's + // currently equipped cosmetic items and serialize this to a buffer, and + // then transmit this buffer to other players upon joining a game. + METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) + virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; + + + // RESULT SERIALIZATION AND AUTHENTICATION + // + // Serialized result sets contain a short signature which can't be forged + // or replayed across different game sessions. A result set can be serialized + // on the local client, transmitted to other players via your game networking, + // and deserialized by the remote players. This is a secure way of preventing + // hackers from lying about posessing rare/high-value items. + + // Serializes a result set with signature bytes to an output buffer. Pass + // NULL as an output buffer to get the required size via punOutBufferSize. + // The size of a serialized result depends on the number items which are being + // serialized. When securely transmitting items to other players, it is + // recommended to use "GetItemsByID" first to create a minimal result set. + // Results have a built-in timestamp which will be considered "expired" after + // an hour has elapsed. See DeserializeResult for expiration handling. + virtual bool SerializeResult( SteamInventoryResult_t resultHandle, OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize ) = 0; + + // Deserializes a result set and verifies the signature bytes. Returns false + // if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + // Otherwise returns true and then delivers error codes via GetResultStatus. + // + // The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + // be set to true by your game at this time. + // + // DeserializeResult has a potential soft-failure mode where the handle status + // is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + // The "expired" result could indicate that the data may be out of date - not + // just due to timed expiration (one hour), but also because one of the items + // in the result set may have been traded or consumed since the result set was + // generated. You could compare the timestamp from GetResultTimestamp() to + // ISteamUtils::GetServerRealTime() to determine how old the data is. You could + // simply ignore the "expired" result code and continue as normal, or you + // could challenge the player with expired data to send an updated result set. + virtual bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false ) = 0; + + + // INVENTORY ASYNC MODIFICATION + // + + // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + // notification with a matching nCallbackContext parameter. This API is insecure, and could + // be abused by hacked clients. It is, however, very useful as a development cheat or as + // a means of prototyping item-related features for your game. The use of GenerateItems can + // be restricted to certain item definitions or fully blocked via the Steamworks website. + // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + // describe the quantity of each item to generate. + virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; + + // GrantPromoItems() checks the list of promotional items for which the user may be eligible + // and grants the items (one time only). On success, the result set will include items which + // were granted, if any. If no items were granted because the user isn't eligible for any + // promotions, this is still considered a success. + METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) + virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; + + // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + // scanning for all eligible promotional items, the check is restricted to a single item + // definition or set of item definitions. This can be useful if your game has custom UI for + // showing a specific promo item to the user. + virtual bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef ) = 0; + virtual bool AddPromoItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength ) = 0; + + // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + // Not for the faint of heart - if your game implements item removal at all, a high-friction + // UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity + // can be NULL or else an array of the same length as pArrayItems which describe the quantity + // of each item to destroy. ConsumeItem can be restricted to certain item definitions or + // fully blocked via the Steamworks website to minimize support/abuse issues such as the + // clasic "my brother borrowed my laptop and deleted all of my rare items". + METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) + virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; + + // ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be + // used to implement crafting recipes or transmutations, or items which unpack themselves + // into other items. Like GenerateItems, this is a flexible and dangerous API which is + // meant for rapid prototyping. You can configure restrictions on ExchangeItems via the + // Steamworks website, such as limiting it to a whitelist of input/output combinations + // corresponding to recipes. + // (Note: although GenerateItems may be hard or impossible to use securely in your game, + // ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.) + virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, + ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, + ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; + + + // TransferItemQuantity() is intended for use with items which are "stackable" (can have + // quantity greater than one). It can be used to split a stack into two, or to transfer + // quantity from one stack into another stack of identical items. To split one stack into + // two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + virtual bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ) = 0; + + + // TIMED DROPS AND PLAYTIME CREDIT + // + + // Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when + // active gameplay begins, and at least once every two minutes afterwards. The backend + // performs its own time calculations, so the precise timing of the heartbeat is not + // critical as long as you send at least one heartbeat every two minutes. Calling the + // function more often than that is not harmful, it will simply have no effect. Note: + // players may be able to spoof this message by hacking their client, so you should not + // attempt to use this as a mechanism to restrict playtime credits. It is simply meant + // to distinguish between being in any kind of gameplay situation vs the main menu or + // a pre-game launcher window. (If you are stingy with handing out playtime credit, it + // will only encourage players to run bots or use mouse/kb event simulators.) + // + // Playtime credit accumulation can be capped on a daily or weekly basis through your + // Steamworks configuration. + // + METHOD_DESC(Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.) + virtual void SendItemDropHeartbeat() = 0; + + // Playtime credit must be consumed and turned into item drops by your game. Only item + // definitions which are marked as "playtime item generators" can be spawned. The call + // will return an empty result set if there is not enough playtime credit for a drop. + // Your game should call TriggerItemDrop at an appropriate time for the user to receive + // new items, such as between rounds or while the player is dead. Note that players who + // hack their clients could modify the value of "dropListDefinition", so do not use it + // to directly control rarity. It is primarily useful during testing and development, + // where you may wish to perform experiments with different types of drops. + METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) + virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; + + + // IN-GAME TRADING + // + // TradeItems() implements limited in-game trading of items, if you prefer not to use + // the overlay or an in-game web browser to perform Steam Trading through the website. + // You should implement a UI where both players can see and agree to a trade, and then + // each client should call TradeItems simultaneously (+/- 5 seconds) with matching + // (but reversed) parameters. The result is the same as if both players performed a + // Steam Trading transaction through the web. Each player will get an inventory result + // confirming the removal or quantity changes of the items given away, and the new + // item instance id numbers and quantities of the received items. + // (Note: new item instance IDs are generated whenever an item changes ownership.) + virtual bool TradeItems( SteamInventoryResult_t *pResultHandle, CSteamID steamIDTradePartner, + ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength, + ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength ) = 0; + + + // ITEM DEFINITIONS + // + // Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + // to a set of string properties. Some of these properties are required to display items + // on the Steam community web site. Other properties can be defined by applications. + // Use of these functions is optional; there is no reason to call LoadItemDefinitions + // if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + // weapon mod = 55) and does not allow for adding new item types without a client patch. + // + + // LoadItemDefinitions triggers the automatic load and refresh of item definitions. + // Every time new item definitions are available (eg, from the dynamic addition of new + // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + // callback will be fired. + METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) + virtual bool LoadItemDefinitions() = 0; + + // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + // defined via Steamworks configuration, and not necessarily contiguous integers). + // If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + // contain the total size necessary for a subsequent call. Otherwise, the call will + // return false if and only if there is not enough space in the output array. + virtual bool GetItemDefinitionIDs( + OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, + DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; + + // GetItemDefinitionProperty returns a string property from a given item definition. + // Note that some properties (for example, "name") may be localized and will depend + // on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, + OUT_STRING_COUNT(punValueBufferSizeOut) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; +}; + +#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V001" + + +// SteamInventoryResultReady_t callbacks are fired whenever asynchronous +// results transition from "Pending" to "OK" or an error state. There will +// always be exactly one callback per handle. +struct SteamInventoryResultReady_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + SteamInventoryResult_t m_handle; + EResult m_result; +}; + + +// SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems +// successfully returns a result which is newer / fresher than the last +// known result. (It will not trigger if the inventory hasn't changed, +// or if results from two overlapping calls are reversed in flight and +// the earlier result is already known to be stale/out-of-date.) +// The normal ResultReady callback will still be triggered immediately +// afterwards; this is an additional notification for your convenience. +struct SteamInventoryFullUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + SteamInventoryResult_t m_handle; +}; + + +// A SteamInventoryDefinitionUpdate_t callback is triggered whenever +// item definitions have been updated, which could be in response to +// LoadItemDefinitions() or any other async request which required +// a definition update in order to process results from the server. +struct SteamInventoryDefinitionUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/linux/include/steam/isteammasterserverupdater.h b/lib/linux/include/steam/isteammasterserverupdater.h new file mode 100644 index 0000000..4be0ca5 --- /dev/null +++ b/lib/linux/include/steam/isteammasterserverupdater.h @@ -0,0 +1 @@ +#error "This file isn't used any more" diff --git a/lib/linux/include/steam/isteammatchmaking.h b/lib/linux/include/steam/isteammatchmaking.h new file mode 100644 index 0000000..837d98b --- /dev/null +++ b/lib/linux/include/steam/isteammatchmaking.h @@ -0,0 +1,751 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing game server/client match making +// +//============================================================================= + +#ifndef ISTEAMMATCHMAKING +#define ISTEAMMATCHMAKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" +#include "matchmakingtypes.h" +#include "isteamclient.h" +#include "isteamfriends.h" + +// lobby type description +enum ELobbyType +{ + k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else + k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list + k_ELobbyTypePublic = 2, // visible for friends and in lobby list + k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends + // useful if you want a user in two lobbies, for example matching groups together + // a user can be in only one regular lobby, and up to two invisible lobbies +}; + +// lobby search filter tools +enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +}; + +// lobby search distance. Lobby results are sorted from closest to farthest. +enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned + k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions + k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe + k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) +}; + +// maximum number of characters a lobby metadata key can be +#define k_nMaxLobbyKeyLength 255 + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to favorites +// and to operate on game lobbies. +//----------------------------------------------------------------------------- +class ISteamMatchmaking +{ +public: + // game server favorites storage + // saves basic details about a multiplayer game server locally + + // returns the number of favorites servers the user has stored + virtual int GetFavoriteGameCount() = 0; + + // returns the details of the game server + // iGame is of range [0,GetFavoriteGameCount()) + // *pnIP, *pnConnPort are filled in the with IP:port of the game server + // *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections + // *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added + virtual bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer ) = 0; + + // adds the game server to the local list; updates the time played of the server if it already exists in the list + virtual int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ) = 0; + + // removes the game server from the local storage; returns true if one was removed + virtual bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ) = 0; + + /////// + // Game lobby functions + + // Get a list of relevant lobbies + // this is an asynchronous request + // results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found + // this will never return lobbies that are full + // to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call + // use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. + /* + class CMyLobbyListManager + { + CCallResult<CMyLobbyListManager, LobbyMatchList_t> m_CallResultLobbyMatchList; + void FindLobbies() + { + // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() + SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); + m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); + } + + void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) + { + // lobby list has be retrieved from Steam back-end, use results + } + } + */ + // + CALL_RESULT( LobbyMatchList_t ) + virtual SteamAPICall_t RequestLobbyList() = 0; + // filters for lobbies + // this needs to be called before RequestLobbyList() to take effect + // these are cleared on each call to RequestLobbyList() + virtual void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType ) = 0; + // numerical comparison + virtual void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ) = 0; + // returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence + virtual void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo ) = 0; + // returns only lobbies with the specified number of slots available + virtual void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) = 0; + // sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) + virtual void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter ) = 0; + // sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client + virtual void AddRequestLobbyListResultCountFilter( int cMaxResults ) = 0; + + virtual void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby ) = 0; + + // returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call + // should only be called after a LobbyMatchList_t callback is received + // iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) + // the returned CSteamID::IsValid() will be false if iLobby is out of range + virtual CSteamID GetLobbyByIndex( int iLobby ) = 0; + + // Create a lobby on the Steam servers. + // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID + // of the lobby will need to be communicated via game channels or via InviteUserToLobby() + // this is an asynchronous request + // results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + CALL_RESULT( LobbyCreated_t ) + virtual SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers ) = 0; + + // Joins an existing lobby + // this is an asynchronous request + // results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful + // lobby metadata is available to use immediately on this call completing + CALL_RESULT( LobbyEnter_t ) + virtual SteamAPICall_t JoinLobby( CSteamID steamIDLobby ) = 0; + + // Leave a lobby; this will take effect immediately on the client side + // other users in the lobby will be notified by a LobbyChatUpdate_t callback + virtual void LeaveLobby( CSteamID steamIDLobby ) = 0; + + // Invite another user to the lobby + // the target user will receive a LobbyInvite_t callback + // will return true if the invite is successfully sent, whether or not the target responds + // returns false if the local user is not connected to the Steam servers + // if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, + // or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> + virtual bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee ) = 0; + + // Lobby iteration, for viewing details of users in a lobby + // only accessible if the lobby user is a member of the specified lobby + // persona information for other lobby members (name, avatar, etc.) will be asynchronously received + // and accessible via ISteamFriends interface + + // returns the number of users in the specified lobby + virtual int GetNumLobbyMembers( CSteamID steamIDLobby ) = 0; + // returns the CSteamID of a user in the lobby + // iMember is of range [0,GetNumLobbyMembers()) + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + virtual CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ) = 0; + + // Get data associated with this lobby + // takes a simple key, and returns the string associated with it + // "" will be returned if no value is set, or if steamIDLobby is invalid + virtual const char *GetLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + // Sets a key/value pair in the lobby metadata + // each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data + // this can be used to set lobby names, map, etc. + // to reset a key, just set it to "" + // other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback + virtual bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // returns the number of metadata keys set on the specified lobby + virtual int GetLobbyDataCount( CSteamID steamIDLobby ) = 0; + + // returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) + virtual bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize ) = 0; + + // removes a metadata key from the lobby + virtual bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + + // Gets per-user metadata for someone in this lobby + virtual const char *GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey ) = 0; + // Sets per-user metadata (for the local user implicitly) + virtual void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // Broadcasts a chat message to the all the users in the lobby + // users in the lobby (including the local user) will receive a LobbyChatMsg_t callback + // returns true if the message is successfully sent + // pvMsgBody can be binary or text data, up to 4k + // if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator + virtual bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody ) = 0; + // Get a chat message as specified in a LobbyChatMsg_t callback + // iChatID is the LobbyChatMsg_t::m_iChatID value in the callback + // *pSteamIDUser is filled in with the CSteamID of the member + // *pvData is filled in with the message itself + // return value is the number of bytes written into the buffer + virtual int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, OUT_STRUCT() CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // Refreshes metadata for a lobby you're not necessarily in right now + // you never do this for lobbies you're a member of, only if your + // this will send down all the metadata associated with a lobby + // this is an asynchronous call + // returns false if the local user is not connected to the Steam servers + // results will be returned by a LobbyDataUpdate_t callback + // if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + virtual bool RequestLobbyData( CSteamID steamIDLobby ) = 0; + + // sets the game server associated with the lobby + // usually at this point, the users will join the specified game server + // either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect + virtual void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer ) = 0; + // returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist + virtual bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, OUT_STRUCT() CSteamID *psteamIDGameServer ) = 0; + + // set the limit on the # of users who can join the lobby + virtual bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers ) = 0; + // returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined + virtual int GetLobbyMemberLimit( CSteamID steamIDLobby ) = 0; + + // updates which type of lobby it is + // only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls + virtual bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType ) = 0; + + // sets whether or not a lobby is joinable - defaults to true for a new lobby + // if set to false, no user can join, even if they are a friend or have been invited + virtual bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable ) = 0; + + // returns the current lobby owner + // you must be a member of the lobby to access this + // there always one lobby owner - if the current owner leaves, another user will become the owner + // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner + virtual CSteamID GetLobbyOwner( CSteamID steamIDLobby ) = 0; + + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner ) = 0; + + // link two lobbies for the purposes of checking player compatibility + // you must be the lobby owner of both lobbies + virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0; + +#ifdef _PS3 + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; +#endif + CALL_BACK( LobbyChatUpdate_t ) +}; +#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" + + +//----------------------------------------------------------------------------- +// Callback interfaces for server list functions (see ISteamMatchmakingServers below) +// +// The idea here is that your game code implements objects that implement these +// interfaces to receive callback notifications after calling asynchronous functions +// inside the ISteamMatchmakingServers() interface below. +// +// This is different than normal Steam callback handling due to the potentially +// large size of server lists. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when requesting server list. +//----------------------------------------------------------------------------- +typedef void* HServerListRequest; + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after a server list refresh +// or an individual server update. +// +// Since you get these callbacks after requesting full list refreshes you will +// usually implement this interface inside an object like CServerBrowser. If that +// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() +// to cancel any in-progress queries so you don't get a callback into the destructed +// object and crash. +//----------------------------------------------------------------------------- +class ISteamMatchmakingServerListResponse +{ +public: + // Server has responded ok with updated data + virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0; + + // Server has failed to respond + virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0; + + // A list refresh you had initiated is now 100% completed + virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after pinging an individual server +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PingServer() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPingResponse +{ +public: + // Server has responded successfully and has updated data + virtual void ServerResponded( gameserveritem_t &server ) = 0; + + // Server failed to respond to the ping request + virtual void ServerFailedToRespond() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting details on +// who is playing on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPlayersResponse +{ +public: + // Got data on a new player on the server -- you'll get this callback once per player + // on the server which you have requested player data on. + virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; + + // The server failed to respond to the request for player details + virtual void PlayersFailedToRespond() = 0; + + // The server has finished responding to the player details request + // (ie, you won't get anymore AddPlayerToList callbacks) + virtual void PlayersRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting rules +// details on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->ServerRules() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingRulesResponse +{ +public: + // Got data on a rule on the server -- you'll get one of these per rule defined on + // the server you are querying + virtual void RulesResponded( const char *pchRule, const char *pchValue ) = 0; + + // The server failed to respond to the request for rule details + virtual void RulesFailedToRespond() = 0; + + // The server has finished responding to the rule details request + // (ie, you won't get anymore RulesResponded callbacks) + virtual void RulesRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when querying details on an individual server. +//----------------------------------------------------------------------------- +typedef int HServerQuery; +const int HSERVERQUERY_INVALID = 0xffffffff; + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to game lists and details +//----------------------------------------------------------------------------- +class ISteamMatchmakingServers +{ +public: + // Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. + // Each call allocates a new asynchronous request object. + // Request object must be released by calling ReleaseRequest( hServerListRequest ) + virtual HServerListRequest RequestInternetServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + + // Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. + // RefreshComplete callback is not posted when request is released. + virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0; + + /* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: + + "map" + - Server passes the filter if the server is playing the specified map. + "gamedataand" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedataor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedatanor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsand" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsnor" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "and" (x1 && x2 && ... && xn) + "or" (x1 || x2 || ... || xn) + "nand" !(x1 && x2 && ... && xn) + "nor" !(x1 || x2 || ... || xn) + - Performs Boolean operation on the following filters. The operand to this filter specifies + the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue + pairs must immediately follow, i.e. this is a prefix logical operator notation.) + In the simplest case where Boolean expressions are not nested, this is simply + the number of operands. + + For example, to match servers on a particular map or with a particular tag, would would + use these filters. + + ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) + "or", "2" + "map", "cp_dustbowl" + "gametagsand", "payload" + + If logical inputs are nested, then the operand specifies the size of the entire + "length" of its operands, not the number of immediate children. + + ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) + "or", "4" + "map", "cp_dustbowl" + "and", "2" + "gametagsand", "payload" + "gametagsnor", "payloadrace" + + Unary NOT can be achieved using either "nand" or "nor" with a single operand. + + "addr" + - Server passes the filter if the server's query address matches the specified IP or IP:port. + "gameaddr" + - Server passes the filter if the server's game address matches the specified IP or IP:port. + + The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t + + "dedicated" + - Server passes the filter if it passed true to SetDedicatedServer. + "secure" + - Server passes the filter if the server is VAC-enabled. + "notfull" + - Server passes the filter if the player count is less than the reported max player count. + "hasplayers" + - Server passes the filter if the player count is greater than zero. + "noplayers" + - Server passes the filter if it doesn't have any players. + "linux" + - Server passes the filter if it's a linux server + */ + + // Get details on a given server in the list, you can get the valid range of index + // values by calling GetServerCount(). You will also receive index values in + // ISteamMatchmakingServerListResponse::ServerResponded() callbacks + virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0; + + // Cancel an request which is operation on the given list type. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above list request calls. Not doing so may result in a crash when a callback + // occurs on the destructed object. + // Canceling a query does not release the allocated request handle. + // The request handle must be released using ReleaseRequest( hRequest ) + virtual void CancelQuery( HServerListRequest hRequest ) = 0; + + // Ping every server in your list again but don't update the list of servers + // Query callback installed when the server list was requested will be used + // again to post notifications and RefreshComplete, so the callback must remain + // valid until another RefreshComplete is called on it or the request + // is released with ReleaseRequest( hRequest ) + virtual void RefreshQuery( HServerListRequest hRequest ) = 0; + + // Returns true if the list is currently refreshing its server list + virtual bool IsRefreshing( HServerListRequest hRequest ) = 0; + + // How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 + virtual int GetServerCount( HServerListRequest hRequest ) = 0; + + // Refresh a single server inside of a query (rather than all the servers ) + virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0; + + + //----------------------------------------------------------------------------- + // Queries to individual servers directly via IP/Port + //----------------------------------------------------------------------------- + + // Request updated ping time and other details from a single server + virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; + + // Request the list of players currently playing on a server + virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; + + // Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) + virtual HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse ) = 0; + + // Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above calls to avoid crashing when callbacks occur. + virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0; +}; +#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002" + +// game server flags +const uint32 k_unFavoriteFlagNone = 0x00; +const uint32 k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list +const uint32 k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list + + +//----------------------------------------------------------------------------- +// Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 +//----------------------------------------------------------------------------- +enum EChatMemberStateChange +{ + // Specific to joining / leaving the chatroom + k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room + k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room + k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first + k_EChatMemberStateChangeKicked = 0x0008, // User kicked + k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned +}; + +// returns true of the flags indicate that a user has been removed from the chat +#define BChatMemberStateChangeRemoved( rgfChatMemberStateChangeFlags ) ( rgfChatMemberStateChangeFlags & ( k_EChatMemberStateChangeDisconnected | k_EChatMemberStateChangeLeft | k_EChatMemberStateChangeKicked | k_EChatMemberStateChangeBanned ) ) + + +//----------------------------------------------------------------------------- +// Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: a server was added/removed from the favorites list, you should refresh now +//----------------------------------------------------------------------------- +struct FavoritesListChanged_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 2 }; + uint32 m_nIP; // an IP of 0 means reload the whole list, any other value means just one server + uint32 m_nQueryPort; + uint32 m_nConnPort; + uint32 m_nAppID; + uint32 m_nFlags; + bool m_bAdd; // true if this is adding the entry, otherwise it is a remove + AccountID_t m_unAccountId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Someone has invited you to join a Lobby +// normally you don't need to do anything with this, since +// the Steam UI will also display a '<user> has invited you to the lobby, join?' dialog +// +// if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", +// or with the callback GameLobbyJoinRequested_t if they're already in-game +//----------------------------------------------------------------------------- +struct LobbyInvite_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 3 }; + + uint64 m_ulSteamIDUser; // Steam ID of the person making the invite + uint64 m_ulSteamIDLobby; // Steam ID of the Lobby + uint64 m_ulGameID; // GameID of the Lobby +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent on entering a lobby, or on failing to enter +// m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, +// or a higher value on failure (see enum EChatRoomEnterResponse) +//----------------------------------------------------------------------------- +struct LobbyEnter_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 4 }; + + uint64 m_ulSteamIDLobby; // SteamID of the Lobby you have entered + uint32 m_rgfChatPermissions; // Permissions of the current user + bool m_bLocked; // If true, then only invited users may join + uint32 m_EChatRoomEnterResponse; // EChatRoomEnterResponse +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby metadata has changed +// if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details +// if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata +//----------------------------------------------------------------------------- +struct LobbyDataUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 5 }; + + uint64 m_ulSteamIDLobby; // steamID of the Lobby + uint64 m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself + uint8 m_bSuccess; // true if we lobby data was successfully changed; + // will only be false if RequestLobbyData() was called on a lobby that no longer exists +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby chat room state has changed +// this is usually sent when a user has joined or left the lobby +//----------------------------------------------------------------------------- +struct LobbyChatUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 6 }; + + uint64 m_ulSteamIDLobby; // Lobby ID + uint64 m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient + uint64 m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) + // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick + uint32 m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values +}; + + +//----------------------------------------------------------------------------- +// Purpose: A chat message for this lobby has been sent +// use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message +//----------------------------------------------------------------------------- +struct LobbyChatMsg_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 7 }; + + uint64 m_ulSteamIDLobby; // the lobby id this is in + uint64 m_ulSteamIDUser; // steamID of the user who has sent this message + uint8 m_eChatEntryType; // type of message + uint32 m_iChatID; // index of the chat entry to lookup +}; + + +//----------------------------------------------------------------------------- +// Purpose: A game created a game for all the members of the lobby to join, +// as triggered by a SetLobbyGameServer() +// it's up to the individual clients to take action on this; the usual +// game behavior is to leave the lobby and connect to the specified game server +//----------------------------------------------------------------------------- +struct LobbyGameCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 9 }; + + uint64 m_ulSteamIDLobby; // the lobby we were in + uint64 m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members + uint32 m_unIP; // IP & Port of the game server (if any) + uint16 m_usPort; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Number of matching lobbies found +// iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 +//----------------------------------------------------------------------------- +struct LobbyMatchList_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 10 }; + uint32 m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted if a user is forcefully removed from a lobby +// can occur if a user loses connection to Steam +//----------------------------------------------------------------------------- +struct LobbyKicked_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 }; + uint64 m_ulSteamIDLobby; // Lobby + uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself + uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct LobbyCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 13 }; + + EResult m_eResult; // k_EResultOK - the lobby was successfully created + // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end + // k_EResultTimeout - you the message to the Steam servers, but it didn't respond + // k_EResultFail - the server responded, but with an unknown internal error + // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game + // k_EResultLimitExceeded - your game client has created too many lobbies + + uint64 m_ulSteamIDLobby; // chat room, zero if failed +}; + +// used by now obsolete RequestFriendsLobbiesResponse_t +// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 }; + + +//----------------------------------------------------------------------------- +// Purpose: Result of CheckForPSNGameBootInvite +// m_eResult == k_EResultOK on success +// at this point, the local user may not have finishing joining this lobby; +// game code should wait until the subsequent LobbyEnter_t callback is received +//----------------------------------------------------------------------------- +struct PSNGameBootInviteResult_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 }; + + bool m_bGameBootInviteExists; + CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct FavoritesListAccountsUpdated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 16 }; + + EResult m_eResult; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMMATCHMAKING diff --git a/lib/linux/include/steam/isteammusic.h b/lib/linux/include/steam/isteammusic.h new file mode 100644 index 0000000..779a4c2 --- /dev/null +++ b/lib/linux/include/steam/isteammusic.h @@ -0,0 +1,67 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSIC_H +#define ISTEAMMUSIC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3 +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions to control music playback in the steam client +//----------------------------------------------------------------------------- +class ISteamMusic +{ +public: + virtual bool BIsEnabled() = 0; + virtual bool BIsPlaying() = 0; + + virtual AudioPlayback_Status GetPlaybackStatus() = 0; + + virtual void Play() = 0; + virtual void Pause() = 0; + virtual void PlayPrevious() = 0; + virtual void PlayNext() = 0; + + // volume is between 0.0 and 1.0 + virtual void SetVolume( float flVolume ) = 0; + virtual float GetVolume() = 0; + +}; + +#define STEAMMUSIC_INTERFACE_VERSION "STEAMMUSIC_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( PlaybackStatusHasChanged_t, k_iSteamMusicCallbacks + 1 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( VolumeHasChanged_t, k_iSteamMusicCallbacks + 2 ) + CALLBACK_MEMBER( 0, float, m_flNewVolume ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + +#endif // #define ISTEAMMUSIC_H diff --git a/lib/linux/include/steam/isteammusicremote.h b/lib/linux/include/steam/isteammusicremote.h new file mode 100644 index 0000000..ea29a7d --- /dev/null +++ b/lib/linux/include/steam/isteammusicremote.h @@ -0,0 +1,129 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSICREMOTE_H +#define ISTEAMMUSICREMOTE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteammusic.h" + +#define k_SteamMusicNameMaxLength 255 +#define k_SteamMusicPNGMaxLength 65535 + + +class ISteamMusicRemote +{ +public: + // Service Definition + virtual bool RegisterSteamMusicRemote( const char *pchName ) = 0; + virtual bool DeregisterSteamMusicRemote() = 0; + virtual bool BIsCurrentMusicRemote() = 0; + virtual bool BActivationSuccess( bool bValue ) = 0; + + virtual bool SetDisplayName( const char *pchDisplayName ) = 0; + virtual bool SetPNGIcon_64x64( void *pvBuffer, uint32 cbBufferLength ) = 0; + + // Abilities for the user interface + virtual bool EnablePlayPrevious(bool bValue) = 0; + virtual bool EnablePlayNext( bool bValue ) = 0; + virtual bool EnableShuffled( bool bValue ) = 0; + virtual bool EnableLooped( bool bValue ) = 0; + virtual bool EnableQueue( bool bValue ) = 0; + virtual bool EnablePlaylists( bool bValue ) = 0; + + // Status + virtual bool UpdatePlaybackStatus( AudioPlayback_Status nStatus ) = 0; + virtual bool UpdateShuffled( bool bValue ) = 0; + virtual bool UpdateLooped( bool bValue ) = 0; + virtual bool UpdateVolume( float flValue ) = 0; // volume is between 0.0 and 1.0 + + // Current Entry + virtual bool CurrentEntryWillChange() = 0; + virtual bool CurrentEntryIsAvailable( bool bAvailable ) = 0; + virtual bool UpdateCurrentEntryText( const char *pchText ) = 0; + virtual bool UpdateCurrentEntryElapsedSeconds( int nValue ) = 0; + virtual bool UpdateCurrentEntryCoverArt( void *pvBuffer, uint32 cbBufferLength ) = 0; + virtual bool CurrentEntryDidChange() = 0; + + // Queue + virtual bool QueueWillChange() = 0; + virtual bool ResetQueueEntries() = 0; + virtual bool SetQueueEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentQueueEntry( int nID ) = 0; + virtual bool QueueDidChange() = 0; + + // Playlist + virtual bool PlaylistWillChange() = 0; + virtual bool ResetPlaylistEntries() = 0; + virtual bool SetPlaylistEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentPlaylistEntry( int nID ) = 0; + virtual bool PlaylistDidChange() = 0; +}; + +#define STEAMMUSICREMOTE_INTERFACE_VERSION "STEAMMUSICREMOTE_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( MusicPlayerRemoteWillActivate_t, k_iSteamMusicRemoteCallbacks + 1) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteWillDeactivate_t, k_iSteamMusicRemoteCallbacks + 2 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteToFront_t, k_iSteamMusicRemoteCallbacks + 3 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWillQuit_t, k_iSteamMusicRemoteCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlay_t, k_iSteamMusicRemoteCallbacks + 5 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPause_t, k_iSteamMusicRemoteCallbacks + 6 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayPrevious_t, k_iSteamMusicRemoteCallbacks + 7 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayNext_t, k_iSteamMusicRemoteCallbacks + 8 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsShuffled_t, k_iSteamMusicRemoteCallbacks + 9 ) + CALLBACK_MEMBER( 0, bool, m_bShuffled ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsLooped_t, k_iSteamMusicRemoteCallbacks + 10 ) + CALLBACK_MEMBER(0, bool, m_bLooped ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsVolume_t, k_iSteamMusicCallbacks + 11 ) + CALLBACK_MEMBER(0, float, m_flNewVolume) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsQueueEntry_t, k_iSteamMusicCallbacks + 12 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsPlaylistEntry_t, k_iSteamMusicCallbacks + 13 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsPlayingRepeatStatus_t, k_iSteamMusicRemoteCallbacks + 14 ) + CALLBACK_MEMBER(0, int, m_nPlayingRepeatStatus ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + + +#endif // #define ISTEAMMUSICREMOTE_H diff --git a/lib/linux/include/steam/isteamnetworking.h b/lib/linux/include/steam/isteamnetworking.h new file mode 100644 index 0000000..8f70819 --- /dev/null +++ b/lib/linux/include/steam/isteamnetworking.h @@ -0,0 +1,306 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing network connections between game clients & servers +// +//============================================================================= + +#ifndef ISTEAMNETWORKING +#define ISTEAMNETWORKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible errors returned by SendP2PPacket() API +// these will be posted in the P2PSessionConnectFail_t callback +enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, // target is not running the same game + k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running + k_EP2PSessionErrorDestinationNotLoggedIn = 3, // target user isn't connected to Steam + k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() + // corporate firewalls can also block this (NAT traversal is not firewall traversal) + // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + k_EP2PSessionErrorMax = 5 +}; + +// SendP2PPacket() send types +// Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets +enum EP2PSend +{ + // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). + // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or + // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. + k_EP2PSendUnreliable = 0, + + // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first + // packet sent to a remote host almost guarantees the packet will be dropped. + // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets + k_EP2PSendUnreliableNoDelay = 1, + + // Reliable message send. Can send up to 1MB of data in a single message. + // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. + k_EP2PSendReliable = 2, + + // As above, but applies the Nagle algorithm to the send - sends will accumulate + // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). + // Useful if you want to send a set of smaller messages but have the coalesced into a single packet + // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then + // do a normal k_EP2PSendReliable to force all the buffered data to be sent. + k_EP2PSendReliableWithBuffering = 3, + +}; + + +// connection state to a specified user, returned by GetP2PSessionState() +// this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct P2PSessionState_t +{ + uint8 m_bConnectionActive; // true if we've got an active open connection + uint8 m_bConnecting; // true if we're currently trying to establish a connection + uint8 m_eP2PSessionError; // last error recorded (see enum above) + uint8 m_bUsingRelay; // true if it's going through a relay server (TURN) + int32 m_nBytesQueuedForSend; + int32 m_nPacketsQueuedForSend; + uint32 m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. + uint16 m_nRemotePort; // Only exists for compatibility with older authentication api's +}; +#pragma pack( pop ) + + +// handle to a socket +typedef uint32 SNetSocket_t; // CreateP2PConnectionSocket() +typedef uint32 SNetListenSocket_t; // CreateListenSocket() + +// connection progress indicators, used by CreateP2PConnectionSocket() +enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + + // communication is valid + k_ESNetSocketStateConnected = 1, + + // states while establishing a connection + k_ESNetSocketStateInitiated = 10, // the connection state machine has started + + // p2p connections + k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info + k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info + + // direct connections + k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server + + // failure states + k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end + k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown + k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection + k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us + k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke + +}; + +// describes how the socket is currently connected +enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for making connections and sending data between clients, +// traversing NAT's where possible +//----------------------------------------------------------------------------- +class ISteamNetworking +{ +public: + //////////////////////////////////////////////////////////////////////////////////////////// + // Session-less connection functions + // automatically establishes NAT-traversing or Relay server connections + + // Sends a P2P packet to the specified user + // UDP-like, unreliable and a max packet size of 1200 bytes + // the first packet send may be delayed as the NAT-traversal code runs + // if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + // see EP2PSend enum above for the descriptions of the different ways of sending packets + // + // nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + // with the same channel number in order to retrieve the data on the other end + // using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + virtual bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 ) = 0; + + // returns true if any data is available for read, and the amount of data that will need to be read + virtual bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 ) = 0; + + // reads in a packet that has been sent from another user via SendP2PPacket() + // returns the size of the message and the steamID of the user who sent it in the last two parameters + // if the buffer passed in is too small, the message will be truncated + // this call is not blocking, and will return false if no data is available + virtual bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 ) = 0; + + // AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + // P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + // if you don't want to talk to the user, just ignore the request + // if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + // this may be called multiple times for a single user + // (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + virtual bool AcceptP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + // if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + virtual bool CloseP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + // open channels to a user have been closed, the open session to the user will be closed and new data from this + // user will trigger a P2PSessionRequest_t callback + virtual bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel ) = 0; + + // fills out P2PSessionState_t structure with details about the underlying connection to the user + // should only needed for debugging purposes + // returns false if no connection exists to the specified user + virtual bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState ) = 0; + + // Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + // or NAT-traversal cannot be established. Only applies to connections created after setting this value, + // or to existing connections that need to automatically reconnect after this value is set. + // + // P2P packet relay is allowed by default + virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; + + + //////////////////////////////////////////////////////////////////////////////////////////// + // LISTEN / CONNECT style interface functions + // + // This is an older set of functions designed around the Berkeley TCP sockets model + // it's preferential that you use the above P2P functions, they're more robust + // and these older functions will be removed eventually + // + //////////////////////////////////////////////////////////////////////////////////////////// + + + // creates a socket and listens others to connect + // will trigger a SocketStatusCallback_t callback on another client connecting + // nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + // this can usually just be 0 unless you want multiple sets of connections + // unIP is the local IP address to bind to + // pass in 0 if you just want the default local IP + // unPort is the port to use + // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; + + // creates a socket and begin connection to a remote destination + // can connect via a known steamID (client or game server), or directly to an IP + // on success will trigger a SocketStatusCallback_t callback + // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; + virtual SNetSocket_t CreateConnectionSocket( uint32 nIP, uint16 nPort, int nTimeoutSec ) = 0; + + // disconnects the connection to the socket, if any, and invalidates the handle + // any unread data on the socket will be thrown away + // if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + virtual bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + // destroying a listen socket will automatically kill all the regular sockets generated from it + virtual bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + + // sending data + // must be a handle to a connected socket + // data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + // use the reliable flag with caution; although the resend rate is pretty aggressive, + // it can still cause stalls in receiving data (like TCP) + virtual bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable ) = 0; + + // receiving data + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + virtual bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize ) = 0; + + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + virtual bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + + // checks for data from any socket that has been connected off this listen socket + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + // fills out *phSocket with the socket that data is available on + virtual bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // retrieves data from any socket that has been connected off this listen socket + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + // fills out *phSocket with the socket that data is available on + virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // returns information about the specified socket, filling out the contents of the pointers + virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, uint32 *punIPRemote, uint16 *punPortRemote ) = 0; + + // returns which local port the listen socket is bound to + // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, uint32 *pnIP, uint16 *pnPort ) = 0; + + // returns true to describe how the socket ended up connecting + virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; + + // max packet size, in bytes + virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; +}; +#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking005" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API +// in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them +struct P2PSessionRequest_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 2 }; + CSteamID m_steamIDRemote; // user who wants to talk to us +}; + + +// callback notification - packets can't get through to the specified user via the SendP2PPacket() API +// all packets queued packets unsent at this point will be dropped +// further attempts to send will retry making the connection (but will be dropped if we fail again) +struct P2PSessionConnectFail_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 3 }; + CSteamID m_steamIDRemote; // user we were sending packets to + uint8 m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble +}; + + +// callback notification - status of a socket has changed +// used as part of the CreateListenSocket() / CreateP2PConnectionSocket() +struct SocketStatusCallback_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 1 }; + SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host + SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection + CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one + int m_eSNetSocketState; // socket state, ESNetSocketState +}; + +#pragma pack( pop ) + +#endif // ISTEAMNETWORKING diff --git a/lib/linux/include/steam/isteamps3overlayrenderer.h b/lib/linux/include/steam/isteamps3overlayrenderer.h new file mode 100644 index 0000000..4e07d4a --- /dev/null +++ b/lib/linux/include/steam/isteamps3overlayrenderer.h @@ -0,0 +1,91 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface the game must provide Steam with on PS3 in order for the +// Steam overlay to render. +// +//============================================================================= + +#ifndef ISTEAMPS3OVERLAYRENDERER_H +#define ISTEAMPS3OVERLAYRENDERER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cell/pad.h" + +//----------------------------------------------------------------------------- +// Purpose: Enum for supported gradient directions +//----------------------------------------------------------------------------- +enum EOverlayGradientDirection +{ + k_EOverlayGradientHorizontal = 1, + k_EOverlayGradientVertical = 2, + k_EOverlayGradientNone = 3, +}; + +// Helpers for fetching individual color components from ARGB packed DWORD colors Steam PS3 overlay renderer uses. +#define STEAM_COLOR_RED( color ) \ + (int)(((color)>>16)&0xff) + +#define STEAM_COLOR_GREEN( color ) \ + (int)(((color)>>8)&0xff) + +#define STEAM_COLOR_BLUE( color ) \ + (int)((color)&0xff) + +#define STEAM_COLOR_ALPHA( color ) \ + (int)(((color)>>24)&0xff) + + +//----------------------------------------------------------------------------- +// Purpose: Interface the game must expose to Steam for rendering +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRenderHost +{ +public: + + // Interface for game engine to implement which Steam requires to render. + + // Draw a textured rect. This may use only part of the texture and will pass texture coords, it will also possibly request a gradient and will specify colors for vertexes. + virtual void DrawTexturedRect( int x0, int y0, int x1, int y1, float u0, float v0, float u1, float v1, int32 iTextureID, DWORD colorStart, DWORD colorEnd, EOverlayGradientDirection eDirection ) = 0; + + // Load a RGBA texture for Steam, or update a previously loaded one. Updates may be partial. You must not evict or remove this texture once Steam has uploaded it. + virtual void LoadOrUpdateTexture( int32 iTextureID, bool bIsFullTexture, int x0, int y0, uint32 uWidth, uint32 uHeight, int32 iBytes, char *pData ) = 0; + + // Delete a texture Steam previously uploaded + virtual void DeleteTexture( int32 iTextureID ) = 0; + + // Delete all previously uploaded textures + virtual void DeleteAllTextures() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Interface Steam exposes for the game to tell it when to render, etc. +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRender +{ +public: + + // Call once at startup to initialize the Steam overlay and pass it your host interface ptr + virtual bool BHostInitialize( uint32 unScreenWidth, uint32 unScreenHeight, uint32 unRefreshRate, ISteamPS3OverlayRenderHost *pRenderHost, void *CellFontLib ) = 0; + + // Call this once a frame when you are ready for the Steam overlay to render (ie, right before flipping buffers, after all your rendering) + virtual void Render() = 0; + + // Call this everytime you read input on PS3. + // + // If this returns true, then the overlay is active and has consumed the input, your game + // should then ignore all the input until BHandleCellPadData once again returns false, which + // will mean the overlay is deactivated. + virtual bool BHandleCellPadData( const CellPadData &padData ) = 0; + + // Call this if you detect no controllers connected or that the XMB is intercepting input + // + // This is important to clear input state for the overlay, so keys left down during XMB activation + // are not continued to be processed. + virtual bool BResetInputState() = 0; +}; + + +#endif // ISTEAMPS3OVERLAYRENDERER_H \ No newline at end of file diff --git a/lib/linux/include/steam/isteamremotestorage.h b/lib/linux/include/steam/isteamremotestorage.h new file mode 100644 index 0000000..3ac2871 --- /dev/null +++ b/lib/linux/include/steam/isteamremotestorage.h @@ -0,0 +1,681 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMREMOTESTORAGE_H +#define ISTEAMREMOTESTORAGE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +//----------------------------------------------------------------------------- +// Purpose: Defines the largest allowed file size. Cloud files cannot be written +// in a single chunk over 100MB (and cannot be over 200MB total.) +//----------------------------------------------------------------------------- +const uint32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + + +//----------------------------------------------------------------------------- +// Purpose: Structure that contains an array of const char * strings and the number of those strings +//----------------------------------------------------------------------------- +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct SteamParamStringArray_t +{ + const char ** m_ppStrings; + int32 m_nNumStrings; +}; +#pragma pack( pop ) + +// A handle to a piece of user generated content +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +const PublishedFileId_t k_PublishedFileIdInvalid = 0; +const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull; +const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull; + +// Handle for writing to Steam Cloud +typedef uint64 UGCFileWriteStreamHandle_t; +const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull; + +const uint32 k_cchPublishedDocumentTitleMax = 128 + 1; +const uint32 k_cchPublishedDocumentDescriptionMax = 8000; +const uint32 k_cchPublishedDocumentChangeDescriptionMax = 8000; +const uint32 k_unEnumeratePublishedFilesMaxResults = 50; +const uint32 k_cchTagListMax = 1024 + 1; +const uint32 k_cchFilenameMax = 260; +const uint32 k_cchPublishedFileURLMax = 256; + + +enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = (1 << 0), + k_ERemoteStoragePlatformOSX = (1 << 1), + k_ERemoteStoragePlatformPS3 = (1 << 2), + k_ERemoteStoragePlatformLinux = (1 << 3), + k_ERemoteStoragePlatformReserved2 = (1 << 4), + + k_ERemoteStoragePlatformAll = 0xffffffff +}; + +enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +}; + + +enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + + k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to + k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game + k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items + k_EWorkshopFileTypeArt = 3, // artwork + k_EWorkshopFileTypeVideo = 4, // external video + k_EWorkshopFileTypeScreenshot = 5, // screenshot + k_EWorkshopFileTypeGame = 6, // Greenlight game entry + k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry + k_EWorkshopFileTypeConcept = 8, // Greenlight concept + k_EWorkshopFileTypeWebGuide = 9, // Steam web guide + k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide + k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold + k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings + k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal + k_EWorkshopFileTypeSteamVideo = 14, // Steam video + k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + + // Update k_EWorkshopFileTypeMax if you add values. + k_EWorkshopFileTypeMax = 16 + +}; + +enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +}; + +enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +}; + +enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +}; + +enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1 +}; + + +enum EUGCReadAction +{ + // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. + // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. + // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. + k_EUGCRead_ContinueReadingUntilFinished = 0, + + // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. + // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. + k_EUGCRead_ContinueReading = 1, + + // Frees the file handle. Use this when you're done reading the content. + // To read the file from Steam again you will need to call UGCDownload again. + k_EUGCRead_Close = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing, reading and writing files stored remotely +// and cached locally +//----------------------------------------------------------------------------- +class ISteamRemoteStorage +{ + public: + // NOTE + // + // Filenames are case-insensitive, and will be converted to lowercase automatically. + // So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then + // iterate the files, the filename returned will be "foo.bar". + // + + // file operations + virtual bool FileWrite( const char *pchFile, const void *pvData, int32 cubData ) = 0; + virtual int32 FileRead( const char *pchFile, void *pvData, int32 cubDataToRead ) = 0; + + CALL_RESULT( RemoteStorageFileWriteAsyncComplete_t ) + virtual SteamAPICall_t FileWriteAsync( const char *pchFile, const void *pvData, uint32 cubData ) = 0; + + CALL_RESULT( RemoteStorageFileReadAsyncComplete_t ) + virtual SteamAPICall_t FileReadAsync( const char *pchFile, uint32 nOffset, uint32 cubToRead ) = 0; + virtual bool FileReadAsyncComplete( SteamAPICall_t hReadCall, void *pvBuffer, uint32 cubToRead ) = 0; + + virtual bool FileForget( const char *pchFile ) = 0; + virtual bool FileDelete( const char *pchFile ) = 0; + CALL_RESULT( RemoteStorageFileShareResult_t ) + virtual SteamAPICall_t FileShare( const char *pchFile ) = 0; + virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0; + + // file operations that cause network IO + virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0; + virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0; + virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0; + virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0; + + // file information + virtual bool FileExists( const char *pchFile ) = 0; + virtual bool FilePersisted( const char *pchFile ) = 0; + virtual int32 GetFileSize( const char *pchFile ) = 0; + virtual int64 GetFileTimestamp( const char *pchFile ) = 0; + virtual ERemoteStoragePlatform GetSyncPlatforms( const char *pchFile ) = 0; + + // iteration + virtual int32 GetFileCount() = 0; + virtual const char *GetFileNameAndSize( int iFile, int32 *pnFileSizeInBytes ) = 0; + + // configuration management + virtual bool GetQuota( uint64 *pnTotalBytes, uint64 *puAvailableBytes ) = 0; + virtual bool IsCloudEnabledForAccount() = 0; + virtual bool IsCloudEnabledForApp() = 0; + virtual void SetCloudEnabledForApp( bool bEnabled ) = 0; + + // user generated content + + // Downloads a UGC file. A priority value of 0 will download the file immediately, + // otherwise it will wait to download the file until all downloads with a lower priority + // value are completed. Downloads with equal priority will occur simultaneously. + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0; + + // Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false + // or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage + virtual bool GetUGCDownloadProgress( UGCHandle_t hContent, int32 *pnBytesDownloaded, int32 *pnBytesExpected ) = 0; + + // Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result + virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, OUT_STRING() char **ppchName, int32 *pnFileSizeInBytes, OUT_STRUCT() CSteamID *pSteamIDOwner ) = 0; + + // After download, gets the content of the file. + // Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. + // Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate + // enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail + // unless UGCDownload is called again. + // For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. + virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ) = 0; + + // Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() + virtual int32 GetCachedUGCCount() = 0; + virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; + + // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you + // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. + +#if defined(_PS3) || defined(_SERVER) + // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback + virtual void GetFileListFromServer() = 0; + // Indicate this file should be downloaded in the next sync + virtual bool FileFetch( const char *pchFile ) = 0; + // Indicate this file should be persisted in the next sync + virtual bool FilePersist( const char *pchFile ) = 0; + // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback + virtual bool SynchronizeToClient() = 0; + // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback + virtual bool SynchronizeToServer() = 0; + // Reset any fetch/persist/etc requests + virtual bool ResetFileRequestState() = 0; +#endif + + // publishing UGC + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; + virtual PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileFile( PublishedFileUpdateHandle_t updateHandle, const char *pchFile ) = 0; + virtual bool UpdatePublishedFilePreviewFile( PublishedFileUpdateHandle_t updateHandle, const char *pchPreviewFile ) = 0; + virtual bool UpdatePublishedFileTitle( PublishedFileUpdateHandle_t updateHandle, const char *pchTitle ) = 0; + virtual bool UpdatePublishedFileDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchDescription ) = 0; + virtual bool UpdatePublishedFileVisibility( PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; + virtual bool UpdatePublishedFileTags( PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageUpdatePublishedFileResult_t ) + virtual SteamAPICall_t CommitPublishedFileUpdate( PublishedFileUpdateHandle_t updateHandle ) = 0; + // Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, + // cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. + // A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. + CALL_RESULT( RemoteStorageGetPublishedFileDetailsResult_t ) + virtual SteamAPICall_t GetPublishedFileDetails( PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ) = 0; + CALL_RESULT( RemoteStorageDeletePublishedFileResult_t ) + virtual SteamAPICall_t DeletePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + // enumerate the files that the current user published with this app + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserPublishedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserSubscribedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSubscribedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileSetChangeDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchChangeDescription ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageUpdateUserPublishedItemVoteResult_t ) + virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0; + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageSetUserPublishedFileActionResult_t ) + virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0; + CALL_RESULT( RemoteStorageEnumeratePublishedFilesByUserActionResult_t ) + virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0; + // this method enumerates the public view of workshop files + CALL_RESULT( RemoteStorageEnumerateWorkshopFilesResult_t ) + virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0; + + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; +}; + +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: sent when the local file cache is fully synced with the server for an app +// That means that an application can be started and has all latest files +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedClient_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumDownloads; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent when the server is fully synced with the local file cache for an app +// That means that we can shutdown Steam and our data is stored on the server +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedServer_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumUploads; +}; + +//----------------------------------------------------------------------------- +// Purpose: Status of up and downloads during a sync session +// +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; + char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred + AppId_t m_nAppID; // App this info relates to + uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk + double m_dAppPercentComplete; // Percent complete that this app's transfers are + bool m_bUploading; // if false, downloading +}; + +// +// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h +// + + +//----------------------------------------------------------------------------- +// Purpose: Sent after we've determined the list of files that are out of sync +// with the server. +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncStatusCheck_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; + AppId_t m_nAppID; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to FileShare() +//----------------------------------------------------------------------------- +struct RemoteStorageFileShareResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + EResult m_eResult; // The result of the operation + UGCHandle_t m_hFile; // The handle that can be shared with users and features + char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared +}; + + +// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to PublishFile() +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to DeletePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageDeletePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateUserPublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageSubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateSubscribePublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +#if defined(VALVE_CALLBACK_PACK_SMALL) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 ); +#elif defined(VALVE_CALLBACK_PACK_LARGE) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 + 4 ); +#else +#warning You must first include isteamclient.h +#endif + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UnsubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageUnsubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to CommitPublishedFileUpdate() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdatePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UGCDownload() +//----------------------------------------------------------------------------- +struct RemoteStorageDownloadUGCResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + EResult m_eResult; // The result of the operation. + UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. + AppId_t m_nAppID; // ID of the app that created this file. + int32 m_nSizeInBytes; // The size of the file that was downloaded, in bytes. + char m_pchFileName[k_cchFilenameMax]; // The name of the file that was downloaded. + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetPublishedFileDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedFileDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + ERemoteStoragePublishedFileVisibility m_eVisibility; + bool m_bBanned; + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_pchFileName[k_cchFilenameMax]; // The name of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + EWorkshopFileType m_eFileType; // Type of the file + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop +}; + + +struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + EResult m_eResult; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ]; + AppId_t m_nAppId; + uint32 m_unStartIndex; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of GetPublishedItemVoteDetails +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + EResult m_eResult; + PublishedFileId_t m_unPublishedFileId; + int32 m_nVotesFor; + int32 m_nVotesAgainst; + int32 m_nReports; + float m_fScore; +}; + + +//----------------------------------------------------------------------------- +// Purpose: User subscribed to a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileSubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + +//----------------------------------------------------------------------------- +// Purpose: User unsubscribed from a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUnsubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Published file that a user owns was deleted (from within the app or the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileDeleted_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UpdateUserPublishedItemVote() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserPublishedItemVoteDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageUserVoteDetails_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopVote m_eVote; // what the user voted +}; + +struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +struct RemoteStorageSetUserPublishedFileActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopFileAction m_eAction; // the action that was attempted +}; + +struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + EResult m_eResult; // The result of the operation. + EWorkshopFileAction m_eAction; // the action that was filtered on + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called periodically while a PublishWorkshopFile is in progress +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + double m_dPercentFile; + bool m_bPreview; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called when the content for a published file is updated +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUpdated_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. + uint64 m_ulUnused; // not used anymore +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileWriteAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileWriteAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + EResult m_eResult; // result +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileReadAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileReadAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made + EResult m_eResult; // result + uint32 m_nOffset; // offset in the file this read was at + uint32 m_cubRead; // amount read - will the <= the amount requested +}; + +#pragma pack( pop ) + + +#endif // ISTEAMREMOTESTORAGE_H diff --git a/lib/linux/include/steam/isteamscreenshots.h b/lib/linux/include/steam/isteamscreenshots.h new file mode 100644 index 0000000..6095705 --- /dev/null +++ b/lib/linux/include/steam/isteamscreenshots.h @@ -0,0 +1,116 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMSCREENSHOTS_H +#define ISTEAMSCREENSHOTS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +const uint32 k_nScreenshotMaxTaggedUsers = 32; +const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32; +const int k_cubUFSTagTypeMax = 255; +const int k_cubUFSTagValueMax = 255; + +// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail +// one will be generated. +const int k_ScreenshotThumbWidth = 200; + +// Handle is valid for the lifetime of your process and no longer +typedef uint32 ScreenshotHandle; +#define INVALID_SCREENSHOT_HANDLE 0 + +enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5 +}; + +//----------------------------------------------------------------------------- +// Purpose: Functions for adding screenshots to the user's screenshot library +//----------------------------------------------------------------------------- +class ISteamScreenshots +{ +public: + // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0; + + // Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio + // as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0; + + // Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. + virtual void TriggerScreenshot() = 0; + + // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, + // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary + // in response. + virtual void HookScreenshots( bool bHook ) = 0; + + // Sets metadata about a screenshot's location (for example, the name of the map) + virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0; + + // Tags a user as being visible in the screenshot + virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0; + + // Tags a published file as being visible in the screenshot + virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0; + + // Returns true if the app has hooked the screenshot + virtual bool IsScreenshotsHooked() = 0; + + // Adds a VR screenshot to the user's screenshot library from disk in the supported type. + // pchFilename should be the normal 2D image used in the library view + // pchVRFilename should contain the image that matches the correct type + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename ) = 0; +}; + +#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: Screenshot successfully written or otherwise added to the library +// and can now be tagged +//----------------------------------------------------------------------------- +struct ScreenshotReady_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 }; + ScreenshotHandle m_hLocal; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: Screenshot has been requested by the user. Only sent if +// HookScreenshots() has been called, in which case Steam will not take +// the screenshot itself. +//----------------------------------------------------------------------------- +struct ScreenshotRequested_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMSCREENSHOTS_H + diff --git a/lib/linux/include/steam/isteamugc.h b/lib/linux/include/steam/isteamugc.h new file mode 100644 index 0000000..1827fc6 --- /dev/null +++ b/lib/linux/include/steam/isteamugc.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam ugc +// +//============================================================================= + +#ifndef ISTEAMUGC_H +#define ISTEAMUGC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; + + +const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; +const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; + + +// Matching UGC types for queries +enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) + k_EUGCMatchingUGCType_All = ~0, // return everything +}; + +// Different lists of published UGC for a user. +// If the current logged in user is different than the specified user, then some options may not be allowed. +enum EUserUGCList +{ + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, +}; + +// Sort order for user published UGC lists (defaults to creation order descending) +enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, +}; + +// Combination of sorting and filtering for queries across all UGC +enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +}; + +enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t + k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data + k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files + k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam + k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image + k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes +}; + +enum EItemState +{ + k_EItemStateNone = 0, // item not tracked on client + k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. + k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage + k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) + k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content + k_EItemStateDownloading = 16, // item update is currently downloading + k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired +}; + +enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +}; + +enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) + k_EItemPreviewType_YouTubeVideo = 1, // video id is stored + k_EItemPreviewType_Sketchfab = 2, // model id is stored + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout + // +---+---+-------+ + // | |Up | | + // +---+---+---+---+ + // | L | F | R | B | + // +---+---+---+---+ + // | |Dn | | + // +---+---+---+---+ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value +}; + +const uint32 kNumUGCResultsPerPage = 50; +const uint32 k_cchDeveloperMetadataMax = 5000; + +// Details for a single published file/UGC +struct SteamUGCDetails_t +{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; // The result of the operation. + EWorkshopFileType m_eFileType; // Type of the file + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + uint32 m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) + ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility + bool m_bBanned; // whether the file was banned + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + // file/url information + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + // voting information + uint32 m_unVotesUp; // number of votes up + uint32 m_unVotesDown; // number of votes down + float m_flScore; // calculated score + // collection details + uint32 m_unNumChildren; +}; + +//----------------------------------------------------------------------------- +// Purpose: Steam UGC support API +//----------------------------------------------------------------------------- +class ISteamUGC +{ +public: + + // Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + + // Send the query to Steam + CALL_RESULT( SteamUGCQueryCompleted_t ) + virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Retrieve an individual result after receiving the callback for querying UGC + virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; + virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; + virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; + virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; + virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0; + virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; + virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + + // Release the request to free up memory, after retrieving results + virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Options to set for querying UGC + virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; + virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; + virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0; + virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0; + virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; + virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; + virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; + virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; + virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; + + // Options only for querying user UGC + virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; + + // Options only for querying all UGC + virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; + virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; + virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; + + // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; + + // Steam Workshop Creator API + CALL_RESULT( CreateItemResult_t ) + virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet + + virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + + virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item + virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item + virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set + virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item + virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item + virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder + virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key + virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. + virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item + virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item + virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) + + CALL_RESULT( SubmitItemUpdateResult_t ) + virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() + virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0; + + // Steam Workshop Consumer API + CALL_RESULT( SetUserItemVoteResult_t ) + virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0; + CALL_RESULT( GetUserItemVoteResult_t ) + virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits + virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items + virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs + + // get EItemState flags about item on this client + virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0; + + // get info about currently installed content on disc for items that have k_EItemStateInstalled set + // if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0; + + // get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + // then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + // If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0; + + // game servers can set a specific workshop folder before issuing any UGC commands. + // This is helpful if you want to support multiple game servers running out of the same install folder + virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0; + + // SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends + virtual void SuspendDownloads( bool bSuspend ) = 0; + + // usage tracking + CALL_RESULT( StartPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; +}; + +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION009" + +//----------------------------------------------------------------------------- +// Purpose: Callback for querying UGC +//----------------------------------------------------------------------------- +struct SteamUGCQueryCompleted_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + UGCQueryHandle_t m_handle; + EResult m_eResult; + uint32 m_unNumResultsReturned; + uint32 m_unTotalMatchingResults; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback for requesting details on one piece of UGC +//----------------------------------------------------------------------------- +struct SteamUGCRequestUGCDetailsResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + SteamUGCDetails_t m_details; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::CreateItem() +//----------------------------------------------------------------------------- +struct CreateItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::SubmitItemUpdate() +//----------------------------------------------------------------------------- +struct SubmitItemUpdateResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + EResult m_eResult; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a Workshop item has been installed or updated +//----------------------------------------------------------------------------- +struct ItemInstalled_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of DownloadItem(), existing item files can be accessed again +//----------------------------------------------------------------------------- +struct DownloadItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() +//----------------------------------------------------------------------------- +struct UserFavoriteItemsListChanged_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bWasAddRequest; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SetUserItemVote() +//----------------------------------------------------------------------------- +struct SetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVoteUp; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserItemVote() +//----------------------------------------------------------------------------- +struct GetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVotedUp; + bool m_bVotedDown; + bool m_bVoteSkipped; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StartPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StartPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StopPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StopPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + EResult m_eResult; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMUGC_H diff --git a/lib/linux/include/steam/isteamunifiedmessages.h b/lib/linux/include/steam/isteamunifiedmessages.h new file mode 100644 index 0000000..684f4e8 --- /dev/null +++ b/lib/linux/include/steam/isteamunifiedmessages.h @@ -0,0 +1,63 @@ +//====== Copyright � 1996-2007, Valve Corporation, All rights reserved. ======= +// +// Purpose: Interface to unified messages client +// +// You should not need to use this interface except if your product is using a language other than C++. +// Contact your Steam Tech contact for more details. +// +//============================================================================= + +#ifndef ISTEAMUNIFIEDMESSAGES_H +#define ISTEAMUNIFIEDMESSAGES_H +#ifdef _WIN32 +#pragma once +#endif + +typedef uint64 ClientUnifiedMessageHandle; + +class ISteamUnifiedMessages +{ +public: + static const ClientUnifiedMessageHandle k_InvalidUnifiedMessageHandle = 0; + + // Sends a service method (in binary serialized form) using the Steam Client. + // Returns a unified message handle (k_InvalidUnifiedMessageHandle if could not send the message). + virtual ClientUnifiedMessageHandle SendMethod( const char *pchServiceMethod, const void *pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext ) = 0; + + // Gets the size of the response and the EResult. Returns false if the response is not ready yet. + virtual bool GetMethodResponseInfo( ClientUnifiedMessageHandle hHandle, uint32 *punResponseSize, EResult *peResult ) = 0; + + // Gets a response in binary serialized form (and optionally release the corresponding allocated memory). + virtual bool GetMethodResponseData( ClientUnifiedMessageHandle hHandle, void *pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease ) = 0; + + // Releases the message and its corresponding allocated memory. + virtual bool ReleaseMethod( ClientUnifiedMessageHandle hHandle ) = 0; + + // Sends a service notification (in binary serialized form) using the Steam Client. + // Returns true if the notification was sent successfully. + virtual bool SendNotification( const char *pchServiceNotification, const void *pNotificationBuffer, uint32 unNotificationBufferSize ) = 0; +}; + +#define STEAMUNIFIEDMESSAGES_INTERFACE_VERSION "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct SteamUnifiedMessagesSendMethodResult_t +{ + enum { k_iCallback = k_iClientUnifiedMessagesCallbacks + 1 }; + ClientUnifiedMessageHandle m_hHandle; // The handle returned by SendMethod(). + uint64 m_unContext; // Context provided when calling SendMethod(). + EResult m_eResult; // The result of the method call. + uint32 m_unResponseSize; // The size of the response. +}; + +#pragma pack( pop ) + +#endif // ISTEAMUNIFIEDMESSAGES_H diff --git a/lib/linux/include/steam/isteamuser.h b/lib/linux/include/steam/isteamuser.h new file mode 100644 index 0000000..f97a057 --- /dev/null +++ b/lib/linux/include/steam/isteamuser.h @@ -0,0 +1,355 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to user account information in Steam +// +//============================================================================= + +#ifndef ISTEAMUSER_H +#define ISTEAMUSER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// structure that contains client callback data +// see callbacks documentation for more details +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct CallbackMsg_t +{ + HSteamUser m_hSteamUser; + int m_iCallback; + uint8 *m_pubParam; + int m_cubParam; +}; +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing and manipulating a steam account +// associated with one client instance +//----------------------------------------------------------------------------- +class ISteamUser +{ +public: + // returns the HSteamUser this interface represents + // this is only used internally by the API, and by a few select interfaces that support multi-user + virtual HSteamUser GetHSteamUser() = 0; + + // returns true if the Steam client current has a live connection to the Steam servers. + // If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. + // The Steam client will automatically be trying to recreate the connection as often as possible. + virtual bool BLoggedOn() = 0; + + // returns the CSteamID of the account currently logged into the Steam client + // a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API + virtual CSteamID GetSteamID() = 0; + + // Multiplayer Authentication functions + + // InitiateGameConnection() starts the state machine for authenticating the game client with the game server + // It is the client portion of a three-way handshake between the client, the game server, and the steam servers + // + // Parameters: + // void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. + // int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> ) + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + // bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) + // + // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed + // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + + // notify of disconnect + // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + + // Legacy functions + + // used by only a few games to track usage events + virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; + + // get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. + // this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local" + virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0; + + // Starts voice recording. Once started, use GetVoice() to get the data + virtual void StartVoiceRecording( ) = 0; + + // Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for + // a little bit after this function is called. GetVoice() should continue to be called until it returns + // k_eVoiceResultNotRecording + virtual void StopVoiceRecording( ) = 0; + + // Determine the amount of captured audio data that is available in bytes. + // This provides both the compressed and uncompressed data. Please note that the uncompressed + // data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected. + // nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case) + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to + // DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format. + // Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected, and may have passed through denoising filters, etc. + // This function should be called as often as possible once recording has started; once per frame at least. + // nBytesWritten is set to the number of bytes written to pDestBuffer. + // nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer. + // You must grab both compressed and uncompressed here at the same time, if you want both. + // Matching data that is not read during this call will be thrown away. + // GetAvailableVoice() can be used to determine how much data is actually available. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Decompresses a chunk of compressed data produced by GetVoice(). + // nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall. + // In that case, nBytesWritten is set to the size of the buffer required to decompress the given + // data. The suggested buffer size for the destination buffer is 22 kilobytes. + // The output format of the data is 16-bit signed at the requested samples per second. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate + virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; + + // This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results + virtual uint32 GetVoiceOptimalSampleRate() = 0; + + // Retrieve ticket to be sent to the entity who wishes to authenticate you. + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to BeginAuthSession, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam + // (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. + virtual bool BIsBehindNAT() = 0; + + // set data to be replicated to friends so that they can join your game + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + virtual void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer ) = 0; + + // Requests a ticket encrypted with an app specific shared key + // pDataToInclude, cbDataToInclude will be encrypted into the ticket + // ( This is asynchronous, you must wait for the ticket to be completed by the server ) + CALL_RESULT( EncryptedAppTicketResponse_t ) + virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; + + // retrieve a finished ticket + virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Trading Card badges data access + // if you only have one set of cards, the series will be 1 + // the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) + virtual int GetGameBadgeLevel( int nSeries, bool bFoil ) = 0; + + // gets the Steam Level of the user, as shown on their profile + virtual int GetPlayerSteamLevel() = 0; + + // Requests a URL which authenticates an in-game browser for store check-out, + // and then redirects to the specified URL. As long as the in-game browser + // accepts and handles session cookies, Steam microtransaction checkout pages + // will automatically recognize the user instead of presenting a login page. + // The result of this API call will be a StoreAuthURLResponse_t callback. + // NOTE: The URL has a very short lifetime to prevent history-snooping attacks, + // so you should only call this API when you are about to launch the browser, + // or else immediately navigate to the result URL using a hidden browser window. + // NOTE 2: The resulting authorization cookie has an expiration time of one day, + // so it would be a good idea to request and visit a new auth URL every 12 hours. + CALL_RESULT( StoreAuthURLResponse_t ) + virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; + + // gets whether the users phone number is verified + virtual bool BIsPhoneVerified() = 0; + + // gets whether the user has two factor enabled on their account + virtual bool BIsTwoFactorEnabled() = 0; + + // gets whether the users phone number is identifying + virtual bool BIsPhoneIdentifying() = 0; + + // gets whether the users phone number is awaiting (re)verification + virtual bool BIsPhoneRequiringVerification() = 0; + +}; + +#define STEAMUSER_INTERFACE_VERSION "SteamUser019" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a connections to the Steam back-end has been established +// this means the Steam client now has a working connection to the Steam servers +// usually this will have occurred before the game has launched, and should +// only be seen if the user has dropped connection due to a networking issue +// or a Steam server update +//----------------------------------------------------------------------------- +struct SteamServersConnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 1 }; +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a connection attempt has failed +// this will occur periodically if the Steam client is not connected, +// and has failed in it's retry to establish a connection +//----------------------------------------------------------------------------- +struct SteamServerConnectFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 2 }; + EResult m_eResult; + bool m_bStillRetrying; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called if the client has lost connection to the Steam servers +// real-time services will be disabled until a matching SteamServersConnected_t has been posted +//----------------------------------------------------------------------------- +struct SteamServersDisconnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 3 }; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, +// which it may be in the process of or already connected to. +// The game client should immediately disconnect upon receiving this message. +// This can usually occur if the user doesn't have rights to play on the game server. +//----------------------------------------------------------------------------- +struct ClientGameServerDeny_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 13 }; + + uint32 m_uAppID; + uint32 m_unGameServerIP; + uint16 m_usGameServerPort; + uint16 m_bSecure; + uint32 m_uReason; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) +// When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. +// This usually occurs in the rare event the Steam client has some kind of fatal error. +//----------------------------------------------------------------------------- +struct IPCFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 17 }; + enum EFailureType + { + k_EFailureFlushedCallbackQueue, + k_EFailurePipeFail, + }; + uint8 m_eFailureType; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Signaled whenever licenses change +//----------------------------------------------------------------------------- +struct LicensesUpdated_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 25 }; +}; + + +//----------------------------------------------------------------------------- +// callback for BeginAuthSession +//----------------------------------------------------------------------------- +struct ValidateAuthTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 43 }; + CSteamID m_SteamID; + EAuthSessionResponse m_eAuthSessionResponse; + CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a user has responded to a microtransaction authorization request +//----------------------------------------------------------------------------- +struct MicroTxnAuthorizationResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 52 }; + + uint32 m_unAppID; // AppID for this microtransaction + uint64 m_ulOrderID; // OrderID provided for the microtransaction + uint8 m_bAuthorized; // if user authorized transaction +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result from RequestEncryptedAppTicket +//----------------------------------------------------------------------------- +struct EncryptedAppTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 54 }; + + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// callback for GetAuthSessionTicket +//----------------------------------------------------------------------------- +struct GetAuthSessionTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 63 }; + HAuthTicket m_hAuthTicket; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to a steam://gamewebcallback/ command +//----------------------------------------------------------------------------- +struct GameWebCallback_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 64 }; + char m_szURL[256]; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL +//----------------------------------------------------------------------------- +struct StoreAuthURLResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 65 }; + char m_szURL[512]; +}; + + + +#pragma pack( pop ) + +#endif // ISTEAMUSER_H diff --git a/lib/linux/include/steam/isteamuserstats.h b/lib/linux/include/steam/isteamuserstats.h new file mode 100644 index 0000000..29ae38b --- /dev/null +++ b/lib/linux/include/steam/isteamuserstats.h @@ -0,0 +1,476 @@ +//====== Copyright � 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to stats, achievements, and leaderboards +// +//============================================================================= + +#ifndef ISTEAMUSERSTATS_H +#define ISTEAMUSERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamremotestorage.h" + +// size limit on stat or achievement name (UTF-8 encoded) +enum { k_cchStatNameMax = 128 }; + +// maximum number of bytes for a leaderboard name (UTF-8 encoded) +enum { k_cchLeaderboardNameMax = 128 }; + +// maximum number of details int32's storable for a single leaderboard entry +enum { k_cLeaderboardDetailsMax = 64 }; + +// handle to a single leaderboard +typedef uint64 SteamLeaderboard_t; + +// handle to a set of downloaded entries in a leaderboard +typedef uint64 SteamLeaderboardEntries_t; + +// type of data request, when downloading leaderboard entries +enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3 +}; + +// the sort order of a leaderboard +enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number + k_ELeaderboardSortMethodDescending = 2, // top-score is highest number +}; + +// the display type (used by the Steam Community web site) for a leaderboard +enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score + k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds +}; + +enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score + k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified +}; + +// a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct LeaderboardEntry_t +{ + CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info + int32 m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard + int32 m_nScore; // score as set in the leaderboard + int32 m_cDetails; // number of int32 details available for this entry + UGCHandle_t m_hUGC; // handle for UGC attached to the entry +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing stats, achievements, and leaderboard information +//----------------------------------------------------------------------------- +class ISteamUserStats +{ +public: + // Ask the server to send down this user's data and achievements for this game + CALL_BACK( UserStatsReceived_t ) + virtual bool RequestCurrentStats() = 0; + + // Data accessors + virtual bool GetStat( const char *pchName, int32 *pData ) = 0; + virtual bool GetStat( const char *pchName, float *pData ) = 0; + + // Set / update data + virtual bool SetStat( const char *pchName, int32 nData ) = 0; + virtual bool SetStat( const char *pchName, float fData ) = 0; + virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + // Achievement flag accessors + virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0; + virtual bool SetAchievement( const char *pchName ) = 0; + virtual bool ClearAchievement( const char *pchName ) = 0; + + // Get the achievement status, and the time it was unlocked if unlocked. + // If the return value is true, but the unlock time is zero, that means it was unlocked before Steam + // began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. + virtual bool GetAchievementAndUnlockTime( const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Store the current data on the server, will get a callback when set + // And one callback for every new achievement + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + virtual bool StoreStats() = 0; + + // Achievement / GroupAchievement metadata + + // Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. + // A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback + // which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the + // specified achievement. + virtual int GetAchievementIcon( const char *pchName ) = 0; + + // Get general attributes for an achievement. Accepts the following keys: + // - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) + // - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) + virtual const char *GetAchievementDisplayAttribute( const char *pchName, const char *pchKey ) = 0; + + // Achievement progress - triggers an AchievementProgress callback, that is all. + // Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. + virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0; + + // Used for iterating achievements. In general games should not need these functions because they should have a + // list of existing achievements compiled into them + virtual uint32 GetNumAchievements() = 0; + // Get achievement name iAchievement in [0,GetNumAchievements) + virtual const char *GetAchievementName( uint32 iAchievement ) = 0; + + // Friends stats & achievements + + // downloads stats for the user + // returns a UserStatsReceived_t received when completed + // if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( UserStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + // See notes for GetAchievementAndUnlockTime above + virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Reset stats + virtual bool ResetAllStats( bool bAchievementsToo ) = 0; + + // Leaderboard functions + + // asks the Steam back-end for a leaderboard by name, and will create it if it's not yet + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT(LeaderboardFindResult_t) + virtual SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) = 0; + + // as above, but won't create the leaderboard if it's not found + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT( LeaderboardFindResult_t ) + virtual SteamAPICall_t FindLeaderboard( const char *pchLeaderboardName ) = 0; + + // returns the name of a leaderboard + virtual const char *GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the total number of entries in a leaderboard, as of the last request + virtual int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the sort method of the leaderboard + virtual ELeaderboardSortMethod GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the display type of the leaderboard + virtual ELeaderboardDisplayType GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // Asks the Steam back-end for a set of rows in the leaderboard. + // This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t + // LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) + // You can ask for more entries than exist, and it will return as many as do exist. + // k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] + // k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate + // e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after + // k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) = 0; + // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers + // if a user doesn't have a leaderboard entry, they won't be included in the result + // a max of 100 users can be downloaded at a time, with only one outstanding call at a time + METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, + ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; + + // Returns data about a single leaderboard entry + // use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries + // e.g. + // void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) + // { + // for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) + // { + // LeaderboardEntry_t leaderboardEntry; + // int32 details[3]; // we know this is how many we've stored previously + // GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); + // assert( leaderboardEntry.m_cDetails == 3 ); + // ... + // } + // once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid + virtual bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) = 0; + + // Uploads a user score to the Steam back-end. + // This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t + // Details are extra game-defined information regarding how the user got that score + // pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list + CALL_RESULT( LeaderboardScoreUploaded_t ) + virtual SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 *pScoreDetails, int cScoreDetailsCount ) = 0; + + // Attaches a piece of user generated content the user's entry on a leaderboard. + // hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). + // This call is asynchronous, with the result returned in LeaderboardUGCSet_t. + CALL_RESULT( LeaderboardUGCSet_t ) + virtual SteamAPICall_t AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) = 0; + + // Retrieves the number of players currently playing your game (online + offline) + // This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t + CALL_RESULT( NumberOfCurrentPlayers_t ) + virtual SteamAPICall_t GetNumberOfCurrentPlayers() = 0; + + // Requests that Steam fetch data on the percentage of players who have received each achievement + // for the game globally. + // This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. + CALL_RESULT( GlobalAchievementPercentagesReady_t ) + virtual SteamAPICall_t RequestGlobalAchievementPercentages() = 0; + + // Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch + // the next most achieved afterwards. Will return -1 if there is no data on achievement + // percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). + virtual int GetMostAchievedAchievementInfo( char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another + // GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last + // achievement has been iterated. + virtual int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Returns the percentage of users who have achieved the specified achievement. + virtual bool GetAchievementAchievedPercent( const char *pchName, float *pflPercent ) = 0; + + // Requests global stats data, which is available for stats marked as "aggregated". + // This call is asynchronous, with the results returned in GlobalStatsReceived_t. + // nHistoryDays specifies how many days of day-by-day history to retrieve in addition + // to the overall totals. The limit is 60. + CALL_RESULT( GlobalStatsReceived_t ) + virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; + + // Gets the lifetime totals for an aggregated stat + virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; + virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; + + // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. + // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, + // etc. cubData is the size in bytes of the pubData buffer. Returns the number of + // elements actually set. + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; + +#ifdef _PS3 + // Call to kick off installation of the PS3 trophies. This call is asynchronous, and the results will be returned in a PS3TrophiesInstalled_t + // callback. + virtual bool InstallPS3Trophies() = 0; + + // Returns the amount of space required at boot to install trophies. This value can be used when comparing the amount of space needed + // by the game to the available space value passed to the game at boot. The value is set during InstallPS3Trophies(). + virtual uint64 GetTrophySpaceRequiredBeforeInstall() = 0; + + // On PS3, user stats & achievement progress through Steam must be stored with the user's saved game data. + // At startup, before calling RequestCurrentStats(), you must pass the user's stats data to Steam via this method. + // If you do not have any user data, call this function with pvData = NULL and cubData = 0 + virtual bool SetUserStatsData( const void *pvData, uint32 cubData ) = 0; + + // Call to get the user's current stats data. You should retrieve this data after receiving successful UserStatsReceived_t & UserStatsStored_t + // callbacks, and store the data with the user's save game data. You can call this method with pvData = NULL and cubData = 0 to get the required + // buffer size. + virtual bool GetUserStatsData( void *pvData, uint32 cubData, uint32 *pcubWritten ) = 0; +#endif +}; + +#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION011" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct UserStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 1 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct UserStatsStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 2 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // success / error +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the achievements for a game, or an +// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress +// are zero, that means the achievement has been fully unlocked. +//----------------------------------------------------------------------------- +struct UserAchievementStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 3 }; + + uint64 m_nGameID; // Game this is for + bool m_bGroupAchievement; // if this is a "group" achievement + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + uint32 m_nCurProgress; // current progress towards the achievement + uint32 m_nMaxProgress; // "out of" this many +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardFindResult_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 4 }; + SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found + uint8 m_bLeaderboardFound; // 0 if no leaderboard found +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoresDownloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 5 }; + SteamLeaderboard_t m_hSteamLeaderboard; + SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() + int m_cEntryCount; // the number of entries downloaded +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoreUploaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 6 }; + uint8 m_bSuccess; // 1 if the call was successful + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + int32 m_nScore; // the score that was attempted to set + uint8 m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better + int m_nGlobalRankNew; // the new global rank of the user in this leaderboard + int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard +}; + +struct NumberOfCurrentPlayers_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 7 }; + uint8 m_bSuccess; // 1 if the call was successful + int32 m_cPlayers; // Number of players currently playing +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct UserStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that an achievement icon has been fetched +//----------------------------------------------------------------------------- +struct UserAchievementIconFetched_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 9 }; + + CGameID m_nGameID; // Game this is for + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + bool m_bAchieved; // Is the icon for the achieved or not achieved version? + int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that global achievement percentages are fetched +//----------------------------------------------------------------------------- +struct GlobalAchievementPercentagesReady_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 10 }; + + uint64 m_nGameID; // Game this is for + EResult m_eResult; // Result of the operation +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() +//----------------------------------------------------------------------------- +struct LeaderboardUGCSet_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 11 }; + EResult m_eResult; // The result of the operation + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating that PS3 trophies have been installed +//----------------------------------------------------------------------------- +struct PS3TrophiesInstalled_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // The result of the operation + uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies + +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating global stats have been received. +// Returned as a result of RequestGlobalStats() +//----------------------------------------------------------------------------- +struct GlobalStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game global stats were requested for + EResult m_eResult; // The result of the request +}; + +#pragma pack( pop ) + + +#endif // ISTEAMUSER_H diff --git a/lib/linux/include/steam/isteamutils.h b/lib/linux/include/steam/isteamutils.h new file mode 100644 index 0000000..aaf839f --- /dev/null +++ b/lib/linux/include/steam/isteamutils.h @@ -0,0 +1,254 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to utility functions in Steam +// +//============================================================================= + +#ifndef ISTEAMUTILS_H +#define ISTEAMUTILS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +// Steam API call failure results +enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, // no failure + k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away + k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken + // SteamServersDisconnected_t callback will be sent around the same time + // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again + k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists + k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call +}; + + +// Input modes for the Big Picture gamepad text entry +enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1 +}; + + +// Controls number of allowed lines for the Big Picture gamepad text entry +enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1 +}; + + +// function prototype for warning message hook +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); + +//----------------------------------------------------------------------------- +// Purpose: interface to user independent utility functions +//----------------------------------------------------------------------------- +class ISteamUtils +{ +public: + // return the number of seconds since the user + virtual uint32 GetSecondsSinceAppActive() = 0; + virtual uint32 GetSecondsSinceComputerActive() = 0; + + // the universe this client is connecting to + virtual EUniverse GetConnectedUniverse() = 0; + + // Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) + virtual uint32 GetServerRealTime() = 0; + + // returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + // e.g "US" or "UK". + virtual const char *GetIPCountry() = 0; + + // returns true if the image exists, and valid sizes were filled out + virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0; + + // returns true if the image exists, and the buffer was successfully filled out + // results are returned in RGBA format + // the destination buffer size should be 4 * height * width * sizeof(char) + virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; + + // returns the IP of the reporting server for valve - currently only used in Source engine games + virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; + + // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + virtual uint8 GetCurrentBatteryPower() = 0; + + // returns the appID of the current process + virtual uint32 GetAppID() = 0; + + // Sets the position where the overlay instance for the currently calling game should show notifications. + // This position is per-game and if this function is called from outside of a game context it will do nothing. + virtual void SetOverlayNotificationPosition( ENotificationPosition eNotificationPosition ) = 0; + + // API asynchronous call results + // can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + virtual bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, bool *pbFailed ) = 0; + virtual ESteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) = 0; + virtual bool GetAPICallResult( SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() instead. Game servers do not need to call this function. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + // start & hook the game process, so this function will initially return false while the overlay is loading. + virtual bool IsOverlayEnabled() = 0; + + // Normally this call is unneeded if your game has a constantly running frame loop that calls the + // D3D Present API, or OGL SwapBuffers API every frame. + // + // However, if you have a game that only refreshes the screen on an event driven basis then that can break + // the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + // need to Present() to the screen any time an even needing a notification happens or when the overlay is + // brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + // in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + // refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + virtual bool BOverlayNeedsPresent() = 0; + + // Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + // of the partner site, for example to refuse to load modified executable files. + // The result is returned in CheckFileSignature_t. + // k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + // k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + // k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + // k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + // k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + CALL_RESULT( CheckFileSignature_t ) + virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; + + // Activates the Big Picture text input dialog which only supports gamepad input + virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; + + // Returns previously entered text & length + virtual uint32 GetEnteredGamepadTextLength() = 0; + virtual bool GetEnteredGamepadTextInput( char *pchText, uint32 cchText ) = 0; + + // returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + virtual const char *GetSteamUILanguage() = 0; + + // returns true if Steam itself is running in VR mode + virtual bool IsSteamRunningInVR() = 0; + + // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; + + // returns true if Steam & the Steam Overlay are running in Big Picture mode + // Games much be launched through the Steam client to enable the Big Picture overlay. During development, + // a game can be added as a non-steam game to the developers library to test this feature + virtual bool IsSteamInBigPictureMode() = 0; + + // ask SteamUI to create and render its OpenVR dashboard + virtual void StartVRDashboard() = 0; +}; + +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils008" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: The country of the user changed +//----------------------------------------------------------------------------- +struct IPCountry_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 1 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute +//----------------------------------------------------------------------------- +struct LowBatteryPower_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 2 }; + uint8 m_nMinutesBatteryLeft; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a SteamAsyncCall_t has completed (or failed) +//----------------------------------------------------------------------------- +struct SteamAPICallCompleted_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; + SteamAPICall_t m_hAsyncCall; + int m_iCallback; + uint32 m_cubParam; +}; + + +//----------------------------------------------------------------------------- +// called when Steam wants to shutdown +//----------------------------------------------------------------------------- +struct SteamShutdown_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 4 }; +}; + +//----------------------------------------------------------------------------- +// results for CheckFileSignature +//----------------------------------------------------------------------------- +enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +}; + +//----------------------------------------------------------------------------- +// callback for CheckFileSignature +//----------------------------------------------------------------------------- +struct CheckFileSignature_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 5 }; + ECheckFileSignature m_eCheckFileSignature; +}; + + +// k_iSteamUtilsCallbacks + 13 is taken + + +//----------------------------------------------------------------------------- +// Big Picture gamepad text input has been closed +//----------------------------------------------------------------------------- +struct GamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; + bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input + uint32 m_unSubmittedText; +}; + +// k_iSteamUtilsCallbacks + 15 is taken + +#pragma pack( pop ) + +#endif // ISTEAMUTILS_H diff --git a/lib/linux/include/steam/isteamvideo.h b/lib/linux/include/steam/isteamvideo.h new file mode 100644 index 0000000..6893f0b --- /dev/null +++ b/lib/linux/include/steam/isteamvideo.h @@ -0,0 +1,60 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Video +// +//============================================================================= + +#ifndef ISTEAMVIDEO_H +#define ISTEAMVIDEO_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + + + +//----------------------------------------------------------------------------- +// Purpose: Steam Video API +//----------------------------------------------------------------------------- +class ISteamVideo +{ +public: + + // Get a URL suitable for streaming the given Video app ID's video + virtual void GetVideoURL( AppId_t unVideoAppID ) = 0; + + // returns true if user is uploading a live broadcast + virtual bool IsBroadcasting( int *pnNumViewers ) = 0; +}; + +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V001" + +DEFINE_CALLBACK( BroadcastUploadStart_t, k_iClientVideoCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( BroadcastUploadStop_t, k_iClientVideoCallbacks + 5 ) + CALLBACK_MEMBER( 0, EBroadcastUploadResult, m_eResult ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) + CALLBACK_MEMBER( 0, EResult, m_eResult ) + CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) + CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMVIDEO_H diff --git a/lib/linux/include/steam/matchmakingtypes.h b/lib/linux/include/steam/matchmakingtypes.h new file mode 100644 index 0000000..e52cfc6 --- /dev/null +++ b/lib/linux/include/steam/matchmakingtypes.h @@ -0,0 +1,251 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef MATCHMAKINGTYPES_H +#define MATCHMAKINGTYPES_H + +#ifdef _WIN32 +#pragma once +#endif + +#ifdef POSIX +#ifndef _snprintf +#define _snprintf snprintf +#endif +#endif + +#include <stdio.h> +#include <string.h> + +// +// Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. +// WARNING: These cannot be changed easily, without breaking clients using old interfaces. +// +const int k_cbMaxGameServerGameDir = 32; +const int k_cbMaxGameServerMapName = 32; +const int k_cbMaxGameServerGameDescription = 64; +const int k_cbMaxGameServerName = 64; +const int k_cbMaxGameServerTags = 128; +const int k_cbMaxGameServerGameData = 2048; + +/// Store key/value pair used in matchmaking queries. +/// +/// Actually, the name Key/Value is a bit misleading. The "key" is better +/// understood as "filter operation code" and the "value" is the operand to this +/// filter operation. The meaning of the operand depends upon the filter. +struct MatchMakingKeyValuePair_t +{ + MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; } + MatchMakingKeyValuePair_t( const char *pchKey, const char *pchValue ) + { + strncpy( m_szKey, pchKey, sizeof(m_szKey) ); // this is a public header, use basic c library string funcs only! + m_szKey[ sizeof( m_szKey ) - 1 ] = '\0'; + strncpy( m_szValue, pchValue, sizeof(m_szValue) ); + m_szValue[ sizeof( m_szValue ) - 1 ] = '\0'; + } + char m_szKey[ 256 ]; + char m_szValue[ 256 ]; +}; + + +enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match +}; + +// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, +// namely: its IP, its connection port, and its query port. +class servernetadr_t +{ +public: + + servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} + + void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +#ifdef NETADR_H + netadr_t GetIPAndQueryPort(); +#endif + + // Access the query port. + uint16 GetQueryPort() const; + void SetQueryPort( uint16 usPort ); + + // Access the connection port. + uint16 GetConnectionPort() const; + void SetConnectionPort( uint16 usPort ); + + // Access the IP + uint32 GetIP() const; + void SetIP( uint32 ); + + // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). + const char *GetConnectionAddressString() const; + const char *GetQueryAddressString() const; + + // Comparison operators and functions. + bool operator<(const servernetadr_t &netadr) const; + void operator=( const servernetadr_t &that ) + { + m_usConnectionPort = that.m_usConnectionPort; + m_usQueryPort = that.m_usQueryPort; + m_unIP = that.m_unIP; + } + + +private: + const char *ToString( uint32 unIP, uint16 usPort ) const; + uint16 m_usConnectionPort; // (in HOST byte order) + uint16 m_usQueryPort; + uint32 m_unIP; +}; + + +inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ) +{ + m_unIP = ip; + m_usQueryPort = usQueryPort; + m_usConnectionPort = usConnectionPort; +} + +#ifdef NETADR_H +inline netadr_t servernetadr_t::GetIPAndQueryPort() +{ + return netadr_t( m_unIP, m_usQueryPort ); +} +#endif + +inline uint16 servernetadr_t::GetQueryPort() const +{ + return m_usQueryPort; +} + +inline void servernetadr_t::SetQueryPort( uint16 usPort ) +{ + m_usQueryPort = usPort; +} + +inline uint16 servernetadr_t::GetConnectionPort() const +{ + return m_usConnectionPort; +} + +inline void servernetadr_t::SetConnectionPort( uint16 usPort ) +{ + m_usConnectionPort = usPort; +} + +inline uint32 servernetadr_t::GetIP() const +{ + return m_unIP; +} + +inline void servernetadr_t::SetIP( uint32 unIP ) +{ + m_unIP = unIP; +} + +inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const +{ + static char s[4][64]; + static int nBuf = 0; + unsigned char *ipByte = (unsigned char *)&unIP; +#ifdef VALVE_BIG_ENDIAN + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); +#else + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); +#endif + const char *pchRet = s[nBuf]; + ++nBuf; + nBuf %= ( (sizeof(s)/sizeof(s[0])) ); + return pchRet; +} + +inline const char* servernetadr_t::GetConnectionAddressString() const +{ + return ToString( m_unIP, m_usConnectionPort ); +} + +inline const char* servernetadr_t::GetQueryAddressString() const +{ + return ToString( m_unIP, m_usQueryPort ); +} + +inline bool servernetadr_t::operator<(const servernetadr_t &netadr) const +{ + return ( m_unIP < netadr.m_unIP ) || ( m_unIP == netadr.m_unIP && m_usQueryPort < netadr.m_usQueryPort ); +} + +//----------------------------------------------------------------------------- +// Purpose: Data describing a single server +//----------------------------------------------------------------------------- +class gameserveritem_t +{ +public: + gameserveritem_t(); + + const char* GetName() const; + void SetName( const char *pName ); + +public: + servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server + int m_nPing; ///< current ping time in milliseconds + bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past + bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed + char m_szGameDir[k_cbMaxGameServerGameDir]; ///< current game directory + char m_szMap[k_cbMaxGameServerMapName]; ///< current map + char m_szGameDescription[k_cbMaxGameServerGameDescription]; ///< game description + uint32 m_nAppID; ///< Steam App ID of this server + int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! + int m_nMaxPlayers; ///< Maximum players that can join this server + int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server + bool m_bPassword; ///< true if this server needs a password to join + bool m_bSecure; ///< Is this server protected by VAC + uint32 m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) + int m_nServerVersion; ///< server version as reported to Steam + +private: + + /// Game server name + char m_szServerName[k_cbMaxGameServerName]; + + // For data added after SteamMatchMaking001 add it here +public: + /// the tags this server exposes + char m_szGameTags[k_cbMaxGameServerTags]; + + /// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) + CSteamID m_steamID; +}; + + +inline gameserveritem_t::gameserveritem_t() +{ + m_szGameDir[0] = m_szMap[0] = m_szGameDescription[0] = m_szServerName[0] = 0; + m_bHadSuccessfulResponse = m_bDoNotRefresh = m_bPassword = m_bSecure = false; + m_nPing = m_nAppID = m_nPlayers = m_nMaxPlayers = m_nBotPlayers = m_ulTimeLastPlayed = m_nServerVersion = 0; + m_szGameTags[0] = 0; +} + +inline const char* gameserveritem_t::GetName() const +{ + // Use the IP address as the name if nothing is set yet. + if ( m_szServerName[0] == 0 ) + return m_NetAdr.GetConnectionAddressString(); + else + return m_szServerName; +} + +inline void gameserveritem_t::SetName( const char *pName ) +{ + strncpy( m_szServerName, pName, sizeof( m_szServerName ) ); + m_szServerName[ sizeof( m_szServerName ) - 1 ] = '\0'; +} + + +#endif // MATCHMAKINGTYPES_H diff --git a/lib/linux/include/steam/steam_api.h b/lib/linux/include/steam/steam_api.h new file mode 100644 index 0000000..e3a31ae --- /dev/null +++ b/lib/linux/include/steam/steam_api.h @@ -0,0 +1,394 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_API_H +#define STEAM_API_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamuser.h" +#include "isteamfriends.h" +#include "isteamutils.h" +#include "isteammatchmaking.h" +#include "isteamuserstats.h" +#include "isteamapps.h" +#include "isteamnetworking.h" +#include "isteamremotestorage.h" +#include "isteamscreenshots.h" +#include "isteammusic.h" +#include "isteammusicremote.h" +#include "isteamhttp.h" +#include "isteamunifiedmessages.h" +#include "isteamcontroller.h" +#include "isteamugc.h" +#include "isteamapplist.h" +#include "isteamhtmlsurface.h" +#include "isteaminventory.h" +#include "isteamvideo.h" + + +// Steam API export macro +#if defined( _WIN32 ) && !defined( _X360 ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __declspec( dllexport ) + #elif defined( STEAM_API_NODLL ) + #define S_API extern "C" + #else + #define S_API extern "C" __declspec( dllimport ) + #endif // STEAM_API_EXPORTS +#elif defined( GNUC ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __attribute__ ((visibility("default"))) + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#else // !WIN32 + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Steam API setup & shutdown +// +// These functions manage loading, initializing and shutdown of the steamclient.dll +// +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + + +// SteamAPI_Init must be called before using any other API functions. If it fails, an +// error message will be output to the debugger (or stderr) with further information. +S_API bool S_CALLTYPE SteamAPI_Init(); + +// SteamAPI_Shutdown should be called during process shutdown if possible. +S_API void S_CALLTYPE SteamAPI_Shutdown(); + +// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. +// +// Returns true if the current process should terminate. Steam is now re-launching your application. +// +// Returns false if no action needs to be taken. This means that your executable was started through +// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). +// Your current process should continue if false is returned. +// +// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary +// since the DRM wrapper will ensure that your application was launched properly through Steam. +S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); + +// Many Steam API functions allocate a small amount of thread-local memory for parameter storage. +// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. +// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded +// program never needs to explicitly call this function. +S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); + + +// crash dump recording functions +S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); +S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Global accessors for Steamworks C++ APIs. See individual isteam*.h files for details. +// You should not cache the results of these accessors or pass the result pointers across +// modules! Different modules may be compiled against different SDK header versions, and +// the interface pointers could therefore be different across modules. Every line of code +// which calls into a Steamworks API should retrieve the interface from a global accessor. +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#if !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamClient(); +inline ISteamUser *SteamUser(); +inline ISteamFriends *SteamFriends(); +inline ISteamUtils *SteamUtils(); +inline ISteamMatchmaking *SteamMatchmaking(); +inline ISteamUserStats *SteamUserStats(); +inline ISteamApps *SteamApps(); +inline ISteamNetworking *SteamNetworking(); +inline ISteamMatchmakingServers *SteamMatchmakingServers(); +inline ISteamRemoteStorage *SteamRemoteStorage(); +inline ISteamScreenshots *SteamScreenshots(); +inline ISteamHTTP *SteamHTTP(); +inline ISteamUnifiedMessages *SteamUnifiedMessages(); +inline ISteamController *SteamController(); +inline ISteamUGC *SteamUGC(); +inline ISteamAppList *SteamAppList(); +inline ISteamMusic *SteamMusic(); +inline ISteamMusicRemote *SteamMusicRemote(); +inline ISteamHTMLSurface *SteamHTMLSurface(); +inline ISteamInventory *SteamInventory(); +inline ISteamVideo *SteamVideo(); +#endif // VERSION_SAFE_STEAM_API_INTERFACES + + +// CSteamAPIContext encapsulates the Steamworks API global accessors into +// a single object. This is DEPRECATED and only remains for compatibility. +class CSteamAPIContext +{ +public: + // DEPRECATED - there is no benefit to using this over the global accessors + CSteamAPIContext() { Clear(); } + void Clear(); + bool Init(); + ISteamClient* SteamClient() const { return m_pSteamClient; } + ISteamUser* SteamUser() const { return m_pSteamUser; } + ISteamFriends* SteamFriends() const { return m_pSteamFriends; } + ISteamUtils* SteamUtils() const { return m_pSteamUtils; } + ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } + ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } + ISteamApps* SteamApps() const { return m_pSteamApps; } + ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } + ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } + ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } + ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } + ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } + ISteamUnifiedMessages* SteamUnifiedMessages() const { return m_pSteamUnifiedMessages; } + ISteamController* SteamController() const { return m_pController; } + ISteamUGC* SteamUGC() const { return m_pSteamUGC; } + ISteamAppList* SteamAppList() const { return m_pSteamAppList; } + ISteamMusic* SteamMusic() const { return m_pSteamMusic; } + ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } + ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } + ISteamInventory* SteamInventory() const { return m_pSteamInventory; } + ISteamVideo* SteamVideo() const { return m_pSteamVideo; } + // DEPRECATED - there is no benefit to using this over the global accessors +private: + ISteamClient *m_pSteamClient; + ISteamUser *m_pSteamUser; + ISteamFriends *m_pSteamFriends; + ISteamUtils *m_pSteamUtils; + ISteamMatchmaking *m_pSteamMatchmaking; + ISteamUserStats *m_pSteamUserStats; + ISteamApps *m_pSteamApps; + ISteamMatchmakingServers *m_pSteamMatchmakingServers; + ISteamNetworking *m_pSteamNetworking; + ISteamRemoteStorage *m_pSteamRemoteStorage; + ISteamScreenshots *m_pSteamScreenshots; + ISteamHTTP *m_pSteamHTTP; + ISteamUnifiedMessages *m_pSteamUnifiedMessages; + ISteamController *m_pController; + ISteamUGC *m_pSteamUGC; + ISteamAppList *m_pSteamAppList; + ISteamMusic *m_pSteamMusic; + ISteamMusicRemote *m_pSteamMusicRemote; + ISteamHTMLSurface *m_pSteamHTMLSurface; + ISteamInventory *m_pSteamInventory; + ISteamVideo *m_pSteamVideo; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steam callback and call-result helpers +// +// The following macros and classes are used to register your application for +// callbacks and call-results, which are delivered in a predictable manner. +// +// STEAM_CALLBACK macros are meant for use inside of a C++ class definition. +// They map a Steam notification callback directly to a class member function +// which is automatically prototyped as "void func( callback_type *pParam )". +// +// CCallResult is used with specific Steam APIs that return "result handles". +// The handle can be passed to a CCallResult object's Set function, along with +// an object pointer and member-function pointer. The member function will +// be executed once the results of the Steam API call are available. +// +// CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK +// macros if you require finer control over registration and unregistration. +// +// Callbacks and call-results are queued automatically and are only +// delivered/executed when your application calls SteamAPI_RunCallbacks(). +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously, +// but if you choose to do this, callback code could be executed on any thread. +// One alternative is to call SteamAPI_RunCallbacks from the main thread only, +// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. +S_API void S_CALLTYPE SteamAPI_RunCallbacks(); + + +// Declares a callback member function plus a helper member variable which +// registers the callback on object creation and unregisters on destruction. +// The optional fourth 'var' param exists only for backwards-compatibility +// and can be ignored. +#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) ) + +// Declares a callback function and a named CCallbackManual variable which +// has Register and Unregister functions instead of automatic registration. +#define STEAM_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type > var; void func( callback_type *pParam ) + + +// Internal functions used by the utility CCallback objects to receive callbacks +S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); +// Internal functions used by the utility CCallResult objects to receive async call results +S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); + + +//----------------------------------------------------------------------------- +// Purpose: base for callbacks and call results - internal implementation detail +//----------------------------------------------------------------------------- +class CCallbackBase +{ +public: + CCallbackBase() { m_nCallbackFlags = 0; m_iCallback = 0; } + // don't add a virtual destructor because we export this binary interface across dll's + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) = 0; + int GetICallback() { return m_iCallback; } + virtual int GetCallbackSizeBytes() = 0; + +protected: + enum { k_ECallbackFlagsRegistered = 0x01, k_ECallbackFlagsGameServer = 0x02 }; + uint8 m_nCallbackFlags; + int m_iCallback; + friend class CCallbackMgr; + +private: + CCallbackBase( const CCallbackBase& ); + CCallbackBase& operator=( const CCallbackBase& ); +}; + +//----------------------------------------------------------------------------- +// Purpose: templated base for callbacks - internal implementation detail +//----------------------------------------------------------------------------- +template< int sizeof_P > +class CCallbackImpl : protected CCallbackBase +{ +public: + ~CCallbackImpl() { if ( m_nCallbackFlags & k_ECallbackFlagsRegistered ) SteamAPI_UnregisterCallback( this ); } + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } + +protected: + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } + virtual int GetCallbackSizeBytes() { return sizeof_P; } +}; + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +class CCallResult : private CCallbackBase +{ +public: + typedef void (T::*func_t)( P*, bool ); + + CCallResult(); + ~CCallResult(); + + void Set( SteamAPICall_t hAPICall, T *p, func_t func ); + bool IsActive() const; + void Cancel(); + + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } +private: + virtual void Run( void *pvParam ); + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); + virtual int GetCallbackSizeBytes() { return sizeof( P ); } + + SteamAPICall_t m_hAPICall; + T *m_pObj; + func_t m_Func; +}; + + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver = false > +class CCallback : public CCallbackImpl< sizeof( P ) > +{ +public: + typedef void (T::*func_t)(P*); + + // NOTE: If you can't provide the correct parameters at construction time, you should + // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. + CCallback( T *pObj, func_t func ); + + void Register( T *pObj, func_t func ); + void Unregister(); + +protected: + virtual void Run( void *pvParam ); + + T *m_pObj; + func_t m_Func; +}; + + +//----------------------------------------------------------------------------- +// Purpose: subclass of CCallback which allows default-construction in +// an unregistered state; you must call Register manually +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameServer = false > +class CCallbackManual : public CCallback< T, P, bGameServer > +{ +public: + CCallbackManual() : CCallback< T, P, bGameServer >( NULL, NULL ) {} + + // Inherits public Register and Unregister functions from base class +}; + + + +#ifdef _WIN32 +// disable this warning; this pattern need for steam callback registration +#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list +#endif + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_IsSteamRunning() returns true if Steam is currently running +S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); + +// Pumps out all the steam messages, calling registered callbacks. +// NOT THREADSAFE - do not call from multiple threads simultaneously. +S_API void Steam_RunCallbacks( HSteamPipe hSteamPipe, bool bGameServerCallbacks ); + +// register the callback funcs to use to interact with the steam dll +S_API void Steam_RegisterInterfaceFuncs( void *hModule ); + +// returns the HSteamUser of the last user to dispatch a callback +S_API HSteamUser Steam_GetHSteamUserCurrent(); + +// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. +// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs +S_API const char *SteamAPI_GetSteamInstallPath(); + +// returns the pipe we are communicating to Steam with +S_API HSteamPipe SteamAPI_GetHSteamPipe(); + +// sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks +S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); + +// backwards compat export, passes through to SteamAPI_ variants +S_API HSteamPipe GetHSteamPipe(); +S_API HSteamUser GetHSteamUser(); + + +#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) +// exists only for backwards compat with code written against older SDKs +S_API bool S_CALLTYPE SteamAPI_InitSafe(); +#endif + +#include "steam_api_internal.h" + +#endif // STEAM_API_H diff --git a/lib/linux/include/steam/steam_api.json b/lib/linux/include/steam/steam_api.json new file mode 100644 index 0000000..09adb0c --- /dev/null +++ b/lib/linux/include/steam/steam_api.json @@ -0,0 +1,7576 @@ +{"typedefs":[{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "int8","type": "signed char"} +,{"typedef": "int16","type": "short"} +,{"typedef": "uint16","type": "unsigned short"} +,{"typedef": "int32","type": "int"} +,{"typedef": "uint32","type": "unsigned int"} +,{"typedef": "int64","type": "long long"} +,{"typedef": "uint64","type": "unsigned long long"} +,{"typedef": "lint64","type": "int64"} +,{"typedef": "ulint64","type": "uint64"} +,{"typedef": "intp","type": "long long"} +,{"typedef": "uintp","type": "unsigned long long"} +,{"typedef": "Salt_t","type": "uint8 [8]"} +,{"typedef": "GID_t","type": "uint64"} +,{"typedef": "JobID_t","type": "uint64"} +,{"typedef": "TxnID_t","type": "GID_t"} +,{"typedef": "PackageId_t","type": "uint32"} +,{"typedef": "BundleId_t","type": "uint32"} +,{"typedef": "AppId_t","type": "uint32"} +,{"typedef": "AssetClassId_t","type": "uint64"} +,{"typedef": "PhysicalItemId_t","type": "uint32"} +,{"typedef": "DepotId_t","type": "uint32"} +,{"typedef": "RTime32","type": "uint32"} +,{"typedef": "CellID_t","type": "uint32"} +,{"typedef": "SteamAPICall_t","type": "uint64"} +,{"typedef": "AccountID_t","type": "uint32"} +,{"typedef": "PartnerId_t","type": "uint32"} +,{"typedef": "ManifestId_t","type": "uint64"} +,{"typedef": "HAuthTicket","type": "uint32"} +,{"typedef": "PFNLegacyKeyRegistration","type": "void (*)(const char *, const char *)"} +,{"typedef": "PFNLegacyKeyInstalled","type": "_Bool (*)(void)"} +,{"typedef": "PFNPreMinidumpCallback","type": "void (*)(void *)"} +,{"typedef": "BREAKPAD_HANDLE","type": "void *"} +,{"typedef": "ValvePackingSentinel_t","type": "struct ValvePackingSentinel_t"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "HSteamPipe","type": "int32"} +,{"typedef": "HSteamUser","type": "int32"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "SteamAPI_CheckCallbackRegistered_t","type": "uint32 (*)(int)"} +,{"typedef": "FriendsGroupID_t","type": "int16"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "HServerListRequest","type": "void *"} +,{"typedef": "HServerQuery","type": "int"} +,{"typedef": "UGCHandle_t","type": "uint64"} +,{"typedef": "PublishedFileUpdateHandle_t","type": "uint64"} +,{"typedef": "PublishedFileId_t","type": "uint64"} +,{"typedef": "UGCFileWriteStreamHandle_t","type": "uint64"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "SteamLeaderboard_t","type": "uint64"} +,{"typedef": "SteamLeaderboardEntries_t","type": "uint64"} +,{"typedef": "SNetSocket_t","type": "uint32"} +,{"typedef": "SNetListenSocket_t","type": "uint32"} +,{"typedef": "ScreenshotHandle","type": "uint32"} +,{"typedef": "PlaybackStatusHasChanged_t::SteamCallback_t","type": "struct PlaybackStatusHasChanged_t"} +,{"typedef": "VolumeHasChanged_t::SteamCallback_t","type": "struct VolumeHasChanged_t"} +,{"typedef": "MusicPlayerRemoteWillActivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillActivate_t"} +,{"typedef": "MusicPlayerRemoteWillDeactivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillDeactivate_t"} +,{"typedef": "MusicPlayerRemoteToFront_t::SteamCallback_t","type": "struct MusicPlayerRemoteToFront_t"} +,{"typedef": "MusicPlayerWillQuit_t::SteamCallback_t","type": "struct MusicPlayerWillQuit_t"} +,{"typedef": "MusicPlayerWantsPlay_t::SteamCallback_t","type": "struct MusicPlayerWantsPlay_t"} +,{"typedef": "MusicPlayerWantsPause_t::SteamCallback_t","type": "struct MusicPlayerWantsPause_t"} +,{"typedef": "MusicPlayerWantsPlayPrevious_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayPrevious_t"} +,{"typedef": "MusicPlayerWantsPlayNext_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayNext_t"} +,{"typedef": "MusicPlayerWantsShuffled_t::SteamCallback_t","type": "struct MusicPlayerWantsShuffled_t"} +,{"typedef": "MusicPlayerWantsLooped_t::SteamCallback_t","type": "struct MusicPlayerWantsLooped_t"} +,{"typedef": "MusicPlayerWantsVolume_t::SteamCallback_t","type": "struct MusicPlayerWantsVolume_t"} +,{"typedef": "MusicPlayerSelectsQueueEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsQueueEntry_t"} +,{"typedef": "MusicPlayerSelectsPlaylistEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsPlaylistEntry_t"} +,{"typedef": "MusicPlayerWantsPlayingRepeatStatus_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayingRepeatStatus_t"} +,{"typedef": "HTTPRequestHandle","type": "uint32"} +,{"typedef": "HTTPCookieContainerHandle","type": "uint32"} +,{"typedef": "ClientUnifiedMessageHandle","type": "uint64"} +,{"typedef": "ControllerHandle_t","type": "uint64"} +,{"typedef": "ControllerActionSetHandle_t","type": "uint64"} +,{"typedef": "ControllerDigitalActionHandle_t","type": "uint64"} +,{"typedef": "ControllerAnalogActionHandle_t","type": "uint64"} +,{"typedef": "UGCQueryHandle_t","type": "uint64"} +,{"typedef": "UGCUpdateHandle_t","type": "uint64"} +,{"typedef": "SteamAppInstalled_t::SteamCallback_t","type": "struct SteamAppInstalled_t"} +,{"typedef": "SteamAppUninstalled_t::SteamCallback_t","type": "struct SteamAppUninstalled_t"} +,{"typedef": "HHTMLBrowser","type": "uint32"} +,{"typedef": "HTML_BrowserReady_t::SteamCallback_t","type": "struct HTML_BrowserReady_t"} +,{"typedef": "HTML_NeedsPaint_t::SteamCallback_t","type": "struct HTML_NeedsPaint_t"} +,{"typedef": "HTML_StartRequest_t::SteamCallback_t","type": "struct HTML_StartRequest_t"} +,{"typedef": "HTML_CloseBrowser_t::SteamCallback_t","type": "struct HTML_CloseBrowser_t"} +,{"typedef": "HTML_URLChanged_t::SteamCallback_t","type": "struct HTML_URLChanged_t"} +,{"typedef": "HTML_FinishedRequest_t::SteamCallback_t","type": "struct HTML_FinishedRequest_t"} +,{"typedef": "HTML_OpenLinkInNewTab_t::SteamCallback_t","type": "struct HTML_OpenLinkInNewTab_t"} +,{"typedef": "HTML_ChangedTitle_t::SteamCallback_t","type": "struct HTML_ChangedTitle_t"} +,{"typedef": "HTML_SearchResults_t::SteamCallback_t","type": "struct HTML_SearchResults_t"} +,{"typedef": "HTML_CanGoBackAndForward_t::SteamCallback_t","type": "struct HTML_CanGoBackAndForward_t"} +,{"typedef": "HTML_HorizontalScroll_t::SteamCallback_t","type": "struct HTML_HorizontalScroll_t"} +,{"typedef": "HTML_VerticalScroll_t::SteamCallback_t","type": "struct HTML_VerticalScroll_t"} +,{"typedef": "HTML_LinkAtPosition_t::SteamCallback_t","type": "struct HTML_LinkAtPosition_t"} +,{"typedef": "HTML_JSAlert_t::SteamCallback_t","type": "struct HTML_JSAlert_t"} +,{"typedef": "HTML_JSConfirm_t::SteamCallback_t","type": "struct HTML_JSConfirm_t"} +,{"typedef": "HTML_FileOpenDialog_t::SteamCallback_t","type": "struct HTML_FileOpenDialog_t"} +,{"typedef": "HTML_NewWindow_t::SteamCallback_t","type": "struct HTML_NewWindow_t"} +,{"typedef": "HTML_SetCursor_t::SteamCallback_t","type": "struct HTML_SetCursor_t"} +,{"typedef": "HTML_StatusText_t::SteamCallback_t","type": "struct HTML_StatusText_t"} +,{"typedef": "HTML_ShowToolTip_t::SteamCallback_t","type": "struct HTML_ShowToolTip_t"} +,{"typedef": "HTML_UpdateToolTip_t::SteamCallback_t","type": "struct HTML_UpdateToolTip_t"} +,{"typedef": "HTML_HideToolTip_t::SteamCallback_t","type": "struct HTML_HideToolTip_t"} +,{"typedef": "SteamItemInstanceID_t","type": "uint64"} +,{"typedef": "SteamItemDef_t","type": "int32"} +,{"typedef": "SteamInventoryResult_t","type": "int32"} +,{"typedef": "BroadcastUploadStart_t::SteamCallback_t","type": "struct BroadcastUploadStart_t"} +,{"typedef": "BroadcastUploadStop_t::SteamCallback_t","type": "struct BroadcastUploadStop_t"} +,{"typedef": "GetVideoURLResult_t::SteamCallback_t","type": "struct GetVideoURLResult_t"} +,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} +,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} +], +"enums":[ + {"enumname": "EUniverse","values": [ + {"name": "k_EUniverseInvalid","value": "0"} + ,{"name": "k_EUniversePublic","value": "1"} + ,{"name": "k_EUniverseBeta","value": "2"} + ,{"name": "k_EUniverseInternal","value": "3"} + ,{"name": "k_EUniverseDev","value": "4"} + ,{"name": "k_EUniverseMax","value": "5"} +]} +, {"enumname": "EResult","values": [ + {"name": "k_EResultOK","value": "1"} + ,{"name": "k_EResultFail","value": "2"} + ,{"name": "k_EResultNoConnection","value": "3"} + ,{"name": "k_EResultInvalidPassword","value": "5"} + ,{"name": "k_EResultLoggedInElsewhere","value": "6"} + ,{"name": "k_EResultInvalidProtocolVer","value": "7"} + ,{"name": "k_EResultInvalidParam","value": "8"} + ,{"name": "k_EResultFileNotFound","value": "9"} + ,{"name": "k_EResultBusy","value": "10"} + ,{"name": "k_EResultInvalidState","value": "11"} + ,{"name": "k_EResultInvalidName","value": "12"} + ,{"name": "k_EResultInvalidEmail","value": "13"} + ,{"name": "k_EResultDuplicateName","value": "14"} + ,{"name": "k_EResultAccessDenied","value": "15"} + ,{"name": "k_EResultTimeout","value": "16"} + ,{"name": "k_EResultBanned","value": "17"} + ,{"name": "k_EResultAccountNotFound","value": "18"} + ,{"name": "k_EResultInvalidSteamID","value": "19"} + ,{"name": "k_EResultServiceUnavailable","value": "20"} + ,{"name": "k_EResultNotLoggedOn","value": "21"} + ,{"name": "k_EResultPending","value": "22"} + ,{"name": "k_EResultEncryptionFailure","value": "23"} + ,{"name": "k_EResultInsufficientPrivilege","value": "24"} + ,{"name": "k_EResultLimitExceeded","value": "25"} + ,{"name": "k_EResultRevoked","value": "26"} + ,{"name": "k_EResultExpired","value": "27"} + ,{"name": "k_EResultAlreadyRedeemed","value": "28"} + ,{"name": "k_EResultDuplicateRequest","value": "29"} + ,{"name": "k_EResultAlreadyOwned","value": "30"} + ,{"name": "k_EResultIPNotFound","value": "31"} + ,{"name": "k_EResultPersistFailed","value": "32"} + ,{"name": "k_EResultLockingFailed","value": "33"} + ,{"name": "k_EResultLogonSessionReplaced","value": "34"} + ,{"name": "k_EResultConnectFailed","value": "35"} + ,{"name": "k_EResultHandshakeFailed","value": "36"} + ,{"name": "k_EResultIOFailure","value": "37"} + ,{"name": "k_EResultRemoteDisconnect","value": "38"} + ,{"name": "k_EResultShoppingCartNotFound","value": "39"} + ,{"name": "k_EResultBlocked","value": "40"} + ,{"name": "k_EResultIgnored","value": "41"} + ,{"name": "k_EResultNoMatch","value": "42"} + ,{"name": "k_EResultAccountDisabled","value": "43"} + ,{"name": "k_EResultServiceReadOnly","value": "44"} + ,{"name": "k_EResultAccountNotFeatured","value": "45"} + ,{"name": "k_EResultAdministratorOK","value": "46"} + ,{"name": "k_EResultContentVersion","value": "47"} + ,{"name": "k_EResultTryAnotherCM","value": "48"} + ,{"name": "k_EResultPasswordRequiredToKickSession","value": "49"} + ,{"name": "k_EResultAlreadyLoggedInElsewhere","value": "50"} + ,{"name": "k_EResultSuspended","value": "51"} + ,{"name": "k_EResultCancelled","value": "52"} + ,{"name": "k_EResultDataCorruption","value": "53"} + ,{"name": "k_EResultDiskFull","value": "54"} + ,{"name": "k_EResultRemoteCallFailed","value": "55"} + ,{"name": "k_EResultPasswordUnset","value": "56"} + ,{"name": "k_EResultExternalAccountUnlinked","value": "57"} + ,{"name": "k_EResultPSNTicketInvalid","value": "58"} + ,{"name": "k_EResultExternalAccountAlreadyLinked","value": "59"} + ,{"name": "k_EResultRemoteFileConflict","value": "60"} + ,{"name": "k_EResultIllegalPassword","value": "61"} + ,{"name": "k_EResultSameAsPreviousValue","value": "62"} + ,{"name": "k_EResultAccountLogonDenied","value": "63"} + ,{"name": "k_EResultCannotUseOldPassword","value": "64"} + ,{"name": "k_EResultInvalidLoginAuthCode","value": "65"} + ,{"name": "k_EResultAccountLogonDeniedNoMail","value": "66"} + ,{"name": "k_EResultHardwareNotCapableOfIPT","value": "67"} + ,{"name": "k_EResultIPTInitError","value": "68"} + ,{"name": "k_EResultParentalControlRestricted","value": "69"} + ,{"name": "k_EResultFacebookQueryError","value": "70"} + ,{"name": "k_EResultExpiredLoginAuthCode","value": "71"} + ,{"name": "k_EResultIPLoginRestrictionFailed","value": "72"} + ,{"name": "k_EResultAccountLockedDown","value": "73"} + ,{"name": "k_EResultAccountLogonDeniedVerifiedEmailRequired","value": "74"} + ,{"name": "k_EResultNoMatchingURL","value": "75"} + ,{"name": "k_EResultBadResponse","value": "76"} + ,{"name": "k_EResultRequirePasswordReEntry","value": "77"} + ,{"name": "k_EResultValueOutOfRange","value": "78"} + ,{"name": "k_EResultUnexpectedError","value": "79"} + ,{"name": "k_EResultDisabled","value": "80"} + ,{"name": "k_EResultInvalidCEGSubmission","value": "81"} + ,{"name": "k_EResultRestrictedDevice","value": "82"} + ,{"name": "k_EResultRegionLocked","value": "83"} + ,{"name": "k_EResultRateLimitExceeded","value": "84"} + ,{"name": "k_EResultAccountLoginDeniedNeedTwoFactor","value": "85"} + ,{"name": "k_EResultItemDeleted","value": "86"} + ,{"name": "k_EResultAccountLoginDeniedThrottle","value": "87"} + ,{"name": "k_EResultTwoFactorCodeMismatch","value": "88"} + ,{"name": "k_EResultTwoFactorActivationCodeMismatch","value": "89"} + ,{"name": "k_EResultAccountAssociatedToMultiplePartners","value": "90"} + ,{"name": "k_EResultNotModified","value": "91"} + ,{"name": "k_EResultNoMobileDevice","value": "92"} + ,{"name": "k_EResultTimeNotSynced","value": "93"} + ,{"name": "k_EResultSmsCodeFailed","value": "94"} + ,{"name": "k_EResultAccountLimitExceeded","value": "95"} + ,{"name": "k_EResultAccountActivityLimitExceeded","value": "96"} + ,{"name": "k_EResultPhoneActivityLimitExceeded","value": "97"} + ,{"name": "k_EResultRefundToWallet","value": "98"} + ,{"name": "k_EResultEmailSendFailure","value": "99"} + ,{"name": "k_EResultNotSettled","value": "100"} + ,{"name": "k_EResultNeedCaptcha","value": "101"} + ,{"name": "k_EResultGSLTDenied","value": "102"} + ,{"name": "k_EResultGSOwnerDenied","value": "103"} + ,{"name": "k_EResultInvalidItemType","value": "104"} + ,{"name": "k_EResultIPBanned","value": "105"} + ,{"name": "k_EResultGSLTExpired","value": "106"} +]} +, {"enumname": "EVoiceResult","values": [ + {"name": "k_EVoiceResultOK","value": "0"} + ,{"name": "k_EVoiceResultNotInitialized","value": "1"} + ,{"name": "k_EVoiceResultNotRecording","value": "2"} + ,{"name": "k_EVoiceResultNoData","value": "3"} + ,{"name": "k_EVoiceResultBufferTooSmall","value": "4"} + ,{"name": "k_EVoiceResultDataCorrupted","value": "5"} + ,{"name": "k_EVoiceResultRestricted","value": "6"} + ,{"name": "k_EVoiceResultUnsupportedCodec","value": "7"} + ,{"name": "k_EVoiceResultReceiverOutOfDate","value": "8"} + ,{"name": "k_EVoiceResultReceiverDidNotAnswer","value": "9"} +]} +, {"enumname": "EDenyReason","values": [ + {"name": "k_EDenyInvalid","value": "0"} + ,{"name": "k_EDenyInvalidVersion","value": "1"} + ,{"name": "k_EDenyGeneric","value": "2"} + ,{"name": "k_EDenyNotLoggedOn","value": "3"} + ,{"name": "k_EDenyNoLicense","value": "4"} + ,{"name": "k_EDenyCheater","value": "5"} + ,{"name": "k_EDenyLoggedInElseWhere","value": "6"} + ,{"name": "k_EDenyUnknownText","value": "7"} + ,{"name": "k_EDenyIncompatibleAnticheat","value": "8"} + ,{"name": "k_EDenyMemoryCorruption","value": "9"} + ,{"name": "k_EDenyIncompatibleSoftware","value": "10"} + ,{"name": "k_EDenySteamConnectionLost","value": "11"} + ,{"name": "k_EDenySteamConnectionError","value": "12"} + ,{"name": "k_EDenySteamResponseTimedOut","value": "13"} + ,{"name": "k_EDenySteamValidationStalled","value": "14"} + ,{"name": "k_EDenySteamOwnerLeftGuestUser","value": "15"} +]} +, {"enumname": "EBeginAuthSessionResult","values": [ + {"name": "k_EBeginAuthSessionResultOK","value": "0"} + ,{"name": "k_EBeginAuthSessionResultInvalidTicket","value": "1"} + ,{"name": "k_EBeginAuthSessionResultDuplicateRequest","value": "2"} + ,{"name": "k_EBeginAuthSessionResultInvalidVersion","value": "3"} + ,{"name": "k_EBeginAuthSessionResultGameMismatch","value": "4"} + ,{"name": "k_EBeginAuthSessionResultExpiredTicket","value": "5"} +]} +, {"enumname": "EAuthSessionResponse","values": [ + {"name": "k_EAuthSessionResponseOK","value": "0"} + ,{"name": "k_EAuthSessionResponseUserNotConnectedToSteam","value": "1"} + ,{"name": "k_EAuthSessionResponseNoLicenseOrExpired","value": "2"} + ,{"name": "k_EAuthSessionResponseVACBanned","value": "3"} + ,{"name": "k_EAuthSessionResponseLoggedInElseWhere","value": "4"} + ,{"name": "k_EAuthSessionResponseVACCheckTimedOut","value": "5"} + ,{"name": "k_EAuthSessionResponseAuthTicketCanceled","value": "6"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed","value": "7"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalid","value": "8"} + ,{"name": "k_EAuthSessionResponsePublisherIssuedBan","value": "9"} +]} +, {"enumname": "EUserHasLicenseForAppResult","values": [ + {"name": "k_EUserHasLicenseResultHasLicense","value": "0"} + ,{"name": "k_EUserHasLicenseResultDoesNotHaveLicense","value": "1"} + ,{"name": "k_EUserHasLicenseResultNoAuth","value": "2"} +]} +, {"enumname": "EAccountType","values": [ + {"name": "k_EAccountTypeInvalid","value": "0"} + ,{"name": "k_EAccountTypeIndividual","value": "1"} + ,{"name": "k_EAccountTypeMultiseat","value": "2"} + ,{"name": "k_EAccountTypeGameServer","value": "3"} + ,{"name": "k_EAccountTypeAnonGameServer","value": "4"} + ,{"name": "k_EAccountTypePending","value": "5"} + ,{"name": "k_EAccountTypeContentServer","value": "6"} + ,{"name": "k_EAccountTypeClan","value": "7"} + ,{"name": "k_EAccountTypeChat","value": "8"} + ,{"name": "k_EAccountTypeConsoleUser","value": "9"} + ,{"name": "k_EAccountTypeAnonUser","value": "10"} + ,{"name": "k_EAccountTypeMax","value": "11"} +]} +, {"enumname": "EAppReleaseState","values": [ + {"name": "k_EAppReleaseState_Unknown","value": "0"} + ,{"name": "k_EAppReleaseState_Unavailable","value": "1"} + ,{"name": "k_EAppReleaseState_Prerelease","value": "2"} + ,{"name": "k_EAppReleaseState_PreloadOnly","value": "3"} + ,{"name": "k_EAppReleaseState_Released","value": "4"} +]} +, {"enumname": "EAppOwnershipFlags","values": [ + {"name": "k_EAppOwnershipFlags_None","value": "0"} + ,{"name": "k_EAppOwnershipFlags_OwnsLicense","value": "1"} + ,{"name": "k_EAppOwnershipFlags_FreeLicense","value": "2"} + ,{"name": "k_EAppOwnershipFlags_RegionRestricted","value": "4"} + ,{"name": "k_EAppOwnershipFlags_LowViolence","value": "8"} + ,{"name": "k_EAppOwnershipFlags_InvalidPlatform","value": "16"} + ,{"name": "k_EAppOwnershipFlags_SharedLicense","value": "32"} + ,{"name": "k_EAppOwnershipFlags_FreeWeekend","value": "64"} + ,{"name": "k_EAppOwnershipFlags_RetailLicense","value": "128"} + ,{"name": "k_EAppOwnershipFlags_LicenseLocked","value": "256"} + ,{"name": "k_EAppOwnershipFlags_LicensePending","value": "512"} + ,{"name": "k_EAppOwnershipFlags_LicenseExpired","value": "1024"} + ,{"name": "k_EAppOwnershipFlags_LicensePermanent","value": "2048"} + ,{"name": "k_EAppOwnershipFlags_LicenseRecurring","value": "4096"} + ,{"name": "k_EAppOwnershipFlags_LicenseCanceled","value": "8192"} + ,{"name": "k_EAppOwnershipFlags_AutoGrant","value": "16384"} + ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} + ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} + ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} +]} +, {"enumname": "EAppType","values": [ + {"name": "k_EAppType_Invalid","value": "0"} + ,{"name": "k_EAppType_Game","value": "1"} + ,{"name": "k_EAppType_Application","value": "2"} + ,{"name": "k_EAppType_Tool","value": "4"} + ,{"name": "k_EAppType_Demo","value": "8"} + ,{"name": "k_EAppType_Media_DEPRECATED","value": "16"} + ,{"name": "k_EAppType_DLC","value": "32"} + ,{"name": "k_EAppType_Guide","value": "64"} + ,{"name": "k_EAppType_Driver","value": "128"} + ,{"name": "k_EAppType_Config","value": "256"} + ,{"name": "k_EAppType_Hardware","value": "512"} + ,{"name": "k_EAppType_Franchise","value": "1024"} + ,{"name": "k_EAppType_Video","value": "2048"} + ,{"name": "k_EAppType_Plugin","value": "4096"} + ,{"name": "k_EAppType_Music","value": "8192"} + ,{"name": "k_EAppType_Series","value": "16384"} + ,{"name": "k_EAppType_Shortcut","value": "1073741824"} + ,{"name": "k_EAppType_DepotOnly","value": "-2147483648"} +]} +, {"enumname": "ESteamUserStatType","values": [ + {"name": "k_ESteamUserStatTypeINVALID","value": "0"} + ,{"name": "k_ESteamUserStatTypeINT","value": "1"} + ,{"name": "k_ESteamUserStatTypeFLOAT","value": "2"} + ,{"name": "k_ESteamUserStatTypeAVGRATE","value": "3"} + ,{"name": "k_ESteamUserStatTypeACHIEVEMENTS","value": "4"} + ,{"name": "k_ESteamUserStatTypeGROUPACHIEVEMENTS","value": "5"} + ,{"name": "k_ESteamUserStatTypeMAX","value": "6"} +]} +, {"enumname": "EChatEntryType","values": [ + {"name": "k_EChatEntryTypeInvalid","value": "0"} + ,{"name": "k_EChatEntryTypeChatMsg","value": "1"} + ,{"name": "k_EChatEntryTypeTyping","value": "2"} + ,{"name": "k_EChatEntryTypeInviteGame","value": "3"} + ,{"name": "k_EChatEntryTypeEmote","value": "4"} + ,{"name": "k_EChatEntryTypeLeftConversation","value": "6"} + ,{"name": "k_EChatEntryTypeEntered","value": "7"} + ,{"name": "k_EChatEntryTypeWasKicked","value": "8"} + ,{"name": "k_EChatEntryTypeWasBanned","value": "9"} + ,{"name": "k_EChatEntryTypeDisconnected","value": "10"} + ,{"name": "k_EChatEntryTypeHistoricalChat","value": "11"} + ,{"name": "k_EChatEntryTypeLinkBlocked","value": "14"} +]} +, {"enumname": "EChatRoomEnterResponse","values": [ + {"name": "k_EChatRoomEnterResponseSuccess","value": "1"} + ,{"name": "k_EChatRoomEnterResponseDoesntExist","value": "2"} + ,{"name": "k_EChatRoomEnterResponseNotAllowed","value": "3"} + ,{"name": "k_EChatRoomEnterResponseFull","value": "4"} + ,{"name": "k_EChatRoomEnterResponseError","value": "5"} + ,{"name": "k_EChatRoomEnterResponseBanned","value": "6"} + ,{"name": "k_EChatRoomEnterResponseLimited","value": "7"} + ,{"name": "k_EChatRoomEnterResponseClanDisabled","value": "8"} + ,{"name": "k_EChatRoomEnterResponseCommunityBan","value": "9"} + ,{"name": "k_EChatRoomEnterResponseMemberBlockedYou","value": "10"} + ,{"name": "k_EChatRoomEnterResponseYouBlockedMember","value": "11"} +]} +, {"enumname": "EChatSteamIDInstanceFlags","values": [ + {"name": "k_EChatAccountInstanceMask","value": "4095"} + ,{"name": "k_EChatInstanceFlagClan","value": "524288"} + ,{"name": "k_EChatInstanceFlagLobby","value": "262144"} + ,{"name": "k_EChatInstanceFlagMMSLobby","value": "131072"} +]} +, {"enumname": "EMarketingMessageFlags","values": [ + {"name": "k_EMarketingMessageFlagsNone","value": "0"} + ,{"name": "k_EMarketingMessageFlagsHighPriority","value": "1"} + ,{"name": "k_EMarketingMessageFlagsPlatformWindows","value": "2"} + ,{"name": "k_EMarketingMessageFlagsPlatformMac","value": "4"} + ,{"name": "k_EMarketingMessageFlagsPlatformLinux","value": "8"} + ,{"name": "k_EMarketingMessageFlagsPlatformRestrictions","value": "14"} +]} +, {"enumname": "ENotificationPosition","values": [ + {"name": "k_EPositionTopLeft","value": "0"} + ,{"name": "k_EPositionTopRight","value": "1"} + ,{"name": "k_EPositionBottomLeft","value": "2"} + ,{"name": "k_EPositionBottomRight","value": "3"} +]} +, {"enumname": "EBroadcastUploadResult","values": [ + {"name": "k_EBroadcastUploadResultNone","value": "0"} + ,{"name": "k_EBroadcastUploadResultOK","value": "1"} + ,{"name": "k_EBroadcastUploadResultInitFailed","value": "2"} + ,{"name": "k_EBroadcastUploadResultFrameFailed","value": "3"} + ,{"name": "k_EBroadcastUploadResultTimeout","value": "4"} + ,{"name": "k_EBroadcastUploadResultBandwidthExceeded","value": "5"} + ,{"name": "k_EBroadcastUploadResultLowFPS","value": "6"} + ,{"name": "k_EBroadcastUploadResultMissingKeyFrames","value": "7"} + ,{"name": "k_EBroadcastUploadResultNoConnection","value": "8"} + ,{"name": "k_EBroadcastUploadResultRelayFailed","value": "9"} + ,{"name": "k_EBroadcastUploadResultSettingsChanged","value": "10"} + ,{"name": "k_EBroadcastUploadResultMissingAudio","value": "11"} + ,{"name": "k_EBroadcastUploadResultTooFarBehind","value": "12"} + ,{"name": "k_EBroadcastUploadResultTranscodeBehind","value": "13"} +]} +, {"enumname": "ELaunchOptionType","values": [ + {"name": "k_ELaunchOptionType_None","value": "0"} + ,{"name": "k_ELaunchOptionType_Default","value": "1"} + ,{"name": "k_ELaunchOptionType_SafeMode","value": "2"} + ,{"name": "k_ELaunchOptionType_Multiplayer","value": "3"} + ,{"name": "k_ELaunchOptionType_Config","value": "4"} + ,{"name": "k_ELaunchOptionType_OpenVR","value": "5"} + ,{"name": "k_ELaunchOptionType_Server","value": "6"} + ,{"name": "k_ELaunchOptionType_Editor","value": "7"} + ,{"name": "k_ELaunchOptionType_Manual","value": "8"} + ,{"name": "k_ELaunchOptionType_Benchmark","value": "9"} + ,{"name": "k_ELaunchOptionType_Option1","value": "10"} + ,{"name": "k_ELaunchOptionType_Option2","value": "11"} + ,{"name": "k_ELaunchOptionType_Option3","value": "12"} + ,{"name": "k_ELaunchOptionType_OculusVR","value": "13"} + ,{"name": "k_ELaunchOptionType_OpenVROverlay","value": "14"} + ,{"name": "k_ELaunchOptionType_OSVR","value": "15"} + ,{"name": "k_ELaunchOptionType_Dialog","value": "1000"} +]} +, {"enumname": "EVRHMDType","values": [ + {"name": "k_eEVRHMDType_None","value": "-1"} + ,{"name": "k_eEVRHMDType_Unknown","value": "0"} + ,{"name": "k_eEVRHMDType_HTC_Dev","value": "1"} + ,{"name": "k_eEVRHMDType_HTC_VivePre","value": "2"} + ,{"name": "k_eEVRHMDType_HTC_Vive","value": "3"} + ,{"name": "k_eEVRHMDType_HTC_Unknown","value": "20"} + ,{"name": "k_eEVRHMDType_Oculus_DK1","value": "21"} + ,{"name": "k_eEVRHMDType_Oculus_DK2","value": "22"} + ,{"name": "k_eEVRHMDType_Oculus_Rift","value": "23"} + ,{"name": "k_eEVRHMDType_Oculus_Unknown","value": "40"} +]} +, {"enumname": "EControllerType","values": [ + {"name": "k_eControllerType_None","value": "-1"} + ,{"name": "k_eControllerType_Unknown","value": "0"} + ,{"name": "k_eControllerType_UnknownSteamController","value": "1"} + ,{"name": "k_eControllerType_SteamController","value": "2"} + ,{"name": "k_eControllerType_UnknownNonSteamController","value": "30"} + ,{"name": "k_eControllerType_XBox360Controller","value": "31"} + ,{"name": "k_eControllerType_XBoxOneController","value": "32"} + ,{"name": "k_eControllerType_PS3Controller","value": "33"} + ,{"name": "k_eControllerType_PS4Controller","value": "34"} + ,{"name": "k_eControllerType_WiiController","value": "35"} + ,{"name": "k_eControllerType_AppleController","value": "36"} +]} +, {"enumname": "CGameID::EGameIDType","values": [ + {"name": "k_EGameIDTypeApp","value": "0"} + ,{"name": "k_EGameIDTypeGameMod","value": "1"} + ,{"name": "k_EGameIDTypeShortcut","value": "2"} + ,{"name": "k_EGameIDTypeP2P","value": "3"} +]} +, {"enumname": "IPCFailure_t::EFailureType","values": [ + {"name": "k_EFailureFlushedCallbackQueue","value": "0"} + ,{"name": "k_EFailurePipeFail","value": "1"} +]} +, {"enumname": "EFriendRelationship","values": [ + {"name": "k_EFriendRelationshipNone","value": "0"} + ,{"name": "k_EFriendRelationshipBlocked","value": "1"} + ,{"name": "k_EFriendRelationshipRequestRecipient","value": "2"} + ,{"name": "k_EFriendRelationshipFriend","value": "3"} + ,{"name": "k_EFriendRelationshipRequestInitiator","value": "4"} + ,{"name": "k_EFriendRelationshipIgnored","value": "5"} + ,{"name": "k_EFriendRelationshipIgnoredFriend","value": "6"} + ,{"name": "k_EFriendRelationshipSuggested_DEPRECATED","value": "7"} + ,{"name": "k_EFriendRelationshipMax","value": "8"} +]} +, {"enumname": "EPersonaState","values": [ + {"name": "k_EPersonaStateOffline","value": "0"} + ,{"name": "k_EPersonaStateOnline","value": "1"} + ,{"name": "k_EPersonaStateBusy","value": "2"} + ,{"name": "k_EPersonaStateAway","value": "3"} + ,{"name": "k_EPersonaStateSnooze","value": "4"} + ,{"name": "k_EPersonaStateLookingToTrade","value": "5"} + ,{"name": "k_EPersonaStateLookingToPlay","value": "6"} + ,{"name": "k_EPersonaStateMax","value": "7"} +]} +, {"enumname": "EFriendFlags","values": [ + {"name": "k_EFriendFlagNone","value": "0"} + ,{"name": "k_EFriendFlagBlocked","value": "1"} + ,{"name": "k_EFriendFlagFriendshipRequested","value": "2"} + ,{"name": "k_EFriendFlagImmediate","value": "4"} + ,{"name": "k_EFriendFlagClanMember","value": "8"} + ,{"name": "k_EFriendFlagOnGameServer","value": "16"} + ,{"name": "k_EFriendFlagRequestingFriendship","value": "128"} + ,{"name": "k_EFriendFlagRequestingInfo","value": "256"} + ,{"name": "k_EFriendFlagIgnored","value": "512"} + ,{"name": "k_EFriendFlagIgnoredFriend","value": "1024"} + ,{"name": "k_EFriendFlagSuggested","value": "2048"} + ,{"name": "k_EFriendFlagChatMember","value": "4096"} + ,{"name": "k_EFriendFlagAll","value": "65535"} +]} +, {"enumname": "EUserRestriction","values": [ + {"name": "k_nUserRestrictionNone","value": "0"} + ,{"name": "k_nUserRestrictionUnknown","value": "1"} + ,{"name": "k_nUserRestrictionAnyChat","value": "2"} + ,{"name": "k_nUserRestrictionVoiceChat","value": "4"} + ,{"name": "k_nUserRestrictionGroupChat","value": "8"} + ,{"name": "k_nUserRestrictionRating","value": "16"} + ,{"name": "k_nUserRestrictionGameInvites","value": "32"} + ,{"name": "k_nUserRestrictionTrading","value": "64"} +]} +, {"enumname": "EOverlayToStoreFlag","values": [ + {"name": "k_EOverlayToStoreFlag_None","value": "0"} + ,{"name": "k_EOverlayToStoreFlag_AddToCart","value": "1"} + ,{"name": "k_EOverlayToStoreFlag_AddToCartAndShow","value": "2"} +]} +, {"enumname": "EPersonaChange","values": [ + {"name": "k_EPersonaChangeName","value": "1"} + ,{"name": "k_EPersonaChangeStatus","value": "2"} + ,{"name": "k_EPersonaChangeComeOnline","value": "4"} + ,{"name": "k_EPersonaChangeGoneOffline","value": "8"} + ,{"name": "k_EPersonaChangeGamePlayed","value": "16"} + ,{"name": "k_EPersonaChangeGameServer","value": "32"} + ,{"name": "k_EPersonaChangeAvatar","value": "64"} + ,{"name": "k_EPersonaChangeJoinedSource","value": "128"} + ,{"name": "k_EPersonaChangeLeftSource","value": "256"} + ,{"name": "k_EPersonaChangeRelationshipChanged","value": "512"} + ,{"name": "k_EPersonaChangeNameFirstSet","value": "1024"} + ,{"name": "k_EPersonaChangeFacebookInfo","value": "2048"} + ,{"name": "k_EPersonaChangeNickname","value": "4096"} + ,{"name": "k_EPersonaChangeSteamLevel","value": "8192"} +]} +, {"enumname": "ESteamAPICallFailure","values": [ + {"name": "k_ESteamAPICallFailureNone","value": "-1"} + ,{"name": "k_ESteamAPICallFailureSteamGone","value": "0"} + ,{"name": "k_ESteamAPICallFailureNetworkFailure","value": "1"} + ,{"name": "k_ESteamAPICallFailureInvalidHandle","value": "2"} + ,{"name": "k_ESteamAPICallFailureMismatchedCallback","value": "3"} +]} +, {"enumname": "EGamepadTextInputMode","values": [ + {"name": "k_EGamepadTextInputModeNormal","value": "0"} + ,{"name": "k_EGamepadTextInputModePassword","value": "1"} +]} +, {"enumname": "EGamepadTextInputLineMode","values": [ + {"name": "k_EGamepadTextInputLineModeSingleLine","value": "0"} + ,{"name": "k_EGamepadTextInputLineModeMultipleLines","value": "1"} +]} +, {"enumname": "ECheckFileSignature","values": [ + {"name": "k_ECheckFileSignatureInvalidSignature","value": "0"} + ,{"name": "k_ECheckFileSignatureValidSignature","value": "1"} + ,{"name": "k_ECheckFileSignatureFileNotFound","value": "2"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisApp","value": "3"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisFile","value": "4"} +]} +, {"enumname": "EMatchMakingServerResponse","values": [ + {"name": "eServerResponded","value": "0"} + ,{"name": "eServerFailedToRespond","value": "1"} + ,{"name": "eNoServersListedOnMasterServer","value": "2"} +]} +, {"enumname": "ELobbyType","values": [ + {"name": "k_ELobbyTypePrivate","value": "0"} + ,{"name": "k_ELobbyTypeFriendsOnly","value": "1"} + ,{"name": "k_ELobbyTypePublic","value": "2"} + ,{"name": "k_ELobbyTypeInvisible","value": "3"} +]} +, {"enumname": "ELobbyComparison","values": [ + {"name": "k_ELobbyComparisonEqualToOrLessThan","value": "-2"} + ,{"name": "k_ELobbyComparisonLessThan","value": "-1"} + ,{"name": "k_ELobbyComparisonEqual","value": "0"} + ,{"name": "k_ELobbyComparisonGreaterThan","value": "1"} + ,{"name": "k_ELobbyComparisonEqualToOrGreaterThan","value": "2"} + ,{"name": "k_ELobbyComparisonNotEqual","value": "3"} +]} +, {"enumname": "ELobbyDistanceFilter","values": [ + {"name": "k_ELobbyDistanceFilterClose","value": "0"} + ,{"name": "k_ELobbyDistanceFilterDefault","value": "1"} + ,{"name": "k_ELobbyDistanceFilterFar","value": "2"} + ,{"name": "k_ELobbyDistanceFilterWorldwide","value": "3"} +]} +, {"enumname": "EChatMemberStateChange","values": [ + {"name": "k_EChatMemberStateChangeEntered","value": "1"} + ,{"name": "k_EChatMemberStateChangeLeft","value": "2"} + ,{"name": "k_EChatMemberStateChangeDisconnected","value": "4"} + ,{"name": "k_EChatMemberStateChangeKicked","value": "8"} + ,{"name": "k_EChatMemberStateChangeBanned","value": "16"} +]} +, {"enumname": "ERemoteStoragePlatform","values": [ + {"name": "k_ERemoteStoragePlatformNone","value": "0"} + ,{"name": "k_ERemoteStoragePlatformWindows","value": "1"} + ,{"name": "k_ERemoteStoragePlatformOSX","value": "2"} + ,{"name": "k_ERemoteStoragePlatformPS3","value": "4"} + ,{"name": "k_ERemoteStoragePlatformLinux","value": "8"} + ,{"name": "k_ERemoteStoragePlatformReserved2","value": "16"} + ,{"name": "k_ERemoteStoragePlatformAll","value": "-1"} +]} +, {"enumname": "ERemoteStoragePublishedFileVisibility","values": [ + {"name": "k_ERemoteStoragePublishedFileVisibilityPublic","value": "0"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityFriendsOnly","value": "1"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityPrivate","value": "2"} +]} +, {"enumname": "EWorkshopFileType","values": [ + {"name": "k_EWorkshopFileTypeFirst","value": "0"} + ,{"name": "k_EWorkshopFileTypeCommunity","value": "0"} + ,{"name": "k_EWorkshopFileTypeMicrotransaction","value": "1"} + ,{"name": "k_EWorkshopFileTypeCollection","value": "2"} + ,{"name": "k_EWorkshopFileTypeArt","value": "3"} + ,{"name": "k_EWorkshopFileTypeVideo","value": "4"} + ,{"name": "k_EWorkshopFileTypeScreenshot","value": "5"} + ,{"name": "k_EWorkshopFileTypeGame","value": "6"} + ,{"name": "k_EWorkshopFileTypeSoftware","value": "7"} + ,{"name": "k_EWorkshopFileTypeConcept","value": "8"} + ,{"name": "k_EWorkshopFileTypeWebGuide","value": "9"} + ,{"name": "k_EWorkshopFileTypeIntegratedGuide","value": "10"} + ,{"name": "k_EWorkshopFileTypeMerch","value": "11"} + ,{"name": "k_EWorkshopFileTypeControllerBinding","value": "12"} + ,{"name": "k_EWorkshopFileTypeSteamworksAccessInvite","value": "13"} + ,{"name": "k_EWorkshopFileTypeSteamVideo","value": "14"} + ,{"name": "k_EWorkshopFileTypeGameManagedItem","value": "15"} + ,{"name": "k_EWorkshopFileTypeMax","value": "16"} +]} +, {"enumname": "EWorkshopVote","values": [ + {"name": "k_EWorkshopVoteUnvoted","value": "0"} + ,{"name": "k_EWorkshopVoteFor","value": "1"} + ,{"name": "k_EWorkshopVoteAgainst","value": "2"} + ,{"name": "k_EWorkshopVoteLater","value": "3"} +]} +, {"enumname": "EWorkshopFileAction","values": [ + {"name": "k_EWorkshopFileActionPlayed","value": "0"} + ,{"name": "k_EWorkshopFileActionCompleted","value": "1"} +]} +, {"enumname": "EWorkshopEnumerationType","values": [ + {"name": "k_EWorkshopEnumerationTypeRankedByVote","value": "0"} + ,{"name": "k_EWorkshopEnumerationTypeRecent","value": "1"} + ,{"name": "k_EWorkshopEnumerationTypeTrending","value": "2"} + ,{"name": "k_EWorkshopEnumerationTypeFavoritesOfFriends","value": "3"} + ,{"name": "k_EWorkshopEnumerationTypeVotedByFriends","value": "4"} + ,{"name": "k_EWorkshopEnumerationTypeContentByFriends","value": "5"} + ,{"name": "k_EWorkshopEnumerationTypeRecentFromFollowedUsers","value": "6"} +]} +, {"enumname": "EWorkshopVideoProvider","values": [ + {"name": "k_EWorkshopVideoProviderNone","value": "0"} + ,{"name": "k_EWorkshopVideoProviderYoutube","value": "1"} +]} +, {"enumname": "EUGCReadAction","values": [ + {"name": "k_EUGCRead_ContinueReadingUntilFinished","value": "0"} + ,{"name": "k_EUGCRead_ContinueReading","value": "1"} + ,{"name": "k_EUGCRead_Close","value": "2"} +]} +, {"enumname": "ELeaderboardDataRequest","values": [ + {"name": "k_ELeaderboardDataRequestGlobal","value": "0"} + ,{"name": "k_ELeaderboardDataRequestGlobalAroundUser","value": "1"} + ,{"name": "k_ELeaderboardDataRequestFriends","value": "2"} + ,{"name": "k_ELeaderboardDataRequestUsers","value": "3"} +]} +, {"enumname": "ELeaderboardSortMethod","values": [ + {"name": "k_ELeaderboardSortMethodNone","value": "0"} + ,{"name": "k_ELeaderboardSortMethodAscending","value": "1"} + ,{"name": "k_ELeaderboardSortMethodDescending","value": "2"} +]} +, {"enumname": "ELeaderboardDisplayType","values": [ + {"name": "k_ELeaderboardDisplayTypeNone","value": "0"} + ,{"name": "k_ELeaderboardDisplayTypeNumeric","value": "1"} + ,{"name": "k_ELeaderboardDisplayTypeTimeSeconds","value": "2"} + ,{"name": "k_ELeaderboardDisplayTypeTimeMilliSeconds","value": "3"} +]} +, {"enumname": "ELeaderboardUploadScoreMethod","values": [ + {"name": "k_ELeaderboardUploadScoreMethodNone","value": "0"} + ,{"name": "k_ELeaderboardUploadScoreMethodKeepBest","value": "1"} + ,{"name": "k_ELeaderboardUploadScoreMethodForceUpdate","value": "2"} +]} +, {"enumname": "ERegisterActivationCodeResult","values": [ + {"name": "k_ERegisterActivationCodeResultOK","value": "0"} + ,{"name": "k_ERegisterActivationCodeResultFail","value": "1"} + ,{"name": "k_ERegisterActivationCodeResultAlreadyRegistered","value": "2"} + ,{"name": "k_ERegisterActivationCodeResultTimeout","value": "3"} + ,{"name": "k_ERegisterActivationCodeAlreadyOwned","value": "4"} +]} +, {"enumname": "EP2PSessionError","values": [ + {"name": "k_EP2PSessionErrorNone","value": "0"} + ,{"name": "k_EP2PSessionErrorNotRunningApp","value": "1"} + ,{"name": "k_EP2PSessionErrorNoRightsToApp","value": "2"} + ,{"name": "k_EP2PSessionErrorDestinationNotLoggedIn","value": "3"} + ,{"name": "k_EP2PSessionErrorTimeout","value": "4"} + ,{"name": "k_EP2PSessionErrorMax","value": "5"} +]} +, {"enumname": "EP2PSend","values": [ + {"name": "k_EP2PSendUnreliable","value": "0"} + ,{"name": "k_EP2PSendUnreliableNoDelay","value": "1"} + ,{"name": "k_EP2PSendReliable","value": "2"} + ,{"name": "k_EP2PSendReliableWithBuffering","value": "3"} +]} +, {"enumname": "ESNetSocketState","values": [ + {"name": "k_ESNetSocketStateInvalid","value": "0"} + ,{"name": "k_ESNetSocketStateConnected","value": "1"} + ,{"name": "k_ESNetSocketStateInitiated","value": "10"} + ,{"name": "k_ESNetSocketStateLocalCandidatesFound","value": "11"} + ,{"name": "k_ESNetSocketStateReceivedRemoteCandidates","value": "12"} + ,{"name": "k_ESNetSocketStateChallengeHandshake","value": "15"} + ,{"name": "k_ESNetSocketStateDisconnecting","value": "21"} + ,{"name": "k_ESNetSocketStateLocalDisconnect","value": "22"} + ,{"name": "k_ESNetSocketStateTimeoutDuringConnect","value": "23"} + ,{"name": "k_ESNetSocketStateRemoteEndDisconnected","value": "24"} + ,{"name": "k_ESNetSocketStateConnectionBroken","value": "25"} +]} +, {"enumname": "ESNetSocketConnectionType","values": [ + {"name": "k_ESNetSocketConnectionTypeNotConnected","value": "0"} + ,{"name": "k_ESNetSocketConnectionTypeUDP","value": "1"} + ,{"name": "k_ESNetSocketConnectionTypeUDPRelay","value": "2"} +]} +, {"enumname": "EVRScreenshotType","values": [ + {"name": "k_EVRScreenshotType_None","value": "0"} + ,{"name": "k_EVRScreenshotType_Mono","value": "1"} + ,{"name": "k_EVRScreenshotType_Stereo","value": "2"} + ,{"name": "k_EVRScreenshotType_MonoCubemap","value": "3"} + ,{"name": "k_EVRScreenshotType_MonoPanorama","value": "4"} + ,{"name": "k_EVRScreenshotType_StereoPanorama","value": "5"} +]} +, {"enumname": "AudioPlayback_Status","values": [ + {"name": "AudioPlayback_Undefined","value": "0"} + ,{"name": "AudioPlayback_Playing","value": "1"} + ,{"name": "AudioPlayback_Paused","value": "2"} + ,{"name": "AudioPlayback_Idle","value": "3"} +]} +, {"enumname": "EHTTPMethod","values": [ + {"name": "k_EHTTPMethodInvalid","value": "0"} + ,{"name": "k_EHTTPMethodGET","value": "1"} + ,{"name": "k_EHTTPMethodHEAD","value": "2"} + ,{"name": "k_EHTTPMethodPOST","value": "3"} + ,{"name": "k_EHTTPMethodPUT","value": "4"} + ,{"name": "k_EHTTPMethodDELETE","value": "5"} + ,{"name": "k_EHTTPMethodOPTIONS","value": "6"} + ,{"name": "k_EHTTPMethodPATCH","value": "7"} +]} +, {"enumname": "EHTTPStatusCode","values": [ + {"name": "k_EHTTPStatusCodeInvalid","value": "0"} + ,{"name": "k_EHTTPStatusCode100Continue","value": "100"} + ,{"name": "k_EHTTPStatusCode101SwitchingProtocols","value": "101"} + ,{"name": "k_EHTTPStatusCode200OK","value": "200"} + ,{"name": "k_EHTTPStatusCode201Created","value": "201"} + ,{"name": "k_EHTTPStatusCode202Accepted","value": "202"} + ,{"name": "k_EHTTPStatusCode203NonAuthoritative","value": "203"} + ,{"name": "k_EHTTPStatusCode204NoContent","value": "204"} + ,{"name": "k_EHTTPStatusCode205ResetContent","value": "205"} + ,{"name": "k_EHTTPStatusCode206PartialContent","value": "206"} + ,{"name": "k_EHTTPStatusCode300MultipleChoices","value": "300"} + ,{"name": "k_EHTTPStatusCode301MovedPermanently","value": "301"} + ,{"name": "k_EHTTPStatusCode302Found","value": "302"} + ,{"name": "k_EHTTPStatusCode303SeeOther","value": "303"} + ,{"name": "k_EHTTPStatusCode304NotModified","value": "304"} + ,{"name": "k_EHTTPStatusCode305UseProxy","value": "305"} + ,{"name": "k_EHTTPStatusCode307TemporaryRedirect","value": "307"} + ,{"name": "k_EHTTPStatusCode400BadRequest","value": "400"} + ,{"name": "k_EHTTPStatusCode401Unauthorized","value": "401"} + ,{"name": "k_EHTTPStatusCode402PaymentRequired","value": "402"} + ,{"name": "k_EHTTPStatusCode403Forbidden","value": "403"} + ,{"name": "k_EHTTPStatusCode404NotFound","value": "404"} + ,{"name": "k_EHTTPStatusCode405MethodNotAllowed","value": "405"} + ,{"name": "k_EHTTPStatusCode406NotAcceptable","value": "406"} + ,{"name": "k_EHTTPStatusCode407ProxyAuthRequired","value": "407"} + ,{"name": "k_EHTTPStatusCode408RequestTimeout","value": "408"} + ,{"name": "k_EHTTPStatusCode409Conflict","value": "409"} + ,{"name": "k_EHTTPStatusCode410Gone","value": "410"} + ,{"name": "k_EHTTPStatusCode411LengthRequired","value": "411"} + ,{"name": "k_EHTTPStatusCode412PreconditionFailed","value": "412"} + ,{"name": "k_EHTTPStatusCode413RequestEntityTooLarge","value": "413"} + ,{"name": "k_EHTTPStatusCode414RequestURITooLong","value": "414"} + ,{"name": "k_EHTTPStatusCode415UnsupportedMediaType","value": "415"} + ,{"name": "k_EHTTPStatusCode416RequestedRangeNotSatisfiable","value": "416"} + ,{"name": "k_EHTTPStatusCode417ExpectationFailed","value": "417"} + ,{"name": "k_EHTTPStatusCode4xxUnknown","value": "418"} + ,{"name": "k_EHTTPStatusCode429TooManyRequests","value": "429"} + ,{"name": "k_EHTTPStatusCode500InternalServerError","value": "500"} + ,{"name": "k_EHTTPStatusCode501NotImplemented","value": "501"} + ,{"name": "k_EHTTPStatusCode502BadGateway","value": "502"} + ,{"name": "k_EHTTPStatusCode503ServiceUnavailable","value": "503"} + ,{"name": "k_EHTTPStatusCode504GatewayTimeout","value": "504"} + ,{"name": "k_EHTTPStatusCode505HTTPVersionNotSupported","value": "505"} + ,{"name": "k_EHTTPStatusCode5xxUnknown","value": "599"} +]} +, {"enumname": "ESteamControllerPad","values": [ + {"name": "k_ESteamControllerPad_Left","value": "0"} + ,{"name": "k_ESteamControllerPad_Right","value": "1"} +]} +, {"enumname": "EControllerSource","values": [ + {"name": "k_EControllerSource_None","value": "0"} + ,{"name": "k_EControllerSource_LeftTrackpad","value": "1"} + ,{"name": "k_EControllerSource_RightTrackpad","value": "2"} + ,{"name": "k_EControllerSource_Joystick","value": "3"} + ,{"name": "k_EControllerSource_ABXY","value": "4"} + ,{"name": "k_EControllerSource_Switch","value": "5"} + ,{"name": "k_EControllerSource_LeftTrigger","value": "6"} + ,{"name": "k_EControllerSource_RightTrigger","value": "7"} + ,{"name": "k_EControllerSource_Gyro","value": "8"} + ,{"name": "k_EControllerSource_Count","value": "9"} +]} +, {"enumname": "EControllerSourceMode","values": [ + {"name": "k_EControllerSourceMode_None","value": "0"} + ,{"name": "k_EControllerSourceMode_Dpad","value": "1"} + ,{"name": "k_EControllerSourceMode_Buttons","value": "2"} + ,{"name": "k_EControllerSourceMode_FourButtons","value": "3"} + ,{"name": "k_EControllerSourceMode_AbsoluteMouse","value": "4"} + ,{"name": "k_EControllerSourceMode_RelativeMouse","value": "5"} + ,{"name": "k_EControllerSourceMode_JoystickMove","value": "6"} + ,{"name": "k_EControllerSourceMode_JoystickCamera","value": "7"} + ,{"name": "k_EControllerSourceMode_ScrollWheel","value": "8"} + ,{"name": "k_EControllerSourceMode_Trigger","value": "9"} + ,{"name": "k_EControllerSourceMode_TouchMenu","value": "10"} + ,{"name": "k_EControllerSourceMode_MouseJoystick","value": "11"} + ,{"name": "k_EControllerSourceMode_MouseRegion","value": "12"} + ,{"name": "k_EControllerSourceMode_RadialMenu","value": "13"} + ,{"name": "k_EControllerSourceMode_Switches","value": "14"} +]} +, {"enumname": "EControllerActionOrigin","values": [ + {"name": "k_EControllerActionOrigin_None","value": "0"} + ,{"name": "k_EControllerActionOrigin_A","value": "1"} + ,{"name": "k_EControllerActionOrigin_B","value": "2"} + ,{"name": "k_EControllerActionOrigin_X","value": "3"} + ,{"name": "k_EControllerActionOrigin_Y","value": "4"} + ,{"name": "k_EControllerActionOrigin_LeftBumper","value": "5"} + ,{"name": "k_EControllerActionOrigin_RightBumper","value": "6"} + ,{"name": "k_EControllerActionOrigin_LeftGrip","value": "7"} + ,{"name": "k_EControllerActionOrigin_RightGrip","value": "8"} + ,{"name": "k_EControllerActionOrigin_Start","value": "9"} + ,{"name": "k_EControllerActionOrigin_Back","value": "10"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Touch","value": "11"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Swipe","value": "12"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Click","value": "13"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadNorth","value": "14"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadSouth","value": "15"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadWest","value": "16"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadEast","value": "17"} + ,{"name": "k_EControllerActionOrigin_RightPad_Touch","value": "18"} + ,{"name": "k_EControllerActionOrigin_RightPad_Swipe","value": "19"} + ,{"name": "k_EControllerActionOrigin_RightPad_Click","value": "20"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadNorth","value": "21"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadSouth","value": "22"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadWest","value": "23"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadEast","value": "24"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Pull","value": "25"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Click","value": "26"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Pull","value": "27"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Click","value": "28"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Move","value": "29"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Click","value": "30"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadNorth","value": "31"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadSouth","value": "32"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadWest","value": "33"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadEast","value": "34"} + ,{"name": "k_EControllerActionOrigin_Gyro_Move","value": "35"} + ,{"name": "k_EControllerActionOrigin_Gyro_Pitch","value": "36"} + ,{"name": "k_EControllerActionOrigin_Gyro_Yaw","value": "37"} + ,{"name": "k_EControllerActionOrigin_Gyro_Roll","value": "38"} + ,{"name": "k_EControllerActionOrigin_Count","value": "39"} +]} +, {"enumname": "EControllerActivationType","values": [ + {"name": "k_EControllerActivationType_None","value": "0"} + ,{"name": "k_EControllerActivationType_FullPress","value": "1"} + ,{"name": "k_EControllerActivationType_SoftPress","value": "2"} + ,{"name": "k_EControllerActivationType_StartPress","value": "3"} + ,{"name": "k_EControllerActivationType_Release","value": "4"} + ,{"name": "k_EControllerActivationType_LongPress","value": "5"} + ,{"name": "k_EControllerActivationType_DoublePress","value": "6"} + ,{"name": "k_EControllerActivationType_Analog","value": "7"} +]} +, {"enumname": "EControllerPressureButton","values": [ + {"name": "k_EControllerPressureButton_LeftTrackPad","value": "0"} + ,{"name": "k_EControllerPressureButton_RightTrackPad","value": "1"} + ,{"name": "k_EControllerPressureButton_LeftBumper","value": "2"} + ,{"name": "k_EControllerPressureButton_RightBumper","value": "3"} + ,{"name": "k_EControllerPressureButton_LeftGripLower","value": "4"} + ,{"name": "k_EControllerPressureButton_RightGripLower","value": "5"} + ,{"name": "k_EControllerPressureButton_LeftGripUpper","value": "6"} + ,{"name": "k_EControllerPressureButton_RightGripUpper","value": "7"} + ,{"name": "k_EControllerPressureButton_Invalid","value": "8"} +]} +, {"enumname": "EControllerActivatorOutputAxis","values": [ + {"name": "k_EOutputAxisLeftTrigger","value": "0"} + ,{"name": "k_EOutputAxisRightTrigger","value": "1"} + ,{"name": "k_EOutputAxisLeftThumbXPos","value": "2"} + ,{"name": "k_EOutputAxisLeftThumbXNeg","value": "3"} + ,{"name": "k_EOutputAxisLeftThumbYPos","value": "4"} + ,{"name": "k_EOutputAxisLeftThumbYNeg","value": "5"} + ,{"name": "k_EOutputAxisRightThumbXPos","value": "6"} + ,{"name": "k_EOutputAxisRightThumbXNeg","value": "7"} + ,{"name": "k_EOutputAxisRightThumbYPos","value": "8"} + ,{"name": "k_EOutputAxisRightThumbYNeg","value": "9"} +]} +, {"enumname": "EControllerConfigFeature","values": [ + {"name": "k_EControllerConfigFeature_None","value": "0"} + ,{"name": "k_EControllerConfigFeature_Gamepad","value": "1"} + ,{"name": "k_EControllerConfigFeature_Keyboard","value": "2"} + ,{"name": "k_EControllerConfigFeature_Mouse","value": "3"} + ,{"name": "k_EControllerConfigFeature_Gyro","value": "4"} + ,{"name": "k_EControllerConfigFeature_TouchMenu","value": "5"} + ,{"name": "k_EControllerConfigFeature_ModeShift","value": "6"} + ,{"name": "k_EControllerConfigFeature_ActionSet","value": "7"} + ,{"name": "k_EControllerConfigFeature_Activator","value": "8"} +]} +, {"enumname": "EControllerPopupMenuActivationType","values": [ + {"name": "k_EMenuButtonPress","value": "0"} + ,{"name": "k_EMenuButtonRelease","value": "1"} + ,{"name": "k_EMenuTouchRelease","value": "2"} + ,{"name": "k_EMenuTouchAlways","value": "3"} +]} +, {"enumname": "EUGCMatchingUGCType","values": [ + {"name": "k_EUGCMatchingUGCType_Items","value": "0"} + ,{"name": "k_EUGCMatchingUGCType_Items_Mtx","value": "1"} + ,{"name": "k_EUGCMatchingUGCType_Items_ReadyToUse","value": "2"} + ,{"name": "k_EUGCMatchingUGCType_Collections","value": "3"} + ,{"name": "k_EUGCMatchingUGCType_Artwork","value": "4"} + ,{"name": "k_EUGCMatchingUGCType_Videos","value": "5"} + ,{"name": "k_EUGCMatchingUGCType_Screenshots","value": "6"} + ,{"name": "k_EUGCMatchingUGCType_AllGuides","value": "7"} + ,{"name": "k_EUGCMatchingUGCType_WebGuides","value": "8"} + ,{"name": "k_EUGCMatchingUGCType_IntegratedGuides","value": "9"} + ,{"name": "k_EUGCMatchingUGCType_UsableInGame","value": "10"} + ,{"name": "k_EUGCMatchingUGCType_ControllerBindings","value": "11"} + ,{"name": "k_EUGCMatchingUGCType_GameManagedItems","value": "12"} + ,{"name": "k_EUGCMatchingUGCType_All","value": "-1"} +]} +, {"enumname": "EUserUGCList","values": [ + {"name": "k_EUserUGCList_Published","value": "0"} + ,{"name": "k_EUserUGCList_VotedOn","value": "1"} + ,{"name": "k_EUserUGCList_VotedUp","value": "2"} + ,{"name": "k_EUserUGCList_VotedDown","value": "3"} + ,{"name": "k_EUserUGCList_WillVoteLater","value": "4"} + ,{"name": "k_EUserUGCList_Favorited","value": "5"} + ,{"name": "k_EUserUGCList_Subscribed","value": "6"} + ,{"name": "k_EUserUGCList_UsedOrPlayed","value": "7"} + ,{"name": "k_EUserUGCList_Followed","value": "8"} +]} +, {"enumname": "EUserUGCListSortOrder","values": [ + {"name": "k_EUserUGCListSortOrder_CreationOrderDesc","value": "0"} + ,{"name": "k_EUserUGCListSortOrder_CreationOrderAsc","value": "1"} + ,{"name": "k_EUserUGCListSortOrder_TitleAsc","value": "2"} + ,{"name": "k_EUserUGCListSortOrder_LastUpdatedDesc","value": "3"} + ,{"name": "k_EUserUGCListSortOrder_SubscriptionDateDesc","value": "4"} + ,{"name": "k_EUserUGCListSortOrder_VoteScoreDesc","value": "5"} + ,{"name": "k_EUserUGCListSortOrder_ForModeration","value": "6"} +]} +, {"enumname": "EUGCQuery","values": [ + {"name": "k_EUGCQuery_RankedByVote","value": "0"} + ,{"name": "k_EUGCQuery_RankedByPublicationDate","value": "1"} + ,{"name": "k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate","value": "2"} + ,{"name": "k_EUGCQuery_RankedByTrend","value": "3"} + ,{"name": "k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate","value": "4"} + ,{"name": "k_EUGCQuery_CreatedByFriendsRankedByPublicationDate","value": "5"} + ,{"name": "k_EUGCQuery_RankedByNumTimesReported","value": "6"} + ,{"name": "k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate","value": "7"} + ,{"name": "k_EUGCQuery_NotYetRated","value": "8"} + ,{"name": "k_EUGCQuery_RankedByTotalVotesAsc","value": "9"} + ,{"name": "k_EUGCQuery_RankedByVotesUp","value": "10"} + ,{"name": "k_EUGCQuery_RankedByTextSearch","value": "11"} + ,{"name": "k_EUGCQuery_RankedByTotalUniqueSubscriptions","value": "12"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeTrend","value": "13"} + ,{"name": "k_EUGCQuery_RankedByTotalPlaytime","value": "14"} + ,{"name": "k_EUGCQuery_RankedByAveragePlaytimeTrend","value": "15"} + ,{"name": "k_EUGCQuery_RankedByLifetimeAveragePlaytime","value": "16"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeSessionsTrend","value": "17"} + ,{"name": "k_EUGCQuery_RankedByLifetimePlaytimeSessions","value": "18"} +]} +, {"enumname": "EItemUpdateStatus","values": [ + {"name": "k_EItemUpdateStatusInvalid","value": "0"} + ,{"name": "k_EItemUpdateStatusPreparingConfig","value": "1"} + ,{"name": "k_EItemUpdateStatusPreparingContent","value": "2"} + ,{"name": "k_EItemUpdateStatusUploadingContent","value": "3"} + ,{"name": "k_EItemUpdateStatusUploadingPreviewFile","value": "4"} + ,{"name": "k_EItemUpdateStatusCommittingChanges","value": "5"} +]} +, {"enumname": "EItemState","values": [ + {"name": "k_EItemStateNone","value": "0"} + ,{"name": "k_EItemStateSubscribed","value": "1"} + ,{"name": "k_EItemStateLegacyItem","value": "2"} + ,{"name": "k_EItemStateInstalled","value": "4"} + ,{"name": "k_EItemStateNeedsUpdate","value": "8"} + ,{"name": "k_EItemStateDownloading","value": "16"} + ,{"name": "k_EItemStateDownloadPending","value": "32"} +]} +, {"enumname": "EItemStatistic","values": [ + {"name": "k_EItemStatistic_NumSubscriptions","value": "0"} + ,{"name": "k_EItemStatistic_NumFavorites","value": "1"} + ,{"name": "k_EItemStatistic_NumFollowers","value": "2"} + ,{"name": "k_EItemStatistic_NumUniqueSubscriptions","value": "3"} + ,{"name": "k_EItemStatistic_NumUniqueFavorites","value": "4"} + ,{"name": "k_EItemStatistic_NumUniqueFollowers","value": "5"} + ,{"name": "k_EItemStatistic_NumUniqueWebsiteViews","value": "6"} + ,{"name": "k_EItemStatistic_ReportScore","value": "7"} + ,{"name": "k_EItemStatistic_NumSecondsPlayed","value": "8"} + ,{"name": "k_EItemStatistic_NumPlaytimeSessions","value": "9"} + ,{"name": "k_EItemStatistic_NumComments","value": "10"} +]} +, {"enumname": "EItemPreviewType","values": [ + {"name": "k_EItemPreviewType_Image","value": "0"} + ,{"name": "k_EItemPreviewType_YouTubeVideo","value": "1"} + ,{"name": "k_EItemPreviewType_Sketchfab","value": "2"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_HorizontalCross","value": "3"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_LatLong","value": "4"} + ,{"name": "k_EItemPreviewType_ReservedMax","value": "255"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLMouseButton","values": [ + {"name": "eHTMLMouseButton_Left","value": "0"} + ,{"name": "eHTMLMouseButton_Right","value": "1"} + ,{"name": "eHTMLMouseButton_Middle","value": "2"} +]} +, {"enumname": "ISteamHTMLSurface::EMouseCursor","values": [ + {"name": "dc_user","value": "0"} + ,{"name": "dc_none","value": "1"} + ,{"name": "dc_arrow","value": "2"} + ,{"name": "dc_ibeam","value": "3"} + ,{"name": "dc_hourglass","value": "4"} + ,{"name": "dc_waitarrow","value": "5"} + ,{"name": "dc_crosshair","value": "6"} + ,{"name": "dc_up","value": "7"} + ,{"name": "dc_sizenw","value": "8"} + ,{"name": "dc_sizese","value": "9"} + ,{"name": "dc_sizene","value": "10"} + ,{"name": "dc_sizesw","value": "11"} + ,{"name": "dc_sizew","value": "12"} + ,{"name": "dc_sizee","value": "13"} + ,{"name": "dc_sizen","value": "14"} + ,{"name": "dc_sizes","value": "15"} + ,{"name": "dc_sizewe","value": "16"} + ,{"name": "dc_sizens","value": "17"} + ,{"name": "dc_sizeall","value": "18"} + ,{"name": "dc_no","value": "19"} + ,{"name": "dc_hand","value": "20"} + ,{"name": "dc_blank","value": "21"} + ,{"name": "dc_middle_pan","value": "22"} + ,{"name": "dc_north_pan","value": "23"} + ,{"name": "dc_north_east_pan","value": "24"} + ,{"name": "dc_east_pan","value": "25"} + ,{"name": "dc_south_east_pan","value": "26"} + ,{"name": "dc_south_pan","value": "27"} + ,{"name": "dc_south_west_pan","value": "28"} + ,{"name": "dc_west_pan","value": "29"} + ,{"name": "dc_north_west_pan","value": "30"} + ,{"name": "dc_alias","value": "31"} + ,{"name": "dc_cell","value": "32"} + ,{"name": "dc_colresize","value": "33"} + ,{"name": "dc_copycur","value": "34"} + ,{"name": "dc_verticaltext","value": "35"} + ,{"name": "dc_rowresize","value": "36"} + ,{"name": "dc_zoomin","value": "37"} + ,{"name": "dc_zoomout","value": "38"} + ,{"name": "dc_help","value": "39"} + ,{"name": "dc_custom","value": "40"} + ,{"name": "dc_last","value": "41"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLKeyModifiers","values": [ + {"name": "k_eHTMLKeyModifier_None","value": "0"} + ,{"name": "k_eHTMLKeyModifier_AltDown","value": "1"} + ,{"name": "k_eHTMLKeyModifier_CtrlDown","value": "2"} + ,{"name": "k_eHTMLKeyModifier_ShiftDown","value": "4"} +]} +, {"enumname": "ESteamItemFlags","values": [ + {"name": "k_ESteamItemNoTrade","value": "1"} + ,{"name": "k_ESteamItemRemoved","value": "256"} + ,{"name": "k_ESteamItemConsumed","value": "512"} +]} +], +"consts":[{ + "constname": "k_iSteamUserCallbacks","consttype": "int", "constval": "100"} +,{ + "constname": "k_iSteamGameServerCallbacks","consttype": "int", "constval": "200"} +,{ + "constname": "k_iSteamFriendsCallbacks","consttype": "int", "constval": "300"} +,{ + "constname": "k_iSteamBillingCallbacks","consttype": "int", "constval": "400"} +,{ + "constname": "k_iSteamMatchmakingCallbacks","consttype": "int", "constval": "500"} +,{ + "constname": "k_iSteamContentServerCallbacks","consttype": "int", "constval": "600"} +,{ + "constname": "k_iSteamUtilsCallbacks","consttype": "int", "constval": "700"} +,{ + "constname": "k_iClientFriendsCallbacks","consttype": "int", "constval": "800"} +,{ + "constname": "k_iClientUserCallbacks","consttype": "int", "constval": "900"} +,{ + "constname": "k_iSteamAppsCallbacks","consttype": "int", "constval": "1000"} +,{ + "constname": "k_iSteamUserStatsCallbacks","consttype": "int", "constval": "1100"} +,{ + "constname": "k_iSteamNetworkingCallbacks","consttype": "int", "constval": "1200"} +,{ + "constname": "k_iClientRemoteStorageCallbacks","consttype": "int", "constval": "1300"} +,{ + "constname": "k_iClientDepotBuilderCallbacks","consttype": "int", "constval": "1400"} +,{ + "constname": "k_iSteamGameServerItemsCallbacks","consttype": "int", "constval": "1500"} +,{ + "constname": "k_iClientUtilsCallbacks","consttype": "int", "constval": "1600"} +,{ + "constname": "k_iSteamGameCoordinatorCallbacks","consttype": "int", "constval": "1700"} +,{ + "constname": "k_iSteamGameServerStatsCallbacks","consttype": "int", "constval": "1800"} +,{ + "constname": "k_iSteam2AsyncCallbacks","consttype": "int", "constval": "1900"} +,{ + "constname": "k_iSteamGameStatsCallbacks","consttype": "int", "constval": "2000"} +,{ + "constname": "k_iClientHTTPCallbacks","consttype": "int", "constval": "2100"} +,{ + "constname": "k_iClientScreenshotsCallbacks","consttype": "int", "constval": "2200"} +,{ + "constname": "k_iSteamScreenshotsCallbacks","consttype": "int", "constval": "2300"} +,{ + "constname": "k_iClientAudioCallbacks","consttype": "int", "constval": "2400"} +,{ + "constname": "k_iClientUnifiedMessagesCallbacks","consttype": "int", "constval": "2500"} +,{ + "constname": "k_iSteamStreamLauncherCallbacks","consttype": "int", "constval": "2600"} +,{ + "constname": "k_iClientControllerCallbacks","consttype": "int", "constval": "2700"} +,{ + "constname": "k_iSteamControllerCallbacks","consttype": "int", "constval": "2800"} +,{ + "constname": "k_iClientParentalSettingsCallbacks","consttype": "int", "constval": "2900"} +,{ + "constname": "k_iClientDeviceAuthCallbacks","consttype": "int", "constval": "3000"} +,{ + "constname": "k_iClientNetworkDeviceManagerCallbacks","consttype": "int", "constval": "3100"} +,{ + "constname": "k_iClientMusicCallbacks","consttype": "int", "constval": "3200"} +,{ + "constname": "k_iClientRemoteClientManagerCallbacks","consttype": "int", "constval": "3300"} +,{ + "constname": "k_iClientUGCCallbacks","consttype": "int", "constval": "3400"} +,{ + "constname": "k_iSteamStreamClientCallbacks","consttype": "int", "constval": "3500"} +,{ + "constname": "k_IClientProductBuilderCallbacks","consttype": "int", "constval": "3600"} +,{ + "constname": "k_iClientShortcutsCallbacks","consttype": "int", "constval": "3700"} +,{ + "constname": "k_iClientRemoteControlManagerCallbacks","consttype": "int", "constval": "3800"} +,{ + "constname": "k_iSteamAppListCallbacks","consttype": "int", "constval": "3900"} +,{ + "constname": "k_iSteamMusicCallbacks","consttype": "int", "constval": "4000"} +,{ + "constname": "k_iSteamMusicRemoteCallbacks","consttype": "int", "constval": "4100"} +,{ + "constname": "k_iClientVRCallbacks","consttype": "int", "constval": "4200"} +,{ + "constname": "k_iClientGameNotificationCallbacks","consttype": "int", "constval": "4300"} +,{ + "constname": "k_iSteamGameNotificationCallbacks","consttype": "int", "constval": "4400"} +,{ + "constname": "k_iSteamHTMLSurfaceCallbacks","consttype": "int", "constval": "4500"} +,{ + "constname": "k_iClientVideoCallbacks","consttype": "int", "constval": "4600"} +,{ + "constname": "k_iClientInventoryCallbacks","consttype": "int", "constval": "4700"} +,{ + "constname": "k_iClientBluetoothManagerCallbacks","consttype": "int", "constval": "4800"} +,{ + "constname": "k_cchPersonaNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cwchPersonaNameMax","consttype": "int", "constval": "32"} +,{ + "constname": "k_cchMaxRichPresenceKeys","consttype": "int", "constval": "20"} +,{ + "constname": "k_cchMaxRichPresenceKeyLength","consttype": "int", "constval": "64"} +,{ + "constname": "k_cchMaxRichPresenceValueLength","consttype": "int", "constval": "256"} +,{ + "constname": "k_cchStatNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cchLeaderboardNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cLeaderboardDetailsMax","consttype": "int", "constval": "64"} +,{ + "constname": "k_InvalidUnifiedMessageHandle","consttype": "const ClientUnifiedMessageHandle", "constval": "0"} +,{ + "constname": "k_SteamItemInstanceIDInvalid","consttype": "const SteamItemInstanceID_t", "constval": "18446744073709551615"} +,{ + "constname": "k_SteamInventoryResultInvalid","consttype": "const SteamInventoryResult_t", "constval": "-1"} +], +"structs":[{"struct": "CSteamID","fields": [ +{ "fieldname": "m_steamid", "fieldtype": "union SteamID_t"}]} +,{"struct": "CSteamID::SteamID_t","fields": [ +{ "fieldname": "m_comp", "fieldtype": "struct SteamIDComponent_t"}, +{ "fieldname": "m_unAll64Bits", "fieldtype": "uint64"}]} +,{"struct": "CSteamID::SteamID_t::SteamIDComponent_t","fields": [ +{ "fieldname": "m_unAccountID", "fieldtype": "uint32"}, +{ "fieldname": "m_unAccountInstance", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EAccountType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EUniverse", "fieldtype": "enum EUniverse"}]} +,{"struct": "CGameID::GameID_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nModID", "fieldtype": "unsigned int"}]} +,{"struct": "CGameID::(anonymous)","fields": [ +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_gameID", "fieldtype": "struct CGameID::GameID_t"}]} +,{"struct": "ValvePackingSentinel_t","fields": [ +{ "fieldname": "m_u32", "fieldtype": "uint32"}, +{ "fieldname": "m_u64", "fieldtype": "uint64"}, +{ "fieldname": "m_u16", "fieldtype": "uint16"}, +{ "fieldname": "m_d", "fieldtype": "double"}]} +,{"struct": "CallbackMsg_t","fields": [ +{ "fieldname": "m_hSteamUser", "fieldtype": "HSteamUser"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_pubParam", "fieldtype": "uint8 *"}, +{ "fieldname": "m_cubParam", "fieldtype": "int"}]} +,{"struct": "SteamServerConnectFailure_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bStillRetrying", "fieldtype": "_Bool"}]} +,{"struct": "SteamServersDisconnected_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ClientGameServerDeny_t","fields": [ +{ "fieldname": "m_uAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_unGameServerIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGameServerPort", "fieldtype": "uint16"}, +{ "fieldname": "m_bSecure", "fieldtype": "uint16"}, +{ "fieldname": "m_uReason", "fieldtype": "uint32"}]} +,{"struct": "ValidateAuthTicketResponse_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eAuthSessionResponse", "fieldtype": "enum EAuthSessionResponse"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "MicroTxnAuthorizationResponse_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_ulOrderID", "fieldtype": "uint64"}, +{ "fieldname": "m_bAuthorized", "fieldtype": "uint8"}]} +,{"struct": "EncryptedAppTicketResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GetAuthSessionTicketResponse_t","fields": [ +{ "fieldname": "m_hAuthTicket", "fieldtype": "HAuthTicket"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GameWebCallback_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [256]"}]} +,{"struct": "StoreAuthURLResponse_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [512]"}]} +,{"struct": "FriendGameInfo_t","fields": [ +{ "fieldname": "m_gameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_unGameIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGamePort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FriendSessionStateInfo_t","fields": [ +{ "fieldname": "m_uiOnlineSessionInstances", "fieldtype": "uint32"}, +{ "fieldname": "m_uiPublishedToFriendsSessionInstance", "fieldtype": "uint8"}]} +,{"struct": "PersonaStateChange_t","fields": [ +{ "fieldname": "m_ulSteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_nChangeFlags", "fieldtype": "int"}]} +,{"struct": "GameOverlayActivated_t","fields": [ +{ "fieldname": "m_bActive", "fieldtype": "uint8"}]} +,{"struct": "GameServerChangeRequested_t","fields": [ +{ "fieldname": "m_rgchServer", "fieldtype": "char [64]"}, +{ "fieldname": "m_rgchPassword", "fieldtype": "char [64]"}]} +,{"struct": "GameLobbyJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}]} +,{"struct": "AvatarImageLoaded_t","fields": [ +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iImage", "fieldtype": "int"}, +{ "fieldname": "m_iWide", "fieldtype": "int"}, +{ "fieldname": "m_iTall", "fieldtype": "int"}]} +,{"struct": "ClanOfficerListResponse_t","fields": [ +{ "fieldname": "m_steamIDClan", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_cOfficers", "fieldtype": "int"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "FriendRichPresenceUpdate_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "GameRichPresenceJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_rgchConnect", "fieldtype": "char [256]"}]} +,{"struct": "GameConnectedClanChatMsg_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "GameConnectedChatJoin_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GameConnectedChatLeave_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bKicked", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDropped", "fieldtype": "_Bool"}]} +,{"struct": "DownloadClanActivityCountsResult_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}]} +,{"struct": "JoinClanChatRoomCompletionResult_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eChatRoomEnterResponse", "fieldtype": "enum EChatRoomEnterResponse"}]} +,{"struct": "GameConnectedFriendChatMsg_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "FriendsGetFollowerCount_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nCount", "fieldtype": "int"}]} +,{"struct": "FriendsIsFollowing_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bIsFollowing", "fieldtype": "_Bool"}]} +,{"struct": "FriendsEnumerateFollowingList_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_rgSteamID", "fieldtype": "class CSteamID [50]"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}]} +,{"struct": "SetPersonaNameResponse_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_bLocalSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "LowBatteryPower_t","fields": [ +{ "fieldname": "m_nMinutesBatteryLeft", "fieldtype": "uint8"}]} +,{"struct": "SteamAPICallCompleted_t","fields": [ +{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_cubParam", "fieldtype": "uint32"}]} +,{"struct": "CheckFileSignature_t","fields": [ +{ "fieldname": "m_eCheckFileSignature", "fieldtype": "enum ECheckFileSignature"}]} +,{"struct": "GamepadTextInputDismissed_t","fields": [ +{ "fieldname": "m_bSubmitted", "fieldtype": "_Bool"}, +{ "fieldname": "m_unSubmittedText", "fieldtype": "uint32"}]} +,{"struct": "MatchMakingKeyValuePair_t","fields": [ +{ "fieldname": "m_szKey", "fieldtype": "char [256]"}, +{ "fieldname": "m_szValue", "fieldtype": "char [256]"}]} +,{"struct": "servernetadr_t","fields": [ +{ "fieldname": "m_usConnectionPort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}]} +,{"struct": "gameserveritem_t","fields": [ +{ "fieldname": "m_NetAdr", "fieldtype": "class servernetadr_t"}, +{ "fieldname": "m_nPing", "fieldtype": "int"}, +{ "fieldname": "m_bHadSuccessfulResponse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDoNotRefresh", "fieldtype": "_Bool"}, +{ "fieldname": "m_szGameDir", "fieldtype": "char [32]"}, +{ "fieldname": "m_szMap", "fieldtype": "char [32]"}, +{ "fieldname": "m_szGameDescription", "fieldtype": "char [64]"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nMaxPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nBotPlayers", "fieldtype": "int"}, +{ "fieldname": "m_bPassword", "fieldtype": "_Bool"}, +{ "fieldname": "m_bSecure", "fieldtype": "_Bool"}, +{ "fieldname": "m_ulTimeLastPlayed", "fieldtype": "uint32"}, +{ "fieldname": "m_nServerVersion", "fieldtype": "int"}, +{ "fieldname": "m_szServerName", "fieldtype": "char [64]"}, +{ "fieldname": "m_szGameTags", "fieldtype": "char [128]"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListChanged_t","fields": [ +{ "fieldname": "m_nIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nQueryPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nConnPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nFlags", "fieldtype": "uint32"}, +{ "fieldname": "m_bAdd", "fieldtype": "_Bool"}, +{ "fieldname": "m_unAccountId", "fieldtype": "AccountID_t"}]} +,{"struct": "LobbyInvite_t","fields": [ +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}]} +,{"struct": "LobbyEnter_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatPermissions", "fieldtype": "uint32"}, +{ "fieldname": "m_bLocked", "fieldtype": "_Bool"}, +{ "fieldname": "m_EChatRoomEnterResponse", "fieldtype": "uint32"}]} +,{"struct": "LobbyDataUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMember", "fieldtype": "uint64"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "LobbyChatUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUserChanged", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMakingChange", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatMemberStateChange", "fieldtype": "uint32"}]} +,{"struct": "LobbyChatMsg_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_eChatEntryType", "fieldtype": "uint8"}, +{ "fieldname": "m_iChatID", "fieldtype": "uint32"}]} +,{"struct": "LobbyGameCreated_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDGameServer", "fieldtype": "uint64"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usPort", "fieldtype": "uint16"}]} +,{"struct": "LobbyMatchList_t","fields": [ +{ "fieldname": "m_nLobbiesMatching", "fieldtype": "uint32"}]} +,{"struct": "LobbyKicked_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDAdmin", "fieldtype": "uint64"}, +{ "fieldname": "m_bKickedDueToDisconnect", "fieldtype": "uint8"}]} +,{"struct": "LobbyCreated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}]} +,{"struct": "PSNGameBootInviteResult_t","fields": [ +{ "fieldname": "m_bGameBootInviteExists", "fieldtype": "_Bool"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListAccountsUpdated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamParamStringArray_t","fields": [ +{ "fieldname": "m_ppStrings", "fieldtype": "const char **"}, +{ "fieldname": "m_nNumStrings", "fieldtype": "int32"}]} +,{"struct": "RemoteStorageAppSyncedClient_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumDownloads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncedServer_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumUploads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncProgress_t","fields": [ +{ "fieldname": "m_rgchCurrentFile", "fieldtype": "char [260]"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_uBytesTransferredThisChunk", "fieldtype": "uint32"}, +{ "fieldname": "m_dAppPercentComplete", "fieldtype": "double"}, +{ "fieldname": "m_bUploading", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageAppSyncStatusCheck_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileShareResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_rgchFilename", "fieldtype": "char [260]"}]} +,{"struct": "RemoteStoragePublishFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDeletePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserPublishedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeSubscribed", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStorageUnsubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUpdatePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDownloadUGCResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nSizeInBytes", "fieldtype": "int32"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageGetPublishedFileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageEnumerateWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgScore", "fieldtype": "float [50]"}, +{ "fieldname": "m_nAppId", "fieldtype": "AppId_t"}, +{ "fieldname": "m_unStartIndex", "fieldtype": "uint32"}]} +,{"struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nVotesFor", "fieldtype": "int32"}, +{ "fieldname": "m_nVotesAgainst", "fieldtype": "int32"}, +{ "fieldname": "m_nReports", "fieldtype": "int32"}, +{ "fieldname": "m_fScore", "fieldtype": "float"}]} +,{"struct": "RemoteStoragePublishedFileSubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileUnsubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileDeleted_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUserVoteDetails_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eVote", "fieldtype": "enum EWorkshopVote"}]} +,{"struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSetUserPublishedFileActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}]} +,{"struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeUpdated", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStoragePublishFileProgress_t","fields": [ +{ "fieldname": "m_dPercentFile", "fieldtype": "double"}, +{ "fieldname": "m_bPreview", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStoragePublishedFileUpdated_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_ulUnused", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageFileWriteAsyncComplete_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileReadAsyncComplete_t","fields": [ +{ "fieldname": "m_hFileReadAsync", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cubRead", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardEntry_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nGlobalRank", "fieldtype": "int32"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_cDetails", "fieldtype": "int32"}, +{ "fieldname": "m_hUGC", "fieldtype": "UGCHandle_t"}]} +,{"struct": "UserStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserStatsStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserAchievementStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_bGroupAchievement", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_nCurProgress", "fieldtype": "uint32"}, +{ "fieldname": "m_nMaxProgress", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardFindResult_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_bLeaderboardFound", "fieldtype": "uint8"}]} +,{"struct": "LeaderboardScoresDownloaded_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_hSteamLeaderboardEntries", "fieldtype": "SteamLeaderboardEntries_t"}, +{ "fieldname": "m_cEntryCount", "fieldtype": "int"}]} +,{"struct": "LeaderboardScoreUploaded_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_bScoreChanged", "fieldtype": "uint8"}, +{ "fieldname": "m_nGlobalRankNew", "fieldtype": "int"}, +{ "fieldname": "m_nGlobalRankPrevious", "fieldtype": "int"}]} +,{"struct": "NumberOfCurrentPlayers_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_cPlayers", "fieldtype": "int32"}]} +,{"struct": "UserStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserAchievementIconFetched_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_bAchieved", "fieldtype": "_Bool"}, +{ "fieldname": "m_nIconHandle", "fieldtype": "int"}]} +,{"struct": "GlobalAchievementPercentagesReady_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "LeaderboardUGCSet_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}]} +,{"struct": "PS3TrophiesInstalled_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulRequiredDiskSpace", "fieldtype": "uint64"}]} +,{"struct": "GlobalStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "DlcInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RegisterActivationCodeResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum ERegisterActivationCodeResult"}, +{ "fieldname": "m_unPackageRegistered", "fieldtype": "uint32"}]} +,{"struct": "AppProofOfPurchaseKeyResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_cchKeyLength", "fieldtype": "uint32"}, +{ "fieldname": "m_rgchKey", "fieldtype": "char [240]"}]} +,{"struct": "FileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulFileSize", "fieldtype": "uint64"}, +{ "fieldname": "m_FileSHA", "fieldtype": "uint8 [20]"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint32"}]} +,{"struct": "P2PSessionState_t","fields": [ +{ "fieldname": "m_bConnectionActive", "fieldtype": "uint8"}, +{ "fieldname": "m_bConnecting", "fieldtype": "uint8"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}, +{ "fieldname": "m_bUsingRelay", "fieldtype": "uint8"}, +{ "fieldname": "m_nBytesQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nPacketsQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nRemoteIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nRemotePort", "fieldtype": "uint16"}]} +,{"struct": "P2PSessionRequest_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}]} +,{"struct": "P2PSessionConnectFail_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}]} +,{"struct": "SocketStatusCallback_t","fields": [ +{ "fieldname": "m_hSocket", "fieldtype": "SNetSocket_t"}, +{ "fieldname": "m_hListenSocket", "fieldtype": "SNetListenSocket_t"}, +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eSNetSocketState", "fieldtype": "int"}]} +,{"struct": "ScreenshotReady_t","fields": [ +{ "fieldname": "m_hLocal", "fieldtype": "ScreenshotHandle"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "VolumeHasChanged_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerWantsShuffled_t","fields": [ +{ "fieldname": "m_bShuffled", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsLooped_t","fields": [ +{ "fieldname": "m_bLooped", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsVolume_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerSelectsQueueEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerSelectsPlaylistEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerWantsPlayingRepeatStatus_t","fields": [ +{ "fieldname": "m_nPlayingRepeatStatus", "fieldtype": "int"}]} +,{"struct": "HTTPRequestCompleted_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_bRequestSuccessful", "fieldtype": "_Bool"}, +{ "fieldname": "m_eStatusCode", "fieldtype": "enum EHTTPStatusCode"}, +{ "fieldname": "m_unBodySize", "fieldtype": "uint32"}]} +,{"struct": "HTTPRequestHeadersReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}]} +,{"struct": "HTTPRequestDataReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_cOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cBytesReceived", "fieldtype": "uint32"}]} +,{"struct": "SteamUnifiedMessagesSendMethodResult_t","fields": [ +{ "fieldname": "m_hHandle", "fieldtype": "ClientUnifiedMessageHandle"}, +{ "fieldname": "m_unContext", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unResponseSize", "fieldtype": "uint32"}]} +,{"struct": "ControllerAnalogActionData_t","fields": [ +{ "fieldname": "eMode", "fieldtype": "enum EControllerSourceMode"}, +{ "fieldname": "x", "fieldtype": "float"}, +{ "fieldname": "y", "fieldtype": "float"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerDigitalActionData_t","fields": [ +{ "fieldname": "bState", "fieldtype": "_Bool"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerMotionData_t","fields": [ +{ "fieldname": "rotQuatX", "fieldtype": "float"}, +{ "fieldname": "rotQuatY", "fieldtype": "float"}, +{ "fieldname": "rotQuatZ", "fieldtype": "float"}, +{ "fieldname": "rotQuatW", "fieldtype": "float"}, +{ "fieldname": "posAccelX", "fieldtype": "float"}, +{ "fieldname": "posAccelY", "fieldtype": "float"}, +{ "fieldname": "posAccelZ", "fieldtype": "float"}, +{ "fieldname": "rotVelX", "fieldtype": "float"}, +{ "fieldname": "rotVelY", "fieldtype": "float"}, +{ "fieldname": "rotVelZ", "fieldtype": "float"}]} +,{"struct": "SteamUGCDetails_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeAddedToUserList", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_unVotesUp", "fieldtype": "uint32"}, +{ "fieldname": "m_unVotesDown", "fieldtype": "uint32"}, +{ "fieldname": "m_flScore", "fieldtype": "float"}, +{ "fieldname": "m_unNumChildren", "fieldtype": "uint32"}]} +,{"struct": "SteamUGCQueryCompleted_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "UGCQueryHandle_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumResultsReturned", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMatchingResults", "fieldtype": "uint32"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "SteamUGCRequestUGCDetailsResult_t","fields": [ +{ "fieldname": "m_details", "fieldtype": "struct SteamUGCDetails_t"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "CreateItemResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "SubmitItemUpdateResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "DownloadItemResult_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserFavoriteItemsListChanged_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bWasAddRequest", "fieldtype": "_Bool"}]} +,{"struct": "SetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVoteUp", "fieldtype": "_Bool"}]} +,{"struct": "GetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVotedUp", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVotedDown", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVoteSkipped", "fieldtype": "_Bool"}]} +,{"struct": "StartPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "StopPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamAppInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "SteamAppUninstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "HTML_BrowserReady_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_NeedsPaint_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pBGRA", "fieldtype": "const char *"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateX", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateY", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateWide", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateTall", "fieldtype": "uint32"}, +{ "fieldname": "unScrollX", "fieldtype": "uint32"}, +{ "fieldname": "unScrollY", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "unPageSerial", "fieldtype": "uint32"}]} +,{"struct": "HTML_StartRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchTarget", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}]} +,{"struct": "HTML_CloseBrowser_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_URLChanged_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}, +{ "fieldname": "bNewNavigation", "fieldtype": "_Bool"}]} +,{"struct": "HTML_FinishedRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_OpenLinkInNewTab_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}]} +,{"struct": "HTML_ChangedTitle_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_SearchResults_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unResults", "fieldtype": "uint32"}, +{ "fieldname": "unCurrentMatch", "fieldtype": "uint32"}]} +,{"struct": "HTML_CanGoBackAndForward_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "bCanGoBack", "fieldtype": "_Bool"}, +{ "fieldname": "bCanGoForward", "fieldtype": "_Bool"}]} +,{"struct": "HTML_HorizontalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_VerticalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_LinkAtPosition_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "x", "fieldtype": "uint32"}, +{ "fieldname": "y", "fieldtype": "uint32"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "bInput", "fieldtype": "_Bool"}, +{ "fieldname": "bLiveLink", "fieldtype": "_Bool"}]} +,{"struct": "HTML_JSAlert_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_JSConfirm_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_FileOpenDialog_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}, +{ "fieldname": "pchInitialFile", "fieldtype": "const char *"}]} +,{"struct": "HTML_NewWindow_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "unX", "fieldtype": "uint32"}, +{ "fieldname": "unY", "fieldtype": "uint32"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unNewWindow_BrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_SetCursor_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "eMouseCursor", "fieldtype": "uint32"}]} +,{"struct": "HTML_StatusText_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_ShowToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_UpdateToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_HideToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "SteamItemDetails_t","fields": [ +{ "fieldname": "m_itemId", "fieldtype": "SteamItemInstanceID_t"}, +{ "fieldname": "m_iDefinition", "fieldtype": "SteamItemDef_t"}, +{ "fieldname": "m_unQuantity", "fieldtype": "uint16"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint16"}]} +,{"struct": "SteamInventoryResultReady_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "SteamInventoryFullUpdate_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}]} +,{"struct": "BroadcastUploadStop_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EBroadcastUploadResult"}]} +,{"struct": "GetVideoURLResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} +,{"struct": "CSteamAPIContext","fields": [ +{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, +{ "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, +{ "fieldname": "m_pSteamFriends", "fieldtype": "class ISteamFriends *"}, +{ "fieldname": "m_pSteamUtils", "fieldtype": "class ISteamUtils *"}, +{ "fieldname": "m_pSteamMatchmaking", "fieldtype": "class ISteamMatchmaking *"}, +{ "fieldname": "m_pSteamUserStats", "fieldtype": "class ISteamUserStats *"}, +{ "fieldname": "m_pSteamApps", "fieldtype": "class ISteamApps *"}, +{ "fieldname": "m_pSteamMatchmakingServers", "fieldtype": "class ISteamMatchmakingServers *"}, +{ "fieldname": "m_pSteamNetworking", "fieldtype": "class ISteamNetworking *"}, +{ "fieldname": "m_pSteamRemoteStorage", "fieldtype": "class ISteamRemoteStorage *"}, +{ "fieldname": "m_pSteamScreenshots", "fieldtype": "class ISteamScreenshots *"}, +{ "fieldname": "m_pSteamHTTP", "fieldtype": "class ISteamHTTP *"}, +{ "fieldname": "m_pSteamUnifiedMessages", "fieldtype": "class ISteamUnifiedMessages *"}, +{ "fieldname": "m_pController", "fieldtype": "class ISteamController *"}, +{ "fieldname": "m_pSteamUGC", "fieldtype": "class ISteamUGC *"}, +{ "fieldname": "m_pSteamAppList", "fieldtype": "class ISteamAppList *"}, +{ "fieldname": "m_pSteamMusic", "fieldtype": "class ISteamMusic *"}, +{ "fieldname": "m_pSteamMusicRemote", "fieldtype": "class ISteamMusicRemote *"}, +{ "fieldname": "m_pSteamHTMLSurface", "fieldtype": "class ISteamHTMLSurface *"}, +{ "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, +{ "fieldname": "m_pSteamVideo", "fieldtype": "class ISteamVideo *"}]} +,{"struct": "CCallbackBase","fields": [ +{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}]} +,{"struct": "CCallResult","fields": [ +{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "CCallback","fields": [ +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "GSClientApprove_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "GSClientDeny_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}, +{ "fieldname": "m_rgchOptionalText", "fieldtype": "char [128]"}]} +,{"struct": "GSClientKick_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}]} +,{"struct": "GSClientAchievementStatus_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_pchAchievement", "fieldtype": "char [128]"}, +{ "fieldname": "m_bUnlocked", "fieldtype": "_Bool"}]} +,{"struct": "GSPolicyResponse_t","fields": [ +{ "fieldname": "m_bSecure", "fieldtype": "uint8"}]} +,{"struct": "GSGameplayStats_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nRank", "fieldtype": "int32"}, +{ "fieldname": "m_unTotalConnects", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMinutesPlayed", "fieldtype": "uint32"}]} +,{"struct": "GSClientGroupStatus_t","fields": [ +{ "fieldname": "m_SteamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_SteamIDGroup", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bMember", "fieldtype": "_Bool"}, +{ "fieldname": "m_bOfficer", "fieldtype": "_Bool"}]} +,{"struct": "GSReputation_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unReputationScore", "fieldtype": "uint32"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_unBannedIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usBannedPort", "fieldtype": "uint16"}, +{ "fieldname": "m_ulBannedGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_unBanExpires", "fieldtype": "uint32"}]} +,{"struct": "AssociateWithClanResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ComputeNewPlayerCompatibilityResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_cPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_cPlayersThatCandidateDoesntLike", "fieldtype": "int"}, +{ "fieldname": "m_cClanPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_SteamIDCandidate", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsReceived_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsStored_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +], +"methods":[{ + "classname": "ISteamClient", + "methodname": "CreateSteamPipe", + "returntype": "HSteamPipe" +} +,{ + "classname": "ISteamClient", + "methodname": "BReleaseSteamPipe", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ConnectToGlobalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "CreateLocalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "phSteamPipe" ,"paramtype": "HSteamPipe *"}, +{ "paramname": "eAccountType" ,"paramtype": "EAccountType"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ReleaseUser", + "returntype": "void", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "hUser" ,"paramtype": "HSteamUser"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUser", + "returntype": "class ISteamUser *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServer", + "returntype": "class ISteamGameServer *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "SetLocalIPBinding", + "returntype": "void", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamFriends", + "returntype": "class ISteamFriends *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUtils", + "returntype": "class ISteamUtils *", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmaking", + "returntype": "class ISteamMatchmaking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmakingServers", + "returntype": "class ISteamMatchmakingServers *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGenericInterface", + "returntype": "void *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUserStats", + "returntype": "class ISteamUserStats *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServerStats", + "returntype": "class ISteamGameServerStats *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamApps", + "returntype": "class ISteamApps *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamNetworking", + "returntype": "class ISteamNetworking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamRemoteStorage", + "returntype": "class ISteamRemoteStorage *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamScreenshots", + "returntype": "class ISteamScreenshots *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamClient", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "BShutdownIfAllPipesClosed", + "returntype": "bool" +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTTP", + "returntype": "class ISteamHTTP *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUnifiedMessages", + "returntype": "class ISteamUnifiedMessages *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamController", + "returntype": "class ISteamController *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUGC", + "returntype": "class ISteamUGC *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamAppList", + "returntype": "class ISteamAppList *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusic", + "returntype": "class ISteamMusic *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusicRemote", + "returntype": "class ISteamMusicRemote *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTMLSurface", + "returntype": "class ISteamHTMLSurface *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamInventory", + "returntype": "class ISteamInventory *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamVideo", + "returntype": "class ISteamVideo *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetHSteamUser", + "returntype": "HSteamUser" +} +,{ + "classname": "ISteamUser", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamUser", + "methodname": "InitiateGameConnection", + "returntype": "int", + "params": [ +{ "paramname": "pAuthBlob" ,"paramtype": "void *"}, +{ "paramname": "cbMaxAuthBlob" ,"paramtype": "int"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"}, +{ "paramname": "bSecure" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TerminateGameConnection", + "returntype": "void", + "params": [ +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TrackAppUsageEvent", + "returntype": "void", + "params": [ +{ "paramname": "gameID" ,"paramtype": "class CGameID"}, +{ "paramname": "eAppUsageEvent" ,"paramtype": "int"}, +{ "paramname": "pchExtraInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetUserDataFolder", + "returntype": "bool", + "params": [ +{ "paramname": "pchBuffer" ,"paramtype": "char *"}, +{ "paramname": "cubBuffer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "StartVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "StopVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAvailableVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pcbCompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "pcbUncompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "bWantCompressed" ,"paramtype": "bool"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "bWantUncompressed" ,"paramtype": "bool"}, +{ "paramname": "pUncompressedDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbUncompressedDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nUncompressBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "DecompressVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pCompressed" ,"paramtype": "const void *"}, +{ "paramname": "cbCompressed" ,"paramtype": "uint32"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoiceOptimalSampleRate", + "returntype": "uint32" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsBehindNAT", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "AdvertiseGame", + "returntype": "void", + "params": [ +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "RequestEncryptedAppTicket", "callresult": "EncryptedAppTicketResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pDataToInclude" ,"paramtype": "void *"}, +{ "paramname": "cbDataToInclude" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetEncryptedAppTicket", + "returntype": "bool", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetGameBadgeLevel", + "returntype": "int", + "params": [ +{ "paramname": "nSeries" ,"paramtype": "int"}, +{ "paramname": "bFoil" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetPlayerSteamLevel", + "returntype": "int" +} +,{ + "classname": "ISteamUser", + "methodname": "RequestStoreAuthURL", "callresult": "StoreAuthURLResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchRedirectURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneVerified", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsTwoFactorEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneIdentifying", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneRequiringVerification", + "returntype": "bool" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaName", + "returntype": "const char *" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPersonaName", "callresult": "SetPersonaNameResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchPersonaName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaState", + "returntype": "EPersonaState" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCount", + "returntype": "int", + "params": [ +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iFriend" ,"paramtype": "int"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRelationship", + "returntype": "EFriendRelationship", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaState", + "returntype": "EPersonaState", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendGamePlayed", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pFriendGameInfo" ,"out_struct": " " ,"paramtype": "struct FriendGameInfo_t *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaNameHistory", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iPersonaName" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendSteamLevel", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPlayerNickname", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupIDByIndex", + "returntype": "FriendsGroupID_t", + "params": [ +{ "paramname": "iFG" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupName", + "returntype": "const char *", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersCount", + "returntype": "int", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersList", + "returntype": "void", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"}, +{ "paramname": "pOutSteamIDMembers" ,"out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nMembersCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "HasFriend", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iClan" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanTag", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanActivityCounts", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "pnOnline" ,"paramtype": "int *"}, +{ "paramname": "pnInGame" ,"paramtype": "int *"}, +{ "paramname": "pnChatting" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "DownloadClanActivityCounts", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "psteamIDClans" ,"array_count": "cClansToRequest" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cClansToRequest" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCountFromSource", + "returntype": "int", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendFromSourceByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsUserInSource", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetInGameVoiceSpeaking", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bSpeaking" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlay", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToUser", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToWebPage", + "returntype": "void", + "params": [ +{ "paramname": "pchURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToStore", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "eFlag" ,"paramtype": "EOverlayToStoreFlag"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPlayedWith", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUserPlayedWith" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayInviteDialog", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetSmallFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetMediumFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetLargeFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestUserInformation", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bRequireNameOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestClanOfficerList", "callresult": "ClanOfficerListResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iOfficer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetUserRestrictions", + "returntype": "uint32" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetRichPresence", + "returntype": "bool", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ClearRichPresence", + "returntype": "void" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresence", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyByIndex", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iKey" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestFriendRichPresence", + "returntype": "void", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "InviteUserToGame", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchConnectString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriendCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriend", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iCoplayFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayTime", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayGame", + "returntype": "AppId_t", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "JoinClanChatRoom", "callresult": "JoinClanChatRoomCompletionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "LeaveClanChatRoom", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMemberCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetChatMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iUser" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SendClanChatMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessage" ,"paramtype": "int"}, +{ "paramname": "prgchText" ,"paramtype": "void *"}, +{ "paramname": "cchTextMax" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"}, +{ "paramname": "psteamidChatter" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatAdmin", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatWindowOpenInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "OpenClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "CloseClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetListenForFriendsMessages", + "returntype": "bool", + "params": [ +{ "paramname": "bInterceptEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ReplyToFriendMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchMsgToSend" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessageID" ,"paramtype": "int"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFollowerCount", "callresult": "FriendsGetFollowerCount_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsFollowing", "callresult": "FriendsIsFollowing_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "EnumerateFollowingList", "callresult": "FriendsEnumerateFollowingList_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceAppActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceComputerActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetConnectedUniverse", + "returntype": "EUniverse" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetServerRealTime", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCountry", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageSize", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32 *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageRGBA", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pubDest" ,"paramtype": "uint8 *"}, +{ "paramname": "nDestBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCSERIPPort", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32 *"}, +{ "paramname": "usPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCurrentBatteryPower", + "returntype": "uint8" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAppID", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationPosition", + "returntype": "void", + "params": [ +{ "paramname": "eNotificationPosition" ,"paramtype": "ENotificationPosition"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsAPICallCompleted", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallFailureReason", + "returntype": "ESteamAPICallFailure", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallResult", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pCallback" ,"paramtype": "void *"}, +{ "paramname": "cubCallback" ,"paramtype": "int"}, +{ "paramname": "iCallbackExpected" ,"paramtype": "int"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsOverlayEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "BOverlayNeedsPresent", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "CheckFileSignature", "callresult": "CheckFileSignature_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "szFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "ShowGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "eInputMode" ,"paramtype": "EGamepadTextInputMode"}, +{ "paramname": "eLineInputMode" ,"paramtype": "EGamepadTextInputLineMode"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "unCharMax" ,"paramtype": "uint32"}, +{ "paramname": "pchExistingText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextLength", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "char *"}, +{ "paramname": "cchText" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSteamUILanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamRunningInVR", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationInset", + "returntype": "void", + "params": [ +{ "paramname": "nHorizontalInset" ,"paramtype": "int"}, +{ "paramname": "nVerticalInset" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamInBigPictureMode", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "StartVRDashboard", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGameCount", + "returntype": "int" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "iGame" ,"paramtype": "int"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnConnPort" ,"paramtype": "uint16 *"}, +{ "paramname": "pnQueryPort" ,"paramtype": "uint16 *"}, +{ "paramname": "punFlags" ,"paramtype": "uint32 *"}, +{ "paramname": "pRTime32LastPlayedOnServer" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddFavoriteGame", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "rTime32LastPlayedOnServer" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RemoveFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyList", "callresult": "LobbyMatchList_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListStringFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "pchValueToMatch" ,"paramtype": "const char *"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNumericalFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToMatch" ,"paramtype": "int"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNearValueFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToBeCloseTo" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListFilterSlotsAvailable", + "returntype": "void", + "params": [ +{ "paramname": "nSlotsAvailable" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListDistanceFilter", + "returntype": "void", + "params": [ +{ "paramname": "eLobbyDistanceFilter" ,"paramtype": "ELobbyDistanceFilter"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListResultCountFilter", + "returntype": "void", + "params": [ +{ "paramname": "cMaxResults" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListCompatibleMembersFilter", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iLobby" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "CreateLobby", "callresult": "LobbyCreated_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "JoinLobby", "callresult": "LobbyEnter_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "LeaveLobby", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "InviteUserToLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDInvitee" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetNumLobbyMembers", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMember" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iLobbyData" ,"paramtype": "int"}, +{ "paramname": "pchKey" ,"paramtype": "char *"}, +{ "paramname": "cchKeyBufferSize" ,"paramtype": "int"}, +{ "paramname": "pchValue" ,"paramtype": "char *"}, +{ "paramname": "cchValueBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "DeleteLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberData", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SendLobbyChatMsg", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pvMsgBody" ,"paramtype": "const void *"}, +{ "paramname": "cubMsgBody" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyChatEntry", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iChatID" ,"paramtype": "int"}, +{ "paramname": "pSteamIDUser" ,"out_struct": " " ,"paramtype": "class CSteamID *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyGameServer", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "unGameServerIP" ,"paramtype": "uint32"}, +{ "paramname": "unGameServerPort" ,"paramtype": "uint16"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "punGameServerIP" ,"paramtype": "uint32 *"}, +{ "paramname": "punGameServerPort" ,"paramtype": "uint16 *"}, +{ "paramname": "psteamIDGameServer" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberLimit", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberLimit", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyType", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyJoinable", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "bLobbyJoinable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyOwner", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDNewOwner" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLinkedLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDLobbyDependent" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "RefreshComplete", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "response" ,"paramtype": "EMatchMakingServerResponse"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "server" ,"paramtype": "class gameserveritem_t &"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "AddPlayerToList", + "returntype": "void", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nScore" ,"paramtype": "int"}, +{ "paramname": "flTimePlayed" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesResponded", + "returntype": "void", + "params": [ +{ "paramname": "pchRule" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestInternetServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestLANServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFriendsServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFavoritesServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestHistoryServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestSpectatorServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ReleaseRequest", + "returntype": "void", + "params": [ +{ "paramname": "hServerListRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerDetails", + "returntype": "class gameserveritem_t *", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "IsRefreshing", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerCount", + "returntype": "int", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshServer", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PingServer", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPingResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PlayerDetails", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPlayersResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ServerRules", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingRulesResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelServerQuery", + "returntype": "void", + "params": [ +{ "paramname": "hServerQuery" ,"paramtype": "HServerQuery"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWrite", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileRead", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteAsync", "callresult": "RemoteStorageFileWriteAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsync", "callresult": "RemoteStorageFileReadAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "nOffset" ,"paramtype": "uint32"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsyncComplete", + "returntype": "bool", + "params": [ +{ "paramname": "hReadCall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileForget", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileDelete", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileShare", "callresult": "RemoteStorageFileShareResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetSyncPlatforms", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "eRemoteStoragePlatform" ,"paramtype": "ERemoteStoragePlatform"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamOpen", + "returntype": "UGCFileWriteStreamHandle_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamWriteChunk", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamClose", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamCancel", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileExists", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FilePersisted", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileSize", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileTimestamp", + "returntype": "int64", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetSyncPlatforms", + "returntype": "ERemoteStoragePlatform", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileNameAndSize", + "returntype": "const char *", + "params": [ +{ "paramname": "iFile" ,"paramtype": "int"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetQuota", + "returntype": "bool", + "params": [ +{ "paramname": "pnTotalBytes" ,"paramtype": "uint64 *"}, +{ "paramname": "puAvailableBytes" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForAccount", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForApp", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetCloudEnabledForApp", + "returntype": "void", + "params": [ +{ "paramname": "bEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownload", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnBytesDownloaded" ,"paramtype": "int32 *"}, +{ "paramname": "pnBytesExpected" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDetails", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "ppchName" ,"out_string": " " ,"paramtype": "char **"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"}, +{ "paramname": "pSteamIDOwner" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCRead", + "returntype": "int32", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "eAction" ,"paramtype": "EUGCReadAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCHandle", + "returntype": "UGCHandle_t", + "params": [ +{ "paramname": "iCachedContent" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishWorkshopFile", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "eWorkshopFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CreatePublishedFileUpdateRequest", + "returntype": "PublishedFileUpdateHandle_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFilePreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTitle", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CommitPublishedFileUpdate", "callresult": "RemoteStorageUpdatePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedFileDetails", "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxSecondsOld" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "DeletePublishedFile", "callresult": "RemoteStorageDeletePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserPublishedFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SubscribePublishedFile", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSubscribedFiles", "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UnsubscribePublishedFile", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileSetChangeDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchChangeDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdateUserPublishedItemVote", "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUserPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSharedWorkshopFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamId" ,"paramtype": "class CSteamID"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "pRequiredTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pExcludedTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishVideo", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eVideoProvider" ,"paramtype": "EWorkshopVideoProvider"}, +{ "paramname": "pchVideoAccount" ,"paramtype": "const char *"}, +{ "paramname": "pchVideoIdentifier" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetUserPublishedFileAction", "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedFilesByUserAction", "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedWorkshopFiles", "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eEnumerationType" ,"paramtype": "EWorkshopEnumerationType"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "unCount" ,"paramtype": "uint32"}, +{ "paramname": "unDays" ,"paramtype": "uint32"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pUserTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownloadToLocation", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestCurrentStats", "callback": "UserStatsReceived_t", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UpdateAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ClearAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "StoreStats", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementIcon", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementDisplayAttribute", + "returntype": "const char *", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "IndicateAchievementProgress", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nCurProgress" ,"paramtype": "uint32"}, +{ "paramname": "nMaxProgress" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumAchievements", + "returntype": "uint32" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementName", + "returntype": "const char *", + "params": [ +{ "paramname": "iAchievement" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestUserStats", "callresult": "UserStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ResetAllStats", + "returntype": "bool", + "params": [ +{ "paramname": "bAchievementsToo" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindOrCreateLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"}, +{ "paramname": "eLeaderboardSortMethod" ,"paramtype": "ELeaderboardSortMethod"}, +{ "paramname": "eLeaderboardDisplayType" ,"paramtype": "ELeaderboardDisplayType"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardName", + "returntype": "const char *", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardEntryCount", + "returntype": "int", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardSortMethod", + "returntype": "ELeaderboardSortMethod", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardDisplayType", + "returntype": "ELeaderboardDisplayType", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntries", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardDataRequest" ,"paramtype": "ELeaderboardDataRequest"}, +{ "paramname": "nRangeStart" ,"paramtype": "int"}, +{ "paramname": "nRangeEnd" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntriesForUsers", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "prgUsers" ,"array_count": "cUsers" ,"desc": "Array of users to retrieve" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cUsers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetDownloadedLeaderboardEntry", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamLeaderboardEntries" ,"paramtype": "SteamLeaderboardEntries_t"}, +{ "paramname": "index" ,"paramtype": "int"}, +{ "paramname": "pLeaderboardEntry" ,"paramtype": "struct LeaderboardEntry_t *"}, +{ "paramname": "pDetails" ,"paramtype": "int32 *"}, +{ "paramname": "cDetailsMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UploadLeaderboardScore", "callresult": "LeaderboardScoreUploaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardUploadScoreMethod" ,"paramtype": "ELeaderboardUploadScoreMethod"}, +{ "paramname": "nScore" ,"paramtype": "int32"}, +{ "paramname": "pScoreDetails" ,"paramtype": "const int32 *"}, +{ "paramname": "cScoreDetailsCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "AttachLeaderboardUGC", "callresult": "LeaderboardUGCSet_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "hUGC" ,"paramtype": "UGCHandle_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumberOfCurrentPlayers", "callresult": "NumberOfCurrentPlayers_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalAchievementPercentages", "callresult": "GlobalAchievementPercentagesReady_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNextMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "iIteratorPrevious" ,"paramtype": "int"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAchievedPercent", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalStats", "callresult": "GlobalStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nHistoryDays" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int64 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "double *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "int64 *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "double *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribed", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsLowViolence", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsCybercafe", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsVACBanned", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentGameLanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "GetAvailableGameLanguages", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedApp", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsDlcInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetEarliestPurchaseUnixTime", + "returntype": "uint32", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedFromFreeWeekend", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetDLCCount", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "BGetDLCDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "iDLC" ,"paramtype": "int"}, +{ "paramname": "pAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pbAvailable" ,"paramtype": "bool *"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "InstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "UninstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAppProofOfPurchaseKey", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentBetaName", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "MarkContentCorrupt", + "returntype": "bool", + "params": [ +{ "paramname": "bMissingFilesOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetInstalledDepots", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pvecDepots" ,"paramtype": "DepotId_t *"}, +{ "paramname": "cMaxDepots" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppInstallDir", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchFolder" ,"paramtype": "char *"}, +{ "paramname": "cchFolderBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsAppInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppOwner", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamApps", + "methodname": "GetLaunchQueryParam", + "returntype": "const char *", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetDlcDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppBuildId", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAllProofOfPurchaseKeys", + "returntype": "void" +} +,{ + "classname": "ISteamApps", + "methodname": "GetFileDetails", "callresult": "FileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pszFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pubData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "eP2PSendType" ,"paramtype": "EP2PSend"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsP2PPacketAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "ReadP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "psteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AcceptP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PChannelWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetP2PSessionState", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pConnectionState" ,"paramtype": "struct P2PSessionState_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AllowP2PPacketRelay", + "returntype": "bool", + "params": [ +{ "paramname": "bAllow" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateListenSocket", + "returntype": "SNetListenSocket_t", + "params": [ +{ "paramname": "nVirtualP2PPort" ,"paramtype": "int"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateP2PConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "steamIDTarget" ,"paramtype": "class CSteamID"}, +{ "paramname": "nVirtualPort" ,"paramtype": "int"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroySocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroyListenSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendDataOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "bReliable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailableOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveDataFromSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveData", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pSteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "peSocketStatus" ,"paramtype": "int *"}, +{ "paramname": "punIPRemote" ,"paramtype": "uint32 *"}, +{ "paramname": "punPortRemote" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetListenSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketConnectionType", + "returntype": "ESNetSocketConnectionType", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetMaxPacketSize", + "returntype": "int", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "WriteScreenshot", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pubRGB" ,"paramtype": "void *"}, +{ "paramname": "cubRGB" ,"paramtype": "uint32"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchThumbnailFilename" ,"paramtype": "const char *"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TriggerScreenshot", + "returntype": "void" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "HookScreenshots", + "returntype": "void", + "params": [ +{ "paramname": "bHook" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "SetLocation", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagUser", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagPublishedFile", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "unPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "IsScreenshotsHooked", + "returntype": "bool" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddVRScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "eType" ,"paramtype": "EVRScreenshotType"}, +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsPlaying", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "GetPlaybackStatus", + "returntype": "AudioPlayback_Status" +} +,{ + "classname": "ISteamMusic", + "methodname": "Play", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "Pause", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayPrevious", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayNext", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "SetVolume", + "returntype": "void", + "params": [ +{ "paramname": "flVolume" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "GetVolume", + "returntype": "float" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "RegisterSteamMusicRemote", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "DeregisterSteamMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BIsCurrentMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BActivationSuccess", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetDisplayName", + "returntype": "bool", + "params": [ +{ "paramname": "pchDisplayName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPNGIcon_64x64", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayPrevious", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayNext", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableQueue", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlaylists", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdatePlaybackStatus", + "returntype": "bool", + "params": [ +{ "paramname": "nStatus" ,"paramtype": "AudioPlayback_Status"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateVolume", + "returntype": "bool", + "params": [ +{ "paramname": "flValue" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryIsAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "bAvailable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryText", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryElapsedSeconds", + "returntype": "bool", + "params": [ +{ "paramname": "nValue" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryCoverArt", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetQueueEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetPlaylistEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateHTTPRequest", + "returntype": "HTTPRequestHandle", + "params": [ +{ "paramname": "eHTTPRequestMethod" ,"paramtype": "EHTTPMethod"}, +{ "paramname": "pchAbsoluteURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestContextValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "ulContextValue" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestNetworkActivityTimeout", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unTimeoutSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pchHeaderValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestGetOrPostParameter", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchParamName" ,"paramtype": "const char *"}, +{ "paramname": "pchParamValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequestAndStreamResponse", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "DeferHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "PrioritizeHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderSize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "unResponseHeaderSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pHeaderValueBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodySize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unBodySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPStreamingResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPDownloadProgressPct", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pflPercentOut" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRawPostBody", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchContentType" ,"paramtype": "const char *"}, +{ "paramname": "pubBody" ,"paramtype": "uint8 *"}, +{ "paramname": "unBodyLen" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateCookieContainer", + "returntype": "HTTPCookieContainerHandle", + "params": [ +{ "paramname": "bAllowResponsesToModify" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetCookie", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"}, +{ "paramname": "pchHost" ,"paramtype": "const char *"}, +{ "paramname": "pchUrl" ,"paramtype": "const char *"}, +{ "paramname": "pchCookie" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestUserAgentInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchUserAgentInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRequiresVerifiedCertificate", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "bRequireVerifiedCertificate" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestAbsoluteTimeoutMS", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unMilliseconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPRequestWasTimedOut", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pbWasTimedOut" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendMethod", + "returntype": "ClientUnifiedMessageHandle", + "params": [ +{ "paramname": "pchServiceMethod" ,"paramtype": "const char *"}, +{ "paramname": "pRequestBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unRequestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "unContext" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "punResponseSize" ,"paramtype": "uint32 *"}, +{ "paramname": "peResult" ,"paramtype": "EResult *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseData", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "pResponseBuffer" ,"paramtype": "void *"}, +{ "paramname": "unResponseBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bAutoRelease" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "ReleaseMethod", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendNotification", + "returntype": "bool", + "params": [ +{ "paramname": "pchServiceNotification" ,"paramtype": "const char *"}, +{ "paramname": "pNotificationBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unNotificationBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "RunFrame", + "returntype": "void" +} +,{ + "classname": "ISteamController", + "methodname": "GetConnectedControllers", + "returntype": "int", + "params": [ +{ "paramname": "handlesOut" ,"paramtype": "ControllerHandle_t *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowBindingPanel", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetActionSetHandle", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "pszActionSetName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ActivateActionSet", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetCurrentActionSet", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionHandle", + "returntype": "ControllerDigitalActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionData", + "returntype": "struct ControllerDigitalActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionHandle", + "returntype": "ControllerAnalogActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionData", + "returntype": "struct ControllerAnalogActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "StopAnalogActionMomentum", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eAction" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerRepeatedHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "usOffMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "unRepeat" ,"paramtype": "unsigned short"}, +{ "paramname": "nFlags" ,"paramtype": "unsigned int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetGamepadIndexForController", + "returntype": "int", + "params": [ +{ "paramname": "ulControllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetControllerForGamepadIndex", + "returntype": "ControllerHandle_t", + "params": [ +{ "paramname": "nIndex" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetMotionData", + "returntype": "struct ControllerMotionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowDigitalActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowAnalogActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUserUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "unAccountID" ,"paramtype": "AccountID_t"}, +{ "paramname": "eListType" ,"paramtype": "EUserUGCList"}, +{ "paramname": "eMatchingUGCType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "eSortOrder" ,"paramtype": "EUserUGCListSortOrder"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryAllUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "eQueryType" ,"paramtype": "EUGCQuery"}, +{ "paramname": "eMatchingeMatchingUGCTypeFileType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUGCDetailsRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SendQueryUGCRequest", "callresult": "SteamUGCQueryCompleted_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCResult", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pDetails" ,"paramtype": "struct SteamUGCDetails_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCPreviewURL", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchURL" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchMetadata" ,"out_string_count": "cchMetadatasize" ,"paramtype": "char *"}, +{ "paramname": "cchMetadatasize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCStatistic", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "eStatType" ,"paramtype": "EItemStatistic"}, +{ "paramname": "pStatValue" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumAdditionalPreviews", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCAdditionalPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "previewIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchURLOrVideoID" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"}, +{ "paramname": "pchOriginalFileName" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchOriginalFileNameSize" ,"paramtype": "uint32"}, +{ "paramname": "pPreviewType" ,"paramtype": "EItemPreviewType *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumKeyValueTags", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "keyValueTagIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchKey" ,"out_string_count": "cchKeySize" ,"paramtype": "char *"}, +{ "paramname": "cchKeySize" ,"paramtype": "uint32"}, +{ "paramname": "pchValue" ,"out_string_count": "cchValueSize" ,"paramtype": "char *"}, +{ "paramname": "cchValueSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "ReleaseQueryUGCRequest", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddExcludedTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnOnlyIDs", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnOnlyIDs" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnKeyValueTags" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnLongDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnLongDescription" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnMetadata" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnChildren" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnAdditionalPreviews", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnAdditionalPreviews" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnTotalOnly", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnTotalOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetAllowCachedResponse", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetCloudFileNameFilter", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pMatchCloudFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetMatchAnyTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bMatchAnyTag" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetSearchText", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pSearchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetRankedByTrendDays", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unDays" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RequestUGCDetails", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateItem", "callresult": "CreateItemResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "eFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartItemUpdate", + "returntype": "UGCUpdateHandle_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTitle", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemUpdateLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchMetaData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "const struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemContent", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszContentFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "type" ,"paramtype": "EItemPreviewType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubmitItemUpdate", "callresult": "SubmitItemUpdateResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchChangeNote" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemUpdateProgress", + "returntype": "EItemUpdateStatus", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "punBytesProcessed" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetUserItemVote", "callresult": "SetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetUserItemVote", "callresult": "GetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemToFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemFromFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubscribeItem", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UnsubscribeItem", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetNumSubscribedItems", + "returntype": "uint32" +} +,{ + "classname": "ISteamUGC", + "methodname": "GetSubscribedItems", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemState", + "returntype": "uint32", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemInstallInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punSizeOnDisk" ,"paramtype": "uint64 *"}, +{ "paramname": "pchFolder" ,"out_string_count": "cchFolderSize" ,"paramtype": "char *"}, +{ "paramname": "cchFolderSize" ,"paramtype": "uint32"}, +{ "paramname": "punTimeStamp" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemDownloadInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "DownloadItem", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bHighPriority" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "BInitWorkshopForGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unWorkshopDepotID" ,"paramtype": "DepotId_t"}, +{ "paramname": "pszFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SuspendDownloads", + "returntype": "void", + "params": [ +{ "paramname": "bSuspend" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTrackingForAllItems", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetNumInstalledApps", + "returntype": "uint32" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetInstalledApps", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "unMaxAppIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppName", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppInstallDir", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchDirectory" ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppBuildId", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "DestructISteamHTMLSurface", + "returntype": "void" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CreateBrowser", "callresult": "HTML_BrowserReady_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchUserAgent" ,"paramtype": "const char *"}, +{ "paramname": "pchUserCSS" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "RemoveBrowser", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "LoadURL", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchURL" ,"paramtype": "const char *"}, +{ "paramname": "pchPostData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetSize", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "unWidth" ,"paramtype": "uint32"}, +{ "paramname": "unHeight" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopLoad", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Reload", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoBack", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoForward", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AddHeader", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ExecuteJavascript", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchScript" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDoubleClick", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseMove", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseWheel", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nDelta" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyChar", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "cUnicodeChar" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetHorizontalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetVerticalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetKeyFocus", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bHasKeyFocus" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ViewSource", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CopyToClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "PasteFromClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Find", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchSearchStr" ,"paramtype": "const char *"}, +{ "paramname": "bCurrentlyInFind" ,"paramtype": "bool"}, +{ "paramname": "bReverse" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopFind", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GetLinkAtPosition", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetCookie", + "returntype": "void", + "params": [ +{ "paramname": "pchHostname" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"}, +{ "paramname": "pchPath" ,"paramtype": "const char *"}, +{ "paramname": "nExpires" ,"paramtype": "RTime32"}, +{ "paramname": "bSecure" ,"paramtype": "bool"}, +{ "paramname": "bHTTPOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetPageScaleFactor", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "flZoom" ,"paramtype": "float"}, +{ "paramname": "nPointX" ,"paramtype": "int"}, +{ "paramname": "nPointY" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetBackgroundMode", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bBackgroundMode" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AllowStartRequest", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bAllowed" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "JSDialogResponse", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bResult" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultStatus", "desc": "Find out the status of an asynchronous inventory result handle.", + "returntype": "EResult", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultItems", "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutItemsArray" ,"out_array_count": "punOutItemsArraySize" ,"desc": "Output array" ,"paramtype": "struct SteamItemDetails_t *"}, +{ "paramname": "punOutItemsArraySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultTimestamp", "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", + "returntype": "uint32", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "CheckResultSteamID", "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "steamIDExpected" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DestroyResult", "desc": "Destroys a result handle and frees all associated memory.", + "returntype": "void", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetAllItems", "desc": "Captures the entire state of the current users Steam inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemsByID", "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pInstanceIDs" ,"array_count": "unCountInstanceIDs" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "unCountInstanceIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SerializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutBuffer" ,"out_buffer_count": "punOutBufferSize" ,"paramtype": "void *"}, +{ "paramname": "punOutBufferSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DeserializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "pOutResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pBuffer" ,"buffer_count": "punOutBufferSize" ,"paramtype": "const void *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bRESERVED_MUST_BE_FALSE" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GenerateItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayQuantity" ,"array_count": "unArrayLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GrantPromoItems", "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItem", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemDef" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ConsumeItem", "desc": "ConsumeItem() removes items from the inventory permanently.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemConsume" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ExchangeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayGenerate" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayGenerateQuantity" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayGenerateLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayDestroy" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "punArrayDestroyQuantity" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayDestroyLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TransferItemQuantity", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemIdSource" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"}, +{ "paramname": "itemIdDest" ,"paramtype": "SteamItemInstanceID_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SendItemDropHeartbeat", "desc": "Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.", + "returntype": "void" +} +,{ + "classname": "ISteamInventory", + "methodname": "TriggerItemDrop", "desc": "Playtime credit must be consumed and turned into item drops by your game.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "dropListDefinition" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TradeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "steamIDTradePartner" ,"paramtype": "class CSteamID"}, +{ "paramname": "pArrayGive" ,"array_count": "nArrayGiveLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGiveQuantity" ,"array_count": "nArrayGiveLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGiveLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayGet" ,"array_count": "nArrayGetLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGetQuantity" ,"array_count": "nArrayGetLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGetLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "LoadItemDefinitions", "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", + "returntype": "bool" +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionIDs", + "returntype": "bool", + "params": [ +{ "paramname": "pItemDefIDs" ,"out_array_count": "punItemDefIDsArraySize" ,"desc": "List of item definition IDs" ,"paramtype": "SteamItemDef_t *"}, +{ "paramname": "punItemDefIDsArraySize" ,"desc": "Size of array is passed in and actual size used is returned in this param" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionProperty", + "returntype": "bool", + "params": [ +{ "paramname": "iDefinition" ,"paramtype": "SteamItemDef_t"}, +{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, +{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, +{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "GetVideoURL", + "returntype": "void", + "params": [ +{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "IsBroadcasting", + "returntype": "bool", + "params": [ +{ "paramname": "pnNumViewers" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "InitGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usGamePort" ,"paramtype": "uint16"}, +{ "paramname": "usQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "nGameAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchVersionString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetProduct", + "returntype": "void", + "params": [ +{ "paramname": "pszProduct" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameDescription", + "returntype": "void", + "params": [ +{ "paramname": "pszGameDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetModDir", + "returntype": "void", + "params": [ +{ "paramname": "pszModDir" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetDedicatedServer", + "returntype": "void", + "params": [ +{ "paramname": "bDedicated" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOn", + "returntype": "void", + "params": [ +{ "paramname": "pszToken" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOnAnonymous", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOff", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BSecure", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "WasRestartRequested", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMaxPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cPlayersMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetBotPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cBotplayers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMapName", + "returntype": "void", + "params": [ +{ "paramname": "pszMapName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetPasswordProtected", + "returntype": "void", + "params": [ +{ "paramname": "bPasswordProtected" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorPort", + "returntype": "void", + "params": [ +{ "paramname": "unSpectatorPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszSpectatorServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ClearAllKeyValues", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetKeyValue", + "returntype": "void", + "params": [ +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameTags", + "returntype": "void", + "params": [ +{ "paramname": "pchGameTags" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameData", + "returntype": "void", + "params": [ +{ "paramname": "pchGameData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetRegion", + "returntype": "void", + "params": [ +{ "paramname": "pszRegion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserConnectAndAuthenticate", + "returntype": "bool", + "params": [ +{ "paramname": "unIPClient" ,"paramtype": "uint32"}, +{ "paramname": "pvAuthBlob" ,"paramtype": "const void *"}, +{ "paramname": "cubAuthBlobSize" ,"paramtype": "uint32"}, +{ "paramname": "pSteamIDUser" ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CreateUnauthenticatedUserConnection", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserDisconnect", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BUpdateUserData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchPlayerName" ,"paramtype": "const char *"}, +{ "paramname": "uScore" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "RequestUserGroupStatus", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDGroup" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetGameplayStats", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetServerReputation", "callresult": "GSReputation_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetPublicIP", + "returntype": "uint32" +} +,{ + "classname": "ISteamGameServer", + "methodname": "HandleIncomingPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pData" ,"paramtype": "const void *"}, +{ "paramname": "cbData" ,"paramtype": "int"}, +{ "paramname": "srcIP" ,"paramtype": "uint32"}, +{ "paramname": "srcPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetNextOutgoingPacket", + "returntype": "int", + "params": [ +{ "paramname": "pOut" ,"paramtype": "void *"}, +{ "paramname": "cbMaxOut" ,"paramtype": "int"}, +{ "paramname": "pNetAdr" ,"paramtype": "uint32 *"}, +{ "paramname": "pPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EnableHeartbeats", + "returntype": "void", + "params": [ +{ "paramname": "bActive" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetHeartbeatInterval", + "returntype": "void", + "params": [ +{ "paramname": "iHeartbeatInterval" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ForceHeartbeat", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "AssociateWithClan", "callresult": "AssociateWithClanResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ComputeNewPlayerCompatibility", "callresult": "ComputeNewPlayerCompatibilityResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDNewPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "RequestUserStats", "callresult": "GSStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "UpdateUserAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "ClearUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "StoreUserStats", "callresult": "GSStatsStored_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +] +} \ No newline at end of file diff --git a/lib/linux/include/steam/steam_api_flat.h b/lib/linux/include/steam/steam_api_flat.h new file mode 100644 index 0000000..e77e4cb --- /dev/null +++ b/lib/linux/include/steam/steam_api_flat.h @@ -0,0 +1,802 @@ +//====== Copyright (c) 1996-2014, Valve Corporation, All rights reserved. ======= +// +// Purpose: Header for flatted SteamAPI. Use this for binding to other languages. +// This file is auto-generated, do not edit it. +// +//============================================================================= + +#ifndef STEAMAPIFLAT_H +#define STEAMAPIFLAT_H +#ifdef _WIN32 +#pragma once +#endif + +#include <stdint.h> + + +typedef unsigned char uint8; +typedef unsigned char uint8; +typedef signed char int8; +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; +typedef int64 lint64; +typedef uint64 ulint64; +typedef uint8 Salt_t[8]; +typedef uint64 GID_t; +typedef uint64 JobID_t; +typedef GID_t TxnID_t; +typedef uint32 PackageId_t; +typedef uint32 BundleId_t; +typedef uint32 AppId_t; +typedef uint64 AssetClassId_t; +typedef uint32 PhysicalItemId_t; +typedef uint32 DepotId_t; +typedef uint32 RTime32; +typedef uint32 CellID_t; +typedef uint64 SteamAPICall_t; +typedef uint32 AccountID_t; +typedef uint32 PartnerId_t; +typedef uint64 ManifestId_t; +typedef uint32 HAuthTicket; +typedef void * BREAKPAD_HANDLE; +typedef char compile_time_assert_type[1]; +typedef int32 HSteamPipe; +typedef int32 HSteamUser; +typedef int16 FriendsGroupID_t; +typedef void * HServerListRequest; +typedef int HServerQuery; +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +typedef uint64 UGCFileWriteStreamHandle_t; +typedef char compile_time_assert_type[1]; +typedef uint64 SteamLeaderboard_t; +typedef uint64 SteamLeaderboardEntries_t; +typedef uint32 SNetSocket_t; +typedef uint32 SNetListenSocket_t; +typedef uint32 ScreenshotHandle; +typedef uint32 HTTPRequestHandle; +typedef uint32 HTTPCookieContainerHandle; +typedef uint64 ClientUnifiedMessageHandle; +typedef uint64 ControllerHandle_t; +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; +typedef uint32 HHTMLBrowser; +typedef uint64 SteamItemInstanceID_t; +typedef int32 SteamItemDef_t; +typedef int32 SteamInventoryResult_t; +// OpenVR Constants +int const_k_iSteamUserCallbacks = 100; +int const_k_iSteamGameServerCallbacks = 200; +int const_k_iSteamFriendsCallbacks = 300; +int const_k_iSteamBillingCallbacks = 400; +int const_k_iSteamMatchmakingCallbacks = 500; +int const_k_iSteamContentServerCallbacks = 600; +int const_k_iSteamUtilsCallbacks = 700; +int const_k_iClientFriendsCallbacks = 800; +int const_k_iClientUserCallbacks = 900; +int const_k_iSteamAppsCallbacks = 1000; +int const_k_iSteamUserStatsCallbacks = 1100; +int const_k_iSteamNetworkingCallbacks = 1200; +int const_k_iClientRemoteStorageCallbacks = 1300; +int const_k_iClientDepotBuilderCallbacks = 1400; +int const_k_iSteamGameServerItemsCallbacks = 1500; +int const_k_iClientUtilsCallbacks = 1600; +int const_k_iSteamGameCoordinatorCallbacks = 1700; +int const_k_iSteamGameServerStatsCallbacks = 1800; +int const_k_iSteam2AsyncCallbacks = 1900; +int const_k_iSteamGameStatsCallbacks = 2000; +int const_k_iClientHTTPCallbacks = 2100; +int const_k_iClientScreenshotsCallbacks = 2200; +int const_k_iSteamScreenshotsCallbacks = 2300; +int const_k_iClientAudioCallbacks = 2400; +int const_k_iClientUnifiedMessagesCallbacks = 2500; +int const_k_iSteamStreamLauncherCallbacks = 2600; +int const_k_iClientControllerCallbacks = 2700; +int const_k_iSteamControllerCallbacks = 2800; +int const_k_iClientParentalSettingsCallbacks = 2900; +int const_k_iClientDeviceAuthCallbacks = 3000; +int const_k_iClientNetworkDeviceManagerCallbacks = 3100; +int const_k_iClientMusicCallbacks = 3200; +int const_k_iClientRemoteClientManagerCallbacks = 3300; +int const_k_iClientUGCCallbacks = 3400; +int const_k_iSteamStreamClientCallbacks = 3500; +int const_k_IClientProductBuilderCallbacks = 3600; +int const_k_iClientShortcutsCallbacks = 3700; +int const_k_iClientRemoteControlManagerCallbacks = 3800; +int const_k_iSteamAppListCallbacks = 3900; +int const_k_iSteamMusicCallbacks = 4000; +int const_k_iSteamMusicRemoteCallbacks = 4100; +int const_k_iClientVRCallbacks = 4200; +int const_k_iClientGameNotificationCallbacks = 4300; +int const_k_iSteamGameNotificationCallbacks = 4400; +int const_k_iSteamHTMLSurfaceCallbacks = 4500; +int const_k_iClientVideoCallbacks = 4600; +int const_k_iClientInventoryCallbacks = 4700; +int const_k_iClientBluetoothManagerCallbacks = 4800; +int const_k_cchPersonaNameMax = 128; +int const_k_cwchPersonaNameMax = 32; +int const_k_cchMaxRichPresenceKeys = 20; +int const_k_cchMaxRichPresenceKeyLength = 64; +int const_k_cchMaxRichPresenceValueLength = 256; +int const_k_cchStatNameMax = 128; +int const_k_cchLeaderboardNameMax = 128; +int const_k_cLeaderboardDetailsMax = 64; +unsigned long const_k_InvalidUnifiedMessageHandle = 0; +unsigned long const_k_SteamItemInstanceIDInvalid = 0xffffffff; +int const_k_SteamInventoryResultInvalid = -1; + + + +// OpenVR Enums +// OpenVR Structs + + + +S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser(intptr_t instancePtr, HSteamPipe * phSteamPipe, EAccountType eAccountType); +S_API void SteamAPI_ISteamClient_ReleaseUser(intptr_t instancePtr, HSteamPipe hSteamPipe, HSteamUser hUser); +S_API class ISteamUser * SteamAPI_ISteamClient_GetISteamUser(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void SteamAPI_ISteamClient_SetLocalIPBinding(intptr_t instancePtr, uint32 unIP, uint16 usPort); +S_API class ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils(intptr_t instancePtr, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamApps * SteamAPI_ISteamClient_GetISteamApps(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamClient_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(intptr_t instancePtr); +S_API class ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUnifiedMessages * SteamAPI_ISteamClient_GetISteamUnifiedMessages(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamController * SteamAPI_ISteamClient_GetISteamController(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BLoggedOn(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamUser_GetSteamID(intptr_t instancePtr); +S_API int SteamAPI_ISteamUser_InitiateGameConnection(intptr_t instancePtr, void * pAuthBlob, int cbMaxAuthBlob, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure); +S_API void SteamAPI_ISteamUser_TerminateGameConnection(intptr_t instancePtr, uint32 unIPServer, uint16 usPortServer); +S_API void SteamAPI_ISteamUser_TrackAppUsageEvent(intptr_t instancePtr, class CGameID gameID, int eAppUsageEvent, const char * pchExtraInfo); +S_API bool SteamAPI_ISteamUser_GetUserDataFolder(intptr_t instancePtr, char * pchBuffer, int cubBuffer); +S_API void SteamAPI_ISteamUser_StartVoiceRecording(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_StopVoiceRecording(intptr_t instancePtr); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed, void * pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 * nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice(intptr_t instancePtr, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate); +S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(intptr_t instancePtr); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamUser_BIsBehindNAT(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_AdvertiseGame(intptr_t instancePtr, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket(intptr_t instancePtr, void * pDataToInclude, int cbDataToInclude); +S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API int SteamAPI_ISteamUser_GetGameBadgeLevel(intptr_t instancePtr, int nSeries, bool bFoil); +S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL(intptr_t instancePtr, const char * pchRedirectURL); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetPersonaName(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName(intptr_t instancePtr, const char * pchPersonaName); +S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState(intptr_t instancePtr); +S_API int SteamAPI_ISteamFriends_GetFriendCount(intptr_t instancePtr, int iFriendFlags); +S_API uint64 SteamAPI_ISteamFriends_GetFriendByIndex(intptr_t instancePtr, int iFriend, int iFriendFlags); +S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed(intptr_t instancePtr, class CSteamID steamIDFriend, struct FriendGameInfo_t * pFriendGameInfo); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(intptr_t instancePtr, class CSteamID steamIDFriend, int iPersonaName); +S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname(intptr_t instancePtr, class CSteamID steamIDPlayer); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount(intptr_t instancePtr); +S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(intptr_t instancePtr, int iFG); +S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(intptr_t instancePtr, FriendsGroupID_t friendsGroupID, class CSteamID * pOutSteamIDMembers, int nMembersCount); +S_API bool SteamAPI_ISteamFriends_HasFriend(intptr_t instancePtr, class CSteamID steamIDFriend, int iFriendFlags); +S_API int SteamAPI_ISteamFriends_GetClanCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetClanByIndex(intptr_t instancePtr, int iClan); +S_API const char * SteamAPI_ISteamFriends_GetClanName(intptr_t instancePtr, class CSteamID steamIDClan); +S_API const char * SteamAPI_ISteamFriends_GetClanTag(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts(intptr_t instancePtr, class CSteamID steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting); +S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts(intptr_t instancePtr, class CSteamID * psteamIDClans, int cClansToRequest); +S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource(intptr_t instancePtr, class CSteamID steamIDSource); +S_API uint64 SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(intptr_t instancePtr, class CSteamID steamIDSource, int iFriend); +S_API bool SteamAPI_ISteamFriends_IsUserInSource(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDSource); +S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(intptr_t instancePtr, class CSteamID steamIDUser, bool bSpeaking); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlay(intptr_t instancePtr, const char * pchDialog); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(intptr_t instancePtr, const char * pchDialog, class CSteamID steamID); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(intptr_t instancePtr, const char * pchURL); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(intptr_t instancePtr, AppId_t nAppID, EOverlayToStoreFlag eFlag); +S_API void SteamAPI_ISteamFriends_SetPlayedWith(intptr_t instancePtr, class CSteamID steamIDUserPlayedWith); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_RequestUserInformation(intptr_t instancePtr, class CSteamID steamIDUser, bool bRequireNameOnly); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOwner(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanOfficerCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOfficerByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iOfficer); +S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamFriends_SetRichPresence(intptr_t instancePtr, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamFriends_ClearRichPresence(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchKey); +S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(intptr_t instancePtr, class CSteamID steamIDFriend, int iKey); +S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_InviteUserToGame(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchConnectString); +S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetCoplayFriend(intptr_t instancePtr, int iCoplayFriend); +S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetChatMemberByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iUser); +S_API bool SteamAPI_ISteamFriends_SendClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, const char * pchText); +S_API int SteamAPI_ISteamFriends_GetClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, class CSteamID * psteamidChatter); +S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin(intptr_t instancePtr, class CSteamID steamIDClanChat, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(intptr_t instancePtr, bool bInterceptEnabled); +S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchMsgToSend); +S_API int SteamAPI_ISteamFriends_GetFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList(intptr_t instancePtr, uint32 unStartIndex); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(intptr_t instancePtr); +S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUtils_GetIPCountry(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetImageSize(intptr_t instancePtr, int iImage, uint32 * pnWidth, uint32 * pnHeight); +S_API bool SteamAPI_ISteamUtils_GetImageRGBA(intptr_t instancePtr, int iImage, uint8 * pubDest, int nDestBufferSize); +S_API bool SteamAPI_ISteamUtils_GetCSERIPPort(intptr_t instancePtr, uint32 * unIP, uint16 * usPort); +S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetAppID(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(intptr_t instancePtr, ENotificationPosition eNotificationPosition); +S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, bool * pbFailed); +S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason(intptr_t instancePtr, SteamAPICall_t hSteamAPICall); +S_API bool SteamAPI_ISteamUtils_GetAPICallResult(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed); +S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature(intptr_t instancePtr, const char * szFileName); +S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput(intptr_t instancePtr, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText); +S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(intptr_t instancePtr, char * pchText, uint32 cchText); +S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); +S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); +S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); +S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(intptr_t instancePtr, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToBeCloseTo); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(intptr_t instancePtr, int nSlotsAvailable); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(intptr_t instancePtr, ELobbyDistanceFilter eLobbyDistanceFilter); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(intptr_t instancePtr, int cMaxResults); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyByIndex(intptr_t instancePtr, int iLobby); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby(intptr_t instancePtr, ELobbyType eLobbyType, int cMaxMembers); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_LeaveLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDInvitee); +S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iMember); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize); +S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDUser, const char * pchKey); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(intptr_t instancePtr, class CSteamID steamIDLobby, const void * pvMsgBody, int cubMsgBody); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(intptr_t instancePtr, class CSteamID steamIDLobby, int iChatID, class CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, class CSteamID steamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, class CSteamID * psteamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby, int cMaxMembers); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType(intptr_t instancePtr, class CSteamID steamIDLobby, ELobbyType eLobbyType); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(intptr_t instancePtr, class CSteamID steamIDLobby, bool bLobbyJoinable); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDNewOwner); +S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDLobbyDependent); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(intptr_t instancePtr, HServerListRequest hRequest, EMatchMakingServerResponse response); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(intptr_t instancePtr, class gameserveritem_t & server); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(intptr_t instancePtr, const char * pchName, int nScore, float flTimePlayed); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(intptr_t instancePtr, const char * pchRule, const char * pchValue); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(intptr_t instancePtr); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList(intptr_t instancePtr, AppId_t iApp, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(intptr_t instancePtr, HServerListRequest hServerListRequest); +S_API class gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(intptr_t instancePtr, HServerListRequest hRequest); +S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPingResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPlayersResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingRulesResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(intptr_t instancePtr, HServerQuery hServerQuery); +S_API bool SteamAPI_ISteamRemoteStorage_FileWrite(intptr_t instancePtr, const char * pchFile, const void * pvData, int32 cubData); +S_API int32 SteamAPI_ISteamRemoteStorage_FileRead(intptr_t instancePtr, const char * pchFile, void * pvData, int32 cubDataToRead); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync(intptr_t instancePtr, const char * pchFile, const void * pvData, uint32 cubData); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync(intptr_t instancePtr, const char * pchFile, uint32 nOffset, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(intptr_t instancePtr, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileForget(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileDelete(intptr_t instancePtr, const char * pchFile); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(intptr_t instancePtr, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform); +S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileExists(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize(intptr_t instancePtr, const char * pchFile); +S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp(intptr_t instancePtr, const char * pchFile); +S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(intptr_t instancePtr, int iFile, int32 * pnFileSizeInBytes); +S_API bool SteamAPI_ISteamRemoteStorage_GetQuota(intptr_t instancePtr, uint64 * pnTotalBytes, uint64 * puAvailableBytes); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(intptr_t instancePtr); +S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(intptr_t instancePtr, bool bEnabled); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload(intptr_t instancePtr, UGCHandle_t hContent, uint32 unPriority); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(intptr_t instancePtr, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(intptr_t instancePtr, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, class CSteamID * pSteamIDOwner); +S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead(intptr_t instancePtr, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction); +S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(intptr_t instancePtr); +S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(intptr_t instancePtr, int32 iCachedContent); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(intptr_t instancePtr, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType); +S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(intptr_t instancePtr, class CSteamID steamId, uint32 unStartIndex, struct SteamParamStringArray_t * pRequiredTags, struct SteamParamStringArray_t * pExcludedTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo(intptr_t instancePtr, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(intptr_t instancePtr, EWorkshopFileAction eAction, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(intptr_t instancePtr, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, struct SteamParamStringArray_t * pTags, struct SteamParamStringArray_t * pUserTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(intptr_t instancePtr, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority); +S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUserStats_GetStat(intptr_t instancePtr, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetStat0(intptr_t instancePtr, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_SetStat(intptr_t instancePtr, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamUserStats_SetStat0(intptr_t instancePtr, const char * pchName, float fData); +S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(intptr_t instancePtr, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamUserStats_GetAchievement(intptr_t instancePtr, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_SetAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_ClearAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(intptr_t instancePtr, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_StoreStats(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetAchievementIcon(intptr_t instancePtr, const char * pchName); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(intptr_t instancePtr, const char * pchName, const char * pchKey); +S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(intptr_t instancePtr, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress); +S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementName(intptr_t instancePtr, uint32 iAchievement); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamUserStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_ResetAllStats(intptr_t instancePtr, bool bAchievementsToo); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName); +S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, class CSteamID * prgUsers, int cUsers); +S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(intptr_t instancePtr, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, struct LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(intptr_t instancePtr, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(intptr_t instancePtr, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(intptr_t instancePtr, const char * pchName, float * pflPercent); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats(intptr_t instancePtr, int nHistoryDays); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat(intptr_t instancePtr, const char * pchStatName, int64 * pData); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat0(intptr_t instancePtr, const char * pchStatName, double * pData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory(intptr_t instancePtr, const char * pchStatName, int64 * pData, uint32 cubData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory0(intptr_t instancePtr, const char * pchStatName, double * pData, uint32 cubData); +S_API bool SteamAPI_ISteamApps_BIsSubscribed(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsLowViolence(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsCybercafe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsVACBanned(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsSubscribedApp(intptr_t instancePtr, AppId_t appID); +S_API bool SteamAPI_ISteamApps_BIsDlcInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(intptr_t instancePtr); +S_API int SteamAPI_ISteamApps_GetDLCCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex(intptr_t instancePtr, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize); +S_API void SteamAPI_ISteamApps_InstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_UninstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_GetCurrentBetaName(intptr_t instancePtr, char * pchName, int cchNameBufferSize); +S_API bool SteamAPI_ISteamApps_MarkContentCorrupt(intptr_t instancePtr, bool bMissingFilesOnly); +S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots(intptr_t instancePtr, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots); +S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir(intptr_t instancePtr, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize); +S_API bool SteamAPI_ISteamApps_BIsAppInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint64 SteamAPI_ISteamApps_GetAppOwner(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam(intptr_t instancePtr, const char * pchKey); +S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress(intptr_t instancePtr, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API int SteamAPI_ISteamApps_GetAppBuildId(intptr_t instancePtr); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails(intptr_t instancePtr, const char * pszFileName); +S_API bool SteamAPI_ISteamNetworking_SendP2PPacket(intptr_t instancePtr, class CSteamID steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel); +S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(intptr_t instancePtr, uint32 * pcubMsgSize, int nChannel); +S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket(intptr_t instancePtr, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, class CSteamID * psteamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(intptr_t instancePtr, class CSteamID steamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState(intptr_t instancePtr, class CSteamID steamIDRemote, struct P2PSessionState_t * pConnectionState); +S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(intptr_t instancePtr, bool bAllow); +S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket(intptr_t instancePtr, int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(intptr_t instancePtr, class CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket(intptr_t instancePtr, uint32 nIP, uint16 nPort, int nTimeoutSec); +S_API bool SteamAPI_ISteamNetworking_DestroySocket(intptr_t instancePtr, SNetSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket(intptr_t instancePtr, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailable(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_RetrieveData(intptr_t instancePtr, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_GetSocketInfo(intptr_t instancePtr, SNetSocket_t hSocket, class CSteamID * pSteamIDRemote, int * peSocketStatus, uint32 * punIPRemote, uint16 * punPortRemote); +S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pnIP, uint16 * pnPort); +S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType(intptr_t instancePtr, SNetSocket_t hSocket); +S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize(intptr_t instancePtr, SNetSocket_t hSocket); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot(intptr_t instancePtr, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(intptr_t instancePtr, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight); +S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot(intptr_t instancePtr); +S_API void SteamAPI_ISteamScreenshots_HookScreenshots(intptr_t instancePtr, bool bHook); +S_API bool SteamAPI_ISteamScreenshots_SetLocation(intptr_t instancePtr, ScreenshotHandle hScreenshot, const char * pchLocation); +S_API bool SteamAPI_ISteamScreenshots_TagUser(intptr_t instancePtr, ScreenshotHandle hScreenshot, class CSteamID steamID); +S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile(intptr_t instancePtr, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID); +S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(intptr_t instancePtr); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(intptr_t instancePtr, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename); +S_API bool SteamAPI_ISteamMusic_BIsEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusic_BIsPlaying(intptr_t instancePtr); +S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Play(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Pause(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayPrevious(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayNext(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_SetVolume(intptr_t instancePtr, float flVolume); +S_API float SteamAPI_ISteamMusic_GetVolume(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName(intptr_t instancePtr, const char * pchDisplayName); +S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableQueue(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(intptr_t instancePtr, AudioPlayback_Status nStatus); +S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume(intptr_t instancePtr, float flValue); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(intptr_t instancePtr, bool bAvailable); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(intptr_t instancePtr, const char * pchText); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(intptr_t instancePtr, int nValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(intptr_t instancePtr); +S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest(intptr_t instancePtr, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(intptr_t instancePtr, HTTPRequestHandle hRequest, uint64 ulContextValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 * unBodySize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(intptr_t instancePtr, HTTPRequestHandle hRequest, float * pflPercentOut); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen); +S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer(intptr_t instancePtr, bool bAllowResponsesToModify); +S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetCookie(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(intptr_t instancePtr, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchUserAgentInfo); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(intptr_t instancePtr, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unMilliseconds); +S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(intptr_t instancePtr, HTTPRequestHandle hRequest, bool * pbWasTimedOut); +S_API ClientUnifiedMessageHandle SteamAPI_ISteamUnifiedMessages_SendMethod(intptr_t instancePtr, const char * pchServiceMethod, const void * pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, uint32 * punResponseSize, EResult * peResult); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, void * pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease); +S_API bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle); +S_API bool SteamAPI_ISteamUnifiedMessages_SendNotification(intptr_t instancePtr, const char * pchServiceNotification, const void * pNotificationBuffer, uint32 unNotificationBufferSize); +S_API bool SteamAPI_ISteamController_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamController_Shutdown(intptr_t instancePtr); +S_API void SteamAPI_ISteamController_RunFrame(intptr_t instancePtr); +S_API int SteamAPI_ISteamController_GetConnectedControllers(intptr_t instancePtr, ControllerHandle_t * handlesOut); +S_API bool SteamAPI_ISteamController_ShowBindingPanel(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle(intptr_t instancePtr, const char * pszActionSetName); +S_API void SteamAPI_ISteamController_ActivateActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle); +S_API int SteamAPI_ISteamController_GetDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut); +S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle); +S_API int SteamAPI_ISteamController_GetAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut); +S_API void SteamAPI_ISteamController_StopAnalogActionMomentum(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction); +S_API void SteamAPI_ISteamController_TriggerHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec); +S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags); +S_API int SteamAPI_ISteamController_GetGamepadIndexForController(intptr_t instancePtr, ControllerHandle_t ulControllerHandle); +S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex(intptr_t instancePtr, int nIndex); +S_API struct ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API bool SteamAPI_ISteamController_ShowDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition); +S_API bool SteamAPI_ISteamController_ShowAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(intptr_t instancePtr, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(intptr_t instancePtr, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, struct SteamUGCDetails_t * pDetails); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize); +S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_AddRequiredTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_AddExcludedTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnOnlyIDs); +S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnKeyValueTags); +S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnLongDescription); +S_API bool SteamAPI_ISteamUGC_SetReturnMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnMetadata); +S_API bool SteamAPI_ISteamUGC_SetReturnChildren(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnChildren); +S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews); +S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnTotalOnly); +S_API bool SteamAPI_ISteamUGC_SetLanguage(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds); +S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pMatchCloudFileName); +S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag(intptr_t instancePtr, UGCQueryHandle_t handle, bool bMatchAnyTag); +S_API bool SteamAPI_ISteamUGC_SetSearchText(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pSearchText); +S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); +S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pKey, const char * pValue); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds); +S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem(intptr_t instancePtr, AppId_t nConsumerAppId, EWorkshopFileType eFileType); +S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate(intptr_t instancePtr, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_SetItemTitle(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchTitle); +S_API bool SteamAPI_ISteamUGC_SetItemDescription(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchDescription); +S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetItemMetadata(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchMetaData); +S_API bool SteamAPI_ISteamUGC_SetItemVisibility(intptr_t instancePtr, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamUGC_SetItemTags(intptr_t instancePtr, UGCUpdateHandle_t updateHandle, const struct SteamParamStringArray_t * pTags); +S_API bool SteamAPI_ISteamUGC_SetItemContent(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszContentFolder); +S_API bool SteamAPI_ISteamUGC_SetItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey); +S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchChangeNote); +S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress(intptr_t instancePtr, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API uint32 SteamAPI_ISteamUGC_GetItemState(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp); +S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API bool SteamAPI_ISteamUGC_DownloadItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bHighPriority); +S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(intptr_t instancePtr, DepotId_t unWorkshopDepotID, const char * pszFolder); +S_API void SteamAPI_ISteamUGC_SuspendDownloads(intptr_t instancePtr, bool bSuspend); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps(intptr_t instancePtr, AppId_t * pvecAppID, uint32 unMaxAppIDs); +S_API int SteamAPI_ISteamAppList_GetAppName(intptr_t instancePtr, AppId_t nAppID, char * pchName, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppInstallDir(intptr_t instancePtr, AppId_t nAppID, char * pchDirectory, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppBuildId(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Shutdown(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser(intptr_t instancePtr, const char * pchUserAgent, const char * pchUserCSS); +S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_LoadURL(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData); +S_API void SteamAPI_ISteamHTMLSurface_SetSize(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight); +S_API void SteamAPI_ISteamHTMLSurface_StopLoad(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Reload(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoBack(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoForward(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_AddHeader(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchScript); +S_API void SteamAPI_ISteamHTMLSurface_MouseUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseMove(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_MouseWheel(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int32 nDelta); +S_API void SteamAPI_ISteamHTMLSurface_KeyDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyChar(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus); +S_API void SteamAPI_ISteamHTMLSurface_ViewSource(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Find(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse); +S_API void SteamAPI_ISteamHTMLSurface_StopFind(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_SetCookie(intptr_t instancePtr, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly); +S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY); +S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bBackgroundMode); +S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bAllowed); +S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bResult); +S_API EResult SteamAPI_ISteamInventory_GetResultStatus(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetResultItems(intptr_t instancePtr, SteamInventoryResult_t resultHandle, struct SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize); +S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_CheckResultSteamID(intptr_t instancePtr, SteamInventoryResult_t resultHandle, class CSteamID steamIDExpected); +S_API void SteamAPI_ISteamInventory_DestroyResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetAllItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_GetItemsByID(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs); +S_API bool SteamAPI_ISteamInventory_SerializeResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize); +S_API bool SteamAPI_ISteamInventory_DeserializeResult(intptr_t instancePtr, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE); +S_API bool SteamAPI_ISteamInventory_GenerateItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_GrantPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_AddPromoItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef); +S_API bool SteamAPI_ISteamInventory_AddPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_ConsumeItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity); +S_API bool SteamAPI_ISteamInventory_ExchangeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength); +S_API bool SteamAPI_ISteamInventory_TransferItemQuantity(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest); +S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_TriggerItemDrop(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition); +S_API bool SteamAPI_ISteamInventory_TradeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, class CSteamID steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength); +S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(intptr_t instancePtr, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(intptr_t instancePtr, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); +S_API void SteamAPI_ISteamVideo_GetVideoURL(intptr_t instancePtr, AppId_t unVideoAppID); +S_API bool SteamAPI_ISteamVideo_IsBroadcasting(intptr_t instancePtr, int * pnNumViewers); +S_API bool SteamAPI_ISteamGameServer_InitGameServer(intptr_t instancePtr, uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char * pchVersionString); +S_API void SteamAPI_ISteamGameServer_SetProduct(intptr_t instancePtr, const char * pszProduct); +S_API void SteamAPI_ISteamGameServer_SetGameDescription(intptr_t instancePtr, const char * pszGameDescription); +S_API void SteamAPI_ISteamGameServer_SetModDir(intptr_t instancePtr, const char * pszModDir); +S_API void SteamAPI_ISteamGameServer_SetDedicatedServer(intptr_t instancePtr, bool bDedicated); +S_API void SteamAPI_ISteamGameServer_LogOn(intptr_t instancePtr, const char * pszToken); +S_API void SteamAPI_ISteamGameServer_LogOnAnonymous(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_LogOff(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BLoggedOn(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BSecure(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamGameServer_GetSteamID(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_WasRestartRequested(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount(intptr_t instancePtr, int cPlayersMax); +S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount(intptr_t instancePtr, int cBotplayers); +S_API void SteamAPI_ISteamGameServer_SetServerName(intptr_t instancePtr, const char * pszServerName); +S_API void SteamAPI_ISteamGameServer_SetMapName(intptr_t instancePtr, const char * pszMapName); +S_API void SteamAPI_ISteamGameServer_SetPasswordProtected(intptr_t instancePtr, bool bPasswordProtected); +S_API void SteamAPI_ISteamGameServer_SetSpectatorPort(intptr_t instancePtr, uint16 unSpectatorPort); +S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName(intptr_t instancePtr, const char * pszSpectatorServerName); +S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetKeyValue(intptr_t instancePtr, const char * pKey, const char * pValue); +S_API void SteamAPI_ISteamGameServer_SetGameTags(intptr_t instancePtr, const char * pchGameTags); +S_API void SteamAPI_ISteamGameServer_SetGameData(intptr_t instancePtr, const char * pchGameData); +S_API void SteamAPI_ISteamGameServer_SetRegion(intptr_t instancePtr, const char * pszRegion); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(intptr_t instancePtr, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, class CSteamID * pSteamIDUser); +S_API uint64 SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchPlayerName, uint32 uScore); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDGroup); +S_API void SteamAPI_ISteamGameServer_GetGameplayStats(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket(intptr_t instancePtr, const void * pData, int cbData, uint32 srcIP, uint16 srcPort); +S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(intptr_t instancePtr, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort); +S_API void SteamAPI_ISteamGameServer_EnableHeartbeats(intptr_t instancePtr, bool bActive); +S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval(intptr_t instancePtr, int iHeartbeatInterval); +S_API void SteamAPI_ISteamGameServer_ForceHeartbeat(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan(intptr_t instancePtr, class CSteamID steamIDClan); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(intptr_t instancePtr, class CSteamID steamIDNewPlayer); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float fData); +S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +#endif // STEAMAPIFLAT_H + + diff --git a/lib/linux/include/steam/steam_api_internal.h b/lib/linux/include/steam/steam_api_internal.h new file mode 100644 index 0000000..ed0423b --- /dev/null +++ b/lib/linux/include/steam/steam_api_internal.h @@ -0,0 +1,327 @@ +//====== Copyright 1996-2015, Valve Corporation, All rights reserved. ======= +// +// Purpose: Internal private Steamworks API declarations and definitions +// +//============================================================================= + +#ifndef STEAM_API_INTERNAL_H +#define STEAM_API_INTERNAL_H + +S_API HSteamUser SteamAPI_GetHSteamUser(); +S_API void * S_CALLTYPE SteamInternal_ContextInit( void *pContextInitData ); +S_API void * S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); + +#if !defined( STEAM_API_EXPORTS ) + +inline void S_CALLTYPE SteamInternal_OnContextInit( void* p ) +{ + ((CSteamAPIContext*)p)->Clear(); + if ( SteamAPI_GetHSteamPipe() ) + ((CSteamAPIContext*)p)->Init(); +} +inline CSteamAPIContext& SteamInternal_ModuleContext() +{ + // SteamInternal_ContextInit takes a base pointer for the equivalent of + // struct { void (*pFn)(void* pCtx); uintp counter; CSteamAPIContext ctx; } + // Do not change layout of 2 + sizeof... or add non-pointer aligned data! + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* s_CallbackCounterAndContext[ 2 + sizeof(CSteamAPIContext)/sizeof(void*) ] = { (void*)&SteamInternal_OnContextInit, 0 }; + return *(CSteamAPIContext*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); +} + +inline ISteamClient *SteamClient() { return SteamInternal_ModuleContext().SteamClient(); } +inline ISteamUser *SteamUser() { return SteamInternal_ModuleContext().SteamUser(); } +inline ISteamFriends *SteamFriends() { return SteamInternal_ModuleContext().SteamFriends(); } +inline ISteamUtils *SteamUtils() { return SteamInternal_ModuleContext().SteamUtils(); } +inline ISteamMatchmaking *SteamMatchmaking() { return SteamInternal_ModuleContext().SteamMatchmaking(); } +inline ISteamUserStats *SteamUserStats() { return SteamInternal_ModuleContext().SteamUserStats(); } +inline ISteamApps *SteamApps() { return SteamInternal_ModuleContext().SteamApps(); } +inline ISteamMatchmakingServers *SteamMatchmakingServers() { return SteamInternal_ModuleContext().SteamMatchmakingServers(); } +inline ISteamNetworking *SteamNetworking() { return SteamInternal_ModuleContext().SteamNetworking(); } +inline ISteamRemoteStorage *SteamRemoteStorage() { return SteamInternal_ModuleContext().SteamRemoteStorage(); } +inline ISteamScreenshots *SteamScreenshots() { return SteamInternal_ModuleContext().SteamScreenshots(); } +inline ISteamHTTP *SteamHTTP() { return SteamInternal_ModuleContext().SteamHTTP(); } +inline ISteamUnifiedMessages *SteamUnifiedMessages() { return SteamInternal_ModuleContext().SteamUnifiedMessages(); } +inline ISteamController *SteamController() { return SteamInternal_ModuleContext().SteamController(); } +inline ISteamUGC *SteamUGC() { return SteamInternal_ModuleContext().SteamUGC(); } +inline ISteamAppList *SteamAppList() { return SteamInternal_ModuleContext().SteamAppList(); } +inline ISteamMusic *SteamMusic() { return SteamInternal_ModuleContext().SteamMusic(); } +inline ISteamMusicRemote *SteamMusicRemote() { return SteamInternal_ModuleContext().SteamMusicRemote(); } +inline ISteamHTMLSurface *SteamHTMLSurface() { return SteamInternal_ModuleContext().SteamHTMLSurface(); } +inline ISteamInventory *SteamInventory() { return SteamInternal_ModuleContext().SteamInventory(); } +inline ISteamVideo *SteamVideo() { return SteamInternal_ModuleContext().SteamVideo(); } + +#endif // !defined( STEAM_API_EXPORTS ) + + +inline void CSteamAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamUser = NULL; + m_pSteamFriends = NULL; + m_pSteamUtils = NULL; + m_pSteamMatchmaking = NULL; + m_pSteamUserStats = NULL; + m_pSteamApps = NULL; + m_pSteamMatchmakingServers = NULL; + m_pSteamNetworking = NULL; + m_pSteamRemoteStorage = NULL; + m_pSteamHTTP = NULL; + m_pSteamScreenshots = NULL; + m_pSteamMusic = NULL; + m_pSteamUnifiedMessages = NULL; + m_pController = NULL; + m_pSteamUGC = NULL; + m_pSteamAppList = NULL; + m_pSteamMusic = NULL; + m_pSteamMusicRemote = NULL; + m_pSteamHTMLSurface = NULL; + m_pSteamInventory = NULL; +} + + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamAPIContext::Init() +{ + HSteamUser hSteamUser = SteamAPI_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamUser = m_pSteamClient->GetISteamUser( hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION ); + if ( !m_pSteamUser ) + return false; + + m_pSteamFriends = m_pSteamClient->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION ); + if ( !m_pSteamFriends ) + return false; + + m_pSteamUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamUtils ) + return false; + + m_pSteamMatchmaking = m_pSteamClient->GetISteamMatchmaking( hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION ); + if ( !m_pSteamMatchmaking ) + return false; + + m_pSteamMatchmakingServers = m_pSteamClient->GetISteamMatchmakingServers( hSteamUser, hSteamPipe, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); + if ( !m_pSteamMatchmakingServers ) + return false; + + m_pSteamUserStats = m_pSteamClient->GetISteamUserStats( hSteamUser, hSteamPipe, STEAMUSERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamUserStats ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + m_pSteamNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamNetworking ) + return false; + + m_pSteamRemoteStorage = m_pSteamClient->GetISteamRemoteStorage( hSteamUser, hSteamPipe, STEAMREMOTESTORAGE_INTERFACE_VERSION ); + if ( !m_pSteamRemoteStorage ) + return false; + + m_pSteamScreenshots = m_pSteamClient->GetISteamScreenshots( hSteamUser, hSteamPipe, STEAMSCREENSHOTS_INTERFACE_VERSION ); + if ( !m_pSteamScreenshots ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamUnifiedMessages = m_pSteamClient->GetISteamUnifiedMessages( hSteamUser, hSteamPipe, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION ); + if ( !m_pSteamUnifiedMessages ) + return false; + + m_pController = m_pSteamClient->GetISteamController( hSteamUser, hSteamPipe, STEAMCONTROLLER_INTERFACE_VERSION ); + if ( !m_pController ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamAppList = m_pSteamClient->GetISteamAppList( hSteamUser, hSteamPipe, STEAMAPPLIST_INTERFACE_VERSION ); + if ( !m_pSteamAppList ) + return false; + + m_pSteamMusic = m_pSteamClient->GetISteamMusic( hSteamUser, hSteamPipe, STEAMMUSIC_INTERFACE_VERSION ); + if ( !m_pSteamMusic ) + return false; + + m_pSteamMusicRemote = m_pSteamClient->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION ); + if ( !m_pSteamMusicRemote ) + return false; + + m_pSteamHTMLSurface = m_pSteamClient->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION ); + if ( !m_pSteamHTMLSurface ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamVideo = m_pSteamClient->GetISteamVideo( hSteamUser, hSteamPipe, STEAMVIDEO_INTERFACE_VERSION ); + if ( !m_pSteamVideo ) + return false; + + return true; +} + + +//----------------------------------------------------------------------------- +// The following macros are implementation details, not intended for public use +//----------------------------------------------------------------------------- +#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) +#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED +#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y +#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ + struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ + CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ + private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + pOuter->func( reinterpret_cast<param*>( pvParam ) ); \ + } \ + } m_steamcallback_ ## func ; void func( param *pParam ) +#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ + CCallback< thisclass, param > var; void func( param *pParam ) + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +inline CCallResult<T, P>::CCallResult() +{ + m_hAPICall = k_uAPICallInvalid; + m_pObj = NULL; + m_Func = NULL; + m_iCallback = P::k_iCallback; +} + +template< class T, class P > +inline void CCallResult<T, P>::Set( SteamAPICall_t hAPICall, T *p, func_t func ) +{ + if ( m_hAPICall ) + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + + m_hAPICall = hAPICall; + m_pObj = p; + m_Func = func; + + if ( hAPICall ) + SteamAPI_RegisterCallResult( this, hAPICall ); +} + +template< class T, class P > +inline bool CCallResult<T, P>::IsActive() const +{ + return (m_hAPICall != k_uAPICallInvalid); +} + +template< class T, class P > +inline void CCallResult<T, P>::Cancel() +{ + if ( m_hAPICall != k_uAPICallInvalid ) + { + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + m_hAPICall = k_uAPICallInvalid; + } + +} + +template< class T, class P > +inline CCallResult<T, P>::~CCallResult() +{ + Cancel(); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam ) +{ + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, false); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) +{ + if ( hSteamAPICall == m_hAPICall ) + { + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, bIOFailure); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver > +inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) + : m_pObj( NULL ), m_Func( NULL ) +{ + if ( bGameserver ) + { + this->SetGameserverFlag(); + } + Register( pObj, func ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) +{ + if ( !pObj || !func ) + return; + + if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) + Unregister(); + + m_pObj = pObj; + m_Func = func; + // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered + SteamAPI_RegisterCallback( this, P::k_iCallback ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Unregister() +{ + // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered + SteamAPI_UnregisterCallback( this ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) +{ + (m_pObj->*m_Func)((P *)pvParam); +} + + +#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) +// this should be called before the game initialized the steam APIs +// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) +// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) +// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder +// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback +// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. +S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); +S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#endif + + +#endif // STEAM_API_INTERNAL_H diff --git a/lib/linux/include/steam/steam_api_interop.cs b/lib/linux/include/steam/steam_api_interop.cs new file mode 100644 index 0000000..f7a6775 --- /dev/null +++ b/lib/linux/include/steam/steam_api_interop.cs @@ -0,0 +1,10470 @@ +//====== Copyright 1996-2016, Valve Corporation, All rights reserved. ======= +// +// Purpose: This file contains C#/managed code bindings for the SteamAPI interfaces +// This file is auto-generated, do not edit it. +// +//============================================================================= + +using System; +using System.Runtime.InteropServices; +using Valve.Steamworks; +using Valve.Interop; + +namespace Valve.Interop +{ + +public class NativeEntrypoints +{ + + +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe")] +internal static extern uint SteamAPI_ISteamClient_CreateSteamPipe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BReleaseSteamPipe")] +internal static extern bool SteamAPI_ISteamClient_BReleaseSteamPipe(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ConnectToGlobalUser")] +internal static extern uint SteamAPI_ISteamClient_ConnectToGlobalUser(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateLocalUser")] +internal static extern uint SteamAPI_ISteamClient_CreateLocalUser(IntPtr instancePtr, ref uint phSteamPipe, uint eAccountType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ReleaseUser")] +internal static extern void SteamAPI_ISteamClient_ReleaseUser(IntPtr instancePtr, uint hSteamPipe, uint hUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUser")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUser(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServer")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServer(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetLocalIPBinding")] +internal static extern void SteamAPI_ISteamClient_SetLocalIPBinding(IntPtr instancePtr, uint unIP, char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamFriends")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamFriends(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUtils")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUtils(IntPtr instancePtr, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmaking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmaking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmakingServers")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmakingServers(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGenericInterface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGenericInterface(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUserStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUserStats(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServerStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServerStats(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamApps")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamApps(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamNetworking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamNetworking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamRemoteStorage")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamRemoteStorage(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamScreenshots(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamClient_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamClient_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed")] +internal static extern bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTTP")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTTP(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUnifiedMessages")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUnifiedMessages(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamController")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamController(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUGC")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUGC(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamAppList")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamAppList(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusic")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusic(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusicRemote")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusicRemote(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTMLSurface(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInventory(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamVideo(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser")] +internal static extern uint SteamAPI_ISteamUser_GetHSteamUser(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BLoggedOn")] +internal static extern bool SteamAPI_ISteamUser_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetSteamID")] +internal static extern ulong SteamAPI_ISteamUser_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection")] +internal static extern int SteamAPI_ISteamUser_InitiateGameConnection(IntPtr instancePtr, IntPtr pAuthBlob, int cbMaxAuthBlob, ulong steamIDGameServer, uint unIPServer, char usPortServer, bool bSecure); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection")] +internal static extern void SteamAPI_ISteamUser_TerminateGameConnection(IntPtr instancePtr, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent")] +internal static extern void SteamAPI_ISteamUser_TrackAppUsageEvent(IntPtr instancePtr, ulong gameID, int eAppUsageEvent, string pchExtraInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetUserDataFolder")] +internal static extern bool SteamAPI_ISteamUser_GetUserDataFolder(IntPtr instancePtr, string pchBuffer, int cubBuffer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StartVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StartVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StopVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice")] +internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoice")] +internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed, IntPtr pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, ref uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_DecompressVoice")] +internal static extern uint SteamAPI_ISteamUser_DecompressVoice(IntPtr instancePtr, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate")] +internal static extern uint SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamUser_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_EndAuthSession")] +internal static extern void SteamAPI_ISteamUser_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamUser_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamUser_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsBehindNAT")] +internal static extern bool SteamAPI_ISteamUser_BIsBehindNAT(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_AdvertiseGame")] +internal static extern void SteamAPI_ISteamUser_AdvertiseGame(IntPtr instancePtr, ulong steamIDGameServer, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestEncryptedAppTicket")] +internal static extern ulong SteamAPI_ISteamUser_RequestEncryptedAppTicket(IntPtr instancePtr, IntPtr pDataToInclude, int cbDataToInclude); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetEncryptedAppTicket")] +internal static extern bool SteamAPI_ISteamUser_GetEncryptedAppTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetGameBadgeLevel")] +internal static extern int SteamAPI_ISteamUser_GetGameBadgeLevel(IntPtr instancePtr, int nSeries, bool bFoil); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetPlayerSteamLevel")] +internal static extern int SteamAPI_ISteamUser_GetPlayerSteamLevel(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL")] +internal static extern ulong SteamAPI_ISteamUser_RequestStoreAuthURL(IntPtr instancePtr, string pchRedirectURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneVerified(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled")] +internal static extern bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneIdentifying")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneIdentifying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneRequiringVerification")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPersonaName(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName")] +internal static extern ulong SteamAPI_ISteamFriends_SetPersonaName(IntPtr instancePtr, string pchPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetPersonaState(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCount(IntPtr instancePtr, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendByIndex(IntPtr instancePtr, int iFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRelationship")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendRelationship(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendPersonaState(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaName(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendGamePlayed")] +internal static extern bool SteamAPI_ISteamFriends_GetFriendGamePlayed(IntPtr instancePtr, ulong steamIDFriend, ref FriendGameInfo_t pFriendGameInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(IntPtr instancePtr, ulong steamIDFriend, int iPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendSteamLevel")] +internal static extern int SteamAPI_ISteamFriends_GetFriendSteamLevel(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPlayerNickname")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPlayerNickname(IntPtr instancePtr, ulong steamIDPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex")] +internal static extern char SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(IntPtr instancePtr, int iFG); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendsGroupName(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersList")] +internal static extern void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(IntPtr instancePtr, char friendsGroupID, [In, Out] CSteamID[] pOutSteamIDMembers, int nMembersCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_HasFriend")] +internal static extern bool SteamAPI_ISteamFriends_HasFriend(IntPtr instancePtr, ulong steamIDFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanByIndex(IntPtr instancePtr, int iClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanName(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanTag")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanTag(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanActivityCounts")] +internal static extern bool SteamAPI_ISteamFriends_GetClanActivityCounts(IntPtr instancePtr, ulong steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_DownloadClanActivityCounts")] +internal static extern ulong SteamAPI_ISteamFriends_DownloadClanActivityCounts(IntPtr instancePtr, [In, Out] CSteamID[] psteamIDClans, int cClansToRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCountFromSource")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCountFromSource(IntPtr instancePtr, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(IntPtr instancePtr, ulong steamIDSource, int iFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsUserInSource")] +internal static extern bool SteamAPI_ISteamFriends_IsUserInSource(IntPtr instancePtr, ulong steamIDUser, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking")] +internal static extern void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(IntPtr instancePtr, ulong steamIDUser, bool bSpeaking); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlay")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlay(IntPtr instancePtr, string pchDialog); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToUser")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(IntPtr instancePtr, string pchDialog, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(IntPtr instancePtr, string pchURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToStore")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(IntPtr instancePtr, uint nAppID, char eFlag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPlayedWith")] +internal static extern void SteamAPI_ISteamFriends_SetPlayedWith(IntPtr instancePtr, ulong steamIDUserPlayedWith); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetSmallFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetSmallFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetMediumFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetMediumFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetLargeFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetLargeFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestUserInformation")] +internal static extern bool SteamAPI_ISteamFriends_RequestUserInformation(IntPtr instancePtr, ulong steamIDUser, bool bRequireNameOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestClanOfficerList")] +internal static extern ulong SteamAPI_ISteamFriends_RequestClanOfficerList(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOwner")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOwner(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanOfficerCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOfficerByIndex(IntPtr instancePtr, ulong steamIDClan, int iOfficer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetUserRestrictions")] +internal static extern uint SteamAPI_ISteamFriends_GetUserRestrictions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetRichPresence")] +internal static extern bool SteamAPI_ISteamFriends_SetRichPresence(IntPtr instancePtr, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ClearRichPresence")] +internal static extern void SteamAPI_ISteamFriends_ClearRichPresence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresence")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(IntPtr instancePtr, ulong steamIDFriend, int iKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestFriendRichPresence")] +internal static extern void SteamAPI_ISteamFriends_RequestFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_InviteUserToGame")] +internal static extern bool SteamAPI_ISteamFriends_InviteUserToGame(IntPtr instancePtr, ulong steamIDFriend, string pchConnectString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetCoplayFriendCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriend")] +internal static extern ulong SteamAPI_ISteamFriends_GetCoplayFriend(IntPtr instancePtr, int iCoplayFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayTime")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCoplayTime(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayGame")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendCoplayGame(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_JoinClanChatRoom")] +internal static extern ulong SteamAPI_ISteamFriends_JoinClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_LeaveClanChatRoom")] +internal static extern bool SteamAPI_ISteamFriends_LeaveClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMemberCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMemberCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetChatMemberByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetChatMemberByIndex(IntPtr instancePtr, ulong steamIDClan, int iUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SendClanChatMessage")] +internal static extern bool SteamAPI_ISteamFriends_SendClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMessage")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref uint peChatEntryType, ref CSteamID psteamidChatter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatAdmin")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatAdmin(IntPtr instancePtr, ulong steamIDClanChat, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetListenForFriendsMessages")] +internal static extern bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(IntPtr instancePtr, bool bInterceptEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ReplyToFriendMessage")] +internal static extern bool SteamAPI_ISteamFriends_ReplyToFriendMessage(IntPtr instancePtr, ulong steamIDFriend, string pchMsgToSend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendMessage")] +internal static extern int SteamAPI_ISteamFriends_GetFriendMessage(IntPtr instancePtr, ulong steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFollowerCount")] +internal static extern ulong SteamAPI_ISteamFriends_GetFollowerCount(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsFollowing")] +internal static extern ulong SteamAPI_ISteamFriends_IsFollowing(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_EnumerateFollowingList")] +internal static extern ulong SteamAPI_ISteamFriends_EnumerateFollowingList(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceAppActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceAppActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetConnectedUniverse")] +internal static extern int SteamAPI_ISteamUtils_GetConnectedUniverse(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetServerRealTime")] +internal static extern uint SteamAPI_ISteamUtils_GetServerRealTime(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCountry")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetIPCountry(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageSize")] +internal static extern bool SteamAPI_ISteamUtils_GetImageSize(IntPtr instancePtr, int iImage, ref uint pnWidth, ref uint pnHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageRGBA")] +internal static extern bool SteamAPI_ISteamUtils_GetImageRGBA(IntPtr instancePtr, int iImage, IntPtr pubDest, int nDestBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCSERIPPort")] +internal static extern bool SteamAPI_ISteamUtils_GetCSERIPPort(IntPtr instancePtr, ref uint unIP, ref char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCurrentBatteryPower")] +internal static extern byte SteamAPI_ISteamUtils_GetCurrentBatteryPower(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAppID")] +internal static extern uint SteamAPI_ISteamUtils_GetAppID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationPosition")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(IntPtr instancePtr, uint eNotificationPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsAPICallCompleted")] +internal static extern bool SteamAPI_ISteamUtils_IsAPICallCompleted(IntPtr instancePtr, ulong hSteamAPICall, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallFailureReason")] +internal static extern int SteamAPI_ISteamUtils_GetAPICallFailureReason(IntPtr instancePtr, ulong hSteamAPICall); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult")] +internal static extern bool SteamAPI_ISteamUtils_GetAPICallResult(IntPtr instancePtr, ulong hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamUtils_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamUtils_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsOverlayEnabled")] +internal static extern bool SteamAPI_ISteamUtils_IsOverlayEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_BOverlayNeedsPresent")] +internal static extern bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_CheckFileSignature")] +internal static extern ulong SteamAPI_ISteamUtils_CheckFileSignature(IntPtr instancePtr, string szFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_ShowGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_ShowGamepadTextInput(IntPtr instancePtr, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength")] +internal static extern uint SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(IntPtr instancePtr, string pchText, uint cchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSteamUILanguage")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetSteamUILanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningInVR")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamRunningInVR(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(IntPtr instancePtr, int nHorizontalInset, int nVerticalInset); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] +internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(IntPtr instancePtr, int iGame, ref uint pnAppID, ref uint pnIP, ref char pnConnPort, ref char pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddFavoriteGame")] +internal static extern int SteamAPI_ISteamMatchmaking_AddFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyList")] +internal static extern ulong SteamAPI_ISteamMatchmaking_RequestLobbyList(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(IntPtr instancePtr, string pchKeyToMatch, string pchValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToBeCloseTo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(IntPtr instancePtr, int nSlotsAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(IntPtr instancePtr, uint eLobbyDistanceFilter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(IntPtr instancePtr, int cMaxResults); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyByIndex(IntPtr instancePtr, int iLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_CreateLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_CreateLobby(IntPtr instancePtr, uint eLobbyType, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_JoinLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_JoinLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_LeaveLobby")] +internal static extern void SteamAPI_ISteamMatchmaking_LeaveLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_InviteUserToLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDInvitee); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers")] +internal static extern int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(IntPtr instancePtr, ulong steamIDLobby, int iMember); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(IntPtr instancePtr, ulong steamIDLobby, int iLobbyData, string pchKey, int cchKeyBufferSize, string pchValue, int cchValueBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_DeleteLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDUser, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberData")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg")] +internal static extern bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(IntPtr instancePtr, ulong steamIDLobby, IntPtr pvMsgBody, int cubMsgBody); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(IntPtr instancePtr, ulong steamIDLobby, int iChatID, ref CSteamID pSteamIDUser, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_RequestLobbyData(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyGameServer")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, uint unGameServerIP, char unGameServerPort, ulong steamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyGameServer")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, ref uint punGameServerIP, ref char punGameServerPort, ref CSteamID psteamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyType")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyType(IntPtr instancePtr, ulong steamIDLobby, uint eLobbyType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyJoinable")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(IntPtr instancePtr, ulong steamIDLobby, bool bLobbyJoinable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyOwner")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyOwner")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDNewOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLinkedLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDLobbyDependent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(IntPtr instancePtr, uint hRequest, uint response); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(IntPtr instancePtr, IntPtr server); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(IntPtr instancePtr, string pchName, int nScore, float flTimePlayed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(IntPtr instancePtr, string pchRule, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestLANServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestLANServerList(IntPtr instancePtr, uint iApp, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ReleaseRequest")] +internal static extern void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(IntPtr instancePtr, uint hServerListRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerDetails")] +internal static extern IntPtr SteamAPI_ISteamMatchmakingServers_GetServerDetails(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_IsRefreshing")] +internal static extern bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerCount")] +internal static extern int SteamAPI_ISteamMatchmakingServers_GetServerCount(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshServer")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshServer(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PingServer")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PingServer(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PlayerDetails")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PlayerDetails(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ServerRules")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_ServerRules(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelServerQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(IntPtr instancePtr, uint hServerQuery); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWrite")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWrite(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_FileRead(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubDataToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteAsync(IntPtr instancePtr, string pchFile, IntPtr pvData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileReadAsync(IntPtr instancePtr, string pchFile, uint nOffset, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(IntPtr instancePtr, ulong hReadCall, IntPtr pvBuffer, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileForget")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileForget(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileDelete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileDelete(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileShare")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileShare(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms")] +internal static extern bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(IntPtr instancePtr, string pchFile, uint eRemoteStoragePlatform); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(IntPtr instancePtr, ulong writeHandle, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileExists")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileExists(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersisted")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FilePersisted(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileSize")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileSize(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileTimestamp")] +internal static extern long SteamAPI_ISteamRemoteStorage_GetFileTimestamp(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms")] +internal static extern uint SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize")] +internal static extern IntPtr SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(IntPtr instancePtr, int iFile, ref int pnFileSizeInBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetQuota")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetQuota(IntPtr instancePtr, ref ulong pnTotalBytes, ref ulong puAvailableBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp")] +internal static extern void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(IntPtr instancePtr, bool bEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownload")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownload(IntPtr instancePtr, ulong hContent, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(IntPtr instancePtr, ulong hContent, ref int pnBytesDownloaded, ref int pnBytesExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDetails")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(IntPtr instancePtr, ulong hContent, ref uint pnAppID, System.Text.StringBuilder ppchName, ref int pnFileSizeInBytes, ref CSteamID pSteamIDOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_UGCRead(IntPtr instancePtr, ulong hContent, IntPtr pvData, int cubDataToRead, uint cOffset, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(IntPtr instancePtr, int iCachedContent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(IntPtr instancePtr, string pchFile, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags, uint eWorkshopFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(IntPtr instancePtr, ulong updateHandle, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(IntPtr instancePtr, ulong updateHandle, string pchPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(IntPtr instancePtr, ulong updateHandle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(IntPtr instancePtr, ulong updateHandle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(IntPtr instancePtr, ulong updateHandle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(IntPtr instancePtr, ulong updateHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(IntPtr instancePtr, ulong unPublishedFileId, uint unMaxSecondsOld); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_DeletePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_DeletePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(IntPtr instancePtr, ulong updateHandle, string pchChangeDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(IntPtr instancePtr, ulong unPublishedFileId, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(IntPtr instancePtr, ulong steamId, uint unStartIndex, ref SteamParamStringArray_t pRequiredTags, ref SteamParamStringArray_t pExcludedTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishVideo")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishVideo(IntPtr instancePtr, uint eVideoProvider, string pchVideoAccount, string pchVideoIdentifier, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(IntPtr instancePtr, ulong unPublishedFileId, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(IntPtr instancePtr, uint eAction, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(IntPtr instancePtr, uint eEnumerationType, uint unStartIndex, uint unCount, uint unDays, ref SteamParamStringArray_t pTags, ref SteamParamStringArray_t pUserTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(IntPtr instancePtr, ulong hContent, string pchLocation, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestCurrentStats")] +internal static extern bool SteamAPI_ISteamUserStats_RequestCurrentStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat(IntPtr instancePtr, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat0(IntPtr instancePtr, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat(IntPtr instancePtr, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat0(IntPtr instancePtr, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UpdateAvgRateStat")] +internal static extern bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(IntPtr instancePtr, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievement(IntPtr instancePtr, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_SetAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ClearAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_ClearAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(IntPtr instancePtr, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_StoreStats")] +internal static extern bool SteamAPI_ISteamUserStats_StoreStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementIcon")] +internal static extern int SteamAPI_ISteamUserStats_GetAchievementIcon(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(IntPtr instancePtr, string pchName, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_IndicateAchievementProgress")] +internal static extern bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(IntPtr instancePtr, string pchName, uint nCurProgress, uint nMaxProgress); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumAchievements")] +internal static extern uint SteamAPI_ISteamUserStats_GetNumAchievements(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementName(IntPtr instancePtr, uint iAchievement); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ResetAllStats")] +internal static extern bool SteamAPI_ISteamUserStats_ResetAllStats(IntPtr instancePtr, bool bAchievementsToo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(IntPtr instancePtr, string pchLeaderboardName, uint eLeaderboardSortMethod, uint eLeaderboardDisplayType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindLeaderboard(IntPtr instancePtr, string pchLeaderboardName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetLeaderboardName(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount")] +internal static extern int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(IntPtr instancePtr, ulong hSteamLeaderboard, [In, Out] CSteamID[] prgUsers, int cUsers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry")] +internal static extern bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(IntPtr instancePtr, ulong hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, ref int pDetails, int cDetailsMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UploadLeaderboardScore")] +internal static extern ulong SteamAPI_ISteamUserStats_UploadLeaderboardScore(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardUploadScoreMethod, int nScore, ref int pScoreDetails, int cScoreDetailsCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_AttachLeaderboardUGC")] +internal static extern ulong SteamAPI_ISteamUserStats_AttachLeaderboardUGC(IntPtr instancePtr, ulong hSteamLeaderboard, ulong hUGC); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers")] +internal static extern ulong SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(IntPtr instancePtr, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(IntPtr instancePtr, int iIteratorPrevious, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(IntPtr instancePtr, string pchName, ref float pflPercent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalStats(IntPtr instancePtr, int nHistoryDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat(IntPtr instancePtr, string pchStatName, ref long pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat0(IntPtr instancePtr, string pchStatName, ref double pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory(IntPtr instancePtr, string pchStatName, [In, Out] long[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory0")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory0(IntPtr instancePtr, string pchStatName, [In, Out] double[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribed")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsLowViolence")] +internal static extern bool SteamAPI_ISteamApps_BIsLowViolence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsCybercafe")] +internal static extern bool SteamAPI_ISteamApps_BIsCybercafe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsVACBanned")] +internal static extern bool SteamAPI_ISteamApps_BIsVACBanned(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentGameLanguage")] +internal static extern IntPtr SteamAPI_ISteamApps_GetCurrentGameLanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAvailableGameLanguages")] +internal static extern IntPtr SteamAPI_ISteamApps_GetAvailableGameLanguages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedApp")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedApp(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsDlcInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsDlcInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime")] +internal static extern uint SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDLCCount")] +internal static extern int SteamAPI_ISteamApps_GetDLCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BGetDLCDataByIndex")] +internal static extern bool SteamAPI_ISteamApps_BGetDLCDataByIndex(IntPtr instancePtr, int iDLC, ref uint pAppID, ref bool pbAvailable, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_InstallDLC")] +internal static extern void SteamAPI_ISteamApps_InstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_UninstallDLC")] +internal static extern void SteamAPI_ISteamApps_UninstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey")] +internal static extern void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentBetaName")] +internal static extern bool SteamAPI_ISteamApps_GetCurrentBetaName(IntPtr instancePtr, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_MarkContentCorrupt")] +internal static extern bool SteamAPI_ISteamApps_MarkContentCorrupt(IntPtr instancePtr, bool bMissingFilesOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetInstalledDepots")] +internal static extern uint SteamAPI_ISteamApps_GetInstalledDepots(IntPtr instancePtr, uint appID, ref uint pvecDepots, uint cMaxDepots); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppInstallDir")] +internal static extern uint SteamAPI_ISteamApps_GetAppInstallDir(IntPtr instancePtr, uint appID, string pchFolder, uint cchFolderBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsAppInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsAppInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppOwner")] +internal static extern ulong SteamAPI_ISteamApps_GetAppOwner(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetLaunchQueryParam")] +internal static extern IntPtr SteamAPI_ISteamApps_GetLaunchQueryParam(IntPtr instancePtr, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDlcDownloadProgress")] +internal static extern bool SteamAPI_ISteamApps_GetDlcDownloadProgress(IntPtr instancePtr, uint nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId")] +internal static extern int SteamAPI_ISteamApps_GetAppBuildId(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys")] +internal static extern void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetFileDetails")] +internal static extern ulong SteamAPI_ISteamApps_GetFileDetails(IntPtr instancePtr, string pszFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_SendP2PPacket(IntPtr instancePtr, ulong steamIDRemote, IntPtr pubData, uint cubData, uint eP2PSendType, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(IntPtr instancePtr, ref uint pcubMsgSize, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_ReadP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_ReadP2PPacket(IntPtr instancePtr, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref CSteamID psteamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(IntPtr instancePtr, ulong steamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetP2PSessionState")] +internal static extern bool SteamAPI_ISteamNetworking_GetP2PSessionState(IntPtr instancePtr, ulong steamIDRemote, ref P2PSessionState_t pConnectionState); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AllowP2PPacketRelay")] +internal static extern bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(IntPtr instancePtr, bool bAllow); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateListenSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateListenSocket(IntPtr instancePtr, int nVirtualP2PPort, uint nIP, char nPort, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(IntPtr instancePtr, ulong steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateConnectionSocket(IntPtr instancePtr, uint nIP, char nPort, int nTimeoutSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroySocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroySocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroyListenSocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroyListenSocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendDataOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_SendDataOnSocket(IntPtr instancePtr, uint hSocket, IntPtr pubData, uint cubData, bool bReliable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(IntPtr instancePtr, uint hSocket, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveDataFromSocket")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(IntPtr instancePtr, uint hSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailable(IntPtr instancePtr, uint hListenSocket, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveData")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveData(IntPtr instancePtr, uint hListenSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetSocketInfo(IntPtr instancePtr, uint hSocket, ref CSteamID pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref char punPortRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetListenSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetListenSocketInfo(IntPtr instancePtr, uint hListenSocket, ref uint pnIP, ref char pnPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketConnectionType")] +internal static extern uint SteamAPI_ISteamNetworking_GetSocketConnectionType(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetMaxPacketSize")] +internal static extern int SteamAPI_ISteamNetworking_GetMaxPacketSize(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot")] +internal static extern uint SteamAPI_ISteamScreenshots_WriteScreenshot(IntPtr instancePtr, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(IntPtr instancePtr, string pchFilename, string pchThumbnailFilename, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TriggerScreenshot")] +internal static extern void SteamAPI_ISteamScreenshots_TriggerScreenshot(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_HookScreenshots")] +internal static extern void SteamAPI_ISteamScreenshots_HookScreenshots(IntPtr instancePtr, bool bHook); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_SetLocation")] +internal static extern bool SteamAPI_ISteamScreenshots_SetLocation(IntPtr instancePtr, uint hScreenshot, string pchLocation); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagUser")] +internal static extern bool SteamAPI_ISteamScreenshots_TagUser(IntPtr instancePtr, uint hScreenshot, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagPublishedFile")] +internal static extern bool SteamAPI_ISteamScreenshots_TagPublishedFile(IntPtr instancePtr, uint hScreenshot, ulong unPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_IsScreenshotsHooked")] +internal static extern bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(IntPtr instancePtr, uint eType, string pchFilename, string pchVRFilename); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled")] +internal static extern bool SteamAPI_ISteamMusic_BIsEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying")] +internal static extern bool SteamAPI_ISteamMusic_BIsPlaying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus")] +internal static extern int SteamAPI_ISteamMusic_GetPlaybackStatus(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Play")] +internal static extern void SteamAPI_ISteamMusic_Play(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Pause")] +internal static extern void SteamAPI_ISteamMusic_Pause(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious")] +internal static extern void SteamAPI_ISteamMusic_PlayPrevious(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayNext")] +internal static extern void SteamAPI_ISteamMusic_PlayNext(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_SetVolume")] +internal static extern void SteamAPI_ISteamMusic_SetVolume(IntPtr instancePtr, float flVolume); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetVolume")] +internal static extern float SteamAPI_ISteamMusic_GetVolume(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BActivationSuccess")] +internal static extern bool SteamAPI_ISteamMusicRemote_BActivationSuccess(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetDisplayName")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetDisplayName(IntPtr instancePtr, string pchDisplayName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayPrevious")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayNext")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayNext(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableQueue")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableQueue(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlaylists")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlaylists(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(IntPtr instancePtr, int nStatus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateVolume")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateVolume(IntPtr instancePtr, float flValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(IntPtr instancePtr, bool bAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(IntPtr instancePtr, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(IntPtr instancePtr, int nValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetQueueEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetQueueEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateHTTPRequest")] +internal static extern uint SteamAPI_ISteamHTTP_CreateHTTPRequest(IntPtr instancePtr, uint eHTTPRequestMethod, string pchAbsoluteURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(IntPtr instancePtr, uint hRequest, ulong ulContextValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(IntPtr instancePtr, uint hRequest, uint unTimeoutSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, string pchHeaderValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(IntPtr instancePtr, uint hRequest, string pchParamName, string pchParamValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequest(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_DeferHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_DeferHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(IntPtr instancePtr, uint hRequest, string pchHeaderName, ref uint unResponseHeaderSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, IntPtr pHeaderValueBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(IntPtr instancePtr, uint hRequest, ref uint unBodySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(IntPtr instancePtr, uint hRequest, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(IntPtr instancePtr, uint hRequest, uint cOffset, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(IntPtr instancePtr, uint hRequest, ref float pflPercentOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(IntPtr instancePtr, uint hRequest, string pchContentType, IntPtr pubBody, uint unBodyLen); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateCookieContainer")] +internal static extern uint SteamAPI_ISteamHTTP_CreateCookieContainer(IntPtr instancePtr, bool bAllowResponsesToModify); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(IntPtr instancePtr, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetCookie")] +internal static extern bool SteamAPI_ISteamHTTP_SetCookie(IntPtr instancePtr, uint hCookieContainer, string pchHost, string pchUrl, string pchCookie); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(IntPtr instancePtr, uint hRequest, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(IntPtr instancePtr, uint hRequest, string pchUserAgentInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(IntPtr instancePtr, uint hRequest, bool bRequireVerifiedCertificate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(IntPtr instancePtr, uint hRequest, uint unMilliseconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(IntPtr instancePtr, uint hRequest, ref bool pbWasTimedOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendMethod")] +internal static extern ulong SteamAPI_ISteamUnifiedMessages_SendMethod(IntPtr instancePtr, string pchServiceMethod, IntPtr pRequestBuffer, uint unRequestBufferSize, ulong unContext); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(IntPtr instancePtr, ulong hHandle, ref uint punResponseSize, ref uint peResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseData")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(IntPtr instancePtr, ulong hHandle, IntPtr pResponseBuffer, uint unResponseBufferSize, bool bAutoRelease); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_ReleaseMethod")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(IntPtr instancePtr, ulong hHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendNotification")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_SendNotification(IntPtr instancePtr, string pchServiceNotification, IntPtr pNotificationBuffer, uint unNotificationBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Init")] +internal static extern bool SteamAPI_ISteamController_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Shutdown")] +internal static extern bool SteamAPI_ISteamController_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_RunFrame")] +internal static extern void SteamAPI_ISteamController_RunFrame(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetConnectedControllers")] +internal static extern int SteamAPI_ISteamController_GetConnectedControllers(IntPtr instancePtr, ref ulong handlesOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowBindingPanel")] +internal static extern bool SteamAPI_ISteamController_ShowBindingPanel(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActionSetHandle")] +internal static extern ulong SteamAPI_ISteamController_GetActionSetHandle(IntPtr instancePtr, string pszActionSetName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ActivateActionSet")] +internal static extern void SteamAPI_ISteamController_ActivateActionSet(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetCurrentActionSet")] +internal static extern ulong SteamAPI_ISteamController_GetCurrentActionSet(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetDigitalActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionData")] +internal static extern ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong digitalActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetAnalogActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionData")] +internal static extern ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong analogActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_StopAnalogActionMomentum")] +internal static extern void SteamAPI_ISteamController_StopAnalogActionMomentum(IntPtr instancePtr, ulong controllerHandle, ulong eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerRepeatedHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec, char usOffMicroSec, char unRepeat, uint nFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGamepadIndexForController")] +internal static extern int SteamAPI_ISteamController_GetGamepadIndexForController(IntPtr instancePtr, ulong ulControllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetControllerForGamepadIndex")] +internal static extern ulong SteamAPI_ISteamController_GetControllerForGamepadIndex(IntPtr instancePtr, int nIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetMotionData")] +internal static extern ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowDigitalActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowAnalogActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(IntPtr instancePtr, uint unAccountID, uint eListType, uint eMatchingUGCType, uint eSortOrder, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(IntPtr instancePtr, uint eQueryType, uint eMatchingeMatchingUGCTypeFileType, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SendQueryUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_SendQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCResult")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCResult(IntPtr instancePtr, ulong handle, uint index, ref SteamUGCDetails_t pDetails); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchURL, uint cchURLSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCMetadata")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchMetadata, uint cchMetadatasize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCChildren")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCChildren(IntPtr instancePtr, ulong handle, uint index, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCStatistic")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(IntPtr instancePtr, ulong handle, uint index, uint eStatType, ref ulong pStatValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, System.Text.StringBuilder pchOriginalFileName, uint cchOriginalFileNameSize, ref uint pPreviewType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(IntPtr instancePtr, ulong handle, uint index, uint keyValueTagIndex, System.Text.StringBuilder pchKey, uint cchKeySize, System.Text.StringBuilder pchValue, uint cchValueSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest")] +internal static extern bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddExcludedTag")] +internal static extern bool SteamAPI_ISteamUGC_AddExcludedTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnOnlyIDs")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(IntPtr instancePtr, ulong handle, bool bReturnOnlyIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(IntPtr instancePtr, ulong handle, bool bReturnKeyValueTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnLongDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnLongDescription(IntPtr instancePtr, ulong handle, bool bReturnLongDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnMetadata(IntPtr instancePtr, ulong handle, bool bReturnMetadata); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnChildren")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnChildren(IntPtr instancePtr, ulong handle, bool bReturnChildren); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(IntPtr instancePtr, ulong handle, bool bReturnAdditionalPreviews); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnTotalOnly(IntPtr instancePtr, ulong handle, bool bReturnTotalOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse")] +internal static extern bool SteamAPI_ISteamUGC_SetAllowCachedResponse(IntPtr instancePtr, ulong handle, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter")] +internal static extern bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(IntPtr instancePtr, ulong handle, string pMatchCloudFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetMatchAnyTag")] +internal static extern bool SteamAPI_ISteamUGC_SetMatchAnyTag(IntPtr instancePtr, ulong handle, bool bMatchAnyTag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetSearchText")] +internal static extern bool SteamAPI_ISteamUGC_SetSearchText(IntPtr instancePtr, ulong handle, string pSearchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetRankedByTrendDays")] +internal static extern bool SteamAPI_ISteamUGC_SetRankedByTrendDays(IntPtr instancePtr, ulong handle, uint unDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(IntPtr instancePtr, ulong handle, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RequestUGCDetails")] +internal static extern ulong SteamAPI_ISteamUGC_RequestUGCDetails(IntPtr instancePtr, ulong nPublishedFileID, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateItem")] +internal static extern ulong SteamAPI_ISteamUGC_CreateItem(IntPtr instancePtr, uint nConsumerAppId, uint eFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_StartItemUpdate(IntPtr instancePtr, uint nConsumerAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTitle")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTitle(IntPtr instancePtr, ulong handle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetItemDescription(IntPtr instancePtr, ulong handle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemUpdateLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetItemMetadata(IntPtr instancePtr, ulong handle, string pchMetaData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemVisibility")] +internal static extern bool SteamAPI_ISteamUGC_SetItemVisibility(IntPtr instancePtr, ulong handle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTags")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemContent")] +internal static extern bool SteamAPI_ISteamUGC_SetItemContent(IntPtr instancePtr, ulong handle, string pszContentFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_SetItemPreview(IntPtr instancePtr, ulong handle, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(IntPtr instancePtr, ulong handle, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddItemKeyValueTag(IntPtr instancePtr, ulong handle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewFile(IntPtr instancePtr, ulong handle, string pszPreviewFile, uint type); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewVideo(IntPtr instancePtr, ulong handle, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(IntPtr instancePtr, ulong handle, uint index, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(IntPtr instancePtr, ulong handle, uint index, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemPreview(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, ulong handle, string pchChangeNote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress")] +internal static extern uint SteamAPI_ISteamUGC_GetItemUpdateProgress(IntPtr instancePtr, ulong handle, ref ulong punBytesProcessed, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_SetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_GetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemToFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_AddItemToFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemFromFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_RemoveItemFromFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_SubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UnsubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_UnsubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetNumSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetNumSubscribedItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetSubscribedItems(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemState")] +internal static extern uint SteamAPI_ISteamUGC_GetItemState(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemInstallInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemInstallInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punSizeOnDisk, System.Text.StringBuilder pchFolder, uint cchFolderSize, ref uint punTimeStamp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemDownloadInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemDownloadInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_DownloadItem")] +internal static extern bool SteamAPI_ISteamUGC_DownloadItem(IntPtr instancePtr, ulong nPublishedFileID, bool bHighPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_BInitWorkshopForGameServer")] +internal static extern bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(IntPtr instancePtr, uint unWorkshopDepotID, string pszFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SuspendDownloads")] +internal static extern void SteamAPI_ISteamUGC_SuspendDownloads(IntPtr instancePtr, bool bSuspend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StartPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetNumInstalledApps(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetInstalledApps(IntPtr instancePtr, ref uint pvecAppID, uint unMaxAppIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppName")] +internal static extern int SteamAPI_ISteamAppList_GetAppName(IntPtr instancePtr, uint nAppID, System.Text.StringBuilder pchName, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppInstallDir")] +internal static extern int SteamAPI_ISteamAppList_GetAppInstallDir(IntPtr instancePtr, uint nAppID, string pchDirectory, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppBuildId")] +internal static extern int SteamAPI_ISteamAppList_GetAppBuildId(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface")] +internal static extern void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Init")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Shutdown")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CreateBrowser")] +internal static extern ulong SteamAPI_ISteamHTMLSurface_CreateBrowser(IntPtr instancePtr, string pchUserAgent, string pchUserCSS); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_RemoveBrowser")] +internal static extern void SteamAPI_ISteamHTMLSurface_RemoveBrowser(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_LoadURL")] +internal static extern void SteamAPI_ISteamHTMLSurface_LoadURL(IntPtr instancePtr, uint unBrowserHandle, string pchURL, string pchPostData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetSize")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetSize(IntPtr instancePtr, uint unBrowserHandle, uint unWidth, uint unHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopLoad")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopLoad(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Reload")] +internal static extern void SteamAPI_ISteamHTMLSurface_Reload(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoBack")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoBack(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoForward")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoForward(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AddHeader")] +internal static extern void SteamAPI_ISteamHTMLSurface_AddHeader(IntPtr instancePtr, uint unBrowserHandle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ExecuteJavascript")] +internal static extern void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(IntPtr instancePtr, uint unBrowserHandle, string pchScript); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseUp(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDown(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDoubleClick")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseMove")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseMove(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseWheel")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseWheel(IntPtr instancePtr, uint unBrowserHandle, int nDelta); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyDown(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyUp(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyChar")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyChar(IntPtr instancePtr, uint unBrowserHandle, uint cUnicodeChar, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetVerticalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetKeyFocus")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetKeyFocus(IntPtr instancePtr, uint unBrowserHandle, bool bHasKeyFocus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ViewSource")] +internal static extern void SteamAPI_ISteamHTMLSurface_ViewSource(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CopyToClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_CopyToClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_PasteFromClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Find")] +internal static extern void SteamAPI_ISteamHTMLSurface_Find(IntPtr instancePtr, uint unBrowserHandle, string pchSearchStr, bool bCurrentlyInFind, bool bReverse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopFind")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopFind(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition")] +internal static extern void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetCookie")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetCookie(IntPtr instancePtr, string pchHostname, string pchKey, string pchValue, string pchPath, ulong nExpires, bool bSecure, bool bHTTPOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(IntPtr instancePtr, uint unBrowserHandle, float flZoom, int nPointX, int nPointY); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetBackgroundMode")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(IntPtr instancePtr, uint unBrowserHandle, bool bBackgroundMode); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AllowStartRequest")] +internal static extern void SteamAPI_ISteamHTMLSurface_AllowStartRequest(IntPtr instancePtr, uint unBrowserHandle, bool bAllowed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_JSDialogResponse")] +internal static extern void SteamAPI_ISteamHTMLSurface_JSDialogResponse(IntPtr instancePtr, uint unBrowserHandle, bool bResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus")] +internal static extern uint SteamAPI_ISteamInventory_GetResultStatus(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItems")] +internal static extern bool SteamAPI_ISteamInventory_GetResultItems(IntPtr instancePtr, int resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp")] +internal static extern uint SteamAPI_ISteamInventory_GetResultTimestamp(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID")] +internal static extern bool SteamAPI_ISteamInventory_CheckResultSteamID(IntPtr instancePtr, int resultHandle, ulong steamIDExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DestroyResult")] +internal static extern void SteamAPI_ISteamInventory_DestroyResult(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetAllItems")] +internal static extern bool SteamAPI_ISteamInventory_GetAllItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemsByID")] +internal static extern bool SteamAPI_ISteamInventory_GetItemsByID(IntPtr instancePtr, ref int pResultHandle, [In, Out] ulong[] pInstanceIDs, uint unCountInstanceIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SerializeResult")] +internal static extern bool SteamAPI_ISteamInventory_SerializeResult(IntPtr instancePtr, int resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DeserializeResult")] +internal static extern bool SteamAPI_ISteamInventory_DeserializeResult(IntPtr instancePtr, ref int pOutResultHandle, IntPtr pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GenerateItems")] +internal static extern bool SteamAPI_ISteamInventory_GenerateItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GrantPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_GrantPromoItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItem")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItem(IntPtr instancePtr, ref int pResultHandle, int itemDef); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ConsumeItem")] +internal static extern bool SteamAPI_ISteamInventory_ConsumeItem(IntPtr instancePtr, ref int pResultHandle, ulong itemConsume, uint unQuantity); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ExchangeItems")] +internal static extern bool SteamAPI_ISteamInventory_ExchangeItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] ulong[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TransferItemQuantity")] +internal static extern bool SteamAPI_ISteamInventory_TransferItemQuantity(IntPtr instancePtr, ref int pResultHandle, ulong itemIdSource, uint unQuantity, ulong itemIdDest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SendItemDropHeartbeat")] +internal static extern void SteamAPI_ISteamInventory_SendItemDropHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TriggerItemDrop")] +internal static extern bool SteamAPI_ISteamInventory_TriggerItemDrop(IntPtr instancePtr, ref int pResultHandle, int dropListDefinition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TradeItems")] +internal static extern bool SteamAPI_ISteamInventory_TradeItems(IntPtr instancePtr, ref int pResultHandle, ulong steamIDTradePartner, [In, Out] ulong[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] ulong[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_LoadItemDefinitions")] +internal static extern bool SteamAPI_ISteamInventory_LoadItemDefinitions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionIDs")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(IntPtr instancePtr, [In, Out] int[] pItemDefIDs, ref uint punItemDefIDsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionProperty")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(IntPtr instancePtr, int iDefinition, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL")] +internal static extern void SteamAPI_ISteamVideo_GetVideoURL(IntPtr instancePtr, uint unVideoAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting")] +internal static extern bool SteamAPI_ISteamVideo_IsBroadcasting(IntPtr instancePtr, ref int pnNumViewers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_InitGameServer")] +internal static extern bool SteamAPI_ISteamGameServer_InitGameServer(IntPtr instancePtr, uint unIP, char usGamePort, char usQueryPort, uint unFlags, uint nGameAppId, string pchVersionString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetProduct")] +internal static extern void SteamAPI_ISteamGameServer_SetProduct(IntPtr instancePtr, string pszProduct); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameDescription")] +internal static extern void SteamAPI_ISteamGameServer_SetGameDescription(IntPtr instancePtr, string pszGameDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetModDir")] +internal static extern void SteamAPI_ISteamGameServer_SetModDir(IntPtr instancePtr, string pszModDir); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetDedicatedServer")] +internal static extern void SteamAPI_ISteamGameServer_SetDedicatedServer(IntPtr instancePtr, bool bDedicated); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOn")] +internal static extern void SteamAPI_ISteamGameServer_LogOn(IntPtr instancePtr, string pszToken); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOnAnonymous")] +internal static extern void SteamAPI_ISteamGameServer_LogOnAnonymous(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOff")] +internal static extern void SteamAPI_ISteamGameServer_LogOff(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BLoggedOn")] +internal static extern bool SteamAPI_ISteamGameServer_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BSecure")] +internal static extern bool SteamAPI_ISteamGameServer_BSecure(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetSteamID")] +internal static extern ulong SteamAPI_ISteamGameServer_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_WasRestartRequested")] +internal static extern bool SteamAPI_ISteamGameServer_WasRestartRequested(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMaxPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetMaxPlayerCount(IntPtr instancePtr, int cPlayersMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetBotPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetBotPlayerCount(IntPtr instancePtr, int cBotplayers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetServerName(IntPtr instancePtr, string pszServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMapName")] +internal static extern void SteamAPI_ISteamGameServer_SetMapName(IntPtr instancePtr, string pszMapName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetPasswordProtected")] +internal static extern void SteamAPI_ISteamGameServer_SetPasswordProtected(IntPtr instancePtr, bool bPasswordProtected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorPort")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorPort(IntPtr instancePtr, char unSpectatorPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorServerName(IntPtr instancePtr, string pszSpectatorServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ClearAllKeyValues")] +internal static extern void SteamAPI_ISteamGameServer_ClearAllKeyValues(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetKeyValue")] +internal static extern void SteamAPI_ISteamGameServer_SetKeyValue(IntPtr instancePtr, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameTags")] +internal static extern void SteamAPI_ISteamGameServer_SetGameTags(IntPtr instancePtr, string pchGameTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameData")] +internal static extern void SteamAPI_ISteamGameServer_SetGameData(IntPtr instancePtr, string pchGameData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetRegion")] +internal static extern void SteamAPI_ISteamGameServer_SetRegion(IntPtr instancePtr, string pszRegion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate")] +internal static extern bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(IntPtr instancePtr, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref CSteamID pSteamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection")] +internal static extern ulong SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect")] +internal static extern void SteamAPI_ISteamGameServer_SendUserDisconnect(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData")] +internal static extern bool SteamAPI_ISteamGameServer_BUpdateUserData(IntPtr instancePtr, ulong steamIDUser, string pchPlayerName, uint uScore); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamGameServer_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EndAuthSession")] +internal static extern void SteamAPI_ISteamGameServer_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamGameServer_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamGameServer_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_RequestUserGroupStatus")] +internal static extern bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(IntPtr instancePtr, ulong steamIDUser, ulong steamIDGroup); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetGameplayStats")] +internal static extern void SteamAPI_ISteamGameServer_GetGameplayStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetServerReputation")] +internal static extern ulong SteamAPI_ISteamGameServer_GetServerReputation(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetPublicIP")] +internal static extern uint SteamAPI_ISteamGameServer_GetPublicIP(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_HandleIncomingPacket")] +internal static extern bool SteamAPI_ISteamGameServer_HandleIncomingPacket(IntPtr instancePtr, IntPtr pData, int cbData, uint srcIP, char srcPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket")] +internal static extern int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(IntPtr instancePtr, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref char pPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EnableHeartbeats")] +internal static extern void SteamAPI_ISteamGameServer_EnableHeartbeats(IntPtr instancePtr, bool bActive); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetHeartbeatInterval")] +internal static extern void SteamAPI_ISteamGameServer_SetHeartbeatInterval(IntPtr instancePtr, int iHeartbeatInterval); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ForceHeartbeat")] +internal static extern void SteamAPI_ISteamGameServer_ForceHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan")] +internal static extern ulong SteamAPI_ISteamGameServer_AssociateWithClan(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility")] +internal static extern ulong SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(IntPtr instancePtr, ulong steamIDNewPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(IntPtr instancePtr, ulong steamIDUser, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_ClearUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_StoreUserStats(IntPtr instancePtr, ulong steamIDUser); +public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t pUserStatsReceived_t); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallback")] +public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallback")] +public static extern ulong CUserStatsReceived_t_RemoveCallback(ulong handle); +public delegate void SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult(RemoteStorageFileReadAsyncComplete_t pRemoteStorageFileReadAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult(RemoteStorageGetPublishedItemVoteDetailsResult_t pRemoteStorageGetPublishedItemVoteDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FileDetailsResult_t_CallResult(FileDetailsResult_t pFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_SetCallResult")] +public static extern ulong CFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_FileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsStored_t_CallResult(GSStatsStored_t pGSStatsStored_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_SetCallResult")] +public static extern ulong CGSStatsStored_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsStored_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_RemoveCallResult")] +public static extern ulong CGSStatsStored_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_HTML_BrowserReady_t_CallResult(HTML_BrowserReady_t pHTML_BrowserReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_SetCallResult")] +public static extern ulong CHTML_BrowserReady_t_SetCallResult(ulong hAPICall, SteamAPI_HTML_BrowserReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_RemoveCallResult")] +public static extern ulong CHTML_BrowserReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsGetFollowerCount_t_CallResult(FriendsGetFollowerCount_t pFriendsGetFollowerCount_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_SetCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsGetFollowerCount_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_RemoveCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsIsFollowing_t_CallResult(FriendsIsFollowing_t pFriendsIsFollowing_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_SetCallResult")] +public static extern ulong CFriendsIsFollowing_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsIsFollowing_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_RemoveCallResult")] +public static extern ulong CFriendsIsFollowing_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyMatchList_t_CallResult(LobbyMatchList_t pLobbyMatchList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_SetCallResult")] +public static extern ulong CLobbyMatchList_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyMatchList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_RemoveCallResult")] +public static extern ulong CLobbyMatchList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult(RemoteStorageUpdatePublishedFileResult_t pRemoteStorageUpdatePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_StoreAuthURLResponse_t_CallResult(StoreAuthURLResponse_t pStoreAuthURLResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_SetCallResult")] +public static extern ulong CStoreAuthURLResponse_t_SetCallResult(ulong hAPICall, SteamAPI_StoreAuthURLResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_RemoveCallResult")] +public static extern ulong CStoreAuthURLResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyCreated_t_CallResult(LobbyCreated_t pLobbyCreated_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_SetCallResult")] +public static extern ulong CLobbyCreated_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyCreated_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_RemoveCallResult")] +public static extern ulong CLobbyCreated_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult(RemoteStorageFileWriteAsyncComplete_t pRemoteStorageFileWriteAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult(RemoteStorageDeletePublishedFileResult_t pRemoteStorageDeletePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult(RemoteStorageGetPublishedFileDetailsResult_t pRemoteStorageGetPublishedFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult(RemoteStorageDownloadUGCResult_t pRemoteStorageDownloadUGCResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SteamUGCQueryCompleted_t_CallResult(SteamUGCQueryCompleted_t pSteamUGCQueryCompleted_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_SetCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_SetCallResult(ulong hAPICall, SteamAPI_SteamUGCQueryCompleted_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_RemoveCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileShareResult_t_CallResult(RemoteStorageFileShareResult_t pRemoteStorageFileShareResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_SetCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileShareResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyEnter_t_CallResult(LobbyEnter_t pLobbyEnter_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_SetCallResult")] +public static extern ulong CLobbyEnter_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyEnter_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_RemoveCallResult")] +public static extern ulong CLobbyEnter_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SubmitItemUpdateResult_t_CallResult(SubmitItemUpdateResult_t pSubmitItemUpdateResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_SetCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_SetCallResult(ulong hAPICall, SteamAPI_SubmitItemUpdateResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_RemoveCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_NumberOfCurrentPlayers_t_CallResult(NumberOfCurrentPlayers_t pNumberOfCurrentPlayers_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_SetCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_SetCallResult(ulong hAPICall, SteamAPI_NumberOfCurrentPlayers_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_RemoveCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsReceived_t_CallResult(GSStatsReceived_t pGSStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_SetCallResult")] +public static extern ulong CGSStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_RemoveCallResult")] +public static extern ulong CGSStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoresDownloaded_t_CallResult(LeaderboardScoresDownloaded_t pLeaderboardScoresDownloaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoresDownloaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult(RemoteStorageUpdateUserPublishedItemVoteResult_t pRemoteStorageUpdateUserPublishedItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult(RemoteStorageEnumerateUserSubscribedFilesResult_t pRemoteStorageEnumerateUserSubscribedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CreateItemResult_t_CallResult(CreateItemResult_t pCreateItemResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_SetCallResult")] +public static extern ulong CCreateItemResult_t_SetCallResult(ulong hAPICall, SteamAPI_CreateItemResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_RemoveCallResult")] +public static extern ulong CCreateItemResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetUserItemVoteResult_t_CallResult(SetUserItemVoteResult_t pSetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CSetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_SetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CSetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult(ComputeNewPlayerCompatibilityResult_t pComputeNewPlayerCompatibilityResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_SetCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_SetCallResult(ulong hAPICall, SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_RemoveCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoreUploaded_t_CallResult(LeaderboardScoreUploaded_t pLeaderboardScoreUploaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoreUploaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalAchievementPercentagesReady_t_CallResult(GlobalAchievementPercentagesReady_t pGlobalAchievementPercentagesReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_SetCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_RemoveCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalStatsReceived_t_CallResult(GlobalStatsReceived_t pGlobalStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_SetCallResult")] +public static extern ulong CGlobalStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_RemoveCallResult")] +public static extern ulong CGlobalStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult(RemoteStorageEnumeratePublishedFilesByUserActionResult_t pRemoteStorageEnumeratePublishedFilesByUserActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ClanOfficerListResponse_t_CallResult(ClanOfficerListResponse_t pClanOfficerListResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_SetCallResult")] +public static extern ulong CClanOfficerListResponse_t_SetCallResult(ulong hAPICall, SteamAPI_ClanOfficerListResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_RemoveCallResult")] +public static extern ulong CClanOfficerListResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStoragePublishFileProgress_t_CallResult(RemoteStoragePublishFileProgress_t pRemoteStoragePublishFileProgress_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_SetCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_RemoveCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult(RemoteStorageEnumerateWorkshopFilesResult_t pRemoteStorageEnumerateWorkshopFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSReputation_t_CallResult(GSReputation_t pGSReputation_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_SetCallResult")] +public static extern ulong CGSReputation_t_SetCallResult(ulong hAPICall, SteamAPI_GSReputation_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_RemoveCallResult")] +public static extern ulong CGSReputation_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserFavoriteItemsListChanged_t_CallResult(UserFavoriteItemsListChanged_t pUserFavoriteItemsListChanged_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_SetCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_SetCallResult(ulong hAPICall, SteamAPI_UserFavoriteItemsListChanged_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_RemoveCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_EncryptedAppTicketResponse_t_CallResult(EncryptedAppTicketResponse_t pEncryptedAppTicketResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_SetCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_SetCallResult(ulong hAPICall, SteamAPI_EncryptedAppTicketResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_RemoveCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult(RemoteStorageSetUserPublishedFileActionResult_t pRemoteStorageSetUserPublishedFileActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult(RemoteStorageEnumerateUserPublishedFilesResult_t pRemoteStorageEnumerateUserPublishedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsEnumerateFollowingList_t_CallResult(FriendsEnumerateFollowingList_t pFriendsEnumerateFollowingList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_SetCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsEnumerateFollowingList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_RemoveCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult(RemoteStorageSubscribePublishedFileResult_t pRemoteStorageSubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GetUserItemVoteResult_t_CallResult(GetUserItemVoteResult_t pGetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CGetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_GetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CGetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_AssociateWithClanResult_t_CallResult(AssociateWithClanResult_t pAssociateWithClanResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_SetCallResult")] +public static extern ulong CAssociateWithClanResult_t_SetCallResult(ulong hAPICall, SteamAPI_AssociateWithClanResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_RemoveCallResult")] +public static extern ulong CAssociateWithClanResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardUGCSet_t_CallResult(LeaderboardUGCSet_t pLeaderboardUGCSet_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_SetCallResult")] +public static extern ulong CLeaderboardUGCSet_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardUGCSet_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_RemoveCallResult")] +public static extern ulong CLeaderboardUGCSet_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CheckFileSignature_t_CallResult(CheckFileSignature_t pCheckFileSignature_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_SetCallResult")] +public static extern ulong CCheckFileSignature_t_SetCallResult(ulong hAPICall, SteamAPI_CheckFileSignature_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_RemoveCallResult")] +public static extern ulong CCheckFileSignature_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult(RemoteStorageUnsubscribePublishedFileResult_t pRemoteStorageUnsubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetPersonaNameResponse_t_CallResult(SetPersonaNameResponse_t pSetPersonaNameResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_SetCallResult")] +public static extern ulong CSetPersonaNameResponse_t_SetCallResult(ulong hAPICall, SteamAPI_SetPersonaNameResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_RemoveCallResult")] +public static extern ulong CSetPersonaNameResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserStatsReceived_t_CallResult(UserStatsReceived_t pUserStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallResult")] +public static extern ulong CUserStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_UserStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallResult")] +public static extern ulong CUserStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult(JoinClanChatRoomCompletionResult_t pJoinClanChatRoomCompletionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_SetCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_SetCallResult(ulong hAPICall, SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_RemoveCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardFindResult_t_CallResult(LeaderboardFindResult_t pLeaderboardFindResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_SetCallResult")] +public static extern ulong CLeaderboardFindResult_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardFindResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_RemoveCallResult")] +public static extern ulong CLeaderboardFindResult_t_RemoveCallResult(ulong handle); + +} + +} + +namespace Valve.Steamworks +{ + + public abstract class ISteamClient + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateSteamPipe(); + public abstract bool BReleaseSteamPipe(uint hSteamPipe); + public abstract uint ConnectToGlobalUser(uint hSteamPipe); + public abstract uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType); + public abstract void ReleaseUser(uint hSteamPipe,uint hUser); + public abstract ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract void SetLocalIPBinding(uint unIP,char usPort); + public abstract ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool BShutdownIfAllPipesClosed(); + public abstract ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion); + } + + + public abstract class ISteamUser + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetHSteamUser(); + public abstract bool BLoggedOn(); + public abstract ulong GetSteamID(); + public abstract int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure); + public abstract void TerminateGameConnection(uint unIPServer,char usPortServer); + public abstract void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo); + public abstract bool GetUserDataFolder(string pchBuffer,int cubBuffer); + public abstract void StartVoiceRecording(); + public abstract void StopVoiceRecording(); + public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate); + public abstract uint GetVoiceOptimalSampleRate(); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool BIsBehindNAT(); + public abstract void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer); + public abstract ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude); + public abstract bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract int GetGameBadgeLevel(int nSeries,bool bFoil); + public abstract int GetPlayerSteamLevel(); + public abstract ulong RequestStoreAuthURL(string pchRedirectURL); + public abstract bool BIsPhoneVerified(); + public abstract bool BIsTwoFactorEnabled(); + public abstract bool BIsPhoneIdentifying(); + public abstract bool BIsPhoneRequiringVerification(); + } + + + public abstract class ISteamFriends + { + public abstract IntPtr GetIntPtr(); + public abstract string GetPersonaName(); + public abstract ulong SetPersonaName(string pchPersonaName); + public abstract uint GetPersonaState(); + public abstract int GetFriendCount(int iFriendFlags); + public abstract ulong GetFriendByIndex(int iFriend,int iFriendFlags); + public abstract uint GetFriendRelationship(ulong steamIDFriend); + public abstract uint GetFriendPersonaState(ulong steamIDFriend); + public abstract string GetFriendPersonaName(ulong steamIDFriend); + public abstract bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo); + public abstract string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName); + public abstract int GetFriendSteamLevel(ulong steamIDFriend); + public abstract string GetPlayerNickname(ulong steamIDPlayer); + public abstract int GetFriendsGroupCount(); + public abstract char GetFriendsGroupIDByIndex(int iFG); + public abstract string GetFriendsGroupName(char friendsGroupID); + public abstract int GetFriendsGroupMembersCount(char friendsGroupID); + public abstract void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers); + public abstract bool HasFriend(ulong steamIDFriend,int iFriendFlags); + public abstract int GetClanCount(); + public abstract ulong GetClanByIndex(int iClan); + public abstract string GetClanName(ulong steamIDClan); + public abstract string GetClanTag(ulong steamIDClan); + public abstract bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting); + public abstract ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans); + public abstract int GetFriendCountFromSource(ulong steamIDSource); + public abstract ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend); + public abstract bool IsUserInSource(ulong steamIDUser,ulong steamIDSource); + public abstract void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking); + public abstract void ActivateGameOverlay(string pchDialog); + public abstract void ActivateGameOverlayToUser(string pchDialog,ulong steamID); + public abstract void ActivateGameOverlayToWebPage(string pchURL); + public abstract void ActivateGameOverlayToStore(uint nAppID,char eFlag); + public abstract void SetPlayedWith(ulong steamIDUserPlayedWith); + public abstract void ActivateGameOverlayInviteDialog(ulong steamIDLobby); + public abstract int GetSmallFriendAvatar(ulong steamIDFriend); + public abstract int GetMediumFriendAvatar(ulong steamIDFriend); + public abstract int GetLargeFriendAvatar(ulong steamIDFriend); + public abstract bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly); + public abstract ulong RequestClanOfficerList(ulong steamIDClan); + public abstract ulong GetClanOwner(ulong steamIDClan); + public abstract int GetClanOfficerCount(ulong steamIDClan); + public abstract ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer); + public abstract uint GetUserRestrictions(); + public abstract bool SetRichPresence(string pchKey,string pchValue); + public abstract void ClearRichPresence(); + public abstract string GetFriendRichPresence(ulong steamIDFriend,string pchKey); + public abstract int GetFriendRichPresenceKeyCount(ulong steamIDFriend); + public abstract string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey); + public abstract void RequestFriendRichPresence(ulong steamIDFriend); + public abstract bool InviteUserToGame(ulong steamIDFriend,string pchConnectString); + public abstract int GetCoplayFriendCount(); + public abstract ulong GetCoplayFriend(int iCoplayFriend); + public abstract int GetFriendCoplayTime(ulong steamIDFriend); + public abstract uint GetFriendCoplayGame(ulong steamIDFriend); + public abstract ulong JoinClanChatRoom(ulong steamIDClan); + public abstract bool LeaveClanChatRoom(ulong steamIDClan); + public abstract int GetClanChatMemberCount(ulong steamIDClan); + public abstract ulong GetChatMemberByIndex(ulong steamIDClan,int iUser); + public abstract bool SendClanChatMessage(ulong steamIDClanChat,string pchText); + public abstract int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter); + public abstract bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser); + public abstract bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat); + public abstract bool OpenClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool CloseClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool SetListenForFriendsMessages(bool bInterceptEnabled); + public abstract bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend); + public abstract int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract ulong GetFollowerCount(ulong steamID); + public abstract ulong IsFollowing(ulong steamID); + public abstract ulong EnumerateFollowingList(uint unStartIndex); + } + + + public abstract class ISteamUtils + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetSecondsSinceAppActive(); + public abstract uint GetSecondsSinceComputerActive(); + public abstract int GetConnectedUniverse(); + public abstract uint GetServerRealTime(); + public abstract string GetIPCountry(); + public abstract bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight); + public abstract bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize); + public abstract bool GetCSERIPPort(ref uint unIP,ref char usPort); + public abstract byte GetCurrentBatteryPower(); + public abstract uint GetAppID(); + public abstract void SetOverlayNotificationPosition(uint eNotificationPosition); + public abstract bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed); + public abstract int GetAPICallFailureReason(ulong hSteamAPICall); + public abstract bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool IsOverlayEnabled(); + public abstract bool BOverlayNeedsPresent(); + public abstract ulong CheckFileSignature(string szFileName); + public abstract bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText); + public abstract uint GetEnteredGamepadTextLength(); + public abstract bool GetEnteredGamepadTextInput(string pchText,uint cchText); + public abstract string GetSteamUILanguage(); + public abstract bool IsSteamRunningInVR(); + public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); + public abstract bool IsSteamInBigPictureMode(); + public abstract void StartVRDashboard(); + } + + + public abstract class ISteamMatchmaking + { + public abstract IntPtr GetIntPtr(); + public abstract int GetFavoriteGameCount(); + public abstract bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer); + public abstract int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer); + public abstract bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags); + public abstract ulong RequestLobbyList(); + public abstract void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo); + public abstract void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); + public abstract void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter); + public abstract void AddRequestLobbyListResultCountFilter(int cMaxResults); + public abstract void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby); + public abstract ulong GetLobbyByIndex(int iLobby); + public abstract ulong CreateLobby(uint eLobbyType,int cMaxMembers); + public abstract ulong JoinLobby(ulong steamIDLobby); + public abstract void LeaveLobby(ulong steamIDLobby); + public abstract bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee); + public abstract int GetNumLobbyMembers(ulong steamIDLobby); + public abstract ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember); + public abstract string GetLobbyData(ulong steamIDLobby,string pchKey); + public abstract bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract int GetLobbyDataCount(ulong steamIDLobby); + public abstract bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize); + public abstract bool DeleteLobbyData(ulong steamIDLobby,string pchKey); + public abstract string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey); + public abstract void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody); + public abstract int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract bool RequestLobbyData(ulong steamIDLobby); + public abstract void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer); + public abstract bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer); + public abstract bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers); + public abstract int GetLobbyMemberLimit(ulong steamIDLobby); + public abstract bool SetLobbyType(ulong steamIDLobby,uint eLobbyType); + public abstract bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable); + public abstract ulong GetLobbyOwner(ulong steamIDLobby); + public abstract bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner); + public abstract bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent); + } + + + public abstract class ISteamMatchmakingServerListResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(uint hRequest,int iServer); + public abstract void ServerFailedToRespond(uint hRequest,int iServer); + public abstract void RefreshComplete(uint hRequest,uint response); + } + + + public abstract class ISteamMatchmakingPingResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(IntPtr server); + public abstract void ServerFailedToRespond(); + } + + + public abstract class ISteamMatchmakingPlayersResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void AddPlayerToList(string pchName,int nScore,float flTimePlayed); + public abstract void PlayersFailedToRespond(); + public abstract void PlayersRefreshComplete(); + } + + + public abstract class ISteamMatchmakingRulesResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void RulesResponded(string pchRule,string pchValue); + public abstract void RulesFailedToRespond(); + public abstract void RulesRefreshComplete(); + } + + + public abstract class ISteamMatchmakingServers + { + public abstract IntPtr GetIntPtr(); + public abstract uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract void ReleaseRequest(uint hServerListRequest); + public abstract gameserveritem_t GetServerDetails(uint hRequest,int iServer); + public abstract void CancelQuery(uint hRequest); + public abstract void RefreshQuery(uint hRequest); + public abstract bool IsRefreshing(uint hRequest); + public abstract int GetServerCount(uint hRequest); + public abstract void RefreshServer(uint hRequest,int iServer); + public abstract uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse); + public abstract uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse); + public abstract uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse); + public abstract void CancelServerQuery(uint hServerQuery); + } + + + public abstract class ISteamRemoteStorage + { + public abstract IntPtr GetIntPtr(); + public abstract bool FileWrite(string pchFile,IntPtr pvData,int cubData); + public abstract int FileRead(string pchFile,IntPtr pvData,int cubDataToRead); + public abstract ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData); + public abstract ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead); + public abstract bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead); + public abstract bool FileForget(string pchFile); + public abstract bool FileDelete(string pchFile); + public abstract ulong FileShare(string pchFile); + public abstract bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform); + public abstract ulong FileWriteStreamOpen(string pchFile); + public abstract bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData); + public abstract bool FileWriteStreamClose(ulong writeHandle); + public abstract bool FileWriteStreamCancel(ulong writeHandle); + public abstract bool FileExists(string pchFile); + public abstract bool FilePersisted(string pchFile); + public abstract int GetFileSize(string pchFile); + public abstract long GetFileTimestamp(string pchFile); + public abstract uint GetSyncPlatforms(string pchFile); + public abstract int GetFileCount(); + public abstract string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes); + public abstract bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes); + public abstract bool IsCloudEnabledForAccount(); + public abstract bool IsCloudEnabledForApp(); + public abstract void SetCloudEnabledForApp(bool bEnabled); + public abstract ulong UGCDownload(ulong hContent,uint unPriority); + public abstract bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected); + public abstract bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner); + public abstract int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction); + public abstract int GetCachedUGCCount(); + public abstract ulong GetCachedUGCHandle(int iCachedContent); + public abstract ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType); + public abstract ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileFile(ulong updateHandle,string pchFile); + public abstract bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile); + public abstract bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle); + public abstract bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription); + public abstract bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility); + public abstract bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract ulong CommitPublishedFileUpdate(ulong updateHandle); + public abstract ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld); + public abstract ulong DeletePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserPublishedFiles(uint unStartIndex); + public abstract ulong SubscribePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserSubscribedFiles(uint unStartIndex); + public abstract ulong UnsubscribePublishedFile(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription); + public abstract ulong GetPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp); + public abstract ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags); + public abstract ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags); + public abstract ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction); + public abstract ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex); + public abstract ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags); + public abstract ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority); + } + + + public abstract class ISteamUserStats + { + public abstract IntPtr GetIntPtr(); + public abstract bool RequestCurrentStats(); + public abstract bool GetStat(string pchName,ref int pData); + public abstract bool GetStat0(string pchName,ref float pData); + public abstract bool SetStat(string pchName,int nData); + public abstract bool SetStat0(string pchName,float fData); + public abstract bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength); + public abstract bool GetAchievement(string pchName,ref bool pbAchieved); + public abstract bool SetAchievement(string pchName); + public abstract bool ClearAchievement(string pchName); + public abstract bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool StoreStats(); + public abstract int GetAchievementIcon(string pchName); + public abstract string GetAchievementDisplayAttribute(string pchName,string pchKey); + public abstract bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress); + public abstract uint GetNumAchievements(); + public abstract string GetAchievementName(uint iAchievement); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool ResetAllStats(bool bAchievementsToo); + public abstract ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType); + public abstract ulong FindLeaderboard(string pchLeaderboardName); + public abstract string GetLeaderboardName(ulong hSteamLeaderboard); + public abstract int GetLeaderboardEntryCount(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardSortMethod(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardDisplayType(ulong hSteamLeaderboard); + public abstract ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd); + public abstract ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers); + public abstract bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax); + public abstract ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount); + public abstract ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC); + public abstract ulong GetNumberOfCurrentPlayers(); + public abstract ulong RequestGlobalAchievementPercentages(); + public abstract int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract bool GetAchievementAchievedPercent(string pchName,ref float pflPercent); + public abstract ulong RequestGlobalStats(int nHistoryDays); + public abstract bool GetGlobalStat(string pchStatName,ref long pData); + public abstract bool GetGlobalStat0(string pchStatName,ref double pData); + public abstract int GetGlobalStatHistory(string pchStatName,long [] pData); + public abstract int GetGlobalStatHistory0(string pchStatName,double [] pData); + } + + + public abstract class ISteamApps + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsSubscribed(); + public abstract bool BIsLowViolence(); + public abstract bool BIsCybercafe(); + public abstract bool BIsVACBanned(); + public abstract string GetCurrentGameLanguage(); + public abstract string GetAvailableGameLanguages(); + public abstract bool BIsSubscribedApp(uint appID); + public abstract bool BIsDlcInstalled(uint appID); + public abstract uint GetEarliestPurchaseUnixTime(uint nAppID); + public abstract bool BIsSubscribedFromFreeWeekend(); + public abstract int GetDLCCount(); + public abstract bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize); + public abstract void InstallDLC(uint nAppID); + public abstract void UninstallDLC(uint nAppID); + public abstract void RequestAppProofOfPurchaseKey(uint nAppID); + public abstract bool GetCurrentBetaName(string pchName,int cchNameBufferSize); + public abstract bool MarkContentCorrupt(bool bMissingFilesOnly); + public abstract uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots); + public abstract uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize); + public abstract bool BIsAppInstalled(uint appID); + public abstract ulong GetAppOwner(); + public abstract string GetLaunchQueryParam(string pchKey); + public abstract bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract int GetAppBuildId(); + public abstract void RequestAllProofOfPurchaseKeys(); + public abstract ulong GetFileDetails(string pszFileName); + } + + + public abstract class ISteamNetworking + { + public abstract IntPtr GetIntPtr(); + public abstract bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel); + public abstract bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel); + public abstract bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel); + public abstract bool AcceptP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel); + public abstract bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState); + public abstract bool AllowP2PPacketRelay(bool bAllow); + public abstract uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay); + public abstract uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay); + public abstract uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec); + public abstract bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable); + public abstract bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize); + public abstract bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize); + public abstract bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote); + public abstract bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort); + public abstract uint GetSocketConnectionType(uint hSocket); + public abstract int GetMaxPacketSize(uint hSocket); + } + + + public abstract class ISteamScreenshots + { + public abstract IntPtr GetIntPtr(); + public abstract uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight); + public abstract uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight); + public abstract void TriggerScreenshot(); + public abstract void HookScreenshots(bool bHook); + public abstract bool SetLocation(uint hScreenshot,string pchLocation); + public abstract bool TagUser(uint hScreenshot,ulong steamID); + public abstract bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID); + public abstract bool IsScreenshotsHooked(); + public abstract uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename); + } + + + public abstract class ISteamMusic + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsEnabled(); + public abstract bool BIsPlaying(); + public abstract int GetPlaybackStatus(); + public abstract void Play(); + public abstract void Pause(); + public abstract void PlayPrevious(); + public abstract void PlayNext(); + public abstract void SetVolume(float flVolume); + public abstract float GetVolume(); + } + + + public abstract class ISteamMusicRemote + { + public abstract IntPtr GetIntPtr(); + public abstract bool RegisterSteamMusicRemote(string pchName); + public abstract bool DeregisterSteamMusicRemote(); + public abstract bool BIsCurrentMusicRemote(); + public abstract bool BActivationSuccess(bool bValue); + public abstract bool SetDisplayName(string pchDisplayName); + public abstract bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool EnablePlayPrevious(bool bValue); + public abstract bool EnablePlayNext(bool bValue); + public abstract bool EnableShuffled(bool bValue); + public abstract bool EnableLooped(bool bValue); + public abstract bool EnableQueue(bool bValue); + public abstract bool EnablePlaylists(bool bValue); + public abstract bool UpdatePlaybackStatus(int nStatus); + public abstract bool UpdateShuffled(bool bValue); + public abstract bool UpdateLooped(bool bValue); + public abstract bool UpdateVolume(float flValue); + public abstract bool CurrentEntryWillChange(); + public abstract bool CurrentEntryIsAvailable(bool bAvailable); + public abstract bool UpdateCurrentEntryText(string pchText); + public abstract bool UpdateCurrentEntryElapsedSeconds(int nValue); + public abstract bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool CurrentEntryDidChange(); + public abstract bool QueueWillChange(); + public abstract bool ResetQueueEntries(); + public abstract bool SetQueueEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentQueueEntry(int nID); + public abstract bool QueueDidChange(); + public abstract bool PlaylistWillChange(); + public abstract bool ResetPlaylistEntries(); + public abstract bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentPlaylistEntry(int nID); + public abstract bool PlaylistDidChange(); + } + + + public abstract class ISteamHTTP + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL); + public abstract bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue); + public abstract bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds); + public abstract bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue); + public abstract bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue); + public abstract bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle); + public abstract bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle); + public abstract bool DeferHTTPRequest(uint hRequest); + public abstract bool PrioritizeHTTPRequest(uint hRequest); + public abstract bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize); + public abstract bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize); + public abstract bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize); + public abstract bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool ReleaseHTTPRequest(uint hRequest); + public abstract bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut); + public abstract bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen); + public abstract uint CreateCookieContainer(bool bAllowResponsesToModify); + public abstract bool ReleaseCookieContainer(uint hCookieContainer); + public abstract bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie); + public abstract bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer); + public abstract bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo); + public abstract bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate); + public abstract bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds); + public abstract bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut); + } + + + public abstract class ISteamUnifiedMessages + { + public abstract IntPtr GetIntPtr(); + public abstract ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext); + public abstract bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult); + public abstract bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease); + public abstract bool ReleaseMethod(ulong hHandle); + public abstract bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize); + } + + + public abstract class ISteamController + { + public abstract IntPtr GetIntPtr(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract void RunFrame(); + public abstract int GetConnectedControllers(ref ulong handlesOut); + public abstract bool ShowBindingPanel(ulong controllerHandle); + public abstract ulong GetActionSetHandle(string pszActionSetName); + public abstract void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle); + public abstract ulong GetCurrentActionSet(ulong controllerHandle); + public abstract ulong GetDigitalActionHandle(string pszActionName); + public abstract ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle); + public abstract int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut); + public abstract ulong GetAnalogActionHandle(string pszActionName); + public abstract ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle); + public abstract int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut); + public abstract void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction); + public abstract void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec); + public abstract void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags); + public abstract int GetGamepadIndexForController(ulong ulControllerHandle); + public abstract ulong GetControllerForGamepadIndex(int nIndex); + public abstract ControllerMotionData_t GetMotionData(ulong controllerHandle); + public abstract bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition); + public abstract bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition); + } + + + public abstract class ISteamUGC + { + public abstract IntPtr GetIntPtr(); + public abstract ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong SendQueryUGCRequest(ulong handle); + public abstract bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails); + public abstract bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL); + public abstract bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata); + public abstract bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue); + public abstract uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index); + public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType); + public abstract uint GetQueryUGCNumKeyValueTags(ulong handle,uint index); + public abstract bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue); + public abstract bool ReleaseQueryUGCRequest(ulong handle); + public abstract bool AddRequiredTag(ulong handle,string pTagName); + public abstract bool AddExcludedTag(ulong handle,string pTagName); + public abstract bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs); + public abstract bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags); + public abstract bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription); + public abstract bool SetReturnMetadata(ulong handle,bool bReturnMetadata); + public abstract bool SetReturnChildren(ulong handle,bool bReturnChildren); + public abstract bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews); + public abstract bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly); + public abstract bool SetLanguage(ulong handle,string pchLanguage); + public abstract bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds); + public abstract bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName); + public abstract bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag); + public abstract bool SetSearchText(ulong handle,string pSearchText); + public abstract bool SetRankedByTrendDays(ulong handle,uint unDays); + public abstract bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue); + public abstract ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds); + public abstract ulong CreateItem(uint nConsumerAppId,uint eFileType); + public abstract ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID); + public abstract bool SetItemTitle(ulong handle,string pchTitle); + public abstract bool SetItemDescription(ulong handle,string pchDescription); + public abstract bool SetItemUpdateLanguage(ulong handle,string pchLanguage); + public abstract bool SetItemMetadata(ulong handle,string pchMetaData); + public abstract bool SetItemVisibility(ulong handle,uint eVisibility); + public abstract bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract bool SetItemContent(ulong handle,string pszContentFolder); + public abstract bool SetItemPreview(ulong handle,string pszPreviewFile); + public abstract bool RemoveItemKeyValueTags(ulong handle,string pchKey); + public abstract bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue); + public abstract bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type); + public abstract bool AddItemPreviewVideo(ulong handle,string pszVideoID); + public abstract bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile); + public abstract bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID); + public abstract bool RemoveItemPreview(ulong handle,uint index); + public abstract ulong SubmitItemUpdate(ulong handle,string pchChangeNote); + public abstract uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal); + public abstract ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp); + public abstract ulong GetUserItemVote(ulong nPublishedFileID); + public abstract ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong SubscribeItem(ulong nPublishedFileID); + public abstract ulong UnsubscribeItem(ulong nPublishedFileID); + public abstract uint GetNumSubscribedItems(); + public abstract uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract uint GetItemState(ulong nPublishedFileID); + public abstract bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp); + public abstract bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract bool DownloadItem(ulong nPublishedFileID,bool bHighPriority); + public abstract bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder); + public abstract void SuspendDownloads(bool bSuspend); + public abstract ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTrackingForAllItems(); + } + + + public abstract class ISteamAppList + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetNumInstalledApps(); + public abstract uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs); + public abstract int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax); + public abstract int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax); + public abstract int GetAppBuildId(uint nAppID); + } + + + public abstract class ISteamHTMLSurface + { + public abstract IntPtr GetIntPtr(); + public abstract void DestructISteamHTMLSurface(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract ulong CreateBrowser(string pchUserAgent,string pchUserCSS); + public abstract void RemoveBrowser(uint unBrowserHandle); + public abstract void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData); + public abstract void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight); + public abstract void StopLoad(uint unBrowserHandle); + public abstract void Reload(uint unBrowserHandle); + public abstract void GoBack(uint unBrowserHandle); + public abstract void GoForward(uint unBrowserHandle); + public abstract void AddHeader(uint unBrowserHandle,string pchKey,string pchValue); + public abstract void ExecuteJavascript(uint unBrowserHandle,string pchScript); + public abstract void MouseUp(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDown(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseMove(uint unBrowserHandle,int x,int y); + public abstract void MouseWheel(uint unBrowserHandle,int nDelta); + public abstract void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers); + public abstract void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus); + public abstract void ViewSource(uint unBrowserHandle); + public abstract void CopyToClipboard(uint unBrowserHandle); + public abstract void PasteFromClipboard(uint unBrowserHandle); + public abstract void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse); + public abstract void StopFind(uint unBrowserHandle); + public abstract void GetLinkAtPosition(uint unBrowserHandle,int x,int y); + public abstract void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly); + public abstract void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY); + public abstract void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode); + public abstract void AllowStartRequest(uint unBrowserHandle,bool bAllowed); + public abstract void JSDialogResponse(uint unBrowserHandle,bool bResult); + } + + + public abstract class ISteamInventory + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetResultStatus(int resultHandle); + public abstract bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray); + public abstract uint GetResultTimestamp(int resultHandle); + public abstract bool CheckResultSteamID(int resultHandle,ulong steamIDExpected); + public abstract void DestroyResult(int resultHandle); + public abstract bool GetAllItems(ref int pResultHandle); + public abstract bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs); + public abstract bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize); + public abstract bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE); + public abstract bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity); + public abstract bool GrantPromoItems(ref int pResultHandle); + public abstract bool AddPromoItem(ref int pResultHandle,int itemDef); + public abstract bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs); + public abstract bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity); + public abstract bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity); + public abstract bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest); + public abstract void SendItemDropHeartbeat(); + public abstract bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition); + public abstract bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity); + public abstract bool LoadItemDefinitions(); + public abstract bool GetItemDefinitionIDs(out int [] pItemDefIDs); + public abstract bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer); + } + + + public abstract class ISteamVideo + { + public abstract IntPtr GetIntPtr(); + public abstract void GetVideoURL(uint unVideoAppID); + public abstract bool IsBroadcasting(ref int pnNumViewers); + } + + + public abstract class ISteamGameServer + { + public abstract IntPtr GetIntPtr(); + public abstract bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString); + public abstract void SetProduct(string pszProduct); + public abstract void SetGameDescription(string pszGameDescription); + public abstract void SetModDir(string pszModDir); + public abstract void SetDedicatedServer(bool bDedicated); + public abstract void LogOn(string pszToken); + public abstract void LogOnAnonymous(); + public abstract void LogOff(); + public abstract bool BLoggedOn(); + public abstract bool BSecure(); + public abstract ulong GetSteamID(); + public abstract bool WasRestartRequested(); + public abstract void SetMaxPlayerCount(int cPlayersMax); + public abstract void SetBotPlayerCount(int cBotplayers); + public abstract void SetServerName(string pszServerName); + public abstract void SetMapName(string pszMapName); + public abstract void SetPasswordProtected(bool bPasswordProtected); + public abstract void SetSpectatorPort(char unSpectatorPort); + public abstract void SetSpectatorServerName(string pszSpectatorServerName); + public abstract void ClearAllKeyValues(); + public abstract void SetKeyValue(string pKey,string pValue); + public abstract void SetGameTags(string pchGameTags); + public abstract void SetGameData(string pchGameData); + public abstract void SetRegion(string pszRegion); + public abstract bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser); + public abstract ulong CreateUnauthenticatedUserConnection(); + public abstract void SendUserDisconnect(ulong steamIDUser); + public abstract bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup); + public abstract void GetGameplayStats(); + public abstract ulong GetServerReputation(); + public abstract uint GetPublicIP(); + public abstract bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort); + public abstract int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort); + public abstract void EnableHeartbeats(bool bActive); + public abstract void SetHeartbeatInterval(int iHeartbeatInterval); + public abstract void ForceHeartbeat(); + public abstract ulong AssociateWithClan(ulong steamIDClan); + public abstract ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer); + } + + + public abstract class ISteamGameServerStats + { + public abstract IntPtr GetIntPtr(); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool SetUserStat(ulong steamIDUser,string pchName,int nData); + public abstract bool SetUserStat0(ulong steamIDUser,string pchName,float fData); + public abstract bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength); + public abstract bool SetUserAchievement(ulong steamIDUser,string pchName); + public abstract bool ClearUserAchievement(ulong steamIDUser,string pchName); + public abstract ulong StoreUserStats(ulong steamIDUser); + } + + +public class CSteamClient : ISteamClient +{ +public CSteamClient(IntPtr SteamClient) +{ + m_pSteamClient = SteamClient; +} +IntPtr m_pSteamClient; + +public override IntPtr GetIntPtr() { return m_pSteamClient; } + +private void CheckIfUsable() +{ + if (m_pSteamClient == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateSteamPipe() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateSteamPipe(m_pSteamClient); + return result; +} +public override bool BReleaseSteamPipe(uint hSteamPipe) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BReleaseSteamPipe(m_pSteamClient,hSteamPipe); + return result; +} +public override uint ConnectToGlobalUser(uint hSteamPipe) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_ConnectToGlobalUser(m_pSteamClient,hSteamPipe); + return result; +} +public override uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType) +{ + CheckIfUsable(); + phSteamPipe = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateLocalUser(m_pSteamClient,ref phSteamPipe,eAccountType); + return result; +} +public override void ReleaseUser(uint hSteamPipe,uint hUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_ReleaseUser(m_pSteamClient,hSteamPipe,hUser); +} +public override ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUser(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUser) Marshal.PtrToStructure(result, typeof(ISteamUser)); +} +public override ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServer(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamGameServer) Marshal.PtrToStructure(result, typeof(ISteamGameServer)); +} +public override void SetLocalIPBinding(uint unIP,char usPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetLocalIPBinding(m_pSteamClient,unIP,usPort); +} +public override ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamFriends(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamFriends) Marshal.PtrToStructure(result, typeof(ISteamFriends)); +} +public override ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUtils(m_pSteamClient,hSteamPipe,pchVersion); + return (ISteamUtils) Marshal.PtrToStructure(result, typeof(ISteamUtils)); +} +public override ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmaking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmaking) Marshal.PtrToStructure(result, typeof(ISteamMatchmaking)); +} +public override ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmakingServers(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmakingServers) Marshal.PtrToStructure(result, typeof(ISteamMatchmakingServers)); +} +public override IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGenericInterface(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (IntPtr) Marshal.PtrToStructure(result, typeof(IntPtr)); +} +public override ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUserStats(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUserStats) Marshal.PtrToStructure(result, typeof(ISteamUserStats)); +} +public override ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServerStats(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamGameServerStats) Marshal.PtrToStructure(result, typeof(ISteamGameServerStats)); +} +public override ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamApps(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamApps) Marshal.PtrToStructure(result, typeof(ISteamApps)); +} +public override ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamNetworking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamNetworking) Marshal.PtrToStructure(result, typeof(ISteamNetworking)); +} +public override ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamRemoteStorage(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamRemoteStorage) Marshal.PtrToStructure(result, typeof(ISteamRemoteStorage)); +} +public override ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamScreenshots(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamScreenshots) Marshal.PtrToStructure(result, typeof(ISteamScreenshots)); +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_GetIPCCallCount(m_pSteamClient); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetWarningMessageHook(m_pSteamClient,pFunction); +} +public override bool BShutdownIfAllPipesClosed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(m_pSteamClient); + return result; +} +public override ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTTP(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTTP) Marshal.PtrToStructure(result, typeof(ISteamHTTP)); +} +public override ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUnifiedMessages(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamUnifiedMessages) Marshal.PtrToStructure(result, typeof(ISteamUnifiedMessages)); +} +public override ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamController(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamController) Marshal.PtrToStructure(result, typeof(ISteamController)); +} +public override ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUGC(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUGC) Marshal.PtrToStructure(result, typeof(ISteamUGC)); +} +public override ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamAppList(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamAppList) Marshal.PtrToStructure(result, typeof(ISteamAppList)); +} +public override ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusic(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusic) Marshal.PtrToStructure(result, typeof(ISteamMusic)); +} +public override ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusicRemote(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusicRemote) Marshal.PtrToStructure(result, typeof(ISteamMusicRemote)); +} +public override ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTMLSurface(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTMLSurface) Marshal.PtrToStructure(result, typeof(ISteamHTMLSurface)); +} +public override ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamInventory(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamInventory) Marshal.PtrToStructure(result, typeof(ISteamInventory)); +} +public override ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamVideo(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamVideo) Marshal.PtrToStructure(result, typeof(ISteamVideo)); +} +} + + +public class CSteamUser : ISteamUser +{ +public CSteamUser(IntPtr SteamUser) +{ + m_pSteamUser = SteamUser; +} +IntPtr m_pSteamUser; + +public override IntPtr GetIntPtr() { return m_pSteamUser; } + +private void CheckIfUsable() +{ + if (m_pSteamUser == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetHSteamUser() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetHSteamUser(m_pSteamUser); + return result; +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BLoggedOn(m_pSteamUser); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_GetSteamID(m_pSteamUser); + return result; +} +public override int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_InitiateGameConnection(m_pSteamUser,pAuthBlob,cbMaxAuthBlob,steamIDGameServer,unIPServer,usPortServer,bSecure); + return result; +} +public override void TerminateGameConnection(uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TerminateGameConnection(m_pSteamUser,unIPServer,usPortServer); +} +public override void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TrackAppUsageEvent(m_pSteamUser,gameID,eAppUsageEvent,pchExtraInfo); +} +public override bool GetUserDataFolder(string pchBuffer,int cubBuffer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetUserDataFolder(m_pSteamUser,pchBuffer,cubBuffer); + return result; +} +public override void StartVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StartVoiceRecording(m_pSteamUser); +} +public override void StopVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StopVoiceRecording(m_pSteamUser); +} +public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + pcbCompressed = 0; + pcbUncompressed = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + nUncompressBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed,pUncompressedDestBuffer,cbUncompressedDestBufferSize,ref nUncompressBytesWritten,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_DecompressVoice(m_pSteamUser,pCompressed,cbCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,nDesiredSampleRate); + return result; +} +public override uint GetVoiceOptimalSampleRate() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(m_pSteamUser); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAuthSessionTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_BeginAuthSession(m_pSteamUser,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_EndAuthSession(m_pSteamUser,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_CancelAuthTicket(m_pSteamUser,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_UserHasLicenseForApp(m_pSteamUser,steamID,appID); + return result; +} +public override bool BIsBehindNAT() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsBehindNAT(m_pSteamUser); + return result; +} +public override void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_AdvertiseGame(m_pSteamUser,steamIDGameServer,unIPServer,usPortServer); +} +public override ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestEncryptedAppTicket(m_pSteamUser,pDataToInclude,cbDataToInclude); + return result; +} +public override bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetEncryptedAppTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override int GetGameBadgeLevel(int nSeries,bool bFoil) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetGameBadgeLevel(m_pSteamUser,nSeries,bFoil); + return result; +} +public override int GetPlayerSteamLevel() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetPlayerSteamLevel(m_pSteamUser); + return result; +} +public override ulong RequestStoreAuthURL(string pchRedirectURL) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestStoreAuthURL(m_pSteamUser,pchRedirectURL); + return result; +} +public override bool BIsPhoneVerified() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneVerified(m_pSteamUser); + return result; +} +public override bool BIsTwoFactorEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsTwoFactorEnabled(m_pSteamUser); + return result; +} +public override bool BIsPhoneIdentifying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneIdentifying(m_pSteamUser); + return result; +} +public override bool BIsPhoneRequiringVerification() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneRequiringVerification(m_pSteamUser); + return result; +} +} + + +public class CSteamFriends : ISteamFriends +{ +public CSteamFriends(IntPtr SteamFriends) +{ + m_pSteamFriends = SteamFriends; +} +IntPtr m_pSteamFriends; + +public override IntPtr GetIntPtr() { return m_pSteamFriends; } + +private void CheckIfUsable() +{ + if (m_pSteamFriends == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override string GetPersonaName() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaName(m_pSteamFriends); + return Marshal.PtrToStringAnsi(result); +} +public override ulong SetPersonaName(string pchPersonaName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_SetPersonaName(m_pSteamFriends,pchPersonaName); + return result; +} +public override uint GetPersonaState() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaState(m_pSteamFriends); + return result; +} +public override int GetFriendCount(int iFriendFlags) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCount(m_pSteamFriends,iFriendFlags); + return result; +} +public override ulong GetFriendByIndex(int iFriend,int iFriendFlags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendByIndex(m_pSteamFriends,iFriend,iFriendFlags); + return result; +} +public override uint GetFriendRelationship(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRelationship(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendPersonaState(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaState(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendPersonaName(ulong steamIDFriend) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaName(m_pSteamFriends,steamIDFriend); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo) +{ + CheckIfUsable(); + pFriendGameInfo = new FriendGameInfo_t(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendGamePlayed(m_pSteamFriends,steamIDFriend,ref pFriendGameInfo); + return result; +} +public override string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(m_pSteamFriends,steamIDFriend,iPersonaName); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendSteamLevel(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendSteamLevel(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetPlayerNickname(ulong steamIDPlayer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPlayerNickname(m_pSteamFriends,steamIDPlayer); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupCount(m_pSteamFriends); + return result; +} +public override char GetFriendsGroupIDByIndex(int iFG) +{ + CheckIfUsable(); + char result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(m_pSteamFriends,iFG); + return result; +} +public override string GetFriendsGroupName(char friendsGroupID) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupName(m_pSteamFriends,friendsGroupID); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupMembersCount(char friendsGroupID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(m_pSteamFriends,friendsGroupID); + return result; +} +public override void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers) +{ + CheckIfUsable(); + int nMembersCount = GetFriendsGroupMembersCount (friendsGroupID); + pOutSteamIDMembers = new CSteamID[nMembersCount]; + NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersList(m_pSteamFriends,friendsGroupID,pOutSteamIDMembers,nMembersCount); +} +public override bool HasFriend(ulong steamIDFriend,int iFriendFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_HasFriend(m_pSteamFriends,steamIDFriend,iFriendFlags); + return result; +} +public override int GetClanCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanCount(m_pSteamFriends); + return result; +} +public override ulong GetClanByIndex(int iClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanByIndex(m_pSteamFriends,iClan); + return result; +} +public override string GetClanName(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanName(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override string GetClanTag(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanTag(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting) +{ + CheckIfUsable(); + pnOnline = 0; + pnInGame = 0; + pnChatting = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanActivityCounts(m_pSteamFriends,steamIDClan,ref pnOnline,ref pnInGame,ref pnChatting); + return result; +} +public override ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_DownloadClanActivityCounts(m_pSteamFriends,psteamIDClans,(int) psteamIDClans.Length); + return result; +} +public override int GetFriendCountFromSource(ulong steamIDSource) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCountFromSource(m_pSteamFriends,steamIDSource); + return result; +} +public override ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(m_pSteamFriends,steamIDSource,iFriend); + return result; +} +public override bool IsUserInSource(ulong steamIDUser,ulong steamIDSource) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsUserInSource(m_pSteamFriends,steamIDUser,steamIDSource); + return result; +} +public override void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(m_pSteamFriends,steamIDUser,bSpeaking); +} +public override void ActivateGameOverlay(string pchDialog) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlay(m_pSteamFriends,pchDialog); +} +public override void ActivateGameOverlayToUser(string pchDialog,ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToUser(m_pSteamFriends,pchDialog,steamID); +} +public override void ActivateGameOverlayToWebPage(string pchURL) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(m_pSteamFriends,pchURL); +} +public override void ActivateGameOverlayToStore(uint nAppID,char eFlag) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToStore(m_pSteamFriends,nAppID,eFlag); +} +public override void SetPlayedWith(ulong steamIDUserPlayedWith) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetPlayedWith(m_pSteamFriends,steamIDUserPlayedWith); +} +public override void ActivateGameOverlayInviteDialog(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(m_pSteamFriends,steamIDLobby); +} +public override int GetSmallFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetSmallFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetMediumFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetMediumFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetLargeFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetLargeFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestUserInformation(m_pSteamFriends,steamIDUser,bRequireNameOnly); + return result; +} +public override ulong RequestClanOfficerList(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestClanOfficerList(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOwner(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOwner(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanOfficerCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerByIndex(m_pSteamFriends,steamIDClan,iOfficer); + return result; +} +public override uint GetUserRestrictions() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetUserRestrictions(m_pSteamFriends); + return result; +} +public override bool SetRichPresence(string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetRichPresence(m_pSteamFriends,pchKey,pchValue); + return result; +} +public override void ClearRichPresence() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ClearRichPresence(m_pSteamFriends); +} +public override string GetFriendRichPresence(ulong steamIDFriend,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresence(m_pSteamFriends,steamIDFriend,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendRichPresenceKeyCount(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(m_pSteamFriends,steamIDFriend,iKey); + return Marshal.PtrToStringAnsi(result); +} +public override void RequestFriendRichPresence(ulong steamIDFriend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_RequestFriendRichPresence(m_pSteamFriends,steamIDFriend); +} +public override bool InviteUserToGame(ulong steamIDFriend,string pchConnectString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_InviteUserToGame(m_pSteamFriends,steamIDFriend,pchConnectString); + return result; +} +public override int GetCoplayFriendCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriendCount(m_pSteamFriends); + return result; +} +public override ulong GetCoplayFriend(int iCoplayFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriend(m_pSteamFriends,iCoplayFriend); + return result; +} +public override int GetFriendCoplayTime(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayTime(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendCoplayGame(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayGame(m_pSteamFriends,steamIDFriend); + return result; +} +public override ulong JoinClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_JoinClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override bool LeaveClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_LeaveClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanChatMemberCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMemberCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetChatMemberByIndex(ulong steamIDClan,int iUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetChatMemberByIndex(m_pSteamFriends,steamIDClan,iUser); + return result; +} +public override bool SendClanChatMessage(ulong steamIDClanChat,string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SendClanChatMessage(m_pSteamFriends,steamIDClanChat,pchText); + return result; +} +public override int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter) +{ + CheckIfUsable(); + peChatEntryType = 0; + psteamidChatter = new CSteamID(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMessage(m_pSteamFriends,steamIDClanChat,iMessage,prgchText,cchTextMax,ref peChatEntryType,ref psteamidChatter); + return result; +} +public override bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatAdmin(m_pSteamFriends,steamIDClanChat,steamIDUser); + return result; +} +public override bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool OpenClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool CloseClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool SetListenForFriendsMessages(bool bInterceptEnabled) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetListenForFriendsMessages(m_pSteamFriends,bInterceptEnabled); + return result; +} +public override bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_ReplyToFriendMessage(m_pSteamFriends,steamIDFriend,pchMsgToSend); + return result; +} +public override int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendMessage(m_pSteamFriends,steamIDFriend,iMessageID,pvData,cubData,ref peChatEntryType); + return result; +} +public override ulong GetFollowerCount(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFollowerCount(m_pSteamFriends,steamID); + return result; +} +public override ulong IsFollowing(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_IsFollowing(m_pSteamFriends,steamID); + return result; +} +public override ulong EnumerateFollowingList(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_EnumerateFollowingList(m_pSteamFriends,unStartIndex); + return result; +} +} + + +public class CSteamUtils : ISteamUtils +{ +public CSteamUtils(IntPtr SteamUtils) +{ + m_pSteamUtils = SteamUtils; +} +IntPtr m_pSteamUtils; + +public override IntPtr GetIntPtr() { return m_pSteamUtils; } + +private void CheckIfUsable() +{ + if (m_pSteamUtils == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetSecondsSinceAppActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceAppActive(m_pSteamUtils); + return result; +} +public override uint GetSecondsSinceComputerActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(m_pSteamUtils); + return result; +} +public override int GetConnectedUniverse() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetConnectedUniverse(m_pSteamUtils); + return result; +} +public override uint GetServerRealTime() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetServerRealTime(m_pSteamUtils); + return result; +} +public override string GetIPCountry() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCountry(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight) +{ + CheckIfUsable(); + pnWidth = 0; + pnHeight = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageSize(m_pSteamUtils,iImage,ref pnWidth,ref pnHeight); + return result; +} +public override bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageRGBA(m_pSteamUtils,iImage,pubDest,nDestBufferSize); + return result; +} +public override bool GetCSERIPPort(ref uint unIP,ref char usPort) +{ + CheckIfUsable(); + unIP = 0; + usPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCSERIPPort(m_pSteamUtils,ref unIP,ref usPort); + return result; +} +public override byte GetCurrentBatteryPower() +{ + CheckIfUsable(); + byte result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCurrentBatteryPower(m_pSteamUtils); + return result; +} +public override uint GetAppID() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAppID(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationPosition(uint eNotificationPosition) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationPosition(m_pSteamUtils,eNotificationPosition); +} +public override bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsAPICallCompleted(m_pSteamUtils,hSteamAPICall,ref pbFailed); + return result; +} +public override int GetAPICallFailureReason(ulong hSteamAPICall) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallFailureReason(m_pSteamUtils,hSteamAPICall); + return result; +} +public override bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallResult(m_pSteamUtils,hSteamAPICall,pCallback,cubCallback,iCallbackExpected,ref pbFailed); + return result; +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCCallCount(m_pSteamUtils); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetWarningMessageHook(m_pSteamUtils,pFunction); +} +public override bool IsOverlayEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsOverlayEnabled(m_pSteamUtils); + return result; +} +public override bool BOverlayNeedsPresent() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_BOverlayNeedsPresent(m_pSteamUtils); + return result; +} +public override ulong CheckFileSignature(string szFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUtils_CheckFileSignature(m_pSteamUtils,szFileName); + return result; +} +public override bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_ShowGamepadTextInput(m_pSteamUtils,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText); + return result; +} +public override uint GetEnteredGamepadTextLength() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(m_pSteamUtils); + return result; +} +public override bool GetEnteredGamepadTextInput(string pchText,uint cchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(m_pSteamUtils,pchText,cchText); + return result; +} +public override string GetSteamUILanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSteamUILanguage(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool IsSteamRunningInVR() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamRunningInVR(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationInset(m_pSteamUtils,nHorizontalInset,nVerticalInset); +} +public override bool IsSteamInBigPictureMode() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamInBigPictureMode(m_pSteamUtils); + return result; +} +public override void StartVRDashboard() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); +} +} + + +public class CSteamMatchmaking : ISteamMatchmaking +{ +public CSteamMatchmaking(IntPtr SteamMatchmaking) +{ + m_pSteamMatchmaking = SteamMatchmaking; +} +IntPtr m_pSteamMatchmaking; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmaking; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmaking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override int GetFavoriteGameCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(m_pSteamMatchmaking); + return result; +} +public override bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer) +{ + CheckIfUsable(); + pnAppID = 0; + pnIP = 0; + pnConnPort = (char) 0; + pnQueryPort = (char) 0; + punFlags = 0; + pRTime32LastPlayedOnServer = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGame(m_pSteamMatchmaking,iGame,ref pnAppID,ref pnIP,ref pnConnPort,ref pnQueryPort,ref punFlags,ref pRTime32LastPlayedOnServer); + return result; +} +public override int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags,rTime32LastPlayedOnServer); + return result; +} +public override bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags); + return result; +} +public override ulong RequestLobbyList() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyList(m_pSteamMatchmaking); + return result; +} +public override void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(m_pSteamMatchmaking,pchKeyToMatch,pchValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToBeCloseTo); +} +public override void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(m_pSteamMatchmaking,nSlotsAvailable); +} +public override void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(m_pSteamMatchmaking,eLobbyDistanceFilter); +} +public override void AddRequestLobbyListResultCountFilter(int cMaxResults) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(m_pSteamMatchmaking,cMaxResults); +} +public override void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(m_pSteamMatchmaking,steamIDLobby); +} +public override ulong GetLobbyByIndex(int iLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyByIndex(m_pSteamMatchmaking,iLobby); + return result; +} +public override ulong CreateLobby(uint eLobbyType,int cMaxMembers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_CreateLobby(m_pSteamMatchmaking,eLobbyType,cMaxMembers); + return result; +} +public override ulong JoinLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_JoinLobby(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void LeaveLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_LeaveLobby(m_pSteamMatchmaking,steamIDLobby); +} +public override bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_InviteUserToLobby(m_pSteamMatchmaking,steamIDLobby,steamIDInvitee); + return result; +} +public override int GetNumLobbyMembers(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(m_pSteamMatchmaking,steamIDLobby,iMember); + return result; +} +public override string GetLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); + return result; +} +public override int GetLobbyDataCount(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataCount(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(m_pSteamMatchmaking,steamIDLobby,iLobbyData,pchKey,cchKeyBufferSize,pchValue,cchValueBufferSize); + return result; +} +public override bool DeleteLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_DeleteLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return result; +} +public override string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,steamIDUser,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); +} +public override bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(m_pSteamMatchmaking,steamIDLobby,pvMsgBody,cubMsgBody); + return result; +} +public override int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + pSteamIDUser = new CSteamID(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(m_pSteamMatchmaking,steamIDLobby,iChatID,ref pSteamIDUser,pvData,cubData,ref peChatEntryType); + return result; +} +public override bool RequestLobbyData(ulong steamIDLobby) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyData(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,unGameServerIP,unGameServerPort,steamIDGameServer); +} +public override bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer) +{ + CheckIfUsable(); + punGameServerIP = 0; + punGameServerPort = (char) 0; + psteamIDGameServer = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,ref punGameServerIP,ref punGameServerPort,ref psteamIDGameServer); + return result; +} +public override bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby,cMaxMembers); + return result; +} +public override int GetLobbyMemberLimit(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyType(ulong steamIDLobby,uint eLobbyType) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyType(m_pSteamMatchmaking,steamIDLobby,eLobbyType); + return result; +} +public override bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyJoinable(m_pSteamMatchmaking,steamIDLobby,bLobbyJoinable); + return result; +} +public override ulong GetLobbyOwner(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyOwner(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyOwner(m_pSteamMatchmaking,steamIDLobby,steamIDNewOwner); + return result; +} +public override bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLinkedLobby(m_pSteamMatchmaking,steamIDLobby,steamIDLobbyDependent); + return result; +} +} + + +public class CSteamMatchmakingServerListResponse : ISteamMatchmakingServerListResponse +{ +public CSteamMatchmakingServerListResponse(IntPtr SteamMatchmakingServerListResponse) +{ + m_pSteamMatchmakingServerListResponse = SteamMatchmakingServerListResponse; +} +IntPtr m_pSteamMatchmakingServerListResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServerListResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServerListResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void ServerFailedToRespond(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void RefreshComplete(uint hRequest,uint response) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(m_pSteamMatchmakingServerListResponse,hRequest,response); +} +} + + +public class CSteamMatchmakingPingResponse : ISteamMatchmakingPingResponse +{ +public CSteamMatchmakingPingResponse(IntPtr SteamMatchmakingPingResponse) +{ + m_pSteamMatchmakingPingResponse = SteamMatchmakingPingResponse; +} +IntPtr m_pSteamMatchmakingPingResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPingResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPingResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(IntPtr server) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(m_pSteamMatchmakingPingResponse,server); +} +public override void ServerFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(m_pSteamMatchmakingPingResponse); +} +} + + +public class CSteamMatchmakingPlayersResponse : ISteamMatchmakingPlayersResponse +{ +public CSteamMatchmakingPlayersResponse(IntPtr SteamMatchmakingPlayersResponse) +{ + m_pSteamMatchmakingPlayersResponse = SteamMatchmakingPlayersResponse; +} +IntPtr m_pSteamMatchmakingPlayersResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPlayersResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPlayersResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void AddPlayerToList(string pchName,int nScore,float flTimePlayed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(m_pSteamMatchmakingPlayersResponse,pchName,nScore,flTimePlayed); +} +public override void PlayersFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(m_pSteamMatchmakingPlayersResponse); +} +public override void PlayersRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(m_pSteamMatchmakingPlayersResponse); +} +} + + +public class CSteamMatchmakingRulesResponse : ISteamMatchmakingRulesResponse +{ +public CSteamMatchmakingRulesResponse(IntPtr SteamMatchmakingRulesResponse) +{ + m_pSteamMatchmakingRulesResponse = SteamMatchmakingRulesResponse; +} +IntPtr m_pSteamMatchmakingRulesResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingRulesResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingRulesResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void RulesResponded(string pchRule,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(m_pSteamMatchmakingRulesResponse,pchRule,pchValue); +} +public override void RulesFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(m_pSteamMatchmakingRulesResponse); +} +public override void RulesRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(m_pSteamMatchmakingRulesResponse); +} +} + + +public class CSteamMatchmakingServers : ISteamMatchmakingServers +{ +public CSteamMatchmakingServers(IntPtr SteamMatchmakingServers) +{ + m_pSteamMatchmakingServers = SteamMatchmakingServers; +} +IntPtr m_pSteamMatchmakingServers; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServers; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServers == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestLANServerList(m_pSteamMatchmakingServers,iApp,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void ReleaseRequest(uint hServerListRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ReleaseRequest(m_pSteamMatchmakingServers,hServerListRequest); +} +public override gameserveritem_t GetServerDetails(uint hRequest,int iServer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerDetails(m_pSteamMatchmakingServers,hRequest,iServer); + return (gameserveritem_t) Marshal.PtrToStructure(result, typeof(gameserveritem_t)); +} +public override void CancelQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelQuery(m_pSteamMatchmakingServers,hRequest); +} +public override void RefreshQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshQuery(m_pSteamMatchmakingServers,hRequest); +} +public override bool IsRefreshing(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_IsRefreshing(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override int GetServerCount(uint hRequest) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerCount(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override void RefreshServer(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshServer(m_pSteamMatchmakingServers,hRequest,iServer); +} +public override uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PingServer(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PlayerDetails(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ServerRules(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void CancelServerQuery(uint hServerQuery) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelServerQuery(m_pSteamMatchmakingServers,hServerQuery); +} +} + + +public class CSteamRemoteStorage : ISteamRemoteStorage +{ +public CSteamRemoteStorage(IntPtr SteamRemoteStorage) +{ + m_pSteamRemoteStorage = SteamRemoteStorage; +} +IntPtr m_pSteamRemoteStorage; + +public override IntPtr GetIntPtr() { return m_pSteamRemoteStorage; } + +private void CheckIfUsable() +{ + if (m_pSteamRemoteStorage == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool FileWrite(string pchFile,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWrite(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override int FileRead(string pchFile,IntPtr pvData,int cubDataToRead) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileRead(m_pSteamRemoteStorage,pchFile,pvData,cubDataToRead); + return result; +} +public override ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteAsync(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsync(m_pSteamRemoteStorage,pchFile,nOffset,cubToRead); + return result; +} +public override bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(m_pSteamRemoteStorage,hReadCall,pvBuffer,cubToRead); + return result; +} +public override bool FileForget(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileForget(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileDelete(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileDelete(m_pSteamRemoteStorage,pchFile); + return result; +} +public override ulong FileShare(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileShare(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(m_pSteamRemoteStorage,pchFile,eRemoteStoragePlatform); + return result; +} +public override ulong FileWriteStreamOpen(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(m_pSteamRemoteStorage,writeHandle,pvData,cubData); + return result; +} +public override bool FileWriteStreamClose(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileWriteStreamCancel(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileExists(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileExists(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FilePersisted(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FilePersisted(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileSize(string pchFile) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileSize(m_pSteamRemoteStorage,pchFile); + return result; +} +public override long GetFileTimestamp(string pchFile) +{ + CheckIfUsable(); + long result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileTimestamp(m_pSteamRemoteStorage,pchFile); + return result; +} +public override uint GetSyncPlatforms(string pchFile) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileCount(m_pSteamRemoteStorage); + return result; +} +public override string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes) +{ + CheckIfUsable(); + pnFileSizeInBytes = 0; + IntPtr result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(m_pSteamRemoteStorage,iFile,ref pnFileSizeInBytes); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes) +{ + CheckIfUsable(); + pnTotalBytes = 0; + puAvailableBytes = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetQuota(m_pSteamRemoteStorage,ref pnTotalBytes,ref puAvailableBytes); + return result; +} +public override bool IsCloudEnabledForAccount() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(m_pSteamRemoteStorage); + return result; +} +public override bool IsCloudEnabledForApp() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(m_pSteamRemoteStorage); + return result; +} +public override void SetCloudEnabledForApp(bool bEnabled) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(m_pSteamRemoteStorage,bEnabled); +} +public override ulong UGCDownload(ulong hContent,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownload(m_pSteamRemoteStorage,hContent,unPriority); + return result; +} +public override bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected) +{ + CheckIfUsable(); + pnBytesDownloaded = 0; + pnBytesExpected = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(m_pSteamRemoteStorage,hContent,ref pnBytesDownloaded,ref pnBytesExpected); + return result; +} +public override bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner) +{ + CheckIfUsable(); + pnAppID = 0; + pnFileSizeInBytes = 0; + pSteamIDOwner = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDetails(m_pSteamRemoteStorage,hContent,ref pnAppID,ppchName,ref pnFileSizeInBytes,ref pSteamIDOwner); + return result; +} +public override int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCRead(m_pSteamRemoteStorage,hContent,pvData,cubDataToRead,cOffset,eAction); + return result; +} +public override int GetCachedUGCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(m_pSteamRemoteStorage); + return result; +} +public override ulong GetCachedUGCHandle(int iCachedContent) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(m_pSteamRemoteStorage,iCachedContent); + return result; +} +public override ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(m_pSteamRemoteStorage,pchFile,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags,eWorkshopFileType); + return result; +} +public override ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileFile(ulong updateHandle,string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(m_pSteamRemoteStorage,updateHandle,pchFile); + return result; +} +public override bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(m_pSteamRemoteStorage,updateHandle,pchPreviewFile); + return result; +} +public override bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(m_pSteamRemoteStorage,updateHandle,pchTitle); + return result; +} +public override bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(m_pSteamRemoteStorage,updateHandle,pchDescription); + return result; +} +public override bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(m_pSteamRemoteStorage,updateHandle,eVisibility); + return result; +} +public override bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(m_pSteamRemoteStorage,updateHandle,ref pTags); + return result; +} +public override ulong CommitPublishedFileUpdate(ulong updateHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(m_pSteamRemoteStorage,updateHandle); + return result; +} +public override ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(m_pSteamRemoteStorage,unPublishedFileId,unMaxSecondsOld); + return result; +} +public override ulong DeletePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_DeletePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserPublishedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong SubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSubscribedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong UnsubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(m_pSteamRemoteStorage,updateHandle,pchChangeDescription); + return result; +} +public override ulong GetPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(m_pSteamRemoteStorage,unPublishedFileId,bVoteUp); + return result; +} +public override ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(m_pSteamRemoteStorage,steamId,unStartIndex,ref pRequiredTags,ref pExcludedTags); + return result; +} +public override ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishVideo(m_pSteamRemoteStorage,eVideoProvider,pchVideoAccount,pchVideoIdentifier,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags); + return result; +} +public override ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(m_pSteamRemoteStorage,unPublishedFileId,eAction); + return result; +} +public override ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(m_pSteamRemoteStorage,eAction,unStartIndex); + return result; +} +public override ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(m_pSteamRemoteStorage,eEnumerationType,unStartIndex,unCount,unDays,ref pTags,ref pUserTags); + return result; +} +public override ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(m_pSteamRemoteStorage,hContent,pchLocation,unPriority); + return result; +} +} + + +public class CSteamUserStats : ISteamUserStats +{ +public CSteamUserStats(IntPtr SteamUserStats) +{ + m_pSteamUserStats = SteamUserStats; +} +IntPtr m_pSteamUserStats; + +public override IntPtr GetIntPtr() { return m_pSteamUserStats; } + +private void CheckIfUsable() +{ + if (m_pSteamUserStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RequestCurrentStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestCurrentStats(m_pSteamUserStats); + return result; +} +public override bool GetStat(string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool GetStat0(string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat0(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool SetStat(string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat(m_pSteamUserStats,pchName,nData); + return result; +} +public override bool SetStat0(string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat0(m_pSteamUserStats,pchName,fData); + return result; +} +public override bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_UpdateAvgRateStat(m_pSteamUserStats,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool GetAchievement(string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievement(m_pSteamUserStats,pchName,ref pbAchieved); + return result; +} +public override bool SetAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool ClearAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ClearAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(m_pSteamUserStats,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool StoreStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_StoreStats(m_pSteamUserStats); + return result; +} +public override int GetAchievementIcon(string pchName) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementIcon(m_pSteamUserStats,pchName); + return result; +} +public override string GetAchievementDisplayAttribute(string pchName,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(m_pSteamUserStats,pchName,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_IndicateAchievementProgress(m_pSteamUserStats,pchName,nCurProgress,nMaxProgress); + return result; +} +public override uint GetNumAchievements() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumAchievements(m_pSteamUserStats); + return result; +} +public override string GetAchievementName(uint iAchievement) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementName(m_pSteamUserStats,iAchievement); + return Marshal.PtrToStringAnsi(result); +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestUserStats(m_pSteamUserStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat0(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievement(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool ResetAllStats(bool bAchievementsToo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ResetAllStats(m_pSteamUserStats,bAchievementsToo); + return result; +} +public override ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(m_pSteamUserStats,pchLeaderboardName,eLeaderboardSortMethod,eLeaderboardDisplayType); + return result; +} +public override ulong FindLeaderboard(string pchLeaderboardName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindLeaderboard(m_pSteamUserStats,pchLeaderboardName); + return result; +} +public override string GetLeaderboardName(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardName(m_pSteamUserStats,hSteamLeaderboard); + return Marshal.PtrToStringAnsi(result); +} +public override int GetLeaderboardEntryCount(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardSortMethod(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardDisplayType(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardDataRequest,nRangeStart,nRangeEnd); + return result; +} +public override ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(m_pSteamUserStats,hSteamLeaderboard,prgUsers,(int) prgUsers.Length); + return result; +} +public override bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax) +{ + CheckIfUsable(); + pDetails = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(m_pSteamUserStats,hSteamLeaderboardEntries,index,ref pLeaderboardEntry,ref pDetails,cDetailsMax); + return result; +} +public override ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount) +{ + CheckIfUsable(); + pScoreDetails = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_UploadLeaderboardScore(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardUploadScoreMethod,nScore,ref pScoreDetails,cScoreDetailsCount); + return result; +} +public override ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_AttachLeaderboardUGC(m_pSteamUserStats,hSteamLeaderboard,hUGC); + return result; +} +public override ulong GetNumberOfCurrentPlayers() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(m_pSteamUserStats); + return result; +} +public override ulong RequestGlobalAchievementPercentages() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(m_pSteamUserStats); + return result; +} +public override int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(m_pSteamUserStats,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(m_pSteamUserStats,iIteratorPrevious,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override bool GetAchievementAchievedPercent(string pchName,ref float pflPercent) +{ + CheckIfUsable(); + pflPercent = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(m_pSteamUserStats,pchName,ref pflPercent); + return result; +} +public override ulong RequestGlobalStats(int nHistoryDays) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalStats(m_pSteamUserStats,nHistoryDays); + return result; +} +public override bool GetGlobalStat(string pchStatName,ref long pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override bool GetGlobalStat0(string pchStatName,ref double pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat0(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override int GetGlobalStatHistory(string pchStatName,long [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +public override int GetGlobalStatHistory0(string pchStatName,double [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory0(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +} + + +public class CSteamApps : ISteamApps +{ +public CSteamApps(IntPtr SteamApps) +{ + m_pSteamApps = SteamApps; +} +IntPtr m_pSteamApps; + +public override IntPtr GetIntPtr() { return m_pSteamApps; } + +private void CheckIfUsable() +{ + if (m_pSteamApps == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsSubscribed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribed(m_pSteamApps); + return result; +} +public override bool BIsLowViolence() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsLowViolence(m_pSteamApps); + return result; +} +public override bool BIsCybercafe() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsCybercafe(m_pSteamApps); + return result; +} +public override bool BIsVACBanned() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsVACBanned(m_pSteamApps); + return result; +} +public override string GetCurrentGameLanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentGameLanguage(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override string GetAvailableGameLanguages() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetAvailableGameLanguages(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override bool BIsSubscribedApp(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedApp(m_pSteamApps,appID); + return result; +} +public override bool BIsDlcInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsDlcInstalled(m_pSteamApps,appID); + return result; +} +public override uint GetEarliestPurchaseUnixTime(uint nAppID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(m_pSteamApps,nAppID); + return result; +} +public override bool BIsSubscribedFromFreeWeekend() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(m_pSteamApps); + return result; +} +public override int GetDLCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetDLCCount(m_pSteamApps); + return result; +} +public override bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + pAppID = 0; + pbAvailable = false; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BGetDLCDataByIndex(m_pSteamApps,iDLC,ref pAppID,ref pbAvailable,pchName,cchNameBufferSize); + return result; +} +public override void InstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_InstallDLC(m_pSteamApps,nAppID); +} +public override void UninstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_UninstallDLC(m_pSteamApps,nAppID); +} +public override void RequestAppProofOfPurchaseKey(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(m_pSteamApps,nAppID); +} +public override bool GetCurrentBetaName(string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentBetaName(m_pSteamApps,pchName,cchNameBufferSize); + return result; +} +public override bool MarkContentCorrupt(bool bMissingFilesOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_MarkContentCorrupt(m_pSteamApps,bMissingFilesOnly); + return result; +} +public override uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots) +{ + CheckIfUsable(); + pvecDepots = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetInstalledDepots(m_pSteamApps,appID,ref pvecDepots,cMaxDepots); + return result; +} +public override uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppInstallDir(m_pSteamApps,appID,pchFolder,cchFolderBufferSize); + return result; +} +public override bool BIsAppInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsAppInstalled(m_pSteamApps,appID); + return result; +} +public override ulong GetAppOwner() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppOwner(m_pSteamApps); + return result; +} +public override string GetLaunchQueryParam(string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetLaunchQueryParam(m_pSteamApps,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetDlcDownloadProgress(m_pSteamApps,nAppID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override int GetAppBuildId() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppBuildId(m_pSteamApps); + return result; +} +public override void RequestAllProofOfPurchaseKeys() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(m_pSteamApps); +} +public override ulong GetFileDetails(string pszFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetFileDetails(m_pSteamApps,pszFileName); + return result; +} +} + + +public class CSteamNetworking : ISteamNetworking +{ +public CSteamNetworking(IntPtr SteamNetworking) +{ + m_pSteamNetworking = SteamNetworking; +} +IntPtr m_pSteamNetworking; + +public override IntPtr GetIntPtr() { return m_pSteamNetworking; } + +private void CheckIfUsable() +{ + if (m_pSteamNetworking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendP2PPacket(m_pSteamNetworking,steamIDRemote,pubData,cubData,eP2PSendType,nChannel); + return result; +} +public override bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsP2PPacketAvailable(m_pSteamNetworking,ref pcubMsgSize,nChannel); + return result; +} +public override bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_ReadP2PPacket(m_pSteamNetworking,pubDest,cubDest,ref pcubMsgSize,ref psteamIDRemote,nChannel); + return result; +} +public override bool AcceptP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(m_pSteamNetworking,steamIDRemote,nChannel); + return result; +} +public override bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetP2PSessionState(m_pSteamNetworking,steamIDRemote,ref pConnectionState); + return result; +} +public override bool AllowP2PPacketRelay(bool bAllow) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AllowP2PPacketRelay(m_pSteamNetworking,bAllow); + return result; +} +public override uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateListenSocket(m_pSteamNetworking,nVirtualP2PPort,nIP,nPort,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(m_pSteamNetworking,steamIDTarget,nVirtualPort,nTimeoutSec,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateConnectionSocket(m_pSteamNetworking,nIP,nPort,nTimeoutSec); + return result; +} +public override bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroySocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroyListenSocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendDataOnSocket(m_pSteamNetworking,hSocket,pubData,cubData,bReliable); + return result; +} +public override bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(m_pSteamNetworking,hSocket,ref pcubMsgSize); + return result; +} +public override bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveDataFromSocket(m_pSteamNetworking,hSocket,pubDest,cubDest,ref pcubMsgSize); + return result; +} +public override bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailable(m_pSteamNetworking,hListenSocket,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveData(m_pSteamNetworking,hListenSocket,pubDest,cubDest,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote) +{ + CheckIfUsable(); + peSocketStatus = 0; + punIPRemote = 0; + punPortRemote = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketInfo(m_pSteamNetworking,hSocket,ref pSteamIDRemote,ref peSocketStatus,ref punIPRemote,ref punPortRemote); + return result; +} +public override bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort) +{ + CheckIfUsable(); + pnIP = 0; + pnPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetListenSocketInfo(m_pSteamNetworking,hListenSocket,ref pnIP,ref pnPort); + return result; +} +public override uint GetSocketConnectionType(uint hSocket) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketConnectionType(m_pSteamNetworking,hSocket); + return result; +} +public override int GetMaxPacketSize(uint hSocket) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetMaxPacketSize(m_pSteamNetworking,hSocket); + return result; +} +} + + +public class CSteamScreenshots : ISteamScreenshots +{ +public CSteamScreenshots(IntPtr SteamScreenshots) +{ + m_pSteamScreenshots = SteamScreenshots; +} +IntPtr m_pSteamScreenshots; + +public override IntPtr GetIntPtr() { return m_pSteamScreenshots; } + +private void CheckIfUsable() +{ + if (m_pSteamScreenshots == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_WriteScreenshot(m_pSteamScreenshots,pubRGB,cubRGB,nWidth,nHeight); + return result; +} +public override uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(m_pSteamScreenshots,pchFilename,pchThumbnailFilename,nWidth,nHeight); + return result; +} +public override void TriggerScreenshot() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_TriggerScreenshot(m_pSteamScreenshots); +} +public override void HookScreenshots(bool bHook) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_HookScreenshots(m_pSteamScreenshots,bHook); +} +public override bool SetLocation(uint hScreenshot,string pchLocation) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_SetLocation(m_pSteamScreenshots,hScreenshot,pchLocation); + return result; +} +public override bool TagUser(uint hScreenshot,ulong steamID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagUser(m_pSteamScreenshots,hScreenshot,steamID); + return result; +} +public override bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagPublishedFile(m_pSteamScreenshots,hScreenshot,unPublishedFileID); + return result; +} +public override bool IsScreenshotsHooked() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_IsScreenshotsHooked(m_pSteamScreenshots); + return result; +} +public override uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(m_pSteamScreenshots,eType,pchFilename,pchVRFilename); + return result; +} +} + + +public class CSteamMusic : ISteamMusic +{ +public CSteamMusic(IntPtr SteamMusic) +{ + m_pSteamMusic = SteamMusic; +} +IntPtr m_pSteamMusic; + +public override IntPtr GetIntPtr() { return m_pSteamMusic; } + +private void CheckIfUsable() +{ + if (m_pSteamMusic == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsEnabled(m_pSteamMusic); + return result; +} +public override bool BIsPlaying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsPlaying(m_pSteamMusic); + return result; +} +public override int GetPlaybackStatus() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMusic_GetPlaybackStatus(m_pSteamMusic); + return result; +} +public override void Play() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Play(m_pSteamMusic); +} +public override void Pause() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Pause(m_pSteamMusic); +} +public override void PlayPrevious() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayPrevious(m_pSteamMusic); +} +public override void PlayNext() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayNext(m_pSteamMusic); +} +public override void SetVolume(float flVolume) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_SetVolume(m_pSteamMusic,flVolume); +} +public override float GetVolume() +{ + CheckIfUsable(); + float result = NativeEntrypoints.SteamAPI_ISteamMusic_GetVolume(m_pSteamMusic); + return result; +} +} + + +public class CSteamMusicRemote : ISteamMusicRemote +{ +public CSteamMusicRemote(IntPtr SteamMusicRemote) +{ + m_pSteamMusicRemote = SteamMusicRemote; +} +IntPtr m_pSteamMusicRemote; + +public override IntPtr GetIntPtr() { return m_pSteamMusicRemote; } + +private void CheckIfUsable() +{ + if (m_pSteamMusicRemote == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RegisterSteamMusicRemote(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(m_pSteamMusicRemote,pchName); + return result; +} +public override bool DeregisterSteamMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BIsCurrentMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BActivationSuccess(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BActivationSuccess(m_pSteamMusicRemote,bValue); + return result; +} +public override bool SetDisplayName(string pchDisplayName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetDisplayName(m_pSteamMusicRemote,pchDisplayName); + return result; +} +public override bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool EnablePlayPrevious(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayPrevious(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlayNext(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayNext(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableQueue(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableQueue(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlaylists(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlaylists(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdatePlaybackStatus(int nStatus) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(m_pSteamMusicRemote,nStatus); + return result; +} +public override bool UpdateShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateVolume(float flValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateVolume(m_pSteamMusicRemote,flValue); + return result; +} +public override bool CurrentEntryWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(m_pSteamMusicRemote); + return result; +} +public override bool CurrentEntryIsAvailable(bool bAvailable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(m_pSteamMusicRemote,bAvailable); + return result; +} +public override bool UpdateCurrentEntryText(string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(m_pSteamMusicRemote,pchText); + return result; +} +public override bool UpdateCurrentEntryElapsedSeconds(int nValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(m_pSteamMusicRemote,nValue); + return result; +} +public override bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool CurrentEntryDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(m_pSteamMusicRemote); + return result; +} +public override bool QueueWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetQueueEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetQueueEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetQueueEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetQueueEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentQueueEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool QueueDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueDidChange(m_pSteamMusicRemote); + return result; +} +public override bool PlaylistWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetPlaylistEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPlaylistEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentPlaylistEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool PlaylistDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistDidChange(m_pSteamMusicRemote); + return result; +} +} + + +public class CSteamHTTP : ISteamHTTP +{ +public CSteamHTTP(IntPtr SteamHTTP) +{ + m_pSteamHTTP = SteamHTTP; +} +IntPtr m_pSteamHTTP; + +public override IntPtr GetIntPtr() { return m_pSteamHTTP; } + +private void CheckIfUsable() +{ + if (m_pSteamHTTP == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateHTTPRequest(m_pSteamHTTP,eHTTPRequestMethod,pchAbsoluteURL); + return result; +} +public override bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(m_pSteamHTTP,hRequest,ulContextValue); + return result; +} +public override bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(m_pSteamHTTP,hRequest,unTimeoutSeconds); + return result; +} +public override bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pchHeaderValue); + return result; +} +public override bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(m_pSteamHTTP,hRequest,pchParamName,pchParamValue); + return result; +} +public override bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequest(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool DeferHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_DeferHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool PrioritizeHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize) +{ + CheckIfUsable(); + unResponseHeaderSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(m_pSteamHTTP,hRequest,pchHeaderName,ref unResponseHeaderSize); + return result; +} +public override bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pHeaderValueBuffer,unBufferSize); + return result; +} +public override bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize) +{ + CheckIfUsable(); + unBodySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(m_pSteamHTTP,hRequest,ref unBodySize); + return result; +} +public override bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(m_pSteamHTTP,hRequest,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(m_pSteamHTTP,hRequest,cOffset,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool ReleaseHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut) +{ + CheckIfUsable(); + pflPercentOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(m_pSteamHTTP,hRequest,ref pflPercentOut); + return result; +} +public override bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(m_pSteamHTTP,hRequest,pchContentType,pubBody,unBodyLen); + return result; +} +public override uint CreateCookieContainer(bool bAllowResponsesToModify) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateCookieContainer(m_pSteamHTTP,bAllowResponsesToModify); + return result; +} +public override bool ReleaseCookieContainer(uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseCookieContainer(m_pSteamHTTP,hCookieContainer); + return result; +} +public override bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetCookie(m_pSteamHTTP,hCookieContainer,pchHost,pchUrl,pchCookie); + return result; +} +public override bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(m_pSteamHTTP,hRequest,hCookieContainer); + return result; +} +public override bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(m_pSteamHTTP,hRequest,pchUserAgentInfo); + return result; +} +public override bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(m_pSteamHTTP,hRequest,bRequireVerifiedCertificate); + return result; +} +public override bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(m_pSteamHTTP,hRequest,unMilliseconds); + return result; +} +public override bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut) +{ + CheckIfUsable(); + pbWasTimedOut = false; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(m_pSteamHTTP,hRequest,ref pbWasTimedOut); + return result; +} +} + + +public class CSteamUnifiedMessages : ISteamUnifiedMessages +{ +public CSteamUnifiedMessages(IntPtr SteamUnifiedMessages) +{ + m_pSteamUnifiedMessages = SteamUnifiedMessages; +} +IntPtr m_pSteamUnifiedMessages; + +public override IntPtr GetIntPtr() { return m_pSteamUnifiedMessages; } + +private void CheckIfUsable() +{ + if (m_pSteamUnifiedMessages == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendMethod(m_pSteamUnifiedMessages,pchServiceMethod,pRequestBuffer,unRequestBufferSize,unContext); + return result; +} +public override bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult) +{ + CheckIfUsable(); + punResponseSize = 0; + peResult = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(m_pSteamUnifiedMessages,hHandle,ref punResponseSize,ref peResult); + return result; +} +public override bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(m_pSteamUnifiedMessages,hHandle,pResponseBuffer,unResponseBufferSize,bAutoRelease); + return result; +} +public override bool ReleaseMethod(ulong hHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_ReleaseMethod(m_pSteamUnifiedMessages,hHandle); + return result; +} +public override bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendNotification(m_pSteamUnifiedMessages,pchServiceNotification,pNotificationBuffer,unNotificationBufferSize); + return result; +} +} + + +public class CSteamController : ISteamController +{ +public CSteamController(IntPtr SteamController) +{ + m_pSteamController = SteamController; +} +IntPtr m_pSteamController; + +public override IntPtr GetIntPtr() { return m_pSteamController; } + +private void CheckIfUsable() +{ + if (m_pSteamController == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Init(m_pSteamController); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Shutdown(m_pSteamController); + return result; +} +public override void RunFrame() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_RunFrame(m_pSteamController); +} +public override int GetConnectedControllers(ref ulong handlesOut) +{ + CheckIfUsable(); + handlesOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetConnectedControllers(m_pSteamController,ref handlesOut); + return result; +} +public override bool ShowBindingPanel(ulong controllerHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowBindingPanel(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetActionSetHandle(string pszActionSetName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetActionSetHandle(m_pSteamController,pszActionSetName); + return result; +} +public override void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_ActivateActionSet(m_pSteamController,controllerHandle,actionSetHandle); +} +public override ulong GetCurrentActionSet(ulong controllerHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetCurrentActionSet(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetDigitalActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle) +{ + CheckIfUsable(); + ControllerDigitalActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionData(m_pSteamController,controllerHandle,digitalActionHandle); + return result; +} +public override int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,digitalActionHandle,ref originsOut); + return result; +} +public override ulong GetAnalogActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle) +{ + CheckIfUsable(); + ControllerAnalogActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionData(m_pSteamController,controllerHandle,analogActionHandle); + return result; +} +public override int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,analogActionHandle,ref originsOut); + return result; +} +public override void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_StopAnalogActionMomentum(m_pSteamController,controllerHandle,eAction); +} +public override void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec); +} +public override void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerRepeatedHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec,usOffMicroSec,unRepeat,nFlags); +} +public override int GetGamepadIndexForController(ulong ulControllerHandle) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamController_GetGamepadIndexForController(m_pSteamController,ulControllerHandle); + return result; +} +public override ulong GetControllerForGamepadIndex(int nIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetControllerForGamepadIndex(m_pSteamController,nIndex); + return result; +} +public override ControllerMotionData_t GetMotionData(ulong controllerHandle) +{ + CheckIfUsable(); + ControllerMotionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetMotionData(m_pSteamController,controllerHandle); + return result; +} +public override bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowDigitalActionOrigins(m_pSteamController,controllerHandle,digitalActionHandle,flScale,flXPosition,flYPosition); + return result; +} +public override bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowAnalogActionOrigins(m_pSteamController,controllerHandle,analogActionHandle,flScale,flXPosition,flYPosition); + return result; +} +} + + +public class CSteamUGC : ISteamUGC +{ +public CSteamUGC(IntPtr SteamUGC) +{ + m_pSteamUGC = SteamUGC; +} +IntPtr m_pSteamUGC; + +public override IntPtr GetIntPtr() { return m_pSteamUGC; } + +private void CheckIfUsable() +{ + if (m_pSteamUGC == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(m_pSteamUGC,unAccountID,eListType,eMatchingUGCType,eSortOrder,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(m_pSteamUGC,eQueryType,eMatchingeMatchingUGCTypeFileType,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong SendQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SendQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCResult(m_pSteamUGC,handle,index,ref pDetails); + return result; +} +public override bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchURL = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCMetadata(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchMetadata = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCChildren(m_pSteamUGC,handle,index,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue) +{ + CheckIfUsable(); + pStatValue = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCStatistic(m_pSteamUGC,handle,index,eStatType,ref pStatValue); + return result; +} +public override uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType) +{ + CheckIfUsable(); + pPreviewType = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,pStrBuffer2,cchOriginalFileNameSize,ref pPreviewType); + pchURLOrVideoID = pStrBuffer1.ToString(); + pchOriginalFileName = pStrBuffer2.ToString(); + return result; +} +public override uint GetQueryUGCNumKeyValueTags(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(m_pSteamUGC,handle,index,keyValueTagIndex,pStrBuffer1,2048,pStrBuffer2,2048); + pchKey = pStrBuffer1.ToString(); + pchValue = pStrBuffer2.ToString(); + return result; +} +public override bool ReleaseQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool AddRequiredTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool AddExcludedTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddExcludedTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnOnlyIDs(m_pSteamUGC,handle,bReturnOnlyIDs); + return result; +} +public override bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnKeyValueTags(m_pSteamUGC,handle,bReturnKeyValueTags); + return result; +} +public override bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnLongDescription(m_pSteamUGC,handle,bReturnLongDescription); + return result; +} +public override bool SetReturnMetadata(ulong handle,bool bReturnMetadata) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnMetadata(m_pSteamUGC,handle,bReturnMetadata); + return result; +} +public override bool SetReturnChildren(ulong handle,bool bReturnChildren) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnChildren(m_pSteamUGC,handle,bReturnChildren); + return result; +} +public override bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(m_pSteamUGC,handle,bReturnAdditionalPreviews); + return result; +} +public override bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnTotalOnly(m_pSteamUGC,handle,bReturnTotalOnly); + return result; +} +public override bool SetLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetAllowCachedResponse(m_pSteamUGC,handle,unMaxAgeSeconds); + return result; +} +public override bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetCloudFileNameFilter(m_pSteamUGC,handle,pMatchCloudFileName); + return result; +} +public override bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetMatchAnyTag(m_pSteamUGC,handle,bMatchAnyTag); + return result; +} +public override bool SetSearchText(ulong handle,string pSearchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetSearchText(m_pSteamUGC,handle,pSearchText); + return result; +} +public override bool SetRankedByTrendDays(ulong handle,uint unDays) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetRankedByTrendDays(m_pSteamUGC,handle,unDays); + return result; +} +public override bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredKeyValueTag(m_pSteamUGC,handle,pKey,pValue); + return result; +} +public override ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RequestUGCDetails(m_pSteamUGC,nPublishedFileID,unMaxAgeSeconds); + return result; +} +public override ulong CreateItem(uint nConsumerAppId,uint eFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateItem(m_pSteamUGC,nConsumerAppId,eFileType); + return result; +} +public override ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartItemUpdate(m_pSteamUGC,nConsumerAppId,nPublishedFileID); + return result; +} +public override bool SetItemTitle(ulong handle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTitle(m_pSteamUGC,handle,pchTitle); + return result; +} +public override bool SetItemDescription(ulong handle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemDescription(m_pSteamUGC,handle,pchDescription); + return result; +} +public override bool SetItemUpdateLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemUpdateLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetItemMetadata(ulong handle,string pchMetaData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemMetadata(m_pSteamUGC,handle,pchMetaData); + return result; +} +public override bool SetItemVisibility(ulong handle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemVisibility(m_pSteamUGC,handle,eVisibility); + return result; +} +public override bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTags(m_pSteamUGC,updateHandle,ref pTags); + return result; +} +public override bool SetItemContent(ulong handle,string pszContentFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemContent(m_pSteamUGC,handle,pszContentFolder); + return result; +} +public override bool SetItemPreview(ulong handle,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemPreview(m_pSteamUGC,handle,pszPreviewFile); + return result; +} +public override bool RemoveItemKeyValueTags(ulong handle,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemKeyValueTags(m_pSteamUGC,handle,pchKey); + return result; +} +public override bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemKeyValueTag(m_pSteamUGC,handle,pchKey,pchValue); + return result; +} +public override bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewFile(m_pSteamUGC,handle,pszPreviewFile,type); + return result; +} +public override bool AddItemPreviewVideo(ulong handle,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewVideo(m_pSteamUGC,handle,pszVideoID); + return result; +} +public override bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewFile(m_pSteamUGC,handle,index,pszPreviewFile); + return result; +} +public override bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewVideo(m_pSteamUGC,handle,index,pszVideoID); + return result; +} +public override bool RemoveItemPreview(ulong handle,uint index) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemPreview(m_pSteamUGC,handle,index); + return result; +} +public override ulong SubmitItemUpdate(ulong handle,string pchChangeNote) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubmitItemUpdate(m_pSteamUGC,handle,pchChangeNote); + return result; +} +public override uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesProcessed = 0; + punBytesTotal = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemUpdateProgress(m_pSteamUGC,handle,ref punBytesProcessed,ref punBytesTotal); + return result; +} +public override ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SetUserItemVote(m_pSteamUGC,nPublishedFileID,bVoteUp); + return result; +} +public override ulong GetUserItemVote(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_GetUserItemVote(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemToFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemFromFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong SubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong UnsubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_UnsubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override uint GetNumSubscribedItems() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetNumSubscribedItems(m_pSteamUGC); + return result; +} +public override uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetSubscribedItems(m_pSteamUGC,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override uint GetItemState(ulong nPublishedFileID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemState(m_pSteamUGC,nPublishedFileID); + return result; +} +public override bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp) +{ + CheckIfUsable(); + punSizeOnDisk = 0; + punTimeStamp = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemInstallInfo(m_pSteamUGC,nPublishedFileID,ref punSizeOnDisk,pStrBuffer1,2048,ref punTimeStamp); + pchFolder = pStrBuffer1.ToString(); + return result; +} +public override bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemDownloadInfo(m_pSteamUGC,nPublishedFileID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override bool DownloadItem(ulong nPublishedFileID,bool bHighPriority) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_DownloadItem(m_pSteamUGC,nPublishedFileID,bHighPriority); + return result; +} +public override bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_BInitWorkshopForGameServer(m_pSteamUGC,unWorkshopDepotID,pszFolder); + return result; +} +public override void SuspendDownloads(bool bSuspend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUGC_SuspendDownloads(m_pSteamUGC,bSuspend); +} +public override ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTrackingForAllItems() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(m_pSteamUGC); + return result; +} +} + + +public class CSteamAppList : ISteamAppList +{ +public CSteamAppList(IntPtr SteamAppList) +{ + m_pSteamAppList = SteamAppList; +} +IntPtr m_pSteamAppList; + +public override IntPtr GetIntPtr() { return m_pSteamAppList; } + +private void CheckIfUsable() +{ + if (m_pSteamAppList == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetNumInstalledApps() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetNumInstalledApps(m_pSteamAppList); + return result; +} +public override uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs) +{ + CheckIfUsable(); + pvecAppID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetInstalledApps(m_pSteamAppList,ref pvecAppID,unMaxAppIDs); + return result; +} +public override int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppName(m_pSteamAppList,nAppID,pchName,cchNameMax); + return result; +} +public override int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppInstallDir(m_pSteamAppList,nAppID,pchDirectory,cchNameMax); + return result; +} +public override int GetAppBuildId(uint nAppID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppBuildId(m_pSteamAppList,nAppID); + return result; +} +} + + +public class CSteamHTMLSurface : ISteamHTMLSurface +{ +public CSteamHTMLSurface(IntPtr SteamHTMLSurface) +{ + m_pSteamHTMLSurface = SteamHTMLSurface; +} +IntPtr m_pSteamHTMLSurface; + +public override IntPtr GetIntPtr() { return m_pSteamHTMLSurface; } + +private void CheckIfUsable() +{ + if (m_pSteamHTMLSurface == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void DestructISteamHTMLSurface() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(m_pSteamHTMLSurface); +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Init(m_pSteamHTMLSurface); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Shutdown(m_pSteamHTMLSurface); + return result; +} +public override ulong CreateBrowser(string pchUserAgent,string pchUserCSS) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CreateBrowser(m_pSteamHTMLSurface,pchUserAgent,pchUserCSS); + return result; +} +public override void RemoveBrowser(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_RemoveBrowser(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_LoadURL(m_pSteamHTMLSurface,unBrowserHandle,pchURL,pchPostData); +} +public override void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetSize(m_pSteamHTMLSurface,unBrowserHandle,unWidth,unHeight); +} +public override void StopLoad(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopLoad(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Reload(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Reload(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoBack(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoBack(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoForward(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoForward(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void AddHeader(uint unBrowserHandle,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AddHeader(m_pSteamHTMLSurface,unBrowserHandle,pchKey,pchValue); +} +public override void ExecuteJavascript(uint unBrowserHandle,string pchScript) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ExecuteJavascript(m_pSteamHTMLSurface,unBrowserHandle,pchScript); +} +public override void MouseUp(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseUp(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDown(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDown(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDoubleClick(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseMove(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseMove(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void MouseWheel(uint unBrowserHandle,int nDelta) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseWheel(m_pSteamHTMLSurface,unBrowserHandle,nDelta); +} +public override void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyDown(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyUp(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyChar(m_pSteamHTMLSurface,unBrowserHandle,cUnicodeChar,eHTMLKeyModifiers); +} +public override void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetVerticalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetKeyFocus(m_pSteamHTMLSurface,unBrowserHandle,bHasKeyFocus); +} +public override void ViewSource(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ViewSource(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void CopyToClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CopyToClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void PasteFromClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_PasteFromClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Find(m_pSteamHTMLSurface,unBrowserHandle,pchSearchStr,bCurrentlyInFind,bReverse); +} +public override void StopFind(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopFind(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GetLinkAtPosition(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetCookie(m_pSteamHTMLSurface,pchHostname,pchKey,pchValue,pchPath,nExpires,bSecure,bHTTPOnly); +} +public override void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(m_pSteamHTMLSurface,unBrowserHandle,flZoom,nPointX,nPointY); +} +public override void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetBackgroundMode(m_pSteamHTMLSurface,unBrowserHandle,bBackgroundMode); +} +public override void AllowStartRequest(uint unBrowserHandle,bool bAllowed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AllowStartRequest(m_pSteamHTMLSurface,unBrowserHandle,bAllowed); +} +public override void JSDialogResponse(uint unBrowserHandle,bool bResult) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_JSDialogResponse(m_pSteamHTMLSurface,unBrowserHandle,bResult); +} +} + + +public class CSteamInventory : ISteamInventory +{ +public CSteamInventory(IntPtr SteamInventory) +{ + m_pSteamInventory = SteamInventory; +} +IntPtr m_pSteamInventory; + +public override IntPtr GetIntPtr() { return m_pSteamInventory; } + +private void CheckIfUsable() +{ + if (m_pSteamInventory == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetResultStatus(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultStatus(m_pSteamInventory,resultHandle); + return result; +} +public override bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray) +{ + CheckIfUsable(); + uint punOutItemsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,null,ref punOutItemsArraySize); + pOutItemsArray= new SteamItemDetails_t[punOutItemsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,pOutItemsArray,ref punOutItemsArraySize); + return result; +} +public override uint GetResultTimestamp(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultTimestamp(m_pSteamInventory,resultHandle); + return result; +} +public override bool CheckResultSteamID(int resultHandle,ulong steamIDExpected) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_CheckResultSteamID(m_pSteamInventory,resultHandle,steamIDExpected); + return result; +} +public override void DestroyResult(int resultHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_DestroyResult(m_pSteamInventory,resultHandle); +} +public override bool GetAllItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetAllItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsByID(m_pSteamInventory,ref pResultHandle,pInstanceIDs,(uint) pInstanceIDs.Length); + return result; +} +public override bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize) +{ + CheckIfUsable(); + punOutBufferSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SerializeResult(m_pSteamInventory,resultHandle,pOutBuffer,ref punOutBufferSize); + return result; +} +public override bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE) +{ + CheckIfUsable(); + pOutResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_DeserializeResult(m_pSteamInventory,ref pOutResultHandle,pBuffer,unBufferSize,bRESERVED_MUST_BE_FALSE); + return result; +} +public override bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GenerateItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,punArrayQuantity,(uint) punArrayQuantity.Length); + return result; +} +public override bool GrantPromoItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GrantPromoItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool AddPromoItem(ref int pResultHandle,int itemDef) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItem(m_pSteamInventory,ref pResultHandle,itemDef); + return result; +} +public override bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,(uint) pArrayItemDefs.Length); + return result; +} +public override bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ConsumeItem(m_pSteamInventory,ref pResultHandle,itemConsume,unQuantity); + return result; +} +public override bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ExchangeItems(m_pSteamInventory,ref pResultHandle,pArrayGenerate,punArrayGenerateQuantity,(uint) punArrayGenerateQuantity.Length,pArrayDestroy,punArrayDestroyQuantity,(uint) punArrayDestroyQuantity.Length); + return result; +} +public override bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TransferItemQuantity(m_pSteamInventory,ref pResultHandle,itemIdSource,unQuantity,itemIdDest); + return result; +} +public override void SendItemDropHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_SendItemDropHeartbeat(m_pSteamInventory); +} +public override bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TriggerItemDrop(m_pSteamInventory,ref pResultHandle,dropListDefinition); + return result; +} +public override bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TradeItems(m_pSteamInventory,ref pResultHandle,steamIDTradePartner,pArrayGive,pArrayGiveQuantity,(uint) pArrayGiveQuantity.Length,pArrayGet,pArrayGetQuantity,(uint) pArrayGetQuantity.Length); + return result; +} +public override bool LoadItemDefinitions() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_LoadItemDefinitions(m_pSteamInventory); + return result; +} +public override bool GetItemDefinitionIDs(out int [] pItemDefIDs) +{ + CheckIfUsable(); + uint punItemDefIDsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,null,ref punItemDefIDsArraySize); + pItemDefIDs= new int[punItemDefIDsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,pItemDefIDs,ref punItemDefIDsArraySize); + return result; +} +public override bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer) +{ + CheckIfUsable(); + uint punValueBufferSizeOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,null,ref punValueBufferSizeOut); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); + pchValueBuffer = pStrBuffer1.ToString(); + return result; +} +} + + +public class CSteamVideo : ISteamVideo +{ +public CSteamVideo(IntPtr SteamVideo) +{ + m_pSteamVideo = SteamVideo; +} +IntPtr m_pSteamVideo; + +public override IntPtr GetIntPtr() { return m_pSteamVideo; } + +private void CheckIfUsable() +{ + if (m_pSteamVideo == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void GetVideoURL(uint unVideoAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamVideo_GetVideoURL(m_pSteamVideo,unVideoAppID); +} +public override bool IsBroadcasting(ref int pnNumViewers) +{ + CheckIfUsable(); + pnNumViewers = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamVideo_IsBroadcasting(m_pSteamVideo,ref pnNumViewers); + return result; +} +} + + +public class CSteamGameServer : ISteamGameServer +{ +public CSteamGameServer(IntPtr SteamGameServer) +{ + m_pSteamGameServer = SteamGameServer; +} +IntPtr m_pSteamGameServer; + +public override IntPtr GetIntPtr() { return m_pSteamGameServer; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServer == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_InitGameServer(m_pSteamGameServer,unIP,usGamePort,usQueryPort,unFlags,nGameAppId,pchVersionString); + return result; +} +public override void SetProduct(string pszProduct) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetProduct(m_pSteamGameServer,pszProduct); +} +public override void SetGameDescription(string pszGameDescription) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameDescription(m_pSteamGameServer,pszGameDescription); +} +public override void SetModDir(string pszModDir) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetModDir(m_pSteamGameServer,pszModDir); +} +public override void SetDedicatedServer(bool bDedicated) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetDedicatedServer(m_pSteamGameServer,bDedicated); +} +public override void LogOn(string pszToken) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOn(m_pSteamGameServer,pszToken); +} +public override void LogOnAnonymous() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOnAnonymous(m_pSteamGameServer); +} +public override void LogOff() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOff(m_pSteamGameServer); +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BLoggedOn(m_pSteamGameServer); + return result; +} +public override bool BSecure() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BSecure(m_pSteamGameServer); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetSteamID(m_pSteamGameServer); + return result; +} +public override bool WasRestartRequested() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_WasRestartRequested(m_pSteamGameServer); + return result; +} +public override void SetMaxPlayerCount(int cPlayersMax) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMaxPlayerCount(m_pSteamGameServer,cPlayersMax); +} +public override void SetBotPlayerCount(int cBotplayers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetBotPlayerCount(m_pSteamGameServer,cBotplayers); +} +public override void SetServerName(string pszServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetServerName(m_pSteamGameServer,pszServerName); +} +public override void SetMapName(string pszMapName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMapName(m_pSteamGameServer,pszMapName); +} +public override void SetPasswordProtected(bool bPasswordProtected) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetPasswordProtected(m_pSteamGameServer,bPasswordProtected); +} +public override void SetSpectatorPort(char unSpectatorPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorPort(m_pSteamGameServer,unSpectatorPort); +} +public override void SetSpectatorServerName(string pszSpectatorServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorServerName(m_pSteamGameServer,pszSpectatorServerName); +} +public override void ClearAllKeyValues() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ClearAllKeyValues(m_pSteamGameServer); +} +public override void SetKeyValue(string pKey,string pValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetKeyValue(m_pSteamGameServer,pKey,pValue); +} +public override void SetGameTags(string pchGameTags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameTags(m_pSteamGameServer,pchGameTags); +} +public override void SetGameData(string pchGameData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameData(m_pSteamGameServer,pchGameData); +} +public override void SetRegion(string pszRegion) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetRegion(m_pSteamGameServer,pszRegion); +} +public override bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(m_pSteamGameServer,unIPClient,pvAuthBlob,cubAuthBlobSize,ref pSteamIDUser); + return result; +} +public override ulong CreateUnauthenticatedUserConnection() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(m_pSteamGameServer); + return result; +} +public override void SendUserDisconnect(ulong steamIDUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserDisconnect(m_pSteamGameServer,steamIDUser); +} +public override bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BUpdateUserData(m_pSteamGameServer,steamIDUser,pchPlayerName,uScore); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetAuthSessionTicket(m_pSteamGameServer,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_BeginAuthSession(m_pSteamGameServer,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EndAuthSession(m_pSteamGameServer,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_CancelAuthTicket(m_pSteamGameServer,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_UserHasLicenseForApp(m_pSteamGameServer,steamID,appID); + return result; +} +public override bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_RequestUserGroupStatus(m_pSteamGameServer,steamIDUser,steamIDGroup); + return result; +} +public override void GetGameplayStats() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_GetGameplayStats(m_pSteamGameServer); +} +public override ulong GetServerReputation() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetServerReputation(m_pSteamGameServer); + return result; +} +public override uint GetPublicIP() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetPublicIP(m_pSteamGameServer); + return result; +} +public override bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_HandleIncomingPacket(m_pSteamGameServer,pData,cbData,srcIP,srcPort); + return result; +} +public override int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort) +{ + CheckIfUsable(); + pNetAdr = 0; + pPort = (char) 0; + int result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetNextOutgoingPacket(m_pSteamGameServer,pOut,cbMaxOut,ref pNetAdr,ref pPort); + return result; +} +public override void EnableHeartbeats(bool bActive) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EnableHeartbeats(m_pSteamGameServer,bActive); +} +public override void SetHeartbeatInterval(int iHeartbeatInterval) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetHeartbeatInterval(m_pSteamGameServer,iHeartbeatInterval); +} +public override void ForceHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ForceHeartbeat(m_pSteamGameServer); +} +public override ulong AssociateWithClan(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_AssociateWithClan(m_pSteamGameServer,steamIDClan); + return result; +} +public override ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(m_pSteamGameServer,steamIDNewPlayer); + return result; +} +} + + +public class CSteamGameServerStats : ISteamGameServerStats +{ +public CSteamGameServerStats(IntPtr SteamGameServerStats) +{ + m_pSteamGameServerStats = SteamGameServerStats; +} +IntPtr m_pSteamGameServerStats; + +public override IntPtr GetIntPtr() { return m_pSteamGameServerStats; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServerStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_RequestUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool SetUserStat(ulong steamIDUser,string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,nData); + return result; +} +public override bool SetUserStat0(ulong steamIDUser,string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,fData); + return result; +} +public override bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(m_pSteamGameServerStats,steamIDUser,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool SetUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override bool ClearUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_ClearUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override ulong StoreUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_StoreUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +} + + +public class CUserStatsReceived_t_Callback +{ + public CUserStatsReceived_t_Callback() { } + ~CUserStatsReceived_t_Callback() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_Callback func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallback(func); + } +} +public class CRemoteStorageFileReadAsyncComplete_t_CallResult +{ + public CRemoteStorageFileReadAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileReadAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CFileDetailsResult_t_CallResult +{ + public CFileDetailsResult_t_CallResult() { } + ~CFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsStored_t_CallResult +{ + public CGSStatsStored_t_CallResult() { } + ~CGSStatsStored_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsStored_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsStored_t_SetCallResult(hAPICall, func); + } +} +public class CHTML_BrowserReady_t_CallResult +{ + public CHTML_BrowserReady_t_CallResult() { } + ~CHTML_BrowserReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_HTML_BrowserReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsGetFollowerCount_t_CallResult +{ + public CFriendsGetFollowerCount_t_CallResult() { } + ~CFriendsGetFollowerCount_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsGetFollowerCount_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsIsFollowing_t_CallResult +{ + public CFriendsIsFollowing_t_CallResult() { } + ~CFriendsIsFollowing_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsIsFollowing_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyMatchList_t_CallResult +{ + public CLobbyMatchList_t_CallResult() { } + ~CLobbyMatchList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyMatchList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdatePublishedFileResult_t_CallResult +{ + public CRemoteStorageUpdatePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUpdatePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CStoreAuthURLResponse_t_CallResult +{ + public CStoreAuthURLResponse_t_CallResult() { } + ~CStoreAuthURLResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StoreAuthURLResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyCreated_t_CallResult +{ + public CLobbyCreated_t_CallResult() { } + ~CLobbyCreated_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyCreated_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyCreated_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileWriteAsyncComplete_t_CallResult +{ + public CRemoteStorageFileWriteAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileWriteAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDeletePublishedFileResult_t_CallResult +{ + public CRemoteStorageDeletePublishedFileResult_t_CallResult() { } + ~CRemoteStorageDeletePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedFileDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDownloadUGCResult_t_CallResult +{ + public CRemoteStorageDownloadUGCResult_t_CallResult() { } + ~CRemoteStorageDownloadUGCResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_SetCallResult(hAPICall, func); + } +} +public class CSteamUGCQueryCompleted_t_CallResult +{ + public CSteamUGCQueryCompleted_t_CallResult() { } + ~CSteamUGCQueryCompleted_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamUGCQueryCompleted_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileShareResult_t_CallResult +{ + public CRemoteStorageFileShareResult_t_CallResult() { } + ~CRemoteStorageFileShareResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileShareResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyEnter_t_CallResult +{ + public CLobbyEnter_t_CallResult() { } + ~CLobbyEnter_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyEnter_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyEnter_t_SetCallResult(hAPICall, func); + } +} +public class CSubmitItemUpdateResult_t_CallResult +{ + public CSubmitItemUpdateResult_t_CallResult() { } + ~CSubmitItemUpdateResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SubmitItemUpdateResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_SetCallResult(hAPICall, func); + } +} +public class CNumberOfCurrentPlayers_t_CallResult +{ + public CNumberOfCurrentPlayers_t_CallResult() { } + ~CNumberOfCurrentPlayers_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_NumberOfCurrentPlayers_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsReceived_t_CallResult +{ + public CGSStatsReceived_t_CallResult() { } + ~CGSStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoresDownloaded_t_CallResult +{ + public CLeaderboardScoresDownloaded_t_CallResult() { } + ~CLeaderboardScoresDownloaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoresDownloaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult +{ + public CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() { } + ~CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CCreateItemResult_t_CallResult +{ + public CCreateItemResult_t_CallResult() { } + ~CCreateItemResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CreateItemResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCreateItemResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetUserItemVoteResult_t_CallResult +{ + public CSetUserItemVoteResult_t_CallResult() { } + ~CSetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CComputeNewPlayerCompatibilityResult_t_CallResult +{ + public CComputeNewPlayerCompatibilityResult_t_CallResult() { } + ~CComputeNewPlayerCompatibilityResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoreUploaded_t_CallResult +{ + public CLeaderboardScoreUploaded_t_CallResult() { } + ~CLeaderboardScoreUploaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoreUploaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalAchievementPercentagesReady_t_CallResult +{ + public CGlobalAchievementPercentagesReady_t_CallResult() { } + ~CGlobalAchievementPercentagesReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalStatsReceived_t_CallResult +{ + public CGlobalStatsReceived_t_CallResult() { } + ~CGlobalStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult +{ + public CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() { } + ~CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CClanOfficerListResponse_t_CallResult +{ + public CClanOfficerListResponse_t_CallResult() { } + ~CClanOfficerListResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ClanOfficerListResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStoragePublishFileProgress_t_CallResult +{ + public CRemoteStoragePublishFileProgress_t_CallResult() { } + ~CRemoteStoragePublishFileProgress_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSReputation_t_CallResult +{ + public CGSReputation_t_CallResult() { } + ~CGSReputation_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSReputation_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSReputation_t_SetCallResult(hAPICall, func); + } +} +public class CUserFavoriteItemsListChanged_t_CallResult +{ + public CUserFavoriteItemsListChanged_t_CallResult() { } + ~CUserFavoriteItemsListChanged_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserFavoriteItemsListChanged_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_SetCallResult(hAPICall, func); + } +} +public class CEncryptedAppTicketResponse_t_CallResult +{ + public CEncryptedAppTicketResponse_t_CallResult() { } + ~CEncryptedAppTicketResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_EncryptedAppTicketResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSetUserPublishedFileActionResult_t_CallResult +{ + public CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() { } + ~CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsEnumerateFollowingList_t_CallResult +{ + public CFriendsEnumerateFollowingList_t_CallResult() { } + ~CFriendsEnumerateFollowingList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsEnumerateFollowingList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageSubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageSubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CGetUserItemVoteResult_t_CallResult +{ + public CGetUserItemVoteResult_t_CallResult() { } + ~CGetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CAssociateWithClanResult_t_CallResult +{ + public CAssociateWithClanResult_t_CallResult() { } + ~CAssociateWithClanResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AssociateWithClanResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardUGCSet_t_CallResult +{ + public CLeaderboardUGCSet_t_CallResult() { } + ~CLeaderboardUGCSet_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardUGCSet_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_SetCallResult(hAPICall, func); + } +} +public class CCheckFileSignature_t_CallResult +{ + public CCheckFileSignature_t_CallResult() { } + ~CCheckFileSignature_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CheckFileSignature_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUnsubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetPersonaNameResponse_t_CallResult +{ + public CSetPersonaNameResponse_t_CallResult() { } + ~CSetPersonaNameResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetPersonaNameResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_SetCallResult(hAPICall, func); + } +} +public class CUserStatsReceived_t_CallResult +{ + public CUserStatsReceived_t_CallResult() { } + ~CUserStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CJoinClanChatRoomCompletionResult_t_CallResult +{ + public CJoinClanChatRoomCompletionResult_t_CallResult() { } + ~CJoinClanChatRoomCompletionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardFindResult_t_CallResult +{ + public CLeaderboardFindResult_t_CallResult() { } + ~CLeaderboardFindResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardFindResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_SetCallResult(hAPICall, func); + } +} +public class SteamAPIInterop +{ +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RestartAppIfNecessary")] +internal static extern void SteamAPI_RestartAppIfNecessary(uint unOwnAppID ); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_Init")] +internal static extern void SteamAPI_Init(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RunCallbacks")] +internal static extern void SteamAPI_RunCallbacks(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RegisterCallback")] +internal static extern void SteamAPI_RegisterCallback(IntPtr pCallback, int iCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_UnregisterCallback")] +internal static extern void SteamAPI_UnregisterCallback(IntPtr pCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamClient")] +internal static extern IntPtr SteamClient(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUser")] +internal static extern IntPtr SteamUser(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamFriends")] +internal static extern IntPtr SteamFriends(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUtils")] +internal static extern IntPtr SteamUtils(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmaking")] +internal static extern IntPtr SteamMatchmaking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServerListResponse")] +internal static extern IntPtr SteamMatchmakingServerListResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPingResponse")] +internal static extern IntPtr SteamMatchmakingPingResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPlayersResponse")] +internal static extern IntPtr SteamMatchmakingPlayersResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingRulesResponse")] +internal static extern IntPtr SteamMatchmakingRulesResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServers")] +internal static extern IntPtr SteamMatchmakingServers(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamRemoteStorage")] +internal static extern IntPtr SteamRemoteStorage(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUserStats")] +internal static extern IntPtr SteamUserStats(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamApps")] +internal static extern IntPtr SteamApps(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamNetworking")] +internal static extern IntPtr SteamNetworking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamScreenshots")] +internal static extern IntPtr SteamScreenshots(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusic")] +internal static extern IntPtr SteamMusic(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusicRemote")] +internal static extern IntPtr SteamMusicRemote(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTTP")] +internal static extern IntPtr SteamHTTP(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUnifiedMessages")] +internal static extern IntPtr SteamUnifiedMessages(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamController")] +internal static extern IntPtr SteamController(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUGC")] +internal static extern IntPtr SteamUGC(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAppList")] +internal static extern IntPtr SteamAppList(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTMLSurface")] +internal static extern IntPtr SteamHTMLSurface(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamInventory")] +internal static extern IntPtr SteamInventory(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamVideo")] +internal static extern IntPtr SteamVideo(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServer")] +internal static extern IntPtr SteamGameServer(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServerStats")] +internal static extern IntPtr SteamGameServerStats(); +} + + +public enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + k_EUniverseMax = 5, +} +public enum EResult +{ + k_EResultOK = 1, + k_EResultFail = 2, + k_EResultNoConnection = 3, + k_EResultInvalidPassword = 5, + k_EResultLoggedInElsewhere = 6, + k_EResultInvalidProtocolVer = 7, + k_EResultInvalidParam = 8, + k_EResultFileNotFound = 9, + k_EResultBusy = 10, + k_EResultInvalidState = 11, + k_EResultInvalidName = 12, + k_EResultInvalidEmail = 13, + k_EResultDuplicateName = 14, + k_EResultAccessDenied = 15, + k_EResultTimeout = 16, + k_EResultBanned = 17, + k_EResultAccountNotFound = 18, + k_EResultInvalidSteamID = 19, + k_EResultServiceUnavailable = 20, + k_EResultNotLoggedOn = 21, + k_EResultPending = 22, + k_EResultEncryptionFailure = 23, + k_EResultInsufficientPrivilege = 24, + k_EResultLimitExceeded = 25, + k_EResultRevoked = 26, + k_EResultExpired = 27, + k_EResultAlreadyRedeemed = 28, + k_EResultDuplicateRequest = 29, + k_EResultAlreadyOwned = 30, + k_EResultIPNotFound = 31, + k_EResultPersistFailed = 32, + k_EResultLockingFailed = 33, + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, + k_EResultBlocked = 40, + k_EResultIgnored = 41, + k_EResultNoMatch = 42, + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, + k_EResultAccountNotFeatured = 45, + k_EResultAdministratorOK = 46, + k_EResultContentVersion = 47, + k_EResultTryAnotherCM = 48, + k_EResultPasswordRequiredToKickSession = 49, + k_EResultAlreadyLoggedInElsewhere = 50, + k_EResultSuspended = 51, + k_EResultCancelled = 52, + k_EResultDataCorruption = 53, + k_EResultDiskFull = 54, + k_EResultRemoteCallFailed = 55, + k_EResultPasswordUnset = 56, + k_EResultExternalAccountUnlinked = 57, + k_EResultPSNTicketInvalid = 58, + k_EResultExternalAccountAlreadyLinked = 59, + k_EResultRemoteFileConflict = 60, + k_EResultIllegalPassword = 61, + k_EResultSameAsPreviousValue = 62, + k_EResultAccountLogonDenied = 63, + k_EResultCannotUseOldPassword = 64, + k_EResultInvalidLoginAuthCode = 65, + k_EResultAccountLogonDeniedNoMail = 66, + k_EResultHardwareNotCapableOfIPT = 67, + k_EResultIPTInitError = 68, + k_EResultParentalControlRestricted = 69, + k_EResultFacebookQueryError = 70, + k_EResultExpiredLoginAuthCode = 71, + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, + k_EResultRequirePasswordReEntry = 77, + k_EResultValueOutOfRange = 78, + k_EResultUnexpectedError = 79, + k_EResultDisabled = 80, + k_EResultInvalidCEGSubmission = 81, + k_EResultRestrictedDevice = 82, + k_EResultRegionLocked = 83, + k_EResultRateLimitExceeded = 84, + k_EResultAccountLoginDeniedNeedTwoFactor = 85, + k_EResultItemDeleted = 86, + k_EResultAccountLoginDeniedThrottle = 87, + k_EResultTwoFactorCodeMismatch = 88, + k_EResultTwoFactorActivationCodeMismatch = 89, + k_EResultAccountAssociatedToMultiplePartners = 90, + k_EResultNotModified = 91, + k_EResultNoMobileDevice = 92, + k_EResultTimeNotSynced = 93, + k_EResultSmsCodeFailed = 94, + k_EResultAccountLimitExceeded = 95, + k_EResultAccountActivityLimitExceeded = 96, + k_EResultPhoneActivityLimitExceeded = 97, + k_EResultRefundToWallet = 98, + k_EResultEmailSendFailure = 99, + k_EResultNotSettled = 100, + k_EResultNeedCaptcha = 101, + k_EResultGSLTDenied = 102, + k_EResultGSOwnerDenied = 103, + k_EResultInvalidItemType = 104, + k_EResultIPBanned = 105, + k_EResultGSLTExpired = 106, +} +public enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, +} +public enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +} +public enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, + k_EBeginAuthSessionResultInvalidTicket = 1, + k_EBeginAuthSessionResultDuplicateRequest = 2, + k_EBeginAuthSessionResultInvalidVersion = 3, + k_EBeginAuthSessionResultGameMismatch = 4, + k_EBeginAuthSessionResultExpiredTicket = 5, +} +public enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, + k_EAuthSessionResponseUserNotConnectedToSteam = 1, + k_EAuthSessionResponseNoLicenseOrExpired = 2, + k_EAuthSessionResponseVACBanned = 3, + k_EAuthSessionResponseLoggedInElseWhere = 4, + k_EAuthSessionResponseVACCheckTimedOut = 5, + k_EAuthSessionResponseAuthTicketCanceled = 6, + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, + k_EAuthSessionResponseAuthTicketInvalid = 8, + k_EAuthSessionResponsePublisherIssuedBan = 9, +} +public enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, + k_EUserHasLicenseResultDoesNotHaveLicense = 1, + k_EUserHasLicenseResultNoAuth = 2, +} +public enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, + k_EAccountTypeMultiseat = 2, + k_EAccountTypeGameServer = 3, + k_EAccountTypeAnonGameServer = 4, + k_EAccountTypePending = 5, + k_EAccountTypeContentServer = 6, + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, + k_EAccountTypeAnonUser = 10, + k_EAccountTypeMax = 11, +} +public enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, + k_EAppReleaseState_Unavailable = 1, + k_EAppReleaseState_Prerelease = 2, + k_EAppReleaseState_PreloadOnly = 3, + k_EAppReleaseState_Released = 4, +} +public enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0, + k_EAppOwnershipFlags_OwnsLicense = 1, + k_EAppOwnershipFlags_FreeLicense = 2, + k_EAppOwnershipFlags_RegionRestricted = 4, + k_EAppOwnershipFlags_LowViolence = 8, + k_EAppOwnershipFlags_InvalidPlatform = 16, + k_EAppOwnershipFlags_SharedLicense = 32, + k_EAppOwnershipFlags_FreeWeekend = 64, + k_EAppOwnershipFlags_RetailLicense = 128, + k_EAppOwnershipFlags_LicenseLocked = 256, + k_EAppOwnershipFlags_LicensePending = 512, + k_EAppOwnershipFlags_LicenseExpired = 1024, + k_EAppOwnershipFlags_LicensePermanent = 2048, + k_EAppOwnershipFlags_LicenseRecurring = 4096, + k_EAppOwnershipFlags_LicenseCanceled = 8192, + k_EAppOwnershipFlags_AutoGrant = 16384, + k_EAppOwnershipFlags_PendingGift = 32768, + k_EAppOwnershipFlags_RentalNotActivated = 65536, + k_EAppOwnershipFlags_Rental = 131072, +} +public enum EAppType +{ + k_EAppType_Invalid = 0, + k_EAppType_Game = 1, + k_EAppType_Application = 2, + k_EAppType_Tool = 4, + k_EAppType_Demo = 8, + k_EAppType_Media_DEPRECATED = 16, + k_EAppType_DLC = 32, + k_EAppType_Guide = 64, + k_EAppType_Driver = 128, + k_EAppType_Config = 256, + k_EAppType_Hardware = 512, + k_EAppType_Franchise = 1024, + k_EAppType_Video = 2048, + k_EAppType_Plugin = 4096, + k_EAppType_Music = 8192, + k_EAppType_Series = 16384, + k_EAppType_Shortcut = 1073741824, + k_EAppType_DepotOnly = -2147483648, +} +public enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + k_ESteamUserStatTypeMAX = 6, +} +public enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, + k_EChatEntryTypeTyping = 2, + k_EChatEntryTypeInviteGame = 3, + k_EChatEntryTypeEmote = 4, + k_EChatEntryTypeLeftConversation = 6, + k_EChatEntryTypeEntered = 7, + k_EChatEntryTypeWasKicked = 8, + k_EChatEntryTypeWasBanned = 9, + k_EChatEntryTypeDisconnected = 10, + k_EChatEntryTypeHistoricalChat = 11, + k_EChatEntryTypeLinkBlocked = 14, +} +public enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, + k_EChatRoomEnterResponseDoesntExist = 2, + k_EChatRoomEnterResponseNotAllowed = 3, + k_EChatRoomEnterResponseFull = 4, + k_EChatRoomEnterResponseError = 5, + k_EChatRoomEnterResponseBanned = 6, + k_EChatRoomEnterResponseLimited = 7, + k_EChatRoomEnterResponseClanDisabled = 8, + k_EChatRoomEnterResponseCommunityBan = 9, + k_EChatRoomEnterResponseMemberBlockedYou = 10, + k_EChatRoomEnterResponseYouBlockedMember = 11, +} +public enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 4095, + k_EChatInstanceFlagClan = 524288, + k_EChatInstanceFlagLobby = 262144, + k_EChatInstanceFlagMMSLobby = 131072, +} +public enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1, + k_EMarketingMessageFlagsPlatformWindows = 2, + k_EMarketingMessageFlagsPlatformMac = 4, + k_EMarketingMessageFlagsPlatformLinux = 8, + k_EMarketingMessageFlagsPlatformRestrictions = 14, +} +public enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +} +public enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, + k_EBroadcastUploadResultOK = 1, + k_EBroadcastUploadResultInitFailed = 2, + k_EBroadcastUploadResultFrameFailed = 3, + k_EBroadcastUploadResultTimeout = 4, + k_EBroadcastUploadResultBandwidthExceeded = 5, + k_EBroadcastUploadResultLowFPS = 6, + k_EBroadcastUploadResultMissingKeyFrames = 7, + k_EBroadcastUploadResultNoConnection = 8, + k_EBroadcastUploadResultRelayFailed = 9, + k_EBroadcastUploadResultSettingsChanged = 10, + k_EBroadcastUploadResultMissingAudio = 11, + k_EBroadcastUploadResultTooFarBehind = 12, + k_EBroadcastUploadResultTranscodeBehind = 13, +} +public enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, + k_ELaunchOptionType_Default = 1, + k_ELaunchOptionType_SafeMode = 2, + k_ELaunchOptionType_Multiplayer = 3, + k_ELaunchOptionType_Config = 4, + k_ELaunchOptionType_OpenVR = 5, + k_ELaunchOptionType_Server = 6, + k_ELaunchOptionType_Editor = 7, + k_ELaunchOptionType_Manual = 8, + k_ELaunchOptionType_Benchmark = 9, + k_ELaunchOptionType_Option1 = 10, + k_ELaunchOptionType_Option2 = 11, + k_ELaunchOptionType_Option3 = 12, + k_ELaunchOptionType_OculusVR = 13, + k_ELaunchOptionType_OpenVROverlay = 14, + k_ELaunchOptionType_OSVR = 15, + k_ELaunchOptionType_Dialog = 1000, +} +public enum EVRHMDType +{ + k_eEVRHMDType_None = -1, + k_eEVRHMDType_Unknown = 0, + k_eEVRHMDType_HTC_Dev = 1, + k_eEVRHMDType_HTC_VivePre = 2, + k_eEVRHMDType_HTC_Vive = 3, + k_eEVRHMDType_HTC_Unknown = 20, + k_eEVRHMDType_Oculus_DK1 = 21, + k_eEVRHMDType_Oculus_DK2 = 22, + k_eEVRHMDType_Oculus_Rift = 23, + k_eEVRHMDType_Oculus_Unknown = 40, +} +public enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36, +} +public enum EFailureType +{ + k_EFailureFlushedCallbackQueue = 0, + k_EFailurePipeFail = 1, +} +public enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, + k_EFriendRelationshipMax = 8, +} +public enum EPersonaState +{ + k_EPersonaStateOffline = 0, + k_EPersonaStateOnline = 1, + k_EPersonaStateBusy = 2, + k_EPersonaStateAway = 3, + k_EPersonaStateSnooze = 4, + k_EPersonaStateLookingToTrade = 5, + k_EPersonaStateLookingToPlay = 6, + k_EPersonaStateMax = 7, +} +public enum EFriendFlags +{ + k_EFriendFlagNone = 0, + k_EFriendFlagBlocked = 1, + k_EFriendFlagFriendshipRequested = 2, + k_EFriendFlagImmediate = 4, + k_EFriendFlagClanMember = 8, + k_EFriendFlagOnGameServer = 16, + k_EFriendFlagRequestingFriendship = 128, + k_EFriendFlagRequestingInfo = 256, + k_EFriendFlagIgnored = 512, + k_EFriendFlagIgnoredFriend = 1024, + k_EFriendFlagSuggested = 2048, + k_EFriendFlagChatMember = 4096, + k_EFriendFlagAll = 65535, +} +public enum EUserRestriction +{ + k_nUserRestrictionNone = 0, + k_nUserRestrictionUnknown = 1, + k_nUserRestrictionAnyChat = 2, + k_nUserRestrictionVoiceChat = 4, + k_nUserRestrictionGroupChat = 8, + k_nUserRestrictionRating = 16, + k_nUserRestrictionGameInvites = 32, + k_nUserRestrictionTrading = 64, +} +public enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +} +public enum EPersonaChange +{ + k_EPersonaChangeName = 1, + k_EPersonaChangeStatus = 2, + k_EPersonaChangeComeOnline = 4, + k_EPersonaChangeGoneOffline = 8, + k_EPersonaChangeGamePlayed = 16, + k_EPersonaChangeGameServer = 32, + k_EPersonaChangeAvatar = 64, + k_EPersonaChangeJoinedSource = 128, + k_EPersonaChangeLeftSource = 256, + k_EPersonaChangeRelationshipChanged = 512, + k_EPersonaChangeNameFirstSet = 1024, + k_EPersonaChangeFacebookInfo = 2048, + k_EPersonaChangeNickname = 4096, + k_EPersonaChangeSteamLevel = 8192, +} +public enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, + k_ESteamAPICallFailureSteamGone = 0, + k_ESteamAPICallFailureNetworkFailure = 1, + k_ESteamAPICallFailureInvalidHandle = 2, + k_ESteamAPICallFailureMismatchedCallback = 3, +} +public enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1, +} +public enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1, +} +public enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +} +public enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond = 1, + eNoServersListedOnMasterServer = 2, +} +public enum ELobbyType +{ + k_ELobbyTypePrivate = 0, + k_ELobbyTypeFriendsOnly = 1, + k_ELobbyTypePublic = 2, + k_ELobbyTypeInvisible = 3, +} +public enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +} +public enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose = 0, + k_ELobbyDistanceFilterDefault = 1, + k_ELobbyDistanceFilterFar = 2, + k_ELobbyDistanceFilterWorldwide = 3, +} +public enum EChatMemberStateChange +{ + k_EChatMemberStateChangeEntered = 1, + k_EChatMemberStateChangeLeft = 2, + k_EChatMemberStateChangeDisconnected = 4, + k_EChatMemberStateChangeKicked = 8, + k_EChatMemberStateChangeBanned = 16, +} +public enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = 1, + k_ERemoteStoragePlatformOSX = 2, + k_ERemoteStoragePlatformPS3 = 4, + k_ERemoteStoragePlatformLinux = 8, + k_ERemoteStoragePlatformReserved2 = 16, + k_ERemoteStoragePlatformAll = -1, +} +public enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +} +public enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + k_EWorkshopFileTypeCommunity = 0, + k_EWorkshopFileTypeMicrotransaction = 1, + k_EWorkshopFileTypeCollection = 2, + k_EWorkshopFileTypeArt = 3, + k_EWorkshopFileTypeVideo = 4, + k_EWorkshopFileTypeScreenshot = 5, + k_EWorkshopFileTypeGame = 6, + k_EWorkshopFileTypeSoftware = 7, + k_EWorkshopFileTypeConcept = 8, + k_EWorkshopFileTypeWebGuide = 9, + k_EWorkshopFileTypeIntegratedGuide = 10, + k_EWorkshopFileTypeMerch = 11, + k_EWorkshopFileTypeControllerBinding = 12, + k_EWorkshopFileTypeSteamworksAccessInvite = 13, + k_EWorkshopFileTypeSteamVideo = 14, + k_EWorkshopFileTypeGameManagedItem = 15, + k_EWorkshopFileTypeMax = 16, +} +public enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +} +public enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +} +public enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +} +public enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1, +} +public enum EUGCReadAction +{ + k_EUGCRead_ContinueReadingUntilFinished = 0, + k_EUGCRead_ContinueReading = 1, + k_EUGCRead_Close = 2, +} +public enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3, +} +public enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, + k_ELeaderboardSortMethodDescending = 2, +} +public enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, + k_ELeaderboardDisplayTypeTimeSeconds = 2, + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, +} +public enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, + k_ELeaderboardUploadScoreMethodForceUpdate = 2, +} +public enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +} +public enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, + k_EP2PSessionErrorNoRightsToApp = 2, + k_EP2PSessionErrorDestinationNotLoggedIn = 3, + k_EP2PSessionErrorTimeout = 4, + k_EP2PSessionErrorMax = 5, +} +public enum EP2PSend +{ + k_EP2PSendUnreliable = 0, + k_EP2PSendUnreliableNoDelay = 1, + k_EP2PSendReliable = 2, + k_EP2PSendReliableWithBuffering = 3, +} +public enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + k_ESNetSocketStateConnected = 1, + k_ESNetSocketStateInitiated = 10, + k_ESNetSocketStateLocalCandidatesFound = 11, + k_ESNetSocketStateReceivedRemoteCandidates = 12, + k_ESNetSocketStateChallengeHandshake = 15, + k_ESNetSocketStateDisconnecting = 21, + k_ESNetSocketStateLocalDisconnect = 22, + k_ESNetSocketStateTimeoutDuringConnect = 23, + k_ESNetSocketStateRemoteEndDisconnected = 24, + k_ESNetSocketStateConnectionBroken = 25, +} +public enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +} +public enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5, +} +public enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3, +} +public enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET = 1, + k_EHTTPMethodHEAD = 2, + k_EHTTPMethodPOST = 3, + k_EHTTPMethodPUT = 4, + k_EHTTPMethodDELETE = 5, + k_EHTTPMethodOPTIONS = 6, + k_EHTTPMethodPATCH = 7, +} +public enum EHTTPStatusCode +{ + k_EHTTPStatusCodeInvalid = 0, + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + k_EHTTPStatusCode307TemporaryRedirect = 307, + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, + k_EHTTPStatusCode402PaymentRequired = 402, + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, + k_EHTTPStatusCode429TooManyRequests = 429, + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +} +public enum ESteamControllerPad +{ + k_ESteamControllerPad_Left = 0, + k_ESteamControllerPad_Right = 1, +} +public enum EControllerSource +{ + k_EControllerSource_None = 0, + k_EControllerSource_LeftTrackpad = 1, + k_EControllerSource_RightTrackpad = 2, + k_EControllerSource_Joystick = 3, + k_EControllerSource_ABXY = 4, + k_EControllerSource_Switch = 5, + k_EControllerSource_LeftTrigger = 6, + k_EControllerSource_RightTrigger = 7, + k_EControllerSource_Gyro = 8, + k_EControllerSource_Count = 9, +} +public enum EControllerSourceMode +{ + k_EControllerSourceMode_None = 0, + k_EControllerSourceMode_Dpad = 1, + k_EControllerSourceMode_Buttons = 2, + k_EControllerSourceMode_FourButtons = 3, + k_EControllerSourceMode_AbsoluteMouse = 4, + k_EControllerSourceMode_RelativeMouse = 5, + k_EControllerSourceMode_JoystickMove = 6, + k_EControllerSourceMode_JoystickCamera = 7, + k_EControllerSourceMode_ScrollWheel = 8, + k_EControllerSourceMode_Trigger = 9, + k_EControllerSourceMode_TouchMenu = 10, + k_EControllerSourceMode_MouseJoystick = 11, + k_EControllerSourceMode_MouseRegion = 12, + k_EControllerSourceMode_RadialMenu = 13, + k_EControllerSourceMode_Switches = 14, +} +public enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None = 0, + k_EControllerActionOrigin_A = 1, + k_EControllerActionOrigin_B = 2, + k_EControllerActionOrigin_X = 3, + k_EControllerActionOrigin_Y = 4, + k_EControllerActionOrigin_LeftBumper = 5, + k_EControllerActionOrigin_RightBumper = 6, + k_EControllerActionOrigin_LeftGrip = 7, + k_EControllerActionOrigin_RightGrip = 8, + k_EControllerActionOrigin_Start = 9, + k_EControllerActionOrigin_Back = 10, + k_EControllerActionOrigin_LeftPad_Touch = 11, + k_EControllerActionOrigin_LeftPad_Swipe = 12, + k_EControllerActionOrigin_LeftPad_Click = 13, + k_EControllerActionOrigin_LeftPad_DPadNorth = 14, + k_EControllerActionOrigin_LeftPad_DPadSouth = 15, + k_EControllerActionOrigin_LeftPad_DPadWest = 16, + k_EControllerActionOrigin_LeftPad_DPadEast = 17, + k_EControllerActionOrigin_RightPad_Touch = 18, + k_EControllerActionOrigin_RightPad_Swipe = 19, + k_EControllerActionOrigin_RightPad_Click = 20, + k_EControllerActionOrigin_RightPad_DPadNorth = 21, + k_EControllerActionOrigin_RightPad_DPadSouth = 22, + k_EControllerActionOrigin_RightPad_DPadWest = 23, + k_EControllerActionOrigin_RightPad_DPadEast = 24, + k_EControllerActionOrigin_LeftTrigger_Pull = 25, + k_EControllerActionOrigin_LeftTrigger_Click = 26, + k_EControllerActionOrigin_RightTrigger_Pull = 27, + k_EControllerActionOrigin_RightTrigger_Click = 28, + k_EControllerActionOrigin_LeftStick_Move = 29, + k_EControllerActionOrigin_LeftStick_Click = 30, + k_EControllerActionOrigin_LeftStick_DPadNorth = 31, + k_EControllerActionOrigin_LeftStick_DPadSouth = 32, + k_EControllerActionOrigin_LeftStick_DPadWest = 33, + k_EControllerActionOrigin_LeftStick_DPadEast = 34, + k_EControllerActionOrigin_Gyro_Move = 35, + k_EControllerActionOrigin_Gyro_Pitch = 36, + k_EControllerActionOrigin_Gyro_Yaw = 37, + k_EControllerActionOrigin_Gyro_Roll = 38, + k_EControllerActionOrigin_Count = 39, +} +public enum EControllerActivationType +{ + k_EControllerActivationType_None = 0, + k_EControllerActivationType_FullPress = 1, + k_EControllerActivationType_SoftPress = 2, + k_EControllerActivationType_StartPress = 3, + k_EControllerActivationType_Release = 4, + k_EControllerActivationType_LongPress = 5, + k_EControllerActivationType_DoublePress = 6, + k_EControllerActivationType_Analog = 7, +} +public enum EControllerPressureButton +{ + k_EControllerPressureButton_LeftTrackPad = 0, + k_EControllerPressureButton_RightTrackPad = 1, + k_EControllerPressureButton_LeftBumper = 2, + k_EControllerPressureButton_RightBumper = 3, + k_EControllerPressureButton_LeftGripLower = 4, + k_EControllerPressureButton_RightGripLower = 5, + k_EControllerPressureButton_LeftGripUpper = 6, + k_EControllerPressureButton_RightGripUpper = 7, + k_EControllerPressureButton_Invalid = 8, +} +public enum EControllerActivatorOutputAxis +{ + k_EOutputAxisLeftTrigger = 0, + k_EOutputAxisRightTrigger = 1, + k_EOutputAxisLeftThumbXPos = 2, + k_EOutputAxisLeftThumbXNeg = 3, + k_EOutputAxisLeftThumbYPos = 4, + k_EOutputAxisLeftThumbYNeg = 5, + k_EOutputAxisRightThumbXPos = 6, + k_EOutputAxisRightThumbXNeg = 7, + k_EOutputAxisRightThumbYPos = 8, + k_EOutputAxisRightThumbYNeg = 9, +} +public enum EControllerConfigFeature +{ + k_EControllerConfigFeature_None = 0, + k_EControllerConfigFeature_Gamepad = 1, + k_EControllerConfigFeature_Keyboard = 2, + k_EControllerConfigFeature_Mouse = 3, + k_EControllerConfigFeature_Gyro = 4, + k_EControllerConfigFeature_TouchMenu = 5, + k_EControllerConfigFeature_ModeShift = 6, + k_EControllerConfigFeature_ActionSet = 7, + k_EControllerConfigFeature_Activator = 8, +} +public enum EControllerPopupMenuActivationType +{ + k_EMenuButtonPress = 0, + k_EMenuButtonRelease = 1, + k_EMenuTouchRelease = 2, + k_EMenuTouchAlways = 3, +} +public enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, + k_EUGCMatchingUGCType_All = -1, +} +public enum EUserUGCList +{ + k_EUserUGCList_Published = 0, + k_EUserUGCList_VotedOn = 1, + k_EUserUGCList_VotedUp = 2, + k_EUserUGCList_VotedDown = 3, + k_EUserUGCList_WillVoteLater = 4, + k_EUserUGCList_Favorited = 5, + k_EUserUGCList_Subscribed = 6, + k_EUserUGCList_UsedOrPlayed = 7, + k_EUserUGCList_Followed = 8, +} +public enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc = 0, + k_EUserUGCListSortOrder_CreationOrderAsc = 1, + k_EUserUGCListSortOrder_TitleAsc = 2, + k_EUserUGCListSortOrder_LastUpdatedDesc = 3, + k_EUserUGCListSortOrder_SubscriptionDateDesc = 4, + k_EUserUGCListSortOrder_VoteScoreDesc = 5, + k_EUserUGCListSortOrder_ForModeration = 6, +} +public enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +} +public enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, + k_EItemUpdateStatusPreparingConfig = 1, + k_EItemUpdateStatusPreparingContent = 2, + k_EItemUpdateStatusUploadingContent = 3, + k_EItemUpdateStatusUploadingPreviewFile = 4, + k_EItemUpdateStatusCommittingChanges = 5, +} +public enum EItemState +{ + k_EItemStateNone = 0, + k_EItemStateSubscribed = 1, + k_EItemStateLegacyItem = 2, + k_EItemStateInstalled = 4, + k_EItemStateNeedsUpdate = 8, + k_EItemStateDownloading = 16, + k_EItemStateDownloadPending = 32, +} +public enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +} +public enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, + k_EItemPreviewType_YouTubeVideo = 1, + k_EItemPreviewType_Sketchfab = 2, + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, + k_EItemPreviewType_EnvironmentMap_LatLong = 4, + k_EItemPreviewType_ReservedMax = 255, +} +public enum EHTMLMouseButton +{ + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, +} +public enum EMouseCursor +{ + dc_user = 0, + dc_none = 1, + dc_arrow = 2, + dc_ibeam = 3, + dc_hourglass = 4, + dc_waitarrow = 5, + dc_crosshair = 6, + dc_up = 7, + dc_sizenw = 8, + dc_sizese = 9, + dc_sizene = 10, + dc_sizesw = 11, + dc_sizew = 12, + dc_sizee = 13, + dc_sizen = 14, + dc_sizes = 15, + dc_sizewe = 16, + dc_sizens = 17, + dc_sizeall = 18, + dc_no = 19, + dc_hand = 20, + dc_blank = 21, + dc_middle_pan = 22, + dc_north_pan = 23, + dc_north_east_pan = 24, + dc_east_pan = 25, + dc_south_east_pan = 26, + dc_south_pan = 27, + dc_south_west_pan = 28, + dc_west_pan = 29, + dc_north_west_pan = 30, + dc_alias = 31, + dc_cell = 32, + dc_colresize = 33, + dc_copycur = 34, + dc_verticaltext = 35, + dc_rowresize = 36, + dc_zoomin = 37, + dc_zoomout = 38, + dc_help = 39, + dc_custom = 40, + dc_last = 41, +} +public enum EHTMLKeyModifiers +{ + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1, + k_eHTMLKeyModifier_CtrlDown = 2, + k_eHTMLKeyModifier_ShiftDown = 4, +} +public enum ESteamItemFlags +{ + k_ESteamItemNoTrade = 1, + k_ESteamItemRemoved = 256, + k_ESteamItemConsumed = 512, +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamID +{ + public SteamID_t m_steamid; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamID_t +{ + public SteamIDComponent_t m_comp; + public ulong m_unAll64Bits; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamIDComponent_t +{ + public uint m_unAccountID; + public uint m_unAccountInstance; + public uint m_EAccountType; + public EUniverse m_EUniverse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameID_t +{ + public uint m_nAppID; + public uint m_nType; + public uint m_nModID; +} +[StructLayout(LayoutKind.Sequential)] public struct ValvePackingSentinel_t +{ + public uint m_u32; + public ulong m_u64; + public char m_u16; + public double m_d; +} +[StructLayout(LayoutKind.Sequential)] public struct CallbackMsg_t +{ + public uint m_hSteamUser; + public int m_iCallback; + public IntPtr m_pubParam; // uint8 * + public int m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServerConnectFailure_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bStillRetrying; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServersDisconnected_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ClientGameServerDeny_t +{ + public uint m_uAppID; + public uint m_unGameServerIP; + public char m_usGameServerPort; + public char m_bSecure; + public uint m_uReason; +} +[StructLayout(LayoutKind.Sequential)] public struct ValidateAuthTicketResponse_t +{ + public ulong m_SteamID; + public EAuthSessionResponse m_eAuthSessionResponse; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct MicroTxnAuthorizationResponse_t +{ + public uint m_unAppID; + public ulong m_ulOrderID; + public byte m_bAuthorized; +} +[StructLayout(LayoutKind.Sequential)] public struct EncryptedAppTicketResponse_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GetAuthSessionTicketResponse_t +{ + public uint m_hAuthTicket; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GameWebCallback_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct StoreAuthURLResponse_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)] + public string m_szURL; //char[512] +} +[StructLayout(LayoutKind.Sequential)] public struct FriendGameInfo_t +{ + public ulong m_gameID; + public uint m_unGameIP; + public char m_usGamePort; + public char m_usQueryPort; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendSessionStateInfo_t +{ + public uint m_uiOnlineSessionInstances; + public byte m_uiPublishedToFriendsSessionInstance; +} +[StructLayout(LayoutKind.Sequential)] public struct PersonaStateChange_t +{ + public ulong m_ulSteamID; + public int m_nChangeFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct GameOverlayActivated_t +{ + public byte m_bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct GameServerChangeRequested_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchServer; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchPassword; //char[64] +} +[StructLayout(LayoutKind.Sequential)] public struct GameLobbyJoinRequested_t +{ + public ulong m_steamIDLobby; + public ulong m_steamIDFriend; +} +[StructLayout(LayoutKind.Sequential)] public struct AvatarImageLoaded_t +{ + public ulong m_steamID; + public int m_iImage; + public int m_iWide; + public int m_iTall; +} +[StructLayout(LayoutKind.Sequential)] public struct ClanOfficerListResponse_t +{ + public ulong m_steamIDClan; + public int m_cOfficers; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendRichPresenceUpdate_t +{ + public ulong m_steamIDFriend; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameRichPresenceJoinRequested_t +{ + public ulong m_steamIDFriend; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchConnect; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedClanChatMsg_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatJoin_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatLeave_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + [MarshalAs(UnmanagedType.I1)] + public bool m_bKicked; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDropped; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadClanActivityCountsResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct JoinClanChatRoomCompletionResult_t +{ + public ulong m_steamIDClanChat; + public EChatRoomEnterResponse m_eChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedFriendChatMsg_t +{ + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsGetFollowerCount_t +{ + public EResult m_eResult; + public ulong m_steamID; + public int m_nCount; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsIsFollowing_t +{ + public EResult m_eResult; + public ulong m_steamID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bIsFollowing; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsEnumerateFollowingList_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public CSteamID[] m_rgSteamID; //CSteamID[50] + public int m_nResultsReturned; + public int m_nTotalResultCount; +} +[StructLayout(LayoutKind.Sequential)] public struct SetPersonaNameResponse_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocalSuccess; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct LowBatteryPower_t +{ + public byte m_nMinutesBatteryLeft; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamAPICallCompleted_t +{ + public ulong m_hAsyncCall; + public int m_iCallback; + public uint m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct CheckFileSignature_t +{ + public ECheckFileSignature m_eCheckFileSignature; +} +[StructLayout(LayoutKind.Sequential)] public struct GamepadTextInputDismissed_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSubmitted; + public uint m_unSubmittedText; +} +[StructLayout(LayoutKind.Sequential)] public struct MatchMakingKeyValuePair_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szKey; //char[256] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szValue; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct servernetadr_t +{ + public char m_usConnectionPort; + public char m_usQueryPort; + public uint m_unIP; +} +[StructLayout(LayoutKind.Sequential)] public struct gameserveritem_t +{ + public servernetadr_t m_NetAdr; + public int m_nPing; + [MarshalAs(UnmanagedType.I1)] + public bool m_bHadSuccessfulResponse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDoNotRefresh; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szGameDir; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szMap; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szGameDescription; //char[64] + public uint m_nAppID; + public int m_nPlayers; + public int m_nMaxPlayers; + public int m_nBotPlayers; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPassword; + [MarshalAs(UnmanagedType.I1)] + public bool m_bSecure; + public uint m_ulTimeLastPlayed; + public int m_nServerVersion; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szServerName; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_szGameTags; //char[128] + public ulong m_steamID; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListChanged_t +{ + public uint m_nIP; + public uint m_nQueryPort; + public uint m_nConnPort; + public uint m_nAppID; + public uint m_nFlags; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAdd; + public uint m_unAccountId; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyInvite_t +{ + public ulong m_ulSteamIDUser; + public ulong m_ulSteamIDLobby; + public ulong m_ulGameID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyEnter_t +{ + public ulong m_ulSteamIDLobby; + public uint m_rgfChatPermissions; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocked; + public uint m_EChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyDataUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDMember; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUserChanged; + public ulong m_ulSteamIDMakingChange; + public uint m_rgfChatMemberStateChange; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatMsg_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUser; + public byte m_eChatEntryType; + public uint m_iChatID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyGameCreated_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDGameServer; + public uint m_unIP; + public char m_usPort; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyMatchList_t +{ + public uint m_nLobbiesMatching; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyKicked_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDAdmin; + public byte m_bKickedDueToDisconnect; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyCreated_t +{ + public EResult m_eResult; + public ulong m_ulSteamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct PSNGameBootInviteResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bGameBootInviteExists; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListAccountsUpdated_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamParamStringArray_t +{ + public IntPtr m_ppStrings; // const char ** + public int m_nNumStrings; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedClient_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumDownloads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedServer_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumUploads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncProgress_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchCurrentFile; //char[260] + public uint m_nAppID; + public uint m_uBytesTransferredThisChunk; + public double m_dAppPercentComplete; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUploading; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncStatusCheck_t +{ + public uint m_nAppID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileShareResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchFilename; //char[260] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDeletePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeSubscribed; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUnsubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdatePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDownloadUGCResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + public uint m_nAppID; + public int m_nSizeInBytes; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public ulong m_ulSteamIDOwner; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedFileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_hFile; + public ulong m_hPreviewFile; + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public EWorkshopFileType m_eFileType; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] + public float[] m_rgScore; //float[50] + public uint m_nAppId; + public uint m_unStartIndex; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + public EResult m_eResult; + public ulong m_unPublishedFileId; + public int m_nVotesFor; + public int m_nVotesAgainst; + public int m_nReports; + public float m_fScore; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileSubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUnsubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileDeleted_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUserVoteDetails_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopVote m_eVote; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSetUserPublishedFileActionResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopFileAction m_eAction; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + public EResult m_eResult; + public EWorkshopFileAction m_eAction; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeUpdated; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileProgress_t +{ + public double m_dPercentFile; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPreview; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUpdated_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; + public ulong m_ulUnused; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileWriteAsyncComplete_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileReadAsyncComplete_t +{ + public ulong m_hFileReadAsync; + public EResult m_eResult; + public uint m_nOffset; + public uint m_cubRead; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardEntry_t +{ + public ulong m_steamIDUser; + public int m_nGlobalRank; + public int m_nScore; + public int m_cDetails; + public ulong m_hUGC; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsStored_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementStored_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bGroupAchievement; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + public uint m_nCurProgress; + public uint m_nMaxProgress; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardFindResult_t +{ + public ulong m_hSteamLeaderboard; + public byte m_bLeaderboardFound; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoresDownloaded_t +{ + public ulong m_hSteamLeaderboard; + public ulong m_hSteamLeaderboardEntries; + public int m_cEntryCount; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoreUploaded_t +{ + public byte m_bSuccess; + public ulong m_hSteamLeaderboard; + public int m_nScore; + public byte m_bScoreChanged; + public int m_nGlobalRankNew; + public int m_nGlobalRankPrevious; +} +[StructLayout(LayoutKind.Sequential)] public struct NumberOfCurrentPlayers_t +{ + public byte m_bSuccess; + public int m_cPlayers; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsUnloaded_t +{ + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementIconFetched_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bAchieved; + public int m_nIconHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalAchievementPercentagesReady_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardUGCSet_t +{ + public EResult m_eResult; + public ulong m_hSteamLeaderboard; +} +[StructLayout(LayoutKind.Sequential)] public struct PS3TrophiesInstalled_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_ulRequiredDiskSpace; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct DlcInstalled_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RegisterActivationCodeResponse_t +{ + public ERegisterActivationCodeResult m_eResult; + public uint m_unPackageRegistered; +} +[StructLayout(LayoutKind.Sequential)] public struct AppProofOfPurchaseKeyResponse_t +{ + public EResult m_eResult; + public uint m_nAppID; + public uint m_cchKeyLength; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)] + public string m_rgchKey; //char[240] +} +[StructLayout(LayoutKind.Sequential)] public struct FileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_ulFileSize; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U1)] + public byte[] m_FileSHA; //byte[20] + public uint m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionState_t +{ + public byte m_bConnectionActive; + public byte m_bConnecting; + public byte m_eP2PSessionError; + public byte m_bUsingRelay; + public int m_nBytesQueuedForSend; + public int m_nPacketsQueuedForSend; + public uint m_nRemoteIP; + public char m_nRemotePort; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionRequest_t +{ + public ulong m_steamIDRemote; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionConnectFail_t +{ + public ulong m_steamIDRemote; + public byte m_eP2PSessionError; +} +[StructLayout(LayoutKind.Sequential)] public struct SocketStatusCallback_t +{ + public uint m_hSocket; + public uint m_hListenSocket; + public ulong m_steamIDRemote; + public int m_eSNetSocketState; +} +[StructLayout(LayoutKind.Sequential)] public struct ScreenshotReady_t +{ + public uint m_hLocal; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bShuffled; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bLooped; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int m_nPlayingRepeatStatus; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestCompleted_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + [MarshalAs(UnmanagedType.I1)] + public bool m_bRequestSuccessful; + public EHTTPStatusCode m_eStatusCode; + public uint m_unBodySize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestHeadersReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestDataReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + public uint m_cOffset; + public uint m_cBytesReceived; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUnifiedMessagesSendMethodResult_t +{ + public ulong m_hHandle; + public ulong m_unContext; + public EResult m_eResult; + public uint m_unResponseSize; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerAnalogActionData_t +{ + public EControllerSourceMode eMode; + public float x; + public float y; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerDigitalActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bState; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerMotionData_t +{ + public float rotQuatX; + public float rotQuatY; + public float rotQuatZ; + public float rotQuatW; + public float posAccelX; + public float posAccelY; + public float posAccelZ; + public float rotVelX; + public float rotVelY; + public float rotVelZ; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCDetails_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + public EWorkshopFileType m_eFileType; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public uint m_rtimeAddedToUserList; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + public ulong m_hFile; + public ulong m_hPreviewFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public uint m_unVotesUp; + public uint m_unVotesDown; + public float m_flScore; + public uint m_unNumChildren; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCQueryCompleted_t +{ + public ulong m_handle; + public EResult m_eResult; + public uint m_unNumResultsReturned; + public uint m_unTotalMatchingResults; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCRequestUGCDetailsResult_t +{ + public SteamUGCDetails_t m_details; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct CreateItemResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct SubmitItemUpdateResult_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadItemResult_t +{ + public uint m_unAppID; + public ulong m_nPublishedFileId; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserFavoriteItemsListChanged_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bWasAddRequest; +} +[StructLayout(LayoutKind.Sequential)] public struct SetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteUp; +} +[StructLayout(LayoutKind.Sequential)] public struct GetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedUp; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedDown; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteSkipped; +} +[StructLayout(LayoutKind.Sequential)] public struct StartPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct StopPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_BrowserReady_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NeedsPaint_t +{ + public uint unBrowserHandle; + public IntPtr pBGRA; // const char * + public uint unWide; + public uint unTall; + public uint unUpdateX; + public uint unUpdateY; + public uint unUpdateWide; + public uint unUpdateTall; + public uint unScrollX; + public uint unScrollY; + public float flPageScale; + public uint unPageSerial; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StartRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchTarget; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CloseBrowser_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_URLChanged_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; + public IntPtr pchPageTitle; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bNewNavigation; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FinishedRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPageTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_OpenLinkInNewTab_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ChangedTitle_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SearchResults_t +{ + public uint unBrowserHandle; + public uint unResults; + public uint unCurrentMatch; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CanGoBackAndForward_t +{ + public uint unBrowserHandle; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoBack; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoForward; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HorizontalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_VerticalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_LinkAtPosition_t +{ + public uint unBrowserHandle; + public uint x; + public uint y; + public IntPtr pchURL; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bInput; + [MarshalAs(UnmanagedType.I1)] + public bool bLiveLink; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSAlert_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSConfirm_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FileOpenDialog_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * + public IntPtr pchInitialFile; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NewWindow_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public uint unX; + public uint unY; + public uint unWide; + public uint unTall; + public uint unNewWindow_BrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SetCursor_t +{ + public uint unBrowserHandle; + public uint eMouseCursor; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StatusText_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ShowToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_UpdateToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HideToolTip_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamItemDetails_t +{ + public ulong m_itemId; + public int m_iDefinition; + public char m_unQuantity; + public char m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryResultReady_t +{ + public int m_handle; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryFullUpdate_t +{ + public int m_handle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EBroadcastUploadResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EResult m_eResult; + public uint m_unVideoAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext +{ + public IntPtr m_pSteamClient; // class ISteamClient * + public IntPtr m_pSteamUser; // class ISteamUser * + public IntPtr m_pSteamFriends; // class ISteamFriends * + public IntPtr m_pSteamUtils; // class ISteamUtils * + public IntPtr m_pSteamMatchmaking; // class ISteamMatchmaking * + public IntPtr m_pSteamUserStats; // class ISteamUserStats * + public IntPtr m_pSteamApps; // class ISteamApps * + public IntPtr m_pSteamMatchmakingServers; // class ISteamMatchmakingServers * + public IntPtr m_pSteamNetworking; // class ISteamNetworking * + public IntPtr m_pSteamRemoteStorage; // class ISteamRemoteStorage * + public IntPtr m_pSteamScreenshots; // class ISteamScreenshots * + public IntPtr m_pSteamHTTP; // class ISteamHTTP * + public IntPtr m_pSteamUnifiedMessages; // class ISteamUnifiedMessages * + public IntPtr m_pController; // class ISteamController * + public IntPtr m_pSteamUGC; // class ISteamUGC * + public IntPtr m_pSteamAppList; // class ISteamAppList * + public IntPtr m_pSteamMusic; // class ISteamMusic * + public IntPtr m_pSteamMusicRemote; // class ISteamMusicRemote * + public IntPtr m_pSteamHTMLSurface; // class ISteamHTMLSurface * + public IntPtr m_pSteamInventory; // class ISteamInventory * + public IntPtr m_pSteamVideo; // class ISteamVideo * +} +[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase +{ + public byte m_nCallbackFlags; + public int m_iCallback; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallResult +{ + public ulong m_hAPICall; + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallback +{ + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientApprove_t +{ + public ulong m_SteamID; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientDeny_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchOptionalText; //char[128] +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientKick_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientAchievementStatus_t +{ + public ulong m_SteamID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_pchAchievement; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bUnlocked; +} +[StructLayout(LayoutKind.Sequential)] public struct GSPolicyResponse_t +{ + public byte m_bSecure; +} +[StructLayout(LayoutKind.Sequential)] public struct GSGameplayStats_t +{ + public EResult m_eResult; + public int m_nRank; + public uint m_unTotalConnects; + public uint m_unTotalMinutesPlayed; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientGroupStatus_t +{ + public ulong m_SteamIDUser; + public ulong m_SteamIDGroup; + [MarshalAs(UnmanagedType.I1)] + public bool m_bMember; + [MarshalAs(UnmanagedType.I1)] + public bool m_bOfficer; +} +[StructLayout(LayoutKind.Sequential)] public struct GSReputation_t +{ + public EResult m_eResult; + public uint m_unReputationScore; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + public uint m_unBannedIP; + public char m_usBannedPort; + public ulong m_ulBannedGameID; + public uint m_unBanExpires; +} +[StructLayout(LayoutKind.Sequential)] public struct AssociateWithClanResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ComputeNewPlayerCompatibilityResult_t +{ + public EResult m_eResult; + public int m_cPlayersThatDontLikeCandidate; + public int m_cPlayersThatCandidateDoesntLike; + public int m_cClanPlayersThatDontLikeCandidate; + public ulong m_SteamIDCandidate; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsReceived_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsStored_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsUnloaded_t +{ + public ulong m_steamIDUser; +} + +public class SteamAPI +{ +public static void Init(uint appId) +{ +SteamAPIInterop.SteamAPI_RestartAppIfNecessary (appId); +SteamAPIInterop.SteamAPI_Init (); +} + +public static void RunCallbacks() +{ +SteamAPIInterop.SteamAPI_RunCallbacks (); +} + +public static void RegisterCallback(IntPtr pCallback, int iCallback) +{ +SteamAPIInterop.SteamAPI_RegisterCallback (pCallback, iCallback); +} + +public static void UnregisterCallback(IntPtr pCallback) +{ +SteamAPIInterop.SteamAPI_UnregisterCallback (pCallback); +} + +public const int k_iSteamUserCallbacks = 100; +public const int k_iSteamGameServerCallbacks = 200; +public const int k_iSteamFriendsCallbacks = 300; +public const int k_iSteamBillingCallbacks = 400; +public const int k_iSteamMatchmakingCallbacks = 500; +public const int k_iSteamContentServerCallbacks = 600; +public const int k_iSteamUtilsCallbacks = 700; +public const int k_iClientFriendsCallbacks = 800; +public const int k_iClientUserCallbacks = 900; +public const int k_iSteamAppsCallbacks = 1000; +public const int k_iSteamUserStatsCallbacks = 1100; +public const int k_iSteamNetworkingCallbacks = 1200; +public const int k_iClientRemoteStorageCallbacks = 1300; +public const int k_iClientDepotBuilderCallbacks = 1400; +public const int k_iSteamGameServerItemsCallbacks = 1500; +public const int k_iClientUtilsCallbacks = 1600; +public const int k_iSteamGameCoordinatorCallbacks = 1700; +public const int k_iSteamGameServerStatsCallbacks = 1800; +public const int k_iSteam2AsyncCallbacks = 1900; +public const int k_iSteamGameStatsCallbacks = 2000; +public const int k_iClientHTTPCallbacks = 2100; +public const int k_iClientScreenshotsCallbacks = 2200; +public const int k_iSteamScreenshotsCallbacks = 2300; +public const int k_iClientAudioCallbacks = 2400; +public const int k_iClientUnifiedMessagesCallbacks = 2500; +public const int k_iSteamStreamLauncherCallbacks = 2600; +public const int k_iClientControllerCallbacks = 2700; +public const int k_iSteamControllerCallbacks = 2800; +public const int k_iClientParentalSettingsCallbacks = 2900; +public const int k_iClientDeviceAuthCallbacks = 3000; +public const int k_iClientNetworkDeviceManagerCallbacks = 3100; +public const int k_iClientMusicCallbacks = 3200; +public const int k_iClientRemoteClientManagerCallbacks = 3300; +public const int k_iClientUGCCallbacks = 3400; +public const int k_iSteamStreamClientCallbacks = 3500; +public const int k_IClientProductBuilderCallbacks = 3600; +public const int k_iClientShortcutsCallbacks = 3700; +public const int k_iClientRemoteControlManagerCallbacks = 3800; +public const int k_iSteamAppListCallbacks = 3900; +public const int k_iSteamMusicCallbacks = 4000; +public const int k_iSteamMusicRemoteCallbacks = 4100; +public const int k_iClientVRCallbacks = 4200; +public const int k_iClientGameNotificationCallbacks = 4300; +public const int k_iSteamGameNotificationCallbacks = 4400; +public const int k_iSteamHTMLSurfaceCallbacks = 4500; +public const int k_iClientVideoCallbacks = 4600; +public const int k_iClientInventoryCallbacks = 4700; +public const int k_iClientBluetoothManagerCallbacks = 4800; +public const int k_cchPersonaNameMax = 128; +public const int k_cwchPersonaNameMax = 32; +public const int k_cchMaxRichPresenceKeys = 20; +public const int k_cchMaxRichPresenceKeyLength = 64; +public const int k_cchMaxRichPresenceValueLength = 256; +public const int k_cchStatNameMax = 128; +public const int k_cchLeaderboardNameMax = 128; +public const int k_cLeaderboardDetailsMax = 64; +public const ulong k_InvalidUnifiedMessageHandle = 0; +public const ulong k_SteamItemInstanceIDInvalid = 0xffffffffffffffff; +public const int k_SteamInventoryResultInvalid = -1; +public static ISteamClient SteamClient() +{ +return new CSteamClient(SteamAPIInterop.SteamClient()); +} + +public static ISteamUser SteamUser() +{ +return new CSteamUser(SteamAPIInterop.SteamUser()); +} + +public static ISteamFriends SteamFriends() +{ +return new CSteamFriends(SteamAPIInterop.SteamFriends()); +} + +public static ISteamUtils SteamUtils() +{ +return new CSteamUtils(SteamAPIInterop.SteamUtils()); +} + +public static ISteamMatchmaking SteamMatchmaking() +{ +return new CSteamMatchmaking(SteamAPIInterop.SteamMatchmaking()); +} + +public static ISteamMatchmakingServerListResponse SteamMatchmakingServerListResponse() +{ +return new CSteamMatchmakingServerListResponse(SteamAPIInterop.SteamMatchmakingServerListResponse()); +} + +public static ISteamMatchmakingPingResponse SteamMatchmakingPingResponse() +{ +return new CSteamMatchmakingPingResponse(SteamAPIInterop.SteamMatchmakingPingResponse()); +} + +public static ISteamMatchmakingPlayersResponse SteamMatchmakingPlayersResponse() +{ +return new CSteamMatchmakingPlayersResponse(SteamAPIInterop.SteamMatchmakingPlayersResponse()); +} + +public static ISteamMatchmakingRulesResponse SteamMatchmakingRulesResponse() +{ +return new CSteamMatchmakingRulesResponse(SteamAPIInterop.SteamMatchmakingRulesResponse()); +} + +public static ISteamMatchmakingServers SteamMatchmakingServers() +{ +return new CSteamMatchmakingServers(SteamAPIInterop.SteamMatchmakingServers()); +} + +public static ISteamRemoteStorage SteamRemoteStorage() +{ +return new CSteamRemoteStorage(SteamAPIInterop.SteamRemoteStorage()); +} + +public static ISteamUserStats SteamUserStats() +{ +return new CSteamUserStats(SteamAPIInterop.SteamUserStats()); +} + +public static ISteamApps SteamApps() +{ +return new CSteamApps(SteamAPIInterop.SteamApps()); +} + +public static ISteamNetworking SteamNetworking() +{ +return new CSteamNetworking(SteamAPIInterop.SteamNetworking()); +} + +public static ISteamScreenshots SteamScreenshots() +{ +return new CSteamScreenshots(SteamAPIInterop.SteamScreenshots()); +} + +public static ISteamMusic SteamMusic() +{ +return new CSteamMusic(SteamAPIInterop.SteamMusic()); +} + +public static ISteamMusicRemote SteamMusicRemote() +{ +return new CSteamMusicRemote(SteamAPIInterop.SteamMusicRemote()); +} + +public static ISteamHTTP SteamHTTP() +{ +return new CSteamHTTP(SteamAPIInterop.SteamHTTP()); +} + +public static ISteamUnifiedMessages SteamUnifiedMessages() +{ +return new CSteamUnifiedMessages(SteamAPIInterop.SteamUnifiedMessages()); +} + +public static ISteamController SteamController() +{ +return new CSteamController(SteamAPIInterop.SteamController()); +} + +public static ISteamUGC SteamUGC() +{ +return new CSteamUGC(SteamAPIInterop.SteamUGC()); +} + +public static ISteamAppList SteamAppList() +{ +return new CSteamAppList(SteamAPIInterop.SteamAppList()); +} + +public static ISteamHTMLSurface SteamHTMLSurface() +{ +return new CSteamHTMLSurface(SteamAPIInterop.SteamHTMLSurface()); +} + +public static ISteamInventory SteamInventory() +{ +return new CSteamInventory(SteamAPIInterop.SteamInventory()); +} + +public static ISteamVideo SteamVideo() +{ +return new CSteamVideo(SteamAPIInterop.SteamVideo()); +} + +public static ISteamGameServer SteamGameServer() +{ +return new CSteamGameServer(SteamAPIInterop.SteamGameServer()); +} + +public static ISteamGameServerStats SteamGameServerStats() +{ +return new CSteamGameServerStats(SteamAPIInterop.SteamGameServerStats()); +} + +} + + + +} + diff --git a/lib/linux/include/steam/steam_gameserver.h b/lib/linux/include/steam/steam_gameserver.h new file mode 100644 index 0000000..f2d2847 --- /dev/null +++ b/lib/linux/include/steam/steam_gameserver.h @@ -0,0 +1,237 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_GAMESERVER_H +#define STEAM_GAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api.h" +#include "isteamgameserver.h" +#include "isteamgameserverstats.h" + +enum EServerMode +{ + eServerModeInvalid = 0, // DO NOT USE + eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list + eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect + eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients +}; + +// Initialize ISteamGameServer interface object, and set server properties which may not be changed. +// +// After calling this function, you should set any additional server parameters, and then +// call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() +// +// - usSteamPort is the local port used to communicate with the steam servers. +// - usGamePort is the port that clients will connect to for gameplay. +// - usQueryPort is the port that will manage server browser related duties and info +// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving +// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. +// - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the +// server is out of date. (Only servers with the latest version will be listed.) + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + +S_API void SteamGameServer_Shutdown(); +S_API void SteamGameServer_RunCallbacks(); + +// Most Steam API functions allocate some amount of thread-local memory for +// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() +// will free all API-related memory associated with the calling thread. +// This memory is released automatically by SteamGameServer_RunCallbacks(), +// so single-threaded servers do not need to explicitly call this function. +inline void SteamGameServer_ReleaseCurrentThreadMemory(); + +S_API bool SteamGameServer_BSecure(); +S_API uint64 SteamGameServer_GetSteamID(); + +// If your application contains modules which could be built against different Steamworks SDK +// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot +// use the version-less global accessors. Instead, create and use CSteamGameServerAPIContext +// objects to retrieve interface pointers which are appropriate for your Steamworks SDK headers. +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamGameServerClient(); +inline ISteamGameServer *SteamGameServer(); +inline ISteamUtils *SteamGameServerUtils(); +inline ISteamNetworking *SteamGameServerNetworking(); +inline ISteamGameServerStats *SteamGameServerStats(); +inline ISteamHTTP *SteamGameServerHTTP(); +inline ISteamInventory *SteamGameServerInventory(); +inline ISteamUGC *SteamGameServerUGC(); +inline ISteamApps *SteamGameServerApps(); +#endif + +class CSteamGameServerAPIContext +{ +public: + CSteamGameServerAPIContext() { Clear(); } + inline void Clear(); + inline bool Init(); + + ISteamClient *SteamClient() const { return m_pSteamClient; } + ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } + ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } + ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } + ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } + ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } + ISteamInventory *SteamInventory() const { return m_pSteamInventory; } + ISteamUGC *SteamUGC() const { return m_pSteamUGC; } + ISteamApps *SteamApps() const { return m_pSteamApps; } + +private: + ISteamClient *m_pSteamClient; + ISteamGameServer *m_pSteamGameServer; + ISteamUtils *m_pSteamGameServerUtils; + ISteamNetworking *m_pSteamGameServerNetworking; + ISteamGameServerStats *m_pSteamGameServerStats; + ISteamHTTP *m_pSteamHTTP; + ISteamInventory *m_pSteamInventory; + ISteamUGC *m_pSteamUGC; + ISteamApps *m_pSteamApps; +}; + + +// Older SDKs exported this global pointer, but it is no longer supported. +// You should use SteamGameServerClient() or CSteamGameServerAPIContext to +// safely access the ISteamClient APIs from your game server application. +//S_API ISteamClient *g_pSteamClientGameServer; + +// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and +// is no longer supported. Use SteamGameServer_Init instead. +//S_API void S_CALLTYPE SteamGameServer_InitSafe(); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// These macros are similar to the STEAM_CALLBACK_* macros in steam_api.h, but only trigger for gameserver callbacks +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_GAMESERVER_CALLBACK( thisclass, func, /*callback_type, [deprecated] var*/... ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, GS, 3 ), ( this->SetGameserverFlag();, thisclass, func, __VA_ARGS__ ) ) + +#define STEAM_GAMESERVER_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) + + +#define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ + CCallback< thisclass, param, true > var; void func( param *pParam ) + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + + +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline CSteamGameServerAPIContext& SteamGameServerInternal_ModuleContext() +{ + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* ctx[ sizeof(CSteamGameServerAPIContext)/sizeof(void*) ]; + return *(CSteamGameServerAPIContext*)ctx; +} +#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ + if ( !SteamGameServer_GetHSteamPipe() ) return 0; \ + CSteamGameServerAPIContext &ctx = SteamGameServerInternal_ModuleContext(); \ + if ( !ctx.AccessFunc() ) ctx.Init(); \ + return ctx.AccessFunc(); + +inline ISteamClient *SteamGameServerClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } +inline ISteamGameServer *SteamGameServer() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServer ) } +inline ISteamUtils *SteamGameServerUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerUtils ) } +inline ISteamNetworking *SteamGameServerNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerNetworking ) } +inline ISteamGameServerStats *SteamGameServerStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerStats ) } +inline ISteamHTTP *SteamGameServerHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } +inline ISteamInventory *SteamGameServerInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } +inline ISteamUGC *SteamGameServerUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } +inline ISteamApps *SteamGameServerApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } +#undef _STEAMINTERNAL_ACCESSOR_BODY +#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) + + +inline void CSteamGameServerAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamGameServer = NULL; + m_pSteamGameServerUtils = NULL; + m_pSteamGameServerNetworking = NULL; + m_pSteamGameServerStats = NULL; + m_pSteamHTTP = NULL; + m_pSteamInventory = NULL; + m_pSteamUGC = NULL; + m_pSteamApps = NULL; +} + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamGameServerAPIContext::Init() +{ + HSteamUser hSteamUser = SteamGameServer_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamGameServer_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamGameServer = m_pSteamClient->GetISteamGameServer( hSteamUser, hSteamPipe, STEAMGAMESERVER_INTERFACE_VERSION ); + if ( !m_pSteamGameServer ) + return false; + + m_pSteamGameServerUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerUtils ) + return false; + + m_pSteamGameServerNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamGameServerNetworking ) + return false; + + m_pSteamGameServerStats = m_pSteamClient->GetISteamGameServerStats( hSteamUser, hSteamPipe, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerStats ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + return true; +} + + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + if ( !SteamInternal_GameServer_Init( unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + return false; + + return true; +} + + +inline void SteamGameServer_ReleaseCurrentThreadMemory() +{ + SteamAPI_ReleaseCurrentThreadMemory(); +} + +#endif // STEAM_GAMESERVER_H diff --git a/lib/linux/include/steam/steamclientpublic.h b/lib/linux/include/steam/steamclientpublic.h new file mode 100644 index 0000000..8d89376 --- /dev/null +++ b/lib/linux/include/steam/steamclientpublic.h @@ -0,0 +1,1255 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMCLIENTPUBLIC_H +#define STEAMCLIENTPUBLIC_H +#ifdef _WIN32 +#pragma once +#endif +//lint -save -e1931 -e1927 -e1924 -e613 -e726 + +// This header file defines the interface between the calling application and the code that +// knows how to communicate with the connection manager (CM) from the Steam service + +// This header file is intended to be portable; ideally this 1 header file plus a lib or dll +// is all you need to integrate the client library into some other tree. So please avoid +// including or requiring other header files if possible. This header should only describe the +// interface layer, no need to include anything about the implementation. + +#include "steamtypes.h" +#include "steamuniverse.h" + +// General result codes +enum EResult +{ + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection +// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha + k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned + k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) + k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid + k_EResultIPBanned = 105, // the ip address has been banned from taking this action + k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use +}; + +// Error codes for use with the voice functions +enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, + +}; + +// Result codes to GSHandleClientDeny/Kick +enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +}; + +// return type of GetAuthSessionTicket +typedef uint32 HAuthTicket; +const HAuthTicket k_HAuthTicketInvalid = 0; + +// results from BeginAuthSession +enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. + k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. + k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID + k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version + k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game + k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired +}; + +// Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession +enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. + k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam + k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. + k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. + k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. + k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user + k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. + k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. + k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC +}; + +// results from UserHasLicenseForApp +enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated +}; + + +// Steam account types +enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, // single user account + k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account + k_EAccountTypeGameServer = 3, // game server account + k_EAccountTypeAnonGameServer = 4, // anonymous game server account + k_EAccountTypePending = 5, // pending + k_EAccountTypeContentServer = 6, // content server + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. + k_EAccountTypeAnonUser = 10, + + // Max of 16 items in this field + k_EAccountTypeMax +}; + + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing + k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all + k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released + k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released. + k_EAppReleaseState_Released = 4, // owners can download and play app. +}; + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0x0000, // unknown + k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game + k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game + k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region + k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version + k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform + k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device + k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses + k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) + k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user + k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play + k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired + k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc + k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically + k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring + k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license + k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem + k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet + k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental +}; + + +//----------------------------------------------------------------------------- +// Purpose: designed as flags to allow filters masks +//----------------------------------------------------------------------------- +enum EAppType +{ + k_EAppType_Invalid = 0x000, // unknown / invalid + k_EAppType_Game = 0x001, // playable game, default type + k_EAppType_Application = 0x002, // software application + k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers + k_EAppType_Demo = 0x008, // game demo + k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web + k_EAppType_DLC = 0x020, // down loadable content + k_EAppType_Guide = 0x040, // game guide, PDF etc + k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) + k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) + k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) + k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games + k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) + k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps + k_EAppType_Music = 0x2000, // Music files + k_EAppType_Series = 0x4000, // Container app for video series + + k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only + k_EAppType_DepotOnly = 0x80000000, // placeholder since depots and apps share the same namespace +}; + + + +//----------------------------------------------------------------------------- +// types of user game stats fields +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE +//----------------------------------------------------------------------------- +enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + // Read as FLOAT, set with count / session length + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + + // max, for sanity checks + k_ESteamUserStatTypeMAX +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Entry Types (previously was only friend-to-friend message types) +//----------------------------------------------------------------------------- +enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, // Normal text message from another user + k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) + k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game + k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) + //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) + k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) + // Above are previous FriendMsgType entries, now merged into more generic chat entry types + k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) + k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) + k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) + k_EChatEntryTypeDisconnected = 10, // user disconnected + k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message + //k_EChatEntryTypeReserved1 = 12, // No longer used + //k_EChatEntryTypeReserved2 = 13, // No longer used + k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Room Enter Responses +//----------------------------------------------------------------------------- +enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, // Success + k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) + k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat + k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size + k_EChatRoomEnterResponseError = 5, // Unexpected Error + k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join + k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) + k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled + k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account + k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining + k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat + // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used + // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used + // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used +}; + + +typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); +typedef bool (*PFNLegacyKeyInstalled)(); + +const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; +const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; +// we allow 3 simultaneous user account instances right now, 1= desktop, 2 = console, 4 = web, 0 = all +const unsigned int k_unSteamUserDesktopInstance = 1; +const unsigned int k_unSteamUserConsoleInstance = 2; +const unsigned int k_unSteamUserWebInstance = 4; + +// Special flags for Chat accounts - they go in the top 8 bits +// of the steam ID's "instance", leaving 12 for the actual instances +enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags + + k_EChatInstanceFlagClan = ( k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit + k_EChatInstanceFlagLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc + k_EChatInstanceFlagMMSLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc + + // Max of 8 flags +}; + + +//----------------------------------------------------------------------------- +// Purpose: Marketing message flags that change how a client should handle them +//----------------------------------------------------------------------------- +enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1 << 0, + k_EMarketingMessageFlagsPlatformWindows = 1 << 1, + k_EMarketingMessageFlagsPlatformMac = 1 << 2, + k_EMarketingMessageFlagsPlatformLinux = 1 << 3, + + //aggregate flags + k_EMarketingMessageFlagsPlatformRestrictions = + k_EMarketingMessageFlagsPlatformWindows | + k_EMarketingMessageFlagsPlatformMac | + k_EMarketingMessageFlagsPlatformLinux, +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Possible positions to tell the overlay to show notifications in +//----------------------------------------------------------------------------- +enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Broadcast upload result details +//----------------------------------------------------------------------------- +enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, // broadcast state unknown + k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems + k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed + k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed + k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out + k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data + k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low + k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames + k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay + k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload + k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings + k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data + k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading + k_EBroadcastUploadResultTranscodeBehind = 13, // server failed to keep up with transcode +}; + + +//----------------------------------------------------------------------------- +// Purpose: codes for well defined launch options +//----------------------------------------------------------------------------- +enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, // unknown what launch option does + k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode + k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode + k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode + k_ELaunchOptionType_Config = 4, // runs config tool for this game + k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR + k_ELaunchOptionType_Server = 6, // runs dedicated server for this game + k_ELaunchOptionType_Editor = 7, // runs game editor + k_ELaunchOptionType_Manual = 8, // shows game manual + k_ELaunchOptionType_Benchmark = 9, // runs game benchmark + k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name + k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name + k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name + k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK + k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay + k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK + + + k_ELaunchOptionType_Dialog = 1000, // show launch options dialog +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_OpenVR + || eType == k_ELaunchOptionType_OpenVROverlay + || eType == k_ELaunchOptionType_OculusVR + || eType == k_ELaunchOptionType_OSVR; +} + + +//----------------------------------------------------------------------------- +// Purpose: code points for VR HMD vendors and models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EVRHMDType +{ + k_eEVRHMDType_None = -1, // unknown vendor and model + + k_eEVRHMDType_Unknown = 0, // unknown vendor and model + + k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits + k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre + k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release + + k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd + + k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 + k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 + k_eEVRHMDType_Oculus_Rift = 23, // Oculus rift + + k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD +}; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Controller models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + + // Steam Controllers + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + + // Other Controllers + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36 +}; + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Oculus HMD +//----------------------------------------------------------------------------- +static inline bool BIsOculusHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_Unknown; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Vive HMD +//----------------------------------------------------------------------------- +static inline bool BIsViveHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown; +} + + +#pragma pack( push, 1 ) + +#define CSTEAMID_DEFINED + +// Steam ID structure (64 bits total) +class CSteamID +{ +public: + + //----------------------------------------------------------------------------- + // Purpose: Constructor + //----------------------------------------------------------------------------- + CSteamID() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + Set( unAccountID, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // unAccountInstance - instance + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) + { +#if defined(_SERVER) && defined(Assert) + Assert( ! ( ( k_EAccountTypeIndividual == eAccountType ) && ( unAccountInstance > k_unSteamUserWebInstance ) ) ); // enforce that for individual accounts, instance is always 1 +#endif // _SERVER + InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : ulSteamID - 64-bit representation of a Steam ID + // Note: Will not accept a uint32 or int32 as input, as that is a probable mistake. + // See the stubbed out overloads in the private: section for more info. + //----------------------------------------------------------------------------- + CSteamID( uint64 ulSteamID ) + { + SetFromUint64( ulSteamID ); + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CSteamID( uint64_t ulSteamID ) + { + SetFromUint64( (uint64)ulSteamID ); + } +#endif + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void Set( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + + if ( eAccountType == k_EAccountTypeClan || eAccountType == k_EAccountTypeGameServer ) + { + m_steamid.m_comp.m_unAccountInstance = 0; + } + else + { + // by default we pick the desktop instance + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; + } + } + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void InstancedSet( uint32 unAccountID, uint32 unInstance, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + m_steamid.m_comp.m_unAccountInstance = unInstance; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 52 bit parts and universe/type + // Input : ulIdentifier - 52 bits of goodness + //----------------------------------------------------------------------------- + void FullSet( uint64 ulIdentifier, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = ( ulIdentifier & k_unSteamAccountIDMask ); // account ID is low 32 bits + m_steamid.m_comp.m_unAccountInstance = ( ( ulIdentifier >> 32 ) & k_unSteamAccountInstanceMask ); // account instance is next 20 bits + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 64-bit representation + // Input : ulSteamID - 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + void SetFromUint64( uint64 ulSteamID ) + { + m_steamid.m_unAll64Bits = ulSteamID; + } + + + //----------------------------------------------------------------------------- + // Purpose: Clear all fields, leaving an invalid ID. + //----------------------------------------------------------------------------- + void Clear() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to convert + // eUniverse - universe this ID belongs to + //----------------------------------------------------------------------------- + void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe + m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; // Steam2 only knew desktop instances + } + + //----------------------------------------------------------------------------- + // Purpose: Fills out a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to write to + //----------------------------------------------------------------------------- + void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const + { + // only individual accounts have any meaning in Steam 2, only they can be mapped + // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); + + pTSteamGlobalUserID->m_SteamInstanceID = 0; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; + } +#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) + + //----------------------------------------------------------------------------- + // Purpose: Converts steam ID to its 64-bit representation + // Output : 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + uint64 ConvertToUint64() const + { + return m_steamid.m_unAll64Bits; + } + + + //----------------------------------------------------------------------------- + // Purpose: Converts the static parts of a steam ID to a 64-bit representation. + // For multiseat accounts, all instances of that account will have the + // same static account key, so they can be grouped together by the static + // account key. + // Output : 64-bit static account key + //----------------------------------------------------------------------------- + uint64 GetStaticAccountKey() const + { + // note we do NOT include the account instance (which is a dynamic property) in the static account key + return (uint64) ( ( ( (uint64) m_steamid.m_comp.m_EUniverse ) << 56 ) + ((uint64) m_steamid.m_comp.m_EAccountType << 52 ) + m_steamid.m_comp.m_unAccountID ); + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonGameServer; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonUserLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonUser; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server login that will be filled in? + //----------------------------------------------------------------------------- + bool BBlankAnonAccount() const + { + return m_steamid.m_comp.m_unAccountID == 0 && BAnonAccount() && m_steamid.m_comp.m_unAccountInstance == 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a game server account id? (Either persistent or anonymous) + //----------------------------------------------------------------------------- + bool BGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a persistent (not anonymous) game server account id? + //----------------------------------------------------------------------------- + bool BPersistentGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server account id? + //----------------------------------------------------------------------------- + bool BAnonGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a content server account id? + //----------------------------------------------------------------------------- + bool BContentServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeContentServer; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a clan account id? + //----------------------------------------------------------------------------- + bool BClanAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool BChatAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool IsLobby() const + { + return ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat ) + && ( m_steamid.m_comp.m_unAccountInstance & k_EChatInstanceFlagLobby ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an individual user account id? + //----------------------------------------------------------------------------- + bool BIndividualAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual || m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous account? + //----------------------------------------------------------------------------- + bool BAnonAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) + //----------------------------------------------------------------------------- + bool BAnonUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a faked up Steam ID for a PSN friend account? + //----------------------------------------------------------------------------- + bool BConsoleUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + // simple accessors + void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } + void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } + void ClearIndividualInstance() { if ( BIndividualAccount() ) m_steamid.m_comp.m_unAccountInstance = 0; } + bool HasNoIndividualInstance() const { return BIndividualAccount() && (m_steamid.m_comp.m_unAccountInstance==0); } + AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } + uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } + EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } + EUniverse GetEUniverse() const { return m_steamid.m_comp.m_EUniverse; } + void SetEUniverse( EUniverse eUniverse ) { m_steamid.m_comp.m_EUniverse = eUniverse; } + bool IsValid() const; + + // this set of functions is hidden, will be moved out of class + explicit CSteamID( const char *pchSteamID, EUniverse eDefaultUniverse = k_EUniverseInvalid ); + const char * Render() const; // renders this steam ID to string + static const char * Render( uint64 ulSteamID ); // static method to render a uint64 representation of a steam ID to a string + + void SetFromString( const char *pchSteamID, EUniverse eDefaultUniverse ); + // SetFromString allows many partially-correct strings, constraining how + // we might be able to change things in the future. + // SetFromStringStrict requires the exact string forms that we support + // and is preferred when the caller knows it's safe to be strict. + // Returns whether the string parsed correctly. + bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); + bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); + + inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } + inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } + inline bool operator<( const CSteamID &val ) const { return m_steamid.m_unAll64Bits < val.m_steamid.m_unAll64Bits; } + inline bool operator>( const CSteamID &val ) const { return m_steamid.m_unAll64Bits > val.m_steamid.m_unAll64Bits; } + + // DEBUG function + bool BValidExternalSteamID() const; + +private: + // These are defined here to prevent accidental implicit conversion of a u32AccountID to a CSteamID. + // If you get a compiler error about an ambiguous constructor/function then it may be because you're + // passing a 32-bit int to a function that takes a CSteamID. You should explicitly create the SteamID + // using the correct Universe and account Type/Instance values. + CSteamID( uint32 ); + CSteamID( int32 ); + + // 64 bits total + union SteamID_t + { + struct SteamIDComponent_t + { +#ifdef VALVE_BIG_ENDIAN + EUniverse m_EUniverse : 8; // universe this account belongs to + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + unsigned int m_unAccountInstance : 20; // dynamic instance ID + uint32 m_unAccountID : 32; // unique account identifier +#else + uint32 m_unAccountID : 32; // unique account identifier + unsigned int m_unAccountInstance : 20; // dynamic instance ID + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + EUniverse m_EUniverse : 8; // universe this account belongs to +#endif + } m_comp; + + uint64 m_unAll64Bits; + } m_steamid; +}; + +inline bool CSteamID::IsValid() const +{ + if ( m_steamid.m_comp.m_EAccountType <= k_EAccountTypeInvalid || m_steamid.m_comp.m_EAccountType >= k_EAccountTypeMax ) + return false; + + if ( m_steamid.m_comp.m_EUniverse <= k_EUniverseInvalid || m_steamid.m_comp.m_EUniverse >= k_EUniverseMax ) + return false; + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance > k_unSteamUserWebInstance ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != 0 ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 ) + return false; + // Any limit on instances? We use them for local users and bots + } + return true; +} + +// generic invalid CSteamID +#define k_steamIDNil CSteamID() + +// This steamID comes from a user game connection to an out of date GS that hasnt implemented the protocol +// to provide its steamID +#define k_steamIDOutofDateGS CSteamID( 0, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID comes from a user game connection to an sv_lan GS +#define k_steamIDLanModeGS CSteamID( 0, 0, k_EUniversePublic, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that has just booted but hasnt yet even initialized +// its steam3 component and started logging on. +#define k_steamIDNotInitYetGS CSteamID( 1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that isn't using the steam authentication system but still +// wants to support the "Join Game" option in the friends list +#define k_steamIDNonSteamGS CSteamID( 2, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) + + +#ifdef STEAM +// Returns the matching chat steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeChat it will be returned with the same instance +CSteamID ChatIDFromSteamID( const CSteamID &steamID ); +// Returns the matching clan steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeClan it will be returned with the same instance +CSteamID ClanIDFromSteamID( const CSteamID &steamID ); +// Asserts steamID type before conversion +CSteamID ChatIDFromClanID( const CSteamID &steamIDClan ); +// Asserts steamID type before conversion +CSteamID ClanIDFromChatID( const CSteamID &steamIDChat ); + +#endif // _STEAM + + +//----------------------------------------------------------------------------- +// Purpose: encapsulates an appID/modID pair +//----------------------------------------------------------------------------- +class CGameID +{ +public: + + CGameID() + { + m_gameID.m_nType = k_EGameIDTypeApp; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nModID = 0; + } + + explicit CGameID( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CGameID( uint64_t ulGameID ) + { + m_ulGameID = (uint64)ulGameID; + } +#endif + + explicit CGameID( int32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + explicit CGameID( uint32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + CGameID( uint32 nAppID, uint32 nModID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nModID = nModID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + } + + // Hidden functions used only by Steam + explicit CGameID( const char *pchGameID ); + const char *Render() const; // render this Game ID to string + static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string + + // must include checksum_crc.h first to get this functionality +#if defined( CHECKSUM_CRC_H ) + CGameID( uint32 nAppID, const char *pchModPath ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + + char rgchModDir[MAX_PATH]; + V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); + CRC32_t crc32; + CRC32_Init( &crc32 ); + CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + + CGameID( const char *pchExePath, const char *pchAppName ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeShortcut; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + if ( pchExePath ) + CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); + if ( pchAppName ) + CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#if defined( VSTFILEID_H ) + + CGameID( VstFileID vstFileID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeP2P; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + const char *pchFileId = vstFileID.Render(); + CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#endif /* VSTFILEID_H */ + +#endif /* CHECKSUM_CRC_H */ + + + uint64 ToUint64() const + { + return m_ulGameID; + } + + uint64 *GetUint64Ptr() + { + return &m_ulGameID; + } + + void Set( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } + + bool IsMod() const + { + return ( m_gameID.m_nType == k_EGameIDTypeGameMod ); + } + + bool IsShortcut() const + { + return ( m_gameID.m_nType == k_EGameIDTypeShortcut ); + } + + bool IsP2PFile() const + { + return ( m_gameID.m_nType == k_EGameIDTypeP2P ); + } + + bool IsSteamApp() const + { + return ( m_gameID.m_nType == k_EGameIDTypeApp ); + } + + uint32 ModID() const + { + return m_gameID.m_nModID; + } + + uint32 AppID() const + { + return m_gameID.m_nAppID; + } + + bool operator == ( const CGameID &rhs ) const + { + return m_ulGameID == rhs.m_ulGameID; + } + + bool operator != ( const CGameID &rhs ) const + { + return !(*this == rhs); + } + + bool operator < ( const CGameID &rhs ) const + { + return ( m_ulGameID < rhs.m_ulGameID ); + } + + bool IsValid() const + { + // each type has it's own invalid fixed point: + switch( m_gameID.m_nType ) + { + case k_EGameIDTypeApp: + return m_gameID.m_nAppID != k_uAppIdInvalid; + + case k_EGameIDTypeGameMod: + return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + case k_EGameIDTypeShortcut: + return (m_gameID.m_nModID & 0x80000000) != 0; + + case k_EGameIDTypeP2P: + return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + default: +#if defined(Assert) + Assert(false); +#endif + return false; + } + + } + + void Reset() + { + m_ulGameID = 0; + } + + + +private: + + enum EGameIDType + { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + + struct GameID_t + { +#ifdef VALVE_BIG_ENDIAN + unsigned int m_nModID : 32; + unsigned int m_nType : 8; + unsigned int m_nAppID : 24; +#else + unsigned int m_nAppID : 24; + unsigned int m_nType : 8; + unsigned int m_nModID : 32; +#endif + }; + + union + { + uint64 m_ulGameID; + GameID_t m_gameID; + }; +}; + +#pragma pack( pop ) + +const int k_cchGameExtraInfoMax = 64; + + +//----------------------------------------------------------------------------- +// Constants used for query ports. +//----------------------------------------------------------------------------- + +#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. +#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. + + +//----------------------------------------------------------------------------- +// Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback +// just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) +//----------------------------------------------------------------------------- +typedef void (*PFNPreMinidumpCallback)(void *context); + +//----------------------------------------------------------------------------- +// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers +//----------------------------------------------------------------------------- +typedef void *BREAKPAD_HANDLE; +#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 + +#endif // STEAMCLIENTPUBLIC_H diff --git a/lib/linux/include/steam/steamencryptedappticket.h b/lib/linux/include/steam/steamencryptedappticket.h new file mode 100644 index 0000000..48c63b4 --- /dev/null +++ b/lib/linux/include/steam/steamencryptedappticket.h @@ -0,0 +1,32 @@ +//========= Copyright © 1996-2010, Valve LLC, All rights reserved. ============ +// +// Purpose: utilities to decode/decrypt a ticket from the +// ISteamUser::RequestEncryptedAppTicket, ISteamUser::GetEncryptedAppTicket API +// +// To use: declare CSteamEncryptedAppTicket, then call BDecryptTicket +// if BDecryptTicket returns true, other accessors are valid +// +//============================================================================= + +#include "steam_api.h" + +static const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + + +S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, + uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, + const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey ); + +S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID ); + +S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); \ No newline at end of file diff --git a/lib/linux/include/steam/steamhttpenums.h b/lib/linux/include/steam/steamhttpenums.h new file mode 100644 index 0000000..d95f195 --- /dev/null +++ b/lib/linux/include/steam/steamhttpenums.h @@ -0,0 +1,98 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: HTTP related enums, stuff that is shared by both clients and servers, and our +// UI projects goes here. +// +//============================================================================= + +#ifndef STEAMHTTPENUMS_H +#define STEAMHTTPENUMS_H +#ifdef _WIN32 +#pragma once +#endif + +// HTTP related types + +// This enum is used in client API methods, do not re-number existing values. +enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT +}; + + +// HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions +// of each of these. +enum EHTTPStatusCode +{ + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +}; + +#endif // STEAMHTTPENUMS_H \ No newline at end of file diff --git a/lib/linux/include/steam/steamps3params.h b/lib/linux/include/steam/steamps3params.h new file mode 100644 index 0000000..c0741b4 --- /dev/null +++ b/lib/linux/include/steam/steamps3params.h @@ -0,0 +1,112 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMPS3PARAMS_H +#define STEAMPS3PARAMS_H +#ifdef _WIN32 +#pragma once +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 initialization parameters +// +// The following structure must be passed to when loading steam_api_ps3.prx +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_PS3_PATH_MAX 1055 +#define STEAM_PS3_SERVICE_ID_MAX 32 +#define STEAM_PS3_COMMUNICATION_ID_MAX 10 +#define STEAM_PS3_COMMUNICATION_SIG_MAX 160 +#define STEAM_PS3_LANGUAGE_MAX 64 +#define STEAM_PS3_REGION_CODE_MAX 16 +#define STEAM_PS3_CURRENT_PARAMS_VER 2 +struct SteamPS3Params_t +{ + uint32 m_unVersion; // set to STEAM_PS3_CURRENT_PARAMS_VER + + void *pReserved; + uint32 m_nAppId; // set to your game's appid + + char m_rgchInstallationPath[ STEAM_PS3_PATH_MAX ]; // directory containing latest steam prx's and sdata. Can be read only (BDVD) + char m_rgchSystemCache[ STEAM_PS3_PATH_MAX ]; // temp working cache, not persistent + char m_rgchGameData[ STEAM_PS3_PATH_MAX ]; // persistent game data path for storing user data + char m_rgchNpServiceID[ STEAM_PS3_SERVICE_ID_MAX ]; + char m_rgchNpCommunicationID[ STEAM_PS3_COMMUNICATION_ID_MAX ]; + char m_rgchNpCommunicationSig[ STEAM_PS3_COMMUNICATION_SIG_MAX ]; + + // Language should be one of the following. must be zero terminated + // danish + // dutch + // english + // finnish + // french + // german + // italian + // korean + // norwegian + // polish + // portuguese + // russian + // schinese + // spanish + // swedish + // tchinese + char m_rgchSteamLanguage[ STEAM_PS3_LANGUAGE_MAX ]; + + // region codes are "SCEA", "SCEE", "SCEJ". must be zero terminated + char m_rgchRegionCode[ STEAM_PS3_REGION_CODE_MAX ]; + + // Should be SYS_TTYP3 through SYS_TTYP10, if it's 0 then Steam won't spawn a + // thread to read console input at all. Using this let's you use Steam console commands + // like: profile_on, profile_off, profile_dump, mem_stats, mem_validate. + unsigned int m_cSteamInputTTY; + + struct Ps3netInit_t + { + bool m_bNeedInit; + void *m_pMemory; + int m_nMemorySize; + int m_flags; + } m_sysNetInitInfo; + + struct Ps3jpgInit_t + { + bool m_bNeedInit; + } m_sysJpgInitInfo; + + struct Ps3pngInit_t + { + bool m_bNeedInit; + } m_sysPngInitInfo; + + struct Ps3sysutilUserInfo_t + { + bool m_bNeedInit; + } m_sysSysUtilUserInfo; + + bool m_bIncludeNewsPage; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 memory structure +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAMPS3_MALLOC_INUSE 0x53D04A51 +#define STEAMPS3_MALLOC_SYSTEM 0x0D102C48 +#define STEAMPS3_MALLOC_OK 0xFFD04A51 +struct SteamPS3Memory_t +{ + bool m_bSingleAllocation; // If true, Steam will request one 6MB allocation and use the returned memory for all future allocations + // If false, Steam will make call malloc for each allocation + + // required function pointers + void* (*m_pfMalloc)(size_t); + void* (*m_pfRealloc)(void *, size_t); + void (*m_pfFree)(void *); + size_t (*m_pUsable_size)(void*); +}; + + +#endif // STEAMPS3PARAMS_H diff --git a/lib/linux/include/steam/steamtypes.h b/lib/linux/include/steam/steamtypes.h new file mode 100644 index 0000000..f74df1a --- /dev/null +++ b/lib/linux/include/steam/steamtypes.h @@ -0,0 +1,181 @@ +//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMTYPES_H +#define STEAMTYPES_H +#ifdef _WIN32 +#pragma once +#endif + +#define S_CALLTYPE __cdecl + +// Steam-specific types. Defined here so this header file can be included in other code bases. +#ifndef WCHARTYPES_H +typedef unsigned char uint8; +#endif + +#if defined( __GNUC__ ) && !defined(POSIX) + #if __GNUC__ < 4 + #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" + #endif + #define POSIX 1 +#endif + +#if defined(__x86_64__) || defined(_WIN64) +#define X64BITS +#endif + +// Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. +#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) +#define VALVE_BIG_ENDIAN +#endif + +typedef unsigned char uint8; +typedef signed char int8; + +#if defined( _WIN32 ) + +typedef __int16 int16; +typedef unsigned __int16 uint16; +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; + +typedef int64 lint64; +typedef uint64 ulint64; + +#ifdef X64BITS +typedef __int64 intp; // intp is an integer that can accomodate a pointer +typedef unsigned __int64 uintp; // (ie, sizeof(intp) >= sizeof(int) && sizeof(intp) >= sizeof(void *) +#else +typedef __int32 intp; +typedef unsigned __int32 uintp; +#endif + +#else // _WIN32 + +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; + +// [u]int64 are actually defined as 'long long' and gcc 64-bit +// doesn't automatically consider them the same as 'long int'. +// Changing the types for [u]int64 is complicated by +// there being many definitions, so we just +// define a 'long int' here and use it in places that would +// otherwise confuse the compiler. +typedef long int lint64; +typedef unsigned long int ulint64; + +#ifdef X64BITS +typedef long long intp; +typedef unsigned long long uintp; +#else +typedef int intp; +typedef unsigned int uintp; +#endif + +#endif // else _WIN32 + +#ifdef API_GEN +# define CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define CLANG_ATTR(ATTR) +#endif + +#define METHOD_DESC(DESC) CLANG_ATTR( "desc:" #DESC ";" ) +#define IGNOREATTR() CLANG_ATTR( "ignore" ) +#define OUT_STRUCT() CLANG_ATTR( "out_struct: ;" ) +#define OUT_STRING() CLANG_ATTR( "out_string: ;" ) +#define OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define OUT_ARRAY_COUNT(COUNTER, DESC) CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define ARRAY_COUNT(COUNTER) CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define ARRAY_COUNT_D(COUNTER, DESC) CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define BUFFER_COUNT(COUNTER) CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define OUT_BUFFER_COUNT(COUNTER) CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define OUT_STRING_COUNT(COUNTER) CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define DESC(DESC) CLANG_ATTR("desc:" #DESC ";") +#define CALL_RESULT(RESULT_TYPE) CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define CALL_BACK(RESULT_TYPE) CLANG_ATTR("callback:" #RESULT_TYPE ";") + +const int k_cubSaltSize = 8; +typedef uint8 Salt_t[ k_cubSaltSize ]; + +//----------------------------------------------------------------------------- +// GID (GlobalID) stuff +// This is a globally unique identifier. It's guaranteed to be unique across all +// racks and servers for as long as a given universe persists. +//----------------------------------------------------------------------------- +// NOTE: for GID parsing/rendering and other utils, see gid.h +typedef uint64 GID_t; + +const GID_t k_GIDNil = 0xffffffffffffffffull; + +// For convenience, we define a number of types that are just new names for GIDs +typedef uint64 JobID_t; // Each Job has a unique ID +typedef GID_t TxnID_t; // Each financial transaction has a unique ID + +const GID_t k_TxnIDNil = k_GIDNil; +const GID_t k_TxnIDUnknown = 0; + +const JobID_t k_JobIDNil = 0xffffffffffffffffull; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 PackageId_t; +const PackageId_t k_uPackageIdFreeSub = 0x0; +const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; + +typedef uint32 BundleId_t; +const BundleId_t k_uBundleIdInvalid = 0; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 AppId_t; +const AppId_t k_uAppIdInvalid = 0x0; + +typedef uint64 AssetClassId_t; +const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; + +typedef uint32 PhysicalItemId_t; +const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; + + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. AppIds and DepotIDs also presently +// share the same namespace, but since we'd like to change that in the future +// I've defined it seperately here. +typedef uint32 DepotId_t; +const DepotId_t k_uDepotIdInvalid = 0x0; + +// RTime32 +// We use this 32 bit time representing real world time. +// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +typedef uint32 RTime32; + +typedef uint32 CellID_t; +const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; + +// handle to a Steam API call +typedef uint64 SteamAPICall_t; +const SteamAPICall_t k_uAPICallInvalid = 0x0; + +typedef uint32 AccountID_t; + +typedef uint32 PartnerId_t; +const PartnerId_t k_uPartnerIdInvalid = 0; + +// ID for a depot content manifest +typedef uint64 ManifestId_t; +const ManifestId_t k_uManifestIdInvalid = 0; + + + +#endif // STEAMTYPES_H diff --git a/lib/linux/include/steam/steamuniverse.h b/lib/linux/include/steam/steamuniverse.h new file mode 100644 index 0000000..dd384dc --- /dev/null +++ b/lib/linux/include/steam/steamuniverse.h @@ -0,0 +1,27 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMUNIVERSE_H +#define STEAMUNIVERSE_H +#ifdef _WIN32 +#pragma once +#endif + + +// Steam universes. Each universe is a self-contained Steam instance. +enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + // k_EUniverseRC = 5, // no such universe anymore + k_EUniverseMax +}; + + +#endif // STEAMUNIVERSE_H diff --git a/lib/linux/include/t1tables.h b/lib/linux/include/t1tables.h new file mode 100644 index 0000000..61aefdd --- /dev/null +++ b/lib/linux/include/t1tables.h @@ -0,0 +1,760 @@ +/***************************************************************************/ +/* */ +/* t1tables.h */ +/* */ +/* Basic Type 1/Type 2 tables definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2004, 2006, 2008, 2009, 2011, 2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TABLES_H__ +#define __T1TABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* type1_tables */ + /* */ + /* <Title> */ + /* Type 1 Tables */ + /* */ + /* <Abstract> */ + /* Type~1 (PostScript) specific font tables. */ + /* */ + /* <Description> */ + /* This section contains the definition of Type 1-specific tables, */ + /* including structures related to other PostScript font formats. */ + /* */ + /* <Order> */ + /* PS_FontInfoRec */ + /* PS_FontInfo */ + /* PS_PrivateRec */ + /* PS_Private */ + /* */ + /* CID_FaceDictRec */ + /* CID_FaceDict */ + /* CID_FaceInfoRec */ + /* CID_FaceInfo */ + /* */ + /* FT_Has_PS_Glyph_Names */ + /* FT_Get_PS_Font_Info */ + /* FT_Get_PS_Font_Private */ + /* FT_Get_PS_Font_Value */ + /* */ + /* T1_Blend_Flags */ + /* T1_EncodingType */ + /* PS_Dict_Keys */ + /* */ + /*************************************************************************/ + + + /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ + /* structures in order to support Multiple Master fonts. */ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfoRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* FontInfo dictionary. */ + /* */ + typedef struct PS_FontInfoRec_ + { + FT_String* version; + FT_String* notice; + FT_String* full_name; + FT_String* family_name; + FT_String* weight; + FT_Long italic_angle; + FT_Bool is_fixed_pitch; + FT_Short underline_position; + FT_UShort underline_thickness; + + } PS_FontInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfo */ + /* */ + /* <Description> */ + /* A handle to a @PS_FontInfoRec structure. */ + /* */ + typedef struct PS_FontInfoRec_* PS_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_FontInfo */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_FontInfoRec T1_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_PrivateRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 private dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* Private dictionary. */ + /* */ + typedef struct PS_PrivateRec_ + { + FT_Int unique_id; + FT_Int lenIV; + + FT_Byte num_blue_values; + FT_Byte num_other_blues; + FT_Byte num_family_blues; + FT_Byte num_family_other_blues; + + FT_Short blue_values[14]; + FT_Short other_blues[10]; + + FT_Short family_blues [14]; + FT_Short family_other_blues[10]; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_fuzz; + + FT_UShort standard_width[1]; + FT_UShort standard_height[1]; + + FT_Byte num_snap_widths; + FT_Byte num_snap_heights; + FT_Bool force_bold; + FT_Bool round_stem_up; + + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ + + FT_Fixed expansion_factor; + + FT_Long language_group; + FT_Long password; + + FT_Short min_feature[2]; + + } PS_PrivateRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Private */ + /* */ + /* <Description> */ + /* A handle to a @PS_PrivateRec structure. */ + /* */ + typedef struct PS_PrivateRec_* PS_Private; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_Private */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_PrivateRec T1_Private; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_Blend_Flags */ + /* */ + /* <Description> */ + /* A set of flags used to indicate which fields are present in a */ + /* given blend dictionary (font info or private). Used to support */ + /* Multiple Masters fonts. */ + /* */ + /* <Values> */ + /* T1_BLEND_UNDERLINE_POSITION :: */ + /* T1_BLEND_UNDERLINE_THICKNESS :: */ + /* T1_BLEND_ITALIC_ANGLE :: */ + /* T1_BLEND_BLUE_VALUES :: */ + /* T1_BLEND_OTHER_BLUES :: */ + /* T1_BLEND_STANDARD_WIDTH :: */ + /* T1_BLEND_STANDARD_HEIGHT :: */ + /* T1_BLEND_STEM_SNAP_WIDTHS :: */ + /* T1_BLEND_STEM_SNAP_HEIGHTS :: */ + /* T1_BLEND_BLUE_SCALE :: */ + /* T1_BLEND_BLUE_SHIFT :: */ + /* T1_BLEND_FAMILY_BLUES :: */ + /* T1_BLEND_FAMILY_OTHER_BLUES :: */ + /* T1_BLEND_FORCE_BOLD :: */ + /* */ + typedef enum T1_Blend_Flags_ + { + /* required fields in a FontInfo blend dictionary */ + T1_BLEND_UNDERLINE_POSITION = 0, + T1_BLEND_UNDERLINE_THICKNESS, + T1_BLEND_ITALIC_ANGLE, + + /* required fields in a Private blend dictionary */ + T1_BLEND_BLUE_VALUES, + T1_BLEND_OTHER_BLUES, + T1_BLEND_STANDARD_WIDTH, + T1_BLEND_STANDARD_HEIGHT, + T1_BLEND_STEM_SNAP_WIDTHS, + T1_BLEND_STEM_SNAP_HEIGHTS, + T1_BLEND_BLUE_SCALE, + T1_BLEND_BLUE_SHIFT, + T1_BLEND_FAMILY_BLUES, + T1_BLEND_FAMILY_OTHER_BLUES, + T1_BLEND_FORCE_BOLD, + + T1_BLEND_MAX /* do not remove */ + + } T1_Blend_Flags; + + + /* these constants are deprecated; use the corresponding */ + /* `T1_Blend_Flags' values instead */ +#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION +#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS +#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE +#define t1_blend_blue_values T1_BLEND_BLUE_VALUES +#define t1_blend_other_blues T1_BLEND_OTHER_BLUES +#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH +#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT +#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS +#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS +#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE +#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT +#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES +#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES +#define t1_blend_force_bold T1_BLEND_FORCE_BOLD +#define t1_blend_max T1_BLEND_MAX + + /* */ + + + /* maximum number of Multiple Masters designs, as defined in the spec */ +#define T1_MAX_MM_DESIGNS 16 + + /* maximum number of Multiple Masters axes, as defined in the spec */ +#define T1_MAX_MM_AXIS 4 + + /* maximum number of elements in a design map */ +#define T1_MAX_MM_MAP_POINTS 20 + + + /* this structure is used to store the BlendDesignMap entry for an axis */ + typedef struct PS_DesignMap_ + { + FT_Byte num_points; + FT_Long* design_points; + FT_Fixed* blend_points; + + } PS_DesignMapRec, *PS_DesignMap; + + /* backwards-compatible definition */ + typedef PS_DesignMapRec T1_DesignMap; + + + typedef struct PS_BlendRec_ + { + FT_UInt num_designs; + FT_UInt num_axis; + + FT_String* axis_names[T1_MAX_MM_AXIS]; + FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; + PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; + + FT_Fixed* weight_vector; + FT_Fixed* default_weight_vector; + + PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; + PS_Private privates [T1_MAX_MM_DESIGNS + 1]; + + FT_ULong blend_bitflags; + + FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; + + /* since 2.3.0 */ + + /* undocumented, optional: the default design instance; */ + /* corresponds to default_weight_vector -- */ + /* num_default_design_vector == 0 means it is not present */ + /* in the font and associated metrics files */ + FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; + FT_UInt num_default_design_vector; + + } PS_BlendRec, *PS_Blend; + + + /* backwards-compatible definition */ + typedef PS_BlendRec T1_Blend; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDictRec */ + /* */ + /* <Description> */ + /* A structure used to represent data in a CID top-level dictionary. */ + /* */ + typedef struct CID_FaceDictRec_ + { + PS_PrivateRec private_dict; + + FT_UInt len_buildchar; + FT_Fixed forcebold_threshold; + FT_Pos stroke_width; + FT_Fixed expansion_factor; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_UInt num_subrs; + FT_ULong subrmap_offset; + FT_Int sd_bytes; + + } CID_FaceDictRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDict */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceDictRec structure. */ + /* */ + typedef struct CID_FaceDictRec_* CID_FaceDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FontDict */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceDictRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceDictRec CID_FontDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfoRec */ + /* */ + /* <Description> */ + /* A structure used to represent CID Face information. */ + /* */ + typedef struct CID_FaceInfoRec_ + { + FT_String* cid_font_name; + FT_Fixed cid_version; + FT_Int cid_font_type; + + FT_String* registry; + FT_String* ordering; + FT_Int supplement; + + PS_FontInfoRec font_info; + FT_BBox font_bbox; + FT_ULong uid_base; + + FT_Int num_xuid; + FT_ULong xuid[16]; + + FT_ULong cidmap_offset; + FT_Int fd_bytes; + FT_Int gd_bytes; + FT_ULong cid_count; + + FT_Int num_dicts; + CID_FaceDict font_dicts; + + FT_ULong data_offset; + + } CID_FaceInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfo */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceInfoRec structure. */ + /* */ + typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_Info */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceInfoRec CID_Info; + + + /************************************************************************ + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph + * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, + * except that certain fonts (mostly TrueType) contain incorrect + * glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ + FT_EXPORT( FT_Int ) + FT_Has_PS_Glyph_Names( FT_Face face ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * Output font info structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the font info structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function will + * return the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Info( FT_Face face, + PS_FontInfo afont_info ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Private + * + * @description: + * Retrieve the @PS_PrivateRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_private :: + * Output private dictionary structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the @PS_PrivateRec structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_EncodingType */ + /* */ + /* <Description> */ + /* An enumeration describing the `Encoding' entry in a Type 1 */ + /* dictionary. */ + /* */ + /* <Values> */ + /* T1_ENCODING_TYPE_NONE :: */ + /* T1_ENCODING_TYPE_ARRAY :: */ + /* T1_ENCODING_TYPE_STANDARD :: */ + /* T1_ENCODING_TYPE_ISOLATIN1 :: */ + /* T1_ENCODING_TYPE_EXPERT :: */ + /* */ + typedef enum T1_EncodingType_ + { + T1_ENCODING_TYPE_NONE = 0, + T1_ENCODING_TYPE_ARRAY, + T1_ENCODING_TYPE_STANDARD, + T1_ENCODING_TYPE_ISOLATIN1, + T1_ENCODING_TYPE_EXPERT + + } T1_EncodingType; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* PS_Dict_Keys */ + /* */ + /* <Description> */ + /* An enumeration used in calls to @FT_Get_PS_Font_Value to identify */ + /* the Type~1 dictionary entry to retrieve. */ + /* */ + /* <Values> */ + /* PS_DICT_FONT_TYPE :: */ + /* PS_DICT_FONT_MATRIX :: */ + /* PS_DICT_FONT_BBOX :: */ + /* PS_DICT_PAINT_TYPE :: */ + /* PS_DICT_FONT_NAME :: */ + /* PS_DICT_UNIQUE_ID :: */ + /* PS_DICT_NUM_CHAR_STRINGS :: */ + /* PS_DICT_CHAR_STRING_KEY :: */ + /* PS_DICT_CHAR_STRING :: */ + /* PS_DICT_ENCODING_TYPE :: */ + /* PS_DICT_ENCODING_ENTRY :: */ + /* PS_DICT_NUM_SUBRS :: */ + /* PS_DICT_SUBR :: */ + /* PS_DICT_STD_HW :: */ + /* PS_DICT_STD_VW :: */ + /* PS_DICT_NUM_BLUE_VALUES :: */ + /* PS_DICT_BLUE_VALUE :: */ + /* PS_DICT_BLUE_FUZZ :: */ + /* PS_DICT_NUM_OTHER_BLUES :: */ + /* PS_DICT_OTHER_BLUE :: */ + /* PS_DICT_NUM_FAMILY_BLUES :: */ + /* PS_DICT_FAMILY_BLUE :: */ + /* PS_DICT_NUM_FAMILY_OTHER_BLUES :: */ + /* PS_DICT_FAMILY_OTHER_BLUE :: */ + /* PS_DICT_BLUE_SCALE :: */ + /* PS_DICT_BLUE_SHIFT :: */ + /* PS_DICT_NUM_STEM_SNAP_H :: */ + /* PS_DICT_STEM_SNAP_H :: */ + /* PS_DICT_NUM_STEM_SNAP_V :: */ + /* PS_DICT_STEM_SNAP_V :: */ + /* PS_DICT_FORCE_BOLD :: */ + /* PS_DICT_RND_STEM_UP :: */ + /* PS_DICT_MIN_FEATURE :: */ + /* PS_DICT_LEN_IV :: */ + /* PS_DICT_PASSWORD :: */ + /* PS_DICT_LANGUAGE_GROUP :: */ + /* PS_DICT_VERSION :: */ + /* PS_DICT_NOTICE :: */ + /* PS_DICT_FULL_NAME :: */ + /* PS_DICT_FAMILY_NAME :: */ + /* PS_DICT_WEIGHT :: */ + /* PS_DICT_IS_FIXED_PITCH :: */ + /* PS_DICT_UNDERLINE_POSITION :: */ + /* PS_DICT_UNDERLINE_THICKNESS :: */ + /* PS_DICT_FS_TYPE :: */ + /* PS_DICT_ITALIC_ANGLE :: */ + /* */ + typedef enum PS_Dict_Keys_ + { + /* conventionally in the font dictionary */ + PS_DICT_FONT_TYPE, /* FT_Byte */ + PS_DICT_FONT_MATRIX, /* FT_Fixed */ + PS_DICT_FONT_BBOX, /* FT_Fixed */ + PS_DICT_PAINT_TYPE, /* FT_Byte */ + PS_DICT_FONT_NAME, /* FT_String* */ + PS_DICT_UNIQUE_ID, /* FT_Int */ + PS_DICT_NUM_CHAR_STRINGS, /* FT_Int */ + PS_DICT_CHAR_STRING_KEY, /* FT_String* */ + PS_DICT_CHAR_STRING, /* FT_String* */ + PS_DICT_ENCODING_TYPE, /* T1_EncodingType */ + PS_DICT_ENCODING_ENTRY, /* FT_String* */ + + /* conventionally in the font Private dictionary */ + PS_DICT_NUM_SUBRS, /* FT_Int */ + PS_DICT_SUBR, /* FT_String* */ + PS_DICT_STD_HW, /* FT_UShort */ + PS_DICT_STD_VW, /* FT_UShort */ + PS_DICT_NUM_BLUE_VALUES, /* FT_Byte */ + PS_DICT_BLUE_VALUE, /* FT_Short */ + PS_DICT_BLUE_FUZZ, /* FT_Int */ + PS_DICT_NUM_OTHER_BLUES, /* FT_Byte */ + PS_DICT_OTHER_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_OTHER_BLUE, /* FT_Short */ + PS_DICT_BLUE_SCALE, /* FT_Fixed */ + PS_DICT_BLUE_SHIFT, /* FT_Int */ + PS_DICT_NUM_STEM_SNAP_H, /* FT_Byte */ + PS_DICT_STEM_SNAP_H, /* FT_Short */ + PS_DICT_NUM_STEM_SNAP_V, /* FT_Byte */ + PS_DICT_STEM_SNAP_V, /* FT_Short */ + PS_DICT_FORCE_BOLD, /* FT_Bool */ + PS_DICT_RND_STEM_UP, /* FT_Bool */ + PS_DICT_MIN_FEATURE, /* FT_Short */ + PS_DICT_LEN_IV, /* FT_Int */ + PS_DICT_PASSWORD, /* FT_Long */ + PS_DICT_LANGUAGE_GROUP, /* FT_Long */ + + /* conventionally in the font FontInfo dictionary */ + PS_DICT_VERSION, /* FT_String* */ + PS_DICT_NOTICE, /* FT_String* */ + PS_DICT_FULL_NAME, /* FT_String* */ + PS_DICT_FAMILY_NAME, /* FT_String* */ + PS_DICT_WEIGHT, /* FT_String* */ + PS_DICT_IS_FIXED_PITCH, /* FT_Bool */ + PS_DICT_UNDERLINE_POSITION, /* FT_Short */ + PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */ + PS_DICT_FS_TYPE, /* FT_UShort */ + PS_DICT_ITALIC_ANGLE, /* FT_Long */ + + PS_DICT_MAX = PS_DICT_ITALIC_ANGLE + + } PS_Dict_Keys; + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Value + * + * @description: + * Retrieve the value for the supplied key from a PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * key :: + * An enumeration value representing the dictionary key to retrieve. + * + * idx :: + * For array values, this specifies the index to be returned. + * + * value :: + * A pointer to memory into which to write the value. + * + * valen_len :: + * The size, in bytes, of the memory supplied for the value. + * + * @output: + * value :: + * The value matching the above key, if it exists. + * + * @return: + * The amount of memory (in bytes) required to hold the requested + * value (if it exists, -1 otherwise). + * + * @note: + * The values returned are not pointers into the internal structures of + * the face, but are `fresh' copies, so that the memory containing them + * belongs to the calling application. This also enforces the + * `read-only' nature of these values, i.e., this function cannot be + * used to manipulate the face. + * + * `value' is a void pointer because the values returned can be of + * various types. + * + * If either `value' is NULL or `value_len' is too small, just the + * required memory size for the requested entry is returned. + * + * The `idx' parameter is used, not only to retrieve elements of, for + * example, the FontMatrix or FontBBox, but also to retrieve name keys + * from the CharStrings dictionary, and the charstrings themselves. It + * is ignored for atomic values. + * + * PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To + * get the value as in the font stream, you need to divide by + * 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale). + * + * IMPORTANT: Only key/value pairs read by the FreeType interpreter can + * be retrieved. So, for example, PostScript procedures such as NP, + * ND, and RD are not available. Arbitrary keys are, obviously, not be + * available either. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Long ) + FT_Get_PS_Font_Value( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + /* */ + +FT_END_HEADER + +#endif /* __T1TABLES_H__ */ + + +/* END */ diff --git a/lib/linux/include/ttnameid.h b/lib/linux/include/ttnameid.h new file mode 100644 index 0000000..e65b558 --- /dev/null +++ b/lib/linux/include/ttnameid.h @@ -0,0 +1,1237 @@ +/***************************************************************************/ +/* */ +/* ttnameid.h */ +/* */ +/* TrueType name ID definitions (specification only). */ +/* */ +/* Copyright 1996-2004, 2006-2008, 2012-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTNAMEID_H__ +#define __TTNAMEID_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + + + /*************************************************************************/ + /* */ + /* Possible values for the `platform' identifier code in the name */ + /* records of the TTF `name' table. */ + /* */ + /*************************************************************************/ + + + /*********************************************************************** + * + * @enum: + * TT_PLATFORM_XXX + * + * @description: + * A list of valid values for the `platform_id' identifier code in + * @FT_CharMapRec and @FT_SfntName structures. + * + * @values: + * TT_PLATFORM_APPLE_UNICODE :: + * Used by Apple to indicate a Unicode character map and/or name entry. + * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note + * that name entries in this format are coded as big-endian UCS-2 + * character codes _only_. + * + * TT_PLATFORM_MACINTOSH :: + * Used by Apple to indicate a MacOS-specific charmap and/or name entry. + * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that + * most TrueType fonts contain an Apple roman charmap to be usable on + * MacOS systems (even if they contain a Microsoft charmap as well). + * + * TT_PLATFORM_ISO :: + * This value was used to specify ISO/IEC 10646 charmaps. It is however + * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding + * `encoding_id' values. + * + * TT_PLATFORM_MICROSOFT :: + * Used by Microsoft to indicate Windows-specific charmaps. See + * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. + * Note that most fonts contain a Unicode charmap using + * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). + * + * TT_PLATFORM_CUSTOM :: + * Used to indicate application-specific charmaps. + * + * TT_PLATFORM_ADOBE :: + * This value isn't part of any font format specification, but is used + * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec + * structure. See @TT_ADOBE_ID_XXX. + */ + +#define TT_PLATFORM_APPLE_UNICODE 0 +#define TT_PLATFORM_MACINTOSH 1 +#define TT_PLATFORM_ISO 2 /* deprecated */ +#define TT_PLATFORM_MICROSOFT 3 +#define TT_PLATFORM_CUSTOM 4 +#define TT_PLATFORM_ADOBE 7 /* artificial */ + + + /*********************************************************************** + * + * @enum: + * TT_APPLE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. + * + * @values: + * TT_APPLE_ID_DEFAULT :: + * Unicode version 1.0. + * + * TT_APPLE_ID_UNICODE_1_1 :: + * Unicode 1.1; specifies Hangul characters starting at U+34xx. + * + * TT_APPLE_ID_ISO_10646 :: + * Deprecated (identical to preceding). + * + * TT_APPLE_ID_UNICODE_2_0 :: + * Unicode 2.0 and beyond (UTF-16 BMP only). + * + * TT_APPLE_ID_UNICODE_32 :: + * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations + * on a real cmap. + */ + +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ +#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ + + + /*********************************************************************** + * + * @enum: + * TT_MAC_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MACINTOSH charmaps and name entries. + * + * @values: + * TT_MAC_ID_ROMAN :: + * TT_MAC_ID_JAPANESE :: + * TT_MAC_ID_TRADITIONAL_CHINESE :: + * TT_MAC_ID_KOREAN :: + * TT_MAC_ID_ARABIC :: + * TT_MAC_ID_HEBREW :: + * TT_MAC_ID_GREEK :: + * TT_MAC_ID_RUSSIAN :: + * TT_MAC_ID_RSYMBOL :: + * TT_MAC_ID_DEVANAGARI :: + * TT_MAC_ID_GURMUKHI :: + * TT_MAC_ID_GUJARATI :: + * TT_MAC_ID_ORIYA :: + * TT_MAC_ID_BENGALI :: + * TT_MAC_ID_TAMIL :: + * TT_MAC_ID_TELUGU :: + * TT_MAC_ID_KANNADA :: + * TT_MAC_ID_MALAYALAM :: + * TT_MAC_ID_SINHALESE :: + * TT_MAC_ID_BURMESE :: + * TT_MAC_ID_KHMER :: + * TT_MAC_ID_THAI :: + * TT_MAC_ID_LAOTIAN :: + * TT_MAC_ID_GEORGIAN :: + * TT_MAC_ID_ARMENIAN :: + * TT_MAC_ID_MALDIVIAN :: + * TT_MAC_ID_SIMPLIFIED_CHINESE :: + * TT_MAC_ID_TIBETAN :: + * TT_MAC_ID_MONGOLIAN :: + * TT_MAC_ID_GEEZ :: + * TT_MAC_ID_SLAVIC :: + * TT_MAC_ID_VIETNAMESE :: + * TT_MAC_ID_SINDHI :: + * TT_MAC_ID_UNINTERP :: + */ + +#define TT_MAC_ID_ROMAN 0 +#define TT_MAC_ID_JAPANESE 1 +#define TT_MAC_ID_TRADITIONAL_CHINESE 2 +#define TT_MAC_ID_KOREAN 3 +#define TT_MAC_ID_ARABIC 4 +#define TT_MAC_ID_HEBREW 5 +#define TT_MAC_ID_GREEK 6 +#define TT_MAC_ID_RUSSIAN 7 +#define TT_MAC_ID_RSYMBOL 8 +#define TT_MAC_ID_DEVANAGARI 9 +#define TT_MAC_ID_GURMUKHI 10 +#define TT_MAC_ID_GUJARATI 11 +#define TT_MAC_ID_ORIYA 12 +#define TT_MAC_ID_BENGALI 13 +#define TT_MAC_ID_TAMIL 14 +#define TT_MAC_ID_TELUGU 15 +#define TT_MAC_ID_KANNADA 16 +#define TT_MAC_ID_MALAYALAM 17 +#define TT_MAC_ID_SINHALESE 18 +#define TT_MAC_ID_BURMESE 19 +#define TT_MAC_ID_KHMER 20 +#define TT_MAC_ID_THAI 21 +#define TT_MAC_ID_LAOTIAN 22 +#define TT_MAC_ID_GEORGIAN 23 +#define TT_MAC_ID_ARMENIAN 24 +#define TT_MAC_ID_MALDIVIAN 25 +#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 +#define TT_MAC_ID_TIBETAN 26 +#define TT_MAC_ID_MONGOLIAN 27 +#define TT_MAC_ID_GEEZ 28 +#define TT_MAC_ID_SLAVIC 29 +#define TT_MAC_ID_VIETNAMESE 30 +#define TT_MAC_ID_SINDHI 31 +#define TT_MAC_ID_UNINTERP 32 + + + /*********************************************************************** + * + * @enum: + * TT_ISO_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ISO charmaps and name entries. + * + * Their use is now deprecated. + * + * @values: + * TT_ISO_ID_7BIT_ASCII :: + * ASCII. + * TT_ISO_ID_10646 :: + * ISO/10646. + * TT_ISO_ID_8859_1 :: + * Also known as Latin-1. + */ + +#define TT_ISO_ID_7BIT_ASCII 0 +#define TT_ISO_ID_10646 1 +#define TT_ISO_ID_8859_1 2 + + + /*********************************************************************** + * + * @enum: + * TT_MS_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MICROSOFT charmaps and name entries. + * + * @values: + * TT_MS_ID_SYMBOL_CS :: + * Corresponds to Microsoft symbol encoding. See + * @FT_ENCODING_MS_SYMBOL. + * + * TT_MS_ID_UNICODE_CS :: + * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See + * @FT_ENCODING_UNICODE. + * + * TT_MS_ID_SJIS :: + * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. + * + * TT_MS_ID_GB2312 :: + * Corresponds to Simplified Chinese as used in Mainland China. See + * @FT_ENCODING_GB2312. + * + * TT_MS_ID_BIG_5 :: + * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. + * See @FT_ENCODING_BIG5. + * + * TT_MS_ID_WANSUNG :: + * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. + * + * TT_MS_ID_JOHAB :: + * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. + * + * TT_MS_ID_UCS_4 :: + * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to + * the OpenType specification version 1.4 (mid-2001.) + */ + +#define TT_MS_ID_SYMBOL_CS 0 +#define TT_MS_ID_UNICODE_CS 1 +#define TT_MS_ID_SJIS 2 +#define TT_MS_ID_GB2312 3 +#define TT_MS_ID_BIG_5 4 +#define TT_MS_ID_WANSUNG 5 +#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_UCS_4 10 + + + /*********************************************************************** + * + * @enum: + * TT_ADOBE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! + * + * @values: + * TT_ADOBE_ID_STANDARD :: + * Adobe standard encoding. + * TT_ADOBE_ID_EXPERT :: + * Adobe expert encoding. + * TT_ADOBE_ID_CUSTOM :: + * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. + */ + +#define TT_ADOBE_ID_STANDARD 0 +#define TT_ADOBE_ID_EXPERT 1 +#define TT_ADOBE_ID_CUSTOM 2 +#define TT_ADOBE_ID_LATIN_1 3 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MACINTOSH. These values are also used as return values */ + /* for function @FT_Get_CMap_Language_ID. */ + /* */ + /* The canonical source for the Apple assigned Language ID's is at */ + /* */ + /* https://developer.apple.com/fonts/TTRefMan/RM06/Chap6name.html */ + /* */ +#define TT_MAC_LANGID_ENGLISH 0 +#define TT_MAC_LANGID_FRENCH 1 +#define TT_MAC_LANGID_GERMAN 2 +#define TT_MAC_LANGID_ITALIAN 3 +#define TT_MAC_LANGID_DUTCH 4 +#define TT_MAC_LANGID_SWEDISH 5 +#define TT_MAC_LANGID_SPANISH 6 +#define TT_MAC_LANGID_DANISH 7 +#define TT_MAC_LANGID_PORTUGUESE 8 +#define TT_MAC_LANGID_NORWEGIAN 9 +#define TT_MAC_LANGID_HEBREW 10 +#define TT_MAC_LANGID_JAPANESE 11 +#define TT_MAC_LANGID_ARABIC 12 +#define TT_MAC_LANGID_FINNISH 13 +#define TT_MAC_LANGID_GREEK 14 +#define TT_MAC_LANGID_ICELANDIC 15 +#define TT_MAC_LANGID_MALTESE 16 +#define TT_MAC_LANGID_TURKISH 17 +#define TT_MAC_LANGID_CROATIAN 18 +#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 +#define TT_MAC_LANGID_URDU 20 +#define TT_MAC_LANGID_HINDI 21 +#define TT_MAC_LANGID_THAI 22 +#define TT_MAC_LANGID_KOREAN 23 +#define TT_MAC_LANGID_LITHUANIAN 24 +#define TT_MAC_LANGID_POLISH 25 +#define TT_MAC_LANGID_HUNGARIAN 26 +#define TT_MAC_LANGID_ESTONIAN 27 +#define TT_MAC_LANGID_LETTISH 28 +#define TT_MAC_LANGID_SAAMISK 29 +#define TT_MAC_LANGID_FAEROESE 30 +#define TT_MAC_LANGID_FARSI 31 +#define TT_MAC_LANGID_RUSSIAN 32 +#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 +#define TT_MAC_LANGID_FLEMISH 34 +#define TT_MAC_LANGID_IRISH 35 +#define TT_MAC_LANGID_ALBANIAN 36 +#define TT_MAC_LANGID_ROMANIAN 37 +#define TT_MAC_LANGID_CZECH 38 +#define TT_MAC_LANGID_SLOVAK 39 +#define TT_MAC_LANGID_SLOVENIAN 40 +#define TT_MAC_LANGID_YIDDISH 41 +#define TT_MAC_LANGID_SERBIAN 42 +#define TT_MAC_LANGID_MACEDONIAN 43 +#define TT_MAC_LANGID_BULGARIAN 44 +#define TT_MAC_LANGID_UKRAINIAN 45 +#define TT_MAC_LANGID_BYELORUSSIAN 46 +#define TT_MAC_LANGID_UZBEK 47 +#define TT_MAC_LANGID_KAZAKH 48 +#define TT_MAC_LANGID_AZERBAIJANI 49 +#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 +#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 +#define TT_MAC_LANGID_ARMENIAN 51 +#define TT_MAC_LANGID_GEORGIAN 52 +#define TT_MAC_LANGID_MOLDAVIAN 53 +#define TT_MAC_LANGID_KIRGHIZ 54 +#define TT_MAC_LANGID_TAJIKI 55 +#define TT_MAC_LANGID_TURKMEN 56 +#define TT_MAC_LANGID_MONGOLIAN 57 +#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 +#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 +#define TT_MAC_LANGID_PASHTO 59 +#define TT_MAC_LANGID_KURDISH 60 +#define TT_MAC_LANGID_KASHMIRI 61 +#define TT_MAC_LANGID_SINDHI 62 +#define TT_MAC_LANGID_TIBETAN 63 +#define TT_MAC_LANGID_NEPALI 64 +#define TT_MAC_LANGID_SANSKRIT 65 +#define TT_MAC_LANGID_MARATHI 66 +#define TT_MAC_LANGID_BENGALI 67 +#define TT_MAC_LANGID_ASSAMESE 68 +#define TT_MAC_LANGID_GUJARATI 69 +#define TT_MAC_LANGID_PUNJABI 70 +#define TT_MAC_LANGID_ORIYA 71 +#define TT_MAC_LANGID_MALAYALAM 72 +#define TT_MAC_LANGID_KANNADA 73 +#define TT_MAC_LANGID_TAMIL 74 +#define TT_MAC_LANGID_TELUGU 75 +#define TT_MAC_LANGID_SINHALESE 76 +#define TT_MAC_LANGID_BURMESE 77 +#define TT_MAC_LANGID_KHMER 78 +#define TT_MAC_LANGID_LAO 79 +#define TT_MAC_LANGID_VIETNAMESE 80 +#define TT_MAC_LANGID_INDONESIAN 81 +#define TT_MAC_LANGID_TAGALOG 82 +#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 +#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 +#define TT_MAC_LANGID_AMHARIC 85 +#define TT_MAC_LANGID_TIGRINYA 86 +#define TT_MAC_LANGID_GALLA 87 +#define TT_MAC_LANGID_SOMALI 88 +#define TT_MAC_LANGID_SWAHILI 89 +#define TT_MAC_LANGID_RUANDA 90 +#define TT_MAC_LANGID_RUNDI 91 +#define TT_MAC_LANGID_CHEWA 92 +#define TT_MAC_LANGID_MALAGASY 93 +#define TT_MAC_LANGID_ESPERANTO 94 +#define TT_MAC_LANGID_WELSH 128 +#define TT_MAC_LANGID_BASQUE 129 +#define TT_MAC_LANGID_CATALAN 130 +#define TT_MAC_LANGID_LATIN 131 +#define TT_MAC_LANGID_QUECHUA 132 +#define TT_MAC_LANGID_GUARANI 133 +#define TT_MAC_LANGID_AYMARA 134 +#define TT_MAC_LANGID_TATAR 135 +#define TT_MAC_LANGID_UIGHUR 136 +#define TT_MAC_LANGID_DZONGKHA 137 +#define TT_MAC_LANGID_JAVANESE 138 +#define TT_MAC_LANGID_SUNDANESE 139 + + +#if 0 /* these seem to be errors that have been dropped */ + +#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 +#define TT_MAC_LANGID_IRISH_GAELIC 141 + +#endif + + + /* The following codes are new as of 2000-03-10 */ +#define TT_MAC_LANGID_GALICIAN 140 +#define TT_MAC_LANGID_AFRIKAANS 141 +#define TT_MAC_LANGID_BRETON 142 +#define TT_MAC_LANGID_INUKTITUT 143 +#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 +#define TT_MAC_LANGID_MANX_GAELIC 145 +#define TT_MAC_LANGID_IRISH_GAELIC 146 +#define TT_MAC_LANGID_TONGAN 147 +#define TT_MAC_LANGID_GREEK_POLYTONIC 148 +#define TT_MAC_LANGID_GREELANDIC 149 +#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MICROSOFT. */ + /* */ + /* The canonical source for the MS assigned LCIDs is */ + /* */ + /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ + /* */ + +#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 +#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 +#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 +#define TT_MS_LANGID_ARABIC_EGYPT 0x0C01 +#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 +#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 +#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 +#define TT_MS_LANGID_ARABIC_TUNISIA 0x1C01 +#define TT_MS_LANGID_ARABIC_OMAN 0x2001 +#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 +#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 +#define TT_MS_LANGID_ARABIC_JORDAN 0x2C01 +#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 +#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 +#define TT_MS_LANGID_ARABIC_UAE 0x3801 +#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3C01 +#define TT_MS_LANGID_ARABIC_QATAR 0x4001 +#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 +#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 +#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 +#define TT_MS_LANGID_CHINESE_PRC 0x0804 +#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0C04 +#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 + +#if 1 /* this looks like the correct value */ +#define TT_MS_LANGID_CHINESE_MACAU 0x1404 +#else /* but beware, Microsoft may change its mind... + the most recent Word reference has the following: */ +#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG +#endif + +#if 0 /* used only with .NET `cultures'; commented out */ +#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04 +#endif + +#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 +#define TT_MS_LANGID_DANISH_DENMARK 0x0406 +#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 +#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 +#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0C07 +#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 +#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 +#define TT_MS_LANGID_GREEK_GREECE 0x0408 + + /* don't ask what this one means... It is commented out currently. */ +#if 0 +#define TT_MS_LANGID_GREEK_GREECE2 0x2008 +#endif + +#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 +#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 +#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 +#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0C09 +#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 +#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 +#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 +#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1C09 +#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 +#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 +#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 +#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2C09 +#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 +#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 +#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 +#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3C09 +#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 +#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 +#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 +#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040A +#define TT_MS_LANGID_SPANISH_MEXICO 0x080A +#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0C0A +#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100A +#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140A +#define TT_MS_LANGID_SPANISH_PANAMA 0x180A +#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1C0A +#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200A +#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240A +#define TT_MS_LANGID_SPANISH_PERU 0x280A +#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2C0A +#define TT_MS_LANGID_SPANISH_ECUADOR 0x300A +#define TT_MS_LANGID_SPANISH_CHILE 0x340A +#define TT_MS_LANGID_SPANISH_URUGUAY 0x380A +#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3C0A +#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400A +#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440A +#define TT_MS_LANGID_SPANISH_HONDURAS 0x480A +#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4C0A +#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500A +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540A + /* The following ID blatantly violate MS specs by using a */ + /* sublanguage > 0x1F. */ +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40AU +#define TT_MS_LANGID_FINNISH_FINLAND 0x040B +#define TT_MS_LANGID_FRENCH_FRANCE 0x040C +#define TT_MS_LANGID_FRENCH_BELGIUM 0x080C +#define TT_MS_LANGID_FRENCH_CANADA 0x0C0C +#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100C +#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140C +#define TT_MS_LANGID_FRENCH_MONACO 0x180C +#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1C0C +#define TT_MS_LANGID_FRENCH_REUNION 0x200C +#define TT_MS_LANGID_FRENCH_CONGO 0x240C + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO +#define TT_MS_LANGID_FRENCH_SENEGAL 0x280C +#define TT_MS_LANGID_FRENCH_CAMEROON 0x2C0C +#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300C +#define TT_MS_LANGID_FRENCH_MALI 0x340C +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380C +#define TT_MS_LANGID_FRENCH_HAITI 0x3C0C + /* and another violation of the spec (see 0xE40AU) */ +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40CU +#define TT_MS_LANGID_HEBREW_ISRAEL 0x040D +#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040E +#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040F +#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 +#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 +#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 +#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 +#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 +#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 +#define TT_MS_LANGID_POLISH_POLAND 0x0415 +#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 +#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 +#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 +#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 +#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 +#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 +#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 +#define TT_MS_LANGID_CROATIAN_CROATIA 0x041A +#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081A +#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0C1A + +#if 0 /* this used to be this value, but it looks like we were wrong */ +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101A +#else /* current sources say */ +#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141A + /* and XPsp2 Platform SDK added (2004-07-26) */ + /* Names are shortened to be significant within 40 chars. */ +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181A +#endif + +#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041B +#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041C +#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041D +#define TT_MS_LANGID_SWEDISH_FINLAND 0x081D +#define TT_MS_LANGID_THAI_THAILAND 0x041E +#define TT_MS_LANGID_TURKISH_TURKEY 0x041F +#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 +#define TT_MS_LANGID_URDU_INDIA 0x0820 +#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 +#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 +#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 +#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 +#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 +#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 +#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 +#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 +#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 +#define TT_MS_LANGID_FARSI_IRAN 0x0429 +#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042A +#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042B +#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042C +#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082C +#define TT_MS_LANGID_BASQUE_SPAIN 0x042D +#define TT_MS_LANGID_SORBIAN_GERMANY 0x042E +#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042F +#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 +#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 +#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 +#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 +#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 +#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 +#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 +#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 +#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 +#define TT_MS_LANGID_HINDI_INDIA 0x0439 +#define TT_MS_LANGID_MALTESE_MALTA 0x043A + /* Added by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043B +#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083B +#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3B +#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103B +#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143B +#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183B +#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3B +#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203B +#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243B + /* ... and we also keep our old identifier... */ +#define TT_MS_LANGID_SAAMI_LAPONIA 0x043B + +#if 0 /* this seems to be a previous inversion */ +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#else +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#endif + +#define TT_MS_LANGID_YIDDISH_GERMANY 0x043D +#define TT_MS_LANGID_MALAY_MALAYSIA 0x043E +#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083E +#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043F +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ + TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN + +#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 +#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 +#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 +#define TT_MS_LANGID_BENGALI_INDIA 0x0445 +#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 +#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 +#define TT_MS_LANGID_ORIYA_INDIA 0x0448 +#define TT_MS_LANGID_TAMIL_INDIA 0x0449 +#define TT_MS_LANGID_TELUGU_INDIA 0x044A +#define TT_MS_LANGID_KANNADA_INDIA 0x044B +#define TT_MS_LANGID_MALAYALAM_INDIA 0x044C +#define TT_MS_LANGID_ASSAMESE_INDIA 0x044D +#define TT_MS_LANGID_MARATHI_INDIA 0x044E +#define TT_MS_LANGID_SANSKRIT_INDIA 0x044F +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 +#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 + /* Don't use the next constant! It has */ + /* (1) the wrong spelling (Dzonghka) */ + /* (2) Microsoft doesn't officially define it -- */ + /* at least it is not in the List of Local */ + /* ID Values. */ + /* (3) Dzongkha is not the same language as */ + /* Tibetan, so merging it is wrong anyway. */ + /* */ + /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 + +#if 0 + /* the following used to be defined */ +#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 + /* ... but it was changed; */ +#else + /* So we will continue to #define it, but with the correct value */ +#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN +#endif + +#define TT_MS_LANGID_WELSH_WALES 0x0452 +#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 +#define TT_MS_LANGID_LAO_LAOS 0x0454 +#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 +#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 +#define TT_MS_LANGID_KONKANI_INDIA 0x0457 +#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 +#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 +#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 + /* Missing a LCID for Sindhi in Devanagari script */ +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045A +#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045B +#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045C +#define TT_MS_LANGID_INUKTITUT_CANADA 0x045D +#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045E +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045F +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085F + /* Missing a LCID for Tifinagh script */ +#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 + /* Spelled this way by XPsp2 Platform SDK (2004-07-26) */ + /* script is yet unclear... might be Arabic, Nagari or Sharada */ +#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 + /* ... and aliased (by MS) for compatibility reasons. */ +#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA +#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_NEPALI_INDIA 0x0861 +#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 +#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 +#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES +#define TT_MS_LANGID_EDO_NIGERIA 0x0466 +#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046A +#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046B +#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086B +#define TT_MS_LANGID_QUECHUA_PERU 0x0C6B +#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046C + /* Also spelled by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ + TT_MS_LANGID_SEPEDI_SOUTH_AFRICA + /* language codes 0x046D, 0x046E and 0x046F are (still) unknown. */ +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 +#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 +#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 +#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 + /* also spelled in the `Passport SDK' list as: */ +#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA +#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 +#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 +#define TT_MS_LANGID_LATIN 0x0476 +#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 + /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ + /* not written (but OTOH the peculiar writing system is worth */ + /* studying). */ +#define TT_MS_LANGID_YI_CHINA 0x0478 +#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 + /* language codes from 0x047A to 0x047F are (still) unknown. */ +#define TT_MS_LANGID_UIGHUR_CHINA 0x0480 +#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 + +#if 0 /* not deemed useful for fonts */ +#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04FF +#endif + + + /*************************************************************************/ + /* */ + /* Possible values of the `name' identifier field in the name records of */ + /* the TTF `name' table. These values are platform independent. */ + /* */ +#define TT_NAME_ID_COPYRIGHT 0 +#define TT_NAME_ID_FONT_FAMILY 1 +#define TT_NAME_ID_FONT_SUBFAMILY 2 +#define TT_NAME_ID_UNIQUE_ID 3 +#define TT_NAME_ID_FULL_NAME 4 +#define TT_NAME_ID_VERSION_STRING 5 +#define TT_NAME_ID_PS_NAME 6 +#define TT_NAME_ID_TRADEMARK 7 + + /* the following values are from the OpenType spec */ +#define TT_NAME_ID_MANUFACTURER 8 +#define TT_NAME_ID_DESIGNER 9 +#define TT_NAME_ID_DESCRIPTION 10 +#define TT_NAME_ID_VENDOR_URL 11 +#define TT_NAME_ID_DESIGNER_URL 12 +#define TT_NAME_ID_LICENSE 13 +#define TT_NAME_ID_LICENSE_URL 14 + /* number 15 is reserved */ +#define TT_NAME_ID_PREFERRED_FAMILY 16 +#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 +#define TT_NAME_ID_MAC_FULL_NAME 18 + + /* The following code is new as of 2000-01-21 */ +#define TT_NAME_ID_SAMPLE_TEXT 19 + + /* This is new in OpenType 1.3 */ +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + + + /*************************************************************************/ + /* */ + /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ + /* */ + /* Updated 08-Nov-2008. */ + /* */ + + /* Bit 0 Basic Latin */ +#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ + /* Bit 1 C1 Controls and Latin-1 Supplement */ +#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ + /* Bit 2 Latin Extended-A */ +#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ + /* Bit 3 Latin Extended-B */ +#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ +#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ + /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ +#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ +#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ + /* Bit 7 Greek and Coptic */ +#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ +#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ + /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ + /* Bit 10 Armenian */ +#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ + /* Bit 11 Hebrew */ +#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ +#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ + /* Bit 15 Devanagari */ +#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ + /* Bit 16 Bengali */ +#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ + /* Bit 17 Gurmukhi */ +#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ + /* Bit 18 Gujarati */ +#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ + /* Bit 19 Oriya */ +#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ + /* Bit 20 Tamil */ +#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ + /* Bit 21 Telugu */ +#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ + /* Bit 22 Kannada */ +#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ + /* Bit 23 Malayalam */ +#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ + /* Bit 24 Thai */ +#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ + /* Bit 25 Lao */ +#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ +#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ + /* Bit 28 Hangul Jamo */ +#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ + /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ +#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ + /* Bit 30 Greek Extended */ +#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ +#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ + /* Bit 32 Superscripts And Subscripts */ +#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ + /* Bit 33 Currency Symbols */ +#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ + /* Bit 34 Combining Diacritical Marks For Symbols */ +#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ + /* Bit 35 Letterlike Symbols */ +#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ + /* Bit 36 Number Forms */ +#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ +#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ + /* U+27F0-U+27FF */ + /* U+2900-U+297F */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ +#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ + /* U+2A00-U+2AFF */ + /* U+27C0-U+27EF */ + /* U+2980-U+29FF */ + /* Bit 39 Miscellaneous Technical */ +#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ + /* Bit 40 Control Pictures */ +#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ + /* Bit 41 Optical Character Recognition */ +#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ + /* Bit 42 Enclosed Alphanumerics */ +#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ + /* Bit 43 Box Drawing */ +#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ + /* Bit 44 Block Elements */ +#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ + /* Bit 45 Geometric Shapes */ +#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ + /* Bit 46 Miscellaneous Symbols */ +#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ + /* Bit 47 Dingbats */ +#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ + /* Bit 48 CJK Symbols and Punctuation */ +#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ + /* Bit 49 Hiragana */ +#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ +#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ + /* U+31F0-U+31FF */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ +#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ + /* U+31A0-U+31BF */ + /* Bit 52 Hangul Compatibility Jamo */ +#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA + /* Bit 54 Enclosed CJK Letters and Months */ +#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ + /* Bit 55 CJK Compatibility */ +#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ + /* Bit 56 Hangul Syllables */ +#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + /* */ + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000 */ +#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ + /* U+DB80-U+DBFF */ + /* U+DC00-U+DFFF */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ +#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ + /* U+2E80-U+2EFF */ + /* U+2F00-U+2FDF */ + /* U+2FF0-U+2FFF */ + /* U+3400-U+4DB5 */ + /*U+20000-U+2A6DF*/ + /* U+3190-U+319F */ + /* Bit 60 Private Use */ +#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ + /*U+2F800-U+2FA1F*/ + /* Bit 62 Alphabetic Presentation Forms */ +#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ + /* Bit 63 Arabic Presentation Forms-A */ +#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ + /* Bit 64 Combining Half Marks */ +#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ + /* Bit 66 Small Form Variants */ +#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ + /* Bit 67 Arabic Presentation Forms-B */ +#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ + /* Bit 68 Halfwidth and Fullwidth Forms */ +#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ + /* Bit 69 Specials */ +#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ + /* Bit 70 Tibetan */ +#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ + /* Bit 71 Syriac */ +#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ + /* Bit 72 Thaana */ +#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ + /* Bit 73 Sinhala */ +#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ + /* Bit 74 Myanmar */ +#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ +#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ + /* Bit 76 Cherokee */ +#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ + /* Bit 77 Unified Canadian Aboriginal Syllabics */ +#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ + /* Bit 78 Ogham */ +#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ + /* Bit 79 Runic */ +#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ +#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ + /* Bit 81 Mongolian */ +#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ + /* Bit 82 Braille Patterns */ +#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ +#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ + /* U+A490-U+A4CF */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ +#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ + /* U+1720-U+173F */ + /* U+1740-U+175F */ + /* U+1760-U+177F */ + /* Bit 85 Old Italic */ +#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ + /* Bit 86 Gothic */ +#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ + /* Bit 87 Deseret */ +#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ +#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ + /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ + /* Bit 89 Mathematical Alphanumeric Symbols */ +#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ +#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ + /*U+100000-U+10FFFD*/ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ +#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ + /* Bit 92 Tags */ +#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ + + + /*************************************************************************/ + /* */ + /* Some compilers have a very limited length of identifiers. */ + /* */ +#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) +#define HAVE_LIMIT_ON_IDENTS +#endif + + +#ifndef HAVE_LIMIT_ON_IDENTS + + + /*************************************************************************/ + /* */ + /* Here some alias #defines in order to be clearer. */ + /* */ + /* These are not always #defined to stay within the 31~character limit, */ + /* which some compilers have. */ + /* */ + /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ + /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ + /* If you get a warning with such a compiler, use the -i40 switch. */ + /* */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ + TT_UCR_ARABIC_PRESENTATIONS_A +#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ + TT_UCR_ARABIC_PRESENTATIONS_B + +#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ + TT_UCR_COMBINING_DIACRITICS +#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ + TT_UCR_COMBINING_DIACRITICS_SYMB + + +#endif /* !HAVE_LIMIT_ON_IDENTS */ + + +FT_END_HEADER + +#endif /* __TTNAMEID_H__ */ + + +/* END */ diff --git a/lib/linux/include/tttables.h b/lib/linux/include/tttables.h new file mode 100644 index 0000000..e1d8b05 --- /dev/null +++ b/lib/linux/include/tttables.h @@ -0,0 +1,829 @@ +/***************************************************************************/ +/* */ +/* tttables.h */ +/* */ +/* Basic SFNT/TrueType tables definitions and interface */ +/* (specification only). */ +/* */ +/* Copyright 1996-2005, 2008-2014 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTABLES_H__ +#define __TTTABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + /* <Title> */ + /* TrueType Tables */ + /* */ + /* <Abstract> */ + /* TrueType specific table types and functions. */ + /* */ + /* <Description> */ + /* This section contains the definition of TrueType-specific tables */ + /* as well as some routines used to access and process them. */ + /* */ + /* <Order> */ + /* TT_Header */ + /* TT_HoriHeader */ + /* TT_VertHeader */ + /* TT_OS2 */ + /* TT_Postscript */ + /* TT_PCLT */ + /* TT_MaxProfile */ + /* */ + /* FT_Sfnt_Tag */ + /* FT_Get_Sfnt_Table */ + /* FT_Load_Sfnt_Table */ + /* FT_Sfnt_Table_Info */ + /* */ + /* FT_Get_CMap_Language_ID */ + /* FT_Get_CMap_Format */ + /* */ + /* FT_PARAM_TAG_UNPATENTED_HINTING */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Header */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType font header table. All */ + /* fields follow the TrueType specification. */ + /* */ + typedef struct TT_Header_ + { + FT_Fixed Table_Version; + FT_Fixed Font_Revision; + + FT_Long CheckSum_Adjust; + FT_Long Magic_Number; + + FT_UShort Flags; + FT_UShort Units_Per_EM; + + FT_Long Created [2]; + FT_Long Modified[2]; + + FT_Short xMin; + FT_Short yMin; + FT_Short xMax; + FT_Short yMax; + + FT_UShort Mac_Style; + FT_UShort Lowest_Rec_PPEM; + + FT_Short Font_Direction; + FT_Short Index_To_Loc_Format; + FT_Short Glyph_Data_Format; + + } TT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_HoriHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType horizontal header, the `hhea' */ + /* table, as well as the corresponding horizontal metrics table, */ + /* i.e., the `hmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of all */ + /* glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoAscender' field */ + /* of the OS/2 table instead if you want */ + /* the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the distance */ + /* from the baseline to the bottom-most of */ + /* all glyph points found in the font. It */ + /* is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Width_Max :: This field is the maximum of all advance */ + /* widths found in the font. It can be */ + /* used to compute the maximum width of an */ + /* arbitrary string of text. */ + /* */ + /* min_Left_Side_Bearing :: The minimum left side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Right_Side_Bearing :: The minimum right side bearing of all */ + /* glyphs within the font. */ + /* */ + /* xMax_Extent :: The maximum horizontal extent (i.e., the */ + /* `width' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ + /* table -- this value can be smaller than */ + /* the total number of glyphs in the font. */ + /* */ + /* long_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields, */ + /* which are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_HoriHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Width_Max; /* advance width maximum */ + + FT_Short min_Left_Side_Bearing; /* minimum left-sb */ + FT_Short min_Right_Side_Bearing; /* minimum right-sb */ + FT_Short xMax_Extent; /* xmax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_HMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* `HMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_HoriHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_VertHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType vertical header, the `vhea' */ + /* table, as well as the corresponding vertical metrics table, i.e., */ + /* the `vmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of */ + /* all glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoAscender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the */ + /* distance from the baseline to the */ + /* bottom-most of all glyph points found */ + /* in the font. It is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Height_Max :: This field is the maximum of all */ + /* advance heights found in the font. It */ + /* can be used to compute the maximum */ + /* height of an arbitrary string of text. */ + /* */ + /* min_Top_Side_Bearing :: The minimum top side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ + /* glyphs within the font. */ + /* */ + /* yMax_Extent :: The maximum vertical extent (i.e., the */ + /* `height' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* caret_Offset :: The cursor's offset for slanted fonts. */ + /* This value is `reserved' in vmtx */ + /* version 1.0. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of VMetrics entries in the */ + /* `vmtx' table -- this value can be */ + /* smaller than the total number of glyphs */ + /* in the font. */ + /* */ + /* long_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields, */ + /* which are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_VertHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Height_Max; /* advance height maximum */ + + FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ + FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ + FT_Short yMax_Extent; /* xmax or ymax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_VMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they're used to connect the metrics header to the relevant */ + /* `HMTX' or `VMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_VertHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_OS2 */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType OS/2 table. All fields */ + /* comply to the OpenType specification. */ + /* */ + /* Note that we now support old Mac fonts that do not include an OS/2 */ + /* table. In this case, the `version' field is always set to 0xFFFF. */ + /* */ + typedef struct TT_OS2_ + { + FT_UShort version; /* 0x0001 - more or 0xFFFF */ + FT_Short xAvgCharWidth; + FT_UShort usWeightClass; + FT_UShort usWidthClass; + FT_Short fsType; + FT_Short ySubscriptXSize; + FT_Short ySubscriptYSize; + FT_Short ySubscriptXOffset; + FT_Short ySubscriptYOffset; + FT_Short ySuperscriptXSize; + FT_Short ySuperscriptYSize; + FT_Short ySuperscriptXOffset; + FT_Short ySuperscriptYOffset; + FT_Short yStrikeoutSize; + FT_Short yStrikeoutPosition; + FT_Short sFamilyClass; + + FT_Byte panose[10]; + + FT_ULong ulUnicodeRange1; /* Bits 0-31 */ + FT_ULong ulUnicodeRange2; /* Bits 32-63 */ + FT_ULong ulUnicodeRange3; /* Bits 64-95 */ + FT_ULong ulUnicodeRange4; /* Bits 96-127 */ + + FT_Char achVendID[4]; + + FT_UShort fsSelection; + FT_UShort usFirstCharIndex; + FT_UShort usLastCharIndex; + FT_Short sTypoAscender; + FT_Short sTypoDescender; + FT_Short sTypoLineGap; + FT_UShort usWinAscent; + FT_UShort usWinDescent; + + /* only version 1 and higher: */ + + FT_ULong ulCodePageRange1; /* Bits 0-31 */ + FT_ULong ulCodePageRange2; /* Bits 32-63 */ + + /* only version 2 and higher: */ + + FT_Short sxHeight; + FT_Short sCapHeight; + FT_UShort usDefaultChar; + FT_UShort usBreakChar; + FT_UShort usMaxContext; + + /* only version 5 and higher: */ + + FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ + FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ + + } TT_OS2; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Postscript */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PostScript table. All fields */ + /* comply to the TrueType specification. This structure does not */ + /* reference the PostScript glyph names, which can be nevertheless */ + /* accessed with the `ttpost' module. */ + /* */ + typedef struct TT_Postscript_ + { + FT_Fixed FormatType; + FT_Fixed italicAngle; + FT_Short underlinePosition; + FT_Short underlineThickness; + FT_ULong isFixedPitch; + FT_ULong minMemType42; + FT_ULong maxMemType42; + FT_ULong minMemType1; + FT_ULong maxMemType1; + + /* Glyph names follow in the file, but we don't */ + /* load them by default. See the ttpost.c file. */ + + } TT_Postscript; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_PCLT */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PCLT table. All fields */ + /* comply to the TrueType specification. */ + /* */ + typedef struct TT_PCLT_ + { + FT_Fixed Version; + FT_ULong FontNumber; + FT_UShort Pitch; + FT_UShort xHeight; + FT_UShort Style; + FT_UShort TypeFamily; + FT_UShort CapHeight; + FT_UShort SymbolSet; + FT_Char TypeFace[16]; + FT_Char CharacterComplement[8]; + FT_Char FileName[6]; + FT_Char StrokeWeight; + FT_Char WidthType; + FT_Byte SerifStyle; + FT_Byte Reserved; + + } TT_PCLT; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_MaxProfile */ + /* */ + /* <Description> */ + /* The maximum profile is a table containing many max values, which */ + /* can be used to pre-allocate arrays. This ensures that no memory */ + /* allocation occurs during a glyph load. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numGlyphs :: The number of glyphs in this TrueType */ + /* font. */ + /* */ + /* maxPoints :: The maximum number of points in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositePoints'. */ + /* */ + /* maxContours :: The maximum number of contours in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositeContours'. */ + /* */ + /* maxCompositePoints :: The maximum number of points in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxPoints'. */ + /* */ + /* maxCompositeContours :: The maximum number of contours in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxContours'. */ + /* */ + /* maxZones :: The maximum number of zones used for */ + /* glyph hinting. */ + /* */ + /* maxTwilightPoints :: The maximum number of points in the */ + /* twilight zone used for glyph hinting. */ + /* */ + /* maxStorage :: The maximum number of elements in the */ + /* storage area used for glyph hinting. */ + /* */ + /* maxFunctionDefs :: The maximum number of function */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxInstructionDefs :: The maximum number of instruction */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxStackElements :: The maximum number of stack elements used */ + /* during bytecode interpretation. */ + /* */ + /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ + /* used for glyph hinting. */ + /* */ + /* maxComponentElements :: The maximum number of simple (i.e., non- */ + /* composite) glyphs in a composite glyph. */ + /* */ + /* maxComponentDepth :: The maximum nesting depth of composite */ + /* glyphs. */ + /* */ + /* <Note> */ + /* This structure is only used during font loading. */ + /* */ + typedef struct TT_MaxProfile_ + { + FT_Fixed version; + FT_UShort numGlyphs; + FT_UShort maxPoints; + FT_UShort maxContours; + FT_UShort maxCompositePoints; + FT_UShort maxCompositeContours; + FT_UShort maxZones; + FT_UShort maxTwilightPoints; + FT_UShort maxStorage; + FT_UShort maxFunctionDefs; + FT_UShort maxInstructionDefs; + FT_UShort maxStackElements; + FT_UShort maxSizeOfInstructions; + FT_UShort maxComponentElements; + FT_UShort maxComponentDepth; + + } TT_MaxProfile; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Sfnt_Tag */ + /* */ + /* <Description> */ + /* An enumeration used to specify the index of an SFNT table. */ + /* Used in the @FT_Get_Sfnt_Table API function. */ + /* */ + /* <Values> */ + /* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */ + /* */ + /* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */ + /* */ + /* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */ + /* */ + /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ + /* */ + /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader struture. */ + /* */ + /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ + /* */ + /* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */ + /* */ + typedef enum FT_Sfnt_Tag_ + { + FT_SFNT_HEAD, + FT_SFNT_MAXP, + FT_SFNT_OS2, + FT_SFNT_HHEA, + FT_SFNT_VHEA, + FT_SFNT_POST, + FT_SFNT_PCLT, + + FT_SFNT_MAX + + } FT_Sfnt_Tag; + + /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ + /* values instead */ +#define ft_sfnt_head FT_SFNT_HEAD +#define ft_sfnt_maxp FT_SFNT_MAXP +#define ft_sfnt_os2 FT_SFNT_OS2 +#define ft_sfnt_hhea FT_SFNT_HHEA +#define ft_sfnt_vhea FT_SFNT_VHEA +#define ft_sfnt_post FT_SFNT_POST +#define ft_sfnt_pclt FT_SFNT_PCLT + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Table */ + /* */ + /* <Description> */ + /* Return a pointer to a given SFNT table within a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the source. */ + /* */ + /* tag :: The index of the SFNT table. */ + /* */ + /* <Return> */ + /* A type-less pointer to the table. This will be~0 in case of */ + /* error, or if the corresponding table was not found *OR* loaded */ + /* from the file. */ + /* */ + /* Use a typecast according to `tag' to access the structure */ + /* elements. */ + /* */ + /* <Note> */ + /* The table is owned by the face object and disappears with it. */ + /* */ + /* This function is only useful to access SFNT tables that are loaded */ + /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ + /* a list. */ + /* */ + /* Here an example how to access the `vhea' table: */ + /* */ + /* { */ + /* TT_VertHeader* vert_header; */ + /* */ + /* */ + /* vert_header = */ + /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ + /* } */ + /* */ + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + + /************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use the value~0 if you want + * to access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag == 0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length' parameter is NULL, then try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length' is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length' set to~0, as in the following example: + * + * { + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * } + * + * Note that structures like @TT_Header or @TT_OS2 can't be used with + * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that + * those structures depend on the processor architecture, with varying + * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). + * + */ + FT_EXPORT( FT_Error ) + FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + + /************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return information on an SFNT table. + * + * @input: + * face :: + * A handle to the source face. + * + * table_index :: + * The index of an SFNT table. The function returns + * FT_Err_Table_Missing for an invalid value. + * + * @inout: + * tag :: + * The name tag of the SFNT table. If the value is NULL, `table_index' + * is ignored, and `length' returns the number of SFNT tables in the + * font. + * + * @output: + * length :: + * The length of the SFNT table (or the number of SFNT tables, depending + * on `tag'). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While parsing fonts, FreeType handles SFNT tables with length zero as + * missing. + * + */ + FT_EXPORT( FT_Error ) + FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Language_ID */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap language ID. Definitions of */ + /* language ID values are in `ttnameid.h'. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The language ID of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, just return~0 as the default value. */ + /* */ + /* For a format~14 cmap (to access Unicode IVS), the return value is */ + /* 0xFFFFFFFF. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Format */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap format. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The format of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, return -1. */ + /* */ + FT_EXPORT( FT_Long ) + FT_Get_CMap_Format( FT_CharMap charmap ); + + /* */ + + +FT_END_HEADER + +#endif /* __TTTABLES_H__ */ + + +/* END */ diff --git a/lib/linux/include/tttags.h b/lib/linux/include/tttags.h new file mode 100644 index 0000000..d59aa19 --- /dev/null +++ b/lib/linux/include/tttags.h @@ -0,0 +1,111 @@ +/***************************************************************************/ +/* */ +/* tttags.h */ +/* */ +/* Tags for TrueType and OpenType tables (specification only). */ +/* */ +/* Copyright 1996-2001, 2004, 2005, 2007, 2008, 2013 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTAGS_H__ +#define __TTAGS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) +#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' ) +#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) +#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' ) +#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) +#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) +#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) +#define TTAG_CBDT FT_MAKE_TAG( 'C', 'B', 'D', 'T' ) +#define TTAG_CBLC FT_MAKE_TAG( 'C', 'B', 'L', 'C' ) +#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) +#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) +#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) +#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) +#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) +#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) +#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) +#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) +#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) +#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) +#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) +#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) +#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' ) +#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) +#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) +#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) +#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) +#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) +#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) +#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) +#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) +#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) +#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) +#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) +#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) +#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) +#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) +#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) +#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) +#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) +#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) +#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) +#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) +#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) +#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) +#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) +#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) +#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) +#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) +#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) +#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sbix FT_MAKE_TAG( 's', 'b', 'i', 'x' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) +#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) +#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) +#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) +#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) +#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) +#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) +#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) +#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) +#define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' ) + + +FT_END_HEADER + +#endif /* __TTAGS_H__ */ + + +/* END */ diff --git a/lib/linux/include/ttunpat.h b/lib/linux/include/ttunpat.h new file mode 100644 index 0000000..bf53ddd --- /dev/null +++ b/lib/linux/include/ttunpat.h @@ -0,0 +1,60 @@ +/***************************************************************************/ +/* */ +/* ttunpat.h */ +/* */ +/* Definitions for the unpatented TrueType hinting system */ +/* */ +/* Copyright 2003, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* Written by Graham Asher <graham.asher@btinternet.com> */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTUNPAT_H__ +#define __TTUNPAT_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * A constant used as the tag of an @FT_Parameter structure to indicate + * that unpatented methods only should be used by the TrueType bytecode + * interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + /* */ + + +FT_END_HEADER + + +#endif /* __TTUNPAT_H__ */ + + +/* END */ diff --git a/lib/linux/include/vorbis/codec.h b/lib/linux/include/vorbis/codec.h new file mode 100644 index 0000000..999aa33 --- /dev/null +++ b/lib/linux/include/vorbis/codec.h @@ -0,0 +1,243 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +#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/lib/linux/include/vorbis/vorbisenc.h b/lib/linux/include/vorbis/vorbisenc.h new file mode 100644 index 0000000..02332b5 --- /dev/null +++ b/lib/linux/include/vorbis/vorbisenc.h @@ -0,0 +1,436 @@ +/******************************************************************** + * * + * 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: vorbis encode-engine setup + last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +/** \file + * Libvorbisenc is a convenient API for setting up an encoding + * environment using libvorbis. Libvorbisenc encapsulates the + * actions needed to set up the encoder properly. + */ + +#ifndef _OV_ENC_H_ +#define _OV_ENC_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include "codec.h" + +/** + * This is the primary function within libvorbisenc for setting up managed + * bitrate modes. + * + * Before this function is called, the \ref vorbis_info + * struct should be initialized by using vorbis_info_init() from the libvorbis + * API. After encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_init(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step bitrate-managed encode + * setup. It functions similarly to the one-step setup performed by \ref + * vorbis_encode_init but allows an application to make further encode setup + * tweaks using \ref vorbis_encode_ctl before finally calling \ref + * vorbis_encode_setup_init to complete the setup process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_setup_managed(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step variable bitrate + * (quality-based) encode setup. It functions similarly to the one-step setup + * performed by \ref vorbis_encode_init_vbr() but allows an application to + * make further encode setup tweaks using \ref vorbis_encode_ctl() before + * finally calling \ref vorbis_encode_setup_init to complete the setup + * process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using \ref vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_setup_vbr(vorbis_info *vi, + long channels, + long rate, + + float quality + ); + +/** + * This is the primary function within libvorbisenc for setting up variable + * bitrate ("quality" based) modes. + * + * + * Before this function is called, the vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * + * \return Zero for success, or a negative number for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_init_vbr(vorbis_info *vi, + long channels, + long rate, + + float base_quality + ); + +/** + * This function performs the last stage of three-step encoding setup, as + * described in the API overview under managed bitrate modes. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API, one of + * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to + * initialize the high-level encoding setup, and \ref vorbis_encode_ctl() + * called if necessary to make encoding setup changes. + * vorbis_encode_setup_init() finalizes the highlevel encoding structure into + * a complete encoding setup after which the application may make no further + * setup changes. + * + * After encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * + * \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first + * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to + * initialize the high-level encoding setup + * + */ +extern int vorbis_encode_setup_init(vorbis_info *vi); + +/** + * This function implements a generic interface to miscellaneous encoder + * settings similar to the classic UNIX 'ioctl()' system call. Applications + * may use vorbis_encode_ctl() to query or set bitrate management or quality + * mode details by using one of several \e request arguments detailed below. + * vorbis_encode_ctl() must be called after one of + * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used + * to modify settings, \ref vorbis_encode_ctl() must be called before \ref + * vorbis_encode_setup_init(). + * + * \param vi Pointer to an initialized vorbis_info struct. + * + * \param number Specifies the desired action; See \ref encctlcodes "the list + * of available requests". + * + * \param arg void * pointing to a data structure matching the request + * argument. + * + * \retval 0 Success. Any further return information (such as the result of a + * query) is placed into the storage pointed to by *arg. + * + * \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after + * calling vorbis_encode_setup_init(). + * + * \retval OV_EIMPL Unimplemented or unknown request + */ +extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); + +/** + * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl() + * with the \ref ovectl_ratemanage2_arg struct and \ref + * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code. + * + * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl() + * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref + * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. +*/ +struct ovectl_ratemanage_arg { + int management_active; /**< nonzero if bitrate management is active*/ +/** hard lower limit (in kilobits per second) below which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_min; +/** hard upper limit (in kilobits per second) above which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_max; +/** the window period (in seconds) used to regulate the hard bitrate minimum + and maximum*/ + double bitrate_hard_window; +/** soft lower limit (in kilobits per second) below which the average bitrate + tracker will start nudging the bitrate higher.*/ + long bitrate_av_lo; +/** soft upper limit (in kilobits per second) above which the average bitrate + tracker will start nudging the bitrate lower.*/ + long bitrate_av_hi; +/** the window period (in seconds) used to regulate the average bitrate + minimum and maximum.*/ + double bitrate_av_window; +/** Regulates the relative centering of the average and hard windows; in + libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but + followed the average window regulation. In libvorbis 1.1 a bit-reservoir + interface replaces the old windowing interface; the older windowing + interface is simulated and this field has no effect.*/ + double bitrate_av_window_center; +}; + +/** + * \name struct ovectl_ratemanage2_arg + * + * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and + * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. + * +*/ +struct ovectl_ratemanage2_arg { + int management_active; /**< nonzero if bitrate management is active */ +/** Lower allowed bitrate limit in kilobits per second */ + long bitrate_limit_min_kbps; +/** Upper allowed bitrate limit in kilobits per second */ + long bitrate_limit_max_kbps; + long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */ +/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0 + * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0 + * buffers against future sudden drops in instantaneous bitrate. Default is + * 0.1 + */ + double bitrate_limit_reservoir_bias; +/** Average bitrate setting in kilobits per second */ + long bitrate_average_kbps; +/** Slew rate limit setting for average bitrate adjustment; sets the minimum + * time in seconds the bitrate tracker may swing from one extreme to the + * other when boosting or damping average bitrate. + */ + double bitrate_average_damping; +}; + + +/** + * \name vorbis_encode_ctl() codes + * + * \anchor encctlcodes + * + * These values are passed as the \c number parameter of vorbis_encode_ctl(). + * The type of the referent of that function's \c arg pointer depends on these + * codes. + */ +/*@{*/ + +/** + * Query the current encoder bitrate management setting. + * + *Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to query the current encoder bitrate management setting. Also used to + * initialize fields of an ovectl_ratemanage2_arg structure for use with + * \ref OV_ECTL_RATEMANAGE2_SET. + */ +#define OV_ECTL_RATEMANAGE2_GET 0x14 + +/** + * Set the current encoder bitrate management settings. + * + * Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to set the current encoder bitrate management settings to the values + * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable + * bitrate management. +*/ +#define OV_ECTL_RATEMANAGE2_SET 0x15 + +/** + * Returns the current encoder hard-lowpass setting (kHz) in the double + * pointed to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_GET 0x20 + +/** + * Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid + * lowpass settings range from 2 to 99. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_SET 0x21 + +/** + * Returns the current encoder impulse block setting in the double pointed + * to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_IBLOCK_GET 0x30 + +/** + * Sets the impulse block bias to the the value pointed to by arg. + * + * Argument: <tt>double *</tt> + * + * Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will + * direct to encoder to use more bits when incoding short blocks that contain + * strong impulses, thus improving the accuracy of impulse encoding. + */ +#define OV_ECTL_IBLOCK_SET 0x31 + +/** + * Returns the current encoder coupling setting in the int pointed + * to by arg. + * + * Argument: <tt>int *</tt> +*/ +#define OV_ECTL_COUPLING_GET 0x40 + +/** + * Enables/disables channel coupling in multichannel encoding according to arg. + * + * Argument: <tt>int *</tt> + * + * Zero disables channel coupling for multichannel inputs, nonzer enables + * channel coupling. Setting has no effect on monophonic encoding or + * multichannel counts that do not offer coupling. At present, coupling is + * available for stereo and 5.1 encoding. + */ +#define OV_ECTL_COUPLING_SET 0x41 + + /* deprecated rate management supported only for compatibility */ + +/** + * Old interface to querying bitrate management settings. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_GET 0x10 +/** + * Old interface to modifying bitrate management settings. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_SET 0x11 +/** + * Old interface to setting average-bitrate encoding mode. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_AVG 0x12 +/** + * Old interface to setting bounded-bitrate encoding modes. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_HARD 0x13 + +/*@}*/ + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/lib/linux/include/vorbis/vorbisfile.h b/lib/linux/include/vorbis/vorbisfile.h new file mode 100644 index 0000000..9271331 --- /dev/null +++ b/lib/linux/include/vorbis/vorbisfile.h @@ -0,0 +1,206 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ + +#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/lib/linux/include/zconf.h b/lib/linux/include/zconf.h new file mode 100644 index 0000000..996fff2 --- /dev/null +++ b/lib/linux/include/zconf.h @@ -0,0 +1,511 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2013 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzvprintf z_gzvprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateGetDictionary z_inflateGetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include <windows.h> + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include <limits.h> +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include <sys/types.h> /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include <stdarg.h> /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include <stddef.h> /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include <unixio.h> /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/lib/linux/include/zlib.h b/lib/linux/include/zlib.h new file mode 100644 index 0000000..3edf3ac --- /dev/null +++ b/lib/linux/include/zlib.h @@ -0,0 +1,1744 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.7, May 2nd, 2012 + + Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler + + 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. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.7" +#define ZLIB_VERNUM 0x1270 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 7 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is more efficient than inflate() for + file i/o applications in that it avoids copying between the output and the + sliding window by simply making the window itself the output buffer. This + function trusts the application to not change the output buffer passed by + the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/lib/linux/libGLEW.a b/lib/linux/libGLEW.a new file mode 100644 index 0000000000000000000000000000000000000000..23b530479e973398af91bbc83610f3ac6781f032 GIT binary patch literal 921784 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 Lbd90^3k3cT^+2dC literal 0 HcmV?d00001 diff --git a/lib/linux/libcrypto.a b/lib/linux/libcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..63dc95616cb04b8b0518e5d4002f26fe59ab3e87 GIT binary patch literal 4041132 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%0AQ<*VY>!imETx!<ZVH9me!bP`W?j91SJb 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ù!{E}kfXy@bd^4Ajwgl{2{L01W3jz3-0`RW{;NJ<r ze*~QIj8)<WPTDK3_u@zVZiCzWd;oa4c&<0}(JI`)*?j&p?#t0{15W;T8hUBB^oaZ_ zN6-GG96mGvr|v^Jdb{RsWfjuC5iHl(%hAUJa4tK~or})`Z>G<_nis6i^MX}$UhvL$ zd+Ak~*_~JLUB=MZL-#YrEBy?-E&1WQa*O5aP$%`;ocOfxss%PK>UPe;S+i%RoB2lF zG63^f3Kc8(mVx(9y_)A8FlCqHOYB1X9A8!9O)45Oz(r22VwuC8;9X?yJs9^^hD(_Q z9s3C*#*=49{yog}#De_9;A~#REgvcY(-GIQ;8PW@WxM)}euiuL9AernFB;e9NDWo= zKT-5r7XMp?a~Z<&e_r9$3b*Ga@imtZEd9q#`y|f3(c)7B@JAI+F}0<)x-;aX@yVur z5~mo%(yvgsmO=ks;Za4uIRJl0;X2&NA@B_65BGS5>-_If`0?;(<9Ut2NlRYVdA7bi z>>~gz{aVFG=YPHV1d>O+qE9GXuK`R{_=$>sJMQVoNAsuc9XjIdhirT{D_qm-v%+;f z|CTCW-Hv$d0G&VFYZR{Y^RFr&bh@I##p7e5CWzz1mz(D~KAinK-L2k5;zOv*;3AU2 zGvi6fem}S1p3dU-`#Hq;v$*|^HTiJ+9h>CC?e}W254Yc?NBp?S7cVyN{XYt?WbGeW z#emUW?0ez=HnFX+=wkQ{aO~XR?lSd&b%Wus?$EK1p!+C(#0?oCabNR=YjIOe>|>y; z`9S?QgA>CaQRL{|SpTfM+L4ydUSsCIiJ)@dHSzb0e62rwO~Q}8SKdQw0@ClN<@k;m z>z#J?d@oyX?K_+Q_W2^*lq<ixIPitD^Cy-c{aXLF{7B|6J3yfohHw@il=H{GT--?> zH5tF$FdqV}T=*m_7rwOxkn{!Ud!(#*{sLH!veM$_QKOqq89ie3sFrB7xv8m1{f{0s zDjFT#G6Mf}2QDjaFzf70SB!u7=lNumz^ptAkE@752vJAl#apWKiz>DX!d>{^!X3=5 zC*9RO8`FbQc^IM%ot(R_8b@S*F1tOv=(DNL&CNTLt6!*GeqRe{W#88O;;_}b^Q_#^ zqn%B!BqH~&X&<}>yHwMSuvJ}!Ly0>&dn5O9=#E|Y_uehnrRRp@OPiC~)fKClM=&Iv zePeg#9t4rh_E%^3?#<j8Ul&F!@2~sRTHG~(G>mu@u7QqXd_@QRcv6@+?pDplpGaZ2 z2iTKha7%7=|8JD+68m9fCkzh#hJ-x3&D%wh9~Hara!7659dUQZt^zKwuPr&`Zdkdg z<FdM4udIHf0>-srzBtjiCXpX?#LB-N{qPm>`~;YOUw4T6;OaL%44OA98z0V(d7PDI z<<<C;EL}<QP||%s_$Az30(SJg3hUqLsg!?xYJh+ShqYXT+(_hN*vi+NxjMeC3Omf# zCF;YW=4XqdF>JD_hHyxDbw3;FVc$+!BhD#MyJKc9kFVhDO6AflJeFitIKCiq+gd~> zz0$JwWTLr65JW|Kehq3I8}DH6Xf<v_9qx7`6GLjYx>YCi{i}@y4s1%ggRq~c8Y0Cl z+~Qb`0|+2%l4%BHRPN?vc6&7rx|2wE;q3GyvA-7v%5j_7Wn^<5t?#5y7drPPY|nw! z<HkP;10IlPM0xc3WYHshWPVrNkAxjiPhtO5@tL`Ia&A7%mtRs30pasb<1;;AG>NB3 zeG;_@=iKi`q6#V8Qx+^+2n)A)ED}uo%P{LMF)n-!XtDm_^empUKa6I}yEh>BBljNK z-u!Aenva90F(+ed5pqqw9XPZMkT8M$Y#xjN>Pd${@Q8CHdc!*t=Z5PtuO=Ylt7;Gb zSq|5rjoFUesU75g8Sc5i(W^OQ^P|3dCW>P9o<rlOUyVI}AI57)L?g>4;wG6p6vxjc zP-JWbka?SY&AwF^zmFf%r2E%IWWsNoHzIdCA4)bpoD9FxKcbjliG2K<@$BwHB479_ zi1G9Tv|DTj$2sv2VUK-P<A&5=$c%6JU_7#F$dP!z9@K-cc@R|nPa$2|ew=?W2qxC+ zaQsSj&$Bl!iD$QA2Y9N!I=*^a6?X8}hiUdYpID9Up0UtA_Qd1vh1H<0in|l)I^0uP zrxWg0U8iMDCXv7BH`u=w&%TAIUV_3yR31Vk3Ooc3JIt^NyPkO%D)gY#Y~G=@MS9i) zKuIODXNEF&+Bf}Q_KJtwD%VANZue;VyW)N0s=*~xm?ae?R4jk=AKX%govJ7yT4j{- z-^=npo(0nU;+T^m*^PAbm~&I~q2`T|dxxN-e4IJDGvS1*Gk?K>@8k1hPKtEDf?!g) zOi0R{bM*mb{*wV^{%6o4Tci`(^$PCLU$OUDldsx{jV_7Ct@(-XlksHs&G$tT>ycis z-9}c`bU&0%W(!Sc=Mz5(AsSBSLu^Z+OXW|BWB+rpW!t=gTphPyA;|!T=8fGCWqu{) z5YJs$-R{n;gGKg6)IFyY7THq|?k?6RY&mt%uOs7)y?B;y%Eb=u?EN_0ZMP~|;m4@N z?+F(kMgg#X*f>bZ9fmT%(IHOudK}Zg%D(Eq2lZ}1={+i*yO2jHhrRu`s{Y^G{^%7Q zN^H!@=^101a4Lf7O3@p)cb$H68nw45^Ov<wp34DQIZ7qe|AMsNapCNi&10ry(1h1j zl>BGVy3udYKi3$FYf$-x;mEyh;r=hm;y_V$Z_bmHbNb#nKY_D6dD2b~zmsvClF6^} z4{#6D1B(_qo$K9R6w>1WLQdlvoZI*KZe&UG#{V7zq`yYmUsd+4x6@~!EZnEh%2hQu zo3`Tgw2j#<k-@96^t;))<G*m=+IA-|pJ2&0?E1`%!6wX=OdWh@)+Dp9V$b!TGvD`$ zM;1SDKBo}KXUzJGbYF-FcvNzPXNkmS3Az7?X(^lvQm%b%;X=q(nn{>mzk^GMV$uS( zOOo#EUOAeTKomL`EIyWU3(Xr>eU_=VZ+IS_w<#1~1@{5*R(?$oCDBl_*^tOl5`q45 zV|s|R53}aXrW{`p!>jxFC!ZYI*!vqi@vJ+U`!ItfDDlcNUdz|Y6~}g+p%dq1LMJvg zx8ia#^g1q^+i>FalTMu8sHmae&^%(~s8dFt+R_>y+m>h_x4(53%2(*Z*Pa&&FRBY4 zGh|TpazrZ%%&xKgodmFzovpw^OU3sN6I0p7UO|lS;9?xS%l<fQdR$gn+8-x-5aZq+ z#EBJ;VGkm9%=tFRwRyG=ZWd0V&^yeQKwfsQU1cY>>6KwNzQ%#~rwp%OyelsguUO@n z^1Q~?i~=8wl*HY{f8@iG3b7eJz82%>+F|1)JKAf~xNnntuG^$QYIV1E&>zxc_KzZO zZl)~<yMOdcdUGeXUdC%K(g?PXBCn%h@naJYj{mR@1bYq>J$nwYUS17o7=G&w&AFt3 zQS-FC!TmqFw(?KhVHmu|BBL9|e1NMI4W|K+%ol0L+B!4U6UuUSzA29+&LIn(z4E@C zooo*;H!CCkfv?qgd^p1!=#Ii8W%kxd8^gm1`02RW_ssz~zv9Bju#$ENEEzz5K>&V9 z06r@KpC5oP4!~XDjAzVbskCum{}w?1tpJ=d>2mqQ4zwK3?pDGzvL@*dfISpI|9AlY zoZ(}OUit!H{RUrds>BXF)4h&gx%lh>&iHh(!NN&f#`Q3iUpe~s2jIsA;2#aZKM7pw ziK&XxKQIE$j76c@FqJ%f^r(@ih-GKqjpmvH3>weE+x=M60M+yvout=`7hIO`8Pu?b zHL${Cb{i(oxpd)N5narre*{KT%9q08+2`iZxb!lZt`@$<{fcT&B7=ja4_pwqF~H1i zm)0z^-F``mX$vidgcTZ#aIaY~J3WIh1-f)57Eu_ROJ~lW0~oi$9oNqE0&J?pjg9`i z`DvJ1UdX(IqnwwHSKV9KZzn&C)Dg5Y=q}vTQ5L0pk)?v}i*GQvpZ_ZcCx5*Lb0o@{ zjyUU+4VUA8IzOLzieAUl%5eSk-2wD81x3ej*%#Yz*DCx-h1>5G>8ZkP>311=f4DUy zgyTi0_d^QT{4Z2E$2gY1wf|}PvmEGp6#e`0Z0Ubta7)kc2wiUg{i&uB@U@Q5Vue$b zX8EsDIKST(f75&l$%o$xiw`yZ7;&9%$0+=0MQ_(^NUy{FFGa7zZ8D!!(z6cRaL-Wq zaSFdj;X0m=DO|_%X@%=}9%C8<!_{k7pHjG9+p97Cr@tN58Jv8gDxPfyx8+D)bWQ;M zOdmb-h;D8G{kIhU5zyIu`+>qwQ21Jf*DL&Y3jeUepHldV3a>Q%In&FZ4fk+^Grh#^ zx1~Yhta>a1x)BQ3^r!jwbACwIrf}U}oB%#i3B`+xY2t!lYAcRm3T|F5_u+Qj@CQF` z>T!edSL9>r%~T(5ztea7aQi*}y$_d7>?X{A<PwEvvNqMf$SP*;&NcaFU)b`p&p~Tc zF?P0a)($Dx7#NPJF8f`hy44phdC~bt;wJ$kPt#qIMBJUmf7CqNi$DI&c)@s$umt96 z{j&{dXNp1m5Rc(UjODAH-S1?wq4>%lzJoXP-&CaVZk{voXP>5>Km2p?(qfu!PeA_p zX=fV${`lJg#8#gNTYfgIX}DpT#4KR0vrI?UYo1yDjFR<l`z_{=zwGE`tN8%V=Yw*- z=#<TSl22iPaCVK9V+cb2@ENCa;oFXhIz!s|9=XP~0Ebc7C9dfH*0@HEY&qyPt}Tqb zaWT1;_Cv@SU{Jc<L|M}o3Ym7qe?=OqsCy<<&%+AG3V|YtEjVv*P_7N~woE*};x9nG zB@+%CS6z$0(vpc^3w$3#oDfoN#_GUUvWD<04ta9-Yq-zP-(y!WAZ9!({_E)gDdTK@ zXeGPogo}lV?eV?8r_k?jct_hCk?x0aC%VbrVoy)+=N=PzTp<HLo(wjBH4KRq)ttYF z6{)bt-IMv2<Nt4du8T&BDl#>WCFY3Yf&sxUI&vR^a~Z?*c>~Bk_r=1eC1OYy(<98h z2;UE}Y<vZ0LSE)xg*fb!xrJ{C)#0G(f69wLWrpkB_4$iyS(s9?TcA2^PItp`$8jFs zj?*w9#G8`s9TZ8z-o>c;l}o^X^;?x9u*6ZH?&bv6M21L&M6!sLHlBeAD@^7vwV9F0 zz4ElG8eWAEr`b_2e0%0Rc|_4H`!3#bQ6u4Qq11iraX5ZFo_%qU967!RM@Xi?w4KWW z{|!p6%=A<M>FNk~iFCB^Gr%l&;Yf?L7t(}E=0`Xb^ZQA6dwbKX{qN`dI80f@v6O)| zwQ#)kkLiD9+&(BvrQ$VmZ=(K#Sa4X%aK<!V{n(iEuXzlf_V#=BbyJ-$G(U^Dmn5ZL zX?TZYHc_!0n<dJhLr1-MiEYAtZqxIJU4Rn-Q}y8$dl3@YZrXw+njyQ^AHTlmp{4Di z^r2(BQYY@kGSAR@$*tyRC4$IhtS%NlXX*o4>|M!TML72V*sM(<k0ae<K!k<i@q6P- z2Ne#*L+K33$h{YY3X6qF7d(gJD_s10btsOzRX5^K8mI}kaP$EGJv-AwaSEcl!R&@A z{0K)SB7KzkHhZg)Qb9$Y3mo*vmgs+jvI`X!iI;BNqQaE(r`8yJ{`m<hv>b$gyKAd3 z62=P{Pl>k|k0>D9w|4GFSR5oP=C|9<cOPcz&dMHobJZo#@;*dt#$G6j>Ygrm0<Y;t zGZo`;_#2Nv>&RCvt4!5Sy``dZJkMTB)QEjY`%OBT9w5u4?mXkLl+SRd@Naqvzmv~! z8s|7bI%QmK_f8&<;77;zMfZ=&NO6ACl{4n1L&N9JOV1cSe!>MO;}|ArsSaPjGumd% zf(&8Wl{1RLmAeU+jhcb3^2DsJP@@vbdtjWS61Q_~$!p{9;LmFFk61lM2O|UJ*h*w@ zRi0ldAKac~@H&G_IRhJo-+*$#Gu>GH%Hb0N@Jj-4)bp}@J{y2j^P*h1-2pgzlXCQ5 z3c$Y}fd4cAr%baP|KA4Sj{_H(qc8toG<dJUZTtAE!PgtS7?$ZMI1;;@$C$~8jK`1- zZxT`3!Wo(A^JJXHN50)xdszz!XD__;vf1fNA>SjtQI9q{+eM+@K=EUGHX6`*@d*jh z2bY`6K9`=c(8K0?G4POcCbmyF|NPXYH1Ruk;S9ex^0L`;jok3ExnPhU5O0%2$_Gn{ zGN8y~kVP_d=lt3_)@M3mR<6Y7ar}cL&Th}Ti_Hx&j+yP;{R;|bnOOWA3fD5Qrxnh& zZ|Qd{T+>q)Ovi9FeO%!zbIWI<!ZkhhNa)B%(^K7u&d-0D!Z{zY{Qtw?{`~o+qSyIT zN5*h|dLDpH$BUM|ouY6pi_&_({3h7=(0m0QFYm|C;y+NhmPNf7fDbhj9=_JHw__E~ z`I+V4qwu2?{<6XS>3v7h>-_noX}1hl=kw(O`1b?wDE!lrk0}aycI3Z=+wV-;huePr zW*;6i;eE%4cNtvfRd{E^wf)n2AHD6L4E&xiQTSx~{9n2lFuE-!Uf$EbeQ%I#W+Dp= zZYvW4$3B7KRPzCjWl#4}{D_<4BqT1n?<ZeyUvvWXhY!?$Gq^H*zih_(H_4E&`A1qh zdySd<CW6X++{B;Xf9<S4drjh{z1MW(1JduO{fzN%vbo5@G5)s{5%0$4zlATt4f8Z+ z0ds9JAH=)NGs};Dt$$m7Y-9eiqn8F#p=R+xIe+~5?2kLimmB{p%uBX$mW4n3AlZtQ z#SZcX=zFAWMK&>6;mZDGD<emafKD;pf$I<NW+aV^$u)*=-rx}Qr=a&Js<YMD#SME2 zc$phlm%F<9^lOH|n(6g3+=bPNTsyR%puYw)2B};P^jL2=!<)+|b3>r~H*~Nw7$;Nw z4rZaS5xO_*tp3ZH@z&lOVSj6D7#elZO<P@^u5tRLo@Lvrp+q)N9}6Omt&A3?n3<Cx zlEG^zTg_Y!ZRXR*4~g7-EoOlE`9+#Y&ujqAz5P$*GS!8P)m(DGx%e=jL8}?R1mje0 zGz`DR-9IL?i`U^;{9B>D+#82=oz^|+BNM03gW}~~Ad5r8xXx{_%bySPT-U>L#9x!S zs+~@L$ln<|m}p3@e*R2n!`3t`6IJbkmR!52!*Rw=*VW$qEM`-+PWTNke>!r|j(ZRu zQiGvc`5X+MKGP9NK#Bz^0L)@gMf#O+2D`(r)LYWUc5)XPn)&QNy)Dck6YgJZe!*x2 z(yw&3ppmBZ(X5?-{AbTJ1r6msSf7q0UqLyqe&^8qs79}-BYCb~yX&3Y=}zZP$U-_W z|6jfJ=<ph+uWA=#lYRcoMi{BMowtQ>WGQzhB6XdAr_$lBr(m$@VJG}rDnH}_u2VSq zs>hli^70{-t2zt^^-GFVtq*0Our^e()Fd!oiE|e6?cttYx2^hy6P?`qoX!WG{G^Ae zdYC}HpaI`kpm+EX^bWU%GuuIiO5&Z3;iVm!HgmZ|ivu{=ze2oVFfyNL3e(zj{v;^a zje3+3TM+{RYzIupSM@cn7yjquCLJDfS3{Aqy2IU++|=)G=omaKx#{^1cj9gqRY&V< znP&>)q^2Q0sIOEywq*dD57n7t7$JKQffQj3(fE7e2zZJ^z*3!0A085|<5KyEI1@!f znV2Wz6xk*;=Zb<&l-4+w78L4GTJEOS2d=L|D>;Sgq)Hs;<n-|?J}D+Lu^VYdwivDB z#-|eb`8Q;H&rC#;(2n18DAWTZ-7hg;PR|UHRuD%sh}`mXKxhKAzt#CTwBlD6j!xyP z){~+-{M+mcXC~1nw7Z$=#;uLNP0xaWG?{Bjx8-N;iLZ>oZ@lpt9H)^#_JL|V&_Kf* z$=u>lwfl5(Qvt@4aGZ^^>7~@*-$B9$3y;0ksn(}5&!FI60g1C|yMsLnFxhaLCvhBx zob>7g#F^VDQ%mNmlkf$br?hazn(=D?CTSnV+@aK}rxiY7U741hrM%HC^qdH+|9gnm zeryzgLgXI2`t|fUSGKa3he$9$KdoZEQc#0Yf?;?YudRl@9p}cANDn7^&7z+M-Mu_@ z_XgNE__@|b6MF=XMxe2ls5x(-y#uTZfbTuRJrtrgv#0-7jz3R3`0Zh}P2&^`gwj@1 z@p+&)Z=h&M0Vq!8_vA=*<|B3!ukA|?IgcWzJcLM1%PK0`AVU&M1bBDQGM#^d5C_51 z1<P{EjTT7HQOLfooc<fBg7wzS;-_N8Y!dw+gGpV%J;xNByZIgGE2Ot$ZmA={K7wC4 z`r(Ftizyc=b6_n2^k*9SE|V2fj=+)u^b`=-{nZ$+*rUlQW+-jIF3Jpw#P%%pA|3e@ zMGy!}&rR4v*tyu<xToXLOXGH~N}OXcOaCjAZa;lD0XSZm*OoqJ((R{Tt#Hl%b%pD> zyxt3};~7O*bmVWMCeLh_bQZVeyTXHuxGhJX2|#D*ZFza<d;gEZD_NT%Zjn*U+*SC- z{{A`_H0SDNCcr)AU8IZ{j)C_(=Suj(HEi~2nI{>ZrdTXl=s^A3IagEBr*~uh?{Cg@ z8pw6IS~k-H;_s(D$M|QtYB$UHZ}EAs`Dba*!VP<?m<7!B4l~Z5YMxn#*&A8^!weoY zXS&l=2+qm0^F>F}?vK0Bo33w`@xbpzx$qfHf7#LhEECZS_@JCWeDpz7HMCQv{jNuk z969=+=S)#%o^dg`dUGaBXq>(^7(DFFU>2}`ZEi9L@ry3N$hmVPOsB)9wjBZIu-md~ zJ+=vP44cf2sfK;SsLUAL-LQ+edTZ1fjMvVto$_KZEUkKv93wwQ=FJ=X|6R72=rN<U z5sN)brSsZKhqYlrs|AtFj8695&uG%v@%~R&D~=H{=fZX;Y<9vR>wXLv<G*I=w=xGf zVWNfl?Jxu;07$-y$)UT3IdD04g1H-$JT(m)f-vTz7pD<+yb7uO7?~3^?@exc$*dEm za`hh)%b9lL2kdEOu%Q2PGV;?WFunSagI%Le<CCe@w=$a$2#h3xQ*zTbuG%&rU9_sl zX+n1K!@EO~p7#U72+(b>E^ud2F+H-S>t#g6&VO<@a_j3NY>DmJ80q;1Bblqoa=r72 zNcR#xwmuPA!a1Fjk0UR7y)mcL_}4flx3XaCxJO_sBnPZcZsKm3H%vc=*SO+EW(an? zCR+P4RSC>e>{2AQyqa{E*7nmc8)m+Py1Y3F0!Box{=U=rgvZ2f?rW2QSN~5r_QeCD zNc99M3j6Nggm^7{7dT1Ao=mP?_k)tA(ciw{d>CTG&Y{`48)ZxAGQ7YBz!Yj{y#wQ% zm4lpC7~>ms^=VFieD$x{@MIHZss6P-njS;lfyz3k6{nrmMZUBatJ=(q$i2@xFzWUv zi2-M2NOCO1n*!Kik-UqSc<Y?{AvbXEFO1g4VfqZi_hYyBKWyhHaqRVzlv%TDac(}v zD(p`<i>hnhh#gh8u8Cv*RoDMjjP>&w>;!#T@_^!l!yp#OdU+tTE+(x1OKMKcxt4dn zCK}2xv|h+RP=FoCr*xZ>!(8k&OiL_3o@_WGx3K#3g+s1ycXE|Z=M$LxIqpg8AsF$> zrP#JG0UWk=x%e#i#-v}odu7J>R*4v6VRiqvnK}Q!T!eXM=OR~;7hFAl_8a#xmZh9^ z_Nm$!O^NZav#Y$ZI=`oOY(gFR&{^DXge^7|S98D7TCw7Vv(DDygt06-{uD@-k`9hG zghFT6*4@l~IZG-rU&vNf%sOl>raS9u>&8C9X+vB;rfMptgVnl6$P7oq-CQAOve_}i zSIE?y-BvLX@f%w+1^?XE<GKHvQ%F8A+x48nmN~_y#Jhwl6q0hsJ=Zj(T^Zb7J|2K` zZd;B%4xIe&W(44*zTnz{Upab?CCcHmfeRlqkdS%=EE7QAW$1g&z(MK>u$u$uIoIG} zO?FR0Y2!m_4pMySO>QWQwPXwFAFH875<R`){oEOsPfOFF6zGck9R^O0id!N8+xvxx zt~e2?;f~4Yc*xF8s!hHU=Mco=_RM19Yzr1onEc~KuUB5Aa6M=FH-+o<#4FVtXNcl| zyTVzHHe9<dMs|9=?|2SO;r#I#uW-%h6vbc1KPp^Gb0704`U$)ze`Zw|esq+n&{^Ep zPu35*BF-DQKX{iSZtInS-}5C3pNv<~-0C8e4>kaQ+X$LlEv@!^L{0r*-QcZ(_dB=x znlD@%z8^lx@HE9@$wCL}KWJ`c{lC|_)qVbmnwXjFD8@5rZq;l3`#jkEvkcC{4M}4b zFxR`-NZ}TF7ipX2<~Bidt6np=V}GcfFFI1DriyB^P}EeY2aSh=om*`+b2Hm-TIT-n z(N|qIXLd>1cYo_qr?iYZ=(*K$Dgqc6ldIA7?b*vwdU`y^VHl(zvXw6#91=6&scyg% z4(%vXx|=_x$C{s7J8*wK$9`L6zq+x%?rm6yyd7h~28h^K-h%K}G0@*|Jmdv0`_?1f zlaW(*Vd&QvzmM-CJs$uN+u2tU>ERw_+*L(-Ucnn2uF>4Px=<P4xw`6a&W|EJKLLmb z5axJ?g`mv!Jf&r*72#tb=(v@U?yuoB4sl7pUyW!T%pxM)H{p%dzZL4XVd<-OwhygJ zS7n`{RZjl8hQ78I4EXnYarU%Aaf&dG)h?Z=jS*@CbwQzuTDXq0gFaLW9PNQ)Z=Qp4 zGEc>j^AHHjiz<nBcakqQVlLrsHcFZOUza(E(8aTbDln-kRDw+Ay6fOMzbG94+2q2r zkhvG<ViF$6A?xp}kW(SNxmA3{7ZKil40L52f2(HVucV}1I9V9Sus*mGhvKJ)Ik~fj zd3uym+C}~j%+e!w(l{%f1kli4W2!?pc_XPj7l7KxURYNETQviJrLer!M|+L{mnd)! zl3{|HI6jIhRa{?l+-n9t=f~r80`)#OJ~rUly=K63d~ye>(}f-G?|7>AJDj0CGGI*> zr}lKS!*{Z$ha%k*<?gy_+<uz3)U<tr$-+U?x)FHmLZ~=Ed(+qA2%2<N%DrwP&LZK> zLg&}V!&m>I-dx4WEkuT%F7*cFXFIv`@q8UtE}wI9BW)ANbjsa{dogCn?w*sWhq8F) zH}MtI5D_mkIRIVNg}+i}vXXOM40Eif>@r>a($e`2sy;o<`sC!=CNj$7Q@OL94op+e z;A&*<>|q_0VVsY{X!h(~kN4m2|Dn_~(AO2XEY!Tym_?Abu{NEP%C&qS-zJebg$JGr z{Ilsp`<uBu((`px*Fw8gw}fv0XoEdB^Iap}73-TlcM4(v_E(YaO-R0zl@fXox4E_! ztgurld<H}Z+1*jMttI_&q$HMoJ}h&@^t9}CEz!&%G+xldudICAxiDDOAydwer61e5 zrXuq&RxK$Oa9_iLKTyXn&LShXaXq{L9+H9+iX<f55lZHp%s<C{6X)97d9Aw!C&h0} z_ejTzxAF?YCvVnEHE*($?6K{$7c5nqxg3wBVuq|?G_wW$1J*HRQ4@PLD4W7j`q-;c zT+DQ`r=jkC1D>7iwXDYfhTH75Eil{uwpeceT{;a#0>^!_XeJ<i1}c%rA=2+hO+~HT zZr-7&#fAWrmwR7_i(rbT+IxCefO9C4*vex>-hF8l<=i(`a=-spE2CJ!YN66Q9gmV; z6L$YyUj5Vk14xSB&dztA$`1uCoqs)%^LPH}&f{N#^YDro=D(>LEFIPZ8bcgT);#1K zijJEr^O&qRRlEc`Xm5M#m5egoXZeS@dEJcKYK}D*^BIm~Z8~Dh<<7HZW3lg)!6Z|G zo1u*OeWVQC79Zx|`E`SdUZI>X;<J}tvgOT1$%o1wFM@T&2JnfohQrnJDr>Is+F{vB z3M^8^b=G8!$Uo*7+J1U~Zv2u%F2uPVSgpiT<rk4*G)&I&xYf|vd?ES4uU~oxb^O16 zCc4yJWFO~+{`n2F_2>ZnqrfQ>n2IZ%UDq3p`*M5|0r=SgIGSZyKKyhs+^89NOPc}q zg#h|58T#dh-qxA#8vIU!+jc^o@d2_9JkvdmAMsuv{dR+|_u-V0kba8~KgQrY3~qII zM*%OJZvpsu0XRSM<@jU*@U8&-3&15Gs+fAyesTS(!R;JL+A45v=qeZPeU^`z6WRQy zEM{yfIU$jpFur(Xgd82=I}M{q#DgXV>bQf2IzD5Pb6$HqkxX0)^Wh7)yJVjO!HcYB z&%Juaf;1M#t>g(Jp8*l_2nIl~^?hl2)`A(+re8W+&RQ>Wqll^eoAM|*&73psa*<mN z;Ic2;i2&0xXkLBVm69MT=`Xl+#)1X&<dAjl9VqGGQ-~%}hZeu2e#VR|E}b(CI{QTr zB!N-@lV;8ZDaIf(A4VcXNLGY8=joiXCer<{SwGl+(6L$%#?Q*0qPVB?<J5zo^W*lL z>Brf==?=q>@2ul&gpQb&h1qWyan?B-AI>P~{P;%#@OFi3+1&ROUJZVh|6YUp<M}=l zX<jfcFVbIOa6kQx0rYVr?BQ#j&q;;r^j@X#qg1%pE1Z42jsL9*r+mxe-%vQmJr-YK zaDV(CQS>^!I~A_;?F`e;FkSe}7x`bNaLS`>xM_udNa0@$z?)46PyWLceW${YQ26Hq z@NXL2pWdG<dY#_GO~1!*KdksSD*Skbw<}!7=N5ze!?kBmlfMqP9nW;c>Br{VNCI%Y zX#SG|@UJMG{k!FJpNeNx;k>7#H`5g4IVS%le5!e#<-?;Uye=PZzu&j|@H-9tT|WG7 zga68h_Zob?54Yd%7k&5^L%-XH+wXTm^#i=U+tk1LKHPpU@9^Pwn|w6v-}5C3pJeT4 z7XwE3Yu^k1w>n6cJ&~OrT(wCT+a|+d+ofY$qWdU*#7*-i<T;T$*@x2Auqy&Vvg`qe zKNYDxxvzQ*HRFNdkI*3RP56wrcBG}V*O<9)BB)%A@xMP=coKdrFXcVd5RiU9?PrXC zQ{9RztpB@w9&G+w!i#XjJdIhvT&I{1vq&0%F(2sH`nToBzF?oS1Ge4}&ceNRzUWBW z{c$IK3qMkDj$zJkbh+?JRxbQ5dVqV>7ohKv^Z6?l%$s|_dPXBgpE?2?GvE$<Z$^_U z%b3K<$ikH@#k2nTWEqJ{()G5y7iGilcAP}Mm3$x{!8zsW8*!k65+`R)1!;U0L|LBb zD*>gC{Rl|9B~~d{>r|)ji$f;|`U@@X%{$}S#ZU*&979cUJUZEya6EGBy8go`)APcz z@$0|E%C_36HII{9Zy21!MuVLd;mrH7u>=q8p`D>{28uU3dGY~{N$(#-J~&F43Grl` zkO6L|9Y`EyY=KDk2}o1+g|H~6M|#dgVa7$lrajleb9mE7#rxW&hid0GkA(ZzUC*@l z^d=(he}%}admU2AaD3stEO}|eQv#+)_s@}u5?*_C`Y7n7^rjD^I=quRGW-0XMC7NV zZezy9VZf5AHX`d1T^6H024O7dht`AM*+t(GrrkNAF8h2%x-z~C2UQes#<?$%XCP2! zJ?tSCHDx;7Kf^mTq<&vG19=e7USA!K^!zs{g(HdsYY_C8y}k}YxB0j&P|ztdEYXq? zt(xvd@N8mKn1g$pCW#}{l=G5Q_#r$qZMMCDR-Wxu@crnrQ07ACmx0v-<5-YRzQZE3 z!FdKoW`k2-J@xW~)&uz`9-`_+4}FWx0R!MdBwUn`g+kHNE6|$(ox*tgzi}=A$8VgA zTPJyq2kM^tzvHA~xs<~{8GxS}fR7EpCkEgb2jHRfw9AH%9?>j^WwMu^(RsxTnZDAF z7><5eAp6>tQ87EyBxJ0L4cr6oDYMHgb}pv02pI0;-X+BEkRJ2eF#&NsxA+%DuW_c2 zj`Vs?*(s=p>p9l#3fJ@-6|U)zGDS)LdQQm`>*<K=vAnBrO;1@2ouB@GgELL~n;Ib@ z951XNb}WCp!Tt16(9rR<VJXl5=wH<E^9@NuF~j&y6Cd-qPhAcgt3GI&EEnJCm>%A8 zyg_HjIzeOAExvF)U;B<VPr?iG)OkzV1NCpms{Y`t|0tO$7ghJXZN-o2YT|=-CPK$) z4EMI|>~*ZdH0g2v1eurCpQW8_{QKh{HU49k&|Gc)TlhTORN)u1fVmDc<11TEEI<0S z{w*FfR-J0XpXTH1k3XONai^CDjek2wV_W99)E|D(SaqtYf1PBeoIiYwRbd#hXohIN zI`N~MT1Ox3SarGmXd@mmiHkQ@_0H?UfOUP+eX?|{SLsYIEW9tuod>h@k!9=QFPR$z z1#?;Pd&J2>v0*L7QJHDkH!)DT8}FU$ZYWE9k9Qn7{TlgN+V6;=q|>=$D}#sHM5O(X zSX`z><%v{waH#Ash5H|;rl2=Gi{``UV^wvL=prM4bekEtUWes#$L+_dVZt3-7bD%H zaBG)UF}D4l(~9@kc%W5$_#(!nh+jDK%hEc3d<AD(_c2N<=i_hH=kVvP7kX!B6{cWl zRHCQ%S{W;5PeZWBAp|=_SJ#r|BY=EpkVKn@I{n}oJ~D5j@<xXL>(V1^GC5arkQ*2| zV$}Q`tg**sS=D4@=EF|wA0s`KSkf@j%K{g^C8I<+w+wrZQ?55>z+m%L9CC)3zYk1# z+*zcXpA)jLOO=$T(?6!krn<Onq37CgQv%DuV_;|A7^=qnr0}oED$BU}q2`V5I%^7q zqw;QfyQc&#Iw78$T(<%+d|^g{UDzx6;6xH@kS0+NI4_PJ&KU5YZimmFtsShxFFut_ zDQ01L_uRvx#l*tNzI9%ty8?;HzV-gdEmxwjWY*;QLru7sb*riHv}8xDSVsyQy!<H* zvsd9{uz2qJy5^lddt;ab6@CK1=vf#&B96RuZQfj}&6p&ByzmJ*UM#_qD14ay+jH%h z!C)in6MWr<KU>6TI+5<P!I8DPaEf?D{HQX|(tri2H%$RYx{m>w6p@_TX3L2g5|%e8 zDth#kEf(W6Irj}yPSB$%a(NtKkPNR`iAp6C>0W7GkpnzqcZc0@%s{>-ZxJV%lok2) z2t292K_V@R9*gUv@Lr_oG;E^|ri_NSX3YGc=csMEsQQualTC17#dxATiwuu69wdvr z)<PeL0*<d(go^C7<awx8rIswd3r}KrGjm{hJ_@MtZQ>=pAU1@Rs9dO{MWu@Fe+P{; z2+4qA*7g<Sb*&I!V}s2K<bq8TBX}`G;?@_`WT}ueGBqYWDZb(j1m#8gsxp!Oi10-P zj<48OBpldJd8vB?=g|q{eze>)=g6<<jDAL5BYw7g+5U>L{}tZGvo}Bxa5!xTan{+* zkDhRn%2*`*qA*I-56dos7D&%=h6-JiS5&1exqJX+Hx=#3Dmt(Z#f6GB0Pjr2ECyC@ zUZR3Q;^0MHr>d&tx$OHF-$bUM^FpayQV&g<Iru}j)_}N&Gf+vwz9n=bOl>bRm#H-| zC>34$lhV~fF$h#Y2NibABwAlhUv6WAjWn3<Z#HqxJi(w49)c>&VDPN?wo*v?b^B-& zibQ?X%gw(@|6;inn&hoz7hiEPvaoOrt9teZNCSF4&CX*5SC$Je0L@-Ykm@`t4&RUp zR4J+KiLnAgFUg}qCv1a~W;YgZ<Bj+{yc)(ykT-nT7O6@eK6oSoMgJdk2I$K4mh?y{ zQAJRyYJW6u8@#vZXyPtD=0$>@Pl2HDOZ<sWj*N>ie%g;jB6y!a$L3Zh@zrWPoOMe@ zcF?D4yTUv`ky~jhZh%-q_Q&Jx|LKiLCJg+mERJ|fI4a!$8HD65FwSf1N@T@5&e6)@ z9}B>PWD}gDm*aC*0M7lW<>)!;D~Hbxz}Y#MqrW}?zc~QsdQ~|-{~myUI{^P_0RHO$ z{Qdy^=>YtN0Q@fjI6q_M(p80uQVy>Rz&{v(pAdjk<U<_>b`-oHC>GK?e?*yNA03b& ziPKyWBY~k3Iaw)G@f-xaR>vGN_>4J>5!;IRXwGCDAmj2hHmp??qjbR}>|^)7B-Bz` z8YZze-9}SIZ+9w1p|}Iep7jt4v3}EWgu{6&J`dv31mTElS=o9)_r+gUIOpY-k3BPs zJjlyB4ixB!aUN~y$17aR#LiK;mT_GYfX@!VuMWVo0r>I&Tt)#V{#q8N?H;h6+jR9S zK02T4Os4QcxrL?Id%?IwXYunCJ-1$1e1^g~wYT^JgERl%kDql`e}uR>`d(grTk)a% z*z$Qs;krJ&u5ij<EdBAAfzk2xQTSP0+jY_TFjmoP{tFeZ`DlF;t)F7`O&Bh}F*e*6 z6(6mivRC1hi&^^PD1d?^AFV$!O5s{x<3fdN`l|!*oWgav>oX*Ed{!y?DB@(}xxwJf zGgB0}3x)oy=ym&gP2oB}KV)Q6{(L)A;m3oo4fj%o>-=0|aDRNhs_1omei}f(Hh_M! z!gcw+qi`J`dv+kx^$`{S^NetrxNg6T6t3&xZ3@@r@(YFQa(_GkKibGJ8LsA&RJi7I zwZe6}ZdbUDX9dT!aOAJ+RfEEHxMwL`hdV0(cLVS!1BGL_rmK_ZfAlYE_?hf1vWuBJ zJI=H({9_B&5mxz_B{0_}enj9L!}ws=0{&p~!Q)c;H_fXEoP;})nr^0uAE^Ik_+Wn8 zH7d)%`e)f|XY<}(V|dB?CQXF<mrVRw7qqkf>@|s(_FmIjdr2DOy`T0o24lU@u9}@c zoa0@J|Nd;f2ye=j-y$Qwwle>NT??3K!k<+P*}L(_pU?idlX8WPzbRPuX^gv#zl|5k z{ACZwn;79T+!vtlk$Nkacb1OF+3#Awsi%%;IoP#;9sGbA7n7^E77(9|H2@ky#_qev zyyGX$o;Ga0+e$(!T^4cmT7g7Z{Xph~lIWQ`p$2Rkvw9;qVkC_{MmUDX6PLhi`ay`< ztR@JbSD3?5AnLX{A0SV;p3Q5B(w4r2c)$iWWci}T66yXkfZX|5p}1iJb`wDzB|Q%6 zD2LNhG}KWdJw15u9eyJbra0~#jCoZ=V9Vv_T#9h}acBrP2zA4YtWk(;=Z3+CSLWm* zhr=z0k`l|C5L(boNMSnOQ6I$+XKpKO#w+fzf=q6JG^G#tK&WR1JQsdy=>M2<`wJ0a zmq4m}Ud=#?1y!0|0}XrJ1acAhDdw3c3bV;Y?P;XV^dvVd!pime&gZu+MH+XG!xmK7 zY=Jav6poR>(M6C~We(dpc4$?ko5lkr5mvr~YtmSL#w{|-zO|Z5g5rcpi$ln5Z?R$^ zw<2pg7oRf`sN#w1Bhg6rw-A`f25lu%lJ*?q=H;|_KLgE%LNy4<i}LhHcLUIP-+1{X zK<p0T|B<L&)?-iaqH}=q>>&g=-^r)zr$QK*PVv;3?M(O7+y&LyEj%A|R_=l!xXj62 zFf{x8p26!Oh0Z>BD7>X539Lf@jm*n+RQFZYqj>h>c+(3DwDrew7jYlh${L0jKl*Ut z1G+y_;VqiJ1~qrrvGpl;D^-CuM!I*Q_vqlBIz$QUV{5VChGmnX*d#~kA+}={q{1ZX zV{x4KgxDcg4sM6wn!>dX*NI5iB&1~UdK}1EAM>I<$ws~B5=0mVX`uQ=ouYBbHCw*U z=kH&NSO)C*6b6=5O1fCMsw(KUFVq%KqYc!y{KaFUzDc;1ioYAZK82;&_=>ZbCe^n@ zx{tsZPZC`c8S}Bp96jp{tQF~m)Ck?Vj4+*vR~aIbakjlKnk@wn@hy+VGI^7kRLqy2 zt!$eJuEiR&;Tfa@Bi)mN*mdCALDW+J0Mz!}D9V7bzZsQa*&WPYPbOT!-l_WwlHX4X z<A34j<i<r@2*uWKq%?sV2}Qd|_hZN%bb9^o8?aL{(%pfg#PVJ#1(BY$AQeSA_C@Fj zAEj;|g2Itt40iy7%-w|=a4_*S{b?r{aNlQxsoPwQZ7Tc-@wDl&{WsJRO>clbvhmiw zNcTgmOcb$8J@wT5UN)H<>HadBxTkR#>Hbg2h!hu(AiGDbY{9XqTnR#1gHjzDw(-+D zA}Q?!U1_1i{X40TM3Z48(KsHbxF6TwT5iZ08%IV^MBoE@88X<z?nF9g`za#2mEDQx zM@D+iLoP8NWx;^!%`eak*Sfn8MXYd#?vk<tY5T>%$>v)?#Vf3l<-A%CxQBxDLJ!`R z>Q8n|J(kQF8L9ztPxH~j5vqlv2si{!Qk5e;Vcg1Lzv$#-`3>c2^Z9ewLoe%a=6E)c ze55c06FF1w<Q+OE?=_>iUDi=9sgD-^hP&b(X<>u*Q7peFq|DTE9Xv1nPiZHUxQ3^c zJR{vdC=sL2vyqE*e-Ze=;$GShNDR7`=+alBKn5yM_N+#0>%X9sU-1=7koWh&b7<up zvdH1Dw70o142iKioIRZqO;i$D+_NRblHkHEt4~8=FY^J1n6;2);Wa$9^WZXQphkL5 zu>Pf9Znk;Sa|I*SEBctCoGOdGI{^-;2@Hp8!~I{zxMdY$jVvf;NzYakj#%gFaJQx0 zccdSak4K5*6?iU;$AXXqY`RVKkryM9g(rbiw*gU)O4L6DfVGLAShR+INgg}qCU0Gy z%UKzWYGhp~U5~{@)F+jZbHPPr<jY`}TUdva2_GlNrkqoU4<0sk;|q*aHEdoieV<fU zbTWL?#Qv52r+wXhC)jXls-<xA8(wW}GAz9Ak5zFoXvA<G20Q5w$e>2|ZrzvQz3B)s zZnU4#NOuCbbcD8KGQ-<*msYb6Y==F!4fu?*4}8e<fy!^@7llD&S`2SMpR<iI<)F=e zA{I@MrSk#m#C<|E@KXXcW+vswl2YVGDJwXF>3JR1sc;KkN;#|OM7lpG+<ZgDp4WgD zK7&757vmhEbAQWXX3DgWp00z^rEGyt<d>yA-A-*ZUp2P2;pRh1d%6>~vANjN-B#Na zuWi5~*EozC9&o5MwrPhZg2yc36bh~5<VSdcWLaf<kyjih%?^#%wqys5uk8(2zP}=9 zhqz(%9`%F&U*EfJWzp5hM!#HyIZJtPIXoJGe<A=M8GxS_fVT(WsQ~;!;Ida5-3gu4 zD_m#bS1$fn1>m0xz;6n`IY2MRe|Z2-J>PQl-weRN7l8j)0NxvbKNx`jJ^<ewfWI1m z?+U=V=7f%im!M^{GOJ}~Im#|Ul~%>f$$bF0re*gj^F201+q3`df?9Ds&MbJD1vZ@d z$LRQ0)ARz}zy-mK@n_HUqi1_O`aWxerS-QA7xH9X09hmQA$E0EHvUn9aQv)m*(_yw zbbh?eg9S$yTI9nq3?1nyU$Xoc6NK~Q-|%3;_1f9<3fF6Ae^<Dsr)mxz`D^-91MqVL z@Xsn-%h<11xaR+#3fJlFQ#jj~&4&*#f^fX({Qr=`b^bR7;M5hR<3-b-8Gxq(aBc5Q z^SLa5KBsWK#&=r)PKgK|FFJpI8G!3GJH1wTBIZYQ^rqJeCo7!a2Aj|NJV~w<T6~M5 z*K37)6t3&DK2K7YS0g5vbc~PAH@()T@iPPHQvvwo09@}K*Zk)N(0^0my1afAfd5kA zy1X6=z+YClF0Z#0uFLCa$V2FuZ<IINa;aDNQ3|(qy!`anD|)?_`XhzwcDhR8dJS%y z!u49!NsxolF<j06)ByY<h3k5ClfrfVyhGu-ey&%z4)@sr{56H^@*Sks+H^nGp>SQk zGZe1Z+Ey!Em+wY}Yd)_jT$lS%9MHirKlPg3aD{9B;}ovr{~3kre7j2Fn$Hr2>-@Px z;hO(14bHa3xLWsHMX%S;w<}!t^Cz>jfFlnb&&dkc`EZrObv$oXxQ^%d6t3HgbVdl% zAOE2Q;20kr|5k<Te4C<hU5<+tuH*AHg+~#FZP)iGT(`$Qh3odXL*cqT4q>MZ$M{F_ zv;04-a2@|<g=;=MZ;Ot6j>pgP=~TF`&o?Su^SMponokrw>B!#<0pxj({Fm@8`lWgI zUM^91A}iAk6j{W~-S<p9?F;`{KWMFa>JgrgsivNh4Z|_jeZTw8w)(=g;hWEbeGIf; zd7%C|K4rW{6ghe~*1w5<@vY5vdyU}@@0*Gg-py+!{_l0Ixt5ivjI-g|S3zsdb;kb+ zOK7e(|1EqGZkVSr3z%y!KOS&4T}%%BTL1j^(y^G$&_|x_--9OnSr#x?fBgB(y6$&P z9Gt^78RleHE_{|xx$vi&in^Cfl=Fv=wdVN?U>DjRlCZz?f}2M)HF*aHANUywcYdN2 zftcKywdP52_jMeY`VJQ&Ig94OV4;=#OK>f~irXUH%K$Y$8~NqW>D#`T=_ZcFQM79- zoX@|t2YqQ~bMsD-!8SkCe}t^TWmn_f8+?}@8Tn;mNJS#@%g>VqthR)ABzNs_u%+yp zr=09M(Cs;GC5*zXEnEYkymxM<4G6M2IZ_iVV~nNP#(>?29Xz!4Q@KIzYwi=+kCcvL zDIi_b+>5<x-3$cl0OPTw`lkEX-YpWZ6rNWwbsbpbJ_?)aAS0bz?LG#XY;}C^dXdw@ z2*uyPpo{*6c5O-4&2^3SvOiCoj*+vF(>$hgas6(t+h@1Uio1_=lon<kcimR<LpqjS zf$(Wob3U%|+=Z|ViZ$~OBy+V+Zt%|4;mk<x;_Dv!|FQQj;87K6-gtL9mkzmfLI@;; zkPhjPgg}zcg(QTK?xZ89p~Gc>0TwXC5Fo=PToT1mxon8q+qU33e(E}W>gTxXI;`U| zsEj%!A_jC2kYT(q3?Mp?i3kh>fkEW^y>+TOm6Nm}v$MPZ|MS)Jbe~hd^H$YcZ(UBE z_pJ-6By82Br=?{KHnK)xZ5~$Xkro*X^zOCHhlzhNICYRs`U_JFDHyO=&FTKiv@rxN zO6a!jo;#s5Hf^MZ#sY)(6DH)wMQrs!JL65*Y$+F5gm#L7xOSVG*%~@^r5p?YUSk?* zjzR3xhd0J@vyM+E+(LV#kWQT1j_wT<EtIXN+<_JrKlp_`$F%XsXhCEOr9DkUKtg(2 zqaXrB$Dg68UAWo)7Ddt-FUr^1{BD4A!#4!NeuDhjO|R#}jH@nW0FzBevA61L6jm*N zch|N6mT+kdhRvo;_uvu8w;5D$D%db>TFAjb6?7wB)268$3{t^V29D)munM*ztENq9 z91KyxO$_YMLDeQ-I*)<ZU{0XaLsiO52A<|%xC&mOylpzfL6Zu$GmzHGAvm{nmi{jS zf4a*%_elSa=kSQFv%G?Jps&GW_pHU?nph0_lh%%Zg<r@6#n)j1Z>rzU4!1FFJOWN= zvlJuBjqLe4JKIUJGmN(jd-J<`bP%H8X+5I@<gkHZc^XXXFeaum`zd3WEDC=`n#_Yj zVYX@0##4ZJ{rOzjFWm328bZcaTB?V3^6<YQ{YrEfST|%w^BYOc0aXrvmF~mLjPF~v zvhjA%@(S1uIw>=BfGD#%V8sjD7o^A1D>}JVyYwoVg3+`X5mVz-w8nH+kD5EtM8AYw zL~MUn*HZejdzfUVS<CejupSXMy+QJ#MPiI+U*IQLV61Q|S!x++YKdd*0l8<rQOB<_ z;1l&9{pI!RJj1@ex}^)&C?>`ZT2dyYj!6KfmeT+_Px_i88b<@7lNuzowbg*^INg>k zBojsAAawvI>6_Ka3mDlC*(p$mP=z|OK&$dN7>}s`$7bW!y&cGoj@K{DZMts%p`F>@ z*bEq#d*3wlm+1VdLBif`#H<6@tzqzUp;tDqGi~^mTBZFpgX!VtQ6wxobifv04f+Zq z7qv&&6BYCv)R&|7lC@TcW33bz;%LUn$j0Tg=r5dBPl>q~uOWU1DhQH2M*G~{t%}TN zUq8ldb^;`i)Cs;z+bW|K2_8sjk0DXP3p)$!m<X(1o8MI&?&H#i-l9Bvl2IT1ZsTi+ z-Dv%Yy_uy3_q4)JbHdKgpQxrV78Wh>{@%8%6;z1mUCnILgW0r^bWyA-`nu_jF3|8+ zJ{X0izCWp*+c$i39iPOeP5ltaS^F+{FunduDpR#AXf5|$Sa63)Bb_hv{$azn)M?sZ z3p8zVp=NCOmby#(YeA+>rOZnmrTw*F)21xur7qI`T8L>=67y2$Xn)OU+7!jS)GgXy z3pH(`Rkj<xr4G^l8V;QPGdhS3-%?j-f6ZjtM2qjR=h235sUNhPe)`^cZ{wx@9lrtW z%MV0}{sVm!mnWB*Y2zeB%?<Og65^OOlIjWH<81br?5xOUj<is2V=O&kqBU)_A(K=W z%#?(0j=@Iali=QgKM_y5%hj}T7eL;myG!Ta0kUBkTLn&iVUha~PUL2V@pELDDqQ!O z)*ESI1<Pm;bQw^r*4}WH3UqBNjV@pjMO>n?S}!qMudgfFI1cI3djyAop}zR!kp>tQ zd$V;f+xq;o9{gf)t!ZNrD5&3ml{iD_9+WH|M)n7E6h!t<AftW|5=2J2)2GgkDq&^u zAJ_e}T0J|qvd(2aD0S2{NOt)b)o3>1QLjAEs$d7YgLF12z>0b<m~qeocvZ-Zn<=2g znBnne>Nh%mi@vf)#;9q33X%>p{va~Gj#-mn)3Y5$JZJ9-)+%~5w8k;4Dxi&a*P_PZ z?1;FIk*t=XcCu83uv<QZC_A=-8CG5$&*6^pPA&jn9zoblFAOXGqIEIYdnggQkyKrV zE>oASE6|nbN_7>w@i>=uvTmAgwyp-&yG6Psx@EeRx^=o{om=P8J*InHw?+4y?giae z-8S8J-A-MbZnv&ocSv_kcT)GIu0wZLcV2f@r`Lz*BlISHtUg|!pikB3=?nG6`cnNw z{Z#!N{XBh*ev!UG-=x1szfRwx_v#<fKdFCC|GfSc{j2)d^>6Ci^n3OD^!xRP^vCq4 z^qu+(`Y!!7eP}>fKw>~jz^H({fZ~9X0DHj1fT;m917-(Q2h;`B2P_G=D_}!FbHD=u z-hf8~9t(Ij;Q4@;1GWXc9k4rKf5689M*~g<oC-J_a53OYfZh;fh%qD@G7Oo90z;vp z#87G&Z<t}2ZJ1-IHY_u&G^{q<W$+j_86G!0Yk0}9)v(R5!_aQ{z;Mv;vEi8EOT&4? zMZ;CYHA6^XXrL)DJ}@CLH83r3RA5<PMPOy1GjMX?jKFz;wSo14>jF0fdIBE}+!FX) z;7ft82EHBG7T6xRFK~b0;lLAtoq^W^uLl}}LW9DBqJv_C1_dPqr3GaKWd}_Sni(`N zs4nQPpbbHrf*uWeEa=Igr-NPydO2uo(6*qRL3@Kf2-+WXFz9g5k)TsS7lN(^g#<?g zM+XlIP6|#5&J4~DE)BK^j}LYRR|QWCo)J7JxGwna;B~>x!7agCf}ah3E_iG3j^H<g zcL(naJ{0_E@Uh_Y!Ck>ugRcdLhQx#<g`|ZPhE#@344E7<HDpG}%#fOpWg)9W?hf&U zctf^?JRPz<<js&>A$vpih3pSG6mlfwL`Y}InUJoKAfw3`YfLt#7}Jay#yn%0(Qce- zoMxPDoM)^y)*DwEn~hHypEf>k+-iK=xYM}H_<`|=@u=~HvBP-Qc+q&p7!(>3ni!fA zni`rJnjKmYS`q3DtqPqSIwN#;Xm#k4(3PQgg|>vcLpOy!75ZH0OQBms+e1GMJsH{= zdN%Z8Xjka9(3pNn{gV4x`xW;q?dR+_vtLcW+J1}rHS}xhcTc}{{WkP#>F4S9Xurq% zJ=yQ+elPWVx!?AFZ})5Kx4++~{l4sXs^6J@=lfmgX9$Z9iw#Q%O9{&e8x>X-Ha=`> z*vznbVRc~*VfTc&!@OaShCLbfRM_ibJHmE_eGs-k>}c4Du#T{cVOPUK!o$L&!&Aev z!>!@=@Hyet;WgpQ!dHji72X`~4u2&4vG6V7+rqbp?+AZ0ygmG6_?O|G;pfA<!mozw zBMcFyh?t0^h~$XOh*1%x5oHmRBW6U@N8BB;A)+PXfe258H{!X7mm^+}csrs!VsFI0 zh(i&FBaTFT8F4D&Ld3O*>k*-mgCY|nlOxk2vm*;4OCl#m&WxNLIWKZa<jTmV$onE6 zh};zUSmaZYuSUKexg&B{<iW_pkw+rWM4pYj5*cC&GewvNnNm#|CabB!G~QHYnrxb8 znr)h6T4Y*cT4#F9^sMPQ(+j4prfsI}rZ-IoO@~aMnmSBpO;=6VOok{^R8mxORBBXa zRB=>kR9V#2sQReYQFlk(6V(#+K-42qk49~YdM@hus8^z1je0YxEoyJnsi^Z&7ox63 z1x1HN$3~|`kBTmiu8bZZJv+KOx;DB#x*>W)baS*f`l;w=qo0p{A^PR$UD3Ov4@Q3+ zeJc8F^u_3_(GmR<`zQ5J>7UU*v%j@}VSju7@%^XuukOFH|LXpC_rI_Irv8ujf2IGn z{@eTS=)bdnTmOCi5B5LS|62c$n24D8n6#KtF@-S|F_kgSn8`6SW9G#yim8uT7IRO` zhL{IpJTZ^NJQ}kl=INMMV&06|6>~V|)0ks1oiS%(F2r1kxgL`+AbCLcfV=@E11bkp z4VXP($$*9dD+e?U@D6x#z|#Ys9q{Ua*9W{k;DZ5&2b>&mYCuqISZs9cpxC6?)Yy#J z%-F)%(pY<JMXWQnI<_u$QS6e~`(oF{Hpgy?eI)kr*r#H*$G#cc7P~ukU+l-RU9lkp zLkF4$#te)d7(Xy!VCulUfyDz$2UZT8JaERq`hm*^HVkYU_~^jL2R=RUrGc*u+&=K_ zfx8CoA9!fsrvr}+JTdUgft>@-4D1?sWnkza)1Z_=X@l|x*$2%VR6FRdLH7*u4ti|R zQ-hu!^!%W0gLVwsIcV>o4+b3`bYf7)pbLX84!S-lBrYZ{F|Hu4Fs>x7BF-6C6*nVp zQQXS7yW;MPTNl?7w<+$axGixn#BGh+7Plj=Ev`N8VBE)XpT-@F`!cRG?qb}vxY+oF zcx!xKd}X{dero)j_`Bmb#6KGUc>I&`&&9tK|8o4R@!R9u<M+oOi9Zv6E#5FVXmIr4 zL4%VArwkr7ID2rx;IhG0gQpIzAG~DnJ%jHX{J>!M;713)F!<%cTL-^7c*o$qgZB?U zJow|mCkI~`e0A{k!9fWr38@L$3D$(dgpve%!uW*A2{RIAC)6b@Nm!k*E}=Q$k%TP? zFC^?t*qv}N;p2o)6V4`dC4>%%84^DvZAj*jQA6^Eln$vJGI7Y{Av1=o9<pJGXNY&m zlS7^x^8AqPLtY=UcgTq$7lvFJ5}KHhn4FlBSddtpSe9r{oR~N*ab99=VtwMu#HPf1 z67NfVAkm%pSmKk3PbWT~_(I~g#McvdCw`oGB=JPz#l$O#`k^61!-mET9W*p`Xy(xD zp`}BeL#u{P9=dGk%AxL|n}$9%^x2_XhrT(qZRqZy?L$8pdUWW?p=XD74ZSv0pA?Z~ zN=is7PI4wqOq!asD5)vwo}`wfN0J^-dNOHC((_5LByCT6GwD#$iKJ6Wok<sxt|vvC z6U>R`G;@Y|lsV5l-dts#YOXfdn(NH<=DW=Ince1R%`cl@HSaL*GVeB@G@mk`F`qSG zHD5PJB*!EdB-@jn$&-_3C(lW)PF|gSUvf+GW66&vKb!nY^0wsd$!*E)$sZ>lP5v^u zBl&#t#pJ8WhGC(@Ov4g}B@as-mO0Eita#YOVUvf|4qG&A^{}R4>xQ)qdtlfj!?p~2 zdf0QrULW@Mup`4x4Eu7}nPFYS3@M>0VJT@T87bK*c_{@cl_^tGrlrhIsZCju(wwp> z<*}3(QnseNnzA!xcgo(B!zo8oPNtkqxsY-tCCCzH8DxpKWLQcqc1wk&%2I7vWLaXl z+j5^}ou$R{l;v5=E0*n+H!Zs@A6WKTKDK;nIchm(xoGLKT(#&^LsDZ><5Sa8t*ND{ z6{!<bC#SAX-H_@{eKhs))Get`r@ox}YU<mm`%?F(ewunBwJY^XYS8eo;iloS!_$Um z3@;d7GQ4c~#NpG1&mLYkyncAY@Oy@D7~VX5)9|N;KRtZw@NL6)4c|NbgW-pVA02*n z_{HIa(&Ez!(hAe6(x#=&NUKg;lC~^ub=qBN>(U-edn#>9+6!r~q-{&vk=B;BJMCcF z$+WX+hV+p1i1e8Bg!H8J<aBF#X?j_@Gkt3Mob-9=HR+4eo6<L=Kc4<{`kU!*r?;ga zPX9FhNcyq#GwEIFhK!($=#1oyl#H^B@fq_n>N4sx8Zw$Pnlm2A*p%^9#<LkOWW1cQ zGh<iA;f#+nPG)puoXNP5p&t=5B5_3Oi0l!QN6Z*eJ)&;Jk`c>BtRB%k!ac$>;_(q% zM(h~z=7`-R_Ki3?;^c_V5$8u-9TAh6mTAq*%Ph?-%bb`wIdev4ede;vhRl01y_t_^ zKAHJk=JS~^Wxk!cFY{DpXXb^>E1B0aLr0oM4jP#<GJ9mf$l{Uqkuyim9$7!~u8|u? zJ}~mpkx!4@I&#~{*GGOZa{tI9BTtMxIkIEq*^$>rhKx!al{BhkRK+OgsH#ylqv}Sj z9OWLhWz@5yUK+J+)b>%kN41YSH0szWeU>3BBr75-J}W6JHEUE>URGgNaaLK@%&a+C z4Ow?*t;=f3dNk|ttSwp3Wj&wuYS!ynZCSgr_GKN)I+fL#6_g#C9hM!PotB-EZO^XE zo|s*gJvDn~c0+bk_I=qKvYWG?&we?3TlTK({n-bzk7OUsK9zkY`(pN$Y<*5dPD)Nj zPGL?-&WxPdIdgIr<*dxPJLkTfmYhd&9?N+y=cSw-IXiROb3Vv9nDcSYv79e+&gNXr zxt3$FhFasT$<{RMC~L8`!dhvaXq{)Ru`aSMv#z$Tvp!;d()zUZCF`r!UDkH%Ve1j= z8EcpIx-~R6Hg`~NVs1umLGJ9_dAYT@OL7}>n{w~Uy(ib3`(*CZxi92y&E1y!dhXub z4|4bC9?b2?J(GJO_eyR^UTR)uUUptVo;`1T-kiMZyhV9S@>b{FowqKpIq%uL=km7Z z?Z|7(`ylU7UT5C<ylZ*-d{cf*etdpHeqnxP{*3&Y`L+4=`OES*<a_cT$$vb5OaAlu zujId(zc>F-{)zna`PcJ93kDS=7K|#$D<~<j7fdavD`+TKS#VduJq7m_Y$)&+Y$|xN z;HiRV3tlgHyI^O*u7bk_M+;6BoGl0%9Wpw4bjoP!=z`IOqf16tjh;Mu+UVJ%Yep{_ zy==5+^rq2UN53+9$LKdl?;Cw^^vTg3qq|1y3k`)Kg$adag_VWQ!pVj63Tq0R3fC2S z3!f`|sqp2(y@iJhj}@LTyinLx7*rHilw6coR8V9u8ecTAXj;+CqUxf$qK2ZCMfVkL zDtfZ$g`(Gsb{Fj}+Fx|I=;NZJMJI|*7F{pW7bg~{6sHzv6lWKg7Tb%fisuwBDZab- zzT)O$Pw^wgj}<>v{A}?H#jg}^D}J+hXYsz`qs3nqcNU*5zFKS;6Eh}uOwyRNF_~km zV<wK7I%dw8+A)j9EE{w8m<Pr@Kjx(|uaDU`=J1#kW4;{IIp)HcYhw&0(Ip8b$t5Wz zqe_ZPDodu7%r2=eSy^&V$%Ybl$x|gympotcLdn*W*GqPk>?--7<Y39iB_~QwmRu~k zUZNixF*bVaps`6~GsYH-tr$Cb?6k3S#@3BpGIr(Ima*=!kB@y}?Dnxc$F`3>IQHn+ zV`I;c?HX$+jVO&TO(;z&O)ec(npav_T2@+7+EBW>w5jy&(tAo<N*^hGymU+H%cZZB zZZCbaw5@b+>Hg9Sr9tCD$C<`Ok4qevGA?6W_PD%p_Hi@E)sCwhch|TL;~p6I?6@7{ z-X6De+^%uE$L$^W@wg-7PK-M>?(Deh<HE`!$_mR$%1X=ZWwXnw%j(J&mEB!-Uzw-u zk+Q92JInT!9V$Co)=}13cE0RdS%NLumTJqiS#4#u3R|UZo~_2V$hOS(fb9|6bGDak zui9R>y=^;UJ7(*&b=j`iLhWJpXnU+Z*`8-Fu$S1&?6d84_9gba?DyCowZCkC-Tt<H zr~L!_Df?Ob1^X3yP<cpse0frNN_j?kc6mklwDK9{bINPVSC`*c-dx^N?k<0%{PFTF z<=e}5mw!-xsQhU8$@25%Ar+>Iq>9vvw2Hin!iwUG$rUpz>MJ}I-ik*np09YR;+2Z+ z6>nFxSM0AiQE{rGv*Jv}`HCwQp^h-eAV-QL!%^ZWb5uGeI;J|NIc7WR91V_U$0o<K zj^`aOJGMIBcI<TQb$skN;<)0t>IkZgu8gV7th83zE1i|oDrZ#IRNhs2U*)>WO_k48 zZmoQ!^3BTjO5F{1WTJTw<g|N4lTDT80+4H^Kg<{B=Z`z+Q1S7R&zJ-LwO^ze$AaN_ zFw8Qyhf!Qph!$=k{RLna`iw|pI&K$}A8sUcxat|{v&9MN<0Dt#H1kN~ZDhZN?N0X- z{K)ZX5^OE<iz=jJbEW#42hZlNJ815@1Di$#oa=MyI%dM(;+%C|R&B$wWpq4I*7AnN zx~%b&W{koP$hAv!S*z-n)@0Q!#^lzTWp$j*@4Wci(>j1z>D8dEJO+}7yw^1o5P$YR zX|HRV4@SId9nHh(3nz1PUw9#Knp572D>+t=aIM6T@Ej;8$+3Eb>pcAWiswgu@Rfe> zwSI87AN&zN_!d7n)!)AO+~Eh`?FT>P2S4fu_cwR^njiZ9kZ)gn(ypa_;iLTEMSgGx za4N_7!C(MRv~fCno$wVL7jq&P`-x|@AN<FD@C|<O2mRo>6{{NVsJUY)&hVnC7x3br zo%}^dchPionhY;yzhkz#?|yvcq>A$D+M1>8XfjM|XF;nM;yACyIy%yeonCfl&C;g2 zYHX=aQSqtw{wC{-{jB88qofJ^Rg))8XA}K>v+J9dRo_wH$hhq}t-gDvye|;n*vjX} zq<&&a+Api;Ib}G63|U7%$VI^C`4c}pD!LV{__D9&dQsi-x>f98G!iElg|y;;FB9O~ zaq%?(V%|TiFT>csIv<DX4)o~E<#C+eA(+|Vo3B&CaWWgwGeLhR$F=l7ljvzakD#wX zJt0T&$a4b4*_VV<`w;XeBzl^EB=Cz8F3*89QUq{xk>~i)#>M35BGae)!3+H06C_-Y zf3Aen`&;mNpM=YEdgXnn<T;=J!Re_?WcjyqT*z5;BJvz~xm+$u>B@7A!(dt@M~`LP z><2IKgHP~-SNp*m{ormtxV-<B%;z>g^kVOFZN4f<h;W3<bI9en@$q;j%1fRbFVCs= zO7X~ZQ1?i<Jm>SMgv<3`9IHY6BueR~(RdDyaJl|Zm2i0u@EQr1=^vJGdCkj*e(*0P zoW>YJ4w3x*LHw8{{Ff3g(|;i0ayvaF;c~kZd)-s~GQAo0QgVdL^rQUXWBlNgB|HUj ziF{Q{xZECp<Og3R;btkGM<iV4|49j#`TwPa%l+*>3Aae`ACvG@2{#zwfg|}0$4}&| zgyX*cfr#L26206%=xH(~9K|E^W0r84pD_|H^D|GvWjWs^;WD2ONq8F47W_Xe;c|P~ z!*OlC4oLKJzW(S352sARQGVrekC$+{z2r!^oUf@8F3(Y4;|G6I!sYmn`oV)KGjPPG z9RCOjm*r!Za5-O-BwS8+sf5ervfdBAMZ)ED7fS6~=F?2f!x8`d70vw9*?%|Q%Kb|< zxcDxinOWpSJYt;ta~1aCVw}t2TfUePlKAD>^2KB0cW-bxhzHs+yuZ2e2ZpI3W=ZXn z(&644&W*pUNmr!LUoXPzcW(U6hPNUn;)~?n!%?A=(`4Ap!0x|d+*0_QZb-f3$`5+i z$&P5riEFuZ&mQo<M4>#9!9Hkba!kv=nTJ282`}U?;2+?IWNH%tzouuZH*2_`ii5(6 z@HD0%NACbWG+}=67sWGPBLIFC`4%wwwY<}_H9UMPkDQ8wx(;pn)a~_^eo-<Wz&)x- zP~)Y2*l<R&m>F-r;XZ5yIr-|;`0sOmpj3x!j4K=ZxG+pd{t7cjO9?qmf0%IC7)HCQ z?NaA5{+d9mI(vxU)6))unL8KKGwZhCo_?LNr+<p(`FxFkg~q>L<KL|D+cfDvqj?^s zN&gp`=g(-Kn>GGlXyR|xgkP_Do}&qG)A*-o{PQ*b6&n9~jeoPoKVOsn0S$kxn&(qA z{sS8Sajjny-!C-juh7t+)6j3$JlARbQ5wHl<9|lu&(ZirJ@j*3plO<Q8viPdf1$>| zNaJ6u@z-no%QgNVY5c1-{sxVIiN=q2bdUDasPV7R_*ZKD%QSwin93*pz&^=AiV*F| z>RhwY4a>*D%k(`?wD*zwKjHn3<+%&$YAH$FEmoB(q;J95^aN_OFuo)DxLyU9>g5g9 zcR+<zyO`(+SXEccj+Lj=<*7GavjPgPTzXnLYYOsL?VL2d@&}XbE`rA2mb;8JU-CT# z>EY)pAwgTcx?$;^b=51er$Z02Zn(N;6+2e2JH*OfexJe#spa<2Kmq8}UtQa<96C4B z-hp#c*9l6Wu1<hL2ExC(e%XqpzF^Xp7ev6lJtavGR7DjsS`V`TPm(sUK<xEUCqgAC zP_YaCvK95YcPuBA7r9U_(zRRf#<sPnS+ywFytL7bYo6|ongwPl+B@nOVJ{7HV?%>^ zX~XhGI?_JYEim6z-?-RZcW2#lGuUfd+O%4S0yp1rxB16)s~U85%WE4J)GuFT#tXDz zl@7u|qUMI>W>lNT`dTxObU{sHjjn$Ail#<0EFVa9K~rtr0w7Rf)-NzGty{jRak0+} z#uwG;h_J@I8b!WJ_0%t~Z>$IXj}dZtgIP!vx2Oe8jr9%7bt}yEt62)F!j<x}tY-P$ z=K4lb8G>T9&WAPDEnCsBs%F*Q<~wUv)svbQeZvhbUH;D=p`n%-u8pNe?ud+<0fW@| zu$hr;ymE6kBW4F;(#pDH^=jCK8p!jXx!Dm|>&tdTEcbQ3DUFr%QWv<H57bD1N%%9| zZ<YpChF)J16g$Pw6)vjR_iw=5;=Wv8XOR${f$a#=GX&{}NcS%sD+73P@soyL;xV%a z_JvbBTHUy+dSTP@T2=c^K6JgSsq)aaF-se27F4TLsQ4;I)HH@{SVe&WcT=i<R4vts zoRZk+Cv*VfQ-d%XXA3+T_vC2Y%SFxn>Fi&{D6F6##c@F|%BRQ=J*%5|Mv{|DM~v+S zF8CJd3Y_FlPQ)+pLKS9mrdxqmaeNlP3Va^-FV^6AzcRN*ga4TOAJpI*x&H|bzKQ!^ z)ZqWZ{cmXS7r1|q2LE^N|3riD<o?qd`~&X4tieCxej^D0PRQY?>ea<*@N*nz>*OT* zZ#Yi2GIAmwwjv3BMS~CF{#hD4kNX#E@JZaiMuXqZ{SRvJ2JU}CgRkfQ7d1HTqe<=! z4NmLv$nDYKJGuW84ZffIPit^tL%FQM&vC!7nUI(2e<*Kcar`Q9VM7r%6M^S(x*`p| z*k4G|;7;zJrNO6g|6&a;=+<cPh1~z524BwoZ)os)xPOlZ|0nMMM1%he_n+3_+qnO- z2H(m3;_F1n=R=Oi@lmwEJ2{@N!LM<=NP~xSzoNkhbN?(2p2q!)HMlsVWQ_(FXOujs z!6$M56B>LT_rIvYS8~4@b%`8hhw}WN<;;kP;`67g6Yo8dp7tH*Pgf^&zMFYKdZ$o2 zM(&T}*G!J{Y;shmThH%WH4n@_3iW0<E`8~mTIq!aH;cc7D1C}bn?C942-75^vr(jd zI4wLHG?XtI7syV8e^?W-C_8bjL?F7)kptuYL;ix~Dl6Yp5lνfc8S5#gp&ykKRp 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%0A~q#$@GM20wp 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%0AR2Ef`Q!z?d*Ej15_d}dnYkQ_BS_;VRZp6VU<MYw z%lk7V(OBfeJ1A0qdxLdLXYOL}McUVr8^)rO5XGVUwql^o`*Pk%b9pqe)Jn-re74|t z0DB#0?{C^04djOWhBM8bx<;A*DTfzp%39W7Hs!}(<+S-UzJt&}aIC8Tg_}2Hi%(hG zN0;^vh_U^I*RiJBd%OB6gc_-qnRwZ!*F-J~@%G`o`FlEjtD+Vue=A_=HkUu(NLh}W zGM1^-AY}3Fy{Tq9(<kyBCF5r-DkBzjj?ex*#)gL~@#O%oMkh)C@pcmjsLV{-3sYT` zU#Pt?H5haG6bdTkFv?5*;PHn&j3PFdH*$!}W@wIrV1nRu;+>*avh<<+MY&K)s5tD; zQ*`JKD64r%p!)7I7FAM|5{4w<lLnzNwm+yDQeYMfDs^{af)d0#Yc;}QssOGgbhB}Y zGn`-w`4d*`X;}Z2zG@}}j07Q-6U`gw*rI48)_(ZB#AFhmx@Z6l*1D=Qe)Js+-7d;L zHtaH;3oIR2Z7J;%YpaT}{psYA_dWYciGDH;34NN)<#4)R%2!8*iPSi<$36~)MvZ2q zg@%=I<C7~%e)PBDG*aMGLRbQ!#W*$Sj0ZvoioFFF1W)8pW6q6zhoEl$D0?}Kv89;I zm|Ia!x3}zy@bMul6VGCc@MBHZVvF}jrV~Yk_KkxE>ZoS)o#d36zG+fn8KZu%e?V_h zI7f?2WARHFVJ!NcRVlm&L(w+Ra>^+>E9)r2FNh|(@T^DPF?$o#X;xp@r_9nPlC&Iy z6s+@Mf$*y0RF;ghjM_RvilO#h0(yG{{3!;pN1zR&WBO2`)l}P;h<+Vr8TDJx$68o# zv~TwOIyhsu(9`R24{^ROh`h&xkjxACaq2FO^fgT;)ujZOeSHSp;TiAiPl{E^jxb9> zOQsM%x?!e^AnZOCeCmcVVzW(OU%!Q(QNI2Qy!!f@%Dnsf2F|Zz_6?d_H_|t>u-*XQ z0?(-pd_yCBgUr5xMA6sRpF;HY^@+H{5JSO*j*X}Aor3X-bMPAA;ME_zB7IkSc=h#k z%MC{s+4>;+I!N|*^bh^9<5*6T{XgD2k&`t(*_zxb*P0XDDcI2Izp#};e-8x`?`mii zqV+xeYKGMfvNocB;3zv7RxjxJFZu^AbTF_wKv*}9XHzc#!^&B+(i$2Exm!H+&mE#c z)ihpgmChZGTI_22k<-r=Vy@vj_&6OrTL+)5gX5dOyLeIm-QjC=aCD#U==T!N_M~8D zMTWHvdVWLy?�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%0ATXE!dB$WJyhwW<-9n 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%0DLdVlxQ<a)9<f<EDs<?5ScxkG9LT;J=?0N2WU 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�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/{=83pCCfaE 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 FlR2GFUI!7v|MB)xo|bBs>5 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�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%0DF}?pqvvZ^1-KU8^#QKu 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�*GccoflhZ9;4D)=>GXK6(kVZp!cl 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 K<7MbwhW-yx(ilhp literal 0 HcmV?d00001 diff --git a/lib/linux/libfreetype.a b/lib/linux/libfreetype.a new file mode 100644 index 0000000000000000000000000000000000000000..d15616bb7e1eacc22fb5f509c1983faa7ce125ec GIT binary patch literal 886974 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%0D)!QxVARyQ7(fJ48DL(SXv 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 c&27)<a^@Tvl8n7VtcFk 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 Gss9J`Wlzcg literal 0 HcmV?d00001 diff --git a/lib/linux/libjemalloc.a b/lib/linux/libjemalloc.a new file mode 100644 index 0000000000000000000000000000000000000000..094180b6f03b003eb6b2ed018a4793cdcd70301b GIT binary patch literal 14047800 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%0Dh|ipRpR<&}0o;C0el& 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� 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%0Db$k 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Ð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 TM|N78-0J&#d-(7qTv$LWFj|;Fd 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≻EOUFB(j>>Z`EoT1% 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%0D>H!ht4ur(sr~B7xhRkJtIjOA_N$La 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%0D%1&UD_*`tv>T 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Ξ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≤<Xn=(fqAwBz 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%0D_8E@ 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%0AGPwfvs1N&p$ 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 jM&iuf-5ME~2w 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%0DMdMcf61EQ25e;u=7HAg&Y9yg^y1T@VD?J)c~SI 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ŋ>SE;Ny0<RjbvStN%l&l|mCn3cgvn9L~)E;6SU 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%0Dg5G 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 z%0D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�m%qf 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π4#V-q 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%0DEyh`$p8Jq+j0N%Vc}&C!S7?jPw-sd)57;J0hlU$ zEhnlk2rtSG&g%C1^MU>FyGZ0i2f;Z__vAxdCvq9@@g;pBzgFy|@cjHH;omif{Aa>f zRzbaeDSYdT;CqD6V#hon{L$NB|A_G1oN)ajd@B3TS>atz09+7Wts(3Oku9$t7I5B@ zOL$5S$mbXS5<!~q_t+6i3jg#h?35Fp@g+c2;TLm5zK-y7ya6^4Uh+-IUnl&jDc~)H zpO}q`;c)5I!-Q%OyhG&Qm;`w~PVnTv;6jIwPdq*}5q|rMolzYBhY0_Z>y!tCpJBfm zBm6m@e;zNqP7i=d!Ygqe`@Hb-Z=qZ|4wqPt{OdS8^$ZN?IJ}L|0d*Yy^K;nIaX5?f z79EG*cmw&Vh`_7QM<>Egb>R=x1=szY^B0j%-o`vTy|^#kRP59(1#qMA+n2(Qj?cf( zg5TRj{`GPI9fWV^b2r`RIq?PT^c4Ax9l>>;^A;bdYJ08v0QuDRs@fZNw7qh2eAf1= z!yC1>*ND8ZqwTfgS!7(>>wG5UwY|Q{0eNk&B}X8y?X{cjsO@!{&*`+iHWh*$ZLis* z;8)wL5g%x4dyW1U^4eba^M<eO^+y5t)%M!=8~7lY^ZH?^6u91JW9|WGc0KtGZ1-_u z=Qe&{iI<Zne>NF{9JV~(g3nWQzIydlke?;?KbZ|MU-;RV(cfMbzN0eozf}02ye?J< z|B%<$YT-NCE;^5`w;Fyw68Yh81AHbt_IBiFhw%G2PunH@bzVT<32(&bn?DNAm4y8K zEc}z|@Owu1z?=Z*gttxs_*eL^TxZ3@jn|Gx_<c7P!{hJsK3G8H$8#N2RCva_a9CP+ z4^HH{9QEus;rzdb$j{^f4IXFl<nQGDsIkbe<^6@zO;5fS+v^sQZ@_($+k`hPhI+nJ z`1xZ1U4<{<hF>q?$9cmaAiNnj6o(6M$ot4B;Xm=hdQ^CGu8*D)KJGcxzmDg_i-YTU z?#_pFJWuC+M91@Ym`|GX>UrH4$cT>T$DT)h>UiG1Jo2OC`CZq-j*jQ`tAguzKK@bI zX^Ozh&mXzqSI6^jn?R7uLQnn;I!qKh_wvHkb?D>V7v=5Ev*Yell@>c!+Nat&9)jw3 z7S92y-y<(WUj07167{2gi}QSf*8f*KQ9rs*b#fbcUCDngW>EW8{{@iOepQ>}x%R7T ziovk<tL2Zuj`piGj$_)dj(iPyE!Pn4_iDd-p6#Xmsu(w5v|kP91YG-7ZO%WnUv1@e z(NgMd-EU|YohPhh#p^tw*c=$pc|z}eu%q*YX9lAl`iS4>PJ<5;J}nL4e&M(A{OTy- zd%2#{dBW7vus=cMpXP%XohQ`f1~-Q@?|QkL<NqwNGoSO2`NGe<51{je)vSl5B43#I zO`Run;`~$R2`{Zjxpbb;s3q!O=Lr)Yfc$6Tx6zN_JA@y+6?~WQAzX-axbf<zXbSx5 zJYh2LBge!}aaO=7;k{bH?^)sZJpu5y@Wpu`AAox=Kf}3B)aQfo_d{Oi5Am#L7Q?gC zDnH~4i~Sw!2)f=M`Yr@@y<h5IaNZs~`!8|+?B3tp{naPi!>_LQ+p#`%y<dpyWnJ$- z#15tF{cZbTU)TFZ+koFK<xS6tir4jid7cx{_5OJdv_r(sa*o@&-fyr7g1X)>%=1yY z-XF3Z`PB7(f6j|^z5m`&$j_Gi%qt4c+kn?D4Y;m<UF4tTgN3(*ui=e?({#^HJ+8~v ziF_yl_4$eLTMvPAn&R2vc2vwxm1laN@aY?1=SSgNXQ8~@=JV`d{2PMY=J5Cd-WSe^ zou)eg*sVSJCA_e>&Fb;N+~4E&kjEE3hJ5le@OYWukxw>{$D1{TJco6UzuOh^+|KrR z`K^$zfsZ}@<j3H3g{QDwJg)7@_nibmZi9M!B>VX-VrOt$)DMg8$yZ=Myi??#dKQ4i z@Z_gd1?RDEkKg<Y><<t-Il2EiTzKcn0HcJz%;(yV3UBcWz*E9U1p$~{FF#lFzCTms zr{4j<<2#=GQ)R$k75QfD=x+#b6GVHxExgk^sE7B3w>${I;mPw`XBhaWB7cYtvP1Yt zuE%!^&oc{txqa-}zy2EVpG5wty#ObLZ{q!e-QBbE69=BZMgA{lFqZY<-Y-UOg<wwM zZ?Qil37^MxeIem<uSWh$2>*T;cv<23PNH3^2+w*E`Kc|uc3#-IR(R$*$Tt<<k{vu# z_+s8jTL~{S5_WDE-hdT<m+%RPk)IyIH!KJ5BfK*Qq`|@qu0%bI6kdx1@Mz&%8X%uf z2w%s2vx&k-b6;_q@Z-EtUKGBW7w7`vcd>uICVX{H<Y&3?IS+!b5}xrR%KM@4{ntbO zW8w8bfc#eBU$B3EEqw1Qkl!nO$$Q{G2)~^V(2fc3$93yz;jQ09KK~T{{;g>Di^A7% zq8%54fA_j;F%@?52yeo9REqFb+&3s9{Ii*`TT1vVl&>JXEXV)q!f)<`{9Ge^CfD7K zgx|>eY$m*HBJA8Od~6f&w!#m63En~YQr1Hk;gyy{{$AmoIf3mjeEeF}&oJR%R{(!V z__|GK$8o|3b7KCa@PD{KnIgRMcG#IAd^k54<_a&)1>Y;eV|kq}75+gY^1o7eLrxst z6Mliu3pNPvkdFG?B7D?T*xxR^VoQ{3m+)b0VQ0VaH#q-4EIe)t<WC5{@H+hdCVUAe zR(}bvRRwketXKE?3UZyEAUuWh)qKJSbHSP_ywwTVFD`sN*P&Ml|AzDV%EEU|ft^~y zGh2bz7rv4C%n-ifXVlM)!aE)Tzg75)T=2CQ-s4focM|^FKIEsn@Xzak-zWU~<FGSG zc=cD%PeuqY%lpD3!b|pp{l|sR<vG}Agg0LU`R9cHas&L%5}vXi`Fu%ugHOR13opXw zN6Un7>j3-j3jZSo`T0P2wSBPvk?>f~b3PY-&DXI1mGFAs!_K$DcW@j&D7<Ay*f}cv zj~`&?l<<k1pZp<w3ETZ2;paYroe(#g-Ro`!%bQzx*9Rb<EWA1Iv+nPfxpsDNqb^<K z8}WHWdEpgLqrBCGx8+9B)xv+^{%}L#!`s8o^};7q2fs=9+l5iCHo`yr75yPgcw>&+ zorT|Z9P;-FpH>9CpYR(Vf#0FR2Y-ZoJ}5l69r9y^pJw|`5I&mEl_m=x#_Mjn@J1X@ z<_N#;Eb_ll_>kAZmk580`&280-_Gwhtr7laWt3~Z@MU}szFGKZCE$0P@N0QL`bPLV z?zem={B(KvJtVv-H#Uw7KUW0uzY0Ig@#nno;a?!1F*%^;UKi^>MmmS^AwAIUd4-oO z4f%q?x3QlW6aH3F$d?g5;!E&K!e8Kgucq+(N+JLCgwMGdyovBfe+0ilc<$R#u9m{P z6@+{{;S25t?<oB3$HBV^-^Y1!Z{Y{`qr3x!7nlw^_Y0r23i*6k_$M5P9}~Wp4{Dwk zKED+FP8Gg;0qnmZ{N8_&pZUU@aKmzu@NrysyeYhPChWf>yzeuxzgBpgRp6V1-}*lI zXTtlA0RK|>Y0l^N2yeg*#RI}?okBj32><w7@Lz;KQVsQaR`@f(F&Bh4=6R|huY32p z8^QHmF5zn%qFnif|Hg4UP56CDa9mRO>;>Q)2E6^8x4D7G+lI&c@Ohs;Kb^7&`Qc^k z$-lb+_Di$eZn=J0fqLWZ-IK4e9D>}Y^mt9~|LAki8+opk(_c@%Xi{YRyLcZ_`(Lex zU$uWd*I#Nsna>l8OS#T+94I6FZtgQz6n^n{<Wrxk9%Z}hbJcuJV4#86$$AK&sqpKT z!v2lI2dzYVwG=+4H@H4my~uraeXjcJUdVSAJBK!a_Y{7T`(S;9KgjWFknqNv0qz&x zc^3euYhJs*`5XL>6ZtO=0Zb5{%ne<Au3DVqus&D)lN-h_ik<Czz{1PP%g-b}sCiA~ zXLH`g?(WIw<$eN>Q+xb|W+>N(Vy6}7pS(SL@<V<=yKfcw*SYckweY?Pkl!o(&OGq@ zgYcKygL50g^Bc$e!fBB|!-o1(c*p$kdr^1_ALzy5W6%Cg)!;Xe@IqB#AVv6vN&rQK zFKhr%N_e%Juv0;JYo4Rvbll6&PaIFUP3iGoOJJvw*op0o{5KQ+0QX7w_|UWSZfOYe z@r=j!^Lpp9(Bru_!fzL`AJ6;ay~1bldhaj%Tt3(tCOkMF{2}4hj)0F7{uu8!PYVCJ z4&<i@-*_wPXNK?xc)yq{{Naxv&t<<?52s!N=kVw8s=Tjpd(q>mJQw$#*w0-7b~Xq< z&gWBGgu8!NmD_Nh{bhXq%f}KP|AF)E{bJ_@K9J;gzbF52Q`FlDk)O|fY!1_&{O>)H z|Gz}O7H>EKeC)}e;`Nvy{3s3N6W){Zslt=_pt!j3;oSGTO85nyXR9o{&Q^e0!hdJK zsxQ3yuP7+DZ@hBd^ezN%6!~ts0od(4`CQB(hdGa*=l!LV*m=7FKzHF!>;||`_#4Xr z1_>{64Eg7@)$=>$Dzy6}BENPWIF}io{Cy8Ykke?7-&q>+&xxI8oR7{D{(BApUQV8! zBiyH5Eb@DI0I+zT{IfezE;fV5Z#)kEf!Ha^{Z(Gxp8TeZ5d2)^H#9`Kz7jtFE7;e0 z=II|Huk*kw{e9T86Jc28&vL&-=Z&4XPo?w5J!9Zk=Z(`jZkNHwUU~m{4?yRQ1>XhN zdE;B$54lF{T-OTq&`9`$jRBeo|M4cs-z<DoQPe|Q<@Et{e)u^jK3zmUksa_};cvbQ zzx{>3%LBs0g!f@T<n7R_w~n1)XPn5_UIFl=@JBeWo+A9_nE*3{Pbmd3SNNeU)Xyuz zuPOk(RQO#@0r)u9%m0c!kZ1FIymn>CZxA~_l?2!#e9BSOgZBSSo}<wITxJgBwLdrJ z_bjwOpZXs8)c(BVJ7h%r^NsAV+Mj2xhrIUZ#51t3>!7~hL%xBOw^SYEzp3zCJlCP? zpssxGrt6>zynb~Z6#EklYd^n^<9289do6F^J%wi!1n47tN>PA8!t?W7>;1xamH-$f zeArk3?f(;>0-qrAiTr-hWZ~}bA5ItkaR$H~;qLDrE);&|PqZVa#a@4Yga^%dS$h11 zjcCU;VrSD**kO0^<jeDd<8smC5A(*mP3#=agdM#uPSCzy7xnW;mcP9u@~QGCxxmuv zXd&(Ebrj@<qSw)lCy{Zzj@Fk4*Xt;b=LGaRYQp)mUPse8kJ9UCHTR43Ix0LHe)T%K ziTmDq9cAQ2z3Fu{kNbpr9lewUdA*Kiazd@w(Zy-Vk6uUTx&NTo(TALn>UDHz2>j}G z)Uyz{UPp`A!Sy<7I1Bw@60+s>!#<oSF}og*-wXL!BEO6i!1=;glz{xJ!iyC{KK1^x z>jenv^)++}<X4NGDjeTF6n>ujY<j%}IltBZ|57>F*Zx0|1=arFjQiNy{}Z^d)BfL` z*PZtNuFoLj+W!l;M1HjY_uB$_?f*|q1aB(!@bF^*+W+UX{<Z%n(|$X#)8uR9r=#$# z%y>891z4ZGg(sB-7%2RP&gduF&kL;qe^})66a!%Ky#Cq#YREq=@_Sg%Q-#0A0h`^< zv$K{P8`^)iq@f<P|4beYuKg#L^D*r|wRwNh{*(3#>}dbF@C!1o{bv}TcWD3Fofq=j ze+F=3sQsrBFCgtdSFJ{VwEsNF_R{`SY#aRQ`1$M}a2-E4u-<h1e3|#zo>24J<)>W$ zI(`=62AGbY58WBLUv*jtJ34;uV8iP8`3&c`6C^(sxnVX*_#uu<I)3(9i~Mj{@yc}v z*E{pYPC0J)>G=7yyI&;o{n?*&{LDqJ<LAnskRKgCAK}KsM`C~Xr|1u#32(@Z?+|_! z_hZ>?UU|E-pL{3s?=41teiXie_tRs-CvaVMO8DuIVdt#yk9nW^TlkdgAs;~C<+CNr zn?v}kY)3vO@#OE>2*W8NfBkmw!ooZAKss*^o}J$O;z(JM&(Hmz%ECKrL%Y-z{=sYD zb%p2SfXD9Z`8~#cMOKH$ziI&k3_RZQEtHGh*W<TxAEUkay_(PaItu@l3t}#tJv$B9 zKXo6tYdQGsCw9`0qP#<d5BeQ^r0}&rfj=TV_5kcZCj8_XfTx64W51dr{GS&ArVFpN z7k+08Kk+vFa#;83;cm`1czJld#oaLQrq~(E8_wIpPw+z5edGK2Kw!PdZ)eBk_NeE# zZWH8xtH^iaITkj*C;!kA2<{R2L);MkUib|gP!GDF+?NX`Zo_%@Z+;v3Ve@!=`YP~0 z#eU~fu>X(n?)+Y45Ne*CG4YVkDg1lRhjpL15yWE(iu`lQaL8>b&;IKrp}^xH9>0t0 zukvCi_7B*pDm*94Ra<x-ZZxvGJ^MAcz%QHA<4gD)u({Z&a}s`U7QUS0QXApjzkocq zGd%kj7eMeXkw0G#`O$spxqLvx$3LE(g50kgAa?HW0Kdb8-}g88gTgED#xh3uQjWt< z2%pdW-e-hY$^|f0_<Qf8Tr-8Y>j*Gc_(F~w3x)UQeeiYRMN<Hl3%@WQ;9cQ&a(>9; z$X<Ou$nklj$nRu6w+OGtc?EAjo}GPtAh=WH^YezeS9m|x&q3i^*)B(fr=A8lDSR9E zy?+y)iw$*N_(JYS#RSnlxlE8~{ug=|{UnF*RS&^HUg0%(fff|r`#9_t6F%;9@G`<% zaDcBQeD`tqtttE<$L)H;H n+Okt;P(dMUrhmTDLiQmcst<(GQc|u|B5%XZo)5Y zNB(;YZ^0YXK;ie+g#G)4m#7B*uyXE`JSP0rgOGn(_!GU5pQ*wJvR}O*y!brG&lg^L zH|#GGzPBRe-xNOnOSH>7!iyDvowdT>;C}cf;VXE9{Y>~Y&a1x^UV#(0J;Lw4ANf2W zyc^eRM}$9c3i7`Qe}Vn#tnh8SAb&x4{rRYeAobkqt^vpMT*CLKqJHuVPvpEJO?bU2 z@LN)NiP_-ggx|FY`Kc=W{MX=hgb$vN{4@~$c|OQrC;Z`S;kSkG_BVmI7XHmy*ttV^ zKaPiY3$MfRyr=NEPhh{V@Fu*^4iWz4Ajm%;{8sLJj1k_P<Mw#r<>#V)CJCST0m}8f z@X4=3ezx#y*neIY{$>m0^L620a=d*@cp}HQ)xsyQgPnE4SGEKHM0hjKqrMQ{<tgNU zr|=&$U}vB3<Q}MpABD#xL;h#st3QSPGs17-1Lt$XE3@7IRbCx_<Ktk@z3xU`4W1~x zEzbuQ5Plcuhed@q--`T~7T$I`ctzpq?}OJ69@>Ze)fFCd5WKPQ4Lo<<T=)v!XKxYS zh8ttI3Gc!Bzf<^&e9+WYc!4g+e=p$|d9GuC@Y9??x!-Sd>pu_Iv!g`*cRn9{RCva6 z)WcK4mvf)|S>buuPi6`q@F48W6Q0x={oz&NKmLsJz9GC$MaaJ`{KsXm|Gx0Kb0EJ_ z_`ydZ|EchYjzE5g@Qa-I?-o9>A?$oFJjmxPKMB8<=hjXNA9X9r`@8U(Jizj|@F3?o zv0N{@?OTrHLr&r4>!Vyr!cTMER7m*u>rt)}!pF@9FDv}b#;{*S_|=@p))s#F8`!y4 z_~`}UO@+_q0wPm*fcrMBgxBJJ-R;6xq@$ki5`JA_`0XJ)k>`c_2p`Xd)L`Ksa9uW1 z_@A67j22$#1?1-m;XPM?PZVD0U+`(dSC>QnUlcx$=WrGX|GX9Kye9m5o;O=AJmCej z?<(O_IKTQ(coz2!J{De*^Np>-&)p6CUkjhgezjNl8w(--gYcU;zda_rD(7{lg_q}s z)1ShJwL$${6yE+1@VFePZ}+-;H3XhV_$IDfQ-pWE3i?Ha|8WoOloH;S_nivDm$P40 z7yjuDsGn<ucjtk`M#9%{e(RohbIWyiDcHGL<crwFt9i8*{_Q)+e+S|J2Ee-r59SBI zSNK@Yi~0*s?uz^j6TWyg>^vmAY<tL$6aELw^`!9S-0+wpybd?mW(Y6$82ru^{vGGN zuLv*02Qo{A=i!FXO5vS39=<317&lfo2%pP&>=xm_vmb63{?iGx<1XP(ah%*QyiaqK z_ptC=Hi4fIzPvi@|0ewDvEY9RKhhO;0z7}=_QSO=LOwzGw9SyuC;U90Tcs*zI~Er{ zo%g}3geP#mQCavo_WxSKFK~mizVI`pkpB$fhi8J{D17}c^xIp7ui$*Iz3__3u+vHS z`9-Lo?!wP<WAZ-X*CxTvAmK-k!OjTb|5gHjMEE&w>^(00rAn~>jPQ0pfj=jF%tzp} zgtzDQ@{;h4?1zhmmw5~IxlH(1osj=`g-?6{em@Z2p3kj565g&V?0hafWg7Tb!pFV~ z``-#L!TbI};VB~_e^mI%wJ6sq;f?Zx{~^37=b8TqfA|OFGn5m4-0QAaYuL#xd@uL4 zl7)ZBalWwdL%c5B-=A~s=ioe~yvXn2{!caGJviQ8Excbh<iDZtH};}D*9(7u8^$*Y zpUL||8{xIv!hV+U%}rsyv+%aO@7yE&tEXY7pYTmXz=sNNcPIFR!VlMl-?745)Pej2 z<-dbZ7Jf7P&vfChaGo<q_&$z%3x(%r|6d~fna0TH3gLSSAwO$`-@tPe>xI`UkAApW z_#y6FZWBI~`)}U}pD+)8zZ2eXA^0KTFLE3^F8n}C<mXr6U#FwI=Y=<24ExT53nSw8 z|9|qrP7Vvgcv1F;yuv@@{G_1psVkvhOn8v<jWWVN<b1o5@RLu#PEFybY9s&kgtwj# z-b8ru6)4vY!sB_Mpr!E8HrQz=d@k3&9fkLA2m9TGpIHswTlhgfHyJ4W3=f9fFT6e1 zxep8fYbomIG2x3|LH?f>UTHV-GgbKT7a{+G@cVd<WxnvbpTO@T;Thk;&YQwp^SS&x z!bh>+t`+_~+kKPp<vhszneg2lSHBdV#QEGF;jQ+d9u5dE#OFsxgwNrA-7mt|@V<Fg z_<JW&4;O^@=Xxrb8}(;DwnNxUZIPc`!uOVgo&3T_ra(ST_>+ymOA7DE{f%<MKj-s~ zs=^1CM*ivu?=%$oX(0SybNIbZc<GDaErhRUep(B!lK}g72tWH3_}#+0vA^{cKKV!F zzpwCJ9G8X&&x35nJRtlZ_Wv=$&n-iK#tT2P2Yiz7W89B@UikNqBcHQ{k6}N2S@`Ui zkWu&VD!Bb8lk42KL_W15^0Qj_d7fWdC;Zd5VgD21OE-dlAw0zP+9~|Cu_)I*;d?o6 z`BC^$-XDJ!epfNrIU~Fq_sP!*uk;|~{}o<fAL=1K4?cJ6Z4&n-5{2)02jwjwycX9% zMTNhX0=uP!=Y9=-D++JM>%E5X2WrD_UE!-aUurD;U9Rh!3tvzK`ME{-*St^NCj7;- z$mgBHCvsfvD!e=Q!Fmaw!+F#I;qAXbeufJ#%K5`6;j?~${G-B8{($;<O8B@}!Jidg ziqBtX3XiXW^3D@J>?+uKRrrnEKYv5`9Xzn}w(voG?)<*+HwM7(M&Y+{o${&h4~sy4 zhwx6^=ie>7JrCM^FMK_p@BAeEx52P~QuxGusE6N$zcmW-e+ys4=diJykGt2`$P<vy zDSZ4iv~QB|y|+QWknkh1;3b6T$wEHM3Llai@>PTvWk0Mfyd~F<*9!lM`?pPnC-eHs z6rRF;s#e15^8D59!dn(VKJOA<IS#ys@Y6hZ(MR}&M<72~_}@JEKT`PQbkzT7;md1* zKOy|##o!Z#cjG?TG~u^%Ui6~y?L23)K=_d=u>YFy*ZDkdx$r?-A-_s^4vvQ(3a{es z{|i5m6ZN)L_zK{duZ71Qhu^)z4_^y~AB6WghW>d>_*@=zJuSRM6WIS#`19Q7yeRxx zjz4j{{@m;C5TB3a5uVl)`AHFe+s)ubgfHekPbuMReusPo;d>gR9;yppkr(_L;hSc{ zP9xz{D?`4S@B@5ad9(11+;40vd_12QcMx9kOVo20;Y~h3e(n|CVin~33!nBc<cA4w z#_{$c;oFa*T;qhd;(Y!|;WzO7#uVYNa^Gf#@J-htKXZle=NAQD5k9UO^0QR<B-Zmv z;d__D{(HhZmWG`T!ju1m{1)NveR{j_4t#FDOZb+rQUCjef6Dd#Vd0Z1!0!p+%Pt_F zzX|VHAM$?*uh0xUkPrUd>+1&Y2PO!=pX>d6!b@?zlPY{)1>~o=@J~v^-&MlzOG17s z3*VOxUQ754USIWvA2<m68N!>CKz?o%zKi>5w+in`JMD#^E{FVd625@*tM0;=@|@Lu z!uxYQJ4pC6o;MpIywf<8>k;9DenfsA7yby>JI@I3wG?)q6W;n;@L9sQ@QZpc3IC!B z>T|L1_*%%%GU0Rnf&9C|@A?7q9|*6@a~B^8|AgnAJ{Ml9D)Rr8@b2W_3O}+8eh&&? z!}-8b;iq1L{ZqmVwm`Z55WbT4yMKiLxdVPfeE#EJca4)^C%5nv&a0D!Kfw86Vc|1* zU8f7bqbTxUUU+B{{8kgbkMo?Xg?H!korc2i;QlR-&v^T;Rpzi<aPRRtzk=r%UaJb~ zhudnN{J!OoFD~-4_*}b;@X_l4DhjXl2JBQ9{sz|<JVxgE9kT?24MhHyez4P2_;EhR zxl#B^o`1Mi_$|DTv={z2zd+MTxVvxOUHFX!P;XlQ?`;R?wt-i!1&t!te-VBWN9%tn z=b2jne>a33t^bc|B7<80wRt^g{g0zxt^cZJkbkZJ3l(5r>%YcT$dA_lRVBe&O1*Vs z|J3id);|QlcZz(i&al%}_}6!U_Y&T&2J8$FUi2K~hYSCM1=4n`!tWDlJ63uU2J|`_ z#qTj`JKoY4ezhGx*ok~<JEqnH*LFOa8(iD*^)=wyj(2|uuI>0>S>(T|)Wd6~kWa0L zzHfnRJ=8x2uJtgQ=Vi4X?yiIUXg$2b`H$Aa7OqdV9`@f1zgiDDKZ;xr-8ueiJxnPJ zd98=j?}BT8zK0pq{=BFO<h4KFHW2yjAocv-g8-d{_d5YQJ%#V)JfV;9AGom8_WF|R zIBl;r_eO575pRNPd#z=M()Oy%deinA`abfn?KS3GaBZ)m%%}F-Pp?OQw7nj<8@#F1 z!{`YB+FtLkfxNa?%AercUXx!zKDE8><$aLH<-GCy){kK)QSwus&)>P-<H@(a750mY zd`ZstN(=ws9RRJ*wXcHL5cxj0z<yof&vL!P$JJhb>i>rPHy8O`z%jQ7FUavk>#c23 zDCoF7_G|F2Vy7q_=(s&)CIofdp3U#g>A3yzGT0v__Fs4gfXAS{@-_)V{wa}vY7@Y- z!Y`}^V75Fvl{=uG=ZXA?J7J&A<H?`68uD+5`~a@k-WGo0B;?;0{@l+18--_n0KcCK z|GgdT>=6F<TF7&F_3~LaANcnopH&Hf$Cy0%!Tf%ujz29whaDY%GQI;>`9s4a%YQKy zT<<R(enYu*yy|)Y`PA`h+bYQGc-5{8?CbS)U)#v}EOHojv|JSn!msAD+#=Y~eAZ!q z(|o#r=SlN9lfUDk`RvC2pyTT2(~ut>S5I<ZSI5;)+9RJ$q2{%3nFZiFuD&q~T*uX< znlPZ_!;%t^*Ku_@2S~jS-ogIaQ}VMj9(MW&Z@LY9knmdEPrhGxmFv-t{~0$pKN%<T zbu(d~w;8W~M!x{TNh05`JM6O=JoyzLLvWVJ$8h|gFML^H_|@^`o5kQuMgFIc;dh1b z&YuIU7XBFb4L%fpq!a9XB>eDQ;GYQ}#~%#XA^Z%#KebDEhmio^39rfh_8*1!9*y!I z6Mof=$j>R^F%uzwR`?R`WB)Du*EE0t%z5n<%ll3a;Xm_2PZZwpIoRR$t7qpN_YVt; zd@}b%OA3F1^F2<pJUf4JK2urbZ{s*zQ}}nUBR_SO?*r#{m}fuK5`w%uJU+QM>XVNl zJ^n-<*l8v9&+&H#+6!;P=g}R7=i&2l9)I`jf64jny&``<&xiL{&i*`1_#Z2g|A&M( z<3K)6_$#R>m;QeBy}Y2Oi2P@7!~P868#rLk6~2n|UQRc?@>XU4;kLNPM}2_&tQ0$^ z_?(y3;mN=M3gkD4d=2)iEy9m;-N9`O&(5<vkGf0bYo);ce&Mypg7Y@%*(rA`>W6MT z{t6BAcJA?7+<*Q{>{sP;D;C?6zmEHv32@`_JI=xYr!^i=dI|YV75NDbAYWYg3eNYq z&EeTu%IEleyyWp`w!(fbv9q-@czxl|c7xvx;m`3px>2~h&&X=^{5IhJ7;onuZ_Dwm zlh~Ow2Y%TdJ^4pD4&Nv8w|4*-Bz)!pfDyt+bHdAMhiAX-X$U?p@?CSFex4Ct;3)WW z!rK-D=XAugznkTKN#v`43BcQ@C!d$~#^r>^uV)8&SM1EY8}-I%w<n)>Ap}1X`4-&I z<h0n6?|VD!d?oUK@&^8`@P=I99Tc9x^GHX9=O2suIVHSa4S+v{Zz%@wkMP8H0HGl4 z<uXB{`Tx#d<UhCYi}yo5S@@%zuND@*@N3vf7e0#nX61$7co6xhCOokv{9Y~mF79(S z6n_6j_`P2E_iw@eO~Q+_gS&s{*{z4fg7BLq^81#8cNTsp$LD*5_uGm5^b@|A`)@;q zcen=md{FovcC@j=TXNzyLHO?Xk<ZD(J0&AO(}hpxf@6;Gd#1q7LgBxD1HMG~2b@2w z5I&OivqtzpZg{L${toPK7CwUYvrYIr>8Q7Fguldnp6`U;@EGI|37=6Bevb?PW+CK% z70%+uoEN@*9qhz#-_-3_%U7WOa|oZF7xH<9x95GQpz!*<(BqITZ~SS+`wOQ*9<Q_- zemTwc_z$$J>)AcLujzXB<YwfvjQHKP1zgv&&+_{Mx}Ghx5%Rj8eYzF6u4hZsgu|xd zw=KsjUC*vL0Xr>4KFIwCUC(CnI@R@T=f`0{*R!iW0q-gHhjJgRkML96h#Dk(>5~Au zo?V@S{Ofu)>j!Xc_uPwMN8A10S&`fQI^JKj-Ald>J8J*&lkltdvvNhw&tE*(>Rumi z|1WkL_Bq}3`r$$D=NG}p9-q#MNh#rnKLw~DyiI8U?Qgf21LyGJ*)Na}yph<MFdXG- zCVcjOfSZMX$$inb!e{h=9qm_x`Fuy~`GbNmp!J+`JM8H7yPy4B+i`wRw7c40TnBd4 z{yTgQuJ*Tcex>&N{(yYy_)uj7xQ-7CIN#Ip;U!*o+Fsq)!;X#*y?Ni)@nHrhj7_2D zwQtG!06IRb?t%Kz@gc4X>PN?it2tlNc0AAftd0*Qc>n4t`6=`mKp)|`I6>3#;f*hm zPaPi$u*2&3kh3x5$BF$>oRCfszGoxkwVzaN8o8f5S}C&pz=q)3uO{=nl=iE-wU80* zR|CF-9qm{5972AslKgL}3tn0Hk}=>~u1(zF(R`ji1;3il+xc8l^Z9wT$oYJT`=8qX zt9^?6X#Zc$1-<tF^PJ#o{#PuET+g+6pVItqS{1pT=bQr9dVaGS@~Qbh(K>Se`_aDU ze-$&L*YAZo@T=EvmDf<NrqYgMfMfLf?Jx@Y(d&2YNhs*`+i?yI>-9T<>jJ%gTTOs{ zt^cLf!L|SVT@GC9|MW)q)&A4$i!0ba9@&2W)+m?Szk~M|wLhEnsqOm<H=MLw^*CT? zx$<)#K;>KUex<ccHwR&%z;;OY>PY6<qUqh~tU&!}45z>2*|bGW=>k>>dxU{qU1! z@T>i>8#Auu?Z9=4miO#r*wOM<dk^iU<t@p5AuaD@K6lXa{=6Oe*YfUQdue(1Er(w% zZv~#q((-QM25nQg@$Q>L7s8HScdxyH^0Hbz`I~rsC5oMQUI)<n91{fB`h27l>?ezz zv)s@sEWGX{fOO&0%On5gg?G9L`_+UW*b1Qaw(e)hHx&8IX#m#?pUe%;n}mOSC-T!q zcwgGj5}x}S$m_WDKIaKq|F3f6O6z|S_tSV=^4jaWUtwSE9RC|!?NsGC2W`j7RgiIQ z$HVKu^|~m^jc~m#etrpl^}1NT2VDKWvm5QAeqV?KSHHhM46b(0@P46oPCo;At)IoO zpj=u%mH&xcpO5d4%okE#?Tq~nezm=JP6sav_g*^|y8-q~3-82@Lmf9xbKRlks<k$9 zxjGDvoS!XRmuY^Uy9x3i*#)0@+1y!@ZvNX>y7LYONdQg@99hegD3>Yn=}dPL-kRxw z!bdaxzHs+<jT2CPp5M{zAlydrxcfUq2Sh%D<?O=3*uehZ&V}zX;Yn`8a{P1U53u9k zB0N1E8DA;<KxuGyf6TQLQwF>M_jO#}x-9rZ!jrgwo-Diuc^=k>Yv%wPDoc3lMzG&k zco%ZFUR^r_$)6MXdE|?PZzp$uFVVHrx-tB2S9$V7!ZVsc{+#f6<au~uxb|Z*An*Q8 zpv%`a1J4rq8n=MIEPUXt;4wK6x^^;JAw5udIy?0H!UuAL!Tr1No*hnj$0uBFzeYQx z-QUS^<qvcLkEu3fWWS+ZyP0t4V1&Kg*x;UhyH*?8bHvb?YCXCR?HW_9+mInK4yZP) zf8XAHdiEU|Q_T_T(X-pIdpq~;f6o9T>cqQt>o&OOa5vR=K=;ceyAJN!|K6U)7=+za zn5}+YyAL+T!bsoV{d>9!CWkTAx)12ruV;Ugx&8x&_N;c}t?jE08QQgbA1d|i)%l*m zUHci8dj}5~<_-%iboPTEjH-KY3Ad8L1gk&B4)1np!OO}EucV(DL4So0eRuo|_rKDI zzB~U2*MHlGeitKaU*Y=im~^z|@8xJ;uK%tNeYb(b{oAE!wEjm#@W0xJ{^$t$YkcUB zkD&ja5B<pz^zA(_+Vancpug6K{=5kKANbH;6hZ$(ANtE8=&$pkZ~KaUh4-KJCLL}4 zt+UGJ6|TR*q@&f}>}X%EztM;O_6Yi$eCY3vp#PB%{R0v7KlY)2G=lyoKJ-sV(6@CO zZT+8%pufe3ehlY@;q7l9QAF$Cori|&f969!DT4pcedwn}(BJAqKRtr}7e4fPobIyg zXPXcG8WH^4Ya-hEuNOgohY$UX2>M_8(9evZ|CJAYZVz5oe_#91=i{Ht^mqEu?-C*Z z-}un)6+wTO5B-4=^zE1yZTpXipufk5{^$t$_Gn(T{>Mkq-|Itvas>T-KJ;fq(ErYd z{=5kK`+evyilG0!5B+5k^bh#ZUll?Bpb!0Z5%ld`Kic-+96|p_ANt!P=pXW-zdM5d zVITSjBIy6*L;q+5{Ubi~Pe;(VbBbu||6Bz9V?OkqO&=p4e*ga2hrWBxHC+F=5B;QA zBWzyb`X@{}+VZDG&_C%zKRtr}FFy1uM9@FwL%&7@eLE+Nw*2)X=%4YSpAkX-S0DPB z5%hoaq2D@!{_j5Yvm)r9^`YM-g8m;q^m|3n|I>&5zzF(wP9JUikBFdu-iQ9^2>O5d z&>tT`|8F1qlOyO~@S#5=g8n}~^yfv;zvx4MQ3U;eedsTXpdVw#^l00ERRn$e-Jxjp z*G15e^`XBxf_~74{`Ls^As_m?Bk0HZ&_57CKi-G_(FpqXJ6h4!|LF+&2|o1CMbOXb zL*ILzWcsXq+5O*KKJ*iU&<nqR+n<Jrw){yE^z-=8Pm7>$k4i=B-#zCao_~AvH(LD) z5&YYqaEeyHMg;vNANua!2@TJGejoZ75&YYu_R;1)GlIVT&SA9rtt03c@S*R1&mp}0 z1%2puiQqrghkmaJ`h|Sx4~(Fn=0kr(1bzG6&S>j@bOik(KJ>>&&@bvke{ux<Vm|a| zM9?qpLw{Zb{SrR(7e&yw-=U4R{+C72Pxqm}DuR9~ANuPe=$H1Pzd3?_86W!FBj{h{ zLw|P!{jxsv4@A%}=R^N!1busiE86xy9YMc>5B+ly^eg(%cQYD3e%hnb(dIvag5mo1 zJK@plCq>Y&;zQs4JHg@ptNPGSkKo@Pk&ZV16(Z={pD2u0zeWW88b0*vMbNM5Lq8*e zek~vRnGy8uSL=zr@CP$ZjCB6M{X5Cw?N`T#epUqkSNqWK5<%Y{VT?Bay&~w>^`Sp7 zf_^<8`XeIf*Y}}6I)eVSKJ>>&&~M;Fe{uwUdxV<U3$N6FW<=0$<U@a61bzEelxY1g zilE=bhyJn%`WZg-S4Gfo>O+5B1pVuL=x>gof4vX=?Gf~w`Ox1TLBF{V{R0v7?a@?X zFT7I!I~qa%Mj!g8Bj{)P&_5SJ-~KjAwE2(WdBX7V_a-0u2@&*f_Mx8?LErwgK(zT! zi=f}qhkkkleS2g)TK^Ry=-c0*iB{kJJL%!|-`a<My$Jr>_|VUYpx@Sqer5#y+al<v zoBO}PF+5&sVtBQte#_o2L6~%TGRB_Qwso2zd|ppjTt)@Ef3?8Kxb>Mv`En+-{yAMH zjft7v--})rv9jT>DkfoVW>>$a(T!C8X#F>*z6maSx%!JHUxpoD;UvQ(BGq5(;i$h6 zhahe1Z;^>={k1Vn>%?j_x0~JOwb<?ONd8B*v*D5Sf3cgz<~7Z3T7<nWPsPLxFrO*2 z;^T_PI$AZH_e*aod!P9zQu#OEiG#|nzAgU}Bdg_q*f6zey{(}CdF^fL(o1Ehn2(fM z>Dz`N|DAar-?gB!Pn!=S<^LS>Kb~JqvH5?~$ZGyQ|8VEJiE;n#je9=b{UBQZqX(n@ z4x~cU`d{wDfB$jFP-)jO!)X0?nE?MIsAv7#^T*Mae=_~sXZGQ*X#MY|{~8<^tbcp{ zI9mVrKZ^1XlXi*Lf5I~;|0+7P{_XkWX#Jny4<8K>hmwrBQvX{w4gTHxxb<((A4luI zBOf5L`*=+dt^e&Wz<(w+t$%y|I9mUM=>KZZGa}LYPn!k*i^BZd^T*Npe}(?Dvgv;v z{o6T%ecAGVXu@dyU!?!xj`pRuXv?288|B{|=6}5p|3mqG<?Ocq?m7Q$|BXKUKS}@m zdWu&8(Uw1*e~{j;+3m~L|3@Z_w*L3g{|%1zrMGDPXU#+T?K4CBvi?6YVYL2BKZ$|o zHb?u?TeSYW%!mK<F#q=aakT!2(f?X;D9J01KcioQ|D&8o+Vb1;$I<$)^)$-Q>7!Qx z(faST2>!$85BB_VwEnN7|H7VUM56USgZ?wAZ_97bA4luIBmLi<P5%ezzZWxX{qOMM ze>MFd&8Gj%*HHhH!|uQK{BgA9pU>~hj?AY2-Amy=eEi$#!+(*9=zrH{)Bn6T;eR*v zZT;Kx$I+I*9sOsw|BYA%|CwR__xSMNkNzi6-woKE+~gIn|8?{qUjO#|akS<CgZ|S! zPl!b8fBai0e;4Z8`nTtgqxGLU3GH8u`fd=d|DzH7fA7P8E&8wEI%XKH|I8IA|77af z@*ni!|4#bP?)bZ#{=>)LAAR`0kN$6A{@ozj@+YiB`NQvjhkf{ehyF{uju}Slzrx$_ zAHM!M;=}*$|FQn((SLaT+w;fK_Wz^wpWXT2cKXj`z1jX}&mTwY|04ZoxBsWT^WXk& z&mTwYzZ?%hX1D(@qW|#vx95+e^?wchXLtU&oBqS+pJ#mde~A9GJN_Mb7xmx8__QzE z{`UNFwB?^c|LIma>=o_xm$B-<{?8ga(fVIS|96J@w$W()&!hkF^`AX|9IgLk{!VJy zZ2CXF8s!fkf6n{xUzh&vcW%O8(U!m08u-r)oB!GK$I+I*;IseR{dd{g|F*w9e;lp< zn)ILD^?%X_@E_j(c1t!|{}bqce0b%Xc(nE3<wN*SLNz+qpFMvZt^fS|UDNFDKMY(C z|KamLyQLhh|0n1_yW?-Yjqo2n{@U}$(fXfG|4p-5|Gnt{H1+NHXU`u;>wh=>+cSsZ zFG*f;{++c6<xk-Lzx8j=A4lu|^mFJq*}eaC*-Zb;u=Q`xA4lu|nrZN#-T6naE%2Wi zR{!?=akTz#p?`bkIs7HbE7t!q`cDt5e|!EoTK`$kqx_}Aott>H{<m*M`NPM5d;U0D z{}0fAb!5ZKMYR4izkvVI2%Pc9o<EM(|6+cDB-!(fNVNVp?}X#<>))O~j@JKs^xq?! z{?F0>XlB^<e|!EoTK^^a`+C`(e~s9M@^@kWt$+I{FIxW%=s&ylznlKU>))O~j@Ez6 z|FQfDyZ>AM;y(QMrvK-%+5WxgKZDngt$%y|INI|6L;u;m{uh0V@`qpl_WW_Q{!6}q zjAz$>`riNgx95+e_1~2Kv%CK}gZ_INpY~<z-=05?*8g1kPlCGlPIF%RO3&Y7zC-!L z`@cPZ9IgL1=|98sgh;ghYta8`>f7?$^T*NpKSlrcJ6GW^NnY{(m%bn651)V7^T*Np zKg-|W&Tjoz_~F0xZ_gh`>p$*A^#2jA0xKcf@@LWiq7qQF^>5D~yXMkp?@G`AN4*UH zzqkrM{l^5LI62I}J%8+)`+xcG!{5ct?)+<VNqEX+zHRyK`QvE)kD>qUw*PMW55NBG z`QvE)Px&AHC#1tuxPN>8I9mVn>EC|mBm5=FD_(!~=)ZN?{L`L4j@JLiH_-nkhC4U$ zX#J1B3Z5#!j5Ge)^T*NpZ}TP;v)licm4l~D=HK?eMn3%COaJNFEdM$B?-J(Uo<EMZ z{7=w-RyO@-m4~PB{ReygI9mVT)4w*jF>%@JO837-72wJJ9*wPkd;U0T|I5(+6)*D^ zegB(L1)e5T-}<-bkE8XUupIvFnU(ODF>%@JO69Lm6`pvE!|DI_{BgAYH`0H$`+s$K z%4BYB`R)1RX#MY@|8FiUZS?hj&h;O*|7Xu1N9+I1w^0B5S$HoO#>8c>E7gBSZI(YL z#BKTQ`QvE)$Gr{z*}eaaZwOD}<G($B9IgL?^q<}KUq%0!tSwu9d;U0D|CRqo|1pi= zDcrw3e;lp<ru5(Zveu5i|7Ftu>9F#*_u>C>`p@q8Tdy%n8b1Es;luxa`Y)Z$@{ex< z|0BZ6-@%9fn0L_sv)lh-GT=Wm%zsB8{!{6{S~km{N&kz&{NLrnf3yFw{HG(7zq1ej zchWzn?_Mn!6PLZNH2&3Viu&(DX?y*5_2GX6{a3imTlCl84Ehhh|91D`f1X?a=!RY{ zqAh=g>rj4fLp%51o<97)vkH#0yZ?Q<1^kDPKll3Ze}Vq9+y4*T1pkY|+P}9C|CLsw z{N=rxM<m+%AAd9ahmSvfeE4re|0T2OKjs$r??Qds|NHsyKal>jJN|W{|I9G|_AEDY z6%&(2ex>#Q<McnBa&BNuT=u%s^}mSz&r!jae~=IV#n+(yvwi;UR+Mx%b8Gz%@!|gt z`nTT?34a+Am%Xl3{t>O<e+Ct-|6xA-uc!asmwAhR{7Y&B|Ka=p_xtc)={?kcQa1fh zZVUf4sBg<Z(ue<R|40ApBKUvMhyR=CKfBl8Y5LC$EB`1T{=3ls7NZmXlH`^5Uv5MF zr^Q3t*8d|u{8wCy_J2Iwxrs;XzjX)r4}bnX#)tnm=|8*mpVkrn!|Q*X5C0$0e|EqB z(S`mOvHooRKjy>#U-X~d=U)k(Q2y}i?+G9N^YHI4eVNVnuSfse(T$w>&jcU-_tSrR zHvK1bM)|u?-`4+AKKx&#|5-*S{3XdNUVpvle|*^Y51#Sie<pu`Z(z7{6OY#a=^iNm zGAh{ePx9eE=Xx~UWN|3TE0%xWJ@CIhto&1a_@B7}{%^@<`3Lre|8!>9mVc@b|A*;6 zyYtV<{op@*{yEKu|2+JA(haj&{)GPUzmEF0{L_8-&!m5DqkFk9CN6tjY5udB{zvlw zf%QMrhyT8xq5ZR4|CvwyxBl(54Eq0`|4ya<?4EyENB><|TekeOefWQq{&#cybSvGM zxa@VM`cHovB~9S>hpqp)KKwuN1srF0{#W67_z%DT%=h7cI{klfS!tsm|FY;m{Qk4R zhyR}2P=5P22f|;*#AUB5)qjPVD1Tbm{_{c~{_8X2*{%PK7yn!Tuln%cg8nyMR@&(6 ze<1z4Ka61e-(nyB6L+Bg=VsUcT$Dfj{LAY;{4b&ZrqTe$#AUB5wg0mD@ZY6A#BKSP z`tX19Aj;qCGH=n>f6`v~4`2Vi>BE2fAK?GNZ2F(P5B|gF|I2;&-%kJ8-T%tk5B~|q zr+wM_U*W@l>W?V@K&X4~H0PzS)c#$*hyU>T*V{h)KTiMIJ%5yR5dOo@AHD0t{~`Lf z-<b)2MO*$6Kfr(Z__x}J|80j*|8n_7J^!7282)Q8^S1rp^Wpz{`p@qE=Q{dd6y|@e z5C4gWQT`%4KjF54F>%@JO8u|bPbmNPyb!nL|Imm3^2gwR>}B4fAAjndh5zvVzx6)+ zFQ)(O&cAB>3IAP~e_Q^IKKy?~|Jm+;^dH{;KJwvzC;eyl`d>%?^^8yZvgQB8hyU9A zJI>jy|8wX5TmN=13-tdz|87P96On!IoyGCeSL**+=iw>*{Lg1T{C`LP*=_&Pf5U%x z`)~E(|0Mmp`fh=vE&nq5UqnUQ{@Z-`FMb@?e;wB`!)X0yT|oKQh56s%!+#t4&+hs6 zw140~eE##55C3n|e|G!-jEnH!C9M2AefZx&|D~z#2GQ34Ir<OZf7s>2|8Ml4-TpuD zUzFeNzqbGF@!>ys0{t(;EjYty%Ri6)PgBqO-|NHw_4I#BHvLbI!NH&K{ipAI_@6}o z+1>wL7J&co`v2aC|M~Qv-RtiF{fD1FIq1WG+)1>5cF!Nw2%`L%VeS8;5C3K8KfCom zg8swn|F94LSJQuXum45#AAbEG@!|gt`p@q3mvsJt?(q6Q=EHwK`cKN{_1BC3!|VUJ z5C5b7$M&BQ!T(7g{wMv9<=;&IX<_~Uln?)N=|8*cp9AziIn4hVAO5$}e|k3Ce_$N0 z|1M$ve~aLMf%)9v|GZAp|0jhm|43!$n2+reE#q>rnC<i*UjJt!__x2wXl=Uv)HSm* z4jYG?|HU}ya@W5buDOE#LveWUd!_Nq)!#^c*S;H0q`sSWLs!pD?=}(3F3)95%w+0k zq8VIqZ~pHB`<qOW>hCD)FZ}nL{xXg*tGKj&$Zzzy#p;@L!Vx*)_}FFizik~U?^b1Z zUew>wS}<_Y2>uztzx5Ky|GK8o|E>)5-FNFR{MD=LkY3dWR8MzbHQa~^5y$&Ab?P{u z)TvpsZapX3CD$X(Z@D2haLHmIrg6l+JpNNYgfosa9OoG^=K^OP&7~%7Ex7$~Inyf` zzRmDmhN~IcbLm#k{-&V~KV-O`q1&%MV)_$?TNv8kVzYYoH_>cpf1AvPI~dx2Vbk_E zvuwDFq5Taho8HUN{-%;mf6wqB!yg$QW_X05?GIMo?rYi5{w9kJ?Qf&l@C-xyTOl@W zf3w4ee=@YcVPVsMGqk_yVAKCHw3TYpL56V*b1=-wFgL?QhWQxgXPCmUAj3io3o|Ur zusFk#3`;RA!>}yF@(e37tjw?~!|DucGOW$;YKC<g)@Rs&VIzi37&c{iJ;UY<Z)Dhl z;mr(NGHk`L4a3_Qwr6+;!ww8PGQ5jnXNFxFc4yd=;k^udGwj2#AHx9*2QeJNa2Uh; z8IEN5Aj44%A7MC#;W&nmF?@pI1cpyBe1_p9hEo_$WjKxDbcQn-&SE&5;arCE87^SB zkm0Kg7c+dF;ZlZgGF;AZ1;e))zRPem!}l1jW%wb(^$a&M{D|Qv47V`+jNw*>+ZgU( z_!YyQ40kcy!*DOd?-+j1@F2q<86IYMgyAuU#~Gevc*=xj%wpf(i_Bfdq+(+7*thUk zY{>aI7GElj4dt*O219YZ`wxu?C0uV3u>oh;j}18Ysn}RYA~pd5KZ|un<JbfzaNYvr z`WanBAGJ|x#6u>q#QQk5-&9vJxI4>@#%{XCL>(tdp_>nxxZ^(5(ncA-6*!b&M{37a zsFjU6S`|W_x|t$F>uzg|@y^vvGz8wo@&v@YS)K>+dn`{vyw^P@UI6jlHlB+3eLtIc zT1?Igp*x>8j+}?mp;2~lMfBlI^buRwnB2BDUo@h5o-~p2%<*WOOSd}1Dlqgi^7*m( zIMHf4rAmmad)fde2XXZ;l`8I98xNUs*<P5}$~f}7<Iju;Qa=9IOY-r5HZt-kdHgvW zM``2F+jyE|KmIQpPe=T38^;&W;xE{E4e)<#ydL5gZ9F5Nc{9I#AFzo`Bmz#NH4?E- zA`6L7V42BY7bM~X@0dg{BoYEPw*!&L<0OV6kvA~Zd@=%w<Ukvf7>z_qptDJgMWR69 zePeAL5@~_YO=3I}r2>x_vB^kO3`{YJ8Aw!e67!I#>?9T;QN>9tL!w$>vC&zDM0F=` z>yW4!_|o{<6yvP%;-7cgAT9nyTS(N=Y#U{Kjx8?R;3ZqyB-4J67#2$S+ccolUu?FW z{$i<ZN{9a7(iB7O-{s2hbpISRZZcL7tzF%V*0ooaGiy!=22#!So??sK*hC80NC8_I zygAHyv)aaXGb0omaAv|VkTY<HHDLL$%MDmmz)^!_QeccL`SRtGm;8l^7jnd*S|Ti7 zHn7<>WB-7N=Gd{NuB!wtxH?yv+6dFRRNhNE1?weL3rsL_`D~dJsylHeY6K>k4-)W6 z&A>F1NJ64kV3tXwAyGRp-z3tJs1tbABq|_rbzrGU)G$?<%Va5(aI^Dnt1gsat0k1M z%z1y`dAB7*6<iarIXC~zZw#%iZr+_}t{gi}h>;*y(n%9f?LQ<YSN?xZ7obS)&^b>e zcdp`Q>~=a{?%XS_2;zBcJOq<@LKTdRW3on`^a-wfp306*M?OzATg&LEdFt5AV6ez@ zwT)wF%v0~i0`9<(r+!NlPfs1%wOdS{hPRn`1^SA6&h?d)r|4=EPwmrlWK5o7wm&0p zd5YV30_77n8JR*~o3{cM7qBr?Wi~rbedNh`*bt{Tp7(?tW6sBkA$vbVbtUF2ZX!;3 z5(|XYS7KZRS0*#Dko}2g$dtHL{=||tj`Am#vvHI^v5L(I2Ft|imZw9vmW^YuOuX90 zF<2%xuyG8QiH)sp28xjwzr@W$dScUKULG>7JoD4S#+irKHqJcU?&N`Xa{TVvNlWZd z)?^0xxjW2G=P*0ntZou@6Kp1px*1Iqd)h}0(7o5nFh0P>nTO$FdAQ%kSq~#@JRQ0Z zTY1*QBR0-@7;EFKhjCUu1M-jBcqZbH*?4QjpRn>-h>y3t3*r-Oycgn6cQE~IAmWoc zoA?NnD{m+vC(BhKZ}sLT?#Se=xy}r+jMsHAc;lyxZW7{6?=$f<+KIEBJuM+`d{57Y z6SW=ER+rP`^2WC|pCX!LjESb$aebPJ6!6}R{44_!J*9l1*G<}~`queMZZ~nqeZDGo zvcPyXE6vL&Dc@crQ`meK(<`Z6>|8V7$Y&Et?PE9Dxd#$iv7J+mwwth3g`q1cE7m43 zbeY60W<v)<mr3L?IvBc`sNotoV8rUViR#8phMTZMX)`zRsM%f0bQ3=roz`xmkI8hF zo3J`vVv2;S+k6+W*)D2gd=EJBSm!;6+Ds~Ji|JHs{?NB3>Qq;+{JDGNW)<a6w0TE$ z<xjE$J$h>Xl*J~F7R_JS`bAI8pKjxYovO}X&c=%%Ua?3)Qz5B?d&K0gVy&YC=daq` z;CjVAH}B}8`Rg4w@hoI2x!eFF>SQV@`PuPqrjn=5H(iJsPp&Z4mB~!LW|JpV??YQI z$9ZxCTOpX8CO4j9bU73zSKQ|6CL~{X)YBbh3+LLe^qVWwC3#k|nd`&mg3UG$#nMe~ z*_o3o7dM|exgD6i>N-#IgKf6|K<ndLraF7EbX8iq@)^lLzv;=JaJ)nQl#QdxlYhNb z<;iDl995ot?swDi(jkAbis=jJYRQ3s{h%J5Rb68oINf_uawu@YB%EH8oI5Ztr?G`Z z{=ju6f9PDvMFLs2Dey`0fF0?(&{(w`i7_$7jap24spRxPypbu<yMK?E<kEramO`gS z;5B0{ghYME4=$GE1_3*ccEKl21DQtb020>+>}7Nmi55=cG!i!l?lTj>b0w|)<W_;6 zMkgkKRL8&?lS*Lf?ttBFO=7BR!0DY#^>8Mc=}h%?QWcnbGGIGq4W^z7*k;RM>RHF; zBBq`T*qyRvOugu&Rxvfl$@4m<UU5F#%+ylH-*%=}IH}!CtqH8NwZPQcz(XdLo`CXw z=+s>WrZxx4o6kltwZ%z|X6jQXHJ+)@oYZ8dwmMd3Ftsf()mS;o)OP2y(@cF8SYgVS zkrUp(32e9inA#UOU{YzN*b}PfH?8AztAykO0o(h~S_cDmBE@ScC1+hjaUG}J-O0qA z-kQ?I_F~5S**LGulw5Xl?dTWCIoMTAC{XS(6EAk!_;)|eHQD_%sX(>&?59P{PzjR- zZmMphj;jK#Y&;Kb=Kk2#>Q$g^KGUlpb6fpOy6u{nICa}wU5s@F?rd&2W@iODwl{I! zJ_?j9V(g?;G;j95GxIk?&b`JF%8`Dp!G)UJ&#VAP>4G8KssF!^(gkx_Eyqe~Xtaqs z6&Xs+m}%lp&QqJ(9J(@bFS|17sm)G$GR^H|j`BBLW24Z$(duG}o|<{7q^YeZnbL7+ zON~G0+RRM7t!aMOPP=JFhBn(fH$&LG-8Mdkr_?*_K%5Sq_0FXlOU-eMvE!5_A+=j) z6EF6$wT6-w3f<>^np7z7Boj{^ICOAKp?p)Uh-0l#QdpNM6!(HFU!zdUk0uToGz8)W z9eKo4Z5(Y{D9y%^+d_qpn>?f=4{4!aT$@R04N}Y+B6WDr?lEbNY|X@^_U+j}Catlp zF?QRuxDrOjDN%Y_i;gDl_)5Fk)(qpf*f?rFt>vW}OS{#^S=(vx_qcXOr)3@Y?A&Q5 z6|~bO%ud%ZJ3VYRQI@oO+uGR$^5D!YGY}tH+3-xnAF-oj7UE;m4ex~bcx$H%>mkP< zZhpF?J$-wMn}>-rFXiV2ryig?ub<(l+q4BEOq}_7#oDZp+HGh|+G5*6nW)YsbB#zA zT_toi=F?3vV-|(dmf7VGY%UM;wKA;iYr@LD*6xnb*N3)T>Cjzg<E0Sa@TPHA0r4$X zm-Vy5F6vl6Ut2y9GCOU2L~76egJRNlTRWq{_t^Lt#J{!iv55a*<KqxNYU7V0e%zLQ zJPQ2Fc9VxiW^}NNwNS#h&bwVCh7#;jDU@IrD~V30Ov>BTPMsYad7Iiva(Fz!$PPCw zw;fXLoXFYK$Pts4lst8VtA;4lTpUWUx4N{n<OOFvF(*nfV8<&&>?VqxALUF)e$CG0 z?2INR`SmI09nmG08X?>3b7m$lyxt^Bnb}_QtJYKLzm1zxgNOBxNnU2Bai*1$SJ>GF zT&%FU;Dw*O!m6ev<*)jv`#GYJb#W-c-kyzE&DTA#npT5iPCUU1)UlIG$4~w`VFFG( zAtq;1{_1wd>69XW%_qHR9c$O>*RwNV=+_I=cjC4I>{Kc(A^)}ZrVO!b9Wiw1{MRNM zp4-k#?bOQKb+WZkFd?~Vz^*4u>zUd_+*YC;w9SXDoJjyaY!!e}gV#EDZs4_-@HS_* z1-y+ocXeaf&W#+u0b|-uU~}89W$)<@{Uj#0oqO85x|1#wliRk8y~{GUITH$$x3|?& z15E=KsNgkvfr|D{R%&?HzA*(VIoUIk&FxLpsm%g6T#~%ex#xuv?9DcmP~E&cS+h4# z$4M|Ix4pObyp+Z&CiNP-^!e}o5tW;ItyKsmSU+h=sqO6D#c6`ncD7o>;|Vdj?d{Uu zVZ2hMc0X*APF_=cSOr9TT57D?+gxsYU;6u!5^|N+#*UQ#%~kl?D(!ZwmX?$@(vI3r zuF^(27fD#$_8&W*h7#;3pO%pJq#ZgT@T4QmVe!c<!;P^8b{NFx3+(6~9=FEqTt2t0 z4m-@Tphj(j9dV$xA?zmN#7)gug#)g_BgTxK(1#N2UAK(+C?;pxIqNIYj%NTREeIf9 z&iN4Ws!seWN2yM2GcSz))y88I*O^r}M6M1KZx|N8J}iEdjnjOauy|IOOy@9uPguNP zn9R_y_=92bv0?EEHXbNzbD7jLwnY)UKKuXCOAkA!*+jc7QO?rjV}YJ_3`{C-Q-v4V zO>9IL+h_$#b1rw5GKjATi?0lezl|l0BfmO~ZwT0-0J@t4ADdE!670a1+q&Inl1^ti zN{KH5M-58++`Q#JXWs1piZO}DysUg3$Z0xz;z`4uY$ndIV@htj=&fizaEz6KvE)Aj zg$;6CC!f2Nz2x&@@xQ|2e>-u<Y>~=#PLF6+>j6<`>lD%I9!>3MyQf1_2fk`Nh7yLE zD;{9DEj^+mFKLXkSGq&f{;<kU9@BDMs<yOTVeu4aW#`BwO^LNl=f>^BPd9GuR0_^9 zB#=K)Hg8JqVBVs6lM2ne&bW%bDkgXC#)g=ufs7`YeC9K>g&76nQe%R7ug%@SNtjD8 zx4B2;NC^b<=FV+tz)rjpJ&}6m)0~9@mp;pN=`+(5fk2BCtC6QvOpBE2MmDjWiI~S& zb)6s|h2vVJSVKv!YxC5@c1Uy6a<XDRHmjO~f%1i6tw5ZkT`&cH<E)2NV=4jJwx$YM zY0J|n<Yc_CR}M#~NXQsyk>VDsXa(c0m{Bg4XzW`n#U1%LBjCuFpbuuZWLWO)>cSIt ze3iPCAv5)`7R}gG$E!H&=c-G|SabQ8Wzv{0W^MxI!ji^(`Afo03O6)^T7^rW15_+! z>a5Z=G1gX$JqnI1-!yK7R|ucxupb3uiUwnfInhv@=`)7J=8SW+gCV=)V!B5#u7pcU z##sk3!6NC<J{?;Mkr#rcA&mF9(dJ4ua^r(#g1N2&3x$Fu%LWUVV=7pte4M#Rto^bT z+*rAaan4#k6s%Y&&RpB}(<+tYoWt#*V2vtaK7zMZ<#X*`Ze)7EjqMIrqk1TqtGc5V zEEI%xuyAagxfV?BiU(MnqT!hjj;sN}cze$<Ie_}3fttWbJ{zDpBzFgDA#zpixNxzC zb?BlPUBo$i8o@GGv!G$Zq2S)YHRc+$Su0UDm>Qm`P_R_JFwtOTW+twRBVM(B*oUFu z{=l_i>EOiJP@L(4#%#gMY=(kG8pJsVmxHAn;v8HsM}y#^KqE&xI4RH=k$Hh8h?L6+ zvm1(g85I<q8fXe0oF2FilBKSXt7u)K_Cldhywe$(3>IsK@(0r|D^~sHuoHKaliizH z%3$jof@zm!9Zr4=+(^G~#b#0yzef{%Kh|yTjj=5#^l|J>tcTQQZbp8Ny*bXA{M+t% zi`!T&-41_iFwhFx&Qm9^Ji*+p9ULs|x~bR(plVynqiI6H#M|gJtsNxtw5LR{<n3-O z{~Z)6mgS<94n&3SgkG`BdR%F@ZYp<#2Ht~d;K8z9#?Uu{S)Cve-}6$t1iuU16=&BO zF`+p8kX$HO^lns0un22B6m&Z;T@>hy>or)Wi$j8GU4wyc!9aJn)_On??^1CEaeV}f z)(_7}C|I~bh*pdDq@NP^FjBIx6A6~OtOjn1k8`$wgC+09$NBhioVo3q&R(Dw)c^Ay zd^vD^7!2-=?;Q#*%yA!BD45>Ii3QVLd(Px6Sg|hzf|dG(Yo7@Ahj?0e?m}^g%*btW z@n_tCP;gC-fuZ=1s9tJNFlP=9K}7}=UN!`U;>`B8X_H`Snhcg30v~Rckoqk&6g@T+ z{3A3BmT0g1aP*!~u)_UBjYdFgYhWbFj=%#l%s}Gs<%8Ry(1TEjJ7zWsOqqU;e<<D_ zsJe7HG#SMLm3bH@8a)y$m*rmkKrKfHU<U8_FjxSGj)J#0a4*T!F_bgyG?vjgdp^u~ zekCx@{qWVmqi%Fj;4xQj739_g9w&kC<FUEm)qG#)30Li8?D#-1b;4zWSx>r_Iy&VG z{u29CAQU_m`?RZdIyQGGcqTRvhmGK`vCp_4{T4gXjs6~+7z&<^on&<Xh|Npif5zrx z>|AUTW9MTh8=1di^M`_e$0ieAh)rSapV%qp<BPEcnEp5RS(6?eEaIet-3pR-pBgYD z*qGpR=F_pkRMK(5X(s(>uuvRE-{51xG<*d0r-Hdc!KZ^y7@=o^<IVfTpe^mB;M3-P za?liXN-$3-_-ybQlb#x!Xx^U-nu1L;_l8jL`C#5qaC$IbC^#c%3o$d85{i2Pcm7#H zmL>j0fZ4(Pp}0AS&kZJr;^!egKWGd1Qm{ZMxFBfD_HwX@DOM<m5-oH}^hz)_6nxbw z%py}5=k^^6E)J%Jg0BZzlPJ+~TcQ(AiB38t`o)xpwQ<TR)@fU;Gqza2I>q|UDc0|{ zSZ7VKDEo&k+n+(Ny_^D`Hw6s-WeO7f+ms-9!O8kRHtQFitp9si)<=hIV~h!ztd9-Z zb{H2bWEvx6GW}R6iQWIHkZpmG(*hx<1wu{>gq#)#*%k=d76>^l5OP`|WLqHQv_Q!1 zM$<zkzcWInEoO#nTf7i5xttZUb^Bt-?L4zXwu0w`!Yg>Llgl&lrs@8`)%|C@X`OS3 zpN~%s#r=i&-|=pfUI6$f-j?cOyeZWyInzS%i_DV53<>7I8u!w$dGLSl|5pS5R|Ef7 z1OHb8|9?;e&e-iN7URm<(LB!iVqIKaCw{GccO;y9cbqfc$2q&!ac2M6NITmDarK>e zW9Pkv^M1GU-phIK<GerVOw{5gBX|jcJ?(F-tVCeX?wiyH2sR<G2lWlKC#X&EB?5bz z-lXgyc@vyL@H+zgZ7c)-K``3c+lU*7;Bf>K5Il`wniE{Ai1@D7Kzujny}R??!+CcW zQt|gV@q3+jr-1Rjo%nsuyHnWszE0dZFdpCEi4Snz2RiSAocF=b`w-`SsPjI|c^~e) z-|xJSu<voBocHlgf#PSOT+XSonE2U9+3i1*W&33dBR>x*`;`lmLRH7xFJ71wmhkbI zUdO!xN&6)X^VuS#>{l^N>NTX;L`#rbiqGCa3X|_R``rtpV83c%0ydaE!fvv(AJBdc z!lVu$#pe41DK^+eq{gCA&{FYFAcemc63=#f5^$mu#7{zMG6MX0&ba51nhp{C&BC~u zfcOhmakG({i(nok=OgtJQVWp6pPY)rU;c^1AK-|??;ywF=Q!gwK=NY*JE8sqQuxK9 zxFbj%MZllYurnv;>WeMixpV87_%gPd;wm}sm7RB7iS?W~uCumI{5I!3%X#nMymxZm z?{eOqt{Ufb)wl;7@}Tqnkn@fX^{^9v#Cd-dmH!w5bhS8MvQGg%kHCHr$7GRBzXmBR z4&5u)en-ZL*ssEv;4p#{2+ks4)3eRlplmxf%tBNYYkdV$*zJkiiWGi}FK!o7-yztK z;8z4=FmjD`0_PexRc>;HLCicpFfZE(&WZk*xaAOk3&9EmD-qZSBS!LFCvcQt#BA>x z?3ltjKF;j78)BX$n0IGyBF;S7GI5NV7;T+RDD1^x4-l&y$8Kpy`YPw$*^A)VT)`m~ zop<yRXFD*iszWex*Kp!Bo%dSKdmZQfYUlkL=RLePT^i$^RaSW4`~R@_CV-J;W!Z4K zRNQwz#r;krP?_oONmbJ6gkeUilS;biq!Lm|cMr>VsZ=VRn$9*=m0ku>+`tW7aNiXa z6ja<m1r=~XL=@b2QE}h*UBBmjp7(B5mFgZC{L$Z@$$jrV=hV69p7Wk}Kj*M5!arf& zz5I2V*EwDncs<YS1zu~suJF3b>yvpU)>@5Y>-Idh!Rtj{FYzi|ZrFXk$?F!cX<R1R zWi2C#Zr+xyp_(re_+kNDyN1Ls5%^L8p*5@g3Z{&GrNCDSh~ADly%kLz%hJ?eP))WJ z4AuXdz;6mT#rsn|IjIxn@}u<fPF|d@{D|=OH3CjhwCP{|GlhZA75Hp{&k^`sfzK28 ze1R_z_*wyJ<N2@Gll1ZYH|pt|1YRicB7tuf_!fZ|3%o?&TLo@o-h7`*W~NX6`<3_u z0zWA5Dgj&agO2<efu9w4v%p&fY=I7n{5%2iRP%|}bPnbhsl=BNxKV-yMJ%7f-_z!k zPZLfFF67^N^6xzPcb@z^PyU@J|IT+<1NnEJoSU^jim95wkLJC^s>ktuZ~}|Srzh|v zOAb!jK}Nu-o4<$UpTMgos06W3V#*VFE%SPg*EwG2d9CoONxaB=O=SsjPhyHDvDghK zD!)@-qE?EW=-qmU>RRIOHT~7!>fI*OIf1=**?)PlC^4i@(}ekSfzKe|i%G}E^cpsQ zjFcrWN}?BR+6%@W;FZ<!m!G4$o+lvEzzml=U#*NRFLR;hHOhOf!0QBTEh&(2sGw@= zN|E=I0=BvoPd_CfA$II9_>@LXZ-}?RUnXwKhKh510_zHRy~D1|6IVzh(%mc}e!ziZ zIiX`C{@rnCavXxBQ9~4;!_2xrmTzR6@<L9bB@vP(G)q4^e)}i#7iv2>nw8S%YFx)S zq8dw0xv^wKKgxbBw*r4BE;TqIgy7;#<U4tx<G}P!wQ*o7F)u63*a}Sys}v9Bvqf@6 z%DW+7rW_aYy~!h(5BO8{mD+ceDIz*P_QE38{E^Jn*lRlEpQG0cuT!sAp%eUp#0Pb- z5JL1tf`B?qgY-m}7j;mBG}OyXU+48{ygq|h&0;d-Jg1t|OVP+K%Ut92Ca<5&>$BD7 z>=(G8>D<~Gv$%0yj5qalAIo}D-^jdoXDW~f<1xnTd-3|-yuJ^w@5}4^@%sL}egLl@ z$m<93`oX+@s9mkzF(Ty{sq`58Z;TUaj1y{1#E88(CWI%d=bval&#Ny*V@X%Xp2Tz^ zqUfUfm2}mS^64z|3|`sC{5}o;$1wHdc@^q>BJV|wPx3xJ%4eDKNxY^=W}dCdYx)kh zhJqO1sy7Apdp?)#CZEO*(fC!Si${<U=kI5VkXgzFD<G<ksX<S)B4cU_QO&!D%^Fj) zNZZGrVI}hoyGkvWd^jfL+hKa!u0q5yy_RfxOss{7ICh<7Zm_(V4Uuxpky1QoEW>lg ze3Ctvcsu60kgW<wTbz|VUr!lfbIdkIK!Y+eW!`1VuT`G3cJ>R=%;oqZe@N8Ir&;SF z)739Rn5&jD#_wS*kL9zFmD8N5AHm-VfgZ(sp;5s5J9rhbcr@>YQX(9zG5<KG3(3ZL zulDjy@_T1=5TPI^N?u=6;;%${ICb*+zG<clP4%rJNt#UeFqb%!AE3uR$;vDv<eulf z`bl^t^dt$hzBrDvq<G55u?~HuzV8%M)E1W^vYN55A)mp9NCR<uR|YroBNUN*25<7x zMI3MP(nazw6#9I#fE#bVRZlM!a666do&hBME`je6a5?9P_2iO`i!?6F{DkscdU3Jk zElQL;lK(|Lxzh8idir$%*L`I4$^U^8|46_#v_O;oTHtR5+$!*odUBhcTY^4Mr2TmU zZteLZJ-t9c7Q9HG`Z^`bqLY^?CsMM$g?VG&rXnvFaNB}TmW-?kI^ZDh)`YjJq+4`; zpHG}zZU<3^F(o~H29aEdokr#-vOmNtL|KnP;5?^3-|=Dm%}4S2(Y$g>6U7I`O0`H+ zIYnq#(+U1soZ~d_HElIvHB~i9H9ggSP02K`JICK@0_rO?0mbn&4Mn=dD@fS$;(izT z+sk%ko7C5NroIoaAHeGe+m+uK*v;4-cFpVSQe=sBC{=_@6IkD+R;eZ8S8Brs>rzXe z!h7*ya$q;4U9oi5{^2Y^V#?=_<+IwO9=&Z+%HNMJt#8v;q{k>dI)mdPCM&$sxJVMI zvaK4I72az^B#&rZj_Vn*9gdW9c=gp&S&w?`|MFh_w#EAvuiLz`5A(ac-{bYbuIz=> zxTl`qlcj_WW4wPaUf-Kn;m7;({{47;e_n+#AISR;;+5EQ`-V7oZ4At@+Y;y>CJv;H zZtp_ubP#tmvlrQ)nn`JFy1;bJ^<~~`o;|Wy_B7U<#<h?s&)~Je>n5+Gad3xa+Ppr% z>s4OUxVg_1V(789pB~E`@p_Hd>%89J^(L<m@%l_&KbhBO@%kyeek!jSAvB*6Li1Vk zd`2YAyRrUVLNbxEme0ty`L7pO{|13?6!<0q7iC_gCzoixMNcl+yhKkf-+Y^%T+ESI zD(}*cyi$1=dS0%QF8h49o?Ha_UOj!Ez$*k^Dc~I4omxMr#Q$m&(Hr&JpB8wNz|RQ$ ztiYQETq<+Ns0(Lqk#-sFmsHY4wO`SbOKfhfcERm8l;`r>Z|TX!xVP%*cLaV{;P(XH zCg9c)7x?~Ai7xm3v7Y`!;7<kqOyJK2B)Q~WLUiMb3yOcEA}%k=;*xi<(Va;yJ^qtQ z{<DBv-2YWi|0eM70`7hKPd&NR`Dx-pE_}M*_%oIGSpxD+<}<#@eAYMVLaTe2U3PV| zf7W5?lI$0&Y8PnT6XtSl#+jMVIy1jYzx!%|tZUN+;f#kfpYd?!vmQ=&xk*UQzgTs? zMBrNmTylP?o?a&K?E>zq`%XQ%aQ$6+a_@$V+TW{0m$(&)oPVVfzh6M-{6=n8_xrtC zc{+nK^1Ws~Ca+bI*9rWnz>f+1xPUuVUazO06nFyx<qj=o$Y)%K`OkO{QfYU=e3qV` zBXIi;ndj*T&lhm_%opm(Jr-ZArxyr(iNKc%$eWS>ay@;8z*h<=5HtVPdQuc-{+;Og z`8K`ir2;P#_;!Ks5cp1kccPEzhxCRY7Wff?*9g2;;B^8&D)3_hKQ8bS0<RbNNr5*A z{FJ~O1#Am9C>w7QxNX-|{ulIvUljNyfnOH*6@gzB_%(rF7x)c<-xT;Qf!`K*tHAFF zaHp(X{`d6sHi6$4_yd7I6tF$!@C~-A4&YA&{#4-41pZv$F9iNl;I9P!THtR4{#L-Y zd_iS@FYpfn|0wWJ0{<-VF9QE6@NWYDF7O`$w)P#BJzFBb?L3F4PZ#(MfzK59EP>|; zJXhee1wKdMa|J$6;PVBZC-8iMFA(@bfiDvHVu2S3e2Ku93VfNsmkWG_z*h=<mB3dE ze2u`@3VfZw*9&}uz&8qflfVlFUL^3%0^cI=Vu6<ke5=5>3A|L`Wdh$W@Ero*DPWt^ zp(DRb;JXFBN8oz}zE9v40<RSKet{nl_(6eJ3D{P5sPl&eepui~1YRTXT7lOI{HVZ> z3H-RgPYAqT!1f44oo^8MDS<Z%{ItNE1b#-~X9eCY@D_oe6Zm<7Ul903fnO5%Wr1H2 z_*H>l6Zmz3-w^msf!`ANZGpE6{Eooy3jChH+XQ}J;12};P~eXQ{#f8o1pZXu&jkKl z;4cLJQsA!y{#xK~1pZdw?*#r{;2#A3QQ)5h{#oE(1pZav-vs_$;6DWZQ{dTBwm(ha z(*-_5;4=k2OW-*I&lS*_!g<?;5ySYo0-q=F`2x=qc)oyb%ZQR+DDXuBUo7wffiDrT zJsVN-%LKk$;41{aQsAouY(qzs{2GC;75F-VuNU|R0o&~nCBI4Fg#s@U_-27`5wNWw zQSv1M-zxBJ0xuPKnZUOTe22hy3cOt4y9B;lz;--Bo!=|)eFCo#c%{Ji3;ck<4+^|W z;MD>@B=Exm+=48Ze~q4AEATpj9~Jm9fgdNxVZ0S~<R*Sv`j{#US8P>GJ1v<ni`U2T z8&Y1P{2ferG_M6-$9cVzR~gh#@_x{sHQGrq!(YkHbr0|F<u&C@%9ojPj@LO}=Xq_} zbxivGAyYcMc6m+f=&otI+5XF=8pu)O(UKk*8AUz*n2N{%oPRx^*hBih<7^-6e6y^M zgH|=!(`4z8J?$AR-{h5Flb0n;_6vR49&`15bbiTU&enW1^E57>X!n*Hg&-UoE29yd z;BV8tt$tPySC}iCkgP!$m?8_1zF)RQeluGm`?W@NmZj6<`h?W`?&JOKjPW~el}g)y z(_``!wjn(xPiM+;cBd`oYLwDePg<GS@5Io-00+6D^0G&;qcmWTVTCeI-=AuXn&Bwx zb|A-9x3;+P#H}W71aa$!n>O6L<E92TC%7HK4G3;4a0@^r{p8sar+7}5-oiwF<NvYj zv5(;OBkjr$lClNd1LaW#|IKZ>{Hnok_z-@f@LaT%{gDp!e5Y8LAIJCJ4$ZxrB{jE; zydO<}&$7%TJ7+7b^M9UI`S$I};y^w2gRIB28xyO@ee*F-9wXh(v(Lsz?N~}U_9)gs zD$i75fOwGT)Fw-a9u2j=I;{|qU?rcxp9FRtJHdOQ*C6UlGWQIxGOUXw$$&0q#E)dX zAIEZc@Tz)6=cX)$CB&{$?`Nty;4%Ci5z&Kg&RNRXJk!tHm8C^q-j}I#1Tl5hp2wcS z>vP_V;JF0MJ#7j3^rX<2aS#-Z!E%FbPq*!{tVMlwJ3<iOH>NkS4?L(-%ukH8#yXD^ zC+f^y=T%~Zc!Pw8;}}(w<+pfk@hbGV!h4OQ1dP!LeaP|}<s;rdi`P%#^;3C$HYKCH zVr<?i?hUsM`$CYRRzZ)Bc7vOn*xZ_ywP$(I@@-p<h!vc=`LsBxZ~uIK`||{zFW@5P z7wJioCTk(H%rFND+aGWJ=tO{XfTdri-)CJQZfKAu&0?BR{!Y#Gu^;A7nJrSIdCB)! zs*8vD|0-klm`7*)`n&T>kCjS4iU_4IN;NsHqvS<aQj?OOsg4v`Q3-ZrUXxUMiFlz% z8HtQ9Z+kr7dJnH7Cl22vUP@x*Q4SmY<wai8(q&qp6S;hdWqiVXmd4k8exIu+#l-VP zAI8G5fHkHLAw6aOhcjOvd#BwqRa8d!>KORNs`{%1hI;Z`s2u9T8|AdiB4^e==Q8Q{ z=(SnL+$dMvkLU-l6?mP1)UW&-^ptg?xn%3Ev8+$b{a!<TTkfNB=hR=T>a3F~>pF5T zQP#1O_2CTl+PJ&sMa2Gm))(VWn2c+M1DR$r9Nzpp<_I3s;6|F^h^go+N7xFHED{dQ zLQ8%7s&c>UkFuXxxrCUr#A8iDaX24y_lo|O2F5A;Yw&(BayR?gVH$Y)!ZCuc7kGof z+XS@dLH^kk1@d1Y@aqCEesBKnZv|fPK79Hbfxi&=CxQPI_&f<6FA#V!!Ps{Yuw!IP z8yjXz;}@$t@8Wwd^O`0&+e~rK`H$<fGv<fks}8cW;Z6FTcb>bHeTuwIdG5{4I&OV7 z{JDxas(-dn)*XiKDa^VEA5k};`~O~}*Sg2=wtam0pVIH%DDcw)*(HT<R^rbK`~pF0 zXijhl#3SZ-zrgF0c$KKO#(UBGr|^D@*DJj4@Y?285hn+{@A7)hu6&=!w-Dl^nI{4t z@SbGe7YB|rMLbLbx_FR8*IDL1f!9ys^&GDiUd5-XykFu~f~LMfoJ)M_>CAlwuj%i3 zfGKG^l)k6K^dnyRRr%|@7ms@u@14_qhH%O`os%&aoxVVM&ZE9mPhTP69Lo(K&YWJP zycY|&{lodt%axdAIj>aWP?qyU%;R_rN(A@v8}8#(Jsa}=8N9Z5)s#(*IqMo4o{@>D zU@>PMqkQ|r9NYYDTCS7Wa|atF#F6mxIHm}FL~}%Og+vmEq?-ugMTvz_5{J|U`uH+y z)1=UJ5JG8EQ2WXYt)#7Jf{4m#nuxmpU)J*sUN?Cax~02PNT=x|(Mg(!kgmsH3F##1 z2<bkV>7T-@qu!@$@ZFN;82DTzIwF3ao}MS*_~@e3mnqTl@vHRY5>(b6=Zd#ur^`&P zc)wJ?b0l>s>ARHZxcYs1a$I!--m8@;X+HlNJvnpyF+DkZ_(?rwEq=}d-mJWz6Ua(Q zzotZ&lAP1NRf)eV@HT-z5cng3KM}}EP=BSwzY+L50T1DEvC5-$JWR*qb38D|BXY8w z#}|-$xQ)lzxFYD0H6BZ&9Rd2b0?0;;drXWAU_+Uj2fVmA=DaN%M()up9>(JFE6%uF zH+9D4F)BWXJsib(lryKFAp^=gSNb_U{i1-ce*aZHNnjflwjOOn@W=YWp9=iBz+Vdd zwZPvB{Jp?G3jDLczY6@jz<&yO$c)Fzc#w=o$M`yB7tlNq#v@={)pLd1gI!!N_wW{v zYw>^<U&H*3@4;F8LV<4<c(H&lP=2YNJTS#0Qoc)x-y`6<{wwwL0|KuS@W>JmDe+hm z4<hlf5sw#nqkiBKBGS<EzE0VrKs@}z<32p#!y`RB#KU7dJgCE?IXsNR<2O8T!y`64 zRKue(JRHLVFg)_YLoPhl;@J|7J)Xh?DW0pu&k^uo2@j9(xCoDS$i_Fgp}|8LvcU`4 za0L%g@W=!YN$^+%4?^(h0}ng!cmt0x_z|_tV+uT&z@rFWuRM<%@PGl26z~uMj}7pk z09Ok<48Z;W?)Z0C|65h3JNMnI@9uo}<GTajJ@@XicVE3b>D@c;Zh7~|yCdE`@a}VW zXS;jZ-M#L9b$6({C*57>?mKs<xqHjqP4512cZ|D7++E@B{Fc|7GQumQ*Su2T`vrbL z;LQXq_9#xZkK?sZ(>pePJuQbyc#!-gu|YCZnKjPyDk=Ir?*}DN2?<YSuEc`|@3(lB zES;7^ot+Q0pgdoE$N9M1#lA#|E?zoU&-#F!fxBGkocmk#JC`z@kAH^}osVaQ&8(E^ z3|vxXK5NmC9vrPPcLx3jRqcE{tJwXl@|=PHik`B;zRtPb+Tkqw4^=YDx&K0me<|Rc z+f5+Ovj0(e&bdcL-8u)(T0*kXtY0fO;{4c`ZaF_5Y8P?t?ELuU`nfaWY#?bibabfB z=&bjbSPOB!K+L*eS3XM*li2)N=B2eR;bdC+f0;TbE7CbCyh3@S^p01lh~tM#c3J#z z$?o+kISM~q&J%v{Yc#_ol0TVWBf(tG1ZjQgIrj{fY49q&W{3CbnU@yE512bBlBc!7 z8!YqLYQBrwpQ|UIjXwXrLWv`UYkt%Fu|66_`7Dee70WB{16krjc-445iuZT$su7pE zBPu1Gc~HxHBFmR~J;&=DucBlX-iw|s^8P%pRbHhS5wG%6kB)Kj@EfFgOF0ttlZy0o z)+MZa2Jb})H7a{dky<2$NSb$+x_P&LrF!@41)RveL{CGhn=qTrQz><{WT5xttMj~$ z@hU@_hT(mf^1i%kNZz0KAHb`I=Yx3v!MtjyK9u(ySnb3+xOY;<XY$c3|1rFNEUyEs zD<3fZ4qi|2`e<H1k=OJzmyRst(3HQEW$xnjB(Kt%PxJn6UMF~!23_L45KGo~F+`bX zq*KqZj5O=V^Zs1`1@nWXL7KY=g!K1IY^{jJ?VxL#NH+M}O<tS43XMf#wwZE;S0Q$q z++1b4h)x>e)1>D?meCaG@?MsKG#S#=5HY&RGO`ssllQV1Jd5|A!t1B<`fQ>8rwM$z zfSa*~3LkD#7)tKkz~BZiw=)bCQ{3v{#;_OYwWDO0>?C&*I?B=Gbl@9Q^*0JQRd}JE zUL^3%0^cHV8)8wGC1!=Bm#Y@Hd3?8?vXYZqKpr;pbm7X4B<?&K%2Bft*CT3Qf3v>m zEdp+8`FTCL!1jxJ`Xzy17Wfr`tQ7a_N_3;lZ|ccyGrz5;w+gtR_q%%fJpnh^xRHOT z5ctO`=~kRS)zhB|{JFp=0nsfyf2)#zC-C<I4_kP2ThM>#=l>~?^}GG=lCA$=F4?*r zch1jBI&u5iTlC~+w2Y4@??yH00DXHwxQXr8^mDhg{f3@?Q{cA*ep}$J0>2~hy8^!_ z@HT<p7x)8#KNR>Q0k_coiJsh0_h))?d);5?$<20ur6;%E{f(a7i1&ATa$DX%=*dlb z|D-3k?EQ<L+`#v5dU8A8f9T20eb1J-=T^T@*OMFnK2uL_1N`5Ga(OpI{_jG${9A+? zZX5l1J^k-Ox%~ewl*@meR7W=}e}kUfy8OQj<??Rn{-3i@js^s&`BLqru-`%T>e0MP z^_J2t6<f-+ROxdpv&O4yAKxqC@O1(*d+|LV$x?cQ)ORW9Qq84&OW`iF<UFrcUYB{T z^C~q_>Y!_MZa{Whm8(b+F!*Y*&G+HYW#Q0Ae<)Kviq{jo>f_X;RAW-L$d;nIWI0LK z_2I1LQM}6T5%6B!sLz%~LLWTG-1EHZBUkO7?^Ekk<43SW+LH2#Owqs$T0@SrgG|}4 zSo=`(^_$Y8mUo58H6>S(Tq$yG$Q2(qN@oM>+>ZQ>>U}pSyI=PuO7vi*m+9#h0`9wY z1M;hs_&Ndi*7_a-?xuDBtV@(GJW7h=r;3ifZ~W<Nc9$16t@D1+m_mCWe=WR~@hNR; zI?i+?w0Q#Sy_eVfczq(T!tHas*We##r993)Ndy^U7CO!p^i;m<X}mt2*R;*D!IVv2 zo4g)p@;T1fbI4x}nt84<ebBV?Os0P_uW6&sD09wpgqK4NIHN2#P8f!oY_gVZH^C0I z&fLBs=A~-qP%F#Jl{eJ9GRm%!bwgw=DWgm%qiiQ{R9k*pVCbwLY9<+F9~os48D$C? zWdj*y_4q3_-bqi^+%d||@o)OwD3iu#h}e9lz-I|ON8q^xDas&XFD7z3W^eIT5$-fS z5l0pEcp_(qIH2gmlb9l!P_uisV2r6B!t2NJN=Cyxu?$i#K7Ru9pRb>M&wKOfdj-Bv zV3aHR2UX-%0<R_*`<sNO9@7ha^9S%<AH=JerCR)9Oc8_oKfF)1StpieHgnb&>N^6K zzk}BkysBTt76+XN>~FRv)dD`tQ6gq5&alb)M7f-F$O^~u;wBOU)Eg2h)B{1PMQlsz z9qRh`V+s8x-6vx1`WAh~V_CAm>jbYQUdhC@GEIDd?@*uWJJhFa5%bhey;<*6-?P72 zLU|Nu_&nG?)vpoK7^to4Yhg0Qr_}FLeeLd{kKq@5Jg*u(iAItwH3#&4XRM6XHI@ls zV(mlR0Hf^xL-~gLIX_?IAY<|8JA8`{4|dVs74QD5@42EjWg?nbo_%-R5hN@jDI?^! zUx~kNhR?I{b0!#wztg@1@BXH|-W?sT<Yw5<es}xnm_(wn*Xv1=5r6HW@?T4lb?iF@ zUQUpEH74-8=U##9yS>}Le&7e-`fk=8_<Ogz_uDt_?)DBkt-H6bHg8Vu9!@_nJ2UgZ z^_lL?=C#I^$<5A{_Vk1MS8udWUD<7KHcypKmnKhbwXWUW-f!+6ZME*+Z1=jkN1&eW z%}h1j=Jtd8vuE&cr@J$IwYWL)K=Eerq5X$CS39M~nX9L+G@GZ+oSr&8aW~p^H=gdk zF*6-bPn|m2zq)^LegD*Md;jRhsVn<OcdM8;_z`GpF8cNdT6>M%-Ge4Nqu1)}H+Jtn zefs#!T({GF1m1o(J}F(zJFTZqZMSc<w$iV9dvSzA@kmtE=<Yp2)ttK0+HZB*kcN9V z4_n>SJ2oGpTTHKRZ)>ZyjpX;p<qms0omOKj%C&;+y%zFN4#?L&z%57^egZtueS{f! z0_%yM!U#{03_h{n^?GpMYd5d9I!bR|-O)|A*XUW(kbk}1+i!LKVehEdx}o%5cS|>| z8@(3aj>3&jYrmmnOwYZ>q3%1qPRp8&63rb<lW;4lu-9xfcRcICqeiE(-)ryt^I_+} z`T;+(5A<*4@0GgK=<b|u=D;hF-#m5LX{qDTBLm+ZBFn#FSYC5C`oKodx&T#dw;H{p z4hINNP5(VQ{`x^@tJ{9a8i@hv_Kr5~x8Q-iJvBY0r#;kk>RPJ_8mE#Nu)R~=_TCn# zSabJO^h4CKb9AK@UTf^CT=Zn$p33yx_P(d@H}+M)UZf94X?tjbG+2}TvAvI3;H^DG z5APuhpFyO;XLw0R2z+X5f2+;9)Ay)r^JcHrz0M&`J)J5}>s8&>E<RRu$M-1MZC~lO zEFJg$5=*_=-D@;E2ljR%^B$-<?!h>awcAb}<9jsc@SxkiQ4Eo!`al62yQ#<MXW%$2 zT1xV692~axlSg7y>al$VL==_cC1~*ek-q@<=x{?leMzI)Yae*OBd>V?@_WNS&OWr) zXkJy}qa+XChdfPXWk$n*N~2qAvJVb~rRWx1e{YY2flB-iKe9Wq8E@Imt_?aKQ0!>G zjjzK!>d`%zlOEBvUJjKUaZ1?_cw=pe+i2Z@d1<wzZc)TW&<Fr-Z?N|bv8+g|_rRXb zc4V|VoqeCJ(QPUf9~z~ifzd5Kl((lg8(pgs&-jQ&=L+sY2ywr8a9|&Zhj1}O=We$x z53j!7+-cYpvsT>fhNxy29e@P9l*1g~Vg~w88tvZpZsUsM{&hSW#XIt6vQ{HwR%LGs zKRdPAZ8bVgBMqw6(zbUG8mae?2BLXUdswj3-uGs9dww6Mm!jG%!(NToHEmkzHXcVL z6Pv?>Lw{Xs|603qu)hbo>rJ)}*>8|Hp#CeZp335<+s*x+V|H|l61>fz5WZjSIqbBr zHF~Yks_Py$n${f9;6rB(9qU6pKj=K;L8~0kgJd<H;K&7ayMoVjmT}Z;`>(*4BJPH^ zHoDzb$C`m(G<pYn?WVuG!(K$H5#F%5YX$AgEoJZEptsZQwVc;9`L)Q{^M*P`A?2`f zCHj@v5ayBp%80J&BUfR~Ik33U@S+v=a`m~|jpg#?04F)FRi~$Ltt?b82PbZv$gQrQ zU#pbo!wZ%B>!Fn?PL!s^3PTKBZ~LHgHN=d@Xa!HIESHy-R_4N5fxNQ6z<4eUYil7V zUx;BOAqa|7leuuN9<Hv`tCz!zXTzmcG+||70oSE!ZGB;>yjTxzSt1wK*XNh2=fd+r zF;_=p<Ja)!Xt&kD_oZJSr{|0rhhVYxF%#*}$Yh}T-o|OP@mzJ$8VL}bD&pmHVJWO% z3g;^qgY<(w86O)$5ZQ0-hTWTc-Jp2(Z0=ljeYw0EF0QR?tk%P&$-=$~{o{eB1Jp~( zEZknwuwQzm<M@|DUxo|i`ua?`T&)F#Q^nE@K8X!qSXo;S*EVY2^yo1co~zG?tLtm? z)rEy{Jq&US^WogmT48(Z<n|WG;^8>@RB3@F2A-O;FRPy~uT|!Qi5nB>pAfgzwaVOj z!KU6xbZqb7WMjA8z!zIez!cO5VKfYbLKv3o%eC@yB`7>v#l~}zr@DqZ=|M^*kK@IL zftN$Px>gPsE9(W)!ttO`C>-sBRqeO7#?$wnecydSX<~dlI29DfA%5;(&2^6ULr86q z*=$y}+Pmp@4rHn)eX?K{tzZ(ZtmAvxr9;wlbLTf|7ciw(LpHg*j=m}sNCSG~)@d8j ze7U*b-0lXG6Vt-$n_Xku=qf{IJ>){XaJ$#J3AS~0yS>{ggxeS!bUVs4wjLm73yNoE zb7<PuOmJfBM6O<4#54&eHCy6BnV+bF?Z*B=uf2UU+-r2Mq8-KDgS%mCcdyV0jlPWs z4|bwk7lFxSLZd+GP7_^9^2T$O+RFMyt@`BP?6m)KuhoIP*vl;}uiuy~1!yinmOfOM zRwqk7_dp@e^$~}GY<$GR(z+3^us9J`F0TT=CTEbkI5!ubFJG*L_4{jc;oQpdDzGLj z*XA*iF)TA6B<zjWjdm}Xp5R=mS8Iz)6&u{SN*!;;^vNdW)+&qPT75Nes47f#*n`kr zLVr)^s_WI|${MCbc_~QUtLS!f2a0wu3#u4m%HmV!3eEALiO2cM+!9{5JRbrDc5QeM z8(Y>p>-Vo#Ncbw~k8|buU<R$V%rgL>i*sSMG8djXGs~}Bs$51F6mxScOH1LUN_Fx4 zx@ddp%$ZzewX(L1%%#O}eXcxrzG59Ww^Xjz@%n}G#?m_QC}IE{%k&UC-Df(`x4Kdf z&w<#0)Z}&#_OArd6b!%{(KKME@qteJpwsT%1S_y+8=YFJfKY(}*r0_VA!oO<|CUgW zvPjrNz6iJwt8=isy9r4(-71ptZ1y<j5(a&tioskf*A^?`rE+yWEHA8A)`BVHh;2-h zot-u&iZK%?4tsmuD*@XaJ)sfx>QgE!3*n_X5Ia!F5Wi)S2agUQFZXsq>Sw{&!-H#( z-H!GHjNEp+wY$|l9onSqoKEs0_Oe`A1_`?WdNeUJF}tMq@9bG+dOPoljlhi*$Kkz5 z0a!D7uNOd^-1d9?V154F%E}TDC1)?dR0v8rX}F;&u_g&rDi^}}@_IQi^uzG%Z9=dK zN|R@EmGdigOjaQ699V2|GPe-cE9<LOU|#(x5DP#^VgX>IUJ2(eUk*X{RxTNy?zdW7 zVF*1CYDpI(4}O37T>VTKPgbCLJe7y$<Q5ie#DbNOFzT$eb<i<GlVB!SS(;p{uLo0S zeWorxd84vH{PlU7Bt)7&gzddU`)-W!e(U<SNkk2Fn|*rn9KWox2=al+AxgG$aB#J2 zKdvrTF50)6pj4d?`kvVu&#kYntd-}hAR3jmi@-FaAH%aClR_i`mjr2T^m?6>4N55O z8+Nlp!izi6UzG^19kjQCs95mmN8<zVV=o-sdAKuv53;SYz!Z*j(bnE!@8)rZ^_t+$ zRMp$<PPcbl`Tlma_f7K6mOhEMTjQ-+`$@Z^#MG-gtvyVh@L|1CzZv;P<AgU%90Hf2 z+zT-$E%=7v1_%)*k*F`aGuQytvGD>~yGWGFJVi*d{A5%Ec5FCltZQkZj#@DHsw*)= zIRudkn=pU%TE(C=TXcHb+-)`Xk1{+{1l2PnWSpA|&y_L3>;=|>)HCt8U)Urv_a!<} z>xFw5`Gehd^QLefGF_5H9pQSXad_D33<zCNA5vK$r_dotwb7rZIE0wb>+7JdmD+r@ zY%E}MDz|$jY#wzsk6@L9eH(3RN>DNJ#hxJdL2k({g_qZBm`6s8@N?OaWE4)5bsCeD zjGh5Wxi}qOs?M*U2WPFXuT|$DQsMU(B_JG^nOk340Vh9`P%n&oWvy0TGKN<V&x605 z+o*>t=bltqTMLp~d?KiX=?uXcCpoLtT4<!z1%vo82aVP2g6Y<K(zp|o_I`f>5gDbA zJBGk)&}&#%g|G{3rK=O7Wb?;!>-G6sSld`yf@leiZyzk-&hd$HX#TK)hOkfe+L&A2 zqs??x1DVm=O+kU&$M-`i?`FhsHDI6!MiY`mwRXSZE9D5V7Es7b)f)H+<buv-Z$Ip` zuk7@|WsOQ0SpaDxn*`iH*s@2K7!S4%f@cOOWU1q)?(<@&JDX7*Fq8)OS_x4X3I32a z4tt%jHx8=f6@4-_f+XV>b&dy*O{DW8)Tw)dX9d@HAZiB%^e1_tp?^gRGG@cp^ppq- zW`CqmL+lp5hBP*ZAj6qH9LS9E8fY9iisKfj=Yq%T3b7S}$4su>y@JWQW71+6w!1X9 z6!3I12&;8waWJA^uCI~Fn*h++hY{T@sezvC_j-mx27b}rgl!z}C_pcR0nszV5LzYZ zBxup)mDNhEbit(ROVtGoFQ!jrzF?Si1Pu=gmsGF7>{)vDtjAKi8xQV+;uSy(vul7J zb>VXnqHAq#4K*YQ^-Gn?YH)W@gJ@Z|Umlwo+<PzT3O*^A2p*4`$NQD;i4jV-)Nx}I zM?*&P=!8jiu=PN7P04il%I41QmPvKYi-x-i8F#<8ot|Yr)}AvCD^ds{vvAD@Z}X_V z3txfBOG>kDHo4gKcbAH{x2+MI4M=F&HW+`gHdq#Z+CA#FFkiPIteCF=<GdA+xEuau z3?60`V&XV#US^Xs71$jY5rcDig-otmJ6~C=uE(-!xH=cEmO+8ZoKg?gkC(0WL;CVE zxP>e$CP6_lx`ZkLL`fqtnCjZ4H8U)Lm!dBq#!@AM=vY~;SC>|5z|dml)b#v9E@?Fk zY6DDlFn2u1?sW#n))%Hqvs1IvXG^nZOcP(;Iyl<gZH4D5iy-o5nW(Rp=PI<Sz@Cz` zUV|C5aR{nv-plk*_vel0wzs?CLr3W{O2LcN6X(inYt_nHJ?>dhQ5aCxK}Mm1#i|%c zDJ0kS0baV_Y`KCEKU$}69Vg>}7FD7D;jcWu79_WBW(gtqW1hp%5KHy7f=n%O)_88e z(|Yiz)de%Rc3f@UjI|WqV}w94B26vAJ(wKA>ZQfC)u3QE8}&7t`IAOWV&WuedU<2L za=E+?(F}4u-_Ze^XkY2H;J<=4WgIx2f*OwY@fz5Fq!q*lOkpkc++2NmWo7+*eZ8_8 zUM#OcI#~}+$kf{ENZ*UqH@+cyV*5<i2X?ci!L+G+W?iUUguJj^SwFur4=gk_7A>=B z7@RdZ$1L~znXZfz$8)Aw5u=EAs1iQ3#!XD#=GEPUE8#v(yXMbn_oV6en!OutygfYX zT!A&YbJN%?nguBZU0TDGEKbBC?vObL3C&DT=Qp7F*3VZLFomac`&T*#M~7XPNVcRg z54Yl^GHuxKvG|}P=pV2T=XP4g&XK%%(48oN^QLLq!R7<-rC|^s0_#NHNu&1C&?$|i z@hz1c$sl{JUV}mqTL%Gp3kI$slF;ySXe%V<QV89vUR{aoo&Mx`tLK0vFz%EWE0nKG zVJZb574y5Crs{He{$e=4Qd_T8V8WXM8;1L`a3lTAObU=@V)7QLOmQ0K1<XN-P5bgr zbur^Ilw&a0D8!shhD1Rca|e?&CT7SCW~OD6s=7_8x=QoL5Tt;y!`PiQ4gAf7a+xCo z0Wh;e%zaGuo!-H2t2k{RsgE-2hpftVT0)Hc)0CPvFLWPjY=vz|8|fh)TEI|hY5p8$ zRN81aHEa4*ni10O6(&|ClP)-l&ZE{=Ag-@V9~)wi9g>aujkov^h5mx>&OxU~n^i;s z`vkXC@;D^glrYL^R;~fpXzIny{mUyG_1rSp+hPgg;_0cW()8?^iK&U1nVH$?$*GC6 zQ<2!P3nwAOa|-L-VTrvQ!w+oor8_lFw2m}Sg)3oGlcmUb(LLO4_h7tmezPHs6`E}T z1LdH7#wuBwPkb?18%-)Vs?fv(u<`pb-_BR&H{i)xjCq-dT_paYCIsos93EZ*(<iK6 zj`+sqgl{C{6Sq9=p$X^u8a^b`Y|&`sg<$$@F6MYJ5JRx2)aEKdl30Vtjgpn5!;L`| z_75a7Yl0f$R%@#p>w(S9_=z*mG-OOQ5;x8JFjB;_!#KQzjj07#n7Rc1(B2PB%_GsT zmX~0UT!V^~xcA^{-Ea5WaH2faf``VGL6BVjulvC(a<?11-PXy#@fy}^$Ua*pJT{JY zdr>WL1MDD#2Sh7+L8ss&*Xly;U?st`Fa<y%jn%9gO)VPFj3*hiBcEh65YsN~ZZ>lT z8fGPKHn@8s%<k<WfXXzS#x8;x!remi<ZepkK|-YTu)xWnuuDaSmUFYA7q*Y~8SG%c znp>&OmDkPVl$h7i^r!@01m<?M*XUjiX3tOr!DKtU0#+BXJ$uN(Pt?5H1@Wh(pKg>V zKua-I%-gb9+km9JR#~e&xv<xG;N)I=-_#;FB`hNhp6~?BL(^?M1;lk_4e9qmx3wRP zCnXB@Td+s^lpzRq!z1(}kSs=H_+$GsIhEj{I!_U7&E}Luu(fmYguru!PwyQxy3KYw z`kVq<4{b6^4)8^Axxp#1Qj=?73a)e4y~hKH!$-{?kTFumAMC*M4uWrHNU7(R0>|q$ zXw$j+dO6&v(Z~z;7wBOm+XByF6k~5gwB=J|Fk`@#v86reyJ6Rp-IZI+^nkfwA}23= ze5|f_bi<_epg1#?+c2k0ScAQ~P$=$N_fA4}1QXkZiKYqh3qC;;a%r|Vf-Bw6up^VC znjxb$b}jG%o`@n$;}RRzDwWzg+zpV<B24O~5DE7v2<;h$^@Um_h_|lwIoG2}Y3VY& z9iv!5$TJl#B}Jusq%R9Korf0~q$=)3c*Psd=FwjISCUA)O5~v@sr-kR=Qd)o3Nsx1 z1fIS1a~li61XQ?*iGE3^k7e~qI>@y#0==(qz@!drKn+IRoi=1$@M!`+sz9XFst1#> z4o8^ucg7(fo`=>%PK!){g1aBd5BoB5G*ASS=C|$hHJO47=L@^>%GMEl5J2nn>$5rR z3Q)rG`pPn#2Tm|aD-HiZs(UwR*Dub@Qn8OvM0ESGUp_GIFr>(ME+!fDi&F7IFu-zo z-RP3ZQHaL~BH0D=W{B`Id1iLDG&Ma_oR~msO2x^uOSz32)cS=b%q?Js2B^NWu?Dt^ znW5*J2SNb<V9K&Ul@Q*K-7rhX(&=y?Z_GhZgKfEZ)@AX9j4TejK7&d!siZTjt92Qv z7@h#ss=={ZK|sdkz&Mjl0wA9$qcHbdcL#X9w6ZqO2iPxdmcpPP-6S2S2pIcisn9K+ z?3TupVWpfPt;!^7%MVasJXTUc0^yf4LAp3S37SOAAmxGCe1`_%E-0)Som+@4EnI7u zU+6)*&|EqmAP4jd>Ep73KG=b!QqOnXOXeRv8Y5vwVnvPUbAY0t;`puE&W<becvgqj zy9jS4*>J1f>D?r;L_87&gXHsTh0!I)b2aNX*gPQTiynZqo5B$ypb{PvI8fn@>__I& zB@_Czx;O=N8_+in75z4(ne>TLY4I|!n>R`stBpN_1BR>B-C*)`aS9<8rRg)1XJ%&4 zLRrBOPM4;qCMRbmOJ^bCmu6<BmU7E$h?80cjzJN)$Qh7vgSxDG;?&+`2})RGcY*|; zvO2L<M2sjpN7~nHsWdrxwlpz0J#%L2?AbFj6K9uBf!jg2g^^`?GQm^48WyH`xRESs z3kF-Vdzdp*HbP9!h~{M-wdts=tR_G|u4hyAf!I=^v(sjpsJIDQ5c`(F2Vv7%G^-s{ z4kKj7-j6n6=YXm(izE*>+ByjWXX25076C280t?pbLBVpK%90g?CKR^DpB_B+-r!T1 zvRtlTuq5E9L?Y97p#RhBZ<Dcl4)!HEYx>gMEdiMqFK~$_nq`1=KfJ@vh+Fy`%t;~L zdmPs5tjoayq{7QsodGrri>R4HS1q99{Kje!-O%c4>V}zE!$o-5p^LaAS%Qb(H2fY6 zn?1b89;_4Y94|c9?n`0OGtJCzk`HEqg+Wh)7GkWTCsfQuESU6HTe~+4W@t{^K3X>p z@gux|87D2iiukq+Q7D|NR82E1bS)O_3WGjvoD1+7z^osq(Uw3L%&8>NhBf0b84-^- zsvJJ9x@bKHY7Ux?FoM!~pwby&za$%HRcFB_tQ#PjbP;C7s5SOPDgm7Vk)?9EG8asM z0pbxoW${BHO>3ZRCJG`=(TTt<vh7LeL{X&Wy!kFS=GGzZn-#pg4m%Z4RGiH18bix) zvdY^Whf*Yuv^+7S1x6=CSDAat%)>A@QbR}J!cqlZQ2WBJBF@xM-ZQy<a2Q*d4|j75 z=JPRDY17vg3|rAb^<#RffB-a4g@G<kOw4^$<|G2yZ7)};!*#k2O0}_yFp2eGR$`=S z<%}b=peD>-GcYM2$*k~f!0=@BG~-U178M82r@n1x&m>QM8}B1I8|q}A-QGncWq^p5 zppC+wyI^sJ3rp~xMUlUVjJw)0$2kZCBxWorNwbsVOPSY4vBOCXv|rOj6ANQCu;62h zjpydz`mi9j`o(%>*~qLZPn4JGGjX92g<!(5xSs{6ArL+j6G37`rnP7h7zhg^cmn6B z$g}V-9`e#e&SH<<Hf24UYHc<r3f!dIAhKmaPc{u33M7W2-&e^j3EX;Ze^hXP%wNCY zo%UKnBErHEG_<q5cd#FZg~rKEd#O#lv|rQ9G4?brj4+jx!KP6f6ZkA9fL^C~0^`FQ z+i<8^^jc|RDhF?Sd5)2R90nT&Iy)As3oCdhXoKAe5mSM0!p0<l1yDDl{f!wiJASm8 zd}E097TR9BGl0XMloIVZvgVu}luQ{Oiwrn+wh<79)d;YFMG^)K0%-r*rOS)58C<%& z5xZ^BA#D#5?d*lu8@=XEV9|s|O?DN~$dAxH*b-vq<P?uxStsCm!H3bqX_0sM9CUeo z{Q}%8MqxTz(!paqgW+ZY(u2pG+f#r#%-m*d%p^%l2>l7U$g~VMo`OLU3Jqx+e92nt z;g@W!?h&aA>o)2#Zc2BW0%)PyLWBaDHXT=vAR`Pbmui8@E)a4M_GskEUo%~tI)ij{ zl~G9(-VkY4g1M2?WrzxzPB#s3Zgs;XnnLsNNVX!}fNpfJjt51vSAfM@&SL_+1ZC~( zF_NkH3ZT$&qD;Xv5FTRu7pkQPOx#jNVO)d@DW{;!#7vn=CSp0dR)qz9%jm<fWN4J< zVFRQYH3WlX2ts4`dIO7GWJWbhno)?z^kh`R6YN7HOPWd2)Xy;Awj)YTi^)KQOr-Fd z*@T(ar<m#8)*<ANPRra<Mi{6ebg>i)f@$HIj95Tw2S!m`p|Rmwf)bT@=@|-xK=JS} zC`8pf_OU33%CY(dg4CvUW;PeU?@XAEW^xfCY0P!O&i5L|pE~h$SPMtwnwIvsr%gPL zI+|5i99dm)WOc=-TdYJ>UDPjO5g}P!ell!fk4JOt<43-xgx9Fhkm^cFb?Qx3dhAC| z#;t-L8aHaPzZSjG>Wa%;VY{QggdTfr9;9lE-@(jH#j=+ABSnfMB1JIK3=M6*MJqNG zJc5-3@RIcob|ObvTK|Pm)akeS49hnx1<k<RH8bPE_EzI&Fl+jfd;qa89Ci(aMUeK@ zR^Wk->7-9H<Gk%AoLHbdpzKy>15pURYz`(+i}+2;ODY4E46o*l>Vn117?D0WE~elh zq2bUvhKE%qR(1rjo6<?%0SS5UU<<2s5HNivha{6U6iXGWa?s?6f!kY7^$Nv}B@sU4 zknAnYi|RpGgDnLDZ4sOUfiR$F=@1#L!$Kl#w2-TChpUyqXib(<qh;(MMXK4-<QXkD zD#p*bSeYv@Y%Ovdoa`P!EI_Po=L*;?7{3MWTT!DMB!1w2b6VdL|0d9nfUHT?sy22< zMD+%&*w;D(i!x4QkQ3A6kqXPwT9u;(mW9DlNTC7>(gIsL9rz}#p=?%51aQ~ju7pBp zraIS$&f5Y3;DJ2ZLqrj%7?C;y?@EQfDWIg>l3UOsd#&{A)9K^6wqgs?1w1K=0Wf(r zQ-K?$E!n3FTu%_@5grhfX3n?+>JozG>TtxGVzz*=bqE%)O$5np4r|2Wlmsdu;MD?H z5FDOv#*l0iZhJSnIRtl_bHV%s7N#Ll4*@$tB#R@QO0A6IYETCJp$XG(vnflVd9i>V zef)>03q0(?@kYw))G}U55p#|{M$(1J089kBbHqh%@sontBJm3t8rs`%R9PTiKt>k5 zozZm91bRjZsQO_w2W;lHn*$1N?J1_)Q+$NmQ+oLADW%&}8q%J(zjwgy9&YbUT5Fz# z|Dv}VJF_`p0nkwRMEvn=B%upSOdJ4+=`7`H?mR@+RLC?Ysw~YGAG`xr0i8P?@$UB^ zs}HqGu*bG;a1{k2MALI+FgG?7)2@1pP!P`sXO=;IVJU=Tdqrz?WG^)P*J7oH_(O|1 zTq`ffx|yj;h<rTQ!)hxFNhMda4gjGKa+j)z)WLEl_~9-<34tcEIKQ#H8f4PpS6Ilw zJG+cUe8IG_Thjty-E`keJe7=Zn7Qn*)w-IBX6GYf(aiLKXiLSl$4WsaUU71A-j*|2 z0Ag`Es$UTenYWmX0djs3D+Nu-FHv3Ddk`iETbvh=J;jfx5KL5|afr}6YB7|rSb}CE z^AcjRmn~?`D7l$@5NFzp78UXyHE`KnT1_gQG1N*zCHtKBndX{%@d4WpV?ZU%=6LW| zDyA(CCxGw_+d9_OK6wqo8N5wUs3y<O7N^fnU=y2S>CD;5*$Fd$z^H+hP3!hau+OZ7 z<yA-z@EV%q(Ki7hCr=}&_6A|HeUxdsk$a8y4_gLUf%9i=Bh^iNjje0#ZYxk{>j6Km zbJ(hN*k1~pN82W*7&vubmtsxJrgbJ^JYIlgADeDg6!~K5)~>W^!{cw@8kn9s5&1G3 zn}|(9K@9g{`><8QdJ>c5FsO5wI$@o5pU8z}4~ZKKJc)irGCa(U9FRU`e#4>$Q3$Mx zoZm2y1s04!si$5#Fsex^aim^>Mh+`|>^|G@$&;&>E&2nh^Tz5r5Sh+l8z(OJnA=!0 zK_g|ILF_V?js@u?1)?j1#4ZlWgQ~rbk%zfZXw9WVjGsgW=%M7<)>m~9#g(hAn7IHS zHk~WaKZ(-<Eyp@Cv*5tYMOJQs$#g>F(LA9ru&$NY?nk?(wU&+r%$5p^1cr%nD&)%@ zkRhx*x0MHoa#Rx_vD>nHwaQ+L6;KR|h{U<}9$0<*aQ9{!FI=dL^GvaaWWEpO+ALX6 zuFZnL<zdkHqeT>bYbhXY*b)fZocmX4X|-7N+u%;z!2~pp@D033nXC=J*U}86vxM=V zTP!OZTB|~M3##SReOAT>#Pm=LNg`kKdZTa=yhmS&<yg^zuwiva<q;-)k2P~YUOqPT z6HfZ4B#l4{{7U$3)JQ(X-x<}PZV&ctFzd?gHOC9T^IBtJHbYvIEW48jD~ZivSDDzy z?$Uakl)We!b^Xwt$wH6Y>fb0P^7u-lPJdR=LPSF<Zm4JPgzSr^0VR`BLL3n{)hMVy z)FuuaiW?T)6D`s~EE18~#A!?elcXD=%?AYTVS!P=DqQll{3qDL5#T;7+xIH-9s#uj z+wHWr;nhhjYDo`8Rrz;Vr&^7+tOYfuK4xT>^wsjrU=zCMRZh0yA8k_L!@yTeq-*a0 zh8+L-!x7|`7(c2<S>?MTdSnLk_%7)i%RY=a9>+#Z!@epXar97B#83p0o*B_V=*foG z(WB^yCRsEQ2j{J?oU<?YS!;?Er%5s~QM1N;+zN5>L_L?8oupXDcRpT1UgAVWy?rYx z7yamAO)0E%ZeSy&x3klt9!%j>AGK4{vt*5=F`|4Jhe7(rZj8`nXa_R$|7-H5kMpL) zwC-W`zlZ7kH|qb?SdXHA(dZ55D4Cwi)cA1dN2Zor_kX|m7%%e2%<|w~P5VKS17@#m zT(IFVY)%o;cvf(To&KI`7KDRs#{8IL1P-n#_!jQ8yhBhHyvBYvN;Ewgka66@`cB=) zsWME8V9*@v1#>s3UmW^Re0F)_U3VF|OQsorcj`XL6cj03qVNoFf=en^jKoYfwv?p7 z;;?p|PMSFiC9<{0BGb@XMxa4|HR}85%kO0e-lM2O6+H#lmjzSFJ;*c$rDxNk4m_1+ z4Nd>D)H~G+o{;K{h!z@E_c1w)`i5igU6TsVO5`uT=VV~Nb%9RQ9(v?Zd5s0r4YdS+ zGk<CKBYvunh=1hhVhrup@3mjS;GghMCxHCr<}Sj=%|`@^)~6~&Z!;Z*3+S=k43tWa z^k8Z4k%){$1L5y7!7*WuSXU{FVxJJss*f29A=uD{`m0&uwnjrG(_LcUdTXhhFY-6= z7Y}P3I0m=V=~0J|7@O!@<Iz99V^CY%_Yuzfs9@3XZUBA9wlj!p8j8Qsm!}cIdf=9L zz#lXZb`R)?94yY3Ks7=mqR+<daD<E+L5L=g#;p_yKw19AdIAl~h&;%%lA^<o>7zQn z@8|5@W6T}#7BP6|JIt@dl)#*f!X2JGo`2m#f@<2Qq`2hkkktS6X}aq@5z$rgvPXn5 z^+|*rnTXV?QUB#^C~A^+Z+IrV6D&zAwwUxG+nVmByY9Mm2k}QyWv5WvJNU&ZQ3>`T zspdq3NZ=3?1up8%V4(JW-VCxtjH5xLdAC37Qx!y$bHr3mm4;45j&U42WK*IljgAbT z@Pjq7>`)4osd5Cf7_3u;Z(Zq#Pq&xHM9dx%=_d8QXm}zi(F$s$_!F~AT4@`j{&|X7 zlBzaE(QTZW^VCz2>r&zk2jKXwO@3o{l48BlBxw<|9=dZ*A_v{7niSuUc#pN|)|1{U zMnmlL_yeay<k^}4cibL|`E(gw*j{15?<_Tf`m<bWa@}Icta#s85gi`pSS7#FSa~aA zuC8zE-`*%0q+@>%Zb;*E+{Tz{+~UK;S&|<=ivu;fkJ$<lEJ>pp#-wo(^7=5?SB@YH z>_hd3wZ;Z7{+86MfN5%MqJW)xd-RJ`V@243kQ0ue{<^6Bn!cm7hgAE-$YaIBYkZhJ z83`AL0@2hOLDf>P$NQpr$sbs!M>TK&hLS}VP5smbF~gpu7N4=V)=}c0+?IfxZM-^a zq+-JA6XW}BO%|bP|Bv(<>y|+|Hr1@;XMHpD?fAV@uR(RVUqeo#;yXxQIGU)hul2W2 zUy=%vDS3>hml}<sn3n3+6u!k6bNi_Jh~Q>4RUF^h_z~P9ZYG-ku8pX-OZWZ5W6X$u z_pXC-13YcG-Q!p#GmCNQVS5-8KUE1(H14%yq@f5qZZX3mqQuH0^$DnTdo(-MB>aZc zVWfy|wGOiyMRUONiQv&3<iki4*1%71ujTQZyxs9Le}3C+CiAn*mmQfH;e#+@I%g}0 z25ltoNp<>3Y#}6>HjPv4wA<t+`rYwJ!uk{DlYWggeef-PKZs|wGoAQ*BmY@U#*Q=4 z#J`A3-hS^yOoPoHF$z&RiJa`<TL`Q1^m88c-+^e|dVZ!*D}&572KE<COS>OAEA3VB zj~>=+vR`H1?LB>~Axt+tnnt5gD#E4_SP^|dR22I<jIdRw8j#GF|7oI@=Knj`uc@B0 zu8lRUgjTrj5e>k*Fxo{;d<SqOCLR9+NzOA9o83@n0%yBv1^N%@HOh|ev*{K_n*K_( z0l|ofJlon2@wC{gq}u{R!|x;Am(9sKf|IAhoz2bhO!*}5q&Bs`6U+VRaK01kUd+s7 zV{IJUhME=z)9XD}&n*rEvjF*$t*}VXC~zv4Fw=5<w_8cAV~0~{3JfQM<|bN;MlnXk zULAZgc5TobnwuWoC=*^^L7Ec1%_tAdkHljOO^f3kk8j%up{~DiLXBIE9hQi3pZ?=V zjwO=evDYL|Z`VM^;dpYL`wQ59jaJHX6UnHz8cBUeG>%>+9!EJc`g<&rtKMaYlLC{? z1M47<EkwuIwzvc6b9{$9OdRUB6!cB0|7HlEAvzJdL`ddn6FmyKK{S%dkzjsAo%+dC z^y3&|S!sk?P5_3GqT|LZL(~)6lQsw4E@>N4RfI)=BuXR524YBCp!VF=^}i?SANmCm zE|6wCj42Y0>?2JyZr#Y+=To<21(}x#6Vq59^-YA^ee>kMiX}M3i&_!SutDZN<a?rT z@V5U?9p(&+NJ3`&S;TF2(8EKq{|Zi#X?P@fMq|rCeRypixxOR)vWL$&(lh9t!Z*^* z!@^<{<f5KPuzUp3_wm9!%JQR3y+itVM3u+zk^achEu0_FIk@>S*avHf8L~yj1$Q3D zf{)h}j1Z>e?EYp%z4!3&$W121yP=vI)fUJJuBF^=18$!Qc?<M|+i3!2NNkCOtxh&Q zbk!7^44*h=%!bZ`)aXRi`MANky{|tO#WY08dLUq~bt_sPZ47s<yMOG-D{-DJ%)5Tn z(f(kYhuZ<y>EVXECvYqHA$uHPJB5nv!&aW3U&AiW0d`*1LfYOA&c#i3hr<v=3EXmv zy8z%M79L`-dGip;xG9+FwSKm9&N0Q3V_dOT*cN0KhHd#6Ej7gI&Yo?)hqEA}O(CKi z99zfjEo}2-J2BMPBl6P`8<$Dt67b9(T!AeL&!pt+U@tpGJ?eV<2s`*BvkSBD!x!iA zKqBo5Zd?1?3Qet<#vzkfda327SXCR=aET77^z#gglR9G)M-l4G0i42u1IDxisV$-8 z7uvFK4XE8^HeI(dvLJ?Z*K<9rZ^|C!V>6M<I2*FQ;X8Xpdx)B-qZ1PP#xK2%3wK6B zz6OrSlsSMm+Cx2#N3<Q)eXAq@-`17KUPZIXC^UW+Er7HiV74N~>%gpJ8qBB0YE*?y z=j6O9?DKa2dL_h$wm4_U7T4-7b7Wf>VkI@sD>!HCt9=J%!x^4ir!M8KAJ5jifpze8 z?ABVqA6GydctS8^TgVo)L6zk&l7B`U|D;o~{rC(P^HwgcY}nBc_RdOqv5Z0G;aXT& zi+4u1{oBK0sQ@-MXqrVR-uEUtg*x6tHYsHD1AB{NeYb5Brfp`hV;0(vB-=&nB>sRI zSS`zKx0DfLyHU&IaTo`td1L=Al)~y>=wkkZ2x)68wsaf^R$?JC_tnOS2%m9W(dE^( z5PJ}CqhTHrh}mR25>!@s<OOF}>KWs(=7(PzFtXIPEqHKH$G{#tI9Q<Du&r(ENPz=8 zA}7AbrdM2zd^%kKJ%NpbY|D8pyT(2Sc903qcwWItX10T+EzFLlp>GF+9>Zw^EAeR# zwtos1bgx`o;8rTSMYWjBzN^606e(YPG{DgPsI$2kA?(#MS1g9fM$uLy_bakvRk3b5 z9%&u+tbGmYVVN6Y`YP>c8=CmQ7i?%dJS!$50rtbxaVEZB4!4`Z{**WzXMgMHuyErf zR=i=OmgtnO^!{JSLEQi0!Sxo-6fXq@JRADk22j}06i;?43eJ-IltT32TVQ#KB=v49 zJ|5gjpuOpUYv~;U<HuaZc0QP2*}z75AoUQZ(9DKy@He=fOnQ@;Fg(Dq8(47H1^pnQ zvb_d(Tl+{uC3b@fP{taMNLlSPWBX}bw_imY&m=veO?T`^_$}&;i(qTa=HX4tz;A84 zE>vnj#canCKY(f-2N5K<z#`v9ufA~(I|*a2Kij_+$U1SFxH;ltCxPK?dF-v>yO3VT z8N;pcp$vi0u?U_6oHP0s?Ilvo9Xcbx3OWow=`C7ByoP<fYiB?di`Y>^Y^s01r0C!> zZTq7wmW;3Rr~)x3OwIkq?zSH#5k1*F#KsAt9@Dw(fud)pv7^cIg&NM80#0Kig4)Jq z?AW57=Vrl1vm(@t2E+yzI5bx~vfY5~a3Agkyi{Grre$`-Wie;mjyoKhR6(+mJ-CpZ zk;egu%|}N!;5REcz6x8A+Kvf4*(*9$f=7JmSP9>TGQ(@5v}gyA9ot+hItrzarKb6^ zAC^L<3hI^F(;`St5dl$Ju?<SJKOnX(dGZF%=e3<Mq7k#b8FfgDZEK-%inxWuh`v@F zQv`^!vIKTwXS_lvTdZRDUu<M~ZjR*Ba0<I=+SU`=q@O61PNAT}Q^uKPcXs@ISF#NE zlsJzU4B1qoG@jFLS%#OkQEu|Ncr7;o*@!m)i8ct%9OQ$&zM^M)C!{z@dv?GAdJku> znCxrPUOEM@i+2Q19sU#euH~3FXnVKWY43p=h2TUG!u;lR?;7}m9cPY-q%&}nt>301 z*~<J^IM^%X!Nln)>#|iQe>}UV&peKE9o)>v&p^T^LEO8nJq*qLv~L~*z1_tuKok7| zdx$MTD8ZT5Iu)G=pH0I)qDDgOaOb58&QD2h@v-gh5zo;baas)vWKW18Yt|l4<j{so z*s(8a8*d|Q_PwDmR8Yn~&JJDotqJjH`{D(Kr)(6!ez24hr^RLSQX9l3rygN;RM+iD z%6o%r_=a;!7v>-x#4{>Fv1E@K6vDPlwy#~GX#~Y+ktcu|@(>iztn#_aQndYR2+@fp zC7O2|dxua)jPPO$q+RSAeF#M<Bh`@<98(Vcj{$=|!yTpLy{?dIf*!Vd;$+~(PD~}e z=eaM26_xthGLB}Mwmp)tPdfH~!VWKfY*=(y+(4?Dosgtt&!<>CsTG`d@~~Zyl(>vF z7bs>)&T2qm8bPU8<iRb7gL~)zhq9(>vb~c$*?zo%vscUOwt-C!mD-LtrbcOJ$R742 zj)|J>h8OZUv2<+_Jxg+hz|`zgM=x>yXOClIA7%Icx81R=<UlG8LOFMT5O1TaW<v@y zku$x;x*b!1&2;M!$j{hkVDBsl2&n@JY|kUMxr^*eWhiBkHj`6k`}WQ&6mVVyL}1&n z&WuD@Obk;P52VF>#41Ny#EUzqMrQpuZHbhIywJ18EeW#81x%ZV#sj-z;~5KR$LlvA zf{2IBQE_fl!fzqxKq}+jqqdhS{JuCd!t@UDdu*oZW+waw1D`xclei2HvV{Ho$w;u> z5?*BcH5vADYa)>3xs_!cu?jwJ`y^eO!}$t!x*0eQ_D6rP<LjZ*XM#j$CgVJhA!mJX zzXfDLTH}!)*&?<}i1i7x`gKTPU;k_la()az=KMpQ0Z_Q(4oJB?0l?^(VSV56<C!FM z9CnR|Y}9R2h3%dWueNorEt2u=I_WdolDwaD_+|`gbnoLGUINEErM7*v6K2xC>Cb}{ zg)`_P35SQ#Ny0H6*TJT)w!b)b6SnOdqvNXm>C}B<ee6#Rg+D<r*o>br3hC0A(altG zJ|^YuF%D_q3t1^k;h-?7Z`?QIuDdeT@^_gO{^nHt8yo4gy}*XT*jIWmAg=N>INM5< zo7ryeZ=F^#3=Xgxb?&w|ar_nb@we^M*VgTj5}fTqi4o`hT*6NOCN%mMU?^pjET-Cq z-$vj}5u80^Y}+I$Q1;zGoY`)fcnzBEmFSExe_)0oj0)Qw>N6VI0rkNABKF$e-Nl%< zgDY}(^ulh#EEu2<<92K3M#pC;rVmua-e1^bF*?M8zbW8)SHN`Jted)C@|3ICVXyPH zM|iPV%Eg2oyQSGV4}*KMW28)t=br4?IIXtAGfjAh)9EW~pc@d)=BxGcIc#E<e#lWw z$0X^scSEsDd_RUIK6>I1Cp+)qI6fmX+#=D8r`q$qhJDmPhol|gtY~an+Kqcj5)cjp zj{69Q%QwgG!cj+%EX;`G8quiJD(oaE+tB^!hD;A`>N{US1WhsN8158j`|dA*EhKan zrzJyQ-+;VpyCOnITv<k2*Rk(gd|(RjYRV37hSh_|s_q_bwF<Bi7`aX*;XnXOBu3yY z6mWoJk3zwL$oRH)ch|K0^uFYtfM3S@k^{k(&KYVsiMAakWA1}CI*YMg!ebJSM%eas zYc+7S?9S-EX>%lcLf(SbwuCc|v2Wdkan02Wi@`K_W*H|anI2-tA499lEkjL&or(L@ z2e!Rk^pKmwghapE^y5FACGMjZpWkhJ)1^(Bk`|1=#dw=N(kU)r-ENrX>g`lef^{6o zWwQmcsK2Qc;y4;~zU@;=ffWrQEgsw<*r>2lt!h6<TA1uuObb&xZb7<<W^GP#uwySx z?>s#zL^qW$;t&y_5eCb*h_@|zZG>Q@$J@kv13T#(TNvt`rBZR~?9|NU^we3C`J;Ul zb&{KHq?j=|*wz?OqEekUBpcs_4X|5&#KKB+#KNK<v9LP78Xe*a-8_EK$-ecfEaCMk znrn7UZk1ZMvyn{rNQ{|~1d=%v$trHSJjvbPVcgV@AP*$wV)dTXR6EofCp=)oZZjTn zoLiZ+Wb)#a77XqAGR|t+s4lHnYuE&n2it>i_!vSbXzqe|hanATnwnlJE*%*NIBs3H z;qw9G14RZRWA!P)OmWsInVqq*gmYXciexL4Q-$jwAf}uV@9QWD3_U#R9qx6nVE1!y zB_~(5ZzUC<<TTZ1`hlrBHWk-+R~k<-cA2ZME>*GF^+IAa#~~}+LpO{LQ0<#MgSp(X z`?A~wJhln8-lOOdb{i^ywx_H~t~SMZZ=WswCi)0JKb|M}+0p3{MTYfbK2mLPRyf#B zJvb%KN_R)^z^%mCBvNk}NY3qYZs47^5v*BQP$`HwEiaiZV4ba0aQ@1UYa)qRgQt1m z$WGfQv<4X#>=?UtLi2I;2GrvrOo!^?MvYlGIq4kKQH~Avt;L~`DN?_^4N{M;x{Q6! zdDhjy;n9=Wy575+MzOHf=w>$99LRJc27@I{06eV2WEVR#30;F5e7g=Y2~J?gb5H>& zZ#+XNxkWE+cCW+g=ci@&sVL7(&aRHnFh<?i%r<(%1i!dH<7~{G8<?EtwN2)7+60YX z!fuR8@cZcPaXwrI_?cBehd*{z?e1ah3MV=To$J9T&YTP$bA93jPD?m(Z|8&+h4POF zB=Ki<-)x@1&yiz#lXVhh2gz=>pT7~HmDMmIKc?~k@lSR;O#qyUNLV^~0QU-NC5uU& zw-Gs2f;)}U<7f<YgI9s~%6<*1;b)&%sYXX<U-%0kOyj$8Y~Zn_d4z>GBUM_O8a}PP z*I@5Qv@p0k_W2}lMq`p6_%0OqDVjTB-P4BeOEujS+;tc3Oj=5QZChID`=Zv`F?MYn zc!6a5AUz!%>aoN}tJk_hJuhZwAKKd8lR9<OvxAy5tcK^_4k_g5ZO2s|_KZWr93ox^ zUJR6&xUt>$Z(~U(@~nVW!bW2JC^?caoSU7E%nc3Af;7WpE0k_8riEe~`_N*Carxch zu_)o|K+^2aniB1)eEzogROUI;=D^~9-Z=RI7T?<X#_});J<5uO^h^S|hSN~7jp!k# zGueS4;9J>qzOp&dVFi&v8M^J@xTG?DJb-f8xV+KcH@b_%Fd#t=m{ja+jUkCfo7&_R zX5@!0lbf5*T{v$-3(k^TuIrd0T7-Q!=7j!0NI|co{~;IPgbi6{v4Q%m5jOYRODJMQ zMKCl~=MDEC&%l$0bvT2c<j~8UDI6!t%_VWd8^9)|Q*zuV8h%=MJxo6|>Cp_1_0=+% zFR-vcb7JbicK7}1<U^QLps(7g&s19b6j~TmPbZn|db7x&W8oRa0h474s@C~~$&kY< z>l<KY<vCar?c6V@tJsj;3<F!{2^D&$Q#fKiSlWV|(kPD$rkMvjZ<lQ&@=MTiiiv>Q zhfB`7kZMQ-Z3v9X++@-5R+BUE6Ic`l_~wRA%qt`k?0D`9j<A4UGcapCDLJ1O2xW(x zg>^Vc!L1`<Bby8&0STkN_~anENnsGk_jU?(>=9eM7jb|pTzc58e{y1WW@Z}j?Ciw! z+2Wb09QVnFpw@TfM=BXX13G;irzrNBc+$~p>Df1;7`jlpsEdPZFiFBwPZTi2g<19? zF~PgB4;N`#4fKSx8VJYz{3RR$0)hrT9Y?-Eu$)^9FGF)Dtqq1JCnEHDQo(v;$oE5% zC&Q)6#mZ82CQ-pn`JP+K=H3-#vzJQ#I~S|nb`8Rl?xD2F8d-)|81gDU0nR=g-eoZw zoM|UfvUgzTcQ$y`O}Z2o>41u18x0l-R3_t9zusxku9V^x@|4Qy?%65lMA{$#Q$ZpE z!6ZNn55x~lR2_u|h1^a=yW3_S(#;2AACftMM@__e$&g%dSWS67O2EMZu;{h1xk#_j zyJoTqL2S3Pbv~9J+uW?`XiBVI;;94`*m7alF};4RY)Zs{CSeMM=?<V3-JK)Q{_7UA zVUoQ+F{`-)f27iRi#J)3R&T$HW9nye6}U0iRu*xb4UFeS7y?Mh;c<+%nLmr@wCdvJ zh5A#l(|vUM4UXlGPQSq|s2xw9hv8rw)fQc1PaM}KL_lDd*wL5V(-B(6eHc%JCV*rv zRTe;|OIi1vqBUr}sRy$gULT@&8t}5C%lo6@^uBC9Y_>agwnTjFP9H@a%r(PJV|V{( zZ}^du%o6)SuWr+~AN4Vx;2$>`#sl~Gb<N#YWB=$7QvVe@Ee;gE5Y8W1)D!7C&P~LK zfo|X?))T;$;X19^N#n*!C}*ARle1uhGfcJNa2iDK6hdy!K;Ms#Vkk`9uwNS10T-|z zXQK&$0elD171#G$9Y7PslLN_dQV*<whR1ej4{z@Z@ME7D3Qft(6-1wyh-<M<iR22I zKRTpB3kmhQH1Qag@9mToC-L~=XcZs|4#%+mLzB@r109p&DKjN&O8PBHDozexf<3IZ zXl5jlZxF#MPDMom-QMtMRcaRlJI`9Te62Z7>Luvwu&m*nswMhcsLou6I7I7@oq=K& zj3;kYaT-XiY{4f(P7yb$96`+K=B0TI&+GOw!m?|7-NW5BMvS8uJ+W1GW{f+GWUB>o z^T-AvB+lgFMy8fzA*khf1<Ud70=f{`u&tv>ps1EgE{L@En>aOIuiMiDEV`@VLK!x9 zQ>GcW3$27+YzvQ*6={8?9-Qd*4!RGX$XyCoE})M{tm0-w=b!eq&XdueD2!&ejSv7h z!a#?BazP1JiEyE=<4DNn&^T1xcWem`g{OxWCUP6i;KGyP!=9O%nm#)<HE|Y#4Fpk% zE;mfD@Z0E6+{*g;Qe8&Q8AW3t28LK-Gc%>Y!?tp%x=>$V!O<}|8`bTzu+GMbHU}b~ zBRqU6fy1mV_$4fFtgkGuY`}eNemIj%jX_4oo6o?gam9|9Yjw;zXh-N#P9I`O@FVn& z%eGTd!74U8SJ7D*Xx!vt-g(~b$91DWG9nFmgV{$Qz+%Qgh-O!$pU`si1>q2Hkh;jy z>c{i}4|^8#G=oWNzp1Qa@Gd|A53-MJ;+~x%tw!<|6{Ect;?uC`RMc`d$CHF~m>|bC zHL#O9<7c{fX2aaApb>a`GxnVGKqZU_($7_Zyy3PnVtZr|5vU<|CGJZGiLvvid6?wU zHq7>@0Y8LQ<Icp=5{0!5sS|rY=O~!Oz7V>L?C{92zFL{X>Apao?cIi*`j-S-C<Re} zQM^dxXTnFrMFdSzJD4F{g1%a_?H~*~K2LqSjj-m{=Ft_4Exe=9!Xc{=BwQy`e0w1{ z@q`Buwr%F8`yL-Wru+EEY&||$XdtqC%Xg&&k9vIYv=fi%KJCQQ_D`6FiQYB@U;tT- zR^sl_wyz&g6e{2*>jRXfrn8R&ol@tt21e$v<`hPYOfsJP4p_dje}pMur%%Gziy@Vi zoeIPCl-Qvgm0;*=6io*kNf&(guy7N5?Hex>d`vK9Yr%P5U6KY5s4dBx;Cj5cAQHK= zC<rkQe8-fH&9vLQM_KQ$YgSAb7ItHskKgq(LmbC-ONJPiNkxU5Zvo^jqnJtb89dZE zogRxq9DAMFmS#gP3Z-&!Vz|i#wfV@b)^C}kEbLZ1P&$_Y%;E;wh|$h&kAt_sZF+uF zIvG6H7`++cadsq5KXfC!&3y$f6(`Mh<VS6thr72t2j04dQ`XL$nY4q}P}0v(2kY7w zO8X44v(8|gLxj*C4)JYmVJh7IjOqU^5j^p6p!4hZFIx;<-JELdwk}RkLm=8fcY1nC zEje$FtPQiK;|mPQ!NC*i337aN+?lBsj0s{2styZHIA2~bpMwk?LUtUM8ha_+9t9e{ z20uk8L6N5Xx!S1UaLjtey)QymL|Ydw*KGv=f?fR-DjQ>jdvL$;=%^>G)7ja_Y6Lq~ z$a|bgNvufpYnU%p%&14wxxE914@maz9c&(KAsD!c1qw>X&dHE3?UkXYgrH+V0l^~p z2@nchfygV$IjMUzf01#lVMZvy2goUyl1QSoY#@5Ss$rhOI1b%1C97R+-N3<#TqU!6 z0M^BN`x4p4Qn-2!j@cDxkrj?#Iw2?by5To!Zd1Dqfbp_qV85=6O)N>Z`Gnu>9vobS zva!_!Y~xr{gb$cBD=OL-uoccxvZc5?s(?u%Jki`Niv6kzTpDum%!G3`a0uCCU8Qgi z`UzA={9>hEy^J#v&sQN<SJq6`&6!CD{0i%MVBA#G+XrA$2ZmTsJ`rb!SoP}0GS8$d zQVQ&IUeN;wua#M(@#Rel#Q3#!83fw1=8A>fT2K73!xllA9BaSK)#<@C;u<@k>2xZe zTUoP^f#Squ{ArQW02090BZhb|-Z2$Y8|nLVF#BOa&68HDHAZ3_lOFYsJZO}oAxFmH zoV?E=YV8IlWD@*RG}9joV}A#Wh_YTme^?llCGXj1+6W?9_d;{oR@m>cj94oW$&;+a zx>uhA>vcjD+xF6le3{X<$Tz6_T&vUBKL`q#!@RS(i?gN?c~`*PO{+l&=)Hxal$0>E zzr>h9_b<vo4Woj^J@CxFiKud}#Ogmu(O(?rjpueid2k@NEwzXoW9ARLfslY<i`C*p zs+ToGAlFXq3`5vj*2`-q?|Yn;QPa)ctC9~A+V3Jn<N>yG$WYKReqm{)ypBL!qrd|T zT0HKzjQE>_Mz`5+C&tD&0Rm7Qb0VoAaw*6g0ZNnRUdI%%04JVd?iR$UtOc>pzSw7d z9I!7=X6=g#x1hlx-4q%aQ+crBLJx-}9|kPCqTK(p{A3=Ti4V=3pgH77&3GzcbfcL- zvb=_6UJ5ZW<`F+(7)%hV!1DuLs6Sew7==wBtO=T5w4wsu5!-OZ42#B7it)-Xh(1WL z(MPzn?LTb9m7I8p4rXQ`G^J)LHW>x)%rn7Ay4~((pJO5$X@~rr=sI0qb$mjlwhlP} zd{A@7!c?O9gL`}`dIWU1)j`D9*-80nutX`2J4ToptcCq^h@P9_#oT&)h{dkhzWFK) zjj)epkc}hUm+#EX=pQ4%hEV<_W+Ao)Bm@^9#fRh&Q?oDNfKA^Y3Lko|0-@f#AW-~C zvD`GqF3^3t^DbezQLO?tFo{$gn2K1bAi8neq)(~CkPC&<NSv8Zo^PMHySvrCmXZLC znv-VlZ<!boOc}92f+?%;V=aeEwc^BXP&z$1Q93hoW@5H9J3BQob!K{IYNB{{cD6Wm zW(xNRI4VudzzqwckC}}~QCow=n&L-Q++*Y;gl|0_T7*tef;Vxf3W~`E>N-AgV-n^> z&^ZeMTdLH8C=`q@loRgILVxtiRD!MY*du%Pn`D*87BM;{47<o;Mx8YiwI^mKW|yMa z415LxP&!-bPEOog%o<OxFy23actA63`WLPm8v#!WIKtYR<WjmY(Uhr)VbgZs0#c`o zMK(>(!kUxXikXAVxa1rlqSKL>OQLNOtOh}+G5f9vFw$G|hBQ8v9Mfg92bV;gW2cX9 z5Nw*J-C>QUV|ld^n4GNh;IEa<Ro6cA^kXaM2__?<y<B+`c}~HdW@l$7iae(p%8BGY z$|z>#GW%$?wqQ<XI}%s2O8?o@!guT%-@XzbNR9WHFUIET<pMR1Z7e}D(cxtG2nNI( zC$SSj_oOTd#<Zi-VNu0{{_=tSz)EJU4_<+VPYl!$yM18)h-w>;UO%$BKF>ungD#>B zk=LSm)x!azh5tjwoxkYIkAeua$Sdp`VyBVP-y-Fnxft76%8i9SlT~m``Z|P`^^LV! zkh3UvqaYAi%-9SL6_>3Q1~TD0v18t8fDaL2k}jOhNo&LwR~d=H%Ny&J%VBxGyt-aR za%~lAGWZ|ZuaN<AK))xc5$+tqT!$mTF=$39i8-FcLcOCK=EhgHKjeV8z)w2(3=zp> zp&i5jX5w4+F(=O_3(=p7wH5H)Lj*=F9m@`+8l8h^tJQ3Flh8R6G2E(wS792+J!8Hd zw8~H%^)AncSR0H(=w+1|LS`}<7=Eo#1r5boi2WY)wA4TiWICZihyghLJ}m4Y|1gQJ zRTs~LPEBRm8EmP<8!WHFnNE;f`W1x?a~oP3@53kpw<_gjbh<h?dBk^<=|!uSi_^xA z6#KIUp9W)pY-LNeb`dcJRX7V3(`PGntU)j~AfkNIR!xIIVL`0DWUaCYFK$GRI}J0n z=uM`kUuy+tU|>SCR;#NTMZ59U-Dsk(?uK9JG9?XLZNs+9{$#B6kbM4Hz~=jdNvHFb zix&CBqv}ofvT;t<kD8lr$Wj1Hj)RQi2dv?R{khQ#0|GV}7Ww76Tv#R>Mo+maStZo- zm4zU6uW!aA?wU;=dUR~`hf>2RNUg1^)Xs<1;tW<C5E&F<vTlp{gy$Xtjb891dQ>2w zb<LP)Vxj$R0nzN(MP#?Vw|Ss9yH<||K&vn1D(A}cXnt@uLNjBj8EjP~8d7CdvB$ku zq)J9lrrX=rCXinXrzT5hrx{`GGK0nWaI6sN!C4C39LpeJyq-6^n@xS2^?SfAh6h7% zJ8W&SbJZ71mBsSh{ehuJIsv~xcnNBNLVIMox1)YkPcl#JYtu83-xR+uQ_d$NcF5cB zZEux=((D8cug3*vOB+!xtgarroop--nb?eO4>iz1PdUaa2OZxmHL#h?Uxc@6t%8W! zz|A+A#E9O|i6VkifPZ9w&=d~MkHU^6jVy-q!$@Z)S+VNpE-P039Q?9rkplxalZ_KF zd=IgdVZ9toZ;;}nPt4cu5^wZmA@hv*Mt!=A3a5+W9?K)RR5IC8!oqV_YD@RSP92#N z%-(AYkF{VsJ=T4O3>6S6?_tG&w~DtzK7=8OlToyT?VvD#Mo5G^F||m;L`#Ur`kZ(z zg@|hO$T5Jk8#YI{aVrbN?bI{kGS<QUq1|A-*VpE&3rI)>Y@1a@0a&}kBd{jVVh)}u z!QFahqBL{1G_|Bq5AZvn(1Q8CaBB|EiSPhHI4$4WAol*59}q7GCjjEwkQBj*qCHVC z$#o0LY+GYQGmkTAu!|(vqtmO4B=6Y!2kZwfSV*e)a=$Zo*2d*r+`%#uOY;fOufT_` zRZebRBI!{0yb+(s8nXtrRte8njCqpiU>BPW<41)=SVoWDH3@Ir-GNF|_+GVDkrtn2 z6aYloh<+3&zH3HRbcOlCwHrWj7QF$cv)zD$qP=}nIyehul8h>wYJfjD0mM_VN+b&V zUsLy)%8a=D6)tn1<E8}kXa}i#_l;wp3m6TAW6;5<Dr&uXeI+bTOixW?PL?LH5z`sS z{p?a)qa|U&!ks;m|5=Dq&7(bS41q~_X`_zeu<3Yd4S}b*iUrQC(BL}@F0_ah=9v{{ z$sp=I#;WkIZ#AH6b$ds>)(v+Ar!izmHpB!><R140!X96?Xa&wnL_e6!gT=jZE?&31 zY(ks8nD*v2dKz+`i56fMu&>Aa9hj|rAPGN9FDf%f$*{#{mL9D*6OX}y2-~gc&;lb6 zUWx#d6%2`a%}^!K(T2KzzDl~OhM?()S%c51KLJ0rxD^PURbahGA<Qx=$;{?hBw+?9 zcn`Q#JK5+V?Kc>ng_<i%3*J%SB4VSZ3zzFv^c^)1sUNgCp#gMj!dyQO@i+|54xx-? zEPcFK35M+05SqidR||WE+DWWrtBePxBVy%HCTclgDJ;yc;SYwOKHU$tJ6l+Vmls$E zOwtKqsBJ(_T&rOJw!&WHfrHLT;KqTumG2n7J_(g!-Ma0TbYGxfjMKLqC&Tg=rNdY6 z$q;5%%*lo|xdpud9(?qqZLd|P0u);i_7z?Lx)HDO3MQxE>k+oln0*XwO!8o_o`aDb zp@5UciL<3B+;6^mF$(v?t?iYDDE5QR2fCy`DJKo*cJhptf?^qEk0=(ld65OGdEMC_ z$N=t>o}Igloifg2iEn`AT3Fs?2EUen1Pv}E80IOsiU5UpK%zan28x(jO8alnWE$D4 zrc4MyaIP~pqvU3ycft-L7=;;NN2|FDP=hI0(kHDMwg!qe(!o=yF2TGS%s7#bJ0aUA zX1V1m(2-_aE|6w15|ymvRIX#0GiUOUbPa)YU?WRgw8GgAA8f}ycn6{)T8F`;0xuzp z!^;Z`-o%Y5eyEMt9K-``_Jet9%PA4B2IbnQ)=s+r`?AdS0cRiVbWo}yf)SHKZv9d{ z2Lg0#mb*$S>*o=0faWj?%bJ9K07V8lHaqzZkffa*1UFp|ElO?c2qyO71Ut&6w*WnM zA;7|wgdrR8fvjVn3o_nqp%&mSZ>jxk;zVtDQ8yc16Zes|r%1T~U0GQw)fj6sg-&E1 zLzqeyl)y+O24&4e<TzfMWdTE6X}bVA0z*6$43pyGCoNdCAbUj560>>Vi*;BtHDdP> z?0sb_E266)G#r=`hhVVe#nFb3rl+2XEd$-7&EqWtNoMSa6P4K7>X<Z^9{9Aoj3!&; zyUElyThWvqy&+4wjP!%mYSrc>mNg?tYJPDI4xWfzWs?mLjxdukWPL&tLL_7Z?xq{; zNm}<e^mkeb=uGfjbv|6MEyUJAiH*&ZrkNk&Ob&LYPVZ)}wf|t)HrzvQ_fSjTp)jps zCm1j&Q~Y7FXklsDe#nTR!3|Z0ml)46j3mTxP`#klKSlEfbEQ@^8;77b=nq3--lJhA zJdIc-qHRIUuQg}kh=YDDGma{(6fP`z<%TGm6>ND4t)Y0<X?Anx0JDj)H|a4DS4w57 z;axb%qFowv@6{X^udRC0x#Kw;AJXrR@}%e`=*+|cf}YZ2A2r~XKTZ;CXRYuG_VF|7 zf=*4IN!+9)Up#}L&v`6yh^(eqF^kw?5xL_s{rg-7?e}2l^HQ1ky4Lhm?_ekGi-r}} ze9=a`+-Tsflm!6+?D$4(FT$0Cjq#@z+T(ZI&N@#=WMQHBgeQP0jz7i{Bwa+2%Nff& zm1@&Pebsa(><ZO~orBFI7&%Qpfxie_tAe7!U|YF_>FeAC)LQ}o?D(CVQ7AV%G@X*u z_MLF&0&9&co9GE5)-TP%A<(*JkzJ<zL>74Cqn3QMf7<V~LDK2C1S-8TGY!+VrnAP* z2&jEoaK^%8z~c_F?I6S4EXIv)f2~0GEUheM7@G-Xk{brhx2ATPH7hHrB&iy+9s<SK z3AmAg{RSEb9-W>rw5@wO-WajXrPXA&rD!|0gsBe8MekzcVd%NA<jl@Q)(cU0*^rHN zq=-z0zQ-lhbl-Frf~CG7d1fctc9O$(lT5tg2>OA9hmd)A#^HXU=qmxE6c#tlL8}bz zg~`G}9A?`cAAjlu*1g`#4G3(z%qYvu`xXWk8-w9(Pwu&K<}<lKfl|M1SNZ?gdl%+7 zjw9c9KFXMm^%>ZtcHR%m(gp~CB#uA;#)G81$9G~d4-ys#Kp21`Eqg!v{rxkmx~qG- zA?-TiMBIq0T@%w))m7E?$jZvcKXcqldQrfv<Qj<SH3hQTeLG6G?<kb+Q60*KSZi7_ z6>nx}mY&D@krAy|6JIbNT`Y^W3N?Tl7~}e(J7VGPqKjp>+tn`H`3{1!4N3y~5Z(Q9 zjRELMAbBM0uVgNnm2r!ed9}4+Vk|b9=Cnw!Z*=1==#7%(<T_->iiF}#w-6P>9X&-7 zXA*|cyhox$!na0aeszb3P&Iw}2Efw|3guh&)&AS<vt|(R#{KI=FoTs~5Jj!CXH%GW zkyi~TJ&-s$<Mv>H!hC@DAZRv4O-#|ERtMwh@&2J{Zn-I%_xq=tD|9(m%hr?I8CD%n zk|7b6Ad><43J$YS8;Q&`fZ?!@mOUkYs=7qrs2nMz^oFyB;y=Wj`Of4zYIIQwAh=~T zCN>ls$tb4Kl{vQv{c<+bO$JjUU`=>(#t|Azg2Z!;K{fSnl8j;j(Mj<m#$7w7ogoU% zDttj8LovAl+k|PnC^J5_D1IZvu!J3mRLok^xI_C@+7);*ZJ)eGN*vD;aI}#cwmRL> zRwF>;NCJrMEbeezfDidC$CfZp_qg0Av6}H5iQJ2Mk{PX;et39aF!!w~!ufr9k9J|Y zUOl8EmZuhu6DBP=TKIgE&X`0bSUhhIVHc}Jmzy=^1fJYL+)|u{n7inoN8U6p#tQv% zX}N|HkO;s!rOjg4kO!XNF(29E%=^fGJY0eQg&|7NUHW(#N1Tp;pDamcahQL3l=Bkh zy%J=8#Z$PrX|f_=l{!31v(ErV*ARCzV+G5H1};Hbvmg}Xz90>P4A)(kz%SeBxlM5C zP}L?cWYVrHmLe?=mf6T+)RIHFR2YPD#SxA+>jGV9l+y4Mx%xd|04TA9_|Das8wgsS zPqRDBvE@gTW5oY>mlg05SWlN>;&VLsMl?+T^;edrMK^lnz~%;vE2G#^NgMi%38Q8| zdE>2IrJ%IY5sKWmg2~qoJja-hi`BzAyZ97Yk#OG;jSFE3<~JW@Kb9_}Voq2KzBo{u z-=;-v4dhv1;u2GVLi4FKjD<^MF^AcL?3la-t7g;v%K*5j|1ak_Z4G#xYM^|Rw(gYj zy`@x)9MLjMX|_-?I%fUso|=iA`6F^5V2fu<NQ<?41=-$POM7M8k}d6CXkus`3!pRX zA<1$p7~?Ru4SfsfaKXok?J&~`@g9Yoj?Vh%0XuuRzd=|nym1rJBeBM)yMSpQEQHi* zj&z@O#}K@GU-gDvOs~P{1`4k|=?&V$?r{06Kk0Q3kj3mj-`?42%5Rx1iO#?2TasTk zMC%#miYCT!OL>TKVM)y1FV_fnZZRuGD{V81{?&XR4!&y+ZCP_)RG=KglxO+S0t>v9 zNT)xjDZ7rK$%WPAV-Jt^-tFyh7D+s#;kA><i8M_APNgFo?AWQ;I2C4m;Vk5d8w?#B zmbZhg1Ne?vDvv0fIvrkhv3hW44L8+cu9a|6+~L`V;eTBjK8(I|AB)EQaVPX@cS1Qw zQ*(L_5|d4hetD(rC}|n=opwr%uz+#RnEMMz<|;8{Ca2AG_;N_q$e!Z`qXp@vb=2yL zDO^Bd^!&o7xmvkj{1~`giLq_|kU#-w)9m+nG*grJ285fjHDF-8WYL3ywf!B&1oF9Y z3xXEcl&24Fz$-Vr)PDu}&k45LZ;>O!>vU=qe0jZE$<{psph3{|o%`1~NGViBP=(TY z(`^os7!n2vOQw2GFK;E*u;TJ&ETSm417vc`mi(-qI2b<)tg>0y8?iLQpHf5hr81VM z^hRKLLU;JO0M>GUWdL#Dj5xFGP5+vP3uSbWhky+y+u$)z8`(_a**ld==b%|o`M~g9 zvGvjUT(zD^f^<2%dM4ALC%S(X)Jz6NfNcAmM)LdC)y;eH{BCs<z^>gnnp8fJPrZ9s zLtu3A*6~QfZL~`8-!YuQ(eYsnXTZ;3+fv?e(d=yV=qcwI>ubvhZpNb)7(2t(#asxL z4|&EvXHQZ8;UA-H@K;?NQ<P>y-{3OrR_+H}X1G27a0$>~HtGS*x|p3ik?bG7!Xpj2 zBZhQ2LQEl*_RYsrR@Xj*ts7ko<jom>{jPa5HJ=)btLqM&d7kbMXRnW?A2wtA^f}xl z*nv`j;_`17i})A~T%ti;(eklm=Q8XIy%{PZgFjAy2t&+R%|Bc%1bl0GzVAIgg&m@> z(~0pn-y0QFXIfbKO2ZaV3E9UqTM-MFFK#Ns5mx{r*FK=#8=`IAyFg1Z#-3W3FLO{Z z5|P8GaY>~DAZY|B2A_tn_w>-9qy<~{o?1A`N(gIsM7nGyEudy3Hqqb80@ekU@V;cY zk<Xra`)ECJxz4f95W@gwM$d$GX403{y)e*{bbY(kR!paPpw$FA$HDV1voX+tVLZX< ztE0D^j3ACkLOJ_{_p|sGTsA<Sd4JtZe!DRej#cmz(-Vki5YD=BL4{prRlZ-*+3{K+ zH><_$3;lKik)<>^yP}Q8D=~Fbw}r*M&4s8RVHYh(m%SRFqP*N_p=lic#w`^?%{q-~ zun?ARqEK=Ro(I30{TJVJ9-+z-BJ9q=ciX0-BD#atg_!??Jx1@$HV=^=G7Voeb|@tA zO{`(~9Oy}4EPLaDO@T$fApH~o&d)FS&xOSxnVf*IIzVu9`sb4~loVg}0Uqx32E%S| zgxF?)yB+xDHU?LzaSYY^F}_~k|KPWgk3XQUiFSkGL5JU^RAwIxVZ{&G=wpeNR1sAU zkK9X7BrvnCY)YD7BsI+3?fbi1I4(RTaLVY)D5^rp)ERYqcwllH9(P7V+%)jX5W$;1 z-#!EVt5-Z`Oz8gntow53>|L{e-nhP7A}9wG(G^JHLgD(s0H>(+V`i=AnWsx`^pM0j z;X^<E0OP=Lbg_H&+c&zJA3*9UUb;$IP_}z$336S)%Krw+wCRN`2}vc<&ppxi)pz^H zZ`oFzhA3`kgxPOT90=m|5i9KIa36zi$uW)OmeQC-WL7Mh)DeV3Ou#S3#RFUni?4s3 zn&KSta?hARzoRc$i9*@*UGk&OTs}~S{g^oqGTz7Z$XuosQ_h!R#!I&>&YX<Q{4(ag zxy;(mcgMJGo`sV_9=v&Cl&ff8t<#5l6t=I<1C+P0Ma%q6l?0}yjQ58fva@HMuwQ5+ zrwTD3`_*7q7mg>>>ZS*Bnr?^!95-6ib-@9B6LzMOppM!jY`sQfobHB$K8Ajvs+fJi zhQppL1A^dJOb@WRck^H)?Z1t9oZ$kJtq`5PX#!OC{)3!EEfSe*`&)M3#OI1j<UgA6 zVej3}-tigt_?rjdEVXtvLATvq{L1|wxrdltMTnmA>YUk!(NB4FN%nNch)-9)TugKN z%GJ@?ljT7j%-vJv!tciAt<mCi+(VL%X7-^XM?w^m%HJKo>^AeZ^l0>#smT$!<3rBZ zW@7lLuSRgh#ZH`pnvtn#A8QQA;@$nt57RrgD;xQ#Y|F6K<wPy80yRpSB}Hr0G$BhM zQ3zoYMGYCIszEuT=oWgvrcfu<=j1(|cF^WPTx#BG|CN9l{uM!QV&7-4=nF$;m_V6o zU}1E~>1y%lG|;8AlHUFP?#tt<_fQ~AD5`)v^SdNKSFhU(yI&A!E=t8$CmhqF4(14x zt_~L+XIZX`F*~TJkzo!EC1}HcN}pmxz|1+dlQ&ZA;_={|sg{NPq{6^#aG1mY3Ks#} z829m-CLUm^4QucK`vZO!T2wBNNc@)(aq1Q|#q<GJArAp8=kDZ2pj%^A85ksHhf@Jz z$KGl4bf+Z@yq^6(KfWwk3y3(Bj%v@-`H`mMR@=A#kLi6cPhn4|fRzvFp2)uxNYe*T zo5QMlNc8klJ)@Xjst1H*FHaL`{gbCnUZIuP&q4SuzSA>e12Kbwo)KG!85H!4*hI{r zpf?}e7=|_|=ozt%m_dI$BeoGU_=fCD>@#8pE&Hd$Hb$WhihD+EBW9558L^F!(dElM zBYsEBpz02p)EFBf9;g;Um%2kvY$fJUdB};)#2ji5IkBCXquHPZIuYBMgm(D+kQ3X9 zIedS}iS5K3b=PZ)?Zg~45PBXPy1wz2dVFWhi%n&D6pneZu`EyZg*sz%S)Rs1|I_<n z6=r!FjgYs|p2j2O@yDh;dru=0@~GnaM*j<+pdnGU>P{(3V-m8+Exe^c30c&eX7x2D zA&WnSEPYb!W+_X}hpbXteRVu!mD^G~A*<Y$lJ(gtQff=dA*<Y$Mk8dE+tO%+ta4i# z4ZW#0i){@w8X>FH)<B~XvPx|YG#VkR)Yd?w5xY`qOP?CD%5AA<A*<Y$zA0pt+fo<e zx0Tw`8zHOQmXbqOsjZ<#BV?7@8ZsK9Db|%@TSFR%S*5myG!V1OZP7r?D!0XGbT#_w zN~tYIBW9J`Vl-k_xh+N`W|iBb4G});O0lgGpBuAEZH+V<;jL0zBPEBdQd=X9hW@8- zE48K32wCN}G#Vj`Kk0@YX*5Dsxh;)`Dy6n^TN;g!Rc=e85wc2cjWrq}i$7^M#u|;# z%TilojYRx_(p&0y$SSv`c0yLUEhX!-NiVmh<d9YRuCYcVWR=^}XoReCTN(|$Nt>m% zCK`>9RcdRZ(Fj?kwk8^lkX34HqR|LlDYr$@m{o2|qY>UJx210iS>?9Wh45|Vw)95) z?BaY)lpL~(Z2`cLXBFE55f^4q*;HI?3xQakRs1d#lX+ITEgFawmfK=9dNiV5mfK=9 zVph2=Mk8jG+oIDktK1fC^uh;}+7dq$vr27=X^2^+wsgS9tWsNI4SM<?Z<pKBXoReC zTN;g!#h+xuc63h0ta4i#4OL2Q<+d~$A*<Y$Mk8dE+7e-nS*5l_2YaEHrM5)2Vpgdw z5xkgHZcAMV6_(plvOb&ia$8CcS>?7g8X>FPmPR9FmD|#2=uO%zwWXCCvr27gc4Jnl zEn63%!cto{jiD>$wkX;QS>?7g8u0^)Ys0=NWR=@e7s9ud+tM2$tK627<A@a75-%FF zN^SLNz_O{h)K;GcVpgdw@uD%SG=_Z|h*{;f7!9?ju9VwihGSN_Ek+||mD{4zF{|7b zZNv{KwIyCOW|i6!FB-E-ZHX6+S*5nbi`t0rcDXH$hO$X7x24etS>?7g8X>FPmPSLB zQd_w#jYh~Sx24etS*5nbi^i-{TjE9gp_iq$#EZtPQd{ChV^+B>bs>IsafuF<tk0%M zxh*A!ta4i#jgVDtOQR98%HO5Y(3`YbYD>Im%qq1dUNmNv+7d4svr27=7ww0xl-ts1 zgsgH~8jX-uZcE=3zpXfiBYji&wsKo~BV?7^QgX;DwIyCOW|h86yr^v?DlWApUNmNv z+8Wb9%qq7<12L=I7NcQ1lU|nFVl-k_xh+N`W|iBb(=n^u7Hw#&t1G3p#EZtPQd{Ch zV^*mx@uD%S)RuTr(GGQ`+?GZoWR=^}XoM{Or2NK2qY<*oZD}-ADYcc`(rARNa$6dW zkX398<#V1@YzuFCvO+J5ZFR+q#;jsnSOVu+<+jv?P+_?(CF`?EFSn)SkX3F=qY<*o zZD}+@R=F*WhTf#jQd{ChV^*mx@uD%S)RuVBm{n>^yyzfwrQ8-pV^+B>jYfE@+?Kv6 zWR=^}H-&F2x1~2iR=F)DhpbXt;zeUtsV(uMI&##NQd{ChV^*mx@uD%S+!hVQta4k7 zhR!f`rQ8;y5wpr|F&Z(e+!mdVS>?89Lx-ZeQff=QXv`|LC0;aU<!v=`mw8#o1owHV zvH|66t%)rNT4zZCmbeJ5J95&Iug<!wUqsukQIBDcY1**}`&n>sq7A9OsKx5TjD-$R z9g3<BM%S_SG`%Y*>)()LUe~Ep6fF@+D60!=88jKHzOpn;dui*x5C!_ckNgMk$DaCF zs4KW7QT&g;_>Gl)`h^el5C4<;io;gkdc`<ZeKh@gywCO$b2^=)Blb_Rfwgw|;`*=h z$*E~He3cJgGHse3Uh(u__^P-xDu?Y?e${*FL2ZKacI~V3ku1$4wu>@-YM=vtu`6TR zW@}7%9>eX#peqLHA#&fx+4=`lk%lnP=#5{?Vr1&t^bn{uQ>~*~M!~q@l_|3rvk;7K z=Z3|#)xgW(<MN6q_fvk&@IK(rMec-P@hjX|k|>p-6p=XslKfXc-Vu_DsBFa)DSc%O z=C$#m@mI0fFT6P8#k`tXMXRyms=TEA%~s=!7ZsKAq5^UzX!ofZVX7ug(>0T6_><Ht zHbWMWr`Zt}Ryzk~(*_F9i&Jc9as+IL+LSE}KpHp*u!zwG=g*klVk5I|>=HK~L^U@~ zkVig-*rrnszZ+Jiz%hbh`d<jLW47n0kBfO8NbB~)%u!B>gC|gy%nW08MHag5+*Kaq z=o>WUggFPI`0yO7Q0%cX0}PBJ`b8TF{1Y$?T45z}gJaUQ8@xec6sQFQQTu^ipt+La z`K-cNQyAQZ8;fG{_WEogL;wsY^w)Id84jBbQG8NVFhOg_kI5lh-9JWn5!eGaFjpj0 zv4>bfs?zY7-h5VukZdk}>1-Esf=$8t112y?4{ZcObT5M;#BXNjJGu1QU{vN{%j+=& zwO=<w2o_S^=6b!@P}8HTzgA!5fyQ(L^b{=kK-<HQ&aK2UFPTakvNSh*mcva(W8<9w z>zVmmyv59RM59@3z+a3WSRFagtkZpEvBuNEF6Q8O1XREsF55JkBf+{cr5QL(TNWY$ zFX6NR7(uMBv{*9~(|0~#0x`SGEh91m2%jxkp@4uZGad6gxSD^!2;EH<8OPfcjZP03 zLjgoW)Wq~VVw%i0ch8Ss0GZO*6`J+I9w8+R4^9@9<1kU))%(VE=J3Pz#}M_N;MPQ6 z8p(PR*nnF?!{y-dVat-hs^|RKKeYnEc1rHV&FORgZHO$}KhyVf*&V4T*pJGVH0z11 z$@2>5PYuPFJv+Ms2fft_zhuYj23r@v7FZCv`Ig}pWV9{`aIHEp9RU_bMt`8fT&^F0 zWm+sjhG{)K{iI2Y>`pPO`6;>^1{2<PI=F6;6LZW`4kr~un#4_Cgzahx#=?&eSc!dp z`lZ-Rn$`Rgw{w`+PFn_9r#)g}fURd9!Xj}m3{EEdMUmY0d#xC3>t@63J2}viciX1D z^j=o1?>xuArvcO<hKsP^4Af6nLanMe80zZv&Gq%e)zu@5K9s;@C|U7NgL9M3PJ^)l zarIt7oN&2;{@n^k_?q)t+YCNHqbuBIBF4lRGPWf0P%?0JAWB+!2W^ip0pA4#B2|S~ zo4>#PV1cfdAK5>x+Yew)!qXbB!xIH<p%`NnE40;{RJi<jd;ev#O1vr`2wFug&%UKK zQ3?SNC_;<atXP}30GpN6xVpSs3xBiJNudW+)rKLhHx=sUH3J)+&K^F8FUXuS36#n= z&ZZinud^4ETGPH6la=%fxSHi%sbi{4W2BM1PKNS#JZ4Nzaa1*x*|64rRMIEdA8HHn z<bT$03lk*s<EroD_LUW3jaL=PrbILAT?lpl;tPuQWdluoG&LiRv9>4P&tI(5I&35V zi#4if-utifFRdAjtZd%KqifGGM~OsKxdh`}v*O~oWesGjJ6l%&ll5qGoz<!D3yax& zguudmbUMS*E)P=NApCu7efzi5K(g^R)^|Pxw^y8b#Fdg;@pbihFrC^H*+=~1j;z=Y z<vRZLfe`umr!9L?YlYOX4dzR^X0cv#cT84(+%s?>xNhk>P%$r7x4mZHkhP_Cp+028 z^4KS_n~hw_U%*B@?AY+M(JB9+q^pl_sZb3o#(V2KDtuP;p0a{zcmCO2UV#Ird47x@ z<W0q5)x*Y`NvM+1m)e5q=c{$`Q}xv7@w$qir0IFAzQWg7v$dT}zUJ|Q<*)gl)7ERa z&d@{K@!1sF!rfRSaZ{^%VKY45(_g<#R8JTHtNmB6OqEWSrM7HXW+9emw%Te3J{wQ( zu6<JVn*PNVX~)N-$C<5KCo9>?`Q@Jd;;#ASy1Z+TukEl1{@H*Rm#gC0cM4PP0oV-v zz-`jamya6{&~k!ZP-KJ)^XV(4!S5zaaqvJd#@JRM6RSD6_06t@nP6yBS%gKf3l8>o zHe6YY$<z})uqP9^@$63cYTC>nVjPv1_{u-&Etc)xpw}C82ZIGzju(rIUcW!@byus! z#jxEQcZQwGU@?A@zb^*?!++X#zj;I+A7^(zfSt*0_2Yuubp}~~`5xD}0+5FG(`@?D zGcuP&L%~}&qrAu;(-sNSLCEEE0*-?=rP$d9KA~HN;WHwJikQ}lU@0fd0@m77&ekjy z=KzrPmkHV$+PSPN1<bkFp)|4a{G9LK1*i9<ng0xk2zGso;0OZ226j7<2C$==*`#>z zyC9n)M^__YH-&xT!Pe+98=H8xp~poxObe-&*5*SSTrVw`8tv+A-bNuq{+Q`o<vcJ} zkIXj%Fmw>m-vZkxSFl~hrOokW1n%;K&hoUXs(gLaTZwOjNHM!%OPXlI`^jP(4G_ac zcM*$2H*O1AVc58w`A$fNEhHJ%reoOXX3oSrJRsXmzH2TNFy~v1qQEi&n*JqYic|!! zjkNc*h4cv$j&h%NXL+uMO)!q4n~4RGPP$jf(8~r(fAsbc*_OWOHNjU{%7%ANq*DuM zhP!3{{XSlNKEg-a(B=;&d8s`a+(uVIrE6T^u8>P6ggU?33c!JzFH(vSBo($xX^GJI z?&8`#n^lU#EHGw3Q%SZd(TKqE?s<CrRa8X05S(?ko^@dW|B)nkCycJ<L0IF~lB`$+ z6zw_^yBHGyNyPpOA^4QTpL?2=JQdN;eV(eI9Sh4&DCdX{5F8NI1=Q(u6_oSB_T7N0 zFjTbkMa_C}yId@7$qLaT0Z%iZs6gZVcMdtyY(yu)N-sfk6U<gvh{U*qo)4h7Ir1Hm zvw$Ik$RWtx@0R+_n(+{Ha)UfQW@AiuI2(d+v^#yigIB+Y%ds;KjHU}k8&mYXaD@-R zPCs5PuRgM%{9i*K2n$O}m%=+N7b`6_qrJe7urLFEQ-*@ljWByl_n^%Ju`0ik<O}I& z`WC-Ch0W+VMjK&hiFv?r!4fp|e68RR6pigDNf?g9a%LmOu?e`7XU0pIwjp+s>74|I z2<Fco6wnr}*9q+doCkYy$=Z-}vIjv@Tv*6N<aQXfi=v^ldeM|tjj(Vl;6kcbiC+HY zwWLy8CgKMy-7tcQYkO6AQBwXwrpS-NmgY#OF4-*Xhv1KXvUhwS!a3|Wc3zzuM9lH@ z++sl*a-H)%#N}&`&yi^_*(&RX_KPxTM>Nv)bH?R_SW^s5DL65*#ddaF@?Is#QvnXo zV~!gf9w*{0{82hue(t%hV6&tj?DG#MRrC3?-vI<j$CBIv9g1Aj;{@3v_EbzuF_+<m z`@tdFFhA{Y7zpV<^uH7rFLHh72gbbwg{GZcm!CIJIZx6I+8BNjh;esN1n6;}?DF~v zN0~wR<Rw&-^B3KzLqEYw^|~#vXrEp#K0D11ZnoL_i0G#q?zaHgZv7{(fe_XEt8k&l zM)TcE_rLXe_pheg`yapG`B&cmYsB&oNElL@5W18Vank%b28_!>#W`9=QikAhPqSbV zNqVb*>~ln%lC6LGL|RB>+`J|Z|MlX4Q(oKlvortc!cLM|#rxB33Gnxin)y$!Qhv90 z=-OGX=7QS=v^~(Ixv=aolpjTCAi!XnmIwV3&SFFXzkRrFSUoabnLWLDy7T(jR)n<E z_YzyqjYdo7?2l$^(F)mkC(oO_(rkqSN-)ESSfX4&`O+(~1_NtUV3e%CpmmGI4Bw*P zM!pSBL7Ucyx1RLS$c6B-fO(kTbBx5>I`ShC0M3p$G8Q0oadQg=7t%+r3PHiT;(TOZ z8$1;p5ZT$aN;)jIBRFmM?*XRCf=A+HF(Tro`Te_cD`=gj1d$J^I*)WD1~ruSV^;4( zY9-=>-KCnbkdVE{fEoSK!CufM<*BMP!%GniTL`}X<k?4<<Y&9Nx;_S;BF)af0KXz@ zj&FwjCplwUX7il{3Lu0Dp*;>%i;OMZRr(OojT{=PfJ_=}4?>Rm48YQX!`Ma8Arb-U zC_r?8m;lEs4DF|;D~)QmG}&hE`Cf~2;tnv8LOIgF7GXG*X<{EhA*FpL@X6FvUq>gq zirqAQ{yoU8_Q1R>F5lyEe$|>kz0x%@OGxL%LmkPgfas2PFD5FtsnMJKI6AbS;QZ|V zMF{35T44Qh8z@C(@yH$wYykC&d(|J^cEFH_Gf4Xk;jBT@^x});5E-v{*vb;6QGCym z=JK<tPs}qiZ6Yul+I&N|j|esZCr4a)32}15_6RUqHs|%(4NxxL6Wl|lKtCA#QKqv_ zdRbeDOWwf|;Dmvqtr!>7%g7W)Y&TcFN0iys4AE+YKGBszG?Ne*=X;`<_QNktKpatn z-+W*?OBzADH{JPFsc9BOt@!j!(=J^CpQ@H)Q=46};BxblkmcA)<bsVawvxymb&oTA zshT=N>yq>)WvgoqW%K$=w=VH$T(TUGr8DmLiKNzVk9s3Oj|PZ(2ImMY#PvFKU(iPz zL>n@eohp^?mc#^BA`3<WVa(v$Y*w%v(BhjxhLdd+5(?XhbrtPrxWPl3Vabp!qb^Pt zb(ToWZ?*~3#hT1u8y)-T=nUvL!#~?TeXYw+w}sqK+Tgj?hBmS@Lug7ZeXD61V$DA5 z>jCdU+0WCBqzeQ;5zdT9vbIfWKl$*VW_LvJy1#3&VN`2w;W3r{hO!mf25Sx#fQ0Lq z{re3!HaF^F|IR;9&qk1L3|AnE++-Bq9Z(eu=N{w0tEH>}80eIU5#O^Q@R}9_S<_Jo zSFbN~oIU%ri)Ck63i<$Mm4ZGvB(Cdg><}!6kf<!MWjO7>B7nX3JQT$AuoPSpOT-Y* z9#rgmG2-0ob}>MCeat;1|7n1q5@Irwn2qo&;$X|ji};GCui-8Z0RY_5ngYg_2uw(H z39$~(#Rb##`?}ud5)ylQ_U(^XA6&7CR3z%4@+&6;c^L=N5WWmpq}FK8@$>_U4CY8v z`rV5LPD{A7j|vA@h@9Y8yxP!@#@(l7m~M8@D}+o6;KkgtV2Q(cP*?*w&1HiqB370l z!><+q@7#`v{OHGq31+eq@i4LdW9L2+F$Ft3-9Pf9KY6Bo_#`amE|E8mM^S3JeQ+41 zru>ZTXT#u*1vv?20<Eo;J$oR*{61<U9isE*sRZK{h^nVscwTXZ3<$i*F>o(N@6rd$ zF^fl&AyX_qgo|fI6jfN|e6(V0u<CN!d3-(R(UOn%heG^BjPAe$^l-|~1r-2;i#a~A zp&0C_2$2gR@=#mWUMbPr6}eeU{sE>ptl`ni=Y;h`xC>s~s6Xxv`=b!7(P4bqAa+#R zkO`jClj{$7bRz_8oE%6Y5~TaH&z#Z`#88++X7|bRPOv@`Nx{gYQXA6L&e6g7Yhr@i z_ptV{N?Q>OVQRR_2vv+>B6w0jLWP44W=^sNo~<O=%>-AN_nO4&N0|bp0xL<H?h-ku z?0`+<7OZ}Gts*y=-Ij8sOmfkwHOF~dS9@mTlGz={_u@;{?IxvCyI#AqC_d<GK=MOG z!(Lx#(41@dH$++zrQX)jWG|QG-O6@hXJS<)1~7R=;*nzRRs&<e?eB9y*L+nqZi6^9 zV9yb2{FW=#`d-4t>sxs6<(%M|f%GO{CIMeYYrk$zr?H|3pbFm;3P{mPX4muORjjVr z`W+U1o&<&;!ztZu)<Bj=tR)$XNqQVg&+gurIHctI#L7C@bqH&_J~<1(am80;_vq{~ z+*t2ZT^5-^mnGu!d|QEz!w;iCL_pp@1y2=T`o)oD6;jeTPzmOxqicsicfLJSl+2i& z=?)(iUvNqOS(a?s|3{&R%Q~`mCFqbU(_upuwdC|^c$4|!|BO|Fw^XTOm|1uy-R%MQ z<fb3V;q?mR#=B3t#t<>3%*)?r!KuaCFpOB~Iopthqz+yNWJ~aYj5lK&xFtW_y@%<t zDIxxRIE9R+WRI3<L^a?B`tJtuH@U2xoHYRvB?OL8Qb8*PINF2WOwUe*S-Q7<cz*2X zip0VRUtK5i3vmW0Y%ptk#4A8iNa@a3?QtKEJ77Hf;{n*C{a(M_Sw8DPQ$r+?!_xyI zs|Kl^?%6QL5b8a}&py=kCjN|=%nX*ec#}XD)rOGcbW0bMhUB@pG{mmA0rTH3xn36p zuObKhFO7_mR&8<uGeqYAd(NnN)RD6(V5Z0W)4uQ?$AjJk6?3mQ;T|#udUY6t>{+xA zvC{~!1`P{EW0vm)*_y$bTKry?CiAeHiQ@<!@|_9biKu7NRhw~0T4wv~zb#liw$0oq z!yFk7{}opGg-gdq=2n9U)6)m82MLV~NgDxeAg@axPN$}PblkdvV!T9-tBN~6gUIN_ z(eqA?VkFP3tr)-BR-qlN;ubD%6z&felXU@Kl0Aki$losSgG!XJs5y7RwlaC5z2m$^ zNHXHJ^J*WqJn~Q3lQ?Ulgk0t4a8Mv^Dvm^@HxxaI)ysxrsa&{Hzx2;4<q=isgl};; z>y%CPQORk;0RAvW(fUFm%)!jpcCvdfvdp>Ez98$KAt5@6p(ey1fyxPHHY_LsQ<Dek zGDCo94Uo-9R0HVm!NKM+`LO;V5ecUpr(`&?p6Z}-X+(M+{v^4IP-``@`2qN~n=-dR z)Q$(GpL|Gk-5m;`av-upVkn-MrZHnW>~KU2Oyyh*{6a*H+{J<M763TQ;cv*7(fzu> zbvotIJ2ZQ5YUJ2l))RV5tn1LNP@2;xoY~Xq`>V@~xl!yNmRDbNR2Q2@xBPSdv2`c< z#vmDcx4|a-lbRxTQRXdd3N|?lNrW1Hk_6=Eu51@L)k|lvZO&3!W;8$)0M4%sY8nCr zC`(reohq47rJz%35DH8tFKBP~UTmKqoHY|a7<4d;+1(c^V6mE@PB$w)RWv5ICeban zB6N#gXszK88sKvM*(9LRE2-#W<$2N3p`d)!DxRUCEUTyd%&9HP5k&0q<Kxr+y?;ie zRvB_|#R$V8;Z^NLdk+X!+z|R6<RRfyS*IzDF7dJCLdvghX1bt2PSO5KBF^?#1Q3j2 z-k$D?bCE@f-K?GG$|xRMxh#6_%}>{CTys@OTMS{Drb%|3V7Sb(qVSx4BwFZrZdzEr zOcQM=@_yc%)loR_{W8ZASY5u?)#*wxj}Hk<@xq2u0hsk)R5w&lswp1S!RH6x?HCEn z?pvpSJ_j~lQ$V&fA<Oxv)!ofUP&!;?U@>dcZ#O=`QdOfFw`_j!$r&1UDTAh`=g;*! z=w}1NX=++GH)C;}5mb}4Jw;fLC72E@Vz0=($$I3!y?3V4l3ewM)0ayr+MYq8-8SZ) z;g`rE#=dEP?#$6|6K)VgEb&^cXW{quJBd0yXePlvi|2ll%x6LlLg4KEx=2o)X(`JX zXh|NaxQd7Nvq<MHMA09r1+sbki<7suW)j8Z2D_i}{rt%J`|u)xk0jf{a0#0#zato{ zuQ&yJs4l}_AL}e?TpFOQ@2sB-$go1RH?W)we|25m25oyV$OH{C-pX_f&oBxiENQsp zjB?dhayR>>0u9|xPmiIMXPndg28+9O|LN&Hx}l$&{K{0CI`l}58cweAF;nWyG#A^L zdGp`Rszf@)YvRtV8^=co+n}n=_yc#@+&fk}uI#D7F}Oh_Vw&^d+E_@8nUt{0c(8@_ zVn5s!^`o)wJ`jfChB)Hsp376Wki-1#=8h;Gc&fd>et;-{LKQ=j3?RAkBeszNN7o>u z;oL5a{3?)*=p7f0DAc*tM|zL|`QM54DACo&OXj<OU)P@Yd8G526Kkx^Y7tu@r*XEU z$6(3My%=Z!V;(aYz(UQ+2t>d6Z|;GvFS&uM+<eKxohtCc{vi&bGNubC>qqA&EI3y9 z-r?@vE*;PbkWZ8g8F%*fIYWsrXF75I{R2qkSW=ozjQO}@0{35~B<d=tm9G$MCDiLs zCQ6jC>!3NKT9mt|(93(!ZcX-Tzirkr)C$I-k>f6;P!G#w<<jEMc4_KN2olZ}&1R+2 zUM<fdFqzE)*Do%U5|={|Z7vKPpCb($Dp5ZX+x1VgTWnpL)?|2SWLF?J4L&;}Zfib_ zFwv(r(DXB9N_c#0R-4TK*iWW*UX@7%pP%n54k35$zi6}|e94Ka8;<^yf969Bx1c() zc@ptvowbPk5}wT-N6RJL<=<h)y#Ml0$4(Z(Hiov%a){7M(DoPmSR$I2w;4MIdd5^R zD2z&`;?+71A7W$0(UVGxvPV<KxQa<qdo<V<<Qo3>`e7a)ZQ?Q7gZI#hV!td6B6CDs zqwh&2&d0fyrj@8jk976V#5u#SGZ>uC=J%Jxk)t~))v%K~&*HoGUw$Wb$)s^!xXXap zuG2AIZSYC#;;6%>=*VX=cS9%q*~7=Qh0G1za(p?h46L2wo0y)yrqYyTHP|LSIkXtK zz84g*{I{R8*$mQ>aGuMv_rEMEDGO`0;!H1`6jgDoEy{Iv*i@CU;eYr1bTCbGZSXfz zA^(0Y6xZnSbqcnFwtvzTTQS&xtUToU)EwEZR4I{O<XjLunwDd;DCd!#_jE0zqICS7 zLMNu+UIaVu&2X8_MUq-$a%=QpdB3>%NMKMSSxyzwB>$`%dg9;0uf`q`$Pj6rA0Ia- zks}k}KvzOiY=$5|;p*5*!sIGrlg?W7m=G0Q?(Q+bbt8=tnT|r5&Z=Pl5i!l~(DqkH zqLXs$e6SgZ>OfoBD+{d1*Ibzp)!8?Fk_3}Dw3Z(p!Yr8H(max{-77Jg0OSVRxU00y zHTk;3AMCE45|~_GfM#?c*@)Z=uiJ^Yq@H0zEWH!FT(g3mnu0{BGH)O+X!c!JuVf(9 zr^8e+vD_!k-GQTfdoYg3%@({z@lE{=?!jr#6c#HwAkjeZ%6z;|l)ic06?O8pk}_v{ zfejsXI=?Qd%k|gJkh|#Gg=XP5Gi#1Fx+XCHi9>l>U4D@aqD~V<+UCqoy%2~l%b`i5 zBW7W(HEn`2PGkbt%n90Ie+b)iXg5vbd1&E2T(IsON~Dq1Y+(U8_DnnaTt^^O8Cm*^ z!<Nh%o<2X?{r)M2N2h0q$i>E-9EQ^J{BNoZ`c&n!PF-fhry}fud3$O_ELjU+gKOdq zF*i}%W51m(KweW-`X^>NmbTwn>EKwa-il++1DQG^ix@J=h{M4ej5)Y4#J#ta#--C9 zH5dnvUTLJ~_UdvTPK~wwj^~{_f$09g$r)_~jZVjhhR13(i}`G{nMVuOs#IS#$N;cA zFoB=1oixFY6vx2{hITq*(uA;3u{B7Sl&??{xvMESR0V%&={m}c<mFEd^VnINL_4iA zNydlgB^NBP&|^qr9kFTQ5YJf2{*{3l=H|Wq+CQ_9;?q#lFH?Uzk8ZpGyoUHl3#pl< zq>;HiV-Ze87(fgR`IqTS!ot?(re}4c`qH&;zgF`Va_KBVIyLKrKeKDNt{ZmSAlO{s zG{rGq*4?&E2KHjtzN58TtkFI>Q8roV!mi2-ND|gQ>yK1Uyuh0)oH0;T!*D*CUoC`~ zaQk)h30a{Yj%=a<{;~PwoB0zRri(UG=qKOo`U6y$tQilM+~!BT%eZCl7T3*~0_spi z)}o3IWzm1WAbh1maao7|vyE9aRpJVFbNA&*Ny}Nhso7eRyGofMe56>E_~AJuV<zk} zk+0m|mtygF1)F6ec?<!`VQr62ws$eqLAilJ30IA%5wyNJmqP4gs7ta{g8^W<NC;0H zxzl8iMs;q!Nkd8|zmu>z5z?itMHybHNGXb|WG%447O=0=Zg#)wwGj{x+LP{N(r@>P z&ew0VGsIC?tULmpK>UR()u@VM9s--!abE~ZQN-Hixr0*$=Dyq92y|40sL}{7vanIs zXp%taKWMl`hut|skG5mcVf|-dV}d`0F_Se8hZ{xQFRxM)Ea%K98jF$4jd!g~#dOr& z^je?X@;0&eHTOMBZydF*pK?3BZ(e^Ly<?1fOXn^)##lOQ&+hm};JVWC_$sx`Y3f0; z{(#|X!CUh2l32iHjx*0$2$&@8A0ll+DY=m$%5F>~3TaqN4r9Bt`@%?*8rg!+f<+^O zMY+kPcrO$Gw=#^hZr>@o5xy9+7aJ(1Hyh<bGQ$x=yEfY<AKo<GS^J8`Ap8Du^##=) z$4Pe}uEiafFJ$3kF(Pwm-H<C%LiWp4yOc>)B5yV%GnU%NrVWMtv_uB!Hj{^i2g|sB z{{v!fFYdpi!Z$>;gkvIVI|Bgi@AwCr>Esc<tyotw^lEv-veL6R?Gv?r*u6*qAMP&i zzhJ(A@Y3za{5;u^=evx8E2ugC5O|W#a#d$=qSrDe5*yfdIEgfzGB>!>T-yc59ht); zT{F++(0K4Cit3RnM=z5Rp+moFjzohni<Ttbb|98Sq+}7`{(Qc#7`@wOpb$P!WfKor zbfE}?kOT&~yM9>`VuU#^aMMp8&4nVESCmst+#Rhb`TmbAuCka?NkL3$o+4=JiFXfv zV8fyv&+Z@AwV{xe8Fu!^*_R7U$S?{isNCb}mSyT939i>2{v-OsXB$tBx)Lv%+5Pll zvARM#i^>7s!Ma{CmGBOtHu<HYOo#HEtp;(U?PAdFjeAUh84sl8Eg`cdFq2QM)w19< z7!MTkw{pS(N&o@)@_NnG^V8+}^5XJ}72J9f6m`TT&uHPz4aN%P12>YtEE9_{H^O%d zKf68V?cm|Qk&CA7c76pe1$0E>n;bkXPj9y1Az6D*n=)DCio}_^XAd6M+J2%ZN}j}V zK5b&V9CQWy$8Uz2Wug!mQL3=z_|urajPf-aFNoWu?lVVRlOVM}_g0{lZlAq!e~z8Q z81~hNA)iMJa$F~DsVt^`Mqg(W5_8MjHBf`k6-x>`bmQ**Y)Z#BNfucum}i+uR|Mme zpEGB#!wbC9Z7Z=(INshrX}#KidT_MWJYX1K?IZb{o|)(`{%Gv&pK_NZ@S2$xLr|rL zFoh_xEwjP_;uU^GlBqqw6+!RZJ~`y~F0vexEC!hfb^(b<2Vty{Q&|SiaI0E>S(}AH zw=?ltpPLyI?FKtq8Ki$A7M5`mcFUXYz1f43>!xd)Nyl7O1`SEJZ})P9<Ae5)afn=< z#IML}*x3t<+)Q*|-Lnn-W89grY+No_!KsGhz<kv(vo|`kkS{Xl^BZEl>&hY7wvHb9 zU|^Rfitc>{FF5Y@`oke1tGnaz0Ar}`@(;c73nQc-ZyxNzAzo2Gow}NxnynJjZ^IMy z8m;1B)FIiZp#CiX$B34QxyJwUy(GYd)bwddQnV--z>{Y9Yu$0@UX<tI6v&^kqyrRi zkDevEY!3yRYO=R?|F@Y2TJ&#?lvL~r@4IRFo~O#0>EddJh%@mg2?;DWce8_<g-I*L zf0kQF)zvf@dp?rK$1v#JgRvqV42yxaT~H%cyK~`4E8^uJ*aev#A@>Ov|Ck_)1HTtn zDcCdZO_|;oGPv$c??2umd^NK`rV-)#GQ#irZ<-OygV@Lq`*s&q8^%iVC`JC+On&<( z3YGzeYj$}@q=Lrj>m%F+@RvVs>K_Y`D&rJ5n4Oj{ZY^;CuhZvZ+y1KE2G(7F_^;FL zw}<`SXn>s2D*#}<wu0HfD-c+Js9?ekYG_r(3V>m+s{o(;P(jv%9=ESShs~Au0ATpK z3h;#T3IvevJs6F^!4a59JNpDGud86P&<f;Dg-WvuI<o7W01A+d0oe966?EFmu~#5a zdaIy281V_NT8d);0)AZuvssu01zoZVn1R7yFe1i%J_g|A*Hq9QjYi%B1qreWhV3ra z-EKe<djOh#O$EKtTsY>usqigU0dqL+k4BSp9cYegYUp1q!!#(!hid3_h;UE$3)7&u z4K+2e<ib2C6ol0<=&}yly<WN!6yBkx1|pHK{3{eNz-pL`+TG!xxEK`$qNavfcNxY( zp>tG&tbF@}Zf}^b1;zcWsbM}@gvFq!H>#o6W-auv8P<PsDiqDLriRt9AHHG~`oI*7 zd!zBBovsFjL94ET!*`-!0yM5zGwK6hFz610t~2XH?TYLS+sm+^#-R^`-nc&=b|(e8 zpm>@!eVD8!fiNh-i~2C^^*h}WVwJ);)UL_SvLE;5B=li~`EkF4A56L)wCk(;fWUL* zD~dzP`!Ehmq0k3K�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℘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μ|9<s%U>nj{T<&qPEw?MX! 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%0A%UT=+B&043{nl#~(I<S0Q(m#)C9a|o0`}X{> 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ν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 K^5o(gU^vcX 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%0Dl_zd3*FnESu{zj7xW=5+ow?=1YMF>X_SbN)6| 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�e^XLAqs(fybw`ab(is>rZfH8n(B_ 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 pN?keTO@Re|#tGZz6oh0`TU-=QA&QP<Tb|PahTj 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�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%0AV>P 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�bpoX9vqAhsz!M%w(w%;iRsnDVH|QMt)Rb&=3K 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�$#!UzYgz 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%0DPKwK6xMM0`XZ% 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 tDJ^m_nn&OdHoWWl>1EDn4V1ScbX; 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 WpN98V^9uvKc5Q<8_I@GHE&m4{vcv-b literal 0 HcmV?d00001 diff --git a/lib/linux/libogg.a b/lib/linux/libogg.a new file mode 100644 index 0000000000000000000000000000000000000000..1da4ff156620b566a7ee1b1951cd2b58a70b5b89 GIT binary patch literal 28298 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 UF50K<x2yJtalr=-%#H2;Zz931Pyhe` literal 0 HcmV?d00001 diff --git a/lib/linux/libpng.a b/lib/linux/libpng.a new file mode 100644 index 0000000000000000000000000000000000000000..661e43a1f72dc6039b7a7ff77cb4641d683c9e83 GIT binary patch literal 246762 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 DtaiaP literal 0 HcmV?d00001 diff --git a/lib/linux/libsteam_api.so b/lib/linux/libsteam_api.so new file mode 100644 index 0000000000000000000000000000000000000000..c42f382adb548de6b1e795ac8b9dbe49001de470 GIT binary patch literal 266651 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 S^;m|(vGknOL;}h|Q~wW31*NtC literal 0 HcmV?d00001 diff --git a/lib/linux/libvorbis.a b/lib/linux/libvorbis.a new file mode 100644 index 0000000000000000000000000000000000000000..7a74ca25c98ae982997a2d5844f4181b27f737ff GIT binary patch literal 239364 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�{W}nA(6`fn7%*lU0e$8V1NwA> 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%0D8MU3Xd7P(ILHi%XfI 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⋘ZcXD^ZJ z9bYCr{kB3<byzK3k6tSkZ(c9m{jgD*sMsuh8J8oqys}MdWVutiEaytTH}*)A9rsI< z795nkv<^!J5l1DxtH&jMkCW2reW#>uc4wr?Ip?H_?Ji24cU+eCOV^|i`8T8|eQry$ zi|$HVBOgdDOdd;Ba-T{o1D;FYe!Y~cu6-k2==EOeS?QCMwfl>tj{PRJX#G<f_wu)N zrmwcJ-CIE<npPCk##a(!-&PjA`d1M@^Q(%H_Il#xYJFi)zlLa(Ra5Bb7>c~KTB7gA z+TvKWk*M~nu4oZuEKFY27muPFh%p}<itlNSg}aWah{$Rxg6f-z)@#hg8G8%S=|l^W z)!$NVcxxpVjkgv-rftO6J#9ru-*#f@r}kp=Y+EtS!CrK_=^*k)I*EoY6~gtrBpj6_ zezkNFv#z>|Z{s_Ow$7bJhu2+1rIj9Hb$>5W$H-gwp6e$1Wpx+rynBdC`aOl)*<NDg z%syg#fWPS1w4eC;yuTQ{Gf>RR7$m0q4Ho`pA>!GmP~ln-CPJ5n3!ju>LfbD&q_-X+ z_En1!$BJUbtb%x9xhYYMot`XKC#Q<ZgVKeAr%J50mBp)RBSpl7QR4W>(V|jXhG?EJ zMzn|?E2>706NN*^i<lu3#K(|{!arn^SR9fm@<JzzqhVQMO~e#2Z1_~67dK60CQs)k zb%tm;cBbf*HA{#&vqhbybHvH@bH#w2^Tesc^M&!b1)}4fg~H?2B4PD&u_&s(M2u;& zlr;m(gm>rVA}wHr7(HU87&2y+Fk84<?Ay9Vv^}*}C?Bm8%YUsGE9!3)O1n*>tzWj- z8@*XHnX*L;*pwq;Pj3|iUvCp;20O%|_B(}bpIt&u%N0wP>=yHn?GfQG_loLu_KOM9 z0dalELGgR)A@OZbo+x;7SVY%8DvDf=35V$8BH*ul;dADMsQ3G%*k*G|n1vLIA#+ZP z)Pgf2==WJs-|oCv8F@iyt+*&!-@GKO>s%4vyImCvCR`KMj$RjDS~qzF?v`*&zb&5Z zz9T}4?}}`v`{G2}1F>b_LlO4-ktpi;L^zLsD*OwdiH^0Ni(>y5Lb>#%IQ8t6c+&2T zC`^AVRL9?mV#5yt13!xH8$JoE;?LrY`&S{&Ef#T4zlk`<AHsRkPf>8|moPNeqNazn zXm*q~Mb)c7s}ENow-Gwj*`y+^JzkNb<15iT)5>IarZO2Sbt%}Y3e~w@g<4LiN{bz; zQR35Tv}vv$xqIkS$6|f@YkhU<KcEJs)Tl|H57ng0@di}8g(2nKFr>{>YEku0wW;7s zZF;(~4uu385gFH|lrwe7U~E0om5gb?2V*kWP@kHHn9%eF4QSw{1~f6NAsM<iqR(25 z$#HLEx|-O8F4~w<tCyy9Z%tEr7t)LZP0h&Swi$UXFsFjP&1sd91>L-8K~XbWkbjSs zw8X%YT+UgNVwx3A^KC^iv?h-W*0g?RYYOY#hSKV_rDxaM(&j}rbY@UH>TK4YjGne9 zv7rO)kG7>*wsv%+*p568+LOgt2kPI|k)9YjQT{b2`n|-NvW6-swyi`PzDT4vB&f+m zq5wb8vj#3aM&?45wz$%aw2l<txf885aHDp&+^ELd&O`}a=&*}B&8zM~c{e;rto0=Q zBrmdd>q<*%c~j_pZ%W(Jjqb}nw4i%;TG_;xe!uah^@n=U>gj&;KDZ}k+4iE;%Drj( zwcdmceW<>=FS+*cr`_fOr2ZN}GYk9Cr=|UARpJ0z;T1@)n+&A!p9a$KQ-f&9vLI@l zGMI{df=SyVghGFYQ0>d1RAbW+>NPfu9tRGkJo|8ZS~G(Diz2A@kzr)KIFg1YN73&d z!|9&&2-2$(P3niy<a{uOXkjd6CdW~eUh(wZCV`sNNTf+G5=n6~iEP&-Q~cNz`Wli- zM?0p`<)-Omt*xXJ_mq4+Dmu4RO^Q)6eX<!z(aT1XUae7da`Y%#`(YHV3mr{`mq$}g z_YBs~WYBlZF|>T)7>cYumU_u!De&D`nh-LME?gc*!ecz0*fX9IT2CM>oj_K#Cz9>B zi8QcyBCU;@M27b!(fpp7<dUCBl@*ieMfPNR(=3Y&=Vp<g-W1A_r%;=ZQ|M&)R2qGI zDnG|*<dZ**f~4s*HD@~AvY0_#7R{j3hBGO4{7h>9b0!(Y&!VbDv&eMNZ1TH2o0fH* zL;8p3&<w}9WVd-PeP}+93Kz|zyxQ~W{G|ExLwf;rOkF@L-Y%df;R|WU-Gwxy?;^4} zyNHb37gL>si>bB4Ulg?YFWT5*3DsJ<gr*xWCClkc=|<IMv}*J+n(%!YjY(Ke^Ik2d zV__?(+PxJtG+-s&y0DTWyjM|;<Ey9utLd-Zt7&3~HI%t&4XtdkmM$+_OAQ*XqtrR; z=#{~GO3qwQ#+5hFnUNc4;r9)sO4>+??>5rts7<u$=_a}zoK04DvT1U_W~y*`GfnZ` zLTw7S&;$1zT7M*m#$zib@7+pDhix=#+crAbc02vru$_Ec?w}njcTnr5J1KYZPU>y4 ziz?0CMftUJY0<P?8eM%irBB*TV|Dk?vN3z;jP_otF7KtlAA9LQ>OQjhvX8bV?58g8 z_ft{y0b2a(00l=LB>SR+WHR&+)p&e}3`6qB{C*yF8FZMEZy%=I{zpjn#t{njKT7AX z9Hp+kkI|)z$0*Y8I2oKjPDi@u)0i{)<k#&4wJtnCMqN*mUcpJK?pZ*MP85)%`zacH z{1naZTu4`r7E&{})0BSXG~MlZhPod<Lj|s9sYl*fdf;-7<U{Ak!sR?&J9wUE;R5wP zc!8{Ok#rAUq!)CFZXCEo7w9rwJaCzK^p)NpxI#5?mFx~)r4U@B1qZLubzCRYL)R(B z<p$*+x<MAMH)(R-P5S0~i((GnqL&?6mvH1Zed~0GGLPP&W}WZSp<{O`w97rJk$;c& zyWgky6Zff&=L33k@&WDedPwrAht%Es5t*NUL_fPdrkiIT(}C_!Xyv&lG^NK=QeAjT z(LJA0=%r^A*t>`Vt}yyOr~cQTQ&7MQ3cvA!;`+ZN^{tnb75Iw&y7P**40=sR@4coQ zgWu4*2XCla=vy*-{FW%}9R)mnM+xEYX?oFn+BEC~6}<RBPoh4O&g+lVB>EF6-hQG! zv7agC{b!mO|Am%){6e{jU+K)}uk;|fm_B|jriy9bsMhyy)L8kQTK@b_ZPh=>_V*96 zANiAPwSSS#=wH-Q=QlMP^P70hEd1)Ih4>6DJUOC;J{7fb%uO5Z#%g2XF>UBnu7IIk zDxhFo1z6=*z<6C9+;`W3;{+XKozTIZDivYvSrN$-E8^hEiqNT632t7MFnUrY>?^2* z_th%HylZ9j%&ZLcsmfTTr;Gfqx_FYQ3++N()YGp5OYbVMpIikftb$JZRnf`2Drj<5 z*cMhrbNy<l<y{TMnbmOfR5j%4>0w$|*7RoTq3tO>e6FUCTrYhjOwvcI0)5=9S{>s& ztE1J#>L@r-9l=#<;FEg|j2d49y7@IQzH&`yb*YKCu{Ck$XiapgXn<v%3{X7U0G@{p zFjLzQmt72DIMNWE4;muwmm%hgTG*kig;RTL;l{UGxbIXO_fu-)+OFC-@wqm(*ww+* zggO|ytq$zp*TGL4BkYSdLR_{HOkWw{SgX1S9#$8h*Ve_Tr*)xYQ4gxndU&<G9(vuc zhpkPFp*zqRJr@~c_6=j4F|LoFed@z(c75PtefSxgpkH?r1Z0`O=adPYsy0A<_Xc=7 zrUCXHZUD7bL)cS8JWOwhal0F$@t20!Xxj*F;~HVj=0-e5)Cfsdjd5mZW0<UJ%>Dev znBJrbYgC%x=KLmjbEOHs)HY?^g(;q7nc`G|DOTw=MZ8;6*o|t67yFxH&bOwpb!dj; z@y*b6OEVmM*$nM1%`jt#8J;XNLz_Ehh%hn7+&<>mJ;NNQ&zR$KwdOe2r8y3aZjQeW zG)LUG=5VyPz`IxrEZ$@RMUe#x&0C;*PzxMe*aEGuw!rvWEpf41OVpa!5*?4W#E{=D zk?L%Tk%^W_*<y*{7nUFkE9ecjLcu~Sq+PK>L&H|s+_e>K$F;)xL#<%&y%i$ttg$uP z8ZXybquwKHbZFcfF8-|{X0%4D!q%u(xeach4Hl%ff!DS+c=56glooCAYfxLn%x{Ye z7uv#H-v(iwZ7@%5gFU-!Q25pcr!Cv@_)|M9UDyt>m)fCS_4c^mxjjaz+oR^L_Q-nE z9^YGZK;NJaSTU~y?wsp@DphUK%+(fFskUgEV+-9PTii6Y!xDcx^q6Lc_xW}h_1g}= z?d=gY!XC$0*~8$rJ>2U!V0c#tj2i8LjNJ}Mc<TVa7LI5<&=J>XIbzf)N7Sp}goTby zs2=Tvs8vqbebWga4V}@@!x`<>&am6=42$Q^sA#Id+1?6_&t%<xo&twHE8t=+Vbfp< zx^pG?6iOJaEm#LFkP|7eVX453%K~B52rWQ7mPZ(|mhkZwu`UQW-Wf1V13a^V;SZQ+ zsOy3>FBgQUUEsLY1z#V#U{!rrP&Zc`8R-h!?XH;i)D_oEI-<HyM_7;Q2*>Rm(e`Oa z)G}cmlXoX9keQFz+6m_#bwam#ZrJYW23@5aI%m5f`kosyYIR12TW5?&>I}EFol)sV zXXNO0frsdVf)QQdu(S)Np6`MS72NT=gFEUCafitqcktq&xc9{!D_VM>M}P;4CVC)p zj|Z+j_kc|UPsDZg#9!&2*s+0e(-X_|ypW{uf_<bH?k(^_LV*|F7ki<fWmjzS?~0=F zUHMseh3S*7FfsDRuTI`5jPu5rW!|tj=Z&0Syl>qNWBYf*nTgDI<g(`K33DHHd|=qo z2hXE@uyL^u{7?Dd^;aK6S#-zcp50+FsyhZ}cgMJ!-7&L@FDBXfA~M()wo`rabgwTm zp82ARQ4b`$_Q09pJy3H&4>%p~0q^%c;NI8|)?R-2mgt9^Wq#;!+7CCr`oY`0Csudw ziRWoOQFnDuSfB3+s~<gK*rFHi_2`B9%3g3@(+fw>_hKz;FU+v$jVr#rQ6arIj92wW z-Lt*%<7;meHtT~7?>;b3>cd=LA2dGM2PyCSU{8a-c<j~}Ux)X_$2om*?O<Q5de#^H z4E^!d$sg)qf4rRJk51eCG5V%I*69RbcdG#8^bElC^Z@i*5dghY%*VVBKy#CRnCjXO z_rv?4!L)v$UH#y3hxwUG{ZZGtKd$@r$Jo^VFkadpvyS)2*O&d_R(k+aoCaX_paGaa zmi1>F2Jo2t02qH6fc*^v;ngt^2ZsitVOAi5w+3SB)j+KJ5s2kY2Vz2(f#?%C5PH)F zV%_$EXnTDi7XKWG4^0Q5U6(=dA2tYKQwCwc)<IBQ83gTbgRr?#5W2Vq;b>?OT1^N- z+J+!(ITM7l?}Bip&R`sK7>tGe2BV*9FtnEr#<atOQRVSq4Al)rwq-DGcMZm;;lcPg zH5j*Yg0bOZFhV{BL#JK{G95$kJs<=<(?c+GQ3&?!4?*Fb5FGm*g4L#>7~vWU)8J6- z9vuqj6`@#pBov<>hN5l7A@DP29k<&M_=FCD<rwCQRt&-1BSX;Y;Sj8;5C*+wVd(1` zhRmQatd+x%{Z|+k?hixktuVCx9)>IRhhm81P~7S>6pF;57&CJyw&x7R>9a#|=G9Pc zci9)lG8~=V!%-9(j)c*?U&8<I4@c&WaP0mPj<a<laJF3pcKSqMd}IV%CPd)=$_PZ| zMKFgN0mZin$aRNdWBXw^;xi0+!-iqqxM4_LJ`5cW48!H?!w~do7%mw^!p1rhN$!zY z6usz~gg7l}37B9VHAIjSP&sC1$b-Z%<(9ixDrQJ6413VX*#;mWco+}s<5lb55g z>`fE~R~-&LGuE$5!_lD6aEyu`j`I_Sqv~?zvGxv!<E7zf{c1S$E04gX#v?G!VFa4` zj=<{h5ilAx0wd;+z?Pg5xOH*_-rZ*ukH8JXXl$~K#xU1t7z9LPSxht<PKd_HCDAy$ zGa9;QSZnw=n!l%Lw64wkmQ@U{yTo8h-x#zR5rf<@G3*NvgGo6txR4)%N_S#l_Av%l z)nd`eG#15nvB>Khi@3qDsF@s#Ig?|dyF3;lyJE4vFc!D&bC}Pu(9(~?d($|awTr`C zuQ+%Pio?_RIK)hd!^1^!=$I3S$;aZ5cRddGU&Z02c03*$#p9S|JZ6Y^c=d?K>(F?p zQsVJ7Gadt%#AEZ;c)UCo52Nexuzbn*&BwJ8@X|a1n;jA`&?^C72P8m_PQbfS%(u;A zpQzOdIG3A%_XW(g-A=&w*9mx_m53d+5|Ln@h$i-l*yWxGMF9H*3}fA-G7&wp5;6X- zM6BDKh}=Vo*mgb<3m+sR=0hUdS4_gaI!Q=x&U~DG5>mP(;d-AWv>cj*(Bvdc9-oBe zbCa-YO%i7BN<v(I62#Rce0q|E1)q~(U73A+jFMr}Jej%fWbE&hj1PXvs2iM&ma)lb zF_O8vsmXY~I2k)PCL?NZG7JjXKjB(3nmtX%v`@)+sgnYSS}BM&O~ITtDOfKtx963@ zZFUOeuoQGlNI|vHDcCVJ1>F~?;OhDm_~fQw`>_;MxtId)dnr)AO2J>>IG!%+JnOK( zQPWf;w@F1OMJj%|r($idRCFAiih|+1PfO)*Ar)FPQ_*EfDwG?T3*4289Y<2J=Pbv+ znTqL8QxW<h6)k_K;%2opZgbOM&@2rzTc@G2QyL=N(%8=-4Zr)Pp+i_2`oyMTm@*B~ z<I@l_BMlyl)6jTr8Xj#;<8MC=9Z#g;#sxliI}Nv=rosI^`(gZGp0P4>hlc40XpoMS z=INN&mi4Dj>?hSJ9YNjFVb?buKZ4S+ZCE-6B&6euDjgZ))1f_`wW<r!aehTQ%r`OD zxHBDp9ZbjZ6Y02jJ{>P_q~rO+bliBEj(wlfG3{46`sgZA!$67M#!B>Qs>BmZCBoY) zam!hWPMw&C?5f1Gp3FlIU>}fB<|Lz7>zbg%Vx<!E$1qnpS&7J5%v&yEE_0<4$2KUD zuuX}&dzILDSP9z#CAOSb!t}Zl8TXX9{!|IGH%bitti+6;O6;nr!Z|$^Zr5VeSK+*= z3cFjV_?fE^X2-mxq{73F>~G?!f{m{V$NH$?6R1LA2>YQ7Q(;w%3R=l3_^MQxm7&7v zi7I@bszReVD%dVk!DYD$u4`3r$X21*b`>h@QQ_)A6_y=SA?TC}M(0&Ha7Bf{TPnQ2 z&-~|8j{j1HnD;8&_`*IfKRNFTYTVRiZnL@?eznw)>#4D<p&EOds&T@Cb-Jz8$hT2r zmz^4aIjdR2poWhd^P-+=T<xYtmY*8Vebu<#UyY<7H7XBbTZ9_bMyR2VW8O50xz=<w zR?2F8$WX&+f*Q$_)z~mijVrU%D4wTAt;MYUUB*1=D%J<DQ={1?H4Jjp_`F?>i@9p7 z*{4SQA=U*S<uvluSba*39%uRZ0&}oe)G)ol>D^YN^?eTei22!PYK(coeC%u19=~TU z_LCa-zN%sVLye%{YRsx2Bd?N-Cskxr)R)nqCi9K8WVAP87|UqYKt`j+%v&~Pe$I@! zLksq?v}C^=Yv%jfvIe&u>vL_{_s2m-O=s2}OUxaD!@9B`kQ>KyXHBvv>w&#xWcaYA z*jL7&p3J@WmeJIob-(>&oEjjb-XIwR2D45$M8@SI950-C%V9DCqh!b<*dD`vL2+Ex z1P-6X{9y|7p=n$mCF_RO%;An?ZS-i?43Ck~XPk_-6J%7F#5`!GjQLrd&Quu<r*qmf zn9rRh!)Xrlj&qsgoX;HZLgq;qF$en>mwO49X&LjaE0_~rDMN?(VbvPeSFh!3T+exK zV4ii8%sP4ICO0z|o5Q^BR^}+T$?)94TI`+7YwnU^yqkTP_VBgu<udQ%`1_e7Jt)JS zdF04E8IupQmih>vJIeZK=9HfvXU;R9In5Kyrxq}$drC&-LM{jM%f*aWXJp(t%h!I6 z@9}x|fx5u=<s#q9OUxf%mQm*lbFqy5S2@pXd@a{ynB8ElH)GRHeqOiuS>9&tHe=Bp z89nauwcV4kl`-%>=f|9MHpA~B^RJ8<k7TrY%)B~d;1e!CW6V?LtDmv%oMFXW^;U-C zbLNN{(hJ@*9A5HsVpzVCv4m0UHOFIoU<AEk&X{5Mmdn7<e#iVZ<2a-FdwxF{cNmTz z*!PR^l%e=2V+!Lgqs=Gg#u+CVwLdeD&RD@HVzmCkygVa^@s`o{D|6k9HH`ZV6Xw7D z7!w%#7;hQPzVW-t$Y5+`++*l}=WAdLW=vviWn5?cW|;qAEdnEwk;T}=IL&y)&|{9g zC8IMVh>^~i&B$itGwv`xG4y}&d(W_EcrgMQF^tiSS&UVT9gJg)ON@t%cZ^>Qz2E#^ zG0Yil845;cMt4R4BZLvfNMI-#V;GYeGZ_mQOBt&f8yQ;}yBPZzd5mL>0>&A}dB$bN zHO4K*UB-RJBgPX(5#t5p72^%#E#p1o1LG4zqs#xo_{u0|Xf*m74!?}Y|G~!^F29V= z*Kqp(<n@2EO@lHX|9`qaj+73;6ZGunp2)NFEfV&-zAUnDqkL{Z|B#u(#|r%%9Cao; zJbaYxkhA)-LzKCe<BTEo98b=%ajccw)v?FPaL0j<GaMTYoaOlV%qqt<4!Mpa=bduw z{qC-#dB;zV>SL9hUJo&J3K`wV>8y#B6WTgBZ9C}Z)VR>kDeHgH_8w4CY~9*!6T}FO z836?p6%#=bfvz=Q5KvGs0s;z1R1wJ;x=|4o6?4|Dm~+k<%sB@Xa~3n0Mg3=^>~Eia z&bZ^=GyYp+Jgll&E3Z{m-OYMud51WZ`^7l~-OP4)R65R~UhAn2PD|!G4D(;&FunI$ zhaEZF9BzEv@9=TOaR<Gb7af`x-g2;P`^3TF@>>UK_csTlH=2%(7T0jpjn#9M1vPMd zJKWIm)?8D^!pE%~m-O!7n02$0WB<{PjxBpQJHE4acid^$+c9aNuVaVBfsS`IA{@u( zL_4-MPjWo^DATe1gHev}@8vq$yvcKXQ+u*wONZ%>H<D*NRy#c3abwfPj+e$SbBxhi z?Kn1ny`w?vEso|FcQ~#Yzt?e1pF@sj7DpZH%TGC~s-1TXt$oGukZG~wOt(9Z57Hkx zt~~I}@sa*($GM4Rjz^z-b{sO~hof_rh9b{XTaj;GUE!%+OL6>V9mV%sa>dI_^%S!% zHdK7SZlExHVx;)+t(juHL370o(Nb|Q%0jVZaXUrR+m?#{rX3YsqdO}~57{d`jU>eo zUOJ?B(N%F`U^hjb>mG_)eqM^A2YnRQiQWp|I(~}I8wM)Q`UEQsb;1;;2O|}Cl~Ia* zZZV4N1__Fgm&uCnr_vRko0W<-7e*>-oF1(>d~%Fpz?rd%<Cn%O>fWB9=u$dK(WPRt zqF%jeiWBW-C<b`UQXGz&qtKZ;PtkJE0!6c@e<|KKDo`xyxm3||%yPxp!j+0b*&4-F z*L8}bNgEV-#hVmuEVe3^Wo}n|yu4FkX1PbvDu16s``rP>Uf)86N6}%$7OP{5vLz=J zwG2)xzE3-=I4ZxOh@5swaj(%;g-yYAML>s}ih&196rK9tRXlomUom|ABgH9;r;1-^ zpDXGlzf`<4eWO@+@ts19DOaped{R9A^hNP)$9Kh(w4aKri)E5&HBD(iw3d{9O<Nl4 zq$8;|RF?)D*OWTs*OH$6sx6IA(v=#%)RXeV^rg3V>Pm`$`cgu118Ig|BWcmC#?p+S zCQ{;KLrID@mfn4AD&>zdVa<n`l)I?8bl=KcGC$H%>gU&58ur#giW=Wm@@~;yvMB5z zJqfasCjPRP43~D4rgyWI%3pPs#H=n-92}%cFCC?6^CU^-L6Y}(NcA>3OMAjyBzI#s zsqk7i$z+<lG^AG#X^yU^wCTK;w0T-@X|8WyX-L!llF3tV>ELEx$xZ1eZR;5z)ifR? zb$=5m4L=+#rOpkJqT<3N*B%j4wN^u<4O+t_=~0xl^=P!Dw>n1Zn;$1-CM8G{1CylD z?kQ4m=QOFgd4_bRL6#IyT_s)oo-H-{I#ROxI7;eKHd^ZQE=TfsJ4WjKHdm_uZmjg= z{WxjOhw)PImprM)j|tLp%}G+nn)%XJ{mD|xCR3z|&8JEa+fS3)+fSE<y3UYh_nj&2 z44x&OikU5)Q_Yc%PMIsMUouY`w|&0U|KtLx?wy5FQQ2QoXwAjaN7Di+!(oZ^zTZ;G zf5b9r>-go;kL4>Qhr=tSA@^5FV}Grd=9sLN<~psDCWfw;Vskf0u4^_*wa#ynipn=j z!wk1dnq9X^6Qj0EIx}}j@dtNG=U(iR3>)o{2Dt2%a^v?&%L?{OTP_}uwrCuZ3OW@^ zBO{BXKJyPt`WKE!McT)t5XEt+Ea8Ndu<oSv=<zAZ#pH}MBjBubW%fBq>*{%_dA*C0 zP2WqB^|Z@Uv&&bciu%{2Q@+=w-1#>on|sC5S@T<x@9+}o;?~=e{r5Z4RM&gb^~v|8 zI=3E3)~y~%E{TsNx1uMKo&Gba;o#@eqs=d*0?n6FPoG!P<JGUF=pS#ShyC73-PXL9 z=E=&XTYev;8e2a~E$e)itcQG&+8p^R$xXjYkCheD%G*CAAL*Br-b*I%OC~ZmYY59w zP2tx-OME%5CFB{}Vqu4BV#$MQ!f3XRsME8$NRrhM{dU$6tD<X)_!hOqwp+DC)b!e7 zZjU-b($W<J_Unpg$$H|Am0S!jm5ZPi`r^dkx?-hqJ@LJ`o;W_MzNp^6fjFq&P?Vl; zDDv|gi4~rWg>4-JVSm;@Y?;(VEb%fFI&vd%|Dutwo?$FL`7{+aO`3^^x0{I?OH9P_ z2vf16t(j1~GZS5QHW#b2T8POm=Hf-ImSXSamg3j^R$^~hYf;+XLQMH&AyyZ*5nU#> z6$;;WV!K&;vE+4op}n_*C>d)hT6tTEXJ*#I_?@*le$Yld$?quA0y~N94z}X^4_oo- zd}q<Oz)rMH=pxcw?S*4w2N755AdC(=3diXRaW+yCR}@0@u1kWRkyvs7B5kIVI5ON> zjCScNb{M&cK_6U1$~jk|y~<7KjOr$`26h(_cJAVET@Nw+wTHNVs)xv5*;DM!@f5xx zUScSEiC0Z~izgMmMW5S!gysIeV&uYp!cEy<D1*F(g_DnPYwjzqYYz~&o(&Lv&-e+) zP5xr`i~tdlHc+ez93%$11d7pZf`qYtu(0?XELPneEan~$5#Kk4ic53CM3YhB;%Zcc zkoiQ4#TX(sw;d`vH5w+`Xhw;tZ=%GolHp?e$!HP3bA%{Z9wVG*#0u}xaiTarUYrj} z5O)0%h1?}c_}eCnMy*nWi$SV*SSwAG|40+b@6*N5CmG`G%}lZMe3p2AL@5gPsKlvF z*}|s(NU`huNRixQlo)<|l$hUjw9q&-S`;X9MB45gF~0K{acS!q(bqax)Y_OUzPB4I zTCN={##)RMrmMz@vX<jT#q#lj%=5(VWqBg1#RTEKY=TH>F;QGvHc^C`PZAwgOcIu@ z^2N|q`QnzvWRbIWvIuWKMJP8;5$CO^3g2y0MPs{ZLT}GBLDF=w;?Q*A;xa=Ro|qw8 z_naw4T$m|J`_B@Kif4%lfwRSihqFcXp>xE%*K<T@;#^*XGgmCgo+oPQ%om#{%@>pF zFA&S-FA#6d7K(&53q^aIzeLkLe+f6|MPkLNMMBYUv8Yk9Sm=fq@H(Xeu{ULj2$L-p zE)$lDfCkINszu90yEe<k({0N|F|81?(<?-<&r0#}{z_34y-FPYvP%3Mvs%Q|T_YMS zS|i@KT`RPAuNA%A)`|0%*NNQ0>qY#V^<q}m2JxoWMxmOwQMg!a64<p#By`&>Ze80f z(jvA9ua8@VU+z{hx8XJ+U%5@}v)e8fo!BmR`t1<fr8`7k=1$?FyGwLjyi54m>=xUO z>=v%RdqnLQdqnlDy~07hPZTWOCxqR8p?`Y6FbFyze98`plVcBxIHN<N*XBba#H~=Q zy;Ue$#}$cN)eeip3l59>Hb+FqlSjnfpra!7<54km(lIfm#c}a+?{SgU?}X@DdP0cN zCq=a3DIWV%BC6+U;qdshP$<uc#71Yu{Y_`ZD35c(_t7~KqC77aH@+b1Z@nP)d0rHA zo?R5HM_&@Jn_d<}_FNVXeXfWv@2&{F{Hwyh%{5Vc?3$PqdR-*`x-O<Hydmy66pOGM z#lk50rl?;3mT0x*mdNN`A~fHWhy#;uiw*7Wh>NH1h}Kbe#nzhlMBJKtBGlu)82{qF zc$oJ<#I}9N>&G677SWGH58cON#m2|Nw$Bss@%<A~I^(IRZ}&{Z6h9L`GM<Y=O<#!Z zg)hXNuu}Hx@KT&u`%;YW^-3tqUWw(iUyEOkZ^Wc~Z-nQVw*qb6iHP&>#DT>3!lOx< zsD7wSd=4)chP6M4xGf*VmjNHewx1tG!HQ3!(DSpX_u;dcv*3&Ha``H{y!<Nq&G;r3 zE4~Yp$KS=JNfly8=O5zC-5;X<_@5%*=9h3N`6VWGmC?*OGTQM<MsJ)o$a#(iZFr?Y zHeEI8{2Wah^IDVoyJ(SO9`ja<yxp{E>;i4N^j@26-K){&Mb*glV>K%4sYAP#>d@@3 zI+Wk1IxSpPosRyjPSt#CP|$`NbV0i&`46f|729gkuG+O|LRc+I*;k7)>er^(!)w!- zBeluExDF|k>d?2db!ci!T_Tk(Y2VPLM^<`tbG#lsf1pQlg`9fLl+%jWa%#|BpB5D8 zljApidf&e;6>X?XtE<<eRU!50;J$kFx?z3l6jz_7pRP|eTQ;CM*$qhCYCzv@8`7mI z4e4NMLptKti0&6OqJ|ZXC}comI<~bjIq4bDm0<>?I%YslW=+UY*@SA}Y(fn>8<Oob zLyCTFNc%jDsQF4GD$q2h&cVj?aGx=)G-yhrlABV}<));vYDSAE@fx%j&8T&E6Utw1 z!n!<DDhM_u&jY5UZ)8TLX=YS%-HaaFHYcqa&B^h7a~jvX1-;zRf`-&Fr>{}ww3LNU zp%yL4eq2jx^|U3mb!$a#%Ue;ZR%<E@ZA~VJThlBv3o;vJLC5Y}kjkkI^)6^bcCxnA zX>eO|FKkN*rtN6k$aYlwK|4x!Zcjg!w5Pe69mpfB1L+^_KyS<~>0z!Vy?$y*y6#rw zy2gs8)v~6K!>uXioHhNlw4r5FZ78_RhHSh$Qj?t>sj)#PYM0T8d~SE5nPf|)1-9g? z)tQPTI#cY)&Sc!qj_&2#(e8J4w5op>TDP+c9cyAwAG7R9ao?V1yEstwRSuM2%aPi| zI8w<aM_SrhL8^HQiu<9Uv=E7A9h2xp8$t5Pf>?e_cYS#o$vz@2Q_zkvAms~CKrbii zxy_0C8#q&}(wPb#I@7c6U8(DauC%S53pu2@(3Lwbl;h$`-PgF1ncR)!$!=7y#EsfI zccTHTy3st{?({CPI}N<mol2bCDRz}RHPQ2+8%Z9tro@A$cI`ov*7Tsi^m|fKYESxp zw<mdY^Q3hfJgIp@FWQjhMV^nnNaop#PHyW(%Z+-|teoC7|7CC5*1r!u*w=@eoA;%( zNqy<ThrSdX*pJ>H>qm1e`%~XJ{mDe;O&Y_z>GLITk|}(s*>WH1t?Ns(Qhe#nJzpB= zF@Q?84xl(=KQb8WM_1nZ(K3I38hgZ_vN{CN*f{~TTw@?z8_wF?>jNplX%O96JBS7~ z45YW&fi$x;ki2|?$gnVozP1gfSF?htOg5NmM-QehHwIH`*AP0rA%v`&gwpCUp=A3m zlr9epqcJDK$fHv@nJx~e+O;F7Mrs5ZJc=Mi??{T@7fE|t521!Lhft1eC~1utN^@=w zW!>yB`nYu%6`DlRUz4IJ|7#RYjT}xZt_-KMPSK>ZF`D`rjiAlrN08a45wtukh8!-% z&;yF4`RijT(lCx($H$TFr#R{o9#1_l$5Xsh0<GDYK;_1X)MsKM9sHU|VrUXwxSqu8 zB$LTvdor)fOQDm~QfQkjl{Uqu(t*3FbjK@=^bVv^pZ4jrVnI69s+~cjGcu@FX$CF# z&!j%5GD+7Vi%M2!(Ov^3tsAeT4PTU0I8;TCi&bRkkxhg5WYg^iBT3(DBzfhIq!|ZB z(u0p9sf*<(njJZcek>YABW{eMC-Tu0={}m?j2ulP_l%|{Wus|d+Z>7v%OQh>IdtV} z4$ambL!sTqQ0MG1RCo6n`uJ`PJ#3Rp*F$sZ%7R=fzM4x<bjQ-SZeywONM4_~XDmgP zjirKi<LFNKIBKzI9L3!jN5}QYQ;QzsDKBR{ecnHwqCbtN7gl)`J1mbXmgdp4+j(T! zXaZg7J%O_GCXnrs3G}XF0&TaONF(DWlK0w)Wc7F=)oV71ehlC>jni01eTLUJR?DZ4 z$S0kQd@|Xd&qB+58e%b-W`|Cua|<U^og0&>U)?FRxaSo5m^+2~7EYlZ-=>gR=czO! zb}H$uok~+4Po*X%(`b$VG;*FfjqabHMq_JECtKI)^g=bAR_vKh!#?n_)eO>!nnCxL z&!9v1X3#3bnKavHCQY0=lg6K!Nt1MD(Ol<Qv^HxN9oaRD9+l0a+Lp7)Vc2YnT|S%E z-J4Bs4Cj!&?;M&iZ4Ny=JBOTW%%xQ>bE$qd`%T<Cmoz@jrO`I?sMd&iG;j4hZu2}k zV=|v&2F@pgIrHh{<@uDYw}3>C1*AE40i7#aK#P7Xpj3y2<deLR6k8Tj>(>jZNt?f@ zUIeq`FEY6E7nwI%L|uFqQJ-mxDDK=Mnq6}-KSvhRr%{W^>fmCE{kE9<x_~qi3#k95 z0$Tr){S{d(p}6oRR8p{nyzVTaqfM4lSKp;{eEL%AdtoU(sJ)C*-Iq~=+-0=0Xc-0n zTt>Qz<#af8IVra<C-HtcX<M$Ki%~0R>8cf!`FI8So2?`fw31pcSV@hGS5lpZtEhUv zRa9fjDw3aFMaDH(lV!Kn)GcQ<g%_@-@jq767RNPoFLezy*s+Fsm93$CtF?3`dM!0w zyOu^gTT4gG*O5u+I?7(Wj-K9LM|};~)8PT@$zj%d+HrY3+39bf16~`*W8wz7b#ep6 z>ue-l*NyCRY9sj^+DNh=8@Y^4G$d^kwb;3d9+hvRH8z_mDRwitZrDssUT&sxi!F3H zatrNTzJ>4CTWGTBRvHzwmC_gT`p{b(8f>GHzT0Th%x(17<!!W8e><J)wVhr~+D`gs zwv$869W<o-4w|34gDxG}LAshdsh87EnxWcBclPh3_TP6>w!<#Ek-Cd)ckZHDA9m6A zj=L!$em7m+w41uW*-eMq?;*wTJ+yz#9&&!ZhfcTJOMVf1>E*J$H0t4AGB(>s`-AsU z@S=TG{mwqxZnU4m1NKvsdHd<|jr}yG(E;k?!+QOh2k74A1GJ&;LCWrPkbI^bB&+iW zNmus}z3q93u1z>ZhfW=$4K)gBarZ)+HMWqZ94n-J?IN1uQbaRH7tx}kB3dUqO#5+| zE~ySv>4C$f^W!kJl8#W1%p(-P_Xz#<^$4A{KT1DSkCN@KqZIS$D6Q*!j9w)jBb)8V zD82j`9qo9W>L(nh$Sucd|GVSV(E0==#Gatb8&8nkn-la`hm%xRnCf0CZQJV^oV zPSK^PQ{=h!6rFx?ih8y=O&5orCco9E>EW}}6xaF;X$;{tt}D+_ho@)gM9Z@j9&whm zSDdBQkIzys^K-mL`y4G_c8>Z#I!D!7oTt5^=P6<7dFt@+Je8VVpmiY^C}zn8vVFil zwM;M4$-x(CcELp&a{nSJOfOO0!I!9X@g+Kb?-H+Bzf8HomucwY%hc=MW$I#bh0KDl zkbLnK`gQjTy>E7vo(5f|JBzN;jk{OrO0#QpDd-wqUUZGF-MvO7&92kKpzHK%(RKQA z_c~QKxj_cOH>mC68-#l|Xn;vE`(G%giHnPA&AnneX>yZFgKv^v!A<IP|0WGIy+yf$ zZ_(z0TXgsSEz&hBA%v7r!jckN^`M0An%$<xp|`2u(%Uro;cYtG{0`L#yF<N}-J$7^ z?$C`Ecd2RkU5Z?Omo`7XOBLq#$Rpw&&0TSio<F%qj;-#~<jDK<Xytu!cy^zrwSGXQ zLmrUZ>Ibys`2+f8@sNUsJ*0zc9+GM4L&|B(eix!1k>|QcwC&|1GHU;r#za4+H|rl$ z!0X3!qQeuijd?=LHa?;HZ=X=E)l>Q$`;?+KKc&0xo>G6CXLLIL898r#MtjPhQO8ct zX?@~zYPJ12E&cGEOgg`yg~>0-aOVq}_vr;S=~7DbQcKBjcPTCWQc5NcFKKD|OKP?E zC9VDTlB^W3Xh-HNQtW?4hbvx@hj>kwl&{JE;A?vL^EC~}8~T|2hSxj4p;{VmX_oU_ zG9CSv)*XIJU9{fOQI~hrXUsdgbMzfWReMjL-QLrfvG1wgiT6}cy^K1zm(jlQWz^$T z85P$or^p`V^kG6d<(w&}x^+I#V$Tm`ng4<IpZh>P^gdE?ua6Wt<s*H#@R3I8e<FF` zPqc8_Cu(!~6YZ?`nOypRrVBGZ)4;2r=~;s>l<4z?e$M(r<F9|A`i;NRUjx2UtGQok zQ}I`_Z}N=_{lAg>{BLyO);IDs`cAh8ey5Oy-}yfHouZmn(3`*tieFSg<##J6+2jX( z4E{kW1svZ0K}lvm>3zsgidp)TUOxOuku84F{jgsYu>2QYdHjo3)RW;sM;VOz^E%{2 z8K%yV;nX%6G_T6w_(6t*1{zpntAYF88fcWP0nb?)7_~zKJFaQq#YYVoH_}8eJ57xA z)x_2mO+1{fiF&&<;e10Aai2BuS7R-l>7s?t1GLa0O$)u|YO${=Ei5V4!s#zsC^OJT z69;X;UmFqW+Q^%yjSYLWaq*@$%D-x(fnhb+I#z>sKs6+0RKv9S)v#f2HJrXx4NtyR z!!JV}7%13x=s+E~XX+qmfew=P>0o?`4i<dZ!A7I%IHahKivz3UUS@T?UQiw1_Eksq z+tpd?S{=s5HPBM3f%b!Hpi@>2I4rCIvA+hKZu7e63ii`sTobNRO>`Yp6HZw*AuX(l zF8gc3=5|fAsi+Av<63Ae)k2*?weTym7RnaX!lQk)aHXUcioVz4@@r$hqBgHftc{q= z+VEXa8`8eoFe|BzYTs+)nPDBAbgYBb0d+7oqYgsn*8%OVgT}Y&@c$+2;6xK$EOgLC zoWCx*rt6~qJY786t&7dYx=?=6g}Z?s>e}m}cz_-jr|KbWjviX=(!=xXdRX;I4-t*z zXl^IR9UnPnC(F@mmK@qU<k)>xj;IfE7&Xwx=}!7c>#q;<M17o}u8)+h`Y^t%kD~Yb z2(McgIyQB&qEB78#MQ;UDRq&)iPvghsEbu^>O#`1hw~lkA=s-P-bB|!=A?S4zP=u& zo~eh%FYDp2TJ>Stwmz16)JOAS^|5$-eHg8-k69<`L-$#I<mfcO=avmH)U5%E!yBO6 zm<HIotO1OUG(gV726&;-5T0fYvC*j^bO$#?R5q{eUepjK2OA>!PD7loXo#l9jW9yd z2>SyXp+-g{^qbcR^L97lTPyn<{M-oPjT*Bb)W*2y-57>RjnQvLV~pS082c{qdhmCR zVXSWe4=V#C_A<bN5e6ulWPr!(44`wy0Oq9zaIVQdQY@Mvv3nDYk8FYkxlOQcc@yk8 z(gepIHo<ufLtHa8#7!8YB*+lAl<eDZp&>5sGvs+{h(liuvDLr`OS>3hs;?0;lZ_BQ z(}>qV8^Q9j5#;ZU@LFz+Q<lb9>Sc`dXk&OyG=|AqW4u0Tj6Khcxu2S%N6V(rb8U(X zp-nM)6dxBfW&d_fvG-0>#8fneiBU70b7+Qizh-Ej+6*UWHN)`j%~0n`Gpv2z3~u@+ zxMOL81TPa*i#EZ`2_`UGV}f-jOwjSE33h6m!oGzmb~>A)<6u*)Rhh!{FH_9eX9}%b zrilAuid&7$;M~~^EBc#3C&3KiQ_XN_qZt~XGeh)CGaRhh9J&_G;oq$}mWDUS^U=-G zZb@?tKhzwn?li}P@6BOg*aAK6TOiZ71y(1uz?JDO@O5(wG`-LQ^tuHG);32<8*}7$ zH^-6)b8N{m$Dt+WICaPz7w@n?$nU()y-7=4?$Q!xeOls3VoU6r){@uVx5UhIEunhZ z5)n09!M$}WSh%%<c33Oi8QBWk7PZ3I{jK10s};<?w8D#qt=V^aYsB?!4a?ZpcrmFp z3f8uU_sQ1Ke%cyawJb2u%mNy)!16&BaLKU1y*U<0+hM_dYJo-XEYMD`4R*F`1IeQe z3M1P9W7=Tfk~XkC)COyAw}IieHW=TyEy`@$!oOcz)+q4W`TVv>UE3BHPqc;kleS3K zY=^@p?NCRwL%)D_n3>uRS7x?@-qv<-yU-44uiCNi_V&2isy!-P+QTfQJ-VveBX~i3 zzL&Pg<ZJD*xU4-k$U9(n`wlqh(E&w~9dIb81NIhlz?K6Yu;Nw+%>3K|BO6#^h>azB z_F~`2!!1#Lyd~~0x5V}$ON_Z|iN4=0VQ655yS7$X+}8?&Vyw_`q7_cBvO?xjD_A_R z!lfTpNHMfV<1W_N-rt&i&sgK(Bx@wDv4-rpHS!)>L+_V0CL7tHw!IC;c-!DhoDGKM z+u-^d8_;nZ_8npa&0jVMHtL9-T{@zccSi)ob;Qa^9r1c~M_3>0h}Z`mvGxbA^>5M% z_3b*LYrjssR=*RbPw0g0D?8!R;Z7*M+X=GoouJ>?7EL?ZqGfMev>DEf<Nal}Fg|1p zd5JB4e6q#!dYy6JvNJaK=#2cx&WIe{8Hz=nQG0J^+_=WtfcKpds%r<cHtZwR)eh4K z+rc%<4)5pKVg5Ed;DR0QmD(Xwrwi&e?}8Pg3vB(n;9yc0xJ>PWqwBiB`9v4&dDsOV zes;maCibY_*&ZYM*yF-*d$b>CkKCoKBRF6Wi<|aH{9up0atBoKash{K4!ri%0V}f{ zaD9#gG`2aw;=BWTyl}t}ZAXkWal}kVM=bME`zm$B_KA+zxzZ8aiX5@-wj&mQcEsd* z3Z!*VAjn+-cEAiHl>+5+73{}GftlyohtUfKnrlmV*i6D-4idb*B~*)*ur*J@z~vHt z9%TDX30*!&IIAZR*hb*Fi$H9U!22|Tm>B}kHV6zn$$pO>3UvA*Ft;(`s|~^1lck%H zgo=>_j|GHjJ6OMPfl$Ac;K`5ok<Eb3_CQHLKsEv}8wZFbfcHKi@*0r%7RapWgzOeh zPzooc3~)kJyb}T@I<a4WC$v4}gjzS9@TANM`|CI(zm+oroSb16!2XpIov|d}8UCxB zp<CpPeYczu{=peF^txhI>#lHi?uzRHT@jho74P%AB6U?)d@1aT#9LiaTHX}{bzN|x zl?$w#Trkbw1#c2u;5Nwxb62?F=|LA*7P}z+y$d$ga>er&t}qs^=;`Z<q*zzX8}EwU zOI&ezuPdHjab<r~u8`@lPQrw-cZ0028$J$WKe40TaA|=Xc5ZjWoO5nSc<KiCUv6k( z&<#(lyJ4M2H$;bagGFXH+?~OiiuK)~IMxjh?{q`Xr*1HjcgN1w-O=5tJFfV3M?idc z+|KI`zop%AVQ+UhUFnYXFT10@wmXuH-Eqm*9j(3GksjfWV@h|_p6w2=jqc!gY~s*e zcf9-L4r93oy0-Q}7(9?Yzyq^lJ+N||2evHsz^+})1rKa}=7H6}Jb0XYAjgV*p?B{A z_uwA<eCdJDlY8LA${v_@um^mu_dtU;J#fBSPmFHb6E>ZD;+AJmsKR@~IIAai%;*XC zbv<$Ia8Cr@>WTaBIjrf)&rMHsxA(-h-kvZV;)yJkCyHlz!g7NrvX6S=bcrYQ%RSMj zmKP?Pd7;qW3-5Y+aa=Eu$_s(BypXcq3wcMpFz1#R3f_BRS&d#OFzJOkcD<12)e9-% zy%3n$3pBkKnyl%Cw}*P6@Om#yc-;%VwR=Nu)ElR4dPC{n8|{L7<7#qmUW?fq4VU%C z`aQjYi@kB?X>auV(HmFl_d)NreQ?aF53kAXgT*8IKzmFdgw5}R1DpFm|3n`I-RXl> z<$ds?W?!^2?TbLWzL?_K7yCl{vWBfMG^X^0@ru5%-q#mSm-@ovSzmbl=!>59`@yA6 zKXgVvH23L;n#22{bYwpqpWP1&*7w8k!+fro^(L?TVUJdS#5d`WmR9|7*|k5fo$L>z zxc=Cc+aF#F`s42A{up|^KVFygNA&ytc&g(Ke`9Z)u<?dvcW+D^<c-(y-s~6F8#5Pr z<K7l;v^e37u-o2P_}&{AbbRo`$OkQLe9*m{55fleAU)0p6LNhpYrYTWZSuj~qdu5^ z(+9b4e2}2!ivR;(NF97((A5`je0_0nxG%<!^yTjizNo#{7e^2JBISxNT0Hl~nF?P- z*ByZBtp;GB;{depJpeny2EZ|G0Cr6p0IMYfuyn@&=$#&bq`L!ft&DBe{V>MJ4_B=G zVC?FLU_U=BjOOE!e$bxf2dg!H@Hyazq)UF7{KSv_-1uRWu0M8}vHqpAKX!QdV_l#> z7R38wY_30|=J~^YgFnoQ{84_@ABE5TF|NWN-Sq>YX&!)GT>=o<GXV170BlVNK<}{u zcseftsT%^IRTO~nR|8P}c>qRz55Nb#fe3BRKFm4~L_3dx7&mAjZpRKp`<#JDnLQAD z*RXbG|3Fw>WFKdb1|t8{Ky0fy2v>~<;f>WGXu1r7zAtNNh7E#Y)*v*VG6=d$2jR!| zL3n;*5YFBjgmte6Ax9Pn-}-@Q-YO6;>;ti;XCT6Z*f&~yAWq~2B5rmd>a7XHrhS3v zc0Ld{?gt{IJP=Q-1tG#92zT2Cp|1$S!QMeI4-G<YQV{Ns4MOL6K^U_x2<Hw2LH}Y9 zydLuLhal|G3C4YcU{q@t4090-(K{G@LV^*P7>tNq*6Pd&M#!3A`0fja+qqy^-U~*( z_rZ9pIT*(q491*RgAr;!7#2MS<JrK$C>Svq-r0kB-TGjxUOE^a+Xv&xG1m0l7>rsk z24lvz!Dv(`1T&k4pte;AlujXd-ZunZVIkO%6at;Gtn--@f>o<S@ODoKtj~lX`gRDG zz7D~qpCR}z4@EPxP)Hp^;q4NN2=7qDM}#6Zg&7x$xVfPSUlWRcdqd%PCKSfEL-F}l zD9-%|#b0`17-ABJcGh8d;S`1?eOVV28irp9VOWt92Dh1E{8=dsNjt)zc{~gguCwpB zXJN?u%yFuRBhDZkw=BXz4&nIABOIUn!{Htkj#(MuD47rr;|1Xuur3^v_Jw2bnQ%NR z35U+BaI~mkZBd;F^fZouZ~F)glo-zlcn^v|_vi?8&WeEXqzL?65P_TPB6w^gSl1f? z_mT+Ic^QGz-y$%&RwQf<BXPe?B*r>KqLoJ^iu@wsGc*#9QX>&PE)s8MM`HNONIcvT ziT=kTaqwy+T0D-#=<-OEXbyp8y&=dlWB=dQLr~3W2%LHkK}ygNtQ;`}7qf=o!^9z| zw_pg`t{nogX9zq_4ndzA%+n$0`H|ym4~13zp)hDZ6yL3f^7o;k*xYL<MhEgLk?5gl zkU11r^M+#b+@a{YYAD|A7>apEheEo-aUTpt+`FOB_%#%hbcdm?@i0tlI}EiQh9SHA zFue8|2A}X@*p)C04Mq(^)RbY^_t!A!tRIG+dxv4-$zeEpeHgwx9)?!s!_Z433UTr% z<Ts7NvUX9}?hu7T-J@{ShY5?qf%qtF$&SL}{3wiD5QV5UQRudd{qh})!kf!c*n2+; z*>9qNiYR=oIUE}r59jw<42O0n)<iiChik9lC>b~$BZdvf*OcMN9y1)jrVU5NV*a&h z{cr^B9gY(xhNJDZ;TZpLIPSk4&YzctV`Qyp9B&+r8ZD#Y(lHw8h{hVvXk77+#+S%w zG){_!^{8mLPL4*u1<?pt9gRUdqTzoy8htKA!})eJI=qPHHP6u~*BpWK@)1~OJOT-A zMnJL~0h!APzP3job<ha39X0|tl1CtW^az+u8G!=}M!<XZ2t3(70`Wy7@cA6ayETH> zbC1A~@)5ZHYXqF?#9+BW476ItV4zJ5Hi;Pg@Q8t%Zw$tT#^7j73@S2W&|zE*0%pXp z{wfAb*2Un!t{7Z75`#w<V(_LU2IbF~@)*4S6@!Ph*(YJ+SnO>Pi$zwkP%2{K(>)e# z`p4pPP%I8b#bR_yEHIjn^JB4QUMzf9#Nx;1SS;Qj3&qJ;T)q;EuzRt1TN;bxPqFx< z5r+ibI6O0mgP(aEj#$OPLJ^0&ZgF_jHxBlJaTq_8wO)z*-jwV(444pyX|v*RtRRm4 zu*RX;t~hi(9EXr|amXx=!<0vH`0Gs^R(*}bI_-F@k;h}HA?v_e#$$|iJpaBBkG|dF zVbwPtH3r3_B$9Pu@vIliiih2}czl=^j|~gsF?dxxe{YM&uKn>Cc!D)!m*O$~c05`> zi^sP2@sKLwQK*vus+)jaMhR%wDgpDY6QHF?z!0|t9P6C`lYj&yh9}@~Oaf}BC!lvu z0;c3A;N+YH{8*BJ_UjWcU}pj{3lp&5bOLr>O~9GE2`G7<fTv{%cv-=^Go3^{(@(@5 z!$h1nPsCo!L=@O3Vsuy5oOvdqvu`4*4^G6@VTo9f$TnpnjK(G6%G5-Rou3HX<(zgy zB1Y~?gh>(meLS5Aud9i;eJ2r-&l2(ST_T2mOT<&HBn;9`!r4Yius2P@;x<W;bxJ~@ zl!WbWNzmz?1aH42EDTA)y{IHKO-jN5CBGYLY!dcPVPBDRlUNs+gf{Dv;JQ5t0}mu2 z`gju3E+iqlI0>U3a9GNICCif#Rgnb$YRTxTmyA}8lc8gpj0YCU*lEMMHpgW2cj0#g zcqZevcQWP$vfeE+8QQU|b4z9alOvO%k(Z2uX{?ExpNvaOlM%Wu8E>~GBV~Uwz8>Z9 z93NjxM%dkCTz;Ai@irMtKPN*=mV)3KDcGr>f*MUySTn`%9%z$-M>Z*F?wEo>T~jc< zM+%Pg<M&+!q@Yn)3LJ)Wyu=j5Wu{<EP6}pDOu?cVte;!JelC}#VA;A9EZCNU$@@~E zJd%PTXHwvKB?TQyQc&{|Yw=1`u(d1&Bfq7fhh{4DYNg_Q-Bjc?NrjVHD#|QUQDB`4 zcl%VlMk*$CXN_I&R2=k8Mem?g+>S^^#E4Y9NJ_=9EPgLSPAY$wO2ygfsc@Ljy1ON* z&{@NAHuHOecBP{6A&z&PwRz`K@#|_TTyLjh%%fBsDotg7{;6p5H5CJ7X&6;K4J-B1 zaJ*p}9vP?MTZ=UIC7K4~j%jG^kcJLU?1!^^8rt_tgSk%{nhZ)q&9F3l7?y^TxHKG0 zO~XP}8d7puuQw?TO=qN`bY2?!U`*rhWvu_(n1-_LX;`x_4TBEzdmB!%-tR&h23}7? z#qBiAf0V|)ano?(T^js8r{VFBG(>Bs<6W(E#MVtmY2$Q+G)u=7bJq8@OUHVfbkws? zM-rvul50BJ_Dn~1-*j9YkdCH7>4*qVXJ4?KE{^?#rluoM$(p~MbQI;K<JFXO)SsOW zyM^pKbZI)`R;Od^#&pcvo{m*})3LQM9lMXSR`4u`m-)Du^@VrSG5>Ko#+9Zc{#`l- zd`gFXMLHU3X5el03>?$V!0h@N2yc>s4kj5WH_yQKwi$@G&Okf64BS^_V7hY#&^-e$ zJTox4Uk0rGGH^aH14F_x@MCBOro?3Mb(Dcs>6}M)1~!f1a6$%FPhqX$tPK8*ob`x{ zS%<hH1DDojz;-k16?bs?do$3jFaz_CWuWwQ2J9}fp7B}+4&TaP{Z9s*o@5}sGy@yo zX0XO41G?Wb(B)SK0<|-dT{DwEA7x^9{Y+di$i$<jnJ8<XiJz@Aq0=D~wK`^^c9%@l zkXV!G%=$#POuXoki5tB$QRJP8)&7~77?g?OVVUSYG!rHxGEp9%iK8i*n4ZZVfJbJ+ zEH@L6^D?n)awdXiWTMgBOq^briHs%eJ9T9yF0Rc)%BD;hY|q55-I?fjfXgV#gz|VM z^v+~r!3EYpUd_bX;!Je7lZo{YINj4sEH2GN{kNGIQ_gk%%=*cSOdOH%`#P#+A-5*` zS=G&gW4$a)ZN&SA{4NiZEM&IG!jaZlsNOyc?$%itYn#R2J+tsx%0gS`ECje^VVno+ z9KEt|y>Ax2`eeZ%fVGc7S?~(YLTDswBBNOU7?Xv`30at(l7$5stf5qKIGT^gvVB4p zMo;E=(>eZZPB)*^FXDWba(*kaaAQptwr*g(<(4c2?Z|@Fo-F*>pM?{J{QkqES?GT< z3k}Y)f7lCI$iKqAVQ*yN+pR3DyUX=^n1yOjv#{Ys7W%zrKeF#w!}%c#mR~si_bded z%Hq%HN@VM>@7P+bqtsQxsIC%=8Yt1sK#2uLtdlfRVp4O~TDDU1=L;q7w^yR4wG!Jp zDPhn>i3~?2ZVDyroLMjF%06eiD`DSLiM(D)?h_@yw@rzmeoAZ@sKnbK_Cp)0L{x+l z%Z75g;Y!qrWk0kDY)e*RR+<tAGL?9!QbK#Q66U$A;~cN#dlu_5Co7RVjrE~3l~_JU ziOus_FZ!1fhYFN9yo_0?MBy4G_O0i-ZBk<OR<8dJB_{4xB5j`%VF#7yQN&u(qe|2} zp~U-BN}NBdWZ%Y0jJ&Lb&ow1l7c24kmJ&zrC^7jy+a4)l_*9A8&y`sClHcp{hTq}x zUWqg1oaU1foxZY0^}CYwv`Q#6RCuJNLY@w5HEXgqw6+RSdaU`Z%i7TTDs*ndno$E4 z0*q96-c*GoQx$$TS0T40>p?BpziwL<>U7}rR{YMFj_fzrR)sP<6(Ss13#w4TmG~W( zPORT_QDKyu3QxPM;NC-p)t)L;>&@EDzAEhLuY%lHg)l$%(Hp?|1hN)1ScL^4T(>ZO zpG>5R-&v!=hA4hdTeJ!mu_}bdt1v&2{qiQOpq0kHelysX#oAGo3cE+LHgq)SpUZK_ zso;^P!qADVAI(=`@f6m*PUCjY;5f5X{QIa1via;Yc%cdgi&%GBphByqDzshB{jri+ z&E>CEq2+oNnr&2};bw04Ruz71Q}KJ?RJgrMg;RS}*tU=Bdw|<`h}&MILiZ#5e$QiE zhZ9`RN!H$;R$<y%6^5K=ZS6(wv&*c}y~6!)jdid$R1i10-6fpYZSK>%DtO)JI1g1g z{fPVei3<FpQha=_!rD?5f?jcdz2SG)z2$y+&$``m6^cG^8$YR__eF)RUsdq_&RW_E zF7u}fmNM2FYOtP9i}h^U?DtlOHJmkA?^-h(RGYP!by#bv$ND%q`^BxxdboP5<!iuN zxQ5wCY|Oen1NP}_$a*;=eg{ue))6*i-@K;TIBdrLj$347xjE}2TV*4=HETC5Sc}+} zeIK`Dzs4O{lW56WJF9GTvtdnON7l01vR1G&`!lv<Kg0Iy8`yz;AUm?2P-44aO&_t& z4jkV(8`HXSSuU(IbjwC$H`b?iXI-m1Yb1NHKCmbI;`L-5s8=>jdS}D05Buot%lg-T ztk>($x=tU~Rr<2_aX>b9`?2QFpUWG_n#e({0}W(NVGySe=C%*!_J(lzVVowMb*&NH z#z@v34q+YRP}buP%SK@oYZ!-fJEFP&MzEeWmUXIeT(5Y3=T8FbKoheelK362$*i4C zVSmM`tYu8gMxS&hgZnCz{U2v>o0RN(SjC#%>}*(%WZ%l8Sf@Oi>y^X$z%i^pWbWm% z7IQ53$vE!U@vIrmWB<kzxNj!%dy6KqHZz~~lasm5%(*G7-JHtfIgQ6{I-j4x8t0j; zTV&47;`Fmw13ZW8Gne~l9*-kaG@mu83pl@p+}^)f=g1sd#Cp=jT;~GzkGv!sCCuWb z+z-oGqq&^>j#;*Xk5_U&tN1)KYc<DT!+P7b{N7R~c^&7sJ{xzKsT;D<btBIoX6YvG zgUzgwWY%n9E%8>?NHVLoar*6CS7zZ3?w6fh4l{Naw{bVmS7yi_?(4l=HiLa!E|a{U z`|AMfKN)e5$AuYoi1TNr7P1z$i2XA&u7~+OOHAky)^;+PN4c)Ycup}!$2m`?-3iu@ zGWI7~Z_GHK;`zgLJIz{Gru!KV8Mm{n^JbjRu{M~oJJ0%DrtJl8A7glt%Vu;gaXHLe zCiF6EPnm94Sf9$YzRK@_VzjSiBZ0Zg^tjF%S;q7RYq^;+#=n^78`JtGYhIc6jL$8e z!;Dc0&r9YGBW|-lYUVrRe}~Ip>fdGUFmswQzsEkknH!ANeePH04%6uYm&M#+Y#wGK zm$|{Td6bO|<_u%>I2%#S9;W&e)`l}nnAeQ`Q@*B|b4=rBd{1FkGjAEY=d3YjjxaS| zu+MO2Dsz=-T*~!i<})RX@k`dpGYgnojKM3u2Qf343ry|T-2cpIW<T?Zv3kS)(3t|J zn32Ebv0*ZqEzDEK=pD~1W;C;tdCnNV=ejUTW+QW#(JSLVWTKh*%t_`W)4ZJ1Gnvdv z<`PrEwEDpFm`P`rGG~}_#^@u@b!Hedh1tQBFtSgq1!p{%5zI7ZJ9C5i#u$I*doL5r zjARO!BIW@j`@+{5Lrfr($;@STGFO;)Or5WMoiMIUFq6T|Vm2|SnMceIrqMU<H>Nu? zm`P)%Fe{mZ%vI(kqw$@`h-uGsWd<<O%t&S?vzpn@u<npQJMefgH7dCMOa}%`UnZ1E zWX3SFm=(-U<~VbWdBS{Pw0`h2gE3>Q7-Bpbe`W}i#EfR9FbkN~%nqiAImg^&9y9Nl z?~Kk*es4Bo%(P-`7zN|T^k)2-P$rs5W>m~LW-2q6S;DMgwlI5`BIXoxktt^GF;AJ- z%m?N>qxp;bfYD<bGDeIU)0*kPbY$!q!MHH)j2F|78Ndu;1~U=NFeZjcU{aV2M#YR~ z#xfI_$;>on7BiPwz$|8#GAo$X%sOTxvzgh(>|}N``<MevA#<2H${c4-F=v=_%mwBW zbD6oyTxW`zn@kCFo4L!}V;(RMnMceM<|*@xdCt6GN|~3;E9N!xhIz}VHTLiSP{v_7 z^WhI4IsEj8&m5}x@`tY+s`>U0zVm(+6}(@?58nSLKl%87;uqWh-|)ZH?Eha)*WJa% z(bU2<B6L_tjH#`qon@yEo!k80k@40*{f9S=jD9kWG<^-DI@N1T)sV^b*=AgMMkbU0 z2~9b){<A-q<H%g~^m8<|;x%gN)#zFK&k4)K^btuRp)$+Fq=et$(5k(Ji0BZ@q=>X6 znPqrLQi#klG%-<TS!q=ttM@DuVlAU%!$P9j9{W2|SnP-q5iy)5CN?R;vU@L|4v9%2 zVZ;9<j2IdmnGiA};!o-SkAap<UFrY2sVy3^YJVG@{@#<xwEkhQGVAb;hOBzkp={)z zJ>5U{s^hAn8dlk>iq`y{plOv|>-Vut`*+x~%3f7Ojo)_5Dtpyns0WC*E{wW9BTXs~ zWir#>p%Vv{cJ?4qxjFp_Ineq?{r_WC+p8+`PpjJgr*i+*%=SN(`)~G||FZl()RNWu zZ*~v1)T`<&-mhxjpg;CM&6HKnH+AZi)L}7|f9z~41DlTam0`!uc9mggn~uNj)*XLG z=xA;GJBF>b!|y2eHVz$S!6~r`p~Dh`IlJ)K)ZifzNq?I{;^Lyy|C~@4sotu3Mm>D$ z{fb||Hy8Cu-u`X>ZB>tfOjf7rfWxXDtFn*$bFQkLf7{hNyczrs{?2FQpNg3N+x}<1 zSp3`mr$ei*+rRVwGhgig9skdKsmfp7u0K_&jA{EPewDqd-ha&h>%f##s>@MdU;o^k z{v53SXC>J7?{baUrk<rv%s;mpxxbI9+W-4H{m(d5^=~VVrY@ptoU8J9{;zVY?Ek(Z z+VctZ*#2+R+i}|esr<@`#pj%ue{QD#Jm7sB=6`Cx{h#(1{)w+{zxr-hH4m%Wuf7h| z<*Uc_pPSPk!^rG^T4gfR|9U9v%g5^URsCFbx^UF*J@x(WpPM?adaDWp{;^+q;?JKu zf71WcrrxhgS7nd=WBYgg@Bc~Prz+x~u&Vu4<|y9zpZf31|1f{lcd@GURsC0&ZT}v7 zb>7ya)qiEO^xwhXfB#*7_3^*!u8zF<Px||R66mq59`o<=)py+gsr;#9_ylk9zk|R3 z{=59>#5l`XE7QL>8(TZ;&UPK`Z0$`=ZLF=W|MAz(*4EUtvt4Jq-;oE`%69YYrm69t z95rP0-^NE>u%Ei(e>SJe(24K&b!6poef5--xrZGum-|=G`Khr--4*5Xy4BtDrEw}D zHyK%ZKJQCjncPGj-|0(EsYbbckUEmn7dG&YUm+jJ+;g65J6uwg<P>Q*oL8PLKN2~W zQE!%Vli!`e(d9NASzkwPRV1HNXmeR^by7a(aGQ%q<R-2%nU8zk6KC)K?m4ea!`&xp zx3o~#Ezj+_O<{gF4fnb3`P#>tsZBZe-?_IrYE$T*?`bY~&w21J_mfB78Tt4L+!Z#3 z|D`<baq@t|GI?F?BKMp^4Ts~(m${$hlY=>8q<p|H_prOJ`M$r(T;=+e*NJ<+?HzT4 z)duwk2pOkT7JE*NC{|l4`%1l|zLsTPc@Nz3yK0m<%iET@=3V4azkR1NH+kFpo_P_) z?w^ax<obcd9{Exy_xw7?zVK6Ps%M^8airYh9G~$i=8DQK4p+9jOzwZBOzwA)!y_CP zad?J9&+1>eQ){?8oJ_vMaqn{x{%85zedZGLv`jwep*oC|TUE%%6>_C`??jor?_>Gc z0zTqA)QN&QQV=H`bTiUf?tPLE&Q$J1y2`Ci$;U==)gt8$O5Aha)bPmH?i48xIKl(! zI=|wjUSwtcxbWxdns9i`Ip?_sm#MC&x_4yB51n~Nc;p<Z;hytS!#U^MFM00cpTB<b z=uGr^9`4?$LFF(ew|CEvcsI~_P~egOj1O1o=%0oKK6){L>#<w?aDRF1Iagj5In~EK z>^x5i^@Ona*M#7?aPA*-!BagGJSt~`%Aj(JX^&P9yz_rXKD#u(+b{Qg<0;Pj+E(_B zerI(lZZ?<Q!%p&WdFE^9sy|%tXif3V^C`~##KRO(tcu|I+Ro;eJmB?I^%yt!sy?ai z37bNW;8o1m1^35kw(yAi-{O8b$tkoo)YpTjLt*9g^E;AU!rjgTJ4ijqmGx@y)jj6~ zcctHbho9LioVoLo9C`SjrjE8L%>ATlqApCkhzCP`b!m_OJ$<uZ{JURu-6sZqId$ZB z$36btaaGrw^8jaGXCJS;W6s{rc~|-B`q<w+?>qOVy<6@n&ehYrhHG9O^D=o`^^vQ& zHaF<^B<H&Fl;9a!S-PvasmjXD=2N+gT;FwvjE$A$aNRk^pI9!O!48>6&T$P_2V3*( zt8TfE<&z`$I&%-xHs=oE+}+f@Sm=@Onp?p$$JJcF(p<wm&(+*wqP97o%XzMO>3QWj zgS^A}t}-ppeA{a^c$7GbdE``&up2z?v(&>j(R&u(8eGk5l*`*5&hs|c<{KDSlWX(O z+T}>*8dWuvPj=+maFLZ4woRej;xrFgxwCxGplWRPzw-ByHurT6PltDGJd<3)e@{*1 z;uT!OF{im`&Z4Ed3Vav5FSoeG_rJ<M<9NL9|9~lG+imVkZlW`fF<)Eq03QFo>N&s{ z&LCHF1D*wyss0RD1HM|gG3x$y*Wl#(+%A8fM|Ep>gq@h^ohwst6M1Ilste{m$W=cw zlT6$kD&$k1^3~>^bJTudpz|Q-K<6Om;3MvNMecd;rn+m~bkC2|R@Z^Etf|h@!Mk$> zXInG*=*wGE)n!_!o6S@5AFVP_w~TF7%_(`&p05jzP<h|m&Aq7ZgUW7vp)Q<n62I^7 zmG|!f9(kYD)6Uu3H9u6Nzw@PvyepT~lg|C0m+(oOLg#!}^WS&%+<#ojzwha7j=JY3 z@x8sxQP2G7%20iqch7nH&a={<m%Q5}?1M+nlXo6@<sNKy&r9CyQS?ZYr(Li7I!&BU za4kndC8-Pf<r#L^J@03)eC=_S*Lj1=>)fVrDz`$%J?FSKPXa$zSp^4mT{S9xU$_^O zAGn8=d*r?6oL9R~<noFhXnJa#&n-E@AC)=lF8MC%jC<ra_^-MCeoj{Bi<{@<AXiOw zcf0ERo$DiKhuiWg)46(F)gJk-O)B=PJ5*)-JDn`&u=?@p#A$y&Qk@;HDxc++sM@LP zP#KjI=~YzTm%0AG<NN(5zQYyebN9Rpu6a-0^StIhZ^92A_le5gd3T@dRqlGt^~@`+ zJbU5!B(~%hI#=F1<hi%iQ;VZ|=9T5$b<J}tcphDO-hHCiT-S+i1@hdz>KJ(!erNDJ z=-cnCE8{=!Q+brU**#ykAt&3bo}iw2Z!70FSA8|xe|-Mi{<+f5J)n|o3O#u=o%8N` z=Dl>wd*YGDkA$kv3tjmZxU4cN-+Jn5Kl8{rs^RAFB>SmrUb!dtha2B2OH{4gY##sa z557NXulzf{>oaY20#}De*-tnoKaWoS{XBBbD@^v{M^Z6Al73$_fk&q1eAkdqKBT^! zCi?8=Zm#uZuln=Qf9ms}{^slR&qp5a?-vs}O=YnhTPEXgawCax;(ax;{MS1QJ|Evq zf5L;a!qXpQ|KRtob)8;k$-)x~gAT6V-_2^O<2o6qANcc4P$pA940-#{H-P^OzbS>P zE5w`ndtB9b2K9G1^=8hvR_@7Udg_)t>*<fxbkWt(bjs15q@}e)qZa>4)w8xKpNjqy zuZw#2R>te5s}q-_rCF|y<6PUF%~Sux8KTastDgQ8&8~U|leN0)ndWP|=~+yw=Bj5s zR>xJ(KBszjy*RC_{Ck$Yv!1oHo&`tYsGOv$9_OY0j;EfT>P=JqVY{kcZd0^+Ow!4( zHd(t{PIavnn(Csv@(*JF-+v3M{LRZUEHTNp>IX3Of&D)ZZ0ux~|Ns9crumOg@Ks}_ z{)yrLkoPX|QB>#q_$FB(LSz@4YSdIy8#Q2rL;_?<fGq6FEN&#NK|>7&OoE{XiLg;n zE`cPNaaf27Em~|-zeuq~r4}_s)FfOI&{{x>h*(oZB*qJBMZCf9dCr`Z3`^F#t^WV> z`8<1O-Z_`|cHTL2=FBYVWmEt*WiQTekgoJBYz7+bNO~Rhj!oDI=|FKLt~+8+{g`tR z-8=4W6n&W337r{$DFt0kl&Rb{+i02J*+~+6eo0sNZ0a=cT{-iRAkxmCE5&ZN6XtJ7 z;@lMTCyBK4$JA4|llZ?*Wa(yOEDGJe`kdRzdSjhYC(WFgErp-!iw<Q)97oxBCwcPL z)!ZHXUZ{>)azPmSU7&NWuT|ctiv9@NAH(GTa~S%=vYs625~44H))*##a~Qg<u%!6f zSvGX0GMj(Wb>+p=rxzDoH6>6|;3=M5Iw>$^+6}hLi*F80yP@D0lgdhF;IO}cR0@9v z^5+u%priUn4dM^_rGFH<s()0f$dj7NeHVX**a}Ab$BuOS3&vi0=@s7Gf?W4Vzqi0v zP$1^A3kplFFPJ=ON~ujwO5$$3ATX_<uzdPW#o%v-t$1cx$GNgXo<kPfjWecA57;Il z!(@oq;a}`-RE?UWJe9E#8|gg&ML)+vr#C2iiiJ*ZP;{4t&N&c8zlRlLqko?TD7u=E z;Aup|4*K)b{-ODQEISDEGp49|G9;ZzyoLT^82X2ndaQaFD!UHr=NMAe?+ZhpXQ6Z6 zMdh!ObT-5Lbwzh7e*}%wu8N*&p|igz`fv-~%4d=6nymj^Oa9qm=zp}(6D;{(2t&VI zc5&8kwHM2Bqkg2R#c}AIZ<(NC3?@^Rzg8Zr^NOzG|I(2BDh{-U&{e;d<gcA1pd{sx zYVN2fOYZ$5B-GJ1)-Bwea*do*&!T|X=u2!zs=H&({sKvt?v5jKTN=`?qD!|`hqh$w zvCgksJ{4ujmu1=wM>d;kKU7}TzDhB8?6Ul7$$yHdt@B68uhPrHly8;gL)%x!DjhG& zhqiNAmKSqnoy`kgd8mB%TFbsAo9$EvuP!!KPMx|LJETc7E3(Zg%SVS4P;#q`)3HNc zW+{S9TR2&at=3G0|FB9`UX4$fE!6fb631YQZN8aw{D!d8CGX5!C(Fml${E|v1VY=V zn!9Sho&~V|-Ap=uL)$McEBs1x$^-E%@2k!!*DI#MMV8<s%hnrL8*>goOaSPAcL%d0 zIH8Ms^uiDP!T1lDv5Tnyt*|j<a#zEBJEnFq(W`sweZf)Z$Vp#+u!s|V2M$+n4b0ID zZ@nit=D0tY`M6hq1NV5|zHOHW)8f3TFR6P-zdm8P$F-AFb<5`t^yn>@1!FL~ohD{b z%sBvi58Oz{V#2P$uDK3l3dZqE<R9O}sl4)6IKBBE?mlBKbz^GVhgm&Na+d#*jiXl4 z7rfPPVK)hdUUn>A0CQmPV#*3?PBiKf2bkS!cig6n)8^!3Hl{5P`!C9_*YxJ6Xhlp) z@5amlikNduoMXJ^c@JhTJ$mDgk2s$hyD5<23&y%IgT*;><m@S?3OAw6ZDd)nj*Kyz zIA;h-BxckiwaPc5U5)d$yDM8G0%u^hvPmo4is@d=3+J&YD(VA_--%P3+^!Gw!<eXo z3dZl5TS~^!&Q;MjX9@;`F{UB)kHs9Qs2e<tw~LuG%vW=sv-~woK~WaWutc;C!hNjP zcrePNzkw<7wA3SgQFosSbz0$0t#N<UA*rkhb!bOU(2>W<V$L;&42H<%c5R;bD(q*< zuBJ&VDKbwT5;NL{mv{W;g9K#RSRNO0%b$8AwV|y9ya@&z=Vrlw!BN+9&SQf1NY1@k zW~=<ce7fVShc!G_sJa(YV4k6R=iIY8<_tVW%tEgoBN)?MP4nK#u5Orntrnd9n@_X# z7cu)xSA`w*3HwmcuWyGhX78JOAttP7Va~K+j_PgBQH{6Hr+BCZGej-(UW4^cdw(Ph zeTNUTM!w2Mdp1td@|Bo}F}#O5WG^3J&Jv>q$KqQdE~~Dh&TZ~ydnHp@^SpQ3u2$+G z+4j)rf8P@O&^sg2U*XmK@Q7u*FF4ezf1lw`Jo&<lugrdFn8*aWnRfhEbnJc2ISXEc zIp*ZHffoXG&+p^yKJNP~do1c6^=om<??zlrL>50YW9!APq~;`MVNPO&IVT}beuKGz z?`k?A-1-<kF}8$R!M-`B>UPropLuEN)-eVWnek&@(?dsMHk;^Vs6Rnvlqtuh=96kk zup~c(duEQ?t?OEZ?|{a!v>M-7M6!(uL+9K?SNX36o%J`+C$R}%;|}gN#eJ!`Lk+n( zO|{-bPM$t(YJpf{)%CsU)Z(c#xF{yvEh=t9%cd6>O(_hp*?0MajqDKW9;YY!05;M% zmQeIFEOfht-q%9sZI;SE#zLnTDf$p8KkMLlNzpx$&cu4pTW`tFak0wZEC)KQ$4XDY zF*g>IEQsSA@!Lsnko8LP*G>{plI?`{lq}G=Jrgn@3-yg~_bh9v1Z;cEMBHDq9o4VZ znDYYANDpbo7DL5!v4xVu-Lrhz@~LQp?T6m8IAudgAv`GlRT}P|B}<kM)t5R}DPuR= zPYG!!N0t}kEXz6O<)+ecmVI$T{!9&3l%%V2D(|nbLt3aimC5pDDx*x5+=^U`9cIl^ z1ew;zj7qK;&^f+W<(2)}heB=7Dq3axqO+4Aw^07O;+<K|hm)vB7T`TIZ=*xo4|mUz zF8#Nhm07mX_9xvisdUziDKpfK#}}<*NlhPe$ydGSP`*GmvIH+#=ufBE_^=VrfGiKV zqy5Ii^~j+$-?m(26uWhuyQ@2Q*UH__bqSXlv(I<p(NXjvp7K?GI<x#u%@C7Mn*NGr z*pBDK;klW<36GGf-wJ3Tik#IA<zxK8>!a0kFQmAAv59loiPj27<!H@bCu_xVoMw#5 zLz;keBGM#0#l-{pR`WsbM)!s}7>TvNfy`fX43&wZY7F%+Hi`!-K|X_76y@oiu+Z-5 zomAOvbnleNzxC{$1d6-!kqdKwjpr!e?eh_`^uHK`(ATYF3ZYBT*k^??ky^J4anKcg zP#Ahv82VLV=!{ie)vrbwsxO9_{GN8*b!Aw{T`;{^j5DTU+3l1Yt}Dn<#jl+bm_8{` zTrd^&TvuFVQ~9w}x8U0H$&-txcaW}~6)2uz`z83{#!$sLqOR@Nk%*17o`9lPk%*1? zIc`;SHBU)8<D{b3VV@i6j9-eLfPHR^*`e`BocNkQ39`O$V*zD<Reh)}!i@zQWPqP3 z3sNWKJ6ayAYeBfNKtdQHsTb=OZY=O+%d4?KinUVgtMXrTEgp)zU9mc>D`FRU$4Xl0 zwKz+b&%=4^ru3(1W3WS=WGRA7)1{)6o~eIc-c)%-4|gqAYvDORYTZJ`;&CYN%zsp7 z%#kU5zpM7cU5m94|6!fnLffA)>xMu{ap%SOi>}23(*|Q@DYq}brnH92lUtTZ<+WI> zIrHfsxO2zJ)n;*8^>Ihl6W~%aMwe*S4UVdp#6bxz)AcndjH{@l>TjT7sbxwwaxZPD zYVZeVL_4ahK+VQlvZ`BIg!!fm3Z`48kRmU=K4V<8&nU-|6LV>am`zg$Y_j?a<aQf3 z=O|+3Q80A@t0>&AkMjEr&#oj5E6Jh-gM4(S6{5igO&^u+sNPI2oAC_NOtYA#?(`YB zco&x2IV#Xc<>4@ilU&%Ji2XQyRF2QE@6tzUhnU|Ohm28}9U6$Wbl%jr+Ph<ZM>C?d z!WkSwTpr9!aaV4}M9!9I)DkJmcwAHMKE21hJ(@w*^jAzi4RQOf6=ucw3Kvx+!P$Jq zx=l&&56y_(rWqp>FqVkxToHD>Rn7ODpcrugZc~&}G-w6KSplbJT#?=uj{%5W16)57 z`zKb4MY~zH`dJ*L95juFL0H=;tc4M4#IW2i^(|6Tt!u<IJwI`erk5tRVmYE;FG@V* z#{rggU58;)AQ3BG-%Jv2qJQEyRtx7avfw9WDMBAunG=oWM6mPg;#i7f9>7}b$xeBx z+bD;jO{y^T{m_4hp?4<<8{Z*l%EsjrLhXwwv;?dUg<-J=-xxI!X<YLtjmFf>8&{ZE z->w<)iJDQG2sVonoqp`a`Hes#ZIA>dRWSbvj9T<AIhT4bH`Y_n?SJl=Kjh-q6wSC2 zQV-UQf)vdvxH_PlHa7{;(~MEh)FYKgBj!59yyA|dn103Kydx?znhKnO)zpS(V-j85 zh}{TAQStVxH=-8N{@WexS0B-gt5V9bs1`Gv%Nq0rwWo8E6Jk|SEX*4Y&8i2>$LGEL zK8UDpbc#{IOdG#&+{*H?{J|Fb9$XP<YV3LjgK1amhp<>^VRyH=ekdnuX4mV7#`KDG zce$|0%lMlJn3C9R7oyYKvKMx%?0$JLYLVU7J7sZX<g<9mPU~e$z^OF=H$I=@{9<LK zr*~FlQP18^50@#4G1+#W!zO0@ky5?`Bw%BE9otu)hy4G?*jm^cO5!|3=(viyOA15h z{6kmyIhN>(o*#x@7KVN+=)4C=kQa90E1>;a(sSgsS@;HM4@vrVNmu^RBI#m)g8dGk zkSkC+uH9h<@9OorYw@-whVWC$3a3r)9HLJzo>VmDhADxL0XhjC@7I}SCY7S74Ws*z zVSh)<1sMJpUO(-I(pl<`fVT@A{Iks&Q*J3%^v)tBlS=VAXy9|s6i~A^+YIr0^1VW( zh0dXc8spbm=+u>>GoW*`16I14-z4374{;g$HnvcDiKKJPWxcm}z>?ouzgU7R>#@?W zmVUwdt@l9JTj*A~W?JahdKQPF|5W->sJxeip%+=`)^=~S(5>zME(|>Z@^B+tQYGTJ zM*MctRlispLRbA_R|sA8i$fuF)h{IZYbOaPNq)oK!}X#fEt}J_&)snMa1*1=jBBMb zs9Wwza>w(RaQATjkao@5Outn7OvBy7ecAHi?%`DVuX_(SB@F*o-yr|t?%~vY>QQF0 zY)XHMGzL3tDoYV$s@8zal*iP6SNBli?%_(rG@i}&b?@O?WO-$O_MxuY4|fkYlbNv{ zFq4koQ2mw7n5Cvt#huv~-NU7&50r~IzWhC0OMOT4QqNhqR-TG699KkO#MvDQ274#H zttVdV>zpqYYd*w#drs>+9(ZpLkIVmg4jR$SSN3qYOdRsDxuW6ex#clB9#BU?7g)-H z7Xu1+i!rPZ<5$Px(?RwHHNJ=vb6d9Fh$r1nyFuP=bKsO_#607V*n!mtbH*auF}GuY z-MHCfA*W;UMud2WsS?lL8%4=~f;qpwV@#BP<53okWn1M>yVpjxpV~17_Ti~JUqFa4 z#_0BE%qQjB9o5Ac_3~-{mD$0G$N40`K`T7Md!lUD{yA5RhVHVD0vmVTls(4qKaV&0 zc4&^V+t|*Tqm7um)EF8sVclld+ER|US(+m79KU@1iBIrHV&#H-f38;3-yIVb^Sp-j zDD8j7nA?cC4UBCZg=Ge0we6Q+j0C~6Ng5532(@C3gV%8t7de>khna6&&eZ4B<E4+4 z&~87xzH|sFrz>q%gW{zft+3f2j1@~D-ggwd?W^2>*xz>-mNO(ekUEk+^K;>jAj!1y zb-qXiI^NI&-5<>5iU}<20r<w=`yNLhOt$YoTsfy6ufB{Q##Z0=I{KW3gLm+n#Rx8G zNas&q$Kv1Nq{o<0?{Or(;z-)<#amoJ6JDQ-921Pcmk~oO{;9x@4T~e3{<H8ZO<s$5 zQLErNM-t!9BKD!(ynQ@CRj(p_2H8G&|58Vv{B!L%H-0~k-vo9u<5sG2cAOo2<!$1A z>6!NTN8=4T)Q%#aIJ{}H(e87-RBrf<{@HrFud&_ft$xX&&quuQ=zHCc$6x+%FRF6J z{~jw$=)0NAq2u`9a5u5m?MQk9l{;hZ=CAz@Qe*E)eTiwzonp|@?(6iIm%NV0U;FSS z`dI9JTH#Az!WsWZk@+6h`g>8!-J<U0n*KcA(E+>8m_M*YW*thu<wkKw{-@a}3^gUL z#&2HYa=($h8}ABI&PIQ5I^RXwfm-rjvdEP5EL64)DtjJh@Rk~s)y$uN2(>!K9|t*q zJAd$6VLr?RRgQlRs(c%O?yq?j=L$gNTV{O{?{?H&1n+duf9?2j=*l&<-m&=au%54Q zp9ilaX_Xrz+IxvOpy_-4`uo|1Z-Hqy-s~ac@egC3Nc8GVijWV{Dd+<bG#?tKg8l?b zJ`@W|>^;<!eKmgb?G*N3kW01<6KoY?&~_%%rhr}-+;IHs6jr=1xC2LsLix{%O!=>T zu5@=emUtnZ$5mWE_venJV|cR&8u$c@$~=AdXBXlXu(Us5W!y4)Zt6~i91ot)B}r`w zC#1Ks@lK7Mu2nYS-O|0~yNz)xxuoY9MrYXF@i9#2xu|%hK5m0UPr!%{lT#av2^&26 zet%*4$`AK?jHw&M0;eZ=oA1|`l~MCLM1Uu9(#ied3!H-jM?<m;k9#hfx-vWB7#epb z<L%`MYw1>JX9wd`e8`LUwxGf}%d;bP<J@ZI%D}l)f5dKI1g4S7Ye24LkzRgd0wx^h zhy(i_e%)Kk+%b1T=lioG(Dj_BBX0$>VM!KZ)0143l^wCsZ+KBlHfus#*%j#Aeq-G7 z_A!iOsBtYV9CHqT<Ig4Mw7&gJ(b0xzhNy-olh5*1wsR4cGd6`MV{mfLYP6d<#Qh<{ zK>lawMKFhOeEL;#9f+`WUh;C3%6mz<JYL^czWy>!DEF6MzZE37zVP}tU^fPkHrTrz zq(hDY$*D8C!R3=vVH1RT@$R7`@1R$IGvaxyA#~LAgVf+!7{~C|LgE^~A&lgjfNrr7 zPJ-yS!E@1sm0IC@w5A8I!C^V$UxYqP5k&u|$(D-_@kd&~F5DkNQ3Lm|L)aM$@?-C# z4n)SxI#@&W=FLi2Nbm}!{X2HvlA^Jj=fBKwWp?mT8T-%RyNmrT;*AW(_q#Nhc$VAs zFUOKRNaz|@KlgG+(%V=;N!{S8+;=;@G8lVD=gLf6*BnU<(0s%8MWipI-93&0@sUD@ z@mO`(z|ejWYc|XO3D0RM@(+wRUp5~Uy3B7U<Eta-Uzm=>9*?%Q8J`?Ku0N06{i!?K z?p1H_iR+`LAGKT_efloUWaGO3rsgrm#Tj!r$}wMS*Yt5MsXP6~)C6DQPLI9=BFOR1 zete=}mr?s4j7<EzI{I)Otlk-L7&Uwf(Dx&^Yn$8Q-&VcVvG{iM-r&!VJFdd}!RE40 z6%cUDdr|}j?1>qK_S2!4_xz5F4}0~%k1?(ifgmt78|z_D@fvA;ywyj_;c-s;k6@o` z>`n}W;$zL%qVWcD!%Z8ptaAHgNA9l4j{e(j!h6VhJ3#r*WXCuz_{9E|yT!sw$5os0 zse|Mbnkm2Aj8EX*fr-t<Pk}Y9a0h0y`yRt8&PX(SKG_Ac;wr9~?)Z2@dtVXX$gJJ< z?(8g>uhCa{%#A6^Y(4%s#xoSi<Ju9J#5~b%BePHS@$%Q94~pZAb@I0toMxM2z`t*P z+!4Fgl<${YA>7uRuY6B)T>Oz+pZ#M@_2WlY=y(|M7k#-OuTa}iMW0^fzo()mV~o|g zLex>sMN=WJLw|rm-i69Ogv#E&>1?R%1AICm=^ywRhj#Nnz}FP6M24j2uyYmGsV18& zw6PnDei=OVf&Uyo?kha9p0_!E9l_Cy;M2#u7NM|CjLX0Y!_iNuKLkBQAE$RM6j;kU z@6?9&OxWFR#4JT8*f{^+$W$?ZD}L~wLo1M#KgnC&x_=on)#@>KaXjgEZE-9<lT5@m z_>9<Q$1hv7zI(OCHzLv7u&8(2j0fG#o@H#()@<inVz&0?)U9yDwlhQe1ICJ&&*!pk zfAGQ93S2aDv-P*H(BIeQzqw}~w5C7V0_xK>sN<v|Bfc)uCuqZIwR#rE%bYkyT0N6= z^Y%a}Vm+r<Q;&$X6V(+sDVBVTQ~uz+t$2qR{6S<<p+6{Y$1tq(1@Gd0m~uTX5r5y& z^lCTdgV}xYg7G1Y(i#0lr_%Ig4demGq7u|8M!ZM`bE!v024hdhkvN;WwesVu983NJ z`Lv+$Zhzr6#McS-CGavtyULI3<p@`Osvd2H?zre#t2~xo{)85+A!AywwgKLS`wmSH zZb!TAu8#W)Be(~I#<r;Uwfm1$bKf4Y8@+XhHovJA4f^IcGSM=Yv0%V;qzMm_UhwPB zHH*wV7kI*LoT3G9vHOBI+V!61iG4WHejmQW;+U|d?MnE;YLsjC>s!`~BB!|xrxu)v zB4u{nxt_W89pIvJza5N#gVXghv|v5+sxnzenj->dxgC$8U_HGMWg}{8nPvSe_`&(e zKp)5B-7Dc^m0Kbw>wFPD5@b6<AE;O%zQrzxc6~=`16qSHZ0!`IyWXRoqo5;Ak%1V; z<1yVQ>sYB@*$`Q|KO)e>@mOs4n%ExMh5ty!xTOVe<M+}UTcdq_8*xjb=}kO94C<!! z-R_TQ@db0c+3Go`(;n{_u<@oSNA4yBn@HXOipB6v_R6Ds0vG688jqc;znj|F_g#dC zMudkZ#w5ppJvX&D20U}qM#ohR?OX8ugv#U5<-gX9YC1VwO1OkKbt^}c@lL<K$ICA~ z;6~w<$+#VP9_#bFr*6e@{&pP4?!?b8cfynGJrR8J&_o}5Pu#uPwfP^lg2(a$!Z2D; zxK5{09o1*UWx{#~>gv~+x)lv_usyyJp3Jd_(;nT?3Krj6T1mlp96aETH2NlvL+mG< zewFVxxGO)34xEQyyf|P=88`(??EB%<CF3`1-N<blBMQ13_qE{d2{<ypxDtVi&5JYE z$@683Va!r~z!!`;J*9z7M<PdrxP0^bD4jW^pToh~Bg-G)7b|@8x3J&fcG&Kl-;f23 zyDN|P3E(>j)$9dr6EG8O1Vvwi4-2=7?sWUME$D=3QiK<XB6_@U{$|k?o2zS419-!| z;t{;>;nyG3K)|aO2;QdDcsZfEM9?~pMJFYl%|D%m(jNWM71$TC2_I1j@<3If8Os>F zG+nyP_(t53zsKTh&0M1ELaU-WT(^=N@YAnF3+CX18UtE1$7uLTKddrqhF1zP;F-ej zPWZ@)`56&hlf)^c4Hz9HA9~N{==XPD(2LKX3~2N_MjsL%0f8YqYWt#Ey5z`{@gRkC zEV&=^su;1ZrxHC5?G2@3%?MJr?%<Vp=;&;&UXBBHLogPk;Eu6^q%X_Gfi}NQm>8M; z#*;JwVq+c>U*X^V7d^>}w7xsE=IYhhV@o()Lt^8<qjgbFbM@?wQ_Ch|7YYv6F^e9| zLh>|iBkTjlT1YpRv9juyG~M23?rHc6NwdAm)-cP%>!oYsyu*-?JUf<Lfa@-NO|)0I zjLj$+{rZzBIP~j}CL!_Y57r|={OP4#RLw@o!*-FHZigJ1l1vuR9eUtlD}ogQR%^Fx z{dKp#PwU%+?}_+yeD7#k88YeBIc5#gto?#)1d9ezF-RPb-q@$Q0R(eA#tzDlO3A$A zg|k!R%z~8J#pP1DoAlW6(g)3JDaI`gs6_g!_zIQqO}#n+)tpeo5F~t9!|fQm?{BmW zR#<3_E`AltbkVW+7*g_f+?#4UJg)u7whJF7NkNG@7ioo@m~z@5!uu<?wfDfd#<h3u zj~xSS;>N*-+kJ)xd?sZczW2f95T9ZF1!E3KbMv&qYN2is@o@=&5^?hoRZXR#zgKnJ zFduP2Xs_=c+|xnZzsIOtzV0ROuS24cYkT>dm7-b|b&O?n0@pG&<yc&fSmM!N^%%mA z+4`q`Lzo^;n}Q6LPqI%q9o3&ATEk^3a3uW<u0k8YRfPHUcc|bJP~7^<V+{M@Y<#B0 zh;_;+k=mf+(>>xMk8yA`?mOCtXv?7xw_#uC*6oQ{lWMR0Bt0+&(FVHi==;@ms8SuD zU@024x?yHFz7w^MH8tB4;qIGcP34by^!9B1KVJPa$V46?6FJ6ApCOzWI`zztb__7h zdK*6w$F72fBF=J5o0&c*V=^woxT@Idhp?;8Z#saa-HA&s-aW(RwvVH#3Z+p7mjO}T zO{kz>gH|c}cXXxb%dkLmE6Z0txf*<AL6O^$qTZ2qM|CoSJ{X+{3i!)I;;TH?2c5kZ zyN;?<)XzZ7-~x5XexUk=`C=LRf*9U~^ou5`Hq{r*FyGm!%rT)^XuQg7UL)Gx`3Q}l zo5jJWXp(Q0q0?I|uR;RsoeIv(Z0Pn_C#A!XeMD>$-B^FpDVSGGD<RDA8N#&apCR^E z0wm*0V_kISWeKSMgd&C@p=%nVX?AJ$+ZSB?CY|ifdohD#x{^a{_PAOdmv2X>J+VJO zjQ+gv%l2m{`m?^r>{Qf~Ya_f+x}an6<1jM}Py6~KKGrT;M)SgP7VN`_Ab7>`zD?S4 zv{r>LV#$d!3@n`Hz{1H}NX@ma{LQv9RD({--r06FY(#Hs%lS-HB?N1$z`+UM1(Myj z+!1mcC^V+#U%7_qFxN0)mVjTjihC-F9&1cXc^VPGyxtgBV05=R=SR4+ve`1@w`h6^ z9;oDF4HuRNIrSWjST@DsW}NeVSRWS{s5L`2>^F~&mZ^9oiDR)W5orSHZTyjIitv3! zRbJCSc2v#AsUuAhPrV5)%5ULV+)-Tt8i(JG>c!Z@P?uxwtRwj7mG<ZI!Pto`PpCW? zQQix86tZsHmL9m$sw40>nXGXfkBosA+FK>3_`(&-2O8S{W%8l;*%FC?;VltakF~em z3_I6~@|AC6P}m&VHVqWXzgZ7nZo~<D+eDn`TApZh>+gj;J-(hi?yIu(X7x&Ru228Z zQxjneb9v<aH&<i-$i@gPb%fzfqb)Y~V6=O%ccRe(Jww!g$_eI)g7FMI!RfbIzh1-0 z(d@w1&*G`8h6;yfFv9c&zG|4e7jqoX+!TwR|01S@5JK?LNX+$MTBu2mGVrxLZ0}=y z`8op3Pk6u)CuWaS$hxM{ug}OrREtSO*e*&;K`6#>pifm|ElbLL;B6C#`Rb#6$h7eg zYjX!Lj}Qw8)ddX^{jKL)QBG9Vk8us9RB%Eryh@zEnM3G9yd~PK>DQ;D=G?>-HDYF4 zY7R`c(pk9^8BeTCj-@#Q#-*<BAz$HJ_z>ZPWDYAuJJw1DW8WeP3j-6-T{Ns6jS~WJ zsb(CgSTgv6Ao%7VUs5bGrug+jyy9_@U%xe{c~l-Ja3D=gqGQQ;45$SK>V$6b70<k_ zVwoUcvF@`daXDHNI;;>o9lBnWXcF)-N0{5RC1mp?YFbcSjG&i`#a-cFIK}E}nmbmW zK<@azXqdC?i~HXEJ(}y#`?vwYG}$$KF-S8mOK6Xg{S>F>oXNXPM;^WmnujcXV&{ud z0A6U`k6SNX;g977yu5)ypu=|<H7w<X_Td4YdRBKRrvC}WfQ6Vu4NE1l!V#s~Mj-^C zF-P!GI2l%;CYbTS@GtmOk6B>0cxd+FQ9=L3n3DL|k7?S*k4NC0bUc^biVIU>8I*$% z3hD1<RUdvtk^G5ezCwTEOjMWxXWq{9P(2N@G_gjc{=|tsy;*o2#-nf-p*k8;QvzsF zxrq~T@MBRD-($?f>?5qy<ly9E-ihDKEOi9mL_WypNh}rBz%%jP$1-YXrqA*43(6hw z9n75eL>c!g!FU9(cm}MgMS&|V!;gl7_pmaEvQ2mysx><yZ~CcZ%e|a%K1yl!0NU5_ z@HUp^?1m_2$t?_^B!nlTD~Jk|29&%fii(W>#2ntGI&RabXBclL?Y3k;`1BR#CeEg| z^2lrs28BXijE}So2<uq%V5cxJx)Mf8_Dv;HLZD_PmlD#n96M*HczNs^un}iWJc$9w z33Eb0u;>oV3_!-Fn=qni5LSVNi_?X?@C(`q3xn4Q5AsLMhHdds4>u&38q0O!1~m3L zKA_iJZJLgpb4rw;(j`Sd0V7>nu*_mX$HO~W1VihS%qMz{6pyxR8;S7@G$6fqR1)^h zsEf&4sAExL1$57r^Kiu5LO2}e2N`fwtW=K45F*3bWmzZ0V|qv)M0>s!kr^{49UU7L zT0$r0J3jVtBFFX4?0dlo>hs}ANTNr78`=iD@#3ou*!3fDE^ou#I!8JPoKDd$;w(M} zi9<80`f&f_Hwxoa_!Xz|%~aA%KC9pIK{BUf@h7N8NKR=*8RPnB-Z)=Vbz&Tq@r`k- z<JJ|5sY+x)QK|AFd=L9x&}@#Y(AnixPYG-N46dU9_M9MlXL5rGn*CZZNs5mQi}fMC z;L>0fD$@Eshp4*)lY@?5^7^%hW_-kF#9*Fs{5E==@I}<-#8hDu<|mFuiAW<p4Q-7! zc2_wTaO1Ao)$Ul7O81<<X*F8tT>ZZh7ocfNZMJzaxWc^fe`O=u?#5^s#I=8gM2i>U z04D|x{J#-x71-B;w?=G<vSmG1AVwoq(=q4XImUQf%;q|(CWCt704^64zM-)sAKwCn zmV_4yJMg;S;eMT-*LD!@%I6xn7y<kAPsd&1s5(O381oW1ChjIo;4@|?V!^)kFvWTZ zlc&Cg74U&8)c8F0B^gf*dy-~k#z8ygtDIWpCs}xbBGFlX0Cc=>xmnWZe^!Hb13kpa z_NUpT>4YTU{gsA5f6Yjj?2uy2G)tQ2jhQO<Y&iySAK4Uv7ZBD@M78DDQjg_RISel! zZJqZ1bNPjs?JhqJGu-9fXs?YJy@|9_-<bS<t^H8vn2*!r|7d?js-6?-&Gz;`;Wxs) z1^4!k2%`n=GRNGUg>Q~*uNDioI=;h>^;$dJ_3#u#DLmNm>3Fc?(~r2v`SgEcrHHv8 zD9&SCs2Mk>ggnhrQOsAk$)mrn9_XmGTtTesI&|+#s2Hod#3!IPKmq*JIq!4W?d=Q2 zm9QGu#y)oWxt2}%mWeSM@9*4<@lhME<~nXTU-uXl6)1fu8}*srLNUwZ*>&X!rC;|M zW1~|WQu)Ph;dJd6iS~FKyBnh(@LY8VU%En!Ls2~c^Hhsj47Y33+>zu8$B6d4jC0zm z^5YBVZd`vM+HP<BJjT}THShaRc#7Edts@O!)xTVO<<mbC-$%k)E<Riy?KjQ{(Kq@6 zz5(5!6b%W+!sJ*!#ZM#4Zy|ZH2rXVHnUMt}XwGT!o)b~T?P{3!PBm0eFgAK_ywAu^ z5R>(>^VL93*Z||WH?oZhPE%QbJPcjoTQLYwtz3BFSlk_JNxVk3<}>CbiEsXhCuJH| zeL&?GvrT;TzRs&Z17-I6$i3r}?7|%$J-Z%D5Bfdh(I>2f3B;{}kB^Df6F1dganimJ zFVQsn^o{M#$+cQWd~<mpuxwuliaG3Sn%9Qa3HazQo|5K0gH?4gzjG|)hb-|hDmzPi z{*%8|fD3eR=e$1tVB*W<DP^lx{gTh&!$O@FHy>8pE;r)w2GxXg)bXr&t%uE@Lqz&J zA9nv69_w{z2i=eLa94iX!|ND(5DhNJvJk}O-j^GR|2DGM(Ovxb-Z+xjM2M37E`L7u zx{f&(Gl;nRa?w`ac3<HuRK_#z%C{r3gZV4)^45fUZ{K77sB)}&7>~zy6R^HxLfzP4 z(YhGq<YK8jtg1@hsujNI3&#HzCu`edIj_XEW&Vigvt6$`s>)!R>aBB6WBYgzj+Jc# zdfkL|5Pf=iBDT6+E%SDQN2(q}eaDjf_$bntuo~~x)w%WO_!;ZM?TAa+g+~rux*IEO z@M2T8k)58p)mJ#jCa&^6!|Ct4&ENOEPJh*0M;*aGLbhxpwgqm&=SxoeQop|27nRn4 zg9*3;+HuU^_c_h=-t5!c2g&Oy9zEQ2Hb{=7#=uW;5sP5Cn5B*ZqLbd-DyIPh`;e#n z70vb0oMpaXS|6Y5y}4(#-`?52FCz^dAS=SLXgXt7Fb1nWBZSbn=wS|~arVomlN@y{ z8jl>l!f}4h^$)h@S^DX`nD(Ej@infhSQTnM{4z8b9vn87x536-JCbIu9qAu3^MmUX z)d{V(JpgTbjdIPy4_5Cu*7hKd#Wg{M*G_(~@EB*{lV*OSKuq~K>F{Ioyy#HiD7P}k zvG@%r6AuQrqIbt}b%Yq2qAQ6$f`^4Tk=ZQ%A>tEsj`NWlBab8acZu;ku<~FNikNpO zI4OExdmpjRK=k(}$6^Ed*{N>Bb3FJ6VlMQ)K=>DpRf?|F0$%#WRFq@w6~d{Skez_# zFfE{9y=0>t2;#{i#wU5r9pBMUY5@xvt~5Q@4Y@py+!r0=He&_EM%0K;RIy(3Lsf2i zU^(n@wVbDNBt3gl-5fLGwD~Ur?HkPbEQE8sM~1oIpQmu>`*R%G@d@`WTI1Uzw1~sn zj-#010H4=z72@qnG0DcB0I7syfh+OHBVEK>2HW{>#xcAZBcnaWP)xUTM2|IP&LY2& zC|m%ctOW~&%*8vHTh3tyJOvR+kPFkWa4s5&M}IO2N%hX=YJMS~^L2sV9;24e0X+IL z(zHUvRQzTqh(|uHc0R2rT>8|f$ct~>^++&03+;Nfhgr?F4DbTG$dZm)<af=gQ*hoq zq5k&*U!w<WaV)2<2DynB%BzBz&KAd--h!!e%78v{4j0<80RF_HhD&jo6R$aPxkS|b zDm$OIVnwfBT)~UWg^+V53Ucido@8)>ju|z4LjL|TRv7v*G}OoP^MzUt;hKR8c!TIz za(y&~>G(&9>NHRdp*5(!#__N>0U-+O|3o8rIkB-7;#E7@2)OPL(PN5)+Xynw{|I2} zqXw|P_(BbgX6qR9;C})PlXX2ak$)XfIVT~)rw{SzJ?BotBP5!}ufK{ATO%IlJV-J9 z^8Xc}55K+*|3!h7&YQtEm*4cx#(TO(hR;Y##5L6Bi`cG3yr4zw)*^Of>z*hC_t{Z+ zU=y(8$KMUl)$tD!5!?KDvb05N-?)S7#q~F02jcgcSlw<2-QZ%q0Bwlz2tLr)W>gEG zYH%!m0r@4b9^-zp>@l7cp3+>Mha;A1uFjHsSjI@LdG!13%&E_*g#wQvLYWm_Bz!E& zTZ?&hdW}oyKr<etBRejaM^DnMx_5(!YEp$LKs%%!@fkw}9r|hZ;&wtj^;_J46n8}) zqZn%ur{a?KD0$;DO<_yMB~(-bTDJafc2vw>9I+KV)4GT6W#b!U{40dHSJ4rCM&>K2 zSgVwVT;nQm)n#tl2FsT)H7VaYZMNTb{NPLdo9zq9M6-RqnFuvPo#K!e1Pt%yJ&y|L zf}nE}1!~?H;hK=(SaKbRU^>C07cW&N5<LJ+Eslln;$2@;Y1;h88khpQLl_kihJUTl z>|M?JbnhC-JPwOf@28A@<3Wm#WwABB!rN`^P=%3{CEG~blpU4)EEYI!W;wb$r2Pj3 z8zNPOtLr7%M&h&ChJA?7h{yjdj9V+k=jaM8P;c2r%q39JHa`FG82Bd_Jom}~yLiyK zh-*XrQNjSt5eOf6_P}2*L|@E*!~p-|3WKpSR(ZXJ!(rsbk@P;+z_;<LA>yyc7|v>| z7lGi)uEh;C##zYR17fY^^(2zR??|qxVX!B;&b%LK?#}k0Yw;`ti_65FaL4lsgtjP5 z9H3O59hPXuNEQzwP(_reh<(7Gk-foDbrz~|Wv`k0cdro}feWXjipn)v7zY-du~2Gp zog=r=Y|)Xs1C0uiy+&qtuOa@^C9eq)+J=H&{S|lP@pA>&XbB5Z1PgX_E1q^YetNE8 zAkwRU>`mS4?fWr$nkbn1y0`D^Ue^nAul5+rNRdUnefN4Ux>sc3nDO%Gy*gGLd5w6q z9oyaA_{q7Vp1pz-Z^TZo>v_kbPthB(?B1(`JNJk2-P_th;P^r|rtkAyBpCAceFZi{ zwV!(R*{D{J@814s=lDV^^e&Zd4W~#KT+P{l|LIt3Jj(dM+gJRRQ~Uz(oP}dYU$IVx z@7Fs$I?j3Y*u+Dp{}Yd{y-P7b=o95gGFQ@=7m7;nYRu?*mqS0}R(o6`a5<Koj+=EA zha&E0z3^KG7_`EW<BxcfuJ4H$SBq>s?{VFqgv7CA7M9woJ|=3zM-V3BQCkkqV!1OD zEc!NMk=Bi$%reITg*ANN69c}*9^(}JXHj{KztDCm9){zNC*U+)Tq}%jwlAjJi6zGk zcGqthXy-M-K{%{4uj!8J?(pH0hIUmb#=a=x9(vFckMUF9wpP6dx!N8?<BVVQJB)c6 zgx_H>m)C?<r-yD%a^zxtdhuFE?(^sr;>(+M;mwh4Z=htSy&Sn)5CV{IcSpWR$5ohd zLnmr`8d=4i@&Ryyj{S<9p10i3`3hs_8?krju?tmHdrQUzgbEQaMVw548WB?V`XjJX zmG|3t=ns~c@mf1KntLhOLu$V*b*BUFiVbdmjlBZ1oQ}JibaPUlQFAl+tzjUJ?Fhu} z2_5m5RbWWTKMm@G8#go3&dm@tD>6o#7zW}t?Y5h?JFYU@0%buv>@u!~d|NArFPLsD z{MGbg&awD0b?U@AJ31^X6i({FM<b#S<?W>ZiO`OA#R<`c?`b=W|3qUMOQ|sw)zDUh zIjTbx{PQ<|lg*X`<N|p>J}?m|0!n~VpbQ8AGlAJa1+W090u}-_!0o^yU@=e&+zBiN zehn-K?g3T+b-;bVN?;YR8u$~i26zZqEAa?YVjb|9L_N~=zy{zcph2Pu=_ZLSNQoAS zZAhO5o&&Z6yMWyx*okAFXFld<dDh4J*^X+9?I;@gAa9h1a%(^WaJcbAP<LMi)G<N* zQis$l^-C-S*cMR>DE<Bp`viGe1*`?gA9b*=iHl&qGuX1w##coy$^-!V4`G#!zCutw z%CG!~zC#)R+w#St&Cf#|&eQHmKsrEOP`-R%CO|uu023uBH~oS1g#hi#KEwV&P|iAF zC9oP$wxmDq0$RUad)ivyuU~}i$g>AH1lYg>WzGU}Bs6(UnqSiLkWx;{NGLl~UfPvd z4%7knN&E>Zu?A3bw_yJp_^_=4JbxZ)aDF*Z2do7sYb$URNI=_}K)eKxlYnG^bjn%; zP!IVMl(__;?Pmjv0A=S|>{D*qnR3&{s{qEmb-)IIcHRyg{Bm|S|B?p0+P(k@IG+NP z0hE_EKMX{pEy~J$rpm@Kpi|Z?nWi932Q&%Fo&%Huw6&7oDm!hiWTvgzmsbFkouJ)U z18V`R{M&F$U*89?j;{*pTY>G82llb00FSM_sMtwfRsm~(M*zmpCZGk_34oXHB900_ z%0&HN2DAnBo)1v(R=rSO9@hZuV~YUFOZh@$3uRpiQ1_IV`sX$FDS-0s0S<jT^4grJ z>x&SJJVYXp0w_64us;(h1Bw93Oz?O%umGq9Xj{t5eacLEY2y_DWhLlu%D$Af0idkk z(6%C0FkXBf*tcwGi?9PR0A=+6noMc`EQuVXet<Gl#sEOMnN|Q+`&w;FIadRWp(>`- zW4{5Qth<5MuVz;fD;O`rp$_L(1NFcjfU;6PCqNm~ffOJKNB~G9l7TFMzMKnCW~LJX z%31=H0SkdDfHKq0wE*J?{aVSZWL1538_rSI179qw%?W-#4=FgGB~ga70-(&4_b?EP zcA^2hOpk(Q!#)uQ(5{r9GAGDm4^rxdpq!dSo;;q3v;v^)#3F!lF9#_1Du6Ou{dhZ$ z_nj=S=s&FQi!d8`*k%>LHksA{)U|4x`{ZE-Kt5Iis{#7kI$#4p-FLyqcM&^TXGct+ z&wLTekcS8Wl$SEnrzj_NOei0t%#@ctW|fz^UjtCyCg3?>|H*p)w&WFkA{T9Z9`bNL zA1DGQ%9O{Ha{-{_rVmhVLfLmI_Bke@ti%eSPJ;GTwr#*ZZM)~&m9?WEq@(W7Lnh8! zk%ePFK$)3(0QMv9Q&)LFDL^?X|4e{>O)LVGeV1dOGSkkKbuF*~pl!DUt=~-EFTD1} zqm4u$NrK05l9r4#2S@=D0G^AL;Bh8EIVm^w!89MB-6=a|ru+)GW1pbCX?KD)=QTw2 zXBAhT0<8tu0~`#m199Ekj+oZ~tOXbwRea=Fk};Aou@&I;fvG|a>ZTlazy_%NEJIM% zG=TcyKJ~(5%1uz_T)-puDL?lKKS14;026^CnU*090MyMQpcYsPtN>O4YXM$IDEqGP za$Ebi7^iX^!7|j_V*vHY`sx7Iy<Dc;r?2rG{cVjUWtnvVeQ)=dYun1lH{Cx;4)Q`C z$uE6`enXutl&C>U|50@MmeMKd^r_VVWo1fPsozH=sOL=pb=Ugc$Sdkrc2V-sCbY+5 zfHDvZfY}oC4Wa@dooN6djd^%n1+W}tCzb+~ne|d%%Dzh8deAI=>YLh1l^6cSc9kqj z4)RK#ttiFuM1XxE7tnwbAV===nEO1J2k;ziO_`b20JQ+yqaW7+l$BTs&{t^NbpUPK z1Z)F#0|&mIeNPzwl5g^#FTs5!4{79^{AU6w5|oMii9ozW64C@99q<Dlfccc%v$0<W z1OV!>$^!a#sJ*EV`nr<;G3+-0&jR~CU+xawlLsQp0>u}3<39OK1}H}iU<cv=Ctw5A zy*u{_=ArD&&wK>yV0~$FpEC1UArJcm>BK~!2q*=rfJHzpuoR%o%FowfpY}fR`SN!7 zE%b6y-&_M)9YB35o${FNFjaoG7W?c=&jDYcU)A1!D;3vE^0f(IA0V&P5oK5bP%idW z)t^-Spia5Z^Nh8WcO}5`tfvLo4SY%cei!m~Tp!q{8vxpzHltn0Gx@(Ar~(4OOu1hn z_ZP@x<wMJH%(9eqHNg64*JpwMfn9}uX}cz%9<bVODUQiEWh(`8ff9f+<^y>akgnvX zU6s7FEq#FUD!J(!M5vt)ez|`1RqT9He`CBNFXT(fMtLRzSwM<R(~%O%GUYkK4^UR3 z6et5&o}l~$ZC)YM8l-GzDWG&gJ*)v}_iteHFO-dZkRRI01H=P%AOVO0Y(ShmCY`ic zfO01SX#n-X<0N^^{Tx8EAP@Tl+bIHO0+hcBQ1UOwKIL8qv;f~!?oF~T+H)m9f2spk z0ILDU9v+ka5by}_7{Iu)1=t0=@$LKDSMkkod4*lA@=*@uuhi#KpjM{VxJg}5)_Oq6 zOCO`YDR1ldL*5hQqkSkFuMe|<3Sc3ie2Dw(Ka8`Kl|DrKvK-~5ob)N$l{(uF>;(?| z?_?F%=mzkx79hWrk9I2o@_>n!l>4NY0hGTApnY!#Xk&uqNmKH(&XoZ5Kzmbmwzmb? z4t#^Y71k&Bpx$Qzw(}T3-PZx+i?We_KadV&$ut>h8jvaBLCSLzfm|RTpzK8eWmkHj z4l00!0Buhw`6=@nK>0Ui-vDd_X!ke2n%%>WT~?qj`ka!D{H6dgK%7K0Qo;!&0Eqze z_yNjIU1Z8M52*%F2TT>1m*=R15`cQ7{0h{=0-y$<{Z|6C`8T+Bh-?0{sG|v}m-Vee zN}1_vY=iNWG}XtLk8N%OsOy~o^}YYA={uZ%eOq)9=UTuQd0hvr0oY$C8-3_@nR0(Q zpyXVQedeWKQC8}PzQwwp19k)Z{<pH8BpdyJHmU<?H_B%9ANtH9fU;74%1T`jEJv9` z<H!F<)|2`n?Lgn7FOv7gz)T<?D3QoRN|06x1OVot%vBN#<#8=i>WFnwZiThje+*a$ zDF1#I`_#iOVBa^l`3bUZK%H!hdRP67afW<Su1r7!(tt#nW+6?H@F1nket>l5CyixD zD*{*#{a`jgpP)XNQin@{6~Ib>d{E|X0Q>X4uP&=7$MUMbu+BdL^hw4m>U{w)5g@;@ zKmy<dqUAn$ryOxWqGdk@`|*;VjFjcl0On^(ov<8_^8waR<N#Fw<z5abS;^zqlruCw zonTYOi8TQG7u#C}u#Zs>v@?B~c{Tyh0*ocCUtQOsJbahOVdbL_(XLBns$$A&98=zP zKs`WtnNnu@#~$E&BJ)YI(MBtP8i2k^-<c`*7b2w}v5%_wL4P7>XUfg^VYTlr9Pj(z z*;n{@3wU7Praj0j?M0c2fD&LL;0M@Oh&&0Ns{%@aGGMkmz8xubKzl2>>#$EhC)mbX zpdQ!+u%GS!_H}U5*oFEhPvnoXWdf9kX$p`AXaH$R61hl|C9;rG57b9Kz<jKS@&^Fw zj6OiWUjb0|HNXaday|#_`*!3!$!?U5Z7u@H3;9e05`Z|FrXwZK)^nt(Jj};3q^UF$ z`^gg259v&)1Ik(hP)_!XbpZY7S%7itTe7JbJJLrO8yW!iA<E0xvQpwtNFM>H>lR=a z@Ga^3yNsQzTkuNX*aXxAl%)=!A2E*90?Pr?DEAtGvNDcP)^AbQ-=?gBukGNEc54DC z+ggA!P?idy3Ycx#za9H`0<<mtO7$VyocdvX|N3_N&^MK}OZnIbDBn_`2q*z^fP5ei z(B!d7Df>)-a?{3?dxZpJ)k=Um+W@ox^y~kE{GuK9W9poJnsU)EX%F(Z2%ro^B9H=j zfJ{KqNy`V)B|Qr%K|L@pQ36nY`Z})-j3e~`{e|uC0S<io_Wn}xrJ?O)AQ4b<`LR#= z$UD!I&hwO&X*|F(aX>7P0I2gUM|l?j^l{pkI#u#+!~RZSFR=eRkeP9!1)x2tXX;zo zls;ySCkMX$_P=R=`@Hg^FH(P$jk3^Bmjl#uEkIqb2I$AkLp@N}`+$Sre_2J`+XP<e zE6R3@uuor_2`mKIhn50$0PV_{Nm;i5&jEXYe*xb^+Y0`gz#HvD-f6osU?Pww_bF#U z(q<#2?6fasX59QWumYf8uK}nh`U3T^0igb<2iW}ceCgXd*D*$;T=f8XB5(9X+O7!j z1DP^qY)~@iVqXJD%aQv$COsdh0B#3pbLwj)umWKHJf_{B1zNv5Sx=IW?XurdzFNQo zBml`0v?J|FnJJ4p7l(Z(5Cg;lJZ72#uuK_1T`^q*(9WxYdVu!)4rR3Zf`}E*qCM*N z5r8_UyyRsaKz`WQb_4srJH1<Z`nL8@h@X^=a@7J$0s0kfyH-NUx(UaOq5t}R%POv? z^b__&UgI7D*iYz7#6o~R#aOZ&p#SnbbwHV^50+&e`@Vm&3fr}Sw+#UKCEt{1Hc%?T z{VJdgm<dp3f^m~FQ(l%`1JI8ffM<cdz@h)G%)-a$YvhakkyqM^u_On`1o8pORsxXb z2hso!paHo+9uNQ)1B-y$ffWGlO`o7&Q||4+e<`N0{|diiyKJBGktgy;8Il0XmjzHp z%0N&ao{IsvUet~>4u}O(0G6Tb%sU&X0agGj0s8X>U<*K5Y2yR`9UF@n+Jg2dEA`H} zLVJ?0P~O<z$lJmH4sYK^EET@WSV6gJfu#U#sjwXTJogx|9$?-dkeuunf^XW4J~b04 zlPE$;U!$z|0JJCVOgT3J%GdUPKkdnDwzw}KzpDYtQUb8=<pS(WITDn$0;mFL(^UX< zLfaCQ`ze5OZv$xKUBDjTU;i8Vg>RClHNaAUGHE~@kPLWanuIi7A{{AZro0n@THtno z<tZ=YW<9`o(gZN3JPYguAnUi$r@l-bLa%Il9k3jrUD5!`l?bE&nev!v0-)C3bNxN# zwM#nlvmEtP3M>M6y`fJtW~~J1ACUda@b+!z5iykUgL3jZPk*!av3>s=zP>FvJLIF@ z3Cg$zP}i+Z*k_;G1^mEd6|%7p)&XU}0)TO3DZm)A7NBjJhyKjCu^ae-$a#W%jGg&_ z2dDySfW^QH3F?6I(tl}N#*Y?&vEzFx?+NlTKI8z2K&b>}rQ8#N*#P~PF=HK|`lzyL z>-Vdl3fX7_`XA$68jt|k0m>QxC|@3+NzjL>gN49S;69)pXaK%vwiMU*UEquTiaau& z*8%iF%FS~Jzh5@_vN4tSXkx7VEK<e}_9xn-7NC5%RtY-K?*)+m%hvsU$k(NOye?D$ zl#{k(Tw#Bstm^>!AY;i7z^3F;jA3|P+W^pJlx-pq02ToY0Ln<4t^!sADyDpoV<!Da z#1`_Xd~+rCi+~)7QlylXX$f#Uun?dgn3teWQ#UQZp6`$U3fX8k`WyX@wxK^VP9_6! zfCgj%l$U9egkREfky3WrSY0D|U4*{A5B*Q^U^@(+XvZ}`4M2ZX*EiZ_-}j4O#rKy@ zPmr$)^4tl~mh?l~m$D!HVanJc8?SwJ0OLvpKs)l7ag*nMpmr4UZ3q7xztAVy*UA9) zL(0jRLR(T+#*@_m`xxb>ebINnte^ZZ@^QVounqa893DUeQh*YG_9PYpj3YBG;Bn3O zTt4(GF<(Nvkax;Q+2Vk7c}yDj<AGS2CLm1$lE2^bDW4J73;NqqfOe!W67<D&0IzXd zfbBmFd6Zl#?U1huGAsh_1K8)7(zcYHeRTZ~Tt4=-*#KqaHCx$}vaSMPPo<L|QY!4X z2K=)RQa+|c36KM565P-GVaX_B=pOJ*Kg^YKD0%X6oC%}>j42X7DBHaWzFPo}TatlT zAW801-Z)8%K}z8Gha#WwOUlOBu^Lzku&;&ShayiXpIypV1NlM_TJDE(+#%l@$g~1j z1e5{nZ=8$AchY_+vUJ5~hkP8LQ9h2tvH<ouetY8oEAr8P97|6GXgkIcI{+EG(#sEp z)?q(hyLmmQ?f6Y56*Hs1f3XrT=67zbBh3B7GCe9&dzMK*O{PCJ(~1<P_Ur$XHWKNV z*uvFs%Q6dh+0N(IKYZPRfv4Q@{y^iAh_uXvo@qZj>qlu5ABa!;;|mw0UG{KlT298W zw6fcLX+NvGGOhm3qO@^SXQb8qetz1gy>3st%YIkdlsi|XUGns*v=Phxl6Kd*Po^E1 zvNi3&irs00Z#<B;%J+U+&7z1w4IiE|sQWvo4Z7*p_(2V;E*LcA*3?0JqlOK-#_t=H zG3m-de;Zpg=+pCO47z>R{6Py})d$Uf@y<cjMJopVV)3d$11J4u(D{cp4BFR!>!9b{ zy9c@Z9~g91<okn`OpX{l_8+GV{$S&2gO_K=4?a|W!Qe|qrw$H0n>qNJKEA=l=UqAY zxtOBC_5Yea_%~O~9~}RLK6v^=cMg7d@QT6nC#)Jg=;FT&ZeF`#@PYSR21i8g9z3!A z)xqaH@!sJ3vLc4GuR3MOyUR}-vi02fA?J867&7cfsYA|LmN{hFZf(eYuZ|n?;nu<- z`fsKWdHCY_L!P=*9}=j%bI8Hy6+@m%UNvO&M{9@7nzdobvHF%Fqc{C?$epWS9ddNW zdqWz|ib%g}?kVXXO+78W`+H}nUmJTt`jxMwr0<!KnSSSQwe<H^j!PeSTVeVQIn&dh z?=e69`d{hk3-azv@AuMg(@**I{`8W~Ytu7EZb<Jtw<W!<`k(197QdQ)DEYngw*S~% zmtJ{_tM{nWTtDA*w(HSX&v(uHbBgP}3o>1sCu*)MCXaJfdJ0`7r%ZQ6?5}Voj?`WE zUVNwP)(3y<DtzXC*WGulb)DL4gKP4r7FVy)|8!mQvsYbjz4or_C;zYw?biR4p($~v z4SnF(XAk}HU(X-<_{}LpXTOs%wC4rd(B=!r4Lul9ICN&yjYBgwR19r9Qy;n|^3I_z z&HL@pXYRRw=$;8{hraXt6GQ(R-7>T$`kzC8-@1QjkKeyLH2(ox#`bQfWL)!BpA5&8 zvoop|oS*U8sFaNB>N7GXwU5roZp+P>@btAAD{j3pW8SYTGS<Ialkw3DcVvwI#cwm* zzq&u;!hUNr_OEy%<Fx0RGtStyD<k1|`!fdRy_>PB(w6zhm!mV6H}%O}ka2cq#4paz z%yp(@PMV*Q*|K(Y=4*e-%{(;w+RR;PH)j5$tRnN*TWd0hK6poFL*j2UH@oi7tUmH^ z=4-`IWG=X?IrDGEuFQ2;@6Vjo=iSUtCfJ7Qk46uB<u`qXMfN^>Sn#Lk5BuA`0mG(_ z$rzS()97J$l;#er9(wJt^WH8S*6*^4Ve|e_GpuI89mBK_?-`bN%KgLMYkGLt(f&^i ziyGfNY-;wdVfkn7AGTxL;bB*&+lJp9j2=F4YM<e?t!E9t@ZH4W{T~=G{I(xu4BwV9 zdU$sK+~GrxP8weI$Fku|&aW6gV^+=Z{a4*FeBai4hJUnY<?yLX9v*)7(e=ZZozpyg zpkvqYGhX=j@L^Slhi^H}Hez~l^oYAg_8D=}U(XuxTtniBzmyLc@yNcRBZ?zNkNC;q zD@J_s=%f*!Oe{les*tcT9gb^<2dNw59f0G31f+`)o3xGm4?Dyd9Jh=-<MAEoOFnfE zeY@><m*Cnn3iEP^KNXGl+^sj_!~WdnnenLOw?gfG-Z_;Aa}KDJTUyqI_OwyQMhwWh z`KrI_pN$xsCCIi!nW{J|;^M^7KmHJM*eZ_fJEMX5-ujy(iz)ac-S(DC9M_HPf6&Yq z@5}<3`I%zx=UMjCUGH`8nVNNM!9~TgzJ%)b2%gUxIItg6Y{MJyQ+M~>e;aXY>_emf zeM?}(q)W!7^m}072;1mUqlP9Vd5W){GU<kdwElzp54?C#Uvq~gWBG$E;+9|7B4#=x z&W`C3T^oVbx1hy~Gd9~#WtxaIMeeUb9-F(jb7ADDQ@c;Ev@eQ^8WPbHg-7+WCF7L% z6J@0F{I?g8Z}h3%BOkBqv8a2n+hY5YsHoKL%<k@myAoun0l39P;YZ}Z^wjQ`smz|r z9#J2N>b)|5y~vHXfcd98iVyFSsLNQp#%7`p#>fWv*Rkr49mcR+_QJ@@C{OQ%nZ2Va zr=7B38)_y(cK#0-w{2!3XvrZoKh9-I+D}fw!N}guC6V6Vaf_oy_D%@ey}gqbb@TO3 zS=im(JH4{UnBJ`sQMu7Qd#Ag5r?`73A<xL(aVRsgw@`yE9aT{G+^%JcbBiKJ_l{c_ z<?fwOX^;G@XYV-3D)M_Q`^ZWiJ}b-4U@COtKean_;$3X_2D@borFeuE-MyHf|3$`a zM~BW~OP^_;OGWOxqo_g;bWUGLjuhE#8M6M$$S7w-&)(6aah`hg%k#3c2w#~fX|X+# zLD}gliyM5}gH8BQg}L>gF>7jI(zUk!GXm4iv_$PqFD{+bKTtd~VC!ErDKN>_|JoTd zZ2hNCGY`zPf8mTknj-Qbb+Gj)-PXTw+SIAVH=vFirUi=okG_1|#WMnv3a>{lR$p9F zFnRi<sl|$&&r73hQh}CCq(oZiKb7aACH;i{0~-FHPULTuRf+xr8vkKb)I-0*Ci(@^ z;Q;B*7*eJGBh3LKY~5@VWj$HrdDdq8B|y5`)cI>9y^a~MX=Y-(5vi!>YDuu0=|V}j zNxI6<vr(4%&D=KIAH+^~b=Z-vl5|;Z2mQ}tPy97h2aP*x#Syi4;`XRG>>>QldS<;i z=xz%w@wA{v+h$rbV}G-xCxp<S5y#y-VxT&`L(&rzL8dQAI%AD>ds!TGw@Gt#oZ2t; zqEF)UbxBX^$Z77pCF$&E*6lrU5N!)>_o$>Re^X_SNqV{>$kdF1(YCA*dQag`(H;Jw zPCF%iq9VxjbV)A>p~p*lUI_g>NvHo>w<JODZsRq_y7iazP(7r{ddjSsu|HJiSJydp zI!n?S2d&$svYr|%5&M2guLz<4Le>+i=R8SI3(0?ttfw}FUL@(uL+HPf^@Q4s|MhCK zb+=`P<iAPMvqI>zW&L#_^aYZ>I)q*$>+yup7fZSpLSHKBNg?!mWc_PH=yfu`KZL$Y z=C2Q-i}8l7hb<w5{)oumqhnlRJspL})YTSc3ynTzt|;iUt1SxccC|&F)O*cbQ8pR0 zLkdONco95#i?VfG{W?z8LoR2>QRmKcVd$@fp}!V}{$?2Z`(fxGhM|7~`f0dgB%EpT zD8^UV?S<=pSNxv_I`fyw{A$c~UYPtB%KU3(el;E&B<U4rne8h2NJ-B*+oX$e8Ft5p zsXtfdFOz{rjJuHkT1js`->gTBsjyon=@WT@#wNy2Nasj;)<uGBj*+liE9n(7(5SJ| zA0&Odq>J$p@;?oFS9-HeDw{EFdcZcLxVWgGuw>GVV%xQore9xh!?Y<giVI3+T|0eB z(bO`Vd3eLL=~E|_PPwJH|CAZiC-qN3sX%#IL15Yq#RY}s({C!CVdMVPNi(jWVRPqd zwi$uq>BZ9u0wvRnXOxsoD=nH~yVO5+>@QL=7@9V<Xk-BnE*qEAMZSX4DO0Beii>Rh z{i9O&a|wS2@(05(|ENLy!4M25T>MQH)Ko#{&<qrjc?fqgI>WKpH8YDEQ%$m<Tw=D7 z%8ZwYsxA>#T_P&EL^OVhs36tMW0p0U5_txSQUk@=fg)#`sB@smIZ(8cCeEgbQfa0v zqLnnkaGIzgO_Uud%BG33gUo$V!yr+^pi688qy1w?y8Q)XFTL~%Z*D=Zd!*l6U@IsP zV@??I`hv-mrj*)l6vl<oN~aatrWQ|y!EB||uCo=-EVC8dR90|Z>9lJnl@^pvn|8ge z(9C5aPo7>}Y!g2PH%%$Hu589E*bO8eSq{p?!IT@O1Z)^S-ykaH>B7?DNz=uVa38vb zI8r_$4yH|>45kVu-B468b;?XZnl!a+>ZF+kMa6}aW(h*!wDPjj;({B?C*2T$_rW=( zA5x^kvRUx&J%|_F7=bSZ@DGP#i-zBGW5QcHMW1V-_qNcFM&kfmXgzae=w&enpy~-) z=<HvL{u>LukA<EoLpAF;%|iEB=+^rE7P__maTdC@{xTWz$^U3e{j()KR1eWH$b>Ca z-dPqpugOZTr53u+LVr-wSwDC4r9Gau(0Nay>e+6ga}1^E`z>_-L%E{AXQ7{Np?_?l zpJAb!f0}FBJ<dWuk4}J1@u}+n8I>;Syd)_4DKcm>zm>krLg%GI<rn|RE$iW>LeU*G z5;oSudtOCPk#y?cs^=_Ae*S;1%Kuvn-RjS)EcJ}B<bTML{~QbbF$?`%3;oS7_58<@ z-&)V77P_^bA#`qRls5rT{BM`^P<hX$b6{isp8_iXWfuB*7JAS^x9aC_7W&UD`5P_t zL<@btq?4b^Ec74Cfqf`_xTKR$tKI)ZXT?Ukwf^-Mx>c^HB|WtMAJe(9u^tW)lpZd& z&@Zsii!5|&{;d|eRX;l{bPhFC{V!VRRz8nNdMKa0+1ap>&jdi#^D{{g&7Wz>Z>_)3 zLO;(^&q52`YRAPEx>e5)OL}O#`@_&<7!<IPf2$o|v(S0Zq2!8{<3!ePy}o2w=-HP1 zf0yG#*5B7c-y`X)$J$R@E&2Od@*lF$t=EOa7P|GiaITzO4V5d|Lbv*Z%R;y6VUmSz zy-wXC>7o1^mi*TE@PLJGjSqjf(5>~ihN=IMCBL=)BNn=~{zwXmje4-kd!D3|e`~zW z2t)UWq2Dj*te-=3<tG~~^kfTttA)->)=@b=*&jkz_2f`UY^*;KQ1m<tJ;6esXrWvC zSFxm1UTb`_Q(4$p|HXi+zmJ99-$FmfLLXqEue8upEcALwXS-Ke=r39Fr&{O-!{mS8 zlHbZt_XHHi7RrC`1VI*bE1x%7=vF>&m-J9RAGGAR@>w4y|1*~SRzCMw=vIDSv(T;j z|0RuwjdEG}yhYMO`Mk%H-^%CxVe&Uw^3(N{-9NI>t^Kj*dE~|%A6nzp*^*8^>0+v$ zR12M^Q}kgLy0zT}l1{m-{qc@4^go25KN5!ik)%hWervlucu~Q|cCB(bB%S%Ka-C<P zTjOLu3*9R3NDJM1z19-hs%c*<KetOd`56l+z1<y#zB&y3pJC{4g`xM5^APrscFzn$ zzc37aP#F4%F!Tf}1snBz383VC(n7cDXRMqTA)nUkZz3<!*jUd%K-H6Cp>wWO(XX=5 z2U+Mv7W!Zd{aRj(v9bOkfU4*EF!YOgF~Ane=L|__J?Vg|=T-~d>Q{GI=q^kCRTlbC z3;iJr-5O6mu+XjbJi&_-wotidv9P4`I<?}L;?NewV1$iwk)-%P+d{YA5B`L~2pj9q z095{$!_eQf&@(Oh=hH~oSP%KhznVuj+v^s(wf-w;JZ#Kwt!J}^&U!wTa<xi&sJ-qz zleL)gTKnTiVdy>1>N@|{F!UF~&=bsR1pg6op9y`K8|5Nhs@;}PA~r>Dm4z0W<PN%; zI^GaMSI_(2456!e*JxRvs$b2on$KN2+g0<ZDIxjQJgO&zuI5qA`Tfp%)O_joko;=C zR0w2|SIw8EkU<Mw&6nnc(A9itQ3zelmzuSF{oe!>CF|Wos>qVZ2c*BL(@wP`Qx5Ct zi&^qmB^9g8y%t%3b5?98T4s>9EjETv(xW6@C5a4PU2JU2x+UX)b$;FQ?8a<gsuz3a zmL=PtSfD6onsDNwjWLSlIR>$Ab-y-`a;!w`EB;l=YeQG%56kjdA?20+Rhk>7e9CXk zf(;?%mHt&aNtRCu$#+<m=QYi`kymai{gq{3oRB}KF1H?a?yGW&G7meXh3ela%h!gS zP<*TMw_v9$|I;2fb5zI%>3_WdRbKgDAJ9U5hb8Oo;jhi6n@PuSDF0pY&de#lHH*~9 z1|2x`0-^1n0$Nw?*Z-eceoKh_q3ut(Ve+*8(*`7{Ej4X$%AmoQ3{Fc=NJvddNwNG6 zPD{hlAQuyC6MN3{`Y(-)=&UgUt13E=%=Y<PGqiI*OYCN0PC3Tr9_P;W>7S0%^bfAk zD&LH*-Wj+=3tki93I6K1FXH9)UXF7sm|d&f7@;|yDz~kt^nU$yO@H|iPxxK!<@>eD zP0?3RaOb-xY@95%{*H62coy}G0zUmScP<-wii#2~iPBn7TvOLGboupn4o$@^>iPs6 zJjF2qDM)N8m!geEF0HWKDRQbzm2;f7z|6TfrM~1%J<#q}d>h_qmCaqbDMBkui!<xQ z2^2MA<21u-(~Pt{h-g3b=CR|)J+5Ns-2Q@GnVDxRe<JmWszMYM^&m6z&D%5Cajr+O zx}JJ}ia%xp&`D~8(n_a3gdRS-Let-u`X1m9P8Rykj(Dv@-#+mAR5WFmI>>gtSrg^g zUoC&ls_a^KZfZmIPPe|xw4naU-2PHLXKF)x&swdrA;Rt2H1|RnFD(i`{%$rS^LAI} zBY^{aE^8x$8z*<z>*@)q4J0UjwdNkkWYd~QlNqKWY9ST9Z=<H?C+^Yo(!^F6*RK~P z9`fVhu%>_F*8_=1A!3qovr{uhRBnmX3Xf=w2crak#taZ|jn?$2juVk4<N7<AJ}TO$ zZ!r%GuW-6``>*|lh0ak%=Bmqs$*++Sf7C^l&9LTik;|vkgi)IQ_823x)ofrC8u*cB zlqN>|jiN-SAA50rBaoN?jp#VJTr=VmwPt&hkgIZ2(niO*SvIKgHBFz;>eq`82_dFJ zmJj`U`B9&~8`7ls^bd+O!+w4ewV`|Wq&A4={Q8GJeUr&d&|^>V>u+n7t%tR~oBY9| zM2D~Pz+rS6nRUO>Q>$#U2j?F@cI?=PJAT@7eg(Ebo8IWxk04uPoAZH+3Ow}jG-|;y zk($G^!`7fx?v0w<968MNF28<I(_azw!BO`VX#-7`%1_e_aBmbJ@*7hR`;GFWTQ`ba zvOiEh_f_sI&3^wMxZx*|4}zuZ<JMROYmtI^f-@s38zR}>ayZjD9a04-)j>%0p_J;q zuu_GUC$&LHWL)8_-Z^)iW}K}R?)0X<1?5C&`na_)MEw(V(oX->jB)i;l2Nqxs7L>p zI{gUa{OX4Co*viKHGu){%FPiXSY=FDTfQT;0R>v1omgS8@;EJ6yyt2LD)%++f(aXI zeTB{bh}QNOrH+LCyVOro*UBmDS~;au&TCMP8NmGd8(&>H2xCG!9^+Q0xBB?pftt}P z^`(xumieMbe~)gaXV)M4;FIIWE00EKMs~fsa+iqKZr3aGUOYj1kKS7D2vLBLdvd3K z;U9=ixDaU7#{=b>(L<|l2&5WU(Lm>=zErCjnR|HZ6j4yb$ii_>p>WsUdH>e*W_e<c zsG*xWien*p)Xa-0V~ICfrZT2@MNBc{8$%G{s%DH%AqzbaJPiBcjrE+vw8Seq@cMLA zb7W&g`7g4LG)I=_<JVq(gAU_2wnZIjvcIqWInYzavH!>2yTC_PUG2j&$p}FsCumw@ zr84TMi6SNvAVUIXU<S^>1ZV}tdI20js0a}f1&v8?W@t_i6HrlU>)X<c*0w5C(NaZC zxCOA*01Do!h?geBO9bU6lK=DUv-jj=$h>{)+wb@Nzwi8#Ir}_kU)J7x?fY8mM4DWO zHl$Vbn#pH9(v%k2=d4KI($n$c%I`vAp|kfkM&@6)aprP8ewTAgy5p%KjJo2H<(=X7 zr!k$1l@^^=^pX9L*KKmOMH2m|@9Lm&f{ks`Rk}F^S$SKFQr^iAo)4f*^Fr}(Zo#Js z|3S0F(^*vDWefxv-dnP2KK7eqvjeeh)rAG0YW+|y>)UcMmeTKc_3(;6<zkYdo2Q5Z zHC@de6SCp~G=$C0;*r@^JN)LzoItFhdWc9$lq<qx)a?w9pk2b}B*N!Z?J)1^3l1zm z(`34s@N|Yl9i|A^7vUDTV~48!q4;leF>^!HR_S-mr*1x<i$gI+nh|nZZARuj7}-44 zdyBi~?>0XcADLr4D2{W3#ybU{2F>-Je8eCF39j?r;;F$j#p)z|hqgG;RS8z9^b0;2 zC-~$?|0bVU1G?|Vji_j+Z%Yrw8c&_X8IN}5iH9tH#(0SlWsVpcC)@fIzo)36q2O&4 z0a_rc)VwA`H;3qQ%+NWzsXSjdCwht!y_xYwWmq?__vjquCZO3&-nd-O8LW{;N0(6f zvL3JS<ck>=Vr%ky#4=$f99Z8MyxsES!<bB2(=a_=C4Gtlj5TO0Hny3<t>y!rePd$A zf!;z-&WMhA<ej?t!;GL==uw&IN}HXkps_iLu$EniQj_&u6*_^+e!j>z>00zTusmF+ zR21UZsYNN3_1s<XU^I6vE-ki$JRaGkt2*>eK`q{uVR^536@{GRsMxBTx1gPVszoQc zFrNc^W1P3j6ElZcgAs677lz`GNQQ1ZOVlfe9X3^e@vUwx{vsQrs=8Q1&~SMw|Djk> z5Z8JmC}cZMq_0KC0z#-4-AGbafNpFwnzXu$&|@$&ZjQnGd+Oc|TKyToz=C4Jspdh( zTe`6YvyvPpe(zTu9U?A82?^O`Y}D%ZAOX&Y-0Dp*{8}(?bFlH7w2*hdwv6j8zcC}r z9}ioT(6aD{YWDIX3WXCNOwO%BiM@@d3@!Ro<k^~gPe;DQOsg~c*MoUmLf!*4Q!!#> zgyMzggwiWfYm$6UsDt4SztP{Cn+J^^99jIve#DTNnm2xlsd@2?EG^y-Nu89l%|4@P zQJtDDTZMe|n~n~ve-1{fJXwyX?$V+k0TZRJ#onS*)%MLNM{1-$cPFbU_GfrhoZwrZ z7$g)8#z>c_FZIj`Y%-9Q3|Lu}#fg4uq+9s#8~cn#f$rLe+=Gc%vb4oJqtUnPLqWT! zkQo_T{qI2;CI~J}5VZQAi~L|J9655OR=*TaLGLDQX@ri&#~p6WD3{%i2a9K9{T1wF zH=#ve!8EFMGTsV)evvCORe%2YEN1{MqTY+wn3kY^U*wRj-lL<4or_nj$AI^vntfeD z%T|-4)gMC=T%475&NuWhTB$W^i5V@X))>1mcW4-6L_gvPrA0R)m@n@4uz@+fft>2n zE~$h15k~ZpT*Pwwn$`#5ne?%e6n!d-`!P#uWu<pVUtg{MNB=f`7zwrL1zqXuTb-9g zUz(sVL(q2!G(1-Wu4=s=uI>oQ*6MfQ6$@%0=389~$6+fQjQ(2m_wZ>eo9yayyQCd! z5J`izE1qe+D@B4?TK!bK3dLvSVuWrR=r<>41TaxqHU_9!npqsk*5bqAMm^UJ#@*K0 zp*23q0wp_i&Ync+V+n@}VBaU0*Jt!7!(h;bJfAVj)g722KonS_3gI&|Xu3RpvmCsB zNUOhwMfitf9o7OcF@Lh=uVQUoq^cjwLOO5zoH=-|8UZV>?R+OEtlZJCmZrK{tYe*+ zr5hUr;R&xzBdvKVS~obVX{0q<Z5rtYotVvz6mtF;Uy6+8>#z}GjSE<7l^I*)atqYG zf*I>B4w)fybsfTm%$kfcjy9KYaKZp=breBs-m67_4MrBQ*hi6U?e|#yi*4M_5+i&| z|IavVA{M!4A#xB5-{I<v!-C8^GAxMHD=6z^2rDMUCiXv+FLx58o1mxQkcl;d7X1#Q zi|lt+WLf!-Y;o?`UwM>Ee-V#0dL-zVAxksZg-~v?)0aridSqJ`IhPdNy^u3Sxtd56 zSz_%$1Umu?tr)oE51I%ft21Z@7K&&S^-cfmvQdRuqTA@EYC(ZjN+Kv$!!753DjG!e zP6WZ?1Ec$MoLOnH-(qFK38ohNz2$OgvAf~wGSSpx^O0LDMYP!2XvkQFXfbXgmL9_L z)%aXSbw?tqszg+up-)VTYPE{09u5&zB^+wXYf-fg!7Qr&Zn;3!>nBI$QBkF<sP-!c z?56O8<_opRb7yS;sOt(e1r`Eu1e;>DyyIHO7Kmqh<drldlYG;HA?b7UEONa|K57ws z)cPjSM0-Dp0#QF!&8xMj#SbEV>xIP<7U>DD5bq^p$njP^finVD({GYX)TV%2klqv! zjb21sX5O4%7W+_(eg*<XP^-zZ1Gm!coMp?_TD>2gDXHo79{CKrT8D&xA6kbS4Wpil z1Ht$T52u_3+uFW^@h#Gb#odMsUvbET`DPDz(9NNo>4THAJw`}&5U~c`%=VagtazpM zYS3k^Nw`QQ??t14T33QVHNVG7xV85Q7JHN#babw2z@gDE;l1r0?vo|Ovy(4&fi8yU ze53pDvr~m1Z4ZA$4B_3S|1REG>5CS(M>dng=v6G<e#dfww;SN<(oFvK7C_gwSDuKJ z>j175wV3zckF;wmY!ywMeZ$`^7b1NMu78tKHkoxbXhyb`jMZ)gBcbm{%T`Qh4F=?2 z$yF5|*{Rc062IkOlVC1(j`L)@!@_!#*e4)sb?g*feS89VkK4)<Jvr6BV0dkmb1#d9 znT&39>ECtpbbyXvc!lN9%-*4!XJCa``J2{_7{J*8`dXp8A*e418mpT^L;(9wNbTX= z40~!KQ^9alz##V>u{|MLg6ZGv=*WtX6dQs*uiw+R<|U?<oiep-q&6Xu8u(eH$JWJ8 z<hev4iuBkj&9(1{ZJ78(Y%v>HO(Z9oU9+A^%8|933}&&!gYoM<+y=sYFWpKCy)Jh% z^l-k&U;-Bf94@yO9LcDh6{t8+PUu}XX6WJaOc9H(c#bEl>KC0U*hkf*o?Cdb(oX6~ z>kzH=f?b#D@;f_Hz89gfj<ft(J@BZEVACklkI`V1m^|U`me1V3lCgrh)ximOX*YJ+ zM`?8&1<PRHh5Ij0UEZ3DN6|?|_NM_#YdsG@*AQo)gxm&ENbKs#D8}QdOB6a^2UvC@ zi93_uF96Uri4t^7U7|P-fQ`xwJa!H74Cc{YLi`+nEz!kz>>6S~a)>h-B9V))(UibH zkrN#Uv@DJ}j*22ZcIbevU9x2%4!K5W(5Yt}&~9w(Jl{E>O%{H;zCVbwkSL=-J&M;G zZ=W~+rr8S|lV_LD8ZdtT&F(p~Z@OAQ?t%dW2VBwJi=g|8{DS-f{JC?lf|^(5%o%el zZ@zg(MV^S6KkYAB&i0Yt*0uv>RQg(xIDWu8><q-yV2fZWjUp^@`FrO^PVx87zq5BP z><;*pjRGOt!gF_CJ=xYoxG@X|e@k3J87}R^-nk=f0hykXa~a3Lo#}~iBE8YQ^Y7>; zy-oCw>l*$b+|o3i_7Fg4#8r_nfiU(oPzmb-{@xkz#^!RI{&Bg*uXPs_RXqQVSlN<O zB0a9|onN08PhaXvdki6S0b6>+4#%7HqwE!oT?)VB>eJ({v}dJF3CdqgWf|c5KJT4= zrGX3BtVsKszDMx<o&J|g|6jq~z5jP)?3OHXgY^H?gnxhU9AUU3ty*N)XW6f4k^Zn5 zFD};Yafv-d1hhrc(yoW823Y5?<gNO$>%c`lO_pmt?N-ETw_>RawkejJ0vi>P9_dZ6 z??5K#VyJ@gUoXS2V<h8xPo+hTv<XN7xzzzx$@dSj_eT87$Y0Vf#t7QQ0Dmp%;ip}U z(Y<S(X-}pwi{U}=tun5pav0rvLfWF<IU{>#p&V-AuU-0^duo?71GL4_O`7Sar+1s^ z=+n~A=bKR{S?R!=rZl`6dD0u2F%f)Mfr$w(mH{vFVx7duo8tPGHZEuqqhJ6u3#F+G z@d(w!PRkc~_z#)4_@CIe5Pb(S#5~d_#Z-|w**Cy_p~QK1!%MV%+$sM_|BAmw+Xglq z|Bh~KNsJUY8L8`Kl`$51NmrS8?&(OBw|xIYaX+P7ZSH?xS6uY*NhwpN<zzbP>HkR` za+aT%A|z3BYYP0X6nI?<{9)ii$6K~9H=cQ|!9Vd*iHm*}*hc(!N6*VC@SQ1e_QBo7 zvllqi&64d(^wq!)r|^Fw1+IZF8Be>6NA%<H>yfxMBXBrGe+~Rfh07`y{Sokqz`LXK zTIqk4^soBoc@l4sxagx1Pi=~Lej@!(m8>rMZ213K3je=Lfj^M~Pi1RhXA1uxrog`d z&hjj$a2GByHsDTryDJ}#LEYgO0B1b;?8kA5F$DKvDg0lZ0;lXK<7t+OsQRL=es}3E zOMyQq<C#jKIb33V!F^2%|2)a+F8&=U@D>?=^Eo2=#Mp6M;%*MOxDx%@l-sA=F&|p@ z7yxF^y&0<4Vpch&9A=EBsQw>*=FgZmU3#gQb~9d-Pn$o3n)5<YU1+FVit)q>Q>d!X zyZL4juSn3Lo)|T>*uxcz%4fi?KxKLPjQP+`4?83&l8Pxp**poGHhsDS;f1O@$eS}` zu0txm<B3}0C;OiQ`eA%vet25N$-47N-fyd%G5@4E1c<V!gyE+o|CaW<(3h8QC|fw? zCgkRp1<+zw{sk)X6Sio#`<5#7w@xcBM~zIG;FvNKy883!fJuef(<^7dDFZ<DzhZXy zCaCg5bsm|Tm!MW)N*mv%x~~E*np-gou`QS~d-^O?z>N7_>O;^*MSIwRI4OkXfA-wO zn@%Ds=dywmQQfo%jHSHEdbC1MnO9kn@Fw^nkz{ABO`AJy&LYxig|P=gNx-auVj&TM zm03k?CryGP3Ew<_+T2Q*6{wgEvs@Cpea8F+v**o)83oY-toAX?x(T`1Y`C$06c@)k zUf75d_U;sZk3cOMTz16@|Fy)E{Xb^&&#qYc-;%<=8aI;T$wxoQD;d8!1^$Q)=TU)5 z_ca^Nu|?q(=r?#V{<HC~@OTRRVH^HEoBs_qoL!TO=XDz{)*7;${c;>-y7qX+r@-gg zaC<y!ZMa>x>m?h`tq?`eM>f2l4gWp~!Iex;z=qq??Iovld~J_ss13L0>n0m+kH;y; z^^@YU;TIqcMgLVP@M$UVc`5L0IX_^!7un+fxed3c+bnSo*SR+TS#qEu&V2_(r*6Y9 zvElbfoatU_!ymNaT>q+g{$j)J^z5<W+`Cl%KeXX?|G$;<45n+>*?iN6+uKVoIiDc= zvItfDITB|)`8M2R!|nVq%ZA(2t+e6xbXQ3{Io;JZ|MqnAxR}I6dhGGsXv6Kgc=K%d z#R#MF^)nl8k7v6LxARGh4Y&JG%Oo`xJ$Bu_%WSwkp5ZC*X*S#*&%HL>9?u3FZl~up z8-70MQu#gWbV24x<>pO+2UFlbN`c>!0<TJe$5Y^cNP(Y7fuBbu4qVCn;7fr|Nr5ks zcyhabDTV*{Q{Wvb@QbMIfs659f`3&nQzV{De_aavx3+k4ZSlOF!vE0}_z&eIoax&6 zYNidh^VOXx@MS6R-=)Ae+HiZnvDbzVvgPZz4Y#)omt1d<e*5^VY}639`|oG-KiC%k z#WvjTe}xUV)AO7Sx6h**C7#@my`RFrvPDBW?eX-KN@L0R_fp`OrNB#5;CH6Le~|)T zodSQshTF%TCL3-q&sS}@y}tfo!|nb*v*Gso>agK<|CgPKg2csgE5g5OU;SCQxQKi4 zukfKZ+)n@46!`Ti@K;jcdu+I!&i8D%y&T$YxZS^tjSv^<x0l1&Hr(!iv<<hH!z>%l zq*OV~lXx=Uu1w+oZ5uw+7SBJ<!UL{kzWpo(p210KH~xQ=0-q`I<o@|*Dg6Jz=HK4m zZcO37Cl>?V&~ui=nXbLR9hk!Zohk6&rNEy{fj6hX_ou*5;p7`va`}JPhTHkvZNu&S zlWW86{OPsfcK>BI+|HlVY`ES3G8^s%y^0T&O(F6jr?d)paq)nQIO{;+7uax46&3D= zn-~4dC7^hoEPgxjsq%Sw60Y{+w<h5YDl&Oj@w@53m7RpEecz%aT<yzFPr}tc>xv{? z?Xzx5#(P-l(pD)iMUUD~6@U#_`>Bdv<zMZaPL=skxZ0<zO~Tc_<KL2SwU78^60Y_I z7p4m`1z99n?dL5`!qtAB<@?+Jx)GG=$YM%FR4QG$l7G|-In7XyVot%fRGL66#~XRp zy+zLRI4xy5<XK*_dl7Rg;xc>U9e-verK?^rE&J6U4~+BMhA%)^rhf(g?Uzd5Z3p3| zUta27D&5K9>m>aH=-GCu{HyTe@s4geTqk_4li`!gTZLEm>t*=-L`ciARfhjpI_NWG z_@v;Dk7W2{T+yxYJ7svu&I)$4$nYzZDn`+*JXXTd9se{GSw6PP1j#?_zf^d|Kb$ru zB_RUVy2Z^AwQh;uWcvA>OglYioM#1DC--N_#%B_@-~|7&uk9}V1}+wGossl1IeoFk zThOV6{x5aV2Nw?hcXiOSN-SFVTPmETjy{gwkX-Dko8L7Zm!?7N#E&EXYl23zrJ@S0 zIfzO_IAs<TqKZQ1qwHUGh&Q@*vlRN<(>=Lx<Wp+^^1XWF{wsCo27Sk|G6+5z(3Qe} zz81X*B^xl;drDCVJ~L}w2NL&btM~YgDo^3!V|>)cZ7A3VS<B#7bBPOSP$i<iC&EQq z(gFoLp_mnS#mFE~frEHkR@>Q~It)SR@`j2b0H#H`?KvjA;=38R`%KqzqiOL!`N0<N zk;*r<)lj+etrv;E#O&*4l_%GH{2}f&4im68ev|Qetii7ZkL0}<Fuo>%eSLW^`;9mJ z##@a?`ZXTw=QA1u1#kND8UY^efSf+W@t~m5fk69>W7_IwpRvo=_;o*j!CU^kw|sd! zAoG<E-JyJK-0R-AsxP88v^x}jJ7h_tj*s_!I23;Wpij$6KR8mm*7YcyebTA=<M-~X zUf_Ek(x4q7km`ogi7!uu^E=-PuvD@iV5y9a_x(K!9D?!mn$dP4WaoT&U;CY{2emBM znM}coT<haHlgiH_@3D&S2AnVZz3)};b~d)X(M@?mZndw`rp5jU5||62uzq()$|ULG zZIsh@BZ161h{_g4TAX<;diYZi^`supw5qFN=5kVyc2K*v@gNe1kXVCD_in9h6|p4= zAM0Th6zj!Z0A2NcmP$IrA>SzYv{k4AS^TNTugOq4)W;_kd}`y;Us@bm0md};NO66z z2HDl()LNnG2p*Dl2*_!%jo>uOR^~#hN)N9g2SQa|YQ!Uxh-|aDBolDKA!M@xW*JHy zN+ufQT1o>fj$9}U*?sn!x%?!5M!;pJQ?QtZBlP%HE-K%F0tfDef-|9@2=$4HY-acg zg|8T4E`7QIuSS`VKV6G^Y?~J2o;|cwgl5o#!1OSpAq_=7p$g*L^-n({$}ITQ7x~;7 zgz7(PW=YU^y{$yFbE@D&GSbNO=<$+Lz44!?=;>9mSRzL{e1`uChneZoqQ51X5Qg+3 zvg%8q#_Zd5+<)E?edU<AKYxPhio_ZgJ>_eHcV5b8&2B$*+%hA`lhg0C8bP6sN4Lv+ zrnc;Sur(DYi$tkKUSyf4LB$Da6>JL{?QL_F3|!tGW4CvYHtw+Vkavr=>@xU3BZN{% z-qAd~@EzXa)5d+_Jg|5lo4PSEo&oXDx(u|7#nWRBVtmd-D_75PU%CznZlAZ7scQ9` zK(-1~7G5g+npH8!2(uy%RpAv8b`hh@r6%uIkFxk<Mx1vdkhjA)fNsHPE@;ndHdmM- zc=6}$)K+gWHn6)meAGCWx53$D`r{c;oC)snnd`_%)VN?7)c(DeB)86j+maz36OKO3 z$-uv;olUHp*a;!*UCV-};{GOGH(G2`$>dXG%Z?L|L3;cxG~;-=bH|Cp@3#KkCSxvi zUXN+fD#USUgY(6FP*-`UCD6@?E!pdOxQs7^PIu{{EmZ2R91KTVr91Mmv+^{wwpRFn zAUkEyJD>b^8TOBz6?@wDT4I$D?sPGHMMK-WR=y8PogLU~(c^bIOP{^G^$rw@rSl#6 z%n~o12Smz7OYzLlgwA*C)I|9u=VvN7;s1*KO!;>C@m*szXJIq~BeHQ&RFS^;lN@v! zEi83d+Aucj#!7a6W<&=I#&#O948hz_gO#8Wq{m0PXxkwkx*r0`Fd5L`@~1z3e=S0@ zJN_gPpOF@bedsqHVVeksztrkCvMn}12j6M{&}`U*V6<ma)27Ey-vrHNp<<EH(29!& zQm|9X!kezw^t`Ql<B>EY`hbfZ4Z{*X?`t(56*PcPpf(>PikCw5NJiZPs}xrMB;T7W z?q|C*CdLqfmHdZhgp-NL5$I6#MiknzHOPn1qilymbcqHWe)9zug72^FT>}M&M7-!r z1)V;0%zmQ-YTt)^!gve@RJIq{-hD=ccl+I0-UB}ESDUo)2LjO#{aWA+@Am2}?=heD z@Fp#E3|K%5G?T0l3UTu&<KZ~xv7?L?aTf>-qL&GHKdW4-FW$t;>e@IXN75?>MUFrR zfvU$%u}qL!3PM{;#G~jD@kkjE>hAm2)6x24G+oQ@)qKoK1ZAJm>P$S=^6de5Mpc~+ zZSF2r)yipwY)6((ISi}3$d)2ZB`p4g^5D8zldl^k9-CqzD5O~+=tT>@gF1G)RzCm< z!;XUM1*8qV$wN{n+q+o{wXl$(Hwt4t1FHuMy;^0IBh~=JGM+_mLURjh@T0LKfkG0= z8gJNou$jw4@#h<mECxq$SR+grsYp=pqImG^Ge$QEq9R8yKJ={my%rk*!hGg6rLmn0 ze}*}#r+9+<?&UsH6Sci-AM8JbL*eP3OwbG(PYpJHcuLUuPTM7lf3rQsBcR^%BV-Gq ztX3%VgR#|nxY{GMk`u(VIK{Z>^4z_#^+E));=z!Yi85$%VGfn4#aX$EW{Y0r0R_); zH3VDBqJ=`WR`)LI$vhL9ef1mQMGud3nU6<m;f#E9rM9d=RPR+8mQu9eI0^-2RZhqh zb&-7D&#KO9y9({i@7=4#>k)!=0=Qzh-#DRY_r=GhVbUJnW<*8fShS-xELfz}(!p2$ zj14H~(pF9hMZPdU$;5D8zme2oMAF01_GonJm{p{A5?X&dGTnLx0*P542yGH$Dgrrn z?G>eAWx)`g7tF>a`kaZI*jKUBxqCl2dHg}Ua+fG6^jcbd1I9tl;2>#_>7JS4JynbT zh8Q$Mazvttge9=-L88VEs&DCLfo=vfOs{u%<=)l>c;PpG%ic3yndUP-@j>6YlTN6G zX~s>+2dLO~fH$h7WFQBEiq_!>F8UYWHP5k`$Q6_@=pqzibM){K^CyfRERPAOr4!<Z zraer9X!Tzs40M29O)d`-K|6w-ky>Eriwix^kwKIN1FUR3UYAEJb9tmHFq+q`4z#A4 zU5Kgf&kSUI21X!t4mle%pRL8ib4Z>M+4PQr;b$8x@HuucA~!zsMPkrukNMcT!?5Fo zxhAZEpp|@tR`O}*dckK(vt)>tMFvkUa9F1rT|J|MwV+-5u%xMJ2H#}B(-s%A0XNj2 zkzex}_UM9wuH<2knu&>1^kYVX#Z#s)@(E@$dqkXjF&|H;CaOXL=UbT|pYQmj@~~Nk z33K%vJs!XiNX>3lG&;&`IaT!ZaGF1TeXJId2E51b9uSDnOG94LI35JUn_%h(MCswR zF^)vcq(~s({iO2!fN@;pNRPNYE^uImH{huG6Q*K0wq6Wn%<ftC!O|v*DGTPvuDz(X zWe=fww7!QQkq@?B%OA4SIus?O=ELZ(4>dT0#xbAqa>!^(tkh}n>qYLDXt8FbWliAT zwp<uv{s~vt37lOePfW#ZW_d7Gqgftb+}9ECz8o+nyY%n@pONL)%H9ZuU)H^U*OvVr zG3qE|l;)R6mOV5_U*12FcTr3QZv**|2*%n^xn$w*AyfsHhTkWSyErHbp;^4q=9c|t zhoh>87OO=nG)U$BLXTHFtDs1Hf~)1wQ^&PjEGe(ucu<?X;h@(4$l{I;R8I9)-(Pw6 zJ?}iCIbNbOgjzYmF#a{i=`MnMvO~MPQM;!WiTj)<j6FW*9&Popfb$)86WZ$SoT)g! zVTyj|D@gn9I);1$oy&&-V_`<XD9;QSv$6ul)NG$IE5~O{@ZepG&nWHdGbX$7oQvmA zaPN<MJMP>B_!9R*8(WC}!dd0{(AeYLh4lT->ph<^d0;JmXUNkI*80-fdK_F4ge5TF z7S!vr!Wfbky%3;KVWQp@=Eq{59z7dq*O_roB1u&ws-$ZrH6$vjOBJ>D0_*vVuYJZ* z5cXc{YNpC7VY3cK!%Wvhv4(};HM1YYQ0sCw?>HhR^HJ8V!*o4JvxGMPTdp$u=~zdH z;+dQ2LvP&MBb2u_cF1pD-_r%#D(Hu12DEE-9`H+Ds)GS73ms6yOrMs!k3Yxwv!6c) z`12OVH*<7fzd63}fOZLX2T+ZHc(xNYeaQwtwrJ?sjvwwq+}H>|<K0?zgZ85aOz$Q) z9MG<9hAP%}hRu`@Z_<-Tp;;3Bf@rQnb0peIG#~X)B;PdqyzOuvMeLVs>x_N!`&w)g zJ3EZE3-b|Zqw%h``XGE>$a28_4S)^W>Wy$Bf=jmG-a-iXBPPt>EG%S{8~w(+*g-of zAh2#j&eU>W#{Xte@-qH69nh|CM6q4IL0hr}>EhL^fd7gA&!m@k;RU(6{sZW%fq)zL zl2|L~<jv4zyNm?~^3%FthI1Vo+~T49HMVHut}w1x?B#<t&S^OP=BWh@FruXe(~LB~ z*@q817xuf(+IMW?=;IJ$brae=Y$HlsJ_wFrWp~Q}t&f2*<@lTE5;2d(>8-V;sGD+c zXrgDTZmjpLLkhaF)>A9)A<rz>Lh+j~a=n0Fs8o*}!|N5Em3Xby>)7Dc<55ooHh{S? zh5fB8)gL!GicqDPq=<bj^iokzGsH+NFMf1~C%>oohV4C);L@fud^`5DZSPqCUEXsK z8au64KiT9!@-qGA$}jZDdO<WcQ1dh34I8h_L&*G{r<U<B7r2MwPfy0Af(9gY^vB#+ zjd~uV2Lo1_uwR5pyN><OBCP+iKLw5#E!>ir%GSy~x>*6^sGisCL%()BWE6UQnEr*Z z?BNCwL$_Q7#ZP@@(79R1%(tlWFTz-sFt+g!#0B;E{S!d|Vk{+%BI)>2PbMm?DeB3< zjl~Kl5mCaZjWwVHyVIB+3Lluov^)VdOw$UWvX1qps43i76L`xw@bns<aNC4h)at)S zBGBoTlJ77Ai6*E<BvCGE9kAY03op!ksk!zqVzC-N0oGXx)QqlYZJI0Ai%LU@mFwYl za8MQY?<RUztQB>Iv3ar<rK&meDq;(7V2Lkh6zi=xO^X@9o2!7bh$owCmx$yr_JA4J zi@3}cR;Y*9iDmIx&+q6vzTRTa_*yH^k1yw2)J+w(U9b0K;TIdvE#sl43UHz>{i$#u zcwx&Gc!?DZ$f`q>C<+lS3*ofr@*Wt5t2_%kv}g=Y<br-K1!A<aWc0i@L*WmMBM9{% z84J7Ra6YTUiTjHo+>K)g(Vs7wK<Ac%6WATg+hQC!d^CpfrNI}U082WhPEFsyDf}!f z#?nAkQ9(z@xeqa%YK``rFxq3p@85tKQ}Bq@+lX;r8`l&{pYEAzyoydxjP@=M#w<<_ ze2qu39sjC7@725$81?60d=MQf{zIOHS}r!oCx510zFGUpYa-9rzp7onRr^U39#8=b zF(P>u1`4*}5CT&c-wW)^@|uhz+UlmZJ1ze3r(cgP*SzfqM_^X+Q<vX(&rYfzGZXB+ zXZe@9NDB-_1vLGH&zh_RwDI5g^E$NE9hj_uG7nx?^y66dGJl#n$-BdQP!puxk<U#9 zm;?637dgHE(CS|R`}&**{N5c}{cUJ50q4e6-a%XxnE-2qErtSnkzsW-vTQVmOV<iE z3!!zeRk2BB0k*gW&5jSU1=2g677yWFPUpM6(uo6_Z$xU1|LmdXHR<VAlWysK1f2j% zvK-wCxVRit{0{z*x<$+i5m_e{OFfJceM~xbq`Sn#{ifL4;C_+=jz}<P#o1t(h3Fkf zGTxIqJkcAtBuZT(WRmO}dmFfT9Tmx_COOel+7w;E&fUuK3U(WGa{kXf>r&YEwE9uq zTjeRmY#O}|W}-yJKqBk_;>dutVJ)GOTUfzPnAvN2RoK<D+Nf%KKAahdEs2&t<825f zREtP}x<WG1w(nzp!=>HN#0%`Svy%;ZztN(rfMD<XNp3p@!|R`Pfk9#MAcmjN3s^8k z#X{R$|GXbBtX=EH?~A?bFZ_8;KI2PcyS072mD|^UqA!2m2DN>C7|UF%V=?wSvE#le zwhaeeAFI5zI6yF0)v+lkEZ^e4Icl+hGNyOZ7vtKF8#}0sP?xRg1b?C>Henur2otk* z%t_ksxByS!wHuG%>Bt@55&P(e0bJ4mph5e|rCh;-mr!TX&N_>#I%^$^nE)!Bd}J<F z)y?V$NETstHJJ^&ii}xmMAwQ@Vy$2iTHXp+!w0&%iB4nbdcH-UD8_z7!7dwpF&~Y! zf&eZ0M_|~b5le4)A!}oPixU>i*b2-QQH~8bqMT@kJf#&{+qvW`uLW23F_wz=oDsto zTu0@{DuxEe;El>TNCmQus5sgnswyoOCV&Waa14j|wll>1r`YnN#YW;i;${GDq3GWB z$`4ux0L13-S}_)C#&}c@CS(R}dbgf|cbE&bhERYi(gcSm&cl*M4vVi3i+!0?eElZg zlAl`-AO$UUEm|^Jr~yQ?3TEl?2*(UeD6lmI<6a=|F}%Yu5bJ8HZor7yDPN#%gj-sl zM_^+|Yd&b~+?celFMN{%#%5vWTN(R;J-cmw^HFiw6TO>>!an9goTrY77e0bVtHHu} zQ1vx0Q4XVEr$6uW1b>=^_nV;yy0jf_^<j)Muf&)3Cc`%##Ua}AL;m}nwH2oy@;`uE zkJ?vifpNn-hz;-c*bYz@+5y@ulcQZLo1O{lWQ#xHBv>~`%>vzG4yI%NFoBEX(vbNZ zZu0Xy({J9#9EoF1yn;oubv)bDqKh#;mxXthao2Dy+y&cw>;Ck|KVH)2=22A|x5@nn z7XOo^_d0A;#lanoAai^52on!Ja38l~j1yLGflc;`?CQ<jtUiO`UEHzuA832A@kDyt zUyb(06FB5**>NoIfU&#n4}SAjbUKx;VB}aDPamiHLHcy9z8$43cH!HC-exWOJRZ%b zGeJI%@OEQ&J+Il=pw-m_h`X+cmz+Vc$+!4Cair&8I#rz4Eq3!Ugpn?49e74fc6*`l z!zR1EP&^cKjEnpK3(^LUN7<8&HXnYNcc1C?nfZadwyuYFwv#)bxnil+_w84GpYQP3 z;^^)OkL{Xqe&;x}saA^)LrcM-T@#2xCV1W`%8yjVevEfK^_=Pl+rlU-rq7~d@3iw` zMwn?m63NBQ3060scEg3HU*Rzz1A&^L!M1pIFD$Ed=WaFz%f|-G0vF>9hQDfI+E!!* zI~lqsSWTGdvOHKjU;(o~rWCLoIR(QK=epvUnGQF@ml@x1o(r2*b3Bt1{2sz+>eeyJ zE8#x67lI>s(ajwh<*t+N@!^UUuF>YwwGDVP(tLPrE$&?EMQJEi6oTK_CidK~f&p<F z2CstU+{TYj2{}J*J70{m6ew8wDy?jBR~9|jas*}1<=s$yuDNtcDIR0n7VSZ|&o}s! zZ)^4y9E!bNeH&#T^8Mz+9uYA9xX3|4N5Qsn@rmoFs`(JM{R;wS$#Vq_p?K6o3BrK) z>*}*wM}kqrejiq10q?@&IHLx_<eMwo{HFf}hi}(j+NAOK+TwR^^L}0P%-C>rE$QHl z6*2~Y%t2MsU8GLbl{IC{!%7`%Aw&4WC{zDiWPpX8kDV}GQp;odG4arfscn4}y*N6+ z&h^*TcZ>;x265(&9pETNmXGw6Bh13Ts>Jm07Nn;akIuOJWsx95>gIi9FbeHtP^16? zJD^Xn4+fWX$UF$INI=I}0x$Q_d(Hi}{Tj@F+%OR9!Y=9CI(De?^<p5}vR&xRxu!$T z!9UE&1l9nopi{hOspv(5=7=H~j%-SZ2Q}+ES|ZQ0<8q?Yg6&Hl`H0!|+di@OZ#zfs zd+Xr{y#-MNAul$_zk`Ct*?5F!hG=9l8mP6-{C(cnD|ZC6)sKrL1Lnh`@nes~pSL?; zwEFV4`Hii9Omu_<kI{t1KwcA|!zaL@LVl;5@;e8N144dhhqYkX?$6tvx5r<M3?ge; z5Hi^1_wKCDWFAY)!rMn0nact=sP=o0Ro~?ME5@UavTz3k0$38Ie&=>98?bg30y^X4 zCC>?g4hra?dA0TJEMLF#i@XDf3?}OvU1i=K72k0l^X{&0aW>k($~IeZ_>I<p@fHhZ zSsRiqgESFnn&2}>qnI1__u~c}b~8kAh9Go=DhA0R<HQIf^H=65J&5H)r^l5c?;ABA z3D20Q@ow9pG!DmIXB>Xdd+czt7N3LlVczcesE*c~;8Og_#oMmE26(fT2I8<w2Z<dF z+^X}FyYXbR34##VsvKb>bR`NYhNfVR!UYYjw~Jmh&u`v_#grOCTAxIcIH7IrgSYhk zAG?OH{cvEfdk+pYpK=zKxKAy-;Cp8lPW?mQ!r$+?sBrA+g2D;K!wSoP5-hx6)zyXT z?wejX>DC2>b-!9%c>J`V7T)i=zi{?_4;NnX(xZh}KJe$l`}@66_~Gnrg-_J(E*yN@ zhlP&@4;I!fbq;Dc+-p#e&(9ci`(1qpH9UIJpdoh^40<bl*q|Fj!9m5-t{(K)@zVz# zzi`2zpDtQFXvqi0psF|T8x))V@Sq>oKRRgOv_B8Jux0(AcLr=5^mpIxLB0VW4!S1o z;GktQorA}}+H3Gv8_yWLvaIjmmdc9;UopC1aK+zB2H)5xIC#eSR}cPs=Jdhq-km@A zp{o`T?)$tkc>a_34PHI?;lYb<cy#cf%l<sLY0dh<A0FH~*qOe2@YJ>s2A})<fx*8i zbq;BJwAYX?R-Q3rTfe?T&JA2NWZ0PnL(YAmWXQbT`jFpzFlor)ZQ&utL-U8MzHIT3 z7w<EMR7CC@@^Qw)LtgCv=#bGz*9=*-X#J2A>$VOVz3KHK_dWK(kRuBY3~BhDv*`Zn zUPVW5J)@|{fpdy(%D$-R>i6=C-ngNp=)Pa*MF)O2sc7I&!bNi@%rDy2b8*ovKQ@Z) znS5W-C2#+tsMqmFie_zIQ&c=+eNkTZ)}mFh*Nfhq@j+2b{{uy>Upl;_uI}aSJ@O3i z4>q0SeddD;y)}Qz_x|Rh67S}zy7#J?le`gs*gLD&e6Mp~t=BWc@c!3j_j&Jn;uqfV z%a3?}cJCVR>8Gvt&K$Ybd)nyNy;ofDf%nsozVLqkRmad%2J{-5pL530KRkHO(C<8b z;n2U_kw3KR^WveWUZf9gx_HvikDcM63pd<0w0M2((AKk!p<B}K8~S$5FNVJS^GAlh zal@LSpYM8p=+hZnht_4hKJ-_6_YLj&t1pIL{|85L^C`WGZ~U}Ru{Qgh;^;jW7JoA` zzxd{L#l_RwMi-a0PAtCRrJIT$zU#K)ng?r(pZlV&_~@Q{i%0+P7sb9GKT>@0C2NZJ zJ^Xy}8GmmoK5P4H#qMA3D;_lYi{eKkj*{R1Bco*HhCU_t6rWS#{NaTq6SMM5rY$Zm z*}7(Q$wz;jSkh8;Q^{+Ex0SqFUR(0uwz`s`PuyG5;Q2+#X73{<u|um%KAQ1-$vyWs zmHgFwtz_+W`$`t|`J&|O8yv%oXEKJp_fVf<X}!-G7C-O8VSjz+@?p1*DIQjO`{-f! z&Y3tYHuR=p=YLi{?2@sy!)ktAH>~cSdxz<Ve?Dw-uSbR**syxokpa&SOTV^h*sW!+ z4ZHsAeZzKaZy$DDkz@EB@r>aEZ|yUD`QGmhzxWH!@Bx3geE3h!EFQkSc=YhH0TYK0 zIWlc{^!Me%mt9ype8Hl+;rp(+clbNoem?x@8^0TV>$26u&pGnk@CVLq8a_~aZTMMx z-XA_J+CF^C8ICLG&&as){t<nyy!7esUHSJ0&y|0!y!^_i-Whu34Cm-8zu$h<m0v$I z?aHsGmS5>`)L!}P-up`(du#kwhthuKx3z_aWmdu#npA&vgn;GCp6VCe8W8rYU?0nF zzY6xTmh|w^ew82gtJ0^?E)+1>&VmiCF6OdCe6=z@o+MlGjp`bou!l7=5noSQpaPZ@ zUw|}{=4Kh+c6lfEVG_oC9Ff?yiF}Oinr>%4#`kV^r9T0KU)`iD>|5!GOUFpVYiuGP zop!y((5_c!e4~5sb*0_WZFD0~V_ZrPWb%JYo3s%&A-$cXbyvh>g1wTidlGStPnFN~ zKO&;!f*pl|Wf^i}!^>mcgg#V>#IEDrPg`o~y;0p6qfYyw_#KU377)vOmh}52h0D9M zd)B3Va?|U2c3VJWSkEk@buvC7riu9Cw9_W-?J2u?X)()4Tf$P`h|}=OZh_CDjms@w z1F?smnl@41V|urzr{C2hMS(Mtf8U1Lj5*T=OrKUUZNU5)b6~S<01T{5o1?6ksr!KN zf{H@>!+*}Cnd5(A(~RZLi$z2mW#kE7q94GWs(w!KmMAWlb?c8C{nI88FVW6%r}#c` zrKF?UYnjBGvDD|K@EhT#|5YRamuR=R{}}%wo>Pg+_J{jI{1cyWI#Gv1v?bi5_$R&w z+hDvzyTJYD_$RJ(XBD6STH@tWnMLqAFkao+E~B_gr$&W%5I@g~-wahOi5J{Eu(aC} zP{Q$_v%Qv)h|}&!S07cigK(z{t&}8C;ED^nzDsvxb_MX%fPcj!_LsX;;QvU0?@xiJ zvR&2(EY)4Q-%Wwjwpn-nFGztG02j8iu=UDI^k=x2r0`FHBjKM0TX2c~3irtpuk9yb ztM7qxW{P+g0q^6$3Q}H0$}yYvs~ncf4a`c>0MLvp9HT<x$N#Wk%FOxmZk;}23LeHz znvmqFKt0pM6Kqt?yQK?2vrY=Izm!&yWP-vT(X?>5^47{Z(<)|6nK`>+!0ZL{r@<Oy z`Md=cQ?7LYnKEbg+!+>(F3fIbYhViFTCmn+H;H6f)siNTgaN84T}(|$n^EC;(`Pt@ z!76m1G`e-$f_d|k3@fQDfh@<2h4@L7T*Zv}<?~b~6g*?Dh*Tv_+f)*g;btr>M;bR( z&YeDI2CIbi#Eab>_S6%)seev^50w34vVXhnp>u5U9F_jry;2<wYgBQaBgZh}-?!lb z8*cZ1YYIGz5#Zv@Ze!?4$$H87OR_&E?#92O$NC(b70-D#yq)7eF8a6Q7t8)TIi4Xl z+)n?36!^Ln_}^0CV&W+2vBzH}yE@Wi$L~vlJ7pJ`>_0CBzTSr0%VC5Zuae8>P8)tc zXj0|;L<;<P3OtKUiHq^u<GC&c{)-g&>nZTTa$HT0zaj<xa0<LecFJUTdQtiPi4CVy z;j85MO#e8ZO5jVV;D{?3e<=mtixU~?-=1zC8*WecDmG4B%&)!OT`K$gWW2$Kdk{v^ z?~>y{vj5p+4qU|T_4RBDd`}8|>IEVi5zobNs&v0ffrl^Z^lwl1r#9T)F9qd%jdU_A zD*kIy;Ah+V4ZHt~Q{Wag);_rt4{BbgW;Vq5ucj`NO$0_<%^P#*2bc1%=9zARcH(MY znwx~Hd2D_XuF_NSklzG7(qEyxD_r@HCgCdn*OG8WPfHT6=s%u>tNex}5h`6(J}Z-O zRh}Ov;cA}TpAq0v@u+!nX%epH$#atMW;tIHY9F?Enq_;)kmHexU(Jg|qW_B@H^MSY zk_{6vl}gvslAqNJRWIt9JWif2Re-!V$O@e-$3^xPOh@sf;xk51TxJh0>-sV&U4=6( z`_&&0jPu)uAB?cwrSD)TfGaVNv>qL9c~`drIJ(P!&QQz8W6~q@&!R}qe-Iecm+SzS zb(PBWMdS*^-EDKz`2+kjyzJfyiL3Nd>#ow1a3VTYjyK{(cj5IE;Z=O<ev1sR+Pg|; zf(*|--+nPIUg}<9bBh=9=T;fsj?t~cDcq1)a`~0Z@Dq|4L(#3mN8#wM{u*TcO^^w) z{x~I3;T8XKEKN!R2-bH4#LaQPbxZsv)6eH*+Ua@n<yMe4WaMmj-@|`$`kXFymwx_0 zD||dD!K6oP9-sd|w?#0xpx_F(xTc<369|n;b9Tn)geCUQCo6sa?v-;1x=Z<k-z>-J zkcH5p*Kl<xen*CH5>(Rg%~;<=XbcEL1kmldF~?kxqZ`@QH|?lG)}+<1L2z?yjybZg zd6%2#oH$stlxq-Ne#jhhHPrLaq7is59_hZjS~thc!U?Fc2YS;H99jnPLAL&-!EnF@ zcfJlS7d`zCLRmaL0O`0wq0inzQhnwm7e3`l@e0-@&pQj=rtnRvaPzhEWgNR*riV9% zs5$a^FkToHL4|w|H23it$xS&SW3TO`4ad^DcFi^%S0Cy;8-xHz^~DIimKu|OA@=54 z0y#pVOTWaD>VYo3^Hn{3*t-WZgIS@q$E&t!&!QBp6TR?GAxXGvFN6djLba9R??U!5 zQ>f&_*nn$A>s%~|MEua5<tLrB=$}N!M)OOM6_@HJK4sGR(P@0D&0L5#T@d+^nl7JW zqmTyGP%39pH=%NVm(MI!4#X$0D$m9D(kgpF)#bWYc(!zhrJLp1so#L_M89d*9p-1G zH@3Ye&x-M_XhFaIlP+yPow;0ULRjC0ZmmK#Er0xO3qCE457=B!tW!6E-~YAgLYIT4 z|0{Hd=Y31vVSNAkkoEoRkU1~^CFVykqEK7}6QhM#&+JXu+9+xTr}c$V06{b+`88Ee z2qa<|JdoOt2n5ADD-=6UKK4}+Qz{%M_{7{`<{S7W*bGPYB<qW?)vy#&9pvYiJoxnG zWy^iV0r%ZroLvXa=<AdOF(>3eR_kItQsk&U4>FJVo|4N4Lj-PoX*0v3M<h&5)J2Uj z-+;E&G8l*A*WG~TWqoPh_Puh7yR?h%KMUD0ST{j$^3{v^h)F~P;dkiciI`tvAB<1S z;#0T~khvu%@p(#o!%2Lu(0GHw4;gI9o!{$0{LPI24V}ta(>;4bcxVY4uZ18Pek258 zsCFoBKSs*Ud9bKb4T+1dbo1(*v5}I`A*BJ?3`@8P(r6X8Q6!_tZ<e{rjJ+ewiBDvW zH4CA9`yLu_urIouV7QTO-eq+zR)Ysk3w85xPpwGfcb+<Nf84WN+$~8#%9XCdGtT=- zO6T{8#)OfGP(7oTgD4Ul=Km=n8$?qu!SE}7b1(%;rgoauaBWRUc+db0Gcp<fbA+_X zL45gWL<XdXA;5-SN6h~$?HiE-WO*UQh!<i3et_O|Awu0J(<3^mlY>CGV2<$Urie?p z1G2&vwUE0KX->sgn80y}I@1$7gs-6P(dwfZiBNK&3Z39~>aXk$nRlZzgGNX}1B!Zb z(9GTwX>~%UMbHR}p%;RfBw^QvAhLvf>(ItQM~Vaz*<prD3wBDKBD{vq%#N8_Hgw^C z1av2UK`$gATK|FqPn0KnWCqPaY%)nCGRw*}vfs6oGCk1LX||-xp~HmekiqVXGt<+V z1*=q<NoXr&Aqd3tplNiiP`J~wp`A3jS^E)hJAi^hX!rErz>ifm=y4tW<>ec6ZFHm1 z-H(rhv~Rms)~G`QRVR0r8m@ceBVa=13iPA2Kr$Jk+i6U#l&_~Yxzg~0DhG2QDVNoH zA!LSF=miZyGjk6Mv$SmoO5}feEj!*w^LST&*80mU&icy_ik2Ps4L$2GJ2+J@9XRlk zQrz9KHfQO#J=@h00r#|c-Ngw_=Q-{ueiKMfe1}M$<4#C>wcFD;9PZ^J_$)?*>kxm$ zIUtWWGXkga05EvkZ2XQ!?<e-zSI`fx?bc1KKOU3r9+H;szqypwF21;gV?K~Of*-Wv z9Q8vPb~5i*;cHv`-V#1{MY_~vZ7?U0WlMTQdX~jqOHcVh?={Z)^kr#jCI}M;ivQs= zyZ^V(>O`F)%bdIOOskgVic8cF?&srQ;2acisk-2lnz&k1i24BLllWAQhqy#p<6ee; z`frf9C}&_d;NLna6pqBtO~TbPu|`ubZk9Nzw97R|JY^)-1nT8&5?9aae!Fn=Jn1y* zE{StiV83d`Lr-CY*N)TupF4Y#8(K*Tq@R>4%fo--OfH6~lJm;ge~|)b`|HmClPT~G zDe$*a;P0itKTd&vngZuitUEesAgw$6bl}~dnTfNTe05qT55n?sTGr(tOah$;Vfj<+ zhhO=&GqXfo;=3_PUyvDOeMSZcUxVoy!k?lP2Vd$VAl8Z3>^bu~zhd*>pL^Xtg$HKh z@JoI)MxKGmqpLX!%JDs#DdEcbx6g3M<2A?}%#{n|Daq$pr~+ZDoOd>Fnx0jAx?>6A zBF;6t!Y2{LmF)l57A$c4p7A?2+<wOLE7Th=#>4#;6~8(|OU7SF;eUqQIG}%SGpcwh zZMZ#OOH$y<-eYpU{+Po5`V=@n)5|M4o<Rh<!K-YzeUJQ?DR8ftbXoDc5ueKMG8=xL z4gXl;90u6;D*s>D{GV^bJ8b^BFQfdQ&9xLR#=~Pag?l7Ua_#X9v*Gr7`Kc`)&KFcX zD{VOUs1*K;4d<j*;osPB9#bj&EZG$&(=$lo$@G_|@Ly*0Z>MvT4d;HEN_UP8x6`k_ zMM-+>d`=}<Udi~j6!@MLxEfE{JovB1b=6lYd@2*d#rYI3h1be>-2%1Y^nfeZx+VO} z$ApZail;%w@0K1It&Bn-);MqR5Aj<0a%GZ#MbG0&xXM>c60Y(^8GBwTT}6+De*0fH zf--8!Zi$FWrR$KaclAP*yLwJ_wjd5X;i*CP7vy24qv})D(?t@O-tc5yMarWB<Xu)n z0__hMy?)#9gAtZ=C5JDS=@;Rh{c_tM;4Z*FX)49P{c4b#{mUiD{Ily(*;4rr0%Q8g zX9EkRN97M*#HI4D?pFitF8p#CKDoYB`syB*;q$HN6ThpZ2exVZ#k6>-JNaI@#S8iK zf=a*+cH?)k#AGu~_->HlbCV)Zj<yORx-0()azEQ%{_N*ecvY@kUnJK(iD=>AfXlRQ ziQgo0MBbBWr{{%IR%5D+oP8<NOirK4beH}cVuu6rB}oY;J>p|~3v4F?Zuh^mQ+&mc zEAs!%vw`-@K%~4%#k~~GJ5%UMs@+V>s@BWczk}Y<0PdjV`?13a8x(=8pgD;r0B$Hy z=7dZ)lwzQb)Bueb=+ZXp+V~B=O9KulQ`bk3J4?A324``SFf#5h=@5YL@NxK#7j9<q zE&QQnT9{zK&J=V<wfaX9)ErpQ5IY2I-hS4evY8o)ZNpwRb~}+!RXcvPXg_%LnWHk9 z-kESS9ygS?Gs?p63F8wYa_kZ2mW5wqK8nhy8rBS$oA}s7!6uVs!HbrIb=c`>+?x*5 zuB0VL$7U)DC%OaPg}UcY;Rt%$wEAUm;7}qH`laHzhA&JPRJdF#1F@=@yJAw%yc%T` zqRBKDY%Y|D9sMiChMga<n+A_^;lSBQ1$4f&)vpKBCt(8^W`;x58nns<2P@QQ$_P;r ztYRScXR${M10deFYL*0{>B`iXO~e)u^j?t_=#h=er2bf`w(Ja`pbs0Ule>IyUfDe} zt3et}>Lw-GHN{438Ry*nJTjAyDq~J!4cP93X;i94wfzSAL<`_Z=-CS0;Gl7whBSA9 ze~Msyjq0_z39U%2{$5lRw3wtF%Sg#$XXGs!Sb-I~%{A?@ot<8z6h4$h{!=#xh@E3I zkc~aIEL2b?HjgvFZIY=@fXSdDCJK)G!CAq^f2L#48k$+GPPbK}C{3C_HlQ<?7BY^> zVuo)d6oB25R#YW7TTwJ_?8WMh$F3|3)0&ok_$b06&B3(yi9F??t};X6{ZPq*hFw|g zQ1#r9c>%00#SjIQ?qKfHPi@V@%#mhxCKP!K4&)v1d3XA?&`v#a)LC)4*d<r`cxLw3 zP&YhvgqeM6!f!MDZlF@6?mb%bkDwDx61K^NBHOz)k6@cNvtVbequPz~_ZP2tz>N;5 z=2U-i^Z_?|tZFot4N&geU-<!ZlQYK1K0%$u5Ns@DY0CoO4^g&yWRwm?Mz-n5rXt&! zSr<E0N{^bAYuSYEtXndzR{yb8uP`%}xfq&%6}>}d<_0}{0yfM-M&>cAh8t@37JN#B zbKFj6qPehSN4wBQp$Gb^>AH!N#w@>iS2n7wuWpXaxHMh$BC!3nS=1M-CE=yoIW7x- zN>k!lLD-Np`(khQ#;s+>XFM5j!)_~8KB0Aw&Ejp?EZ!zIopCnEG(}tmhsGHGPtovj zlGp^}dY0|Ep!XkDZ?XNm@#bqkN*X3!u#cXj)qjP`4WXau8;IXQ%U@#fA<v4@xh(v5 z`p)sE7lQ*rP~FVJnF-huhW*mPkg$0dC3`?^yx<TzmFf{JgbbWZ?i^>ja>`(-q+c!H z<75ZMG+oPKU8P`a-d5OV4z;sBolPO{&Z_sZwN0}QIBe{{m4==URbOoNlf`Qzf(<kn zS|u021k~x??KPs~q!rco#+Vbo54BHP65N;(@_IaD4A&*vvN>c2^dVVJ(9_q+?oY4; zYzSs)OLGOYu(l$lU>5L6S7WO)mqWk)BO8y<kZ$5A21CfCmDACET$qcT=|%t~i}Aw< zAdi!v;hIn7%1MuNaOq|!DaW9UCJFPImFr+mLpS0JLC@j4A2$MPU>W5VuG#d+-gZ52 zQz%~HfvV@n?L6DP+MKk;_(C^ssMF2=Vvvw=>nb$mpz%%I-^Ut^4xd2BhE5-+b)vn7 zjE|Ky&as9|G?<|Gy{eWn;}hMy0e0$cUFA2g%7kext^N)2aJX!ZZpIipJ7hgPX`S9A z>~gRcL&l6%V#qS$G(io|kLyOPoKE9`$>IjfJS_Pa_#XXF7;$RP#)V-IQ^aE_?y?7J z3e+)DYmC~9a$M&(0*@gqePf_1Cq0oD7%yVlFIrfjPWQ$bw^q+>DI9k_7BU|o1!cw& z#8}H1*>oZ=Fb@d#6q7I~A*(ZLp~j1$=>d}XJVHBYH>k{b-)C$>b*&Nl+@}BCBS9Q` zj4@qMAa-R0V$(7HO%0mYxUHcN1!9(D@j!d5o?eN<nzYhHF~H)5o?h`5PVHhkq7NDI zQgM5r2se0I)iDW!8pl8Dy=lES#ruk>9126;U0Uoecn=uw>ybb$7&B0ZuB@z9_r_TY zT0OV=(6J{9VOh3F<ZC@5$`+?vBQanKx3=tdF_g*n2@ajKb-F$<TQIE_dxkN^XS{Kp zb?oVzas$pKOIhBc+$;;LT74DbKxe`p2&~dJP_=ho@u-};|EQZ|t%0<0j2YT@1fwZh zpSR*Zw#QKMBdit}dou4r5A_*1gaspdDIs7X9xI=1od&eb_$p}ZZtX2n`?`!>R};?K z%8*gPY1*=na2C}19TmZH48+x!LuXpqe;#G_HDHaUqW3tn@Ago*83W5Wqwh|dKMHua z*6fWnRAv@5be>&?Os;qwMq}$4*hZMyO?=siZ|Ap&Zv%||%v?^{lmjnLKoXs%UB&pw z&kvxtkwPiDnT?4ej2#6stP^T{Aj2Gyts7@zyy$O0cp^NaZ_un0q9x%fPk-GQn}t52 z6piK--HGGCkvS%sCHh?a=ZeCm-Bb7*34YD?a9#!;hS6ImdL2CUhh-{SsQMHl9*9T? zs)+f7)!&XXr(fX~roH!SQ86!sWm$~-7)fX_0;=hQy{&rq8!hyTAecERGmeJR$5NOE z^^D{~a9I<+5N3o~f&^>onC%G~PGQg6r~P)*f=hIBfqRTuG8{H4Xq*-{Q=f9Pna2xn zr?rP*`Wov4424bXbugdWN>i|*VoYYV*bl%A7?5(CMv8?PEmxdic?<g)iZ5V>vcl7! zfl)j)Uj)M^{KkS@V{9f4fzw5CVXz5u`ZO|MtLM%K&DZ8)ki!U<)+y_OPSm``5^bO{ zpj>pO{{+8P-vn!~exn`3FM9HVLx;c7!&@=T=Z`Zp_qLth86JTlE25*1!Z$B43B&YD zH@4FiG#bz+H3kgVpJ^YJ=CII99sb74X{OOwv)OMh$o0kj9@@#nq;gAjuaJ3Hek;v~ zSR<F+0`^N8<m$1RRw;-K%G|YHfB*&CTDPH%fj_T)jw3zgroIv8Z@#)pH-|v_$O>Xs zW{CF+fZ5(G1=y?s1I~Vq+cWTIgM;D9zS4TF6<+}UP|jNY%kUeF-{2M&T|dM;&m0&# zWVCD1^>~3fbV9a98YqbzgURq!OdxznS|he%?6j1kNHhluOUihJtr=xc*i6TavY{e# zxzQMT-|5^A9{$Sb-0ee2QaB{wosq3AV~58nM}ZG{D0q8Z-1CeJNeaFXhSz?dEUB`? zP@;%J-VZAGsoCYm<)n{+6g92)AX1whQ{P047+gj`T#Dh%(HU4un4{g*7l79aK1C~V zcM+0ub6tcH*n3Mx%|6WKM55-%T=aV$5yEP(<TdzYaQYU$ytm}mV102{zIc*CR_uzj z*nRjFLRNExkX1!jA*-PjvbvB$RuEcwkD250LD)GF-)ZQCtnVxcTe6U~+L<hCwZ2o< z3XyE=B51XwtC-cDC?_RgHC}v}L6kenqKj;m8yh75SIAcN`<Aj**CfV)uU=$k$O>XW zpjeTpDBZj+KWJ=uk?j&}MCl_bOC^z@(L;DtK7z(5%LBT%7iBB-8KbPOmso}s6R>O% z5OPnAc<8Iut;U;xISP%kL96F?-pk^1(I{!|+Ttr=IA1Zd{4`F&l0S^*SCwnAIz)n9 zjkkTq4UURFRygA=un$a%w6UEvv7OPvcfdO{yXJA&E3BUHi;wQWN+RwNBTrk7S|1qE zb4AyW_JyWZF-8$D319RsWW>;Gh(~mL7-`y7>+?<7xco&9=ZaofyV-#`aIcN6H-Ni* z<~Xdpu%<KTyJ4I8FC=5S&s@Uf(3}3AI|0!RLVj#v4yJVv`r<YC&;zA}+J+?NJLZZW z9tPO0)z3$yVo;;iCD{K7nk$+`@E=0_Op9KH*E&8T^*52I`0`P7yA?gAG-5L;A6_v2 z`pnz2VY4Z&JB2h>n^@uM-t85c+UhOdrn}o)dy;-*RL=6&47gB1trVRR`x8bpMw|pw z!FpNblUcO?g@uk6%eM@ahvRSusvJ8DTK!)z`s?9Wv5eu&yYc-rO4DR@_P2iXh6$KV zPli!7bH>EPo&_DbjERnXIs%YngS&`s-;N_bto*g;yLjNIF;KFV0pk@t+!Tl}=<x0M zCKR6-Io@_2#vAW0*u>e5&9z47?qCEmmf<~q=iXR{;a}md@cNAwn3478?e(Rn$^DO` z#s=6Hbnf(d8>)NxjSYDl;uFv4Km-S4I~T1f*xB~9n6HMnaQ%SEEw=B*WCbHo6xHfq z1U<1s3(v-)={uZml)|=Y)SZ_d5z~mqnlD&25a#>bhYbXarC^sc3(Ld|e=)WpwCGPz z*SdMPqxAzZiB`FL2w8(M^7t(supfq;;nP{x{MzT;i2QAKZV5(Ok+-H8z7BvSwdi%M zH?t3OXTVb2KBL*6*WhgMd7GK5hP>vu-(lsdVG*oMwY^}qBVVM=$#O15PDJ7BbYM1f z!(_tj%>_JJ!09(k)FXFiAm=><n>6^I!<~ErNx??c*{15t3Shdgy06-&GW{z`FLm9| zB{=pwolV{yHJ|vsd#a}RBF8!^u0`>b7IdJ}YQCpq>QTD9iRoZ<(BMLenOS&K{R!6M z?(|8MAyIeuEn#@6IFMmXTwhxC)7BbMYM3|Tr3t9*ABlY-#O5=O`Hhdotdpy9ovvKE zCeW2n*JQeiS}TwXJW+0PmaVySer>US(D)Lg>f%pUg5N_FG^8w9+%kGAtl@#ptNvOG z+Br3yirrNVZF__d4A%kk#_Te)2i`2?0zPQo4nuhmH^T>u;Ooz|xce~M%j7QWGOpU& zxm8kC7T$(Rge4`kC1V4pyX7I{VNV@WL7O}bOR&NC53#AX!o!5ozaW8GW2DVf-(SI6 zFh_;YZ@iC>vf-6mhuNrETKpWOP{yw)Y^4XJTNR4;{|DR-aRN_cll4#FiGrb+8otS0 zLF{Bh#4u#Eu|t{~G(M$qr&%Fvkd=pE&$1TYDc?!bxHCFI@#|Q#s^v&9astcC!hY44 z>T#b_OsUj+Oi8~AdYh_UdO9cHFsY9LCFDI&^>L8<LAv*j419zDIpH2tnfH~-Cz)n0 zQ_qJqEBAzTVdRUuPUT?C9MmNDvlr^|v9RTC<%>0qPAkOhut6dXB)m&UV=QOMfD0%( zh>;M4GcU*t_$8R$Lu_C_CIA?HLKl!`m1TayUw~zaReWyc=~ioZuGqAkbsh^XaaT+U zg2mms*vuA=Of2cQRp|6u%6&xGS!)nxsZaoK0bJ-eV6htHWVO`7xD+}ZRBRAE2IO)9 zVwcb}#>~D%cSc`ZPO_}6ZR|+x(w6c&R22UOkB7kH-j}s#FEkMDPvwfO${dtphK|TY z`jd6<L{F|3%VIFW8cVtQ4MJctlRKWM7j5YiKp>GzzVCiN9PNymDH0vMT$g2vQwcfU z5C+}QYa&~siGen3IwDwWE|&=6O3cTx1Bw~TZp(t3vAz0IboblPzXZ(eTCq+JnSD2e z!aK0u=DM3T>GL*X-My{S1^PAy@tvMlez!-B_t%t#kNU1IGqzCRJZSt48*Z>Kco>Or zqdf<P$FR|j9a3N8r~Q1+%@|9tF&YF{a;K$*tiXj6$VGESMOWXVHUngT94T4i44NgI zf{`~nU`D+9JglWe=V!e)3m+m^`;5Z6kn?EJ`+5yNh=$E*Z&S@CM!2owdn}a+{3J|< zXtBESF6S2!Eblr0u=PeH=Kr79wclC>HiQD9%n`3)=+|s^UjmeY9g(ovBkk-gccyQq zp`DQ@naI>NXBHc%I8^7dy}-8#jTjGPR?7m#6>P*`3)Q1l94s4*$H)?MfSLC`sDv zc9F`{zd>9lTSY?n{`gn&55MAJsjqj|lC+Vh_ZYjhNBop}*Rphfq-Xlxv{N&CLSWaD zqbnr+xW-vGAzP;>VWjbTiTyG`<Ct!23k5CPP37q!nu0o+NZ)BCi0d&K*9_iKcJ*nn z#}rRTT`YCM*3*(x5HQjsy%1H9>$4e>8UdR92+|_MUn;{dg%EJgl5}{DxYC|DwRaBk z4WZ#6Ws;?P6eW|Tn`VkcKJ%FuT-&Xis0+Wu$`bkPwC&W%CnBGr-V@RXl1)y|=Llij zX}OH+L?W*4>`n=u^Y>omO#eq(_e?_meMiPMjrE$uZ-OomA#HJu?%muc{Rk@{1^==w z^p}U}LFQe^ao+_AX&;OxWr#8k$@hQbdy$^7{ngoCM0%rH-=lj^Nc(lSl>e_~t^e~z zkp4USN2Of1;u38K_e}g#=6SCaIuZ2<j7wmFe+Ld+qE2w9j7)d3&_w^gAY)t%I%&T~ zU81kV1KWR=0&VvjQ{eMc;ART^m%y2BspN6drvm#!3jb@Qe>Y}OyhOi=`}6qkj!yD0 z<KK%jTwbcLdlT;N{C@$Q{_}Ch$4mJ?0e5%)&q9&Wf35T{`bhYtOiFkDxkcO^ez}at zEoE9n|A=_JDg2L?{+Cl|3YX{)ap%XRyNmxi>A!(OHn>#3_hS{03?%wKyuUp~JQP3a zF8&8)JQFBri%aw^xc^q-t0XS^6yR%s+hw*(f$`cR@lx@GO+tBpN8+_fxMNCwfwYF? zkS2S|r@<Hy;F<I0-!X0ebju)7{($hjxeF@F=g%vL%_3o(2x383DB187V%k%bK_FNe zx+SG8qT6quGHv>Fhw@9~LDOdldqN_K@SJH27ARS4AO%w_WXhBU71I!Hc-AdbW=@+u zhjK~<34%_J%}NEH5>n{hBzgM+L5uJu%sGWE6G>87T;Rf(lafHcWB%-l8A3$LE*B38 zc^f7~<3&&@7_R~g@pU_;(r6O=!YGwh{*31e`@`(%l{2pBDu@m*L<_n_^Sh!J11yq! zz;1vntz>X11;dLt`BdR9*}o8{Je$I|+i-h4AEdyK*l>!^sdyff{ZTSK&q|!ZxHYK! zf0@Gnsp2@$qTe3BCS^>M<Nvwr*NEHm^|lS?P^HqnK=xC7O;a}tS9X?&v#Bclx6(i3 zKgWh2PJ!RU2^Owo{}*vUl{n`hD*kIy;5}tO$aw7jhuZLSZSjmvf!~w@Uz7s>X$t(E z6!>Q;@O0TPlYTp$H>AL;QsB?oaJMbLJ5%6CQs6ygzfXGX@vN4ed2)Siwc!`o(tRTZ z-kJjcCI#My%!-TY+T#zVz^_e#Z%={0X~WM$8j9bJ+HiZi{iWR+(&MrDKUa=h$@qIV z+}>~KDa!e}6nHON`M7QAo|OWJ7jdzh`@VGZmLc85&zElAWHgweSUNoF73Z<Mh@U51 z){k4diBlIvUAfXhTuzAvl5fK=l5XCLY`AP90x7lOcKSKb<i+^y^iL3|g;NJfU6ZAQ z{?Ah&?o*|kxSjr4He6P<K+0|Sh0@L2LL2^F8(wF_?Q|};;dVM#+HgCat8BQP&UH3C zN4j})OE<?6=1pCSeub-f^m^$*;cC8|Ap<L1t$T`+a5Y~}wkxIP#Z!~~tNHKaNw}KN zev*W%d21mF!KLU?^HV(uU!G<8TakqCmCU#|8JFv`{B$dvieJr7l`e_G)%?`*{q29< z2+FL=<zynFQt6swXAWR8TM2(0W7*e~CJ@W9QZnZezQn~g#dI?GfJ^ZT+aPh7ZN3uM z<4Nf%Tt=rJ#Xb__{I=m!>54SS^cxZ>Sq^v7a{->a%m4CAERRPdA2I)&DkbNCBrtlh z_fdFs)Usf4DgV|}=d;2m;043yD-ZHsC&SzOEWVQDB<|PRFd0<b9+Bbg7~Lwo!skj% zva^C6kIC@MlPX5htvt?#qr38}>u>p(B@<-%aSErxEB@i|n3RMFSR^~Ch2p96Cz*ae zC(};fYh?I#89ApZq#-$d&Of_Lf7Jzef$Kn0f=Q2#Tc?$m&z^g8Lf_+G>U!i48DtrP z`k&i@a@YpCQbAQI+VSZQC9506fdLK^aD;FWM+gf~lF%KEbFrxzx>;L?z&!uKNmXDu zgm8)ikRx+J1Qep3t_?w)Qn`%LI?wGOX&HCD&WR*H&LZv<%#G}`gmXh4P0xD`hurdB z#XF81-f!3Aco&4fVC0|h|9(5ZtfU)dtF-zj8JSsGr&|(;ki-iacdvw*i{&AstTtpk zKyf4?PD*j$9gv%>e9Sr%#wUIL<bqJ-I*39bhBbP4MZ^WB)5Fnw`Gu&UIes!SumwkY zJ31!duxZjNokB)sD<PG+UwZ(~NsnpI;+%ej;rc_+>;b8vmKGMIFCL(r299j}9#_pn zA&8tps+NR+u9fEVQKW)1ma8DUp^RGz0lO#zBmEWWb%Kti>2+YNU_ASwU_5h~-~1lV zEGu!O>I_f_t0|3K)8ynY4qNaA+xE(h6adre-v)$YSQ9jGruu1_@hZ>k`LS3R1(Roj zv#FKP0K(R^^~Ohdtn($jt}ga_=R{nUZ4fYD91J(}BU04+^fkHeV>&^zw~wcaW@cm1 z$lPNOTC+JAzTZ!}%}T3C*)Z_Ib_ya!AIwEg@CN+hYShhfQ(3AZ1Ah-t{5WL%7o}UF za?vpXCxF(2DPBPk-R1XQsx2#l2dnIG`mfc+5jiU!2hR9fwchyIm5?8<(|4SJxPTrz z#M-n<F&Yu2XlBB&QFcT11V{z+V|i$oZ`YP^!wO&bgrs~Q*F7u-lw!qYkmh$ShVd2L zGw-=$x9~~R+sgWv@>#hXXLg__($P^_=feS)ivmEu7L>7DM<vX7j4VlZG-s?r3s|#U z@*P`8*_xnPgA@O?it(PZ81K6%ox_4HT@VG%+&|XL{-k39PVy@s^Tj6#-ZDqIyc?>X zrozpa)mJb9q*L%V*bqmhW6Z+bpgF3D=b%B;--JW@1280JF{k%>Fy$T|$J!*AE3Z$I zUhb4-Vcjz?tsOWcMSew5sghXS+N5L?ByN@EV)3zZ@L21|2qh9$XW>3&7mLawy79U= zD8DK)93M@tM;R;WD2rHgu#y9`2}DBLh)qZYWPw+n9PC-)Ap>ONl=0-C5c|6;82=?1 z1H~p~L|A`9zA+oZL=~E%SISQ6;itL$QbJLpwuSHS(s!TE@=Ew0C?sMmyICSP0q>I} ztLA}%L(g$^>5QufJ`7l0Bsr*hAjHR9)DWtLCm5QlbR-I4qYwbI%0^V=`#!S=ax*SO zQ6z|fmO2o*%(w6cx?L<RiTNNyrf|OvPe@`0ycgB1SI4m%sSNeG@SjxZ%S_aJ=iAmi zv`(uW)%alz9*aNWoLo2mvJP4Cn^W{|#u44Pd!24PGl4yTS)LeD!dGJu2`mqq;~<vt zUt4*^A9q=!M!fKK77d1gx`b-SM9;+>A<&~xI6}}I4Bw6(o{<YJ0Sp6{kg~$@RoDau zKkSL1BZp7FT51>QT>|FSF2AV~k8#MN)h{0{Y6-mnnLI?!*FlEKbFpsfXm;;|j53Tu zRy^Sy)abHQ7<BXD-MN?=Kz_dn$?0b|1j9eb)DJha+l=f@)17cZw}C?G<_~94Fx?mz z0t&GJ3?j@LDCJn9)&Cw-A6giE*>Ajou1fScjV=BBPCi}80@`r|dQf7rM^z9IRJNSL z9e8~iU!!<ep<h}D!5fJ7L(*JmodofHGmM?IRyb4J9cy60o8opMlC7adF?=$5<TpE7 zgshmQu>y4?d>{IHK|{h47Ze1t8=zR#uH|k)kFgnr7C@Kh@*uOTAmly9><a?>{MTM2 zA?poZ9%;v;tZ_U((TqpjpK%~{i*>EgV-5c|QbW`f+7AK9T$Do8Hh`9lFW-eI`&3zr z(fSyQv`z-KIDrLWybBQ%Xs5t4<X{@JR1YZ;j8&|Jc-0m+yo%6fI!aEEhhh~}OWr`i zuEZ-rs#Qo@mY~-vtjO1CvhJ*6njBbjQW-TPi)Z3%)qS%6s@2o(lx`{F=%Q|iiRy}1 zoS7kd4y2{yo7VrQx^IDxs=U*lB%=gDPOR9C)z+xNCYI7fqaRbT%$ON+Mkk6ZDBc<% zB+3>6VMd{aBshuX>|ua<E4yn~df6?uU8P#vKrJTR0<IS>Ua)RgtQQ!9La{<Xk?(ol z%gmXRIVkq~{l4Az_nSHAJm<Z?|Mzy@=l#DWLCE2ao6&Fa+QmjWTVg2|9L^h7Mb>R? zO|C86dKeuXNR%obD3KenQ*6S<e$jzvr}^y<jD{_V`#9#o3EPa>4IDHq1M9Tl1LM{$ zGP<zzAom!NOcM%>LA*{A&&HC|M7eH9+9%*W3!SymSwl6(o>3N%6=?&l40TY*I-B=j zqq@Yb|EPc$5Y(9U6#1S}>re2f40p9S9ul>DeCHaD>h(sTrsZlUmE0f%{uzbMv<t7c zYx=A!V@evHVx0#cd^O$H7yNZa0mS7Kqr-;})ns-X9q(WcOm?@?u^D$c4Da|Ul6(!~ zwx2pN2MT7krg0a6<joCL;QF-G;R-c(Lz6f(QI!V<7h2PutJa7*q-stV>i22>c8*NI z|5<}%t~712rwCioL>gEgfZMQZQN4j&h^C20pATN85<0#OS&aeVYsyl+wO{aXVpe&% zw9+Vdo}s3off40(66bYz;Lr?osSbbg>3cXpfy%k}ae;?RO<QhVV<T%{KLNWG567^n z&aMHE@6Xu0#r8@?Q{1!sqgGH3MNqiy+|7-4lErWp9Gl5GBe7Ra93qND^^Y_A&1{_Q z6yt{0Nfe`q5BzT&m+~VfeIh1fCLlIjykaxHO=Jl-o{3zo-i+AIMCN>!Fep*EVW^}k zsVe$?F=A`I)_H$<^ggz|-EW?Hl|AZ{LuqRh&cg(2`y6z;#o?6y6jXLuMXnhc>h3GV zK8Xj}Ye(&CCxj}ykOGX~{*IX^%PRTNNN%)F{4{2Zu$~O2>`li8_(VuhRQZVt?NAzl zd_{zo4e9EcD5{aB{S-rFXb1tvmp>%~yp#Eb!_~7v%@jfXD~g&GFO<3gV-T=bLw;<s zU($jxk>E>;x)`%XHH}&?kOnS#bozwZ-Ud1A^UE$&NvN3lVFrj6V@xrpezNb5rRJd{ z<#x?m*r)HptnV!pi0Fky`Y~Ek?E~ft92i8-+#E{2IRH92!(!HlsTyd^a3V6*iXbwW zd!9s95lWsj34~u~b|rTnPIe6mMB0ocW7yg>Vw0fVF&4?iXbKXF{fpsECD?_?c1~;$ zkF1a-!H&d!Y9wKM{tElru?kLfn#q=tzBuNMcUAF~@J79ibY>9Ko*5J<8$Ar<T4GjW zWz70R5I)vh`(lu3WGcm54DZ4?Gs+IXgSt0<*)_Hw`%(}Pe8-He1QUy&f-Eg(u^9eO zFzumRbS%-&*RKp=YF&WY>W@PxJ??+P6k;V#B97TAycfU#ED>WFTWvC}heOq6J|*kg z*pc@9Hq+XI9QK=)TM(0lSEkyFtI#6UTWLFd4;o`R>$XUce2t_+5sR>0go&%Mc($nW zs%UOqsnZp*L61cn1+KTfm_t)z@h@Rh%~Z!P?>$|PFEf+Q>-{YkhXYeEUELe9YwkhS z#f0^s@nAQns3B|c{TKpl0I$(8PrcsX`aB~H%CTvS`KfHg=6B+B+kcdE)axg5j*2PN zvoVr_Q>DmzC46FjS^=h{?4jf<DS=EFnQNE~h@)r4ehf@CPr)`-&ds;P&p}*^{E7Ww z{6^%2z40&Lcj8sl8g(e~CgWw=mq6H1y7O0LBg9V-Y-t&>L?^~9&xWDhwm4*Mj-d@u zQLDFh#6W^ZnR23-jI6|@`FvG7j3vuaN0M?2?6Tst4^y(-Z9~HjWAsiaxu=l*SNaqH z8xavy^e664ALu)FtP|OQ;d%Y0DY1(O534{d6X&_+jGXTMD?-AyxNpERQjZT0a)gEv zsvMba?GqzWjzT&5Oz*;x^10kt_g<xiSX=!cu~+H)f7@OqOn1c&C2m{$U=351-K%76 zSS1x-V766{uV+<a7A$!4Z-}~sJwnE!$&fFj<1PI6M8qdoHCJ|68BHtguc36*jvw`| zs{mV9I@(38ItzBhR5O-(iZftrfDp^qYQBkmCtdN=IH?^h_o{A`hnri{E9lV(S@&`( zET_P<eL8IqQSPzpQXGb^>{C(v$vj~GXNXkT>Vp`xcNrZI;VBe&)oAB;9N|+4JnU2} zo&sy<e-B*l!RTf-`ti|faNt1^@g<WXRLx7*$f>i84Zg@Fu7+w3&YveoKnnMBh?q+F z@u{q}wD&s5ANExY=f)KJ7J+sPe@kEu@&O%z^uk(;2*L}rg)edbj3TIhZ}(j!goBuz ztH}Tj^qyGi-~4co-BZ06(LT0EJ(rW&(24?O6kvYO{|(-)3?W0%)}lTpd@aAqv6=Hg zWhx<5=y{K&=OUpwaYTcL@`DDFC1kp%Z^V0~;BPf;!R{5oOJ;s`bQr(&@NG1G9Qs(@ zo8KM!%I7|dm7nOzb)cERjMg09I`VhT<N#86iw+c#!+RBY7NcM#M$0gNglI}WEx4Mg zBJhV7`NQPXMg^aCiJMPLA}qsOM8_}}4aT1iZ@vtQp%!%xVsIJWtX@}qR=9#J;JQWK z-$41w$4^BZ6hD=`+2#3pvk2mE=8Wc^srmm~Kd&f5WC_=z$Qhl;GKCRkg=-mp#Pu4i zC<9<z10&w17O`|*hZU~%c8UB3HV(gh+*7Va5m&*AC;oj~+@bw)nMU#4U$5@%3U|A> zL*ec<Ov3*gIIl9Es0c1I3(xt|w9o_pfd{_K1OKT9{%a3>tq0C}moJ`gd*FvX@RQMY z<n!lr5ByvYe1r!c^1#V0$QLekwdBLU>wz!yz&S(C=MM+R`S2$^a1K74T-6HXqcD20 zF+<wS0D@wfdD2YCEI<v!f>oJ;6tfb{)T~-zaf+r;D||62tCxDQRE3`7hOwGs+Mwu^ zM5Z*x8zzHgN+ztYALCT>I3)=*AKO)9SXP}jx8d%o)2Gb1Tl%UKHDy+FJVWnnxNBy^ z^choUH{CI5_IG@IiqDvyeVEbQ4E4nglcrB;xMS)ZefTEN=+q?AsqtAnU-XVi(<j~5 zG)3E(I{kR3b~2d88Ht(Gni}p*Oqw2_`rRf(ViqW`xXU>xRHs+)Rx?@e)``4I6))GK z$^F5IO_*;%4rth(I=PcqvfqQD{Zjn2eSHS9+n?7lQKq3kXX2;rk5dgbFQiLooU3s( zypRT<ai@M@C;p6w{ntG3^Tc<v{{CO@flv3qf98Szrw9I)2mX-<emXuQ(zx@X+5_)# z;2c-!e0#$K|G)!Zt+=-=X5MOlHaT$ijT+zPz*+Vh-{ru`z0ml#RL4sH*&Av6Ulq>u zI^+Mi2mYD^=hB7t=cohc$0Uva9U})r|4Gl#_(KY3d^jxB_*6z3#vPyUdf>Y}@M)^c zrT>hY_CM~xo%x_S#kB9t&tEG0j8B=vpDhmjTnGMv13%A!|2-24Lx0Z4PsgX(ftNe* zpF41;KRX?`)1N`&dx`YlY5#Hu?zI1i10UuH_Y?=W*NH#kz@72z^}s6~TvTVf5%j=s z^}uI);4eDx3mowuuR2}k^H&}C9)+`Po$Y5U$w)A6{8}|Gra#Vha)#1pOS}?4U5-C+ z;1@dZ-+16#Jn*v|9AT$FS9#!%df<CK@XHlvk@0u>f13v$_rRBW;F}%!R^iBpS3Pi8 z5r*9!e-jxo7}cBzjJTeU=rNVHujel;QyPuy`A(TYv$%TnX`J<)ZnPPzZZxjrv($xa z|GQkcj?YUjT*qI*pZih<myECKMl${c)!olkx#$-<zw|TfBC|NC0d*~AqYYE6`VUrX zhNH_t=P&CTaW%Zaoiw{$;c8qJr+)P0etuT>UffSHh(aioIj1ReKH#47-hAnoEAm-R zHq*}`f;;_DU`)RfXWU6s!9g61s&?`L|2qBpdOfgw?t{v`4o`capY^p-xv$a|)YVk( z*(W;<!=lmGX^wmGLj5%<_fCxW+MUK1D2(;PX>M2UOI;3hytUnVxXG9Q3)$Jg%#jyy z-aWfg?Ow|tn`^i1(Mg*+Q`_c)!?>a&(&LUht(T|(%2YwId!b0X!)HH{FZ?PFo?u>f z1?YOjMz!0f&W_KTt4|UARPN}dHBwD@*=OgDu5d&!C}I`Fm`|rf0H5!#uD14@WfkG3 z$x|myFRK}G>4=NJeo3Xg@g48OTD)ma+&5wh&WQ1im^^znc3n43n<SojH)7TdA9haO zaYxg1*qS~g-ZY}_>hWI}8y7z{p857$(@_z=Zsjv4{>{kU(n?>8#3(&C1eWz_nHry! z9S+&t?J!-Qr|j!@TE@TbVZYV`=QlX*2W~TF2JRRi-BxHjtYi8<V;MJ#Ja8YT%7XFC z$-d$~=kAwud<{_F1zZ~{kGuKOwNbM{e`-)iE9Fd`1?JkrsnfvxcS^ZVBXKoN5LR_Q z6Ia7^ftQJY+2*NXwm@|L(Y_k)3Vfu)z8a1y<ZrvMk7ihI$qRaTtNRxH`dr-5y`vcr zuY%&g|DW4E$IZ;g&+DFj?D4`6;=R-8a?;pv+~n&cN>zlGDvNB3X-}8AF4u1XWB9t< za4Srkx_(+8SqFP`?>0Yj1M1mr*Q<}x?r(7U<95&Ie63fXa@VFDP^LLtbEn^{kD8-A zU9SAm7kBvFRz4X!%s+D<Rej0GnlhTt-bZy+>d^IAG>E!22xnPHU9H!PQ?A!sQG30Q zDw95jPFgI@YW0y(yQX|K#YXG<jzWu-)Z&_hm{9s<EIuFUCgBj=i2^K1;_L|k=4Byh z^*RH0olJl4S0sM{YNWcM+Zn12j{r6=8`^Cw+0Q#H@{z;;#%kIYOS{>SK+C{`P|1n~ zPNBdIdeKcVn|Cvn)FKAWO=j{~L2F6x%~IzlnfHOC^XtfGgxcVm-B33LEoFiKZV^1; za3vNv*C{eERpRf1^0mrOqKfYu3w$7aO}yIsl<*I0x3S8jl|3Rr(|Vt(+9WkN+K2-L z1VvdR+-p!;-IY9o#ppJ~&sek=|H&hT#*z-)@Bm_PW9BnY%T|{GVd$DCLbO7oBD4@S zi0J?vY;FczBeE+eV5GM=c?60SxtfeXLBh#ZF{ScneW@TdXtFaDUq-R^UJRv(!*N*0 zdnWW;eS?&G90be+RUr^iLtZnx`$n7AM)TsD*O-B3<wlt$f!+j^ZLLST9X{%l1kA?W zy^k5~Wmvw=th49DoWVdb-(k>RSc|!#ri3N>O<(*>6<^B7CYhmTa@1O1Vs9Q%LDo`p z;qByMyxx0O^U`XZW+2Onv5kT?j^h}jcrD~Y_yFH__~Ng?o)9}FQji)Ua3a|?J2Jx7 z`@6*V6)j5pEKim;79YT>dG+g3&ZYO9;bc7E`6OCm8IRW2(_L_p%l`=7u*QTVt&lK7 znn>=IG$Ns|wI>*4EkW*@>evVKa@J&{<0Rl~WX0Vj5~B3GMrc_U6!oQBkz&b{0M|y7 zi02nu>x7Mhb;*xPjU}rQf~tqoC2DrZ1~-Vk7brI{(h!$3U$3V~gIAt>ODZ;Io`W_N zt=uS7@g>&|fR^easQznh0Jp37%G9V2;h~HH6ssX#B}PX8ZASI$I5ecSJUtBQk>$^` z5ZFdoejGl5tPI?Wg5;`~(AMfqU1B?U50b|~&mok>xjY8)77*pc>$y&$IvpOzH{^*K z_5mPfi+>33uw#Pm!`7j2r4%fLZK+Ctyp4C5$&bp6CDgr7pP=wQR=I~q@+=WFO^_%; zCYbT5t56KDnA<-QZRnC1tb^cG5-Zppv(nl96sC3d3#K4SbtgWcfAy(pXHefX6eWIW zEK0zc$R9zN(76D<j1?(0+6(x0(O)3#$v!kbyK%Fo3~A8z^aD~?CZ&blJ>CMS5CC#q z%YYTBl2G3<D^g>$|1*5EBc;elqy03LLp3#6GMx5z;0bv=WjdT_<p!J@Vl281PU;&E zxr&{cJF?{h)Yp@nLG+4@v=dcO>Ig>HE~Zli%Jvuxka;_yaMx(Bgg>-+WpdvBKIphS z6VK^W@YlQ)Vq+}chg-2BsCj8GPOhfTc~~#Gvd3S6s6iscMv`JFLu+AKr%{B3E-bz! zS2R$rM*E{A#V9cZPx`{%-%<FXMs>c=zO@SN<{Qa%1G+zgzVO%6N8zc+5U5fmC+R&r zXZDg<J-sjJ{Wao9cyTy9o4dWG*t<pDg|E(mqRH{4X5)XGm)%r6?@a1SEH;s+s029m z-60?L73g+{?m+q~?3!gV0Voz}*AAB0e!Qb&;ZEo}6?+?_)`#f$d)7lls7oB}i<xXK zLEFg{VEb;<ZiwmjjeYvUivi=TqhQz`bx-I}53;e%Xs6wJyBWRn(a?fj$I#=L-A9cD z@9?g^@?#5%mQ~}6GfKMmjBei+|61~+g4UtE<*FZ0hqvR!7oepU*41VM+ImX_d=x<$ zo1n;dr@woTf7pJQ1%EbR25uo(*uAH4*mE!o{(Ldaz%3v<r)qrIo>94H*m#%)@BRX2 z;6@XjVhc7#v{VS56OM{ch0pL^R`Y%1zAkKJ<dNg%p&jPATg-E}Ml08w1<%7LctUrr zTezXjSW{CG`0v(RbfSP&#Tv_3u!V_PJ01OAwtSd7)$gSbp!|g#ij8Th8Q@gzyTVu# zA9+lcSn}wx#LC{^HZK)friw+p>iw~L>RrZoJNFl1*rrrmPQb>_g;UTy3u+?j(<Vxj zD9#ASVvXG*pLtZkXtQyP6?qsNRI$TjsN9Y!wxGTwwwZ#5Of{7Tx0#Zl%rmO$SBMi$ z7TfR&TsNGI(kZG@%D<tQ)yax1M<r_~1~MBC=>WMbf~(qQK<Rl$NDtJZ=7`T56dw?9 zt-g8;;czI`QDYcICnO~(TG<l@uU|3MvXb((5Qd!?>76gyc`aCHP~$!<!->c^VQHrj zp^XUVL_|o)Pmb^)im}Sw?C4rXabO4;lIb<K_JMkv8g~*T>4(OB-Dc`qh|z22x!vZu zYonDfMhjlfx^3OcVZlfgd`(3taL`!vMMNx<K5VF!8*+!Af+On7X|)WEKxfQ&JbiU) zI9^6p#;oC}?vdrtH;PUTyC?%|p*x+8O&3q~xjANY6Edi@sZl8w2ex259K*JW>Vr{K z733EWMB3akEK^<xi5orr_h284zna@##P&|=TYVcxNcdv~Yt6tX3Cfdm$E4A5FMM|~ zU@4!XAkp@wuMiTCCW9M{tT*Z*^G<<RiH$<=k)~6Oj)7>0V%F~7WwO0?7JN?^8>uvV zR8!qcEx1PdBw(Vnb$NttsP58(r<YJ!K12<{i8gzo4;a<Kicx>L(8rw|T@30c<ri(< zTu3%{`!2o%<srkjXPfAMa9oB%h&Q2kH0|qhWta=~QigGohKC62elRP-6+${s?Jdhf zLVg)$9{EKWCnCQXatRT}z#~VBMH6^APIIWpl)t(4Nc4E^U{93o;1LdCL_3HxBBcC= zA-_uoBVsynArz(2ewN6iBIwt}c|K(j-QB2xklsg)B`fiH0pt2&C?p<iEcq8Hw7F9g zF*jYsZ~S5q`wYJlg*sVCp;ho0gRgBSG#3|xAX|(RXTlxWk6YryR-XxI$|1aH>GHol z^|)_O@_ZYD&zB$f?Ip*3>m4qAmT}JH$>P1plYD|F=F@J$`x0dK#0BpgLhy$6ezjl! zdmQ;2gP{JW$)9LH7ooo9%HO}RMYW~;T_@x(*;fqt`-SoSpCEV5lvqcDw&zAPbOl?E z?OaW1Tg55U8cN$ULfAT`ux(EN3S&O;A!HR_3dXWv=8)|F7~c_IMK@vqjx!a0OO${R z*y@Anbp+@iHU_+m`|54!y|@TTUCmVuA<V1zacvFb@(kk=>J*|cd=AO|&lzcl<V1wf zrT1fXT$LjmA2z!KM6(-29@LIR&bXT0^sC}^7`dkGf14_(^V|Izd^a00FXyomu@r(V z@&5oj@+O2IWbpnU2vzQZwTX8NP^;7D!aCY6T^t;5s@B>uFv^cQ&$h|v;`eI3hd>z7 z1LFiPOa&I-jq=X4<LH0#RUhh0>DO+Ppm^fdr%F_xGkUZAe`a8NoccpWod476k7&Pt z3{lesCfo1-1fuKDY)AY3SnGIxSb|OuwB0|16mfu=qq$u6n_8~c99Ir|@6-KtM!@1J zj2&YS`mDhZX}Q`*x$0f`sX`@sZVnETqkS#sV|NG*&Vu##LU&6(DeV0u)Box5LOry@ zj|&Oa@gHJdu0{<NY7l(|WDfg=#lA0b-WI01I9>-k?#zPynV~gK;R=_Rs(iq?Vx>l^ zl)`#dOi1NE><HT}qSn!c@tv`d`co;Fw*Q_-fnz@P7?2na`Gl8ZAdIgi1~$!NNF1%~ zvR=TXfrl6r!y_u;FOk0CV;s8>cu74V)HGibY(E%}VAnk+THliK;U_!1<%{9TG$&fp zrx$Ykq9622ctZD^#P~TW<#!{eVDGCb*t=p1w%-C+*!{kmg1sxIVEbd%#&Bw|n1j6{ z1|XpYZ*meA8raRR9WCFC+1GIhf_8{1OH%%eB9{%mN6*9N$a&a)^V~y7wOMck-kFuJ z&}HiuwpAEDmjqrgmOO_{(+QDT!ML0DWyr!Zd~kXdo2j5bW~s4wIt6xfuYvCi;#<mL zoTUON%5M?=r&uQ3BV!hYKlDWcyTq6R!{LAAh$8Vkw$2owynEMke9O{73qDhbH{)+# zhjw-!rgDXt;AhH&g}|>o7&PJg#8e6=_6#Q1SLC*Z6|S$P`>YpaLSQp*<CzC#>_3A! z?%HyeS5ffYzxNf)DJeJ$8%DSfnS27Z^zOTl>qBC1NLCN}mDH7Am)RQ<#@>)uxi=)# zPxbzoL1Exy`r)BLg^|3v&c%Ke6G1+#lD9ig_(FGjc5g~}NU-R#{CiU(gUaBK$X;Bh z)6cQcIA3&cVG}f`Up43sXii6Y;x`!Srg@sz>|Pk5J6)U&U^>zpEV?{@cvlS?4(Ah; zUt(=d@6E~4=f5zc&wmc=lLt@p6h9q{u%R1&G4}#F&k|7Q9E>gc=lppc8dUUR5i%7K zg+hKfh7x>u2BrGc5T6GY<*fDV-iAiYk#4WBm*o$;ZcyQ5kDwboa0K@Ne(ekwW^E?? zY}&JDGANz(6N|2;iv0d^h7<ztuR1?8=xUGP^XG_+%kgLzf@P7PdogQ<WMg>IE+j*v z>2~OAo^(f(3d-x^&B36M^fxEY!Qd)qe^caRjp%QR1e-G#r`S@5x;CP%zypW19MHPW z2mtx;Q6Bge9{A0`8SZkmb}iZnU~v!o-}As1df*Rv;6L)fe+QiLS*o&Bv@^h-Rk+Sl z(Y65l6Mp&fVUGuXQ2EovMQ9kkW^W+t^Z8Q-obl1TX3?&|9rY54d{aa_QRjh=Rd|V* zC#kx~fYjy=u!iDO8@YPjAoj;J)Wxp3A{1-5X3UuDBI6pyg|3K28hm<>hT4-db=r*E zd=0`8_$~3dGodA1?DDv4(zMxmd{+Bt8l~EE?U~r{p&usCjW<CdyR^|iZc~~-0-G^c z`z?Z2dd>AN6^Dv<?Ws_<t{)~%xhu!HR0pqgv-jJD)8AJwh4ObbVEarypQQulHOzVP zBKQ~NA!r`-#U8jE^h&;l)BfWg_P2Q8B`ALyPFM%wr^7wpfjj-@zAzfM{i_|g)BZ#c z{6`-6;~sdA2mYD|K2G&5jHfd`vm7|5+&aDYJ8-A{KYHK?J@E5YyW|e{au0m02Y!zS z{<H%h;)wrt2TtykPS;)!{HO;$lo5w<m+v_q`2TU>&TwNM_&+#swqH7)4>@r1eKh{M z19$rWz5{2IrtN=Gb&-7Sv`>W{G{l|$U*o`?@-MX&N&8NJ-gMY^;sX`A%pLBRJn*l1 z;NSAV?{whKd`mfSXS$wr;LdoSqxva#JgYtMRtN5^FFPH$v%XZRAq4$rm!ivMwg>(* z58PD!9sMB{TKjXK2mT)(_;f}N#vPyEdf@MR;15walt0e+B$+9B@W(yymmE09N;+K^ zJN6Gb^UZnYffN6C5Bt}%QGjvh+pj1D3U~T*zyrTP4KCdI_KE{{=0hQc4~ESme>z=9 z6z-1C1&;kIPJfy_@LmV*jDNLb-;Wb-_Q1c$Pp&ZT_}t@xi_gV*?6)y6g*(H2!2|yi z6Pd^UYYyC*50e%D-W|`Mc;M1^nfL4xf9xn%zGImXzgLxqs&*N?Md3<3Gx(hfSH+&e z8x*dxErZu7oU%=$!>v@f{<ffTeO5-9u${I4sIu?Il{MdTmwi1S*z3aexLl8Obhvt4 zev2AEXk3r8xza$RaXp?cCg8xAE4f_g!u5Ds+W!3iWpK)<sOCK5QBd7&Q}Uo+=yKA} zXW@o26x4va?mkD}1eGAL+!>CR3tfH}C|nH}q$B(f)fO^{ykS^QGaL`}^YgmD6mA(W zmA$x=Mu%Un0d;kUUkyB8`YS4=gB{8p)6cHmoqjLw^GKEcFDv)@qQpkTnOGfu8q;=o z9q*BUZo9WA_wMvhQ1117Q2VXpub*$gO}_Mt&6arAr7SZ2>_WAB9X(b<ciGX&ObQlE zv%F;f-SOwMJMOf+L%CnBUa~u5*zWKdr+nehQTywrx&m}P`exrgX;#yeEc^P?_6Lou zIr05LBOO8zM0{D>4D7--UW5XuUH<Of{sp^8V;Uwtq4y9h?A~3tU>9jj!^9`_o|J#| z)_n_hk-#)e@R$15f!Hy?#^>#mZBSzaTaEkH8b1VcX<OwMXqx4>bgqcy=wj|F*t#!q z_=9z7jc~ki!{+Mu1k2m_#-_WzfbZO5)L`~(KpfkQ8@h!e)J@GsMK=`Fs?~}EN>k@E zY}%pub#VCsV}cm<9x#pJJMeemb~9BA{m0+fLYJmdx1;h6bHO^6({837R=(b4cE5Fo zSdAID+Z?##=3Cd{TfEgr-WgQJo<lnqf@;(^%;($L3Xbs^9mnPlMra~}&4^m6b1%ja z!ar&Ug;&MUt=qNExpp`XO9@Xg#Hf{BJxq;ykPy!GUdl_yHq!|A34g?@uQ>U47wI#g zpS}yFV^TMqvG_N%jq}Rq@i5?R{PqtugWJKfF%}m=sz6pg#~!t))xZJdq3wI1pxEem z5>9HZQ42%XN6;u-5VfA|9RSYF82jvpLI>ADap)7U5CZ#fjCJ-yIJmwb@pdeAE%aj@ zDQmrKj6L)LGc|Z|#M&O(+8YkM5kI^40#UB^TyXQc{qPkpB7yA*hG_>1j+udOYpy@> zhFmb)V|3hvg@$PIV=yxRk+BDVXBFFZLG<n&Vq)Qk7@~eGK8?#(+xK*QF}^!y^@#ky zqBc%}W-i4n!QxhOh4>Z3FB)Ut^1#QDg4YrE2htG)w3H!5lUorEj`R*7_}8&2lAecG zQXa9e?Jr1w3D3;JV`P*+BJ*+RM`UtzY-_oo)~;Dty;<6?P5HkNvJN0Oxk?jC{<$DD z5bUF^iFfNe-j1IH`|;vBYv@AeEp_vmfqjW5-7$8^gQ7Ls=a}{ks0fy_M4iOzpxt>B zZ#Gcihi--(88>a#vO2tr!nldcH<0N~kmt2BerCt(f+#9f$F|@w`#A*^44Ho8aoBwP zkQw-6VxJj!e%=?%z=!irCuO;}M{_Mep6gvr$%XjCoj7;iI!IOFPy-3F(osd{tFY@z zVHa$(yX#E5RdRDd)vmyT6c%AcL}T_HP>%kIpdASKY#eBPRJ@8>>m@Na{$;_(9Vf(f zeT9poi25hVnISNr?MN|}`os!W%XZ||wDPm@KLyKaJ^pe?1Xuq>vsMiT??=W>??tWm zjhnEQ0__g+C2oM&2yW^qXzFX<4C^?UpdQ4(#hthZFR{EHN>@eZMeM6<aAX11L=I0P z%3aYEH2h-athjfW&ZowR4|LiO_|`1gL}7>px}`4Q_&=CnBQ@eAi#{xljy8sFiyk^^ z+_V;L(t5QJ8$EOk95=IZ8$7sh@HS)Ie~KdBjE3xaSc8&ip_aQVUSw2kLEIBdcn~}{ zK72r0!$K8a0_)KJaw%w+ft_e{422}8pA;*9ZAcc@0zt<n-}n(=&OEz1HR?TD(0K;& zhrA=xP{Tx~wezjaH{^WDmB~?E$T!wJu;7iwN!-M&ZD0d}3tfY3co~%G`{DM6ZLxyQ z^{KNT=slZq*Z6mQXM&;!F^dIui!6E|UPsX$+>L}IaznR?)USnrGmkto;R)e5seDR2 z4gaI4*HQRfUvRiSu;1t)M?L){xGSohuCwccVAr9T+y9Blv0F!C#WjAC5JIrbO0rLA z{Xha-ZNi$-!PHCj(rl%uUOF))N40d~5-5~Tl%WAg41%+p)3D}iUJ8}cnJ2a*ISQv= z?cFI`ZnO+SA9Z){8!DbRt9DGjPwqhj*yHa_E!|jz2L5{mPt>KSv&~wXqXV>wQ10Fg zK?*>1%qELex}2w~oTuFE2xi}@?3jpTB|^-K#C0MYnsTz?(=}}0jAkT=_NS)+X?dc7 zKE;2F#!AXpHh=aM();+2WjmIe4~sJP$FF9DvYg3c(P#ZTFnVlsut%gnM#oy*onTb4 zxdCIBh!5?)Js$*z??AcaY;ag-<Gx5r3^@t4a^C^$lv%Y>oiL;s!w0l}R_!=pQ2<u$ z1h%AHK-c3N7G@?NjP`3$f}(wL=Y!Es{ld*lbMhfQTo?EVoqsw%-VqJ;c)^%g#1QvE z4kD*`u9wWI0*sGjPHh8rf;knn$D=LAQ8mxOZ4{YReNbo##`q2m>>;1=2(B9oLIvy1 zz$=M8QDka;<9{(XW7e&mG3#dLD0#kb8||mVi<tFCk!>;iR%jpJ2*$&oI9OI^H&ER) z4j0<BpDkJYy~6&1>dllZ`<tK`F9ZL3<?hgjq>14HdX%lgs5SIOwvy=h{h`2ft*=lu zubDdaX4n$kx0oeIYAEndrR=s7Ez4I>in#9Nfk%>UPL?_SM|{wJ)UTufR3B9J7AMvm zid7y!J70*_+^PZL49O1swe?*!9&4=mLC78@_(Gw;OV+5Bt$TTHjMKxg^{$|ZJgb7> zaTv9-L#=0@XVq3QT+vtEg#l~5T@QW-qYy;<H)^Y|<y5or6NGCvj#_06MeNt2rCpnN z3usP2@M)yjPDYi@$i6VkE>Qw?;wR%ko|e<2jfcS<85v@>!K={18qlIaYU#q*4$bUk ziQ;)Lvdx4F@8u${;nc*BLEl~;N`CAQTa6}mwP9|AC+vITYC})0S&UqJhSNzh@^J}0 zO+*X{vfjW8l7Fn)U{7s~`HardXnzwo<gSE-R$i!c1#Mbx)I2ZK9)zv=50LyqZcO;H z`Ujwr8m{cx*cfBY@QXr$4J`x1)_3GnB(Rt9udTSk9)(h**d$hjajt=gNZ|+I27<mG zwy5ZNS-3I{iCMwaF^sU)vwatigt|X$UuRZx@Yv3HVvkiCV_pOv+WuD9+8VK5idcV& zSnEOqH;l1HJtkrSukbb$_z2v3XH=JrM|JK*zkE!LfWwt<My;OeuITn%IP;2Q_`?VQ zgh{4+8x&%*yjPV0(^0Q{Gh{&}JMw?~+hOdT8-0K^AhE*gf*R=Mv6TPbkX_QT4XH6Y z9)P=OY77|3gFA5RWABXeXYXK-!d425-2)%b8jQ*(yVp(g-mVWkKYutV(#S9Wqv3P= zLV@+OPw)MbaF>N<4dh8$usg3eW^L{idn2Caf2=YcUGRw@h8bf(!7?~cYBLucmQdYu z12=^%9|Y^N@ttuaY&V+eudsa+{-Yhq<?{aoj$K@SNEhdL&y?X0(#1>YX(H(#VE~ZZ za-K~NX>Qwl><9v*Ev-`feE@8!OzS!fDQm@NDbY-&saL&PHW#QktVZd-Vy1_lUQ`1y zcS&CbOX3l6fuKV)-rU~QX*SO9OrMJQ$aI0MSL%xo!Xa!GX5&HIzjB@8P^tbOFG?}U zjSn`lFA6p=F5RE80#9Mu#DDHz216W>^;z@DJzs08JLAykk01TZw))9qN5lE2>J6rA zPNZqvTq|aZ{vHa?gdtX??x`n>h8V<4m^0P29M=izelf3tYcys^X|gChq^j_{LrUw0 zl!S&9Gwe3Lhl%hH@LVvTg1BAAXBfc)0$pfPVQfh0y>MTa^#A>kl?6o?fbmlXP7eGA zl?X(ipE(}onY;fbz3}~rR}qJhj6+%B1HvKVU@{DrBFrkZWDc&8;8+Px7h-+y$%^MR zvG96OcYwIaOtpiAJ|c1!XxOGP%w%EV?Vxnk4XVR`bkJ0Bk5|mwdCKmqS-bb)eT2(7 z75F`@-izbqMEs+Sf8CI>!k?Zpq_kFKqB%(DS=yxR{(|*F*fmc*Ihs0&I+w>#{c_P; zeyw<!W!9(c>vCjS3}*UazAP{D|HO4D3%U_?C0Abx?Jt?9k<JHbBK?0tM-p+&$4O%H zsPkAGEyMhlD0C#N7tZv{udLdIyh@oqITyr}{KR*1=9{3laK5-XsUQD^<(W^X^4FF9 zGI7oQJ8|w53%|c9>i30S+R3NahHp-UYbEWgg-PkH_`eAM<n&Bbm~I<JD!fhMqJ6;q z82l)gZo_ZP`S6JzIKTNaT)n0u+7)1TDSV<53C%CO$HO1X1802c|4fX}XhhqB>(BAa z7f+5-M11_Xfe~#Cu218a&;B~#w7*4(+?#l&`4fJ`yVTmYXfuHAQ~2^?+`x#o0@ndZ zC+)A~M`{?+F5r3&@O<HNb9+AgQsvJ?wPvU5%T)?*Q+TG$m<)}(O?NfTn%(4^J!4k< z;)|dM%Bh1`XdccgB8CoP$;g7TpGmNNJSG>JThpdMMUanbgM@9x&VtgS?=&^sJ!96C z3=gXrDv`Z;UNfO}SdzdJ)3uIYU*m}|xEiN5O`4TMotip*YP=y2u}k2RvE{pydD35R zvXikzjVw$_j^6~QHBFb?RF)^3YKoLz%jVZy8e+~h-_-(@_SrgU`_DOWikim%s&M+_ zT=TsI<xRtIDT3O5SmAE_dX17e>%O-Cu<B!oQ<gNoK-DL{rYLKCxx#6meWu30NdSfy zE;DL8>VZ#j;B33K{RbR4mwhzet#HPNRY>C>swUQrr&WEWGiSOEdEhUodhE9UUmo}# z54_I<KUuX0ZvW3x?E&#pN4mc1z@7PUu>*JJbJzp_p6UwR{=e_Q&v%4-mV>+EloPGf z*B$>Bhkdp=x?F4r?)2wn5Bx$71Yqbtm&vt1cRFyVoP62AS#bJa?ZC?%{sbL(xdZ>E zM|qhZIQ^udys4@to@>N^77wat(}hn|&+JEOv_Ea)2|Rao)wu3AA9mprRp2{axb6pw z9qj{eOPH}R{N7Ka{n!0kn+w<d+Hx1J`?cp>xbD|JcHz38Dq(<*aCJW=(a-;12B!>C zRqKpLL3Q^dRqpzQyH91^V%7w;1$FIX<$~F-+B?pn8IG#PqOS7&1qxTz2nn;(6|Tlr zG3ZB6ovfeLJvj@E7we4EX!li45cfL$`pR*5KKCWcg0`o<(dpOMn1}l^<<Om8{j9Gy zD)&`70Cg=_?la>Ug)^=+`a0QhFJ7p>kUQcE*Y334yKzHIiKm8rrgC5AdZE*;EzZIX z(-PExy6#q-1wH?y{IJQ@?%CGUcyT6fR|UF2TFd;q<DW0?w7g%r*ZN3@03+lMpWTLA zb^-a8aj*f?;0n<7=p!vYF;i=+D=Ygn&cvlvN~P)v=&RG;9vGh>|L{M6HU7B!)<(>} z9X$W|q{+S!{r2H_&2@$6fAb%^IOdaAo8%5a*9DDJCg|Q>E<tU<b#=RE)5UWByzV)! zWBBem83ac2X?1cK?6~EG?r!B@9^<x~FYR=u-CyGJ!|k3^9vm`~5z0@K$xEs)xk#u` zJOP<p?r2|vB0f@wV(=iA1F#Bh*Hwj9jl~PoI%ITEmy2BeDVKLxC%XuDVQX`BS9iK7 zbg<hGdWmyU50LZRTpZ$A5a+?U(FJ{7d$4%bz6PF0?am39U10IhSo|2CWA>HBnivzc zgE->8xQBYsd<U@Hoz?Sm*xY*ffN|kg(;8EC0CWewZ41I9tN?@EbK_dU$`PpPKw-T! z`(|wJn=<(ZtIIvGS7CM{RG71acp7;iWZc*`kq$r$>H>mgs4>MKkmr+XDcE?jFZAnc zME<n%z-xYQ&#cRZl4-F(X|%tHS881jpjfC){~j0@Vl(S<@TFii^F0xvhY5P?PfR+& zWj4~H+C}`iu8dWNCq(q(Psnv(AcgpNO|RqsCciJ|eD&^Knpvm7cjennd+9=WMh49h ze$kGfYTvh109eU;unXCcjlWz@6lymGMa7gJJkIPi?Pc@_U#PKKinA<1jHuvFZISi& zZ{n-QwWd99LkTy6@5VC(1o|Y!&S&aI+lLk*X8*DaFY2M!(s=xr^cL4ASK?|y&te&P zOxUUpy^iYX*OV`al*Q7sZAQCebE48r{(cK?C3`3_FlPOfk6eUYZ#uRyH!nqjUx+>E zPp-ggEP-sGBV`*)Uqaqu#_&F4u^^&=Ay5pa%#&TT4dO)^LKYJ|NNL;ch=FNsGAs9+ zMM?Gv(LfKVXyNiI=(<D7S{lv33oYMH9yzu3#?+Msy=PI5l7~-iy(;SjD{OGp5}?*A zkx@`#fz(1Au_a&Rm<i=nr92~7?3?GSz{b{9nes%n0iUGAW^Uv9Wn6eg)OfuG1d@uK z&BnO5nvD@J-8B@fia$3S<9FZ<t`+N>jq5?D5yz^JE3be%9B7GuHkjD$-p9<k2^IK4 zkmYW82Wdu7H?BKiG=Q3M>jpgI9+eY36;`$_NPLp<=vV5Zz*T0Wq*%Df&g61jTD~0% z{AK=)CKLu#9yAL!&b=B7LCGUST88w7MSk(gh>z^&r!G9@j|f70GKVBBSzi#GsQE2( zVu5taY-BQJ>UW}*vR;f;?lTK|%)p_R8^Lg!`^EHp46nqx6CSx8zI_^i{$UGWbb@3; zL<IVK-1=M8sfDM(7aaS&ilZKAAvIHDKyceQz%<PLX7?vWNUw4AvzEPsuX*6@yyqbS zdBgxUqJ-|TNP7u90WUz<g^tf+Iz<I674DSe@KHDcK@0l8jwQAV>+-FRzA6u6@r`Jh zN$Gi{i&-_jy^H*%O;jaTAd1Sg?_YsXP^q}!{}arJm3CNGk^8$Cfy%9Bfz7Jmtan(g zZOF7=F<aDa)Or?6x)i>M{N{@OBWocG#-d--z5V2JT%v(PMvC#mL8R?>;;JLG5pSZ# zHCR6v_R>7<S@?r0XQXz)SH|%TTvJyb>#fMPXIxI*1lUmp)2xC<>ItGJR1N1nk)97n zBHVUp39dsVL<IM%97}IzcOc`X<j`31Pr%YE@ki|yki{n`i&=R^>4HYllcX%rK;zXV zNHz;THFf}bZ$=a+Iv*(#Ix$p13sn-LZCGohE);%)x00%PnLa2x^OXt?Rqp8`#%(E- z8J?}<EHgEh$<#rx5wm{39Dbya2`W_(F}bCD2Ngl?tnP~8aAOcMr<L!=Ik_>kSbd<# zR>bU|FNBMz{i|}e!C+Fx?}Wg{Zw7@A2V}F@Lu>doL&OWG!p7?x4`MyM@G5)WhY}Qb zS*lHKvDp|In_Y>mg;Yl-VD%Nb7nz7_MYN|~1O{KF3TM+k8`?pjA~<GGp-Sax<)ty| zdxcz92p&?z{!KZvxc45q(PqC|1{x8RNL4M0l%`eNP}jE1^Kr-gpKbk=$86J-;8!K? ze7^6iE3vS;7tJ#6r{Fh1VS_oS&+2_}=|2b!8JQdq9@17&_(Wd)1GR&SzC+y$F3kjC zE=9^U#x51kHePQ`6)p1Lds6abD6v>vSomYT7|C~k!#ZHj${!a6y{1Daq=|s@4VAHs zpE42=eYl3iRnCo0%FIXgOZj<FzSS77EElc^%By$~f1=~XOv{b)<^P8DI)0nxx{x+n zHb*GDO}*0cS*vjUJx$B#O$ra9=c5sFit8-=^5qSijC}Y*9{A5Z@ZSMv{KppK21dxO zy5{qri%(VjyNG|z#V5VyqE3k9Dotj|MPa#XJPOoDNxIxmnlfebv>A;!r1H302&Aq6 zy{}*DB*=M+&q_>hbVsClT4MI?)Nz2_`r7twIQVjMqPe+=S?;@+e=sZ#{?Km;Lp`Z9 ze*C!YP~+FB$vR*2R^xwAxZA$|E=l`*r|tJS{9&!r_@%T2L;I{<8egDrxBoAD;Mc0E z?6$w&13%=z$!XBxo}sF^+n=!GySp=gc6#7`C3p0PZGraxR0r<#=V1p<`PBA*?ZEl{ zMB_rOAD-RuECWWv{LI!~pU=GxpzE(GY-jE3`s-c?2+~8C_41POU)L`Mf9^{eTr$4y z7B&cs<~+5IB%k`X5nkWRO%AnTcB;(avJG!lwtnjO@+q!x=@$+2-D!s7fqp76&%FAq z?!CU3->$+h&G;y9bo}-8TY#CaFSzWrDfeYAT(^Pxs=t?4x$G@h?!|=C@lIu@2$S%5 z{50mU=KF(3{<-b`gL1FLEaOF&a=$x+$Qzw*4L9M2WfIhYx>l$J&QZ@Se|o9i>wNY4 z-n~MtN5++VeR0R1&+fR>ZkbwF)b)qo+bNRn@EIq!>;Upjqyw0D<R$a(4*&lGZcWMs literal 0 HcmV?d00001 diff --git a/lib/linux/libvorbisenc.a b/lib/linux/libvorbisenc.a new file mode 100644 index 0000000000000000000000000000000000000000..6c99fe802c53222827ad02a1d478bee5c78c4b92 GIT binary patch literal 3056686 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%0AyK!{& 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 literal 0 HcmV?d00001 diff --git a/lib/linux/libvorbisfile.a b/lib/linux/libvorbisfile.a new file mode 100644 index 0000000000000000000000000000000000000000..e39e84bffc1e3b1e1090b2995469d50aa4224c4f GIT binary patch literal 32804 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ΝliOIhaI88fYSb%=Y?9=Fdcf3*Z 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 literal 0 HcmV?d00001 diff --git a/lib/linux/libz.a b/lib/linux/libz.a new file mode 100644 index 0000000000000000000000000000000000000000..ffad46458d535303e6e6bce18480273b28fd31cc GIT binary patch literal 127770 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 DMHvU9 literal 0 HcmV?d00001 diff --git a/lib/osx/include/GL/glew.h b/lib/osx/include/GL/glew.h new file mode 100644 index 0000000..0cd6ae3 --- /dev/null +++ b/lib/osx/include/GL/glew.h @@ -0,0 +1,16126 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glew_h__ +#define __glew_h__ +#define __GLEW_H__ + +#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H) +#error gl.h included before glew.h +#endif +#if defined(__glext_h_) || defined(__GLEXT_H_) +#error glext.h included before glew.h +#endif +#if defined(__gl_ATI_h_) +#error glATI.h included before glew.h +#endif + +#define __gl_h_ +#define __GL_H__ +#define __X_GL_H +#define __glext_h_ +#define __GLEXT_H_ +#define __gl_ATI_h_ + +#if defined(_WIN32) + +/* + * GLEW does not include <windows.h> to avoid name space pollution. + * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t + * defined properly. + */ +/* <windef.h> */ +#ifndef APIENTRY +#define GLEW_APIENTRY_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define APIENTRY __stdcall +# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) +# define APIENTRY __stdcall +# else +# define APIENTRY +# endif +#endif +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# endif +#endif +/* <winnt.h> */ +#ifndef CALLBACK +#define GLEW_CALLBACK_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define CALLBACK __attribute__ ((__stdcall__)) +# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) +# define CALLBACK __stdcall +# else +# define CALLBACK +# endif +#endif +/* <wingdi.h> and <winnt.h> */ +#ifndef WINGDIAPI +#define GLEW_WINGDIAPI_DEFINED +#define WINGDIAPI __declspec(dllimport) +#endif +/* <ctype.h> */ +#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short wchar_t; +# define _WCHAR_T_DEFINED +#endif +/* <stddef.h> */ +#if !defined(_W64) +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif +#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) +# ifdef _WIN64 +typedef __int64 ptrdiff_t; +# else +typedef _W64 int ptrdiff_t; +# endif +# define _PTRDIFF_T_DEFINED +# define _PTRDIFF_T_ +#endif + +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# else +# define GLAPI WINGDIAPI +# endif +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#endif + +/* + * GLEW_STATIC is defined for static library. + * GLEW_BUILD is defined for building the DLL library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#else /* _UNIX */ + +/* + * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO + * C. On my system, this amounts to _3 lines_ of included code, all of + * them pretty much harmless. If you know of a way of detecting 32 vs + * 64 _targets_ at compile time you are free to replace this with + * something that's portable. For now, _this_ is the portable solution. + * (mem, 2004-01-04) + */ + +#include <stddef.h> + +/* SGI MIPSPro doesn't like stdint.h in C++ mode */ +/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */ + +#if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__) +#include <inttypes.h> +#else +#include <stdint.h> +#endif + +#define GLEW_APIENTRY_DEFINED +#define APIENTRY + +/* + * GLEW_STATIC is defined for static library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# if defined(__GNUC__) && __GNUC__>=4 +# define GLEWAPI extern __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# define GLEWAPI extern __global +# else +# define GLEWAPI extern +# endif +#endif + +/* <glu.h> */ +#ifndef GLAPI +#define GLAPI extern +#endif +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#endif /* _WIN32 */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ + +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 + +typedef unsigned int GLenum; +typedef unsigned int GLbitfield; +typedef unsigned int GLuint; +typedef int GLint; +typedef int GLsizei; +typedef unsigned char GLboolean; +typedef signed char GLbyte; +typedef short GLshort; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; +typedef unsigned long GLulong; +typedef float GLfloat; +typedef float GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void GLvoid; +#if defined(_MSC_VER) && _MSC_VER < 1400 +typedef __int64 GLint64EXT; +typedef unsigned __int64 GLuint64EXT; +#elif defined(_MSC_VER) || defined(__BORLANDC__) +typedef signed long long GLint64EXT; +typedef unsigned long long GLuint64EXT; +#else +# if defined(__MINGW32__) || defined(__CYGWIN__) +#include <inttypes.h> +# endif +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif +typedef GLint64EXT GLint64; +typedef GLuint64EXT GLuint64; +typedef struct __GLsync *GLsync; + +typedef char GLchar; + +#define GL_ZERO 0 +#define GL_FALSE 0 +#define GL_LOGIC_OP 0x0BF1 +#define GL_NONE 0 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_NO_ERROR 0 +#define GL_POINTS 0x0000 +#define GL_CURRENT_BIT 0x00000001 +#define GL_TRUE 1 +#define GL_ONE 1 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_POINT_BIT 0x00000002 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_BIT 0x00000004 +#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_BIT 0x00000008 +#define GL_POLYGON 0x0009 +#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 0x0100 +#define GL_LOAD 0x0101 +#define GL_RETURN 0x0102 +#define GL_MULT 0x0103 +#define GL_ADD 0x0104 +#define GL_NEVER 0x0200 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#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_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_STENCIL_BUFFER_BIT 0x00000400 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#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 +#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_PASS_THROUGH_TOKEN 0x0700 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_EXP 0x0800 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_EXP2 0x0801 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LIST_MODE 0x0B30 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#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_LIGHTING 0x0B50 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_SHADE_MODEL 0x0B54 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_FOG 0x0B60 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#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_MATRIX_MODE 0x0BA0 +#define GL_NORMALIZE 0x0BA1 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_INDEX_MODE 0x0C30 +#define GL_RGBA_MODE 0x0C31 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_RENDER_MODE 0x0C40 +#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_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#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_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#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_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#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_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#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_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 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_INDEX_BITS 0x0D51 +#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_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_NAME_STACK_DEPTH 0x0D70 +#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_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#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_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#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 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_COLOR_INDEX 0x1900 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_BITMAP 0x1A00 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_RENDER 0x1C00 +#define GL_FEEDBACK 0x1C01 +#define GL_SELECT 0x1C02 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_S 0x2000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV 0x2300 +#define GL_EYE_LINEAR 0x2400 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_SPHERE_MAP 0x2402 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_PLANE 0x2502 +#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_CLAMP 0x2900 +#define GL_REPEAT 0x2901 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_R3_G3_B2 0x2A10 +#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 +#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 +#define GL_LIGHT0 0x4000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#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_HINT_BIT 0x00008000 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#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_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_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_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_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_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_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000fffff +#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff + +GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); +GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); +GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void GLAPIENTRY glArrayElement (GLint i); +GLAPI void GLAPIENTRY glBegin (GLenum mode); +GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); +GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); +GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GLAPI void GLAPIENTRY glCallList (GLuint list); +GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists); +GLAPI void GLAPIENTRY glClear (GLbitfield mask); +GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); +GLAPI void GLAPIENTRY glClearIndex (GLfloat c); +GLAPI void GLAPIENTRY glClearStencil (GLint s); +GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); +GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); +GLAPI void GLAPIENTRY glColor3iv (const GLint *v); +GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); +GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void GLAPIENTRY glColor4iv (const GLint *v); +GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); +GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); +GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); +GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); +GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +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); +GLAPI void GLAPIENTRY glCullFace (GLenum mode); +GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); +GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GLAPI void GLAPIENTRY glDepthFunc (GLenum func); +GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); +GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); +GLAPI void GLAPIENTRY glDisable (GLenum cap); +GLAPI void GLAPIENTRY glDisableClientState (GLenum array); +GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); +GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); +GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); +GLAPI void GLAPIENTRY glEnable (GLenum cap); +GLAPI void GLAPIENTRY glEnableClientState (GLenum array); +GLAPI void GLAPIENTRY glEnd (void); +GLAPI void GLAPIENTRY glEndList (void); +GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); +GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); +GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); +GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); +GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); +GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); +GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); +GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); +GLAPI void GLAPIENTRY glFinish (void); +GLAPI void GLAPIENTRY glFlush (void); +GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glFrontFace (GLenum mode); +GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); +GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); +GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); +GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); +GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); +GLAPI GLenum GLAPIENTRY glGetError (void); +GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, 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 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 glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); +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 glGetPointerv (GLenum pname, GLvoid* *params); +GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); +GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); +GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, 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 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); +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 glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); +GLAPI void GLAPIENTRY glIndexMask (GLuint mask); +GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glIndexd (GLdouble c); +GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); +GLAPI void GLAPIENTRY glIndexf (GLfloat c); +GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); +GLAPI void GLAPIENTRY glIndexi (GLint c); +GLAPI void GLAPIENTRY glIndexiv (const GLint *c); +GLAPI void GLAPIENTRY glIndexs (GLshort c); +GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); +GLAPI void GLAPIENTRY glIndexub (GLubyte c); +GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); +GLAPI void GLAPIENTRY glInitNames (void); +GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); +GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); +GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); +GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); +GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); +GLAPI void GLAPIENTRY glLineWidth (GLfloat width); +GLAPI void GLAPIENTRY glListBase (GLuint base); +GLAPI void GLAPIENTRY glLoadIdentity (void); +GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glLoadName (GLuint name); +GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); +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 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 glMaterialf (GLenum face, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); +GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); +GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); +GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); +GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); +GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); +GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void GLAPIENTRY glPassThrough (GLfloat token); +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 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 glPixelZoom (GLfloat xfactor, GLfloat yfactor); +GLAPI void GLAPIENTRY glPointSize (GLfloat size); +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 glPopAttrib (void); +GLAPI void GLAPIENTRY glPopClientAttrib (void); +GLAPI void GLAPIENTRY glPopMatrix (void); +GLAPI void GLAPIENTRY glPopName (void); +GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushMatrix (void); +GLAPI void GLAPIENTRY glPushName (GLuint name); +GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); +GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); +GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); +GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); +GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); +GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); +GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); +GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); +GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); +GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); +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 glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); +GLAPI void GLAPIENTRY glShadeModel (GLenum mode); +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 glTexCoord1d (GLdouble s); +GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); +GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord1i (GLint s); +GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); +GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); +GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); +GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); +GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); +GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); +GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); +GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); +GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); +GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); +GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); +GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const 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 glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +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 glTranslated (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) + +#endif /* GL_VERSION_1_1 */ + +/* ---------------------------------- GLU ---------------------------------- */ + +#ifndef GLEW_NO_GLU +/* this is where we can safely include GLU */ +# if defined(__APPLE__) && defined(__MACH__) +# include <OpenGL/glu.h> +# else +# include <GL/glu.h> +# endif +#endif + +/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 + +#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_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_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_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_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E + +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + +#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) +#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) +#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) +#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) + +#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) + +#endif /* GL_VERSION_1_2 */ + +/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ + +#ifndef GL_VERSION_1_2_1 +#define GL_VERSION_1_2_1 1 + +#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) + +#endif /* GL_VERSION_1_2_1 */ + +/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 + +#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_CLAMP_TO_BORDER 0x812D +#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_SUBTRACT 0x84E7 +#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_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_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#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_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_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_MULTISAMPLE_BIT 0x20000000 + +typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); + +#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) +#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) +#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) +#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) +#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) +#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) +#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) +#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) +#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) +#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) +#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) +#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) +#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) +#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) +#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) +#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) +#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) +#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) +#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) +#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) +#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) +#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) +#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) +#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) +#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) +#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) +#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) +#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) +#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) +#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) +#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) +#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) +#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) +#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) +#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) +#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) +#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) +#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) +#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) +#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) +#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) +#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) +#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) +#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) +#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) +#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) + +#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) + +#endif /* GL_VERSION_1_3 */ + +/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); + +#define glBlendColor GLEW_GET_FUN(__glewBlendColor) +#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) +#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) +#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) +#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) +#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) +#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) +#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) +#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) +#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) +#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) +#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) +#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) +#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) +#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) +#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) +#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) +#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) +#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) +#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) +#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) +#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) +#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) +#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) +#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) +#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) +#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) +#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) +#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) +#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) +#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) +#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) +#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) +#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) +#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) +#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) +#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) +#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) +#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) +#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) +#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) +#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) +#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) +#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) +#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) +#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) +#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) + +#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) + +#endif /* GL_VERSION_1_4 */ + +/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 + +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#define GL_SRC2_RGB GL_SOURCE2_RGB +#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 + +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); +typedef GLvoid* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); + +#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) +#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) +#define glBufferData GLEW_GET_FUN(__glewBufferData) +#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) +#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) +#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) +#define glEndQuery GLEW_GET_FUN(__glewEndQuery) +#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) +#define glGenQueries GLEW_GET_FUN(__glewGenQueries) +#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) +#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) +#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) +#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) +#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) +#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) +#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) +#define glIsQuery GLEW_GET_FUN(__glewIsQuery) +#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) +#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) + +#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) + +#endif /* GL_VERSION_1_5 */ + +/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLuint obj, GLsizei maxLength, GLsizei* length, GLchar* source); +typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid**); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint, GLenum, GLdouble*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); +typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); + +#define glAttachShader GLEW_GET_FUN(__glewAttachShader) +#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) +#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) +#define glCompileShader GLEW_GET_FUN(__glewCompileShader) +#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) +#define glCreateShader GLEW_GET_FUN(__glewCreateShader) +#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) +#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) +#define glDetachShader GLEW_GET_FUN(__glewDetachShader) +#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) +#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) +#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) +#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) +#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) +#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) +#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) +#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) +#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) +#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) +#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) +#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) +#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) +#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) +#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) +#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) +#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) +#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) +#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) +#define glIsProgram GLEW_GET_FUN(__glewIsProgram) +#define glIsShader GLEW_GET_FUN(__glewIsShader) +#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) +#define glShaderSource GLEW_GET_FUN(__glewShaderSource) +#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) +#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) +#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) +#define glUniform1f GLEW_GET_FUN(__glewUniform1f) +#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) +#define glUniform1i GLEW_GET_FUN(__glewUniform1i) +#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) +#define glUniform2f GLEW_GET_FUN(__glewUniform2f) +#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) +#define glUniform2i GLEW_GET_FUN(__glewUniform2i) +#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) +#define glUniform3f GLEW_GET_FUN(__glewUniform3f) +#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) +#define glUniform3i GLEW_GET_FUN(__glewUniform3i) +#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) +#define glUniform4f GLEW_GET_FUN(__glewUniform4f) +#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) +#define glUniform4i GLEW_GET_FUN(__glewUniform4i) +#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) +#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) +#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) +#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) +#define glUseProgram GLEW_GET_FUN(__glewUseProgram) +#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) +#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) +#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) +#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) +#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) +#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) +#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) +#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) +#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) +#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) +#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) +#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) +#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) +#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) +#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) +#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) +#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) +#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) +#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) +#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) +#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) +#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) +#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) +#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) +#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) +#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) +#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) +#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) +#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) +#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) +#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) +#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) +#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) +#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) +#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) +#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) +#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) +#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) + +#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) + +#endif /* GL_VERSION_2_0 */ + +/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 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 + +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + +#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) +#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) +#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) +#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) +#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) +#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) + +#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) + +#endif /* GL_VERSION_2_1 */ + +/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 + +#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES +#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 +#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 +#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 +#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB +#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 +#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 +#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 +#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#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_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#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_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#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_ALPHA_INTEGER 0x8D97 +#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 + +typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint, GLenum); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum); +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint, GLuint, const GLchar*); +typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum, GLenum); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum, GLint, GLfloat, GLint); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum, GLint, const GLfloat*); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum, GLint, const GLint*); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum, GLint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum, GLuint, GLboolean*); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint, const GLchar*); +typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum, GLenum, GLint*); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum, GLenum, GLuint*); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint, GLint, GLuint*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint, GLenum, GLint*); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint, GLenum, GLuint*); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum, GLuint); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum, GLenum, const GLint*); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum, GLenum, const GLuint*); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint, GLsizei, const GLchar **, GLenum); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint, GLuint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint, GLsizei, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint, GLint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint, GLint, GLint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint, const GLbyte*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint, GLint, GLint, GLint, GLint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint, const GLint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint, const GLshort*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint, const GLubyte*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint, GLuint, GLuint, GLuint, GLuint); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint, const GLuint*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint, const GLushort*); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum, GLsizei, const GLvoid*); + +#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) +#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) +#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) +#define glClampColor GLEW_GET_FUN(__glewClampColor) +#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) +#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) +#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) +#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) +#define glColorMaski GLEW_GET_FUN(__glewColorMaski) +#define glDisablei GLEW_GET_FUN(__glewDisablei) +#define glEnablei GLEW_GET_FUN(__glewEnablei) +#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) +#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) +#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) +#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) +#define glGetStringi GLEW_GET_FUN(__glewGetStringi) +#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) +#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) +#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) +#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) +#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) +#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) +#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) +#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) +#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) +#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) +#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) +#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) +#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) +#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) +#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) +#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) +#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) +#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) +#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) +#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) +#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) +#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) +#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) +#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) +#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) +#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) +#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) +#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) +#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) +#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) +#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) +#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) +#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) +#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) +#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) +#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) +#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) +#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) +#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) + +#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) + +#endif /* GL_VERSION_3_0 */ + +/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 + +#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_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#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_BUFFER_FORMAT 0x8C2E +#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_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum, GLint, GLsizei, GLsizei); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint); +typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint); + +#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) +#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) +#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) +#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) + +#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) + +#endif /* GL_VERSION_3_1 */ + +/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 + +#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_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#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_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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum, GLenum, GLint64 *); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum, GLuint, GLint64 *); + +#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) +#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) +#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) + +#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) + +#endif /* GL_VERSION_3_2 */ + +/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#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_RGB10_A2UI 0x906F + +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); + +#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) + +#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) + +#endif /* GL_VERSION_3_3 */ + +/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 + +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#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_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F +#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 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); + +#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) +#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) +#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) +#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) +#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) + +#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) + +#endif /* GL_VERSION_4_0 */ + +/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 + +#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) + +#endif /* GL_VERSION_4_1 */ + +/* ----------------------------- GL_VERSION_4_2 ---------------------------- */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 + +#define GLEW_VERSION_4_2 GLEW_GET_VAR(__GLEW_VERSION_4_2) + +#endif /* GL_VERSION_4_2 */ + +/* -------------------------- GL_3DFX_multisample -------------------------- */ + +#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 + +#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) + +#endif /* GL_3DFX_multisample */ + +/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 + +typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); + +#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) + +#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) + +#endif /* GL_3DFX_tbuffer */ + +/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ + +#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 + +#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) + +#endif /* GL_3DFX_texture_compression_FXT1 */ + +/* ----------------------- GL_AMD_blend_minmax_factor ---------------------- */ + +#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 + +#define GLEW_AMD_blend_minmax_factor GLEW_GET_VAR(__GLEW_AMD_blend_minmax_factor) + +#endif /* GL_AMD_blend_minmax_factor */ + +/* ----------------------- GL_AMD_conservative_depth ----------------------- */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 + +#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) + +#endif /* GL_AMD_conservative_depth */ + +/* -------------------------- GL_AMD_debug_output -------------------------- */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 + +#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 (APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void* userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const char* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, char* message); + +#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) +#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) +#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) +#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) + +#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) + +#endif /* GL_AMD_debug_output */ + +/* ---------------------- GL_AMD_depth_clamp_separate ---------------------- */ + +#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 + +#define GLEW_AMD_depth_clamp_separate GLEW_GET_VAR(__GLEW_AMD_depth_clamp_separate) + +#endif /* GL_AMD_depth_clamp_separate */ + +/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + +#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) +#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) +#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) +#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) + +#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) + +#endif /* GL_AMD_draw_buffers_blend */ + +/* ----------------------- GL_AMD_multi_draw_indirect ---------------------- */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void* indirect, GLsizei primcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void* indirect, GLsizei primcount, GLsizei stride); + +#define glMultiDrawArraysIndirectAMD GLEW_GET_FUN(__glewMultiDrawArraysIndirectAMD) +#define glMultiDrawElementsIndirectAMD GLEW_GET_FUN(__glewMultiDrawElementsIndirectAMD) + +#define GLEW_AMD_multi_draw_indirect GLEW_GET_VAR(__GLEW_AMD_multi_draw_indirect) + +#endif /* GL_AMD_multi_draw_indirect */ + +/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); +typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); + +#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) +#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) +#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) + +#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) + +#endif /* GL_AMD_name_gen_delete */ + +/* ----------------------- GL_AMD_performance_monitor ---------------------- */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 + +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#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 (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void* data); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char *counterString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, char *groupString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); + +#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) +#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) +#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) +#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) +#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) +#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) +#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) +#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) +#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) +#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) +#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) + +#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) + +#endif /* GL_AMD_performance_monitor */ + +/* ------------------------ GL_AMD_sample_positions ------------------------ */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 + +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F + +typedef void (GLAPIENTRY * PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat* val); + +#define glSetMultisamplefvAMD GLEW_GET_FUN(__glewSetMultisamplefvAMD) + +#define GLEW_AMD_sample_positions GLEW_GET_VAR(__GLEW_AMD_sample_positions) + +#endif /* GL_AMD_sample_positions */ + +/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F + +#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) + +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 + +#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) + +#endif /* GL_AMD_shader_stencil_export */ + +/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 + +#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) + +#endif /* GL_AMD_texture_texture4 */ + +/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 + +#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) + +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ + +#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 (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); + +#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) +#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) + +#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) + +#endif /* GL_AMD_vertex_shader_tessellator */ + +/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 + +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 + +#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) + +#endif /* GL_APPLE_aux_depth_stencil */ + +/* ------------------------ GL_APPLE_client_storage ------------------------ */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 + +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 + +#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) + +#endif /* GL_APPLE_client_storage */ + +/* ------------------------- GL_APPLE_element_array ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void* pointer); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); + +#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) +#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) +#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) +#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) +#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) + +#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) + +#endif /* GL_APPLE_element_array */ + +/* ----------------------------- GL_APPLE_fence ---------------------------- */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 + +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B + +typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); + +#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) +#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) +#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) +#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) +#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) +#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) +#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) +#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) + +#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) + +#endif /* GL_APPLE_fence */ + +/* ------------------------- GL_APPLE_float_pixels ------------------------- */ + +#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 + +#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) + +#endif /* GL_APPLE_float_pixels */ + +/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); + +#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) +#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) + +#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) + +#endif /* GL_APPLE_flush_buffer_range */ + +/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); + +#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) +#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) +#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) + +#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) + +#endif /* GL_APPLE_object_purgeable */ + +/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ + +#ifndef GL_APPLE_pixel_buffer +#define GL_APPLE_pixel_buffer 1 + +#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 + +#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) + +#endif /* GL_APPLE_pixel_buffer */ + +/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 + +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_422_APPLE 0x8A1F + +#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) + +#endif /* GL_APPLE_rgb_422 */ + +/* --------------------------- GL_APPLE_row_bytes -------------------------- */ + +#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 + +#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) + +#endif /* GL_APPLE_row_bytes */ + +/* ------------------------ GL_APPLE_specular_vector ----------------------- */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 + +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 + +#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) + +#endif /* GL_APPLE_specular_vector */ + +/* ------------------------- GL_APPLE_texture_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); +typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid *pointer); + +#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) +#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) + +#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) + +#endif /* GL_APPLE_texture_range */ + +/* ------------------------ GL_APPLE_transform_hint ------------------------ */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 + +#define GL_TRANSFORM_HINT_APPLE 0x85B1 + +#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) + +#endif /* GL_APPLE_transform_hint */ + +/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); + +#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) +#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) +#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) +#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) + +#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) + +#endif /* GL_APPLE_vertex_array_object */ + +/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ + +#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_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF + +typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); + +#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) +#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) +#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) + +#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) + +#endif /* GL_APPLE_vertex_array_range */ + +/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ + +#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 (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); + +#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) +#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) +#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) +#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) +#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) +#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) +#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) + +#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) + +#endif /* GL_APPLE_vertex_program_evaluators */ + +/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 + +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB + +#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) + +#endif /* GL_APPLE_ycbcr_422 */ + +/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 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_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); +typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const GLvoid*binary, GLsizei length); + +#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) +#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) +#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) +#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) +#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) + +#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) + +#endif /* GL_ARB_ES2_compatibility */ + +/* -------------------------- GL_ARB_base_instance ------------------------- */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); + +#define glDrawArraysInstancedBaseInstance GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstance) +#define glDrawElementsInstancedBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstance) +#define glDrawElementsInstancedBaseVertexBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstance) + +#define GLEW_ARB_base_instance GLEW_GET_VAR(__GLEW_ARB_base_instance) + +#endif /* GL_ARB_base_instance */ + +/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const char * name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const char * name); + +#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) +#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) + +#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) + +#endif /* GL_ARB_blend_func_extended */ + +/* ---------------------------- GL_ARB_cl_event ---------------------------- */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 + +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 + +typedef struct _cl_context *cl_context; +typedef struct _cl_event *cl_event; + +typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); + +#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) + +#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) + +#endif /* GL_ARB_cl_event */ + +/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); + +#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) + +#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) + +#endif /* GL_ARB_color_buffer_float */ + +/* -------------------------- GL_ARB_compatibility ------------------------- */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 + +#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) + +#endif /* GL_ARB_compatibility */ + +/* ---------------- GL_ARB_compressed_texture_pixel_storage ---------------- */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 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 GLEW_ARB_compressed_texture_pixel_storage GLEW_GET_VAR(__GLEW_ARB_compressed_texture_pixel_storage) + +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +/* ----------------------- GL_ARB_conservative_depth ----------------------- */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 + +#define GLEW_ARB_conservative_depth GLEW_GET_VAR(__GLEW_ARB_conservative_depth) + +#endif /* GL_ARB_conservative_depth */ + +/* --------------------------- GL_ARB_copy_buffer -------------------------- */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 + +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 + +typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); + +#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) + +#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) + +#endif /* GL_ARB_copy_buffer */ + +/* -------------------------- GL_ARB_debug_output -------------------------- */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 + +#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 (APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, void* userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, char* messageLog); + +#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) +#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) +#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) +#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) + +#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) + +#endif /* GL_ARB_debug_output */ + +/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 + +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD + +#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) + +#endif /* GL_ARB_depth_buffer_float */ + +/* --------------------------- GL_ARB_depth_clamp -------------------------- */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 + +#define GL_DEPTH_CLAMP 0x864F + +#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) + +#endif /* GL_ARB_depth_clamp */ + +/* -------------------------- GL_ARB_depth_texture ------------------------- */ + +#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 + +#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) + +#endif /* GL_ARB_depth_texture */ + +/* -------------------------- GL_ARB_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) + +#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) + +#endif /* GL_ARB_draw_buffers */ + +/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); + +#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) +#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) +#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) +#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) + +#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) + +#endif /* GL_ARB_draw_buffers_blend */ + +/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 + +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, void* indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, void* indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei* count, GLenum type, GLvoid**indices, GLsizei primcount, GLint *basevertex); + +#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) +#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) +#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) +#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) + +#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) + +#endif /* GL_ARB_draw_elements_base_vertex */ + +/* -------------------------- GL_ARB_draw_indirect ------------------------- */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 + +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void* indirect); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void* indirect); + +#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) +#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) + +#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) + +#endif /* GL_ARB_draw_indirect */ + +/* ------------------------- GL_ARB_draw_instanced ------------------------- */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 + +#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) + +#endif /* GL_ARB_draw_instanced */ + +/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 + +#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) + +#endif /* GL_ARB_explicit_attrib_location */ + +/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 + +#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) + +#endif /* GL_ARB_fragment_coord_conventions */ + +/* ------------------------ GL_ARB_fragment_program ------------------------ */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 + +#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 + +#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) + +#endif /* GL_ARB_fragment_program */ + +/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 + +#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) + +#endif /* GL_ARB_fragment_program_shadow */ + +/* ------------------------- GL_ARB_fragment_shader ------------------------ */ + +#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 + +#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) + +#endif /* GL_ARB_fragment_shader */ + +/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 + +#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_INDEX 0x8222 +#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_UNSIGNED_NORMALIZED 0x8C17 +#define GL_SRGB 0x8C40 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) +#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) +#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) +#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) +#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) +#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) +#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) +#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) +#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) +#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) +#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) +#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) +#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) +#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) +#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) +#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) +#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) +#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) +#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) +#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) + +#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) + +#endif /* GL_ARB_framebuffer_object */ + +/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB 0x8DB9 + +#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) + +#endif /* GL_ARB_framebuffer_sRGB */ + +/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_ARB 0xA +#define GL_LINE_STRIP_ADJACENCY_ARB 0xB +#define GL_TRIANGLES_ADJACENCY_ARB 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#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 (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) +#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) +#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) +#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) + +#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) + +#endif /* GL_ARB_geometry_shader4 */ + +/* ----------------------- GL_ARB_get_program_binary ----------------------- */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, GLvoid*binary); +typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); + +#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) +#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) +#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) + +#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) + +#endif /* GL_ARB_get_program_binary */ + +/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 + +#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 GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) + +#endif /* GL_ARB_gpu_shader5 */ + +/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 + +#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_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + +#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) +#define glProgramUniform1dEXT GLEW_GET_FUN(__glewProgramUniform1dEXT) +#define glProgramUniform1dvEXT GLEW_GET_FUN(__glewProgramUniform1dvEXT) +#define glProgramUniform2dEXT GLEW_GET_FUN(__glewProgramUniform2dEXT) +#define glProgramUniform2dvEXT GLEW_GET_FUN(__glewProgramUniform2dvEXT) +#define glProgramUniform3dEXT GLEW_GET_FUN(__glewProgramUniform3dEXT) +#define glProgramUniform3dvEXT GLEW_GET_FUN(__glewProgramUniform3dvEXT) +#define glProgramUniform4dEXT GLEW_GET_FUN(__glewProgramUniform4dEXT) +#define glProgramUniform4dvEXT GLEW_GET_FUN(__glewProgramUniform4dvEXT) +#define glProgramUniformMatrix2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2dvEXT) +#define glProgramUniformMatrix2x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3dvEXT) +#define glProgramUniformMatrix2x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4dvEXT) +#define glProgramUniformMatrix3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3dvEXT) +#define glProgramUniformMatrix3x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2dvEXT) +#define glProgramUniformMatrix3x4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4dvEXT) +#define glProgramUniformMatrix4dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4dvEXT) +#define glProgramUniformMatrix4x2dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2dvEXT) +#define glProgramUniformMatrix4x3dvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3dvEXT) +#define glUniform1d GLEW_GET_FUN(__glewUniform1d) +#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) +#define glUniform2d GLEW_GET_FUN(__glewUniform2d) +#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) +#define glUniform3d GLEW_GET_FUN(__glewUniform3d) +#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) +#define glUniform4d GLEW_GET_FUN(__glewUniform4d) +#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) +#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) +#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) +#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) +#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) +#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) +#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) +#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) +#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) +#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) + +#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) + +#endif /* GL_ARB_gpu_shader_fp64 */ + +/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 + +#define GL_HALF_FLOAT_ARB 0x140B + +#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) + +#endif /* GL_ARB_half_float_pixel */ + +/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 + +#define GL_HALF_FLOAT 0x140B + +#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) + +#endif /* GL_ARB_half_float_vertex */ + +/* ----------------------------- GL_ARB_imaging ---------------------------- */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 + +#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_IGNORE_BORDER 0x8150 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_WRAP_BORDER 0x8152 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + +#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) +#define glColorTable GLEW_GET_FUN(__glewColorTable) +#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) +#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) +#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) +#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) +#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) +#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) +#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) +#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) +#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) +#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) +#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) +#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) +#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) +#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) +#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) +#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) +#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) +#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) +#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) +#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) +#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) +#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) +#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) +#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) +#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) +#define glHistogram GLEW_GET_FUN(__glewHistogram) +#define glMinmax GLEW_GET_FUN(__glewMinmax) +#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) +#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) +#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) + +#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) + +#endif /* GL_ARB_imaging */ + +/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); + +#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) +#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) +#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) + +#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) + +#endif /* GL_ARB_instanced_arrays */ + +/* ---------------------- GL_ARB_internalformat_query ---------------------- */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 + +#define GL_NUM_SAMPLE_COUNTS 0x9380 + +typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); + +#define glGetInternalformativ GLEW_GET_FUN(__glewGetInternalformativ) + +#define GLEW_ARB_internalformat_query GLEW_GET_VAR(__GLEW_ARB_internalformat_query) + +#endif /* GL_ARB_internalformat_query */ + +/* ---------------------- GL_ARB_map_buffer_alignment ---------------------- */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 + +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC + +#define GLEW_ARB_map_buffer_alignment GLEW_GET_VAR(__GLEW_ARB_map_buffer_alignment) + +#endif /* GL_ARB_map_buffer_alignment */ + +/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + +#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) +#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) + +#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) + +#endif /* GL_ARB_map_buffer_range */ + +/* ------------------------- GL_ARB_matrix_palette ------------------------- */ + +#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 (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); + +#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) +#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) +#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) +#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) +#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) + +#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) + +#endif /* GL_ARB_matrix_palette */ + +/* --------------------------- GL_ARB_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); + +#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) + +#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) + +#endif /* GL_ARB_multisample */ + +/* -------------------------- GL_ARB_multitexture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) +#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) +#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) +#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) +#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) +#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) +#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) +#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) +#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) +#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) +#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) +#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) +#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) +#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) +#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) +#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) +#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) +#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) +#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) +#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) +#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) +#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) +#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) +#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) +#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) +#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) +#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) +#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) +#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) +#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) +#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) +#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) +#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) +#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) + +#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) + +#endif /* GL_ARB_multitexture */ + +/* ------------------------- GL_ARB_occlusion_query ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); + +#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) +#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) +#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) +#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) +#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) +#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) +#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) +#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) + +#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) + +#endif /* GL_ARB_occlusion_query */ + +/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 + +#define GL_ANY_SAMPLES_PASSED 0x8C2F + +#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) + +#endif /* GL_ARB_occlusion_query2 */ + +/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) + +#endif /* GL_ARB_pixel_buffer_object */ + +/* ------------------------ GL_ARB_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) +#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) + +#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) + +#endif /* GL_ARB_point_parameters */ + +/* -------------------------- GL_ARB_point_sprite -------------------------- */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 + +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 + +#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) + +#endif /* GL_ARB_point_sprite */ + +/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); + +#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) + +#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) + +#endif /* GL_ARB_provoking_vertex */ + +/* --------------------------- GL_ARB_robustness --------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); +typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); +typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); +typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); +typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); +typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, GLvoid*column, GLvoid*span); +typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); +typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); + +#define glGetGraphicsResetStatusARB GLEW_GET_FUN(__glewGetGraphicsResetStatusARB) +#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) +#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) +#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) +#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) +#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) +#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) +#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) +#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) +#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) +#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) +#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) +#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) +#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) +#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) +#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) +#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) +#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) +#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) +#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) + +#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) + +#endif /* GL_ARB_robustness */ + +/* ------------------------- GL_ARB_sample_shading ------------------------- */ + +#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 (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); + +#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) + +#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) + +#endif /* GL_ARB_sample_shading */ + +/* ------------------------- GL_ARB_sampler_objects ------------------------ */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 + +#define GL_SAMPLER_BINDING 0x8919 + +typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); +typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); + +#define glBindSampler GLEW_GET_FUN(__glewBindSampler) +#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) +#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) +#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) +#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) +#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) +#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) +#define glIsSampler GLEW_GET_FUN(__glewIsSampler) +#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) +#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) +#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) +#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) +#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) +#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) + +#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) + +#endif /* GL_ARB_sampler_objects */ + +/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F + +#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) + +#endif /* GL_ARB_seamless_cube_map */ + +/* --------------------- GL_ARB_separate_shader_objects -------------------- */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 + +#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_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_ALL_SHADER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const char ** strings); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, char *infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); + +#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) +#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) +#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) +#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) +#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) +#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) +#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) +#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) +#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) +#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) +#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) +#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) +#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) +#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) +#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) +#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) +#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) +#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) +#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) +#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) +#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) +#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) +#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) +#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) +#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) +#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) +#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) +#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) +#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) +#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) +#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) +#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) +#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) +#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) +#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) +#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) +#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) +#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) +#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) +#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) +#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) +#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) +#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) +#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) +#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) +#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) +#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) +#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) +#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) +#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) +#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) +#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) +#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) +#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) +#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) +#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) +#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) +#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) +#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) +#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) + +#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) + +#endif /* GL_ARB_separate_shader_objects */ + +/* --------------------- GL_ARB_shader_atomic_counters --------------------- */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 + +#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_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC + +typedef void (GLAPIENTRY * PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params); + +#define glGetActiveAtomicCounterBufferiv GLEW_GET_FUN(__glewGetActiveAtomicCounterBufferiv) + +#define GLEW_ARB_shader_atomic_counters GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counters) + +#endif /* GL_ARB_shader_atomic_counters */ + +/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 + +#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) + +#endif /* GL_ARB_shader_bit_encoding */ + +/* --------------------- GL_ARB_shader_image_load_store -------------------- */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); + +#define glBindImageTexture GLEW_GET_FUN(__glewBindImageTexture) +#define glMemoryBarrier GLEW_GET_FUN(__glewMemoryBarrier) + +#define GLEW_ARB_shader_image_load_store GLEW_GET_VAR(__GLEW_ARB_shader_image_load_store) + +#endif /* GL_ARB_shader_image_load_store */ + +/* ------------------------- GL_ARB_shader_objects ------------------------- */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 + +#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 char GLcharARB; +typedef unsigned int GLhandleARB; + +typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); +typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); + +#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) +#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) +#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) +#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) +#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) +#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) +#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) +#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) +#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) +#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) +#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) +#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) +#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) +#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) +#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) +#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) +#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) +#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) +#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) +#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) +#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) +#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) +#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) +#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) +#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) +#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) +#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) +#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) +#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) +#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) +#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) +#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) +#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) +#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) +#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) +#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) +#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) +#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) +#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) + +#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) + +#endif /* GL_ARB_shader_objects */ + +/* ------------------------ GL_ARB_shader_precision ------------------------ */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 + +#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) + +#endif /* GL_ARB_shader_precision */ + +/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 + +#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) + +#endif /* GL_ARB_shader_stencil_export */ + +/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 + +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B + +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); +typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const char* name); +typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const char* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); +typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); + +#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) +#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) +#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) +#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) +#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) +#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) +#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) +#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) + +#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) + +#endif /* GL_ARB_shader_subroutine */ + +/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 + +#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) + +#endif /* GL_ARB_shader_texture_lod */ + +/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 + +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C + +#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) + +#endif /* GL_ARB_shading_language_100 */ + +/* -------------------- GL_ARB_shading_language_420pack -------------------- */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 + +#define GLEW_ARB_shading_language_420pack GLEW_GET_VAR(__GLEW_ARB_shading_language_420pack) + +#endif /* GL_ARB_shading_language_420pack */ + +/* -------------------- GL_ARB_shading_language_include -------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const char ** path, const GLint *length); +typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const char* name); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const char* name, GLsizei bufSize, GLint *stringlen, char *string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const char* name, GLenum pname, GLint *params); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const char* name); +typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const char* name, GLint stringlen, const char *string); + +#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) +#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) +#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) +#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) +#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) +#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) + +#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) + +#endif /* GL_ARB_shading_language_include */ + +/* -------------------- GL_ARB_shading_language_packing -------------------- */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 + +#define GLEW_ARB_shading_language_packing GLEW_GET_VAR(__GLEW_ARB_shading_language_packing) + +#endif /* GL_ARB_shading_language_packing */ + +/* ----------------------------- GL_ARB_shadow ----------------------------- */ + +#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 + +#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) + +#endif /* GL_ARB_shadow */ + +/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 + +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF + +#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) + +#endif /* GL_ARB_shadow_ambient */ + +/* ------------------------------ GL_ARB_sync ------------------------------ */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 + +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#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 0xFFFFFFFFFFFFFFFF + +typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); +typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); +typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); +typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); +typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); + +#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) +#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) +#define glFenceSync GLEW_GET_FUN(__glewFenceSync) +#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) +#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) +#define glIsSync GLEW_GET_FUN(__glewIsSync) +#define glWaitSync GLEW_GET_FUN(__glewWaitSync) + +#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) + +#endif /* GL_ARB_sync */ + +/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 + +#define GL_PATCHES 0xE +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#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_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_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A + +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); + +#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) +#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) + +#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) + +#endif /* GL_ARB_tessellation_shader */ + +/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_ARB 0x812D + +#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) + +#endif /* GL_ARB_texture_border_clamp */ + +/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) + +#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) + +#endif /* GL_ARB_texture_buffer_object */ + +/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 + +#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) + +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +/* ----------------------- GL_ARB_texture_compression ---------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void* img); + +#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) +#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) +#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) +#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) +#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) +#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) +#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) + +#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) + +#endif /* GL_ARB_texture_compression */ + +/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ + +#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 + +#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) + +#endif /* GL_ARB_texture_compression_bptc */ + +/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 + +#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 GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) + +#endif /* GL_ARB_texture_compression_rgtc */ + +/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) + +#endif /* GL_ARB_texture_cube_map */ + +/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ + +#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 + +#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) + +#endif /* GL_ARB_texture_cube_map_array */ + +/* ------------------------- GL_ARB_texture_env_add ------------------------ */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 + +#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) + +#endif /* GL_ARB_texture_env_add */ + +/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 + +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#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 GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) + +#endif /* GL_ARB_texture_env_combine */ + +/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 + +#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) + +#endif /* GL_ARB_texture_env_crossbar */ + +/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) + +#endif /* GL_ARB_texture_env_dot3 */ + +/* -------------------------- GL_ARB_texture_float ------------------------- */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 + +#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 +#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 GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) + +#endif /* GL_ARB_texture_float */ + +/* ------------------------- GL_ARB_texture_gather ------------------------- */ + +#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 + +#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) + +#endif /* GL_ARB_texture_gather */ + +/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_ARB 0x8370 + +#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) + +#endif /* GL_ARB_texture_mirrored_repeat */ + +/* ----------------------- GL_ARB_texture_multisample ---------------------- */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + +#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) +#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) +#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) +#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) + +#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) + +#endif /* GL_ARB_texture_multisample */ + +/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 + +#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) + +#endif /* GL_ARB_texture_non_power_of_two */ + +/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 + +#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) + +#endif /* GL_ARB_texture_query_lod */ + +/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ + +#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 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 + +#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) + +#endif /* GL_ARB_texture_rectangle */ + +/* --------------------------- GL_ARB_texture_rg --------------------------- */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 + +#define GL_RED 0x1903 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#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 GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) + +#endif /* GL_ARB_texture_rg */ + +/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 + +#define GL_RGB10_A2UI 0x906F + +#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) + +#endif /* GL_ARB_texture_rgb10_a2ui */ + +/* ------------------------- GL_ARB_texture_storage ------------------------ */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 + +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + +#define glTexStorage1D GLEW_GET_FUN(__glewTexStorage1D) +#define glTexStorage2D GLEW_GET_FUN(__glewTexStorage2D) +#define glTexStorage3D GLEW_GET_FUN(__glewTexStorage3D) +#define glTextureStorage1DEXT GLEW_GET_FUN(__glewTextureStorage1DEXT) +#define glTextureStorage2DEXT GLEW_GET_FUN(__glewTextureStorage2DEXT) +#define glTextureStorage3DEXT GLEW_GET_FUN(__glewTextureStorage3DEXT) + +#define GLEW_ARB_texture_storage GLEW_GET_VAR(__GLEW_ARB_texture_storage) + +#endif /* GL_ARB_texture_storage */ + +/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 + +#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 GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) + +#endif /* GL_ARB_texture_swizzle */ + +/* --------------------------- GL_ARB_timer_query -------------------------- */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 + +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); +typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); + +#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) +#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) +#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) + +#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) + +#endif /* GL_ARB_timer_query */ + +/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); + +#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) +#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) +#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) +#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) +#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) +#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) +#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) + +#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) + +#endif /* GL_ARB_transform_feedback2 */ + +/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 + +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_VERTEX_STREAMS 0x8E71 + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); + +#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) +#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) +#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) +#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) + +#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) + +#endif /* GL_ARB_transform_feedback3 */ + +/* ------------------ GL_ARB_transform_feedback_instanced ------------------ */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); + +#define glDrawTransformFeedbackInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackInstanced) +#define glDrawTransformFeedbackStreamInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackStreamInstanced) + +#define GLEW_ARB_transform_feedback_instanced GLEW_GET_VAR(__GLEW_ARB_transform_feedback_instanced) + +#endif /* GL_ARB_transform_feedback_instanced */ + +/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ + +#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 (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); + +#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) +#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) +#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) +#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) + +#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) + +#endif /* GL_ARB_transpose_matrix */ + +/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 + +#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 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, char* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, char* uniformName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); +typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const char* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const char** uniformNames, GLuint* uniformIndices); +typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + +#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) +#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) +#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) +#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) +#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) +#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) +#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) +#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) +#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) +#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) + +#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) + +#endif /* GL_ARB_uniform_buffer_object */ + +/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) + +#endif /* GL_ARB_vertex_array_bgra */ + +/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); + +#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) +#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) +#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) +#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) + +#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) + +#endif /* GL_ARB_vertex_array_object */ + +/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 + +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + +#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) +#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) +#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) +#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) +#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) +#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) +#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) +#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) +#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) +#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) + +#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) + +#endif /* GL_ARB_vertex_attrib_64bit */ + +/* -------------------------- GL_ARB_vertex_blend -------------------------- */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 + +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#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_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 (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); +typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); + +#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) +#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) +#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) +#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) +#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) +#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) +#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) +#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) +#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) +#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) + +#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) + +#endif /* GL_ARB_vertex_blend */ + +/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 + +#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 ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid* data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid* data); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); + +#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) +#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) +#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) +#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) +#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) +#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) +#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) +#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) +#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) +#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) +#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) + +#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) + +#endif /* GL_ARB_vertex_buffer_object */ + +/* ------------------------- GL_ARB_vertex_program ------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void* string); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void* string); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); + +#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) +#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) +#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) +#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) +#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) +#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) +#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) +#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) +#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) +#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) +#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) +#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) +#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) +#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) +#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) +#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) +#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) +#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) +#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) +#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) +#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) +#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) +#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) +#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) +#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) +#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) +#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) +#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) +#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) +#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) +#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) +#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) +#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) +#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) +#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) +#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) +#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) +#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) +#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) +#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) +#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) +#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) +#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) +#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) +#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) +#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) +#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) +#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) +#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) +#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) +#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) +#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) +#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) +#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) +#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) +#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) +#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) +#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) +#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) +#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) +#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) +#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) + +#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) + +#endif /* GL_ARB_vertex_program */ + +/* -------------------------- GL_ARB_vertex_shader ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); + +#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) +#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) +#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) + +#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) + +#endif /* GL_ARB_vertex_shader */ + +/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 + +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_INT_2_10_10_10_REV 0x8D9F + +typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); + +#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) +#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) +#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) +#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) +#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) +#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) +#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) +#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) +#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) +#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) +#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) +#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) +#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) +#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) +#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) +#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) +#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) +#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) +#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) +#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) +#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) +#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) +#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) +#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) +#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) +#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) +#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) +#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) +#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) +#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) +#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) +#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) +#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) +#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) +#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) +#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) +#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) +#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) + +#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) + +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +/* ------------------------- GL_ARB_viewport_array ------------------------- */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 + +#define GL_DEPTH_RANGE 0x0B70 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#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 +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F + +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); + +#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) +#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) +#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) +#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) +#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) +#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) +#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) +#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) +#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) +#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) + +#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) + +#endif /* GL_ARB_viewport_array */ + +/* --------------------------- GL_ARB_window_pos --------------------------- */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); + +#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) +#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) +#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) +#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) +#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) +#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) +#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) +#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) +#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) +#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) +#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) +#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) +#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) +#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) +#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) +#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) + +#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) + +#endif /* GL_ARB_window_pos */ + +/* ------------------------- GL_ATIX_point_sprites ------------------------- */ + +#ifndef GL_ATIX_point_sprites +#define GL_ATIX_point_sprites 1 + +#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 +#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 +#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 +#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 +#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 +#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 + +#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) + +#endif /* GL_ATIX_point_sprites */ + +/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ + +#ifndef GL_ATIX_texture_env_combine3 +#define GL_ATIX_texture_env_combine3 1 + +#define GL_MODULATE_ADD_ATIX 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 +#define GL_MODULATE_SUBTRACT_ATIX 0x8746 + +#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) + +#endif /* GL_ATIX_texture_env_combine3 */ + +/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ + +#ifndef GL_ATIX_texture_env_route +#define GL_ATIX_texture_env_route 1 + +#define GL_SECONDARY_COLOR_ATIX 0x8747 +#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 +#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 + +#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) + +#endif /* GL_ATIX_texture_env_route */ + +/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ + +#ifndef GL_ATIX_vertex_shader_output_point_size +#define GL_ATIX_vertex_shader_output_point_size 1 + +#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E + +#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) + +#endif /* GL_ATIX_vertex_shader_output_point_size */ + +/* -------------------------- GL_ATI_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) + +#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) + +#endif /* GL_ATI_draw_buffers */ + +/* -------------------------- GL_ATI_element_array ------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void* pointer); + +#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) +#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) +#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) + +#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) + +#endif /* GL_ATI_element_array */ + +/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); + +#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) +#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) +#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) +#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) + +#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) + +#endif /* GL_ATI_envmap_bumpmap */ + +/* ------------------------- GL_ATI_fragment_shader ------------------------ */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 + +#define GL_RED_BIT_ATI 0x00000001 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#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_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_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_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 + +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); + +#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) +#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) +#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) +#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) +#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) +#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) +#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) +#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) +#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) +#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) +#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) +#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) +#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) +#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) + +#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) + +#endif /* GL_ATI_fragment_shader */ + +/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 + +typedef void* (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); + +#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) +#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) + +#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) + +#endif /* GL_ATI_map_object_buffer */ + +/* ----------------------------- GL_ATI_meminfo ---------------------------- */ + +#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 + +#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) + +#endif /* GL_ATI_meminfo */ + +/* -------------------------- GL_ATI_pn_triangles -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); + +#define glPNTrianglesfATI GLEW_GET_FUN(__glewPNTrianglesfATI) +#define glPNTrianglesiATI GLEW_GET_FUN(__glewPNTrianglesiATI) + +#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) + +#endif /* GL_ATI_pn_triangles */ + +/* ------------------------ GL_ATI_separate_stencil ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + +#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) +#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) + +#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) + +#endif /* GL_ATI_separate_stencil */ + +/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ + +#ifndef GL_ATI_shader_texture_lod +#define GL_ATI_shader_texture_lod 1 + +#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) + +#endif /* GL_ATI_shader_texture_lod */ + +/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 + +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 + +#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) + +#endif /* GL_ATI_text_fragment_shader */ + +/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ + +#ifndef GL_ATI_texture_compression_3dc +#define GL_ATI_texture_compression_3dc 1 + +#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 + +#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) + +#endif /* GL_ATI_texture_compression_3dc */ + +/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ + +#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 + +#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) + +#endif /* GL_ATI_texture_env_combine3 */ + +/* -------------------------- GL_ATI_texture_float ------------------------- */ + +#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 + +#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) + +#endif /* GL_ATI_texture_float */ + +/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ + +#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 + +#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) + +#endif /* GL_ATI_texture_mirror_once */ + +/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ + +#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 void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void* pointer, GLenum usage); +typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); +typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + +#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) +#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) +#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) +#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) +#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) +#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) +#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) +#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) +#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) +#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) +#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) +#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) + +#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) + +#endif /* GL_ATI_vertex_array_object */ + +/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); + +#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) +#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) +#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) + +#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) + +#endif /* GL_ATI_vertex_attrib_array_object */ + +/* ------------------------- GL_ATI_vertex_streams ------------------------- */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 + +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_SOURCE_ATI 0x876C +#define GL_VERTEX_STREAM0_ATI 0x876D +#define GL_VERTEX_STREAM1_ATI 0x876E +#define GL_VERTEX_STREAM2_ATI 0x876F +#define GL_VERTEX_STREAM3_ATI 0x8770 +#define GL_VERTEX_STREAM4_ATI 0x8771 +#define GL_VERTEX_STREAM5_ATI 0x8772 +#define GL_VERTEX_STREAM6_ATI 0x8773 +#define GL_VERTEX_STREAM7_ATI 0x8774 + +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *v); + +#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) +#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) +#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) +#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) +#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) +#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) +#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) +#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) +#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) +#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) +#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) +#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) +#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) +#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) +#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) +#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) +#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) +#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) +#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) +#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) +#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) +#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) +#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) +#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) +#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) +#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) +#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) +#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) +#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) +#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) +#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) +#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) +#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) +#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) +#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) +#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) +#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) + +#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) + +#endif /* GL_ATI_vertex_streams */ + +/* --------------------------- GL_EXT_422_pixels --------------------------- */ + +#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 + +#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) + +#endif /* GL_EXT_422_pixels */ + +/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ + +#ifndef GL_EXT_Cg_shader +#define GL_EXT_Cg_shader 1 + +#define GL_CG_VERTEX_SHADER_EXT 0x890E +#define GL_CG_FRAGMENT_SHADER_EXT 0x890F + +#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) + +#endif /* GL_EXT_Cg_shader */ + +/* ------------------------------ GL_EXT_abgr ------------------------------ */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 + +#define GL_ABGR_EXT 0x8000 + +#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) + +#endif /* GL_EXT_abgr */ + +/* ------------------------------ GL_EXT_bgra ------------------------------ */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 + +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 + +#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) + +#endif /* GL_EXT_bgra */ + +/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ + +#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 GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); + +#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) +#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) +#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) + +#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) + +#endif /* GL_EXT_bindable_uniform */ + +/* --------------------------- GL_EXT_blend_color -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + +#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) + +#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) + +#endif /* GL_EXT_blend_color */ + +/* --------------------- GL_EXT_blend_equation_separate -------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); + +#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) + +#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) + +#endif /* GL_EXT_blend_equation_separate */ + +/* ----------------------- GL_EXT_blend_func_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 (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) + +#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) + +#endif /* GL_EXT_blend_func_separate */ + +/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 + +#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) + +#endif /* GL_EXT_blend_logic_op */ + +/* -------------------------- GL_EXT_blend_minmax -------------------------- */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 + +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); + +#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) + +#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) + +#endif /* GL_EXT_blend_minmax */ + +/* ------------------------- GL_EXT_blend_subtract ------------------------- */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 + +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B + +#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) + +#endif /* GL_EXT_blend_subtract */ + +/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 + +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 + +#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) + +#endif /* GL_EXT_clip_volume_hint */ + +/* ------------------------------ GL_EXT_cmyka ----------------------------- */ + +#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 + +#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) + +#endif /* GL_EXT_cmyka */ + +/* ------------------------- GL_EXT_color_subtable ------------------------- */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + +#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) +#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) + +#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) + +#endif /* GL_EXT_color_subtable */ + +/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ + +#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 (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); + +#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) +#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) + +#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) + +#endif /* GL_EXT_compiled_vertex_array */ + +/* --------------------------- GL_EXT_convolution -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* row, const void* column); + +#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) +#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) +#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) +#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) +#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) +#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) +#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) +#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) +#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) +#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) +#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) +#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) +#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) + +#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) + +#endif /* GL_EXT_convolution */ + +/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); +typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); + +#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) +#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) + +#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) + +#endif /* GL_EXT_coordinate_frame */ + +/* -------------------------- GL_EXT_copy_texture -------------------------- */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 + +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) +#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) +#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) +#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) +#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) + +#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) + +#endif /* GL_EXT_copy_texture */ + +/* --------------------------- GL_EXT_cull_vertex -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); + +#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) +#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) + +#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) + +#endif /* GL_EXT_cull_vertex */ + +/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ + +#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 (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); + +#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) + +#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) + +#endif /* GL_EXT_depth_bounds_test */ + +/* ----------------------- GL_EXT_direct_state_access ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * 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* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); +typedef void (GLAPIENTRY * 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* data); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void* img); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void* img); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void* string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, GLvoid** params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLvoid** param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, GLvoid** param); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); +typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * 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 GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + +#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) +#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) +#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) +#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) +#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) +#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) +#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) +#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) +#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) +#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) +#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) +#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) +#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) +#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) +#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) +#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) +#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) +#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) +#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) +#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) +#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) +#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) +#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) +#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) +#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) +#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) +#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) +#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) +#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) +#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) +#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) +#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) +#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) +#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) +#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) +#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) +#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) +#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) +#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) +#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) +#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) +#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) +#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) +#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) +#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) +#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) +#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) +#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) +#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) +#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) +#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) +#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) +#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) +#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) +#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) +#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) +#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) +#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) +#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) +#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) +#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) +#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) +#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) +#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) +#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) +#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) +#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) +#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) +#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) +#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) +#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) +#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) +#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) +#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) +#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) +#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) +#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) +#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) +#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) +#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) +#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) +#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) +#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) +#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) +#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) +#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) +#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) +#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) +#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) +#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) +#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) +#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) +#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) +#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) +#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) +#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) +#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) +#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) +#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) +#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) +#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) +#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) +#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) +#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) +#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) +#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) +#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) +#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) +#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) +#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) +#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) +#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) +#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) +#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) +#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) +#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) +#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) +#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) +#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) +#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) +#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) +#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) +#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) +#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) +#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) +#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) +#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) +#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) +#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) +#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) +#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) +#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) +#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) +#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) +#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) +#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) +#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) +#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) +#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) +#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) +#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) +#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) +#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) +#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) +#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) +#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) +#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) +#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) +#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) +#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) +#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) +#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) +#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) +#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) +#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) +#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) +#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) +#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) +#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) +#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) +#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) +#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) +#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) +#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) +#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) +#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) +#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) +#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) +#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) +#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) +#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) +#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) +#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) +#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) +#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) +#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) +#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) +#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) +#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) +#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) +#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) +#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) +#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) +#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) +#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) +#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) +#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) +#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) +#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) +#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) +#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) +#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) +#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) +#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) +#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) +#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) +#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) +#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) +#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) +#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) +#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) +#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) +#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) +#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) +#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) +#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) +#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) +#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) +#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) +#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) +#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) +#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) +#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) + +#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) + +#endif /* GL_EXT_direct_state_access */ + +/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 + +typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); +typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); + +#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) +#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) +#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) +#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) +#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) +#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) + +#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) + +#endif /* GL_EXT_draw_buffers2 */ + +/* ------------------------- GL_EXT_draw_instanced ------------------------- */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); + +#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) +#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) + +#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) + +#endif /* GL_EXT_draw_instanced */ + +/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + +#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) + +#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) + +#endif /* GL_EXT_draw_range_elements */ + +/* ---------------------------- GL_EXT_fog_coord --------------------------- */ + +#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 (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); + +#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) +#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) +#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) +#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) +#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) + +#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) + +#endif /* GL_EXT_fog_coord */ + +/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ + +#ifndef GL_EXT_fragment_lighting +#define GL_EXT_fragment_lighting 1 + +#define GL_FRAGMENT_LIGHTING_EXT 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 +#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 +#define GL_LIGHT_ENV_MODE_EXT 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B +#define GL_FRAGMENT_LIGHT0_EXT 0x840C +#define GL_FRAGMENT_LIGHT7_EXT 0x8413 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); + +#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) +#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) +#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) +#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) +#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) +#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) +#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) +#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) +#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) +#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) +#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) +#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) +#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) +#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) +#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) +#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) +#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) +#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) + +#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) + +#endif /* GL_EXT_fragment_lighting */ + +/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 + +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA + +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) + +#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) + +#endif /* GL_EXT_framebuffer_blit */ + +/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) + +#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) + +#endif /* GL_EXT_framebuffer_multisample */ + +/* --------------- GL_EXT_framebuffer_multisample_blit_scaled -------------- */ + +#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 + +#define GLEW_EXT_framebuffer_multisample_blit_scaled GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample_blit_scaled) + +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) +#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) +#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) +#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) +#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) +#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) +#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) +#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) +#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) +#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) +#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) +#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) +#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) +#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) +#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) +#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) +#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) + +#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) + +#endif /* GL_EXT_framebuffer_object */ + +/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA + +#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) + +#endif /* GL_EXT_framebuffer_sRGB */ + +/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_EXT 0xA +#define GL_LINE_STRIP_ADJACENCY_EXT 0xB +#define GL_TRIANGLES_ADJACENCY_EXT 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#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_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_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) +#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) +#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) + +#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) + +#endif /* GL_EXT_geometry_shader4 */ + +/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 + +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); + +#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) +#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) + +#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) + +#endif /* GL_EXT_gpu_program_parameters */ + +/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) +#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) +#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) +#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) +#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) +#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) +#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) +#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) +#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) +#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) +#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) +#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) +#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) +#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) +#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) +#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) +#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) +#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) +#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) +#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) +#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) +#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) +#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) +#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) +#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) +#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) +#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) +#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) +#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) +#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) +#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) +#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) +#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) +#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) + +#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) + +#endif /* GL_EXT_gpu_shader4 */ + +/* ---------------------------- GL_EXT_histogram --------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); + +#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) +#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) +#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) +#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) +#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) +#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) +#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) +#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) +#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) +#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) + +#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) + +#endif /* GL_EXT_histogram */ + +/* ----------------------- GL_EXT_index_array_formats ---------------------- */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 + +#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) + +#endif /* GL_EXT_index_array_formats */ + +/* --------------------------- GL_EXT_index_func --------------------------- */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 + +typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); + +#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) + +#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) + +#endif /* GL_EXT_index_func */ + +/* ------------------------- GL_EXT_index_material ------------------------- */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 + +typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) + +#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) + +#endif /* GL_EXT_index_material */ + +/* -------------------------- GL_EXT_index_texture ------------------------- */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 + +#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) + +#endif /* GL_EXT_index_texture */ + +/* -------------------------- GL_EXT_light_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 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 + +typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) +#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) +#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) + +#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) + +#endif /* GL_EXT_light_texture */ + +/* ------------------------- GL_EXT_misc_attribute ------------------------- */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 + +#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) + +#endif /* GL_EXT_misc_attribute */ + +/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const GLvoid **indices, GLsizei primcount); + +#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) +#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) + +#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) + +#endif /* GL_EXT_multi_draw_arrays */ + +/* --------------------------- GL_EXT_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); + +#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) +#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) + +#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) + +#endif /* GL_EXT_multisample */ + +/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) + +#endif /* GL_EXT_packed_depth_stencil */ + +/* -------------------------- GL_EXT_packed_float -------------------------- */ + +#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 + +#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) + +#endif /* GL_EXT_packed_float */ + +/* -------------------------- GL_EXT_packed_pixels ------------------------- */ + +#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 + +#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) + +#endif /* GL_EXT_packed_pixels */ + +/* ------------------------ GL_EXT_paletted_texture ------------------------ */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 + +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 +#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF +#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 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B + +typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void* data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); + +#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) +#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) +#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) +#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) + +#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) + +#endif /* GL_EXT_paletted_texture */ + +/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) + +#endif /* GL_EXT_pixel_buffer_object */ + +/* ------------------------- GL_EXT_pixel_transform ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) +#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) +#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) +#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) +#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) +#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) + +#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) + +#endif /* GL_EXT_pixel_transform */ + +/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 + +#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) + +#endif /* GL_EXT_pixel_transform_color_table */ + +/* ------------------------ GL_EXT_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) +#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) + +#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) + +#endif /* GL_EXT_point_parameters */ + +/* ------------------------- GL_EXT_polygon_offset ------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); + +#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) + +#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) + +#endif /* GL_EXT_polygon_offset */ + +/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); + +#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) + +#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) + +#endif /* GL_EXT_provoking_vertex */ + +/* ------------------------- GL_EXT_rescale_normal ------------------------- */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 + +#define GL_RESCALE_NORMAL_EXT 0x803A + +#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) + +#endif /* GL_EXT_rescale_normal */ + +/* -------------------------- GL_EXT_scene_marker -------------------------- */ + +#ifndef GL_EXT_scene_marker +#define GL_EXT_scene_marker 1 + +typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); + +#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) +#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) + +#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) + +#endif /* GL_EXT_scene_marker */ + +/* ------------------------- GL_EXT_secondary_color ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + +#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) +#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) +#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) +#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) +#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) +#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) +#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) +#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) +#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) +#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) +#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) +#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) +#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) +#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) +#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) +#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) +#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) + +#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) + +#endif /* GL_EXT_secondary_color */ + +/* --------------------- GL_EXT_separate_shader_objects -------------------- */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 + +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D + +typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const char* string); +typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); + +#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) +#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) +#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) + +#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) + +#endif /* GL_EXT_separate_shader_objects */ + +/* --------------------- GL_EXT_separate_specular_color -------------------- */ + +#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 + +#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) + +#endif /* GL_EXT_separate_specular_color */ + +/* --------------------- GL_EXT_shader_image_load_store -------------------- */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS_EXT 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); + +#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) +#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) + +#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) + +#endif /* GL_EXT_shader_image_load_store */ + +/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 + +#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) + +#endif /* GL_EXT_shadow_funcs */ + +/* --------------------- GL_EXT_shared_texture_palette --------------------- */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 + +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB + +#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) + +#endif /* GL_EXT_shared_texture_palette */ + +/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ + +#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 + +#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) + +#endif /* GL_EXT_stencil_clear_tag */ + +/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ + +#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 (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); + +#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) + +#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) + +#endif /* GL_EXT_stencil_two_side */ + +/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 + +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 + +#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) + +#endif /* GL_EXT_stencil_wrap */ + +/* --------------------------- GL_EXT_subtexture --------------------------- */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 + +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); + +#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) +#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) +#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) + +#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) + +#endif /* GL_EXT_subtexture */ + +/* ----------------------------- GL_EXT_texture ---------------------------- */ + +#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 GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) + +#endif /* GL_EXT_texture */ + +/* ---------------------------- GL_EXT_texture3D --------------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); + +#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) + +#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) + +#endif /* GL_EXT_texture3D */ + +/* -------------------------- GL_EXT_texture_array ------------------------- */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 + +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + +#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) + +#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) + +#endif /* GL_EXT_texture_array */ + +/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) + +#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) + +#endif /* GL_EXT_texture_buffer_object */ + +/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) + +#endif /* GL_EXT_texture_compression_dxt1 */ + +/* -------------------- GL_EXT_texture_compression_latc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) + +#endif /* GL_EXT_texture_compression_latc */ + +/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) + +#endif /* GL_EXT_texture_compression_rgtc */ + +/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) + +#endif /* GL_EXT_texture_compression_s3tc */ + +/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) + +#endif /* GL_EXT_texture_cube_map */ + +/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ + +#ifndef GL_EXT_texture_edge_clamp +#define GL_EXT_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_EXT 0x812F + +#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) + +#endif /* GL_EXT_texture_edge_clamp */ + +/* --------------------------- GL_EXT_texture_env -------------------------- */ + +#ifndef GL_EXT_texture_env +#define GL_EXT_texture_env 1 + +#define GL_TEXTURE_ENV0_EXT 0 +#define GL_ENV_BLEND_EXT 0 +#define GL_TEXTURE_ENV_SHIFT_EXT 0 +#define GL_ENV_REPLACE_EXT 0 +#define GL_ENV_ADD_EXT 0 +#define GL_ENV_SUBTRACT_EXT 0 +#define GL_TEXTURE_ENV_MODE_ALPHA_EXT 0 +#define GL_ENV_REVERSE_SUBTRACT_EXT 0 +#define GL_ENV_REVERSE_BLEND_EXT 0 +#define GL_ENV_COPY_EXT 0 +#define GL_ENV_MODULATE_EXT 0 + +#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) + +#endif /* GL_EXT_texture_env */ + +/* ------------------------- GL_EXT_texture_env_add ------------------------ */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 + +#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) + +#endif /* GL_EXT_texture_env_add */ + +/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ + +#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 + +#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) + +#endif /* GL_EXT_texture_env_combine */ + +/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) + +#endif /* GL_EXT_texture_env_dot3 */ + +/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ + +#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 + +#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) + +#endif /* GL_EXT_texture_filter_anisotropic */ + +/* ------------------------- GL_EXT_texture_integer ------------------------ */ + +#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 (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); + +#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) +#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) +#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) +#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) +#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) +#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) + +#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) + +#endif /* GL_EXT_texture_integer */ + +/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ + +#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 + +#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) + +#endif /* GL_EXT_texture_lod_bias */ + +/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ + +#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 + +#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) + +#endif /* GL_EXT_texture_mirror_clamp */ + +/* ------------------------- GL_EXT_texture_object ------------------------- */ + +#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 (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); +typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); + +#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) +#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) +#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) +#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) +#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) +#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) + +#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) + +#endif /* GL_EXT_texture_object */ + +/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); + +#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) + +#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) + +#endif /* GL_EXT_texture_perturb_normal */ + +/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ + +#ifndef GL_EXT_texture_rectangle +#define GL_EXT_texture_rectangle 1 + +#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 + +#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) + +#endif /* GL_EXT_texture_rectangle */ + +/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ + +#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 + +#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) + +#endif /* GL_EXT_texture_sRGB */ + +/* ----------------------- 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 + +#define GLEW_EXT_texture_sRGB_decode GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_decode) + +#endif /* GL_EXT_texture_sRGB_decode */ + +/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ + +#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 + +#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) + +#endif /* GL_EXT_texture_shared_exponent */ + +/* -------------------------- GL_EXT_texture_snorm ------------------------- */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 + +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_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 GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) + +#endif /* GL_EXT_texture_snorm */ + +/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ + +#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 + +#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) + +#endif /* GL_EXT_texture_swizzle */ + +/* --------------------------- GL_EXT_timer_query -------------------------- */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 + +#define GL_TIME_ELAPSED_EXT 0x88BF + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); + +#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) +#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) + +#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) + +#endif /* GL_EXT_timer_query */ + +/* ----------------------- GL_EXT_transform_feedback ----------------------- */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 + +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#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_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F + +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, char *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); + +#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) +#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) +#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) +#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) +#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) +#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) +#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) + +#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) + +#endif /* GL_EXT_transform_feedback */ + +/* -------------------------- GL_EXT_vertex_array -------------------------- */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 + +#define GL_DOUBLE_EXT 0x140A +#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 (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); + +#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) +#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) +#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) +#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) +#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) +#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) +#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) +#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) + +#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) + +#endif /* GL_EXT_vertex_array */ + +/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) + +#endif /* GL_EXT_vertex_array_bgra */ + +/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 + +#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 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + +#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) +#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) +#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) +#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) +#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) +#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) +#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) +#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) +#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) +#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) +#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) + +#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) + +#endif /* GL_EXT_vertex_attrib_64bit */ + +/* -------------------------- GL_EXT_vertex_shader ------------------------- */ + +#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_INVARIANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_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 (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); +typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); +typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); +typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); +typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, GLvoid *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); +typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + +#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) +#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) +#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) +#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) +#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) +#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) +#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) +#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) +#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) +#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) +#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) +#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) +#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) +#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) +#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) +#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) +#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) +#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) +#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) +#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) +#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) +#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) +#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) +#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) +#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) +#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) +#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) +#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) +#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) +#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) +#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) +#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) +#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) +#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) +#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) +#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) +#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) +#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) +#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) +#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) +#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) +#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) + +#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) + +#endif /* GL_EXT_vertex_shader */ + +/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 + +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#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 (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); + +#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) +#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) +#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) + +#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) + +#endif /* GL_EXT_vertex_weighting */ + +/* ------------------------- GL_EXT_x11_sync_object ------------------------ */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 + +#define GL_SYNC_X11_FENCE_EXT 0x90E1 + +typedef GLsync (GLAPIENTRY * PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); + +#define glImportSyncEXT GLEW_GET_FUN(__glewImportSyncEXT) + +#define GLEW_EXT_x11_sync_object GLEW_GET_VAR(__GLEW_EXT_x11_sync_object) + +#endif /* GL_EXT_x11_sync_object */ + +/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 + +typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); + +#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) + +#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) + +#endif /* GL_GREMEDY_frame_terminator */ + +/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 + +typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void* string); + +#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) + +#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) + +#endif /* GL_GREMEDY_string_marker */ + +/* --------------------- GL_HP_convolution_border_modes -------------------- */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 + +#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) + +#endif /* GL_HP_convolution_border_modes */ + +/* ------------------------- GL_HP_image_transform ------------------------- */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 + +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) +#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) +#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) +#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) +#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) +#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) + +#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) + +#endif /* GL_HP_image_transform */ + +/* -------------------------- GL_HP_occlusion_test ------------------------- */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 + +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 + +#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) + +#endif /* GL_HP_occlusion_test */ + +/* ------------------------- GL_HP_texture_lighting ------------------------ */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 + +#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) + +#endif /* GL_HP_texture_lighting */ + +/* --------------------------- GL_IBM_cull_vertex -------------------------- */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 + +#define GL_CULL_VERTEX_IBM 103050 + +#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) + +#endif /* GL_IBM_cull_vertex */ + +/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); + +#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) +#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) + +#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) + +#endif /* GL_IBM_multimode_draw_arrays */ + +/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 + +#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 + +#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) + +#endif /* GL_IBM_rasterpos_clip */ + +/* --------------------------- GL_IBM_static_data -------------------------- */ + +#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 + +#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) + +#endif /* GL_IBM_static_data */ + +/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_IBM 0x8370 + +#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) + +#endif /* GL_IBM_texture_mirrored_repeat */ + +/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); + +#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) +#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) +#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) +#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) +#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) +#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) +#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) +#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) + +#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) + +#endif /* GL_IBM_vertex_array_lists */ + +/* -------------------------- GL_INGR_color_clamp -------------------------- */ + +#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 + +#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) + +#endif /* GL_INGR_color_clamp */ + +/* ------------------------- GL_INGR_interlace_read ------------------------ */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 + +#define GL_INTERLACE_READ_INGR 0x8568 + +#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) + +#endif /* GL_INGR_interlace_read */ + +/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); + +#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) +#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) +#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) +#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) + +#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) + +#endif /* GL_INTEL_parallel_arrays */ + +/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ + +#ifndef GL_INTEL_texture_scissor +#define GL_INTEL_texture_scissor 1 + +typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); +typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); + +#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) +#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) + +#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) + +#endif /* GL_INTEL_texture_scissor */ + +/* -------------------------- GL_KTX_buffer_region ------------------------- */ + +#ifndef GL_KTX_buffer_region +#define GL_KTX_buffer_region 1 + +#define GL_KTX_FRONT_REGION 0x0 +#define GL_KTX_BACK_REGION 0x1 +#define GL_KTX_Z_REGION 0x2 +#define GL_KTX_STENCIL_REGION 0x3 + +typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDPROC) (void); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); +typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glBufferRegionEnabled GLEW_GET_FUN(__glewBufferRegionEnabled) +#define glDeleteBufferRegion GLEW_GET_FUN(__glewDeleteBufferRegion) +#define glDrawBufferRegion GLEW_GET_FUN(__glewDrawBufferRegion) +#define glNewBufferRegion GLEW_GET_FUN(__glewNewBufferRegion) +#define glReadBufferRegion GLEW_GET_FUN(__glewReadBufferRegion) + +#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) + +#endif /* GL_KTX_buffer_region */ + +/* ------------------------- GL_MESAX_texture_stack ------------------------ */ + +#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 + +#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) + +#endif /* GL_MESAX_texture_stack */ + +/* -------------------------- GL_MESA_pack_invert -------------------------- */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 + +#define GL_PACK_INVERT_MESA 0x8758 + +#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) + +#endif /* GL_MESA_pack_invert */ + +/* ------------------------- GL_MESA_resize_buffers ------------------------ */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 + +typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); + +#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) + +#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) + +#endif /* GL_MESA_resize_buffers */ + +/* --------------------------- GL_MESA_window_pos -------------------------- */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); + +#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) +#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) +#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) +#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) +#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) +#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) +#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) +#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) +#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) +#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) +#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) +#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) +#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) +#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) +#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) +#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) +#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) +#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) +#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) +#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) +#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) +#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) +#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) +#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) + +#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) + +#endif /* GL_MESA_window_pos */ + +/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ + +#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 + +#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) + +#endif /* GL_MESA_ycbcr_texture */ + +/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ + +#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 + +#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) + +#endif /* GL_NVX_gpu_memory_info */ + +/* --------------------------- GL_NV_blend_square -------------------------- */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 + +#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) + +#endif /* GL_NV_blend_square */ + +/* ------------------------ GL_NV_conditional_render ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); + +#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) +#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) + +#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) + +#endif /* GL_NV_conditional_render */ + +/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ + +#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 + +#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) + +#endif /* GL_NV_copy_depth_to_color */ + +/* ---------------------------- GL_NV_copy_image --------------------------- */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 + +typedef void (GLAPIENTRY * 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); + +#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) + +#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) + +#endif /* GL_NV_copy_image */ + +/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); + +#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) +#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) +#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) + +#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) + +#endif /* GL_NV_depth_buffer_float */ + +/* --------------------------- GL_NV_depth_clamp --------------------------- */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 + +#define GL_DEPTH_CLAMP_NV 0x864F + +#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) + +#endif /* GL_NV_depth_clamp */ + +/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ + +#ifndef GL_NV_depth_range_unclamped +#define GL_NV_depth_range_unclamped 1 + +#define GL_SAMPLE_COUNT_BITS_NV 0x8864 +#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 +#define GL_QUERY_RESULT_NV 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 +#define GL_SAMPLE_COUNT_NV 0x8914 + +#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) + +#endif /* GL_NV_depth_range_unclamped */ + +/* ---------------------------- GL_NV_evaluators --------------------------- */ + +#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 (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void* points); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void* points); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) +#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) +#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) +#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) +#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) +#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) +#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) +#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) +#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) + +#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) + +#endif /* GL_NV_evaluators */ + +/* ----------------------- GL_NV_explicit_multisample ---------------------- */ + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); + +#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) +#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) +#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) + +#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) + +#endif /* GL_NV_explicit_multisample */ + +/* ------------------------------ GL_NV_fence ------------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); +typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); + +#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) +#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) +#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) +#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) +#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) +#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) +#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) + +#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) + +#endif /* GL_NV_fence */ + +/* --------------------------- GL_NV_float_buffer -------------------------- */ + +#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 + +#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) + +#endif /* GL_NV_float_buffer */ + +/* --------------------------- GL_NV_fog_distance -------------------------- */ + +#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 + +#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) + +#endif /* GL_NV_fog_distance */ + +/* ------------------------- GL_NV_fragment_program ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); + +#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) +#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) +#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) +#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) +#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) +#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) + +#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) + +#endif /* GL_NV_fragment_program */ + +/* ------------------------ GL_NV_fragment_program2 ------------------------ */ + +#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 + +#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) + +#endif /* GL_NV_fragment_program2 */ + +/* ------------------------ GL_NV_fragment_program4 ------------------------ */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 + +#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) + +#endif /* GL_NV_fragment_program4 */ + +/* --------------------- GL_NV_fragment_program_option --------------------- */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 + +#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) + +#endif /* GL_NV_fragment_program_option */ + +/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) + +#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) + +#endif /* GL_NV_framebuffer_multisample_coverage */ + +/* ------------------------ GL_NV_geometry_program4 ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); + +#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) + +#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) + +#endif /* GL_NV_geometry_program4 */ + +/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 + +#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) + +#endif /* GL_NV_geometry_shader4 */ + +/* --------------------------- GL_NV_gpu_program4 -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); + +#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) +#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) +#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) +#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) +#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) +#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) +#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) +#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) +#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) +#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) +#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) +#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) + +#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) + +#endif /* GL_NV_gpu_program4 */ + +/* --------------------------- GL_NV_gpu_program5 -------------------------- */ + +#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 GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) + +#endif /* GL_NV_gpu_program5 */ + +/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ + +#ifndef GL_NV_gpu_program_fp64 +#define GL_NV_gpu_program_fp64 1 + +#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) + +#endif /* GL_NV_gpu_program_fp64 */ + +/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 + +#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 (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) +#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) +#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) +#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) +#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) +#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) +#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) +#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) +#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) +#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) +#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) +#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) +#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) +#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) +#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) +#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) +#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) +#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) +#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) +#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) +#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) +#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) +#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) +#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) +#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) +#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) +#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) +#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) +#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) +#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) +#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) +#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) +#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) +#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) + +#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) + +#endif /* GL_NV_gpu_shader5 */ + +/* ---------------------------- GL_NV_half_float --------------------------- */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 + +#define GL_HALF_FLOAT_NV 0x140B + +typedef unsigned short GLhalf; + +typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); +typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); +typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); + +#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) +#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) +#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) +#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) +#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) +#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) +#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) +#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) +#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) +#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) +#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) +#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) +#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) +#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) +#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) +#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) +#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) +#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) +#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) +#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) +#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) +#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) +#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) +#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) +#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) +#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) +#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) +#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) +#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) +#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) +#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) +#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) +#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) +#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) +#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) +#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) +#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) +#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) +#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) +#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) +#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) +#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) +#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) +#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) +#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) +#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) + +#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) + +#endif /* GL_NV_half_float */ + +/* ------------------------ GL_NV_light_max_exponent ----------------------- */ + +#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 + +#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) + +#endif /* GL_NV_light_max_exponent */ + +/* ----------------------- GL_NV_multisample_coverage ---------------------- */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 + +#define GL_COVERAGE_SAMPLES_NV 0x80A9 +#define GL_COLOR_SAMPLES_NV 0x8E20 + +#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) + +#endif /* GL_NV_multisample_coverage */ + +/* --------------------- GL_NV_multisample_filter_hint --------------------- */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 + +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 + +#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) + +#endif /* GL_NV_multisample_filter_hint */ + +/* ------------------------- GL_NV_occlusion_query ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); + +#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) +#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) +#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) +#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) +#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) +#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) +#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) + +#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) + +#endif /* GL_NV_occlusion_query */ + +/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) + +#endif /* GL_NV_packed_depth_stencil */ + +/* --------------------- GL_NV_parameter_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); + +#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) +#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) +#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) + +#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) + +#endif /* GL_NV_parameter_buffer_object */ + +/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 + +#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) + +#endif /* GL_NV_parameter_buffer_object2 */ + +/* -------------------------- GL_NV_path_rendering ------------------------- */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 + +#define GL_CLOSE_PATH_NV 0x00 +#define GL_BOLD_BIT_NV 0x01 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_MOVE_TO_NV 0x02 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_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_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#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_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#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_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_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_GLYPH_HAS_KERNING_NV 0x100 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PRIMARY_COLOR 0x8577 +#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_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#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_FONT_X_MIN_BOUNDS_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_NV 0x00100000 +#define GL_FONT_ASCENDER_NV 0x00200000 +#define GL_FONT_DESCENDER_NV 0x00400000 +#define GL_FONT_HEIGHT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_NV 0x08000000 +#define GL_FONT_HAS_KERNING_NV 0x10000000 + +typedef void (GLAPIENTRY * PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHNVPROC) (GLuint name, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLuint (GLAPIENTRY * PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOMMANDSNVPROC) (GLuint name, GLubyte* commands); +typedef void (GLAPIENTRY * PFNGLGETPATHCOORDSNVPROC) (GLuint name, GLfloat* coords); +typedef void (GLAPIENTRY * PFNGLGETPATHDASHARRAYNVPROC) (GLuint name, GLfloat* dashArray); +typedef GLfloat (GLAPIENTRY * PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint fistPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERFVNVPROC) (GLuint name, GLenum param, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERIVNVPROC) (GLuint name, GLenum param, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef GLboolean (GLAPIENTRY * PFNGLISPATHNVPROC) (GLuint path); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs); +typedef void (GLAPIENTRY * PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const GLvoid*coords); +typedef void (GLAPIENTRY * PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void* coords); +typedef void (GLAPIENTRY * PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum zfunc); +typedef void (GLAPIENTRY * PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat* dashArray); +typedef void (GLAPIENTRY * PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void* fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLint units); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void* pathString); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const GLvoid*coords); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords); +typedef void (GLAPIENTRY * PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs); +typedef GLboolean (GLAPIENTRY * PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void* paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GLAPIENTRY * PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues); +typedef void (GLAPIENTRY * PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]); + +#define glCopyPathNV GLEW_GET_FUN(__glewCopyPathNV) +#define glCoverFillPathInstancedNV GLEW_GET_FUN(__glewCoverFillPathInstancedNV) +#define glCoverFillPathNV GLEW_GET_FUN(__glewCoverFillPathNV) +#define glCoverStrokePathInstancedNV GLEW_GET_FUN(__glewCoverStrokePathInstancedNV) +#define glCoverStrokePathNV GLEW_GET_FUN(__glewCoverStrokePathNV) +#define glDeletePathsNV GLEW_GET_FUN(__glewDeletePathsNV) +#define glGenPathsNV GLEW_GET_FUN(__glewGenPathsNV) +#define glGetPathColorGenfvNV GLEW_GET_FUN(__glewGetPathColorGenfvNV) +#define glGetPathColorGenivNV GLEW_GET_FUN(__glewGetPathColorGenivNV) +#define glGetPathCommandsNV GLEW_GET_FUN(__glewGetPathCommandsNV) +#define glGetPathCoordsNV GLEW_GET_FUN(__glewGetPathCoordsNV) +#define glGetPathDashArrayNV GLEW_GET_FUN(__glewGetPathDashArrayNV) +#define glGetPathLengthNV GLEW_GET_FUN(__glewGetPathLengthNV) +#define glGetPathMetricRangeNV GLEW_GET_FUN(__glewGetPathMetricRangeNV) +#define glGetPathMetricsNV GLEW_GET_FUN(__glewGetPathMetricsNV) +#define glGetPathParameterfvNV GLEW_GET_FUN(__glewGetPathParameterfvNV) +#define glGetPathParameterivNV GLEW_GET_FUN(__glewGetPathParameterivNV) +#define glGetPathSpacingNV GLEW_GET_FUN(__glewGetPathSpacingNV) +#define glGetPathTexGenfvNV GLEW_GET_FUN(__glewGetPathTexGenfvNV) +#define glGetPathTexGenivNV GLEW_GET_FUN(__glewGetPathTexGenivNV) +#define glInterpolatePathsNV GLEW_GET_FUN(__glewInterpolatePathsNV) +#define glIsPathNV GLEW_GET_FUN(__glewIsPathNV) +#define glIsPointInFillPathNV GLEW_GET_FUN(__glewIsPointInFillPathNV) +#define glIsPointInStrokePathNV GLEW_GET_FUN(__glewIsPointInStrokePathNV) +#define glPathColorGenNV GLEW_GET_FUN(__glewPathColorGenNV) +#define glPathCommandsNV GLEW_GET_FUN(__glewPathCommandsNV) +#define glPathCoordsNV GLEW_GET_FUN(__glewPathCoordsNV) +#define glPathCoverDepthFuncNV GLEW_GET_FUN(__glewPathCoverDepthFuncNV) +#define glPathDashArrayNV GLEW_GET_FUN(__glewPathDashArrayNV) +#define glPathFogGenNV GLEW_GET_FUN(__glewPathFogGenNV) +#define glPathGlyphRangeNV GLEW_GET_FUN(__glewPathGlyphRangeNV) +#define glPathGlyphsNV GLEW_GET_FUN(__glewPathGlyphsNV) +#define glPathParameterfNV GLEW_GET_FUN(__glewPathParameterfNV) +#define glPathParameterfvNV GLEW_GET_FUN(__glewPathParameterfvNV) +#define glPathParameteriNV GLEW_GET_FUN(__glewPathParameteriNV) +#define glPathParameterivNV GLEW_GET_FUN(__glewPathParameterivNV) +#define glPathStencilDepthOffsetNV GLEW_GET_FUN(__glewPathStencilDepthOffsetNV) +#define glPathStencilFuncNV GLEW_GET_FUN(__glewPathStencilFuncNV) +#define glPathStringNV GLEW_GET_FUN(__glewPathStringNV) +#define glPathSubCommandsNV GLEW_GET_FUN(__glewPathSubCommandsNV) +#define glPathSubCoordsNV GLEW_GET_FUN(__glewPathSubCoordsNV) +#define glPathTexGenNV GLEW_GET_FUN(__glewPathTexGenNV) +#define glPointAlongPathNV GLEW_GET_FUN(__glewPointAlongPathNV) +#define glStencilFillPathInstancedNV GLEW_GET_FUN(__glewStencilFillPathInstancedNV) +#define glStencilFillPathNV GLEW_GET_FUN(__glewStencilFillPathNV) +#define glStencilStrokePathInstancedNV GLEW_GET_FUN(__glewStencilStrokePathInstancedNV) +#define glStencilStrokePathNV GLEW_GET_FUN(__glewStencilStrokePathNV) +#define glTransformPathNV GLEW_GET_FUN(__glewTransformPathNV) +#define glWeightPathsNV GLEW_GET_FUN(__glewWeightPathsNV) + +#define GLEW_NV_path_rendering GLEW_GET_VAR(__GLEW_NV_path_rendering) + +#endif /* GL_NV_path_rendering */ + +/* ------------------------- GL_NV_pixel_data_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void* pointer); + +#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) +#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) + +#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) + +#endif /* GL_NV_pixel_data_range */ + +/* --------------------------- GL_NV_point_sprite -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); + +#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) +#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) + +#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) + +#endif /* GL_NV_point_sprite */ + +/* -------------------------- GL_NV_present_video -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); + +#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) +#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) +#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) +#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) +#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) +#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) + +#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) + +#endif /* GL_NV_present_video */ + +/* ------------------------ GL_NV_primitive_restart ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); + +#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) +#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) + +#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) + +#endif /* GL_NV_primitive_restart */ + +/* ------------------------ GL_NV_register_combiners ----------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); + +#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) +#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) +#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) +#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) +#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) +#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) +#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) +#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) +#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) +#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) +#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) +#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) +#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) + +#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) + +#endif /* GL_NV_register_combiners */ + +/* ----------------------- GL_NV_register_combiners2 ----------------------- */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 + +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 + +typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); + +#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) +#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) + +#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) + +#endif /* GL_NV_register_combiners2 */ + +/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ + +#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 (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) +#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) +#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) +#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) +#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) +#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) +#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) +#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) +#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) +#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) +#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) +#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) +#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) + +#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) + +#endif /* GL_NV_shader_buffer_load */ + +/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ + +#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 + +#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) + +#endif /* GL_NV_tessellation_program5 */ + +/* -------------------------- GL_NV_texgen_emboss -------------------------- */ + +#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 + +#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) + +#endif /* GL_NV_texgen_emboss */ + +/* ------------------------ GL_NV_texgen_reflection ------------------------ */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 + +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 + +#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) + +#endif /* GL_NV_texgen_reflection */ + +/* ------------------------- GL_NV_texture_barrier ------------------------- */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 + +typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); + +#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) + +#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) + +#endif /* GL_NV_texture_barrier */ + +/* --------------------- GL_NV_texture_compression_vtc --------------------- */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 + +#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) + +#endif /* GL_NV_texture_compression_vtc */ + +/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ + +#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 + +#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) + +#endif /* GL_NV_texture_env_combine4 */ + +/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 + +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F + +#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) + +#endif /* GL_NV_texture_expand_normal */ + +/* ----------------------- GL_NV_texture_multisample ----------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + +#define glTexImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage2DMultisampleCoverageNV) +#define glTexImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage3DMultisampleCoverageNV) +#define glTextureImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage2DMultisampleCoverageNV) +#define glTextureImage2DMultisampleNV GLEW_GET_FUN(__glewTextureImage2DMultisampleNV) +#define glTextureImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage3DMultisampleCoverageNV) +#define glTextureImage3DMultisampleNV GLEW_GET_FUN(__glewTextureImage3DMultisampleNV) + +#define GLEW_NV_texture_multisample GLEW_GET_VAR(__GLEW_NV_texture_multisample) + +#endif /* GL_NV_texture_multisample */ + +/* ------------------------ GL_NV_texture_rectangle ------------------------ */ + +#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 + +#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) + +#endif /* GL_NV_texture_rectangle */ + +/* -------------------------- GL_NV_texture_shader ------------------------- */ + +#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_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#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 + +#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) + +#endif /* GL_NV_texture_shader */ + +/* ------------------------- GL_NV_texture_shader2 ------------------------- */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 + +#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_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#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 GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) + +#endif /* GL_NV_texture_shader2 */ + +/* ------------------------- GL_NV_texture_shader3 ------------------------- */ + +#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 + +#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) + +#endif /* GL_NV_texture_shader3 */ + +/* ------------------------ GL_NV_transform_feedback ----------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); + +#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) +#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) +#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) +#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) +#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) +#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) +#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) +#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) +#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) +#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) +#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) + +#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) + +#endif /* GL_NV_transform_feedback */ + +/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); + +#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) +#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) +#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) +#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) +#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) +#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) +#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) + +#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) + +#endif /* GL_NV_transform_feedback2 */ + +/* -------------------------- GL_NV_vdpau_interop -------------------------- */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 + +#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 GLintptr GLvdpauSurfaceNV; + +typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); +typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const GLvoid*getProcAddress); +typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); +typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); + +#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) +#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) +#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) +#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) +#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) +#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) +#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) +#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) +#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) +#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) + +#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) + +#endif /* GL_NV_vdpau_interop */ + +/* ------------------------ GL_NV_vertex_array_range ----------------------- */ + +#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 (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* pointer); + +#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) +#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) + +#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) + +#endif /* GL_NV_vertex_array_range */ + +/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 + +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 + +#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) + +#endif /* GL_NV_vertex_array_range2 */ + +/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 + +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); + +#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) +#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) +#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) +#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) +#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) +#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) +#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) +#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) +#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) +#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) +#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) +#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) +#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) +#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) +#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) +#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) +#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) +#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) +#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) + +#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) + +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ + +#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 (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); +typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); + +#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) +#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) +#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) +#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) +#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) +#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) +#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) +#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) +#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) +#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) +#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) +#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) + +#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) + +#endif /* GL_NV_vertex_buffer_unified_memory */ + +/* -------------------------- GL_NV_vertex_program ------------------------- */ + +#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 (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); + +#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) +#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) +#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) +#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) +#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) +#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) +#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) +#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) +#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) +#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) +#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) +#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) +#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) +#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) +#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) +#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) +#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) +#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) +#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) +#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) +#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) +#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) +#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) +#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) +#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) +#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) +#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) +#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) +#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) +#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) +#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) +#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) +#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) +#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) +#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) +#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) +#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) +#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) +#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) +#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) +#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) +#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) +#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) +#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) +#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) +#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) +#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) +#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) +#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) +#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) +#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) +#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) +#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) +#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) +#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) +#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) +#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) +#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) +#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) +#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) +#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) +#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) +#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) +#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) + +#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) + +#endif /* GL_NV_vertex_program */ + +/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 + +#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) + +#endif /* GL_NV_vertex_program1_1 */ + +/* ------------------------- GL_NV_vertex_program2 ------------------------- */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 + +#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) + +#endif /* GL_NV_vertex_program2 */ + +/* ---------------------- GL_NV_vertex_program2_option --------------------- */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 + +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 + +#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) + +#endif /* GL_NV_vertex_program2_option */ + +/* ------------------------- GL_NV_vertex_program3 ------------------------- */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 + +#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C + +#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) + +#endif /* GL_NV_vertex_program3 */ + +/* ------------------------- GL_NV_vertex_program4 ------------------------- */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 + +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD + +#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) + +#endif /* GL_NV_vertex_program4 */ + +/* -------------------------- GL_NV_video_capture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params); + +#define glBeginVideoCaptureNV GLEW_GET_FUN(__glewBeginVideoCaptureNV) +#define glBindVideoCaptureStreamBufferNV GLEW_GET_FUN(__glewBindVideoCaptureStreamBufferNV) +#define glBindVideoCaptureStreamTextureNV GLEW_GET_FUN(__glewBindVideoCaptureStreamTextureNV) +#define glEndVideoCaptureNV GLEW_GET_FUN(__glewEndVideoCaptureNV) +#define glGetVideoCaptureStreamdvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamdvNV) +#define glGetVideoCaptureStreamfvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamfvNV) +#define glGetVideoCaptureStreamivNV GLEW_GET_FUN(__glewGetVideoCaptureStreamivNV) +#define glGetVideoCaptureivNV GLEW_GET_FUN(__glewGetVideoCaptureivNV) +#define glVideoCaptureNV GLEW_GET_FUN(__glewVideoCaptureNV) +#define glVideoCaptureStreamParameterdvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterdvNV) +#define glVideoCaptureStreamParameterfvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterfvNV) +#define glVideoCaptureStreamParameterivNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterivNV) + +#define GLEW_NV_video_capture GLEW_GET_VAR(__GLEW_NV_video_capture) + +#endif /* GL_NV_video_capture */ + +/* ------------------------ GL_OES_byte_coordinates ------------------------ */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 + +#define GL_BYTE 0x1400 + +#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) + +#endif /* GL_OES_byte_coordinates */ + +/* ------------------- GL_OES_compressed_paletted_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 + +#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) + +#endif /* GL_OES_compressed_paletted_texture */ + +/* --------------------------- GL_OES_read_format -------------------------- */ + +#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 + +#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) + +#endif /* GL_OES_read_format */ + +/* ------------------------ GL_OES_single_precision ------------------------ */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); +typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); + +#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) +#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) +#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) +#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) +#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) +#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) + +#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) + +#endif /* GL_OES_single_precision */ + +/* ---------------------------- GL_OML_interlace --------------------------- */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 + +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 + +#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) + +#endif /* GL_OML_interlace */ + +/* ---------------------------- GL_OML_resample ---------------------------- */ + +#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 + +#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) + +#endif /* GL_OML_resample */ + +/* ---------------------------- GL_OML_subsample --------------------------- */ + +#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 + +#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) + +#endif /* GL_OML_subsample */ + +/* --------------------------- GL_PGI_misc_hints --------------------------- */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 + +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 +#define GL_CONSERVE_MEMORY_HINT_PGI 107005 +#define GL_RECLAIM_MEMORY_HINT_PGI 107006 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 +#define GL_ALWAYS_FAST_HINT_PGI 107020 +#define GL_ALWAYS_SOFT_HINT_PGI 107021 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 +#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 +#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 +#define GL_STRICT_LIGHTING_HINT_PGI 107031 +#define GL_STRICT_SCISSOR_HINT_PGI 107032 +#define GL_FULL_STIPPLE_HINT_PGI 107033 +#define GL_CLIP_NEAR_HINT_PGI 107040 +#define GL_CLIP_FAR_HINT_PGI 107041 +#define GL_WIDE_LINE_HINT_PGI 107042 +#define GL_BACK_NORMALS_HINT_PGI 107043 + +#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) + +#endif /* GL_PGI_misc_hints */ + +/* -------------------------- GL_PGI_vertex_hints -------------------------- */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 + +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#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_VERTEX_DATA_HINT_PGI 107050 +#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 +#define GL_MATERIAL_SIDE_HINT_PGI 107052 +#define GL_MAX_VERTEX_HINT_PGI 107053 +#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 GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) + +#endif /* GL_PGI_vertex_hints */ + +/* ----------------------- GL_REND_screen_coordinates ---------------------- */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 + +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 + +#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) + +#endif /* GL_REND_screen_coordinates */ + +/* ------------------------------- GL_S3_s3tc ------------------------------ */ + +#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 + +#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) + +#endif /* GL_S3_s3tc */ + +/* -------------------------- GL_SGIS_color_range -------------------------- */ + +#ifndef GL_SGIS_color_range +#define GL_SGIS_color_range 1 + +#define GL_EXTENDED_RANGE_SGIS 0x85A5 +#define GL_MIN_RED_SGIS 0x85A6 +#define GL_MAX_RED_SGIS 0x85A7 +#define GL_MIN_GREEN_SGIS 0x85A8 +#define GL_MAX_GREEN_SGIS 0x85A9 +#define GL_MIN_BLUE_SGIS 0x85AA +#define GL_MAX_BLUE_SGIS 0x85AB +#define GL_MIN_ALPHA_SGIS 0x85AC +#define GL_MAX_ALPHA_SGIS 0x85AD + +#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) + +#endif /* GL_SGIS_color_range */ + +/* ------------------------- GL_SGIS_detail_texture ------------------------ */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 + +typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); + +#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) +#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) + +#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) + +#endif /* GL_SGIS_detail_texture */ + +/* -------------------------- GL_SGIS_fog_function ------------------------- */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 + +typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); + +#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) +#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) + +#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) + +#endif /* GL_SGIS_fog_function */ + +/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 + +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 + +#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) + +#endif /* GL_SGIS_generate_mipmap */ + +/* -------------------------- GL_SGIS_multisample -------------------------- */ + +#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 +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 + +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); + +#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) +#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) + +#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) + +#endif /* GL_SGIS_multisample */ + +/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 + +#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) + +#endif /* GL_SGIS_pixel_texture */ + +/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ + +#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 + +#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) + +#endif /* GL_SGIS_point_line_texgen */ + +/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 + +typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); +typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); + +#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) +#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) + +#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) + +#endif /* GL_SGIS_sharpen_texture */ + +/* --------------------------- GL_SGIS_texture4D --------------------------- */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 + +typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void* pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void* pixels); + +#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) +#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) + +#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) + +#endif /* GL_SGIS_texture4D */ + +/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_SGIS 0x812D + +#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) + +#endif /* GL_SGIS_texture_border_clamp */ + +/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_SGIS 0x812F + +#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) + +#endif /* GL_SGIS_texture_edge_clamp */ + +/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 + +typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); +typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); + +#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) +#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) + +#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) + +#endif /* GL_SGIS_texture_filter4 */ + +/* -------------------------- GL_SGIS_texture_lod -------------------------- */ + +#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 + +#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) + +#endif /* GL_SGIS_texture_lod */ + +/* ------------------------- GL_SGIS_texture_select ------------------------ */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 + +#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) + +#endif /* GL_SGIS_texture_select */ + +/* ----------------------------- GL_SGIX_async ----------------------------- */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 + +#define GL_ASYNC_MARKER_SGIX 0x8329 + +typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); +typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); + +#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) +#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) +#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) +#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) +#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) +#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) + +#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) + +#endif /* GL_SGIX_async */ + +/* ------------------------ GL_SGIX_async_histogram ------------------------ */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 + +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D + +#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) + +#endif /* GL_SGIX_async_histogram */ + +/* -------------------------- GL_SGIX_async_pixel -------------------------- */ + +#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 + +#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) + +#endif /* GL_SGIX_async_pixel */ + +/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ + +#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 + +#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) + +#endif /* GL_SGIX_blend_alpha_minmax */ + +/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 + +#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) + +#endif /* GL_SGIX_clipmap */ + +/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 + +#define GL_CONVOLUTION_HINT_SGIX 0x8316 + +#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) + +#endif /* GL_SGIX_convolution_accuracy */ + +/* ------------------------- GL_SGIX_depth_texture ------------------------- */ + +#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 + +#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) + +#endif /* GL_SGIX_depth_texture */ + +/* -------------------------- GL_SGIX_flush_raster ------------------------- */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 + +typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); + +#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) + +#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) + +#endif /* GL_SGIX_flush_raster */ + +/* --------------------------- GL_SGIX_fog_offset -------------------------- */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 + +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 + +#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) + +#endif /* GL_SGIX_fog_offset */ + +/* -------------------------- GL_SGIX_fog_texture -------------------------- */ + +#ifndef GL_SGIX_fog_texture +#define GL_SGIX_fog_texture 1 + +#define GL_TEXTURE_FOG_SGIX 0 +#define GL_FOG_PATCHY_FACTOR_SGIX 0 +#define GL_FRAGMENT_FOG_SGIX 0 + +typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); + +#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) + +#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) + +#endif /* GL_SGIX_fog_texture */ + +/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ + +#ifndef GL_SGIX_fragment_specular_lighting +#define GL_SGIX_fragment_specular_lighting 1 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); + +#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) +#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) +#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) +#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) +#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) +#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) +#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) +#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) +#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) +#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) +#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) +#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) +#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) +#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) +#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) +#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) +#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) + +#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) + +#endif /* GL_SGIX_fragment_specular_lighting */ + +/* --------------------------- GL_SGIX_framezoom --------------------------- */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 + +typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); + +#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) + +#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) + +#endif /* GL_SGIX_framezoom */ + +/* --------------------------- GL_SGIX_interlace --------------------------- */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 + +#define GL_INTERLACE_SGIX 0x8094 + +#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) + +#endif /* GL_SGIX_interlace */ + +/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 + +#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) + +#endif /* GL_SGIX_ir_instrument1 */ + +/* ------------------------- GL_SGIX_list_priority ------------------------- */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 + +#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) + +#endif /* GL_SGIX_list_priority */ + +/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 + +typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); + +#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) + +#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) + +#endif /* GL_SGIX_pixel_texture */ + +/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ + +#ifndef GL_SGIX_pixel_texture_bits +#define GL_SGIX_pixel_texture_bits 1 + +#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) + +#endif /* GL_SGIX_pixel_texture_bits */ + +/* ------------------------ GL_SGIX_reference_plane ------------------------ */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 + +typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); + +#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) + +#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) + +#endif /* GL_SGIX_reference_plane */ + +/* ---------------------------- GL_SGIX_resample --------------------------- */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 + +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 + +#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) + +#endif /* GL_SGIX_resample */ + +/* ----------------------------- GL_SGIX_shadow ---------------------------- */ + +#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 + +#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) + +#endif /* GL_SGIX_shadow */ + +/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 + +#define GL_SHADOW_AMBIENT_SGIX 0x80BF + +#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) + +#endif /* GL_SGIX_shadow_ambient */ + +/* ----------------------------- GL_SGIX_sprite ---------------------------- */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 + +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); + +#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) +#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) +#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) +#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) + +#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) + +#endif /* GL_SGIX_sprite */ + +/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 + +typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); + +#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) + +#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) + +#endif /* GL_SGIX_tag_sample_buffer */ + +/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 + +#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) + +#endif /* GL_SGIX_texture_add_env */ + +/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ + +#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 + +#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) + +#endif /* GL_SGIX_texture_coordinate_clamp */ + +/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 + +#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) + +#endif /* GL_SGIX_texture_lod_bias */ + +/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 + +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E + +#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) + +#endif /* GL_SGIX_texture_multi_buffer */ + +/* ------------------------- GL_SGIX_texture_range ------------------------- */ + +#ifndef GL_SGIX_texture_range +#define GL_SGIX_texture_range 1 + +#define GL_RGB_SIGNED_SGIX 0x85E0 +#define GL_RGBA_SIGNED_SGIX 0x85E1 +#define GL_ALPHA_SIGNED_SGIX 0x85E2 +#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 +#define GL_INTENSITY_SIGNED_SGIX 0x85E4 +#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 +#define GL_RGB16_SIGNED_SGIX 0x85E6 +#define GL_RGBA16_SIGNED_SGIX 0x85E7 +#define GL_ALPHA16_SIGNED_SGIX 0x85E8 +#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 +#define GL_INTENSITY16_SIGNED_SGIX 0x85EA +#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB +#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC +#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED +#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE +#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF +#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 +#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 +#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 +#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 +#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 +#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 +#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 +#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 +#define GL_MIN_LUMINANCE_SGIS 0x85F8 +#define GL_MAX_LUMINANCE_SGIS 0x85F9 +#define GL_MIN_INTENSITY_SGIS 0x85FA +#define GL_MAX_INTENSITY_SGIS 0x85FB + +#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) + +#endif /* GL_SGIX_texture_range */ + +/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ + +#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 + +#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) + +#endif /* GL_SGIX_texture_scale_bias */ + +/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) + +#endif /* GL_SGIX_vertex_preclip */ + +/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ + +#ifndef GL_SGIX_vertex_preclip_hint +#define GL_SGIX_vertex_preclip_hint 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) + +#endif /* GL_SGIX_vertex_preclip_hint */ + +/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 + +#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) + +#endif /* GL_SGIX_ycrcb */ + +/* -------------------------- GL_SGI_color_matrix -------------------------- */ + +#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 + +#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) + +#endif /* GL_SGI_color_matrix */ + +/* --------------------------- GL_SGI_color_table -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void* table); + +#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) +#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) +#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) +#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) +#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) +#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) +#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) + +#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) + +#endif /* GL_SGI_color_table */ + +/* ----------------------- GL_SGI_texture_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 + +#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) + +#endif /* GL_SGI_texture_color_table */ + +/* ------------------------- GL_SUNX_constant_data ------------------------- */ + +#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 (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); + +#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) + +#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) + +#endif /* GL_SUNX_constant_data */ + +/* -------------------- GL_SUN_convolution_border_modes -------------------- */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 + +#define GL_WRAP_BORDER_SUN 0x81D4 + +#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) + +#endif /* GL_SUN_convolution_border_modes */ + +/* -------------------------- GL_SUN_global_alpha -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); + +#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) +#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) +#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) +#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) +#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) +#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) +#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) +#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) + +#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) + +#endif /* GL_SUN_global_alpha */ + +/* --------------------------- GL_SUN_mesh_array --------------------------- */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 + +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 + +#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) + +#endif /* GL_SUN_mesh_array */ + +/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ + +#ifndef GL_SUN_read_video_pixels +#define GL_SUN_read_video_pixels 1 + +typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); + +#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) + +#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) + +#endif /* GL_SUN_read_video_pixels */ + +/* --------------------------- GL_SUN_slice_accum -------------------------- */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 + +#define GL_SLICE_ACCUM_SUN 0x85CC + +#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) + +#endif /* GL_SUN_slice_accum */ + +/* -------------------------- GL_SUN_triangle_list ------------------------- */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 + +#define GL_RESTART_SUN 0x01 +#define GL_REPLACE_MIDDLE_SUN 0x02 +#define GL_REPLACE_OLDEST_SUN 0x03 +#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 (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void* pointer); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); + +#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) +#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) +#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) +#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) +#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) +#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) +#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) + +#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) + +#endif /* GL_SUN_triangle_list */ + +/* ----------------------------- GL_SUN_vertex ----------------------------- */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 + +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); + +#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) +#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) +#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) +#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) +#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) +#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) +#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) +#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) +#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) +#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) +#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) +#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) +#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) +#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) +#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) +#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) +#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) +#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) +#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) +#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) +#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) +#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) +#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) +#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) +#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) +#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) +#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) +#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) +#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) + +#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) + +#endif /* GL_SUN_vertex */ + +/* -------------------------- GL_WIN_phong_shading ------------------------- */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 + +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB + +#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) + +#endif /* GL_WIN_phong_shading */ + +/* -------------------------- GL_WIN_specular_fog -------------------------- */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 + +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC + +#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) + +#endif /* GL_WIN_specular_fog */ + +/* ---------------------------- GL_WIN_swap_hint --------------------------- */ + +#ifndef GL_WIN_swap_hint +#define GL_WIN_swap_hint 1 + +typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); + +#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) + +#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) + +#endif /* GL_WIN_swap_hint */ + +/* ------------------------------------------------------------------------- */ + +#if defined(GLEW_MX) && defined(_WIN32) +#define GLEW_FUN_EXPORT +#else +#define GLEW_FUN_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) +#define GLEW_VAR_EXPORT +#else +#define GLEW_VAR_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) && defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; + +GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; +GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; +GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; +GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; +GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; +GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; +GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; +GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; +GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; +GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; +GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; +GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; + +GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; +GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; +GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; +GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; +GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; +GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; +GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; +GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; +GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; +GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; +GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; +GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; +GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; +GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; +GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; +GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; + +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; +GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; +GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; +GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; +GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; +GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; +GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; +GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; +GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; +GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; + +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; + +GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD; + +GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; +GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; +GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; + +GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; +GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; + +GLEW_FUN_EXPORT PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD; + +GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; +GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; +GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; +GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; +GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; + +GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; + +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; +GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; +GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; +GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; +GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; +GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; + +GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; + +GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; + +GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DEXTPROC __glewProgramUniform1dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVEXTPROC __glewProgramUniform1dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DEXTPROC __glewProgramUniform2dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVEXTPROC __glewProgramUniform2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DEXTPROC __glewProgramUniform3dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVEXTPROC __glewProgramUniform3dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DEXTPROC __glewProgramUniform4dEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVEXTPROC __glewProgramUniform4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC __glewProgramUniformMatrix2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC __glewProgramUniformMatrix2x3dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC __glewProgramUniformMatrix2x4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC __glewProgramUniformMatrix3dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC __glewProgramUniformMatrix3x2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC __glewProgramUniformMatrix3x4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC __glewProgramUniformMatrix4dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC __glewProgramUniformMatrix4x2dvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC __glewProgramUniformMatrix4x3dvEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; +GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; +GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; +GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; +GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; +GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; +GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; +GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; +GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; +GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; +GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ; + +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; +GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; + +GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; + +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; +GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; +GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; +GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; + +GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB; +GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; +GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; +GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; +GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; +GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; +GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; +GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; +GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; +GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; + +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; + +GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; +GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; +GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; +GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; + +GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; +GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; + +GLEW_FUN_EXPORT PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIERPROC __glewMemoryBarrier; + +GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; +GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; +GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; +GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; +GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; +GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; +GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; + +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; +GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; + +GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; +GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; +GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; +GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; + +GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; +GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; +GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; +GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; +GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; +GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; +GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; + +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; + +GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; + +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DPROC __glewTexStorage1D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DPROC __glewTexStorage2D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DPROC __glewTexStorage3D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; +GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; +GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; +GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; + +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced; + +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; +GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; +GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; +GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; +GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; + +GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; +GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; +GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; +GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; +GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; +GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; + +GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; +GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; + +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; + +GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; +GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; +GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; +GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; +GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; + +GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; +GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; +GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; + +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; + +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; +GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; +GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; +GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; + +GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; + +GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI; +GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI; + +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; + +GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; +GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; +GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; +GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; +GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; + +GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; + +GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; +GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; + +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; + +GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; + +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; +GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; + +GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; +GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; +GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; +GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; + +GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; +GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; + +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; + +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; +GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; +GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; +GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; + +GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; + +GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; + +GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; +GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; + +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; + +GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; +GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; + +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; + +GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; +GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; + +GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; + +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; + +GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; + +GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; +GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; + +GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; +GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; +GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; +GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; +GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; + +GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; + +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; + +GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; +GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; +GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; +GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; +GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; + +GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; +GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; +GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; +GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; +GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; +GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; +GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; +GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; +GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; +GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; +GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; +GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; + +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; + +GLEW_FUN_EXPORT PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT; + +GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; + +GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; + +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; + +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; + +GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; +GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; + +GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion; +GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion; +GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion; + +GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; + +GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; + +GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; +GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; +GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; +GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; +GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; +GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; +GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; +GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; +GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; +GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; + +GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; +GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; + +GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; +GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; + +GLEW_FUN_EXPORT PFNGLCOPYPATHNVPROC __glewCopyPathNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV; +GLEW_FUN_EXPORT PFNGLDELETEPATHSNVPROC __glewDeletePathsNV; +GLEW_FUN_EXPORT PFNGLGENPATHSNVPROC __glewGenPathsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV; +GLEW_FUN_EXPORT PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV; +GLEW_FUN_EXPORT PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV; +GLEW_FUN_EXPORT PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV; +GLEW_FUN_EXPORT PFNGLISPATHNVPROC __glewIsPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV; +GLEW_FUN_EXPORT PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV; +GLEW_FUN_EXPORT PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHCOORDSNVPROC __glewPathCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV; +GLEW_FUN_EXPORT PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLPATHFOGGENNVPROC __glewPathFogGenNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV; +GLEW_FUN_EXPORT PFNGLPATHSTRINGNVPROC __glewPathStringNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHTEXGENNVPROC __glewPathTexGenNV; +GLEW_FUN_EXPORT PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV; +GLEW_FUN_EXPORT PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV; + +GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; +GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; + +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; +GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; +GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; + +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; +GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; + +GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV; + +GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; +GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; + +GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; +GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; +GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; +GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; + +GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; +GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; +GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; +GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; +GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; +GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; + +GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; +GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; +GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; +GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; +GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; +GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; +GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; + +GLEW_FUN_EXPORT PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV; +GLEW_FUN_EXPORT PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; +GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; +GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; +GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; + +GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; + +GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; + +GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; +GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; + +GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; +GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; + +GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; + +GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; + +GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; + +GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; + +GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; + +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; + +GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; + +GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; + +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; + +GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; + +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; + +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; + +GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; + +#if defined(GLEW_MX) && !defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_2; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_blend_minmax_factor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sample_positions; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_base_instance; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compressed_texture_pixel_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_alignment; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_420pack; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_packing; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_decode; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_x11_sync_object; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; +GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; +GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_video_capture; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; + +#ifdef GLEW_MX +}; /* GLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +/* error codes */ +#define GLEW_OK 0 +#define GLEW_NO_ERROR 0 +#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ +#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */ +#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */ + +/* string codes */ +#define GLEW_VERSION 1 +#define GLEW_VERSION_MAJOR 2 +#define GLEW_VERSION_MINOR 3 +#define GLEW_VERSION_MICRO 4 + +/* API */ +#ifdef GLEW_MX + +typedef struct GLEWContextStruct GLEWContext; +GLEWAPI GLenum glewContextInit (GLEWContext* ctx); +GLEWAPI GLboolean glewContextIsSupported (const GLEWContext* ctx, const char* name); + +#define glewInit() glewContextInit(glewGetContext()) +#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) +#ifdef _WIN32 +# define GLEW_GET_FUN(x) glewGetContext()->x +#else +# define GLEW_GET_FUN(x) x +#endif + +#else /* GLEW_MX */ + +GLEWAPI GLenum glewInit (); +GLEWAPI GLboolean glewIsSupported (const char* name); +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLEW_GET_FUN(x) x + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean glewExperimental; +GLEWAPI GLboolean glewGetExtension (const char* name); +GLEWAPI const GLubyte* glewGetErrorString (GLenum error); +GLEWAPI const GLubyte* glewGetString (GLenum name); + +#ifdef __cplusplus +} +#endif + +#ifdef GLEW_APIENTRY_DEFINED +#undef GLEW_APIENTRY_DEFINED +#undef APIENTRY +#undef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifdef GLEW_CALLBACK_DEFINED +#undef GLEW_CALLBACK_DEFINED +#undef CALLBACK +#endif + +#ifdef GLEW_WINGDIAPI_DEFINED +#undef GLEW_WINGDIAPI_DEFINED +#undef WINGDIAPI +#endif + +#undef GLAPI +/* #undef GLEWAPI */ + +#endif /* __glew_h__ */ diff --git a/lib/osx/include/GL/glxew.h b/lib/osx/include/GL/glxew.h new file mode 100644 index 0000000..6d249f7 --- /dev/null +++ b/lib/osx/include/GL/glxew.h @@ -0,0 +1,1587 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glxew_h__ +#define __glxew_h__ +#define __GLXEW_H__ + +#ifdef __glxext_h_ +#error glxext.h included before glxew.h +#endif + +#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__) +#error glx.h included before glxew.h +#endif + +#define __glxext_h_ + +#define GLX_H +#define __GLX_glx_h__ +#define __glx_h__ + +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xmd.h> +#include <GL/glew.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* ---------------------------- GLX_VERSION_1_0 --------------------------- */ + +#ifndef GLX_VERSION_1_0 +#define GLX_VERSION_1_0 1 + +#define GLX_USE_GL 1 +#define GLX_BUFFER_SIZE 2 +#define GLX_LEVEL 3 +#define GLX_RGBA 4 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_NO_EXTENSION 3 +#define GLX_BAD_VISUAL 4 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_ENUM 7 + +typedef XID GLXDrawable; +typedef XID GLXPixmap; +#ifdef __sun +typedef struct __glXContextRec *GLXContext; +#else +typedef struct __GLXcontextRec *GLXContext; +#endif + +typedef unsigned int GLXVideoDeviceNV; + +extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase); +extern Bool glXQueryVersion (Display *dpy, int *major, int *minor); +extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value); +extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList); +extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap); +extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix); +extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct); +extern void glXDestroyContext (Display *dpy, GLXContext ctx); +extern Bool glXIsDirect (Display *dpy, GLXContext ctx); +extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask); +extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx); +extern GLXContext glXGetCurrentContext (void); +extern GLXDrawable glXGetCurrentDrawable (void); +extern void glXWaitGL (void); +extern void glXWaitX (void); +extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable); +extern void glXUseXFont (Font font, int first, int count, int listBase); + +#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0) + +#endif /* GLX_VERSION_1_0 */ + +/* ---------------------------- GLX_VERSION_1_1 --------------------------- */ + +#ifndef GLX_VERSION_1_1 +#define GLX_VERSION_1_1 + +#define GLX_VENDOR 0x1 +#define GLX_VERSION 0x2 +#define GLX_EXTENSIONS 0x3 + +extern const char* glXQueryExtensionsString (Display *dpy, int screen); +extern const char* glXGetClientString (Display *dpy, int name); +extern const char* glXQueryServerString (Display *dpy, int screen, int name); + +#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1) + +#endif /* GLX_VERSION_1_1 */ + +/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */ + +#ifndef GLX_VERSION_1_2 +#define GLX_VERSION_1_2 1 + +typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void); + +#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay) + +#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2) + +#endif /* GLX_VERSION_1_2 */ + +/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */ + +#ifndef GLX_VERSION_1_3 +#define GLX_VERSION_1_3 1 + +#define GLX_RGBA_BIT 0x00000001 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_DONT_CARE 0xFFFFFFFF + +typedef XID GLXFBConfigID; +typedef XID GLXPbuffer; +typedef XID GLXWindow; +typedef struct __GLXFBConfigRec *GLXFBConfig; + +typedef struct { + int event_type; + int draw_type; + unsigned long serial; + Bool send_event; + Display *display; + GLXDrawable drawable; + unsigned int buffer_mask; + unsigned int aux_buffer; + int x, y; + int width, height; + int count; +} GLXPbufferClobberEvent; +typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + long pad[24]; +} GLXEvent; + +typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); +typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); + +#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig) +#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext) +#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer) +#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap) +#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow) +#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer) +#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap) +#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow) +#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable) +#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib) +#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs) +#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent) +#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig) +#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent) +#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext) +#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable) +#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent) + +#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3) + +#endif /* GLX_VERSION_1_3 */ + +/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */ + +#ifndef GLX_VERSION_1_4 +#define GLX_VERSION_1_4 1 + +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLES 100001 + +extern void ( * glXGetProcAddress (const GLubyte *procName)) (void); + +#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4) + +#endif /* GLX_VERSION_1_4 */ + +/* -------------------------- GLX_3DFX_multisample ------------------------- */ + +#ifndef GLX_3DFX_multisample +#define GLX_3DFX_multisample 1 + +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 +#define GLX_SAMPLES_3DFX 0x8051 + +#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample) + +#endif /* GLX_3DFX_multisample */ + +/* ------------------------ GLX_AMD_gpu_association ------------------------ */ + +#ifndef GLX_AMD_gpu_association +#define GLX_AMD_gpu_association 1 + +#define GLX_GPU_VENDOR_AMD 0x1F00 +#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 +#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define GLX_GPU_RAM_AMD 0x21A3 +#define GLX_GPU_CLOCK_AMD 0x21A4 +#define GLX_GPU_NUM_PIPES_AMD 0x21A5 +#define GLX_GPU_NUM_SIMD_AMD 0x21A6 +#define GLX_GPU_NUM_RB_AMD 0x21A7 +#define GLX_GPU_NUM_SPI_AMD 0x21A8 + +#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association) + +#endif /* GLX_AMD_gpu_association */ + +/* ------------------------- GLX_ARB_create_context ------------------------ */ + +#ifndef GLX_ARB_create_context +#define GLX_ARB_create_context 1 + +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 + +typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); + +#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB) + +#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context) + +#endif /* GLX_ARB_create_context */ + +/* --------------------- GLX_ARB_create_context_profile -------------------- */ + +#ifndef GLX_ARB_create_context_profile +#define GLX_ARB_create_context_profile 1 + +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define GLXEW_ARB_create_context_profile GLXEW_GET_VAR(__GLXEW_ARB_create_context_profile) + +#endif /* GLX_ARB_create_context_profile */ + +/* ------------------- GLX_ARB_create_context_robustness ------------------- */ + +#ifndef GLX_ARB_create_context_robustness +#define GLX_ARB_create_context_robustness 1 + +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define GLXEW_ARB_create_context_robustness GLXEW_GET_VAR(__GLXEW_ARB_create_context_robustness) + +#endif /* GLX_ARB_create_context_robustness */ + +/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */ + +#ifndef GLX_ARB_fbconfig_float +#define GLX_ARB_fbconfig_float 1 + +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#define GLX_RGBA_FLOAT_TYPE 0x20B9 + +#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float) + +#endif /* GLX_ARB_fbconfig_float */ + +/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_ARB_framebuffer_sRGB +#define GLX_ARB_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 + +#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB) + +#endif /* GLX_ARB_framebuffer_sRGB */ + +/* ------------------------ GLX_ARB_get_proc_address ----------------------- */ + +#ifndef GLX_ARB_get_proc_address +#define GLX_ARB_get_proc_address 1 + +extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void); + +#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address) + +#endif /* GLX_ARB_get_proc_address */ + +/* -------------------------- GLX_ARB_multisample -------------------------- */ + +#ifndef GLX_ARB_multisample +#define GLX_ARB_multisample 1 + +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAMPLES_ARB 100001 + +#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample) + +#endif /* GLX_ARB_multisample */ + +/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */ + +#ifndef GLX_ARB_vertex_buffer_object +#define GLX_ARB_vertex_buffer_object 1 + +#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095 + +#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object) + +#endif /* GLX_ARB_vertex_buffer_object */ + +/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */ + +#ifndef GLX_ATI_pixel_format_float +#define GLX_ATI_pixel_format_float 1 + +#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100 + +#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float) + +#endif /* GLX_ATI_pixel_format_float */ + +/* ------------------------- GLX_ATI_render_texture ------------------------ */ + +#ifndef GLX_ATI_render_texture +#define GLX_ATI_render_texture 1 + +#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800 +#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801 +#define GLX_TEXTURE_FORMAT_ATI 0x9802 +#define GLX_TEXTURE_TARGET_ATI 0x9803 +#define GLX_MIPMAP_TEXTURE_ATI 0x9804 +#define GLX_TEXTURE_RGB_ATI 0x9805 +#define GLX_TEXTURE_RGBA_ATI 0x9806 +#define GLX_NO_TEXTURE_ATI 0x9807 +#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808 +#define GLX_TEXTURE_1D_ATI 0x9809 +#define GLX_TEXTURE_2D_ATI 0x980A +#define GLX_MIPMAP_LEVEL_ATI 0x980B +#define GLX_CUBE_MAP_FACE_ATI 0x980C +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810 +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811 +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812 +#define GLX_FRONT_LEFT_ATI 0x9813 +#define GLX_FRONT_RIGHT_ATI 0x9814 +#define GLX_BACK_LEFT_ATI 0x9815 +#define GLX_BACK_RIGHT_ATI 0x9816 +#define GLX_AUX0_ATI 0x9817 +#define GLX_AUX1_ATI 0x9818 +#define GLX_AUX2_ATI 0x9819 +#define GLX_AUX3_ATI 0x981A +#define GLX_AUX4_ATI 0x981B +#define GLX_AUX5_ATI 0x981C +#define GLX_AUX6_ATI 0x981D +#define GLX_AUX7_ATI 0x981E +#define GLX_AUX8_ATI 0x981F +#define GLX_AUX9_ATI 0x9820 +#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821 +#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822 + +typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); +typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); + +#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI) +#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI) +#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI) + +#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture) + +#endif /* GLX_ATI_render_texture */ + +/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */ + +#ifndef GLX_EXT_create_context_es2_profile +#define GLX_EXT_create_context_es2_profile 1 + +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define GLXEW_EXT_create_context_es2_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es2_profile) + +#endif /* GLX_EXT_create_context_es2_profile */ + +/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */ + +#ifndef GLX_EXT_fbconfig_packed_float +#define GLX_EXT_fbconfig_packed_float 1 + +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 + +#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float) + +#endif /* GLX_EXT_fbconfig_packed_float */ + +/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_EXT_framebuffer_sRGB +#define GLX_EXT_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 + +#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB) + +#endif /* GLX_EXT_framebuffer_sRGB */ + +/* ------------------------- GLX_EXT_import_context ------------------------ */ + +#ifndef GLX_EXT_import_context +#define GLX_EXT_import_context 1 + +#define GLX_SHARE_CONTEXT_EXT 0x800A +#define GLX_VISUAL_ID_EXT 0x800B +#define GLX_SCREEN_EXT 0x800C + +typedef XID GLXContextID; + +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context); +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID); +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute,int *value); + +#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT) +#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT) +#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT) +#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT) + +#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context) + +#endif /* GLX_EXT_import_context */ + +/* -------------------------- GLX_EXT_scene_marker ------------------------- */ + +#ifndef GLX_EXT_scene_marker +#define GLX_EXT_scene_marker 1 + +#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker) + +#endif /* GLX_EXT_scene_marker */ + +/* -------------------------- GLX_EXT_swap_control ------------------------- */ + +#ifndef GLX_EXT_swap_control +#define GLX_EXT_swap_control 1 + +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 + +typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable, int interval); + +#define glXSwapIntervalEXT GLXEW_GET_FUN(__glewXSwapIntervalEXT) + +#define GLXEW_EXT_swap_control GLXEW_GET_VAR(__GLXEW_EXT_swap_control) + +#endif /* GLX_EXT_swap_control */ + +/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */ + +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_EXT_texture_from_pixmap 1 + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB + +typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer); + +#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT) +#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT) + +#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap) + +#endif /* GLX_EXT_texture_from_pixmap */ + +/* -------------------------- GLX_EXT_visual_info -------------------------- */ + +#ifndef GLX_EXT_visual_info +#define GLX_EXT_visual_info 1 + +#define GLX_X_VISUAL_TYPE_EXT 0x22 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 +#define GLX_NONE_EXT 0x8000 +#define GLX_TRUE_COLOR_EXT 0x8002 +#define GLX_DIRECT_COLOR_EXT 0x8003 +#define GLX_PSEUDO_COLOR_EXT 0x8004 +#define GLX_STATIC_COLOR_EXT 0x8005 +#define GLX_GRAY_SCALE_EXT 0x8006 +#define GLX_STATIC_GRAY_EXT 0x8007 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 + +#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info) + +#endif /* GLX_EXT_visual_info */ + +/* ------------------------- GLX_EXT_visual_rating ------------------------- */ + +#ifndef GLX_EXT_visual_rating +#define GLX_EXT_visual_rating 1 + +#define GLX_VISUAL_CAVEAT_EXT 0x20 +#define GLX_SLOW_VISUAL_EXT 0x8001 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D + +#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating) + +#endif /* GLX_EXT_visual_rating */ + +/* -------------------------- GLX_INTEL_swap_event ------------------------- */ + +#ifndef GLX_INTEL_swap_event +#define GLX_INTEL_swap_event 1 + +#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180 +#define GLX_COPY_COMPLETE_INTEL 0x8181 +#define GLX_FLIP_COMPLETE_INTEL 0x8182 +#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000 + +#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event) + +#endif /* GLX_INTEL_swap_event */ + +/* -------------------------- GLX_MESA_agp_offset -------------------------- */ + +#ifndef GLX_MESA_agp_offset +#define GLX_MESA_agp_offset 1 + +typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer); + +#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA) + +#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset) + +#endif /* GLX_MESA_agp_offset */ + +/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */ + +#ifndef GLX_MESA_copy_sub_buffer +#define GLX_MESA_copy_sub_buffer 1 + +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height); + +#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA) + +#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer) + +#endif /* GLX_MESA_copy_sub_buffer */ + +/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */ + +#ifndef GLX_MESA_pixmap_colormap +#define GLX_MESA_pixmap_colormap 1 + +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); + +#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA) + +#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap) + +#endif /* GLX_MESA_pixmap_colormap */ + +/* ------------------------ GLX_MESA_release_buffers ----------------------- */ + +#ifndef GLX_MESA_release_buffers +#define GLX_MESA_release_buffers 1 + +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable d); + +#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA) + +#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers) + +#endif /* GLX_MESA_release_buffers */ + +/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */ + +#ifndef GLX_MESA_set_3dfx_mode +#define GLX_MESA_set_3dfx_mode 1 + +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 + +typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode); + +#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA) + +#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode) + +#endif /* GLX_MESA_set_3dfx_mode */ + +/* ------------------------- GLX_MESA_swap_control ------------------------- */ + +#ifndef GLX_MESA_swap_control +#define GLX_MESA_swap_control 1 + +typedef int ( * PFNGLXGETSWAPINTERVALMESAPROC) (void); +typedef int ( * PFNGLXSWAPINTERVALMESAPROC) (unsigned int interval); + +#define glXGetSwapIntervalMESA GLXEW_GET_FUN(__glewXGetSwapIntervalMESA) +#define glXSwapIntervalMESA GLXEW_GET_FUN(__glewXSwapIntervalMESA) + +#define GLXEW_MESA_swap_control GLXEW_GET_VAR(__GLXEW_MESA_swap_control) + +#endif /* GLX_MESA_swap_control */ + +/* --------------------------- GLX_NV_copy_image --------------------------- */ + +#ifndef GLX_NV_copy_image +#define GLX_NV_copy_image 1 + +typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define glXCopyImageSubDataNV GLXEW_GET_FUN(__glewXCopyImageSubDataNV) + +#define GLXEW_NV_copy_image GLXEW_GET_VAR(__GLXEW_NV_copy_image) + +#endif /* GLX_NV_copy_image */ + +/* -------------------------- GLX_NV_float_buffer -------------------------- */ + +#ifndef GLX_NV_float_buffer +#define GLX_NV_float_buffer 1 + +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 + +#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer) + +#endif /* GLX_NV_float_buffer */ + +/* ---------------------- GLX_NV_multisample_coverage ---------------------- */ + +#ifndef GLX_NV_multisample_coverage +#define GLX_NV_multisample_coverage 1 + +#define GLX_COLOR_SAMPLES_NV 0x20B3 +#define GLX_COVERAGE_SAMPLES_NV 100001 + +#define GLXEW_NV_multisample_coverage GLXEW_GET_VAR(__GLXEW_NV_multisample_coverage) + +#endif /* GLX_NV_multisample_coverage */ + +/* -------------------------- GLX_NV_present_video ------------------------- */ + +#ifndef GLX_NV_present_video +#define GLX_NV_present_video 1 + +#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 + +typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); +typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements); + +#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV) +#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV) + +#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video) + +#endif /* GLX_NV_present_video */ + +/* --------------------------- GLX_NV_swap_group --------------------------- */ + +#ifndef GLX_NV_swap_group +#define GLX_NV_swap_group 1 + +typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier); +typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group); +typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint *count); +typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); +typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); +typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen); + +#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV) +#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV) +#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV) +#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV) +#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV) +#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV) + +#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group) + +#endif /* GLX_NV_swap_group */ + +/* ----------------------- GLX_NV_vertex_array_range ----------------------- */ + +#ifndef GLX_NV_vertex_array_range +#define GLX_NV_vertex_array_range 1 + +typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer); + +#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV) +#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV) + +#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range) + +#endif /* GLX_NV_vertex_array_range */ + +/* -------------------------- GLX_NV_video_capture ------------------------- */ + +#ifndef GLX_NV_video_capture +#define GLX_NV_video_capture 1 + +#define GLX_DEVICE_ID_NV 0x20CD +#define GLX_UNIQUE_ID_NV 0x20CE +#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +typedef XID GLXVideoCaptureDeviceNV; + +typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); +typedef GLXVideoCaptureDeviceNV * ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display* dpy, int screen, int *nelements); +typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); +typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); +typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); + +#define glXBindVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXBindVideoCaptureDeviceNV) +#define glXEnumerateVideoCaptureDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoCaptureDevicesNV) +#define glXLockVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXLockVideoCaptureDeviceNV) +#define glXQueryVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXQueryVideoCaptureDeviceNV) +#define glXReleaseVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoCaptureDeviceNV) + +#define GLXEW_NV_video_capture GLXEW_GET_VAR(__GLXEW_NV_video_capture) + +#endif /* GLX_NV_video_capture */ + +/* -------------------------- GLX_NV_video_output -------------------------- */ + +#ifndef GLX_NV_video_output +#define GLX_NV_video_output 1 + +#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 +#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 +#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 +#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 +#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 +#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA +#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB +#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC + +typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); +typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); +typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice); +typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf); +typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); + +#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV) +#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV) +#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV) +#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV) +#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV) +#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV) + +#define GLXEW_NV_video_output GLXEW_GET_VAR(__GLXEW_NV_video_output) + +#endif /* GLX_NV_video_output */ + +/* -------------------------- GLX_OML_swap_method -------------------------- */ + +#ifndef GLX_OML_swap_method +#define GLX_OML_swap_method 1 + +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 + +#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method) + +#endif /* GLX_OML_swap_method */ + +/* -------------------------- GLX_OML_sync_control ------------------------- */ + +#ifndef GLX_OML_sync_control +#define GLX_OML_sync_control 1 + +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator); +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc); + +#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML) +#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML) +#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML) +#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML) +#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML) + +#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control) + +#endif /* GLX_OML_sync_control */ + +/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */ + +#ifndef GLX_SGIS_blended_overlay +#define GLX_SGIS_blended_overlay 1 + +#define GLX_BLENDED_RGBA_SGIS 0x8025 + +#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay) + +#endif /* GLX_SGIS_blended_overlay */ + +/* -------------------------- GLX_SGIS_color_range ------------------------- */ + +#ifndef GLX_SGIS_color_range +#define GLX_SGIS_color_range 1 + +#define GLX_MIN_RED_SGIS 0 +#define GLX_MAX_GREEN_SGIS 0 +#define GLX_MIN_BLUE_SGIS 0 +#define GLX_MAX_ALPHA_SGIS 0 +#define GLX_MIN_GREEN_SGIS 0 +#define GLX_MIN_ALPHA_SGIS 0 +#define GLX_MAX_RED_SGIS 0 +#define GLX_EXTENDED_RANGE_SGIS 0 +#define GLX_MAX_BLUE_SGIS 0 + +#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range) + +#endif /* GLX_SGIS_color_range */ + +/* -------------------------- GLX_SGIS_multisample ------------------------- */ + +#ifndef GLX_SGIS_multisample +#define GLX_SGIS_multisample 1 + +#define GLX_SAMPLE_BUFFERS_SGIS 100000 +#define GLX_SAMPLES_SGIS 100001 + +#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample) + +#endif /* GLX_SGIS_multisample */ + +/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */ + +#ifndef GLX_SGIS_shared_multisample +#define GLX_SGIS_shared_multisample 1 + +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 + +#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample) + +#endif /* GLX_SGIS_shared_multisample */ + +/* --------------------------- GLX_SGIX_fbconfig --------------------------- */ + +#ifndef GLX_SGIX_fbconfig +#define GLX_SGIX_fbconfig 1 + +#define GLX_WINDOW_BIT_SGIX 0x00000001 +#define GLX_RGBA_BIT_SGIX 0x00000001 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 +#define GLX_SCREEN_EXT 0x800C +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 +#define GLX_RENDER_TYPE_SGIX 0x8011 +#define GLX_X_RENDERABLE_SGIX 0x8012 +#define GLX_FBCONFIG_ID_SGIX 0x8013 +#define GLX_RGBA_TYPE_SGIX 0x8014 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 + +typedef XID GLXFBConfigIDSGIX; +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; + +typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, Pixmap pixmap); +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int *value); +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo *vis); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfig config); + +#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX) +#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX) +#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX) +#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX) +#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX) +#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX) + +#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig) + +#endif /* GLX_SGIX_fbconfig */ + +/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */ + +#ifndef GLX_SGIX_hyperpipe +#define GLX_SGIX_hyperpipe 1 + +#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 +#define GLX_PIPE_RECT_SGIX 0x00000001 +#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 +#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 +#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 +#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 +#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 +#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 +#define GLX_BAD_HYPERPIPE_SGIX 92 +#define GLX_HYPERPIPE_ID_SGIX 0x8030 + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int networkId; +} GLXHyperpipeNetworkSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int XOrigin; + int YOrigin; + int maxHeight; + int maxWidth; +} GLXPipeRectLimits; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int channel; + unsigned int participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int srcXOrigin; + int srcYOrigin; + int srcWidth; + int srcHeight; + int destXOrigin; + int destYOrigin; + int destWidth; + int destHeight; +} GLXPipeRect; + +typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); +typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); +typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); +typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); +typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); + +#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX) +#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX) +#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX) +#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX) +#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX) +#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX) +#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX) +#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX) + +#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe) + +#endif /* GLX_SGIX_hyperpipe */ + +/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */ + +#ifndef GLX_SGIX_pbuffer +#define GLX_SGIX_pbuffer 1 + +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 +#define GLX_PBUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B +#define GLX_LARGEST_PBUFFER_SGIX 0x801C +#define GLX_WIDTH_SGIX 0x801D +#define GLX_HEIGHT_SGIX 0x801E +#define GLX_EVENT_MASK_SGIX 0x801F +#define GLX_DAMAGED_SGIX 0x8020 +#define GLX_SAVED_SGIX 0x8021 +#define GLX_WINDOW_SGIX 0x8022 +#define GLX_PBUFFER_SGIX 0x8023 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 + +typedef XID GLXPbufferSGIX; +typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX; + +typedef GLXPbuffer ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfig config, unsigned int width, unsigned int height, int *attrib_list); +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long *mask); +typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask); + +#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX) +#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX) +#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX) +#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX) +#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX) + +#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer) + +#endif /* GLX_SGIX_pbuffer */ + +/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */ + +#ifndef GLX_SGIX_swap_barrier +#define GLX_SGIX_swap_barrier 1 + +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); + +#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX) +#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX) + +#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier) + +#endif /* GLX_SGIX_swap_barrier */ + +/* -------------------------- GLX_SGIX_swap_group -------------------------- */ + +#ifndef GLX_SGIX_swap_group +#define GLX_SGIX_swap_group 1 + +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); + +#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX) + +#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group) + +#endif /* GLX_SGIX_swap_group */ + +/* ------------------------- GLX_SGIX_video_resize ------------------------- */ + +#ifndef GLX_SGIX_video_resize +#define GLX_SGIX_video_resize 1 + +#define GLX_SYNC_FRAME_SGIX 0x00000000 +#define GLX_SYNC_SWAP_SGIX 0x00000001 + +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window); +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h); +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype); +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int *x, int *y, int *w, int *h); +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); + +#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX) +#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX) +#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX) +#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX) +#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX) + +#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize) + +#endif /* GLX_SGIX_video_resize */ + +/* ---------------------- GLX_SGIX_visual_select_group --------------------- */ + +#ifndef GLX_SGIX_visual_select_group +#define GLX_SGIX_visual_select_group 1 + +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 + +#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group) + +#endif /* GLX_SGIX_visual_select_group */ + +/* ---------------------------- GLX_SGI_cushion ---------------------------- */ + +#ifndef GLX_SGI_cushion +#define GLX_SGI_cushion 1 + +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion); + +#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI) + +#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion) + +#endif /* GLX_SGI_cushion */ + +/* ----------------------- GLX_SGI_make_current_read ----------------------- */ + +#ifndef GLX_SGI_make_current_read +#define GLX_SGI_make_current_read 1 + +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); + +#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI) +#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI) + +#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read) + +#endif /* GLX_SGI_make_current_read */ + +/* -------------------------- GLX_SGI_swap_control ------------------------- */ + +#ifndef GLX_SGI_swap_control +#define GLX_SGI_swap_control 1 + +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); + +#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI) + +#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control) + +#endif /* GLX_SGI_swap_control */ + +/* --------------------------- GLX_SGI_video_sync -------------------------- */ + +#ifndef GLX_SGI_video_sync +#define GLX_SGI_video_sync 1 + +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int* count); +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count); + +#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI) +#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI) + +#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync) + +#endif /* GLX_SGI_video_sync */ + +/* --------------------- GLX_SUN_get_transparent_index --------------------- */ + +#ifndef GLX_SUN_get_transparent_index +#define GLX_SUN_get_transparent_index 1 + +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long *pTransparentIndex); + +#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN) + +#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index) + +#endif /* GLX_SUN_get_transparent_index */ + +/* -------------------------- GLX_SUN_video_resize ------------------------- */ + +#ifndef GLX_SUN_video_resize +#define GLX_SUN_video_resize 1 + +#define GLX_VIDEO_RESIZE_SUN 0x8171 +#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD + +typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor); +typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor); + +#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN) +#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN) + +#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize) + +#endif /* GLX_SUN_video_resize */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define GLXEW_EXPORT +#else +#define GLXEW_EXPORT extern +#endif /* GLEW_MX */ + +extern PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay; + +extern PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig; +extern PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext; +extern PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer; +extern PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap; +extern PFNGLXCREATEWINDOWPROC __glewXCreateWindow; +extern PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer; +extern PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap; +extern PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow; +extern PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable; +extern PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib; +extern PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs; +extern PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent; +extern PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig; +extern PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent; +extern PFNGLXQUERYCONTEXTPROC __glewXQueryContext; +extern PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable; +extern PFNGLXSELECTEVENTPROC __glewXSelectEvent; + +extern PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB; + +extern PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI; +extern PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI; +extern PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI; + +extern PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT; +extern PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT; +extern PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT; +extern PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT; + +extern PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT; + +extern PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT; +extern PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT; + +extern PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA; + +extern PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA; + +extern PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA; + +extern PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA; + +extern PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA; + +extern PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA; +extern PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA; + +extern PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV; + +extern PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV; +extern PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV; + +extern PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV; +extern PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV; +extern PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV; +extern PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV; +extern PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV; +extern PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV; + +extern PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV; +extern PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV; + +extern PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV; +extern PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV; +extern PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV; +extern PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV; +extern PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV; + +extern PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV; +extern PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV; +extern PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV; +extern PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV; +extern PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV; +extern PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV; + +extern PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML; +extern PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML; +extern PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML; +extern PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML; +extern PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML; + +extern PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX; +extern PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX; +extern PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX; +extern PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX; +extern PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX; +extern PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX; + +extern PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX; +extern PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX; +extern PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX; +extern PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX; +extern PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX; +extern PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX; +extern PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX; +extern PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX; + +extern PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX; +extern PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX; +extern PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX; +extern PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX; +extern PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX; + +extern PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX; +extern PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX; + +extern PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX; + +extern PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX; +extern PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX; +extern PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX; +extern PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX; +extern PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX; + +extern PFNGLXCUSHIONSGIPROC __glewXCushionSGI; + +extern PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI; +extern PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI; + +extern PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI; + +extern PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI; +extern PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI; + +extern PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN; + +extern PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN; +extern PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN; + +#if defined(GLEW_MX) +struct GLXEWContextStruct +{ +#endif /* GLEW_MX */ + +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_0; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_1; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_2; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_3; +GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_4; +GLXEW_EXPORT GLboolean __GLXEW_3DFX_multisample; +GLXEW_EXPORT GLboolean __GLXEW_AMD_gpu_association; +GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context; +GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context_profile; +GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context_robustness; +GLXEW_EXPORT GLboolean __GLXEW_ARB_fbconfig_float; +GLXEW_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB; +GLXEW_EXPORT GLboolean __GLXEW_ARB_get_proc_address; +GLXEW_EXPORT GLboolean __GLXEW_ARB_multisample; +GLXEW_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object; +GLXEW_EXPORT GLboolean __GLXEW_ATI_pixel_format_float; +GLXEW_EXPORT GLboolean __GLXEW_ATI_render_texture; +GLXEW_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile; +GLXEW_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float; +GLXEW_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB; +GLXEW_EXPORT GLboolean __GLXEW_EXT_import_context; +GLXEW_EXPORT GLboolean __GLXEW_EXT_scene_marker; +GLXEW_EXPORT GLboolean __GLXEW_EXT_swap_control; +GLXEW_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap; +GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_info; +GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_rating; +GLXEW_EXPORT GLboolean __GLXEW_INTEL_swap_event; +GLXEW_EXPORT GLboolean __GLXEW_MESA_agp_offset; +GLXEW_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer; +GLXEW_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap; +GLXEW_EXPORT GLboolean __GLXEW_MESA_release_buffers; +GLXEW_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode; +GLXEW_EXPORT GLboolean __GLXEW_MESA_swap_control; +GLXEW_EXPORT GLboolean __GLXEW_NV_copy_image; +GLXEW_EXPORT GLboolean __GLXEW_NV_float_buffer; +GLXEW_EXPORT GLboolean __GLXEW_NV_multisample_coverage; +GLXEW_EXPORT GLboolean __GLXEW_NV_present_video; +GLXEW_EXPORT GLboolean __GLXEW_NV_swap_group; +GLXEW_EXPORT GLboolean __GLXEW_NV_vertex_array_range; +GLXEW_EXPORT GLboolean __GLXEW_NV_video_capture; +GLXEW_EXPORT GLboolean __GLXEW_NV_video_output; +GLXEW_EXPORT GLboolean __GLXEW_OML_swap_method; +GLXEW_EXPORT GLboolean __GLXEW_OML_sync_control; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_blended_overlay; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_color_range; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_multisample; +GLXEW_EXPORT GLboolean __GLXEW_SGIS_shared_multisample; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_fbconfig; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_hyperpipe; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_pbuffer; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_barrier; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_group; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_video_resize; +GLXEW_EXPORT GLboolean __GLXEW_SGIX_visual_select_group; +GLXEW_EXPORT GLboolean __GLXEW_SGI_cushion; +GLXEW_EXPORT GLboolean __GLXEW_SGI_make_current_read; +GLXEW_EXPORT GLboolean __GLXEW_SGI_swap_control; +GLXEW_EXPORT GLboolean __GLXEW_SGI_video_sync; +GLXEW_EXPORT GLboolean __GLXEW_SUN_get_transparent_index; +GLXEW_EXPORT GLboolean __GLXEW_SUN_video_resize; + +#ifdef GLEW_MX +}; /* GLXEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------ */ + +#ifdef GLEW_MX + +typedef struct GLXEWContextStruct GLXEWContext; +extern GLenum glxewContextInit (GLXEWContext* ctx); +extern GLboolean glxewContextIsSupported (const GLXEWContext* ctx, const char* name); + +#define glxewInit() glxewContextInit(glxewGetContext()) +#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x) + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&(glxewGetContext()->x)) +#define GLXEW_GET_FUN(x) x + +#else /* GLEW_MX */ + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLXEW_GET_FUN(x) x + +extern GLboolean glxewIsSupported (const char* name); + +#endif /* GLEW_MX */ + +extern GLboolean glxewGetExtension (const char* name); + +#ifdef __cplusplus +} +#endif + +#endif /* __glxew_h__ */ diff --git a/lib/osx/include/GL/wglew.h b/lib/osx/include/GL/wglew.h new file mode 100644 index 0000000..05f054f --- /dev/null +++ b/lib/osx/include/GL/wglew.h @@ -0,0 +1,1363 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* +** 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. +*/ + +#ifndef __wglew_h__ +#define __wglew_h__ +#define __WGLEW_H__ + +#ifdef __wglext_h_ +#error wglext.h included before wglew.h +#endif + +#define __wglext_h_ + +#if !defined(WINAPI) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN 1 +# endif +#include <windows.h> +# undef WIN32_LEAN_AND_MEAN +#endif + +/* + * GLEW_STATIC needs to be set when using the static version. + * GLEW_BUILD is set when building the DLL version. + */ +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* -------------------------- WGL_3DFX_multisample ------------------------- */ + +#ifndef WGL_3DFX_multisample +#define WGL_3DFX_multisample 1 + +#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 +#define WGL_SAMPLES_3DFX 0x2061 + +#define WGLEW_3DFX_multisample WGLEW_GET_VAR(__WGLEW_3DFX_multisample) + +#endif /* WGL_3DFX_multisample */ + +/* ------------------------- WGL_3DL_stereo_control ------------------------ */ + +#ifndef WGL_3DL_stereo_control +#define WGL_3DL_stereo_control 1 + +#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 + +typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState); + +#define wglSetStereoEmitterState3DL WGLEW_GET_FUN(__wglewSetStereoEmitterState3DL) + +#define WGLEW_3DL_stereo_control WGLEW_GET_VAR(__WGLEW_3DL_stereo_control) + +#endif /* WGL_3DL_stereo_control */ + +/* ------------------------ WGL_AMD_gpu_association ------------------------ */ + +#ifndef WGL_AMD_gpu_association +#define WGL_AMD_gpu_association 1 + +#define WGL_GPU_VENDOR_AMD 0x1F00 +#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_RAM_AMD 0x21A3 +#define WGL_GPU_CLOCK_AMD 0x21A4 +#define WGL_GPU_NUM_PIPES_AMD 0x21A5 +#define WGL_GPU_NUM_SIMD_AMD 0x21A6 +#define WGL_GPU_NUM_RB_AMD 0x21A7 +#define WGL_GPU_NUM_SPI_AMD 0x21A8 + +typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int* attribList); +typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc); +typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc); +typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids); +typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data); +typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc); + +#define wglBlitContextFramebufferAMD WGLEW_GET_FUN(__wglewBlitContextFramebufferAMD) +#define wglCreateAssociatedContextAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAMD) +#define wglCreateAssociatedContextAttribsAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAttribsAMD) +#define wglDeleteAssociatedContextAMD WGLEW_GET_FUN(__wglewDeleteAssociatedContextAMD) +#define wglGetContextGPUIDAMD WGLEW_GET_FUN(__wglewGetContextGPUIDAMD) +#define wglGetCurrentAssociatedContextAMD WGLEW_GET_FUN(__wglewGetCurrentAssociatedContextAMD) +#define wglGetGPUIDsAMD WGLEW_GET_FUN(__wglewGetGPUIDsAMD) +#define wglGetGPUInfoAMD WGLEW_GET_FUN(__wglewGetGPUInfoAMD) +#define wglMakeAssociatedContextCurrentAMD WGLEW_GET_FUN(__wglewMakeAssociatedContextCurrentAMD) + +#define WGLEW_AMD_gpu_association WGLEW_GET_VAR(__WGLEW_AMD_gpu_association) + +#endif /* WGL_AMD_gpu_association */ + +/* ------------------------- WGL_ARB_buffer_region ------------------------- */ + +#ifndef WGL_ARB_buffer_region +#define WGL_ARB_buffer_region 1 + +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 +#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 +#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 + +typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType); +typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion); +typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); +typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height); + +#define wglCreateBufferRegionARB WGLEW_GET_FUN(__wglewCreateBufferRegionARB) +#define wglDeleteBufferRegionARB WGLEW_GET_FUN(__wglewDeleteBufferRegionARB) +#define wglRestoreBufferRegionARB WGLEW_GET_FUN(__wglewRestoreBufferRegionARB) +#define wglSaveBufferRegionARB WGLEW_GET_FUN(__wglewSaveBufferRegionARB) + +#define WGLEW_ARB_buffer_region WGLEW_GET_VAR(__WGLEW_ARB_buffer_region) + +#endif /* WGL_ARB_buffer_region */ + +/* ------------------------- WGL_ARB_create_context ------------------------ */ + +#ifndef WGL_ARB_create_context +#define WGL_ARB_create_context 1 + +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 + +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int* attribList); + +#define wglCreateContextAttribsARB WGLEW_GET_FUN(__wglewCreateContextAttribsARB) + +#define WGLEW_ARB_create_context WGLEW_GET_VAR(__WGLEW_ARB_create_context) + +#endif /* WGL_ARB_create_context */ + +/* --------------------- WGL_ARB_create_context_profile -------------------- */ + +#ifndef WGL_ARB_create_context_profile +#define WGL_ARB_create_context_profile 1 + +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define WGLEW_ARB_create_context_profile WGLEW_GET_VAR(__WGLEW_ARB_create_context_profile) + +#endif /* WGL_ARB_create_context_profile */ + +/* ------------------- WGL_ARB_create_context_robustness ------------------- */ + +#ifndef WGL_ARB_create_context_robustness +#define WGL_ARB_create_context_robustness 1 + +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define WGLEW_ARB_create_context_robustness WGLEW_GET_VAR(__WGLEW_ARB_create_context_robustness) + +#endif /* WGL_ARB_create_context_robustness */ + +/* ----------------------- WGL_ARB_extensions_string ----------------------- */ + +#ifndef WGL_ARB_extensions_string +#define WGL_ARB_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); + +#define wglGetExtensionsStringARB WGLEW_GET_FUN(__wglewGetExtensionsStringARB) + +#define WGLEW_ARB_extensions_string WGLEW_GET_VAR(__WGLEW_ARB_extensions_string) + +#endif /* WGL_ARB_extensions_string */ + +/* ------------------------ WGL_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_ARB_framebuffer_sRGB +#define WGL_ARB_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 + +#define WGLEW_ARB_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_ARB_framebuffer_sRGB) + +#endif /* WGL_ARB_framebuffer_sRGB */ + +/* ----------------------- WGL_ARB_make_current_read ----------------------- */ + +#ifndef WGL_ARB_make_current_read +#define WGL_ARB_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCARB WGLEW_GET_FUN(__wglewGetCurrentReadDCARB) +#define wglMakeContextCurrentARB WGLEW_GET_FUN(__wglewMakeContextCurrentARB) + +#define WGLEW_ARB_make_current_read WGLEW_GET_VAR(__WGLEW_ARB_make_current_read) + +#endif /* WGL_ARB_make_current_read */ + +/* -------------------------- WGL_ARB_multisample -------------------------- */ + +#ifndef WGL_ARB_multisample +#define WGL_ARB_multisample 1 + +#define WGL_SAMPLE_BUFFERS_ARB 0x2041 +#define WGL_SAMPLES_ARB 0x2042 + +#define WGLEW_ARB_multisample WGLEW_GET_VAR(__WGLEW_ARB_multisample) + +#endif /* WGL_ARB_multisample */ + +/* ---------------------------- WGL_ARB_pbuffer ---------------------------- */ + +#ifndef WGL_ARB_pbuffer +#define WGL_ARB_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_ARB 0x202D +#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 +#define WGL_PBUFFER_LARGEST_ARB 0x2033 +#define WGL_PBUFFER_WIDTH_ARB 0x2034 +#define WGL_PBUFFER_HEIGHT_ARB 0x2035 +#define WGL_PBUFFER_LOST_ARB 0x2036 + +DECLARE_HANDLE(HPBUFFERARB); + +typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC); + +#define wglCreatePbufferARB WGLEW_GET_FUN(__wglewCreatePbufferARB) +#define wglDestroyPbufferARB WGLEW_GET_FUN(__wglewDestroyPbufferARB) +#define wglGetPbufferDCARB WGLEW_GET_FUN(__wglewGetPbufferDCARB) +#define wglQueryPbufferARB WGLEW_GET_FUN(__wglewQueryPbufferARB) +#define wglReleasePbufferDCARB WGLEW_GET_FUN(__wglewReleasePbufferDCARB) + +#define WGLEW_ARB_pbuffer WGLEW_GET_VAR(__WGLEW_ARB_pbuffer) + +#endif /* WGL_ARB_pbuffer */ + +/* -------------------------- WGL_ARB_pixel_format ------------------------- */ + +#ifndef WGL_ARB_pixel_format +#define WGL_ARB_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_DRAW_TO_BITMAP_ARB 0x2002 +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_NEED_PALETTE_ARB 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 +#define WGL_SWAP_METHOD_ARB 0x2007 +#define WGL_NUMBER_OVERLAYS_ARB 0x2008 +#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 +#define WGL_TRANSPARENT_ARB 0x200A +#define WGL_SHARE_DEPTH_ARB 0x200C +#define WGL_SHARE_STENCIL_ARB 0x200D +#define WGL_SHARE_ACCUM_ARB 0x200E +#define WGL_SUPPORT_GDI_ARB 0x200F +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_STEREO_ARB 0x2012 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201A +#define WGL_ALPHA_BITS_ARB 0x201B +#define WGL_ALPHA_SHIFT_ARB 0x201C +#define WGL_ACCUM_BITS_ARB 0x201D +#define WGL_ACCUM_RED_BITS_ARB 0x201E +#define WGL_ACCUM_GREEN_BITS_ARB 0x201F +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_GENERIC_ACCELERATION_ARB 0x2026 +#define WGL_FULL_ACCELERATION_ARB 0x2027 +#define WGL_SWAP_EXCHANGE_ARB 0x2028 +#define WGL_SWAP_COPY_ARB 0x2029 +#define WGL_SWAP_UNDEFINED_ARB 0x202A +#define WGL_TYPE_RGBA_ARB 0x202B +#define WGL_TYPE_COLORINDEX_ARB 0x202C +#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int *piValues); + +#define wglChoosePixelFormatARB WGLEW_GET_FUN(__wglewChoosePixelFormatARB) +#define wglGetPixelFormatAttribfvARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvARB) +#define wglGetPixelFormatAttribivARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribivARB) + +#define WGLEW_ARB_pixel_format WGLEW_GET_VAR(__WGLEW_ARB_pixel_format) + +#endif /* WGL_ARB_pixel_format */ + +/* ----------------------- WGL_ARB_pixel_format_float ---------------------- */ + +#ifndef WGL_ARB_pixel_format_float +#define WGL_ARB_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 + +#define WGLEW_ARB_pixel_format_float WGLEW_GET_VAR(__WGLEW_ARB_pixel_format_float) + +#endif /* WGL_ARB_pixel_format_float */ + +/* ------------------------- WGL_ARB_render_texture ------------------------ */ + +#ifndef WGL_ARB_render_texture +#define WGL_ARB_render_texture 1 + +#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 +#define WGL_TEXTURE_FORMAT_ARB 0x2072 +#define WGL_TEXTURE_TARGET_ARB 0x2073 +#define WGL_MIPMAP_TEXTURE_ARB 0x2074 +#define WGL_TEXTURE_RGB_ARB 0x2075 +#define WGL_TEXTURE_RGBA_ARB 0x2076 +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 +#define WGL_TEXTURE_1D_ARB 0x2079 +#define WGL_TEXTURE_2D_ARB 0x207A +#define WGL_MIPMAP_LEVEL_ARB 0x207B +#define WGL_CUBE_MAP_FACE_ARB 0x207C +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_FRONT_LEFT_ARB 0x2083 +#define WGL_FRONT_RIGHT_ARB 0x2084 +#define WGL_BACK_LEFT_ARB 0x2085 +#define WGL_BACK_RIGHT_ARB 0x2086 +#define WGL_AUX0_ARB 0x2087 +#define WGL_AUX1_ARB 0x2088 +#define WGL_AUX2_ARB 0x2089 +#define WGL_AUX3_ARB 0x208A +#define WGL_AUX4_ARB 0x208B +#define WGL_AUX5_ARB 0x208C +#define WGL_AUX6_ARB 0x208D +#define WGL_AUX7_ARB 0x208E +#define WGL_AUX8_ARB 0x208F +#define WGL_AUX9_ARB 0x2090 + +typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int* piAttribList); + +#define wglBindTexImageARB WGLEW_GET_FUN(__wglewBindTexImageARB) +#define wglReleaseTexImageARB WGLEW_GET_FUN(__wglewReleaseTexImageARB) +#define wglSetPbufferAttribARB WGLEW_GET_FUN(__wglewSetPbufferAttribARB) + +#define WGLEW_ARB_render_texture WGLEW_GET_VAR(__WGLEW_ARB_render_texture) + +#endif /* WGL_ARB_render_texture */ + +/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */ + +#ifndef WGL_ATI_pixel_format_float +#define WGL_ATI_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 + +#define WGLEW_ATI_pixel_format_float WGLEW_GET_VAR(__WGLEW_ATI_pixel_format_float) + +#endif /* WGL_ATI_pixel_format_float */ + +/* -------------------- WGL_ATI_render_texture_rectangle ------------------- */ + +#ifndef WGL_ATI_render_texture_rectangle +#define WGL_ATI_render_texture_rectangle 1 + +#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 + +#define WGLEW_ATI_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_ATI_render_texture_rectangle) + +#endif /* WGL_ATI_render_texture_rectangle */ + +/* ------------------- WGL_EXT_create_context_es2_profile ------------------ */ + +#ifndef WGL_EXT_create_context_es2_profile +#define WGL_EXT_create_context_es2_profile 1 + +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define WGLEW_EXT_create_context_es2_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es2_profile) + +#endif /* WGL_EXT_create_context_es2_profile */ + +/* -------------------------- WGL_EXT_depth_float -------------------------- */ + +#ifndef WGL_EXT_depth_float +#define WGL_EXT_depth_float 1 + +#define WGL_DEPTH_FLOAT_EXT 0x2040 + +#define WGLEW_EXT_depth_float WGLEW_GET_VAR(__WGLEW_EXT_depth_float) + +#endif /* WGL_EXT_depth_float */ + +/* ---------------------- WGL_EXT_display_color_table ---------------------- */ + +#ifndef WGL_EXT_display_color_table +#define WGL_EXT_display_color_table 1 + +typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef void (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (GLushort* table, GLuint length); + +#define wglBindDisplayColorTableEXT WGLEW_GET_FUN(__wglewBindDisplayColorTableEXT) +#define wglCreateDisplayColorTableEXT WGLEW_GET_FUN(__wglewCreateDisplayColorTableEXT) +#define wglDestroyDisplayColorTableEXT WGLEW_GET_FUN(__wglewDestroyDisplayColorTableEXT) +#define wglLoadDisplayColorTableEXT WGLEW_GET_FUN(__wglewLoadDisplayColorTableEXT) + +#define WGLEW_EXT_display_color_table WGLEW_GET_VAR(__WGLEW_EXT_display_color_table) + +#endif /* WGL_EXT_display_color_table */ + +/* ----------------------- WGL_EXT_extensions_string ----------------------- */ + +#ifndef WGL_EXT_extensions_string +#define WGL_EXT_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void); + +#define wglGetExtensionsStringEXT WGLEW_GET_FUN(__wglewGetExtensionsStringEXT) + +#define WGLEW_EXT_extensions_string WGLEW_GET_VAR(__WGLEW_EXT_extensions_string) + +#endif /* WGL_EXT_extensions_string */ + +/* ------------------------ WGL_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_EXT_framebuffer_sRGB +#define WGL_EXT_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 + +#define WGLEW_EXT_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_EXT_framebuffer_sRGB) + +#endif /* WGL_EXT_framebuffer_sRGB */ + +/* ----------------------- WGL_EXT_make_current_read ----------------------- */ + +#ifndef WGL_EXT_make_current_read +#define WGL_EXT_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCEXT WGLEW_GET_FUN(__wglewGetCurrentReadDCEXT) +#define wglMakeContextCurrentEXT WGLEW_GET_FUN(__wglewMakeContextCurrentEXT) + +#define WGLEW_EXT_make_current_read WGLEW_GET_VAR(__WGLEW_EXT_make_current_read) + +#endif /* WGL_EXT_make_current_read */ + +/* -------------------------- WGL_EXT_multisample -------------------------- */ + +#ifndef WGL_EXT_multisample +#define WGL_EXT_multisample 1 + +#define WGL_SAMPLE_BUFFERS_EXT 0x2041 +#define WGL_SAMPLES_EXT 0x2042 + +#define WGLEW_EXT_multisample WGLEW_GET_VAR(__WGLEW_EXT_multisample) + +#endif /* WGL_EXT_multisample */ + +/* ---------------------------- WGL_EXT_pbuffer ---------------------------- */ + +#ifndef WGL_EXT_pbuffer +#define WGL_EXT_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_EXT 0x202D +#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E +#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_PBUFFER_LARGEST_EXT 0x2033 +#define WGL_PBUFFER_WIDTH_EXT 0x2034 +#define WGL_PBUFFER_HEIGHT_EXT 0x2035 + +DECLARE_HANDLE(HPBUFFEREXT); + +typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC); + +#define wglCreatePbufferEXT WGLEW_GET_FUN(__wglewCreatePbufferEXT) +#define wglDestroyPbufferEXT WGLEW_GET_FUN(__wglewDestroyPbufferEXT) +#define wglGetPbufferDCEXT WGLEW_GET_FUN(__wglewGetPbufferDCEXT) +#define wglQueryPbufferEXT WGLEW_GET_FUN(__wglewQueryPbufferEXT) +#define wglReleasePbufferDCEXT WGLEW_GET_FUN(__wglewReleasePbufferDCEXT) + +#define WGLEW_EXT_pbuffer WGLEW_GET_VAR(__WGLEW_EXT_pbuffer) + +#endif /* WGL_EXT_pbuffer */ + +/* -------------------------- WGL_EXT_pixel_format ------------------------- */ + +#ifndef WGL_EXT_pixel_format +#define WGL_EXT_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 +#define WGL_DRAW_TO_WINDOW_EXT 0x2001 +#define WGL_DRAW_TO_BITMAP_EXT 0x2002 +#define WGL_ACCELERATION_EXT 0x2003 +#define WGL_NEED_PALETTE_EXT 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 +#define WGL_SWAP_METHOD_EXT 0x2007 +#define WGL_NUMBER_OVERLAYS_EXT 0x2008 +#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 +#define WGL_TRANSPARENT_EXT 0x200A +#define WGL_TRANSPARENT_VALUE_EXT 0x200B +#define WGL_SHARE_DEPTH_EXT 0x200C +#define WGL_SHARE_STENCIL_EXT 0x200D +#define WGL_SHARE_ACCUM_EXT 0x200E +#define WGL_SUPPORT_GDI_EXT 0x200F +#define WGL_SUPPORT_OPENGL_EXT 0x2010 +#define WGL_DOUBLE_BUFFER_EXT 0x2011 +#define WGL_STEREO_EXT 0x2012 +#define WGL_PIXEL_TYPE_EXT 0x2013 +#define WGL_COLOR_BITS_EXT 0x2014 +#define WGL_RED_BITS_EXT 0x2015 +#define WGL_RED_SHIFT_EXT 0x2016 +#define WGL_GREEN_BITS_EXT 0x2017 +#define WGL_GREEN_SHIFT_EXT 0x2018 +#define WGL_BLUE_BITS_EXT 0x2019 +#define WGL_BLUE_SHIFT_EXT 0x201A +#define WGL_ALPHA_BITS_EXT 0x201B +#define WGL_ALPHA_SHIFT_EXT 0x201C +#define WGL_ACCUM_BITS_EXT 0x201D +#define WGL_ACCUM_RED_BITS_EXT 0x201E +#define WGL_ACCUM_GREEN_BITS_EXT 0x201F +#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 +#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 +#define WGL_DEPTH_BITS_EXT 0x2022 +#define WGL_STENCIL_BITS_EXT 0x2023 +#define WGL_AUX_BUFFERS_EXT 0x2024 +#define WGL_NO_ACCELERATION_EXT 0x2025 +#define WGL_GENERIC_ACCELERATION_EXT 0x2026 +#define WGL_FULL_ACCELERATION_EXT 0x2027 +#define WGL_SWAP_EXCHANGE_EXT 0x2028 +#define WGL_SWAP_COPY_EXT 0x2029 +#define WGL_SWAP_UNDEFINED_EXT 0x202A +#define WGL_TYPE_RGBA_EXT 0x202B +#define WGL_TYPE_COLORINDEX_EXT 0x202C + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int *piValues); + +#define wglChoosePixelFormatEXT WGLEW_GET_FUN(__wglewChoosePixelFormatEXT) +#define wglGetPixelFormatAttribfvEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvEXT) +#define wglGetPixelFormatAttribivEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribivEXT) + +#define WGLEW_EXT_pixel_format WGLEW_GET_VAR(__WGLEW_EXT_pixel_format) + +#endif /* WGL_EXT_pixel_format */ + +/* ------------------- WGL_EXT_pixel_format_packed_float ------------------- */ + +#ifndef WGL_EXT_pixel_format_packed_float +#define WGL_EXT_pixel_format_packed_float 1 + +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 + +#define WGLEW_EXT_pixel_format_packed_float WGLEW_GET_VAR(__WGLEW_EXT_pixel_format_packed_float) + +#endif /* WGL_EXT_pixel_format_packed_float */ + +/* -------------------------- WGL_EXT_swap_control ------------------------- */ + +#ifndef WGL_EXT_swap_control +#define WGL_EXT_swap_control 1 + +typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void); +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval); + +#define wglGetSwapIntervalEXT WGLEW_GET_FUN(__wglewGetSwapIntervalEXT) +#define wglSwapIntervalEXT WGLEW_GET_FUN(__wglewSwapIntervalEXT) + +#define WGLEW_EXT_swap_control WGLEW_GET_VAR(__WGLEW_EXT_swap_control) + +#endif /* WGL_EXT_swap_control */ + +/* --------------------- WGL_I3D_digital_video_control --------------------- */ + +#ifndef WGL_I3D_digital_video_control +#define WGL_I3D_digital_video_control 1 + +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 + +typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewGetDigitalVideoParametersI3D) +#define wglSetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewSetDigitalVideoParametersI3D) + +#define WGLEW_I3D_digital_video_control WGLEW_GET_VAR(__WGLEW_I3D_digital_video_control) + +#endif /* WGL_I3D_digital_video_control */ + +/* ----------------------------- WGL_I3D_gamma ----------------------------- */ + +#ifndef WGL_I3D_gamma +#define WGL_I3D_gamma 1 + +#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F + +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT* puRed, USHORT *puGreen, USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT* puRed, const USHORT *puGreen, const USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetGammaTableI3D WGLEW_GET_FUN(__wglewGetGammaTableI3D) +#define wglGetGammaTableParametersI3D WGLEW_GET_FUN(__wglewGetGammaTableParametersI3D) +#define wglSetGammaTableI3D WGLEW_GET_FUN(__wglewSetGammaTableI3D) +#define wglSetGammaTableParametersI3D WGLEW_GET_FUN(__wglewSetGammaTableParametersI3D) + +#define WGLEW_I3D_gamma WGLEW_GET_VAR(__WGLEW_I3D_gamma) + +#endif /* WGL_I3D_gamma */ + +/* ---------------------------- WGL_I3D_genlock ---------------------------- */ + +#ifndef WGL_I3D_genlock +#define WGL_I3D_genlock 1 + +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C + +typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT* uRate); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT* uDelay); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT* uEdge); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT* uSource); +typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT* uMaxLineDelay, UINT *uMaxPixelDelay); + +#define wglDisableGenlockI3D WGLEW_GET_FUN(__wglewDisableGenlockI3D) +#define wglEnableGenlockI3D WGLEW_GET_FUN(__wglewEnableGenlockI3D) +#define wglGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGenlockSampleRateI3D) +#define wglGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGenlockSourceDelayI3D) +#define wglGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGenlockSourceEdgeI3D) +#define wglGenlockSourceI3D WGLEW_GET_FUN(__wglewGenlockSourceI3D) +#define wglGetGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGetGenlockSampleRateI3D) +#define wglGetGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGetGenlockSourceDelayI3D) +#define wglGetGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGetGenlockSourceEdgeI3D) +#define wglGetGenlockSourceI3D WGLEW_GET_FUN(__wglewGetGenlockSourceI3D) +#define wglIsEnabledGenlockI3D WGLEW_GET_FUN(__wglewIsEnabledGenlockI3D) +#define wglQueryGenlockMaxSourceDelayI3D WGLEW_GET_FUN(__wglewQueryGenlockMaxSourceDelayI3D) + +#define WGLEW_I3D_genlock WGLEW_GET_VAR(__WGLEW_I3D_genlock) + +#endif /* WGL_I3D_genlock */ + +/* -------------------------- WGL_I3D_image_buffer ------------------------- */ + +#ifndef WGL_I3D_image_buffer +#define WGL_I3D_image_buffer 1 + +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 + +typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, HANDLE* pEvent, LPVOID *pAddress, DWORD *pSize, UINT count); +typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags); +typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress); +typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, LPVOID* pAddress, UINT count); + +#define wglAssociateImageBufferEventsI3D WGLEW_GET_FUN(__wglewAssociateImageBufferEventsI3D) +#define wglCreateImageBufferI3D WGLEW_GET_FUN(__wglewCreateImageBufferI3D) +#define wglDestroyImageBufferI3D WGLEW_GET_FUN(__wglewDestroyImageBufferI3D) +#define wglReleaseImageBufferEventsI3D WGLEW_GET_FUN(__wglewReleaseImageBufferEventsI3D) + +#define WGLEW_I3D_image_buffer WGLEW_GET_VAR(__WGLEW_I3D_image_buffer) + +#endif /* WGL_I3D_image_buffer */ + +/* ------------------------ WGL_I3D_swap_frame_lock ------------------------ */ + +#ifndef WGL_I3D_swap_frame_lock +#define WGL_I3D_swap_frame_lock 1 + +typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL* pFlag); + +#define wglDisableFrameLockI3D WGLEW_GET_FUN(__wglewDisableFrameLockI3D) +#define wglEnableFrameLockI3D WGLEW_GET_FUN(__wglewEnableFrameLockI3D) +#define wglIsEnabledFrameLockI3D WGLEW_GET_FUN(__wglewIsEnabledFrameLockI3D) +#define wglQueryFrameLockMasterI3D WGLEW_GET_FUN(__wglewQueryFrameLockMasterI3D) + +#define WGLEW_I3D_swap_frame_lock WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_lock) + +#endif /* WGL_I3D_swap_frame_lock */ + +/* ------------------------ WGL_I3D_swap_frame_usage ----------------------- */ + +#ifndef WGL_I3D_swap_frame_usage +#define WGL_I3D_swap_frame_usage 1 + +typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float* pUsage); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD* pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage); + +#define wglBeginFrameTrackingI3D WGLEW_GET_FUN(__wglewBeginFrameTrackingI3D) +#define wglEndFrameTrackingI3D WGLEW_GET_FUN(__wglewEndFrameTrackingI3D) +#define wglGetFrameUsageI3D WGLEW_GET_FUN(__wglewGetFrameUsageI3D) +#define wglQueryFrameTrackingI3D WGLEW_GET_FUN(__wglewQueryFrameTrackingI3D) + +#define WGLEW_I3D_swap_frame_usage WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_usage) + +#endif /* WGL_I3D_swap_frame_usage */ + +/* --------------------------- WGL_NV_DX_interop --------------------------- */ + +#ifndef WGL_NV_DX_interop +#define WGL_NV_DX_interop 1 + +#define WGL_ACCESS_READ_ONLY_NV 0x0000 +#define WGL_ACCESS_READ_WRITE_NV 0x0001 +#define WGL_ACCESS_WRITE_DISCARD_NV 0x0002 + +typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice); +typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access); +typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice); +typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access); +typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void* dxObject, HANDLE shareHandle); +typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject); + +#define wglDXCloseDeviceNV WGLEW_GET_FUN(__wglewDXCloseDeviceNV) +#define wglDXLockObjectsNV WGLEW_GET_FUN(__wglewDXLockObjectsNV) +#define wglDXObjectAccessNV WGLEW_GET_FUN(__wglewDXObjectAccessNV) +#define wglDXOpenDeviceNV WGLEW_GET_FUN(__wglewDXOpenDeviceNV) +#define wglDXRegisterObjectNV WGLEW_GET_FUN(__wglewDXRegisterObjectNV) +#define wglDXSetResourceShareHandleNV WGLEW_GET_FUN(__wglewDXSetResourceShareHandleNV) +#define wglDXUnlockObjectsNV WGLEW_GET_FUN(__wglewDXUnlockObjectsNV) +#define wglDXUnregisterObjectNV WGLEW_GET_FUN(__wglewDXUnregisterObjectNV) + +#define WGLEW_NV_DX_interop WGLEW_GET_VAR(__WGLEW_NV_DX_interop) + +#endif /* WGL_NV_DX_interop */ + +/* --------------------------- WGL_NV_copy_image --------------------------- */ + +#ifndef WGL_NV_copy_image +#define WGL_NV_copy_image 1 + +typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define wglCopyImageSubDataNV WGLEW_GET_FUN(__wglewCopyImageSubDataNV) + +#define WGLEW_NV_copy_image WGLEW_GET_VAR(__WGLEW_NV_copy_image) + +#endif /* WGL_NV_copy_image */ + +/* -------------------------- WGL_NV_float_buffer -------------------------- */ + +#ifndef WGL_NV_float_buffer +#define WGL_NV_float_buffer 1 + +#define WGL_FLOAT_COMPONENTS_NV 0x20B0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 +#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 +#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 +#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 + +#define WGLEW_NV_float_buffer WGLEW_GET_VAR(__WGLEW_NV_float_buffer) + +#endif /* WGL_NV_float_buffer */ + +/* -------------------------- WGL_NV_gpu_affinity -------------------------- */ + +#ifndef WGL_NV_gpu_affinity +#define WGL_NV_gpu_affinity 1 + +#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 + +DECLARE_HANDLE(HGPUNV); +typedef struct _GPU_DEVICE { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD Flags; + RECT rcVirtualScreen; +} GPU_DEVICE, *PGPU_DEVICE; + +typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList); +typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc); +typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); +typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu); +typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu); + +#define wglCreateAffinityDCNV WGLEW_GET_FUN(__wglewCreateAffinityDCNV) +#define wglDeleteDCNV WGLEW_GET_FUN(__wglewDeleteDCNV) +#define wglEnumGpuDevicesNV WGLEW_GET_FUN(__wglewEnumGpuDevicesNV) +#define wglEnumGpusFromAffinityDCNV WGLEW_GET_FUN(__wglewEnumGpusFromAffinityDCNV) +#define wglEnumGpusNV WGLEW_GET_FUN(__wglewEnumGpusNV) + +#define WGLEW_NV_gpu_affinity WGLEW_GET_VAR(__WGLEW_NV_gpu_affinity) + +#endif /* WGL_NV_gpu_affinity */ + +/* ---------------------- WGL_NV_multisample_coverage ---------------------- */ + +#ifndef WGL_NV_multisample_coverage +#define WGL_NV_multisample_coverage 1 + +#define WGL_COVERAGE_SAMPLES_NV 0x2042 +#define WGL_COLOR_SAMPLES_NV 0x20B9 + +#define WGLEW_NV_multisample_coverage WGLEW_GET_VAR(__WGLEW_NV_multisample_coverage) + +#endif /* WGL_NV_multisample_coverage */ + +/* -------------------------- WGL_NV_present_video ------------------------- */ + +#ifndef WGL_NV_present_video +#define WGL_NV_present_video 1 + +#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 + +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList); +typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int* piValue); + +#define wglBindVideoDeviceNV WGLEW_GET_FUN(__wglewBindVideoDeviceNV) +#define wglEnumerateVideoDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoDevicesNV) +#define wglQueryCurrentContextNV WGLEW_GET_FUN(__wglewQueryCurrentContextNV) + +#define WGLEW_NV_present_video WGLEW_GET_VAR(__WGLEW_NV_present_video) + +#endif /* WGL_NV_present_video */ + +/* ---------------------- WGL_NV_render_depth_texture ---------------------- */ + +#ifndef WGL_NV_render_depth_texture +#define WGL_NV_render_depth_texture 1 + +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_DEPTH_COMPONENT_NV 0x20A7 + +#define WGLEW_NV_render_depth_texture WGLEW_GET_VAR(__WGLEW_NV_render_depth_texture) + +#endif /* WGL_NV_render_depth_texture */ + +/* -------------------- WGL_NV_render_texture_rectangle -------------------- */ + +#ifndef WGL_NV_render_texture_rectangle +#define WGL_NV_render_texture_rectangle 1 + +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 + +#define WGLEW_NV_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_NV_render_texture_rectangle) + +#endif /* WGL_NV_render_texture_rectangle */ + +/* --------------------------- WGL_NV_swap_group --------------------------- */ + +#ifndef WGL_NV_swap_group +#define WGL_NV_swap_group 1 + +typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier); +typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint* count); +typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint* maxGroups, GLuint *maxBarriers); +typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint* group, GLuint *barrier); +typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC); + +#define wglBindSwapBarrierNV WGLEW_GET_FUN(__wglewBindSwapBarrierNV) +#define wglJoinSwapGroupNV WGLEW_GET_FUN(__wglewJoinSwapGroupNV) +#define wglQueryFrameCountNV WGLEW_GET_FUN(__wglewQueryFrameCountNV) +#define wglQueryMaxSwapGroupsNV WGLEW_GET_FUN(__wglewQueryMaxSwapGroupsNV) +#define wglQuerySwapGroupNV WGLEW_GET_FUN(__wglewQuerySwapGroupNV) +#define wglResetFrameCountNV WGLEW_GET_FUN(__wglewResetFrameCountNV) + +#define WGLEW_NV_swap_group WGLEW_GET_VAR(__WGLEW_NV_swap_group) + +#endif /* WGL_NV_swap_group */ + +/* ----------------------- WGL_NV_vertex_array_range ----------------------- */ + +#ifndef WGL_NV_vertex_array_range +#define WGL_NV_vertex_array_range 1 + +typedef void * (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer); + +#define wglAllocateMemoryNV WGLEW_GET_FUN(__wglewAllocateMemoryNV) +#define wglFreeMemoryNV WGLEW_GET_FUN(__wglewFreeMemoryNV) + +#define WGLEW_NV_vertex_array_range WGLEW_GET_VAR(__WGLEW_NV_vertex_array_range) + +#endif /* WGL_NV_vertex_array_range */ + +/* -------------------------- WGL_NV_video_capture ------------------------- */ + +#ifndef WGL_NV_video_capture +#define WGL_NV_video_capture 1 + +#define WGL_UNIQUE_ID_NV 0x20CE +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice); +typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); + +#define wglBindVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewBindVideoCaptureDeviceNV) +#define wglEnumerateVideoCaptureDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoCaptureDevicesNV) +#define wglLockVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewLockVideoCaptureDeviceNV) +#define wglQueryVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewQueryVideoCaptureDeviceNV) +#define wglReleaseVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoCaptureDeviceNV) + +#define WGLEW_NV_video_capture WGLEW_GET_VAR(__WGLEW_NV_video_capture) + +#endif /* WGL_NV_video_capture */ + +/* -------------------------- WGL_NV_video_output -------------------------- */ + +#ifndef WGL_NV_video_output +#define WGL_NV_video_output 1 + +#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 +#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 +#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 +#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_FRAME 0x20C8 +#define WGL_VIDEO_OUT_FIELD_1 0x20C9 +#define WGL_VIDEO_OUT_FIELD_2 0x20CA +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC + +DECLARE_HANDLE(HPVIDEODEV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice); +typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock); + +#define wglBindVideoImageNV WGLEW_GET_FUN(__wglewBindVideoImageNV) +#define wglGetVideoDeviceNV WGLEW_GET_FUN(__wglewGetVideoDeviceNV) +#define wglGetVideoInfoNV WGLEW_GET_FUN(__wglewGetVideoInfoNV) +#define wglReleaseVideoDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoDeviceNV) +#define wglReleaseVideoImageNV WGLEW_GET_FUN(__wglewReleaseVideoImageNV) +#define wglSendPbufferToVideoNV WGLEW_GET_FUN(__wglewSendPbufferToVideoNV) + +#define WGLEW_NV_video_output WGLEW_GET_VAR(__WGLEW_NV_video_output) + +#endif /* WGL_NV_video_output */ + +/* -------------------------- WGL_OML_sync_control ------------------------- */ + +#ifndef WGL_OML_sync_control +#define WGL_OML_sync_control 1 + +typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32* numerator, INT32 *denominator); +typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64* ust, INT64 *msc, INT64 *sbc); +typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64 *msc, INT64 *sbc); +typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64* ust, INT64 *msc, INT64 *sbc); + +#define wglGetMscRateOML WGLEW_GET_FUN(__wglewGetMscRateOML) +#define wglGetSyncValuesOML WGLEW_GET_FUN(__wglewGetSyncValuesOML) +#define wglSwapBuffersMscOML WGLEW_GET_FUN(__wglewSwapBuffersMscOML) +#define wglSwapLayerBuffersMscOML WGLEW_GET_FUN(__wglewSwapLayerBuffersMscOML) +#define wglWaitForMscOML WGLEW_GET_FUN(__wglewWaitForMscOML) +#define wglWaitForSbcOML WGLEW_GET_FUN(__wglewWaitForSbcOML) + +#define WGLEW_OML_sync_control WGLEW_GET_VAR(__WGLEW_OML_sync_control) + +#endif /* WGL_OML_sync_control */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define WGLEW_EXPORT +#else +#define WGLEW_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#ifdef GLEW_MX +struct WGLEWContextStruct +{ +#endif /* GLEW_MX */ + +WGLEW_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL; + +WGLEW_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD; +WGLEW_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD; +WGLEW_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD; +WGLEW_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD; +WGLEW_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD; +WGLEW_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD; +WGLEW_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD; +WGLEW_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD; +WGLEW_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD; + +WGLEW_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB; +WGLEW_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB; +WGLEW_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB; +WGLEW_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB; + +WGLEW_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB; + +WGLEW_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB; + +WGLEW_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB; +WGLEW_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB; + +WGLEW_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB; +WGLEW_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB; +WGLEW_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB; +WGLEW_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB; +WGLEW_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB; + +WGLEW_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB; + +WGLEW_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB; +WGLEW_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB; +WGLEW_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB; + +WGLEW_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT; +WGLEW_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT; +WGLEW_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT; +WGLEW_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT; + +WGLEW_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT; + +WGLEW_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT; +WGLEW_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT; + +WGLEW_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT; +WGLEW_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT; +WGLEW_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT; +WGLEW_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT; +WGLEW_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT; + +WGLEW_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT; +WGLEW_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT; + +WGLEW_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT; +WGLEW_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT; + +WGLEW_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D; +WGLEW_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D; + +WGLEW_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D; +WGLEW_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D; +WGLEW_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D; +WGLEW_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D; + +WGLEW_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D; +WGLEW_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D; +WGLEW_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D; +WGLEW_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D; +WGLEW_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D; +WGLEW_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D; +WGLEW_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D; +WGLEW_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D; +WGLEW_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D; + +WGLEW_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D; +WGLEW_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D; +WGLEW_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D; +WGLEW_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D; + +WGLEW_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D; +WGLEW_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D; +WGLEW_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D; +WGLEW_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D; + +WGLEW_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D; +WGLEW_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D; +WGLEW_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D; +WGLEW_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D; + +WGLEW_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV; +WGLEW_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV; +WGLEW_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV; +WGLEW_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV; +WGLEW_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV; +WGLEW_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV; +WGLEW_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV; +WGLEW_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV; + +WGLEW_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV; + +WGLEW_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV; +WGLEW_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV; +WGLEW_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV; +WGLEW_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV; +WGLEW_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV; + +WGLEW_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV; +WGLEW_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV; +WGLEW_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV; + +WGLEW_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV; +WGLEW_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV; +WGLEW_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV; +WGLEW_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV; +WGLEW_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV; +WGLEW_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV; + +WGLEW_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV; +WGLEW_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV; + +WGLEW_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV; +WGLEW_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV; +WGLEW_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV; +WGLEW_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV; +WGLEW_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV; + +WGLEW_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV; +WGLEW_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV; +WGLEW_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV; +WGLEW_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV; +WGLEW_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV; +WGLEW_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV; + +WGLEW_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML; +WGLEW_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML; +WGLEW_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML; +WGLEW_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML; +WGLEW_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML; +WGLEW_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML; +WGLEW_EXPORT GLboolean __WGLEW_3DFX_multisample; +WGLEW_EXPORT GLboolean __WGLEW_3DL_stereo_control; +WGLEW_EXPORT GLboolean __WGLEW_AMD_gpu_association; +WGLEW_EXPORT GLboolean __WGLEW_ARB_buffer_region; +WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context; +WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context_profile; +WGLEW_EXPORT GLboolean __WGLEW_ARB_create_context_robustness; +WGLEW_EXPORT GLboolean __WGLEW_ARB_extensions_string; +WGLEW_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB; +WGLEW_EXPORT GLboolean __WGLEW_ARB_make_current_read; +WGLEW_EXPORT GLboolean __WGLEW_ARB_multisample; +WGLEW_EXPORT GLboolean __WGLEW_ARB_pbuffer; +WGLEW_EXPORT GLboolean __WGLEW_ARB_pixel_format; +WGLEW_EXPORT GLboolean __WGLEW_ARB_pixel_format_float; +WGLEW_EXPORT GLboolean __WGLEW_ARB_render_texture; +WGLEW_EXPORT GLboolean __WGLEW_ATI_pixel_format_float; +WGLEW_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle; +WGLEW_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile; +WGLEW_EXPORT GLboolean __WGLEW_EXT_depth_float; +WGLEW_EXPORT GLboolean __WGLEW_EXT_display_color_table; +WGLEW_EXPORT GLboolean __WGLEW_EXT_extensions_string; +WGLEW_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB; +WGLEW_EXPORT GLboolean __WGLEW_EXT_make_current_read; +WGLEW_EXPORT GLboolean __WGLEW_EXT_multisample; +WGLEW_EXPORT GLboolean __WGLEW_EXT_pbuffer; +WGLEW_EXPORT GLboolean __WGLEW_EXT_pixel_format; +WGLEW_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float; +WGLEW_EXPORT GLboolean __WGLEW_EXT_swap_control; +WGLEW_EXPORT GLboolean __WGLEW_I3D_digital_video_control; +WGLEW_EXPORT GLboolean __WGLEW_I3D_gamma; +WGLEW_EXPORT GLboolean __WGLEW_I3D_genlock; +WGLEW_EXPORT GLboolean __WGLEW_I3D_image_buffer; +WGLEW_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock; +WGLEW_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage; +WGLEW_EXPORT GLboolean __WGLEW_NV_DX_interop; +WGLEW_EXPORT GLboolean __WGLEW_NV_copy_image; +WGLEW_EXPORT GLboolean __WGLEW_NV_float_buffer; +WGLEW_EXPORT GLboolean __WGLEW_NV_gpu_affinity; +WGLEW_EXPORT GLboolean __WGLEW_NV_multisample_coverage; +WGLEW_EXPORT GLboolean __WGLEW_NV_present_video; +WGLEW_EXPORT GLboolean __WGLEW_NV_render_depth_texture; +WGLEW_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle; +WGLEW_EXPORT GLboolean __WGLEW_NV_swap_group; +WGLEW_EXPORT GLboolean __WGLEW_NV_vertex_array_range; +WGLEW_EXPORT GLboolean __WGLEW_NV_video_capture; +WGLEW_EXPORT GLboolean __WGLEW_NV_video_output; +WGLEW_EXPORT GLboolean __WGLEW_OML_sync_control; + +#ifdef GLEW_MX +}; /* WGLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX + +typedef struct WGLEWContextStruct WGLEWContext; +GLEWAPI GLenum wglewContextInit (WGLEWContext* ctx); +GLEWAPI GLboolean wglewContextIsSupported (const WGLEWContext* ctx, const char* name); + +#define wglewInit() wglewContextInit(wglewGetContext()) +#define wglewIsSupported(x) wglewContextIsSupported(wglewGetContext(), x) + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&(wglewGetContext()->x)) +#define WGLEW_GET_FUN(x) wglewGetContext()->x + +#else /* GLEW_MX */ + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define WGLEW_GET_FUN(x) x + +GLEWAPI GLboolean wglewIsSupported (const char* name); + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean wglewGetExtension (const char* name); + +#ifdef __cplusplus +} +#endif + +#undef GLEWAPI + +#endif /* __wglew_h__ */ diff --git a/lib/osx/include/SDL.h b/lib/osx/include/SDL.h new file mode 100644 index 0000000..1a3fa28 --- /dev/null +++ b/lib/osx/include/SDL.h @@ -0,0 +1,132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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_joystick.h" +#include "SDL_gamecontroller.h" +#include "SDL_haptic.h" +#include "SDL_hints.h" +#include "SDL_loadso.h" +#include "SDL_log.h" +#include "SDL_messagebox.h" +#include "SDL_mutex.h" +#include "SDL_power.h" +#include "SDL_render.h" +#include "SDL_rwops.h" +#include "SDL_system.h" +#include "SDL_thread.h" +#include "SDL_timer.h" +#include "SDL_version.h" +#include "SDL_video.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_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 \ + ) +/* @} */ + +/** + * This function initializes the subsystems specified by \c flags + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * This function initializes specific SDL subsystems + * + * 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. + */ +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 a mask of the specified subsystems which have + * previously been initialized. + * + * If \c 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. 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 */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/osx/include/SDL_assert.h b/lib/osx/include/SDL_assert.h new file mode 100644 index 0000000..402981f --- /dev/null +++ b/lib/osx/include/SDL_assert.h @@ -0,0 +1,289 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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_config.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 (!defined(__NACL__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif defined(HAVE_SIGNAL_H) + #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 ((__GNUC__ >= 2) || defined(_MSC_VER)) +# 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; + +#if (SDL_ASSERT_LEVEL > 0) + +/* 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) + +#endif /* enabled assertions support code */ + +/* 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) + + +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * \brief Set an application-defined assertion handler. + * + * This allows an app to show its own assertion UI and/or force the + * response to an assertion failure. If the app 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. + * + * Setting the callback to NULL restores SDL's original internal handler. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \return SDL_AssertState value of how to handle the assertion failure. + * + * \param handler Callback function, called when an assertion fails. + * \param userdata A pointer passed to the callback as-is. + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * \brief 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. + * + * \return The default SDL_AssertionHandler that is called when an assert triggers. + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * \brief 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(). + * + * \param puserdata 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. + * \return The SDL_AssertionHandler that is called when an assert triggers. + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * \brief Get a list of all assertion failures. + * + * Get all assertions triggered since last call to SDL_ResetAssertionReport(), + * or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * <code> + * 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; + * } + * </code> + * + * \return List of all assertions. + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * \brief Reset the list of all assertion failures. + * + * Reset list of all assertions triggered. + * + * \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/lib/osx/include/SDL_atomic.h b/lib/osx/include/SDL_atomic.h new file mode 100644 index 0000000..56aa81d --- /dev/null +++ b/lib/osx/include/SDL_atomic.h @@ -0,0 +1,268 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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; + +/** + * \brief Try to lock a spin lock by setting it to a non-zero value. + * + * \param lock Points to the lock. + * + * \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * \brief Lock a spin lock by setting it to a non-zero value. + * + * \param lock Points to the lock. + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * \brief Unlock a spin lock by setting it to 0. Always returns immediately + * + * \param lock Points to the lock. + */ +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) +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") +#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 + */ +#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(__arm__) +#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__) +#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 */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierRelease(); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquire(); +#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 /* __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; + +/** + * \brief Set an atomic variable to a new value if it is currently an old value. + * + * \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \note If you don't know what this function is for, you shouldn't use it! +*/ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * \brief Set an atomic variable to a value. + * + * \return The previous value of the atomic variable. + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * \brief Get the value of an atomic variable + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * \brief Add to an atomic variable. + * + * \return The previous value of the atomic variable. + * + * \note This same style can be used for any number operation + */ +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 + +/** + * \brief Set a pointer to a new value if it is currently an old value. + * + * \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \note If you don't know what this function is for, you shouldn't use it! +*/ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * \brief Set a pointer to a value atomically. + * + * \return The previous value of the pointer. + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * \brief Get the value of a pointer atomically. + */ +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/lib/osx/include/SDL_audio.h b/lib/osx/include/SDL_audio.h new file mode 100644 index 0000000..d51f0d1 --- /dev/null +++ b/lib/osx/include/SDL_audio.h @@ -0,0 +1,672 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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_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_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_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(). + */ +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 samples (power of 2) */ + 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); + +/** + * A structure to hold a set of audio conversion filters and buffers. + */ +#ifdef __GNUC__ +/* 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. + 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[10]; /**< Filter list */ + 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. + */ +/* @{ */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); +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(). + */ +/* @{ */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * This function returns the name of the current audio driver, or NULL + * if no driver has been initialized. + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * 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 \c obtained. If \c 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. + * + * When filling in the desired audio spec structure, + * - \c desired->freq should be the desired audio frequency in samples-per- + * second. + * - \c desired->format should be the desired audio format. + * - \c 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: \code ms = (samples*1000)/freq \endcode + * - \c desired->size is the size in bytes of the audio buffer, and is + * calculated by SDL_OpenAudio(). + * - \c desired->silence is the value used to set the buffer to silence, + * and is calculated by SDL_OpenAudio(). + * - \c 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. 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). + * - \c desired->userdata is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * The audio device starts out playing silence when it's opened, and should + * be enabled for playing by calling \c 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. + */ +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 available devices exposed by the current driver. + * Only valid after a successfully initializing the audio subsystem. + * Returns -1 if an explicit list of devices can't be determined; this 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 to 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()). + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * Must be a value between 0 and (number of audio devices-1). + * Only valid after a successfully initializing the audio subsystem. + * The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); recall 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 is called. + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + + +/** + * Open a specific audio device. Passing in a device name of NULL requests + * the most reasonable default (and is equivalent to calling SDL_OpenAudio()). + * + * 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. + * + * \return 0 on error, a valid device ID that is >= 2 on success. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. + */ +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; +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +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. + */ +/* @{ */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * This function loads a WAVE from the data source, automatically freeing + * that source if \c 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 + * \c *audio_buf to a malloc()'d buffer containing the audio data, + * and sets \c *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); + +/** + * 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) + +/** + * 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 \c cvt structure with information needed + * by SDL_ConvertAudio() to convert a buffer of audio data from one format + * to the other. + * + * \return -1 if the format conversion is not supported, 0 if there's + * no conversion needed, or 1 if the audio filter is set up. + */ +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); + +/** + * Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(), + * created an audio buffer \c cvt->buf, and filled it with \c 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 + * \c cvt->buf should be allocated after the \c cvt structure is initialized by + * SDL_BuildAudioCVT(), and should be \c 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); + +/** + * This works like SDL_MixAudio(), but you specify the audio format instead of + * using the format of audio device 1. Thus it can be used when no audio + * device is open at all. + */ +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. This 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. + * + * \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. + * \return zero on success, -1 on error. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_ClearQueuedAudio + */ +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. This 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 dequeued 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 queueing; 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. + * \return number of bytes dequeued, which could be less than requested. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_ClearQueuedAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback device: + * + * This is the number of bytes that have been queued for playback with + * SDL_QueueAudio(), but have not yet been sent to the hardware. This + * number may shrink at any time, so this only informs of pending data. + * + * 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 audio on a device that is using an application-supplied + * callback; calling this function on such a device always returns 0. + * You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use + * the audio callback, 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. + * \return Number of bytes (not samples!) of queued audio. + * + * \sa SDL_QueueAudio + * \sa SDL_ClearQueuedAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data. For playback devices, this is any queued data + * still waiting to be submitted to the hardware. For capture devices, this + * is any data that was queued by the device that hasn't yet been dequeued by + * the application. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * playback devices, the hardware will start playing silence if more audio + * isn't queued. Unpaused capture devices will start filling the queue again + * as soon as they have more data available (which, depending on the state + * of the hardware and the thread, could be before this function call + * returns!). + * + * 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 during a level change + * in your game. + * + * You may not queue audio on a device that is using an application-supplied + * callback; calling this function on such a device is always a no-op. + * You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use + * the audio callback, 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. + * + * \sa SDL_QueueAudio + * \sa SDL_GetQueuedAudioSize + */ +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. + */ +/* @{ */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function shuts down audio processing and closes the audio device. + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); +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/lib/osx/include/SDL_bits.h b/lib/osx/include/SDL_bits.h new file mode 100644 index 0000000..528da2e --- /dev/null +++ b/lib/osx/include/SDL_bits.h @@ -0,0 +1,97 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 Index of the most significant bit, or -1 if the value is 0. + */ +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && __GNUC__ >= 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); +#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 +} + +/* 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/lib/osx/include/SDL_blendmode.h b/lib/osx/include/SDL_blendmode.h new file mode 100644 index 0000000..56d8ad6 --- /dev/null +++ b/lib/osx/include/SDL_blendmode.h @@ -0,0 +1,63 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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; + +/* 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/lib/osx/include/SDL_clipboard.h b/lib/osx/include/SDL_clipboard.h new file mode 100644 index 0000000..a5556f2 --- /dev/null +++ b/lib/osx/include/SDL_clipboard.h @@ -0,0 +1,71 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ + +/** + * \brief Put UTF-8 text into the clipboard + * + * \sa SDL_GetClipboardText() + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free() + * + * \sa SDL_SetClipboardText() + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty + * + * \sa SDL_GetClipboardText() + */ +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/lib/osx/include/SDL_config.h b/lib/osx/include/SDL_config.h new file mode 100644 index 0000000..82905ce --- /dev/null +++ b/lib/osx/include/SDL_config.h @@ -0,0 +1,364 @@ +/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \file SDL_config.h.in + * + * This is a set of defines to configure the SDL features + */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +/* Make sure that this isn't included by Visual C++ */ +#ifdef _MSC_VER +#error You should run hg revert SDL_config.h +#endif + +/* C language features */ +/* #undef const */ +/* #undef inline */ +/* #undef volatile */ + +/* C datatypes */ +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif +#define HAVE_GCC_ATOMICS 1 +/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */ + +/* #undef HAVE_DDRAW_H */ +/* #undef HAVE_DINPUT_H */ +/* #undef HAVE_DSOUND_H */ +/* #undef HAVE_DXGI_H */ +/* #undef HAVE_XINPUT_H */ + +/* Comment this if you want to build without any C library requirements */ +#define HAVE_LIBC 1 +#if HAVE_LIBC + +/* Useful headers */ +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +/* #undef HAVE_MALLOC_H */ +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 1 +/* #undef HAVE_ALTIVEC_H */ +/* #undef HAVE_PTHREAD_NP_H */ +/* #undef HAVE_LIBUDEV_H */ +/* #undef HAVE_DBUS_DBUS_H */ +/* #undef HAVE_IBUS_IBUS_H */ +/* #undef HAVE_FCITX_FRONTEND_H */ + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */ +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#endif +#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 +/* #undef HAVE__STRREV */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ +/* #undef HAVE_INDEX */ +/* #undef HAVE_RINDEX */ +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +/* #undef HAVE_ITOA */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__UITOA */ +/* #undef HAVE__ULTOA */ +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +/* #undef HAVE__I64TOA */ +/* #undef HAVE__UI64TOA */ +#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 +/* #undef HAVE__STRICMP */ +#define HAVE_STRCASECMP 1 +/* #undef HAVE__STRNICMP */ +#define HAVE_STRNCASECMP 1 +/* #undef HAVE_SSCANF */ +#define HAVE_VSSCANF 1 +/* #undef HAVE_SNPRINTF */ +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI /**/ +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 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_FSEEKO 1 +/* #undef HAVE_FSEEKO64 */ +#define HAVE_SIGACTION 1 +#define HAVE_SA_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 +/* #undef HAVE_CLOCK_GETTIME */ +/* #undef HAVE_GETPAGESIZE */ +#define HAVE_MPROTECT 1 +#define HAVE_ICONV 1 +#define HAVE_PTHREAD_SETNAME_NP 1 +/* #undef HAVE_PTHREAD_SET_NAME_NP */ +/* #undef HAVE_SEM_TIMEDWAIT */ + +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDINT_H 1 +#endif /* HAVE_LIBC */ + +/* SDL internal assertion support */ +/* #undef SDL_DEFAULT_ASSERT_LEVEL */ + +/* Allow disabling of core subsystems */ +/* #undef SDL_ATOMIC_DISABLED */ +/* #undef SDL_AUDIO_DISABLED */ +/* #undef SDL_CPUINFO_DISABLED */ +/* #undef SDL_EVENTS_DISABLED */ +/* #undef SDL_FILE_DISABLED */ +/* #undef SDL_JOYSTICK_DISABLED */ +/* #undef SDL_HAPTIC_DISABLED */ +/* #undef SDL_LOADSO_DISABLED */ +/* #undef SDL_RENDER_DISABLED */ +/* #undef SDL_THREADS_DISABLED */ +/* #undef SDL_TIMERS_DISABLED */ +/* #undef SDL_VIDEO_DISABLED */ +/* #undef SDL_POWER_DISABLED */ +/* #undef SDL_FILESYSTEM_DISABLED */ + +/* Enable various audio drivers */ +/* #undef SDL_AUDIO_DRIVER_ALSA */ +/* #undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_ARTS */ +/* #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_PULSEAUDIO */ +/* #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_HAIKU */ +/* #undef SDL_AUDIO_DRIVER_BSD */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 +/* #undef SDL_AUDIO_DRIVER_ANDROID */ +/* #undef SDL_AUDIO_DRIVER_XAUDIO2 */ +/* #undef SDL_AUDIO_DRIVER_DSOUND */ +/* #undef SDL_AUDIO_DRIVER_ESD */ +/* #undef SDL_AUDIO_DRIVER_ESD_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_NACL */ +/* #undef SDL_AUDIO_DRIVER_NAS */ +/* #undef SDL_AUDIO_DRIVER_NAS_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_SNDIO */ +/* #undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_OSS */ +/* #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H */ +/* #undef SDL_AUDIO_DRIVER_PAUDIO */ +/* #undef SDL_AUDIO_DRIVER_QSA */ +/* #undef SDL_AUDIO_DRIVER_SUNAUDIO */ +/* #undef SDL_AUDIO_DRIVER_WINMM */ +/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND */ +/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_EMSCRIPTEN */ + +/* Enable various input drivers */ +/* #undef SDL_INPUT_LINUXEV */ +/* #undef SDL_INPUT_LINUXKD */ +/* #undef SDL_INPUT_TSLIB */ +/* #undef SDL_JOYSTICK_HAIKU */ +/* #undef SDL_JOYSTICK_DINPUT */ +/* #undef SDL_JOYSTICK_XINPUT */ +/* #undef SDL_JOYSTICK_DUMMY */ +#define SDL_JOYSTICK_IOKIT 1 +/* #undef SDL_JOYSTICK_LINUX */ +/* #undef SDL_JOYSTICK_ANDROID */ +/* #undef SDL_JOYSTICK_WINMM */ +/* #undef SDL_JOYSTICK_USBHID */ +/* #undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H */ +/* #undef SDL_JOYSTICK_EMSCRIPTEN */ +/* #undef SDL_HAPTIC_DUMMY */ +/* #undef SDL_HAPTIC_LINUX */ +#define SDL_HAPTIC_IOKIT 1 +/* #undef SDL_HAPTIC_DINPUT */ +/* #undef SDL_HAPTIC_XINPUT */ + +/* Enable various shared object loading systems */ +/* #undef SDL_LOADSO_HAIKU */ +#define SDL_LOADSO_DLOPEN 1 +/* #undef SDL_LOADSO_DUMMY */ +/* #undef SDL_LOADSO_LDG */ +/* #undef SDL_LOADSO_WINDOWS */ + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 +/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP */ +/* #undef SDL_THREAD_WINDOWS */ + +/* Enable various timer systems */ +/* #undef SDL_TIMER_HAIKU */ +/* #undef SDL_TIMER_DUMMY */ +#define SDL_TIMER_UNIX 1 +/* #undef SDL_TIMER_WINDOWS */ + +/* Enable various video drivers */ +/* #undef SDL_VIDEO_DRIVER_HAIKU */ +#define SDL_VIDEO_DRIVER_COCOA 1 +/* #undef SDL_VIDEO_DRIVER_DIRECTFB */ +/* #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +/* #undef SDL_VIDEO_DRIVER_WINDOWS */ +/* #undef SDL_VIDEO_DRIVER_WAYLAND */ +/* #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ +/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */ +/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL */ +/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR */ +/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON */ +/* #undef SDL_VIDEO_DRIVER_MIR */ +/* #undef SDL_VIDEO_DRIVER_MIR_DYNAMIC */ +/* #undef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON */ +/* #undef SDL_VIDEO_DRIVER_X11 */ +/* #undef SDL_VIDEO_DRIVER_RPI */ +/* #undef SDL_VIDEO_DRIVER_ANDROID */ +/* #undef SDL_VIDEO_DRIVER_EMSCRIPTEN */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE */ +/* #undef SDL_VIDEO_DRIVER_X11_XCURSOR */ +/* #undef SDL_VIDEO_DRIVER_X11_XDBE */ +/* #undef SDL_VIDEO_DRIVER_X11_XINERAMA */ +/* #undef SDL_VIDEO_DRIVER_X11_XINPUT2 */ +/* #undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH */ +/* #undef SDL_VIDEO_DRIVER_X11_XRANDR */ +/* #undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER */ +/* #undef SDL_VIDEO_DRIVER_X11_XSHAPE */ +/* #undef SDL_VIDEO_DRIVER_X11_XVIDMODE */ +/* #undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS */ +/* #undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY */ +/* #undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM */ +/* #undef SDL_VIDEO_DRIVER_NACL */ +/* #undef SDL_VIDEO_DRIVER_VIVANTE */ +/* #undef SDL_VIDEO_DRIVER_VIVANTE_VDK */ + +/* #undef SDL_VIDEO_RENDER_D3D */ +/* #undef SDL_VIDEO_RENDER_D3D11 */ +#define SDL_VIDEO_RENDER_OGL 1 +/* #undef SDL_VIDEO_RENDER_OGL_ES */ +/* #undef SDL_VIDEO_RENDER_OGL_ES2 */ +/* #undef SDL_VIDEO_RENDER_DIRECTFB */ + +/* Enable OpenGL support */ +#define SDL_VIDEO_OPENGL 1 +/* #undef SDL_VIDEO_OPENGL_ES */ +/* #undef SDL_VIDEO_OPENGL_ES2 */ +/* #undef SDL_VIDEO_OPENGL_BGL */ +#define SDL_VIDEO_OPENGL_CGL 1 +/* #undef SDL_VIDEO_OPENGL_EGL */ +/* #undef SDL_VIDEO_OPENGL_GLX */ +/* #undef SDL_VIDEO_OPENGL_WGL */ +/* #undef SDL_VIDEO_OPENGL_OSMESA */ +/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */ + +/* Enable system power support */ +/* #undef SDL_POWER_LINUX */ +/* #undef SDL_POWER_WINDOWS */ +#define SDL_POWER_MACOSX 1 +/* #undef SDL_POWER_HAIKU */ +/* #undef SDL_POWER_ANDROID */ +/* #undef SDL_POWER_EMSCRIPTEN */ +/* #undef SDL_POWER_HARDWIRED */ + +/* Enable system filesystem support */ +/* #undef SDL_FILESYSTEM_HAIKU */ +#define SDL_FILESYSTEM_COCOA 1 +/* #undef SDL_FILESYSTEM_DUMMY */ +/* #undef SDL_FILESYSTEM_UNIX */ +/* #undef SDL_FILESYSTEM_WINDOWS */ +/* #undef SDL_FILESYSTEM_NACL */ +/* #undef SDL_FILESYSTEM_ANDROID */ +/* #undef SDL_FILESYSTEM_EMSCRIPTEN */ + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +/* #undef SDL_ALTIVEC_BLITTERS */ + +/* Enable ime support */ +/* #undef SDL_USE_IME */ + +#endif /* _SDL_config_h */ diff --git a/lib/osx/include/SDL_config_android.h b/lib/osx/include/SDL_config_android.h new file mode 100644 index 0000000..738dd94 --- /dev/null +++ b/lib/osx/include/SDL_config_android.h @@ -0,0 +1,144 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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_android_h +#define _SDL_config_android_h + +#include "SDL_platform.h" + +/** + * \file SDL_config_android.h + * + * This is a configuration that can be used to build SDL for Android + */ + +#include <stdarg.h> + +#define HAVE_GCC_ATOMICS 1 + +#define HAVE_ALLOCA_H 1 +#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_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_SETENV 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_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 + +#define SIZEOF_VOIDP 4 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_ANDROID 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_ANDROID 1 +#define SDL_HAPTIC_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_ANDROID 1 + +/* Enable OpenGL ES */ +#define SDL_VIDEO_OPENGL_ES 1 +#define SDL_VIDEO_OPENGL_ES2 1 +#define SDL_VIDEO_OPENGL_EGL 1 +#define SDL_VIDEO_RENDER_OGL_ES 1 +#define SDL_VIDEO_RENDER_OGL_ES2 1 + +/* Enable system power support */ +#define SDL_POWER_ANDROID 1 + +/* !!! FIXME: what does Android do for filesystem stuff? */ +#define SDL_FILESYSTEM_DUMMY 1 + +#endif /* _SDL_config_android_h */ diff --git a/lib/osx/include/SDL_config_iphoneos.h b/lib/osx/include/SDL_config_iphoneos.h new file mode 100644 index 0000000..a0f55b6 --- /dev/null +++ b/lib/osx/include/SDL_config_iphoneos.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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_iphoneos_h +#define _SDL_config_iphoneos_h + +#include "SDL_platform.h" + +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif + +#define HAVE_GCC_ATOMICS 1 + +#define HAVE_ALLOCA_H 1 +#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_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_SETENV 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_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +/* enable iPhone version of Core Audio driver */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +/* Enable the dummy audio driver (src/audio/dummy/\*.c) */ +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */ +#define SDL_HAPTIC_DISABLED 1 + +/* Enable Unix style SO loading */ +/* Technically this works, but it violates the iPhone developer agreement */ +/* #define SDL_LOADSO_DLOPEN 1 */ + +/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 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 + +/* Supported video drivers */ +#define SDL_VIDEO_DRIVER_UIKIT 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 + +/* enable OpenGL ES */ +#define SDL_VIDEO_OPENGL_ES 1 +#define SDL_VIDEO_RENDER_OGL_ES 1 +#define SDL_VIDEO_RENDER_OGL_ES2 1 + +/* Enable system power support */ +#define SDL_POWER_UIKIT 1 + +/* enable iPhone keyboard support */ +#define SDL_IPHONE_KEYBOARD 1 + +/* enable joystick subsystem */ +#define SDL_JOYSTICK_DISABLED 0 + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDLUIAccelerationDelegate.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +#endif /* _SDL_config_iphoneos_h */ diff --git a/lib/osx/include/SDL_config_macosx.h b/lib/osx/include/SDL_config_macosx.h new file mode 100644 index 0000000..5c8b7e0 --- /dev/null +++ b/lib/osx/include/SDL_config_macosx.h @@ -0,0 +1,188 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +#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 HAVE_ALLOCA_H 1 +#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_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_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_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 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_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 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_IOKIT 1 +#define SDL_HAPTIC_IOKIT 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 "/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_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/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 +#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 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 system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 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/lib/osx/include/SDL_config_minimal.h b/lib/osx/include/SDL_config_minimal.h new file mode 100644 index 0000000..1bddafe --- /dev/null +++ b/lib/osx/include/SDL_config_minimal.h @@ -0,0 +1,81 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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_minimal_h +#define _SDL_config_minimal_h + +#include "SDL_platform.h" + +/** + * \file SDL_config_minimal.h + * + * This is the minimal configuration that can be used to build SDL. + */ + +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 + +/* Most everything except Visual Studio 2008 and earlier has stdint.h now */ +#if defined(_MSC_VER) && (_MSC_VER < 1600) +/* Here are some reasonable defaults */ +typedef unsigned int size_t; +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; +typedef unsigned long uintptr_t; +#else +#define HAVE_STDINT_H 1 +#endif /* Visual Studio 2008 */ + +#ifdef __GNUC__ +#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1 +#endif + +/* Enable the dummy audio driver (src/audio/dummy/\*.c) */ +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ +#define SDL_JOYSTICK_DISABLED 1 + +/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */ +#define SDL_HAPTIC_DISABLED 1 + +/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 1 + +/* Enable the stub thread support (src/thread/generic/\*.c) */ +#define SDL_THREADS_DISABLED 1 + +/* Enable the stub timer support (src/timer/dummy/\*.c) */ +#define SDL_TIMERS_DISABLED 1 + +/* Enable the dummy video driver (src/video/dummy/\*.c) */ +#define SDL_VIDEO_DRIVER_DUMMY 1 + +/* Enable the dummy filesystem driver (src/filesystem/dummy/\*.c) */ +#define SDL_FILESYSTEM_DUMMY 1 + +#endif /* _SDL_config_minimal_h */ diff --git a/lib/osx/include/SDL_config_pandora.h b/lib/osx/include/SDL_config_pandora.h new file mode 100644 index 0000000..ac8b085 --- /dev/null +++ b/lib/osx/include/SDL_config_pandora.h @@ -0,0 +1,124 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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 + +/* This is a set of defines to configure the SDL features */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif + +#define SDL_BYTEORDER 1234 + +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 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_STRLEN 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_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_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 + +#define SDL_AUDIO_DRIVER_DUMMY 1 +#define SDL_AUDIO_DRIVER_OSS 1 + +#define SDL_INPUT_LINUXEV 1 +#define SDL_INPUT_TSLIB 1 +#define SDL_JOYSTICK_LINUX 1 +#define SDL_HAPTIC_LINUX 1 + +#define SDL_LOADSO_DLOPEN 1 + +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1 + +#define SDL_TIMER_UNIX 1 +#define SDL_FILESYSTEM_UNIX 1 + +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_X11 1 +#define SDL_VIDEO_DRIVER_PANDORA 1 +#define SDL_VIDEO_RENDER_OGL_ES 1 +#define SDL_VIDEO_OPENGL_ES 1 + +#endif /* _SDL_config_h */ diff --git a/lib/osx/include/SDL_config_psp.h b/lib/osx/include/SDL_config_psp.h new file mode 100644 index 0000000..2f9d023 --- /dev/null +++ b/lib/osx/include/SDL_config_psp.h @@ -0,0 +1,140 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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_psp_h +#define _SDL_config_psp_h + +#include "SDL_platform.h" + + + +#ifdef __GNUC__ +#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +#define HAVE_ALLOCA_H 1 +#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_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_SETENV 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_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +/* #define HAVE_SYSCONF 1 */ +/* #define HAVE_SIGACTION 1 */ + + +/* PSP isn't that sophisticated */ +#define LACKS_SYS_MMAN_H 1 + +/* Enable the stub thread support (src/thread/psp/\*.c) */ +#define SDL_THREAD_PSP 1 + +/* Enable the stub timer support (src/timer/psp/\*.c) */ +#define SDL_TIMERS_PSP 1 + +/* Enable the stub joystick driver (src/joystick/psp/\*.c) */ +#define SDL_JOYSTICK_PSP 1 + +/* Enable the stub audio driver (src/audio/psp/\*.c) */ +#define SDL_AUDIO_DRIVER_PSP 1 + +/* PSP video dirver */ +#define SDL_VIDEO_DRIVER_PSP 1 + +/* PSP render dirver */ +#define SDL_VIDEO_RENDER_PSP 1 + +#define SDL_POWER_PSP 1 + +/* !!! FIXME: what does PSP do for filesystem stuff? */ +#define SDL_FILESYSTEM_DUMMY 1 + +/* PSP doesn't have haptic device (src/haptic/dummy/\*.c) */ +#define SDL_HAPTIC_DISABLED 1 + +/* PSP can't load shared object (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 1 + + +#endif /* _SDL_config_psp_h */ diff --git a/lib/osx/include/SDL_config_windows.h b/lib/osx/include/SDL_config_windows.h new file mode 100644 index 0000000..35eda46 --- /dev/null +++ b/lib/osx/include/SDL_config_windows.h @@ -0,0 +1,210 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#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 */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#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 +#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_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__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#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_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 +#define HAVE_CEIL 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#if _MSC_VER >= 1800 +#define HAVE_STRTOLL 1 +#define HAVE_VSSCANF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_SCALBN 1 +#endif +#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES) +#define HAVE_M_PI 1 +#endif +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_DSOUND 1 +#define SDL_AUDIO_DRIVER_XAUDIO2 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_HAPTIC_DINPUT 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_WINDOWS 1 + +/* Enable various threading systems */ +#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 +#ifndef SDL_VIDEO_RENDER_D3D11 +#define SDL_VIDEO_RENDER_D3D11 0 +#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 system power support */ +#define SDL_POWER_WINDOWS 1 + +/* Enable filesystem support */ +#define SDL_FILESYSTEM_WINDOWS 1 + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/lib/osx/include/SDL_config_winrt.h b/lib/osx/include/SDL_config_winrt.h new file mode 100644 index 0000000..78b43ab --- /dev/null +++ b/lib/osx/include/SDL_config_winrt.h @@ -0,0 +1,190 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2012 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_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#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 */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define HAVE_LIBC 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_FLOAT_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_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__STRREV 1 +#define HAVE__STRUPR 1 +//#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +//#define HAVE_ITOA 1 // TODO, WinRT: consider using _itoa_s instead +//#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead +//#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +//#define HAVE_STRTOLL 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_VSNPRINTF 1 +//#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE__COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +//#define HAVE_SCALBN 1 +#define HAVE__SCALB 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE__FSEEKI64 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_XAUDIO2 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +// TODO, WinRT: Get haptic support working +#define SDL_HAPTIC_DISABLED 1 + +#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#define SDL_JOYSTICK_DISABLED 1 +#else +#define SDL_JOYSTICK_XINPUT 1 +#endif + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_WINDOWS 1 + +/* Enable various threading systems */ +#define SDL_THREAD_STDCPP 1 + +/* Enable various timer systems */ +#define SDL_TIMER_WINDOWS 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_WINRT 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 + +/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */ +#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP /* TODO, WinRT: try adding OpenGL ES 2 support for Windows Phone 8 */ +#define SDL_VIDEO_OPENGL_ES2 1 +#define SDL_VIDEO_OPENGL_EGL 1 +#endif + +/* Enable appropriate renderer(s) */ +#define SDL_VIDEO_RENDER_D3D11 1 + +#if SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Enable system power support */ +#define SDL_POWER_WINRT 1 + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/lib/osx/include/SDL_config_wiz.h b/lib/osx/include/SDL_config_wiz.h new file mode 100644 index 0000000..7efc20b --- /dev/null +++ b/lib/osx/include/SDL_config_wiz.h @@ -0,0 +1,118 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 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 + +/* This is a set of defines to configure the SDL features */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +#define SDL_BYTEORDER 1234 + +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 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_STRLEN 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_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_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_POW 1 + +#define SDL_CDROM_DISABLED 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 +#define SDL_AUDIO_DRIVER_OSS 1 + +#define SDL_INPUT_LINUXEV 1 +#define SDL_INPUT_TSLIB 1 +#define SDL_JOYSTICK_LINUX 1 +#define SDL_HAPTIC_LINUX 1 + +#define SDL_LOADSO_DLOPEN 1 + +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP 1 + +#define SDL_TIMER_UNIX 1 + +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_PANDORA 1 +#define SDL_VIDEO_RENDER_OGL_ES 1 +#define SDL_VIDEO_OPENGL_ES 1 + +#endif /* _SDL_config_h */ diff --git a/lib/osx/include/SDL_copying.h b/lib/osx/include/SDL_copying.h new file mode 100644 index 0000000..212da0e --- /dev/null +++ b/lib/osx/include/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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/lib/osx/include/SDL_cpuinfo.h b/lib/osx/include/SDL_cpuinfo.h new file mode 100644 index 0000000..d0ba47b --- /dev/null +++ b/lib/osx/include/SDL_cpuinfo.h @@ -0,0 +1,161 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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)) +#include <intrin.h> +#ifndef _WIN64 +#define __MMX__ +#define __3dNOW__ +#endif +#define __SSE__ +#define __SSE2__ +#elif defined(__MINGW64_VERSION_MAJOR) +#include <intrin.h> +#else +#ifdef __ALTIVEC__ +#if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__) +#include <altivec.h> +#undef pixel +#endif +#endif +#ifdef __MMX__ +#include <mmintrin.h> +#endif +#ifdef __3dNOW__ +#include <mm3dnow.h> +#endif +#ifdef __SSE__ +#include <xmmintrin.h> +#endif +#ifdef __SSE2__ +#include <emmintrin.h> +#endif +#endif + +#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 + +/** + * This function returns the number of CPU cores available. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * This function returns the L1 cache line size of the CPU + * + * This is useful for determining multi-threaded structure padding + * or SIMD prefetch sizes. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * 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 AltiVec features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(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 3DNow! features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(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 SSE3 features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * This function returns true if the CPU has SSE4.1 features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * This function returns true if the CPU has SSE4.2 features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * This function returns true if the CPU has AVX features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * This function returns true if the CPU has AVX2 features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * This function returns the amount of RAM configured in the system, in MB. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + + +/* 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/lib/osx/include/SDL_egl.h b/lib/osx/include/SDL_egl.h new file mode 100644 index 0000000..bea2a6c --- /dev/null +++ b/lib/osx/include/SDL_egl.h @@ -0,0 +1,1673 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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_egl.h + * + * This is a simple file to encapsulate the EGL API headers. + */ +#ifndef _MSC_VER + +#include <EGL/egl.h> +#include <EGL/eglext.h> + +#else /* _MSC_VER */ + +/* EGL headers for Visual Studio */ + +#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_ */ + + +#ifndef __eglplatform_h_ +#define __eglplatform_h_ + +/* +** Copyright (c) 2007-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. +*/ + +/* Platform-specific types and definitions for egl.h +* $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ +* +* 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 "EGL" component "Registry". +*/ + +/*#include <KHR/khrplatform.h>*/ + +/* 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(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include <windows.h> + +#if __WINRT__ +#include <Unknwn.h> +typedef IUnknown * EGLNativeWindowType; +typedef IUnknown * EGLNativePixmapType; +typedef IUnknown * EGLNativeDisplayType; +#else +typedef HDC EGLNativeDisplayType; +typedef HBITMAP EGLNativePixmapType; +typedef HWND EGLNativeWindowType; +#endif + +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ + +typedef int EGLNativeDisplayType; +typedef void *EGLNativeWindowType; +typedef void *EGLNativePixmapType; + +#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__) /* Android */ + +struct ANativeWindow; +struct egl_native_pixmap_t; + +typedef struct ANativeWindow *EGLNativeWindowType; +typedef struct egl_native_pixmap_t *EGLNativePixmapType; +typedef void *EGLNativeDisplayType; + +#elif defined(MIR_EGL_PLATFORM) + +#include <mir_toolkit/mir_client_library.h> +typedef MirEGLNativeDisplayType EGLNativeDisplayType; +typedef void *EGLNativePixmapType; +typedef MirEGLNativeWindowType EGLNativeWindowType; + +#elif defined(__unix__) + +#ifdef MESA_EGL_NO_X11_HEADERS + +typedef void *EGLNativeDisplayType; +typedef khronos_uintptr_t EGLNativePixmapType; +typedef khronos_uintptr_t EGLNativeWindowType; + +#else + +/* X11 (tentative) */ +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +typedef Display *EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; + +#endif /* MESA_EGL_NO_X11_HEADERS */ + +#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; + +#endif /* __eglplatform_h */ + +#ifndef __egl_h_ +#define __egl_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2013-2015 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: 31566 $ on $Date: 2015-06-23 08:48:48 -0700 (Tue, 23 Jun 2015) $ +*/ + +/*#include <EGL/eglplatform.h>*/ + +/* Generated on date 20150623 */ + +/* 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; +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 ((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 ((EGLContext)0) +#define EGL_NO_DISPLAY ((EGLDisplay)0) +#define EGL_NO_SURFACE ((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 +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 /* 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 +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 /* 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 ((EGLint)-1) +#define EGL_VERTICAL_RESOLUTION 0x3091 +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 /* 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 ((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 +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void); +#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 ((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 ((EGLImage)0) +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 /* EGL_VERSION_1_5 */ + +#ifdef __cplusplus +} +#endif + +#endif /* __egl_h_ */ + + + +#ifndef __eglext_h_ +#define __eglext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2013-2015 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: 31566 $ on $Date: 2015-06-23 08:48:48 -0700 (Tue, 23 Jun 2015) $ +*/ + +/*#include <EGL/eglplatform.h>*/ + +#define EGL_EGLEXT_VERSION 20150623 + +/* 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_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_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 ((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_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 ((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 ((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_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 ((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, EGLint *rects, EGLint n_rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, 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_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_framebuffer_target +#define EGL_ANDROID_framebuffer_target 1 +#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 +#endif /* EGL_ANDROID_framebuffer_target */ + +#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_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_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_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_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_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 ((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 +#endif /* EGL_EXT_device_drm */ + +#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 +#endif /* EGL_EXT_device_openwf */ + +#ifndef EGL_EXT_device_query +#define EGL_EXT_device_query 1 +#endif /* EGL_EXT_device_query */ + +#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_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 ((EGLOutputLayerEXT)0) +#define EGL_NO_OUTPUT_PORT_EXT ((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_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_protected_surface +#define EGL_EXT_protected_surface 1 +#define EGL_PROTECTED_CONTENT_EXT 0x32C0 +#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_swap_buffers_with_damage +#define EGL_EXT_swap_buffers_with_damage 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#endif +#endif /* EGL_EXT_swap_buffers_with_damage */ + +#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_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 +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_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_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_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 ((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_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 */ + +#ifdef __cplusplus +} +#endif + +#endif /* __eglext_h_ */ + + +#endif /* _MSC_VER */ diff --git a/lib/osx/include/SDL_endian.h b/lib/osx/include/SDL_endian.h new file mode 100644 index 0000000..9100b10 --- /dev/null +++ b/lib/osx/include/SDL_endian.h @@ -0,0 +1,239 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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" + +/** + * \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 +#else /* __linux__ */ +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MISPEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(_M_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 + +/** + * \file SDL_endian.h + */ +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif defined(__GNUC__) && (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(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if defined(__GNUC__) && defined(__i386__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__GNUC__) && (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(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !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; +} +#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 defined(__GNUC__) && defined(__i386__) +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(__GNUC__) && defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#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; +} + + +/** + * \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/lib/osx/include/SDL_error.h b/lib/osx/include/SDL_error.h new file mode 100644 index 0000000..2f3b4b5 --- /dev/null +++ b/lib/osx/include/SDL_error.h @@ -0,0 +1,76 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ +/* SDL_SetError() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); +extern DECLSPEC const char *SDLCALL SDL_GetError(void); +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/lib/osx/include/SDL_events.h b/lib/osx/include/SDL_events.h new file mode 100644 index 0000000..edb89ef --- /dev/null +++ b/lib/osx/include/SDL_events.h @@ -0,0 +1,754 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief 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() + */ + + /* 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. + */ + + /* 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 */ + + /* 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. */ + + /* 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 */ + + /** 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; +} SDL_CommonEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; + 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; + 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; + 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; + + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; + 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; + 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; + 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; + 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 */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; + 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; + 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; + 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; + 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; + 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; + 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; + 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; + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; + 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; + 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 */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; + SDL_TouchID touchId; /**< The touch device index */ + 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; + 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; + 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 The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; + 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; + 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_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< 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_AudioDeviceEvent adevice; /**< Audio device 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 for + this structure, and GCC will use the alignment of the largest datatype + within the union, which is 8 bytes. + + So... we'll add padding to force the size to be 56 bytes for both. + */ + Uint8 padding[56]; +} 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 \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to + * the back of the event queue. + * + * If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front + * of the event queue, within the specified minimum and maximum type, + * will be returned and will not be removed from the queue. + * + * If \c action is ::SDL_GETEVENT, up to \c numevents events at the front + * of the event queue, within the specified minimum and maximum type, + * will be returned and will be removed from the queue. + * + * \return 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 minType, Uint32 maxType); +/* @} */ + +/** + * Checks to see if certain event types are in the event queue. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * This function clears events from the event queue + * 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. + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * \brief Polls for currently pending events. + * + * \return 1 if there are any pending events, or 0 if there are none available. + * + * \param event If not NULL, the next event is removed from the queue and + * stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * \brief Waits indefinitely for the next available event. + * + * \return 1, or 0 if there was an error while waiting for events. + * + * \param event If not NULL, the next event is removed from the queue and + * stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * \brief Waits until the specified timeout (in milliseconds) for the next + * available event. + * + * \return 1, or 0 if there was an error while waiting for events. + * + * \param event If not NULL, the next event is removed from the queue and + * stored in that area. + * \param timeout The timeout (in milliseconds) to wait for next event. + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * \brief Add an event to the event queue. + * + * \return 1 on success, 0 if the event was filtered, or -1 if the event queue + * was full or there was some other error. + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Sets up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * The filter is prototyped as: + * \code + * int SDL_EventFilter(void *userdata, 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, + void *userdata); + +/** + * Return the current event filter - can be used to "chain" filters. + * If there is no event filter set, this function returns SDL_FALSE. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a function which is called when an event is added to the queue. + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch function added with SDL_AddEventWatch() + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run the filter function on the current event queue, removing any + * events for which the filter returns 0. + */ +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 + +/** + * This function allows you to set the state of processing certain events. + * - If \c state is set to ::SDL_IGNORE, that event will be automatically + * dropped from the event queue and will not event be filtered. + * - If \c state is set to ::SDL_ENABLE, that event will be processed + * normally. + * - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the + * current processing state of the specified event. + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * This function allocates a set of user-defined events, and returns + * the beginning event number for that set of events. + * + * If there aren't enough user-defined events left, this function + * returns (Uint32)-1 + */ +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/lib/osx/include/SDL_filesystem.h b/lib/osx/include/SDL_filesystem.h new file mode 100644 index 0000000..02999ed --- /dev/null +++ b/lib/osx/include/SDL_filesystem.h @@ -0,0 +1,136 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief Get the path where the application resides. + * + * Get the "base path". This is the directory where the application was run + * from, which is probably the installation directory, and may or may not + * be the process's current working directory. + * + * This returns an absolute path in UTF-8 encoding, and is guaranteed to + * end with a path separator ('\\' on Windows, '/' most other places). + * + * The pointer returned by this function is owned by you. Please call + * SDL_free() on the pointer when you are done with it, or it will be a + * memory leak. This is not necessarily a fast call, though, so you should + * call this once near startup and save the string if you need it. + * + * Some platforms can't determine the application's path, and on other + * platforms, this might be meaningless. In such cases, this function will + * return NULL. + * + * \return String of base dir in UTF-8 encoding, or NULL on error. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * \brief 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/" + * + * (etc.) + * + * You specify the name of your organization (if it's not a real organization, + * your name or an Internet domain you own might do) and the name of your + * application. These should be untranslated proper names. + * + * 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. + * + * This returns an absolute path in UTF-8 encoding, and is guaranteed to + * end with a path separator ('\\' on Windows, '/' most other places). + * + * The pointer returned by this function is owned by you. Please call + * SDL_free() on the pointer when you are done with it, or it will be a + * memory leak. This is not necessarily a fast call, though, so you should + * call this once near startup and save the string if you need it. + * + * 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, aren't where you + * should be writing things). + * + * Some platforms can't determine the pref path, and on other + * platforms, this might be meaningless. In such cases, this function will + * return NULL. + * + * \param org The name of your organization. + * \param app The name of your application. + * \return UTF-8 string of user dir in platform-dependent notation. NULL + * if there's a problem (creating directory failed, etc). + * + * \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/lib/osx/include/SDL_gamecontroller.h b/lib/osx/include/SDL_gamecontroller.h new file mode 100644 index 0000000..e67fd9f --- /dev/null +++ b/lib/osx/include/SDL_gamecontroller.h @@ -0,0 +1,323 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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_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_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: + * 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 + * "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", + * + */ + +/** + * Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform() + * A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt + * + * If \c freerw is non-zero, the stream will be closed after being read. + * + * \return number of mappings added, -1 on error + */ +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 or update an existing mapping configuration + * + * \return 1 if mapping is added, 0 if updated, -1 on error + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping( const char* mappingString ); + +/** + * Get a mapping string for a GUID + * + * \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID( SDL_JoystickGUID guid ); + +/** + * Get a mapping string for an open GameController + * + * \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping( SDL_GameController * gamecontroller ); + +/** + * Is the joystick on this index supported by the game controller interface? + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + + +/** + * Get the implementation dependent name of a game controller. + * This can be called before any controllers are opened. + * If no name can be found, this function returns NULL. + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Open a game controller for use. + * 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. + * + * \return A controller identifier, or NULL if an error occurred. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Return the SDL_GameController associated with an instance id. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Return the name for this currently opened controller + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Returns SDL_TRUE if the controller has been opened and currently connected, + * or SDL_FALSE if it has not. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the underlying joystick object used by a controller + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Enable/disable controller event polling. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Update the current state of the open game controllers. + * + * This is called automatically by the event loop if any game controller + * events are enabled. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + */ +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; + +/** + * turn this string into a axis mapping + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *pchString); + +/** + * turn this axis enum into a string mapping + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for this controller button mapping + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The state is a value ranging from -32768 to 32767 (except for the triggers, + * which range from 0 to 32767). + * + * The axis indices start at index 0. + */ +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_MAX +} SDL_GameControllerButton; + +/** + * turn this string into a button mapping + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *pchString); + +/** + * turn this button enum into a string mapping + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for this controller button mapping + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + + +/** + * Get the current state of a button on a game controller. + * + * The button indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Close a controller previously opened with SDL_GameControllerOpen(). + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + + +/* 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/lib/osx/include/SDL_gesture.h b/lib/osx/include/SDL_gesture.h new file mode 100644 index 0000000..3c29ca7 --- /dev/null +++ b/lib/osx/include/SDL_gesture.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ + +/** + * \brief Begin Recording a gesture on the specified touch, or all touches (-1) + * + * + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * \brief Save all currently loaded Dollar Gesture templates + * + * + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * \brief Save a currently loaded Dollar Gesture template + * + * + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * \brief Load Dollar Gesture templates from a file + * + * + */ +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/lib/osx/include/SDL_haptic.h b/lib/osx/include/SDL_haptic.h new file mode 100644 index 0000000..9421c8f --- /dev/null +++ b/lib/osx/include/SDL_haptic.h @@ -0,0 +1,1223 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + * 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 */ + +/** + * \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 can be queried for effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be 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 + +/* @} *//* 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_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. + * + * The struct is exclusive to 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. One motor is high + * frequency, the other 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. */ + + /* 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. + * + * 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 */ +/** + * \brief Count the number of haptic devices attached to the system. + * + * \return Number of haptic devices detected on the system. + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * \brief 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 get its name. + * \return Name of the device or NULL on error. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * \brief Opens a Haptic device for usage. + * + * 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. + * \return Device identifier or NULL on error. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + * \sa SDL_HapticSetGain + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticPause + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * \brief Checks if the haptic device at index has been opened. + * + * \param device_index Index to check to see if it has been opened. + * \return 1 if it has been opened or 0 if it hasn't. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticIndex + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * \brief Gets the index of a haptic device. + * + * \param haptic Haptic device to get the index of. + * \return The index of the haptic device or -1 on error. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * \brief Gets whether or not the current mouse has haptic capabilities. + * + * \return SDL_TRUE if the mouse is haptic, SDL_FALSE if it isn't. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * \brief Tries to open a haptic device from the current mouse. + * + * \return The haptic device identifier or NULL on error. + * + * \sa SDL_MouseIsHaptic + * \sa SDL_HapticOpen + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * \brief Checks to see if a joystick has haptic features. + * + * \param joystick Joystick to test for haptic capabilities. + * \return 1 if the joystick is haptic, 0 if it isn't + * or -1 if an error ocurred. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * \brief Opens a Haptic device for usage from a Joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opening 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 Joystick to create a haptic device from. + * \return A valid haptic device identifier on success or NULL on error. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticClose + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * \brief Closes a Haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic Haptic device to close. + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * \brief Returns 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 haptic device to query effect max. + * \return The number of effects the haptic device can store or + * -1 on error. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * \brief Returns 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. + * Added here for the sake of completeness. + * + * \param haptic The haptic device to query maximum playing effects. + * \return The number of effects the haptic device can play at the same time + * or -1 on error. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * \brief Gets the haptic device's supported features in bitwise manner. + * + * Example: + * \code + * if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) { + * printf("We have constant haptic effect!"); + * } + * \endcode + * + * \param haptic The haptic device to query. + * \return Haptic features in bitwise manner (OR'd). + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticEffectSupported + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * \brief Gets the number of haptic axes the device has. + * + * \sa SDL_HapticDirection + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * \brief Checks to see if effect is supported by haptic. + * + * \param haptic Haptic device to check on. + * \param effect Effect to check to see if it is supported. + * \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. + * + * \sa SDL_HapticQuery + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * \brief Creates a new haptic effect on the device. + * + * \param haptic Haptic device to create the effect on. + * \param effect Properties of the effect to create. + * \return The id of the effect on success or -1 on error. + * + * \sa SDL_HapticUpdateEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticDestroyEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * \brief Updates the properties of an effect. + * + * Can be used dynamically, although behaviour when dynamically changing + * direction may be strange. Specifically the effect may reupload itself + * and start playing from the start. You cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic Haptic device that has the effect. + * \param effect Effect to update. + * \param data New effect properties to use. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticDestroyEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * \brief Runs the haptic effect on its associated haptic device. + * + * If iterations are ::SDL_HAPTIC_INFINITY, it'll run the effect over and over + * repeating the envelope (attack and fade) every time. If you only want the + * effect to last forever, set ::SDL_HAPTIC_INFINITY in the effect's length + * parameter. + * + * \param haptic Haptic device to run the effect on. + * \param effect Identifier of the haptic effect to run. + * \param iterations Number of iterations to run the effect. Use + * ::SDL_HAPTIC_INFINITY for infinity. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticStopEffect + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * \brief Stops the haptic effect on its associated haptic device. + * + * \param haptic Haptic device to stop the effect on. + * \param effect Identifier of the effect to stop. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticDestroyEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * \brief Destroys 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 Device to destroy the effect on. + * \param effect Identifier of the effect to destroy. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * \brief Gets the status of the current effect on the haptic device. + * + * Device must support the ::SDL_HAPTIC_STATUS feature. + * + * \param haptic Haptic device to query the effect status on. + * \param effect Identifier of the effect to query its status. + * \return 0 if it isn't playing, 1 if it is playing or -1 on error. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * \brief Sets the global gain of the 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 Haptic device to set the gain on. + * \param gain Value to set the gain to, should be between 0 and 100. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * \brief Sets 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 Haptic device to set autocentering on. + * \param autocenter Value to set autocenter to, 0 disables autocentering. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * \brief Pauses 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 Haptic device to pause. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * \brief Unpauses a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic Haptic device to unpause. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * \brief Stops all the currently playing effects on a haptic device. + * + * \param haptic Haptic device to stop. + * \return 0 on success or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * \brief Checks to see if rumble is supported on a haptic device. + * + * \param haptic Haptic device to check to see if it supports rumble. + * \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * \brief Initializes the haptic device for simple rumble playback. + * + * \param haptic Haptic device to initialize for simple rumble playback. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumbleSupported + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * \brief Runs simple rumble on a haptic device + * + * \param haptic Haptic device to play 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. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticRumbleSupported + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * \brief Stops the simple rumble on a haptic device. + * + * \param haptic Haptic to stop the rumble on. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticRumbleSupported + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + */ +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/lib/osx/include/SDL_hints.h b/lib/osx/include/SDL_hints.h new file mode 100644 index 0000000..dd15464 --- /dev/null +++ b/lib/osx/include/SDL_hints.h @@ -0,0 +1,795 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 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 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" + * "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 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 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 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 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 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 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 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 _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 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 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 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 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 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 Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \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 controlling which orientations are allowed on iOS. + * + * 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 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 whether the Android / iOS built-in + * accelerometer should be listed as a joystick device, rather than listing + * actual joysticks only. + * + * This variable can be set to the following values: + * "0" - List only real joysticks and accept input from them + * "1" - List real joysticks along with the accelerometer as if it were a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + + +/** + * \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 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 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 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 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 7 and earlier. + * + * 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 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. +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \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 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 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 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 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 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 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 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 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 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 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 mouse and touch events are to be treated together or separately + * + * The variable can be set to the following values: + * "0" - Mouse events will be handled as touch events, and touch will raise fake mouse + * events. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - Mouse events will be handled separately from pure touch events. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH" + +/** + * \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 Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms. + * + * 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 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 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 Tell SDL not to name threads on Windows. + * + * 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. (default) + * "1" - SDL will not raise this exception, and threads will be unnamed. + * For .NET languages this is required when running under a debugger. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \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 An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * \brief 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. + * + * \return SDL_TRUE if the hint was set, SDL_FALSE otherwise + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * \brief Set a hint with normal priority + * + * \return SDL_TRUE if the hint was set, SDL_FALSE otherwise + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * \brief Get a hint + * + * \return The string value of a hint variable. + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * \brief Get a hint + * + * \return The boolean value of a hint variable. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * \brief Add a function to watch a particular hint + * + * \param name The hint to watch + * \param callback The function to call when the hint value changes + * \param userdata A pointer to pass to the callback function + */ +typedef void (*SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * \brief Remove a function watching a particular hint + * + * \param name The hint being watched + * \param callback The function being called when the hint value changes + * \param userdata A pointer being passed to the callback function + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * \brief Clear all hints + * + * This function is called during SDL_Quit() to free stored hints. + */ +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/lib/osx/include/SDL_joystick.h b/lib/osx/include/SDL_joystick.h new file mode 100644 index 0000000..f5dbc94 --- /dev/null +++ b/lib/osx/include/SDL_joystick.h @@ -0,0 +1,273 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 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; + +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, + SDL_JOYSTICK_POWER_LOW, + SDL_JOYSTICK_POWER_MEDIUM, + SDL_JOYSTICK_POWER_FULL, + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Function prototypes */ +/** + * Count the number of joysticks attached to the system right now + */ +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_JoystickNameForIndex(int device_index); + +/** + * Open a joystick for use. + * The index passed as an argument refers to the N'th joystick on the system. + * This index is not the value which will identify this joystick in future + * joystick events. The joystick's instance id (::SDL_JoystickID) will be used + * there instead. + * + * \return A joystick identifier, or NULL if an error occurred. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Return the SDL_Joystick associated with an instance id. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid); + +/** + * Return the name for this currently opened joystick. + * If no name can be found, this function returns NULL. + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick); + +/** + * Return the GUID for the joystick at this index + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Return the GUID for this opened joystick + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joystick); + +/** + * Return a string representation for this guid. pszGUID must point to at least 33 bytes + * (32 for the string plus a NULL terminator). + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * convert a string into a joystick formatted guid + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick * joystick); + +/** + * Get the instance ID of an opened joystick or -1 if the joystick is invalid. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(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. + * + * 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. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick, + int axis); + +/** + * \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 hat indices start at index 0. + * + * \return The return value is 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 + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * \return 0, or -1 if you passed it invalid parameters. + * + * The ball indices start at index 0. + */ +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. + * + * 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); + +/** + * Return the battery level of this joystick + */ +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/lib/osx/include/SDL_keyboard.h b/lib/osx/include/SDL_keyboard.h new file mode 100644 index 0000000..f80b6d2 --- /dev/null +++ b/lib/osx/include/SDL_keyboard.h @@ -0,0 +1,217 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ + +/** + * \brief Get the window which currently has keyboard focus. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * \brief Get a snapshot of the current state of the keyboard. + * + * \param numkeys if non-NULL, receives the length of the returned array. + * + * \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values. + * + * \b Example: + * \code + * const Uint8 *state = SDL_GetKeyboardState(NULL); + * if ( state[SDL_SCANCODE_RETURN] ) { + * printf("<RETURN> is pressed.\n"); + * } + * \endcode + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * \brief Get the current key modifier state for the keyboard. + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * \brief Set the current key modifier state for the keyboard. + * + * \note This does not change the keyboard state, only the key modifier flags. + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * \brief Get the key code corresponding to the given scancode according + * to the current keyboard layout. + * + * See ::SDL_Keycode for details. + * + * \sa SDL_GetKeyName() + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * \brief Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See ::SDL_Scancode for details. + * + * \sa SDL_GetScancodeName() + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * \brief Get a human-readable name for a scancode. + * + * \return A pointer to the name for the scancode. + * If the scancode doesn't have a name, this function returns + * an empty string (""). + * + * \sa SDL_Scancode + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * \brief Get a scancode from a human-readable name + * + * \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized + * + * \sa SDL_Scancode + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * \brief Get a human-readable name for a key. + * + * \return 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 (""). + * + * \sa SDL_Keycode + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * \brief Get a key code from a human-readable name + * + * \return key code, or SDLK_UNKNOWN if the name wasn't recognized + * + * \sa SDL_Keycode + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * \brief Start accepting Unicode text input events. + * This function will show the on-screen keyboard if supported. + * + * \sa SDL_StopTextInput() + * \sa SDL_SetTextInputRect() + * \sa SDL_HasScreenKeyboardSupport() + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * \brief Return whether or not Unicode text input events are enabled. + * + * \sa SDL_StartTextInput() + * \sa SDL_StopTextInput() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * \brief Stop receiving any text input events. + * This function will hide the on-screen keyboard if supported. + * + * \sa SDL_StartTextInput() + * \sa SDL_HasScreenKeyboardSupport() + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * \brief Set the rectangle used to type Unicode text inputs. + * This is used as a hint for IME and on-screen keyboard placement. + * + * \sa SDL_StartTextInput() + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect); + +/** + * \brief Returns whether the platform has some screen keyboard support. + * + * \return SDL_TRUE if some keyboard support is available else SDL_FALSE. + * + * \note Not all screen keyboard functions are supported on all platforms. + * + * \sa SDL_IsScreenKeyboardShown() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * \brief Returns whether the screen keyboard is shown for given window. + * + * \param window The window for which screen keyboard should be queried. + * + * \return SDL_TRUE if screen keyboard is shown else SDL_FALSE. + * + * \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/lib/osx/include/SDL_keycode.h b/lib/osx/include/SDL_keycode.h new file mode 100644 index 0000000..7be9635 --- /dev/null +++ b/lib/osx/include/SDL_keycode.h @@ -0,0 +1,341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\033', + 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 = '\177', + 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) +}; + +/** + * \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_RESERVED = 0x8000 +} SDL_Keymod; + +#define KMOD_CTRL (KMOD_LCTRL|KMOD_RCTRL) +#define KMOD_SHIFT (KMOD_LSHIFT|KMOD_RSHIFT) +#define KMOD_ALT (KMOD_LALT|KMOD_RALT) +#define KMOD_GUI (KMOD_LGUI|KMOD_RGUI) + +#endif /* _SDL_keycode_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/osx/include/SDL_loadso.h b/lib/osx/include/SDL_loadso.h new file mode 100644 index 0000000..3d540bd --- /dev/null +++ b/lib/osx/include/SDL_loadso.h @@ -0,0 +1,81 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * 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 */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/osx/include/SDL_log.h b/lib/osx/include/SDL_log.h new file mode 100644 index 0000000..09be110 --- /dev/null +++ b/lib/osx/include/SDL_log.h @@ -0,0 +1,211 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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. + */ +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 +}; + +/** + * \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; + + +/** + * \brief Set the priority of all log categories + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * \brief Set the priority of a particular log category + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * \brief Get the priority of a particular log category + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * \brief Reset all priorities to default. + * + * \note This is called in SDL_Quit(). + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * \brief Log a message with SDL_LOG_PRIORITY_VERBOSE + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Log a message with SDL_LOG_PRIORITY_DEBUG + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Log a message with SDL_LOG_PRIORITY_INFO + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Log a message with SDL_LOG_PRIORITY_WARN + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Log a message with SDL_LOG_PRIORITY_ERROR + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Log a message with SDL_LOG_PRIORITY_CRITICAL + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Log a message with the specified category and priority. + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * \brief Log a message with the specified category and priority. + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * \brief The prototype for the log output function + */ +typedef void (*SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * \brief Get the current log output function. + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * \brief This function allows you to replace the default log output + * function with one of your own. + */ +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/lib/osx/include/SDL_main.h b/lib/osx/include/SDL_main.h new file mode 100644 index 0000000..67afea5 --- /dev/null +++ b/lib/osx/include/SDL_main.h @@ -0,0 +1,161 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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. + + 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 README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +#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 + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifdef __cplusplus +#define C_LINKAGE "C" +#else +#define C_LINKAGE +#endif /* __cplusplus */ + +/** + * \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 + +/** + * The prototype for the application's main() function + */ +extern C_LINKAGE int SDL_main(int argc, char *argv[]); + + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This is called by the real SDL main function to let the rest of the + * library know that initialization was done properly. + * + * Calling this yourself without knowing what you're doing can cause + * crashes and hard to diagnose problems with your application. + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#ifdef __WIN32__ + +/** + * This can be called to set the application class at startup + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, + void *hInst); +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* __WIN32__ */ + + +#ifdef __WINRT__ + +/** + * \brief Initializes and launches an SDL/WinRT application. + * + * \param mainFunction The SDL app's C-style main(). + * \param reserved Reserved for future use; should be NULL + * \return 0 on success, -1 on failure. On failure, use SDL_GetError to retrieve more + * information on the failure. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(int (*mainFunction)(int, char **), void * reserved); + +#endif /* __WINRT__ */ + + +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_main_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/osx/include/SDL_messagebox.h b/lib/osx/include/SDL_messagebox.h new file mode 100644 index 0000000..ec370db --- /dev/null +++ b/lib/osx/include/SDL_messagebox.h @@ -0,0 +1,144 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief 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_MessageBoxFlags; + +/** + * \brief 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; + +/** + * \brief 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; + +/** + * \brief 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; + +/** + * \brief A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * \brief 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; + +/** + * \brief Create a modal message box. + * + * \param messageboxdata The SDL_MessageBoxData structure with title, text, etc. + * \param buttonid The pointer to which user id of hit button should be copied. + * + * \return -1 on error, otherwise 0 and buttonid contains user id of button + * hit or -1 if dialog was closed. + * + * \note 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. + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * \brief Create a simple modal message box + * + * \param flags ::SDL_MessageBoxFlags + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window The parent window, or NULL for no parent + * + * \return 0 on success, -1 on error + * + * \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/lib/osx/include/SDL_mouse.h b/lib/osx/include/SDL_mouse.h new file mode 100644 index 0000000..46f046d --- /dev/null +++ b/lib/osx/include/SDL_mouse.h @@ -0,0 +1,302 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ + +/** + * \brief Get the window which currently has mouse focus. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * \brief 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 cursor position relative to the focus window for the currently + * selected mouse. You can pass NULL for either x or y. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * \brief Get the current state of the mouse, in relation to the desktop + * + * This works just like 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 Returns the current X coord, relative to the desktop. Can be NULL. + * \param y Returns the current Y coord, relative to the desktop. Can be NULL. + * \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * \brief 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, and x and y are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState(). + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * \brief Moves the mouse to the given position within the window. + * + * \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 + * + * \note This function generates a mouse motion event + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * \brief Moves the mouse to the given position in global screen space. + * + * \param x The x coordinate + * \param y The y coordinate + * \return 0 on success, -1 on error (usually: unsupported by a platform). + * + * \note This function generates a mouse motion event + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * \brief Set relative mouse mode. + * + * \param enabled Whether or not to enable relative mode + * + * \return 0 on success, or -1 if relative mode is not supported. + * + * 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 This function will flush any pending mouse motion. + * + * \sa SDL_GetRelativeMouseMode() + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * \brief Capture the mouse, to track input outside an SDL window. + * + * \param enabled Whether or not to enable capturing + * + * 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. + * + * 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. + * + * \return 0 on success, or -1 if not supported. + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * \brief Query whether relative mouse mode is enabled. + * + * \sa SDL_SetRelativeMouseMode() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * \brief Create a cursor, using the specified bitmap 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: + * <table> + * <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr> + * <tr><td> 0 </td><td> 1 </td><td> White </td></tr> + * <tr><td> 1 </td><td> 1 </td><td> Black </td></tr> + * <tr><td> 0 </td><td> 0 </td><td> Transparent </td></tr> + * <tr><td> 1 </td><td> 0 </td><td> Inverted color if possible, black + * if not. </td></tr> + * </table> + * + * \sa SDL_FreeCursor() + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * \brief Create a color cursor. + * + * \sa SDL_FreeCursor() + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * \brief Create a system cursor. + * + * \sa SDL_FreeCursor() + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * \brief Set the active cursor. + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * \brief Return the active cursor. + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * \brief Return the default cursor. + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * \brief Frees a cursor created with SDL_CreateCursor() or similar functions. + * + * \sa SDL_CreateCursor() + * \sa SDL_CreateColorCursor() + * \sa SDL_CreateSystemCursor() + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * \brief Toggle whether or not the cursor is shown. + * + * \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current + * state. + * + * \return 1 if the cursor is shown, or 0 if the cursor is hidden. + */ +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/lib/osx/include/SDL_mutex.h b/lib/osx/include/SDL_mutex.h new file mode 100644 index 0000000..b7e3973 --- /dev/null +++ b/lib/osx/include/SDL_mutex.h @@ -0,0 +1,251 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 mutex, initialized unlocked. + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * \return 0, or -1 on error. + */ +#define SDL_mutexP(m) SDL_LockMutex(m) +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex); + +/** + * Try to lock the mutex + * + * \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex); + +/** + * Unlock the mutex. + * + * \return 0, or -1 on error. + * + * \warning It is an error to unlock a mutex that has not been locked by + * the current thread, and doing so results in undefined behavior. + */ +#define SDL_mutexV(m) SDL_UnlockMutex(m) +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex); + +/** + * Destroy a mutex. + */ +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, 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 \c 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. + * + * \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not + * succeed in the allotted time, and -1 on error. + * + * \warning 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); + +/* @} *//* 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. + * + * Typical use of condition variables: + * + * Thread A: + * SDL_LockMutex(lock); + * while ( ! condition ) { + * SDL_CondWait(cond, lock); + * } + * SDL_UnlockMutex(lock); + * + * Thread B: + * SDL_LockMutex(lock); + * ... + * condition = true; + * ... + * SDL_CondSignal(cond); + * SDL_UnlockMutex(lock); + * + * There is some discussion whether to signal the condition variable + * with the mutex locked or not. There is some potential performance + * benefit to unlocking first on some platforms, but there are some + * potential race conditions depending on how your code is structured. + * + * In general it's safer to signal the condition variable while the + * mutex is locked. + */ +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. + * + * \warning 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 * mutex); + +/** + * Waits for at most \c 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. + * + * \warning 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); + +/* @} *//* 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/lib/osx/include/SDL_name.h b/lib/osx/include/SDL_name.h new file mode 100644 index 0000000..06cd4a5 --- /dev/null +++ b/lib/osx/include/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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/lib/osx/include/SDL_opengl.h b/lib/osx/include/SDL_opengl.h new file mode 100644 index 0000000..780919b --- /dev/null +++ b/lib/osx/include/SDL_opengl.h @@ -0,0 +1,2176 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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(__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/lib/osx/include/SDL_opengl_glext.h b/lib/osx/include/SDL_opengl_glext.h new file mode 100644 index 0000000..cd3869f --- /dev/null +++ b/lib/osx/include/SDL_opengl_glext.h @@ -0,0 +1,11177 @@ +#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 +#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/lib/osx/include/SDL_opengles.h b/lib/osx/include/SDL_opengles.h new file mode 100644 index 0000000..15abee7 --- /dev/null +++ b/lib/osx/include/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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/lib/osx/include/SDL_opengles2.h b/lib/osx/include/SDL_opengles2.h new file mode 100644 index 0000000..c961f0f --- /dev/null +++ b/lib/osx/include/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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" + +#ifndef _MSC_VER + +#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/lib/osx/include/SDL_opengles2_gl2.h b/lib/osx/include/SDL_opengles2_gl2.h new file mode 100644 index 0000000..c62fb0a --- /dev/null +++ b/lib/osx/include/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/lib/osx/include/SDL_opengles2_gl2ext.h b/lib/osx/include/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..e8ca8b1 --- /dev/null +++ b/lib/osx/include/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/lib/osx/include/SDL_opengles2_gl2platform.h b/lib/osx/include/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..c325686 --- /dev/null +++ b/lib/osx/include/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/lib/osx/include/SDL_opengles2_khrplatform.h b/lib/osx/include/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..c9e6f17 --- /dev/null +++ b/lib/osx/include/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/lib/osx/include/SDL_pixels.h b/lib/osx/include/SDL_pixels.h new file mode 100644 index 0000000..cf6a33f --- /dev/null +++ b/lib/osx/include/SDL_pixels.h @@ -0,0 +1,468 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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. */ +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 +}; + +/** Bitmap pixel order, high bit -> low bit. */ +enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +}; + +/** Packed component order, high bit -> low bit. */ +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 +}; + +/** 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 */ +enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +}; + +/** Packed component layout. */ +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 +}; + +#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() */ +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_RGB444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + 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_RGB888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + 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, +#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, +#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') +}; + +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; + +/** + * \brief Get the human readable name of a pixel format + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks. + * + * \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible. + * + * \sa SDL_MasksToPixelFormatEnum() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * \brief Convert a bpp and RGBA masks to an enumerated pixel format. + * + * \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion + * wasn't possible. + * + * \sa SDL_PixelFormatEnumToMasks() + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * \brief Create an SDL_PixelFormat structure from a pixel format enum. + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * \brief Free an SDL_PixelFormat structure. + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * \brief Create a palette structure with the specified number of color + * entries. + * + * \return A new palette, or NULL if there wasn't enough memory. + * + * \note The palette entries are initialized to white. + * + * \sa SDL_FreePalette() + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * \brief Set the palette for a pixel format structure. + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * \brief Set a range of colors in a palette. + * + * \param palette The palette to modify. + * \param colors An array of colors to copy into the palette. + * \param firstcolor The index of the first palette entry to modify. + * \param ncolors The number of entries to modify. + * + * \return 0 on success, or -1 if not all of the colors could be set. + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * \brief Free a palette created with SDL_AllocPalette(). + * + * \sa SDL_AllocPalette() + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * \brief Maps an RGB triple to an opaque pixel value for a given pixel format. + * + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * \brief Maps an RGBA quadruple to a pixel value for a given pixel format. + * + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * \brief Get the RGB components from a pixel of the specified format. + * + * \sa SDL_GetRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * \brief Get the RGBA components from a pixel of the specified format. + * + * \sa SDL_GetRGB + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * \brief Calculate a 256 entry gamma ramp for a gamma value. + */ +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/lib/osx/include/SDL_platform.h b/lib/osx/include/SDL_platform.h new file mode 100644 index 0000000..03cf170 --- /dev/null +++ b/lib/osx/include/SDL_platform.h @@ -0,0 +1,185 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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" +#include "TargetConditionals.h" +#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__) +#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 _USING_V110_SDK71_ is defined it means we are using the v110_xp or v120_xp toolset. */ +#if (defined(_MSC_VER) && (_MSC_VER >= 1700) && !_USING_V110_SDK71_) /* _MSC_VER==1700 for MSVC 2012 */ +#include <winapifamily.h> +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +#undef __WINDOWS__ +#define __WINDOWS__ 1 +/* See if we're compiling for WinRT: */ +#elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#undef __WINRT__ +#define __WINRT__ 1 +#endif +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif /* _MSC_VER < 1700 */ +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#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 + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Gets the name of the platform. + */ +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/lib/osx/include/SDL_power.h b/lib/osx/include/SDL_power.h new file mode 100644 index 0000000..24c0501 --- /dev/null +++ b/lib/osx/include/SDL_power.h @@ -0,0 +1,75 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief 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; + + +/** + * \brief Get the current power supply details. + * + * \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. + * + * \return The state of the battery (if any). + */ +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/lib/osx/include/SDL_quit.h b/lib/osx/include/SDL_quit.h new file mode 100644 index 0000000..cc06f28 --- /dev/null +++ b/lib/osx/include/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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/lib/osx/include/SDL_rect.h b/lib/osx/include/SDL_rect.h new file mode 100644 index 0000000..bbcb9a3 --- /dev/null +++ b/lib/osx/include/SDL_rect.h @@ -0,0 +1,148 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief The structure that defines a point + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * \brief A rectangle, with the origin at the upper left. + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + +/** + * \brief 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; +} + +/** + * \brief 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; +} + +/** + * \brief 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; +} + +/** + * \brief Determine whether two rectangles intersect. + * + * \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * \brief Calculate the intersection of two rectangles. + * + * \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * \brief Calculate the union of two rectangles. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * \brief Calculate a minimal rectangle enclosing a set of points + * + * \return SDL_TRUE if any points were within the clipping rect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * \brief Calculate the intersection of a rectangle and line segment. + * + * \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *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/lib/osx/include/SDL_render.h b/lib/osx/include/SDL_render.h new file mode 100644 index 0000000..60c87b6 --- /dev/null +++ b/lib/osx/include/SDL_render.h @@ -0,0 +1,905 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief 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; + +/** + * \brief 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; + +/** + * \brief 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; + +/** + * \brief 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; + +/** + * \brief 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; + +/** + * \brief A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * \brief An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + + +/* Function prototypes */ + +/** + * \brief 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. + * + * \sa SDL_GetRenderDriverInfo() + * \sa SDL_CreateRenderer() + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * \brief Get information about a specific 2D rendering driver for the current + * display. + * + * \param index The index of the driver to query information about. + * \param info A pointer to an SDL_RendererInfo struct to be filled with + * information on the rendering driver. + * + * \return 0 on success, -1 if the index was out of range. + * + * \sa SDL_CreateRenderer() + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * \brief 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 + * \param window A pointer filled with the window, or NULL on error + * \param renderer A pointer filled with the renderer, or NULL on error + * + * \return 0 on success, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * \brief 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 ::SDL_RendererFlags. + * + * \return A valid rendering context or NULL if there was an error. + * + * \sa SDL_CreateSoftwareRenderer() + * \sa SDL_GetRendererInfo() + * \sa SDL_DestroyRenderer() + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * \brief Create a 2D software rendering context for a surface. + * + * \param surface The surface where rendering is done. + * + * \return A valid rendering context or NULL if there was an error. + * + * \sa SDL_CreateRenderer() + * \sa SDL_DestroyRenderer() + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * \brief Get the renderer associated with a window. + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * \brief Get information about a rendering context. + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * \brief Get the output size in pixels of a rendering context. + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * \brief Create a texture for a rendering context. + * + * \param renderer The renderer. + * \param format The format of the texture. + * \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. + * + * \return The created texture is returned, or NULL if no rendering context was + * active, the format was unsupported, or the width or height were out + * of range. + * + * \sa SDL_QueryTexture() + * \sa SDL_UpdateTexture() + * \sa SDL_DestroyTexture() + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * \brief Create a texture from an existing surface. + * + * \param renderer The renderer. + * \param surface The surface containing pixel data used to fill the texture. + * + * \return The created texture is returned, or NULL on error. + * + * \note The surface is not modified or freed by this function. + * + * \sa SDL_QueryTexture() + * \sa SDL_DestroyTexture() + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * \brief Query the attributes of a texture + * + * \param texture A texture to be queried. + * \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. + * \param access A pointer filled in with the actual access to the texture. + * \param w A pointer filled in with the width of the texture in pixels. + * \param h A pointer filled in with the height of the texture in pixels. + * + * \return 0 on success, or -1 if the texture is not valid. + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * \brief Set an additional color value used in render copy operations. + * + * \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. + * + * \return 0 on success, or -1 if the texture is not valid or color modulation + * is not supported. + * + * \sa SDL_GetTextureColorMod() + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * \brief Get the additional color value used in 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. + * + * \return 0 on success, or -1 if the texture is not valid. + * + * \sa SDL_SetTextureColorMod() + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * \brief Set an additional alpha value used in render copy operations. + * + * \param texture The texture to update. + * \param alpha The alpha value multiplied into copy operations. + * + * \return 0 on success, or -1 if the texture is not valid or alpha modulation + * is not supported. + * + * \sa SDL_GetTextureAlphaMod() + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * \brief Get the additional alpha value used in render copy operations. + * + * \param texture The texture to query. + * \param alpha A pointer filled in with the current alpha value. + * + * \return 0 on success, or -1 if the texture is not valid. + * + * \sa SDL_SetTextureAlphaMod() + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * \brief Set the blend mode used for texture copy operations. + * + * \param texture The texture to update. + * \param blendMode ::SDL_BlendMode to use for texture blending. + * + * \return 0 on success, or -1 if the texture is not valid or the blend mode is + * not supported. + * + * \note If the blend mode is not supported, the closest supported mode is + * chosen. + * + * \sa SDL_GetTextureBlendMode() + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * \brief Get the blend mode used for texture copy operations. + * + * \param texture The texture to query. + * \param blendMode A pointer filled in with the current blend mode. + * + * \return 0 on success, or -1 if the texture is not valid. + * + * \sa SDL_SetTextureBlendMode() + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * \brief Update the given texture rectangle with new pixel data. + * + * \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 pixels The raw pixel data. + * \param pitch The number of bytes in a row of pixel data, including padding between lines. + * + * \return 0 on success, or -1 if the texture is not valid. + * + * \note This is a fairly slow function. + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * \brief Update a rectangle within a planar YV12 or IYUV texture with new pixel data. + * + * \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. + * + * \return 0 on success, or -1 if the texture is not valid. + * + * \note 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. + */ +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); + +/** + * \brief Lock a portion of the texture for write-only pixel access. + * + * \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 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. + * + * \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING. + * + * \sa SDL_UnlockTexture() + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * \brief Unlock a texture, uploading the changes to video memory, if needed. + * + * \sa SDL_LockTexture() + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * \brief Determines whether a window supports the use of render targets + * + * \param renderer The renderer that will be checked + * + * \return SDL_TRUE if supported, SDL_FALSE if not. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * \brief Set a texture as the current rendering target. + * + * \param renderer The renderer. + * \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target + * + * \return 0 on success, or -1 on error + * + * \sa SDL_GetRenderTarget() + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * \brief Get the current render target or NULL for the default render target. + * + * \return The current render target + * + * \sa SDL_SetRenderTarget() + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * \brief Set device independent resolution for rendering + * + * \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 + * + * 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 events in the window will be filtered + * and scaled so they seem to arrive within the logical resolution. + * + * \note If this function results in scaling or subpixel drawing by the + * rendering backend, it will be handled using the appropriate + * quality hints. + * + * \sa SDL_RenderGetLogicalSize() + * \sa SDL_RenderSetScale() + * \sa SDL_RenderSetViewport() + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * \brief Get device independent resolution for rendering + * + * \param renderer The renderer from which resolution should be queried. + * \param w A pointer filled with the width of the logical resolution + * \param h A pointer filled with the height of the logical resolution + * + * \sa SDL_RenderSetLogicalSize() + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * \brief Set whether to force integer scales for resolution-independent rendering + * + * \param renderer The renderer for which integer scaling should be set. + * \param enable Enable or disable integer scaling + * + * 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. + * + * \sa SDL_RenderSetLogicalSize() + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * \brief Get whether integer scales are forced for resolution-independent rendering + * + * \param renderer The renderer from which integer scaling should be queried. + * + * \sa SDL_RenderSetIntegerScale() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * \brief Set the drawing area for rendering on the current target. + * + * \param renderer The renderer for which the drawing area should be set. + * \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target. + * + * The x,y of the viewport rect represents the origin for rendering. + * + * \return 0 on success, or -1 on error + * + * \note If the window associated with the renderer is resized, the viewport is automatically reset. + * + * \sa SDL_RenderGetViewport() + * \sa SDL_RenderSetLogicalSize() + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * \brief Get the drawing area for the current target. + * + * \sa SDL_RenderSetViewport() + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * \brief Set the clip rectangle for the current target. + * + * \param renderer The renderer for which clip rectangle should be set. + * \param rect A pointer to the rectangle to set as the clip rectangle, or + * NULL to disable clipping. + * + * \return 0 on success, or -1 on error + * + * \sa SDL_RenderGetClipRect() + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * \brief Get the clip rectangle for the current target. + * + * \param renderer The renderer from which clip rectangle should be queried. + * \param rect A pointer filled in with the current clip rectangle, or + * an empty rectangle if clipping is disabled. + * + * \sa SDL_RenderSetClipRect() + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * \brief Get whether clipping is enabled on the given renderer. + * + * \param renderer The renderer from which clip state should be queried. + * + * \sa SDL_RenderGetClipRect() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * \brief Set the drawing scale for rendering on the current target. + * + * \param renderer The renderer for which the drawing scale should be set. + * \param scaleX The horizontal scaling factor + * \param scaleY The vertical scaling factor + * + * 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. + * + * \note 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. + * + * \sa SDL_RenderGetScale() + * \sa SDL_RenderSetLogicalSize() + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * \brief 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 + * + * \sa SDL_RenderSetScale() + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * \brief Set the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer The renderer for which drawing color should be set. + * \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). + * + * \return 0 on success, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * \brief Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer The renderer from which drawing color should be queried. + * \param r A pointer to the red value used to draw on the rendering target. + * \param g A pointer to the green value used to draw on the rendering target. + * \param b A pointer to the blue value used to draw on the rendering target. + * \param a A pointer to the alpha value used to draw on the rendering target, + * usually ::SDL_ALPHA_OPAQUE (255). + * + * \return 0 on success, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * \brief Set the blend mode used for drawing operations (Fill and Line). + * + * \param renderer The renderer for which blend mode should be set. + * \param blendMode ::SDL_BlendMode to use for blending. + * + * \return 0 on success, or -1 on error + * + * \note If the blend mode is not supported, the closest supported mode is + * chosen. + * + * \sa SDL_GetRenderDrawBlendMode() + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * \brief Get the blend mode used for drawing operations. + * + * \param renderer The renderer from which blend mode should be queried. + * \param blendMode A pointer filled in with the current blend mode. + * + * \return 0 on success, or -1 on error + * + * \sa SDL_SetRenderDrawBlendMode() + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * \brief Clear the current rendering target with the drawing color + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \return 0 on success, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * \brief Draw a point on the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * \brief Draw multiple points on the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * \brief Draw a line on the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * \brief Draw a series of connected lines on the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * \brief Draw a rectangle on the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * \brief Draw some number of rectangles on the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * \brief Fill a rectangle on the current rendering target with the drawing color. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * \brief Fill some number of rectangles on the current rendering target with the drawing color. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * \brief Copy a portion of the texture to the current rendering target. + * + * \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 + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center + * + * \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 + * \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 + */ +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); + +/** + * \brief Read pixels from the current rendering target. + * + * \param renderer The renderer from which pixels should be read. + * \param rect A pointer to the rectangle to read, or NULL for the entire + * render target. + * \param format The desired format of the pixel data, or 0 to use the format + * of the rendering target + * \param pixels A pointer to be filled in with the pixel data + * \param pitch The pitch of the pixels parameter. + * + * \return 0 on success, or -1 if pixel reading is not supported. + * + * \warning This is a very slow operation, and should not be used frequently. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * \brief Update the screen with rendering performed. + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * \brief Destroy the specified texture. + * + * \sa SDL_CreateTexture() + * \sa SDL_CreateTextureFromSurface() + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * \brief Destroy the rendering context for a window and free associated + * textures. + * + * \sa SDL_CreateRenderer() + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + + +/** + * \brief Bind the texture to the current OpenGL/ES/ES2 context for use with + * OpenGL instructions. + * + * \param texture The SDL texture to bind + * \param texw A pointer to a float that will be filled with the texture width + * \param texh A pointer to a float that will be filled with the texture height + * + * \return 0 on success, or -1 if the operation is not supported + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * \brief Unbind a texture from the current OpenGL/ES/ES2 context. + * + * \param texture The SDL texture to unbind + * + * \return 0 on success, or -1 if the operation is not supported + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + + +/* 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/lib/osx/include/SDL_revision.h b/lib/osx/include/SDL_revision.h new file mode 100644 index 0000000..341dc5c --- /dev/null +++ b/lib/osx/include/SDL_revision.h @@ -0,0 +1,2 @@ +#define SDL_REVISION "hg-10556:007dfe83abf8" +#define SDL_REVISION_NUMBER 10556 diff --git a/lib/osx/include/SDL_rwops.h b/lib/osx/include/SDL_rwops.h new file mode 100644 index 0000000..1ad3ac4 --- /dev/null +++ b/lib/osx/include/SDL_rwops.h @@ -0,0 +1,231 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ + +/** + * 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 *fileNameRef; + void *inputStreamRef; + void *readableByteChannelRef; + void *readMethod; + void *assetFileDescriptorRef; + long position; + long size; + long offset; + int fd; + } androidio; +#elif defined(__WIN32__) + 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. + */ +/* @{ */ + +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 +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool 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); + +/* @} *//* RWFrom functions */ + + +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); +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 */ + +/** + * \name Read/write macros + * + * Macros to easily read and write from an SDL_RWops structure. + */ +/* @{ */ +#define SDL_RWsize(ctx) (ctx)->size(ctx) +#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) +/* @} *//* Read/write macros */ + + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); +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); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); +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/lib/osx/include/SDL_scancode.h b/lib/osx/include/SDL_scancode.h new file mode 100644 index 0000000..0af1dd5 --- /dev/null +++ b/lib/osx/include/SDL_scancode.h @@ -0,0 +1,401 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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: + * http://www.usb.org/developers/devclass_docs/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 */ + + /* 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/lib/osx/include/SDL_shape.h b/lib/osx/include/SDL_shape.h new file mode 100644 index 0000000..db10a8f --- /dev/null +++ b/lib/osx/include/SDL_shape.h @@ -0,0 +1,143 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief 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. + * + * \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); + +/** + * \brief 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. + * \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; + +/** + * \brief 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 invalid an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW + * if the SDL_Window* given does not reference a valid shaped window. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * \brief 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. + * + * \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/lib/osx/include/SDL_stdinc.h b/lib/osx/include/SDL_stdinc.h new file mode 100644 index 0000000..fdf9641 --- /dev/null +++ b/lib/osx/include/SDL_stdinc.h @@ -0,0 +1,531 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 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 +#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 + +/** + * 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 + */ +/* @{ */ + +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; + +/** + * \brief A signed 8-bit integer type. + */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/* Make sure we have macros for printing 64 bit values. + * <stdint.h> should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#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_SCANF_VARARG_FUNC( 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_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_dummy_ ## name[(x) * 2 - 1] +/** \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(__ANDROID__) + /* TODO: include/SDL_stdinc.h:174: 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 + +#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 +char *alloca(); +# endif +#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); + +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 (*compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* !!! FIXME: these have side effects. You probably shouldn't use them. */ +/* !!! FIXME: Maybe we do forceinline functions of SDL_mini, SDL_minf, etc? */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) + +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +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))) + +/* 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; + case 3: *_p++ = _val; + case 2: *_p++ = _val; + 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 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_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, const char *fmt, va_list ap); +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, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /* pi */ +#endif +#endif + +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC double SDLCALL SDL_atan2(double x, double y); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC double SDLCALL SDL_scalbn(double 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 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-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) + +/* 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) +#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_strlen strlen +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strdup strdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_strcmp strcmp +#define SDL_strncmp strncmp +#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/lib/osx/include/SDL_surface.h b/lib/osx/include/SDL_surface.h new file mode 100644 index 0000000..e4a06a2 --- /dev/null +++ b/lib/osx/include/SDL_surface.h @@ -0,0 +1,513 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +/** + * \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 */ + void *lock_data; /**< Read-only */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + struct 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 (*SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Allocate and free an RGB surface. + * + * 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. + * + * \param flags The \c flags are obsolete and should be set to 0. + * \param width The width in pixels of the surface to create. + * \param height The height in pixels of the surface to create. + * \param depth The depth in bits of the surface to create. + * \param Rmask The red mask of the surface to create. + * \param Gmask The green mask of the surface to create. + * \param Bmask The blue mask of the surface to create. + * \param Amask The alpha mask of the surface to create. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); +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 SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * \brief Set the palette used by a surface. + * + * \return 0, or -1 if the surface format doesn't use a palette. + * + * \note A single palette can be shared with many surfaces. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * \brief Sets up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write + * to and read from \c surface->pixels, using the pixel format stored in + * \c 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. + * + * 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. + * + * \sa SDL_UnlockSurface() + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); +/** \sa SDL_LockSurface() */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a surface from a seekable SDL data stream (memory or file). + * + * If \c freesrc is non-zero, the stream will be closed after being read. + * + * The new surface should be freed with SDL_FreeSurface(). + * + * \return the new surface, or NULL if there was an error. + */ +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 (memory or file). + * + * 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. + * + * If \c freedst is non-zero, the stream will be closed after being written. + * + * \return 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); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * \brief Sets the RLE acceleration hint for a surface. + * + * \return 0 on success, or -1 if the surface is not valid + * + * \note If RLE is enabled, colorkey and alpha blending blits are much faster, + * but the surface must be locked before directly accessing the pixels. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * \brief Sets the color key (transparent pixel) in a blittable surface. + * + * \param surface The surface to update + * \param flag Non-zero to enable colorkey and 0 to disable colorkey + * \param key The transparent pixel in the native surface format + * + * \return 0 on success, or -1 if the surface is not valid + * + * You can pass SDL_RLEACCEL to enable RLE accelerated blits. + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * \brief Gets the color key (transparent pixel) in a blittable surface. + * + * \param surface The surface to update + * \param key A pointer filled in with the transparent pixel in the native + * surface format + * + * \return 0 on success, or -1 if the surface is not valid or colorkey is not + * enabled. + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * \brief Set an additional color value used in blit operations. + * + * \param surface The surface 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. + * + * \return 0 on success, or -1 if the surface is not valid. + * + * \sa SDL_GetSurfaceColorMod() + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * \brief Get the additional color value used in blit operations. + * + * \param surface The surface 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. + * + * \return 0 on success, or -1 if the surface is not valid. + * + * \sa SDL_SetSurfaceColorMod() + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * \brief Set an additional alpha value used in blit operations. + * + * \param surface The surface to update. + * \param alpha The alpha value multiplied into blit operations. + * + * \return 0 on success, or -1 if the surface is not valid. + * + * \sa SDL_GetSurfaceAlphaMod() + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * \brief Get the additional alpha value used in blit operations. + * + * \param surface The surface to query. + * \param alpha A pointer filled in with the current alpha value. + * + * \return 0 on success, or -1 if the surface is not valid. + * + * \sa SDL_SetSurfaceAlphaMod() + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * \brief Set the blend mode used for blit operations. + * + * \param surface The surface to update. + * \param blendMode ::SDL_BlendMode to use for blit blending. + * + * \return 0 on success, or -1 if the parameters are not valid. + * + * \sa SDL_GetSurfaceBlendMode() + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * \brief Get the blend mode used for blit operations. + * + * \param surface The surface to query. + * \param blendMode A pointer filled in with the current blend mode. + * + * \return 0 on success, or -1 if the surface is not valid. + * + * \sa SDL_SetSurfaceBlendMode() + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * 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. + * + * \c 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 \c 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. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * \brief Copy a block of pixels of one format to another format + * + * \return 0 on success, or -1 if there was an error + */ +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); + +/** + * Performs a fast fill of the given rectangle with \c color. + * + * If \c rect is NULL, the whole surface will be filled with \c color. + * + * The color should be a pixel of the format used by the surface, and + * can be generated by the SDL_MapRGB() function. + * + * \return 0 on success, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/** + * 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. + * + * \return 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 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 + +/** + * 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, const 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); + +/** + * \brief Perform a fast, low quality, stretch blit between two surfaces of the + * same pixel format. + * + * \note This function uses a static buffer, and is not thread-safe. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * This is the public scaled blit function, SDL_BlitScaled(), and it performs + * rectangle validation and clipping before passing it to SDL_LowerBlitScaled() + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * This is a semi-private blit function and it performs low-level surface + * scaled blitting only. + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (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_surface_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/osx/include/SDL_system.h b/lib/osx/include/SDL_system.h new file mode 100644 index 0000000..5da9adb --- /dev/null +++ b/lib/osx/include/SDL_system.h @@ -0,0 +1,216 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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__ + +/** + \brief Set a function that is called for every windows message, before TranslateMessage() +*/ +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +/** + \brief Returns the D3D9 adapter index that matches the specified display index. + + This adapter index can be passed to IDirect3D9::CreateDevice and controls + on which monitor a full screen application will appear. +*/ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; +/** + \brief Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer. + + Once you are done using the device, you should release it to avoid a resource leak. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +/** + \brief Returns the DXGI Adapter and Output indices for the specified display index. + + These can be passed to EnumAdapters and EnumOutputs respectively to get the objects + required to create a DX10 or DX11 device and swap chain. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* __WIN32__ */ + + +/* Platform specific functions for iOS */ +#if defined(__IPHONEOS__) && __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#if defined(__ANDROID__) && __ANDROID__ + +/** + \brief Get the JNI environment for the current thread + + This returns JNIEnv*, but the prototype is void* so we don't need jni.h + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(); + +/** + \brief Get the SDL Activity object for the application + + This returns jobject, but the prototype is void* so we don't need jni.h + The jobject returned by SDL_AndroidGetActivity is a local reference. + It is the caller's responsibility to properly release it + (using env->Push/PopLocalFrame or manually with env->DeleteLocalRef) + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(); + +/** + 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 + +/** + \brief 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. + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(); + +/** + \brief Get 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. +*/ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(); + +/** + \brief 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. + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#if defined(__WINRT__) && __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 Retrieves a WinRT defined path on the local file system + * + * \note Documentation on most app-specific path types on WinRT + * can be found on MSDN, at the URL: + * http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType The type of path to retrieve. + * \return A UCS-2 string (16-bit, wide-char) containing the path, or NULL + * if the path is not available for any reason. 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. + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * \brief Retrieves a WinRT defined path on the local file system + * + * \note Documentation on most app-specific path types on WinRT + * can be found on MSDN, at the URL: + * http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType The type of path to retrieve. + * \return A UTF-8 string (8-bit, multi-byte) containing the path, or NULL + * if the path is not available for any reason. 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. + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +#endif /* __WINRT__ */ + +/* 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/lib/osx/include/SDL_syswm.h b/lib/osx/include/SDL_syswm.h new file mode 100644 index 0000000..71ba5f1 --- /dev/null +++ b/lib/osx/include/SDL_syswm.h @@ -0,0 +1,321 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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" + +#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(). + */ +#ifdef SDL_PROTOTYPES_ONLY +struct SDL_SysWMinfo; +#else + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#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_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include "SDL_egl.h" +#endif + +/** + * 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, + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE +} 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 + /* 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 */ + } 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) && __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /* The Cocoa window */ +#else + NSWindow *window; /* The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /* The UIKit window */ +#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 */ + struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) + struct + { + struct MirConnection *connection; /**< Mir display server connection */ + struct MirSurface *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + + /* Can't have an empty union */ + int dummy; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + +/* Function prototypes */ +/** + * \brief This function allows access to driver-dependent window information. + * + * \param window The window about which information is being requested + * \param info This structure must be initialized with the SDL version, and is + * then filled in with information about the given window. + * + * \return SDL_TRUE if the function is implemented and the version member of + * the \c info struct is valid, SDL_FALSE otherwise. + * + * You typically use this function like this: + * \code + * SDL_SysWMinfo info; + * SDL_VERSION(&info.version); + * if ( SDL_GetWindowWMInfo(window, &info) ) { ... } + * \endcode + */ +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/lib/osx/include/SDL_thread.h b/lib/osx/include/SDL_thread.h new file mode 100644 index 0000000..377e6c7 --- /dev/null +++ b/lib/osx/include/SDL_thread.h @@ -0,0 +1,287 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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" + +#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. + * + * \note On many systems you require special privileges to set high priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * It is passed a void* user context parameter and returns an int. + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + +#if defined(__WIN32__) && !defined(HAVE_LIBC) +/** + * \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 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 +#include <process.h> /* This has _beginthread() and _endthread() defined! */ + +typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread) (void *, unsigned, + unsigned (__stdcall * + func) (void + *), + void *arg, unsigned, + unsigned *threadID); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +/** + * Create a thread. + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +/** + * Create a thread. + */ +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) +#endif + +#else + +/** + * Create a thread. + * + * 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: + * + * http://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(). + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +#endif + +/** + * Get the thread name, as it was specified in SDL_CreateThread(). + * This function returns a pointer to a UTF-8 string that names the + * specified thread, or NULL if it doesn't have a name. This is internal + * memory, not to be free()'d by the caller, and remains valid until the + * specified thread is cleaned up by SDL_WaitThread(). + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * Equivalent to SDL_ThreadID() if the specified thread is NULL. + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread + */ +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 \c status, if \c 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 NULL to this function; it is a no-op. + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * 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. + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific. + * + * \return The newly created thread local storage identifier, or 0 on error + * + * \code + * static SDL_SpinLock tls_lock; + * static SDL_TLSID thread_local_storage; + * + * void SetMyThreadData(void *value) + * { + * if (!thread_local_storage) { + * SDL_AtomicLock(&tls_lock); + * if (!thread_local_storage) { + * thread_local_storage = SDL_TLSCreate(); + * } + * SDL_AtomicUnlock(&tls_lock); + * } + * SDL_TLSSet(thread_local_storage, value, 0); + * } + * + * void *GetMyThreadData(void) + * { + * return SDL_TLSGet(thread_local_storage); + * } + * \endcode + * + * \sa SDL_TLSGet() + * \sa SDL_TLSSet() + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * \brief Get the value associated with a thread local storage ID for the current thread. + * + * \param id The thread local storage ID + * + * \return The value associated with the ID for the current thread, or NULL if no value has been set. + * + * \sa SDL_TLSCreate() + * \sa SDL_TLSSet() + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * \brief Set the value associated with a thread local storage ID for the current thread. + * + * \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. + * + * \return 0 on success, -1 on error + * + * \sa SDL_TLSCreate() + * \sa SDL_TLSGet() + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (*destructor)(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/lib/osx/include/SDL_timer.h b/lib/osx/include/SDL_timer.h new file mode 100644 index 0000000..e0d3785 --- /dev/null +++ b/lib/osx/include/SDL_timer.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief Get the number of milliseconds since the SDL library initialization. + * + * \note This value wraps if the program runs for more than ~49 days. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * \brief Compare SDL ticks values, and return true if A has passed B + * + * e.g. if you want to wait 100 ms, you could do this: + * Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * ... do work until timeout has elapsed + * } + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * \brief Get the current value of the high resolution counter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * \brief Get the count per second of the high resolution counter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * \brief Wait a specified number of milliseconds before returning. + */ +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; + +/** + * \brief Add a new timer to the pool of timers already running. + * + * \return A timer ID, or 0 when an error occurs. + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * \brief Remove a timer knowing its ID. + * + * \return A boolean value indicating success or failure. + * + * \warning It is not safe to remove a timer multiple times. + */ +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/lib/osx/include/SDL_touch.h b/lib/osx/include/SDL_touch.h new file mode 100644 index 0000000..2643e36 --- /dev/null +++ b/lib/osx/include/SDL_touch.h @@ -0,0 +1,86 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 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) + + +/* Function prototypes */ + +/** + * \brief Get the number of registered touch devices. + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * \brief Get the touch ID with the given index, or 0 if the index is invalid. + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * \brief Get the number of active fingers for a given touch device. + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * \brief Get the finger object of the given touch, with the given index. + */ +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/lib/osx/include/SDL_types.h b/lib/osx/include/SDL_types.h new file mode 100644 index 0000000..5118af2 --- /dev/null +++ b/lib/osx/include/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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/lib/osx/include/SDL_version.h b/lib/osx/include/SDL_version.h new file mode 100644 index 0000000..1700efd --- /dev/null +++ b/lib/osx/include/SDL_version.h @@ -0,0 +1,162 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + +/** + * \brief Information 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 5 + +/** + * \brief 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)) + +/** + * \brief 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. + * + * \code + * SDL_version compiled; + * SDL_version linked; + * + * SDL_VERSION(&compiled); + * SDL_GetVersion(&linked); + * printf("We compiled against SDL version %d.%d.%d ...\n", + * compiled.major, compiled.minor, compiled.patch); + * printf("But we linked against SDL version %d.%d.%d.\n", + * linked.major, linked.minor, linked.patch); + * \endcode + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \sa SDL_VERSION + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * \brief Get the code revision of SDL that is linked against your program. + * + * Returns an 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. + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * \brief Get the revision number of SDL that is linked against your program. + * + * Returns a number uniquely identifying the exact revision of the SDL + * library in use. It is an incrementing number based on commits to + * hg.libsdl.org. + */ +extern 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/lib/osx/include/SDL_video.h b/lib/osx/include/SDL_video.h new file mode 100644 index 0000000..73c33eb --- /dev/null +++ b/lib/osx/include/SDL_video.h @@ -0,0 +1,1218 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \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_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 +{ + /* !!! FIXME: change this to name = (1<<x). */ + 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_INPUT_GRABBED = 0x00000100, /**< window has grabbed input focus */ + 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 */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to INPUT_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_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_WindowEventID; + +/** + * \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_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; + + +/* Function prototypes */ + +/** + * \brief Get the number of video drivers compiled into SDL + * + * \sa SDL_GetVideoDriver() + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * \brief Get the name of a built in video driver. + * + * \note The video drivers are presented in the order in which they are + * normally checked during initialization. + * + * \sa SDL_GetNumVideoDrivers() + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * \brief Initialize the video subsystem, optionally specifying a video driver. + * + * \param driver_name Initialize a specific driver by name, or NULL for the + * default video driver. + * + * \return 0 on success, -1 on error + * + * 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. + * + * \sa SDL_VideoQuit() + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * \brief Shuts down the video subsystem. + * + * This function closes all windows, and restores the original video mode. + * + * \sa SDL_VideoInit() + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * \brief Returns the name of the currently initialized video driver. + * + * \return The name of the current video driver or NULL if no driver + * has been initialized + * + * \sa SDL_GetNumVideoDrivers() + * \sa SDL_GetVideoDriver() + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * \brief Returns the number of available video displays. + * + * \sa SDL_GetDisplayBounds() + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * \brief Get the name of a display in UTF-8 encoding + * + * \return The name of a display, or NULL for an invalid display index. + * + * \sa SDL_GetNumVideoDisplays() + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * \brief Get the desktop area represented by a display, with the primary + * display located at 0,0 + * + * \return 0 on success, or -1 if the index is out of range. + * + * \sa SDL_GetNumVideoDisplays() + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * \brief Get the dots/pixels-per-inch for a display + * + * \note Diagonal, horizontal and vertical DPI can all be optionally + * returned if the parameter is non-NULL. + * + * \return 0 on success, or -1 if no DPI information is available or the index is out of range. + * + * \sa SDL_GetNumVideoDisplays() + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * \brief Get the usable desktop area represented by a display, with the + * primary display located at 0,0 + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Mac OS X, 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. + * + * \return 0 on success, or -1 if the index is out of range. + * + * \sa SDL_GetDisplayBounds() + * \sa SDL_GetNumVideoDisplays() + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * \brief Returns the number of available display modes. + * + * \sa SDL_GetDisplayMode() + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * \brief Fill in information about a specific display mode. + * + * \note The display modes are sorted in this priority: + * \li bits per pixel -> more colors to fewer colors + * \li width -> largest to smallest + * \li height -> largest to smallest + * \li refresh rate -> highest to lowest + * + * \sa SDL_GetNumDisplayModes() + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * \brief Fill in information about the desktop display mode. + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * \brief Fill in information about the current display mode. + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * \brief Get the closest match to the requested display mode. + * + * \param displayIndex The index of display from which mode should be queried. + * \param mode The desired display mode + * \param closest A pointer to a display mode to be filled in with the closest + * match of the available display modes. + * + * \return The passed in value \c closest, or NULL if no matching video mode + * was available. + * + * The available display modes are scanned, and \c 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 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. + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * \brief Get the display index associated with a window. + * + * \return the display index of the display containing the center of the + * window, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * \brief Set the display mode used when a fullscreen window is visible. + * + * By default the window's dimensions and the desktop format and refresh rate + * are used. + * + * \param window The window for which the display mode should be set. + * \param mode The mode to use, or NULL for the default mode. + * + * \return 0 on success, or -1 if setting the display mode failed. + * + * \sa SDL_GetWindowDisplayMode() + * \sa SDL_SetWindowFullscreen() + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode + * mode); + +/** + * \brief Fill in information about the display mode used when a fullscreen + * window is visible. + * + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_SetWindowFullscreen() + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * \brief Get the pixel format associated with the window. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * \brief Create a window 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, in screen coordinates. + * \param h The height of the window, in screen coordinates. + * \param flags The flags for the window, a mask of any of the following: + * ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED, + * ::SDL_WINDOW_ALLOW_HIGHDPI. + * + * \return The created window, or NULL if window creation failed. + * + * 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 Mac OS X). 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. + * + * \sa SDL_DestroyWindow() + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * \brief Create an SDL window from an existing native window. + * + * \param data A pointer to driver-dependent window creation data + * + * \return The created window, or NULL if window creation failed. + * + * \sa SDL_DestroyWindow() + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * \brief Get the numeric ID of a window, for logging purposes. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * \brief Get a window from a stored ID, or NULL if it doesn't exist. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * \brief Get the window flags. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * \brief Set the title of a window, in UTF-8 format. + * + * \sa SDL_GetWindowTitle() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * \brief Get the title of a window, in UTF-8 format. + * + * \sa SDL_SetWindowTitle() + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * \brief Set the icon for a window. + * + * \param window The window for which the icon should be set. + * \param icon The icon for the window. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * \brief Associate an arbitrary named pointer with a window. + * + * \param window The window to associate with the pointer. + * \param name The name of the pointer. + * \param userdata The associated pointer. + * + * \return The previous value associated with 'name' + * + * \note The name is case-sensitive. + * + * \sa SDL_GetWindowData() + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * \brief Retrieve the data pointer associated with a window. + * + * \param window The window to query. + * \param name The name of the pointer. + * + * \return The value associated with 'name' + * + * \sa SDL_SetWindowData() + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * \brief Set the position of a window. + * + * \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. + * + * \note The window coordinate origin is the upper left of the display. + * + * \sa SDL_GetWindowPosition() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * \brief Get the position of a window. + * + * \param window The window to query. + * \param x Pointer to variable for storing the x position, in screen + * coordinates. May be NULL. + * \param y Pointer to variable for storing the y position, in screen + * coordinates. May be NULL. + * + * \sa SDL_SetWindowPosition() + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * \brief Set the size of a window's client area. + * + * \param window The window to resize. + * \param w The width of the window, in screen coordinates. Must be >0. + * \param h The height of the window, in screen coordinates. Must be >0. + * + * \note You can't change the size of a fullscreen window, it automatically + * matches the size of the display mode. + * + * 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 OS X). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * \sa SDL_GetWindowSize() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * \brief Get the size of a window's client area. + * + * \param window The window to query. + * \param w Pointer to variable for storing the width, in screen + * coordinates. May be NULL. + * \param h Pointer to variable for storing the height, in screen + * coordinates. May be NULL. + * + * 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 OS X). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * \sa SDL_SetWindowSize() + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * \brief Get the size of a window's borders (decorations) around the client area. + * + * \param window The window to query. + * \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. + * + * \return 0 on success, or -1 if getting this information is not supported. + * + * \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. + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * \brief Set the minimum size of a window's client area. + * + * \param window The window to set a new minimum size. + * \param min_w The minimum width of the window, must be >0 + * \param min_h The minimum height of the window, must be >0 + * + * \note You can't change the minimum size of a fullscreen window, it + * automatically matches the size of the display mode. + * + * \sa SDL_GetWindowMinimumSize() + * \sa SDL_SetWindowMaximumSize() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * \brief Get the minimum size of a window's client area. + * + * \param window The window to query. + * \param w Pointer to variable for storing the minimum width, may be NULL + * \param h Pointer to variable for storing the minimum height, may be NULL + * + * \sa SDL_GetWindowMaximumSize() + * \sa SDL_SetWindowMinimumSize() + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * \brief Set the maximum size of a window's client area. + * + * \param window The window to set a new maximum size. + * \param max_w The maximum width of the window, must be >0 + * \param max_h The maximum height of the window, must be >0 + * + * \note You can't change the maximum size of a fullscreen window, it + * automatically matches the size of the display mode. + * + * \sa SDL_GetWindowMaximumSize() + * \sa SDL_SetWindowMinimumSize() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * \brief Get the maximum size of a window's client area. + * + * \param window The window to query. + * \param w Pointer to variable for storing the maximum width, may be NULL + * \param h Pointer to variable for storing the maximum height, may be NULL + * + * \sa SDL_GetWindowMinimumSize() + * \sa SDL_SetWindowMaximumSize() + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * \brief 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. + * + * \param window The window of which to change the border state. + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border. + * + * \note You can't change the border state of a fullscreen window. + * + * \sa SDL_GetWindowFlags() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * \brief 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. + * + * \param window The window of which to change the resizable state. + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow. + * + * \note You can't change the resizable state of a fullscreen window. + * + * \sa SDL_GetWindowFlags() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * \brief Show a window. + * + * \sa SDL_HideWindow() + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * \brief Hide a window. + * + * \sa SDL_ShowWindow() + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * \brief Raise a window above other windows and set the input focus. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * \brief Make a window as large as possible. + * + * \sa SDL_RestoreWindow() + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * \brief Minimize a window to an iconic representation. + * + * \sa SDL_RestoreWindow() + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * \brief Restore the size and position of a minimized or maximized window. + * + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * \brief Set a window's fullscreen state. + * + * \return 0 on success, or -1 if setting the display mode failed. + * + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * \brief Get the SDL surface associated with the window. + * + * \return The window's framebuffer surface, or NULL on error. + * + * 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. + * + * \note You may not combine this with 3D or the rendering API on this window. + * + * \sa SDL_UpdateWindowSurface() + * \sa SDL_UpdateWindowSurfaceRects() + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * \brief Copy the window surface to the screen. + * + * \return 0 on success, or -1 on error. + * + * \sa SDL_GetWindowSurface() + * \sa SDL_UpdateWindowSurfaceRects() + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * \brief Copy a number of rectangles on the window surface to the screen. + * + * \return 0 on success, or -1 on error. + * + * \sa SDL_GetWindowSurface() + * \sa SDL_UpdateWindowSurface() + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * \brief Set a window's input grab mode. + * + * \param window The window for which the input grab mode should be set. + * \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input. + * + * 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. + * + * \sa SDL_GetWindowGrab() + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * \brief Get a window's input grab mode. + * + * \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise. + * + * \sa SDL_SetWindowGrab() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * \brief Get the window that currently has an input grab enabled. + * + * \return This returns the window if input is grabbed, and NULL otherwise. + * + * \sa SDL_SetWindowGrab() + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * \brief Set the brightness (gamma correction) for a window. + * + * \return 0 on success, or -1 if setting the brightness isn't supported. + * + * \sa SDL_GetWindowBrightness() + * \sa SDL_SetWindowGammaRamp() + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * \brief Get the brightness (gamma correction) for a window. + * + * \return The last brightness value passed to SDL_SetWindowBrightness() + * + * \sa SDL_SetWindowBrightness() + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * \brief Set the opacity for a window + * + * \param window The window which will be made transparent or opaque + * \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be + * clamped internally between 0.0f and 1.0f. + * + * \return 0 on success, or -1 if setting the opacity isn't supported. + * + * \sa SDL_GetWindowOpacity() + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * \brief Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * \param window The window in question. + * \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque) + * + * \return 0 on success, or -1 on error (invalid window, etc). + * + * \sa SDL_SetWindowOpacity() + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name) + * + * \param modal_window The window that should be modal + * \param parent_window The parent window + * + * \return 0 on success, or -1 otherwise. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * \brief Explicitly sets 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's completely + * obscured by other windows. + * + * \param window The window that should get the input focus + * + * \return 0 on success, or -1 otherwise. + * \sa SDL_RaiseWindow() + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * \brief Set the gamma ramp for a window. + * + * \param window The window for which the gamma ramp should be set. + * \param red The translation table for the red channel, or NULL. + * \param green The translation table for the green channel, or NULL. + * \param blue The translation table for the blue channel, or NULL. + * + * \return 0 on success, or -1 if gamma ramps are unsupported. + * + * 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. + * + * \sa SDL_GetWindowGammaRamp() + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * \brief Get the gamma ramp for a window. + * + * \param window The window from which the gamma ramp should be queried. + * \param red A pointer to a 256 element array of 16-bit quantities to hold + * the translation table for the red channel, or NULL. + * \param green A pointer to a 256 element array of 16-bit quantities to hold + * the translation table for the green channel, or NULL. + * \param blue A pointer to a 256 element array of 16-bit quantities to hold + * the translation table for the blue channel, or NULL. + * + * \return 0 on success, or -1 if gamma ramps are unsupported. + * + * \sa SDL_SetWindowGammaRamp() + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * \brief 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; + +/** + * \brief Callback used for hit-testing. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * \brief 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 callback to call when doing a hit-test. + * \param callback_data An app-defined void pointer passed to the callback. + * \return 0 on success, -1 on error (including unsupported). + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * \brief Destroy a window. + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * \brief Returns whether the screensaver is currently enabled (default off). + * + * \sa SDL_EnableScreenSaver() + * \sa SDL_DisableScreenSaver() + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * \brief Allow the screen to be blanked by a screensaver + * + * \sa SDL_IsScreenSaverEnabled() + * \sa SDL_DisableScreenSaver() + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * \brief Prevent the screen from being blanked by a screensaver + * + * \sa SDL_IsScreenSaverEnabled() + * \sa SDL_EnableScreenSaver() + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * \brief Dynamically load an OpenGL library. + * + * \param path The platform dependent OpenGL library name, or NULL to open the + * default OpenGL library. + * + * \return 0 on success, or -1 if the library couldn't be loaded. + * + * 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. + * + * \note 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(). + * + * \sa SDL_GL_GetProcAddress() + * \sa SDL_GL_UnloadLibrary() + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * \brief Get the address of an OpenGL function. + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \sa SDL_GL_LoadLibrary() + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * \brief Return true if an OpenGL extension is supported for the current + * context. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * \brief Reset all previously set OpenGL context attributes to their default values + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * \brief Set an OpenGL window attribute before window creation. + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * \brief Get the actual value for an attribute from the current context. + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * \brief Create an OpenGL context for use with an OpenGL window, and make it + * current. + * + * \sa SDL_GL_DeleteContext() + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * \brief Set up an OpenGL context for rendering into an OpenGL window. + * + * \note The context must have been created with a compatible window. + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * \brief Get the currently active OpenGL window. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * \brief Get the currently active OpenGL context. + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * \brief Get the size of a window's underlying drawable in pixels (for use + * with glViewport). + * + * \param window 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 + * + * 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. + * + * \sa SDL_GetWindowSize() + * \sa SDL_CreateWindow() + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * \brief Set the swap interval for the current OpenGL context. + * + * \param interval 0 for immediate updates, 1 for updates synchronized with the + * vertical retrace. If the system supports it, you may + * specify -1 to allow late swaps to happen immediately + * instead of waiting for the next retrace. + * + * \return 0 on success, or -1 if setting the swap interval is not supported. + * + * \sa SDL_GL_GetSwapInterval() + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * \brief Get the swap interval for the current OpenGL context. + * + * \return 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. + * If the system can't determine the swap interval, or there isn't a + * valid current context, this will return 0 as a safe default. + * + * \sa SDL_GL_SetSwapInterval() + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * \brief Swap the OpenGL buffers for a window, if double-buffering is + * supported. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * \brief Delete an OpenGL context. + * + * \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/lib/osx/include/begin_code.h b/lib/osx/include/begin_code.h new file mode 100644 index 0000000..04e78c6 --- /dev/null +++ b/lib/osx/include/begin_code.h @@ -0,0 +1,146 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 (__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__) +# ifdef __BORLANDC__ +# ifdef BUILD_SDL +# define DECLSPEC +# else +# define DECLSPEC __declspec(dllimport) +# endif +# else +# define DECLSPEC __declspec(dllexport) +# 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 +#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 __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 +#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) +#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 */ + +/* 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/lib/osx/include/close_code.h b/lib/osx/include/close_code.h new file mode 100644 index 0000000..d908b00 --- /dev/null +++ b/lib/osx/include/close_code.h @@ -0,0 +1,37 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 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 + */ + +#undef _begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__WATCOMC__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/lib/osx/include/discord_game_sdk.h b/lib/osx/include/discord_game_sdk.h new file mode 100644 index 0000000..f7a7927 --- /dev/null +++ b/lib/osx/include/discord_game_sdk.h @@ -0,0 +1,429 @@ +#ifndef _DISCORD_GAME_SDK_H_ +#define _DISCORD_GAME_SDK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define DISCORD_VERSION 1 +#define DISCORD_APPLICATION_VERSION 1 +#define DISCORD_USERS_VERSION 1 +#define DISCORD_IMAGES_VERSION 1 +#define DISCORD_ACTIVITIES_VERSION 1 +#define DISCORD_RELATIONSHIPS_VERSION 1 +#define DISCORD_LOBBIES_VERSION 1 +#define DISCORD_NETWORK_VERSION 1 +#define DISCORD_OVERLAY_VERSION 1 +#define DISCORD_STORAGE_VERSION 1 + +enum EDiscordResult { + DiscordResult_Ok, + DiscordResult_ServiceUnavailable, + DiscordResult_InvalidVersion, + DiscordResult_LockFailed, + DiscordResult_InternalError, + DiscordResult_InvalidPaylaod, + DiscordResult_InvalidCommand, + DiscordResult_InvalidPermissions, + DiscordResult_NotFetched, + DiscordResult_NotFound, + DiscordResult_Conflict, + DiscordResult_InvalidSecret, + DiscordResult_InvalidJoinSecret, + DiscordResult_NoEligibleActivity, + DiscordResult_InvalidInvite, + DiscordResult_NotAuthenticated, + DiscordResult_InvalidAccessToken, + DiscordResult_ApplicationMismatch, + DiscordResult_InvalidDataUrl, + DiscordResult_InvalidBase64, + DiscordResult_NotFiltered, + DiscordResult_LobbyFull, + DiscordResult_InvalidLobbySecret, + DiscordResult_InvalidFilename, + DiscordResult_InvalidFileSize, + DiscordResult_InvalidEntitlement, + DiscordResult_NotInstalled, + DiscordResult_NotRunning, +}; + +enum EDiscordCreateFlags { + DiscordCreateFlags_Default = 0, + DiscordCreateFlags_NoRequireDiscord = 1, +}; + +enum EDiscordLogLevel { + DiscordLogLevel_Error = 1, + DiscordLogLevel_Warn, + DiscordLogLevel_Info, + DiscordLogLevel_Debug, +}; + +enum EDiscordImageType { + DiscordImageType_User, +}; + +enum EDiscordActivityType { + DiscordActivityType_Playing, + DiscordActivityType_Streaming, + DiscordActivityType_Listening, + DiscordActivityType_Watching, +}; + +enum EDiscordActivityActionType { + DiscordActivityActionType_Join = 1, + DiscordActivityActionType_Spectate, +}; + +enum EDiscordActivityJoinRequestReply { + DiscordActivityJoinRequestReply_No, + DiscordActivityJoinRequestReply_Yes, + DiscordActivityJoinRequestReply_Ignore, +}; + +enum EDiscordStatus { + DiscordStatus_Offline = 0, + DiscordStatus_Online = 1, + DiscordStatus_Idle = 2, + DiscordStatus_DoNotDisturb = 4, +}; + +enum EDiscordRelationshipType { + DiscordRelationshipType_None, + DiscordRelationshipType_Friend, + DiscordRelationshipType_Blocked, + DiscordRelationshipType_PendingIncoming, + DiscordRelationshipType_PendingOutgoing, + DiscordRelationshipType_Implicit, +}; + +enum EDiscordLobbyType { + DiscordLobbyType_Private = 1, + DiscordLobbyType_Public, +}; + +enum EDiscordLobbySearchComparison { + DiscordLobbySearchComparison_LessThanOrEqual = -2, + DiscordLobbySearchComparison_LessThan, + DiscordLobbySearchComparison_Equal, + DiscordLobbySearchComparison_GreaterThan, + DiscordLobbySearchComparison_GreaterThanOrEqual, + DiscordLobbySearchComparison_NotEqual, +}; + +enum EDiscordLobbySearchCast { + DiscordLobbySearchCast_String = 1, + DiscordLobbySearchCast_Number, +}; + +typedef int64_t DiscordClientId; +typedef int32_t DiscordVersion; +typedef int64_t DiscordSnowflake; +typedef int64_t DiscordTimestamp; +typedef DiscordSnowflake DiscordUserId; +typedef char DiscordUserName[256]; +typedef char DiscordUserAvatar[128]; +typedef char DiscordUserDiscriminator[8]; +typedef char DiscordAccessToken[128]; +typedef char DiscordOAuth2Scopes[1024]; +typedef char DiscordLocale[128]; +typedef char DiscordBranch[4096]; +typedef uint8_t* DiscordImageData; +typedef char DiscordImageId[128]; +typedef char DiscordImageCaption[128]; +typedef char DiscordPartyId[128]; +typedef int32_t DiscordPartyMemberCount; +typedef char DiscordSecret[128]; +typedef DiscordSnowflake DiscordLobbyId; +typedef char DiscordLobbySecret[128]; +typedef char DiscordMetadataKey[256]; +typedef char DiscordMetadataValue[4096]; +typedef uint8_t* DiscordLobbyData; +typedef uint64_t DiscordNetworkSessionId; +typedef uint8_t DiscordNetworkChannelId; +typedef uint8_t* DiscordNetworkData; +typedef char DiscordStorageFileName[260]; +typedef uint8_t* DiscordStorageData; + +struct DiscordUser { + DiscordUserId id; + DiscordUserName username; + DiscordUserDiscriminator discriminator; + DiscordUserAvatar avatar; + int bot; +}; + +struct DiscordOAuth2Token { + DiscordAccessToken access_token; + DiscordOAuth2Scopes scopes; + DiscordTimestamp expires; +}; + +struct DiscordImageHandle { + enum EDiscordImageType type; + int64_t id; + uint32_t size; +}; + +struct DiscordImageDimensions { + uint32_t width; + uint32_t height; +}; + +struct DiscordActivityTimestamps { + DiscordTimestamp start; + DiscordTimestamp end; +}; + +struct DiscordActivityAssets { + DiscordImageId large_image; + DiscordImageCaption large_text; + DiscordImageId small_image; + DiscordImageCaption small_text; +}; + +struct DiscordPartySize { + DiscordPartyMemberCount current_size; + DiscordPartyMemberCount max_size; +}; + +struct DiscordActivityParty { + DiscordPartyId id; + struct DiscordPartySize size; +}; + +struct DiscordActivitySecrets { + DiscordSecret match; + DiscordSecret join; + DiscordSecret spectate; +}; + +struct DiscordActivity { + enum EDiscordActivityType type; + char name[128]; + char state[128]; + char details[128]; + struct DiscordActivityTimestamps timestamps; + struct DiscordActivityAssets assets; + struct DiscordActivityParty party; + struct DiscordActivitySecrets secrets; + int instance; +}; + +struct DiscordPresence { + enum EDiscordStatus status; + struct DiscordActivity activity; +}; + +struct DiscordRelationship { + enum EDiscordRelationshipType type; + struct DiscordUser user; + struct DiscordPresence presence; +}; + +struct DiscordLobby { + DiscordLobbyId id; + enum EDiscordLobbyType type; + DiscordSnowflake owner_id; + DiscordLobbySecret secret; + uint32_t capacity; +}; + +struct DiscordFileStat { + DiscordStorageFileName filename; + uint64_t size; + uint64_t last_modified; +}; + +struct IDiscordLobbyTransaction { + enum EDiscordResult (*set_type)(struct IDiscordLobbyTransaction* lobby_transaction, enum EDiscordLobbyType type); + enum EDiscordResult (*set_owner)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordSnowflake owner_id); + enum EDiscordResult (*set_capacity)(struct IDiscordLobbyTransaction* lobby_transaction, uint32_t capacity); + enum EDiscordResult (*set_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key, DiscordMetadataValue value); + enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key); +}; + +struct IDiscordLobbyMemberTransaction { + enum EDiscordResult (*set_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key, DiscordMetadataValue value); + enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key); +}; + +struct IDiscordLobbySearch { + enum EDiscordResult (*filter)(struct IDiscordLobbySearch* lobby_search, DiscordMetadataKey key, enum EDiscordLobbySearchComparison comparison, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value); + enum EDiscordResult (*sort)(struct IDiscordLobbySearch* lobby_search, DiscordMetadataKey key, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value); + enum EDiscordResult (*limit)(struct IDiscordLobbySearch* lobby_search, uint32_t limit); +}; + +typedef void IDiscordApplicationEvents; + +struct IDiscordApplication { + enum EDiscordResult (*destroy)(struct IDiscordApplication* application); + enum EDiscordResult (*validate_or_exit)(struct IDiscordApplication* application, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_current_locale)(struct IDiscordApplication* application, DiscordLocale* locale); + enum EDiscordResult (*get_current_branch)(struct IDiscordApplication* application, DiscordBranch* branch); + enum EDiscordResult (*get_oauth2_token)(struct IDiscordApplication* application, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordOAuth2Token* oauth2_token)); +}; + +struct IDiscordUsersEvents { + void (*on_current_user_update)(void* event_data); +}; + +struct IDiscordUsers { + enum EDiscordResult (*destroy)(struct IDiscordUsers* users); + enum EDiscordResult (*get_current_user)(struct IDiscordUsers* users, struct DiscordUser* current_user); + enum EDiscordResult (*fetch)(struct IDiscordUsers* users, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordUser* user)); +}; + +typedef void IDiscordImagesEvents; + +struct IDiscordImages { + enum EDiscordResult (*destroy)(struct IDiscordImages* images); + enum EDiscordResult (*fetch)(struct IDiscordImages* images, struct DiscordImageHandle handle, int refresh, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordImageHandle handle_result)); + enum EDiscordResult (*get_dimensions)(struct IDiscordImages* images, struct DiscordImageHandle handle, struct DiscordImageDimensions* dimensions); + enum EDiscordResult (*get_data)(struct IDiscordImages* images, struct DiscordImageHandle handle, DiscordImageData data, uint32_t data_length); +}; + +struct IDiscordActivitiesEvents { + void (*on_activity_join)(void* event_data, DiscordSecret secret); + void (*on_activity_spectate)(void* event_data, DiscordSecret secret); + void (*on_activity_join_request)(void* event_data, struct DiscordUser* user); + void (*on_activity_invite)(void* event_data, enum EDiscordActivityActionType type, struct DiscordUser* user, struct DiscordActivity* activity); +}; + +struct IDiscordActivities { + enum EDiscordResult (*destroy)(struct IDiscordActivities* activities); + enum EDiscordResult (*register_)(struct IDiscordActivities* activities, const char* command); + enum EDiscordResult (*register_steam)(struct IDiscordActivities* activities, uint32_t steam_id); + enum EDiscordResult (*update_activity)(struct IDiscordActivities* activities, struct DiscordActivity* activity, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*clear_activity)(struct IDiscordActivities* activities, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*respond)(struct IDiscordActivities* activities, DiscordUserId user_id, enum EDiscordActivityJoinRequestReply reply, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*invite_user)(struct IDiscordActivities* activities, DiscordUserId user_id, enum EDiscordActivityActionType type, const char* content, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*accept_invite)(struct IDiscordActivities* activities, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +struct IDiscordRelationshipsEvents { + void (*on_relationships_update)(void* event_data); + void (*on_relationship_update)(void* event_data, struct DiscordRelationship* relationship); +}; + +struct IDiscordRelationships { + enum EDiscordResult (*destroy)(struct IDiscordRelationships* relationships); + enum EDiscordResult (*filter)(struct IDiscordRelationships* relationships, void* filter_data, int (*filter)(void* filter_data, struct DiscordRelationship* relationship)); + enum EDiscordResult (*count)(struct IDiscordRelationships* relationships, int32_t* count); + enum EDiscordResult (*get)(struct IDiscordRelationships* relationships, DiscordUserId user_id, struct DiscordRelationship* relationship); + enum EDiscordResult (*at)(struct IDiscordRelationships* relationships, uint32_t index, struct DiscordRelationship* relationship); +}; + +struct IDiscordLobbiesEvents { + void (*on_lobby_update)(void* event_data, int64_t lobby_id); + void (*on_lobby_delete)(void* event_data, int64_t lobby_id, uint32_t reason); + void (*on_lobby_member_connect)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_member_update)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_member_disconnect)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_message)(void* event_data, int64_t lobby_id, int64_t user_id, DiscordLobbyData data, uint32_t data_length); + void (*on_lobby_speaking)(void* event_data, int64_t lobby_id, int64_t user_id, int speaking); +}; + +struct IDiscordLobbies { + enum EDiscordResult (*destroy)(struct IDiscordLobbies* lobbies); + enum EDiscordResult (*create_lobby_transaction)(struct IDiscordLobbies* lobbies, struct IDiscordLobbyTransaction** transaction); + enum EDiscordResult (*get_lobby_transaction)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction** transaction); + enum EDiscordResult (*get_member_transaction)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction** transaction); + enum EDiscordResult (*create_lobby)(struct IDiscordLobbies* lobbies, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby)); + enum EDiscordResult (*update_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*delete_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*connect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordLobbySecret lobby_secret, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby)); + enum EDiscordResult (*disconnect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct DiscordLobby* lobby); + enum EDiscordResult (*get_lobby_metadata)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordMetadataKey key, DiscordMetadataValue* value); + enum EDiscordResult (*get_member_count)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, int32_t* count); + enum EDiscordResult (*get_member_user_id)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, int32_t index, DiscordUserId* user_id); + enum EDiscordResult (*get_member_user)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct DiscordUser* user); + enum EDiscordResult (*get_member_metadata)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, DiscordMetadataKey key, DiscordMetadataValue* value); + enum EDiscordResult (*update_member)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*send)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordLobbyData data, uint32_t data_length); + enum EDiscordResult (*create_lobby_search)(struct IDiscordLobbies* lobbies, struct IDiscordLobbySearch** lobby_search); + enum EDiscordResult (*search)(struct IDiscordLobbies* lobbies, struct IDiscordLobbySearch* query, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_lobby_count)(struct IDiscordLobbies* lobbies, int32_t* count); + enum EDiscordResult (*get_lobby_id)(struct IDiscordLobbies* lobbies, int32_t index, DiscordLobbyId* lobby_id); + enum EDiscordResult (*voice_connect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*voice_disconnect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +struct IDiscordNetworkEvents { + void (*on_message)(void* event_data, DiscordNetworkSessionId from, DiscordNetworkChannelId channel, DiscordNetworkData data, uint32_t data_length); +}; + +struct IDiscordNetwork { + enum EDiscordResult (*destroy)(struct IDiscordNetwork* network); + enum EDiscordResult (*get_session_id)(struct IDiscordNetwork* network, DiscordNetworkSessionId* session_id); + enum EDiscordResult (*flush)(struct IDiscordNetwork* network); + enum EDiscordResult (*open_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); + enum EDiscordResult (*open_reliable_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); + enum EDiscordResult (*send)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel, DiscordNetworkData data, uint32_t data_length); + enum EDiscordResult (*close_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); +}; + +struct IDiscordOverlayEvents { + void (*on_overlay_locked)(void* event_data, int locked); +}; + +struct IDiscordOverlay { + enum EDiscordResult (*destroy)(struct IDiscordOverlay* overlay); + enum EDiscordResult (*is_enabled)(struct IDiscordOverlay* overlay, int* enabled); + enum EDiscordResult (*is_locked)(struct IDiscordOverlay* overlay, int* locked); + enum EDiscordResult (*set_locked)(struct IDiscordOverlay* overlay, int locked); + enum EDiscordResult (*open_activity_invite)(struct IDiscordOverlay* overlay, enum EDiscordActivityActionType type, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +typedef void IDiscordStorageEvents; + +struct IDiscordStorage { + enum EDiscordResult (*destroy)(struct IDiscordStorage* storage); + enum EDiscordResult (*read)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length, uint32_t* read); + enum EDiscordResult (*read_async)(struct IDiscordStorage* storage, DiscordStorageFileName name, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, DiscordStorageData data, uint32_t data_length)); + enum EDiscordResult (*read_async_partial)(struct IDiscordStorage* storage, DiscordStorageFileName name, uint64_t offset, uint64_t length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, DiscordStorageData data, uint32_t data_length)); + enum EDiscordResult (*write)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length); + enum EDiscordResult (*write_async)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*delete_)(struct IDiscordStorage* storage, DiscordStorageFileName name); + enum EDiscordResult (*exists)(struct IDiscordStorage* storage, DiscordStorageFileName name, int* exists); + enum EDiscordResult (*count)(struct IDiscordStorage* storage, int32_t* count); + enum EDiscordResult (*stat)(struct IDiscordStorage* storage, DiscordStorageFileName name, struct DiscordFileStat* stat); + enum EDiscordResult (*stat_index)(struct IDiscordStorage* storage, int32_t index, struct DiscordFileStat* stat); +}; + +struct IDiscordCoreEvents { + void (*on_ready)(void* event_data); +}; + +struct IDiscordCore { + enum EDiscordResult (*destroy)(struct IDiscordCore* core); + enum EDiscordResult (*run_callbacks)(struct IDiscordCore* core); + enum EDiscordResult (*set_log_hook)(struct IDiscordCore* core, enum EDiscordLogLevel min_level, void* hook_data, void (*hook)(void* hook_data, enum EDiscordLogLevel level, const char* message)); + enum EDiscordResult (*create_application)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordApplicationEvents* events, void* event_data, struct IDiscordApplication** result); + enum EDiscordResult (*create_users)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordUsersEvents* events, void* event_data, struct IDiscordUsers** result); + enum EDiscordResult (*create_images)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordImagesEvents* events, void* event_data, struct IDiscordImages** result); + enum EDiscordResult (*create_activities)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordActivitiesEvents* events, void* event_data, struct IDiscordActivities** result); + enum EDiscordResult (*create_relationships)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordRelationshipsEvents* events, void* event_data, struct IDiscordRelationships** result); + enum EDiscordResult (*create_lobbies)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordLobbiesEvents* events, void* event_data, struct IDiscordLobbies** result); + enum EDiscordResult (*create_network)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordNetworkEvents* events, void* event_data, struct IDiscordNetwork** result); + enum EDiscordResult (*create_overlay)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordOverlayEvents* events, void* event_data, struct IDiscordOverlay** result); + enum EDiscordResult (*create_storage)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordStorageEvents* events, void* event_data, struct IDiscordStorage** result); +}; + +struct DiscordCreateParams { + DiscordClientId client_id; + uint64_t flags; + struct IDiscordCoreEvents* events; + void* event_data; +}; + +enum EDiscordResult DiscordCreate(DiscordVersion version, struct DiscordCreateParams* params, struct IDiscordCore** result); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/lib/osx/include/freetype/config/ftconfig.h b/lib/osx/include/freetype/config/ftconfig.h new file mode 100644 index 0000000..d4d7993 --- /dev/null +++ b/lib/osx/include/freetype/config/ftconfig.h @@ -0,0 +1,467 @@ +/***************************************************************************/ +/* */ +/* ftconfig.h */ +/* */ +/* ANSI-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This header file contains a number of macro definitions that are used */ + /* by the rest of the engine. Most of the macros here are automatically */ + /* determined at compile time, and you should not need to change it to */ + /* port FreeType, except to compile the library with a non-ANSI */ + /* compiler. */ + /* */ + /* Note however that if some specific modifications are needed, we */ + /* advise you to place a modified copy in your build directory. */ + /* */ + /* The build directory is usually `builds/<system>', and contains */ + /* system-specific files that are always included first when building */ + /* the library. */ + /* */ + /* This ANSI version should stay in `include/config/'. */ + /* */ + /*************************************************************************/ + +#ifndef __FTCONFIG_H__ +#define __FTCONFIG_H__ + +#include <ft2build.h> +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ + /* */ + /* These macros can be toggled to suit a specific system. The current */ + /* ones are defaults used to compile FreeType in an ANSI C environment */ + /* (16bit compilers are also supported). Copy this file to your own */ + /* `builds/<system>' directory, and edit it to port the engine. */ + /* */ + /*************************************************************************/ + + + /* There are systems (like the Texas Instruments 'C54x) where a `char' */ + /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ + /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ + /* `char' type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + + /* The size of an `int' type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `int' type!" +#endif + + /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `long' type!" +#endif + + + /* FT_UNUSED is a macro used to indicate that a given parameter is not */ + /* used -- this is only used to get rid of unpleasant compiler warnings */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + + /*************************************************************************/ + /* */ + /* AUTOMATIC CONFIGURATION MACROS */ + /* */ + /* These macros are computed from the ones defined above. Don't touch */ + /* their definition, unless you know precisely what you are doing. No */ + /* porter should need to mess with them. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Mac support */ + /* */ + /* This is the only necessary change, so it is defined here instead */ + /* providing a new configuration file. */ + /* */ +#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* no Carbon frameworks for 64bit 10.4.x */ + /* AvailabilityMacros.h is available since Mac OS X 10.2, */ + /* so guess the system version by maximum errno before inclusion */ +#include <errno.h> +#ifdef ECANCELED /* defined since 10.2 */ +#include "AvailabilityMacros.h" +#endif +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#undef FT_MACINTOSH +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int16 */ + /* */ + /* <Description> */ + /* A typedef for a 16bit signed integer type. */ + /* */ + typedef signed short FT_Int16; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt16 */ + /* */ + /* <Description> */ + /* A typedef for a 16bit unsigned integer type. */ + /* */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int32 */ + /* */ + /* <Description> */ + /* A typedef for a 32bit signed integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef signed XXX FT_Int32; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt32 */ + /* */ + /* A typedef for a 32bit unsigned integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef unsigned XXX FT_UInt32; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int64 */ + /* */ + /* A typedef for a 64bit signed integer type. The size depends on */ + /* the configuration. Only defined if there is real 64bit support; */ + /* otherwise, it gets emulated with a structure (if necessary). */ + /* */ + typedef signed XXX FT_Int64; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt64 */ + /* */ + /* A typedef for a 64bit unsigned integer type. The size depends on */ + /* the configuration. Only defined if there is real 64bit support; */ + /* otherwise, it gets emulated with a structure (if necessary). */ + /* */ + typedef unsigned XXX FT_UInt64; + + /* */ + +#endif + +#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT) + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT) + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32 bits */ +#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT) + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit int type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) + + /* FT_LONG64 must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long +#define FT_UINT64 unsigned long + + /*************************************************************************/ + /* */ + /* A 64-bit data type may create compilation problems if you compile */ + /* in strict ANSI mode. To avoid them, we disable other 64-bit data */ + /* types if __STDC__ is defined. You can however ignore this rule */ + /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* */ +#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of __BORLANDC__ in order */ + /* to test the compiler version. */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long' type */ +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#endif /* _MSC_VER */ + +#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ + +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#endif + + + /*************************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /*************************************************************************/ + + +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + + /* typeof condition taken from gnulib's `intprops.h' header file */ +#if ( __GNUC__ >= 2 || \ + defined( __IBM__TYPEOF__ ) || \ + ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define FT_TYPEOF( type ) (__typeof__ (type)) +#else +#define FT_TYPEOF( type ) /* empty */ +#endif + + +#ifdef FT_MAKE_OPTION_SINGLE_OBJECT + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#ifdef __cplusplus +#define FT_LOCAL( x ) extern "C" x +#define FT_LOCAL_DEF( x ) extern "C" x +#else +#define FT_LOCAL( x ) extern x +#define FT_LOCAL_DEF( x ) x +#endif + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + +#define FT_LOCAL_ARRAY( x ) extern const x +#define FT_LOCAL_ARRAY_DEF( x ) const x + + +#ifndef FT_BASE + +#ifdef __cplusplus +#define FT_BASE( x ) extern "C" x +#else +#define FT_BASE( x ) extern x +#endif + +#endif /* !FT_BASE */ + + +#ifndef FT_BASE_DEF + +#ifdef __cplusplus +#define FT_BASE_DEF( x ) x +#else +#define FT_BASE_DEF( x ) x +#endif + +#endif /* !FT_BASE_DEF */ + + +#ifndef FT_EXPORT + +#ifdef __cplusplus +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif + +#endif /* !FT_EXPORT */ + + +#ifndef FT_EXPORT_DEF + +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) extern "C" x +#else +#define FT_EXPORT_DEF( x ) extern x +#endif + +#endif /* !FT_EXPORT_DEF */ + + +#ifndef FT_EXPORT_VAR + +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif + +#endif /* !FT_EXPORT_VAR */ + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"' for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + + +FT_END_HEADER + + +#endif /* __FTCONFIG_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/config/ftheader.h b/lib/osx/include/freetype/config/ftheader.h new file mode 100644 index 0000000..55f833d --- /dev/null +++ b/lib/osx/include/freetype/config/ftheader.h @@ -0,0 +1,834 @@ +/***************************************************************************/ +/* */ +/* ftheader.h */ +/* */ +/* Build macros of the FreeType 2 library. */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __FT_HEADER_H__ +#define __FT_HEADER_H__ + + + /*@***********************************************************************/ + /* */ + /* <Macro> */ + /* FT_BEGIN_HEADER */ + /* */ + /* <Description> */ + /* This macro is used in association with @FT_END_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_BEGIN_HEADER extern "C" { +#else +#define FT_BEGIN_HEADER /* nothing */ +#endif + + + /*@***********************************************************************/ + /* */ + /* <Macro> */ + /* FT_END_HEADER */ + /* */ + /* <Description> */ + /* This macro is used in association with @FT_BEGIN_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_END_HEADER } +#else +#define FT_END_HEADER /* nothing */ +#endif + + + /*************************************************************************/ + /* */ + /* Aliases for the FreeType 2 public and configuration files. */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* header_file_macros */ + /* */ + /* <Title> */ + /* Header File Macros */ + /* */ + /* <Abstract> */ + /* Macro definitions used to #include specific header files. */ + /* */ + /* <Description> */ + /* The following macros are defined to the name of specific */ + /* FreeType~2 header files. They can be used directly in #include */ + /* statements as in: */ + /* */ + /* { */ + /* #include FT_FREETYPE_H */ + /* #include FT_MULTIPLE_MASTERS_H */ + /* #include FT_GLYPH_H */ + /* } */ + /* */ + /* There are several reasons why we are now using macros to name */ + /* public header files. The first one is that such macros are not */ + /* limited to the infamous 8.3~naming rule required by DOS (and */ + /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ + /* */ + /* The second reason is that it allows for more flexibility in the */ + /* way FreeType~2 is installed on a given system. */ + /* */ + /*************************************************************************/ + + + /* configuration files */ + + /************************************************************************* + * + * @macro: + * FT_CONFIG_CONFIG_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 configuration data. + * + */ +#ifndef FT_CONFIG_CONFIG_H +#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_STANDARD_LIBRARY_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 interface to the standard C library functions. + * + */ +#ifndef FT_CONFIG_STANDARD_LIBRARY_H +#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_OPTIONS_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 project-specific configuration options. + * + */ +#ifndef FT_CONFIG_OPTIONS_H +#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_MODULES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 modules that are statically linked to new library + * instances in @FT_Init_FreeType. + * + */ +#ifndef FT_CONFIG_MODULES_H +#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> +#endif + + /* */ + + /* public headers */ + + /************************************************************************* + * + * @macro: + * FT_FREETYPE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * base FreeType~2 API. + * + */ +#define FT_FREETYPE_H <freetype/freetype.h> + + + /************************************************************************* + * + * @macro: + * FT_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 error codes (and messages). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_ERRORS_H <freetype/fterrors.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). + * + */ +#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> + + + /************************************************************************* + * + * @macro: + * FT_SYSTEM_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management + * and stream i/o). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_SYSTEM_H <freetype/ftsystem.h> + + + /************************************************************************* + * + * @macro: + * FT_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing type + * definitions related to glyph images (i.e., bitmaps, outlines, + * scan-converter parameters). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_IMAGE_H <freetype/ftimage.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * basic data types defined by FreeType~2. + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_TYPES_H <freetype/fttypes.h> + + + /************************************************************************* + * + * @macro: + * FT_LIST_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list management API of FreeType~2. + * + * (Most applications will never need to include this file.) + * + */ +#define FT_LIST_H <freetype/ftlist.h> + + + /************************************************************************* + * + * @macro: + * FT_OUTLINE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * scalable outline management API of FreeType~2. + * + */ +#define FT_OUTLINE_H <freetype/ftoutln.h> + + + /************************************************************************* + * + * @macro: + * FT_SIZES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API which manages multiple @FT_Size objects per face. + * + */ +#define FT_SIZES_H <freetype/ftsizes.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * module management API of FreeType~2. + * + */ +#define FT_MODULE_H <freetype/ftmodapi.h> + + + /************************************************************************* + * + * @macro: + * FT_RENDER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * renderer module management API of FreeType~2. + * + */ +#define FT_RENDER_H <freetype/ftrender.h> + + + /************************************************************************* + * + * @macro: + * FT_AUTOHINTER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the auto-hinting module. + * + */ +#define FT_AUTOHINTER_H <freetype/ftautoh.h> + + + /************************************************************************* + * + * @macro: + * FT_CFF_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the CFF driver module. + * + */ +#define FT_CFF_DRIVER_H <freetype/ftcffdrv.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the TrueType driver module. + * + */ +#define FT_TRUETYPE_DRIVER_H <freetype/ftttdrv.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPE1_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the Type~1 format. + * + */ +#define FT_TYPE1_TABLES_H <freetype/t1tables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_IDS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * enumeration values which identify name strings, languages, encodings, + * etc. This file really contains a _large_ set of constant macro + * definitions, taken from the TrueType and OpenType specifications. + * + */ +#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the TrueType (as well as OpenType) format. + * + */ +#define FT_TRUETYPE_TABLES_H <freetype/tttables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TAGS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of TrueType four-byte `tags' which identify blocks in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_TRUETYPE_TAGS_H <freetype/tttags.h> + + + /************************************************************************* + * + * @macro: + * FT_BDF_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which accesses BDF-specific strings from a + * face. + * + */ +#define FT_BDF_H <freetype/ftbdf.h> + + + /************************************************************************* + * + * @macro: + * FT_CID_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which access CID font information from a + * face. + * + */ +#define FT_CID_H <freetype/ftcid.h> + + + /************************************************************************* + * + * @macro: + * FT_GZIP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports gzip-compressed files. + * + */ +#define FT_GZIP_H <freetype/ftgzip.h> + + + /************************************************************************* + * + * @macro: + * FT_LZW_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports LZW-compressed files. + * + */ +#define FT_LZW_H <freetype/ftlzw.h> + + + /************************************************************************* + * + * @macro: + * FT_BZIP2_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports bzip2-compressed files. + * + */ +#define FT_BZIP2_H <freetype/ftbzip2.h> + + + /************************************************************************* + * + * @macro: + * FT_WINFONTS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports Windows FNT files. + * + */ +#define FT_WINFONTS_H <freetype/ftwinfnt.h> + + + /************************************************************************* + * + * @macro: + * FT_GLYPH_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional glyph management component. + * + */ +#define FT_GLYPH_H <freetype/ftglyph.h> + + + /************************************************************************* + * + * @macro: + * FT_BITMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional bitmap conversion component. + * + */ +#define FT_BITMAP_H <freetype/ftbitmap.h> + + + /************************************************************************* + * + * @macro: + * FT_BBOX_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional exact bounding box computation routines. + * + */ +#define FT_BBOX_H <freetype/ftbbox.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. + * + */ +#define FT_CACHE_H <freetype/ftcache.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `glyph image' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for @FT_Glyph elements. You can also + * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to + * store small glyph bitmaps, as it will use less memory. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * glyph image-related cache declarations. + * + */ +#define FT_CACHE_IMAGE_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_SMALL_BITMAPS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `small bitmaps' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for small glyph bitmaps in a relatively + * memory-efficient way. You can also use the API defined in + * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, + * including scalable outlines. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * small bitmaps-related cache declarations. + * + */ +#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_CHARMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `charmap' API of the FreeType~2 cache sub-system. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * charmap-based cache declarations. + * + */ +#define FT_CACHE_CHARMAP_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_MAC_H + * + * @description: + * A macro used in #include statements to name the file containing the + * Macintosh-specific FreeType~2 API. The latter is used to access + * fonts embedded in resource forks. + * + * This header file must be explicitly included by client applications + * compiled on the Mac (note that the base API still works though). + * + */ +#define FT_MAC_H <freetype/ftmac.h> + + + /************************************************************************* + * + * @macro: + * FT_MULTIPLE_MASTERS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional multiple-masters management API of FreeType~2. + * + */ +#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> + + + /************************************************************************* + * + * @macro: + * FT_SFNT_NAMES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which accesses embedded `name' strings in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_SFNT_NAMES_H <freetype/ftsnames.h> + + + /************************************************************************* + * + * @macro: + * FT_OPENTYPE_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, + * GPOS, GSUB, JSTF). + * + */ +#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h> + + + /************************************************************************* + * + * @macro: + * FT_GX_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, + * mort, morx, bsln, just, kern, opbd, trak, prop). + * + */ +#define FT_GX_VALIDATE_H <freetype/ftgxval.h> + + + /************************************************************************* + * + * @macro: + * FT_PFR_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which accesses PFR-specific data. + * + */ +#define FT_PFR_H <freetype/ftpfr.h> + + + /************************************************************************* + * + * @macro: + * FT_STROKER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions to stroke outline paths. + */ +#define FT_STROKER_H <freetype/ftstroke.h> + + + /************************************************************************* + * + * @macro: + * FT_SYNTHESIS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs artificial obliquing and emboldening. + */ +#define FT_SYNTHESIS_H <freetype/ftsynth.h> + + + /************************************************************************* + * + * @macro: + * FT_FONT_FORMATS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions specific to font formats. + */ +#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h> + + /* deprecated */ +#define FT_XFREE86_H FT_FONT_FORMATS_H + + + /************************************************************************* + * + * @macro: + * FT_TRIGONOMETRY_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs trigonometric computations (e.g., + * cosines and arc tangents). + */ +#define FT_TRIGONOMETRY_H <freetype/fttrigon.h> + + + /************************************************************************* + * + * @macro: + * FT_LCD_FILTER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_LCD_FILTER_H <freetype/ftlcdfil.h> + + + /************************************************************************* + * + * @macro: + * FT_UNPATENTED_HINTING_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h> + + + /************************************************************************* + * + * @macro: + * FT_INCREMENTAL_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_INCREMENTAL_H <freetype/ftincrem.h> + + + /************************************************************************* + * + * @macro: + * FT_GASP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns entries from the TrueType GASP table. + */ +#define FT_GASP_H <freetype/ftgasp.h> + + + /************************************************************************* + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ +#define FT_ADVANCES_H <freetype/ftadvanc.h> + + + /* */ + +#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> + + + /* The internals of the cache sub-system are no longer exposed. We */ + /* default to FT_CACHE_H at the moment just in case, but we know of */ + /* no rogue client that uses them. */ + /* */ +#define FT_CACHE_MANAGER_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h> + + +#define FT_INCREMENTAL_H <freetype/ftincrem.h> + +#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> + + + /* + * Include internal headers definitions from <internal/...> + * only when building the library. + */ +#ifdef FT2_BUILD_LIBRARY +#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> +#include FT_INTERNAL_INTERNAL_H +#endif /* FT2_BUILD_LIBRARY */ + + +#endif /* __FT2_BUILD_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/config/ftmodule.h b/lib/osx/include/freetype/config/ftmodule.h new file mode 100644 index 0000000..76d271a --- /dev/null +++ b/lib/osx/include/freetype/config/ftmodule.h @@ -0,0 +1,32 @@ +/* + * This file registers the FreeType modules compiled into the library. + * + * If you use GNU make, this file IS NOT USED! Instead, it is created in + * the objects directory (normally `<topdir>/objs/') based on information + * from `<topdir>/modules.cfg'. + * + * Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile + * FreeType without GNU make. + * + */ + +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) + +/* EOF */ diff --git a/lib/osx/include/freetype/config/ftoption.h b/lib/osx/include/freetype/config/ftoption.h new file mode 100644 index 0000000..b481f8f --- /dev/null +++ b/lib/osx/include/freetype/config/ftoption.h @@ -0,0 +1,904 @@ +/***************************************************************************/ +/* */ +/* ftoption.h */ +/* */ +/* User-selectable configuration macros (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOPTION_H__ +#define __FTOPTION_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* USER-SELECTABLE CONFIGURATION MACROS */ + /* */ + /* This file contains the default configuration macro definitions for */ + /* a standard build of the FreeType library. There are three ways to */ + /* use this file to build project-specific versions of the library: */ + /* */ + /* - You can modify this file by hand, but this is not recommended in */ + /* cases where you would like to build several versions of the */ + /* library from a single source directory. */ + /* */ + /* - You can put a copy of this file in your build directory, more */ + /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ + /* is the name of a directory that is included _before_ the FreeType */ + /* include path during compilation. */ + /* */ + /* The default FreeType Makefiles and Jamfiles use the build */ + /* directory `builds/<system>' by default, but you can easily change */ + /* that for your own projects. */ + /* */ + /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ + /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ + /* locate this file during the build. For example, */ + /* */ + /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ + /* #include <freetype/config/ftheader.h> */ + /* */ + /* will use `$BUILD/myftoptions.h' instead of this file for macro */ + /* definitions. */ + /* */ + /* Note also that you can similarly pre-define the macro */ + /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ + /* that are statically linked to the library at compile time. By */ + /* default, this file is <freetype/config/ftmodule.h>. */ + /* */ + /* We highly recommend using the third method whenever possible. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Uncomment the line below if you want to activate sub-pixel rendering */ + /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* */ + /* Note that this feature is covered by several Microsoft patents */ + /* and should not be activated in any default build of the library. */ + /* */ + /* This macro has no impact on the FreeType API, only on its */ + /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ + /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ + /* the original size in case this macro isn't defined; however, each */ + /* triplet of subpixels has R=G=B. */ + /* */ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + + /*************************************************************************/ + /* */ + /* Many compilers provide a non-ANSI 64-bit data type that can be used */ + /* by FreeType to speed up some computations. However, this will create */ + /* some problems when compiling the library in strict ANSI mode. */ + /* */ + /* For this reason, the use of 64-bit integers is normally disabled when */ + /* the __STDC__ macro is defined. You can however disable this by */ + /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ + /* */ + /* For most compilers, this will only create compilation warnings when */ + /* building the library. */ + /* */ + /* ObNote: The compiler-specific 64-bit integers are detected in the */ + /* file `ftconfig.h' either statically or through the */ + /* `configure' script on supported platforms. */ + /* */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /*************************************************************************/ + /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /*************************************************************************/ + /* */ + /* LZW-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `compress' program. This is mostly used to parse many of the PCF */ + /* files that come with various X11 distributions. The implementation */ + /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ + /* (see src/lzw/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_LZW + + + /*************************************************************************/ + /* */ + /* Gzip-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `gzip' program. This is mostly used to parse many of the PCF files */ + /* that come with XFree86. The implementation uses `zlib' to */ + /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. See also */ + /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ + /* */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /*************************************************************************/ + /* */ + /* ZLib library selection */ + /* */ + /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ + /* It allows FreeType's `ftgzip' component to link to the system's */ + /* installation of the ZLib library. This is useful on systems like */ + /* Unix or VMS where it generally is already available. */ + /* */ + /* If you let it undefined, the component will use its own copy */ + /* of the zlib sources instead. These have been modified to be */ + /* included directly within the component and *not* export external */ + /* function names. This allows you to link any program with FreeType */ + /* _and_ ZLib without linking conflicts. */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + + + /*************************************************************************/ + /* */ + /* Bzip2-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `bzip2' program. This is mostly used to parse many of the PCF */ + /* files that come with XFree86. The implementation uses `libbz2' to */ + /* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */ + /* Contrary to gzip, bzip2 currently is not included and need to use */ + /* the system available bzip2 implementation. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_BZIP2 */ + + + /*************************************************************************/ + /* */ + /* Define to disable the use of file stream functions and types, FILE, */ + /* fopen() etc. Enables the use of smaller system libraries on embedded */ + /* systems that have multiple system libraries, some with or without */ + /* file stream support, in the cases where file stream support is not */ + /* necessary such as memory loading of font files. */ + /* */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /*************************************************************************/ + /* */ + /* PNG bitmap support. */ + /* */ + /* FreeType now handles loading color bitmap glyphs in the PNG format. */ + /* This requires help from the external libpng library. Uncompressed */ + /* color bitmaps do not need any external libraries and will be */ + /* supported regardless of this configuration. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_PNG */ + + + /*************************************************************************/ + /* */ + /* HarfBuzz support. */ + /* */ + /* FreeType uses the HarfBuzz library to improve auto-hinting of */ + /* OpenType fonts. If available, many glyphs not directly addressable */ + /* by a font's character map will be hinted also. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */ + + + /*************************************************************************/ + /* */ + /* DLL export compilation */ + /* */ + /* When compiling FreeType as a DLL, some systems/compilers need a */ + /* special keyword in front OR after the return type of function */ + /* declarations. */ + /* */ + /* Two macros are used within the FreeType source code to define */ + /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ + /* */ + /* FT_EXPORT( return_type ) */ + /* */ + /* is used in a function declaration, as in */ + /* */ + /* FT_EXPORT( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* */ + /* */ + /* FT_EXPORT_DEF( return_type ) */ + /* */ + /* is used in a function definition, as in */ + /* */ + /* FT_EXPORT_DEF( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ) */ + /* { */ + /* ... some code ... */ + /* return FT_Err_Ok; */ + /* } */ + /* */ + /* You can provide your own implementation of FT_EXPORT and */ + /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ + /* will be later automatically defined as `extern return_type' to */ + /* allow normal compilation. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_EXPORT(x) extern x */ +/* #define FT_EXPORT_DEF(x) x */ + + + /*************************************************************************/ + /* */ + /* Glyph Postscript Names handling */ + /* */ + /* By default, FreeType 2 is compiled with the `psnames' module. This */ + /* module is in charge of converting a glyph name string into a */ + /* Unicode value, or return a Macintosh standard glyph name for the */ + /* use with the TrueType `post' table. */ + /* */ + /* Undefine this macro if you do not want `psnames' compiled in your */ + /* build of FreeType. This has the following effects: */ + /* */ + /* - The TrueType driver will provide its own set of glyph names, */ + /* if you build it to support postscript names in the TrueType */ + /* `post' table. */ + /* */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ + /* charmap out of the glyphs found in the fonts. */ + /* */ + /* You would normally undefine this configuration macro when building */ + /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ + /* */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Postscript Names to Unicode Values support */ + /* */ + /* By default, FreeType 2 is built with the `PSNames' module compiled */ + /* in. Among other things, the module is used to convert a glyph name */ + /* into a Unicode value. This is especially useful in order to */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* through a big table named the `Adobe Glyph List' (AGL). */ + /* */ + /* Undefine this macro if you do not want the Adobe Glyph List */ + /* compiled in your `PSNames' module. The Type 1 driver will not be */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ + /* fonts. */ + /* */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /*************************************************************************/ + /* */ + /* Support for Mac fonts */ + /* */ + /* Define this macro if you want support for outline fonts in Mac */ + /* format (mac dfont, mac resource, macbinary containing a mac */ + /* resource) on non-Mac platforms. */ + /* */ + /* Note that the `FOND' resource isn't checked. */ + /* */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /*************************************************************************/ + /* */ + /* Guessing methods to access embedded resource forks */ + /* */ + /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ + /* GNU/Linux). */ + /* */ + /* Resource forks which include fonts data are stored sometimes in */ + /* locations which users or developers don't expected. In some cases, */ + /* resource forks start with some offset from the head of a file. In */ + /* other cases, the actual resource fork is stored in file different */ + /* from what the user specifies. If this option is activated, */ + /* FreeType tries to guess whether such offsets or different file */ + /* names must be used. */ + /* */ + /* Note that normal, direct access of resource forks is controlled via */ + /* the FT_CONFIG_OPTION_MAC_FONTS option. */ + /* */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /*************************************************************************/ + /* */ + /* Allow the use of FT_Incremental_Interface to load typefaces that */ + /* contain no glyph data, but supply it via a callback function. */ + /* This is required by clients supporting document formats which */ + /* supply font data incrementally as the document is parsed, such */ + /* as the Ghostscript interpreter for the PostScript language. */ + /* */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /*************************************************************************/ + /* */ + /* The size in bytes of the render pool used by the scan-line converter */ + /* to do all of its work. */ + /* */ +#define FT_RENDER_POOL_SIZE 16384L + + + /*************************************************************************/ + /* */ + /* FT_MAX_MODULES */ + /* */ + /* The maximum number of modules that can be registered in a single */ + /* FreeType library object. 32 is the default. */ + /* */ +#define FT_MAX_MODULES 32 + + + /*************************************************************************/ + /* */ + /* Debug level */ + /* */ + /* FreeType can be compiled in debug or trace mode. In debug mode, */ + /* errors are reported through the `ftdebug' component. In trace */ + /* mode, additional messages are sent to the standard output during */ + /* execution. */ + /* */ + /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ + /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ + /* */ + /* Don't define any of these macros to compile in `release' mode! */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_LEVEL_ERROR */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Autofitter debugging */ + /* */ + /* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */ + /* control the autofitter behaviour for debugging purposes with global */ + /* boolean variables (consequently, you should *never* enable this */ + /* while compiling in `release' mode): */ + /* */ + /* _af_debug_disable_horz_hints */ + /* _af_debug_disable_vert_hints */ + /* _af_debug_disable_blue_hints */ + /* */ + /* Additionally, the following functions provide dumps of various */ + /* internal autofit structures to stdout (using `printf'): */ + /* */ + /* af_glyph_hints_dump_points */ + /* af_glyph_hints_dump_segments */ + /* af_glyph_hints_dump_edges */ + /* af_glyph_hints_get_num_segments */ + /* af_glyph_hints_get_segment_offset */ + /* */ + /* As an argument, they use another global variable: */ + /* */ + /* _af_debug_hints */ + /* */ + /* Please have a look at the `ftgrid' demo program to see how those */ + /* variables and macros should be used. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_AUTOFIT */ + + + /*************************************************************************/ + /* */ + /* Memory Debugging */ + /* */ + /* FreeType now comes with an integrated memory debugger that is */ + /* capable of detecting simple errors like memory leaks or double */ + /* deletes. To compile it within your build of the library, you */ + /* should define FT_DEBUG_MEMORY here. */ + /* */ + /* Note that the memory debugger is only activated at runtime when */ + /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_DEBUG_MEMORY */ + + + /*************************************************************************/ + /* */ + /* Module errors */ + /* */ + /* If this macro is set (which is _not_ the default), the higher byte */ + /* of an error code gives the module in which the error has occurred, */ + /* while the lower byte is the real error code. */ + /* */ + /* Setting this macro makes sense for debugging purposes only, since */ + /* it would break source compatibility of certain programs that use */ + /* FreeType 2. */ + /* */ + /* More details can be found in the files ftmoderr.h and fterrors.h. */ + /* */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /*************************************************************************/ + /* */ + /* Position Independent Code */ + /* */ + /* If this macro is set (which is _not_ the default), FreeType2 will */ + /* avoid creating constants that require address fixups. Instead the */ + /* constants will be moved into a struct and additional intialization */ + /* code will be used. */ + /* */ + /* Setting this macro is needed for systems that prohibit address */ + /* fixups, such as BREW. */ + /* */ +/* #define FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ + /* embedded bitmaps in all formats using the SFNT module (namely */ + /* TrueType & OpenType). */ + /* */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ + /* load and enumerate the glyph Postscript names in a TrueType or */ + /* OpenType file. */ + /* */ + /* Note that when you do not compile the `PSNames' module by undefining */ + /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ + /* contain additional code used to read the PS Names table from a font. */ + /* */ + /* (By default, the module uses `PSNames' to extract glyph names.) */ + /* */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ + /* access the internal name table in a SFNT-based format like TrueType */ + /* or OpenType. The name table contains various strings used to */ + /* describe the font, like family name, copyright, version, etc. It */ + /* does not contain any glyph name though. */ + /* */ + /* Accessing SFNT names is done through the functions declared in */ + /* `ftsnames.h'. */ + /* */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /*************************************************************************/ + /* */ + /* TrueType CMap support */ + /* */ + /* Here you can fine-tune which TrueType CMap table format shall be */ + /* supported. */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ + /* a bytecode interpreter in the TrueType driver. */ + /* */ + /* By undefining this, you will only compile the code necessary to load */ + /* TrueType glyphs without hinting. */ + /* */ + /* Do not #undef this macro here, since the build system might */ + /* define it for certain configurations only. */ + /* */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ + /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ + /* replaces the native TrueType hinting mechanism when anything but */ + /* FT_RENDER_MODE_MONO is requested. */ + /* */ + /* Enabling this causes the TrueType driver to ignore instructions under */ + /* certain conditions. This is done in accordance with the guide here, */ + /* with some minor differences: */ + /* */ + /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ + /* By undefining this, you only compile the code necessary to hint */ + /* TrueType glyphs with native TT hinting. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + + + /*************************************************************************/ + /* */ + /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ + /* of the TrueType bytecode interpreter is used that doesn't implement */ + /* any of the patented opcodes and algorithms. The patents related to */ + /* TrueType hinting have expired worldwide since May 2010; this option */ + /* is now deprecated. */ + /* */ + /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ + /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ + /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ + /* */ + /* This macro is only useful for a small number of font files (mostly */ + /* for Asian scripts) that require bytecode interpretation to properly */ + /* load glyphs. For all other fonts, this produces unpleasant results, */ + /* thus the unpatented interpreter is never used to load glyphs from */ + /* TrueType fonts unless one of the following two options is used. */ + /* */ + /* - The unpatented interpreter is explicitly activated by the user */ + /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ + /* when opening the FT_Face. */ + /* */ + /* - FreeType detects that the FT_Face corresponds to one of the */ + /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ + /* contains a hard-coded list of font names and other matching */ + /* parameters (see function `tt_face_init' in file */ + /* `src/truetype/ttobjs.c'). */ + /* */ + /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* */ + /* { */ + /* FT_Parameter parameter; */ + /* FT_Open_Args open_args; */ + /* */ + /* */ + /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ + /* */ + /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ + /* open_args.pathname = my_font_pathname; */ + /* open_args.num_params = 1; */ + /* open_args.params = ¶meter; */ + /* */ + /* error = FT_Open_Face( library, &open_args, index, &face ); */ + /* ... */ + /* } */ + /* */ +/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ + /* TrueType glyph loader to use Apple's definition of how to handle */ + /* component offsets in composite glyphs. */ + /* */ + /* Apple and MS disagree on the default behavior of component offsets */ + /* in composites. Apple says that they should be scaled by the scaling */ + /* factors in the transformation matrix (roughly, it's more complex) */ + /* while MS says they should not. OpenType defines two bits in the */ + /* composite flags array which can be used to disambiguate, but old */ + /* fonts will not have them. */ + /* */ + /* http://www.microsoft.com/typography/otspec/glyf.htm */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */ + /* */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ + /* support for Apple's distortable font technology (fvar, gvar, cvar, */ + /* and avar tables). This has many similarities to Type 1 Multiple */ + /* Masters support. */ + /* */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ + /* an embedded `BDF ' table within SFNT-based bitmap formats. */ + /* */ +#define TT_CONFIG_OPTION_BDF + + + /*************************************************************************/ + /* */ + /* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum */ + /* number of bytecode instructions executed for a single run of the */ + /* bytecode interpreter, needed to prevent infinite loops. You don't */ + /* want to change this except for very special situations (e.g., making */ + /* a library fuzzer spend less time to handle broken fonts). */ + /* */ + /* It is not expected that this value is ever modified by a configuring */ + /* script; instead, it gets surrounded with #ifndef ... #endif so that */ + /* the value can be set as a preprocessor option on the compiler's */ + /* command line. */ + /* */ +#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES +#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */ + /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ + /* required. */ + /* */ +#define T1_MAX_DICT_DEPTH 5 + + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 16 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ + /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ + /* files into an existing face. Note that if set, the T1 driver will be */ + /* unable to produce kerning distances. */ + /* */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of the Multiple Masters font support in the Type 1 */ + /* driver. */ + /* */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */ + /* possible to set up the default values of the four control points that */ + /* define the stem darkening behaviour of the (new) CFF engine. For */ + /* more details please read the documentation of the */ + /* `darkening-parameters' property of the cff driver module (file */ + /* `ftcffdrv.h'), which allows the control at run-time. */ + /* */ + /* Do *not* undefine these macros! */ + /* */ +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0 + + + /*************************************************************************/ + /* */ + /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */ + /* engine gets compiled into FreeType. If defined, it is possible to */ + /* switch between the two engines using the `hinting-engine' property of */ + /* the cff driver module. */ + /* */ +/* #define CFF_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ + /* support. */ + /* */ +#define AF_CONFIG_OPTION_CJK + + /*************************************************************************/ + /* */ + /* Compile autofit module with Indic script support. */ + /* */ +#define AF_CONFIG_OPTION_INDIC + + /*************************************************************************/ + /* */ + /* Compile autofit module with warp hinting. The idea of the warping */ + /* code is to slightly scale and shift a glyph within a single dimension */ + /* so that as much of its segments are aligned (more or less) on the */ + /* grid. To find out the optimal scaling and shifting value, various */ + /* parameter combinations are tried and scored. */ + /* */ + /* This experimental option is active only if the rendering mode is */ + /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */ + /* `warping' property of the auto-hinter (see file `ftautoh.h' for more */ + /* information; by default it is switched off). */ + /* */ +#define AF_CONFIG_OPTION_USE_WARPER + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType + * version 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * This macro is defined if either unpatented or native TrueType + * hinting is requested by the definitions above. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING +#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING +#define TT_USE_BYTECODE_INTERPRETER +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set' in file `cffdrivr.c'. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + +FT_END_HEADER + + +#endif /* __FTOPTION_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/config/ftstdlib.h b/lib/osx/include/freetype/config/ftstdlib.h new file mode 100644 index 0000000..4b471d4 --- /dev/null +++ b/lib/osx/include/freetype/config/ftstdlib.h @@ -0,0 +1,174 @@ +/***************************************************************************/ +/* */ +/* ftstdlib.h */ +/* */ +/* ANSI-specific library and header configuration file (specification */ +/* only). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to group all #includes to the ANSI C library that */ + /* FreeType normally requires. It also defines macros to rename the */ + /* standard functions within the FreeType source code. */ + /* */ + /* Load a file which defines __FTSTDLIB_H__ before this one to override */ + /* it. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSTDLIB_H__ +#define __FTSTDLIB_H__ + + +#include <stddef.h> + +#define ft_ptrdiff_t ptrdiff_t + + + /**********************************************************************/ + /* */ + /* integer limits */ + /* */ + /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ + /* of `int' and `long' in bytes at compile-time. So far, this works */ + /* for all platforms the library has been tested on. */ + /* */ + /* Note that on the extremely rare platforms that do not provide */ + /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ + /* old Crays where `int' is 36 bits), we do not make any guarantee */ + /* about the correct behaviour of FT2 with all fonts. */ + /* */ + /* In these case, `ftconfig.h' will refuse to compile anyway with a */ + /* message like `couldn't find 32-bit type' or something similar. */ + /* */ + /**********************************************************************/ + + +#include <limits.h> + +#define FT_CHAR_BIT CHAR_BIT +#define FT_USHORT_MAX USHRT_MAX +#define FT_INT_MAX INT_MAX +#define FT_INT_MIN INT_MIN +#define FT_UINT_MAX UINT_MAX +#define FT_LONG_MAX LONG_MAX +#define FT_ULONG_MAX ULONG_MAX + + + /**********************************************************************/ + /* */ + /* character and string processing */ + /* */ + /**********************************************************************/ + + +#include <string.h> + +#define ft_memchr memchr +#define ft_memcmp memcmp +#define ft_memcpy memcpy +#define ft_memmove memmove +#define ft_memset memset +#define ft_strcat strcat +#define ft_strcmp strcmp +#define ft_strcpy strcpy +#define ft_strlen strlen +#define ft_strncmp strncmp +#define ft_strncpy strncpy +#define ft_strrchr strrchr +#define ft_strstr strstr + + + /**********************************************************************/ + /* */ + /* file handling */ + /* */ + /**********************************************************************/ + + +#include <stdio.h> + +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell +#define ft_sprintf sprintf + + + /**********************************************************************/ + /* */ + /* sorting */ + /* */ + /**********************************************************************/ + + +#include <stdlib.h> + +#define ft_qsort qsort + + + /**********************************************************************/ + /* */ + /* memory allocation */ + /* */ + /**********************************************************************/ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /**********************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /**********************************************************************/ + + +#define ft_atol atol + + + /**********************************************************************/ + /* */ + /* execution control */ + /* */ + /**********************************************************************/ + + +#include <setjmp.h> + +#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ + /* jmp_buf is defined as a macro */ + /* on certain platforms */ + +#define ft_longjmp longjmp +#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ + + + /* the following is only used for debugging purposes, i.e., if */ + /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ + +#include <stdarg.h> + + +#endif /* __FTSTDLIB_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/freetype.h b/lib/osx/include/freetype/freetype.h new file mode 100644 index 0000000..41379ea --- /dev/null +++ b/lib/osx/include/freetype/freetype.h @@ -0,0 +1,4284 @@ +/***************************************************************************/ +/* */ +/* freetype.h */ +/* */ +/* FreeType high-level API and common types (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FREETYPE_H__ +#define __FREETYPE_H__ + + +#ifndef FT_FREETYPE_H +#error "`ft2build.h' hasn't been included yet!" +#error "Please always use macros to include FreeType header files." +#error "Example:" +#error " #include <ft2build.h>" +#error " #include FT_FREETYPE_H" +#endif + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H +#include FT_ERRORS_H + + +FT_BEGIN_HEADER + + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* header_inclusion */ + /* */ + /* <Title> */ + /* FreeType's header inclusion scheme */ + /* */ + /* <Abstract> */ + /* How client applications should include FreeType header files. */ + /* */ + /* <Description> */ + /* To be as flexible as possible (and for historical reasons), */ + /* FreeType uses a very special inclusion scheme to load header */ + /* files, for example */ + /* */ + /* { */ + /* #include <ft2build.h> */ + /* */ + /* #include FT_FREETYPE_H */ + /* #include FT_OUTLINE_H */ + /* } */ + /* */ + /* A compiler and its preprocessor only needs an include path to find */ + /* the file `ft2build.h'; the exact locations and names of the other */ + /* FreeType header files are hidden by preprocessor macro names, */ + /* loaded by `ft2build.h'. The API documentation always gives the */ + /* header macro name needed for a particular function. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* user_allocation */ + /* */ + /* <Title> */ + /* User allocation */ + /* */ + /* <Abstract> */ + /* How client applications should allocate FreeType data structures. */ + /* */ + /* <Description> */ + /* FreeType assumes that structures allocated by the user and passed */ + /* as arguments are zeroed out except for the actual data. In other */ + /* words, it is recommended to use `calloc' (or variants of it) */ + /* instead of `malloc' for allocation. */ + /* */ + /*************************************************************************/ + + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S I C T Y P E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /* <Title> */ + /* Base Interface */ + /* */ + /* <Abstract> */ + /* The FreeType~2 base font interface. */ + /* */ + /* <Description> */ + /* This section describes the most important public high-level API */ + /* functions of FreeType~2. */ + /* */ + /* <Order> */ + /* FT_Library */ + /* FT_Face */ + /* FT_Size */ + /* FT_GlyphSlot */ + /* FT_CharMap */ + /* FT_Encoding */ + /* FT_ENC_TAG */ + /* */ + /* FT_FaceRec */ + /* */ + /* FT_FACE_FLAG_SCALABLE */ + /* FT_FACE_FLAG_FIXED_SIZES */ + /* FT_FACE_FLAG_FIXED_WIDTH */ + /* FT_FACE_FLAG_HORIZONTAL */ + /* FT_FACE_FLAG_VERTICAL */ + /* FT_FACE_FLAG_COLOR */ + /* FT_FACE_FLAG_SFNT */ + /* FT_FACE_FLAG_CID_KEYED */ + /* FT_FACE_FLAG_TRICKY */ + /* FT_FACE_FLAG_KERNING */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS */ + /* FT_FACE_FLAG_GLYPH_NAMES */ + /* FT_FACE_FLAG_EXTERNAL_STREAM */ + /* FT_FACE_FLAG_HINTER */ + /* FT_FACE_FLAG_TRICKY */ + /* */ + /* FT_HAS_HORIZONTAL */ + /* FT_HAS_VERTICAL */ + /* FT_HAS_KERNING */ + /* FT_HAS_FIXED_SIZES */ + /* FT_HAS_GLYPH_NAMES */ + /* FT_HAS_MULTIPLE_MASTERS */ + /* FT_HAS_COLOR */ + /* */ + /* FT_IS_SFNT */ + /* FT_IS_SCALABLE */ + /* FT_IS_FIXED_WIDTH */ + /* FT_IS_CID_KEYED */ + /* FT_IS_TRICKY */ + /* */ + /* FT_STYLE_FLAG_BOLD */ + /* FT_STYLE_FLAG_ITALIC */ + /* */ + /* FT_SizeRec */ + /* FT_Size_Metrics */ + /* */ + /* FT_GlyphSlotRec */ + /* FT_Glyph_Metrics */ + /* FT_SubGlyph */ + /* */ + /* FT_Bitmap_Size */ + /* */ + /* FT_Init_FreeType */ + /* FT_Done_FreeType */ + /* */ + /* FT_New_Face */ + /* FT_Done_Face */ + /* FT_Reference_Face */ + /* FT_New_Memory_Face */ + /* FT_Open_Face */ + /* FT_Open_Args */ + /* FT_Parameter */ + /* FT_Attach_File */ + /* FT_Attach_Stream */ + /* */ + /* FT_Set_Char_Size */ + /* FT_Set_Pixel_Sizes */ + /* FT_Request_Size */ + /* FT_Select_Size */ + /* FT_Size_Request_Type */ + /* FT_Size_RequestRec */ + /* FT_Size_Request */ + /* FT_Set_Transform */ + /* FT_Load_Glyph */ + /* FT_Get_Char_Index */ + /* FT_Get_First_Char */ + /* FT_Get_Next_Char */ + /* FT_Get_Name_Index */ + /* FT_Load_Char */ + /* */ + /* FT_OPEN_MEMORY */ + /* FT_OPEN_STREAM */ + /* FT_OPEN_PATHNAME */ + /* FT_OPEN_DRIVER */ + /* FT_OPEN_PARAMS */ + /* */ + /* FT_LOAD_DEFAULT */ + /* FT_LOAD_RENDER */ + /* FT_LOAD_MONOCHROME */ + /* FT_LOAD_LINEAR_DESIGN */ + /* FT_LOAD_NO_SCALE */ + /* FT_LOAD_NO_HINTING */ + /* FT_LOAD_NO_BITMAP */ + /* FT_LOAD_NO_AUTOHINT */ + /* FT_LOAD_COLOR */ + /* */ + /* FT_LOAD_VERTICAL_LAYOUT */ + /* FT_LOAD_IGNORE_TRANSFORM */ + /* FT_LOAD_FORCE_AUTOHINT */ + /* FT_LOAD_NO_RECURSE */ + /* FT_LOAD_PEDANTIC */ + /* */ + /* FT_LOAD_TARGET_NORMAL */ + /* FT_LOAD_TARGET_LIGHT */ + /* FT_LOAD_TARGET_MONO */ + /* FT_LOAD_TARGET_LCD */ + /* FT_LOAD_TARGET_LCD_V */ + /* */ + /* FT_LOAD_TARGET_MODE */ + /* */ + /* FT_Render_Glyph */ + /* FT_Render_Mode */ + /* FT_Get_Kerning */ + /* FT_Kerning_Mode */ + /* FT_Get_Track_Kerning */ + /* FT_Get_Glyph_Name */ + /* FT_Get_Postscript_Name */ + /* */ + /* FT_CharMapRec */ + /* FT_Select_Charmap */ + /* FT_Set_Charmap */ + /* FT_Get_Charmap_Index */ + /* */ + /* FT_Get_FSType_Flags */ + /* FT_Get_SubGlyph_Info */ + /* */ + /* FT_Face_Internal */ + /* FT_Size_Internal */ + /* FT_Slot_Internal */ + /* */ + /* FT_FACE_FLAG_XXX */ + /* FT_STYLE_FLAG_XXX */ + /* FT_OPEN_XXX */ + /* FT_LOAD_XXX */ + /* FT_LOAD_TARGET_XXX */ + /* FT_SUBGLYPH_FLAG_XXX */ + /* FT_FSTYPE_XXX */ + /* */ + /* FT_HAS_FAST_GLYPHS */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Glyph_Metrics */ + /* */ + /* <Description> */ + /* A structure used to model the metrics of a single glyph. The */ + /* values are expressed in 26.6 fractional pixel format; if the flag */ + /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ + /* are expressed in font units instead. */ + /* */ + /* <Fields> */ + /* width :: */ + /* The glyph's width. */ + /* */ + /* height :: */ + /* The glyph's height. */ + /* */ + /* horiBearingX :: */ + /* Left side bearing for horizontal layout. */ + /* */ + /* horiBearingY :: */ + /* Top side bearing for horizontal layout. */ + /* */ + /* horiAdvance :: */ + /* Advance width for horizontal layout. */ + /* */ + /* vertBearingX :: */ + /* Left side bearing for vertical layout. */ + /* */ + /* vertBearingY :: */ + /* Top side bearing for vertical layout. Larger positive values */ + /* mean further below the vertical glyph origin. */ + /* */ + /* vertAdvance :: */ + /* Advance height for vertical layout. Positive values mean the */ + /* glyph has a positive advance downward. */ + /* */ + /* <Note> */ + /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ + /* dimensions of the hinted glyph (in case hinting is applicable). */ + /* */ + /* Stroking a glyph with an outside border does not increase */ + /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ + /* values to account for the added width and height. */ + /* */ + typedef struct FT_Glyph_Metrics_ + { + FT_Pos width; + FT_Pos height; + + FT_Pos horiBearingX; + FT_Pos horiBearingY; + FT_Pos horiAdvance; + + FT_Pos vertBearingX; + FT_Pos vertBearingY; + FT_Pos vertAdvance; + + } FT_Glyph_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap_Size */ + /* */ + /* <Description> */ + /* This structure models the metrics of a bitmap strike (i.e., a set */ + /* of glyphs for a given point size and resolution) in a bitmap font. */ + /* It is used for the `available_sizes' field of @FT_Face. */ + /* */ + /* <Fields> */ + /* height :: The vertical distance, in pixels, between two */ + /* consecutive baselines. It is always positive. */ + /* */ + /* width :: The average width, in pixels, of all glyphs in the */ + /* strike. */ + /* */ + /* size :: The nominal size of the strike in 26.6 fractional */ + /* points. This field is not very useful. */ + /* */ + /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ + /* pixels. */ + /* */ + /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ + /* pixels. */ + /* */ + /* <Note> */ + /* Windows FNT: */ + /* The nominal size given in a FNT font is not reliable. Thus when */ + /* the driver finds it incorrect, it sets `size' to some calculated */ + /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ + /* height given in the font, respectively. */ + /* */ + /* TrueType embedded bitmaps: */ + /* `size', `width', and `height' values are not contained in the */ + /* bitmap strike itself. They are computed from the global font */ + /* parameters. */ + /* */ + typedef struct FT_Bitmap_Size_ + { + FT_Short height; + FT_Short width; + + FT_Pos size; + + FT_Pos x_ppem; + FT_Pos y_ppem; + + } FT_Bitmap_Size; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Library */ + /* */ + /* <Description> */ + /* A handle to a FreeType library instance. Each `library' is */ + /* completely independent from the others; it is the `root' of a set */ + /* of objects like fonts, faces, sizes, etc. */ + /* */ + /* It also embeds a memory manager (see @FT_Memory), as well as a */ + /* scan-line converter object (see @FT_Raster). */ + /* */ + /* In multi-threaded applications it is easiest to use one */ + /* `FT_Library' object per thread. In case this is too cumbersome, */ + /* a single `FT_Library' object across threads is possible also */ + /* (since FreeType version 2.5.6), as long as a mutex lock is used */ + /* around @FT_New_Face and @FT_Done_Face. */ + /* */ + /* <Note> */ + /* Library objects are normally created by @FT_Init_FreeType, and */ + /* destroyed with @FT_Done_FreeType. If you need reference-counting */ + /* (cf. @FT_Reference_Library), use @FT_New_Library and */ + /* @FT_Done_Library. */ + /* */ + typedef struct FT_LibraryRec_ *FT_Library; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Module */ + /* */ + /* <Description> */ + /* A handle to a given FreeType module object. Each module can be a */ + /* font driver, a renderer, or anything else that provides services */ + /* to the formers. */ + /* */ + typedef struct FT_ModuleRec_* FT_Module; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Driver */ + /* */ + /* <Description> */ + /* A handle to a given FreeType font driver object. Each font driver */ + /* is a special module capable of creating faces from font files. */ + /* */ + typedef struct FT_DriverRec_* FT_Driver; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Renderer */ + /* */ + /* <Description> */ + /* A handle to a given FreeType renderer. A renderer is a special */ + /* module in charge of converting a glyph image to a bitmap, when */ + /* necessary. Each renderer supports a given glyph image format, and */ + /* one or more target surface depths. */ + /* */ + typedef struct FT_RendererRec_* FT_Renderer; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face */ + /* */ + /* <Description> */ + /* A handle to a given typographic face object. A face object models */ + /* a given typeface, in a given style. */ + /* */ + /* <Note> */ + /* Each face object also owns a single @FT_GlyphSlot object, as well */ + /* as one or more @FT_Size objects. */ + /* */ + /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ + /* a given filepathname or a custom input stream. */ + /* */ + /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ + /* */ + /* An `FT_Face' object can only be safely used from one thread at a */ + /* time. Similarly, creation and destruction of `FT_Face' with the */ + /* same @FT_Library object can only be done from one thread at a */ + /* time. On the other hand, functions like @FT_Load_Glyph and its */ + /* siblings are thread-safe and do not need the lock to be held as */ + /* long as the same `FT_Face' object is not used from multiple */ + /* threads at the same time. */ + /* */ + /* <Also> */ + /* See @FT_FaceRec for the publicly accessible fields of a given face */ + /* object. */ + /* */ + typedef struct FT_FaceRec_* FT_Face; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size */ + /* */ + /* <Description> */ + /* A handle to an object used to model a face scaled to a given */ + /* character size. */ + /* */ + /* <Note> */ + /* Each @FT_Face has an _active_ @FT_Size object that is used by */ + /* functions like @FT_Load_Glyph to determine the scaling */ + /* transformation that in turn is used to load and hint glyphs and */ + /* metrics. */ + /* */ + /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ + /* @FT_Request_Size or even @FT_Select_Size to change the content */ + /* (i.e., the scaling values) of the active @FT_Size. */ + /* */ + /* You can use @FT_New_Size to create additional size objects for a */ + /* given @FT_Face, but they won't be used by other functions until */ + /* you activate it through @FT_Activate_Size. Only one size can be */ + /* activated at any given time per face. */ + /* */ + /* <Also> */ + /* See @FT_SizeRec for the publicly accessible fields of a given size */ + /* object. */ + /* */ + typedef struct FT_SizeRec_* FT_Size; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_GlyphSlot */ + /* */ + /* <Description> */ + /* A handle to a given `glyph slot'. A slot is a container where it */ + /* is possible to load any of the glyphs contained in its parent */ + /* face. */ + /* */ + /* In other words, each time you call @FT_Load_Glyph or */ + /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ + /* i.e., the glyph's metrics, its image (bitmap or outline), and */ + /* other control information. */ + /* */ + /* <Also> */ + /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ + /* */ + typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_CharMap */ + /* */ + /* <Description> */ + /* A handle to a given character map. A charmap is used to translate */ + /* character codes in a given encoding into glyph indexes for its */ + /* parent's face. Some font formats may provide several charmaps per */ + /* font. */ + /* */ + /* Each face object owns zero or more charmaps, but only one of them */ + /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ + /* */ + /* The list of available charmaps in a face is available through the */ + /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ + /* */ + /* The currently active charmap is available as `face->charmap'. */ + /* You should call @FT_Set_Charmap to change it. */ + /* */ + /* <Note> */ + /* When a new face is created (either through @FT_New_Face or */ + /* @FT_Open_Face), the library looks for a Unicode charmap within */ + /* the list and automatically activates it. */ + /* */ + /* <Also> */ + /* See @FT_CharMapRec for the publicly accessible fields of a given */ + /* character map. */ + /* */ + typedef struct FT_CharMapRec_* FT_CharMap; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_ENC_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags into an unsigned long. It is */ + /* used to define `encoding' identifiers (see @FT_Encoding). */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_ENC_TAG( value, a, b, c, d ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) \ + value = ( ( (FT_UInt32)(a) << 24 ) | \ + ( (FT_UInt32)(b) << 16 ) | \ + ( (FT_UInt32)(c) << 8 ) | \ + (FT_UInt32)(d) ) + +#endif /* FT_ENC_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Encoding */ + /* */ + /* <Description> */ + /* An enumeration used to specify character sets supported by */ + /* charmaps. Used in the @FT_Select_Charmap API function. */ + /* */ + /* <Note> */ + /* Despite the name, this enumeration lists specific character */ + /* repertories (i.e., charsets), and not text encoding methods (e.g., */ + /* UTF-8, UTF-16, etc.). */ + /* */ + /* Other encodings might be defined in the future. */ + /* */ + /* <Values> */ + /* FT_ENCODING_NONE :: */ + /* The encoding value~0 is reserved. */ + /* */ + /* FT_ENCODING_UNICODE :: */ + /* Corresponds to the Unicode character set. This value covers */ + /* all versions of the Unicode repertoire, including ASCII and */ + /* Latin-1. Most fonts include a Unicode charmap, but not all */ + /* of them. */ + /* */ + /* For example, if you want to access Unicode value U+1F028 (and */ + /* the font contains it), use value 0x1F028 as the input value for */ + /* @FT_Get_Char_Index. */ + /* */ + /* FT_ENCODING_MS_SYMBOL :: */ + /* Corresponds to the Microsoft Symbol encoding, used to encode */ + /* mathematical symbols and wingdings. For more information, see */ + /* `http://www.microsoft.com/typography/otspec/recom.htm', */ + /* `http://www.kostis.net/charsets/symbol.htm', and */ + /* `http://www.kostis.net/charsets/wingding.htm'. */ + /* */ + /* This encoding uses character codes from the PUA (Private Unicode */ + /* Area) in the range U+F020-U+F0FF. */ + /* */ + /* FT_ENCODING_SJIS :: */ + /* Corresponds to Japanese SJIS encoding. More info at */ + /* at `http://en.wikipedia.org/wiki/Shift_JIS'. */ + /* See note on multi-byte encodings below. */ + /* */ + /* FT_ENCODING_GB2312 :: */ + /* Corresponds to an encoding system for Simplified Chinese as used */ + /* used in mainland China. */ + /* */ + /* FT_ENCODING_BIG5 :: */ + /* Corresponds to an encoding system for Traditional Chinese as */ + /* used in Taiwan and Hong Kong. */ + /* */ + /* FT_ENCODING_WANSUNG :: */ + /* Corresponds to the Korean encoding system known as Wansung. */ + /* For more information see */ + /* `https://msdn.microsoft.com/en-US/goglobal/cc305154'. */ + /* */ + /* FT_ENCODING_JOHAB :: */ + /* The Korean standard character set (KS~C 5601-1992), which */ + /* corresponds to MS Windows code page 1361. This character set */ + /* includes all possible Hangeul character combinations. */ + /* */ + /* FT_ENCODING_ADOBE_LATIN_1 :: */ + /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ + /* PostScript font. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_ADOBE_STANDARD :: */ + /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_EXPERT :: */ + /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_CUSTOM :: */ + /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ + /* OpenType/CFF fonts. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_APPLE_ROMAN :: */ + /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ + /* and OpenType fonts contain a charmap for this encoding, since */ + /* older versions of Mac OS are able to use it. */ + /* */ + /* FT_ENCODING_OLD_LATIN_2 :: */ + /* This value is deprecated and was never used nor reported by */ + /* FreeType. Don't use or test for it. */ + /* */ + /* FT_ENCODING_MS_SJIS :: */ + /* Same as FT_ENCODING_SJIS. Deprecated. */ + /* */ + /* FT_ENCODING_MS_GB2312 :: */ + /* Same as FT_ENCODING_GB2312. Deprecated. */ + /* */ + /* FT_ENCODING_MS_BIG5 :: */ + /* Same as FT_ENCODING_BIG5. Deprecated. */ + /* */ + /* FT_ENCODING_MS_WANSUNG :: */ + /* Same as FT_ENCODING_WANSUNG. Deprecated. */ + /* */ + /* FT_ENCODING_MS_JOHAB :: */ + /* Same as FT_ENCODING_JOHAB. Deprecated. */ + /* */ + /* <Note> */ + /* By default, FreeType automatically synthesizes a Unicode charmap */ + /* for PostScript fonts, using their glyph names dictionaries. */ + /* However, it also reports the encodings defined explicitly in the */ + /* font file, for the cases when they are needed, with the Adobe */ + /* values as well. */ + /* */ + /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ + /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ + /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ + /* which encoding is really present. If, for example, the */ + /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ + /* the font is encoded in KOI8-R. */ + /* */ + /* FT_ENCODING_NONE is always set (with a single exception) by the */ + /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ + /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ + /* which encoding is really present. For example, */ + /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ + /* Russian). */ + /* */ + /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ + /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ + /* FT_ENCODING_APPLE_ROMAN). */ + /* */ + /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ + /* @FT_Get_CMap_Language_ID to query the Mac language ID that may */ + /* be needed to be able to distinguish Apple encoding variants. See */ + /* */ + /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt */ + /* */ + /* to get an idea how to do that. Basically, if the language ID */ + /* is~0, don't use it, otherwise subtract 1 from the language ID. */ + /* Then examine `encoding_id'. If, for example, `encoding_id' is */ + /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ + /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ + /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ + /* variant the Arabic encoding. */ + /* */ + typedef enum FT_Encoding_ + { + FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), + + FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), + + FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), + FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), + + /* for backwards compatibility */ + FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, + FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, + FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, + FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, + FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, + + FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), + + FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), + + FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) + + } FT_Encoding; + + + /* these constants are deprecated; use the corresponding `FT_Encoding' */ + /* values instead */ +#define ft_encoding_none FT_ENCODING_NONE +#define ft_encoding_unicode FT_ENCODING_UNICODE +#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL +#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 +#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 +#define ft_encoding_sjis FT_ENCODING_SJIS +#define ft_encoding_gb2312 FT_ENCODING_GB2312 +#define ft_encoding_big5 FT_ENCODING_BIG5 +#define ft_encoding_wansung FT_ENCODING_WANSUNG +#define ft_encoding_johab FT_ENCODING_JOHAB + +#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD +#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT +#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM +#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_CharMapRec */ + /* */ + /* <Description> */ + /* The base charmap structure. */ + /* */ + /* <Fields> */ + /* face :: A handle to the parent face object. */ + /* */ + /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ + /* this with @FT_Select_Charmap. */ + /* */ + /* platform_id :: An ID number describing the platform for the */ + /* following encoding ID. This comes directly from */ + /* the TrueType specification and should be emulated */ + /* for other formats. */ + /* */ + /* encoding_id :: A platform specific encoding number. This also */ + /* comes from the TrueType specification and should be */ + /* emulated similarly. */ + /* */ + typedef struct FT_CharMapRec_ + { + FT_Face face; + FT_Encoding encoding; + FT_UShort platform_id; + FT_UShort encoding_id; + + } FT_CharMapRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S E O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ + /* model private data of a given @FT_Face object. */ + /* */ + /* This structure might change between releases of FreeType~2 and is */ + /* not generally available to client applications. */ + /* */ + typedef struct FT_Face_InternalRec_* FT_Face_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_FaceRec */ + /* */ + /* <Description> */ + /* FreeType root face class structure. A face object models a */ + /* typeface in a font file. */ + /* */ + /* <Fields> */ + /* num_faces :: The number of faces in the font file. Some */ + /* font formats can have multiple faces in */ + /* a font file. */ + /* */ + /* face_index :: This field holds two different values. */ + /* Bits 0-15 are the index of the face in the */ + /* font file (starting with value~0). They */ + /* are set to~0 if there is only one face in */ + /* the font file. */ + /* */ + /* Bits 16-30 are relevant to GX variation */ + /* fonts only, holding the named instance */ + /* index for the current face index (starting */ + /* with value~1; value~0 indicates font access */ + /* without GX variation data). For non-GX */ + /* fonts, bits 16-30 are ignored. If we have */ + /* the third named instance of face~4, say, */ + /* `face_index' is set to 0x00030004. */ + /* */ + /* Bit 31 is always zero (this is, */ + /* `face_index' is always a positive value). */ + /* */ + /* face_flags :: A set of bit flags that give important */ + /* information about the face; see */ + /* @FT_FACE_FLAG_XXX for the details. */ + /* */ + /* style_flags :: The lower 16~bits contain a set of bit */ + /* flags indicating the style of the face; see */ + /* @FT_STYLE_FLAG_XXX for the details. Bits */ + /* 16-30 hold the number of named instances */ + /* available for the current face if we have a */ + /* GX variation (sub)font. Bit 31 is always */ + /* zero (this is, `style_flags' is always a */ + /* positive value). */ + /* */ + /* num_glyphs :: The number of glyphs in the face. If the */ + /* face is scalable and has sbits (see */ + /* `num_fixed_sizes'), it is set to the number */ + /* of outline glyphs. */ + /* */ + /* For CID-keyed fonts, this value gives the */ + /* highest CID used in the font. */ + /* */ + /* family_name :: The face's family name. This is an ASCII */ + /* string, usually in English, that describes */ + /* the typeface's family (like `Times New */ + /* Roman', `Bodoni', `Garamond', etc). This */ + /* is a least common denominator used to list */ + /* fonts. Some formats (TrueType & OpenType) */ + /* provide localized and Unicode versions of */ + /* this string. Applications should use the */ + /* format specific interface to access them. */ + /* Can be NULL (e.g., in fonts embedded in a */ + /* PDF file). */ + /* */ + /* In case the font doesn't provide a specific */ + /* family name entry, FreeType tries to */ + /* synthesize one, deriving it from other name */ + /* entries. */ + /* */ + /* style_name :: The face's style name. This is an ASCII */ + /* string, usually in English, that describes */ + /* the typeface's style (like `Italic', */ + /* `Bold', `Condensed', etc). Not all font */ + /* formats provide a style name, so this field */ + /* is optional, and can be set to NULL. As */ + /* for `family_name', some formats provide */ + /* localized and Unicode versions of this */ + /* string. Applications should use the format */ + /* specific interface to access them. */ + /* */ + /* num_fixed_sizes :: The number of bitmap strikes in the face. */ + /* Even if the face is scalable, there might */ + /* still be bitmap strikes, which are called */ + /* `sbits' in that case. */ + /* */ + /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ + /* strikes in the face. It is set to NULL if */ + /* there is no bitmap strike. */ + /* */ + /* num_charmaps :: The number of charmaps in the face. */ + /* */ + /* charmaps :: An array of the charmaps of the face. */ + /* */ + /* generic :: A field reserved for client uses. See the */ + /* @FT_Generic type description. */ + /* */ + /* bbox :: The font bounding box. Coordinates are */ + /* expressed in font units (see */ + /* `units_per_EM'). The box is large enough */ + /* to contain any glyph from the font. Thus, */ + /* `bbox.yMax' can be seen as the `maximum */ + /* ascender', and `bbox.yMin' as the `minimum */ + /* descender'. Only relevant for scalable */ + /* formats. */ + /* */ + /* Note that the bounding box might be off by */ + /* (at least) one pixel for hinted fonts. See */ + /* @FT_Size_Metrics for further discussion. */ + /* */ + /* units_per_EM :: The number of font units per EM square for */ + /* this face. This is typically 2048 for */ + /* TrueType fonts, and 1000 for Type~1 fonts. */ + /* Only relevant for scalable formats. */ + /* */ + /* ascender :: The typographic ascender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMax'. Only relevant for scalable */ + /* formats. */ + /* */ + /* descender :: The typographic descender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMin'. Note that this field is */ + /* usually negative. Only relevant for */ + /* scalable formats. */ + /* */ + /* height :: This value is the vertical distance */ + /* between two consecutive baselines, */ + /* expressed in font units. It is always */ + /* positive. Only relevant for scalable */ + /* formats. */ + /* */ + /* If you want the global glyph height, use */ + /* `ascender - descender'. */ + /* */ + /* max_advance_width :: The maximum advance width, in font units, */ + /* for all glyphs in this face. This can be */ + /* used to make word wrapping computations */ + /* faster. Only relevant for scalable */ + /* formats. */ + /* */ + /* max_advance_height :: The maximum advance height, in font units, */ + /* for all glyphs in this face. This is only */ + /* relevant for vertical layouts, and is set */ + /* to `height' for fonts that do not provide */ + /* vertical metrics. Only relevant for */ + /* scalable formats. */ + /* */ + /* underline_position :: The position, in font units, of the */ + /* underline line for this face. It is the */ + /* center of the underlining stem. Only */ + /* relevant for scalable formats. */ + /* */ + /* underline_thickness :: The thickness, in font units, of the */ + /* underline for this face. Only relevant for */ + /* scalable formats. */ + /* */ + /* glyph :: The face's associated glyph slot(s). */ + /* */ + /* size :: The current active size for this face. */ + /* */ + /* charmap :: The current active charmap for this face. */ + /* */ + /* <Note> */ + /* Fields may be changed after a call to @FT_Attach_File or */ + /* @FT_Attach_Stream. */ + /* */ + typedef struct FT_FaceRec_ + { + FT_Long num_faces; + FT_Long face_index; + + FT_Long face_flags; + FT_Long style_flags; + + FT_Long num_glyphs; + + FT_String* family_name; + FT_String* style_name; + + FT_Int num_fixed_sizes; + FT_Bitmap_Size* available_sizes; + + FT_Int num_charmaps; + FT_CharMap* charmaps; + + FT_Generic generic; + + /*# The following member variables (down to `underline_thickness') */ + /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ + /*# for bitmap fonts. */ + FT_BBox bbox; + + FT_UShort units_per_EM; + FT_Short ascender; + FT_Short descender; + FT_Short height; + + FT_Short max_advance_width; + FT_Short max_advance_height; + + FT_Short underline_position; + FT_Short underline_thickness; + + FT_GlyphSlot glyph; + FT_Size size; + FT_CharMap charmap; + + /*@private begin */ + + FT_Driver driver; + FT_Memory memory; + FT_Stream stream; + + FT_ListRec sizes_list; + + FT_Generic autohint; /* face-specific auto-hinter data */ + void* extensions; /* unused */ + + FT_Face_Internal internal; + + /*@private end */ + + } FT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FACE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `face_flags' field of the */ + /* @FT_FaceRec structure. They inform client applications of */ + /* properties of the corresponding face. */ + /* */ + /* <Values> */ + /* FT_FACE_FLAG_SCALABLE :: */ + /* Indicates that the face contains outline glyphs. This doesn't */ + /* prevent bitmap strikes, i.e., a face can have both this and */ + /* and @FT_FACE_FLAG_FIXED_SIZES set. */ + /* */ + /* FT_FACE_FLAG_FIXED_SIZES :: */ + /* Indicates that the face contains bitmap strikes. See also the */ + /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ + /* */ + /* FT_FACE_FLAG_FIXED_WIDTH :: */ + /* Indicates that the face contains fixed-width characters (like */ + /* Courier, Lucido, MonoType, etc.). */ + /* */ + /* FT_FACE_FLAG_SFNT :: */ + /* Indicates that the face uses the `sfnt' storage scheme. For */ + /* now, this means TrueType and OpenType. */ + /* */ + /* FT_FACE_FLAG_HORIZONTAL :: */ + /* Indicates that the face contains horizontal glyph metrics. This */ + /* should be set for all common formats. */ + /* */ + /* FT_FACE_FLAG_VERTICAL :: */ + /* Indicates that the face contains vertical glyph metrics. This */ + /* is only available in some formats, not all of them. */ + /* */ + /* FT_FACE_FLAG_KERNING :: */ + /* Indicates that the face contains kerning information. If set, */ + /* the kerning distance can be retrieved through the function */ + /* @FT_Get_Kerning. Otherwise the function always return the */ + /* vector (0,0). Note that FreeType doesn't handle kerning data */ + /* from the `GPOS' table (as present in some OpenType fonts). */ + /* */ + /* FT_FACE_FLAG_FAST_GLYPHS :: */ + /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ + /* */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ + /* Indicates that the font contains multiple masters and is capable */ + /* of interpolating between them. See the multiple-masters */ + /* specific API for details. */ + /* */ + /* FT_FACE_FLAG_GLYPH_NAMES :: */ + /* Indicates that the font contains glyph names that can be */ + /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ + /* fonts contain broken glyph name tables. Use the function */ + /* @FT_Has_PS_Glyph_Names when needed. */ + /* */ + /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ + /* Used internally by FreeType to indicate that a face's stream was */ + /* provided by the client application and should not be destroyed */ + /* when @FT_Done_Face is called. Don't read or test this flag. */ + /* */ + /* FT_FACE_FLAG_HINTER :: */ + /* Set if the font driver has a hinting machine of its own. For */ + /* example, with TrueType fonts, it makes sense to use data from */ + /* the SFNT `gasp' table only if the native TrueType hinting engine */ + /* (with the bytecode interpreter) is available and active. */ + /* */ + /* FT_FACE_FLAG_CID_KEYED :: */ + /* Set if the font is CID-keyed. In that case, the font is not */ + /* accessed by glyph indices but by CID values. For subsetted */ + /* CID-keyed fonts this has the consequence that not all index */ + /* values are a valid argument to FT_Load_Glyph. Only the CID */ + /* values for which corresponding glyphs in the subsetted font */ + /* exist make FT_Load_Glyph return successfully; in all other cases */ + /* you get an `FT_Err_Invalid_Argument' error. */ + /* */ + /* Note that CID-keyed fonts that are in an SFNT wrapper don't */ + /* have this flag set since the glyphs are accessed in the normal */ + /* way (using contiguous indices); the `CID-ness' isn't visible to */ + /* the application. */ + /* */ + /* FT_FACE_FLAG_TRICKY :: */ + /* Set if the font is `tricky', this is, it always needs the */ + /* font format's native hinting engine to get a reasonable result. */ + /* A typical example is the Chinese font `mingli.ttf' that uses */ + /* TrueType bytecode instructions to move and scale all of its */ + /* subglyphs. */ + /* */ + /* It is not possible to auto-hint such fonts using */ + /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ + /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ + /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ + /* probably never want this except for demonstration purposes. */ + /* */ + /* Currently, there are about a dozen TrueType fonts in the list of */ + /* tricky fonts; they are hard-coded in file `ttobjs.c'. */ + /* */ + /* FT_FACE_FLAG_COLOR :: */ + /* Set if the font has color glyph tables. To access color glyphs */ + /* use @FT_LOAD_COLOR. */ + /* */ +#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) +#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) +#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) +#define FT_FACE_FLAG_SFNT ( 1L << 3 ) +#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) +#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) +#define FT_FACE_FLAG_KERNING ( 1L << 6 ) +#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) +#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) +#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) +#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) +#define FT_FACE_FLAG_HINTER ( 1L << 11 ) +#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) +#define FT_FACE_FLAG_COLOR ( 1L << 14 ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_HORIZONTAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * horizontal metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ +#define FT_HAS_HORIZONTAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_VERTICAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains real + * vertical metrics (and not only synthesized ones). + * + */ +#define FT_HAS_VERTICAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_KERNING( face ) + * + * @description: + * A macro that returns true whenever a face object contains kerning + * data that can be accessed with @FT_Get_Kerning. + * + */ +#define FT_HAS_KERNING( face ) \ + ( face->face_flags & FT_FACE_FLAG_KERNING ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SCALABLE( face ) + * + * @description: + * A macro that returns true whenever a face object contains a scalable + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, + * and PFR font formats. + * + */ +#define FT_IS_SCALABLE( face ) \ + ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SFNT( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font + * whose format is based on the SFNT storage scheme. This usually + * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded + * bitmap fonts. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ +#define FT_IS_SFNT( face ) \ + ( face->face_flags & FT_FACE_FLAG_SFNT ) + + + /************************************************************************* + * + * @macro: + * FT_IS_FIXED_WIDTH( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or `monospace', `fixed-pitch', etc.) + * glyphs. + * + */ +#define FT_IS_FIXED_WIDTH( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FIXED_SIZES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes' field of the + * @FT_FaceRec structure. + * + */ +#define FT_HAS_FIXED_SIZES( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FAST_GLYPHS( face ) + * + * @description: + * Deprecated. + * + */ +#define FT_HAS_FAST_GLYPHS( face ) 0 + + + /************************************************************************* + * + * @macro: + * FT_HAS_GLYPH_NAMES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ +#define FT_HAS_GLYPH_NAMES( face ) \ + ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ +#define FT_HAS_MULTIPLE_MASTERS( face ) \ + ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + + + /************************************************************************* + * + * @macro: + * FT_IS_CID_KEYED( face ) + * + * @description: + * A macro that returns true whenever a face object contains a CID-keyed + * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more + * details. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ +#define FT_IS_CID_KEYED( face ) \ + ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + + + /************************************************************************* + * + * @macro: + * FT_IS_TRICKY( face ) + * + * @description: + * A macro that returns true whenever a face represents a `tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( face->face_flags & FT_FACE_FLAG_TRICKY ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_COLOR( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * tables for color glyphs. + * + */ +#define FT_HAS_COLOR( face ) \ + ( face->face_flags & FT_FACE_FLAG_COLOR ) + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_STYLE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used to indicate the style of a given face. */ + /* These are used in the `style_flags' field of @FT_FaceRec. */ + /* */ + /* <Values> */ + /* FT_STYLE_FLAG_ITALIC :: */ + /* Indicates that a given face style is italic or oblique. */ + /* */ + /* FT_STYLE_FLAG_BOLD :: */ + /* Indicates that a given face is bold. */ + /* */ + /* <Note> */ + /* The style information as provided by FreeType is very basic. More */ + /* details are beyond the scope and should be done on a higher level */ + /* (for example, by analyzing various fields of the `OS/2' table in */ + /* SFNT based fonts). */ + /* */ +#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) +#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ + /* model private data of a given @FT_Size object. */ + /* */ + typedef struct FT_Size_InternalRec_* FT_Size_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Metrics */ + /* */ + /* <Description> */ + /* The size metrics structure gives the metrics of a size object. */ + /* */ + /* <Fields> */ + /* x_ppem :: The width of the scaled EM square in pixels, hence */ + /* the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal width'. */ + /* */ + /* y_ppem :: The height of the scaled EM square in pixels, */ + /* hence the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal height'. */ + /* */ + /* x_scale :: A 16.16 fractional scaling value used to convert */ + /* horizontal metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* y_scale :: A 16.16 fractional scaling value used to convert */ + /* vertical metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* ascender :: The ascender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* descender :: The descender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* height :: The height in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* max_advance :: The maximum advance width in 26.6 fractional */ + /* pixels. See @FT_FaceRec for the details. */ + /* */ + /* <Note> */ + /* The scaling values, if relevant, are determined first during a */ + /* size changing operation. The remaining fields are then set by the */ + /* driver. For scalable formats, they are usually set to scaled */ + /* values of the corresponding fields in @FT_FaceRec. */ + /* */ + /* Note that due to glyph hinting, these values might not be exact */ + /* for certain fonts. Thus they must be treated as unreliable */ + /* with an error margin of at least one pixel! */ + /* */ + /* Indeed, the only way to get the exact metrics is to render _all_ */ + /* glyphs. As this would be a definite performance hit, it is up to */ + /* client applications to perform such computations. */ + /* */ + /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ + /* */ + typedef struct FT_Size_Metrics_ + { + FT_UShort x_ppem; /* horizontal pixels per EM */ + FT_UShort y_ppem; /* vertical pixels per EM */ + + FT_Fixed x_scale; /* scaling values used to convert font */ + FT_Fixed y_scale; /* units to 26.6 fractional pixels */ + + FT_Pos ascender; /* ascender in 26.6 frac. pixels */ + FT_Pos descender; /* descender in 26.6 frac. pixels */ + FT_Pos height; /* text height in 26.6 frac. pixels */ + FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ + + } FT_Size_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SizeRec */ + /* */ + /* <Description> */ + /* FreeType root size class structure. A size object models a face */ + /* object at a given size. */ + /* */ + /* <Fields> */ + /* face :: Handle to the parent face object. */ + /* */ + /* generic :: A typeless pointer, unused by the FreeType library or */ + /* any of its drivers. It can be used by client */ + /* applications to link their own data to each size */ + /* object. */ + /* */ + /* metrics :: Metrics for this size object. This field is read-only. */ + /* */ + typedef struct FT_SizeRec_ + { + FT_Face face; /* parent face object */ + FT_Generic generic; /* generic pointer for client uses */ + FT_Size_Metrics metrics; /* size metrics */ + FT_Size_Internal internal; + + } FT_SizeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SubGlyph */ + /* */ + /* <Description> */ + /* The subglyph structure is an internal object used to describe */ + /* subglyphs (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The subglyph implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + /* You can however retrieve subglyph information with */ + /* @FT_Get_SubGlyph_Info. */ + /* */ + typedef struct FT_SubGlyphRec_* FT_SubGlyph; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Slot_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ + /* model private data of a given @FT_GlyphSlot object. */ + /* */ + typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphSlotRec */ + /* */ + /* <Description> */ + /* FreeType root glyph slot class structure. A glyph slot is a */ + /* container where individual glyphs can be loaded, be they in */ + /* outline or bitmap format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library instance */ + /* this slot belongs to. */ + /* */ + /* face :: A handle to the parent face object. */ + /* */ + /* next :: In some cases (like some font tools), several */ + /* glyph slots per face object can be a good */ + /* thing. As this is rare, the glyph slots are */ + /* listed through a direct, single-linked list */ + /* using its `next' field. */ + /* */ + /* generic :: A typeless pointer unused by the FreeType */ + /* library or any of its drivers. It can be */ + /* used by client applications to link their own */ + /* data to each glyph slot object. */ + /* */ + /* metrics :: The metrics of the last loaded glyph in the */ + /* slot. The returned values depend on the last */ + /* load flags (see the @FT_Load_Glyph API */ + /* function) and can be expressed either in 26.6 */ + /* fractional pixels or font units. */ + /* */ + /* Note that even when the glyph image is */ + /* transformed, the metrics are not. */ + /* */ + /* linearHoriAdvance :: The advance width of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* linearVertAdvance :: The advance height of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* advance :: This shorthand is, depending on */ + /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ + /* (hinted) advance width for the glyph, in 26.6 */ + /* fractional pixel format. As specified with */ + /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ + /* `horiAdvance' or the `vertAdvance' value of */ + /* `metrics' field. */ + /* */ + /* format :: This field indicates the format of the image */ + /* contained in the glyph slot. Typically */ + /* @FT_GLYPH_FORMAT_BITMAP, */ + /* @FT_GLYPH_FORMAT_OUTLINE, or */ + /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ + /* possible. */ + /* */ + /* bitmap :: This field is used as a bitmap descriptor */ + /* when the slot format is */ + /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ + /* address and content of the bitmap buffer can */ + /* change between calls of @FT_Load_Glyph and a */ + /* few other functions. */ + /* */ + /* bitmap_left :: The bitmap's left bearing expressed in */ + /* integer pixels. Only valid if the format is */ + /* @FT_GLYPH_FORMAT_BITMAP, this is, if the */ + /* glyph slot contains a bitmap. */ + /* */ + /* bitmap_top :: The bitmap's top bearing expressed in integer */ + /* pixels. Remember that this is the distance */ + /* from the baseline to the top-most glyph */ + /* scanline, upwards y~coordinates being */ + /* *positive*. */ + /* */ + /* outline :: The outline descriptor for the current glyph */ + /* image if its format is */ + /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ + /* loaded, `outline' can be transformed, */ + /* distorted, embolded, etc. However, it must */ + /* not be freed. */ + /* */ + /* num_subglyphs :: The number of subglyphs in a composite glyph. */ + /* This field is only valid for the composite */ + /* glyph format that should normally only be */ + /* loaded with the @FT_LOAD_NO_RECURSE flag. */ + /* */ + /* subglyphs :: An array of subglyph descriptors for */ + /* composite glyphs. There are `num_subglyphs' */ + /* elements in there. Currently internal to */ + /* FreeType. */ + /* */ + /* control_data :: Certain font drivers can also return the */ + /* control data for a given glyph image (e.g. */ + /* TrueType bytecode, Type~1 charstrings, etc.). */ + /* This field is a pointer to such data. */ + /* */ + /* control_len :: This is the length in bytes of the control */ + /* data. */ + /* */ + /* other :: Really wicked formats can use this pointer to */ + /* present their own glyph image to client */ + /* applications. Note that the application */ + /* needs to know about the image format. */ + /* */ + /* lsb_delta :: The difference between hinted and unhinted */ + /* left side bearing while auto-hinting is */ + /* active. Zero otherwise. */ + /* */ + /* rsb_delta :: The difference between hinted and unhinted */ + /* right side bearing while auto-hinting is */ + /* active. Zero otherwise. */ + /* */ + /* <Note> */ + /* If @FT_Load_Glyph is called with default flags (see */ + /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ + /* its native format (e.g., an outline glyph for TrueType and Type~1 */ + /* formats). */ + /* */ + /* This image can later be converted into a bitmap by calling */ + /* @FT_Render_Glyph. This function finds the current renderer for */ + /* the native image's format, then invokes it. */ + /* */ + /* The renderer is in charge of transforming the native image through */ + /* the slot's face transformation fields, then converting it into a */ + /* bitmap that is returned in `slot->bitmap'. */ + /* */ + /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ + /* to specify the position of the bitmap relative to the current pen */ + /* position (e.g., coordinates (0,0) on the baseline). Of course, */ + /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ + /* */ + /* <Note> */ + /* Here is a small pseudo code fragment that shows how to use */ + /* `lsb_delta' and `rsb_delta': */ + /* */ + /* { */ + /* FT_Pos origin_x = 0; */ + /* FT_Pos prev_rsb_delta = 0; */ + /* */ + /* */ + /* for all glyphs do */ + /* <compute kern between current and previous glyph and add it to */ + /* `origin_x'> */ + /* */ + /* <load glyph with `FT_Load_Glyph'> */ + /* */ + /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ + /* origin_x -= 64; */ + /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ + /* origin_x += 64; */ + /* */ + /* prev_rsb_delta = face->glyph->rsb_delta; */ + /* */ + /* <save glyph image, or render glyph, or ...> */ + /* */ + /* origin_x += face->glyph->advance.x; */ + /* endfor */ + /* } */ + /* */ + typedef struct FT_GlyphSlotRec_ + { + FT_Library library; + FT_Face face; + FT_GlyphSlot next; + FT_UInt reserved; /* retained for binary compatibility */ + FT_Generic generic; + + FT_Glyph_Metrics metrics; + FT_Fixed linearHoriAdvance; + FT_Fixed linearVertAdvance; + FT_Vector advance; + + FT_Glyph_Format format; + + FT_Bitmap bitmap; + FT_Int bitmap_left; + FT_Int bitmap_top; + + FT_Outline outline; + + FT_UInt num_subglyphs; + FT_SubGlyph subglyphs; + + void* control_data; + long control_len; + + FT_Pos lsb_delta; + FT_Pos rsb_delta; + + void* other; + + FT_Slot_Internal internal; + + } FT_GlyphSlotRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* F U N C T I O N S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Init_FreeType */ + /* */ + /* <Description> */ + /* Initialize a new FreeType library object. The set of modules */ + /* that are registered by this function is determined at build time. */ + /* */ + /* <Output> */ + /* alibrary :: A handle to a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case you want to provide your own memory allocating routines, */ + /* use @FT_New_Library instead, followed by a call to */ + /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ + /* */ + /* See the documentation of @FT_Library and @FT_Face for */ + /* multi-threading issues. */ + /* */ + /* If you need reference-counting (cf. @FT_Reference_Library), use */ + /* @FT_New_Library and @FT_Done_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_FreeType */ + /* */ + /* <Description> */ + /* Destroy a given FreeType library object and all of its children, */ + /* including resources, drivers, faces, sizes, etc. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_FreeType( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OPEN_XXX */ + /* */ + /* <Description> */ + /* A list of bit field constants used within the `flags' field of the */ + /* @FT_Open_Args structure. */ + /* */ + /* <Values> */ + /* FT_OPEN_MEMORY :: This is a memory-based stream. */ + /* */ + /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ + /* */ + /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ + /* name. */ + /* */ + /* FT_OPEN_DRIVER :: Use the `driver' field. */ + /* */ + /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ + /* */ + /* <Note> */ + /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ + /* flags are mutually exclusive. */ + /* */ +#define FT_OPEN_MEMORY 0x1 +#define FT_OPEN_STREAM 0x2 +#define FT_OPEN_PATHNAME 0x4 +#define FT_OPEN_DRIVER 0x8 +#define FT_OPEN_PARAMS 0x10 + + + /* these constants are deprecated; use the corresponding `FT_OPEN_XXX' */ + /* values instead */ +#define ft_open_memory FT_OPEN_MEMORY +#define ft_open_stream FT_OPEN_STREAM +#define ft_open_pathname FT_OPEN_PATHNAME +#define ft_open_driver FT_OPEN_DRIVER +#define ft_open_params FT_OPEN_PARAMS + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Parameter */ + /* */ + /* <Description> */ + /* A simple structure used to pass more or less generic parameters to */ + /* @FT_Open_Face. */ + /* */ + /* <Fields> */ + /* tag :: A four-byte identification tag. */ + /* */ + /* data :: A pointer to the parameter data. */ + /* */ + /* <Note> */ + /* The ID and function of parameters are driver-specific. See the */ + /* various FT_PARAM_TAG_XXX flags for more information. */ + /* */ + typedef struct FT_Parameter_ + { + FT_ULong tag; + FT_Pointer data; + + } FT_Parameter; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Open_Args */ + /* */ + /* <Description> */ + /* A structure used to indicate how to open a new font file or */ + /* stream. A pointer to such a structure can be used as a parameter */ + /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ + /* */ + /* <Fields> */ + /* flags :: A set of bit flags indicating how to use the */ + /* structure. */ + /* */ + /* memory_base :: The first byte of the file in memory. */ + /* */ + /* memory_size :: The size in bytes of the file in memory. */ + /* */ + /* pathname :: A pointer to an 8-bit file pathname. */ + /* */ + /* stream :: A handle to a source stream object. */ + /* */ + /* driver :: This field is exclusively used by @FT_Open_Face; */ + /* it simply specifies the font driver to use to open */ + /* the face. If set to~0, FreeType tries to load the */ + /* face with each one of the drivers in its list. */ + /* */ + /* num_params :: The number of extra parameters. */ + /* */ + /* params :: Extra parameters passed to the font driver when */ + /* opening a new face. */ + /* */ + /* <Note> */ + /* The stream type is determined by the contents of `flags' that */ + /* are tested in the following order by @FT_Open_Face: */ + /* */ + /* If the @FT_OPEN_MEMORY bit is set, assume that this is a */ + /* memory file of `memory_size' bytes, located at `memory_address'. */ + /* The data are are not copied, and the client is responsible for */ + /* releasing and destroying them _after_ the corresponding call to */ + /* @FT_Done_Face. */ + /* */ + /* Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a */ + /* custom input stream `stream' is used. */ + /* */ + /* Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this */ + /* is a normal file and use `pathname' to open it. */ + /* */ + /* If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to */ + /* open the file with the driver whose handler is in `driver'. */ + /* */ + /* If the @FT_OPEN_PARAMS bit is set, the parameters given by */ + /* `num_params' and `params' is used. They are ignored otherwise. */ + /* */ + /* Ideally, both the `pathname' and `params' fields should be tagged */ + /* as `const'; this is missing for API backwards compatibility. In */ + /* other words, applications should treat them as read-only. */ + /* */ + typedef struct FT_Open_Args_ + { + FT_UInt flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; + + } FT_Open_Args; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font by its pathname. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* pathname :: A path to the font file. */ + /* */ + /* face_index :: See @FT_Open_Face for a detailed description of this */ + /* parameter. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Use @FT_Done_Face to destroy the created @FT_Face object (along */ + /* with its slot and sizes). */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font that has been */ + /* loaded into memory. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* file_base :: A pointer to the beginning of the font data. */ + /* */ + /* file_size :: The size of the memory chunk used by the font data. */ + /* */ + /* face_index :: See @FT_Open_Face for a detailed description of this */ + /* parameter. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You must not deallocate the memory before calling @FT_Done_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Open_Face */ + /* */ + /* <Description> */ + /* Create a face object from a given resource described by */ + /* @FT_Open_Args. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* args :: A pointer to an `FT_Open_Args' structure that must */ + /* be filled by the caller. */ + /* */ + /* face_index :: This field holds two different values. Bits 0-15 */ + /* are the index of the face in the font file (starting */ + /* with value~0). Set it to~0 if there is only one */ + /* face in the font file. */ + /* */ + /* Bits 16-30 are relevant to GX variation fonts only, */ + /* specifying the named instance index for the current */ + /* face index (starting with value~1; value~0 makes */ + /* FreeType ignore named instances). For non-GX fonts, */ + /* bits 16-30 are ignored. Assuming that you want to */ + /* access the third named instance in face~4, */ + /* `face_index' should be set to 0x00030004. If you */ + /* want to access face~4 without GX variation handling, */ + /* simply set `face_index' to value~4. */ + /* */ + /* FT_Open_Face and its siblings can be used to quickly */ + /* check whether the font format of a given font */ + /* resource is supported by FreeType. In general, if */ + /* the `face_index' argument is negative, the */ + /* function's return value is~0 if the font format is */ + /* recognized, or non-zero otherwise. The function */ + /* allocates a more or less empty face handle in */ + /* `*aface' (if `aface' isn't NULL); the only two */ + /* useful fields in this special case are */ + /* `face->num_faces' and `face->style_flags'. For any */ + /* negative value of `face_index', `face->num_faces' */ + /* gives the number of faces within the font file. For */ + /* the negative value `-(N+1)' (with `N' a 16-bit */ + /* value), bits 16-30 in `face->style_flags' give the */ + /* number of named instances in face `N' if we have a */ + /* GX variation font (or zero otherwise). After */ + /* examination, the returned @FT_Face structure should */ + /* be deallocated with a call to @FT_Done_Face. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Unlike FreeType 1.x, this function automatically creates a glyph */ + /* slot for the face object that can be accessed directly through */ + /* `face->glyph'. */ + /* */ + /* Each new face object created with this function also owns a */ + /* default @FT_Size object, accessible as `face->size'. */ + /* */ + /* One @FT_Library instance can have multiple face objects, this is, */ + /* @FT_Open_Face and its siblings can be called multiple times using */ + /* the same `library' argument. */ + /* */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + /* To loop over all faces, use code similar to the following snippet */ + /* (omitting the error handling). */ + /* */ + /* { */ + /* ... */ + /* FT_Face face; */ + /* FT_Long i, num_faces; */ + /* */ + /* */ + /* error = FT_Open_Face( library, args, -1, &face ); */ + /* if ( error ) { ... } */ + /* */ + /* num_faces = face->num_faces; */ + /* FT_Done_Face( face ); */ + /* */ + /* for ( i = 0; i < num_faces; i++ ) */ + /* { */ + /* ... */ + /* error = FT_Open_Face( library, args, i, &face ); */ + /* ... */ + /* FT_Done_Face( face ); */ + /* ... */ + /* } */ + /* } */ + /* */ + /* To loop over all valid values for `face_index', use something */ + /* similar to the following snippet, again without error handling. */ + /* The code accesses all faces immediately (thus only a single call */ + /* of `FT_Open_Face' within the do-loop), with and without named */ + /* instances. */ + /* */ + /* { */ + /* ... */ + /* FT_Face face; */ + /* */ + /* FT_Long num_faces = 0; */ + /* FT_Long num_instances = 0; */ + /* */ + /* FT_Long face_idx = 0; */ + /* FT_Long instance_idx = 0; */ + /* */ + /* */ + /* do */ + /* { */ + /* FT_Long id = ( instance_idx << 16 ) + face_idx; */ + /* */ + /* */ + /* error = FT_Open_Face( library, args, id, &face ); */ + /* if ( error ) { ... } */ + /* */ + /* num_faces = face->num_faces; */ + /* num_instances = face->style_flags >> 16; */ + /* */ + /* ... */ + /* */ + /* FT_Done_Face( face ); */ + /* */ + /* if ( instance_idx < num_instances ) */ + /* instance_idx++; */ + /* else */ + /* { */ + /* face_idx++; */ + /* instance_idx = 0; */ + /* } */ + /* */ + /* } while ( face_idx < num_faces ) */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_Open_Face( FT_Library library, + const FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_File */ + /* */ + /* <Description> */ + /* This function calls @FT_Attach_Stream to attach a file. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* filepathname :: The pathname. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_Stream */ + /* */ + /* <Description> */ + /* `Attach' data to a face object. Normally, this is used to read */ + /* additional information for the face object. For example, you can */ + /* attach an AFM file that comes with a Type~1 font to get the */ + /* kerning values and other metrics. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* parameters :: A pointer to @FT_Open_Args that must be filled by */ + /* the caller. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The meaning of the `attach' (i.e., what really happens when the */ + /* new file is read) is not fixed by FreeType itself. It really */ + /* depends on the font format (and thus the font driver). */ + /* */ + /* Client applications are expected to know what they are doing */ + /* when invoking this function. Most drivers simply do not implement */ + /* file attachments. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Face */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Face structure */ + /* is created. This function increments the counter. @FT_Done_Face */ + /* then only destroys a face if the counter is~1, otherwise it simply */ + /* decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures that */ + /* reference @FT_Face objects. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Face */ + /* */ + /* <Description> */ + /* Discard a given face object, as well as all of its child slots and */ + /* sizes. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Size */ + /* */ + /* <Description> */ + /* Select a bitmap strike. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* strike_index :: The index of the bitmap strike in the */ + /* `available_sizes' field of @FT_FaceRec structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Size_Request_Type */ + /* */ + /* <Description> */ + /* An enumeration type that lists the supported size request types. */ + /* */ + /* <Values> */ + /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ + /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ + /* used to determine both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ + /* The real dimension. The sum of the the `ascender' and (minus */ + /* of) the `descender' fields of @FT_FaceRec are used to determine */ + /* both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_BBOX :: */ + /* The font bounding box. The width and height of the `bbox' field */ + /* of @FT_FaceRec are used to determine the horizontal and vertical */ + /* scaling value, respectively. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_CELL :: */ + /* The `max_advance_width' field of @FT_FaceRec is used to */ + /* determine the horizontal scaling value; the vertical scaling */ + /* value is determined the same way as */ + /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ + /* values are set to the smaller one. This type is useful if you */ + /* want to specify the font size for, say, a window of a given */ + /* dimension and 80x24 cells. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_SCALES :: */ + /* Specify the scaling values directly. */ + /* */ + /* <Note> */ + /* The above descriptions only apply to scalable formats. For bitmap */ + /* formats, the behaviour is up to the driver. */ + /* */ + /* See the note section of @FT_Size_Metrics if you wonder how size */ + /* requesting relates to scaling values. */ + /* */ + typedef enum FT_Size_Request_Type_ + { + FT_SIZE_REQUEST_TYPE_NOMINAL, + FT_SIZE_REQUEST_TYPE_REAL_DIM, + FT_SIZE_REQUEST_TYPE_BBOX, + FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, + + FT_SIZE_REQUEST_TYPE_MAX + + } FT_Size_Request_Type; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_RequestRec */ + /* */ + /* <Description> */ + /* A structure used to model a size request. */ + /* */ + /* <Fields> */ + /* type :: See @FT_Size_Request_Type. */ + /* */ + /* width :: The desired width. */ + /* */ + /* height :: The desired height. */ + /* */ + /* horiResolution :: The horizontal resolution. If set to zero, */ + /* `width' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* vertResolution :: The vertical resolution. If set to zero, */ + /* `height' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* <Note> */ + /* If `width' is zero, then the horizontal scaling value is set equal */ + /* to the vertical scaling value, and vice versa. */ + /* */ + typedef struct FT_Size_RequestRec_ + { + FT_Size_Request_Type type; + FT_Long width; + FT_Long height; + FT_UInt horiResolution; + FT_UInt vertResolution; + + } FT_Size_RequestRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Request */ + /* */ + /* <Description> */ + /* A handle to a size request structure. */ + /* */ + typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Request_Size */ + /* */ + /* <Description> */ + /* Resize the scale of the active @FT_Size object in a face. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* req :: A pointer to a @FT_Size_RequestRec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Although drivers may select the bitmap strike matching the */ + /* request, you should not rely on this if you intend to select a */ + /* particular bitmap strike. Use @FT_Select_Size instead in that */ + /* case. */ + /* */ + /* The relation between the requested size and the resulting glyph */ + /* size is dependent entirely on how the size is defined in the */ + /* source face. The font designer chooses the final size of each */ + /* glyph relative to this size. For more information refer to */ + /* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Char_Size */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in points). */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* char_width :: The nominal width, in 26.6 fractional points. */ + /* */ + /* char_height :: The nominal height, in 26.6 fractional points. */ + /* */ + /* horz_resolution :: The horizontal resolution in dpi. */ + /* */ + /* vert_resolution :: The vertical resolution in dpi. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If either the character width or height is zero, it is set equal */ + /* to the other value. */ + /* */ + /* If either the horizontal or vertical resolution is zero, it is set */ + /* equal to the other value. */ + /* */ + /* A character width or height smaller than 1pt is set to 1pt; if */ + /* both resolution values are zero, they are set to 72dpi. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Pixel_Sizes */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in pixels). */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Input> */ + /* pixel_width :: The nominal width, in pixels. */ + /* */ + /* pixel_height :: The nominal height, in pixels. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should not rely on the resulting glyphs matching, or being */ + /* constrained, to this pixel size. Refer to @FT_Request_Size to */ + /* understand how requested sizes relate to actual sizes. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Glyph */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object. */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* glyph_index :: The index of the glyph in the font file. For */ + /* CID-keyed fonts (either in PS or in CFF format) */ + /* this argument specifies the CID value. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The loaded glyph may be transformed. See @FT_Set_Transform for */ + /* the details. */ + /* */ + /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ + /* returned for invalid CID values (this is, for CID values that */ + /* don't have a corresponding glyph in the font). See the discussion */ + /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Char */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object, according to its character code. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* char_code :: The glyph's character code, according to the */ + /* current charmap used in the face. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + + /************************************************************************* + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit field constants used with @FT_Load_Glyph to indicate + * what kind of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. + * The bitmap data can be accessed from the glyph slot (see note + * below). + * + * 2. If no embedded bitmap is searched or found, FreeType looks for a + * scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then `hinted' to the pixel grid + * in order to optimize it. The outline data can be accessed from + * the glyph slot (see note below). + * + * Note that by default, the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the loaded outline glyph but keep it in font units. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using + * FT_LOAD_NO_SCALE usually yields meaningless outlines because the + * subglyphs must be scaled and positioned with hinting instructions. + * This can be solved by loading the font without FT_LOAD_NO_SCALE and + * setting the character size to `font->units_per_EM'. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates `blurrier' bitmap glyphs + * when the glyph are rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. In particular, the + * `advance' value in the @FT_GlyphSlotRec structure is set to the + * `vertAdvance' value of the `metrics' field. + * + * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use + * this flag currently. Reason is that in this case vertical metrics + * get synthesized, and those values are not always consistent across + * various font formats. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Indicates that the auto-hinter is preferred over the font's native + * hinter. See also the note below. + * + * FT_LOAD_PEDANTIC :: + * Indicates that the font driver should perform pedantic verifications + * during glyph loading. This is mostly used to detect broken glyphs + * in fonts. By default, FreeType tries to handle broken fonts also. + * + * In particular, errors from the TrueType bytecode engine are not + * passed to the application if this flag is not set; this might + * result in partially hinted or distorted glyphs in case a glyph's + * bytecode is buggy. + * + * FT_LOAD_NO_RECURSE :: + * Indicate that the font driver should not load composite glyphs + * recursively. Instead, it should set the `num_subglyph' and + * `subglyphs' values of the glyph slot accordingly, and set + * `glyph->format' to @FT_GLYPH_FORMAT_COMPOSITE. The description of + * subglyphs can then be accessed with @FT_Get_SubGlyph_Info. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Indicates that the transform matrix set by @FT_Set_Transform should + * be ignored. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Indicates that the `linearHoriAdvance' and `linearVertAdvance' + * fields of @FT_GlyphSlotRec should be kept in font units. See + * @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable auto-hinter. See also the note below. + * + * FT_LOAD_COLOR :: + * This flag is used to request loading of color embedded-bitmap + * images. The resulting color bitmaps, if available, will have the + * @FT_PIXEL_MODE_BGRA format. When the flag is not used and color + * bitmaps are found, they will be converted to 256-level gray + * bitmaps transparently. Those bitmaps will be in the + * @FT_PIXEL_MODE_GRAY format. + * + * FT_LOAD_COMPUTE_METRICS :: + * This flag sets computing glyph metrics without the use of bundled + * metrics tables (for example, the `hdmx' table in TrueType fonts). + * Well-behaving fonts have optimized bundled metrics and these should + * be used. This flag is mainly used by font validating or font + * editing applications, which need to ignore, verify, or edit those + * tables. + * + * Currently, this flag is only implemented for TrueType fonts. + * + * FT_LOAD_CROP_BITMAP :: + * Ignored. Deprecated. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Ignored. Deprecated. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be + * used at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + * Note that the auto-hinter needs a valid Unicode cmap (either a native + * one or synthesized by FreeType) for producing correct results. If a + * font provides an incorrect mapping (for example, assigning the + * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a + * mathematical integral sign), the auto-hinter might produce useless + * results. + * + */ +#define FT_LOAD_DEFAULT 0x0 +#define FT_LOAD_NO_SCALE ( 1L << 0 ) +#define FT_LOAD_NO_HINTING ( 1L << 1 ) +#define FT_LOAD_RENDER ( 1L << 2 ) +#define FT_LOAD_NO_BITMAP ( 1L << 3 ) +#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) +#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) +#define FT_LOAD_CROP_BITMAP ( 1L << 6 ) +#define FT_LOAD_PEDANTIC ( 1L << 7 ) +#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) +#define FT_LOAD_NO_RECURSE ( 1L << 10 ) +#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) +#define FT_LOAD_MONOCHROME ( 1L << 12 ) +#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) +#define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) + /* Bits 16..19 are used by `FT_LOAD_TARGET_' */ +#define FT_LOAD_COLOR ( 1L << 20 ) +#define FT_LOAD_COMPUTE_METRICS ( 1L << 21 ) + + /* */ + + /* used internally only by certain font drivers! */ +#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) +#define FT_LOAD_SBITS_ONLY ( 1L << 14 ) + + + /************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values that are used to select a specific hinting algorithm + * to use by the hinter. You should OR one of these values to your + * `load_flags' when calling @FT_Load_Glyph. + * + * Note that font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * This corresponds to the default hinting algorithm, optimized for + * standard gray-level rendering. For monochrome output, use + * @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for gray-level modes. Many generated + * glyphs are fuzzier but better resemble their original shape. This + * is achieved by snapping glyphs to the pixel grid only vertically + * (Y-axis), as is done by Microsoft's ClearType and Adobe's + * proprietary font renderer. This preserves inter-glyph spacing in + * horizontal text. The snapping is done either by the native font + * driver if the driver itself and the font support it or by the + * auto-hinter. + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your + * `load_flags'. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode that matches the used algorithm + * best). An exeption is FT_LOAD_TARGET_MONO since it implies + * @FT_LOAD_MONOCHROME. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the `light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * { + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * } + * + */ +#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) + +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) + + + /************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ +#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Transform */ + /* */ + /* <Description> */ + /* A function used to set the transformation that is applied to glyph */ + /* images when they are loaded into a glyph slot through */ + /* @FT_Load_Glyph. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ + /* the identity matrix. */ + /* delta :: A pointer to the translation vector. Use~0 for the null */ + /* vector. */ + /* */ + /* <Note> */ + /* The transformation is only applied to scalable image formats after */ + /* the glyph has been loaded. It means that hinting is unaltered by */ + /* the transformation and is performed on the character size given in */ + /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ + /* */ + /* Note that this also transforms the `face.glyph.advance' field, but */ + /* *not* the values in `face.glyph.metrics'. */ + /* */ + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Render_Mode */ + /* */ + /* <Description> */ + /* An enumeration type that lists the render modes supported by */ + /* FreeType~2. Each mode corresponds to a specific type of scanline */ + /* conversion performed on the outline. */ + /* */ + /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ + /* field in the @FT_GlyphSlotRec structure gives the format of the */ + /* returned bitmap. */ + /* */ + /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity, */ + /* indicating pixel coverage. Use linear alpha blending and gamma */ + /* correction to correctly render non-monochrome glyph bitmaps onto a */ + /* surface; see @FT_Render_Glyph. */ + /* */ + /* <Values> */ + /* FT_RENDER_MODE_NORMAL :: */ + /* This is the default render mode; it corresponds to 8-bit */ + /* anti-aliased bitmaps. */ + /* */ + /* FT_RENDER_MODE_LIGHT :: */ + /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ + /* defined as a separate value because render modes are also used */ + /* indirectly to define hinting algorithm selectors. See */ + /* @FT_LOAD_TARGET_XXX for details. */ + /* */ + /* FT_RENDER_MODE_MONO :: */ + /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ + /* opacity). */ + /* */ + /* FT_RENDER_MODE_LCD :: */ + /* This mode corresponds to horizontal RGB and BGR sub-pixel */ + /* displays like LCD screens. It produces 8-bit bitmaps that are */ + /* 3~times the width of the original glyph outline in pixels, and */ + /* which use the @FT_PIXEL_MODE_LCD mode. */ + /* */ + /* FT_RENDER_MODE_LCD_V :: */ + /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ + /* (like PDA screens, rotated LCD displays, etc.). It produces */ + /* 8-bit bitmaps that are 3~times the height of the original */ + /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ + /* */ + /* <Note> */ + /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ + /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ + /* (not active in the default builds). It is up to the caller to */ + /* either call @FT_Library_SetLcdFilter (if available) or do the */ + /* filtering itself. */ + /* */ + /* The selected render mode only affects vector glyphs of a font. */ + /* Embedded bitmaps often have a different pixel mode like */ + /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ + /* them into 8-bit pixmaps. */ + /* */ + typedef enum FT_Render_Mode_ + { + FT_RENDER_MODE_NORMAL = 0, + FT_RENDER_MODE_LIGHT, + FT_RENDER_MODE_MONO, + FT_RENDER_MODE_LCD, + FT_RENDER_MODE_LCD_V, + + FT_RENDER_MODE_MAX + + } FT_Render_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Render_Mode' values instead */ +#define ft_render_mode_normal FT_RENDER_MODE_NORMAL +#define ft_render_mode_mono FT_RENDER_MODE_MONO + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Render_Glyph */ + /* */ + /* <Description> */ + /* Convert a given glyph image to a bitmap. It does so by inspecting */ + /* the glyph image format, finding the relevant renderer, and */ + /* invoking it. */ + /* */ + /* When FreeType outputs a bitmap of a glyph, it really outputs an */ + /* alpha coverage map. If a pixel is completely covered by a */ + /* filled-in outline, the bitmap contains 0xFF at that pixel, meaning */ + /* that 0xFF/0xFF fraction of that pixel is covered, meaning the */ + /* pixel is 100% black (or 0% bright). If a pixel is only 50% */ + /* covered (value 0x80), the pixel is made 50% black (50% bright or a */ + /* middle shade of grey). 0% covered means 0% black (100% bright or */ + /* white). */ + /* */ + /* On high-DPI screens like on smartphones and tablets, the pixels */ + /* are so small that their chance of being completely covered and */ + /* therefore completely black are fairly good. On the low-DPI */ + /* screens, however, the situation is different. The pixels are too */ + /* large for most of the details of a glyph and shades of gray are */ + /* the norm rather than the exception. */ + /* */ + /* This is relevant because all our screens have a second problem: */ + /* they are not linear. 1~+~1 is not~2. Twice the value does not */ + /* result in twice the brightness. When a pixel is only 50% covered, */ + /* the coverage map says 50% black, and this translates to a pixel */ + /* value of 128 when you use 8~bits per channel (0-255). However, */ + /* this does not translate to 50% brightness for that pixel on our */ + /* sRGB and gamma~2.2 screens. Due to their non-linearity, they */ + /* dwell longer in the darks and only a pixel value of about 186 */ + /* results in 50% brightness – 128 ends up too dark on both bright */ + /* and dark backgrounds. The net result is that dark text looks */ + /* burnt-out, pixely and blotchy on bright background, bright text */ + /* too frail on dark backgrounds, and colored text on colored */ + /* background (for example, red on green) seems to have dark halos or */ + /* `dirt' around it. The situation is especially ugly for diagonal */ + /* stems like in `w' glyph shapes where the quality of FreeType's */ + /* anti-aliasing depends on the correct display of grays. On */ + /* high-DPI screens where smaller, fully black pixels reign supreme, */ + /* this doesn't matter, but on our low-DPI screens with all the gray */ + /* shades, it does. 0% and 100% brightness are the same things in */ + /* linear and non-linear space, just all the shades in-between */ + /* aren't. */ + /* */ + /* The blending function for placing text over a background is */ + /* */ + /* { */ + /* dst = alpha * src + (1 - alpha) * dst , */ + /* } */ + /* */ + /* which is known as the OVER operator. */ + /* */ + /* To correctly composite an antialiased pixel of a glyph onto a */ + /* surface, */ + /* */ + /* 1. take the foreground and background colors (e.g., in sRGB space) */ + /* and apply gamma to get them in a linear space, */ + /* */ + /* 2. use OVER to blend the two linear colors using the glyph pixel */ + /* as the alpha value (remember, the glyph bitmap is an alpha */ + /* coverage bitmap), and */ + /* */ + /* 3. apply inverse gamma to the blended pixel and write it back to */ + /* the image. */ + /* */ + /* Internal testing at Adobe found that a target inverse gamma of~1.8 */ + /* for step~3 gives good results across a wide range of displays with */ + /* an sRGB gamma curve or a similar one. */ + /* */ + /* This process can cost performance. There is an approximation that */ + /* does not need to know about the background color; see */ + /* https://bel.fi/alankila/lcd/ and */ + /* https://bel.fi/alankila/lcd/alpcor.html for details. */ + /* */ + /* *ATTENTION*: Linear blending is even more important when dealing */ + /* with subpixel-rendered glyphs to prevent color-fringing! A */ + /* subpixel-rendered glyph must first be filtered with a filter that */ + /* gives equal weight to the three color primaries and does not */ + /* exceed a sum of 0x100, see section @lcd_filtering. Then the */ + /* only difference to gray linear blending is that subpixel-rendered */ + /* linear blending is done 3~times per pixel: red foreground subpixel */ + /* to red background subpixel and so on for green and blue. */ + /* */ + /* <InOut> */ + /* slot :: A handle to the glyph slot containing the image to */ + /* convert. */ + /* */ + /* <Input> */ + /* render_mode :: This is the render mode used to render the glyph */ + /* image into a bitmap. See @FT_Render_Mode for a */ + /* list of possible values. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Kerning_Mode */ + /* */ + /* <Description> */ + /* An enumeration used to specify which kerning values to return in */ + /* @FT_Get_Kerning. */ + /* */ + /* <Values> */ + /* FT_KERNING_DEFAULT :: Return grid-fitted kerning distances in */ + /* pixels (value is~0). Whether they are */ + /* scaled depends on @FT_LOAD_NO_SCALE. */ + /* */ + /* FT_KERNING_UNFITTED :: Return un-grid-fitted kerning distances in */ + /* 26.6 fractional pixels. Whether they are */ + /* scaled depends on @FT_LOAD_NO_SCALE. */ + /* */ + /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ + /* units. */ + /* */ + /* <Note> */ + /* FT_KERNING_DEFAULT returns full pixel values; it also makes */ + /* FreeType heuristically scale down kerning distances at small ppem */ + /* values so that they don't become too big. */ + /* */ + typedef enum FT_Kerning_Mode_ + { + FT_KERNING_DEFAULT = 0, + FT_KERNING_UNFITTED, + FT_KERNING_UNSCALED + + } FT_Kerning_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Kerning_Mode' values instead */ +#define ft_kerning_default FT_KERNING_DEFAULT +#define ft_kerning_unfitted FT_KERNING_UNFITTED +#define ft_kerning_unscaled FT_KERNING_UNSCALED + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Kerning */ + /* */ + /* <Description> */ + /* Return the kerning vector between two glyphs of a same face. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* left_glyph :: The index of the left glyph in the kern pair. */ + /* */ + /* right_glyph :: The index of the right glyph in the kern pair. */ + /* */ + /* kern_mode :: See @FT_Kerning_Mode for more information. */ + /* Determines the scale and dimension of the returned */ + /* kerning vector. */ + /* */ + /* <Output> */ + /* akerning :: The kerning vector. This is either in font units, */ + /* fractional pixels (26.6 format), or pixels for */ + /* scalable formats, and in pixels for fixed-sizes */ + /* formats. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Only horizontal layouts (left-to-right & right-to-left) are */ + /* supported by this method. Other layouts, or more sophisticated */ + /* kernings, are out of the scope of this API function -- they can be */ + /* implemented through format-specific interfaces. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Track_Kerning */ + /* */ + /* <Description> */ + /* Return the track kerning for a given face object at a given size. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* point_size :: The point size in 16.16 fractional points. */ + /* */ + /* degree :: The degree of tightness. Increasingly negative */ + /* values represent tighter track kerning, while */ + /* increasingly positive values represent looser track */ + /* kerning. Value zero means no track kerning. */ + /* */ + /* <Output> */ + /* akerning :: The kerning in 16.16 fractional points, to be */ + /* uniformly applied between all glyphs. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Currently, only the Type~1 font driver supports track kerning, */ + /* using data from AFM files (if attached with @FT_Attach_File or */ + /* @FT_Attach_Stream). */ + /* */ + /* Only very few AFM files come with track kerning data; please refer */ + /* to the Adobe's AFM specification for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII name of a given glyph in a face. This only */ + /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* buffer_max :: The maximum number of bytes available in the */ + /* buffer. */ + /* */ + /* <Output> */ + /* buffer :: A pointer to a target buffer where the name is */ + /* copied to. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error is returned if the face doesn't provide glyph names or if */ + /* the glyph index is invalid. In all cases of failure, the first */ + /* byte of `buffer' is set to~0 to indicate an empty name. */ + /* */ + /* The glyph name is truncated to fit within the buffer if it is too */ + /* long. The returned string is always zero-terminated. */ + /* */ + /* Be aware that FreeType reorders glyph indices internally so that */ + /* glyph index~0 always corresponds to the `missing glyph' (called */ + /* `.notdef'). */ + /* */ + /* This function always returns an error if the config macro */ + /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoptions.h'. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Postscript_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII PostScript name of a given face, if available. */ + /* This only works with PostScript and TrueType fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to the face's PostScript name. NULL if unavailable. */ + /* */ + /* <Note> */ + /* The returned pointer is owned by the face and is destroyed with */ + /* it. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap by its encoding tag (as listed in */ + /* `freetype.h'). */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* encoding :: A handle to the selected encoding. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if no charmap in the face */ + /* corresponds to the encoding queried here. */ + /* */ + /* Because many fonts contain more than a single cmap for Unicode */ + /* encoding, this function has some special code to select the one */ + /* that covers Unicode best (`best' in the sense that a UCS-4 cmap is */ + /* preferred to a UCS-2 cmap). It is thus preferable to */ + /* @FT_Set_Charmap in this case. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap for character code to glyph index mapping. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* charmap :: A handle to the selected charmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if the charmap is not part of */ + /* the face (i.e., if it is not listed in the `face->charmaps' */ + /* table). */ + /* */ + /* It also fails if a type~14 charmap is selected. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); + + + /************************************************************************* + * + * @function: + * FT_Get_Charmap_Index + * + * @description: + * Retrieve index of a given charmap. + * + * @input: + * charmap :: + * A handle to a charmap. + * + * @return: + * The index into the array of character maps within the face to which + * `charmap' belongs. If an error occurs, -1 is returned. + * + */ + FT_EXPORT( FT_Int ) + FT_Get_Charmap_Index( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Char_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code. This function */ + /* uses a charmap object to do the mapping. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* charcode :: The character code. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within the */ + /* file. This is done to ensure that value~0 always corresponds to */ + /* the `missing glyph'. If the first glyph is not named `.notdef', */ + /* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ + /* the glyph ID~0 position, and whatever was there will be moved to */ + /* the position `.notdef' had. For Type~1 fonts, if there is no */ + /* `.notdef' glyph at all, then one will be created at index~0 and */ + /* whatever was there will be moved to the last index -- Type~42 */ + /* fonts are considered invalid under this condition. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_First_Char */ + /* */ + /* <Description> */ + /* This function is used to return the first character code in the */ + /* current charmap of a given face. It also returns the */ + /* corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of first character code. 0~if charmap is */ + /* empty. */ + /* */ + /* <Return> */ + /* The charmap's first character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_Next_Char to be able to */ + /* parse all character codes available in a given charmap. The code */ + /* should look like this: */ + /* */ + /* { */ + /* FT_ULong charcode; */ + /* FT_UInt gindex; */ + /* */ + /* */ + /* charcode = FT_Get_First_Char( face, &gindex ); */ + /* while ( gindex != 0 ) */ + /* { */ + /* ... do something with (charcode,gindex) pair ... */ + /* */ + /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ + /* } */ + /* } */ + /* */ + /* Be aware that character codes can have values up to 0xFFFFFFFF; */ + /* this might happen for non-Unicode or malformed cmaps. However, */ + /* even with regular Unicode encoding, so-called `last resort fonts' */ + /* (using SFNT cmap format 13, see function @FT_Get_CMap_Format) */ + /* normally have entries for all Unicode characters up to 0x1FFFFF, */ + /* which can cause *a lot* of iterations. */ + /* */ + /* Note that `*agindex' is set to~0 if the charmap is empty. The */ + /* result itself can be~0 in two cases: if the charmap is empty or */ + /* if the value~0 is the first valid character code. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Next_Char */ + /* */ + /* <Description> */ + /* This function is used to return the next character code in the */ + /* current charmap of a given face following the value `char_code', */ + /* as well as the corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* char_code :: The starting character code. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of next character code. 0~if charmap */ + /* is empty. */ + /* */ + /* <Return> */ + /* The charmap's next character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_First_Char to walk */ + /* over all character codes available in a given charmap. See the */ + /* note for this function for a simple code example. */ + /* */ + /* Note that `*agindex' is set to~0 when there are no more codes in */ + /* the charmap. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Name_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given glyph name. This function uses */ + /* driver specific objects to do the translation. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ); + + + /************************************************************************* + * + * @macro: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants used to describe subglyphs. Please refer to the + * TrueType specification for the meaning of the various flags. + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 + + + /************************************************************************* + * + * @func: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be + * interpreted depending on the flags returned in `*p_flags'. See the + * TrueType specification for details. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FSTYPE_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `fsType' field of the OS/2 table */ + /* in a TrueType or OpenType font and the `FSType' entry in a */ + /* PostScript font. These bit flags are returned by */ + /* @FT_Get_FSType_Flags; they inform client applications of embedding */ + /* and subsetting restrictions associated with a font. */ + /* */ + /* See */ + /* http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf */ + /* for more details. */ + /* */ + /* <Values> */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ + /* Fonts with no fsType bit set may be embedded and permanently */ + /* installed on the remote system by an application. */ + /* */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ + /* Fonts that have only this bit set must not be modified, embedded */ + /* or exchanged in any manner without first obtaining permission of */ + /* the font software copyright owner. */ + /* */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ + /* If this bit is set, the font may be embedded and temporarily */ + /* loaded on the remote system. Documents containing Preview & */ + /* Print fonts must be opened `read-only'; no edits can be applied */ + /* to the document. */ + /* */ + /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ + /* If this bit is set, the font may be embedded but must only be */ + /* installed temporarily on other systems. In contrast to Preview */ + /* & Print fonts, documents containing editable fonts may be opened */ + /* for reading, editing is permitted, and changes may be saved. */ + /* */ + /* FT_FSTYPE_NO_SUBSETTING :: */ + /* If this bit is set, the font may not be subsetted prior to */ + /* embedding. */ + /* */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ + /* If this bit is set, only bitmaps contained in the font may be */ + /* embedded; no outline data may be embedded. If there are no */ + /* bitmaps available in the font, then the font is unembeddable. */ + /* */ + /* <Note> */ + /* The flags are ORed together, thus more than a single value can be */ + /* returned. */ + /* */ + /* While the fsType flags can indicate that a font may be embedded, a */ + /* license with the font vendor may be separately required to use the */ + /* font in this way. */ + /* */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_FSType_Flags */ + /* */ + /* <Description> */ + /* Return the fsType flags for a font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* The fsType flags, @FT_FSTYPE_XXX. */ + /* */ + /* <Note> */ + /* Use this function rather than directly reading the `fs_type' field */ + /* in the @PS_FontInfoRec structure, which is only guaranteed to */ + /* return the correct results for Type~1 fonts. */ + /* */ + /* <Since> */ + /* 2.3.8 */ + /* */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_variants */ + /* */ + /* <Title> */ + /* Glyph Variants */ + /* */ + /* <Abstract> */ + /* The FreeType~2 interface to Unicode Ideographic Variation */ + /* Sequences (IVS), using the SFNT cmap format~14. */ + /* */ + /* <Description> */ + /* Many CJK characters have variant forms. They are a sort of grey */ + /* area somewhere between being totally irrelevant and semantically */ + /* distinct; for this reason, the Unicode consortium decided to */ + /* introduce Ideographic Variation Sequences (IVS), consisting of a */ + /* Unicode base character and one of 240 variant selectors */ + /* (U+E0100-U+E01EF), instead of further extending the already huge */ + /* code range for CJK characters. */ + /* */ + /* An IVS is registered and unique; for further details please refer */ + /* to Unicode Technical Standard #37, the Ideographic Variation */ + /* Database: */ + /* */ + /* http://www.unicode.org/reports/tr37/ */ + /* */ + /* To date (November 2014), the character with the most variants is */ + /* U+9089, having 32 such IVS. */ + /* */ + /* Adobe and MS decided to support IVS with a new cmap subtable */ + /* (format~14). It is an odd subtable because it is not a mapping of */ + /* input code points to glyphs, but contains lists of all variants */ + /* supported by the font. */ + /* */ + /* A variant may be either `default' or `non-default'. A default */ + /* variant is the one you will get for that code point if you look it */ + /* up in the standard Unicode cmap. A non-default variant is a */ + /* different glyph. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIndex */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code as modified by */ + /* the variation selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character code point in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode code point of the variation selector. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means either `undefined character code', or */ + /* `undefined selector code', or `no variation selector cmap */ + /* subtable', or `current CharMap is not Unicode'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within */ + /* the file. This is done to ensure that value~0 always corresponds */ + /* to the `missing glyph'. */ + /* */ + /* This function is only meaningful if */ + /* a) the font has a variation selector cmap sub table, */ + /* and */ + /* b) the current charmap has a Unicode encoding. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIsDefault */ + /* */ + /* <Description> */ + /* Check whether this variant of this Unicode character is the one to */ + /* be found in the `cmap'. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode codepoint of the variation selector. */ + /* */ + /* <Return> */ + /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ + /* variation selector cmap, or -1 if it is not a variant. */ + /* */ + /* <Note> */ + /* This function is only meaningful if the font has a variation */ + /* selector cmap subtable. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_Int ) + FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantSelectors */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* in the font. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to an array of selector code points, or NULL if there is */ + /* no valid variant selector cmap subtable. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantSelectors( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantsOfChar */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* for the specified character code. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* <Return> */ + /* A pointer to an array of variant selector code points that are */ + /* active for the given character, or NULL if the corresponding list */ + /* is empty. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharsOfVariant */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode character codes found for */ + /* the specified variant selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* variantSelector :: */ + /* The variant selector code point in Unicode. */ + /* */ + /* <Return> */ + /* A list of all the code points that are specified by this selector */ + /* (both default and non-default codes are returned) or NULL if there */ + /* is no valid cmap or the variant selector is invalid. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /* <Title> */ + /* Computations */ + /* */ + /* <Abstract> */ + /* Crunching fixed numbers and vectors. */ + /* */ + /* <Description> */ + /* This section contains various functions used to perform */ + /* computations on 16.16 fixed-float numbers or 2d vectors. */ + /* */ + /* <Order> */ + /* FT_MulDiv */ + /* FT_MulFix */ + /* FT_DivFix */ + /* FT_RoundFix */ + /* FT_CeilFix */ + /* FT_FloorFix */ + /* FT_Vector_Transform */ + /* FT_Matrix_Multiply */ + /* FT_Matrix_Invert */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* with maximum accuracy (it uses a 64-bit intermediate integer */ + /* whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ + /* used to multiply a given value by a 16.16 fixed-point factor. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. Use a 16.16 factor here whenever */ + /* possible (see note below). */ + /* */ + /* <Return> */ + /* The result of `(a*b)/0x10000'. */ + /* */ + /* <Note> */ + /* This function has been optimized for the case where the absolute */ + /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ + /* As this happens mainly when scaling from notional units to */ + /* fractional pixels in FreeType, it resulted in noticeable speed */ + /* improvements between versions 2.x and 1.x. */ + /* */ + /* As a conclusion, always try to place a 16.16 factor as the */ + /* _second_ argument of this function; this can make a great */ + /* difference. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_DivFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ + /* used to divide a given value by a 16.16 fixed-point factor. */ + /* */ + /* <Input> */ + /* a :: The numerator. */ + /* b :: The denominator. Use a 16.16 factor here. */ + /* */ + /* <Return> */ + /* The result of `(a*0x10000)/b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_RoundFix */ + /* */ + /* <Description> */ + /* A very simple function used to round a 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number to be rounded. */ + /* */ + /* <Return> */ + /* `a' rounded to nearest 16.16 fixed integer, halfway cases away */ + /* from zero. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_CeilFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the ceiling function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the ceiling function is to be computed. */ + /* */ + /* <Return> */ + /* `a' rounded towards plus infinity. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_FloorFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the floor function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the floor function is to be computed. */ + /* */ + /* <Return> */ + /* `a' rounded towards minus infinity. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Vector_Transform */ + /* */ + /* <Description> */ + /* Transform a single vector through a 2x2 matrix. */ + /* */ + /* <InOut> */ + /* vector :: The target vector to transform. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the source 2x2 matrix. */ + /* */ + /* <Note> */ + /* The result is undefined if either `vector' or `matrix' is invalid. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vec, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* version */ + /* */ + /* <Title> */ + /* FreeType Version */ + /* */ + /* <Abstract> */ + /* Functions and macros related to FreeType versions. */ + /* */ + /* <Description> */ + /* Note that those functions and macros are of limited use because */ + /* even a new release of FreeType with only documentation changes */ + /* increases the version number. */ + /* */ + /* <Order> */ + /* FT_Library_Version */ + /* */ + /* FREETYPE_MAJOR */ + /* FREETYPE_MINOR */ + /* FREETYPE_PATCH */ + /* */ + /* FT_Face_CheckTrueTypePatents */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* FREETYPE_XXX */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. + * Use @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: The major version number. + * FREETYPE_MINOR :: The minor version number. + * FREETYPE_PATCH :: The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library + * with the `libtool' package is _not_ controlled by these three + * macros. + * + */ +#define FREETYPE_MAJOR 2 +#define FREETYPE_MINOR 6 +#define FREETYPE_PATCH 2 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Library_Version */ + /* */ + /* <Description> */ + /* Return the version of the FreeType library being used. This is */ + /* useful when dynamically linking to the library, since one cannot */ + /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ + /* @FREETYPE_PATCH. */ + /* */ + /* <Input> */ + /* library :: A source library handle. */ + /* */ + /* <Output> */ + /* amajor :: The major version number. */ + /* */ + /* aminor :: The minor version number. */ + /* */ + /* apatch :: The patch version number. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' argument is because */ + /* certain programs implement library initialization in a custom way */ + /* that doesn't use @FT_Init_FreeType. */ + /* */ + /* In such cases, the library version might not be available before */ + /* the library object has been created. */ + /* */ + FT_EXPORT( void ) + FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_CheckTrueTypePatents */ + /* */ + /* <Description> */ + /* Parse all bytecode instructions of a TrueType font file to check */ + /* whether any of the patented opcodes are used. This is only useful */ + /* if you want to be able to use the unpatented hinter with */ + /* fonts that do *not* use these opcodes. */ + /* */ + /* Note that this function parses *all* glyph instructions in the */ + /* font file, which may be slow. */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* <Return> */ + /* 1~if this is a TrueType font that uses one of the patented */ + /* opcodes, 0~otherwise. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_CheckTrueTypePatents( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* <Description> */ + /* Enable or disable the unpatented hinter for a given face. */ + /* Only enable it if you have determined that the face doesn't */ + /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* value :: New boolean setting. */ + /* */ + /* <Return> */ + /* The old setting value. This will always be false if this is not */ + /* an SFNT font, or if the unpatented hinter is not compiled in this */ + /* instance of the library. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + + /* */ + + +FT_END_HEADER + +#endif /* __FREETYPE_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftadvanc.h b/lib/osx/include/freetype/ftadvanc.h new file mode 100644 index 0000000..b4d2aed --- /dev/null +++ b/lib/osx/include/freetype/ftadvanc.h @@ -0,0 +1,187 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.h */ +/* */ +/* Quick computation of advance widths (specification only). */ +/* */ +/* Copyright 2008-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTADVANC_H__ +#define __FTADVANC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + * + * @order: + * FT_Get_Advance + * FT_Get_Advances + * + */ + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_ADVANCE_FLAG_FAST_ONLY */ + /* */ + /* <Description> */ + /* A bit-flag to be OR-ed with the `flags' parameter of the */ + /* @FT_Get_Advance and @FT_Get_Advances functions. */ + /* */ + /* If set, it indicates that you want these functions to fail if the */ + /* corresponding hinting mode or font driver doesn't allow for very */ + /* quick advance computation. */ + /* */ + /* Typically, glyphs that are either unscaled, unhinted, bitmapped, */ + /* or light-hinted can have their advance width computed very */ + /* quickly. */ + /* */ + /* Normal and bytecode hinted modes that require loading, scaling, */ + /* and hinting of the glyph outline, are extremely slow by */ + /* comparison. */ + /* */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advance */ + /* */ + /* <Description> */ + /* Retrieve the advance value of a given glyph outline in an */ + /* @FT_Face. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph, used to determine what kind */ + /* of advances you need. */ + /* <Output> */ + /* padvance :: The advance value. If scaling is performed (based on */ + /* the value of `load_flags'), the advance value is in */ + /* 16.16 format. Otherwise, it is in font units. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ + /* vertical advance corresponding to a vertical layout. */ + /* Otherwise, it is the horizontal advance in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* A scaled advance is returned in 16.16 format but isn't transformed */ + /* by the affine transformation specified by @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advances */ + /* */ + /* <Description> */ + /* Retrieve the advance values of several glyph outlines in an */ + /* @FT_Face. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* start :: The first glyph index. */ + /* */ + /* count :: The number of advance values you want to retrieve. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph. */ + /* */ + /* <Output> */ + /* padvance :: The advance values. This array, to be provided by the */ + /* caller, must contain at least `count' elements. */ + /* */ + /* If scaling is performed (based on the value of */ + /* `load_flags'), the advance values are in 16.16 format. */ + /* Otherwise, they are in font units. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ + /* vertical advances corresponding to a vertical layout. */ + /* Otherwise, they are the horizontal advances in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* Scaled advances are returned in 16.16 format but aren't */ + /* transformed by the affine transformation specified by */ + /* @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTADVANC_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftautoh.h b/lib/osx/include/freetype/ftautoh.h new file mode 100644 index 0000000..d0f6445 --- /dev/null +++ b/lib/osx/include/freetype/ftautoh.h @@ -0,0 +1,503 @@ +/***************************************************************************/ +/* */ +/* ftautoh.h */ +/* */ +/* FreeType API for controlling the auto-hinter (specification only). */ +/* */ +/* Copyright 2012-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTAUTOH_H__ +#define __FTAUTOH_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * auto_hinter + * + * @title: + * The auto-hinter + * + * @abstract: + * Controlling the auto-hinting module. + * + * @description: + * While FreeType's auto-hinter doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * Note that the auto-hinter's module name is `autofitter' for + * historical reasons. + * + */ + + + /************************************************************************** + * + * @property: + * glyph-to-script-map + * + * @description: + * *Experimental* *only* + * + * The auto-hinter provides various script modules to hint glyphs. + * Examples of supported scripts are Latin or CJK. Before a glyph is + * auto-hinted, the Unicode character map of the font gets examined, and + * the script is then determined based on Unicode character ranges, see + * below. + * + * OpenType fonts, however, often provide much more glyphs than + * character codes (small caps, superscripts, ligatures, swashes, etc.), + * to be controlled by so-called `features'. Handling OpenType features + * can be quite complicated and thus needs a separate library on top of + * FreeType. + * + * The mapping between glyph indices and scripts (in the auto-hinter + * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an + * array with `num_glyphs' elements, as found in the font's @FT_Face + * structure. The `glyph-to-script-map' property returns a pointer to + * this array, which can be modified as needed. Note that the + * modification should happen before the first glyph gets processed by + * the auto-hinter so that the global analysis of the font shapes + * actually uses the modified mapping. + * + * The following example code demonstrates how to access it (omitting + * the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_GlyphToScriptMap prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * + * prop.face = face; + * + * FT_Property_Get( library, "autofitter", + * "glyph-to-script-map", &prop ); + * + * // adjust `prop.map' as needed right here + * + * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); + * } + * + */ + + + /************************************************************************** + * + * @enum: + * FT_AUTOHINTER_SCRIPT_XXX + * + * @description: + * *Experimental* *only* + * + * A list of constants used for the @glyph-to-script-map property to + * specify the script submodule the auto-hinter should use for hinting a + * particular glyph. + * + * @values: + * FT_AUTOHINTER_SCRIPT_NONE :: + * Don't auto-hint this glyph. + * + * FT_AUTOHINTER_SCRIPT_LATIN :: + * Apply the latin auto-hinter. For the auto-hinter, `latin' is a + * very broad term, including Cyrillic and Greek also since characters + * from those scripts share the same design constraints. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0020 - U+007F // Basic Latin (no control characters) + * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) + * U+0100 - U+017F // Latin Extended-A + * U+0180 - U+024F // Latin Extended-B + * U+0250 - U+02AF // IPA Extensions + * U+02B0 - U+02FF // Spacing Modifier Letters + * U+0300 - U+036F // Combining Diacritical Marks + * U+0370 - U+03FF // Greek and Coptic + * U+0400 - U+04FF // Cyrillic + * U+0500 - U+052F // Cyrillic Supplement + * U+1D00 - U+1D7F // Phonetic Extensions + * U+1D80 - U+1DBF // Phonetic Extensions Supplement + * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement + * U+1E00 - U+1EFF // Latin Extended Additional + * U+1F00 - U+1FFF // Greek Extended + * U+2000 - U+206F // General Punctuation + * U+2070 - U+209F // Superscripts and Subscripts + * U+20A0 - U+20CF // Currency Symbols + * U+2150 - U+218F // Number Forms + * U+2460 - U+24FF // Enclosed Alphanumerics + * U+2C60 - U+2C7F // Latin Extended-C + * U+2DE0 - U+2DFF // Cyrillic Extended-A + * U+2E00 - U+2E7F // Supplemental Punctuation + * U+A640 - U+A69F // Cyrillic Extended-B + * U+A720 - U+A7FF // Latin Extended-D + * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) + * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols + * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_CJK :: + * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old + * Vietnamese, and some other scripts. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+1100 - U+11FF // Hangul Jamo + * U+2E80 - U+2EFF // CJK Radicals Supplement + * U+2F00 - U+2FDF // Kangxi Radicals + * U+2FF0 - U+2FFF // Ideographic Description Characters + * U+3000 - U+303F // CJK Symbols and Punctuation + * U+3040 - U+309F // Hiragana + * U+30A0 - U+30FF // Katakana + * U+3100 - U+312F // Bopomofo + * U+3130 - U+318F // Hangul Compatibility Jamo + * U+3190 - U+319F // Kanbun + * U+31A0 - U+31BF // Bopomofo Extended + * U+31C0 - U+31EF // CJK Strokes + * U+31F0 - U+31FF // Katakana Phonetic Extensions + * U+3200 - U+32FF // Enclosed CJK Letters and Months + * U+3300 - U+33FF // CJK Compatibility + * U+3400 - U+4DBF // CJK Unified Ideographs Extension A + * U+4DC0 - U+4DFF // Yijing Hexagram Symbols + * U+4E00 - U+9FFF // CJK Unified Ideographs + * U+A960 - U+A97F // Hangul Jamo Extended-A + * U+AC00 - U+D7AF // Hangul Syllables + * U+D7B0 - U+D7FF // Hangul Jamo Extended-B + * U+F900 - U+FAFF // CJK Compatibility Ideographs + * U+FE10 - U+FE1F // Vertical forms + * U+FE30 - U+FE4F // CJK Compatibility Forms + * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms + * U+1B000 - U+1B0FF // Kana Supplement + * U+1D300 - U+1D35F // Tai Xuan Hing Symbols + * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement + * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B + * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C + * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D + * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_INDIC :: + * Apply the indic auto-hinter, covering all major scripts from the + * Indian sub-continent and some other related scripts like Thai, Lao, + * or Tibetan. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0900 - U+0DFF // Indic Range + * U+0F00 - U+0FFF // Tibetan + * U+1900 - U+194F // Limbu + * U+1B80 - U+1BBF // Sundanese + * U+1C80 - U+1CDF // Meetei Mayak + * U+A800 - U+A82F // Syloti Nagri + * U+11800 - U+118DF // Sharada + * } + * + * Note that currently Indic support is rudimentary only, missing blue + * zone support. + * + */ +#define FT_AUTOHINTER_SCRIPT_NONE 0 +#define FT_AUTOHINTER_SCRIPT_LATIN 1 +#define FT_AUTOHINTER_SCRIPT_CJK 2 +#define FT_AUTOHINTER_SCRIPT_INDIC 3 + + + /************************************************************************** + * + * @struct: + * FT_Prop_GlyphToScriptMap + * + * @description: + * *Experimental* *only* + * + * The data exchange structure for the @glyph-to-script-map property. + * + */ + typedef struct FT_Prop_GlyphToScriptMap_ + { + FT_Face face; + FT_UShort* map; + + } FT_Prop_GlyphToScriptMap; + + + /************************************************************************** + * + * @property: + * fallback-script + * + * @description: + * *Experimental* *only* + * + * If no auto-hinter script module can be assigned to a glyph, a + * fallback script gets assigned to it (see also the + * @glyph-to-script-map property). By default, this is + * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property, + * this fallback value can be changed. + * + * { + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * fallback script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback script will affect this face. + * + */ + + + /************************************************************************** + * + * @property: + * default-script + * + * @description: + * *Experimental* *only* + * + * If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make + * the HarfBuzz library access OpenType features for getting better + * glyph coverages, this property sets the (auto-fitter) script to be + * used for the default (OpenType) script data of a font's GSUB table. + * Features for the default script are intended for all scripts not + * explicitly handled in GSUB; an example is a `dlig' feature, + * containing the combination of the characters `T', `E', and `L' to + * form a `TEL' ligature. + * + * By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the + * `default-script' property, this default value can be changed. + * + * { + * FT_Library library; + * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "default-script", &default_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * default script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the default script will affect this face. + * + */ + + + /************************************************************************** + * + * @property: + * increase-x-height + * + * @description: + * For ppem values in the range 6~<= ppem <= `increase-x-height', round + * up the font's x~height much more often than normally. If the value + * is set to~0, which is the default, this feature is switched off. Use + * this property to improve the legibility of small font sizes if + * necessary. + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_IncreaseXHeight prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); + * + * prop.face = face; + * prop.limit = 14; + * + * FT_Property_Set( library, "autofitter", + * "increase-x-height", &prop ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Prop_IncreaseXHeight + * + * @description: + * The data exchange structure for the @increase-x-height property. + * + */ + typedef struct FT_Prop_IncreaseXHeight_ + { + FT_Face face; + FT_UInt limit; + + } FT_Prop_IncreaseXHeight; + + + /************************************************************************** + * + * @property: + * warping + * + * @description: + * *Experimental* *only* + * + * If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to + * activate the warp hinting code in the auto-hinter, this property + * switches warping on and off. + * + * Warping only works in `light' auto-hinting mode. The idea of the + * code is to slightly scale and shift a glyph along the non-hinted + * dimension (which is usually the horizontal axis) so that as much of + * its segments are aligned (more or less) to the grid. To find out a + * glyph's optimal scaling and shifting value, various parameter + * combinations are tried and scored. + * + * By default, warping is off. The example below shows how to switch on + * warping (omitting the error handling). + * + * { + * FT_Library library; + * FT_Bool warping = 1; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "warping", &warping ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * The warping code can also change advance widths. Have a look at the + * `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure + * for details on improving inter-glyph distances while rendering. + * + * Since warping is a global property of the auto-hinter it is best to + * change its value before rendering any face. Otherwise, you should + * reload all faces that get auto-hinted in `light' hinting mode. + * + */ + + + /************************************************************************** + * + * @property: + * no-stem-darkening[autofit] + * + * @description: + * *Experimental* *only,* *requires* *linear* *alpha* *blending* *and* + * *gamma* *correction* + * + * Stem darkening emboldens glyphs at smaller sizes to make them more + * readable on common low-DPI screens when using linear alpha blending + * and gamma correction, see @FT_Render_Glyph. When not using linear + * alpha blending and gamma correction, glyphs will appear heavy and + * fuzzy! + * + * Gamma correction essentially lightens fonts since shades of grey are + * shifted to higher pixel values (=~higher brightness) to match the + * original intention to the reality of our screens. The side-effect is + * that glyphs `thin out'. Mac OS~X and Adobe's proprietary font + * rendering library implement a counter-measure: stem darkening at + * smaller sizes where shades of gray dominate. By emboldening a glyph + * slightly in relation to its pixel size, individual pixels get higher + * coverage of filled-in outlines and are therefore `blacker'. This + * counteracts the `thinning out' of glyphs, making text remain readable + * at smaller sizes. All glyphs that pass through the auto-hinter will + * be emboldened unless this property is set to TRUE. + * + * See the description of the CFF driver for algorithmic details. Total + * consistency with the CFF driver is currently not achieved because the + * emboldening method differs and glyphs must be scaled down on the + * Y-axis to keep outline points inside their precomputed blue zones. + * The smaller the size (especially 9ppem and down), the higher the loss + * of emboldening versus the CFF driver. + * + */ + + + /************************************************************************** + * + * @property: + * darkening-parameters[autofit] + * + * @description: + * *Experimental* *only* + * + * See the description of the CFF driver for details. This + * implementation appropriates the + * CFF_CONFIG_OPTION_DARKENING_PARAMETER_* #defines for consistency. + * Note the differences described in @no-stem-darkening[autofit]. + * + */ + + + /* */ + + +FT_END_HEADER + +#endif /* __FTAUTOH_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftbbox.h b/lib/osx/include/freetype/ftbbox.h new file mode 100644 index 0000000..9d9d040 --- /dev/null +++ b/lib/osx/include/freetype/ftbbox.h @@ -0,0 +1,101 @@ +/***************************************************************************/ +/* */ +/* ftbbox.h */ +/* */ +/* FreeType exact bbox computation (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This component has a _single_ role: to compute exact outline bounding */ + /* boxes. */ + /* */ + /* It is separated from the rest of the engine for various technical */ + /* reasons. It may well be integrated in `ftoutln' later. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTBBOX_H__ +#define __FTBBOX_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_BBox */ + /* */ + /* <Description> */ + /* Compute the exact bounding box of an outline. This is slower */ + /* than computing the control box. However, it uses an advanced */ + /* algorithm that returns _very_ quickly when the two boxes */ + /* coincide. Otherwise, the outline Bézier arcs are traversed to */ + /* extract their extrema. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline. */ + /* */ + /* <Output> */ + /* abbox :: The outline's exact bounding box. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the font is tricky and the glyph has been loaded with */ + /* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */ + /* reasonable values for the BBox it is necessary to load the glyph */ + /* at a large ppem value (so that the hinting instructions can */ + /* properly shift and scale the subglyphs), then extracting the BBox, */ + /* which can be eventually converted back to font units. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTBBOX_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/osx/include/freetype/ftbdf.h b/lib/osx/include/freetype/ftbdf.h new file mode 100644 index 0000000..0bdabf4 --- /dev/null +++ b/lib/osx/include/freetype/ftbdf.h @@ -0,0 +1,210 @@ +/***************************************************************************/ +/* */ +/* ftbdf.h */ +/* */ +/* FreeType API for accessing BDF-specific strings (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBDF_H__ +#define __FTBDF_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bdf_fonts */ + /* */ + /* <Title> */ + /* BDF and PCF Files */ + /* */ + /* <Abstract> */ + /* BDF and PCF specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions specific to BDF */ + /* and PCF fonts. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * BDF_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ + typedef enum BDF_PropertyType_ + { + BDF_PROPERTY_TYPE_NONE = 0, + BDF_PROPERTY_TYPE_ATOM = 1, + BDF_PROPERTY_TYPE_INTEGER = 2, + BDF_PROPERTY_TYPE_CARDINAL = 3 + + } BDF_PropertyType; + + + /********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ + typedef struct BDF_PropertyRec_* BDF_Property; + + + /********************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be + * NULL, indicating an empty string. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ + typedef struct BDF_PropertyRec_ + { + BDF_PropertyType type; + union { + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; + + } u; + + } BDF_PropertyRec; + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to + * the BDF specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Charset_ID( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: A handle to the input face. + * + * name :: The property name. + * + * @output: + * aproperty :: The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A `property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props' array within a `FontRec' structure of a PCF font. + * + * Integer properties are always stored as `signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type' is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + /* */ + +FT_END_HEADER + +#endif /* __FTBDF_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftbitmap.h b/lib/osx/include/freetype/ftbitmap.h new file mode 100644 index 0000000..46cc47b --- /dev/null +++ b/lib/osx/include/freetype/ftbitmap.h @@ -0,0 +1,240 @@ +/***************************************************************************/ +/* */ +/* ftbitmap.h */ +/* */ +/* FreeType utility functions for bitmaps (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBITMAP_H__ +#define __FTBITMAP_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bitmap_handling */ + /* */ + /* <Title> */ + /* Bitmap Handling */ + /* */ + /* <Abstract> */ + /* Handling FT_Bitmap objects. */ + /* */ + /* <Description> */ + /* This section contains functions for handling @FT_Bitmap objects. */ + /* Note that none of the functions changes the bitmap's `flow' (as */ + /* indicated by the sign of the `pitch' field in `FT_Bitmap'). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Init */ + /* */ + /* <Description> */ + /* Initialize a pointer to an @FT_Bitmap structure. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the bitmap structure. */ + /* */ + /* <Note> */ + /* A deprecated name for the same function is `FT_Bitmap_New'. */ + /* */ + FT_EXPORT( void ) + FT_Bitmap_Init( FT_Bitmap *abitmap ); + + + /* deprecated */ + FT_EXPORT( void ) + FT_Bitmap_New( FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Copy */ + /* */ + /* <Description> */ + /* Copy a bitmap into another one. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: A handle to the source bitmap. */ + /* */ + /* <Output> */ + /* target :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Copy( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Embolden */ + /* */ + /* <Description> */ + /* Embolden a bitmap. The new bitmap will be about `xStrength' */ + /* pixels wider and `yStrength' pixels higher. The left and bottom */ + /* borders are kept unchanged. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* xStrength :: How strong the glyph is emboldened horizontally. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* yStrength :: How strong the glyph is emboldened vertically. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* <InOut> */ + /* bitmap :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The current implementation restricts `xStrength' to be less than */ + /* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ + /* */ + /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ + /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ + /* */ + /* Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format */ + /* are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Embolden( FT_Library library, + FT_Bitmap* bitmap, + FT_Pos xStrength, + FT_Pos yStrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Convert */ + /* */ + /* <Description> */ + /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */ + /* to a bitmap object with depth 8bpp, making the number of used */ + /* bytes line (a.k.a. the `pitch') a multiple of `alignment'. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: The source bitmap. */ + /* */ + /* alignment :: The pitch of the bitmap is a multiple of this */ + /* parameter. Common values are 1, 2, or 4. */ + /* */ + /* <Output> */ + /* target :: The target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* It is possible to call @FT_Bitmap_Convert multiple times without */ + /* calling @FT_Bitmap_Done (the memory is simply reallocated). */ + /* */ + /* Use @FT_Bitmap_Done to finally remove the bitmap object. */ + /* */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Convert( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target, + FT_Int alignment ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GlyphSlot_Own_Bitmap */ + /* */ + /* <Description> */ + /* Make sure that a glyph slot owns `slot->bitmap'. */ + /* */ + /* <Input> */ + /* slot :: The glyph slot. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function is to be used in combination with */ + /* @FT_Bitmap_Embolden. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Done */ + /* */ + /* <Description> */ + /* Destroy a bitmap object initialized with @FT_Bitmap_Init. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* bitmap :: The bitmap object to be freed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Done( FT_Library library, + FT_Bitmap *bitmap ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTBITMAP_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftbzip2.h b/lib/osx/include/freetype/ftbzip2.h new file mode 100644 index 0000000..c25f946 --- /dev/null +++ b/lib/osx/include/freetype/ftbzip2.h @@ -0,0 +1,102 @@ +/***************************************************************************/ +/* */ +/* ftbzip2.h */ +/* */ +/* Bzip2-compressed stream support. */ +/* */ +/* Copyright 2010-2015 by */ +/* Joel Klinghed. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBZIP2_H__ +#define __FTBZIP2_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bzip2 */ + /* */ + /* <Title> */ + /* BZIP2 Streams */ + /* */ + /* <Abstract> */ + /* Using bzip2-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Bzip2-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenBzip2 + * + * @description: + * Open a new stream to parse bzip2-compressed font files. This is + * mainly used to support the compressed `*.pcf.bz2' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed stream + * from it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with bzip2 support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTBZIP2_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftcache.h b/lib/osx/include/freetype/ftcache.h new file mode 100644 index 0000000..68525bb --- /dev/null +++ b/lib/osx/include/freetype/ftcache.h @@ -0,0 +1,1057 @@ +/***************************************************************************/ +/* */ +/* ftcache.h */ +/* */ +/* FreeType Cache subsystem (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCACHE_H__ +#define __FTCACHE_H__ + + +#include <ft2build.h> +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************* + * + * <Section> + * cache_subsystem + * + * <Title> + * Cache Sub-System + * + * <Abstract> + * How to cache face, size, and glyph data with FreeType~2. + * + * <Description> + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_' prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert an @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. To monitor termination of face objects, the + * finalizer callback in the `generic' field of the @FT_Face object can + * be used, which might also be used to store the @FTC_FaceID of the + * face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * *persistent*, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may + * keep internally. Failure to do so will lead to incorrect behaviour + * or even crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then + * later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient + * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small + * bitmaps directly. (A small bitmap is one whose metrics and + * dimensions all fit into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * <Order> + * FTC_Manager + * FTC_FaceID + * FTC_Face_Requester + * + * FTC_Manager_New + * FTC_Manager_Reset + * FTC_Manager_Done + * FTC_Manager_LookupFace + * FTC_Manager_LookupSize + * FTC_Manager_RemoveFaceID + * + * FTC_Node + * FTC_Node_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC TYPE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined + * structure containing a font file path, and face index. + * + * @note: + * Never use NULL as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager that calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even + * memory leaks and crashes. + */ + typedef FT_Pointer FTC_FaceID; + + + /************************************************************************ + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * <Input> + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * <Output> + * aface :: + * A new @FT_Face handle. + * + * <Return> + * FreeType error code. 0~means success. + * + * <Note> + * The third parameter `req_data' is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer req_data, + FT_Face* aface ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Manager */ + /* */ + /* <Description> */ + /* This object corresponds to one instance of the cache-subsystem. */ + /* It is used to cache one or more @FT_Face objects, along with */ + /* corresponding @FT_Size objects. */ + /* */ + /* The manager intentionally limits the total number of opened */ + /* @FT_Face and @FT_Size objects to control memory usage. See the */ + /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ + /* */ + /* The manager is also used to cache `nodes' of various types while */ + /* limiting their total memory usage. */ + /* */ + /* All limitations are enforced by keeping lists of managed objects */ + /* in most-recently-used order, and flushing old nodes to make room */ + /* for new ones. */ + /* */ + typedef struct FTC_ManagerRec_* FTC_Manager; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Node */ + /* */ + /* <Description> */ + /* An opaque handle to a cache node object. Each cache node is */ + /* reference-counted. A node with a count of~0 might be flushed */ + /* out of a full cache whenever a lookup request is performed. */ + /* */ + /* If you look up nodes, you have the ability to `acquire' them, */ + /* i.e., to increment their reference count. This will prevent the */ + /* node from being flushed out of the cache until you explicitly */ + /* `release' it (see @FTC_Node_Unref). */ + /* */ + /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ + /* */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_New */ + /* */ + /* <Description> */ + /* Create a new cache manager. */ + /* */ + /* <Input> */ + /* library :: The parent FreeType library handle to use. */ + /* */ + /* max_faces :: Maximum number of opened @FT_Face objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ + /* Use~0 for defaults. Note that this value does not */ + /* account for managed @FT_Face and @FT_Size objects. */ + /* */ + /* requester :: An application-provided callback used to translate */ + /* face IDs into real @FT_Face objects. */ + /* */ + /* req_data :: A generic pointer that is passed to the requester */ + /* each time it is called (see @FTC_Face_Requester). */ + /* */ + /* <Output> */ + /* amanager :: A handle to a new manager object. 0~in case of */ + /* failure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Reset */ + /* */ + /* <Description> */ + /* Empty a given cache manager. This simply gets rid of all the */ + /* currently cached @FT_Face and @FT_Size objects within the manager. */ + /* */ + /* <InOut> */ + /* manager :: A handle to the manager. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Done */ + /* */ + /* <Description> */ + /* Destroy a given manager after emptying it. */ + /* */ + /* <Input> */ + /* manager :: A handle to the target cache manager object. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupFace */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Face object that corresponds to a given face ID */ + /* through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* face_id :: The ID of the face object. */ + /* */ + /* <Output> */ + /* aface :: A handle to the face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Face object is always owned by the manager. You */ + /* should never try to discard it yourself. */ + /* */ + /* The @FT_Face object doesn't necessarily have a current size object */ + /* (i.e., face->size can be~0). If you need a specific `font size', */ + /* use @FTC_Manager_LookupSize instead. */ + /* */ + /* Never change the face's transformation matrix (i.e., never call */ + /* the @FT_Set_Transform function) on a returned face! If you need */ + /* to transform glyphs, do it yourself after glyph loading. */ + /* */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory was available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_ScalerRec */ + /* */ + /* <Description> */ + /* A structure used to describe a given character size in either */ + /* pixels or points to the cache manager. See */ + /* @FTC_Manager_LookupSize. */ + /* */ + /* <Fields> */ + /* face_id :: The source face ID. */ + /* */ + /* width :: The character width. */ + /* */ + /* height :: The character height. */ + /* */ + /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ + /* interpreted as integer pixel character sizes. */ + /* Otherwise, they are expressed as 1/64th of points. */ + /* */ + /* x_res :: Only used when `pixel' is value~0 to indicate the */ + /* horizontal resolution in dpi. */ + /* */ + /* y_res :: Only used when `pixel' is value~0 to indicate the */ + /* vertical resolution in dpi. */ + /* */ + /* <Note> */ + /* This type is mainly used to retrieve @FT_Size objects through the */ + /* cache manager. */ + /* */ + typedef struct FTC_ScalerRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int pixel; + FT_UInt x_res; + FT_UInt y_res; + + } FTC_ScalerRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_Scaler */ + /* */ + /* <Description> */ + /* A handle to an @FTC_ScalerRec structure. */ + /* */ + typedef struct FTC_ScalerRec_* FTC_Scaler; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupSize */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Size object that corresponds to a given */ + /* @FTC_ScalerRec pointer through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* scaler :: A scaler handle. */ + /* */ + /* <Output> */ + /* asize :: A handle to the size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Size object is always owned by the manager. You */ + /* should never try to discard it by yourself. */ + /* */ + /* You can access the parent @FT_Face object simply as `size->face' */ + /* if you need it. Note that this object is also owned by the */ + /* manager. */ + /* */ + /* <Note> */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory is available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Node_Unref */ + /* */ + /* <Description> */ + /* Decrement a cache node's internal reference count. When the count */ + /* reaches 0, it is not destroyed but becomes eligible for subsequent */ + /* cache flushes. */ + /* */ + /* <Input> */ + /* node :: The cache node handle. */ + /* */ + /* manager :: The cache manager handle. */ + /* */ + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + + /************************************************************************* + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that + * a given @FTC_FaceID is no longer valid, either because its + * content changed, or because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id', with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear + * in later lookups with the same `face_id' value, and to be immediately + * destroyed when released by all their users. + * + */ + FT_EXPORT( void ) + FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to + * hold character codes -> glyph indices mappings. + * + */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /************************************************************************* + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /************************************************************************ + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means `no glyph'. + * + */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** IMAGE CACHE OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ + typedef struct FTC_ImageTypeRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int32 flags; + + } FTC_ImageTypeRec; + + + /************************************************************************* + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ + typedef struct FTC_ImageTypeRec_* FTC_ImageType; + + + /* */ + + +#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ + ( (d1)->face_id == (d2)->face_id && \ + (d1)->width == (d2)->width && \ + (d1)->flags == (d2)->flags ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_ImageCache */ + /* */ + /* <Description> */ + /* A handle to a glyph image cache object. They are designed to */ + /* hold many distinct glyph images while not exceeding a certain */ + /* memory threshold. */ + /* */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_New */ + /* */ + /* <Description> */ + /* Create a new glyph image cache. */ + /* */ + /* <Input> */ + /* manager :: The parent manager for the image cache. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new glyph image cache object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_Lookup */ + /* */ + /* <Description> */ + /* Retrieve a given glyph image from a glyph image cache. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* type :: A pointer to a glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* scaler :: A pointer to a scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ + /* glyphs; you should always use the FreeType cache API instead. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBit */ + /* */ + /* <Description> */ + /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ + /* structure for details. */ + /* */ + typedef struct FTC_SBitRec_* FTC_SBit; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_SBitRec */ + /* */ + /* <Description> */ + /* A very compact structure used to describe a small glyph bitmap. */ + /* */ + /* <Fields> */ + /* width :: The bitmap width in pixels. */ + /* */ + /* height :: The bitmap height in pixels. */ + /* */ + /* left :: The horizontal distance from the pen position to the */ + /* left bitmap border (a.k.a. `left side bearing', or */ + /* `lsb'). */ + /* */ + /* top :: The vertical distance from the pen position (on the */ + /* baseline) to the upper bitmap border (a.k.a. `top */ + /* side bearing'). The distance is positive for upwards */ + /* y~coordinates. */ + /* */ + /* format :: The format of the glyph bitmap (monochrome or gray). */ + /* */ + /* max_grays :: Maximum gray level value (in the range 1 to~255). */ + /* */ + /* pitch :: The number of bytes per bitmap line. May be positive */ + /* or negative. */ + /* */ + /* xadvance :: The horizontal advance width in pixels. */ + /* */ + /* yadvance :: The vertical advance height in pixels. */ + /* */ + /* buffer :: A pointer to the bitmap pixels. */ + /* */ + typedef struct FTC_SBitRec_ + { + FT_Byte width; + FT_Byte height; + FT_Char left; + FT_Char top; + + FT_Byte format; + FT_Byte max_grays; + FT_Short pitch; + FT_Char xadvance; + FT_Char yadvance; + + FT_Byte* buffer; + + } FTC_SBitRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBitCache */ + /* */ + /* <Description> */ + /* A handle to a small bitmap cache. These are special cache objects */ + /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ + /* much more efficient way than the traditional glyph image cache */ + /* implemented by @FTC_ImageCache. */ + /* */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_New */ + /* */ + /* <Description> */ + /* Create a new cache to store small glyph bitmaps. */ + /* */ + /* <Input> */ + /* manager :: A handle to the source cache manager. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new sbit cache. NULL in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_Lookup */ + /* */ + /* <Description> */ + /* Look up a given small glyph bitmap in a given sbit cache and */ + /* `lock' it to prevent its flushing from the cache until needed. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* type :: A pointer to the glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* scaler :: A pointer to the scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTCACHE_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftcffdrv.h b/lib/osx/include/freetype/ftcffdrv.h new file mode 100644 index 0000000..8500346 --- /dev/null +++ b/lib/osx/include/freetype/ftcffdrv.h @@ -0,0 +1,262 @@ +/***************************************************************************/ +/* */ +/* ftcffdrv.h */ +/* */ +/* FreeType API for controlling the CFF driver (specification only). */ +/* */ +/* Copyright 2013-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCFFDRV_H__ +#define __FTCFFDRV_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cff_driver + * + * @title: + * The CFF driver + * + * @abstract: + * Controlling the CFF driver module. + * + * @description: + * While FreeType's CFF driver doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The list below gives the available properties + * together with the necessary macros and structures. + * + * The CFF driver's module name is `cff'. + * + * *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine* + * + * The rasterizer is positioning horizontal features (e.g., ascender + * height & x-height, or crossbars) on the pixel grid and minimizing the + * amount of antialiasing applied to them, while placing vertical + * features (vertical stems) on the pixel grid without hinting, thus + * representing the stem position and weight accurately. Sometimes the + * vertical stems may be only partially black. In this context, + * `antialiasing' means that stems are not positioned exactly on pixel + * borders, causing a fuzzy appearance. + * + * There are two principles behind this approach. + * + * 1) No hinting in the horizontal direction: Unlike `superhinted' + * TrueType, which changes glyph widths to accommodate regular + * inter-glyph spacing, Adobe's approach is `faithful to the design' in + * representing both the glyph width and the inter-glyph spacing + * designed for the font. This makes the screen display as close as it + * can be to the result one would get with infinite resolution, while + * preserving what is considered the key characteristics of each glyph. + * Note that the distances between unhinted and grid-fitted positions at + * small sizes are comparable to kerning values and thus would be + * noticeable (and distracting) while reading if hinting were applied. + * + * One of the reasons to not hint horizontally is antialiasing for LCD + * screens: The pixel geometry of modern displays supplies three + * vertical sub-pixels as the eye moves horizontally across each visible + * pixel. On devices where we can be certain this characteristic is + * present a rasterizer can take advantage of the sub-pixels to add + * increments of weight. In Western writing systems this turns out to + * be the more critical direction anyway; the weights and spacing of + * vertical stems (see above) are central to Armenian, Cyrillic, Greek, + * and Latin type designs. Even when the rasterizer uses greyscale + * antialiasing instead of color (a necessary compromise when one + * doesn't know the screen characteristics), the unhinted vertical + * features preserve the design's weight and spacing much better than + * aliased type would. + * + * 2) Aligment in the vertical direction: Weights and spacing along the + * y~axis are less critical; what is much more important is the visual + * alignment of related features (like cap-height and x-height). The + * sense of alignment for these is enhanced by the sharpness of grid-fit + * edges, while the cruder vertical resolution (full pixels instead of + * 1/3 pixels) is less of a problem. + * + * On the technical side, horizontal alignment zones for ascender, + * x-height, and other important height values (traditionally called + * `blue zones') as defined in the font are positioned independently, + * each being rounded to the nearest pixel edge, taking care of + * overshoot suppression at small sizes, stem darkening, and scaling. + * + * Hstems (this is, hint values defined in the font to help align + * horizontal features) that fall within a blue zone are said to be + * `captured' and are aligned to that zone. Uncaptured stems are moved + * in one of four ways, top edge up or down, bottom edge up or down. + * Unless there are conflicting hstems, the smallest movement is taken + * to minimize distortion. + * + * @order: + * hinting-engine + * no-stem-darkening[cff] + * darkening-parameters[cff] + * + */ + + + /************************************************************************** + * + * @property: + * hinting-engine + * + * @description: + * Thanks to Adobe, which contributed a new hinting (and parsing) + * engine, an application can select between `freetype' and `adobe' if + * compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration + * macro isn't defined, `hinting-engine' does nothing. + * + * The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is + * defined, and `adobe' otherwise. + * + * The following example code demonstrates how to select Adobe's hinting + * engine (omitting the error handling). + * + * { + * FT_Library library; + * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_CFF_HINTING_XXX + * + * @description: + * A list of constants used for the @hinting-engine property to select + * the hinting engine for CFF fonts. + * + * @values: + * FT_CFF_HINTING_FREETYPE :: + * Use the old FreeType hinting engine. + * + * FT_CFF_HINTING_ADOBE :: + * Use the hinting engine contributed by Adobe. + * + */ +#define FT_CFF_HINTING_FREETYPE 0 +#define FT_CFF_HINTING_ADOBE 1 + + + /************************************************************************** + * + * @property: + * no-stem-darkening[cff] + * + * @description: + * By default, the Adobe CFF engine darkens stems at smaller sizes, + * regardless of hinting, to enhance contrast. This feature requires + * a rendering system with proper gamma correction. Setting this + * property, stem darkening gets switched off. + * + * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. + * + * { + * FT_Library library; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @property: + * darkening-parameters[cff] + * + * @description: + * By default, the Adobe CFF engine darkens stems as follows (if the + * `no-stem-darkening' property isn't set): + * + * { + * stem width <= 0.5px: darkening amount = 0.4px + * stem width = 1px: darkening amount = 0.275px + * stem width = 1.667px: darkening amount = 0.275px + * stem width >= 2.333px: darkening amount = 0px + * } + * + * and piecewise linear in-between. At configuration time, these four + * control points can be set with the macro + * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control + * points can be changed using the `darkening-parameters' property, as + * the following example demonstrates. + * + * { + * FT_Library library; + * FT_Int darken_params[8] = { 500, 300, // x1, y1 + * 1000, 200, // x2, y2 + * 1500, 100, // x3, y3 + * 2000, 0 }; // x4, y4 + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "darkening-parameters", darken_params ); + * } + * + * The x~values give the stem width, and the y~values the darkening + * amount. The unit is 1000th of pixels. All coordinate values must be + * positive; the x~values must be monotonically increasing; the + * y~values must be monotonically decreasing and smaller than or + * equal to 500 (corresponding to half a pixel); the slope of each + * linear piece must be shallower than -1 (e.g., -.4). + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + /* */ + + +FT_END_HEADER + + +#endif /* __FTCFFDRV_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftchapters.h b/lib/osx/include/freetype/ftchapters.h new file mode 100644 index 0000000..ab43895 --- /dev/null +++ b/lib/osx/include/freetype/ftchapters.h @@ -0,0 +1,135 @@ +/***************************************************************************/ +/* */ +/* This file defines the structure of the FreeType reference. */ +/* It is used by the python script that generates the HTML files. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* general_remarks */ +/* */ +/* <Title> */ +/* General Remarks */ +/* */ +/* <Sections> */ +/* header_inclusion */ +/* user_allocation */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* core_api */ +/* */ +/* <Title> */ +/* Core API */ +/* */ +/* <Sections> */ +/* version */ +/* basic_types */ +/* base_interface */ +/* glyph_variants */ +/* glyph_management */ +/* mac_specific */ +/* sizes_management */ +/* header_file_macros */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* format_specific */ +/* */ +/* <Title> */ +/* Format-Specific API */ +/* */ +/* <Sections> */ +/* multiple_masters */ +/* truetype_tables */ +/* type1_tables */ +/* sfnt_names */ +/* bdf_fonts */ +/* cid_fonts */ +/* pfr_fonts */ +/* winfnt_fonts */ +/* font_formats */ +/* gasp_table */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* module_specific */ +/* */ +/* <Title> */ +/* Controlling FreeType Modules */ +/* */ +/* <Sections> */ +/* auto_hinter */ +/* cff_driver */ +/* tt_driver */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* cache_subsystem */ +/* */ +/* <Title> */ +/* Cache Sub-System */ +/* */ +/* <Sections> */ +/* cache_subsystem */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* support_api */ +/* */ +/* <Title> */ +/* Support API */ +/* */ +/* <Sections> */ +/* computations */ +/* list_processing */ +/* outline_processing */ +/* quick_advance */ +/* bitmap_handling */ +/* raster */ +/* glyph_stroker */ +/* system_interface */ +/* module_management */ +/* gzip */ +/* lzw */ +/* bzip2 */ +/* lcd_filtering */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* error_codes */ +/* */ +/* <Title> */ +/* Error Codes */ +/* */ +/* <Sections> */ +/* error_enumerations */ +/* error_code_values */ +/* */ +/***************************************************************************/ diff --git a/lib/osx/include/freetype/ftcid.h b/lib/osx/include/freetype/ftcid.h new file mode 100644 index 0000000..05741c8 --- /dev/null +++ b/lib/osx/include/freetype/ftcid.h @@ -0,0 +1,168 @@ +/***************************************************************************/ +/* */ +/* ftcid.h */ +/* */ +/* FreeType API for accessing CID font information (specification). */ +/* */ +/* Copyright 2007-2015 by */ +/* Dereg Clegg and Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCID_H__ +#define __FTCID_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cid_fonts */ + /* */ + /* <Title> */ + /* CID Fonts */ + /* */ + /* <Abstract> */ + /* CID-keyed font specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of CID-keyed font specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In + * constrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SNFT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTCID_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/fterrdef.h b/lib/osx/include/freetype/fterrdef.h new file mode 100644 index 0000000..3bf4e63 --- /dev/null +++ b/lib/osx/include/freetype/fterrdef.h @@ -0,0 +1,276 @@ +/***************************************************************************/ +/* */ +/* fterrdef.h */ +/* */ +/* FreeType error codes (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* error_code_values */ + /* */ + /* <Title> */ + /* Error Code Values */ + /* */ + /* <Abstract> */ + /* All possible error codes returned by FreeType functions. */ + /* */ + /* <Description> */ + /* The list below is taken verbatim from the file `fterrdef.h' */ + /* (loaded automatically by including `FT_FREETYPE_H'). The first */ + /* argument of the `FT_ERROR_DEF_' macro is the error label; by */ + /* default, the prefix `FT_Err_' gets added so that you get error */ + /* names like `FT_Err_Cannot_Open_Resource'. The second argument is */ + /* the error code, and the last argument an error string, which is not */ + /* used by FreeType. */ + /* */ + /* Within your application you should *only* use error names and */ + /* *never* its numeric values! The latter might (and actually do) */ + /* change in forthcoming FreeType versions. */ + /* */ + /* Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero. */ + /* See the `Error Enumerations' subsection how to automatically */ + /* generate a list of error strings. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Err_XXX */ + /* */ + /*************************************************************************/ + + /* generic errors */ + + FT_NOERRORDEF_( Ok, 0x00, + "no error" ) + + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, + "cannot open resource" ) + FT_ERRORDEF_( Unknown_File_Format, 0x02, + "unknown file format" ) + FT_ERRORDEF_( Invalid_File_Format, 0x03, + "broken file" ) + FT_ERRORDEF_( Invalid_Version, 0x04, + "invalid FreeType version" ) + FT_ERRORDEF_( Lower_Module_Version, 0x05, + "module version is too low" ) + FT_ERRORDEF_( Invalid_Argument, 0x06, + "invalid argument" ) + FT_ERRORDEF_( Unimplemented_Feature, 0x07, + "unimplemented feature" ) + FT_ERRORDEF_( Invalid_Table, 0x08, + "broken table" ) + FT_ERRORDEF_( Invalid_Offset, 0x09, + "broken offset within table" ) + FT_ERRORDEF_( Array_Too_Large, 0x0A, + "array allocation size too large" ) + FT_ERRORDEF_( Missing_Module, 0x0B, + "missing module" ) + FT_ERRORDEF_( Missing_Property, 0x0C, + "missing property" ) + + /* glyph/character errors */ + + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, + "invalid glyph index" ) + FT_ERRORDEF_( Invalid_Character_Code, 0x11, + "invalid character code" ) + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, + "unsupported glyph image format" ) + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, + "cannot render this glyph format" ) + FT_ERRORDEF_( Invalid_Outline, 0x14, + "invalid outline" ) + FT_ERRORDEF_( Invalid_Composite, 0x15, + "invalid composite glyph" ) + FT_ERRORDEF_( Too_Many_Hints, 0x16, + "too many hints" ) + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, + "invalid pixel size" ) + + /* handle errors */ + + FT_ERRORDEF_( Invalid_Handle, 0x20, + "invalid object handle" ) + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, + "invalid library handle" ) + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, + "invalid module handle" ) + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, + "invalid face handle" ) + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, + "invalid size handle" ) + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, + "invalid glyph slot handle" ) + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, + "invalid charmap handle" ) + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, + "invalid cache manager handle" ) + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, + "invalid stream handle" ) + + /* driver errors */ + + FT_ERRORDEF_( Too_Many_Drivers, 0x30, + "too many modules" ) + FT_ERRORDEF_( Too_Many_Extensions, 0x31, + "too many extensions" ) + + /* memory errors */ + + FT_ERRORDEF_( Out_Of_Memory, 0x40, + "out of memory" ) + FT_ERRORDEF_( Unlisted_Object, 0x41, + "unlisted object" ) + + /* stream errors */ + + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, + "cannot open stream" ) + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, + "invalid stream seek" ) + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, + "invalid stream skip" ) + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, + "invalid stream read" ) + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, + "invalid stream operation" ) + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, + "invalid frame operation" ) + FT_ERRORDEF_( Nested_Frame_Access, 0x57, + "nested frame access" ) + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, + "invalid frame read" ) + + /* raster errors */ + + FT_ERRORDEF_( Raster_Uninitialized, 0x60, + "raster uninitialized" ) + FT_ERRORDEF_( Raster_Corrupted, 0x61, + "raster corrupted" ) + FT_ERRORDEF_( Raster_Overflow, 0x62, + "raster overflow" ) + FT_ERRORDEF_( Raster_Negative_Height, 0x63, + "negative height while rastering" ) + + /* cache errors */ + + FT_ERRORDEF_( Too_Many_Caches, 0x70, + "too many registered caches" ) + + /* TrueType and SFNT errors */ + + FT_ERRORDEF_( Invalid_Opcode, 0x80, + "invalid opcode" ) + FT_ERRORDEF_( Too_Few_Arguments, 0x81, + "too few arguments" ) + FT_ERRORDEF_( Stack_Overflow, 0x82, + "stack overflow" ) + FT_ERRORDEF_( Code_Overflow, 0x83, + "code overflow" ) + FT_ERRORDEF_( Bad_Argument, 0x84, + "bad argument" ) + FT_ERRORDEF_( Divide_By_Zero, 0x85, + "division by zero" ) + FT_ERRORDEF_( Invalid_Reference, 0x86, + "invalid reference" ) + FT_ERRORDEF_( Debug_OpCode, 0x87, + "found debug opcode" ) + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, + "found ENDF opcode in execution stream" ) + FT_ERRORDEF_( Nested_DEFS, 0x89, + "nested DEFS" ) + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, + "invalid code range" ) + FT_ERRORDEF_( Execution_Too_Long, 0x8B, + "execution context too long" ) + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, + "too many function definitions" ) + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, + "too many instruction definitions" ) + FT_ERRORDEF_( Table_Missing, 0x8E, + "SFNT font table missing" ) + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, + "horizontal header (hhea) table missing" ) + FT_ERRORDEF_( Locations_Missing, 0x90, + "locations (loca) table missing" ) + FT_ERRORDEF_( Name_Table_Missing, 0x91, + "name table missing" ) + FT_ERRORDEF_( CMap_Table_Missing, 0x92, + "character map (cmap) table missing" ) + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, + "horizontal metrics (hmtx) table missing" ) + FT_ERRORDEF_( Post_Table_Missing, 0x94, + "PostScript (post) table missing" ) + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, + "invalid horizontal metrics" ) + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, + "invalid character map (cmap) format" ) + FT_ERRORDEF_( Invalid_PPem, 0x97, + "invalid ppem value" ) + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, + "invalid vertical metrics" ) + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, + "could not find context" ) + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, + "invalid PostScript (post) table format" ) + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, + "invalid PostScript (post) table" ) + + /* CFF, CID, and Type 1 errors */ + + FT_ERRORDEF_( Syntax_Error, 0xA0, + "opcode syntax error" ) + FT_ERRORDEF_( Stack_Underflow, 0xA1, + "argument stack underflow" ) + FT_ERRORDEF_( Ignore, 0xA2, + "ignore" ) + FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, + "no Unicode glyph name found" ) + FT_ERRORDEF_( Glyph_Too_Big, 0xA4, + "glyph too big for hinting" ) + + /* BDF errors */ + + FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, + "`STARTFONT' field missing" ) + FT_ERRORDEF_( Missing_Font_Field, 0xB1, + "`FONT' field missing" ) + FT_ERRORDEF_( Missing_Size_Field, 0xB2, + "`SIZE' field missing" ) + FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, + "`FONTBOUNDINGBOX' field missing" ) + FT_ERRORDEF_( Missing_Chars_Field, 0xB4, + "`CHARS' field missing" ) + FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, + "`STARTCHAR' field missing" ) + FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, + "`ENCODING' field missing" ) + FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, + "`BBX' field missing" ) + FT_ERRORDEF_( Bbx_Too_Big, 0xB8, + "`BBX' too big" ) + FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, + "Font header corrupted or missing fields" ) + FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, + "Font glyphs corrupted or missing fields" ) + + /* */ + + +/* END */ diff --git a/lib/osx/include/freetype/fterrors.h b/lib/osx/include/freetype/fterrors.h new file mode 100644 index 0000000..0507b9a --- /dev/null +++ b/lib/osx/include/freetype/fterrors.h @@ -0,0 +1,216 @@ +/***************************************************************************/ +/* */ +/* fterrors.h */ +/* */ +/* FreeType error code handling (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* error_enumerations */ + /* */ + /* <Title> */ + /* Error Enumerations */ + /* */ + /* <Abstract> */ + /* How to handle errors and error strings. */ + /* */ + /* <Description> */ + /* The header file `fterrors.h' (which is automatically included by */ + /* `freetype.h' defines the handling of FreeType's enumeration */ + /* constants. It can also be used to generate error message strings */ + /* with a small macro trick explained below. */ + /* */ + /* *Error* *Formats* */ + /* */ + /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ + /* defined in `ftoption.h' in order to make the higher byte indicate */ + /* the module where the error has happened (this is not compatible */ + /* with standard builds of FreeType 2, however). See the file */ + /* `ftmoderr.h' for more details. */ + /* */ + /* *Error* *Message* *Strings* */ + /* */ + /* Error definitions are set up with special macros that allow client */ + /* applications to build a table of error message strings. The */ + /* strings are not included in a normal build of FreeType 2 to */ + /* save space (most client applications do not use them). */ + /* */ + /* To do so, you have to define the following macros before including */ + /* this file. */ + /* */ + /* { */ + /* FT_ERROR_START_LIST */ + /* } */ + /* */ + /* This macro is called before anything else to define the start of */ + /* the error list. It is followed by several FT_ERROR_DEF calls. */ + /* */ + /* { */ + /* FT_ERROR_DEF( e, v, s ) */ + /* } */ + /* */ + /* This macro is called to define one single error. `e' is the error */ + /* code identifier (e.g., `Invalid_Argument'), `v' is the error's */ + /* numerical value, and `s' is the corresponding error string. */ + /* */ + /* { */ + /* FT_ERROR_END_LIST */ + /* } */ + /* */ + /* This macro ends the list. */ + /* */ + /* Additionally, you have to undefine `__FTERRORS_H__' before */ + /* #including this file. */ + /* */ + /* Here is a simple example. */ + /* */ + /* { */ + /* #undef __FTERRORS_H__ */ + /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ + /* #define FT_ERROR_START_LIST { */ + /* #define FT_ERROR_END_LIST { 0, NULL } }; */ + /* */ + /* const struct */ + /* { */ + /* int err_code; */ + /* const char* err_msg; */ + /* } ft_errors[] = */ + /* */ + /* #include FT_ERRORS_H */ + /* } */ + /* */ + /* Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with */ + /* `FT_NOERRORDEF'; it is always zero. */ + /* */ + /*************************************************************************/ + + /* */ + +#ifndef __FTERRORS_H__ +#define __FTERRORS_H__ + + + /* include module base error codes */ +#include FT_MODULE_ERRORS_H + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_'. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS + +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ +#ifndef FT_ERRORDEF + +#define FT_ERRORDEF( e, v, s ) e = v, +#define FT_ERROR_START_LIST enum { +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_ERRORDEF */ + + + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for <module>_Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + +#ifdef FT_ERROR_START_LIST + FT_ERROR_START_LIST +#endif + + + /* now include the error codes */ +#include FT_ERROR_DEFINITIONS_H + + +#ifdef FT_ERROR_END_LIST + FT_ERROR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST + +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_BASE + + /* FT_ERR_PREFIX is needed internally */ +#ifndef FT2_BUILD_LIBRARY +#undef FT_ERR_PREFIX +#endif + +#endif /* __FTERRORS_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftfntfmt.h b/lib/osx/include/freetype/ftfntfmt.h new file mode 100644 index 0000000..1f8ff28 --- /dev/null +++ b/lib/osx/include/freetype/ftfntfmt.h @@ -0,0 +1,92 @@ +/***************************************************************************/ +/* */ +/* ftfntfmt.h */ +/* */ +/* Support functions for font formats. */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTFNTFMT_H__ +#define __FTFNTFMT_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* font_formats */ + /* */ + /* <Title> */ + /* Font Formats */ + /* */ + /* <Abstract> */ + /* Getting the font format. */ + /* */ + /* <Description> */ + /* The single function in this section can be used to get the font */ + /* format. Note that this information is not needed normally; */ + /* however, there are special cases (like in PDF devices) where it is */ + /* important to differentiate, in spite of FreeType's uniform API. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Font_Format */ + /* */ + /* <Description> */ + /* Return a string describing the format of a given face. Possible */ + /* values are `TrueType', `Type~1', `BDF', `PCF', `Type~42', */ + /* `CID~Type~1', `CFF', `PFR', and `Windows~FNT'. */ + /* */ + /* The return value is suitable to be used as an X11 FONT_PROPERTY. */ + /* */ + /* <Input> */ + /* face :: */ + /* Input face handle. */ + /* */ + /* <Return> */ + /* Font format string. NULL in case of error. */ + /* */ + /* <Note> */ + /* A deprecated name for the same function is */ + /* `FT_Get_X11_Font_Format'. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Font_Format( FT_Face face ); + + + /* deprecated */ + FT_EXPORT( const char* ) + FT_Get_X11_Font_Format( FT_Face face ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTFNTFMT_H__ */ diff --git a/lib/osx/include/freetype/ftgasp.h b/lib/osx/include/freetype/ftgasp.h new file mode 100644 index 0000000..9a9b632 --- /dev/null +++ b/lib/osx/include/freetype/ftgasp.h @@ -0,0 +1,129 @@ +/***************************************************************************/ +/* */ +/* ftgasp.h */ +/* */ +/* Access of TrueType's `gasp' table (specification). */ +/* */ +/* Copyright 2007-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef _FT_GASP_H_ +#define _FT_GASP_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + + /*************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType `gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its `gasp' table, if any. This is + * mainly useful when implementing native TrueType hinting with the + * bytecode interpreter to duplicate the Windows text rendering results. + */ + + /************************************************************************* + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This *really* means TrueType bytecode interpretation. If this bit + * is not set, no hinting gets applied. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * If not set, do monochrome rendering. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * If set, smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be + * used for standard font rasterization only. Independently of that, + * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to + * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and + * `FT_GASP_DO_GRAY' are consequently ignored). + * + * `ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ +#define FT_GASP_NO_TABLE -1 +#define FT_GASP_DO_GRIDFIT 0x01 +#define FT_GASP_DO_GRAY 0x02 +#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 +#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 + + + /************************************************************************* + * + * @func: + * FT_Get_Gasp + * + * @description: + * Read the `gasp' table from a TrueType or OpenType font file and + * return the entry corresponding to a given character pixel size. + * + * @input: + * face :: The source face handle. + * ppem :: The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * `gasp' table in the face. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Int ) + FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); + + /* */ + + +#endif /* _FT_GASP_H_ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftglyph.h b/lib/osx/include/freetype/ftglyph.h new file mode 100644 index 0000000..803ad39 --- /dev/null +++ b/lib/osx/include/freetype/ftglyph.h @@ -0,0 +1,605 @@ +/***************************************************************************/ +/* */ +/* ftglyph.h */ +/* */ +/* FreeType convenience functions to handle glyphs (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of several convenience functions */ + /* that can be used by client applications to easily retrieve glyph */ + /* bitmaps and outlines from a given face. */ + /* */ + /* These functions should be optional if you are writing a font server */ + /* or text layout engine on top of FreeType. However, they are pretty */ + /* handy for many other simple uses of the library. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTGLYPH_H__ +#define __FTGLYPH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_management */ + /* */ + /* <Title> */ + /* Glyph Management */ + /* */ + /* <Abstract> */ + /* Generic interface to manage individual glyph data. */ + /* */ + /* <Description> */ + /* This section contains definitions used to manage glyph data */ + /* through generic FT_Glyph objects. Each of them can contain a */ + /* bitmap, a vector outline, or even images in other formats. */ + /* */ + /*************************************************************************/ + + + /* forward declaration to a private type */ + typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Glyph */ + /* */ + /* <Description> */ + /* Handle to an object used to model generic glyph images. It is a */ + /* pointer to the @FT_GlyphRec structure and can contain a glyph */ + /* bitmap or pointer. */ + /* */ + /* <Note> */ + /* Glyph objects are not owned by the library. You must thus release */ + /* them manually (through @FT_Done_Glyph) _before_ calling */ + /* @FT_Done_FreeType. */ + /* */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphRec */ + /* */ + /* <Description> */ + /* The root glyph structure contains a given glyph image plus its */ + /* advance width in 16.16 fixed-point format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library object. */ + /* */ + /* clazz :: A pointer to the glyph's class. Private. */ + /* */ + /* format :: The format of the glyph's image. */ + /* */ + /* advance :: A 16.16 vector that gives the glyph's advance width. */ + /* */ + typedef struct FT_GlyphRec_ + { + FT_Library library; + const FT_Glyph_Class* clazz; + FT_Glyph_Format format; + FT_Vector advance; + + } FT_GlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_BitmapGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model a bitmap glyph image. This is */ + /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ + /* */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BitmapGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for bitmap glyph images. This really is a */ + /* `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* left :: The left-side bearing, i.e., the horizontal distance */ + /* from the current pen position to the left border of the */ + /* glyph bitmap. */ + /* */ + /* top :: The top-side bearing, i.e., the vertical distance from */ + /* the current pen position to the top border of the glyph */ + /* bitmap. This distance is positive for upwards~y! */ + /* */ + /* bitmap :: A descriptor for the bitmap. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ + /* the bitmap's contents easily. */ + /* */ + /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ + /* and is thus created and destroyed with it. */ + /* */ + typedef struct FT_BitmapGlyphRec_ + { + FT_GlyphRec root; + FT_Int left; + FT_Int top; + FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_OutlineGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model an outline glyph image. This */ + /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ + /* */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_OutlineGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for outline (vectorial) glyph images. This */ + /* really is a `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* outline :: A descriptor for the outline. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ + /* the outline's content easily. */ + /* */ + /* As the outline is extracted from a glyph slot, its coordinates are */ + /* expressed normally in 26.6 pixels, unless the flag */ + /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ + /* */ + /* The outline's tables are always owned by the object and are */ + /* destroyed with it. */ + /* */ + typedef struct FT_OutlineGlyphRec_ + { + FT_GlyphRec root; + FT_Outline outline; + + } FT_OutlineGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph */ + /* */ + /* <Description> */ + /* A function used to extract a glyph image from a slot. Note that */ + /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* slot :: A handle to the source glyph slot. */ + /* */ + /* <Output> */ + /* aglyph :: A handle to the glyph object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Copy */ + /* */ + /* <Description> */ + /* A function used to copy a glyph image. Note that the created */ + /* @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* source :: A handle to the source glyph object. */ + /* */ + /* <Output> */ + /* target :: A handle to the target glyph object. 0~in case of */ + /* error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Transform */ + /* */ + /* <Description> */ + /* Transform a glyph image if its format is scalable. */ + /* */ + /* <InOut> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to a 2x2 matrix to apply. */ + /* */ + /* delta :: A pointer to a 2d vector to apply. Coordinates are */ + /* expressed in 1/64th of a pixel. */ + /* */ + /* <Return> */ + /* FreeType error code (if not 0, the glyph format is not scalable). */ + /* */ + /* <Note> */ + /* The 2x2 transformation matrix is also applied to the glyph's */ + /* advance vector. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_BBox_Mode */ + /* */ + /* <Description> */ + /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ + /* */ + /* <Values> */ + /* FT_GLYPH_BBOX_UNSCALED :: */ + /* Return unscaled font units. */ + /* */ + /* FT_GLYPH_BBOX_SUBPIXELS :: */ + /* Return unfitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_GRIDFIT :: */ + /* Return grid-fitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_TRUNCATE :: */ + /* Return coordinates in integer pixels. */ + /* */ + /* FT_GLYPH_BBOX_PIXELS :: */ + /* Return grid-fitted pixel coordinates. */ + /* */ + typedef enum FT_Glyph_BBox_Mode_ + { + FT_GLYPH_BBOX_UNSCALED = 0, + FT_GLYPH_BBOX_SUBPIXELS = 0, + FT_GLYPH_BBOX_GRIDFIT = 1, + FT_GLYPH_BBOX_TRUNCATE = 2, + FT_GLYPH_BBOX_PIXELS = 3 + + } FT_Glyph_BBox_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_BBox_Mode' values instead */ +#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED +#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS +#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT +#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE +#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Get_CBox */ + /* */ + /* <Description> */ + /* Return a glyph's `control box'. The control box encloses all the */ + /* outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* that contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component, which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the source glyph object. */ + /* */ + /* mode :: The mode that indicates how to interpret the returned */ + /* bounding box values. */ + /* */ + /* <Output> */ + /* acbox :: The glyph coordinate bounding box. Coordinates are */ + /* expressed in 1/64th of pixels if it is grid-fitted. */ + /* */ + /* <Note> */ + /* Coordinates are relative to the glyph origin, using the y~upwards */ + /* convention. */ + /* */ + /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ + /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ + /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ + /* is another name for this constant. */ + /* */ + /* If the font is tricky and the glyph has been loaded with */ + /* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */ + /* reasonable values for the CBox it is necessary to load the glyph */ + /* at a large ppem value (so that the hinting instructions can */ + /* properly shift and scale the subglyphs), then extracting the CBox, */ + /* which can be eventually converted back to font units. */ + /* */ + /* Note that the maximum coordinates are exclusive, which means that */ + /* one can compute the width and height of the glyph image (be it in */ + /* integer or 26.6 pixels) as: */ + /* */ + /* { */ + /* width = bbox.xMax - bbox.xMin; */ + /* height = bbox.yMax - bbox.yMin; */ + /* } */ + /* */ + /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ + /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ + /* which corresponds to: */ + /* */ + /* { */ + /* bbox.xMin = FLOOR(bbox.xMin); */ + /* bbox.yMin = FLOOR(bbox.yMin); */ + /* bbox.xMax = CEILING(bbox.xMax); */ + /* bbox.yMax = CEILING(bbox.yMax); */ + /* } */ + /* */ + /* To get the bbox in pixel coordinates, set `bbox_mode' to */ + /* @FT_GLYPH_BBOX_TRUNCATE. */ + /* */ + /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ + /* to @FT_GLYPH_BBOX_PIXELS. */ + /* */ + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_To_Bitmap */ + /* */ + /* <Description> */ + /* Convert a given glyph object to a bitmap glyph object. */ + /* */ + /* <InOut> */ + /* the_glyph :: A pointer to a handle to the target glyph. */ + /* */ + /* <Input> */ + /* render_mode :: An enumeration that describes how the data is */ + /* rendered. */ + /* */ + /* origin :: A pointer to a vector used to translate the glyph */ + /* image before rendering. Can be~0 (if no */ + /* translation). The origin is expressed in */ + /* 26.6 pixels. */ + /* */ + /* destroy :: A boolean that indicates that the original glyph */ + /* image should be destroyed by this function. It is */ + /* never destroyed in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does nothing if the glyph format isn't scalable. */ + /* */ + /* The glyph image is translated with the `origin' vector before */ + /* rendering. */ + /* */ + /* The first parameter is a pointer to an @FT_Glyph handle, that will */ + /* be _replaced_ by this function (with newly allocated data). */ + /* Typically, you would use (omitting error handling): */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyph; */ + /* FT_BitmapGlyph glyph_bitmap; */ + /* */ + /* */ + /* // load glyph */ + /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ + /* */ + /* // extract glyph image */ + /* error = FT_Get_Glyph( face->glyph, &glyph ); */ + /* */ + /* // convert to a bitmap (default render mode + destroying old) */ + /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ + /* { */ + /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ + /* 0, 1 ); */ + /* if ( error ) // `glyph' unchanged */ + /* ... */ + /* } */ + /* */ + /* // access bitmap content by typecasting */ + /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ + /* */ + /* // do funny stuff with it, like blitting/drawing */ + /* ... */ + /* */ + /* // discard glyph image (bitmap or not) */ + /* FT_Done_Glyph( glyph ); */ + /* } */ + /* */ + /* */ + /* Here another example, again without error handling: */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyphs[MAX_GLYPHS] */ + /* */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ + /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* { */ + /* FT_Glyph bitmap = glyphs[idx]; */ + /* */ + /* */ + /* ... */ + /* */ + /* // after this call, `bitmap' no longer points into */ + /* // the `glyphs' array (and the old value isn't destroyed) */ + /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ + /* */ + /* ... */ + /* */ + /* FT_Done_Glyph( bitmap ); */ + /* } */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* FT_Done_Glyph( glyphs[idx] ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + FT_Vector* origin, + FT_Bool destroy ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Glyph */ + /* */ + /* <Description> */ + /* Destroy a given glyph. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); + + /* */ + + + /* other helpful functions */ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Multiply */ + /* */ + /* <Description> */ + /* Perform the matrix operation `b = a*b'. */ + /* */ + /* <Input> */ + /* a :: A pointer to matrix `a'. */ + /* */ + /* <InOut> */ + /* b :: A pointer to matrix `b'. */ + /* */ + /* <Note> */ + /* The result is undefined if either `a' or `b' is zero. */ + /* */ + FT_EXPORT( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Invert */ + /* */ + /* <Description> */ + /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ + /* */ + /* <InOut> */ + /* matrix :: A pointer to the target matrix. Remains untouched in */ + /* case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLYPH_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/osx/include/freetype/ftgxval.h b/lib/osx/include/freetype/ftgxval.h new file mode 100644 index 0000000..0e9ac1d --- /dev/null +++ b/lib/osx/include/freetype/ftgxval.h @@ -0,0 +1,357 @@ +/***************************************************************************/ +/* */ +/* ftgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* Masatake YAMATO, Redhat K.K, */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGXVAL_H__ +#define __FTGXVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gx_validation */ + /* */ + /* <Title> */ + /* TrueTypeGX/AAT Validation */ + /* */ + /* <Abstract> */ + /* An API to validate TrueTypeGX/AAT tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ + /* trak, prop, lcar). */ + /* */ + /* <Order> */ + /* FT_TrueTypeGX_Validate */ + /* FT_TrueTypeGX_Free */ + /* */ + /* FT_ClassicKern_Validate */ + /* FT_ClassicKern_Free */ + /* */ + /* FT_VALIDATE_GX_LENGTH */ + /* FT_VALIDATE_GXXXX */ + /* FT_VALIDATE_CKERNXXX */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* */ + /* Warning: Use FT_VALIDATE_XXX to validate a table. */ + /* Following definitions are for gxvalid developers. */ + /* */ + /* */ + /*************************************************************************/ + +#define FT_VALIDATE_feat_INDEX 0 +#define FT_VALIDATE_mort_INDEX 1 +#define FT_VALIDATE_morx_INDEX 2 +#define FT_VALIDATE_bsln_INDEX 3 +#define FT_VALIDATE_just_INDEX 4 +#define FT_VALIDATE_kern_INDEX 5 +#define FT_VALIDATE_opbd_INDEX 6 +#define FT_VALIDATE_trak_INDEX 7 +#define FT_VALIDATE_prop_INDEX 8 +#define FT_VALIDATE_lcar_INDEX 9 +#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX + + + /************************************************************************* + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length' argument of function @FT_TrueTypeGX_Validate. + */ +#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) + + /* */ + + /* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate `feat' table. + * + * FT_VALIDATE_mort :: + * Validate `mort' table. + * + * FT_VALIDATE_morx :: + * Validate `morx' table. + * + * FT_VALIDATE_bsln :: + * Validate `bsln' table. + * + * FT_VALIDATE_just :: + * Validate `just' table. + * + * FT_VALIDATE_kern :: + * Validate `kern' table. + * + * FT_VALIDATE_opbd :: + * Validate `opbd' table. + * + * FT_VALIDATE_trak :: + * Validate `trak' table. + * + * FT_VALIDATE_prop :: + * Validate `prop' table. + * + * FT_VALIDATE_lcar :: + * Validate `lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ + +#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) +#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) +#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) +#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) +#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) +#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) +#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) +#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) +#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) +#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) + +#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ + FT_VALIDATE_mort | \ + FT_VALIDATE_morx | \ + FT_VALIDATE_bsln | \ + FT_VALIDATE_just | \ + FT_VALIDATE_kern | \ + FT_VALIDATE_opbd | \ + FT_VALIDATE_trak | \ + FT_VALIDATE_prop | \ + FT_VALIDATE_lcar ) + + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_GXXXX for possible values. + * + * table_length :: + * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. + * The array itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ + FT_EXPORT( FT_Error ) + FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by + * @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ + FT_EXPORT( void ) + FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate + * to indicate the classic kern dialect or dialects. If the selected + * type doesn't fit, @FT_ClassicKern_Validate regards the table as + * invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the `kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the `kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the `kern' as either classic Apple or Microsoft kern table. + */ +#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) +#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) + +#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) + + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the offsets + * and indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value + * indicates that the table doesn't exist in the font. + */ + FT_EXPORT( FT_Error ) + FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ + FT_EXPORT( void ) + FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGXVAL_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftgzip.h b/lib/osx/include/freetype/ftgzip.h new file mode 100644 index 0000000..b3a532d --- /dev/null +++ b/lib/osx/include/freetype/ftgzip.h @@ -0,0 +1,148 @@ +/***************************************************************************/ +/* */ +/* ftgzip.h */ +/* */ +/* Gzip-compressed stream support. */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGZIP_H__ +#define __FTGZIP_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gzip */ + /* */ + /* <Title> */ + /* GZIP Streams */ + /* */ + /* <Abstract> */ + /* Using gzip-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Gzip-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is + * mainly used to support the compressed `*.pcf.gz' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from + * it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); + + + /************************************************************************ + * + * @function: + * FT_Gzip_Uncompress + * + * @description: + * Decompress a zipped input buffer into an output buffer. This function + * is modeled after zlib's `uncompress' function. + * + * @input: + * memory :: + * A FreeType memory handle. + * + * input :: + * The input buffer. + * + * input_len :: + * The length of the input buffer. + * + * @output: + * output:: + * The output buffer. + * + * @inout: + * output_len :: + * Before calling the function, this is the the total size of the + * output buffer, which must be large enough to hold the entire + * uncompressed data (so the size of the uncompressed data must be + * known in advance). After calling the function, `output_len' is the + * size of the used data in `output'. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Gzip_Uncompress( FT_Memory memory, + FT_Byte* output, + FT_ULong* output_len, + const FT_Byte* input, + FT_ULong input_len ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGZIP_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftimage.h b/lib/osx/include/freetype/ftimage.h new file mode 100644 index 0000000..82f284c --- /dev/null +++ b/lib/osx/include/freetype/ftimage.h @@ -0,0 +1,1214 @@ +/***************************************************************************/ +/* */ +/* ftimage.h */ +/* */ +/* FreeType glyph image formats and default raster interface */ +/* (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Note: A `raster' is simply a scan-line converter, used to render */ + /* FT_Outlines into FT_Bitmaps. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTIMAGE_H__ +#define __FTIMAGE_H__ + + + /* _STANDALONE_ is from ftgrays.c */ +#ifndef _STANDALONE_ +#include <ft2build.h> +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pos */ + /* */ + /* <Description> */ + /* The type FT_Pos is used to store vectorial coordinates. Depending */ + /* on the context, these can represent distances in integer font */ + /* units, or 16.16, or 26.6 fixed-point pixel coordinates. */ + /* */ + typedef signed long FT_Pos; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Vector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector; coordinates are of */ + /* the FT_Pos type. */ + /* */ + /* <Fields> */ + /* x :: The horizontal coordinate. */ + /* y :: The vertical coordinate. */ + /* */ + typedef struct FT_Vector_ + { + FT_Pos x; + FT_Pos y; + + } FT_Vector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BBox */ + /* */ + /* <Description> */ + /* A structure used to hold an outline's bounding box, i.e., the */ + /* coordinates of its extrema in the horizontal and vertical */ + /* directions. */ + /* */ + /* <Fields> */ + /* xMin :: The horizontal minimum (left-most). */ + /* */ + /* yMin :: The vertical minimum (bottom-most). */ + /* */ + /* xMax :: The horizontal maximum (right-most). */ + /* */ + /* yMax :: The vertical maximum (top-most). */ + /* */ + /* <Note> */ + /* The bounding box is specified with the coordinates of the lower */ + /* left and the upper right corner. In PostScript, those values are */ + /* often called (llx,lly) and (urx,ury), respectively. */ + /* */ + /* If `yMin' is negative, this value gives the glyph's descender. */ + /* Otherwise, the glyph doesn't descend below the baseline. */ + /* Similarly, if `ymax' is positive, this value gives the glyph's */ + /* ascender. */ + /* */ + /* `xMin' gives the horizontal distance from the glyph's origin to */ + /* the left edge of the glyph's bounding box. If `xMin' is negative, */ + /* the glyph extends to the left of the origin. */ + /* */ + typedef struct FT_BBox_ + { + FT_Pos xMin, yMin; + FT_Pos xMax, yMax; + + } FT_BBox; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Pixel_Mode */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of pixels in a */ + /* given bitmap. Note that additional formats may be added in the */ + /* future. */ + /* */ + /* <Values> */ + /* FT_PIXEL_MODE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_PIXEL_MODE_MONO :: */ + /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ + /* are stored in most-significant order (MSB), which means that */ + /* the left-most pixel in a byte has value 128. */ + /* */ + /* FT_PIXEL_MODE_GRAY :: */ + /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ + /* images. Each pixel is stored in one byte. Note that the number */ + /* of `gray' levels is stored in the `num_grays' field of the */ + /* @FT_Bitmap structure (it generally is 256). */ + /* */ + /* FT_PIXEL_MODE_GRAY2 :: */ + /* A 2-bit per pixel bitmap, used to represent embedded */ + /* anti-aliased bitmaps in font files according to the OpenType */ + /* specification. We haven't found a single font using this */ + /* format, however. */ + /* */ + /* FT_PIXEL_MODE_GRAY4 :: */ + /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ + /* bitmaps in font files according to the OpenType specification. */ + /* We haven't found a single font using this format, however. */ + /* */ + /* FT_PIXEL_MODE_LCD :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on LCD displays; the bitmap is three times */ + /* wider than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD. */ + /* */ + /* FT_PIXEL_MODE_LCD_V :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on rotated LCD displays; the bitmap is three */ + /* times taller than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD_V. */ + /* */ + /* FT_PIXEL_MODE_BGRA :: */ + /* An image with four 8-bit channels per pixel, representing a */ + /* color image (such as emoticons) with alpha channel. For each */ + /* pixel, the format is BGRA, which means, the blue channel comes */ + /* first in memory. The color channels are pre-multiplied and in */ + /* the sRGB colorspace. For example, full red at half-translucent */ + /* opacity will be represented as `00,00,80,80', not `00,00,FF,80'. */ + /* See also @FT_LOAD_COLOR. */ + /* */ + typedef enum FT_Pixel_Mode_ + { + FT_PIXEL_MODE_NONE = 0, + FT_PIXEL_MODE_MONO, + FT_PIXEL_MODE_GRAY, + FT_PIXEL_MODE_GRAY2, + FT_PIXEL_MODE_GRAY4, + FT_PIXEL_MODE_LCD, + FT_PIXEL_MODE_LCD_V, + FT_PIXEL_MODE_BGRA, + + FT_PIXEL_MODE_MAX /* do not remove */ + + } FT_Pixel_Mode; + + + /* these constants are deprecated; use the corresponding `FT_Pixel_Mode' */ + /* values instead. */ +#define ft_pixel_mode_none FT_PIXEL_MODE_NONE +#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO +#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY +#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 +#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap */ + /* */ + /* <Description> */ + /* A structure used to describe a bitmap or pixmap to the raster. */ + /* Note that we now manage pixmaps of various depths through the */ + /* `pixel_mode' field. */ + /* */ + /* <Fields> */ + /* rows :: The number of bitmap rows. */ + /* */ + /* width :: The number of pixels in bitmap row. */ + /* */ + /* pitch :: The pitch's absolute value is the number of bytes */ + /* taken by one bitmap row, including padding. */ + /* However, the pitch is positive when the bitmap has */ + /* a `down' flow, and negative when it has an `up' */ + /* flow. In all cases, the pitch is an offset to add */ + /* to a bitmap pointer in order to go down one row. */ + /* */ + /* Note that `padding' means the alignment of a */ + /* bitmap to a byte border, and FreeType functions */ + /* normally align to the smallest possible integer */ + /* value. */ + /* */ + /* For the B/W rasterizer, `pitch' is always an even */ + /* number. */ + /* */ + /* To change the pitch of a bitmap (say, to make it a */ + /* multiple of 4), use @FT_Bitmap_Convert. */ + /* Alternatively, you might use callback functions to */ + /* directly render to the application's surface; see */ + /* the file `example2.cpp' in the tutorial for a */ + /* demonstration. */ + /* */ + /* buffer :: A typeless pointer to the bitmap buffer. This */ + /* value should be aligned on 32-bit boundaries in */ + /* most cases. */ + /* */ + /* num_grays :: This field is only used with */ + /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ + /* levels used in the bitmap. */ + /* */ + /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ + /* See @FT_Pixel_Mode for possible values. */ + /* */ + /* palette_mode :: This field is intended for paletted pixel modes; */ + /* it indicates how the palette is stored. Not */ + /* used currently. */ + /* */ + /* palette :: A typeless pointer to the bitmap palette; this */ + /* field is intended for paletted pixel modes. Not */ + /* used currently. */ + /* */ + typedef struct FT_Bitmap_ + { + unsigned int rows; + unsigned int width; + int pitch; + unsigned char* buffer; + unsigned short num_grays; + unsigned char pixel_mode; + unsigned char palette_mode; + void* palette; + + } FT_Bitmap; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline */ + /* */ + /* <Description> */ + /* This structure is used to describe an outline to the scan-line */ + /* converter. */ + /* */ + /* <Fields> */ + /* n_contours :: The number of contours in the outline. */ + /* */ + /* n_points :: The number of points in the outline. */ + /* */ + /* points :: A pointer to an array of `n_points' @FT_Vector */ + /* elements, giving the outline's point coordinates. */ + /* */ + /* tags :: A pointer to an array of `n_points' chars, giving */ + /* each outline point's type. */ + /* */ + /* If bit~0 is unset, the point is `off' the curve, */ + /* i.e., a Bézier control point, while it is `on' if */ + /* set. */ + /* */ + /* Bit~1 is meaningful for `off' points only. If set, */ + /* it indicates a third-order Bézier arc control point; */ + /* and a second-order control point if unset. */ + /* */ + /* If bit~2 is set, bits 5-7 contain the drop-out mode */ + /* (as defined in the OpenType specification; the value */ + /* is the same as the argument to the SCANMODE */ + /* instruction). */ + /* */ + /* Bits 3 and~4 are reserved for internal purposes. */ + /* */ + /* contours :: An array of `n_contours' shorts, giving the end */ + /* point of each contour within the outline. For */ + /* example, the first contour is defined by the points */ + /* `0' to `contours[0]', the second one is defined by */ + /* the points `contours[0]+1' to `contours[1]', etc. */ + /* */ + /* flags :: A set of bit flags used to characterize the outline */ + /* and give hints to the scan-converter and hinter on */ + /* how to convert/grid-fit it. See @FT_OUTLINE_XXX. */ + /* */ + /* <Note> */ + /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ + /* first point of each contour. The drop-out mode as given with */ + /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ + /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ + /* */ + typedef struct FT_Outline_ + { + short n_contours; /* number of contours in glyph */ + short n_points; /* number of points in the glyph */ + + FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + short* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } FT_Outline; + + /* */ + + /* Following limits must be consistent with */ + /* FT_Outline.{n_contours,n_points} */ +#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX +#define FT_OUTLINE_POINTS_MAX SHRT_MAX + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OUTLINE_XXX */ + /* */ + /* <Description> */ + /* A list of bit-field constants use for the flags in an outline's */ + /* `flags' field. */ + /* */ + /* <Values> */ + /* FT_OUTLINE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_OUTLINE_OWNER :: */ + /* If set, this flag indicates that the outline's field arrays */ + /* (i.e., `points', `flags', and `contours') are `owned' by the */ + /* outline object, and should thus be freed when it is destroyed. */ + /* */ + /* FT_OUTLINE_EVEN_ODD_FILL :: */ + /* By default, outlines are filled using the non-zero winding rule. */ + /* If set to 1, the outline will be filled using the even-odd fill */ + /* rule (only works with the smooth rasterizer). */ + /* */ + /* FT_OUTLINE_REVERSE_FILL :: */ + /* By default, outside contours of an outline are oriented in */ + /* clock-wise direction, as defined in the TrueType specification. */ + /* This flag is set if the outline uses the opposite direction */ + /* (typically for Type~1 fonts). This flag is ignored by the scan */ + /* converter. */ + /* */ + /* FT_OUTLINE_IGNORE_DROPOUTS :: */ + /* By default, the scan converter will try to detect drop-outs in */ + /* an outline and correct the glyph bitmap to ensure consistent */ + /* shape continuity. If set, this flag hints the scan-line */ + /* converter to ignore such cases. See below for more information. */ + /* */ + /* FT_OUTLINE_SMART_DROPOUTS :: */ + /* Select smart dropout control. If unset, use simple dropout */ + /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ + /* below for more information. */ + /* */ + /* FT_OUTLINE_INCLUDE_STUBS :: */ + /* If set, turn pixels on for `stubs', otherwise exclude them. */ + /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ + /* more information. */ + /* */ + /* FT_OUTLINE_HIGH_PRECISION :: */ + /* This flag indicates that the scan-line converter should try to */ + /* convert this outline to bitmaps with the highest possible */ + /* quality. It is typically set for small character sizes. Note */ + /* that this is only a hint that might be completely ignored by a */ + /* given scan-converter. */ + /* */ + /* FT_OUTLINE_SINGLE_PASS :: */ + /* This flag is set to force a given scan-converter to only use a */ + /* single pass over the outline to render a bitmap glyph image. */ + /* Normally, it is set for very large character sizes. It is only */ + /* a hint that might be completely ignored by a given */ + /* scan-converter. */ + /* */ + /* <Note> */ + /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ + /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ + /* rasterizer. */ + /* */ + /* There exists a second mechanism to pass the drop-out mode to the */ + /* B/W rasterizer; see the `tags' field in @FT_Outline. */ + /* */ + /* Please refer to the description of the `SCANTYPE' instruction in */ + /* the OpenType specification (in file `ttinst1.doc') how simple */ + /* drop-outs, smart drop-outs, and stubs are defined. */ + /* */ +#define FT_OUTLINE_NONE 0x0 +#define FT_OUTLINE_OWNER 0x1 +#define FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define FT_OUTLINE_REVERSE_FILL 0x4 +#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 + +#define FT_OUTLINE_HIGH_PRECISION 0x100 +#define FT_OUTLINE_SINGLE_PASS 0x200 + + + /* these constants are deprecated; use the corresponding */ + /* `FT_OUTLINE_XXX' values instead */ +#define ft_outline_none FT_OUTLINE_NONE +#define ft_outline_owner FT_OUTLINE_OWNER +#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL +#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL +#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS +#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION +#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS + + /* */ + +#define FT_CURVE_TAG( flag ) ( flag & 3 ) + +#define FT_CURVE_TAG_ON 1 +#define FT_CURVE_TAG_CONIC 0 +#define FT_CURVE_TAG_CUBIC 2 + +#define FT_CURVE_TAG_HAS_SCANMODE 4 + +#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ + +#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ + FT_CURVE_TAG_TOUCH_Y ) + +#define FT_Curve_Tag_On FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_MoveToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `move */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `move to' is emitted to start a new contour in an outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `move to'. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_LineToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `line */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `line to' is emitted to indicate a segment in the outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `line to'. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_ConicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `conic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `conic to' is emitted to indicate a second-order Bézier arc in */ + /* the outline. */ + /* */ + /* <Input> */ + /* control :: An intermediate control point between the last position */ + /* and the new target in `to'. */ + /* */ + /* to :: A pointer to the target end point of the conic arc. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); + +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_CubicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `cubic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ + /* */ + /* <Input> */ + /* control1 :: A pointer to the first Bézier control point. */ + /* */ + /* control2 :: A pointer to the second Bézier control point. */ + /* */ + /* to :: A pointer to the target end point. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); + +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline_Funcs */ + /* */ + /* <Description> */ + /* A structure to hold various function pointers used during outline */ + /* decomposition in order to emit segments, conic, and cubic Béziers. */ + /* */ + /* <Fields> */ + /* move_to :: The `move to' emitter. */ + /* */ + /* line_to :: The segment emitter. */ + /* */ + /* conic_to :: The second-order Bézier arc emitter. */ + /* */ + /* cubic_to :: The third-order Bézier arc emitter. */ + /* */ + /* shift :: The shift that is applied to coordinates before they */ + /* are sent to the emitter. */ + /* */ + /* delta :: The delta that is applied to coordinates before they */ + /* are sent to the emitter, but after the shift. */ + /* */ + /* <Note> */ + /* The point coordinates sent to the emitters are the transformed */ + /* version of the original coordinates (this is important for high */ + /* accuracy during scan-conversion). The transformation is simple: */ + /* */ + /* { */ + /* x' = (x << shift) - delta */ + /* y' = (x << shift) - delta */ + /* } */ + /* */ + /* Set the values of `shift' and `delta' to~0 to get the original */ + /* point coordinates. */ + /* */ + typedef struct FT_Outline_Funcs_ + { + FT_Outline_MoveToFunc move_to; + FT_Outline_LineToFunc line_to; + FT_Outline_ConicToFunc conic_to; + FT_Outline_CubicToFunc cubic_to; + + int shift; + FT_Pos delta; + + } FT_Outline_Funcs; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_IMAGE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags to an unsigned long type. */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_IMAGE_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_Format */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of a given glyph */ + /* image. Note that this version of FreeType only supports two image */ + /* formats, even though future font drivers will be able to register */ + /* their own format. */ + /* */ + /* <Values> */ + /* FT_GLYPH_FORMAT_NONE :: */ + /* The value~0 is reserved. */ + /* */ + /* FT_GLYPH_FORMAT_COMPOSITE :: */ + /* The glyph image is a composite of several other images. This */ + /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ + /* report compound glyphs (like accented characters). */ + /* */ + /* FT_GLYPH_FORMAT_BITMAP :: */ + /* The glyph image is a bitmap, and can be described as an */ + /* @FT_Bitmap. You generally need to access the `bitmap' field of */ + /* the @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_OUTLINE :: */ + /* The glyph image is a vectorial outline made of line segments */ + /* and Bézier arcs; it can be described as an @FT_Outline; you */ + /* generally want to access the `outline' field of the */ + /* @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_PLOTTER :: */ + /* The glyph image is a vectorial path with no inside and outside */ + /* contours. Some Type~1 fonts, like those in the Hershey family, */ + /* contain glyphs in this format. These are described as */ + /* @FT_Outline, but FreeType isn't currently capable of rendering */ + /* them correctly. */ + /* */ + typedef enum FT_Glyph_Format_ + { + FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) + + } FT_Glyph_Format; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_Format' values instead. */ +#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE +#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE +#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP +#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE +#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* A raster is a scan converter, in charge of rendering an outline into */ + /* a a bitmap. This section contains the public API for rasters. */ + /* */ + /* Note that in FreeType 2, all rasters are now encapsulated within */ + /* specific modules called `renderers'. See `ftrender.h' for more */ + /* details on renderers. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* raster */ + /* */ + /* <Title> */ + /* Scanline Converter */ + /* */ + /* <Abstract> */ + /* How vectorial outlines are converted into bitmaps and pixmaps. */ + /* */ + /* <Description> */ + /* This section contains technical definitions. */ + /* */ + /* <Order> */ + /* FT_Raster */ + /* FT_Span */ + /* FT_SpanFunc */ + /* */ + /* FT_Raster_Params */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* FT_Raster_NewFunc */ + /* FT_Raster_DoneFunc */ + /* FT_Raster_ResetFunc */ + /* FT_Raster_SetModeFunc */ + /* FT_Raster_RenderFunc */ + /* FT_Raster_Funcs */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Raster */ + /* */ + /* <Description> */ + /* An opaque handle (pointer) to a raster object. Each object can be */ + /* used independently to convert an outline into a bitmap or pixmap. */ + /* */ + typedef struct FT_RasterRec_* FT_Raster; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Span */ + /* */ + /* <Description> */ + /* A structure used to model a single span of gray pixels when */ + /* rendering an anti-aliased bitmap. */ + /* */ + /* <Fields> */ + /* x :: The span's horizontal start position. */ + /* */ + /* len :: The span's length in pixels. */ + /* */ + /* coverage :: The span color/coverage, ranging from 0 (background) */ + /* to 255 (foreground). */ + /* */ + /* <Note> */ + /* This structure is used by the span drawing callback type named */ + /* @FT_SpanFunc that takes the y~coordinate of the span as a */ + /* parameter. */ + /* */ + /* The coverage value is always between 0 and 255. If you want less */ + /* gray values, the callback function has to reduce them. */ + /* */ + typedef struct FT_Span_ + { + short x; + unsigned short len; + unsigned char coverage; + + } FT_Span; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_SpanFunc */ + /* */ + /* <Description> */ + /* A function used as a call-back by the anti-aliased renderer in */ + /* order to let client applications draw themselves the gray pixel */ + /* spans on each scan line. */ + /* */ + /* <Input> */ + /* y :: The scanline's y~coordinate. */ + /* */ + /* count :: The number of spans to draw on this scanline. */ + /* */ + /* spans :: A table of `count' spans to draw on the scanline. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Note> */ + /* This callback allows client applications to directly render the */ + /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ + /* */ + /* This can be used to write anti-aliased outlines directly to a */ + /* given background bitmap, and even perform translucency. */ + /* */ + /* Note that the `count' field cannot be greater than a fixed value */ + /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ + /* `ftoption.h'. By default, this value is set to~32, which means */ + /* that if there are more than 32~spans on a given scanline, the */ + /* callback is called several times with the same `y' parameter in */ + /* order to draw all callbacks. */ + /* */ + /* Otherwise, the callback is only called once per scan-line, and */ + /* only for those scanlines that do have `gray' pixels on them. */ + /* */ + typedef void + (*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); + +#define FT_Raster_Span_Func FT_SpanFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitTest_Func */ + /* */ + /* <Description> */ + /* Deprecated, unimplemented. */ + /* */ + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitSet_Func */ + /* */ + /* <Description> */ + /* Deprecated, unimplemented. */ + /* */ + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flag constants as used in the `flags' field of a */ + /* @FT_Raster_Params structure. */ + /* */ + /* <Values> */ + /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ + /* */ + /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ + /* anti-aliased glyph image should be */ + /* generated. Otherwise, it will be */ + /* monochrome (1-bit). */ + /* */ + /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ + /* rendering. In this mode, client */ + /* applications must provide their own span */ + /* callback. This lets them directly */ + /* draw or compose over an existing bitmap. */ + /* If this bit is not set, the target */ + /* pixmap's buffer _must_ be zeroed before */ + /* rendering. */ + /* */ + /* Direct rendering is only possible with */ + /* anti-aliased glyphs. */ + /* */ + /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ + /* rendering mode. If set, the output will */ + /* be clipped to a box specified in the */ + /* `clip_box' field of the */ + /* @FT_Raster_Params structure. */ + /* */ + /* Note that by default, the glyph bitmap */ + /* is clipped to the target pixmap, except */ + /* in direct rendering mode where all spans */ + /* are generated if no clipping box is set. */ + /* */ +#define FT_RASTER_FLAG_DEFAULT 0x0 +#define FT_RASTER_FLAG_AA 0x1 +#define FT_RASTER_FLAG_DIRECT 0x2 +#define FT_RASTER_FLAG_CLIP 0x4 + + /* these constants are deprecated; use the corresponding */ + /* `FT_RASTER_FLAG_XXX' values instead */ +#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT +#define ft_raster_flag_aa FT_RASTER_FLAG_AA +#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT +#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Params */ + /* */ + /* <Description> */ + /* A structure to hold the arguments used by a raster's render */ + /* function. */ + /* */ + /* <Fields> */ + /* target :: The target bitmap. */ + /* */ + /* source :: A pointer to the source glyph image (e.g., an */ + /* @FT_Outline). */ + /* */ + /* flags :: The rendering flags. */ + /* */ + /* gray_spans :: The gray span drawing callback. */ + /* */ + /* black_spans :: Unused. */ + /* */ + /* bit_test :: Unused. */ + /* */ + /* bit_set :: Unused. */ + /* */ + /* user :: User-supplied data that is passed to each drawing */ + /* callback. */ + /* */ + /* clip_box :: An optional clipping box. It is only used in */ + /* direct rendering mode. Note that coordinates here */ + /* should be expressed in _integer_ pixels (and not in */ + /* 26.6 fixed-point units). */ + /* */ + /* <Note> */ + /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ + /* bit flag is set in the `flags' field, otherwise a monochrome */ + /* bitmap is generated. */ + /* */ + /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ + /* raster will call the `gray_spans' callback to draw gray pixel */ + /* spans. This allows direct composition over a pre-existing bitmap */ + /* through user-provided callbacks to perform the span drawing and */ + /* composition. Not supported by the monochrome rasterizer. */ + /* */ + typedef struct FT_Raster_Params_ + { + const FT_Bitmap* target; + const void* source; + int flags; + FT_SpanFunc gray_spans; + FT_SpanFunc black_spans; /* unused */ + FT_Raster_BitTest_Func bit_test; /* unused */ + FT_Raster_BitSet_Func bit_set; /* unused */ + void* user; + FT_BBox clip_box; + + } FT_Raster_Params; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_NewFunc */ + /* */ + /* <Description> */ + /* A function used to create a new raster object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory allocator. */ + /* */ + /* <Output> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `memory' parameter is a typeless pointer in order to avoid */ + /* un-wanted dependencies on the rest of the FreeType code. In */ + /* practice, it is an @FT_Memory object, i.e., a handle to the */ + /* standard FreeType memory allocator. However, this field can be */ + /* completely ignored by a given raster implementation. */ + /* */ + typedef int + (*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); + +#define FT_Raster_New_Func FT_Raster_NewFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_DoneFunc */ + /* */ + /* <Description> */ + /* A function used to destroy a given raster object. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + typedef void + (*FT_Raster_DoneFunc)( FT_Raster raster ); + +#define FT_Raster_Done_Func FT_Raster_DoneFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_ResetFunc */ + /* */ + /* <Description> */ + /* FreeType used to provide an area of memory called the `render */ + /* pool' available to all registered rasters. This was not thread */ + /* safe however and now FreeType never allocates this pool. NULL */ + /* is always passed in as pool_base. */ + /* */ + /* This function is called each time the render pool changes, or just */ + /* after a new raster object is created. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* pool_base :: The address in memory of the render pool. */ + /* */ + /* pool_size :: The size in bytes of the render pool. */ + /* */ + /* <Note> */ + /* Rasters should ignore the render pool and rely on dynamic or stack */ + /* allocation if they want to (a handle to the memory allocator is */ + /* passed to the raster constructor). */ + /* */ + typedef void + (*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_SetModeFunc */ + /* */ + /* <Description> */ + /* This function is a generic facility to change modes or attributes */ + /* in a given raster. This can be used for debugging purposes, or */ + /* simply to allow implementation-specific `features' in a given */ + /* raster module. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* mode :: A 4-byte tag used to name the mode or property. */ + /* */ + /* args :: A pointer to the new mode/property to use. */ + /* */ + typedef int + (*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); + +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_RenderFunc */ + /* */ + /* <Description> */ + /* Invoke a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* store the rendering parameters. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The exact format of the source image depends on the raster's glyph */ + /* format defined in its @FT_Raster_Funcs structure. It can be an */ + /* @FT_Outline or anything else in order to support a large array of */ + /* glyph formats. */ + /* */ + /* Note also that the render function can fail and return a */ + /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ + /* not support direct composition. */ + /* */ + /* XXX: For now, the standard raster doesn't support direct */ + /* composition but this should change for the final release (see */ + /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ + /* for examples of distinct implementations that support direct */ + /* composition). */ + /* */ + typedef int + (*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); + +#define FT_Raster_Render_Func FT_Raster_RenderFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Funcs */ + /* */ + /* <Description> */ + /* A structure used to describe a given raster class to the library. */ + /* */ + /* <Fields> */ + /* glyph_format :: The supported glyph format for this raster. */ + /* */ + /* raster_new :: The raster constructor. */ + /* */ + /* raster_reset :: Used to reset the render pool within the raster. */ + /* */ + /* raster_render :: A function to render a glyph into a given bitmap. */ + /* */ + /* raster_done :: The raster destructor. */ + /* */ + typedef struct FT_Raster_Funcs_ + { + FT_Glyph_Format glyph_format; + FT_Raster_NewFunc raster_new; + FT_Raster_ResetFunc raster_reset; + FT_Raster_SetModeFunc raster_set_mode; + FT_Raster_RenderFunc raster_render; + FT_Raster_DoneFunc raster_done; + + } FT_Raster_Funcs; + + /* */ + + +FT_END_HEADER + +#endif /* __FTIMAGE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/osx/include/freetype/ftincrem.h b/lib/osx/include/freetype/ftincrem.h new file mode 100644 index 0000000..840af25 --- /dev/null +++ b/lib/osx/include/freetype/ftincrem.h @@ -0,0 +1,354 @@ +/***************************************************************************/ +/* */ +/* ftincrem.h */ +/* */ +/* FreeType incremental loading (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTINCREM_H__ +#define __FTINCREM_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * `incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application. + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + + /*************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * `incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript interpreters), + * where the glyph data isn't in the font file, or must be overridden by + * different values. + * + * @note: + * It is up to client applications to create and implement @FT_Incremental + * objects, as long as they provide implementations for the methods + * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc + * and @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ + typedef struct FT_IncrementalRec_* FT_Incremental; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned + * by the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical' argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ + typedef struct FT_Incremental_MetricsRec_ + { + FT_Long bearing_x; + FT_Long bearing_y; + FT_Long advance; + FT_Long advance_v; /* since 2.3.12 */ + + } FT_Incremental_MetricsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ + typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the `glyf' table. For PostScript formats, it must correspond to the + * *unencrypted* charstring bytes, without any `lenIV' header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release + * the data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ + typedef void + (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This is necessary because, in certain + * formats like TrueType, the metrics are stored in a different place from + * the glyph images proper. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. + * The original glyph metrics, if any, in font units. If metrics are + * not available all the values must be set to zero. + * + * @output: + * ametrics :: + * The replacement glyph metrics in font units. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphMetricsFunc) + ( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + + /************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data + * incrementally. Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does + * not provide overriding glyph metrics. + * + */ + typedef struct FT_Incremental_FuncsRec_ + { + FT_Incremental_GetGlyphDataFunc get_glyph_data; + FT_Incremental_FreeGlyphDataFunc free_glyph_data; + FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; + + } FT_Incremental_FuncsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * { + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * } + * + */ + typedef struct FT_Incremental_InterfaceRec_ + { + const FT_Incremental_FuncsRec* funcs; + FT_Incremental object; + + } FT_Incremental_InterfaceRec; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ + typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * A constant used as the tag of @FT_Parameter structures to indicate + * an incremental loading object to be used by FreeType. + * + */ +#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FTINCREM_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftlcdfil.h b/lib/osx/include/freetype/ftlcdfil.h new file mode 100644 index 0000000..653ed36 --- /dev/null +++ b/lib/osx/include/freetype/ftlcdfil.h @@ -0,0 +1,293 @@ +/***************************************************************************/ +/* */ +/* ftlcdfil.h */ +/* */ +/* FreeType API for color filtering of subpixel bitmap glyphs */ +/* (specification). */ +/* */ +/* Copyright 2006-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_LCD_FILTER_H__ +#define __FT_LCD_FILTER_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * lcd_filtering + * + * @title: + * LCD Filtering + * + * @abstract: + * Reduce color fringes of subpixel-rendered bitmaps. + * + * @description: + * Subpixel rendering exploits the color-striped structure of LCD + * pixels, increasing the available resolution in the direction of the + * stripe (usually horizontal RGB) by a factor of~3. Since these + * subpixels are color pixels, using them unfiltered creates severe + * color fringes. Use the @FT_Library_SetLcdFilter API to specify a + * low-pass filter, which is then applied to subpixel-rendered bitmaps + * generated through @FT_Render_Glyph. The filter sacrifices some of + * the higher resolution to reduce color fringes, making the glyph image + * slightly blurrier. Positional improvements will remain. + * + * Note that no filter is active by default, and that this function is + * *not* implemented in default builds of the library. You need to + * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file + * in order to activate it. + * + * A filter should have two properties: + * + * 1) It should be normalized, meaning the sum of the 5~components + * should be 256 (0x100). It is possible to go above or under this + * target sum, however: going under means tossing out contrast, going + * over means invoking clamping and thereby non-linearities that + * increase contrast somewhat at the expense of greater distortion + * and color-fringing. Contrast is better enhanced through stem + * darkening. + * + * 2) It should be color-balanced, meaning a filter `{~a, b, c, b, a~}' + * where a~+ b~=~c. It distributes the computed coverage for one + * subpixel to all subpixels equally, sacrificing some won resolution + * but drastically reducing color-fringing. Positioning improvements + * remain! Note that color-fringing can only really be minimized + * when using a color-balanced filter and alpha-blending the glyph + * onto a surface in linear space; see @FT_Render_Glyph. + * + * Regarding the form, a filter can be a `boxy' filter or a `beveled' + * filter. Boxy filters are sharper but are less forgiving of non-ideal + * gamma curves of a screen (viewing angles!), beveled filters are + * fuzzier but more tolerant. + * + * Examples: + * + * - [0x10 0x40 0x70 0x40 0x10] is beveled and neither balanced nor + * normalized. + * + * - [0x1A 0x33 0x4D 0x33 0x1A] is beveled and balanced but not + * normalized. + * + * - [0x19 0x33 0x66 0x4c 0x19] is beveled and normalized but not + * balanced. + * + * - [0x00 0x4c 0x66 0x4c 0x00] is boxily beveled and normalized but not + * balanced. + * + * - [0x00 0x55 0x56 0x55 0x00] is boxy, normalized, and almost + * balanced. + * + * - [0x08 0x4D 0x56 0x4D 0x08] is beveled, normalized and, almost + * balanced. + * + * It is important to understand that linear alpha blending and gamma + * correction is critical for correctly rendering glyphs onto surfaces + * without artifacts and even more critical when subpixel rendering is + * involved. + * + * Each of the 3~alpha values (subpixels) is independently used to blend + * one color channel. That is, red alpha blends the red channel of the + * text color with the red channel of the background pixel. The + * distribution of density values by the color-balanced filter assumes + * alpha blending is done in linear space; only then color artifacts + * cancel out. + */ + + + /**************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * The default filter reduces color fringes considerably, at the cost + * of a slight blurriness in the output. + * + * It is a beveled, normalized, and color-balanced five-tap filter + * that is more forgiving to screens with non-ideal gamma curves and + * viewing angles. Note that while color-fringing is reduced, it can + * only be minimized by using linear alpha blending and gamma + * correction to render glyphs onto surfaces. + * + * FT_LCD_FILTER_LIGHT :: + * The light filter is a variant that is sharper at the cost of + * slightly more color fringes than the default one. + * + * It is a boxy, normalized, and color-balanced three-tap filter that + * is less forgiving to screens with non-ideal gamma curves and + * viewing angles. This filter works best when the rendering system + * uses linear alpha blending and gamma correction to render glyphs + * onto surfaces. + * + * FT_LCD_FILTER_LEGACY :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * In other words, it only works well if the TrueType bytecode + * interpreter is enabled *and* high-quality hinted fonts are used. + * + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. + * + * FT_LCD_FILTER_LEGACY1 :: + * For historical reasons, the FontConfig library returns a different + * enumeration value for legacy LCD filtering. To make code work that + * (incorrectly) forwards FontConfig's enumeration value to + * @FT_Library_SetLcdFilter without proper mapping, it is thus easiest + * to have another enumeration value, which is completely equal to + * `FT_LCD_FILTER_LEGACY'. + * + * @since: + * 2.3.0 (`FT_LCD_FILTER_LEGACY1' since 2.6.2) + */ + typedef enum FT_LcdFilter_ + { + FT_LCD_FILTER_NONE = 0, + FT_LCD_FILTER_DEFAULT = 1, + FT_LCD_FILTER_LIGHT = 2, + FT_LCD_FILTER_LEGACY1 = 3, + FT_LCD_FILTER_LEGACY = 16, + + FT_LCD_FILTER_MAX /* do not remove */ + + } FT_LcdFilter; + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work + * well on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This feature is always disabled by default. Clients must make an + * explicit call to this function with a `filter' value other than + * @FT_LCD_FILTER_NONE in order to enable it. + * + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, + * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. + * + * It does _not_ affect the output of @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * If this feature is activated, the dimensions of LCD glyph bitmaps are + * either larger or taller than the dimensions of the corresponding + * outline with regards to the pixel grid. For example, for + * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and + * up to 3~pixels to the right. + * + * The bitmap offset values are adjusted correctly, so clients shouldn't + * need to modify their layout and glyph positioning code when enabling + * the filter. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilterWeights + * + * @description: + * Use this function to override the filter weights selected by + * @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple + * (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10, + * 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and + * FT_LCD_FILTER_LEGACY. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * This function must be called after @FT_Library_SetLcdFilter to have + * any effect. + * + * @since: + * 2.4.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + + /* */ + + +FT_END_HEADER + +#endif /* __FT_LCD_FILTER_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftlist.h b/lib/osx/include/freetype/ftlist.h new file mode 100644 index 0000000..12b48c7 --- /dev/null +++ b/lib/osx/include/freetype/ftlist.h @@ -0,0 +1,276 @@ +/***************************************************************************/ +/* */ +/* ftlist.h */ +/* */ +/* Generic list support for FreeType (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file implements functions relative to list processing. Its */ + /* data structures are defined in `freetype.h'. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTLIST_H__ +#define __FTLIST_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /* <Title> */ + /* List Processing */ + /* */ + /* <Abstract> */ + /* Simple management of lists. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to list */ + /* processing using doubly-linked nodes. */ + /* */ + /* <Order> */ + /* FT_List */ + /* FT_ListNode */ + /* FT_ListRec */ + /* FT_ListNodeRec */ + /* */ + /* FT_List_Add */ + /* FT_List_Insert */ + /* FT_List_Find */ + /* FT_List_Remove */ + /* FT_List_Up */ + /* FT_List_Iterate */ + /* FT_List_Iterator */ + /* FT_List_Finalize */ + /* FT_List_Destructor */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Find */ + /* */ + /* <Description> */ + /* Find the list node for a given listed object. */ + /* */ + /* <Input> */ + /* list :: A pointer to the parent list. */ + /* data :: The address of the listed object. */ + /* */ + /* <Return> */ + /* List node. NULL if it wasn't found. */ + /* */ + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Add */ + /* */ + /* <Description> */ + /* Append an element to the end of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to append. */ + /* */ + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Insert */ + /* */ + /* <Description> */ + /* Insert an element at the head of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to parent list. */ + /* node :: The node to insert. */ + /* */ + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Remove */ + /* */ + /* <Description> */ + /* Remove a node from a list. This function doesn't check whether */ + /* the node is in the list! */ + /* */ + /* <Input> */ + /* node :: The node to remove. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* */ + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Up */ + /* */ + /* <Description> */ + /* Move a node to the head/top of a list. Used to maintain LRU */ + /* lists. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to move. */ + /* */ + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Iterator */ + /* */ + /* <Description> */ + /* An FT_List iterator function that is called during a list parse */ + /* by @FT_List_Iterate. */ + /* */ + /* <Input> */ + /* node :: The current iteration list node. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. */ + /* Can be used to point to the iteration's state. */ + /* */ + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Iterate */ + /* */ + /* <Description> */ + /* Parse a list and calls a given iterator function on each element. */ + /* Note that parsing is stopped as soon as one of the iterator calls */ + /* returns a non-zero value. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* iterator :: An iterator function, called on each node of the list. */ + /* user :: A user-supplied field that is passed as the second */ + /* argument to the iterator. */ + /* */ + /* <Return> */ + /* The result (a FreeType error code) of the last iterator call. */ + /* */ + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Destructor */ + /* */ + /* <Description> */ + /* An @FT_List iterator function that is called during a list */ + /* finalization by @FT_List_Finalize to destroy all elements in a */ + /* given list. */ + /* */ + /* <Input> */ + /* system :: The current system object. */ + /* */ + /* data :: The current object to destroy. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ + /* be used to point to the iteration's state. */ + /* */ + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Finalize */ + /* */ + /* <Description> */ + /* Destroy all elements in the list as well as the list itself. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* */ + /* destroy :: A list destructor that will be applied to each element */ + /* of the list. Set this to NULL if not needed. */ + /* */ + /* memory :: The current memory object that handles deallocation. */ + /* */ + /* user :: A user-supplied field that is passed as the last */ + /* argument to the destructor. */ + /* */ + /* <Note> */ + /* This function expects that all nodes added by @FT_List_Add or */ + /* @FT_List_Insert have been dynamically allocated. */ + /* */ + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLIST_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftlzw.h b/lib/osx/include/freetype/ftlzw.h new file mode 100644 index 0000000..d3ec28e --- /dev/null +++ b/lib/osx/include/freetype/ftlzw.h @@ -0,0 +1,99 @@ +/***************************************************************************/ +/* */ +/* ftlzw.h */ +/* */ +/* LZW-compressed stream support. */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTLZW_H__ +#define __FTLZW_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* lzw */ + /* */ + /* <Title> */ + /* LZW Streams */ + /* */ + /* <Abstract> */ + /* Using LZW-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of LZW-specific functions. */ + /* */ + /*************************************************************************/ + + /************************************************************************ + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is + * mainly used to support the compressed `*.pcf.Z' fonts that come + * with XFree86. + * + * @input: + * stream :: The target embedding stream. + * + * source :: The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream + * + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it + * and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with LZW support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLZW_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftmac.h b/lib/osx/include/freetype/ftmac.h new file mode 100644 index 0000000..14c55cf --- /dev/null +++ b/lib/osx/include/freetype/ftmac.h @@ -0,0 +1,274 @@ +/***************************************************************************/ +/* */ +/* ftmac.h */ +/* */ +/* Additional Mac-specific API. */ +/* */ +/* Copyright 1996-2015 by */ +/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* NOTE: Include this file after FT_FREETYPE_H and after any */ +/* Mac-specific headers (because this header uses Mac types such as */ +/* Handle, FSSpec, FSRef, etc.) */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMAC_H__ +#define __FTMAC_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + +/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ +#ifndef FT_DEPRECATED_ATTRIBUTE +#if defined(__GNUC__) && \ + ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) +#else +#define FT_DEPRECATED_ATTRIBUTE +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* mac_specific */ + /* */ + /* <Title> */ + /* Mac Specific Interface */ + /* */ + /* <Abstract> */ + /* Only available on the Macintosh. */ + /* */ + /* <Description> */ + /* The following definitions are only available if FreeType is */ + /* compiled on a Macintosh. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FOND */ + /* */ + /* <Description> */ + /* Create a new face object from a FOND resource. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* fond :: A FOND resource. */ + /* */ + /* face_index :: Only supported for the -1 `sanity check' special */ + /* case. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Notes> */ + /* This function can be used to create @FT_Face objects from fonts */ + /* that are installed in the system as follows. */ + /* */ + /* { */ + /* fond = GetResource( 'FOND', fontName ); */ + /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font (e.g., Times New Roman */ + /* Bold). */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFilePath_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return a pathname of the disk file and face index for given font */ + /* name that is handled by ATS framework. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* path :: Buffer to store pathname of the file. For passing */ + /* to @FT_New_Face. The client must allocate this */ + /* buffer before calling this function. */ + /* */ + /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ + /* */ + /* face_index :: Index of the face. For passing to @FT_New_Face. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSSpec */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSSpec to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSSpec to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ + /* it accepts an FSSpec instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSRef */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSRef to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSRef to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ + /* it accepts an FSRef instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + /* */ + + +FT_END_HEADER + + +#endif /* __FTMAC_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftmm.h b/lib/osx/include/freetype/ftmm.h new file mode 100644 index 0000000..96dd66e --- /dev/null +++ b/lib/osx/include/freetype/ftmm.h @@ -0,0 +1,384 @@ +/***************************************************************************/ +/* */ +/* ftmm.h */ +/* */ +/* FreeType Multiple Master font interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMM_H__ +#define __FTMM_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* multiple_masters */ + /* */ + /* <Title> */ + /* Multiple Masters */ + /* */ + /* <Abstract> */ + /* How to manage Multiple Masters fonts. */ + /* */ + /* <Description> */ + /* The following types and functions are used to manage Multiple */ + /* Master fonts, i.e., the selection of specific design instances by */ + /* setting design axis coordinates. */ + /* */ + /* George Williams has extended this interface to make it work with */ + /* both Type~1 Multiple Masters fonts and GX distortable (var) */ + /* fonts. Some of these routines only work with MM fonts, others */ + /* will work with both types. They are similar enough that a */ + /* consistent interface makes sense. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters fonts. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + typedef struct FT_MM_Axis_ + { + FT_String* name; + FT_Long minimum; + FT_Long maximum; + + } FT_MM_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Multi_Master */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* font. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* num_axis :: Number of axes. Cannot exceed~4. */ + /* */ + /* num_designs :: Number of designs; should be normally 2^num_axis */ + /* even though the Type~1 specification strangely */ + /* allows for intermediate designs to be present. */ + /* This number cannot exceed~16. */ + /* */ + /* axis :: A table of axis descriptors. */ + /* */ + typedef struct FT_Multi_Master_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_MM_Axis axis[T1_MAX_MM_AXIS]; + + } FT_Multi_Master; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters and GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* Not always meaningful for GX. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* def :: The axis's default design coordinate. */ + /* FreeType computes meaningful default values for MM; it */ + /* is then an integer value, not in 16.16 format. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + /* tag :: The axis's tag (the GX equivalent to `name'). */ + /* FreeType provides default values for MM if possible. */ + /* */ + /* strid :: The entry in `name' table (another GX version of */ + /* `name'). */ + /* Not meaningful for MM. */ + /* */ + typedef struct FT_Var_Axis_ + { + FT_String* name; + + FT_Fixed minimum; + FT_Fixed def; + FT_Fixed maximum; + + FT_ULong tag; + FT_UInt strid; + + } FT_Var_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Named_Style */ + /* */ + /* <Description> */ + /* A simple structure used to model a named style in a GX var font. */ + /* */ + /* This structure can't be used for MM fonts. */ + /* */ + /* <Fields> */ + /* coords :: The design coordinates for this style. */ + /* This is an array with one entry for each axis. */ + /* */ + /* strid :: The entry in `name' table identifying this style. */ + /* */ + typedef struct FT_Var_Named_Style_ + { + FT_Fixed* coords; + FT_UInt strid; + + } FT_Var_Named_Style; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Var */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* or GX var distortable font. */ + /* */ + /* Some fields are specific to one format and not to the other. */ + /* */ + /* <Fields> */ + /* num_axis :: The number of axes. The maximum value is~4 for */ + /* MM; no limit in GX. */ + /* */ + /* num_designs :: The number of designs; should be normally */ + /* 2^num_axis for MM fonts. Not meaningful for GX */ + /* (where every glyph could have a different */ + /* number of designs). */ + /* */ + /* num_namedstyles :: The number of named styles; only meaningful for */ + /* GX that allows certain design coordinates to */ + /* have a string ID (in the `name' table) */ + /* associated with them. The font can tell the */ + /* user that, for example, Weight=1.5 is `Bold'. */ + /* */ + /* axis :: An axis descriptor table. */ + /* GX fonts contain slightly more data than MM. */ + /* Memory management of this pointer is done */ + /* internally by FreeType. */ + /* */ + /* namedstyle :: A named style table. */ + /* Only meaningful with GX. */ + /* Memory management of this pointer is done */ + /* internally by FreeType. */ + /* */ + typedef struct FT_MM_Var_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_UInt num_namedstyles; + FT_Var_Axis* axis; + FT_Var_Named_Style* namedstyle; + + } FT_MM_Var; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Multi_Master */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master descriptor of a given font. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_MM_Var */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master/GX var descriptor of a given font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters/GX var descriptor. */ + /* Allocates a data structure, which the user must */ + /* deallocate with `free' after use. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Var( FT_Face face, + FT_MM_Var* *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters fonts, choose an interpolated font design */ + /* through design coordinates. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of available design coordinates. If it */ + /* is larger than the number of axes, ignore the excess */ + /* values. If it is smaller than the number of axes, */ + /* use default values for the remaining axes. */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Master or GX Var fonts, choose an interpolated font */ + /* design through design coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of available design coordinates. If it */ + /* is larger than the number of axes, ignore the excess */ + /* values. If it is smaller than the number of axes, */ + /* use default values for the remaining axes. */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Blend_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters and GX var fonts, choose an interpolated font */ + /* design through normalized blend coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of available design coordinates. If it */ + /* is larger than the number of axes, ignore the excess */ + /* values. If it is smaller than the number of axes, */ + /* use default values for the remaining axes. */ + /* */ + /* coords :: The design coordinates array (each element must be */ + /* between 0 and 1.0). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Blend_Coordinates */ + /* */ + /* <Description> */ + /* This is another name of @FT_Set_MM_Blend_Coordinates. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTMM_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftmodapi.h b/lib/osx/include/freetype/ftmodapi.h new file mode 100644 index 0000000..89d9347 --- /dev/null +++ b/lib/osx/include/freetype/ftmodapi.h @@ -0,0 +1,672 @@ +/***************************************************************************/ +/* */ +/* ftmodapi.h */ +/* */ +/* FreeType modules public interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMODAPI_H__ +#define __FTMODAPI_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /* <Title> */ + /* Module Management */ + /* */ + /* <Abstract> */ + /* How to add, upgrade, remove, and control modules from FreeType. */ + /* */ + /* <Description> */ + /* The definitions below are used to manage modules within FreeType. */ + /* Modules can be added, upgraded, and removed at runtime. */ + /* Additionally, some module properties can be controlled also. */ + /* */ + /* Here is a list of possible values of the `module_name' field in */ + /* the @FT_Module_Class structure. */ + /* */ + /* { */ + /* autofitter */ + /* bdf */ + /* cff */ + /* gxvalid */ + /* otvalid */ + /* pcf */ + /* pfr */ + /* psaux */ + /* pshinter */ + /* psnames */ + /* raster1 */ + /* sfnt */ + /* smooth, smooth-lcd, smooth-lcdv */ + /* truetype */ + /* type1 */ + /* type42 */ + /* t1cid */ + /* winfonts */ + /* } */ + /* */ + /* Note that the FreeType Cache sub-system is not a FreeType module. */ + /* */ + /* <Order> */ + /* FT_Module */ + /* FT_Module_Constructor */ + /* FT_Module_Destructor */ + /* FT_Module_Requester */ + /* FT_Module_Class */ + /* */ + /* FT_Add_Module */ + /* FT_Get_Module */ + /* FT_Remove_Module */ + /* FT_Add_Default_Modules */ + /* */ + /* FT_Property_Set */ + /* FT_Property_Get */ + /* */ + /* FT_New_Library */ + /* FT_Done_Library */ + /* FT_Reference_Library */ + /* */ + /* FT_Renderer */ + /* FT_Renderer_Class */ + /* */ + /* FT_Get_Renderer */ + /* FT_Set_Renderer */ + /* */ + /* FT_Set_Debug_Hook */ + /* */ + /*************************************************************************/ + + + /* module bit flags */ +#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ +#define FT_MODULE_RENDERER 2 /* this module is a renderer */ +#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ +#define FT_MODULE_STYLER 8 /* this module is a styler */ + +#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ + /* scalable fonts */ +#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ + /* support vector outlines */ +#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ + /* own hinter */ +#define FT_MODULE_DRIVER_HINTS_LIGHTLY 0x800 /* the driver's hinter */ + /* produces LIGHT hints */ + + + /* deprecated values */ +#define ft_module_font_driver FT_MODULE_FONT_DRIVER +#define ft_module_renderer FT_MODULE_RENDERER +#define ft_module_hinter FT_MODULE_HINTER +#define ft_module_styler FT_MODULE_STYLER + +#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE +#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES +#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER +#define ft_module_driver_hints_lightly FT_MODULE_DRIVER_HINTS_LIGHTLY + + + typedef FT_Pointer FT_Module_Interface; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Constructor */ + /* */ + /* <Description> */ + /* A function used to initialize (not create) a new module object. */ + /* */ + /* <Input> */ + /* module :: The module to initialize. */ + /* */ + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destructor */ + /* */ + /* <Description> */ + /* A function used to finalize (not destroy) a given module object. */ + /* */ + /* <Input> */ + /* module :: The module to finalize. */ + /* */ + typedef void + (*FT_Module_Destructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Requester */ + /* */ + /* <Description> */ + /* A function used to query a given module for a specific interface. */ + /* */ + /* <Input> */ + /* module :: The module to be searched. */ + /* */ + /* name :: The name of the interface in the module. */ + /* */ + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Module_Class */ + /* */ + /* <Description> */ + /* The module class descriptor. */ + /* */ + /* <Fields> */ + /* module_flags :: Bit flags describing the module. */ + /* */ + /* module_size :: The size of one module object/instance in */ + /* bytes. */ + /* */ + /* module_name :: The name of the module. */ + /* */ + /* module_version :: The version, as a 16.16 fixed number */ + /* (major.minor). */ + /* */ + /* module_requires :: The version of FreeType this module requires, */ + /* as a 16.16 fixed number (major.minor). Starts */ + /* at version 2.0, i.e., 0x20000. */ + /* */ + /* module_init :: The initializing function. */ + /* */ + /* module_done :: The finalizing function. */ + /* */ + /* get_interface :: The interface requesting function. */ + /* */ + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Long module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Module */ + /* */ + /* <Description> */ + /* Add a new module to a given library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* clazz :: A pointer to class descriptor for the module. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module */ + /* */ + /* <Description> */ + /* Find a module by its name. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module handle. 0~if none was found. */ + /* */ + /* <Note> */ + /* FreeType's internal modules aren't documented very well, and you */ + /* should look up the source code for details. */ + /* */ + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Remove_Module */ + /* */ + /* <Description> */ + /* Remove a given module from a library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to a library object. */ + /* */ + /* <Input> */ + /* module :: A handle to a module object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The module object is destroyed by the function in case of success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); + + + /********************************************************************** + * + * @function: + * FT_Property_Set + * + * @description: + * Set a property for a given module. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * Note that only a few modules have properties. + * + * value :: + * A generic pointer to a variable or structure that gives the new + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example sets property `bar' (a simple integer) in + * module `foo' to value~1. + * + * { + * FT_UInt bar; + * + * + * bar = 1; + * FT_Property_Set( library, "foo", "bar", &bar ); + * } + * + * Note that the FreeType Cache sub-system doesn't recognize module + * property changes. To avoid glyph lookup confusion within the cache + * you should call @FTC_Manager_Reset to completely flush the cache if + * a module property gets changed after @FTC_Manager_New has been + * called. + * + * It is not possible to set properties of the FreeType Cache + * sub-system itself with FT_Property_Set; use @FTC_Property_Set + * instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Set( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + const void* value ); + + + /********************************************************************** + * + * @function: + * FT_Property_Get + * + * @description: + * Get a module's property value. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * @inout: + * value :: + * A generic pointer to a variable or structure that gives the + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example gets property `baz' (a range) in module `foo'. + * + * { + * typedef range_ + * { + * FT_Int32 min; + * FT_Int32 max; + * + * } range; + * + * range baz; + * + * + * FT_Property_Get( library, "foo", "baz", &baz ); + * } + * + * It is not possible to retrieve properties of the FreeType Cache + * sub-system with FT_Property_Get; use @FTC_Property_Get instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Get( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + void* value ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Library */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Library */ + /* structure is created. This function increments the counter. */ + /* @FT_Done_Library then only destroys a library if the counter is~1, */ + /* otherwise it simply decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures that */ + /* reference @FT_Library objects. */ + /* */ + /* <Input> */ + /* library :: A handle to a target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Library( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Library */ + /* */ + /* <Description> */ + /* This function is used to create a new FreeType library instance */ + /* from a given memory object. It is thus possible to use libraries */ + /* with distinct memory allocators within the same program. Note, */ + /* however, that the used @FT_Memory structure is expected to remain */ + /* valid for the life of the @FT_Library object. */ + /* */ + /* Normally, you would call this function (followed by a call to */ + /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ + /* instead of @FT_Init_FreeType to initialize the FreeType library. */ + /* */ + /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ + /* library instance. */ + /* */ + /* <Input> */ + /* memory :: A handle to the original memory object. */ + /* */ + /* <Output> */ + /* alibrary :: A pointer to handle of a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Library */ + /* */ + /* <Description> */ + /* Discard a given library object. This closes all drivers and */ + /* discards all resource objects. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); + + /* */ + + typedef void + (*FT_DebugHook_Func)( void* arg ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Debug_Hook */ + /* */ + /* <Description> */ + /* Set a debug hook function for debugging the interpreter of a font */ + /* format. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* hook_index :: The index of the debug hook. You should use the */ + /* values defined in `ftobjs.h', e.g., */ + /* `FT_DEBUG_HOOK_TRUETYPE'. */ + /* */ + /* debug_hook :: The function used to debug the interpreter. */ + /* */ + /* <Note> */ + /* Currently, four debug hook slots are available, but only two (for */ + /* the TrueType and the Type~1 interpreter) are defined. */ + /* */ + /* Since the internal headers of FreeType are no longer installed, */ + /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ + /* This is a bug and will be fixed in a forthcoming release. */ + /* */ + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Default_Modules */ + /* */ + /* <Description> */ + /* Add the set of default drivers to a given library object. */ + /* This is only useful when you create a library object with */ + /* @FT_New_Library (usually to plug a custom memory manager). */ + /* */ + /* <InOut> */ + /* library :: A handle to a new library object. */ + /* */ + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); + + + + /************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode + * engine is implemented in a given FT_Library instance. It is used + * by the @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * The library implements a bytecode interpreter that doesn't + * support the patented operations of the TrueType virtual machine. + * + * Its main use is to load certain Asian fonts that position and + * scale glyph components with bytecode instructions. It produces + * bad output for most other fonts. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers + * the full instruction set of the TrueType virtual machine (this + * was governed by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ + typedef enum FT_TrueTypeEngineType_ + { + FT_TRUETYPE_ENGINE_TYPE_NONE = 0, + FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, + FT_TRUETYPE_ENGINE_TYPE_PATENTED + + } FT_TrueTypeEngineType; + + + /************************************************************************** + * + * @func: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of + * the TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ + FT_EXPORT( FT_TrueTypeEngineType ) + FT_Get_TrueType_Engine_Type( FT_Library library ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTMODAPI_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftmoderr.h b/lib/osx/include/freetype/ftmoderr.h new file mode 100644 index 0000000..9d7f981 --- /dev/null +++ b/lib/osx/include/freetype/ftmoderr.h @@ -0,0 +1,194 @@ +/***************************************************************************/ +/* */ +/* ftmoderr.h */ +/* */ +/* FreeType module error offsets (specification). */ +/* */ +/* Copyright 2001-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the FreeType module error codes. */ + /* */ + /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is */ + /* set, the lower byte of an error value identifies the error code as */ + /* usual. In addition, the higher byte identifies the module. For */ + /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */ + /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error */ + /* `T1_Err_Invalid_File_Format' has value 0x1403, etc. */ + /* */ + /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero, */ + /* including the high byte. */ + /* */ + /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of */ + /* an error value is set to zero. */ + /* */ + /* To hide the various `XXX_Err_' prefixes in the source code, FreeType */ + /* provides some macros in `fttypes.h'. */ + /* */ + /* FT_ERR( err ) */ + /* Add current error module prefix (as defined with the */ + /* `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module */ + /* the line */ + /* */ + /* error = FT_ERR( Invalid_Outline ); */ + /* */ + /* expands to */ + /* */ + /* error = BDF_Err_Invalid_Outline; */ + /* */ + /* For simplicity, you can always use `FT_Err_Ok' directly instead */ + /* of `FT_ERR( Ok )'. */ + /* */ + /* FT_ERR_EQ( errcode, err ) */ + /* FT_ERR_NEQ( errcode, err ) */ + /* Compare error code `errcode' with the error `err' for equality */ + /* and inequality, respectively. Example: */ + /* */ + /* if ( FT_ERR_EQ( error, Invalid_Outline ) ) */ + /* ... */ + /* */ + /* Using this macro you don't have to think about error prefixes. */ + /* Of course, if module errors are not active, the above example is */ + /* the same as */ + /* */ + /* if ( error == FT_Err_Invalid_Outline ) */ + /* ... */ + /* */ + /* FT_ERROR_BASE( errcode ) */ + /* FT_ERROR_MODULE( errcode ) */ + /* Get base error and module error code, respectively. */ + /* */ + /* */ + /* It can also be used to create a module error message table easily */ + /* with something like */ + /* */ + /* { */ + /* #undef __FTMODERR_H__ */ + /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ + /* #define FT_MODERR_START_LIST { */ + /* #define FT_MODERR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int mod_err_offset; */ + /* const char* mod_err_msg */ + /* } ft_mod_errors[] = */ + /* */ + /* #include FT_MODULE_ERRORS_H */ + /* } */ + /* */ + /*************************************************************************/ + + +#ifndef __FTMODERR_H__ +#define __FTMODERR_H__ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) + FT_MODERRDEF( BDF, 0x200, "BDF module" ) + FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) + FT_MODERRDEF( Cache, 0x400, "cache module" ) + FT_MODERRDEF( CFF, 0x500, "CFF module" ) + FT_MODERRDEF( CID, 0x600, "CID module" ) + FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) + FT_MODERRDEF( LZW, 0x800, "LZW module" ) + FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) + FT_MODERRDEF( PCF, 0xA00, "PCF module" ) + FT_MODERRDEF( PFR, 0xB00, "PFR module" ) + FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) + FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) + FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) + FT_MODERRDEF( Raster, 0xF00, "raster module" ) + FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) + FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) + FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) + FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) + FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) + FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* __FTMODERR_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftotval.h b/lib/osx/include/freetype/ftotval.h new file mode 100644 index 0000000..e744b71 --- /dev/null +++ b/lib/osx/include/freetype/ftotval.h @@ -0,0 +1,204 @@ +/***************************************************************************/ +/* */ +/* ftotval.h */ +/* */ +/* FreeType API for validating OpenType tables (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* */ +/* Warning: This module might be moved to a different library in the */ +/* future to avoid a tight dependency between FreeType and the */ +/* OpenType specification. */ +/* */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOTVAL_H__ +#define __FTOTVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* ot_validation */ + /* */ + /* <Title> */ + /* OpenType Validation */ + /* */ + /* <Abstract> */ + /* An API to validate OpenType tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */ + /* */ + /* <Order> */ + /* FT_OpenType_Validate */ + /* FT_OpenType_Free */ + /* */ + /* FT_VALIDATE_OTXXX */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @description: + * A list of bit-field constants used with @FT_OpenType_Validate to + * indicate which OpenType tables should be validated. + * + * @values: + * FT_VALIDATE_BASE :: + * Validate BASE table. + * + * FT_VALIDATE_GDEF :: + * Validate GDEF table. + * + * FT_VALIDATE_GPOS :: + * Validate GPOS table. + * + * FT_VALIDATE_GSUB :: + * Validate GSUB table. + * + * FT_VALIDATE_JSTF :: + * Validate JSTF table. + * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ +#define FT_VALIDATE_BASE 0x0100 +#define FT_VALIDATE_GDEF 0x0200 +#define FT_VALIDATE_GPOS 0x0400 +#define FT_VALIDATE_GSUB 0x0800 +#define FT_VALIDATE_JSTF 0x1000 +#define FT_VALIDATE_MATH 0x2000 + +#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH + + /********************************************************************** + * + * @function: + * FT_OpenType_Validate + * + * @description: + * Validate various OpenType tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_OTXXX for possible values. + * + * @output: + * BASE_table :: + * A pointer to the BASE table. + * + * GDEF_table :: + * A pointer to the GDEF table. + * + * GPOS_table :: + * A pointer to the GPOS table. + * + * GSUB_table :: + * A pointer to the GSUB table. + * + * JSTF_table :: + * A pointer to the JSTF table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with OpenType fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the five tables with + * @FT_OpenType_Free. A NULL value indicates that the table either + * doesn't exist in the font, or the application hasn't asked for + * validation. + */ + FT_EXPORT( FT_Error ) + FT_OpenType_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *BASE_table, + FT_Bytes *GDEF_table, + FT_Bytes *GPOS_table, + FT_Bytes *GSUB_table, + FT_Bytes *JSTF_table ); + + /********************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ + FT_EXPORT( void ) + FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTOTVAL_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftoutln.h b/lib/osx/include/freetype/ftoutln.h new file mode 100644 index 0000000..b6ec70d --- /dev/null +++ b/lib/osx/include/freetype/ftoutln.h @@ -0,0 +1,574 @@ +/***************************************************************************/ +/* */ +/* ftoutln.h */ +/* */ +/* Support for the FT_Outline type used to store glyph shapes of */ +/* most scalable font formats (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOUTLN_H__ +#define __FTOUTLN_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /* <Title> */ + /* Outline Processing */ + /* */ + /* <Abstract> */ + /* Functions to create, transform, and render vectorial glyph images. */ + /* */ + /* <Description> */ + /* This section contains routines used to create and destroy scalable */ + /* glyph images known as `outlines'. These can also be measured, */ + /* transformed, and converted into bitmaps and pixmaps. */ + /* */ + /* <Order> */ + /* FT_Outline */ + /* FT_Outline_New */ + /* FT_Outline_Done */ + /* FT_Outline_Copy */ + /* FT_Outline_Translate */ + /* FT_Outline_Transform */ + /* FT_Outline_Embolden */ + /* FT_Outline_EmboldenXY */ + /* FT_Outline_Reverse */ + /* FT_Outline_Check */ + /* */ + /* FT_Outline_Get_CBox */ + /* FT_Outline_Get_BBox */ + /* */ + /* FT_Outline_Get_Bitmap */ + /* FT_Outline_Render */ + /* FT_Outline_Decompose */ + /* FT_Outline_Funcs */ + /* FT_Outline_MoveToFunc */ + /* FT_Outline_LineToFunc */ + /* FT_Outline_ConicToFunc */ + /* FT_Outline_CubicToFunc */ + /* */ + /* FT_Orientation */ + /* FT_Outline_Get_Orientation */ + /* */ + /* FT_OUTLINE_XXX */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Decompose */ + /* */ + /* <Description> */ + /* Walk over an outline's structure to decompose it into individual */ + /* segments and Bézier arcs. This function also emits `move to' */ + /* operations to indicate the start of new contours in the outline. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source target. */ + /* */ + /* func_interface :: A table of `emitters', i.e., function pointers */ + /* called during decomposition to indicate path */ + /* operations. */ + /* */ + /* <InOut> */ + /* user :: A typeless pointer that is passed to each */ + /* emitter during the decomposition. It can be */ + /* used to store the state during the */ + /* decomposition. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* A contour that contains a single point only is represented by a */ + /* `move to' operation followed by `line to' to the same point. In */ + /* most cases, it is best to filter this out before using the */ + /* outline for stroking purposes (otherwise it would result in a */ + /* visible dot when round caps are used). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_New */ + /* */ + /* <Description> */ + /* Create a new outline of a given size. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object from where the */ + /* outline is allocated. Note however that the new */ + /* outline will *not* necessarily be *freed*, when */ + /* destroying the library, by @FT_Done_FreeType. */ + /* */ + /* numPoints :: The maximum number of points within the outline. */ + /* Must be smaller than or equal to 0xFFFF (65535). */ + /* */ + /* numContours :: The maximum number of contours within the outline. */ + /* This value must be in the range 0 to `numPoints'. */ + /* */ + /* <Output> */ + /* anoutline :: A handle to the new outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' parameter is simply */ + /* to use the library's memory allocator. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_New_Internal( FT_Memory memory, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Done */ + /* */ + /* <Description> */ + /* Destroy an outline created with @FT_Outline_New. */ + /* */ + /* <Input> */ + /* library :: A handle of the library object used to allocate the */ + /* outline. */ + /* */ + /* outline :: A pointer to the outline object to be discarded. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the outline's `owner' field is not set, only the outline */ + /* descriptor will be released. */ + /* */ + /* The reason why this function takes an `library' parameter is */ + /* simply to use ft_mem_free(). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Check */ + /* */ + /* <Description> */ + /* Check the contents of an outline descriptor. */ + /* */ + /* <Input> */ + /* outline :: A handle to a source outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_CBox */ + /* */ + /* <Description> */ + /* Return an outline's `control box'. The control box encloses all */ + /* the outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* that contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component, which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <Output> */ + /* acbox :: The outline's control box. */ + /* */ + /* <Note> */ + /* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Translate */ + /* */ + /* <Description> */ + /* Apply a simple translation to the points of an outline. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* xOffset :: The horizontal offset. */ + /* */ + /* yOffset :: The vertical offset. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Copy */ + /* */ + /* <Description> */ + /* Copy an outline into another one. Both objects must have the */ + /* same sizes (number of points & number of contours) when this */ + /* function is called. */ + /* */ + /* <Input> */ + /* source :: A handle to the source outline. */ + /* */ + /* <Output> */ + /* target :: A handle to the target outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Transform */ + /* */ + /* <Description> */ + /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ + /* for applying rotations, slanting, flipping, etc. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation matrix. */ + /* */ + /* <Note> */ + /* You can use @FT_Outline_Translate if you need to translate the */ + /* outline's points. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Embolden */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be at most 4~times */ + /* `strength' pixels wider and higher. You may think of the left and */ + /* bottom borders as unchanged. */ + /* */ + /* Negative `strength' values to reduce the outline thickness are */ + /* possible also. */ + /* */ + /* <InOut> */ + /* outline :: A handle to the target outline. */ + /* */ + /* <Input> */ + /* strength :: How strong the glyph is emboldened. Expressed in */ + /* 26.6 pixel format. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The used algorithm to increase or decrease the thickness of the */ + /* glyph doesn't change the number of points; this means that certain */ + /* situations like acute angles or intersections are sometimes */ + /* handled incorrectly. */ + /* */ + /* If you need `better' metrics values you should call */ + /* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */ + /* */ + /* Example call: */ + /* */ + /* { */ + /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ + /* if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) */ + /* FT_Outline_Embolden( &face->glyph->outline, strength ); */ + /* } */ + /* */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_EmboldenXY */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be `xstrength' pixels */ + /* wider and `ystrength' pixels higher. Otherwise, it is similar to */ + /* @FT_Outline_Embolden, which uses the same strength in both */ + /* directions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_EmboldenXY( FT_Outline* outline, + FT_Pos xstrength, + FT_Pos ystrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Reverse */ + /* */ + /* <Description> */ + /* Reverse the drawing direction of an outline. This is used to */ + /* ensure consistent fill conventions for mirrored glyphs. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Note> */ + /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ + /* the outline's `flags' field. */ + /* */ + /* It shouldn't be used by a normal client application, unless it */ + /* knows what it is doing. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_Bitmap */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap. The outline's image is simply */ + /* OR-ed to the target bitmap. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the target bitmap descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does NOT CREATE the bitmap, it only renders an */ + /* outline image within the one you pass to it! Consequently, the */ + /* various fields in `abitmap' should be set accordingly. */ + /* */ + /* It will use the raster corresponding to the default glyph format. */ + /* */ + /* The value of the `num_grays' field in `abitmap' is ignored. If */ + /* you select the gray-level rasterizer, and you want less than 256 */ + /* gray levels, you have to use @FT_Outline_Render directly. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Render */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap using the current scan-convert. */ + /* This function uses an @FT_Raster_Params structure as an argument, */ + /* allowing advanced features like direct composition, translucency, */ + /* etc. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* describe the rendering operation. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should know what you are doing and how @FT_Raster_Params works */ + /* to use this function. */ + /* */ + /* The field `params.source' will be set to `outline' before the scan */ + /* converter is called, which means that the value you give to it is */ + /* actually ignored. */ + /* */ + /* The gray-level rasterizer always uses 256 gray levels. If you */ + /* want less gray levels, you have to provide your own span callback. */ + /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ + /* @FT_Raster_Params structure for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + + /************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must + * be filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise contours + * must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ + typedef enum FT_Orientation_ + { + FT_ORIENTATION_TRUETYPE = 0, + FT_ORIENTATION_POSTSCRIPT = 1, + FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, + FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, + FT_ORIENTATION_NONE + + } FT_Orientation; + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its + * fill orientation (see @FT_Orientation). This is done by integrating + * the total area covered by the outline. The positive integral + * corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT + * is returned. The negative integral corresponds to the counter-clockwise + * orientation and @FT_ORIENTATION_TRUETYPE is returned. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ + FT_EXPORT( FT_Orientation ) + FT_Outline_Get_Orientation( FT_Outline* outline ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTOUTLN_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/osx/include/freetype/ftpfr.h b/lib/osx/include/freetype/ftpfr.h new file mode 100644 index 0000000..a1c02a2 --- /dev/null +++ b/lib/osx/include/freetype/ftpfr.h @@ -0,0 +1,172 @@ +/***************************************************************************/ +/* */ +/* ftpfr.h */ +/* */ +/* FreeType API for accessing PFR-specific data (specification only). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTPFR_H__ +#define __FTPFR_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* pfr_fonts */ + /* */ + /* <Title> */ + /* PFR Fonts */ + /* */ + /* <Abstract> */ + /* PFR/TrueDoc specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of PFR-specific functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed + * in metrics units to device sub-pixels. This is equivalent to + * `face->size->x_scale', but for metrics only. Optional (parameter + * can be NULL). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale' but for the vertical direction. + * optional (parameter can be NULL). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: A handle to the input face. + * + * left :: Index of the left glyph. + * + * right :: Index of the right glyph. + * + * @output: + * avector :: A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics + * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED + * mode, which always returns distances converted to outline units. + * + * You can use the value of the `x_scale' and `y_scale' parameters + * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: A handle to the input face. + * + * gindex :: The glyph index. + * + * @output: + * aadvance :: The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics + * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTPFR_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftrender.h b/lib/osx/include/freetype/ftrender.h new file mode 100644 index 0000000..ec8da70 --- /dev/null +++ b/lib/osx/include/freetype/ftrender.h @@ -0,0 +1,232 @@ +/***************************************************************************/ +/* */ +/* ftrender.h */ +/* */ +/* FreeType renderer modules public interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTRENDER_H__ +#define __FTRENDER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + + /* create a new glyph object */ + typedef FT_Error + (*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + + /* destroys a given glyph object */ + typedef void + (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); + + typedef void + (*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + typedef void + (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + +/* deprecated */ +#define FT_Glyph_Init_Func FT_Glyph_InitFunc +#define FT_Glyph_Done_Func FT_Glyph_DoneFunc +#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc +#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc +#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc +#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc + + + struct FT_Glyph_Class_ + { + FT_Long glyph_size; + FT_Glyph_Format glyph_format; + FT_Glyph_InitFunc glyph_init; + FT_Glyph_DoneFunc glyph_done; + FT_Glyph_CopyFunc glyph_copy; + FT_Glyph_TransformFunc glyph_transform; + FT_Glyph_GetBBoxFunc glyph_bbox; + FT_Glyph_PrepareFunc glyph_prepare; + }; + + + typedef FT_Error + (*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode, + const FT_Vector* origin ); + + typedef FT_Error + (*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + typedef void + (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + + typedef FT_Error + (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + +/* deprecated identifiers */ +#define FTRenderer_render FT_Renderer_RenderFunc +#define FTRenderer_transform FT_Renderer_TransformFunc +#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc +#define FTRenderer_setMode FT_Renderer_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Renderer_Class */ + /* */ + /* <Description> */ + /* The renderer module class descriptor. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Module_Class fields. */ + /* */ + /* glyph_format :: The glyph image format this renderer handles. */ + /* */ + /* render_glyph :: A method used to render the image that is in a */ + /* given glyph slot into a bitmap. */ + /* */ + /* transform_glyph :: A method used to transform the image that is in */ + /* a given glyph slot. */ + /* */ + /* get_glyph_cbox :: A method used to access the glyph's cbox. */ + /* */ + /* set_mode :: A method used to pass additional parameters. */ + /* */ + /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ + /* This is a pointer to its raster's class. */ + /* */ + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FT_Renderer_RenderFunc render_glyph; + FT_Renderer_TransformFunc transform_glyph; + FT_Renderer_GetCBoxFunc get_glyph_cbox; + FT_Renderer_SetModeFunc set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Renderer */ + /* */ + /* <Description> */ + /* Retrieve the current renderer for a given glyph format. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* format :: The glyph format. */ + /* */ + /* <Return> */ + /* A renderer handle. 0~if none found. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ + /* renderer by its name, use @FT_Get_Module. */ + /* */ + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Renderer */ + /* */ + /* <Description> */ + /* Set the current renderer to use, and set additional mode. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* renderer :: A handle to the renderer object. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* parameters :: Additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case of success, the renderer will be used to convert glyph */ + /* images in the renderer's known format into bitmaps. */ + /* */ + /* This doesn't change the current renderer for other formats. */ + /* */ + /* Currently, no FreeType renderer module uses `parameters'; you */ + /* should thus always pass NULL as the value. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTRENDER_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftsizes.h b/lib/osx/include/freetype/ftsizes.h new file mode 100644 index 0000000..bef8424 --- /dev/null +++ b/lib/osx/include/freetype/ftsizes.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftsizes.h */ +/* */ +/* FreeType size objects management (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Typical application would normally not need to use these functions. */ + /* However, they have been placed in a public API for the rare cases */ + /* where they are needed. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSIZES_H__ +#define __FTSIZES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sizes_management */ + /* */ + /* <Title> */ + /* Size Management */ + /* */ + /* <Abstract> */ + /* Managing multiple sizes per face. */ + /* */ + /* <Description> */ + /* When creating a new face object (e.g., with @FT_New_Face), an */ + /* @FT_Size object is automatically created and used to store all */ + /* pixel-size dependent information, available in the `face->size' */ + /* field. */ + /* */ + /* It is however possible to create more sizes for a given face, */ + /* mostly in order to manage several character pixel sizes of the */ + /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ + /* */ + /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ + /* modify the contents of the current `active' size; you thus need */ + /* to use @FT_Activate_Size to change it. */ + /* */ + /* 99% of applications won't need the functions provided here, */ + /* especially if they use the caching sub-system, so be cautious */ + /* when using these. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Size */ + /* */ + /* <Description> */ + /* Create a new size object from a given face object. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* asize :: A handle to a new size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You need to call @FT_Activate_Size in order to select the new size */ + /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ + /* @FT_Load_Glyph, @FT_Load_Char, etc. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Size */ + /* */ + /* <Description> */ + /* Discard a given size object. Note that @FT_Done_Face */ + /* automatically discards all size objects allocated with */ + /* @FT_New_Size. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Activate_Size */ + /* */ + /* <Description> */ + /* Even though it is possible to create several size objects for a */ + /* given face (see @FT_New_Size for details), functions like */ + /* @FT_Load_Glyph or @FT_Load_Char only use the one that has been */ + /* activated last to determine the `current character pixel size'. */ + /* */ + /* This function can be used to `activate' a previously created size */ + /* object. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If `face' is the size's parent face object, this function changes */ + /* the value of `face->size' to the input size handle. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSIZES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftsnames.h b/lib/osx/include/freetype/ftsnames.h new file mode 100644 index 0000000..0f7fbe1 --- /dev/null +++ b/lib/osx/include/freetype/ftsnames.h @@ -0,0 +1,200 @@ +/***************************************************************************/ +/* */ +/* ftsnames.h */ +/* */ +/* Simple interface to access SFNT name tables (which are used */ +/* to hold font names, copyright info, notices, etc.) (specification). */ +/* */ +/* This is _not_ used to retrieve glyph names! */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_SFNT_NAMES_H__ +#define __FT_SFNT_NAMES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sfnt_names */ + /* */ + /* <Title> */ + /* SFNT Names */ + /* */ + /* <Abstract> */ + /* Access the names embedded in TrueType and OpenType files. */ + /* */ + /* <Description> */ + /* The TrueType and OpenType specifications allow the inclusion of */ + /* a special `names table' in font files. This table contains */ + /* textual (and internationalized) information regarding the font, */ + /* like family name, copyright, version, etc. */ + /* */ + /* The definitions below are used to access them if available. */ + /* */ + /* Note that this has nothing to do with glyph names! */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SfntName */ + /* */ + /* <Description> */ + /* A structure used to model an SFNT `name' table entry. */ + /* */ + /* <Fields> */ + /* platform_id :: The platform ID for `string'. */ + /* */ + /* encoding_id :: The encoding ID for `string'. */ + /* */ + /* language_id :: The language ID for `string'. */ + /* */ + /* name_id :: An identifier for `string'. */ + /* */ + /* string :: The `name' string. Note that its format differs */ + /* depending on the (platform,encoding) pair. It can */ + /* be a Pascal String, a UTF-16 one, etc. */ + /* */ + /* Generally speaking, the string is not */ + /* zero-terminated. Please refer to the TrueType */ + /* specification for details. */ + /* */ + /* string_len :: The length of `string' in bytes. */ + /* */ + /* <Note> */ + /* Possible values for `platform_id', `encoding_id', `language_id', */ + /* and `name_id' are given in the file `ttnameid.h'. For details */ + /* please refer to the TrueType or OpenType specification. */ + /* */ + /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ + /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ + /* */ + typedef struct FT_SfntName_ + { + FT_UShort platform_id; + FT_UShort encoding_id; + FT_UShort language_id; + FT_UShort name_id; + + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntName; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name_Count */ + /* */ + /* <Description> */ + /* Retrieve the number of name strings in the SFNT `name' table. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Return> */ + /* The number of strings in the `name' table. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name */ + /* */ + /* <Description> */ + /* Retrieve a string of the SFNT `name' table for a given index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* idx :: The index of the `name' string. */ + /* */ + /* <Output> */ + /* aname :: The indexed @FT_SfntName structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `string' array returned in the `aname' structure is not */ + /* null-terminated. The application should deallocate it if it is no */ + /* longer in use. */ + /* */ + /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ + /* `name' table entries, then do a loop until you get the right */ + /* platform, encoding, and name ID. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred family subfamily names in `name' + * table since OpenType version 1.4. For backwards compatibility with + * legacy systems that have a 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred subfamily names in `name' table since + * OpenType version 1.4. For backwards compatibility with legacy + * systems that have a 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FT_SFNT_NAMES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftstroke.h b/lib/osx/include/freetype/ftstroke.h new file mode 100644 index 0000000..7ebb1e7 --- /dev/null +++ b/lib/osx/include/freetype/ftstroke.h @@ -0,0 +1,785 @@ +/***************************************************************************/ +/* */ +/* ftstroke.h */ +/* */ +/* FreeType path stroker (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_STROKE_H__ +#define __FT_STROKE_H__ + +#include <ft2build.h> +#include FT_OUTLINE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************ + * + * @section: + * glyph_stroker + * + * @title: + * Glyph Stroker + * + * @abstract: + * Generating bordered and stroked glyphs. + * + * @description: + * This component generates stroked outlines of a given vectorial + * glyph. It also allows you to retrieve the `outside' and/or the + * `inside' borders of the stroke. + * + * This can be useful to generate `bordered' glyph, i.e., glyphs + * displayed with a coloured (and anti-aliased) border around their + * shape. + * + * @order: + * FT_Stroker + * + * FT_Stroker_LineJoin + * FT_Stroker_LineCap + * FT_StrokerBorder + * + * FT_Outline_GetInsideBorder + * FT_Outline_GetOutsideBorder + * + * FT_Glyph_Stroke + * FT_Glyph_StrokeBorder + * + * FT_Stroker_New + * FT_Stroker_Set + * FT_Stroker_Rewind + * FT_Stroker_ParseOutline + * FT_Stroker_Done + * + * FT_Stroker_BeginSubPath + * FT_Stroker_EndSubPath + * + * FT_Stroker_LineTo + * FT_Stroker_ConicTo + * FT_Stroker_CubicTo + * + * FT_Stroker_GetBorderCounts + * FT_Stroker_ExportBorder + * FT_Stroker_GetCounts + * FT_Stroker_Export + * + */ + + + /************************************************************** + * + * @type: + * FT_Stroker + * + * @description: + * Opaque handle to a path stroker object. + */ + typedef struct FT_StrokerRec_* FT_Stroker; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineJoin + * + * @description: + * These values determine how two joining lines are rendered + * in a stroker. + * + * @values: + * FT_STROKER_LINEJOIN_ROUND :: + * Used to render rounded line joins. Circular arcs are used + * to join two lines smoothly. + * + * FT_STROKER_LINEJOIN_BEVEL :: + * Used to render beveled line joins. The outer corner of + * the joined lines is filled by enclosing the triangular + * region of the corner with a straight line between the + * outer corners of each stroke. + * + * FT_STROKER_LINEJOIN_MITER_FIXED :: + * Used to render mitered line joins, with fixed bevels if the + * miter limit is exceeded. The outer edges of the strokes + * for the two segments are extended until they meet at an + * angle. If the segments meet at too sharp an angle (such + * that the miter would extend from the intersection of the + * segments a distance greater than the product of the miter + * limit value and the border radius), then a bevel join (see + * above) is used instead. This prevents long spikes being + * created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter + * line join as used in PostScript and PDF. + * + * FT_STROKER_LINEJOIN_MITER_VARIABLE :: + * FT_STROKER_LINEJOIN_MITER :: + * Used to render mitered line joins, with variable bevels if + * the miter limit is exceeded. The intersection of the + * strokes is clipped at a line perpendicular to the bisector + * of the angle between the strokes, at the distance from the + * intersection of the segments equal to the product of the + * miter limit value and the border radius. This prevents + * long spikes being created. + * FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line + * join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias + * for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for + * backwards compatibility. + */ + typedef enum FT_Stroker_LineJoin_ + { + FT_STROKER_LINEJOIN_ROUND = 0, + FT_STROKER_LINEJOIN_BEVEL = 1, + FT_STROKER_LINEJOIN_MITER_VARIABLE = 2, + FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE, + FT_STROKER_LINEJOIN_MITER_FIXED = 3 + + } FT_Stroker_LineJoin; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineCap + * + * @description: + * These values determine how the end of opened sub-paths are + * rendered in a stroke. + * + * @values: + * FT_STROKER_LINECAP_BUTT :: + * The end of lines is rendered as a full stop on the last + * point itself. + * + * FT_STROKER_LINECAP_ROUND :: + * The end of lines is rendered as a half-circle around the + * last point. + * + * FT_STROKER_LINECAP_SQUARE :: + * The end of lines is rendered as a square around the + * last point. + */ + typedef enum FT_Stroker_LineCap_ + { + FT_STROKER_LINECAP_BUTT = 0, + FT_STROKER_LINECAP_ROUND, + FT_STROKER_LINECAP_SQUARE + + } FT_Stroker_LineCap; + + + /************************************************************** + * + * @enum: + * FT_StrokerBorder + * + * @description: + * These values are used to select a given stroke border + * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * + * @values: + * FT_STROKER_BORDER_LEFT :: + * Select the left border, relative to the drawing direction. + * + * FT_STROKER_BORDER_RIGHT :: + * Select the right border, relative to the drawing direction. + * + * @note: + * Applications are generally interested in the `inside' and `outside' + * borders. However, there is no direct mapping between these and the + * `left' and `right' ones, since this really depends on the glyph's + * drawing orientation, which varies between font formats. + * + * You can however use @FT_Outline_GetInsideBorder and + * @FT_Outline_GetOutsideBorder to get these. + */ + typedef enum FT_StrokerBorder_ + { + FT_STROKER_BORDER_LEFT = 0, + FT_STROKER_BORDER_RIGHT + + } FT_StrokerBorder; + + + /************************************************************** + * + * @function: + * FT_Outline_GetInsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `inside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetInsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Outline_GetOutsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `outside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetOutsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_New + * + * @description: + * Create a new stroker object. + * + * @input: + * library :: + * FreeType library handle. + * + * @output: + * astroker :: + * A new stroker object handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_New( FT_Library library, + FT_Stroker *astroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Set + * + * @description: + * Reset a stroker object's attributes. + * + * @input: + * stroker :: + * The target stroker handle. + * + * radius :: + * The border radius. + * + * line_cap :: + * The line cap style. + * + * line_join :: + * The line join style. + * + * miter_limit :: + * The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and + * FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles, + * expressed as 16.16 fixed-point value. + * + * @note: + * The radius is expressed in the same units as the outline + * coordinates. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( void ) + FT_Stroker_Set( FT_Stroker stroker, + FT_Fixed radius, + FT_Stroker_LineCap line_cap, + FT_Stroker_LineJoin line_join, + FT_Fixed miter_limit ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Rewind + * + * @description: + * Reset a stroker object without changing its attributes. + * You should call this function before beginning a new + * series of calls to @FT_Stroker_BeginSubPath or + * @FT_Stroker_EndSubPath. + * + * @input: + * stroker :: + * The target stroker handle. + */ + FT_EXPORT( void ) + FT_Stroker_Rewind( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ParseOutline + * + * @description: + * A convenience function used to parse a whole outline with + * the stroker. The resulting outline(s) can be retrieved + * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The source outline. + * + * opened :: + * A boolean. If~1, the outline is treated as an open path instead + * of a closed one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `opened' is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct `border' outlines. + * + * If `opened' is~1, the outline is processed as an open path, and the + * stroker generates a single `stroke' outline. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ParseOutline( FT_Stroker stroker, + FT_Outline* outline, + FT_Bool opened ); + + + /************************************************************** + * + * @function: + * FT_Stroker_BeginSubPath + * + * @description: + * Start a new sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the start vector. + * + * open :: + * A boolean. If~1, the sub-path is treated as an open one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is useful when you need to stroke a path that is + * not stored as an @FT_Outline object. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_BeginSubPath( FT_Stroker stroker, + FT_Vector* to, + FT_Bool open ); + + + /************************************************************** + * + * @function: + * FT_Stroker_EndSubPath + * + * @description: + * Close the current sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function after @FT_Stroker_BeginSubPath. + * If the subpath was not `opened', this function `draws' a + * single line segment to the start position when needed. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_EndSubPath( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_LineTo + * + * @description: + * `Draw' a single line segment in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_LineTo( FT_Stroker stroker, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ConicTo + * + * @description: + * `Draw' a single quadratic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control :: + * A pointer to a Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ConicTo( FT_Stroker stroker, + FT_Vector* control, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_CubicTo + * + * @description: + * `Draw' a single cubic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control1 :: + * A pointer to the first Bézier control point. + * + * control2 :: + * A pointer to second Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_CubicTo( FT_Stroker stroker, + FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetBorderCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export one of the `border' or `stroke' + * outlines generated by the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_GetCounts instead if you want to + * retrieve the counts associated to both borders. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetBorderCounts( FT_Stroker stroker, + FT_StrokerBorder border, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ExportBorder + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export the corresponding border to your own @FT_Outline + * structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * outline :: + * The target outline handle. + * + * @note: + * Always call this function after @FT_Stroker_GetBorderCounts to + * get sure that there is enough room in your @FT_Outline object to + * receive all new data. + * + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_Export instead if you want to + * retrieve all borders at once. + */ + FT_EXPORT( void ) + FT_Stroker_ExportBorder( FT_Stroker stroker, + FT_StrokerBorder border, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export all points/borders from the stroked + * outline/path. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetCounts( FT_Stroker stroker, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Export + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export all borders to your own @FT_Outline structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The target outline handle. + */ + FT_EXPORT( void ) + FT_Stroker_Export( FT_Stroker stroker, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Done + * + * @description: + * Destroy a stroker object. + * + * @input: + * stroker :: + * A stroker handle. Can be NULL. + */ + FT_EXPORT( void ) + FT_Stroker_Done( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Glyph_Stroke + * + * @description: + * Stroke a given outline glyph object with a given stroker. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Stroke( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool destroy ); + + + /************************************************************** + * + * @function: + * FT_Glyph_StrokeBorder + * + * @description: + * Stroke a given outline glyph object with a given stroker, but + * only return either its inside or outside border. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * inside :: + * A Boolean. If~1, return the inside border, otherwise + * the outside border. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_StrokeBorder( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool inside, + FT_Bool destroy ); + + /* */ + +FT_END_HEADER + +#endif /* __FT_STROKE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/osx/include/freetype/ftsynth.h b/lib/osx/include/freetype/ftsynth.h new file mode 100644 index 0000000..fbcbad8 --- /dev/null +++ b/lib/osx/include/freetype/ftsynth.h @@ -0,0 +1,84 @@ +/***************************************************************************/ +/* */ +/* ftsynth.h */ +/* */ +/* FreeType synthesizing code for emboldening and slanting */ +/* (specification). */ +/* */ +/* Copyright 2000-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /********* *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ + /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ + /********* FREETYPE DEVELOPMENT TEAM *********/ + /********* *********/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* Main reason for not lifting the functions in this module to a */ + /* `standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource that should be copied into the application and */ + /* adapted to the particular needs. */ + + +#ifndef __FTSYNTH_H__ +#define __FTSYNTH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the height, width, and advance metrics are */ + /* increased by the strength of the emboldening -- this even affects */ + /* mono-width fonts! */ + /* */ + /* You can also call @FT_Outline_Get_CBox to get precise values. */ + FT_EXPORT( void ) + FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + + /* Slant an outline glyph to the right by about 12 degrees. */ + FT_EXPORT( void ) + FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYNTH_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftsystem.h b/lib/osx/include/freetype/ftsystem.h new file mode 100644 index 0000000..2bc9999 --- /dev/null +++ b/lib/osx/include/freetype/ftsystem.h @@ -0,0 +1,355 @@ +/***************************************************************************/ +/* */ +/* ftsystem.h */ +/* */ +/* FreeType low-level system interface definition (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSYSTEM_H__ +#define __FTSYSTEM_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* system_interface */ + /* */ + /* <Title> */ + /* System Interface */ + /* */ + /* <Abstract> */ + /* How FreeType manages memory and i/o. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to memory */ + /* management and i/o access. You need to understand this */ + /* information if you want to use a custom memory manager or you own */ + /* i/o streams. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* M E M O R Y M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Memory + * + * @description: + * A handle to a given memory manager object, defined with an + * @FT_MemoryRec structure. + * + */ + typedef struct FT_MemoryRec_* FT_Memory; + + + /************************************************************************* + * + * @functype: + * FT_Alloc_Func + * + * @description: + * A function used to allocate `size' bytes from `memory'. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * size :: + * The size in bytes to allocate. + * + * @return: + * Address of new memory block. 0~in case of failure. + * + */ + typedef void* + (*FT_Alloc_Func)( FT_Memory memory, + long size ); + + + /************************************************************************* + * + * @functype: + * FT_Free_Func + * + * @description: + * A function used to release a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * block :: + * The address of the target memory block. + * + */ + typedef void + (*FT_Free_Func)( FT_Memory memory, + void* block ); + + + /************************************************************************* + * + * @functype: + * FT_Realloc_Func + * + * @description: + * A function used to re-allocate a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * cur_size :: + * The block's current size in bytes. + * + * new_size :: + * The block's requested new size. + * + * block :: + * The block's current address. + * + * @return: + * New block address. 0~in case of memory shortage. + * + * @note: + * In case of error, the old block must still be available. + * + */ + typedef void* + (*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + + /************************************************************************* + * + * @struct: + * FT_MemoryRec + * + * @description: + * A structure used to describe a given memory manager to FreeType~2. + * + * @fields: + * user :: + * A generic typeless pointer for user data. + * + * alloc :: + * A pointer type to an allocation function. + * + * free :: + * A pointer type to an memory freeing function. + * + * realloc :: + * A pointer type to a reallocation function. + * + */ + struct FT_MemoryRec_ + { + void* user; + FT_Alloc_Func alloc; + FT_Free_Func free; + FT_Realloc_Func realloc; + }; + + + /*************************************************************************/ + /* */ + /* I / O M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Stream + * + * @description: + * A handle to an input stream. + * + * @also: + * See @FT_StreamRec for the publicly accessible fields of a given + * stream object. + * + */ + typedef struct FT_StreamRec_* FT_Stream; + + + /************************************************************************* + * + * @struct: + * FT_StreamDesc + * + * @description: + * A union type used to store either a long or a pointer. This is used + * to store a file descriptor or a `FILE*' in an input stream. + * + */ + typedef union FT_StreamDesc_ + { + long value; + void* pointer; + + } FT_StreamDesc; + + + /************************************************************************* + * + * @functype: + * FT_Stream_IoFunc + * + * @description: + * A function used to seek and read data from a given input stream. + * + * @input: + * stream :: + * A handle to the source stream. + * + * offset :: + * The offset of read in stream (always from start). + * + * buffer :: + * The address of the read buffer. + * + * count :: + * The number of bytes to read from the stream. + * + * @return: + * The number of bytes effectively read by the stream. + * + * @note: + * This function might be called to perform a seek or skip operation + * with a `count' of~0. A non-zero return value then indicates an + * error. + * + */ + typedef unsigned long + (*FT_Stream_IoFunc)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + + /************************************************************************* + * + * @functype: + * FT_Stream_CloseFunc + * + * @description: + * A function used to close a given input stream. + * + * @input: + * stream :: + * A handle to the target stream. + * + */ + typedef void + (*FT_Stream_CloseFunc)( FT_Stream stream ); + + + /************************************************************************* + * + * @struct: + * FT_StreamRec + * + * @description: + * A structure used to describe an input stream. + * + * @input: + * base :: + * For memory-based streams, this is the address of the first stream + * byte in memory. This field should always be set to NULL for + * disk-based streams. + * + * size :: + * The stream size in bytes. + * + * In case of compressed streams where the size is unknown before + * actually doing the decompression, the value is set to 0x7FFFFFFF. + * (Note that this size value can occur for normal streams also; it is + * thus just a hint.) + * + * pos :: + * The current position within the stream. + * + * descriptor :: + * This field is a union that can hold an integer or a pointer. It is + * used by stream implementations to store file descriptors or `FILE*' + * pointers. + * + * pathname :: + * This field is completely ignored by FreeType. However, it is often + * useful during debugging to use it to store the stream's filename + * (where available). + * + * read :: + * The stream's input function. + * + * close :: + * The stream's close function. + * + * memory :: + * The memory manager to use to preload frames. This is set + * internally by FreeType and shouldn't be touched by stream + * implementations. + * + * cursor :: + * This field is set and used internally by FreeType when parsing + * frames. + * + * limit :: + * This field is set and used internally by FreeType when parsing + * frames. + * + */ + typedef struct FT_StreamRec_ + { + unsigned char* base; + unsigned long size; + unsigned long pos; + + FT_StreamDesc descriptor; + FT_StreamDesc pathname; + FT_Stream_IoFunc read; + FT_Stream_CloseFunc close; + + FT_Memory memory; + unsigned char* cursor; + unsigned char* limit; + + } FT_StreamRec; + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYSTEM_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/fttrigon.h b/lib/osx/include/freetype/fttrigon.h new file mode 100644 index 0000000..485ec51 --- /dev/null +++ b/lib/osx/include/freetype/fttrigon.h @@ -0,0 +1,350 @@ +/***************************************************************************/ +/* */ +/* fttrigon.h */ +/* */ +/* FreeType trigonometric functions (specification). */ +/* */ +/* Copyright 2001-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTRIGON_H__ +#define __FTTRIGON_H__ + +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Angle + * + * @description: + * This type is used to model angle values in FreeType. Note that the + * angle is a 16.16 fixed-point value expressed in degrees. + * + */ + typedef FT_Fixed FT_Angle; + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI + * + * @description: + * The angle pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI ( 180L << 16 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_2PI + * + * @description: + * The angle 2*pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI2 + * + * @description: + * The angle pi/2 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI4 + * + * @description: + * The angle pi/4 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) + + + /************************************************************************* + * + * @function: + * FT_Sin + * + * @description: + * Return the sinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The sinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Sin( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Cos + * + * @description: + * Return the cosinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The cosinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Cos( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Tan + * + * @description: + * Return the tangent of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The tangent value. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Tan( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Atan2 + * + * @description: + * Return the arc-tangent corresponding to a given vector (x,y) in + * the 2d plane. + * + * @input: + * x :: + * The horizontal vector coordinate. + * + * y :: + * The vertical vector coordinate. + * + * @return: + * The arc-tangent value (i.e. angle). + * + */ + FT_EXPORT( FT_Angle ) + FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + + /************************************************************************* + * + * @function: + * FT_Angle_Diff + * + * @description: + * Return the difference between two angles. The result is always + * constrained to the ]-PI..PI] interval. + * + * @input: + * angle1 :: + * First angle. + * + * angle2 :: + * Second angle. + * + * @return: + * Constrained value of `value2-value1'. + * + */ + FT_EXPORT( FT_Angle ) + FT_Angle_Diff( FT_Angle angle1, + FT_Angle angle2 ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Unit + * + * @description: + * Return the unit vector corresponding to a given angle. After the + * call, the value of `vec.x' will be `cos(angle)', and the value of + * `vec.y' will be `sin(angle)'. + * + * This function is useful to retrieve both the sinus and cosinus of a + * given angle quickly. + * + * @output: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Rotate + * + * @description: + * Rotate a vector by a given angle. + * + * @inout: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Length + * + * @description: + * Return the length of a given vector. + * + * @input: + * vec :: + * The address of target vector. + * + * @return: + * The vector length, expressed in the same units that the original + * vector coordinates. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Polarize + * + * @description: + * Compute both the length and angle of a given vector. + * + * @input: + * vec :: + * The address of source vector. + * + * @output: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_From_Polar + * + * @description: + * Compute vector coordinates from a length and angle. + * + * @output: + * vec :: + * The address of source vector. + * + * @input: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_From_Polar( FT_Vector* vec, + FT_Fixed length, + FT_Angle angle ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTTRIGON_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftttdrv.h b/lib/osx/include/freetype/ftttdrv.h new file mode 100644 index 0000000..dc0081a --- /dev/null +++ b/lib/osx/include/freetype/ftttdrv.h @@ -0,0 +1,310 @@ +/***************************************************************************/ +/* */ +/* ftttdrv.h */ +/* */ +/* FreeType API for controlling the TrueType driver */ +/* (specification only). */ +/* */ +/* Copyright 2013-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTTDRV_H__ +#define __FTTTDRV_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * tt_driver + * + * @title: + * The TrueType driver + * + * @abstract: + * Controlling the TrueType driver module. + * + * @description: + * While FreeType's TrueType driver doesn't expose API functions by + * itself, it is possible to control its behaviour with @FT_Property_Set + * and @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * The TrueType driver's module name is `truetype'. + * + * We start with a list of definitions, kindly provided by Greg + * Hitchcock. + * + * _Bi-Level_ _Rendering_ + * + * Monochromatic rendering, exclusively used in the early days of + * TrueType by both Apple and Microsoft. Microsoft's GDI interface + * supported hinting of the right-side bearing point, such that the + * advance width could be non-linear. Most often this was done to + * achieve some level of glyph symmetry. To enable reasonable + * performance (e.g., not having to run hinting on all glyphs just to + * get the widths) there was a bit in the head table indicating if the + * side bearing was hinted, and additional tables, `hdmx' and `LTSH', to + * cache hinting widths across multiple sizes and device aspect ratios. + * + * _Font_ _Smoothing_ + * + * Microsoft's GDI implementation of anti-aliasing. Not traditional + * anti-aliasing as the outlines were hinted before the sampling. The + * widths matched the bi-level rendering. + * + * _ClearType_ _Rendering_ + * + * Technique that uses physical subpixels to improve rendering on LCD + * (and other) displays. Because of the higher resolution, many methods + * of improving symmetry in glyphs through hinting the right-side + * bearing were no longer necessary. This lead to what GDI calls + * `natural widths' ClearType, see + * http://www.beatstamm.com/typography/RTRCh4.htm#Sec21. Since hinting + * has extra resolution, most non-linearity went away, but it is still + * possible for hints to change the advance widths in this mode. + * + * _ClearType_ _Compatible_ _Widths_ + * + * One of the earliest challenges with ClearType was allowing the + * implementation in GDI to be selected without requiring all UI and + * documents to reflow. To address this, a compatible method of + * rendering ClearType was added where the font hints are executed once + * to determine the width in bi-level rendering, and then re-run in + * ClearType, with the difference in widths being absorbed in the font + * hints for ClearType (mostly in the white space of hints); see + * http://www.beatstamm.com/typography/RTRCh4.htm#Sec20. Somewhat by + * definition, compatible width ClearType allows for non-linear widths, + * but only when the bi-level version has non-linear widths. + * + * _ClearType_ _Subpixel_ _Positioning_ + * + * One of the nice benefits of ClearType is the ability to more crisply + * display fractional widths; unfortunately, the GDI model of integer + * bitmaps did not support this. However, the WPF and Direct Write + * frameworks do support fractional widths. DWrite calls this `natural + * mode', not to be confused with GDI's `natural widths'. Subpixel + * positioning, in the current implementation of Direct Write, + * unfortunately does not support hinted advance widths, see + * http://www.beatstamm.com/typography/RTRCh4.htm#Sec22. Note that the + * TrueType interpreter fully allows the advance width to be adjusted in + * this mode, just the DWrite client will ignore those changes. + * + * _ClearType_ _Backwards_ _Compatibility_ + * + * This is a set of exceptions made in the TrueType interpreter to + * minimize hinting techniques that were problematic with the extra + * resolution of ClearType; see + * http://www.beatstamm.com/typography/RTRCh4.htm#Sec1 and + * http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx. + * This technique is not to be confused with ClearType compatible + * widths. ClearType backwards compatibility has no direct impact on + * changing advance widths, but there might be an indirect impact on + * disabling some deltas. This could be worked around in backwards + * compatibility mode. + * + * _Native_ _ClearType_ _Mode_ + * + * (Not to be confused with `natural widths'.) This mode removes all + * the exceptions in the TrueType interpreter when running with + * ClearType. Any issues on widths would still apply, though. + * + */ + + + /************************************************************************** + * + * @property: + * interpreter-version + * + * @description: + * Currently, two versions are available, representing the bytecode + * interpreter with and without subpixel hinting support, + * respectively. The default is subpixel support if + * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel + * support otherwise (since it isn't available then). + * + * If subpixel hinting is on, many TrueType bytecode instructions behave + * differently compared to B/W or grayscale rendering (except if `native + * ClearType' is selected by the font). The main idea is to render at a + * much increased horizontal resolution, then sampling down the created + * output to subpixel precision. However, many older fonts are not + * suited to this and must be specially taken care of by applying + * (hardcoded) font-specific tweaks. + * + * Details on subpixel hinting and some of the necessary tweaks can be + * found in Greg Hitchcock's whitepaper at + * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * + * The following example code demonstrates how to activate subpixel + * hinting (omitting the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "truetype", + * "interpreter-version", + * &interpreter_version ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @enum: + * TT_INTERPRETER_VERSION_XXX + * + * @description: + * A list of constants used for the @interpreter-version property to + * select the hinting engine for Truetype fonts. + * + * The numeric value in the constant names represents the version + * number as returned by the `GETINFO' bytecode instruction. + * + * @values: + * TT_INTERPRETER_VERSION_35 :: + * Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in + * Windows~98; only grayscale and B/W rasterizing is supported. + * + * TT_INTERPRETER_VERSION_38 :: + * Version~38 corresponds to MS rasterizer v.1.9; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as + * can be found, for example, in the Internet Explorer~9 running on + * Windows~7). + * + * @note: + * This property controls the behaviour of the bytecode interpreter + * and thus how outlines get hinted. It does *not* control how glyph + * get rasterized! In particular, it does not control subpixel color + * filtering. + * + * If FreeType has not been compiled with configuration option + * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an + * `FT_Err_Unimplemented_Feature' error. + * + * Depending on the graphics framework, Microsoft uses different + * bytecode and rendering engines. As a consequence, the version + * numbers returned by a call to the `GETINFO' bytecode instruction are + * more convoluted than desired. + * + * Here are two tables that try to shed some light on the possible + * values for the MS rasterizer engine, together with the additional + * features introduced by it. + * + * { + * GETINFO framework version feature + * ------------------------------------------------------------------- + * 3 GDI (Win 3.1), v1.0 16-bit, first version + * TrueImage + * 33 GDI (Win NT 3.1), v1.5 32-bit + * HP Laserjet + * 34 GDI (Win 95) v1.6 font smoothing, + * new SCANTYPE opcode + * 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET + * bits in composite glyphs + * 36 MGDI (Win CE 2) v1.6+ classic ClearType + * 37 GDI (XP and later), v1.8 ClearType + * GDI+ old (before Vista) + * 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType, + * WPF Y-direction ClearType, + * additional error checking + * 39 DWrite (before Win 8) v2.0 subpixel ClearType flags + * in GETINFO opcode, + * bug fixes + * 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag + * DWrite (Win 8) in GETINFO opcode, + * Gray ClearType + * } + * + * The `version' field gives a rough orientation only, since some + * applications provided certain features much earlier (as an example, + * Microsoft Reader used subpixel and Y-direction ClearType already in + * Windows 2000). Similarly, updates to a given framework might include + * improved hinting support. + * + * { + * version sampling rendering comment + * x y x y + * -------------------------------------------------------------- + * v1.0 normal normal B/W B/W bi-level + * v1.6 high high gray gray grayscale + * v1.8 high normal color-filter B/W (GDI) ClearType + * v1.9 high high color-filter gray Color ClearType + * v2.1 high normal gray B/W Gray ClearType + * v2.1 high high gray gray Gray ClearType + * } + * + * Color and Gray ClearType are the two available variants of + * `Y-direction ClearType', meaning grayscale rasterization along the + * Y-direction; the name used in the TrueType specification for this + * feature is `symmetric smoothing'. `Classic ClearType' is the + * original algorithm used before introducing a modified version in + * Win~XP. Another name for v1.6's grayscale rendering is `font + * smoothing', and `Color ClearType' is sometimes also called `DWrite + * ClearType'. To differentiate between today's Color ClearType and the + * earlier ClearType variant with B/W rendering along the vertical axis, + * the latter is sometimes called `GDI ClearType'. + * + * `Normal' and `high' sampling describe the (virtual) resolution to + * access the rasterized outline after the hinting process. `Normal' + * means 1 sample per grid line (i.e., B/W). In the current Microsoft + * implementation, `high' means an extra virtual resolution of 16x16 (or + * 16x1) grid lines per pixel for bytecode instructions like `MIRP'. + * After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid + * lines for color filtering if Color ClearType is activated. + * + * Note that `Gray ClearType' is essentially the same as v1.6's + * grayscale rendering. However, the GETINFO instruction handles it + * differently: v1.6 returns bit~12 (hinting for grayscale), while v2.1 + * returns bits~13 (hinting for ClearType), 18 (symmetrical smoothing), + * and~19 (Gray ClearType). Also, this mode respects bits 2 and~3 for + * the version~1 gasp table exclusively (like Color ClearType), while + * v1.6 only respects the values of version~0 (bits 0 and~1). + * + * FreeType doesn't provide all capabilities of the most recent + * ClearType incarnation, thus we identify our subpixel support as + * version~38. + * + */ +#define TT_INTERPRETER_VERSION_35 35 +#define TT_INTERPRETER_VERSION_38 38 + + /* */ + + +FT_END_HEADER + + +#endif /* __FTTTDRV_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/fttypes.h b/lib/osx/include/freetype/fttypes.h new file mode 100644 index 0000000..706a1be --- /dev/null +++ b/lib/osx/include/freetype/fttypes.h @@ -0,0 +1,602 @@ +/***************************************************************************/ +/* */ +/* fttypes.h */ +/* */ +/* FreeType simple types definitions (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTYPES_H__ +#define __FTTYPES_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_SYSTEM_H +#include FT_IMAGE_H + +#include <stddef.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /* <Title> */ + /* Basic Data Types */ + /* */ + /* <Abstract> */ + /* The basic data types defined by the library. */ + /* */ + /* <Description> */ + /* This section contains the basic data types defined by FreeType~2, */ + /* ranging from simple scalar types to bitmap descriptors. More */ + /* font-specific structures are defined in a different section. */ + /* */ + /* <Order> */ + /* FT_Byte */ + /* FT_Bytes */ + /* FT_Char */ + /* FT_Int */ + /* FT_UInt */ + /* FT_Int16 */ + /* FT_UInt16 */ + /* FT_Int32 */ + /* FT_UInt32 */ + /* FT_Int64 */ + /* FT_UInt64 */ + /* FT_Short */ + /* FT_UShort */ + /* FT_Long */ + /* FT_ULong */ + /* FT_Bool */ + /* FT_Offset */ + /* FT_PtrDist */ + /* FT_String */ + /* FT_Tag */ + /* FT_Error */ + /* FT_Fixed */ + /* FT_Pointer */ + /* FT_Pos */ + /* FT_Vector */ + /* FT_BBox */ + /* FT_Matrix */ + /* FT_FWord */ + /* FT_UFWord */ + /* FT_F2Dot14 */ + /* FT_UnitVector */ + /* FT_F26Dot6 */ + /* FT_Data */ + /* */ + /* FT_MAKE_TAG */ + /* */ + /* FT_Generic */ + /* FT_Generic_Finalizer */ + /* */ + /* FT_Bitmap */ + /* FT_Pixel_Mode */ + /* FT_Palette_Mode */ + /* FT_Glyph_Format */ + /* FT_IMAGE_TAG */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bool */ + /* */ + /* <Description> */ + /* A typedef of unsigned char, used for simple booleans. As usual, */ + /* values 1 and~0 represent true and false, respectively. */ + /* */ + typedef unsigned char FT_Bool; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_FWord */ + /* */ + /* <Description> */ + /* A signed 16-bit integer used to store a distance in original font */ + /* units. */ + /* */ + typedef signed short FT_FWord; /* distance in FUnits */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UFWord */ + /* */ + /* <Description> */ + /* An unsigned 16-bit integer used to store a distance in original */ + /* font units. */ + /* */ + typedef unsigned short FT_UFWord; /* unsigned distance */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Char */ + /* */ + /* <Description> */ + /* A simple typedef for the _signed_ char type. */ + /* */ + typedef signed char FT_Char; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Byte */ + /* */ + /* <Description> */ + /* A simple typedef for the _unsigned_ char type. */ + /* */ + typedef unsigned char FT_Byte; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bytes */ + /* */ + /* <Description> */ + /* A typedef for constant memory areas. */ + /* */ + typedef const FT_Byte* FT_Bytes; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Tag */ + /* */ + /* <Description> */ + /* A typedef for 32-bit tags (as used in the SFNT format). */ + /* */ + typedef FT_UInt32 FT_Tag; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_String */ + /* */ + /* <Description> */ + /* A simple typedef for the char type, usually used for strings. */ + /* */ + typedef char FT_String; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Short */ + /* */ + /* <Description> */ + /* A typedef for signed short. */ + /* */ + typedef signed short FT_Short; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UShort */ + /* */ + /* <Description> */ + /* A typedef for unsigned short. */ + /* */ + typedef unsigned short FT_UShort; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int */ + /* */ + /* <Description> */ + /* A typedef for the int type. */ + /* */ + typedef signed int FT_Int; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt */ + /* */ + /* <Description> */ + /* A typedef for the unsigned int type. */ + /* */ + typedef unsigned int FT_UInt; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Long */ + /* */ + /* <Description> */ + /* A typedef for signed long. */ + /* */ + typedef signed long FT_Long; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ULong */ + /* */ + /* <Description> */ + /* A typedef for unsigned long. */ + /* */ + typedef unsigned long FT_ULong; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F2Dot14 */ + /* */ + /* <Description> */ + /* A signed 2.14 fixed-point type used for unit vectors. */ + /* */ + typedef signed short FT_F2Dot14; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F26Dot6 */ + /* */ + /* <Description> */ + /* A signed 26.6 fixed-point type used for vectorial pixel */ + /* coordinates. */ + /* */ + typedef signed long FT_F26Dot6; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Fixed */ + /* */ + /* <Description> */ + /* This type is used to store 16.16 fixed-point values, like scaling */ + /* values or matrix coefficients. */ + /* */ + typedef signed long FT_Fixed; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Error */ + /* */ + /* <Description> */ + /* The FreeType error code type. A value of~0 is always interpreted */ + /* as a successful operation. */ + /* */ + typedef int FT_Error; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pointer */ + /* */ + /* <Description> */ + /* A simple typedef for a typeless pointer. */ + /* */ + typedef void* FT_Pointer; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Offset */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ + /* _unsigned_ integer type used to express a file size or position, */ + /* or a memory block size. */ + /* */ + typedef size_t FT_Offset; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_PtrDist */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ + /* largest _signed_ integer type used to express the distance */ + /* between two pointers. */ + /* */ + typedef ft_ptrdiff_t FT_PtrDist; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_UnitVector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector unit vector. Uses */ + /* FT_F2Dot14 types. */ + /* */ + /* <Fields> */ + /* x :: Horizontal coordinate. */ + /* */ + /* y :: Vertical coordinate. */ + /* */ + typedef struct FT_UnitVector_ + { + FT_F2Dot14 x; + FT_F2Dot14 y; + + } FT_UnitVector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Matrix */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2x2 matrix. Coefficients are */ + /* in 16.16 fixed-point format. The computation performed is: */ + /* */ + /* { */ + /* x' = x*xx + y*xy */ + /* y' = x*yx + y*yy */ + /* } */ + /* */ + /* <Fields> */ + /* xx :: Matrix coefficient. */ + /* */ + /* xy :: Matrix coefficient. */ + /* */ + /* yx :: Matrix coefficient. */ + /* */ + /* yy :: Matrix coefficient. */ + /* */ + typedef struct FT_Matrix_ + { + FT_Fixed xx, xy; + FT_Fixed yx, yy; + + } FT_Matrix; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Data */ + /* */ + /* <Description> */ + /* Read-only binary data represented as a pointer and a length. */ + /* */ + /* <Fields> */ + /* pointer :: The data. */ + /* */ + /* length :: The length of the data in bytes. */ + /* */ + typedef struct FT_Data_ + { + const FT_Byte* pointer; + FT_Int length; + + } FT_Data; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Generic_Finalizer */ + /* */ + /* <Description> */ + /* Describe a function used to destroy the `client' data of any */ + /* FreeType object. See the description of the @FT_Generic type for */ + /* details of usage. */ + /* */ + /* <Input> */ + /* The address of the FreeType object that is under finalization. */ + /* Its client data is accessed through its `generic' field. */ + /* */ + typedef void (*FT_Generic_Finalizer)(void* object); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Generic */ + /* */ + /* <Description> */ + /* Client applications often need to associate their own data to a */ + /* variety of FreeType core objects. For example, a text layout API */ + /* might want to associate a glyph cache to a given size object. */ + /* */ + /* Some FreeType object contains a `generic' field, of type */ + /* FT_Generic, which usage is left to client applications and font */ + /* servers. */ + /* */ + /* It can be used to store a pointer to client-specific data, as well */ + /* as the address of a `finalizer' function, which will be called by */ + /* FreeType when the object is destroyed (for example, the previous */ + /* client example would put the address of the glyph cache destructor */ + /* in the `finalizer' field). */ + /* */ + /* <Fields> */ + /* data :: A typeless pointer to any client-specified data. This */ + /* field is completely ignored by the FreeType library. */ + /* */ + /* finalizer :: A pointer to a `generic finalizer' function, which */ + /* will be called when the object is destroyed. If this */ + /* field is set to NULL, no code will be called. */ + /* */ + typedef struct FT_Generic_ + { + void* data; + FT_Generic_Finalizer finalizer; + + } FT_Generic; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_MAKE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags that are used to label */ + /* TrueType tables into an unsigned long, to be used within FreeType. */ + /* */ + /* <Note> */ + /* The produced values *must* be 32-bit integers. Don't redefine */ + /* this macro. */ + /* */ +#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + (FT_Tag) \ + ( ( (FT_ULong)_x1 << 24 ) | \ + ( (FT_ULong)_x2 << 16 ) | \ + ( (FT_ULong)_x3 << 8 ) | \ + (FT_ULong)_x4 ) + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* L I S T M A N A G E M E N T */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ListNode */ + /* */ + /* <Description> */ + /* Many elements and objects in FreeType are listed through an */ + /* @FT_List record (see @FT_ListRec). As its name suggests, an */ + /* FT_ListNode is a handle to a single list element. */ + /* */ + typedef struct FT_ListNodeRec_* FT_ListNode; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_List */ + /* */ + /* <Description> */ + /* A handle to a list record (see @FT_ListRec). */ + /* */ + typedef struct FT_ListRec_* FT_List; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListNodeRec */ + /* */ + /* <Description> */ + /* A structure used to hold a single list element. */ + /* */ + /* <Fields> */ + /* prev :: The previous element in the list. NULL if first. */ + /* */ + /* next :: The next element in the list. NULL if last. */ + /* */ + /* data :: A typeless pointer to the listed object. */ + /* */ + typedef struct FT_ListNodeRec_ + { + FT_ListNode prev; + FT_ListNode next; + void* data; + + } FT_ListNodeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListRec */ + /* */ + /* <Description> */ + /* A structure used to hold a simple doubly-linked list. These are */ + /* used in many parts of FreeType. */ + /* */ + /* <Fields> */ + /* head :: The head (first element) of doubly-linked list. */ + /* */ + /* tail :: The tail (last element) of doubly-linked list. */ + /* */ + typedef struct FT_ListRec_ + { + FT_ListNode head; + FT_ListNode tail; + + } FT_ListRec; + + /* */ + + +#define FT_IS_EMPTY( list ) ( (list).head == 0 ) +#define FT_BOOL( x ) ( (FT_Bool)( x ) ) + + /* concatenate C tokens */ +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + /* see `ftmoderr.h' for descriptions of the following macros */ + +#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_ERR_EQ( x, e ) \ + ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) +#define FT_ERR_NEQ( x, e ) \ + ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) + + +FT_END_HEADER + +#endif /* __FTTYPES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ftwinfnt.h b/lib/osx/include/freetype/ftwinfnt.h new file mode 100644 index 0000000..caedaa1 --- /dev/null +++ b/lib/osx/include/freetype/ftwinfnt.h @@ -0,0 +1,275 @@ +/***************************************************************************/ +/* */ +/* ftwinfnt.h */ +/* */ +/* FreeType API for accessing Windows fnt-specific data. */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTWINFNT_H__ +#define __FTWINFNT_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* winfnt_fonts */ + /* */ + /* <Title> */ + /* Window FNT Files */ + /* */ + /* <Abstract> */ + /* Windows FNT specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Windows FNT specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset' byte in + * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX + * encodings (except for cp1361) can be found at + * ftp://ftp.unicode.org/Public in the MAPPINGS/VENDORS/MICSFT/WINDOWS + * subdirectory. cp1361 is roughly a superset of + * MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a + * `don't care' value. Valid font files don't contain this value. + * When querying for information about the character set of the font + * that is currently selected into a specified device context, this + * return value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Pöttgen <michael@poettgen.de>: + * + * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM + * is used for the charset of vector fonts, like `modern.fon', + * `roman.fon', and `script.fon' on Windows. + * + * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value + * specifies a character set that is operating-system dependent. + * + * The `IFIMETRICS' documentation from the `Windows Driver + * Development Kit' says: This font supports an OEM-specific + * character set. The OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the + * second default codepage that most international versions of + * Windows have. It is one of the OEM codepages from + * + * https://msdn.microsoft.com/en-us/goglobal/bb964655, + * + * and is used for the `DOS boxes', to support legacy applications. + * A German Windows version for example usually uses ANSI codepage + * 1252 and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ + +#define FT_WinFNT_ID_CP1252 0 +#define FT_WinFNT_ID_DEFAULT 1 +#define FT_WinFNT_ID_SYMBOL 2 +#define FT_WinFNT_ID_MAC 77 +#define FT_WinFNT_ID_CP932 128 +#define FT_WinFNT_ID_CP949 129 +#define FT_WinFNT_ID_CP1361 130 +#define FT_WinFNT_ID_CP936 134 +#define FT_WinFNT_ID_CP950 136 +#define FT_WinFNT_ID_CP1253 161 +#define FT_WinFNT_ID_CP1254 162 +#define FT_WinFNT_ID_CP1258 163 +#define FT_WinFNT_ID_CP1255 177 +#define FT_WinFNT_ID_CP1256 178 +#define FT_WinFNT_ID_CP1257 186 +#define FT_WinFNT_ID_CP1251 204 +#define FT_WinFNT_ID_CP874 222 +#define FT_WinFNT_ID_CP1250 238 +#define FT_WinFNT_ID_OEM 255 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_HeaderRec */ + /* */ + /* <Description> */ + /* Windows FNT Header info. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_ + { + FT_UShort version; + FT_ULong file_size; + FT_Byte copyright[60]; + FT_UShort file_type; + FT_UShort nominal_point_size; + FT_UShort vertical_resolution; + FT_UShort horizontal_resolution; + FT_UShort ascent; + FT_UShort internal_leading; + FT_UShort external_leading; + FT_Byte italic; + FT_Byte underline; + FT_Byte strike_out; + FT_UShort weight; + FT_Byte charset; + FT_UShort pixel_width; + FT_UShort pixel_height; + FT_Byte pitch_and_family; + FT_UShort avg_width; + FT_UShort max_width; + FT_Byte first_char; + FT_Byte last_char; + FT_Byte default_char; + FT_Byte break_char; + FT_UShort bytes_per_row; + FT_ULong device_offset; + FT_ULong face_name_offset; + FT_ULong bits_pointer; + FT_ULong bits_offset; + FT_Byte reserved; + FT_ULong flags; + FT_UShort A_space; + FT_UShort B_space; + FT_UShort C_space; + FT_UShort color_table_offset; + FT_ULong reserved1[4]; + + } FT_WinFNT_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_Header */ + /* */ + /* <Description> */ + /* A handle to an @FT_WinFNT_HeaderRec structure. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; + + + /********************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: A handle to the input face. + * + * @output: + * aheader :: The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTWINFNT_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/osx/include/freetype/internal/autohint.h b/lib/osx/include/freetype/internal/autohint.h new file mode 100644 index 0000000..8d5a977 --- /dev/null +++ b/lib/osx/include/freetype/internal/autohint.h @@ -0,0 +1,244 @@ +/***************************************************************************/ +/* */ +/* autohint.h */ +/* */ +/* High-level `autohint' module-specific interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* The auto-hinter is used to load and automatically hint glyphs if a */ + /* format-specific hinter isn't available. */ + /* */ + /*************************************************************************/ + + +#ifndef __AUTOHINT_H__ +#define __AUTOHINT_H__ + + + /*************************************************************************/ + /* */ + /* A small technical note regarding automatic hinting in order to */ + /* clarify this module interface. */ + /* */ + /* An automatic hinter might compute two kinds of data for a given face: */ + /* */ + /* - global hints: Usually some metrics that describe global properties */ + /* of the face. It is computed by scanning more or less */ + /* aggressively the glyphs in the face, and thus can be */ + /* very slow to compute (even if the size of global */ + /* hints is really small). */ + /* */ + /* - glyph hints: These describe some important features of the glyph */ + /* outline, as well as how to align them. They are */ + /* generally much faster to compute than global hints. */ + /* */ + /* The current FreeType auto-hinter does a pretty good job while */ + /* performing fast computations for both global and glyph hints. */ + /* However, we might be interested in introducing more complex and */ + /* powerful algorithms in the future, like the one described in the John */ + /* D. Hobby paper, which unfortunately requires a lot more horsepower. */ + /* */ + /* Because a sufficiently sophisticated font management system would */ + /* typically implement an LRU cache of opened face objects to reduce */ + /* memory usage, it is a good idea to be able to avoid recomputing */ + /* global hints every time the same face is re-opened. */ + /* */ + /* We thus provide the ability to cache global hints outside of the face */ + /* object, in order to speed up font re-opening time. Of course, this */ + /* feature is purely optional, so most client programs won't even notice */ + /* it. */ + /* */ + /* I initially thought that it would be a good idea to cache the glyph */ + /* hints too. However, my general idea now is that if you really need */ + /* to cache these too, you are simply in need of a new font format, */ + /* where all this information could be stored within the font file and */ + /* decoded on the fly. */ + /* */ + /*************************************************************************/ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + typedef struct FT_AutoHinterRec_ *FT_AutoHinter; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalGetFunc */ + /* */ + /* <Description> */ + /* Retrieve the global hints computed for a given face object. The */ + /* resulting data is dissociated from the face and will survive a */ + /* call to FT_Done_Face(). It must be discarded through the API */ + /* FT_AutoHinter_GlobalDoneFunc(). */ + /* */ + /* <Input> */ + /* hinter :: A handle to the source auto-hinter. */ + /* */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* global_hints :: A typeless pointer to the global hints. */ + /* */ + /* global_len :: The size in bytes of the global hints. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter hinter, + FT_Face face, + void** global_hints, + long* global_len ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalDoneFunc */ + /* */ + /* <Description> */ + /* Discard the global hints retrieved through */ + /* FT_AutoHinter_GlobalGetFunc(). This is the only way these hints */ + /* are freed from memory. */ + /* */ + /* <Input> */ + /* hinter :: A handle to the auto-hinter module. */ + /* */ + /* global :: A pointer to retrieved global hints to discard. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter hinter, + void* global ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalResetFunc */ + /* */ + /* <Description> */ + /* This function is used to recompute the global metrics in a given */ + /* font. This is useful when global font data changes (e.g. Multiple */ + /* Masters fonts where blend coordinates change). */ + /* */ + /* <Input> */ + /* hinter :: A handle to the source auto-hinter. */ + /* */ + /* face :: A handle to the face. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter hinter, + FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlyphLoadFunc */ + /* */ + /* <Description> */ + /* This function is used to load, scale, and automatically hint a */ + /* glyph from a given face. */ + /* */ + /* <Input> */ + /* face :: A handle to the face. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* load_flags :: The load flags. */ + /* */ + /* <Note> */ + /* This function is capable of loading composite glyphs by hinting */ + /* each sub-glyph independently (which improves quality). */ + /* */ + /* It will call the font driver with @FT_Load_Glyph, with */ + /* @FT_LOAD_NO_SCALE set. */ + /* */ + typedef FT_Error + (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter hinter, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_AutoHinter_InterfaceRec */ + /* */ + /* <Description> */ + /* The auto-hinter module's interface. */ + /* */ + typedef struct FT_AutoHinter_InterfaceRec_ + { + FT_AutoHinter_GlobalResetFunc reset_face; + FT_AutoHinter_GlobalGetFunc get_global_hints; + FT_AutoHinter_GlobalDoneFunc done_global_hints; + FT_AutoHinter_GlyphLoadFunc load_glyph; + + } FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_AUTOHINTER_INTERFACE( \ + class_, \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_AutoHinter_InterfaceRec class_ = \ + { \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_AUTOHINTER_INTERFACE( \ + class_, \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_AutoHinter_InterfaceRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->reset_face = reset_face_; \ + clazz->get_global_hints = get_global_hints_; \ + clazz->done_global_hints = done_global_hints_; \ + clazz->load_glyph = load_glyph_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __AUTOHINT_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftcalc.h b/lib/osx/include/freetype/internal/ftcalc.h new file mode 100644 index 0000000..a76682b --- /dev/null +++ b/lib/osx/include/freetype/internal/ftcalc.h @@ -0,0 +1,418 @@ +/***************************************************************************/ +/* */ +/* ftcalc.h */ +/* */ +/* Arithmetic computations (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCALC_H__ +#define __FTCALC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* FT_MulDiv() and FT_MulFix() are declared in freetype.h. */ + /* */ + /*************************************************************************/ + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER + /* Provide assembler fragments for performance-critical functions. */ + /* These must be defined `static __inline__' with GCC. */ + +#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */ + +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + FT_Int32 t, t2; + + + __asm + { + smull t2, t, b, a /* (lo=t2,hi=t) = a*b */ + mov a, t, asr #31 /* a = (hi >> 31) */ + add a, a, #0x8000 /* a += 0x8000 */ + adds t2, t2, a /* t2 += a */ + adc t, t, #0 /* t += carry */ + mov a, t2, lsr #16 /* a = t2 >> 16 */ + orr a, a, t, lsl #16 /* a |= t << 16 */ + } + return a; + } + +#endif /* __CC_ARM || __ARMCC__ */ + + +#ifdef __GNUC__ + +#if defined( __arm__ ) && \ + ( !defined( __thumb__ ) || defined( __thumb2__ ) ) && \ + !( defined( __CC_ARM ) || defined( __ARMCC__ ) ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + FT_Int32 t, t2; + + + __asm__ __volatile__ ( + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ +#if defined( __clang__ ) && defined( __thumb2__ ) + "add.w %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ +#else + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ +#endif + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) + : "cc" ); + return a; + } + +#endif /* __arm__ && */ + /* ( __thumb2__ || !__thumb__ ) && */ + /* !( __CC_ARM || __ARMCC__ ) */ + + +#if defined( __i386__ ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + FT_Int32 result; + + + __asm__ __volatile__ ( + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "=d"(b) + : "a"(a), "d"(b) + : "%ecx", "cc" ); + return result; + } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + + +#ifdef _MSC_VER /* Visual C++ */ + +#ifdef _M_IX86 + +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + FT_Int32 result; + + __asm + { + mov eax, a + mov edx, b + imul edx + mov ecx, edx + sar ecx, 31 + add ecx, 8000h + add eax, ecx + adc edx, 0 + shr eax, 16 + shl edx, 16 + add eax, edx + mov result, eax + } + return result; + } + +#endif /* _M_IX86 */ + +#endif /* _MSC_VER */ + + +#if defined( __GNUC__ ) && defined( __x86_64__ ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_x86_64 + + static __inline__ FT_Int32 + FT_MulFix_x86_64( FT_Int32 a, + FT_Int32 b ) + { + /* Temporarily disable the warning that C90 doesn't support */ + /* `long long'. */ +#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wlong-long" +#endif + +#if 1 + /* Technically not an assembly fragment, but GCC does a really good */ + /* job at inlining it and generating good machine code for it. */ + long long ret, tmp; + + + ret = (long long)a * b; + tmp = ret >> 63; + ret += 0x8000 + tmp; + + return (FT_Int32)( ret >> 16 ); +#else + + /* For some reason, GCC 4.6 on Ubuntu 12.04 generates invalid machine */ + /* code from the lines below. The main issue is that `wide_a' is not */ + /* properly initialized by sign-extending `a'. Instead, the generated */ + /* machine code assumes that the register that contains `a' on input */ + /* can be used directly as a 64-bit value, which is wrong most of the */ + /* time. */ + long long wide_a = (long long)a; + long long wide_b = (long long)b; + long long result; + + + __asm__ __volatile__ ( + "imul %2, %1\n" + "mov %1, %0\n" + "sar $63, %0\n" + "lea 0x8000(%1, %0), %0\n" + "sar $16, %0\n" + : "=&r"(result), "=&r"(wide_a) + : "r"(wide_b) + : "cc" ); + + return (FT_Int32)result; +#endif + +#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 ) +#pragma GCC diagnostic pop +#endif + } + +#endif /* __GNUC__ && __x86_64__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MulFix( a, b ) FT_MULFIX_ASSEMBLER( (FT_Int32)(a), (FT_Int32)(b) ) +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv_No_Round */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* (without rounding) with maximum accuracy (it uses a 64-bit */ + /* intermediate integer whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_BASE( FT_Long ) + FT_MulDiv_No_Round( FT_Long a, + FT_Long b, + FT_Long c ); + + + /* + * A variant of FT_Matrix_Multiply which scales its result afterwards. + * The idea is that both `a' and `b' are scaled by factors of 10 so that + * the values are as precise as possible to get a correct result during + * the 64bit multiplication. Let `sa' and `sb' be the scaling factors of + * `a' and `b', respectively, then the scaling factor of the result is + * `sa*sb'. + */ + FT_BASE( void ) + FT_Matrix_Multiply_Scaled( const FT_Matrix* a, + FT_Matrix *b, + FT_Long scaling ); + + + /* + * A variant of FT_Vector_Transform. See comments for + * FT_Matrix_Multiply_Scaled. + */ + FT_BASE( void ) + FT_Vector_Transform_Scaled( FT_Vector* vector, + const FT_Matrix* matrix, + FT_Long scaling ); + + + /* + * This function normalizes a vector and returns its original length. + * The normalized vector is a 16.16 fixed-point unit vector with length + * close to 0x10000. The accuracy of the returned length is limited to + * 16 bits also. The function utilizes quick inverse square root + * approximation without divisions and square roots relying on Newton's + * iterations instead. + */ + FT_BASE( FT_UInt32 ) + FT_Vector_NormLen( FT_Vector* vector ); + + + /* + * Return -1, 0, or +1, depending on the orientation of a given corner. + * We use the Cartesian coordinate system, with positive vertical values + * going upwards. The function returns +1 if the corner turns to the + * left, -1 to the right, and 0 for undecidable cases. + */ + FT_BASE( FT_Int ) + ft_corner_orientation( FT_Pos in_x, + FT_Pos in_y, + FT_Pos out_x, + FT_Pos out_y ); + + + /* + * Return TRUE if a corner is flat or nearly flat. This is equivalent to + * saying that the corner point is close to its neighbors, or inside an + * ellipse defined by the neighbor focal points to be more precise. + */ + FT_BASE( FT_Int ) + ft_corner_is_flat( FT_Pos in_x, + FT_Pos in_y, + FT_Pos out_x, + FT_Pos out_y ); + + + /* + * Return the most significant bit index. + */ + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER +#if defined( __GNUC__ ) && \ + ( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) ) + +#if FT_SIZEOF_INT == 4 + +#define FT_MSB( x ) ( 31 - __builtin_clz( x ) ) + +#elif FT_SIZEOF_LONG == 4 + +#define FT_MSB( x ) ( 31 - __builtin_clzl( x ) ) + +#endif + +#endif /* __GNUC__ */ +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + +#ifndef FT_MSB + + FT_BASE( FT_Int ) + FT_MSB( FT_UInt32 z ); + +#endif + + + /* + * Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses + * two fixed-point arguments instead. + */ + FT_BASE( FT_Fixed ) + FT_Hypot( FT_Fixed x, + FT_Fixed y ); + + +#if 0 + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_SqrtFixed */ + /* */ + /* <Description> */ + /* Computes the square root of a 16.16 fixed-point value. */ + /* */ + /* <Input> */ + /* x :: The value to compute the root for. */ + /* */ + /* <Return> */ + /* The result of `sqrt(x)'. */ + /* */ + /* <Note> */ + /* This function is not very fast. */ + /* */ + FT_BASE( FT_Int32 ) + FT_SqrtFixed( FT_Int32 x ); + +#endif /* 0 */ + + +#define INT_TO_F26DOT6( x ) ( (FT_Long)(x) << 6 ) +#define INT_TO_F2DOT14( x ) ( (FT_Long)(x) << 14 ) +#define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 ) +#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 ) +#define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) ) +#define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 ) + +#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \ + : ( -( ( 32 - (x) ) & -64 ) ) ) + + +FT_END_HEADER + +#endif /* __FTCALC_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftdebug.h b/lib/osx/include/freetype/internal/ftdebug.h new file mode 100644 index 0000000..216c730 --- /dev/null +++ b/lib/osx/include/freetype/internal/ftdebug.h @@ -0,0 +1,255 @@ +/***************************************************************************/ +/* */ +/* ftdebug.h */ +/* */ +/* Debugging and logging component (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/* */ +/* IMPORTANT: A description of FreeType's debugging support can be */ +/* found in `docs/DEBUG.TXT'. Read it if you need to use or */ +/* understand this code. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTDEBUG_H__ +#define __FTDEBUG_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */ + /* is already defined; this simplifies the following #ifdefs */ + /* */ +#ifdef FT_DEBUG_LEVEL_TRACE +#undef FT_DEBUG_LEVEL_ERROR +#define FT_DEBUG_LEVEL_ERROR +#endif + + + /*************************************************************************/ + /* */ + /* Define the trace enums as well as the trace levels array when they */ + /* are needed. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_TRACE + +#define FT_TRACE_DEF( x ) trace_ ## x , + + /* defining the enumeration */ + typedef enum FT_Trace_ + { +#include FT_INTERNAL_TRACE_H + trace_count + + } FT_Trace; + + + /* defining the array of trace levels, provided by `src/base/ftdebug.c' */ + extern int ft_trace_levels[trace_count]; + +#undef FT_TRACE_DEF + +#endif /* FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Define the FT_TRACE macro */ + /* */ + /* IMPORTANT! */ + /* */ + /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */ + /* value before using any TRACE macro. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_TRACE + +#define FT_TRACE( level, varformat ) \ + do \ + { \ + if ( ft_trace_levels[FT_COMPONENT] >= level ) \ + FT_Message varformat; \ + } while ( 0 ) + +#else /* !FT_DEBUG_LEVEL_TRACE */ + +#define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Trace_Get_Count */ + /* */ + /* <Description> */ + /* Return the number of available trace components. */ + /* */ + /* <Return> */ + /* The number of trace components. 0 if FreeType 2 is not built with */ + /* FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* <Note> */ + /* This function may be useful if you want to access elements of */ + /* the internal `ft_trace_levels' array by an index. */ + /* */ + FT_BASE( FT_Int ) + FT_Trace_Get_Count( void ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Trace_Get_Name */ + /* */ + /* <Description> */ + /* Return the name of a trace component. */ + /* */ + /* <Input> */ + /* The index of the trace component. */ + /* */ + /* <Return> */ + /* The name of the trace component. This is a statically allocated */ + /* C string, so do not free it after use. NULL if FreeType 2 is not */ + /* built with FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* <Note> */ + /* Use @FT_Trace_Get_Count to get the number of available trace */ + /* components. */ + /* */ + /* This function may be useful if you want to control FreeType 2's */ + /* debug level in your application. */ + /* */ + FT_BASE( const char* ) + FT_Trace_Get_Name( FT_Int idx ); + + + /*************************************************************************/ + /* */ + /* You need two opening and closing parentheses! */ + /* */ + /* Example: FT_TRACE0(( "Value is %i", foo )) */ + /* */ + /* Output of the FT_TRACEX macros is sent to stderr. */ + /* */ + /*************************************************************************/ + +#define FT_TRACE0( varformat ) FT_TRACE( 0, varformat ) +#define FT_TRACE1( varformat ) FT_TRACE( 1, varformat ) +#define FT_TRACE2( varformat ) FT_TRACE( 2, varformat ) +#define FT_TRACE3( varformat ) FT_TRACE( 3, varformat ) +#define FT_TRACE4( varformat ) FT_TRACE( 4, varformat ) +#define FT_TRACE5( varformat ) FT_TRACE( 5, varformat ) +#define FT_TRACE6( varformat ) FT_TRACE( 6, varformat ) +#define FT_TRACE7( varformat ) FT_TRACE( 7, varformat ) + + + /*************************************************************************/ + /* */ + /* Define the FT_ERROR macro. */ + /* */ + /* Output of this macro is sent to stderr. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define FT_ERROR( varformat ) FT_Message varformat + +#else /* !FT_DEBUG_LEVEL_ERROR */ + +#define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_ERROR */ + + + /*************************************************************************/ + /* */ + /* Define the FT_ASSERT and FT_THROW macros. The call to `FT_Throw' */ + /* makes it possible to easily set a breakpoint at this function. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define FT_ASSERT( condition ) \ + do \ + { \ + if ( !( condition ) ) \ + FT_Panic( "assertion failed on line %d of file %s\n", \ + __LINE__, __FILE__ ); \ + } while ( 0 ) + +#define FT_THROW( e ) \ + ( FT_Throw( FT_ERR_CAT( FT_ERR_PREFIX, e ), \ + __LINE__, \ + __FILE__ ) | \ + FT_ERR_CAT( FT_ERR_PREFIX, e ) ) + +#else /* !FT_DEBUG_LEVEL_ERROR */ + +#define FT_ASSERT( condition ) do { } while ( 0 ) + +#define FT_THROW( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#endif /* !FT_DEBUG_LEVEL_ERROR */ + + + /*************************************************************************/ + /* */ + /* Define `FT_Message' and `FT_Panic' when needed. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#include "stdio.h" /* for vfprintf() */ + + /* print a message */ + FT_BASE( void ) + FT_Message( const char* fmt, + ... ); + + /* print a message and exit */ + FT_BASE( void ) + FT_Panic( const char* fmt, + ... ); + + /* report file name and line number of an error */ + FT_BASE( int ) + FT_Throw( FT_Error error, + int line, + const char* file ); + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + + FT_BASE( void ) + ft_debug_init( void ); + +FT_END_HEADER + +#endif /* __FTDEBUG_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftdriver.h b/lib/osx/include/freetype/internal/ftdriver.h new file mode 100644 index 0000000..16856d3 --- /dev/null +++ b/lib/osx/include/freetype/internal/ftdriver.h @@ -0,0 +1,409 @@ +/***************************************************************************/ +/* */ +/* ftdriver.h */ +/* */ +/* FreeType font driver interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTDRIVER_H__ +#define __FTDRIVER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + typedef FT_Error + (*FT_Face_InitFunc)( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ); + + typedef void + (*FT_Face_DoneFunc)( FT_Face face ); + + + typedef FT_Error + (*FT_Size_InitFunc)( FT_Size size ); + + typedef void + (*FT_Size_DoneFunc)( FT_Size size ); + + + typedef FT_Error + (*FT_Slot_InitFunc)( FT_GlyphSlot slot ); + + typedef void + (*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); + + + typedef FT_Error + (*FT_Size_RequestFunc)( FT_Size size, + FT_Size_Request req ); + + typedef FT_Error + (*FT_Size_SelectFunc)( FT_Size size, + FT_ULong size_index ); + + typedef FT_Error + (*FT_Slot_LoadFunc)( FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + typedef FT_UInt + (*FT_CharMap_CharIndexFunc)( FT_CharMap charmap, + FT_Long charcode ); + + typedef FT_Long + (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, + FT_Long charcode ); + + + typedef FT_Error + (*FT_Face_GetKerningFunc)( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ); + + + typedef FT_Error + (*FT_Face_AttachFunc)( FT_Face face, + FT_Stream stream ); + + + typedef FT_Error + (*FT_Face_GetAdvancesFunc)( FT_Face face, + FT_UInt first, + FT_UInt count, + FT_Int32 flags, + FT_Fixed* advances ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Driver_ClassRec */ + /* */ + /* <Description> */ + /* The font driver class. This structure mostly contains pointers to */ + /* driver methods. */ + /* */ + /* <Fields> */ + /* root :: The parent module. */ + /* */ + /* face_object_size :: The size of a face object in bytes. */ + /* */ + /* size_object_size :: The size of a size object in bytes. */ + /* */ + /* slot_object_size :: The size of a glyph object in bytes. */ + /* */ + /* init_face :: The format-specific face constructor. */ + /* */ + /* done_face :: The format-specific face destructor. */ + /* */ + /* init_size :: The format-specific size constructor. */ + /* */ + /* done_size :: The format-specific size destructor. */ + /* */ + /* init_slot :: The format-specific slot constructor. */ + /* */ + /* done_slot :: The format-specific slot destructor. */ + /* */ + /* */ + /* load_glyph :: A function handle to load a glyph to a slot. */ + /* This field is mandatory! */ + /* */ + /* get_kerning :: A function handle to return the unscaled */ + /* kerning for a given pair of glyphs. Can be */ + /* set to 0 if the format doesn't support */ + /* kerning. */ + /* */ + /* attach_file :: This function handle is used to read */ + /* additional data for a face from another */ + /* file/stream. For example, this can be used to */ + /* add data from AFM or PFM files on a Type 1 */ + /* face, or a CIDMap on a CID-keyed face. */ + /* */ + /* get_advances :: A function handle used to return advance */ + /* widths of `count' glyphs (in font units), */ + /* starting at `first'. The `vertical' flag must */ + /* be set to get vertical advance heights. The */ + /* `advances' buffer is caller-allocated. */ + /* The idea of this function is to be able to */ + /* perform device-independent text layout without */ + /* loading a single glyph image. */ + /* */ + /* request_size :: A handle to a function used to request the new */ + /* character size. Can be set to 0 if the */ + /* scaling done in the base layer suffices. */ + /* */ + /* select_size :: A handle to a function used to select a new */ + /* fixed size. It is used only if */ + /* @FT_FACE_FLAG_FIXED_SIZES is set. Can be set */ + /* to 0 if the scaling done in the base layer */ + /* suffices. */ + /* <Note> */ + /* Most function pointers, with the exception of `load_glyph', can be */ + /* set to 0 to indicate a default behaviour. */ + /* */ + typedef struct FT_Driver_ClassRec_ + { + FT_Module_Class root; + + FT_Long face_object_size; + FT_Long size_object_size; + FT_Long slot_object_size; + + FT_Face_InitFunc init_face; + FT_Face_DoneFunc done_face; + + FT_Size_InitFunc init_size; + FT_Size_DoneFunc done_size; + + FT_Slot_InitFunc init_slot; + FT_Slot_DoneFunc done_slot; + + FT_Slot_LoadFunc load_glyph; + + FT_Face_GetKerningFunc get_kerning; + FT_Face_AttachFunc attach_file; + FT_Face_GetAdvancesFunc get_advances; + + /* since version 2.2 */ + FT_Size_RequestFunc request_size; + FT_Size_SelectFunc select_size; + + } FT_Driver_ClassRec, *FT_Driver_Class; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_DRIVER */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of an FT_Driver_ClassRec */ + /* struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_DRIVER */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Driver_ClassRec struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function has to be */ + /* called with a pointer where the allocated structure is returned. */ + /* And when it is no longer needed a `destroy' function needs to be */ + /* called to release that allocation. */ + /* */ + /* `fcinit.c' (ft_create_default_module_classes) already contains a */ + /* mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by driver definition calling `FT_DEFINE_DRIVER' in following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro is */ + /* used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_DRIVER( class_ ) \ + FT_CALLBACK_TABLE \ + const FT_Driver_ClassRec class_; + +#define FT_DEFINE_DRIVER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + init_face_, \ + done_face_, \ + init_size_, \ + done_size_, \ + init_slot_, \ + done_slot_, \ + load_glyph_, \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + request_size_, \ + select_size_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Driver_ClassRec class_ = \ + { \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + \ + init_face_, \ + done_face_, \ + \ + init_size_, \ + done_size_, \ + \ + init_slot_, \ + done_slot_, \ + \ + load_glyph_, \ + \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + \ + request_size_, \ + select_size_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_DRIVER( class_ ) FT_DECLARE_MODULE( class_ ) + +#define FT_DEFINE_DRIVER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + init_face_, \ + done_face_, \ + init_size_, \ + done_size_, \ + init_slot_, \ + done_slot_, \ + load_glyph_, \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + request_size_, \ + select_size_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + FT_Driver_Class dclazz = (FT_Driver_Class)clazz; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( dclazz ) \ + FT_FREE( dclazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Driver_Class clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + clazz->face_object_size = face_object_size_; \ + clazz->size_object_size = size_object_size_; \ + clazz->slot_object_size = slot_object_size_; \ + \ + clazz->init_face = init_face_; \ + clazz->done_face = done_face_; \ + \ + clazz->init_size = init_size_; \ + clazz->done_size = done_size_; \ + \ + clazz->init_slot = init_slot_; \ + clazz->done_slot = done_slot_; \ + \ + clazz->load_glyph = load_glyph_; \ + \ + clazz->get_kerning = get_kerning_; \ + clazz->attach_file = attach_file_; \ + clazz->get_advances = get_advances_; \ + \ + clazz->request_size = request_size_; \ + clazz->select_size = select_size_; \ + \ + *output_class = (FT_Module_Class*)clazz; \ + \ + return FT_Err_Ok; \ + } + + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __FTDRIVER_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftgloadr.h b/lib/osx/include/freetype/internal/ftgloadr.h new file mode 100644 index 0000000..970dd70 --- /dev/null +++ b/lib/osx/include/freetype/internal/ftgloadr.h @@ -0,0 +1,172 @@ +/***************************************************************************/ +/* */ +/* ftgloadr.h */ +/* */ +/* The FreeType glyph loader (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGLOADR_H__ +#define __FTGLOADR_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphLoader */ + /* */ + /* <Description> */ + /* The glyph loader is an internal object used to load several glyphs */ + /* together (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The glyph loader implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ; + + +#if 0 /* moved to freetype.h in version 2.2 */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 +#endif + + + typedef struct FT_SubGlyphRec_ + { + FT_Int index; + FT_UShort flags; + FT_Int arg1; + FT_Int arg2; + FT_Matrix transform; + + } FT_SubGlyphRec; + + + typedef struct FT_GlyphLoadRec_ + { + FT_Outline outline; /* outline */ + FT_Vector* extra_points; /* extra points table */ + FT_Vector* extra_points2; /* second extra points table */ + FT_UInt num_subglyphs; /* number of subglyphs */ + FT_SubGlyph subglyphs; /* subglyphs */ + + } FT_GlyphLoadRec, *FT_GlyphLoad; + + + typedef struct FT_GlyphLoaderRec_ + { + FT_Memory memory; + FT_UInt max_points; + FT_UInt max_contours; + FT_UInt max_subglyphs; + FT_Bool use_extra; + + FT_GlyphLoadRec base; + FT_GlyphLoadRec current; + + void* other; /* for possible future extension? */ + + } FT_GlyphLoaderRec; + + + /* create new empty glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_New( FT_Memory memory, + FT_GlyphLoader *aloader ); + + /* add an extra points table to a glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CreateExtra( FT_GlyphLoader loader ); + + /* destroy a glyph loader */ + FT_BASE( void ) + FT_GlyphLoader_Done( FT_GlyphLoader loader ); + + /* reset a glyph loader (frees everything int it) */ + FT_BASE( void ) + FT_GlyphLoader_Reset( FT_GlyphLoader loader ); + + /* rewind a glyph loader */ + FT_BASE( void ) + FT_GlyphLoader_Rewind( FT_GlyphLoader loader ); + + /* check that there is enough space to add `n_points' and `n_contours' */ + /* to the glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CheckPoints( FT_GlyphLoader loader, + FT_UInt n_points, + FT_UInt n_contours ); + + +#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \ + ( (_count) == 0 || \ + ( (FT_UInt)(_loader)->base.outline.n_points + \ + (FT_UInt)(_loader)->current.outline.n_points + \ + (FT_UInt)(_count) ) <= (_loader)->max_points ) + +#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \ + ( (_count) == 0 || \ + ( (FT_UInt)(_loader)->base.outline.n_contours + \ + (FT_UInt)(_loader)->current.outline.n_contours + \ + (FT_UInt)(_count) ) <= (_loader)->max_contours ) + +#define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points, _contours ) \ + ( ( FT_GLYPHLOADER_CHECK_P( _loader, _points ) && \ + FT_GLYPHLOADER_CHECK_C( _loader, _contours ) ) \ + ? 0 \ + : FT_GlyphLoader_CheckPoints( (_loader), \ + (FT_UInt)(_points), \ + (FT_UInt)(_contours) ) ) + + + /* check that there is enough space to add `n_subs' sub-glyphs to */ + /* a glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader loader, + FT_UInt n_subs ); + + /* prepare a glyph loader, i.e. empty the current glyph */ + FT_BASE( void ) + FT_GlyphLoader_Prepare( FT_GlyphLoader loader ); + + /* add the current glyph to the base glyph */ + FT_BASE( void ) + FT_GlyphLoader_Add( FT_GlyphLoader loader ); + + /* copy points from one glyph loader to another */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CopyPoints( FT_GlyphLoader target, + FT_GlyphLoader source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLOADR_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftmemory.h b/lib/osx/include/freetype/internal/ftmemory.h new file mode 100644 index 0000000..c0c553b --- /dev/null +++ b/lib/osx/include/freetype/internal/ftmemory.h @@ -0,0 +1,386 @@ +/***************************************************************************/ +/* */ +/* ftmemory.h */ +/* */ +/* The FreeType memory management macros (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMEMORY_H__ +#define __FTMEMORY_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_SET_ERROR */ + /* */ + /* <Description> */ + /* This macro is used to set an implicit `error' variable to a given */ + /* expression's value (usually a function call), and convert it to a */ + /* boolean which is set whenever the value is != 0. */ + /* */ +#undef FT_SET_ERROR +#define FT_SET_ERROR( expression ) \ + ( ( error = (expression) ) != 0 ) + + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** M E M O R Y ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* + * C++ refuses to handle statements like p = (void*)anything, with `p' a + * typed pointer. Since we don't have a `typeof' operator in standard + * C++, we have to use a template to emulate it. + */ + +#ifdef __cplusplus + + extern "C++" + template <typename T> inline T* + cplusplus_typeof( T*, + void *v ) + { + return static_cast <T*> ( v ); + } + +#define FT_ASSIGNP( p, val ) (p) = cplusplus_typeof( (p), (val) ) + +#else + +#define FT_ASSIGNP( p, val ) (p) = (val) + +#endif + + + +#ifdef FT_DEBUG_MEMORY + + FT_BASE( const char* ) _ft_debug_file; + FT_BASE( long ) _ft_debug_lineno; + +#define FT_DEBUG_INNER( exp ) ( _ft_debug_file = __FILE__, \ + _ft_debug_lineno = __LINE__, \ + (exp) ) + +#define FT_ASSIGNP_INNER( p, exp ) ( _ft_debug_file = __FILE__, \ + _ft_debug_lineno = __LINE__, \ + FT_ASSIGNP( p, exp ) ) + +#else /* !FT_DEBUG_MEMORY */ + +#define FT_DEBUG_INNER( exp ) (exp) +#define FT_ASSIGNP_INNER( p, exp ) FT_ASSIGNP( p, exp ) + +#endif /* !FT_DEBUG_MEMORY */ + + + /* + * The allocation functions return a pointer, and the error code + * is written to through the `p_error' parameter. See below for + * for documentation. + */ + + FT_BASE( FT_Pointer ) + ft_mem_alloc( FT_Memory memory, + FT_Long size, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_qalloc( FT_Memory memory, + FT_Long size, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_realloc( FT_Memory memory, + FT_Long item_size, + FT_Long cur_count, + FT_Long new_count, + void* block, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_qrealloc( FT_Memory memory, + FT_Long item_size, + FT_Long cur_count, + FT_Long new_count, + void* block, + FT_Error *p_error ); + + FT_BASE( void ) + ft_mem_free( FT_Memory memory, + const void* P ); + + +#define FT_MEM_ALLOC( ptr, size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_alloc( memory, \ + (FT_Long)(size), \ + &error ) ) + +#define FT_MEM_FREE( ptr ) \ + FT_BEGIN_STMNT \ + ft_mem_free( memory, (ptr) ); \ + (ptr) = NULL; \ + FT_END_STMNT + +#define FT_MEM_NEW( ptr ) \ + FT_MEM_ALLOC( ptr, sizeof ( *(ptr) ) ) + +#define FT_MEM_REALLOC( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + 1, \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QALLOC( ptr, size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qalloc( memory, \ + (FT_Long)(size), \ + &error ) ) + +#define FT_MEM_QNEW( ptr ) \ + FT_MEM_QALLOC( ptr, sizeof ( *(ptr) ) ) + +#define FT_MEM_QREALLOC( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + 1, \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_ALLOC_MULT( ptr, count, item_size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + (FT_Long)(item_size), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + (FT_Long)(itmsz), \ + (FT_Long)(oldcnt), \ + (FT_Long)(newcnt), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QALLOC_MULT( ptr, count, item_size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + (FT_Long)(item_size), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + (FT_Long)(itmsz), \ + (FT_Long)(oldcnt), \ + (FT_Long)(newcnt), \ + (ptr), \ + &error ) ) + + +#define FT_MEM_SET_ERROR( cond ) ( (cond), error != 0 ) + + +#define FT_MEM_SET( dest, byte, count ) \ + ft_memset( dest, byte, (FT_Offset)(count) ) + +#define FT_MEM_COPY( dest, source, count ) \ + ft_memcpy( dest, source, (FT_Offset)(count) ) + +#define FT_MEM_MOVE( dest, source, count ) \ + ft_memmove( dest, source, (FT_Offset)(count) ) + + +#define FT_MEM_ZERO( dest, count ) FT_MEM_SET( dest, 0, count ) + +#define FT_ZERO( p ) FT_MEM_ZERO( p, sizeof ( *(p) ) ) + + +#define FT_ARRAY_ZERO( dest, count ) \ + FT_MEM_ZERO( dest, \ + (FT_Offset)(count) * sizeof ( *(dest) ) ) + +#define FT_ARRAY_COPY( dest, source, count ) \ + FT_MEM_COPY( dest, \ + source, \ + (FT_Offset)(count) * sizeof ( *(dest) ) ) + +#define FT_ARRAY_MOVE( dest, source, count ) \ + FT_MEM_MOVE( dest, \ + source, \ + (FT_Offset)(count) * sizeof ( *(dest) ) ) + + + /* + * Return the maximum number of addressable elements in an array. + * We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid + * any problems. + */ +#define FT_ARRAY_MAX( ptr ) ( FT_INT_MAX / sizeof ( *(ptr) ) ) + +#define FT_ARRAY_CHECK( ptr, count ) ( (count) <= FT_ARRAY_MAX( ptr ) ) + + + /*************************************************************************/ + /* */ + /* The following functions macros expect that their pointer argument is */ + /* _typed_ in order to automatically compute array element sizes. */ + /* */ + +#define FT_MEM_NEW_ARRAY( ptr, count ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + sizeof ( *(ptr) ), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_RENEW_ARRAY( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + sizeof ( *(ptr) ), \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QNEW_ARRAY( ptr, count ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + sizeof ( *(ptr) ), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_QRENEW_ARRAY( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + sizeof ( *(ptr) ), \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_ALLOC( ptr, size ) \ + FT_MEM_SET_ERROR( FT_MEM_ALLOC( ptr, size ) ) + +#define FT_REALLOC( ptr, cursz, newsz ) \ + FT_MEM_SET_ERROR( FT_MEM_REALLOC( ptr, cursz, newsz ) ) + +#define FT_ALLOC_MULT( ptr, count, item_size ) \ + FT_MEM_SET_ERROR( FT_MEM_ALLOC_MULT( ptr, count, item_size ) ) + +#define FT_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_MEM_SET_ERROR( FT_MEM_REALLOC_MULT( ptr, oldcnt, \ + newcnt, itmsz ) ) + +#define FT_QALLOC( ptr, size ) \ + FT_MEM_SET_ERROR( FT_MEM_QALLOC( ptr, size ) ) + +#define FT_QREALLOC( ptr, cursz, newsz ) \ + FT_MEM_SET_ERROR( FT_MEM_QREALLOC( ptr, cursz, newsz ) ) + +#define FT_QALLOC_MULT( ptr, count, item_size ) \ + FT_MEM_SET_ERROR( FT_MEM_QALLOC_MULT( ptr, count, item_size ) ) + +#define FT_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_MEM_SET_ERROR( FT_MEM_QREALLOC_MULT( ptr, oldcnt, \ + newcnt, itmsz ) ) + +#define FT_FREE( ptr ) FT_MEM_FREE( ptr ) + +#define FT_NEW( ptr ) FT_MEM_SET_ERROR( FT_MEM_NEW( ptr ) ) + +#define FT_NEW_ARRAY( ptr, count ) \ + FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) ) + +#define FT_RENEW_ARRAY( ptr, curcnt, newcnt ) \ + FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) ) + +#define FT_QNEW( ptr ) \ + FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) ) + +#define FT_QNEW_ARRAY( ptr, count ) \ + FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) ) + +#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \ + FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) ) + + + FT_BASE( FT_Pointer ) + ft_mem_strdup( FT_Memory memory, + const char* str, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_dup( FT_Memory memory, + const void* address, + FT_ULong size, + FT_Error *p_error ); + + +#define FT_MEM_STRDUP( dst, str ) \ + (dst) = (char*)ft_mem_strdup( memory, (const char*)(str), &error ) + +#define FT_STRDUP( dst, str ) \ + FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) ) + +#define FT_MEM_DUP( dst, address, size ) \ + (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), &error ) + +#define FT_DUP( dst, address, size ) \ + FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) ) + + + /* Return >= 1 if a truncation occurs. */ + /* Return 0 if the source string fits the buffer. */ + /* This is *not* the same as strlcpy(). */ + FT_BASE( FT_Int ) + ft_mem_strcpyn( char* dst, + const char* src, + FT_ULong size ); + +#define FT_STRCPYN( dst, src, size ) \ + ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) ) + + /* */ + + +FT_END_HEADER + +#endif /* __FTMEMORY_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftobjs.h b/lib/osx/include/freetype/internal/ftobjs.h new file mode 100644 index 0000000..9a333fc --- /dev/null +++ b/lib/osx/include/freetype/internal/ftobjs.h @@ -0,0 +1,1574 @@ +/***************************************************************************/ +/* */ +/* ftobjs.h */ +/* */ +/* The FreeType private base classes (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of all internal FreeType classes. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTOBJS_H__ +#define __FTOBJS_H__ + +#include <ft2build.h> +#include FT_RENDER_H +#include FT_SIZES_H +#include FT_LCD_FILTER_H +#include FT_INTERNAL_MEMORY_H +#include FT_INTERNAL_GLYPH_LOADER_H +#include FT_INTERNAL_DRIVER_H +#include FT_INTERNAL_AUTOHINT_H +#include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_PIC_H + +#ifdef FT_CONFIG_OPTION_INCREMENTAL +#include FT_INCREMENTAL_H +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* Some generic definitions. */ + /* */ +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef NULL +#define NULL (void*)0 +#endif + + + /*************************************************************************/ + /* */ + /* The min and max functions missing in C. As usual, be careful not to */ + /* write things like FT_MIN( a++, b++ ) to avoid side effects. */ + /* */ +#define FT_MIN( a, b ) ( (a) < (b) ? (a) : (b) ) +#define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) ) + +#define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) ) + + /* + * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min' + * algorithm. We use alpha = 1, beta = 3/8, giving us results with a + * largest error less than 7% compared to the exact value. + */ +#define FT_HYPOT( x, y ) \ + ( x = FT_ABS( x ), \ + y = FT_ABS( y ), \ + x > y ? x + ( 3 * y >> 3 ) \ + : y + ( 3 * x >> 3 ) ) + + /* we use FT_TYPEOF to suppress signedness compilation warnings */ +#define FT_PAD_FLOOR( x, n ) ( (x) & ~FT_TYPEOF( x )( (n)-1 ) ) +#define FT_PAD_ROUND( x, n ) FT_PAD_FLOOR( (x) + ((n)/2), n ) +#define FT_PAD_CEIL( x, n ) FT_PAD_FLOOR( (x) + ((n)-1), n ) + +#define FT_PIX_FLOOR( x ) ( (x) & ~FT_TYPEOF( x )63 ) +#define FT_PIX_ROUND( x ) FT_PIX_FLOOR( (x) + 32 ) +#define FT_PIX_CEIL( x ) FT_PIX_FLOOR( (x) + 63 ) + + + /* + * character classification functions -- since these are used to parse + * font files, we must not use those in <ctypes.h> which are + * locale-dependent + */ +#define ft_isdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U ) + +#define ft_isxdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U || \ + ( (unsigned)(x) - 'a' ) < 6U || \ + ( (unsigned)(x) - 'A' ) < 6U ) + + /* the next two macros assume ASCII representation */ +#define ft_isupper( x ) ( ( (unsigned)(x) - 'A' ) < 26U ) +#define ft_islower( x ) ( ( (unsigned)(x) - 'a' ) < 26U ) + +#define ft_isalpha( x ) ( ft_isupper( x ) || ft_islower( x ) ) +#define ft_isalnum( x ) ( ft_isdigit( x ) || ft_isalpha( x ) ) + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** C H A R M A P S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to internal charmap object */ + typedef struct FT_CMapRec_* FT_CMap; + + /* handle to charmap class structure */ + typedef const struct FT_CMap_ClassRec_* FT_CMap_Class; + + /* internal charmap object structure */ + typedef struct FT_CMapRec_ + { + FT_CharMapRec charmap; + FT_CMap_Class clazz; + + } FT_CMapRec; + + /* typecase any pointer to a charmap handle */ +#define FT_CMAP( x ) ((FT_CMap)( x )) + + /* obvious macros */ +#define FT_CMAP_PLATFORM_ID( x ) FT_CMAP( x )->charmap.platform_id +#define FT_CMAP_ENCODING_ID( x ) FT_CMAP( x )->charmap.encoding_id +#define FT_CMAP_ENCODING( x ) FT_CMAP( x )->charmap.encoding +#define FT_CMAP_FACE( x ) FT_CMAP( x )->charmap.face + + + /* class method definitions */ + typedef FT_Error + (*FT_CMap_InitFunc)( FT_CMap cmap, + FT_Pointer init_data ); + + typedef void + (*FT_CMap_DoneFunc)( FT_CMap cmap ); + + typedef FT_UInt + (*FT_CMap_CharIndexFunc)( FT_CMap cmap, + FT_UInt32 char_code ); + + typedef FT_UInt + (*FT_CMap_CharNextFunc)( FT_CMap cmap, + FT_UInt32 *achar_code ); + + typedef FT_UInt + (*FT_CMap_CharVarIndexFunc)( FT_CMap cmap, + FT_CMap unicode_cmap, + FT_UInt32 char_code, + FT_UInt32 variant_selector ); + + typedef FT_Bool + (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap cmap, + FT_UInt32 char_code, + FT_UInt32 variant_selector ); + + typedef FT_UInt32 * + (*FT_CMap_VariantListFunc)( FT_CMap cmap, + FT_Memory mem ); + + typedef FT_UInt32 * + (*FT_CMap_CharVariantListFunc)( FT_CMap cmap, + FT_Memory mem, + FT_UInt32 char_code ); + + typedef FT_UInt32 * + (*FT_CMap_VariantCharListFunc)( FT_CMap cmap, + FT_Memory mem, + FT_UInt32 variant_selector ); + + + typedef struct FT_CMap_ClassRec_ + { + FT_ULong size; + FT_CMap_InitFunc init; + FT_CMap_DoneFunc done; + FT_CMap_CharIndexFunc char_index; + FT_CMap_CharNextFunc char_next; + + /* Subsequent entries are special ones for format 14 -- the variant */ + /* selector subtable which behaves like no other */ + + FT_CMap_CharVarIndexFunc char_var_index; + FT_CMap_CharVarIsDefaultFunc char_var_default; + FT_CMap_VariantListFunc variant_list; + FT_CMap_CharVariantListFunc charvariant_list; + FT_CMap_VariantCharListFunc variantchar_list; + + } FT_CMap_ClassRec; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + FT_CALLBACK_TABLE const FT_CMap_ClassRec class_; + +#define FT_DEFINE_CMAP_CLASS( \ + class_, \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_CMap_ClassRec class_ = \ + { \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_CMap_ClassRec* clazz ); + +#define FT_DEFINE_CMAP_CLASS( \ + class_, \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_CMap_ClassRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->size = size_; \ + clazz->init = init_; \ + clazz->done = done_; \ + clazz->char_index = char_index_; \ + clazz->char_next = char_next_; \ + clazz->char_var_index = char_var_index_; \ + clazz->char_var_default = char_var_default_; \ + clazz->variant_list = variant_list_; \ + clazz->charvariant_list = charvariant_list_; \ + clazz->variantchar_list = variantchar_list_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* create a new charmap and add it to charmap->face */ + FT_BASE( FT_Error ) + FT_CMap_New( FT_CMap_Class clazz, + FT_Pointer init_data, + FT_CharMap charmap, + FT_CMap *acmap ); + + /* destroy a charmap and remove it from face's list */ + FT_BASE( void ) + FT_CMap_Done( FT_CMap cmap ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Face_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_Face */ + /* object. These fields may change between different releases of */ + /* FreeType. */ + /* */ + /* <Fields> */ + /* max_points :: */ + /* The maximum number of points used to store the vectorial outline */ + /* of any glyph in this face. If this value cannot be known in */ + /* advance, or if the face isn't scalable, this should be set to 0. */ + /* Only relevant for scalable formats. */ + /* */ + /* max_contours :: */ + /* The maximum number of contours used to store the vectorial */ + /* outline of any glyph in this face. If this value cannot be */ + /* known in advance, or if the face isn't scalable, this should be */ + /* set to 0. Only relevant for scalable formats. */ + /* */ + /* transform_matrix :: */ + /* A 2x2 matrix of 16.16 coefficients used to transform glyph */ + /* outlines after they are loaded from the font. Only used by the */ + /* convenience functions. */ + /* */ + /* transform_delta :: */ + /* A translation vector used to transform glyph outlines after they */ + /* are loaded from the font. Only used by the convenience */ + /* functions. */ + /* */ + /* transform_flags :: */ + /* Some flags used to classify the transform. Only used by the */ + /* convenience functions. */ + /* */ + /* services :: */ + /* A cache for frequently used services. It should be only */ + /* accessed with the macro `FT_FACE_LOOKUP_SERVICE'. */ + /* */ + /* incremental_interface :: */ + /* If non-null, the interface through which glyph data and metrics */ + /* are loaded incrementally for faces that do not provide all of */ + /* this data when first opened. This field exists only if */ + /* @FT_CONFIG_OPTION_INCREMENTAL is defined. */ + /* */ + /* ignore_unpatented_hinter :: */ + /* This boolean flag instructs the glyph loader to ignore the */ + /* native font hinter, if one is found. This is exclusively used */ + /* in the case when the unpatented hinter is compiled within the */ + /* library. */ + /* */ + /* refcount :: */ + /* A counter initialized to~1 at the time an @FT_Face structure is */ + /* created. @FT_Reference_Face increments this counter, and */ + /* @FT_Done_Face only destroys a face if the counter is~1, */ + /* otherwise it simply decrements it. */ + /* */ + typedef struct FT_Face_InternalRec_ + { + FT_Matrix transform_matrix; + FT_Vector transform_delta; + FT_Int transform_flags; + + FT_ServiceCacheRec services; + +#ifdef FT_CONFIG_OPTION_INCREMENTAL + FT_Incremental_InterfaceRec* incremental_interface; +#endif + + FT_Bool ignore_unpatented_hinter; + FT_Int refcount; + + } FT_Face_InternalRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Slot_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_GlyphSlot */ + /* object. These fields may change between different releases of */ + /* FreeType. */ + /* */ + /* <Fields> */ + /* loader :: The glyph loader object used to load outlines */ + /* into the glyph slot. */ + /* */ + /* flags :: Possible values are zero or */ + /* FT_GLYPH_OWN_BITMAP. The latter indicates */ + /* that the FT_GlyphSlot structure owns the */ + /* bitmap buffer. */ + /* */ + /* glyph_transformed :: Boolean. Set to TRUE when the loaded glyph */ + /* must be transformed through a specific */ + /* font transformation. This is _not_ the same */ + /* as the face transform set through */ + /* FT_Set_Transform(). */ + /* */ + /* glyph_matrix :: The 2x2 matrix corresponding to the glyph */ + /* transformation, if necessary. */ + /* */ + /* glyph_delta :: The 2d translation vector corresponding to */ + /* the glyph transformation, if necessary. */ + /* */ + /* glyph_hints :: Format-specific glyph hints management. */ + /* */ + +#define FT_GLYPH_OWN_BITMAP 0x1U + + typedef struct FT_Slot_InternalRec_ + { + FT_GlyphLoader loader; + FT_UInt flags; + FT_Bool glyph_transformed; + FT_Matrix glyph_matrix; + FT_Vector glyph_delta; + void* glyph_hints; + + } FT_GlyphSlot_InternalRec; + + +#if 0 + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_Size */ + /* object. Currently, it's empty. */ + /* */ + /*************************************************************************/ + + typedef struct FT_Size_InternalRec_ + { + /* empty */ + + } FT_Size_InternalRec; + +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** M O D U L E S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ModuleRec */ + /* */ + /* <Description> */ + /* A module object instance. */ + /* */ + /* <Fields> */ + /* clazz :: A pointer to the module's class. */ + /* */ + /* library :: A handle to the parent library object. */ + /* */ + /* memory :: A handle to the memory manager. */ + /* */ + typedef struct FT_ModuleRec_ + { + FT_Module_Class* clazz; + FT_Library library; + FT_Memory memory; + + } FT_ModuleRec; + + + /* typecast an object to an FT_Module */ +#define FT_MODULE( x ) ((FT_Module)( x )) +#define FT_MODULE_CLASS( x ) FT_MODULE( x )->clazz +#define FT_MODULE_LIBRARY( x ) FT_MODULE( x )->library +#define FT_MODULE_MEMORY( x ) FT_MODULE( x )->memory + + +#define FT_MODULE_IS_DRIVER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_FONT_DRIVER ) + +#define FT_MODULE_IS_RENDERER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_RENDERER ) + +#define FT_MODULE_IS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_HINTER ) + +#define FT_MODULE_IS_STYLER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_STYLER ) + +#define FT_DRIVER_IS_SCALABLE( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_SCALABLE ) + +#define FT_DRIVER_USES_OUTLINES( x ) !( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_NO_OUTLINES ) + +#define FT_DRIVER_HAS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_HAS_HINTER ) + +#define FT_DRIVER_HINTS_LIGHTLY( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_HINTS_LIGHTLY ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module_Interface */ + /* */ + /* <Description> */ + /* Finds a module and returns its specific interface as a typeless */ + /* pointer. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module-specific interface if available, 0 otherwise. */ + /* */ + /* <Note> */ + /* You should better be familiar with FreeType internals to know */ + /* which module to look for, and what its interface is :-) */ + /* */ + FT_BASE( const void* ) + FT_Get_Module_Interface( FT_Library library, + const char* mod_name ); + + FT_BASE( FT_Pointer ) + ft_module_get_service( FT_Module module, + const char* service_id ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** F A C E, S I Z E & G L Y P H S L O T O B J E C T S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* a few macros used to perform easy typecasts with minimal brain damage */ + +#define FT_FACE( x ) ((FT_Face)(x)) +#define FT_SIZE( x ) ((FT_Size)(x)) +#define FT_SLOT( x ) ((FT_GlyphSlot)(x)) + +#define FT_FACE_DRIVER( x ) FT_FACE( x )->driver +#define FT_FACE_LIBRARY( x ) FT_FACE_DRIVER( x )->root.library +#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory +#define FT_FACE_STREAM( x ) FT_FACE( x )->stream + +#define FT_SIZE_FACE( x ) FT_SIZE( x )->face +#define FT_SLOT_FACE( x ) FT_SLOT( x )->face + +#define FT_FACE_SLOT( x ) FT_FACE( x )->glyph +#define FT_FACE_SIZE( x ) FT_FACE( x )->size + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_GlyphSlot */ + /* */ + /* <Description> */ + /* It is sometimes useful to have more than one glyph slot for a */ + /* given face object. This function is used to create additional */ + /* slots. All of them are automatically discarded when the face is */ + /* destroyed. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* aslot :: A handle to a new glyph slot object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + FT_BASE( FT_Error ) + FT_New_GlyphSlot( FT_Face face, + FT_GlyphSlot *aslot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_GlyphSlot */ + /* */ + /* <Description> */ + /* Destroys a given glyph slot. Remember however that all slots are */ + /* automatically destroyed with its parent. Using this function is */ + /* not always mandatory. */ + /* */ + /* <Input> */ + /* slot :: A handle to a target glyph slot. */ + /* */ + FT_BASE( void ) + FT_Done_GlyphSlot( FT_GlyphSlot slot ); + + /* */ + +#define FT_REQUEST_WIDTH( req ) \ + ( (req)->horiResolution \ + ? ( (req)->width * (FT_Pos)(req)->horiResolution + 36 ) / 72 \ + : (req)->width ) + +#define FT_REQUEST_HEIGHT( req ) \ + ( (req)->vertResolution \ + ? ( (req)->height * (FT_Pos)(req)->vertResolution + 36 ) / 72 \ + : (req)->height ) + + + /* Set the metrics according to a bitmap strike. */ + FT_BASE( void ) + FT_Select_Metrics( FT_Face face, + FT_ULong strike_index ); + + + /* Set the metrics according to a size request. */ + FT_BASE( void ) + FT_Request_Metrics( FT_Face face, + FT_Size_Request req ); + + + /* Match a size request against `available_sizes'. */ + FT_BASE( FT_Error ) + FT_Match_Size( FT_Face face, + FT_Size_Request req, + FT_Bool ignore_width, + FT_ULong* size_index ); + + + /* Use the horizontal metrics to synthesize the vertical metrics. */ + /* If `advance' is zero, it is also synthesized. */ + FT_BASE( void ) + ft_synthesize_vertical_metrics( FT_Glyph_Metrics* metrics, + FT_Pos advance ); + + + /* Free the bitmap of a given glyphslot when needed (i.e., only when it */ + /* was allocated with ft_glyphslot_alloc_bitmap). */ + FT_BASE( void ) + ft_glyphslot_free_bitmap( FT_GlyphSlot slot ); + + + /* Allocate a new bitmap buffer in a glyph slot. */ + FT_BASE( FT_Error ) + ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, + FT_ULong size ); + + + /* Set the bitmap buffer in a glyph slot to a given pointer. The buffer */ + /* will not be freed by a later call to ft_glyphslot_free_bitmap. */ + FT_BASE( void ) + ft_glyphslot_set_bitmap( FT_GlyphSlot slot, + FT_Byte* buffer ); + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** R E N D E R E R S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + +#define FT_RENDERER( x ) ((FT_Renderer)( x )) +#define FT_GLYPH( x ) ((FT_Glyph)( x )) +#define FT_BITMAP_GLYPH( x ) ((FT_BitmapGlyph)( x )) +#define FT_OUTLINE_GLYPH( x ) ((FT_OutlineGlyph)( x )) + + + typedef struct FT_RendererRec_ + { + FT_ModuleRec root; + FT_Renderer_Class* clazz; + FT_Glyph_Format glyph_format; + FT_Glyph_Class glyph_class; + + FT_Raster raster; + FT_Raster_Render_Func raster_render; + FT_Renderer_RenderFunc render; + + } FT_RendererRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** F O N T D R I V E R S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* typecast a module into a driver easily */ +#define FT_DRIVER( x ) ((FT_Driver)(x)) + + /* typecast a module as a driver, and get its driver class */ +#define FT_DRIVER_CLASS( x ) FT_DRIVER( x )->clazz + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_DriverRec */ + /* */ + /* <Description> */ + /* The root font driver class. A font driver is responsible for */ + /* managing and loading font files of a given format. */ + /* */ + /* <Fields> */ + /* root :: Contains the fields of the root module class. */ + /* */ + /* clazz :: A pointer to the font driver's class. Note that */ + /* this is NOT root.clazz. `class' wasn't used */ + /* as it is a reserved word in C++. */ + /* */ + /* faces_list :: The list of faces currently opened by this */ + /* driver. */ + /* */ + /* glyph_loader :: Unused. Used to be glyph loader for all faces */ + /* managed by this driver. */ + /* */ + typedef struct FT_DriverRec_ + { + FT_ModuleRec root; + FT_Driver_Class clazz; + FT_ListRec faces_list; + FT_GlyphLoader glyph_loader; + + } FT_DriverRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** L I B R A R I E S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* This hook is used by the TrueType debugger. It must be set to an */ + /* alternate truetype bytecode interpreter function. */ +#define FT_DEBUG_HOOK_TRUETYPE 0 + + + /* Set this debug hook to a non-null pointer to force unpatented hinting */ + /* for all faces when both TT_USE_BYTECODE_INTERPRETER and */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING are defined. This is only used */ + /* during debugging. */ +#define FT_DEBUG_HOOK_UNPATENTED_HINTING 1 + + + typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap, + FT_Render_Mode render_mode, + FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_LibraryRec */ + /* */ + /* <Description> */ + /* The FreeType library class. This is the root of all FreeType */ + /* data. Use FT_New_Library() to create a library object, and */ + /* FT_Done_Library() to discard it and all child objects. */ + /* */ + /* <Fields> */ + /* memory :: The library's memory object. Manages memory */ + /* allocation. */ + /* */ + /* version_major :: The major version number of the library. */ + /* */ + /* version_minor :: The minor version number of the library. */ + /* */ + /* version_patch :: The current patch level of the library. */ + /* */ + /* num_modules :: The number of modules currently registered */ + /* within this library. This is set to 0 for new */ + /* libraries. New modules are added through the */ + /* FT_Add_Module() API function. */ + /* */ + /* modules :: A table used to store handles to the currently */ + /* registered modules. Note that each font driver */ + /* contains a list of its opened faces. */ + /* */ + /* renderers :: The list of renderers currently registered */ + /* within the library. */ + /* */ + /* cur_renderer :: The current outline renderer. This is a */ + /* shortcut used to avoid parsing the list on */ + /* each call to FT_Outline_Render(). It is a */ + /* handle to the current renderer for the */ + /* FT_GLYPH_FORMAT_OUTLINE format. */ + /* */ + /* auto_hinter :: XXX */ + /* */ + /* raster_pool :: The raster object's render pool. This can */ + /* ideally be changed dynamically at run-time. */ + /* */ + /* raster_pool_size :: The size of the render pool in bytes. */ + /* */ + /* debug_hooks :: XXX */ + /* */ + /* lcd_filter :: If subpixel rendering is activated, the */ + /* selected LCD filter mode. */ + /* */ + /* lcd_extra :: If subpixel rendering is activated, the number */ + /* of extra pixels needed for the LCD filter. */ + /* */ + /* lcd_weights :: If subpixel rendering is activated, the LCD */ + /* filter weights, if any. */ + /* */ + /* lcd_filter_func :: If subpixel rendering is activated, the LCD */ + /* filtering callback function. */ + /* */ + /* pic_container :: Contains global structs and tables, instead */ + /* of defining them globallly. */ + /* */ + /* refcount :: A counter initialized to~1 at the time an */ + /* @FT_Library structure is created. */ + /* @FT_Reference_Library increments this counter, */ + /* and @FT_Done_Library only destroys a library */ + /* if the counter is~1, otherwise it simply */ + /* decrements it. */ + /* */ + typedef struct FT_LibraryRec_ + { + FT_Memory memory; /* library's memory manager */ + + FT_Int version_major; + FT_Int version_minor; + FT_Int version_patch; + + FT_UInt num_modules; + FT_Module modules[FT_MAX_MODULES]; /* module objects */ + + FT_ListRec renderers; /* list of renderers */ + FT_Renderer cur_renderer; /* current outline renderer */ + FT_Module auto_hinter; + + FT_Byte* raster_pool; /* scan-line conversion */ + /* render pool */ + FT_ULong raster_pool_size; /* size of render pool in bytes */ + + FT_DebugHook_Func debug_hooks[4]; + +#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING + FT_LcdFilter lcd_filter; + FT_Int lcd_extra; /* number of extra pixels */ + FT_Byte lcd_weights[7]; /* filter weights, if any */ + FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */ +#endif + +#ifdef FT_CONFIG_OPTION_PIC + FT_PIC_Container pic_container; +#endif + + FT_Int refcount; + + } FT_LibraryRec; + + + FT_BASE( FT_Renderer ) + FT_Lookup_Renderer( FT_Library library, + FT_Glyph_Format format, + FT_ListNode* node ); + + FT_BASE( FT_Error ) + FT_Render_Glyph_Internal( FT_Library library, + FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + typedef const char* + (*FT_Face_GetPostscriptNameFunc)( FT_Face face ); + + typedef FT_Error + (*FT_Face_GetGlyphNameFunc)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_Face_GetGlyphNameIndexFunc)( FT_Face face, + FT_String* glyph_name ); + + +#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory */ + /* */ + /* <Description> */ + /* Creates a new memory object. */ + /* */ + /* <Return> */ + /* A pointer to the new memory object. 0 in case of error. */ + /* */ + FT_BASE( FT_Memory ) + FT_New_Memory( void ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Memory */ + /* */ + /* <Description> */ + /* Discards memory manager. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* */ + FT_BASE( void ) + FT_Done_Memory( FT_Memory memory ); + +#endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ + + + /* Define default raster's interface. The default raster is located in */ + /* `src/base/ftraster.c'. */ + /* */ + /* Client applications can register new rasters through the */ + /* FT_Set_Raster() API. */ + +#ifndef FT_NO_DEFAULT_RASTER + FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster; +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** P I C S U P P O R T ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* PIC support macros for ftimage.h */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_OUTLINE_FUNCS */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Outline_Funcs struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_OUTLINE_FUNCS( \ + class_, \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ ) \ + static const FT_Outline_Funcs class_ = \ + { \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_OUTLINE_FUNCS( \ + class_, \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ ) \ + static FT_Error \ + Init_Class_ ## class_( FT_Outline_Funcs* clazz ) \ + { \ + clazz->move_to = move_to_; \ + clazz->line_to = line_to_; \ + clazz->conic_to = conic_to_; \ + clazz->cubic_to = cubic_to_; \ + clazz->shift = shift_; \ + clazz->delta = delta_; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_RASTER_FUNCS */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Raster_Funcs struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_RASTER_FUNCS( \ + class_, \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ ) \ + const FT_Raster_Funcs class_ = \ + { \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_RASTER_FUNCS( \ + class_, \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Raster_Funcs* clazz ) \ + { \ + clazz->glyph_format = glyph_format_; \ + clazz->raster_new = raster_new_; \ + clazz->raster_reset = raster_reset_; \ + clazz->raster_set_mode = raster_set_mode_; \ + clazz->raster_render = raster_render_; \ + clazz->raster_done = raster_done_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* PIC support macros for ftrender.h */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_GLYPH */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Glyph_Class struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated stcture to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_GLYPH( \ + class_, \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Glyph_Class class_ = \ + { \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_GLYPH( \ + class_, \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Glyph_Class* clazz ) \ + { \ + clazz->glyph_size = size_; \ + clazz->glyph_format = format_; \ + clazz->glyph_init = init_; \ + clazz->glyph_done = done_; \ + clazz->glyph_copy = copy_; \ + clazz->glyph_transform = transform_; \ + clazz->glyph_bbox = bbox_; \ + clazz->glyph_prepare = prepare_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_RENDERER */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of a */ + /* FT_Renderer_Class struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_RENDERER */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Renderer_Class struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion will need */ + /* to be called with a pointer where the allocated structure is */ + /* returned. And when it is no longer needed a `destroy' function */ + /* needs to be called to release that allocation. */ + /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* a mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by the renderer definition calling `FT_DEFINE_RENDERER' in the */ + /* following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_RENDERER( class_ ) \ + FT_EXPORT_VAR( const FT_Renderer_Class ) class_; + +#define FT_DEFINE_RENDERER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + glyph_format_, \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + raster_class_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Renderer_Class class_ = \ + { \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + glyph_format_, \ + \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + \ + raster_class_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_RENDERER( class_ ) FT_DECLARE_MODULE( class_ ) + +#define FT_DEFINE_RENDERER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + glyph_format_, \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + raster_class_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Renderer_Class* rclazz = (FT_Renderer_Class*)clazz; \ + FT_Memory memory = library->memory; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( rclazz ) \ + FT_FREE( rclazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Renderer_Class* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + clazz->glyph_format = glyph_format_; \ + \ + clazz->render_glyph = render_glyph_; \ + clazz->transform_glyph = transform_glyph_; \ + clazz->get_glyph_cbox = get_glyph_cbox_; \ + clazz->set_mode = set_mode_; \ + \ + clazz->raster_class = raster_class_; \ + \ + *output_class = (FT_Module_Class*)clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* PIC support macros for ftmodapi.h **/ + + +#ifdef FT_CONFIG_OPTION_PIC + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Creator */ + /* */ + /* <Description> */ + /* A function used to create (allocate) a new module class object. */ + /* The object's members are initialized, but the module itself is */ + /* not. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* output_class :: Initialized with the newly allocated class. */ + /* */ + typedef FT_Error + (*FT_Module_Creator)( FT_Memory memory, + FT_Module_Class** output_class ); + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destroyer */ + /* */ + /* <Description> */ + /* A function used to destroy (deallocate) a module class object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* clazz :: Module class to destroy. */ + /* */ + typedef void + (*FT_Module_Destroyer)( FT_Memory memory, + FT_Module_Class* clazz ); + +#endif + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_MODULE */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of a */ + /* FT_Module_Class struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_MODULE */ + /* */ + /* <Description> */ + /* Used to initialize an instance of an FT_Module_Class struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion needs to */ + /* be called with a pointer where the allocated structure is */ + /* returned. And when it is no longer needed a `destroy' function */ + /* needs to be called to release that allocation. */ + /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* a mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by the module definition calling `FT_DEFINE_MODULE' in the */ + /* following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ + /* <Macro> */ + /* FT_DEFINE_ROOT_MODULE */ + /* */ + /* <Description> */ + /* Used to initialize an instance of an FT_Module_Class struct inside */ + /* another struct that contains it or in a function that initializes */ + /* that containing struct. */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_MODULE( class_ ) \ + FT_CALLBACK_TABLE \ + const FT_Module_Class class_; + +#define FT_DEFINE_ROOT_MODULE( \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + { \ + flags_, \ + size_, \ + \ + name_, \ + version_, \ + requires_, \ + \ + interface_, \ + \ + init_, \ + done_, \ + get_interface_, \ + }, + +#define FT_DEFINE_MODULE( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Module_Class class_ = \ + { \ + flags_, \ + size_, \ + \ + name_, \ + version_, \ + requires_, \ + \ + interface_, \ + \ + init_, \ + done_, \ + get_interface_, \ + }; + + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_MODULE( class_ ) \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ); \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ); + +#define FT_DEFINE_ROOT_MODULE( \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + clazz->root.module_flags = flags_; \ + clazz->root.module_size = size_; \ + clazz->root.module_name = name_; \ + clazz->root.module_version = version_; \ + clazz->root.module_requires = requires_; \ + \ + clazz->root.module_interface = interface_; \ + \ + clazz->root.module_init = init_; \ + clazz->root.module_done = done_; \ + clazz->root.get_interface = get_interface_; + +#define FT_DEFINE_MODULE( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Memory memory = library->memory; \ + FT_Module_Class* clazz = NULL; \ + FT_Error error; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + clazz->module_flags = flags_; \ + clazz->module_size = size_; \ + clazz->module_name = name_; \ + clazz->module_version = version_; \ + clazz->module_requires = requires_; \ + \ + clazz->module_interface = interface_; \ + \ + clazz->module_init = init_; \ + clazz->module_done = done_; \ + clazz->get_interface = get_interface_; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + +FT_END_HEADER + +#endif /* __FTOBJS_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftpic.h b/lib/osx/include/freetype/internal/ftpic.h new file mode 100644 index 0000000..7f9154f --- /dev/null +++ b/lib/osx/include/freetype/internal/ftpic.h @@ -0,0 +1,71 @@ +/***************************************************************************/ +/* */ +/* ftpic.h */ +/* */ +/* The FreeType position independent code services (declaration). */ +/* */ +/* Copyright 2009-2015 by */ +/* Oran Agra and Mickey Gabel. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Modules that ordinarily have const global data that need address */ + /* can instead define pointers here. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTPIC_H__ +#define __FTPIC_H__ + + +FT_BEGIN_HEADER + +#ifdef FT_CONFIG_OPTION_PIC + + typedef struct FT_PIC_Container_ + { + /* pic containers for base */ + void* base; + + /* pic containers for modules */ + void* autofit; + void* cff; + void* pshinter; + void* psnames; + void* raster; + void* sfnt; + void* smooth; + void* truetype; + + } FT_PIC_Container; + + + /* Initialize the various function tables, structs, etc. */ + /* stored in the container. */ + FT_BASE( FT_Error ) + ft_pic_container_init( FT_Library library ); + + + /* Destroy the contents of the container. */ + FT_BASE( void ) + ft_pic_container_destroy( FT_Library library ); + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + +FT_END_HEADER + +#endif /* __FTPIC_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftrfork.h b/lib/osx/include/freetype/internal/ftrfork.h new file mode 100644 index 0000000..da61ca7 --- /dev/null +++ b/lib/osx/include/freetype/internal/ftrfork.h @@ -0,0 +1,266 @@ +/***************************************************************************/ +/* */ +/* ftrfork.h */ +/* */ +/* Embedded resource forks accessor (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* Masatake YAMATO and Redhat K.K. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* Development of the code in this file is support of */ +/* Information-technology Promotion Agency, Japan. */ +/***************************************************************************/ + + +#ifndef __FTRFORK_H__ +#define __FTRFORK_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* Number of guessing rules supported in `FT_Raccess_Guess'. */ + /* Don't forget to increment the number if you add a new guessing rule. */ +#define FT_RACCESS_N_RULES 9 + + + /* A structure to describe a reference in a resource by its resource ID */ + /* and internal offset. The `POST' resource expects to be concatenated */ + /* by the order of resource IDs instead of its appearance in the file. */ + + typedef struct FT_RFork_Ref_ + { + FT_UShort res_id; + FT_Long offset; + + } FT_RFork_Ref; + +#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK + typedef FT_Error + (*ft_raccess_guess_func)( FT_Library library, + FT_Stream stream, + char *base_file_name, + char **result_file_name, + FT_Long *result_offset ); + + typedef enum FT_RFork_Rule_ { + FT_RFork_Rule_invalid = -2, + FT_RFork_Rule_uknown, /* -1 */ + FT_RFork_Rule_apple_double, + FT_RFork_Rule_apple_single, + FT_RFork_Rule_darwin_ufs_export, + FT_RFork_Rule_darwin_newvfs, + FT_RFork_Rule_darwin_hfsplus, + FT_RFork_Rule_vfat, + FT_RFork_Rule_linux_cap, + FT_RFork_Rule_linux_double, + FT_RFork_Rule_linux_netatalk + } FT_RFork_Rule; + + /* For fast translation between rule index and rule type, + * the macros FT_RFORK_xxx should be kept consistent with + * the raccess_guess_funcs table + */ + typedef struct ft_raccess_guess_rec_ { + ft_raccess_guess_func func; + FT_RFork_Rule type; + } ft_raccess_guess_rec; + +#ifndef FT_CONFIG_OPTION_PIC + + /* this array is a storage in non-PIC mode, so ; is needed in END */ +#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type ) \ + static const type name[] = { +#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix ) \ + { raccess_guess_ ## func_suffix, \ + FT_RFork_Rule_ ## type_suffix }, +#define CONST_FT_RFORK_RULE_ARRAY_END }; + +#else /* FT_CONFIG_OPTION_PIC */ + + /* this array is a function in PIC mode, so no ; is needed in END */ +#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type ) \ + void \ + FT_Init_Table_ ## name( type* storage ) \ + { \ + type* local = storage; \ + \ + \ + int i = 0; +#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix ) \ + local[i].func = raccess_guess_ ## func_suffix; \ + local[i].type = FT_RFork_Rule_ ## type_suffix; \ + i++; +#define CONST_FT_RFORK_RULE_ARRAY_END } + +#endif /* FT_CONFIG_OPTION_PIC */ + +#endif /* FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Guess */ + /* */ + /* <Description> */ + /* Guess a file name and offset where the actual resource fork is */ + /* stored. The macro FT_RACCESS_N_RULES holds the number of */ + /* guessing rules; the guessed result for the Nth rule is */ + /* represented as a triplet: a new file name (new_names[N]), a file */ + /* offset (offsets[N]), and an error code (errors[N]). */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* base_name :: */ + /* The (base) file name of the resource fork used for some */ + /* guessing rules. */ + /* */ + /* <Output> */ + /* new_names :: */ + /* An array of guessed file names in which the resource forks may */ + /* exist. If `new_names[N]' is NULL, the guessed file name is */ + /* equal to `base_name'. */ + /* */ + /* offsets :: */ + /* An array of guessed file offsets. `offsets[N]' holds the file */ + /* offset of the possible start of the resource fork in file */ + /* `new_names[N]'. */ + /* */ + /* errors :: */ + /* An array of FreeType error codes. `errors[N]' is the error */ + /* code of Nth guessing rule function. If `errors[N]' is not */ + /* FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless. */ + /* */ + FT_BASE( void ) + FT_Raccess_Guess( FT_Library library, + FT_Stream stream, + char* base_name, + char** new_names, + FT_Long* offsets, + FT_Error* errors ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Get_HeaderInfo */ + /* */ + /* <Description> */ + /* Get the information from the header of resource fork. The */ + /* information includes the file offset where the resource map */ + /* starts, and the file offset where the resource data starts. */ + /* `FT_Raccess_Get_DataOffsets' requires these two data. */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* rfork_offset :: */ + /* The file offset where the resource fork starts. */ + /* */ + /* <Output> */ + /* map_offset :: */ + /* The file offset where the resource map starts. */ + /* */ + /* rdata_pos :: */ + /* The file offset where the resource data starts. */ + /* */ + /* <Return> */ + /* FreeType error code. FT_Err_Ok means success. */ + /* */ + FT_BASE( FT_Error ) + FT_Raccess_Get_HeaderInfo( FT_Library library, + FT_Stream stream, + FT_Long rfork_offset, + FT_Long *map_offset, + FT_Long *rdata_pos ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Get_DataOffsets */ + /* */ + /* <Description> */ + /* Get the data offsets for a tag in a resource fork. Offsets are */ + /* stored in an array because, in some cases, resources in a resource */ + /* fork have the same tag. */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* map_offset :: */ + /* The file offset where the resource map starts. */ + /* */ + /* rdata_pos :: */ + /* The file offset where the resource data starts. */ + /* */ + /* tag :: */ + /* The resource tag. */ + /* */ + /* sort_by_res_id :: */ + /* A Boolean to sort the fragmented resource by their ids. */ + /* The fragmented resources for `POST' resource should be sorted */ + /* to restore Type1 font properly. For `snft' resources, sorting */ + /* may induce a different order of the faces in comparison to that */ + /* by QuickDraw API. */ + /* */ + /* <Output> */ + /* offsets :: */ + /* The stream offsets for the resource data specified by `tag'. */ + /* This array is allocated by the function, so you have to call */ + /* @ft_mem_free after use. */ + /* */ + /* count :: */ + /* The length of offsets array. */ + /* */ + /* <Return> */ + /* FreeType error code. FT_Err_Ok means success. */ + /* */ + /* <Note> */ + /* Normally you should use `FT_Raccess_Get_HeaderInfo' to get the */ + /* value for `map_offset' and `rdata_pos'. */ + /* */ + FT_BASE( FT_Error ) + FT_Raccess_Get_DataOffsets( FT_Library library, + FT_Stream stream, + FT_Long map_offset, + FT_Long rdata_pos, + FT_Long tag, + FT_Bool sort_by_res_id, + FT_Long **offsets, + FT_Long *count ); + + +FT_END_HEADER + +#endif /* __FTRFORK_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftserv.h b/lib/osx/include/freetype/internal/ftserv.h new file mode 100644 index 0000000..11a0c7f --- /dev/null +++ b/lib/osx/include/freetype/internal/ftserv.h @@ -0,0 +1,763 @@ +/***************************************************************************/ +/* */ +/* ftserv.h */ +/* */ +/* The FreeType services (specification only). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Each module can export one or more `services'. Each service is */ + /* identified by a constant string and modeled by a pointer; the latter */ + /* generally corresponds to a structure containing function pointers. */ + /* */ + /* Note that a service's data cannot be a mere function pointer because */ + /* in C it is possible that function pointers might be implemented */ + /* differently than data pointers (e.g. 48 bits instead of 32). */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSERV_H__ +#define __FTSERV_H__ + + +FT_BEGIN_HEADER + + /* + * @macro: + * FT_FACE_FIND_SERVICE + * + * @description: + * This macro is used to look up a service from a face's driver module. + * + * @input: + * face :: + * The source face handle. + * + * id :: + * A string describing the service as defined in the service's + * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to + * `multi-masters'). It is automatically prefixed with + * `FT_SERVICE_ID_'. + * + * @output: + * ptr :: + * A variable that receives the service pointer. Will be NULL + * if not found. + */ +#ifdef __cplusplus + +#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_ = NULL; \ + FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \ + \ + \ + if ( module->clazz->get_interface ) \ + _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ + *_pptr_ = _tmp_; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_ = NULL; \ + \ + if ( module->clazz->get_interface ) \ + _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ + ptr = _tmp_; \ + FT_END_STMNT + +#endif /* !C++ */ + + + /* + * @macro: + * FT_FACE_FIND_GLOBAL_SERVICE + * + * @description: + * This macro is used to look up a service from all modules. + * + * @input: + * face :: + * The source face handle. + * + * id :: + * A string describing the service as defined in the service's + * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to + * `multi-masters'). It is automatically prefixed with + * `FT_SERVICE_ID_'. + * + * @output: + * ptr :: + * A variable that receives the service pointer. Will be NULL + * if not found. + */ +#ifdef __cplusplus + +#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_; \ + FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \ + \ + \ + _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ + *_pptr_ = _tmp_; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_; \ + \ + \ + _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ + ptr = _tmp_; \ + FT_END_STMNT + +#endif /* !C++ */ + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** S E R V I C E D E S C R I P T O R S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * The following structure is used to _describe_ a given service + * to the library. This is useful to build simple static service lists. + */ + typedef struct FT_ServiceDescRec_ + { + const char* serv_id; /* service name */ + const void* serv_data; /* service pointer/data */ + + } FT_ServiceDescRec; + + typedef const FT_ServiceDescRec* FT_ServiceDesc; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_SERVICEDESCREC1 */ + /* FT_DEFINE_SERVICEDESCREC2 */ + /* FT_DEFINE_SERVICEDESCREC3 */ + /* FT_DEFINE_SERVICEDESCREC4 */ + /* FT_DEFINE_SERVICEDESCREC5 */ + /* FT_DEFINE_SERVICEDESCREC6 */ + /* FT_DEFINE_SERVICEDESCREC7 */ + /* */ + /* <Description> */ + /* Used to initialize an array of FT_ServiceDescRec structures. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs to */ + /* be called with a pointer to return an allocated array. As soon as */ + /* it is no longer needed, a `destroy' function needs to be called to */ + /* release that allocation. */ + /* */ + /* These functions should be manually called from the `pic_init' and */ + /* `pic_free' functions of your module (see FT_DEFINE_MODULE). */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the array will be */ + /* allocated in the global scope (or the scope where the macro is */ + /* used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICEDESCREC1( class_, \ + serv_id_1, serv_data_1 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC2( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC3( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC4( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC5( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC6( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { serv_id_6, serv_data_6 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC7( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6, \ + serv_id_7, serv_data_7 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { serv_id_6, serv_data_6 }, \ + { serv_id_7, serv_data_7 }, \ + { NULL, NULL } \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICEDESCREC1( class_, \ + serv_id_1, serv_data_1 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = NULL; \ + clazz[1].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC2( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = NULL; \ + clazz[2].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC3( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = NULL; \ + clazz[3].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC4( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = NULL; \ + clazz[4].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC5( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = NULL; \ + clazz[5].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC6( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = serv_id_6; \ + clazz[5].serv_data = serv_data_6; \ + clazz[6].serv_id = NULL; \ + clazz[6].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC7( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6, \ + serv_id_7, serv_data_7 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = serv_id_6; \ + clazz[5].serv_data = serv_data_6; \ + clazz[6].serv_id = serv_id_7; \ + clazz[6].serv_data = serv_data_7; \ + clazz[7].serv_id = NULL; \ + clazz[7].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* + * Parse a list of FT_ServiceDescRec descriptors and look for + * a specific service by ID. Note that the last element in the + * array must be { NULL, NULL }, and that the function should + * return NULL if the service isn't available. + * + * This function can be used by modules to implement their + * `get_service' method. + */ + FT_BASE( FT_Pointer ) + ft_service_list_lookup( FT_ServiceDesc service_descriptors, + const char* service_id ); + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** S E R V I C E S C A C H E *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * This structure is used to store a cache for several frequently used + * services. It is the type of `face->internal->services'. You + * should only use FT_FACE_LOOKUP_SERVICE to access it. + * + * All fields should have the type FT_Pointer to relax compilation + * dependencies. We assume the developer isn't completely stupid. + * + * Each field must be named `service_XXXX' where `XXX' corresponds to + * the correct FT_SERVICE_ID_XXXX macro. See the definition of + * FT_FACE_LOOKUP_SERVICE below how this is implemented. + * + */ + typedef struct FT_ServiceCacheRec_ + { + FT_Pointer service_POSTSCRIPT_FONT_NAME; + FT_Pointer service_MULTI_MASTERS; + FT_Pointer service_GLYPH_DICT; + FT_Pointer service_PFR_METRICS; + FT_Pointer service_WINFNT; + + } FT_ServiceCacheRec, *FT_ServiceCache; + + + /* + * A magic number used within the services cache. + */ + + /* ensure that value `1' has the same width as a pointer */ +#define FT_SERVICE_UNAVAILABLE ((FT_Pointer)~(FT_PtrDist)1) + + + /* + * @macro: + * FT_FACE_LOOKUP_SERVICE + * + * @description: + * This macro is used to lookup a service from a face's driver module + * using its cache. + * + * @input: + * face:: + * The source face handle containing the cache. + * + * field :: + * The field name in the cache. + * + * id :: + * The service ID. + * + * @output: + * ptr :: + * A variable receiving the service data. NULL if not available. + */ +#ifdef __cplusplus + +#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Pointer svc; \ + FT_Pointer* Pptr = (FT_Pointer*)&(ptr); \ + \ + \ + svc = FT_FACE( face )->internal->services. service_ ## id; \ + if ( svc == FT_SERVICE_UNAVAILABLE ) \ + svc = NULL; \ + else if ( svc == NULL ) \ + { \ + FT_FACE_FIND_SERVICE( face, svc, id ); \ + \ + FT_FACE( face )->internal->services. service_ ## id = \ + (FT_Pointer)( svc != NULL ? svc \ + : FT_SERVICE_UNAVAILABLE ); \ + } \ + *Pptr = svc; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Pointer svc; \ + \ + \ + svc = FT_FACE( face )->internal->services. service_ ## id; \ + if ( svc == FT_SERVICE_UNAVAILABLE ) \ + svc = NULL; \ + else if ( svc == NULL ) \ + { \ + FT_FACE_FIND_SERVICE( face, svc, id ); \ + \ + FT_FACE( face )->internal->services. service_ ## id = \ + (FT_Pointer)( svc != NULL ? svc \ + : FT_SERVICE_UNAVAILABLE ); \ + } \ + ptr = svc; \ + FT_END_STMNT + +#endif /* !C++ */ + + /* + * A macro used to define new service structure types. + */ + +#define FT_DEFINE_SERVICE( name ) \ + typedef struct FT_Service_ ## name ## Rec_ \ + FT_Service_ ## name ## Rec ; \ + typedef struct FT_Service_ ## name ## Rec_ \ + const * FT_Service_ ## name ; \ + struct FT_Service_ ## name ## Rec_ + + /* */ + + /* + * The header files containing the services. + */ + +#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h> +#define FT_SERVICE_CID_H <freetype/internal/services/svcid.h> +#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h> +#define FT_SERVICE_GX_VALIDATE_H <freetype/internal/services/svgxval.h> +#define FT_SERVICE_KERNING_H <freetype/internal/services/svkern.h> +#define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h> +#define FT_SERVICE_OPENTYPE_VALIDATE_H <freetype/internal/services/svotval.h> +#define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h> +#define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h> +#define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h> +#define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h> +#define FT_SERVICE_PROPERTIES_H <freetype/internal/services/svprop.h> +#define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h> +#define FT_SERVICE_TRUETYPE_ENGINE_H <freetype/internal/services/svtteng.h> +#define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h> +#define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h> +#define FT_SERVICE_FONT_FORMAT_H <freetype/internal/services/svfntfmt.h> +#define FT_SERVICE_TRUETYPE_GLYF_H <freetype/internal/services/svttglyf.h> + + /* */ + +FT_END_HEADER + +#endif /* __FTSERV_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftstream.h b/lib/osx/include/freetype/internal/ftstream.h new file mode 100644 index 0000000..384e5df --- /dev/null +++ b/lib/osx/include/freetype/internal/ftstream.h @@ -0,0 +1,536 @@ +/***************************************************************************/ +/* */ +/* ftstream.h */ +/* */ +/* Stream handling (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSTREAM_H__ +#define __FTSTREAM_H__ + + +#include <ft2build.h> +#include FT_SYSTEM_H +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* format of an 8-bit frame_op value: */ + /* */ + /* bit 76543210 */ + /* xxxxxxes */ + /* */ + /* s is set to 1 if the value is signed. */ + /* e is set to 1 if the value is little-endian. */ + /* xxx is a command. */ + +#define FT_FRAME_OP_SHIFT 2 +#define FT_FRAME_OP_SIGNED 1 +#define FT_FRAME_OP_LITTLE 2 +#define FT_FRAME_OP_COMMAND( x ) ( x >> FT_FRAME_OP_SHIFT ) + +#define FT_MAKE_FRAME_OP( command, little, sign ) \ + ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign ) + +#define FT_FRAME_OP_END 0 +#define FT_FRAME_OP_START 1 /* start a new frame */ +#define FT_FRAME_OP_BYTE 2 /* read 1-byte value */ +#define FT_FRAME_OP_SHORT 3 /* read 2-byte value */ +#define FT_FRAME_OP_LONG 4 /* read 4-byte value */ +#define FT_FRAME_OP_OFF3 5 /* read 3-byte value */ +#define FT_FRAME_OP_BYTES 6 /* read a bytes sequence */ + + + typedef enum FT_Frame_Op_ + { + ft_frame_end = 0, + ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ), + + ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ), + ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ), + + ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ), + ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ), + ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ), + ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ), + + ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ), + ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ), + ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ), + ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ), + + ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ), + ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ), + ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ), + ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ), + + ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ), + ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 ) + + } FT_Frame_Op; + + + typedef struct FT_Frame_Field_ + { + FT_Byte value; + FT_Byte size; + FT_UShort offset; + + } FT_Frame_Field; + + + /* Construct an FT_Frame_Field out of a structure type and a field name. */ + /* The structure type must be set in the FT_STRUCTURE macro before */ + /* calling the FT_FRAME_START() macro. */ + /* */ +#define FT_FIELD_SIZE( f ) \ + (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f ) + +#define FT_FIELD_SIZE_DELTA( f ) \ + (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] ) + +#define FT_FIELD_OFFSET( f ) \ + (FT_UShort)( offsetof( FT_STRUCTURE, f ) ) + +#define FT_FRAME_FIELD( frame_op, field ) \ + { \ + frame_op, \ + FT_FIELD_SIZE( field ), \ + FT_FIELD_OFFSET( field ) \ + } + +#define FT_MAKE_EMPTY_FIELD( frame_op ) { frame_op, 0, 0 } + +#define FT_FRAME_START( size ) { ft_frame_start, 0, size } +#define FT_FRAME_END { ft_frame_end, 0, 0 } + +#define FT_FRAME_LONG( f ) FT_FRAME_FIELD( ft_frame_long_be, f ) +#define FT_FRAME_ULONG( f ) FT_FRAME_FIELD( ft_frame_ulong_be, f ) +#define FT_FRAME_SHORT( f ) FT_FRAME_FIELD( ft_frame_short_be, f ) +#define FT_FRAME_USHORT( f ) FT_FRAME_FIELD( ft_frame_ushort_be, f ) +#define FT_FRAME_OFF3( f ) FT_FRAME_FIELD( ft_frame_off3_be, f ) +#define FT_FRAME_UOFF3( f ) FT_FRAME_FIELD( ft_frame_uoff3_be, f ) +#define FT_FRAME_BYTE( f ) FT_FRAME_FIELD( ft_frame_byte, f ) +#define FT_FRAME_CHAR( f ) FT_FRAME_FIELD( ft_frame_schar, f ) + +#define FT_FRAME_LONG_LE( f ) FT_FRAME_FIELD( ft_frame_long_le, f ) +#define FT_FRAME_ULONG_LE( f ) FT_FRAME_FIELD( ft_frame_ulong_le, f ) +#define FT_FRAME_SHORT_LE( f ) FT_FRAME_FIELD( ft_frame_short_le, f ) +#define FT_FRAME_USHORT_LE( f ) FT_FRAME_FIELD( ft_frame_ushort_le, f ) +#define FT_FRAME_OFF3_LE( f ) FT_FRAME_FIELD( ft_frame_off3_le, f ) +#define FT_FRAME_UOFF3_LE( f ) FT_FRAME_FIELD( ft_frame_uoff3_le, f ) + +#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 } +#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 } +#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 } + +#define FT_FRAME_BYTES( field, count ) \ + { \ + ft_frame_bytes, \ + count, \ + FT_FIELD_OFFSET( field ) \ + } + +#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 } + + + /*************************************************************************/ + /* */ + /* Integer extraction macros -- the `buffer' parameter must ALWAYS be of */ + /* type `char*' or equivalent (1-byte elements). */ + /* */ + +#define FT_BYTE_( p, i ) ( ((const FT_Byte*)(p))[(i)] ) + +#define FT_INT16( x ) ( (FT_Int16)(x) ) +#define FT_UINT16( x ) ( (FT_UInt16)(x) ) +#define FT_INT32( x ) ( (FT_Int32)(x) ) +#define FT_UINT32( x ) ( (FT_UInt32)(x) ) + + +#define FT_BYTE_U16( p, i, s ) ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) ) +#define FT_BYTE_U32( p, i, s ) ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) ) + + +#define FT_PEEK_SHORT( p ) FT_INT16( FT_BYTE_U16( p, 0, 8) | \ + FT_BYTE_U16( p, 1, 0) ) + +#define FT_PEEK_USHORT( p ) FT_UINT16( FT_BYTE_U16( p, 0, 8 ) | \ + FT_BYTE_U16( p, 1, 0 ) ) + +#define FT_PEEK_LONG( p ) FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) | \ + FT_BYTE_U32( p, 3, 0 ) ) + +#define FT_PEEK_ULONG( p ) FT_UINT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) | \ + FT_BYTE_U32( p, 3, 0 ) ) + +#define FT_PEEK_OFF3( p ) FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 2, 0 ) ) + +#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 2, 0 ) ) + +#define FT_PEEK_SHORT_LE( p ) FT_INT16( FT_BYTE_U16( p, 1, 8 ) | \ + FT_BYTE_U16( p, 0, 0 ) ) + +#define FT_PEEK_USHORT_LE( p ) FT_UINT16( FT_BYTE_U16( p, 1, 8 ) | \ + FT_BYTE_U16( p, 0, 0 ) ) + +#define FT_PEEK_LONG_LE( p ) FT_INT32( FT_BYTE_U32( p, 3, 24 ) | \ + FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_ULONG_LE( p ) FT_UINT32( FT_BYTE_U32( p, 3, 24 ) | \ + FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + + +#define FT_NEXT_CHAR( buffer ) \ + ( (signed char)*buffer++ ) + +#define FT_NEXT_BYTE( buffer ) \ + ( (unsigned char)*buffer++ ) + +#define FT_NEXT_SHORT( buffer ) \ + ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) ) + +#define FT_NEXT_USHORT( buffer ) \ + ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) ) + +#define FT_NEXT_OFF3( buffer ) \ + ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) ) + +#define FT_NEXT_UOFF3( buffer ) \ + ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) ) + +#define FT_NEXT_LONG( buffer ) \ + ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) ) + +#define FT_NEXT_ULONG( buffer ) \ + ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) ) + + +#define FT_NEXT_SHORT_LE( buffer ) \ + ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) ) + +#define FT_NEXT_USHORT_LE( buffer ) \ + ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) ) + +#define FT_NEXT_OFF3_LE( buffer ) \ + ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) ) + +#define FT_NEXT_UOFF3_LE( buffer ) \ + ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) ) + +#define FT_NEXT_LONG_LE( buffer ) \ + ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) ) + +#define FT_NEXT_ULONG_LE( buffer ) \ + ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) ) + + + /*************************************************************************/ + /* */ + /* Each GET_xxxx() macro uses an implicit `stream' variable. */ + /* */ +#if 0 +#define FT_GET_MACRO( type ) FT_NEXT_ ## type ( stream->cursor ) + +#define FT_GET_CHAR() FT_GET_MACRO( CHAR ) +#define FT_GET_BYTE() FT_GET_MACRO( BYTE ) +#define FT_GET_SHORT() FT_GET_MACRO( SHORT ) +#define FT_GET_USHORT() FT_GET_MACRO( USHORT ) +#define FT_GET_OFF3() FT_GET_MACRO( OFF3 ) +#define FT_GET_UOFF3() FT_GET_MACRO( UOFF3 ) +#define FT_GET_LONG() FT_GET_MACRO( LONG ) +#define FT_GET_ULONG() FT_GET_MACRO( ULONG ) +#define FT_GET_TAG4() FT_GET_MACRO( ULONG ) + +#define FT_GET_SHORT_LE() FT_GET_MACRO( SHORT_LE ) +#define FT_GET_USHORT_LE() FT_GET_MACRO( USHORT_LE ) +#define FT_GET_LONG_LE() FT_GET_MACRO( LONG_LE ) +#define FT_GET_ULONG_LE() FT_GET_MACRO( ULONG_LE ) + +#else +#define FT_GET_MACRO( func, type ) ( (type)func( stream ) ) + +#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char ) +#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte ) +#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short ) +#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort ) +#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long ) +#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong ) +#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long ) +#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong ) +#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong ) + +#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short ) +#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort ) +#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long ) +#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong ) +#endif + +#define FT_READ_MACRO( func, type, var ) \ + ( var = (type)func( stream, &error ), \ + error != FT_Err_Ok ) + +#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var ) +#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var ) +#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var ) +#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var ) +#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var ) +#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var ) +#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var ) +#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var ) + +#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var ) +#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var ) +#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var ) +#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var ) + + +#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM + + /* initialize a stream for reading a regular system stream */ + FT_BASE( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ); + +#endif /* FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ + + + /* create a new (input) stream from an FT_Open_Args structure */ + FT_BASE( FT_Error ) + FT_Stream_New( FT_Library library, + const FT_Open_Args* args, + FT_Stream *astream ); + + /* free a stream */ + FT_BASE( void ) + FT_Stream_Free( FT_Stream stream, + FT_Int external ); + + /* initialize a stream for reading in-memory data */ + FT_BASE( void ) + FT_Stream_OpenMemory( FT_Stream stream, + const FT_Byte* base, + FT_ULong size ); + + /* close a stream (does not destroy the stream structure) */ + FT_BASE( void ) + FT_Stream_Close( FT_Stream stream ); + + + /* seek within a stream. position is relative to start of stream */ + FT_BASE( FT_Error ) + FT_Stream_Seek( FT_Stream stream, + FT_ULong pos ); + + /* skip bytes in a stream */ + FT_BASE( FT_Error ) + FT_Stream_Skip( FT_Stream stream, + FT_Long distance ); + + /* return current stream position */ + FT_BASE( FT_ULong ) + FT_Stream_Pos( FT_Stream stream ); + + /* read bytes from a stream into a user-allocated buffer, returns an */ + /* error if not all bytes could be read. */ + FT_BASE( FT_Error ) + FT_Stream_Read( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); + + /* read bytes from a stream at a given position */ + FT_BASE( FT_Error ) + FT_Stream_ReadAt( FT_Stream stream, + FT_ULong pos, + FT_Byte* buffer, + FT_ULong count ); + + /* try to read bytes at the end of a stream; return number of bytes */ + /* really available */ + FT_BASE( FT_ULong ) + FT_Stream_TryRead( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); + + /* Enter a frame of `count' consecutive bytes in a stream. Returns an */ + /* error if the frame could not be read/accessed. The caller can use */ + /* the FT_Stream_Get_XXX functions to retrieve frame data without */ + /* error checks. */ + /* */ + /* You must _always_ call FT_Stream_ExitFrame() once you have entered */ + /* a stream frame! */ + /* */ + FT_BASE( FT_Error ) + FT_Stream_EnterFrame( FT_Stream stream, + FT_ULong count ); + + /* exit a stream frame */ + FT_BASE( void ) + FT_Stream_ExitFrame( FT_Stream stream ); + + /* Extract a stream frame. If the stream is disk-based, a heap block */ + /* is allocated and the frame bytes are read into it. If the stream */ + /* is memory-based, this function simply set a pointer to the data. */ + /* */ + /* Useful to optimize access to memory-based streams transparently. */ + /* */ + /* All extracted frames must be `freed' with a call to the function */ + /* FT_Stream_ReleaseFrame(). */ + /* */ + FT_BASE( FT_Error ) + FT_Stream_ExtractFrame( FT_Stream stream, + FT_ULong count, + FT_Byte** pbytes ); + + /* release an extract frame (see FT_Stream_ExtractFrame) */ + FT_BASE( void ) + FT_Stream_ReleaseFrame( FT_Stream stream, + FT_Byte** pbytes ); + + /* read a byte from an entered frame */ + FT_BASE( FT_Char ) + FT_Stream_GetChar( FT_Stream stream ); + + /* read a 16-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_UShort ) + FT_Stream_GetUShort( FT_Stream stream ); + + /* read a 24-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetUOffset( FT_Stream stream ); + + /* read a 32-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetULong( FT_Stream stream ); + + /* read a 16-bit little-endian unsigned integer from an entered frame */ + FT_BASE( FT_UShort ) + FT_Stream_GetUShortLE( FT_Stream stream ); + + /* read a 32-bit little-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetULongLE( FT_Stream stream ); + + + /* read a byte from a stream */ + FT_BASE( FT_Char ) + FT_Stream_ReadChar( FT_Stream stream, + FT_Error* error ); + + /* read a 16-bit big-endian unsigned integer from a stream */ + FT_BASE( FT_UShort ) + FT_Stream_ReadUShort( FT_Stream stream, + FT_Error* error ); + + /* read a 24-bit big-endian unsigned integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadUOffset( FT_Stream stream, + FT_Error* error ); + + /* read a 32-bit big-endian integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadULong( FT_Stream stream, + FT_Error* error ); + + /* read a 16-bit little-endian unsigned integer from a stream */ + FT_BASE( FT_UShort ) + FT_Stream_ReadUShortLE( FT_Stream stream, + FT_Error* error ); + + /* read a 32-bit little-endian unsigned integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadULongLE( FT_Stream stream, + FT_Error* error ); + + /* Read a structure from a stream. The structure must be described */ + /* by an array of FT_Frame_Field records. */ + FT_BASE( FT_Error ) + FT_Stream_ReadFields( FT_Stream stream, + const FT_Frame_Field* fields, + void* structure ); + + +#define FT_STREAM_POS() \ + FT_Stream_Pos( stream ) + +#define FT_STREAM_SEEK( position ) \ + FT_SET_ERROR( FT_Stream_Seek( stream, \ + (FT_ULong)(position) ) ) + +#define FT_STREAM_SKIP( distance ) \ + FT_SET_ERROR( FT_Stream_Skip( stream, \ + (FT_Long)(distance) ) ) + +#define FT_STREAM_READ( buffer, count ) \ + FT_SET_ERROR( FT_Stream_Read( stream, \ + (FT_Byte*)(buffer), \ + (FT_ULong)(count) ) ) + +#define FT_STREAM_READ_AT( position, buffer, count ) \ + FT_SET_ERROR( FT_Stream_ReadAt( stream, \ + (FT_ULong)(position), \ + (FT_Byte*)buffer, \ + (FT_ULong)(count) ) ) + +#define FT_STREAM_READ_FIELDS( fields, object ) \ + FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) ) + + +#define FT_FRAME_ENTER( size ) \ + FT_SET_ERROR( \ + FT_DEBUG_INNER( FT_Stream_EnterFrame( stream, \ + (FT_ULong)(size) ) ) ) + +#define FT_FRAME_EXIT() \ + FT_DEBUG_INNER( FT_Stream_ExitFrame( stream ) ) + +#define FT_FRAME_EXTRACT( size, bytes ) \ + FT_SET_ERROR( \ + FT_DEBUG_INNER( FT_Stream_ExtractFrame( stream, \ + (FT_ULong)(size), \ + (FT_Byte**)&(bytes) ) ) ) + +#define FT_FRAME_RELEASE( bytes ) \ + FT_DEBUG_INNER( FT_Stream_ReleaseFrame( stream, \ + (FT_Byte**)&(bytes) ) ) + + +FT_END_HEADER + +#endif /* __FTSTREAM_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/fttrace.h b/lib/osx/include/freetype/internal/fttrace.h new file mode 100644 index 0000000..9d28d21 --- /dev/null +++ b/lib/osx/include/freetype/internal/fttrace.h @@ -0,0 +1,154 @@ +/***************************************************************************/ +/* */ +/* fttrace.h */ +/* */ +/* Tracing handling (specification only). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /* definitions of trace levels for FreeType 2 */ + + /* the first level must always be `trace_any' */ +FT_TRACE_DEF( any ) + + /* base components */ +FT_TRACE_DEF( calc ) /* calculations (ftcalc.c) */ +FT_TRACE_DEF( memory ) /* memory manager (ftobjs.c) */ +FT_TRACE_DEF( stream ) /* stream manager (ftstream.c) */ +FT_TRACE_DEF( io ) /* i/o interface (ftsystem.c) */ +FT_TRACE_DEF( list ) /* list management (ftlist.c) */ +FT_TRACE_DEF( init ) /* initialization (ftinit.c) */ +FT_TRACE_DEF( objs ) /* base objects (ftobjs.c) */ +FT_TRACE_DEF( outline ) /* outline management (ftoutln.c) */ +FT_TRACE_DEF( glyph ) /* glyph management (ftglyph.c) */ +FT_TRACE_DEF( gloader ) /* glyph loader (ftgloadr.c) */ + +FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */ +FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */ +FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */ +FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */ +FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */ +FT_TRACE_DEF( bitmap ) /* bitmap checksum (ftobjs.c) */ + + /* Cache sub-system */ +FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */ + + /* SFNT driver components */ +FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */ +FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */ +FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */ +FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */ +FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */ +FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */ +FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */ +FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */ +FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */ + + /* TrueType driver components */ +FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */ +FT_TRACE_DEF( ttgload ) /* TT glyph loader (ttgload.c) */ +FT_TRACE_DEF( ttinterp ) /* bytecode interpreter (ttinterp.c) */ +FT_TRACE_DEF( ttobjs ) /* TT objects manager (ttobjs.c) */ +FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */ +FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */ + + /* Type 1 driver components */ +FT_TRACE_DEF( t1afm ) +FT_TRACE_DEF( t1driver ) +FT_TRACE_DEF( t1gload ) +FT_TRACE_DEF( t1hint ) +FT_TRACE_DEF( t1load ) +FT_TRACE_DEF( t1objs ) +FT_TRACE_DEF( t1parse ) + + /* PostScript helper module `psaux' */ +FT_TRACE_DEF( t1decode ) +FT_TRACE_DEF( psobjs ) +FT_TRACE_DEF( psconv ) + + /* PostScript hinting module `pshinter' */ +FT_TRACE_DEF( pshrec ) +FT_TRACE_DEF( pshalgo1 ) +FT_TRACE_DEF( pshalgo2 ) + + /* Type 2 driver components */ +FT_TRACE_DEF( cffdriver ) +FT_TRACE_DEF( cffgload ) +FT_TRACE_DEF( cffload ) +FT_TRACE_DEF( cffobjs ) +FT_TRACE_DEF( cffparse ) + +FT_TRACE_DEF( cf2blues ) +FT_TRACE_DEF( cf2hints ) +FT_TRACE_DEF( cf2interp ) + + /* Type 42 driver component */ +FT_TRACE_DEF( t42 ) + + /* CID driver components */ +FT_TRACE_DEF( cidafm ) +FT_TRACE_DEF( ciddriver ) +FT_TRACE_DEF( cidgload ) +FT_TRACE_DEF( cidload ) +FT_TRACE_DEF( cidobjs ) +FT_TRACE_DEF( cidparse ) + + /* Windows font component */ +FT_TRACE_DEF( winfnt ) + + /* PCF font components */ +FT_TRACE_DEF( pcfdriver ) +FT_TRACE_DEF( pcfread ) + + /* BDF font components */ +FT_TRACE_DEF( bdfdriver ) +FT_TRACE_DEF( bdflib ) + + /* PFR font component */ +FT_TRACE_DEF( pfr ) + + /* OpenType validation components */ +FT_TRACE_DEF( otvmodule ) +FT_TRACE_DEF( otvcommon ) +FT_TRACE_DEF( otvbase ) +FT_TRACE_DEF( otvgdef ) +FT_TRACE_DEF( otvgpos ) +FT_TRACE_DEF( otvgsub ) +FT_TRACE_DEF( otvjstf ) +FT_TRACE_DEF( otvmath ) + + /* TrueTypeGX/AAT validation components */ +FT_TRACE_DEF( gxvmodule ) +FT_TRACE_DEF( gxvcommon ) +FT_TRACE_DEF( gxvfeat ) +FT_TRACE_DEF( gxvmort ) +FT_TRACE_DEF( gxvmorx ) +FT_TRACE_DEF( gxvbsln ) +FT_TRACE_DEF( gxvjust ) +FT_TRACE_DEF( gxvkern ) +FT_TRACE_DEF( gxvopbd ) +FT_TRACE_DEF( gxvtrak ) +FT_TRACE_DEF( gxvprop ) +FT_TRACE_DEF( gxvlcar ) + + /* autofit components */ +FT_TRACE_DEF( afmodule ) +FT_TRACE_DEF( afhints ) +FT_TRACE_DEF( afcjk ) +FT_TRACE_DEF( aflatin ) +FT_TRACE_DEF( aflatin2 ) +FT_TRACE_DEF( afwarp ) +FT_TRACE_DEF( afharfbuzz ) +FT_TRACE_DEF( afglobal ) + +/* END */ diff --git a/lib/osx/include/freetype/internal/ftvalid.h b/lib/osx/include/freetype/internal/ftvalid.h new file mode 100644 index 0000000..9cda6ee --- /dev/null +++ b/lib/osx/include/freetype/internal/ftvalid.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftvalid.h */ +/* */ +/* FreeType validation support (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTVALID_H__ +#define __FTVALID_H__ + +#include <ft2build.h> +#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */ + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** V A L I D A T I O N ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to a validation object */ + typedef struct FT_ValidatorRec_ volatile* FT_Validator; + + + /*************************************************************************/ + /* */ + /* There are three distinct validation levels defined here: */ + /* */ + /* FT_VALIDATE_DEFAULT :: */ + /* A table that passes this validation level can be used reliably by */ + /* FreeType. It generally means that all offsets have been checked to */ + /* prevent out-of-bound reads, that array counts are correct, etc. */ + /* */ + /* FT_VALIDATE_TIGHT :: */ + /* A table that passes this validation level can be used reliably and */ + /* doesn't contain invalid data. For example, a charmap table that */ + /* returns invalid glyph indices will not pass, even though it can */ + /* be used with FreeType in default mode (the library will simply */ + /* return an error later when trying to load the glyph). */ + /* */ + /* It also checks that fields which must be a multiple of 2, 4, or 8, */ + /* don't have incorrect values, etc. */ + /* */ + /* FT_VALIDATE_PARANOID :: */ + /* Only for font debugging. Checks that a table follows the */ + /* specification by 100%. Very few fonts will be able to pass this */ + /* level anyway but it can be useful for certain tools like font */ + /* editors/converters. */ + /* */ + typedef enum FT_ValidationLevel_ + { + FT_VALIDATE_DEFAULT = 0, + FT_VALIDATE_TIGHT, + FT_VALIDATE_PARANOID + + } FT_ValidationLevel; + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + /* We disable the warning `structure was padded due to */ + /* __declspec(align())' in order to compile cleanly with */ + /* the maximum level of warnings. */ +#pragma warning( push ) +#pragma warning( disable : 4324 ) +#endif /* _MSC_VER */ + + /* validator structure */ + typedef struct FT_ValidatorRec_ + { + ft_jmp_buf jump_buffer; /* used for exception handling */ + + const FT_Byte* base; /* address of table in memory */ + const FT_Byte* limit; /* `base' + sizeof(table) in memory */ + FT_ValidationLevel level; /* validation level */ + FT_Error error; /* error returned. 0 means success */ + + } FT_ValidatorRec; + +#if defined( _MSC_VER ) +#pragma warning( pop ) +#endif + +#define FT_VALIDATOR( x ) ( (FT_Validator)( x ) ) + + + FT_BASE( void ) + ft_validator_init( FT_Validator valid, + const FT_Byte* base, + const FT_Byte* limit, + FT_ValidationLevel level ); + + /* Do not use this. It's broken and will cause your validator to crash */ + /* if you run it on an invalid font. */ + FT_BASE( FT_Int ) + ft_validator_run( FT_Validator valid ); + + /* Sets the error field in a validator, then calls `longjmp' to return */ + /* to high-level caller. Using `setjmp/longjmp' avoids many stupid */ + /* error checks within the validation routines. */ + /* */ + FT_BASE( void ) + ft_validator_error( FT_Validator valid, + FT_Error error ); + + + /* Calls ft_validate_error. Assumes that the `valid' local variable */ + /* holds a pointer to the current validator object. */ + /* */ +#define FT_INVALID( _error ) FT_INVALID_( _error ) +#define FT_INVALID_( _error ) \ + ft_validator_error( valid, FT_THROW( _error ) ) + + /* called when a broken table is detected */ +#define FT_INVALID_TOO_SHORT \ + FT_INVALID( Invalid_Table ) + + /* called when an invalid offset is detected */ +#define FT_INVALID_OFFSET \ + FT_INVALID( Invalid_Offset ) + + /* called when an invalid format/value is detected */ +#define FT_INVALID_FORMAT \ + FT_INVALID( Invalid_Table ) + + /* called when an invalid glyph index is detected */ +#define FT_INVALID_GLYPH_ID \ + FT_INVALID( Invalid_Glyph_Index ) + + /* called when an invalid field value is detected */ +#define FT_INVALID_DATA \ + FT_INVALID( Invalid_Table ) + + +FT_END_HEADER + +#endif /* __FTVALID_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/internal.h b/lib/osx/include/freetype/internal/internal.h new file mode 100644 index 0000000..809ce59 --- /dev/null +++ b/lib/osx/include/freetype/internal/internal.h @@ -0,0 +1,63 @@ +/***************************************************************************/ +/* */ +/* internal.h */ +/* */ +/* Internal header files (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is automatically included by `ft2build.h'. */ + /* Do not include it manually! */ + /* */ + /*************************************************************************/ + + +#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h> +#define FT_INTERNAL_PIC_H <freetype/internal/ftpic.h> +#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h> +#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h> +#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h> +#define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h> +#define FT_INTERNAL_DRIVER_H <freetype/internal/ftdriver.h> +#define FT_INTERNAL_TRACE_H <freetype/internal/fttrace.h> +#define FT_INTERNAL_GLYPH_LOADER_H <freetype/internal/ftgloadr.h> +#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h> +#define FT_INTERNAL_SERVICE_H <freetype/internal/ftserv.h> +#define FT_INTERNAL_RFORK_H <freetype/internal/ftrfork.h> +#define FT_INTERNAL_VALIDATE_H <freetype/internal/ftvalid.h> + +#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h> +#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h> + +#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h> +#define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h> +#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H <freetype/internal/psglobal.h> + +#define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + + /* We disable the warning `conditional expression is constant' here */ + /* in order to compile cleanly with the maximum level of warnings. */ + /* In particular, the warning complains about stuff like `while(0)' */ + /* which is very useful in macro definitions. There is no benefit */ + /* in having it enabled. */ +#pragma warning( disable : 4127 ) + +#endif /* _MSC_VER */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/psaux.h b/lib/osx/include/freetype/internal/psaux.h new file mode 100644 index 0000000..1c5f784 --- /dev/null +++ b/lib/osx/include/freetype/internal/psaux.h @@ -0,0 +1,877 @@ +/***************************************************************************/ +/* */ +/* psaux.h */ +/* */ +/* Auxiliary functions and data structures related to PostScript fonts */ +/* (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSAUX_H__ +#define __PSAUX_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_TYPE1_TYPES_H +#include FT_SERVICE_POSTSCRIPT_CMAPS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1_TABLE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct PS_TableRec_* PS_Table; + typedef const struct PS_Table_FuncsRec_* PS_Table_Funcs; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Table_FuncsRec */ + /* */ + /* <Description> */ + /* A set of function pointers to manage PS_Table objects. */ + /* */ + /* <Fields> */ + /* table_init :: Used to initialize a table. */ + /* */ + /* table_done :: Finalizes resp. destroy a given table. */ + /* */ + /* table_add :: Adds a new object to a table. */ + /* */ + /* table_release :: Releases table data, then finalizes it. */ + /* */ + typedef struct PS_Table_FuncsRec_ + { + FT_Error + (*init)( PS_Table table, + FT_Int count, + FT_Memory memory ); + + void + (*done)( PS_Table table ); + + FT_Error + (*add)( PS_Table table, + FT_Int idx, + void* object, + FT_UInt length ); + + void + (*release)( PS_Table table ); + + } PS_Table_FuncsRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_TableRec */ + /* */ + /* <Description> */ + /* A PS_Table is a simple object used to store an array of objects in */ + /* a single memory block. */ + /* */ + /* <Fields> */ + /* block :: The address in memory of the growheap's block. This */ + /* can change between two object adds, due to */ + /* reallocation. */ + /* */ + /* cursor :: The current top of the grow heap within its block. */ + /* */ + /* capacity :: The current size of the heap block. Increments by */ + /* 1kByte chunks. */ + /* */ + /* init :: Set to 0xDEADBEEF if `elements' and `lengths' have */ + /* been allocated. */ + /* */ + /* max_elems :: The maximum number of elements in table. */ + /* */ + /* num_elems :: The current number of elements in table. */ + /* */ + /* elements :: A table of element addresses within the block. */ + /* */ + /* lengths :: A table of element sizes within the block. */ + /* */ + /* memory :: The object used for memory operations */ + /* (alloc/realloc). */ + /* */ + /* funcs :: A table of method pointers for this object. */ + /* */ + typedef struct PS_TableRec_ + { + FT_Byte* block; /* current memory block */ + FT_Offset cursor; /* current cursor in memory block */ + FT_Offset capacity; /* current size of memory block */ + FT_ULong init; + + FT_Int max_elems; + FT_Int num_elems; + FT_Byte** elements; /* addresses of table elements */ + FT_UInt* lengths; /* lengths of table elements */ + + FT_Memory memory; + PS_Table_FuncsRec funcs; + + } PS_TableRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 FIELDS & TOKENS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PS_ParserRec_* PS_Parser; + + typedef struct T1_TokenRec_* T1_Token; + + typedef struct T1_FieldRec_* T1_Field; + + + /* simple enumeration type used to identify token types */ + typedef enum T1_TokenType_ + { + T1_TOKEN_TYPE_NONE = 0, + T1_TOKEN_TYPE_ANY, + T1_TOKEN_TYPE_STRING, + T1_TOKEN_TYPE_ARRAY, + T1_TOKEN_TYPE_KEY, /* aka `name' */ + + /* do not remove */ + T1_TOKEN_TYPE_MAX + + } T1_TokenType; + + + /* a simple structure used to identify tokens */ + typedef struct T1_TokenRec_ + { + FT_Byte* start; /* first character of token in input stream */ + FT_Byte* limit; /* first character after the token */ + T1_TokenType type; /* type of token */ + + } T1_TokenRec; + + + /* enumeration type used to identify object fields */ + typedef enum T1_FieldType_ + { + T1_FIELD_TYPE_NONE = 0, + T1_FIELD_TYPE_BOOL, + T1_FIELD_TYPE_INTEGER, + T1_FIELD_TYPE_FIXED, + T1_FIELD_TYPE_FIXED_1000, + T1_FIELD_TYPE_STRING, + T1_FIELD_TYPE_KEY, + T1_FIELD_TYPE_BBOX, + T1_FIELD_TYPE_MM_BBOX, + T1_FIELD_TYPE_INTEGER_ARRAY, + T1_FIELD_TYPE_FIXED_ARRAY, + T1_FIELD_TYPE_CALLBACK, + + /* do not remove */ + T1_FIELD_TYPE_MAX + + } T1_FieldType; + + + typedef enum T1_FieldLocation_ + { + T1_FIELD_LOCATION_CID_INFO, + T1_FIELD_LOCATION_FONT_DICT, + T1_FIELD_LOCATION_FONT_EXTRA, + T1_FIELD_LOCATION_FONT_INFO, + T1_FIELD_LOCATION_PRIVATE, + T1_FIELD_LOCATION_BBOX, + T1_FIELD_LOCATION_LOADER, + T1_FIELD_LOCATION_FACE, + T1_FIELD_LOCATION_BLEND, + + /* do not remove */ + T1_FIELD_LOCATION_MAX + + } T1_FieldLocation; + + + typedef void + (*T1_Field_ParseFunc)( FT_Face face, + FT_Pointer parser ); + + + /* structure type used to model object fields */ + typedef struct T1_FieldRec_ + { + const char* ident; /* field identifier */ + T1_FieldLocation location; + T1_FieldType type; /* type of field */ + T1_Field_ParseFunc reader; + FT_UInt offset; /* offset of field in object */ + FT_Byte size; /* size of field in bytes */ + FT_UInt array_max; /* maximum number of elements for */ + /* array */ + FT_UInt count_offset; /* offset of element count for */ + /* arrays; must not be zero if in */ + /* use -- in other words, a */ + /* `num_FOO' element must not */ + /* start the used structure if we */ + /* parse a `FOO' array */ + FT_UInt dict; /* where we expect it */ + } T1_FieldRec; + +#define T1_FIELD_DICT_FONTDICT ( 1 << 0 ) /* also FontInfo and FDArray */ +#define T1_FIELD_DICT_PRIVATE ( 1 << 1 ) + + + +#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE( _fname ), \ + 0, 0, \ + _dict \ + }, + +#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \ + { \ + _ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \ + (T1_Field_ParseFunc)_reader, \ + 0, 0, \ + 0, 0, \ + _dict \ + }, + +#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE_DELTA( _fname ), \ + _max, \ + FT_FIELD_OFFSET( num_ ## _fname ), \ + _dict \ + }, + +#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE_DELTA( _fname ), \ + _max, 0, \ + _dict \ + }, + + +#define T1_FIELD_BOOL( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname, _dict ) + +#define T1_FIELD_NUM( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname, _dict ) + +#define T1_FIELD_FIXED( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname, _dict ) + +#define T1_FIELD_FIXED_1000( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname, \ + _dict ) + +#define T1_FIELD_STRING( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname, _dict ) + +#define T1_FIELD_KEY( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname, _dict ) + +#define T1_FIELD_BBOX( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname, _dict ) + + +#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_CALLBACK( _ident, _name, _dict ) \ + T1_NEW_CALLBACK_FIELD( _ident, _name, _dict ) + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 PARSER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef const struct PS_Parser_FuncsRec_* PS_Parser_Funcs; + + typedef struct PS_Parser_FuncsRec_ + { + void + (*init)( PS_Parser parser, + FT_Byte* base, + FT_Byte* limit, + FT_Memory memory ); + + void + (*done)( PS_Parser parser ); + + void + (*skip_spaces)( PS_Parser parser ); + void + (*skip_PS_token)( PS_Parser parser ); + + FT_Long + (*to_int)( PS_Parser parser ); + FT_Fixed + (*to_fixed)( PS_Parser parser, + FT_Int power_ten ); + + FT_Error + (*to_bytes)( PS_Parser parser, + FT_Byte* bytes, + FT_Offset max_bytes, + FT_ULong* pnum_bytes, + FT_Bool delimiters ); + + FT_Int + (*to_coord_array)( PS_Parser parser, + FT_Int max_coords, + FT_Short* coords ); + FT_Int + (*to_fixed_array)( PS_Parser parser, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ); + + void + (*to_token)( PS_Parser parser, + T1_Token token ); + void + (*to_token_array)( PS_Parser parser, + T1_Token tokens, + FT_UInt max_tokens, + FT_Int* pnum_tokens ); + + FT_Error + (*load_field)( PS_Parser parser, + const T1_Field field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + FT_Error + (*load_field_table)( PS_Parser parser, + const T1_Field field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + } PS_Parser_FuncsRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_ParserRec */ + /* */ + /* <Description> */ + /* A PS_Parser is an object used to parse a Type 1 font very quickly. */ + /* */ + /* <Fields> */ + /* cursor :: The current position in the text. */ + /* */ + /* base :: Start of the processed text. */ + /* */ + /* limit :: End of the processed text. */ + /* */ + /* error :: The last error returned. */ + /* */ + /* memory :: The object used for memory operations (alloc/realloc). */ + /* */ + /* funcs :: A table of functions for the parser. */ + /* */ + typedef struct PS_ParserRec_ + { + FT_Byte* cursor; + FT_Byte* base; + FT_Byte* limit; + FT_Error error; + FT_Memory memory; + + PS_Parser_FuncsRec funcs; + + } PS_ParserRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 BUILDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct T1_BuilderRec_* T1_Builder; + + + typedef FT_Error + (*T1_Builder_Check_Points_Func)( T1_Builder builder, + FT_Int count ); + + typedef void + (*T1_Builder_Add_Point_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ); + + typedef FT_Error + (*T1_Builder_Add_Point1_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y ); + + typedef FT_Error + (*T1_Builder_Add_Contour_Func)( T1_Builder builder ); + + typedef FT_Error + (*T1_Builder_Start_Point_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y ); + + typedef void + (*T1_Builder_Close_Contour_Func)( T1_Builder builder ); + + + typedef const struct T1_Builder_FuncsRec_* T1_Builder_Funcs; + + typedef struct T1_Builder_FuncsRec_ + { + void + (*init)( T1_Builder builder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Bool hinting ); + + void + (*done)( T1_Builder builder ); + + T1_Builder_Check_Points_Func check_points; + T1_Builder_Add_Point_Func add_point; + T1_Builder_Add_Point1_Func add_point1; + T1_Builder_Add_Contour_Func add_contour; + T1_Builder_Start_Point_Func start_point; + T1_Builder_Close_Contour_Func close_contour; + + } T1_Builder_FuncsRec; + + + /* an enumeration type to handle charstring parsing states */ + typedef enum T1_ParseState_ + { + T1_Parse_Start, + T1_Parse_Have_Width, + T1_Parse_Have_Moveto, + T1_Parse_Have_Path + + } T1_ParseState; + + + /*************************************************************************/ + /* */ + /* <Structure> */ + /* T1_BuilderRec */ + /* */ + /* <Description> */ + /* A structure used during glyph loading to store its outline. */ + /* */ + /* <Fields> */ + /* memory :: The current memory object. */ + /* */ + /* face :: The current face object. */ + /* */ + /* glyph :: The current glyph slot. */ + /* */ + /* loader :: XXX */ + /* */ + /* base :: The base glyph outline. */ + /* */ + /* current :: The current glyph outline. */ + /* */ + /* max_points :: maximum points in builder outline */ + /* */ + /* max_contours :: Maximum number of contours in builder outline. */ + /* */ + /* pos_x :: The horizontal translation (if composite glyph). */ + /* */ + /* pos_y :: The vertical translation (if composite glyph). */ + /* */ + /* left_bearing :: The left side bearing point. */ + /* */ + /* advance :: The horizontal advance vector. */ + /* */ + /* bbox :: Unused. */ + /* */ + /* parse_state :: An enumeration which controls the charstring */ + /* parsing state. */ + /* */ + /* load_points :: If this flag is not set, no points are loaded. */ + /* */ + /* no_recurse :: Set but not used. */ + /* */ + /* metrics_only :: A boolean indicating that we only want to compute */ + /* the metrics of a given glyph, not load all of its */ + /* points. */ + /* */ + /* funcs :: An array of function pointers for the builder. */ + /* */ + typedef struct T1_BuilderRec_ + { + FT_Memory memory; + FT_Face face; + FT_GlyphSlot glyph; + FT_GlyphLoader loader; + FT_Outline* base; + FT_Outline* current; + + FT_Pos pos_x; + FT_Pos pos_y; + + FT_Vector left_bearing; + FT_Vector advance; + + FT_BBox bbox; /* bounding box */ + T1_ParseState parse_state; + FT_Bool load_points; + FT_Bool no_recurse; + + FT_Bool metrics_only; + + void* hints_funcs; /* hinter-specific */ + void* hints_globals; /* hinter-specific */ + + T1_Builder_FuncsRec funcs; + + } T1_BuilderRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 DECODER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#if 0 + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 8 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 32 + +#endif /* 0 */ + + + typedef struct T1_Decoder_ZoneRec_ + { + FT_Byte* cursor; + FT_Byte* base; + FT_Byte* limit; + + } T1_Decoder_ZoneRec, *T1_Decoder_Zone; + + + typedef struct T1_DecoderRec_* T1_Decoder; + typedef const struct T1_Decoder_FuncsRec_* T1_Decoder_Funcs; + + + typedef FT_Error + (*T1_Decoder_Callback)( T1_Decoder decoder, + FT_UInt glyph_index ); + + + typedef struct T1_Decoder_FuncsRec_ + { + FT_Error + (*init)( T1_Decoder decoder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Byte** glyph_names, + PS_Blend blend, + FT_Bool hinting, + FT_Render_Mode hint_mode, + T1_Decoder_Callback callback ); + + void + (*done)( T1_Decoder decoder ); + + FT_Error + (*parse_charstrings)( T1_Decoder decoder, + FT_Byte* base, + FT_UInt len ); + + } T1_Decoder_FuncsRec; + + + typedef struct T1_DecoderRec_ + { + T1_BuilderRec builder; + + FT_Long stack[T1_MAX_CHARSTRINGS_OPERANDS]; + FT_Long* top; + + T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS + 1]; + T1_Decoder_Zone zone; + + FT_Service_PsCMaps psnames; /* for seac */ + FT_UInt num_glyphs; + FT_Byte** glyph_names; + + FT_Int lenIV; /* internal for sub routine calls */ + FT_Int num_subrs; + FT_Byte** subrs; + FT_UInt* subrs_len; /* array of subrs length (optional) */ + + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_Int flex_state; + FT_Int num_flex_vectors; + FT_Vector flex_vectors[7]; + + PS_Blend blend; /* for multiple master support */ + + FT_Render_Mode hint_mode; + + T1_Decoder_Callback parse_callback; + T1_Decoder_FuncsRec funcs; + + FT_Long* buildchar; + FT_UInt len_buildchar; + + FT_Bool seac; + + } T1_DecoderRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** AFM PARSER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct AFM_ParserRec_* AFM_Parser; + + typedef struct AFM_Parser_FuncsRec_ + { + FT_Error + (*init)( AFM_Parser parser, + FT_Memory memory, + FT_Byte* base, + FT_Byte* limit ); + + void + (*done)( AFM_Parser parser ); + + FT_Error + (*parse)( AFM_Parser parser ); + + } AFM_Parser_FuncsRec; + + + typedef struct AFM_StreamRec_* AFM_Stream; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* AFM_ParserRec */ + /* */ + /* <Description> */ + /* An AFM_Parser is a parser for the AFM files. */ + /* */ + /* <Fields> */ + /* memory :: The object used for memory operations (alloc and */ + /* realloc). */ + /* */ + /* stream :: This is an opaque object. */ + /* */ + /* FontInfo :: The result will be stored here. */ + /* */ + /* get_index :: A user provided function to get a glyph index by its */ + /* name. */ + /* */ + typedef struct AFM_ParserRec_ + { + FT_Memory memory; + AFM_Stream stream; + + AFM_FontInfo FontInfo; + + FT_Int + (*get_index)( const char* name, + FT_Offset len, + void* user_data ); + + void* user_data; + + } AFM_ParserRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** TYPE1 CHARMAPS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef const struct T1_CMap_ClassesRec_* T1_CMap_Classes; + + typedef struct T1_CMap_ClassesRec_ + { + FT_CMap_Class standard; + FT_CMap_Class expert; + FT_CMap_Class custom; + FT_CMap_Class unicode; + + } T1_CMap_ClassesRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PSAux Module Interface *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSAux_ServiceRec_ + { + /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */ + const PS_Table_FuncsRec* ps_table_funcs; + const PS_Parser_FuncsRec* ps_parser_funcs; + const T1_Builder_FuncsRec* t1_builder_funcs; + const T1_Decoder_FuncsRec* t1_decoder_funcs; + + void + (*t1_decrypt)( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ); + + T1_CMap_Classes t1_cmap_classes; + + /* fields after this comment line were added after version 2.1.10 */ + const AFM_Parser_FuncsRec* afm_parser_funcs; + + } PSAux_ServiceRec, *PSAux_Service; + + /* backwards-compatible type definition */ + typedef PSAux_ServiceRec PSAux_Interface; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** Some convenience functions *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#define IS_PS_NEWLINE( ch ) \ + ( (ch) == '\r' || \ + (ch) == '\n' ) + +#define IS_PS_SPACE( ch ) \ + ( (ch) == ' ' || \ + IS_PS_NEWLINE( ch ) || \ + (ch) == '\t' || \ + (ch) == '\f' || \ + (ch) == '\0' ) + +#define IS_PS_SPECIAL( ch ) \ + ( (ch) == '/' || \ + (ch) == '(' || (ch) == ')' || \ + (ch) == '<' || (ch) == '>' || \ + (ch) == '[' || (ch) == ']' || \ + (ch) == '{' || (ch) == '}' || \ + (ch) == '%' ) + +#define IS_PS_DELIM( ch ) \ + ( IS_PS_SPACE( ch ) || \ + IS_PS_SPECIAL( ch ) ) + +#define IS_PS_DIGIT( ch ) \ + ( (ch) >= '0' && (ch) <= '9' ) + +#define IS_PS_XDIGIT( ch ) \ + ( IS_PS_DIGIT( ch ) || \ + ( (ch) >= 'A' && (ch) <= 'F' ) || \ + ( (ch) >= 'a' && (ch) <= 'f' ) ) + +#define IS_PS_BASE85( ch ) \ + ( (ch) >= '!' && (ch) <= 'u' ) + +#define IS_PS_TOKEN( cur, limit, token ) \ + ( (char)(cur)[0] == (token)[0] && \ + ( (cur) + sizeof ( (token) ) == (limit) || \ + ( (cur) + sizeof( (token) ) < (limit) && \ + IS_PS_DELIM( (cur)[sizeof ( (token) ) - 1] ) ) ) && \ + ft_strncmp( (char*)(cur), (token), sizeof ( (token) ) - 1 ) == 0 ) + + +FT_END_HEADER + +#endif /* __PSAUX_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/pshints.h b/lib/osx/include/freetype/internal/pshints.h new file mode 100644 index 0000000..12aaaba --- /dev/null +++ b/lib/osx/include/freetype/internal/pshints.h @@ -0,0 +1,722 @@ +/***************************************************************************/ +/* */ +/* pshints.h */ +/* */ +/* Interface to Postscript-specific (Type 1 and Type 2) hints */ +/* recorders (specification only). These are used to support native */ +/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */ +/* */ +/* Copyright 2001-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHINTS_H__ +#define __PSHINTS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** INTERNAL REPRESENTATION OF GLOBALS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSH_GlobalsRec_* PSH_Globals; + + typedef FT_Error + (*PSH_Globals_NewFunc)( FT_Memory memory, + T1_Private* private_dict, + PSH_Globals* aglobals ); + + typedef void + (*PSH_Globals_SetScaleFunc)( PSH_Globals globals, + FT_Fixed x_scale, + FT_Fixed y_scale, + FT_Fixed x_delta, + FT_Fixed y_delta ); + + typedef void + (*PSH_Globals_DestroyFunc)( PSH_Globals globals ); + + + typedef struct PSH_Globals_FuncsRec_ + { + PSH_Globals_NewFunc create; + PSH_Globals_SetScaleFunc set_scale; + PSH_Globals_DestroyFunc destroy; + + } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 1 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * T1_Hints + * + * @description: + * This is a handle to an opaque structure used to record glyph hints + * from a Type 1 character glyph character string. + * + * The methods used to operate on this object are defined by the + * @T1_Hints_FuncsRec structure. Recording glyph hints is normally + * achieved through the following scheme: + * + * - Open a new hint recording session by calling the `open' method. + * This rewinds the recorder and prepare it for new input. + * + * - For each hint found in the glyph charstring, call the corresponding + * method (`stem', `stem3', or `reset'). Note that these functions do + * not return an error code. + * + * - Close the recording session by calling the `close' method. It + * returns an error code if the hints were invalid or something + * strange happened (e.g., memory shortage). + * + * The hints accumulated in the object can later be used by the + * PostScript hinter. + * + */ + typedef struct T1_HintsRec_* T1_Hints; + + + /************************************************************************* + * + * @type: + * T1_Hints_Funcs + * + * @description: + * A pointer to the @T1_Hints_FuncsRec structure that defines the API of + * a given @T1_Hints object. + * + */ + typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs; + + + /************************************************************************* + * + * @functype: + * T1_Hints_OpenFunc + * + * @description: + * A method of the @T1_Hints class used to prepare it for a new Type 1 + * hints recording session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * @note: + * You should always call the @T1_Hints_CloseFunc method in order to + * close an opened recording session. + * + */ + typedef void + (*T1_Hints_OpenFunc)( T1_Hints hints ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_SetStemFunc + * + * @description: + * A method of the @T1_Hints class used to record a new horizontal or + * vertical stem. This corresponds to the Type 1 `hstem' and `vstem' + * operators. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * dimension :: + * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). + * + * coords :: + * Array of 2 coordinates in 16.16 format, used as (position,length) + * stem descriptor. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * `coords[0]' is the absolute stem position (lowest coordinate); + * `coords[1]' is the length. + * + * The length can be negative, in which case it must be either -20 or + * -21. It is interpreted as a `ghost' stem, according to the Type 1 + * specification. + * + * If the length is -21 (corresponding to a bottom ghost stem), then + * the real stem position is `coords[0]+coords[1]'. + * + */ + typedef void + (*T1_Hints_SetStemFunc)( T1_Hints hints, + FT_UInt dimension, + FT_Fixed* coords ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_SetStem3Func + * + * @description: + * A method of the @T1_Hints class used to record three + * counter-controlled horizontal or vertical stems at once. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * dimension :: + * 0 for horizontal stems, 1 for vertical ones. + * + * coords :: + * An array of 6 values in 16.16 format, holding 3 (position,length) + * pairs for the counter-controlled stems. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * The lengths cannot be negative (ghost stems are never + * counter-controlled). + * + */ + typedef void + (*T1_Hints_SetStem3Func)( T1_Hints hints, + FT_UInt dimension, + FT_Fixed* coords ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_ResetFunc + * + * @description: + * A method of the @T1_Hints class used to reset the stems hints in a + * recording session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph in which the + * previously defined hints apply. + * + */ + typedef void + (*T1_Hints_ResetFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_CloseFunc + * + * @description: + * A method of the @T1_Hints class used to close a hint recording + * session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * The error code is set to indicate that an error occurred during the + * recording session. + * + */ + typedef FT_Error + (*T1_Hints_CloseFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_ApplyFunc + * + * @description: + * A method of the @T1_Hints class used to apply hints to the + * corresponding glyph outline. Must be called once all hints have been + * recorded. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * outline :: + * A pointer to the target outline descriptor. + * + * globals :: + * The hinter globals for this font. + * + * hint_mode :: + * Hinting information. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * On input, all points within the outline are in font coordinates. On + * output, they are in 1/64th of pixels. + * + * The scaling transformation is taken from the `globals' object which + * must correspond to the same font as the glyph. + * + */ + typedef FT_Error + (*T1_Hints_ApplyFunc)( T1_Hints hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + + /************************************************************************* + * + * @struct: + * T1_Hints_FuncsRec + * + * @description: + * The structure used to provide the API to @T1_Hints objects. + * + * @fields: + * hints :: + * A handle to the T1 Hints recorder. + * + * open :: + * The function to open a recording session. + * + * close :: + * The function to close a recording session. + * + * stem :: + * The function to set a simple stem. + * + * stem3 :: + * The function to set counter-controlled stems. + * + * reset :: + * The function to reset stem hints. + * + * apply :: + * The function to apply the hints to the corresponding glyph outline. + * + */ + typedef struct T1_Hints_FuncsRec_ + { + T1_Hints hints; + T1_Hints_OpenFunc open; + T1_Hints_CloseFunc close; + T1_Hints_SetStemFunc stem; + T1_Hints_SetStem3Func stem3; + T1_Hints_ResetFunc reset; + T1_Hints_ApplyFunc apply; + + } T1_Hints_FuncsRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 2 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * T2_Hints + * + * @description: + * This is a handle to an opaque structure used to record glyph hints + * from a Type 2 character glyph character string. + * + * The methods used to operate on this object are defined by the + * @T2_Hints_FuncsRec structure. Recording glyph hints is normally + * achieved through the following scheme: + * + * - Open a new hint recording session by calling the `open' method. + * This rewinds the recorder and prepare it for new input. + * + * - For each hint found in the glyph charstring, call the corresponding + * method (`stems', `hintmask', `counters'). Note that these + * functions do not return an error code. + * + * - Close the recording session by calling the `close' method. It + * returns an error code if the hints were invalid or something + * strange happened (e.g., memory shortage). + * + * The hints accumulated in the object can later be used by the + * Postscript hinter. + * + */ + typedef struct T2_HintsRec_* T2_Hints; + + + /************************************************************************* + * + * @type: + * T2_Hints_Funcs + * + * @description: + * A pointer to the @T2_Hints_FuncsRec structure that defines the API of + * a given @T2_Hints object. + * + */ + typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs; + + + /************************************************************************* + * + * @functype: + * T2_Hints_OpenFunc + * + * @description: + * A method of the @T2_Hints class used to prepare it for a new Type 2 + * hints recording session. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * @note: + * You should always call the @T2_Hints_CloseFunc method in order to + * close an opened recording session. + * + */ + typedef void + (*T2_Hints_OpenFunc)( T2_Hints hints ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_StemsFunc + * + * @description: + * A method of the @T2_Hints class used to set the table of stems in + * either the vertical or horizontal dimension. Equivalent to the + * `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * dimension :: + * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). + * + * count :: + * The number of stems. + * + * coords :: + * An array of `count' (position,length) pairs in 16.16 format. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * There are `2*count' elements in the `coords' array. Each even + * element is an absolute position in font units, each odd element is a + * length in font units. + * + * A length can be negative, in which case it must be either -20 or + * -21. It is interpreted as a `ghost' stem, according to the Type 1 + * specification. + * + */ + typedef void + (*T2_Hints_StemsFunc)( T2_Hints hints, + FT_UInt dimension, + FT_Int count, + FT_Fixed* coordinates ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_MaskFunc + * + * @description: + * A method of the @T2_Hints class used to set a given hintmask (this + * corresponds to the `hintmask' Type 2 operator). + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * The glyph index of the last point to which the previously defined + * or activated hints apply. + * + * bit_count :: + * The number of bits in the hint mask. + * + * bytes :: + * An array of bytes modelling the hint mask. + * + * @note: + * If the hintmask starts the charstring (before any glyph point + * definition), the value of `end_point' should be 0. + * + * `bit_count' is the number of meaningful bits in the `bytes' array; it + * must be equal to the total number of hints defined so far (i.e., + * horizontal+verticals). + * + * The `bytes' array can come directly from the Type 2 charstring and + * respects the same format. + * + */ + typedef void + (*T2_Hints_MaskFunc)( T2_Hints hints, + FT_UInt end_point, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_CounterFunc + * + * @description: + * A method of the @T2_Hints class used to set a given counter mask + * (this corresponds to the `hintmask' Type 2 operator). + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * A glyph index of the last point to which the previously defined or + * active hints apply. + * + * bit_count :: + * The number of bits in the hint mask. + * + * bytes :: + * An array of bytes modelling the hint mask. + * + * @note: + * If the hintmask starts the charstring (before any glyph point + * definition), the value of `end_point' should be 0. + * + * `bit_count' is the number of meaningful bits in the `bytes' array; it + * must be equal to the total number of hints defined so far (i.e., + * horizontal+verticals). + * + * The `bytes' array can come directly from the Type 2 charstring and + * respects the same format. + * + */ + typedef void + (*T2_Hints_CounterFunc)( T2_Hints hints, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_CloseFunc + * + * @description: + * A method of the @T2_Hints class used to close a hint recording + * session. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * The error code is set to indicate that an error occurred during the + * recording session. + * + */ + typedef FT_Error + (*T2_Hints_CloseFunc)( T2_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_ApplyFunc + * + * @description: + * A method of the @T2_Hints class used to apply hints to the + * corresponding glyph outline. Must be called after the `close' + * method. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * outline :: + * A pointer to the target outline descriptor. + * + * globals :: + * The hinter globals for this font. + * + * hint_mode :: + * Hinting information. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * On input, all points within the outline are in font coordinates. On + * output, they are in 1/64th of pixels. + * + * The scaling transformation is taken from the `globals' object which + * must correspond to the same font than the glyph. + * + */ + typedef FT_Error + (*T2_Hints_ApplyFunc)( T2_Hints hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + + /************************************************************************* + * + * @struct: + * T2_Hints_FuncsRec + * + * @description: + * The structure used to provide the API to @T2_Hints objects. + * + * @fields: + * hints :: + * A handle to the T2 hints recorder object. + * + * open :: + * The function to open a recording session. + * + * close :: + * The function to close a recording session. + * + * stems :: + * The function to set the dimension's stems table. + * + * hintmask :: + * The function to set hint masks. + * + * counter :: + * The function to set counter masks. + * + * apply :: + * The function to apply the hints on the corresponding glyph outline. + * + */ + typedef struct T2_Hints_FuncsRec_ + { + T2_Hints hints; + T2_Hints_OpenFunc open; + T2_Hints_CloseFunc close; + T2_Hints_StemsFunc stems; + T2_Hints_MaskFunc hintmask; + T2_Hints_CounterFunc counter; + T2_Hints_ApplyFunc apply; + + } T2_Hints_FuncsRec; + + + /* */ + + + typedef struct PSHinter_Interface_ + { + PSH_Globals_Funcs (*get_globals_funcs)( FT_Module module ); + T1_Hints_Funcs (*get_t1_funcs) ( FT_Module module ); + T2_Hints_Funcs (*get_t2_funcs) ( FT_Module module ); + + } PSHinter_Interface; + + typedef PSHinter_Interface* PSHinter_Service; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_PSHINTER_INTERFACE( \ + class_, \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ ) \ + static const PSHinter_Interface class_ = \ + { \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_PSHINTER_INTERFACE( \ + class_, \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + PSHinter_Interface* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_globals_funcs = get_globals_funcs_; \ + clazz->get_t1_funcs = get_t1_funcs_; \ + clazz->get_t2_funcs = get_t2_funcs_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __PSHINTS_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svbdf.h b/lib/osx/include/freetype/internal/services/svbdf.h new file mode 100644 index 0000000..865b536 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svbdf.h @@ -0,0 +1,82 @@ +/***************************************************************************/ +/* */ +/* svbdf.h */ +/* */ +/* The FreeType BDF services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVBDF_H__ +#define __SVBDF_H__ + +#include FT_BDF_H +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_BDF "bdf" + + typedef FT_Error + (*FT_BDF_GetCharsetIdFunc)( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + typedef FT_Error + (*FT_BDF_GetPropertyFunc)( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + + FT_DEFINE_SERVICE( BDF ) + { + FT_BDF_GetCharsetIdFunc get_charset_id; + FT_BDF_GetPropertyFunc get_property; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_BDFRec( class_, \ + get_charset_id_, \ + get_property_ ) \ + static const FT_Service_BDFRec class_ = \ + { \ + get_charset_id_, get_property_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_BDFRec( class_, \ + get_charset_id_, \ + get_property_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_BDFRec* clazz ) \ + { \ + clazz->get_charset_id = get_charset_id_; \ + clazz->get_property = get_property_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVBDF_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svcid.h b/lib/osx/include/freetype/internal/services/svcid.h new file mode 100644 index 0000000..4a535a6 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svcid.h @@ -0,0 +1,90 @@ +/***************************************************************************/ +/* */ +/* svcid.h */ +/* */ +/* The FreeType CID font services (specification). */ +/* */ +/* Copyright 2007-2015 by */ +/* Derek Clegg and Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVCID_H__ +#define __SVCID_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_CID "CID" + + typedef FT_Error + (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement ); + typedef FT_Error + (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face face, + FT_Bool *is_cid ); + typedef FT_Error + (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + FT_DEFINE_SERVICE( CID ) + { + FT_CID_GetRegistryOrderingSupplementFunc get_ros; + FT_CID_GetIsInternallyCIDKeyedFunc get_is_cid; + FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_CIDREC( class_, \ + get_ros_, \ + get_is_cid_, \ + get_cid_from_glyph_index_ ) \ + static const FT_Service_CIDRec class_ = \ + { \ + get_ros_, get_is_cid_, get_cid_from_glyph_index_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_CIDREC( class_, \ + get_ros_, \ + get_is_cid_, \ + get_cid_from_glyph_index_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_CIDRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_ros = get_ros_; \ + clazz->get_is_cid = get_is_cid_; \ + clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVCID_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svfntfmt.h b/lib/osx/include/freetype/internal/services/svfntfmt.h new file mode 100644 index 0000000..f8b3617 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svfntfmt.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* svfntfmt.h */ +/* */ +/* The FreeType font format service (specification only). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVFNTFMT_H__ +#define __SVFNTFMT_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A trivial service used to return the name of a face's font driver, + * according to the XFree86 nomenclature. Note that the service data + * is a simple constant string pointer. + */ + +#define FT_SERVICE_ID_FONT_FORMAT "font-format" + +#define FT_FONT_FORMAT_TRUETYPE "TrueType" +#define FT_FONT_FORMAT_TYPE_1 "Type 1" +#define FT_FONT_FORMAT_BDF "BDF" +#define FT_FONT_FORMAT_PCF "PCF" +#define FT_FONT_FORMAT_TYPE_42 "Type 42" +#define FT_FONT_FORMAT_CID "CID Type 1" +#define FT_FONT_FORMAT_CFF "CFF" +#define FT_FONT_FORMAT_PFR "PFR" +#define FT_FONT_FORMAT_WINFNT "Windows FNT" + + /* */ + + +FT_END_HEADER + + +#endif /* __SVFNTFMT_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svgldict.h b/lib/osx/include/freetype/internal/services/svgldict.h new file mode 100644 index 0000000..f78bca5 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svgldict.h @@ -0,0 +1,88 @@ +/***************************************************************************/ +/* */ +/* svgldict.h */ +/* */ +/* The FreeType glyph dictionary services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVGLDICT_H__ +#define __SVGLDICT_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A service used to retrieve glyph names, as well as to find the + * index of a given glyph name in a font. + * + */ + +#define FT_SERVICE_ID_GLYPH_DICT "glyph-dict" + + + typedef FT_Error + (*FT_GlyphDict_GetNameFunc)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_GlyphDict_NameIndexFunc)( FT_Face face, + FT_String* glyph_name ); + + + FT_DEFINE_SERVICE( GlyphDict ) + { + FT_GlyphDict_GetNameFunc get_name; + FT_GlyphDict_NameIndexFunc name_index; /* optional */ + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ + get_name_, \ + name_index_) \ + static const FT_Service_GlyphDictRec class_ = \ + { \ + get_name_, name_index_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ + get_name_, \ + name_index_) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_GlyphDictRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_name = get_name_; \ + clazz->name_index = name_index_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVGLDICT_H__ */ diff --git a/lib/osx/include/freetype/internal/services/svgxval.h b/lib/osx/include/freetype/internal/services/svgxval.h new file mode 100644 index 0000000..59cc3b7 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svgxval.h @@ -0,0 +1,72 @@ +/***************************************************************************/ +/* */ +/* svgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* Masatake YAMATO, Red Hat K.K., */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVGXVAL_H__ +#define __SVGXVAL_H__ + +#include FT_GX_VALIDATE_H +#include FT_INTERNAL_VALIDATE_H + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_GX_VALIDATE "truetypegx-validate" +#define FT_SERVICE_ID_CLASSICKERN_VALIDATE "classickern-validate" + + typedef FT_Error + (*gxv_validate_func)( FT_Face face, + FT_UInt gx_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + typedef FT_Error + (*ckern_validate_func)( FT_Face face, + FT_UInt ckern_flags, + FT_Bytes *ckern_table ); + + + FT_DEFINE_SERVICE( GXvalidate ) + { + gxv_validate_func validate; + }; + + FT_DEFINE_SERVICE( CKERNvalidate ) + { + ckern_validate_func validate; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVGXVAL_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svkern.h b/lib/osx/include/freetype/internal/services/svkern.h new file mode 100644 index 0000000..bc26f15 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svkern.h @@ -0,0 +1,51 @@ +/***************************************************************************/ +/* */ +/* svkern.h */ +/* */ +/* The FreeType Kerning service (specification). */ +/* */ +/* Copyright 2006-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVKERN_H__ +#define __SVKERN_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + +#define FT_SERVICE_ID_KERNING "kerning" + + + typedef FT_Error + (*FT_Kerning_TrackGetFunc)( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + FT_DEFINE_SERVICE( Kerning ) + { + FT_Kerning_TrackGetFunc get_track; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVKERN_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svmm.h b/lib/osx/include/freetype/internal/services/svmm.h new file mode 100644 index 0000000..f2cecfb --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svmm.h @@ -0,0 +1,113 @@ +/***************************************************************************/ +/* */ +/* svmm.h */ +/* */ +/* The FreeType Multiple Masters and GX var services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVMM_H__ +#define __SVMM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A service used to manage multiple-masters data in a given face. + * + * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H). + * + */ + +#define FT_SERVICE_ID_MULTI_MASTERS "multi-masters" + + + typedef FT_Error + (*FT_Get_MM_Func)( FT_Face face, + FT_Multi_Master* master ); + + typedef FT_Error + (*FT_Get_MM_Var_Func)( FT_Face face, + FT_MM_Var* *master ); + + typedef FT_Error + (*FT_Set_MM_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + typedef FT_Error + (*FT_Set_Var_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + typedef FT_Error + (*FT_Set_MM_Blend_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + FT_DEFINE_SERVICE( MultiMasters ) + { + FT_Get_MM_Func get_mm; + FT_Set_MM_Design_Func set_mm_design; + FT_Set_MM_Blend_Func set_mm_blend; + FT_Get_MM_Var_Func get_mm_var; + FT_Set_Var_Design_Func set_var_design; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \ + get_mm_, \ + set_mm_design_, \ + set_mm_blend_, \ + get_mm_var_, \ + set_var_design_ ) \ + static const FT_Service_MultiMastersRec class_ = \ + { \ + get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \ + get_mm_, \ + set_mm_design_, \ + set_mm_blend_, \ + get_mm_var_, \ + set_var_design_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_MultiMastersRec* clazz ) \ + { \ + clazz->get_mm = get_mm_; \ + clazz->set_mm_design = set_mm_design_; \ + clazz->set_mm_blend = set_mm_blend_; \ + clazz->get_mm_var = get_mm_var_; \ + clazz->set_var_design = set_var_design_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVMM_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svotval.h b/lib/osx/include/freetype/internal/services/svotval.h new file mode 100644 index 0000000..a82a642 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svotval.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* svotval.h */ +/* */ +/* The FreeType OpenType validation service (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVOTVAL_H__ +#define __SVOTVAL_H__ + +#include FT_OPENTYPE_VALIDATE_H +#include FT_INTERNAL_VALIDATE_H + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_OPENTYPE_VALIDATE "opentype-validate" + + + typedef FT_Error + (*otv_validate_func)( FT_Face volatile face, + FT_UInt ot_flags, + FT_Bytes *base, + FT_Bytes *gdef, + FT_Bytes *gpos, + FT_Bytes *gsub, + FT_Bytes *jstf ); + + + FT_DEFINE_SERVICE( OTvalidate ) + { + otv_validate_func validate; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVOTVAL_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svpfr.h b/lib/osx/include/freetype/internal/services/svpfr.h new file mode 100644 index 0000000..d4eb169 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svpfr.h @@ -0,0 +1,66 @@ +/***************************************************************************/ +/* */ +/* svpfr.h */ +/* */ +/* Internal PFR service functions (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPFR_H__ +#define __SVPFR_H__ + +#include FT_PFR_H +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_PFR_METRICS "pfr-metrics" + + + typedef FT_Error + (*FT_PFR_GetMetricsFunc)( FT_Face face, + FT_UInt *aoutline, + FT_UInt *ametrics, + FT_Fixed *ax_scale, + FT_Fixed *ay_scale ); + + typedef FT_Error + (*FT_PFR_GetKerningFunc)( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + typedef FT_Error + (*FT_PFR_GetAdvanceFunc)( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + + FT_DEFINE_SERVICE( PfrMetrics ) + { + FT_PFR_GetMetricsFunc get_metrics; + FT_PFR_GetKerningFunc get_kerning; + FT_PFR_GetAdvanceFunc get_advance; + + }; + + /* */ + +FT_END_HEADER + +#endif /* __SVPFR_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svpostnm.h b/lib/osx/include/freetype/internal/services/svpostnm.h new file mode 100644 index 0000000..a89f79e --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svpostnm.h @@ -0,0 +1,81 @@ +/***************************************************************************/ +/* */ +/* svpostnm.h */ +/* */ +/* The FreeType PostScript name services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPOSTNM_H__ +#define __SVPOSTNM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + /* + * A trivial service used to retrieve the PostScript name of a given + * font when available. The `get_name' field should never be NULL. + * + * The corresponding function can return NULL to indicate that the + * PostScript name is not available. + * + * The name is owned by the face and will be destroyed with it. + */ + +#define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME "postscript-font-name" + + + typedef const char* + (*FT_PsName_GetFunc)( FT_Face face ); + + + FT_DEFINE_SERVICE( PsFontName ) + { + FT_PsName_GetFunc get_ps_font_name; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \ + static const FT_Service_PsFontNameRec class_ = \ + { \ + get_ps_font_name_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsFontNameRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_ps_font_name = get_ps_font_name_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPOSTNM_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svprop.h b/lib/osx/include/freetype/internal/services/svprop.h new file mode 100644 index 0000000..c9f07ce --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svprop.h @@ -0,0 +1,81 @@ +/***************************************************************************/ +/* */ +/* svprop.h */ +/* */ +/* The FreeType property service (specification). */ +/* */ +/* Copyright 2012-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPROP_H__ +#define __SVPROP_H__ + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_PROPERTIES "properties" + + + typedef FT_Error + (*FT_Properties_SetFunc)( FT_Module module, + const char* property_name, + const void* value ); + + typedef FT_Error + (*FT_Properties_GetFunc)( FT_Module module, + const char* property_name, + void* value ); + + + FT_DEFINE_SERVICE( Properties ) + { + FT_Properties_SetFunc set_property; + FT_Properties_GetFunc get_property; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ + set_property_, \ + get_property_ ) \ + static const FT_Service_PropertiesRec class_ = \ + { \ + set_property_, \ + get_property_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ + set_property_, \ + get_property_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_PropertiesRec* clazz ) \ + { \ + clazz->set_property = set_property_; \ + clazz->get_property = get_property_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPROP_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svpscmap.h b/lib/osx/include/freetype/internal/services/svpscmap.h new file mode 100644 index 0000000..66da6e1 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svpscmap.h @@ -0,0 +1,177 @@ +/***************************************************************************/ +/* */ +/* svpscmap.h */ +/* */ +/* The FreeType PostScript charmap service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPSCMAP_H__ +#define __SVPSCMAP_H__ + +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" + + + /* + * Adobe glyph name to unicode value. + */ + typedef FT_UInt32 + (*PS_Unicode_ValueFunc)( const char* glyph_name ); + + /* + * Macintosh name id to glyph name. NULL if invalid index. + */ + typedef const char* + (*PS_Macintosh_NameFunc)( FT_UInt name_index ); + + /* + * Adobe standard string ID to glyph name. NULL if invalid index. + */ + typedef const char* + (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index ); + + + /* + * Simple unicode -> glyph index charmap built from font glyph names + * table. + */ + typedef struct PS_UniMap_ + { + FT_UInt32 unicode; /* bit 31 set: is glyph variant */ + FT_UInt glyph_index; + + } PS_UniMap; + + + typedef struct PS_UnicodesRec_* PS_Unicodes; + + typedef struct PS_UnicodesRec_ + { + FT_CMapRec cmap; + FT_UInt num_maps; + PS_UniMap* maps; + + } PS_UnicodesRec; + + + /* + * A function which returns a glyph name for a given index. Returns + * NULL if invalid index. + */ + typedef const char* + (*PS_GetGlyphNameFunc)( FT_Pointer data, + FT_UInt string_index ); + + /* + * A function used to release the glyph name returned by + * PS_GetGlyphNameFunc, when needed + */ + typedef void + (*PS_FreeGlyphNameFunc)( FT_Pointer data, + const char* name ); + + typedef FT_Error + (*PS_Unicodes_InitFunc)( FT_Memory memory, + PS_Unicodes unicodes, + FT_UInt num_glyphs, + PS_GetGlyphNameFunc get_glyph_name, + PS_FreeGlyphNameFunc free_glyph_name, + FT_Pointer glyph_data ); + + typedef FT_UInt + (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes, + FT_UInt32 unicode ); + + typedef FT_UInt32 + (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes, + FT_UInt32 *unicode ); + + + FT_DEFINE_SERVICE( PsCMaps ) + { + PS_Unicode_ValueFunc unicode_value; + + PS_Unicodes_InitFunc unicodes_init; + PS_Unicodes_CharIndexFunc unicodes_char_index; + PS_Unicodes_CharNextFunc unicodes_char_next; + + PS_Macintosh_NameFunc macintosh_name; + PS_Adobe_Std_StringsFunc adobe_std_strings; + const unsigned short* adobe_std_encoding; + const unsigned short* adobe_expert_encoding; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ + unicode_value_, \ + unicodes_init_, \ + unicodes_char_index_, \ + unicodes_char_next_, \ + macintosh_name_, \ + adobe_std_strings_, \ + adobe_std_encoding_, \ + adobe_expert_encoding_ ) \ + static const FT_Service_PsCMapsRec class_ = \ + { \ + unicode_value_, unicodes_init_, \ + unicodes_char_index_, unicodes_char_next_, macintosh_name_, \ + adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ + unicode_value_, \ + unicodes_init_, \ + unicodes_char_index_, \ + unicodes_char_next_, \ + macintosh_name_, \ + adobe_std_strings_, \ + adobe_std_encoding_, \ + adobe_expert_encoding_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsCMapsRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->unicode_value = unicode_value_; \ + clazz->unicodes_init = unicodes_init_; \ + clazz->unicodes_char_index = unicodes_char_index_; \ + clazz->unicodes_char_next = unicodes_char_next_; \ + clazz->macintosh_name = macintosh_name_; \ + clazz->adobe_std_strings = adobe_std_strings_; \ + clazz->adobe_std_encoding = adobe_std_encoding_; \ + clazz->adobe_expert_encoding = adobe_expert_encoding_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPSCMAP_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svpsinfo.h b/lib/osx/include/freetype/internal/services/svpsinfo.h new file mode 100644 index 0000000..752a266 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svpsinfo.h @@ -0,0 +1,111 @@ +/***************************************************************************/ +/* */ +/* svpsinfo.h */ +/* */ +/* The FreeType PostScript info service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPSINFO_H__ +#define __SVPSINFO_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_TYPE1_TYPES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_POSTSCRIPT_INFO "postscript-info" + + + typedef FT_Error + (*PS_GetFontInfoFunc)( FT_Face face, + PS_FontInfoRec* afont_info ); + + typedef FT_Error + (*PS_GetFontExtraFunc)( FT_Face face, + PS_FontExtraRec* afont_extra ); + + typedef FT_Int + (*PS_HasGlyphNamesFunc)( FT_Face face ); + + typedef FT_Error + (*PS_GetFontPrivateFunc)( FT_Face face, + PS_PrivateRec* afont_private ); + + typedef FT_Long + (*PS_GetFontValueFunc)( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + + FT_DEFINE_SERVICE( PsInfo ) + { + PS_GetFontInfoFunc ps_get_font_info; + PS_GetFontExtraFunc ps_get_font_extra; + PS_HasGlyphNamesFunc ps_has_glyph_names; + PS_GetFontPrivateFunc ps_get_font_private; + PS_GetFontValueFunc ps_get_font_value; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSINFOREC( class_, \ + get_font_info_, \ + ps_get_font_extra_, \ + has_glyph_names_, \ + get_font_private_, \ + get_font_value_ ) \ + static const FT_Service_PsInfoRec class_ = \ + { \ + get_font_info_, ps_get_font_extra_, has_glyph_names_, \ + get_font_private_, get_font_value_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSINFOREC( class_, \ + get_font_info_, \ + ps_get_font_extra_, \ + has_glyph_names_, \ + get_font_private_, \ + get_font_value_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsInfoRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->ps_get_font_info = get_font_info_; \ + clazz->ps_get_font_extra = ps_get_font_extra_; \ + clazz->ps_has_glyph_names = has_glyph_names_; \ + clazz->ps_get_font_private = get_font_private_; \ + clazz->ps_get_font_value = get_font_value_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPSINFO_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svsfnt.h b/lib/osx/include/freetype/internal/services/svsfnt.h new file mode 100644 index 0000000..252ae1c --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svsfnt.h @@ -0,0 +1,103 @@ +/***************************************************************************/ +/* */ +/* svsfnt.h */ +/* */ +/* The FreeType SFNT table loading service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVSFNT_H__ +#define __SVSFNT_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + + /* + * SFNT table loading service. + */ + +#define FT_SERVICE_ID_SFNT_TABLE "sfnt-table" + + + /* + * Used to implement FT_Load_Sfnt_Table(). + */ + typedef FT_Error + (*FT_SFNT_TableLoadFunc)( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + /* + * Used to implement FT_Get_Sfnt_Table(). + */ + typedef void* + (*FT_SFNT_TableGetFunc)( FT_Face face, + FT_Sfnt_Tag tag ); + + + /* + * Used to implement FT_Sfnt_Table_Info(). + */ + typedef FT_Error + (*FT_SFNT_TableInfoFunc)( FT_Face face, + FT_UInt idx, + FT_ULong *tag, + FT_ULong *offset, + FT_ULong *length ); + + + FT_DEFINE_SERVICE( SFNT_Table ) + { + FT_SFNT_TableLoadFunc load_table; + FT_SFNT_TableGetFunc get_table; + FT_SFNT_TableInfoFunc table_info; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \ + static const FT_Service_SFNT_TableRec class_ = \ + { \ + load_, get_, info_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_SFNT_TableRec* clazz ) \ + { \ + clazz->load_table = load_; \ + clazz->get_table = get_; \ + clazz->table_info = info_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVSFNT_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svttcmap.h b/lib/osx/include/freetype/internal/services/svttcmap.h new file mode 100644 index 0000000..cd95b9a --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svttcmap.h @@ -0,0 +1,106 @@ +/***************************************************************************/ +/* */ +/* svttcmap.h */ +/* */ +/* The FreeType TrueType/sfnt cmap extra information service. */ +/* */ +/* Copyright 2003-2015 by */ +/* Masatake YAMATO, Redhat K.K., */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* Development of this service is support of + Information-technology Promotion Agency, Japan. */ + +#ifndef __SVTTCMAP_H__ +#define __SVTTCMAP_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_TT_CMAP "tt-cmaps" + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_CMapInfo */ + /* */ + /* <Description> */ + /* A structure used to store TrueType/sfnt specific cmap information */ + /* which is not covered by the generic @FT_CharMap structure. This */ + /* structure can be accessed with the @FT_Get_TT_CMap_Info function. */ + /* */ + /* <Fields> */ + /* language :: */ + /* The language ID used in Mac fonts. Definitions of values are in */ + /* `ttnameid.h'. */ + /* */ + /* format :: */ + /* The cmap format. OpenType 1.6 defines the formats 0 (byte */ + /* encoding table), 2~(high-byte mapping through table), 4~(segment */ + /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */ + /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */ + /* coverage), 13~(last resort font), and 14 (Unicode Variation */ + /* Sequences). */ + /* */ + typedef struct TT_CMapInfo_ + { + FT_ULong language; + FT_Long format; + + } TT_CMapInfo; + + + typedef FT_Error + (*TT_CMap_Info_GetFunc)( FT_CharMap charmap, + TT_CMapInfo *cmap_info ); + + + FT_DEFINE_SERVICE( TTCMaps ) + { + TT_CMap_Info_GetFunc get_cmap_info; + }; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ + static const FT_Service_TTCMapsRec class_ = \ + { \ + get_cmap_info_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_TTCMapsRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_cmap_info = get_cmap_info_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVTTCMAP_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svtteng.h b/lib/osx/include/freetype/internal/services/svtteng.h new file mode 100644 index 0000000..272ee8c --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svtteng.h @@ -0,0 +1,53 @@ +/***************************************************************************/ +/* */ +/* svtteng.h */ +/* */ +/* The FreeType TrueType engine query service (specification). */ +/* */ +/* Copyright 2006-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVTTENG_H__ +#define __SVTTENG_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + /* + * SFNT table loading service. + */ + +#define FT_SERVICE_ID_TRUETYPE_ENGINE "truetype-engine" + + /* + * Used to implement FT_Get_TrueType_Engine_Type + */ + + FT_DEFINE_SERVICE( TrueTypeEngine ) + { + FT_TrueTypeEngineType engine_type; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVTTENG_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svttglyf.h b/lib/osx/include/freetype/internal/services/svttglyf.h new file mode 100644 index 0000000..f5cb76a --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svttglyf.h @@ -0,0 +1,69 @@ +/***************************************************************************/ +/* */ +/* svttglyf.h */ +/* */ +/* The FreeType TrueType glyph service. */ +/* */ +/* Copyright 2007-2015 by */ +/* David Turner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __SVTTGLYF_H__ +#define __SVTTGLYF_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_TT_GLYF "tt-glyf" + + + typedef FT_ULong + (*TT_Glyf_GetLocationFunc)( FT_Face face, + FT_UInt gindex, + FT_ULong *psize ); + + FT_DEFINE_SERVICE( TTGlyf ) + { + TT_Glyf_GetLocationFunc get_location; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ ) \ + static const FT_Service_TTGlyfRec class_ = \ + { \ + get_location_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_TTGlyfRec* clazz ) \ + { \ + clazz->get_location = get_location_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVTTGLYF_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/services/svwinfnt.h b/lib/osx/include/freetype/internal/services/svwinfnt.h new file mode 100644 index 0000000..0036929 --- /dev/null +++ b/lib/osx/include/freetype/internal/services/svwinfnt.h @@ -0,0 +1,50 @@ +/***************************************************************************/ +/* */ +/* svwinfnt.h */ +/* */ +/* The FreeType Windows FNT/FONT service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVWINFNT_H__ +#define __SVWINFNT_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_WINFONTS_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_WINFNT "winfonts" + + typedef FT_Error + (*FT_WinFnt_GetHeaderFunc)( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + + FT_DEFINE_SERVICE( WinFnt ) + { + FT_WinFnt_GetHeaderFunc get_header; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVWINFNT_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/sfnt.h b/lib/osx/include/freetype/internal/sfnt.h new file mode 100644 index 0000000..30f53bf --- /dev/null +++ b/lib/osx/include/freetype/internal/sfnt.h @@ -0,0 +1,748 @@ +/***************************************************************************/ +/* */ +/* sfnt.h */ +/* */ +/* High-level `sfnt' driver interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SFNT_H__ +#define __SFNT_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_DRIVER_H +#include FT_INTERNAL_TRUETYPE_TYPES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Init_Face_Func */ + /* */ + /* <Description> */ + /* First part of the SFNT face object initialization. This finds */ + /* the face in a SFNT file or collection, and load its format tag in */ + /* face->format_tag. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* face :: A handle to the target face object. */ + /* */ + /* face_index :: The index of the TrueType font, if we are opening a */ + /* collection, in bits 0-15. The numbered instance */ + /* index~+~1 of a GX (sub)font, if applicable, in bits */ + /* 16-30. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* params :: Optional additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be at the font file's origin. */ + /* */ + /* This function recognizes fonts embedded in a `TrueType */ + /* collection'. */ + /* */ + /* Once the format tag has been validated by the font driver, it */ + /* should then call the TT_Load_Face_Func() callback to read the rest */ + /* of the SFNT tables in the object. */ + /* */ + typedef FT_Error + (*TT_Init_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Face_Func */ + /* */ + /* <Description> */ + /* Second part of the SFNT face object initialization. This loads */ + /* the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the */ + /* face object. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* face :: A handle to the target face object. */ + /* */ + /* face_index :: The index of the TrueType font, if we are opening a */ + /* collection, in bits 0-15. The numbered instance */ + /* index~+~1 of a GX (sub)font, if applicable, in bits */ + /* 16-30. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* params :: Optional additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function must be called after TT_Init_Face_Func(). */ + /* */ + typedef FT_Error + (*TT_Load_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Done_Face_Func */ + /* */ + /* <Description> */ + /* A callback used to delete the common SFNT data from a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Note> */ + /* This function does NOT destroy the face object. */ + /* */ + typedef void + (*TT_Done_Face_Func)( TT_Face face ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Any_Func */ + /* */ + /* <Description> */ + /* Load any font table into client memory. */ + /* */ + /* <Input> */ + /* face :: The face object to look for. */ + /* */ + /* tag :: The tag of table to load. Use the value 0 if you want */ + /* to access the whole font file, else set this parameter */ + /* to a valid TrueType table tag that you can forge with */ + /* the MAKE_TT_TAG macro. */ + /* */ + /* offset :: The starting offset in the table (or the file if */ + /* tag == 0). */ + /* */ + /* length :: The address of the decision variable: */ + /* */ + /* If length == NULL: */ + /* Loads the whole table. Returns an error if */ + /* `offset' == 0! */ + /* */ + /* If *length == 0: */ + /* Exits immediately; returning the length of the given */ + /* table or of the font file, depending on the value of */ + /* `tag'. */ + /* */ + /* If *length != 0: */ + /* Loads the next `length' bytes of table or font, */ + /* starting at offset `offset' (in table or font too). */ + /* */ + /* <Output> */ + /* buffer :: The address of target buffer. */ + /* */ + /* <Return> */ + /* TrueType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Load_Any_Func)( TT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte *buffer, + FT_ULong* length ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Find_SBit_Image_Func */ + /* */ + /* <Description> */ + /* Check whether an embedded bitmap (an `sbit') exists for a given */ + /* glyph, at a given strike. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* strike_index :: The current strike index. */ + /* */ + /* <Output> */ + /* arange :: The SBit range containing the glyph index. */ + /* */ + /* astrike :: The SBit strike containing the glyph index. */ + /* */ + /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns */ + /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ + /* glyph. */ + /* */ + typedef FT_Error + (*TT_Find_SBit_Image_Func)( TT_Face face, + FT_UInt glyph_index, + FT_ULong strike_index, + TT_SBit_Range *arange, + TT_SBit_Strike *astrike, + FT_ULong *aglyph_offset ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_SBit_Metrics_Func */ + /* */ + /* <Description> */ + /* Get the big metrics for a given embedded bitmap. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* range :: The SBit range containing the glyph. */ + /* */ + /* <Output> */ + /* big_metrics :: A big SBit metrics structure for the glyph. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be positioned at the glyph's offset within */ + /* the `EBDT' table before the call. */ + /* */ + /* If the image format uses variable metrics, the stream cursor is */ + /* positioned just after the metrics header in the `EBDT' table on */ + /* function exit. */ + /* */ + typedef FT_Error + (*TT_Load_SBit_Metrics_Func)( FT_Stream stream, + TT_SBit_Range range, + TT_SBit_Metrics metrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_SBit_Image_Func */ + /* */ + /* <Description> */ + /* Load a given glyph sbit image from the font resource. This also */ + /* returns its metrics. */ + /* */ + /* <Input> */ + /* face :: */ + /* The target face object. */ + /* */ + /* strike_index :: */ + /* The strike index. */ + /* */ + /* glyph_index :: */ + /* The current glyph index. */ + /* */ + /* load_flags :: */ + /* The current load flags. */ + /* */ + /* stream :: */ + /* The input stream. */ + /* */ + /* <Output> */ + /* amap :: */ + /* The target pixmap. */ + /* */ + /* ametrics :: */ + /* A big sbit metrics structure for the glyph image. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* glyph sbit exists for the index. */ + /* */ + /* <Note> */ + /* The `map.buffer' field is always freed before the glyph is loaded. */ + /* */ + typedef FT_Error + (*TT_Load_SBit_Image_Func)( TT_Face face, + FT_ULong strike_index, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_Stream stream, + FT_Bitmap *amap, + TT_SBit_MetricsRec *ametrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Set_SBit_Strike_Func */ + /* */ + /* <Description> */ + /* Select an sbit strike for a given size request. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* req :: The size request. */ + /* */ + /* <Output> */ + /* astrike_index :: The index of the sbit strike. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* sbit strike exists for the selected ppem values. */ + /* */ + typedef FT_Error + (*TT_Set_SBit_Strike_Func)( TT_Face face, + FT_Size_Request req, + FT_ULong* astrike_index ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Strike_Metrics_Func */ + /* */ + /* <Description> */ + /* Load the metrics of a given strike. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* strike_index :: The strike index. */ + /* */ + /* <Output> */ + /* metrics :: the metrics of the strike. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* such sbit strike exists. */ + /* */ + typedef FT_Error + (*TT_Load_Strike_Metrics_Func)( TT_Face face, + FT_ULong strike_index, + FT_Size_Metrics* metrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_PS_Name_Func */ + /* */ + /* <Description> */ + /* Get the PostScript glyph name of a glyph. */ + /* */ + /* <Input> */ + /* idx :: The glyph index. */ + /* */ + /* PSname :: The address of a string pointer. Will be NULL in case */ + /* of error, otherwise it is a pointer to the glyph name. */ + /* */ + /* You must not modify the returned string! */ + /* */ + /* <Output> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Get_PS_Name_Func)( TT_Face face, + FT_UInt idx, + FT_String** PSname ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Metrics_Func */ + /* */ + /* <Description> */ + /* Load a metrics table, which is a table with a horizontal and a */ + /* vertical version. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* vertical :: A boolean flag. If set, load the vertical one. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Load_Metrics_Func)( TT_Face face, + FT_Stream stream, + FT_Bool vertical ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_Metrics_Func */ + /* */ + /* <Description> */ + /* Load the horizontal or vertical header in a face object. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* vertical :: A boolean flag. If set, load vertical metrics. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* abearing :: The horizontal (or vertical) bearing. Set to zero in */ + /* case of error. */ + /* */ + /* aadvance :: The horizontal (or vertical) advance. Set to zero in */ + /* case of error. */ + /* */ + typedef void + (*TT_Get_Metrics_Func)( TT_Face face, + FT_Bool vertical, + FT_UInt gindex, + FT_Short* abearing, + FT_UShort* aadvance ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_Name_Func */ + /* */ + /* <Description> */ + /* From the `name' table, return a given ENGLISH name record in */ + /* ASCII. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* nameid :: The name id of the name record to return. */ + /* */ + /* <InOut> */ + /* name :: The address of an allocated string pointer. NULL if */ + /* no name is present. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Get_Name_Func)( TT_Face face, + FT_UShort nameid, + FT_String** name ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Table_Func */ + /* */ + /* <Description> */ + /* Load a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The function uses `face->goto_table' to seek the stream to the */ + /* start of the table, except while loading the font directory. */ + /* */ + typedef FT_Error + (*TT_Load_Table_Func)( TT_Face face, + FT_Stream stream ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Free_Table_Func */ + /* */ + /* <Description> */ + /* Free a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + typedef void + (*TT_Free_Table_Func)( TT_Face face ); + + + /* + * @functype: + * TT_Face_GetKerningFunc + * + * @description: + * Return the horizontal kerning value between two glyphs. + * + * @input: + * face :: A handle to the source face object. + * left_glyph :: The left glyph index. + * right_glyph :: The right glyph index. + * + * @return: + * The kerning value in font units. + */ + typedef FT_Int + (*TT_Face_GetKerningFunc)( TT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* SFNT_Interface */ + /* */ + /* <Description> */ + /* This structure holds pointers to the functions used to load and */ + /* free the basic tables that are required in a `sfnt' font file. */ + /* */ + /* <Fields> */ + /* Check the various xxx_Func() descriptions for details. */ + /* */ + typedef struct SFNT_Interface_ + { + TT_Loader_GotoTableFunc goto_table; + + TT_Init_Face_Func init_face; + TT_Load_Face_Func load_face; + TT_Done_Face_Func done_face; + FT_Module_Requester get_interface; + + TT_Load_Any_Func load_any; + + /* these functions are called by `load_face' but they can also */ + /* be called from external modules, if there is a need to do so */ + TT_Load_Table_Func load_head; + TT_Load_Metrics_Func load_hhea; + TT_Load_Table_Func load_cmap; + TT_Load_Table_Func load_maxp; + TT_Load_Table_Func load_os2; + TT_Load_Table_Func load_post; + + TT_Load_Table_Func load_name; + TT_Free_Table_Func free_name; + + /* this field was called `load_kerning' up to version 2.1.10 */ + TT_Load_Table_Func load_kern; + + TT_Load_Table_Func load_gasp; + TT_Load_Table_Func load_pclt; + + /* see `ttload.h'; this field was called `load_bitmap_header' up to */ + /* version 2.1.10 */ + TT_Load_Table_Func load_bhed; + + TT_Load_SBit_Image_Func load_sbit_image; + + /* see `ttpost.h' */ + TT_Get_PS_Name_Func get_psname; + TT_Free_Table_Func free_psnames; + + /* starting here, the structure differs from version 2.1.7 */ + + /* this field was introduced in version 2.1.8, named `get_psname' */ + TT_Face_GetKerningFunc get_kerning; + + /* new elements introduced after version 2.1.10 */ + + /* load the font directory, i.e., the offset table and */ + /* the table directory */ + TT_Load_Table_Func load_font_dir; + TT_Load_Metrics_Func load_hmtx; + + TT_Load_Table_Func load_eblc; + TT_Free_Table_Func free_eblc; + + TT_Set_SBit_Strike_Func set_sbit_strike; + TT_Load_Strike_Metrics_Func load_strike_metrics; + + TT_Get_Metrics_Func get_metrics; + + TT_Get_Name_Func get_name; + + } SFNT_Interface; + + + /* transitional */ + typedef SFNT_Interface* SFNT_Service; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SFNT_INTERFACE( \ + class_, \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_, \ + get_name_ ) \ + static const SFNT_Interface class_ = \ + { \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_, \ + get_name_, \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_INTERNAL( a, a_ ) \ + clazz->a = a_; + +#define FT_DEFINE_SFNT_INTERFACE( \ + class_, \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_, \ + get_name_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + SFNT_Interface* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->goto_table = goto_table_; \ + clazz->init_face = init_face_; \ + clazz->load_face = load_face_; \ + clazz->done_face = done_face_; \ + clazz->get_interface = get_interface_; \ + clazz->load_any = load_any_; \ + clazz->load_head = load_head_; \ + clazz->load_hhea = load_hhea_; \ + clazz->load_cmap = load_cmap_; \ + clazz->load_maxp = load_maxp_; \ + clazz->load_os2 = load_os2_; \ + clazz->load_post = load_post_; \ + clazz->load_name = load_name_; \ + clazz->free_name = free_name_; \ + clazz->load_kern = load_kern_; \ + clazz->load_gasp = load_gasp_; \ + clazz->load_pclt = load_pclt_; \ + clazz->load_bhed = load_bhed_; \ + clazz->load_sbit_image = load_sbit_image_; \ + clazz->get_psname = get_psname_; \ + clazz->free_psnames = free_psnames_; \ + clazz->get_kerning = get_kerning_; \ + clazz->load_font_dir = load_font_dir_; \ + clazz->load_hmtx = load_hmtx_; \ + clazz->load_eblc = load_eblc_; \ + clazz->free_eblc = free_eblc_; \ + clazz->set_sbit_strike = set_sbit_strike_; \ + clazz->load_strike_metrics = load_strike_metrics_; \ + clazz->get_metrics = get_metrics_; \ + clazz->get_name = get_name_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __SFNT_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/t1types.h b/lib/osx/include/freetype/internal/t1types.h new file mode 100644 index 0000000..029acc4 --- /dev/null +++ b/lib/osx/include/freetype/internal/t1types.h @@ -0,0 +1,255 @@ +/***************************************************************************/ +/* */ +/* t1types.h */ +/* */ +/* Basic Type1/Type2 type definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TYPES_H__ +#define __T1TYPES_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include FT_INTERNAL_SERVICE_H +#include FT_SERVICE_POSTSCRIPT_CMAPS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_EncodingRec */ + /* */ + /* <Description> */ + /* A structure modeling a custom encoding. */ + /* */ + /* <Fields> */ + /* num_chars :: The number of character codes in the encoding. */ + /* Usually 256. */ + /* */ + /* code_first :: The lowest valid character code in the encoding. */ + /* */ + /* code_last :: The highest valid character code in the encoding */ + /* + 1. When equal to code_first there are no valid */ + /* character codes. */ + /* */ + /* char_index :: An array of corresponding glyph indices. */ + /* */ + /* char_name :: An array of corresponding glyph names. */ + /* */ + typedef struct T1_EncodingRecRec_ + { + FT_Int num_chars; + FT_Int code_first; + FT_Int code_last; + + FT_UShort* char_index; + FT_String** char_name; + + } T1_EncodingRec, *T1_Encoding; + + + /* used to hold extra data of PS_FontInfoRec that + * cannot be stored in the publicly defined structure. + * + * Note these can't be blended with multiple-masters. + */ + typedef struct PS_FontExtraRec_ + { + FT_UShort fs_type; + + } PS_FontExtraRec; + + + typedef struct T1_FontRec_ + { + PS_FontInfoRec font_info; /* font info dictionary */ + PS_FontExtraRec font_extra; /* font info extra fields */ + PS_PrivateRec private_dict; /* private dictionary */ + FT_String* font_name; /* top-level dictionary */ + + T1_EncodingType encoding_type; + T1_EncodingRec encoding; + + FT_Byte* subrs_block; + FT_Byte* charstrings_block; + FT_Byte* glyph_names_block; + + FT_Int num_subrs; + FT_Byte** subrs; + FT_UInt* subrs_len; + + FT_Int num_glyphs; + FT_String** glyph_names; /* array of glyph names */ + FT_Byte** charstrings; /* array of glyph charstrings */ + FT_UInt* charstrings_len; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + FT_BBox font_bbox; + FT_Long font_id; + + FT_Fixed stroke_width; + + } T1_FontRec, *T1_Font; + + + typedef struct CID_SubrsRec_ + { + FT_Int num_subrs; + FT_Byte** code; + + } CID_SubrsRec, *CID_Subrs; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** AFM FONT INFORMATION STRUCTURES ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct AFM_TrackKernRec_ + { + FT_Int degree; + FT_Fixed min_ptsize; + FT_Fixed min_kern; + FT_Fixed max_ptsize; + FT_Fixed max_kern; + + } AFM_TrackKernRec, *AFM_TrackKern; + + typedef struct AFM_KernPairRec_ + { + FT_UInt index1; + FT_UInt index2; + FT_Int x; + FT_Int y; + + } AFM_KernPairRec, *AFM_KernPair; + + typedef struct AFM_FontInfoRec_ + { + FT_Bool IsCIDFont; + FT_BBox FontBBox; + FT_Fixed Ascender; + FT_Fixed Descender; + AFM_TrackKern TrackKerns; /* free if non-NULL */ + FT_UInt NumTrackKern; + AFM_KernPair KernPairs; /* free if non-NULL */ + FT_UInt NumKernPair; + + } AFM_FontInfoRec, *AFM_FontInfo; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** ORIGINAL T1_FACE CLASS DEFINITION ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct T1_FaceRec_* T1_Face; + typedef struct CID_FaceRec_* CID_Face; + + + typedef struct T1_FaceRec_ + { + FT_FaceRec root; + T1_FontRec type1; + const void* psnames; + const void* psaux; + const void* afm_data; + FT_CharMapRec charmaprecs[2]; + FT_CharMap charmaps[2]; + + /* support for Multiple Masters fonts */ + PS_Blend blend; + + /* undocumented, optional: indices of subroutines that express */ + /* the NormalizeDesignVector and the ConvertDesignVector procedure, */ + /* respectively, as Type 2 charstrings; -1 if keywords not present */ + FT_Int ndv_idx; + FT_Int cdv_idx; + + /* undocumented, optional: has the same meaning as len_buildchar */ + /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */ + FT_UInt len_buildchar; + FT_Long* buildchar; + + /* since version 2.1 - interface to PostScript hinter */ + const void* pshinter; + + } T1_FaceRec; + + + typedef struct CID_FaceRec_ + { + FT_FaceRec root; + void* psnames; + void* psaux; + CID_FaceInfoRec cid; + PS_FontExtraRec font_extra; +#if 0 + void* afm_data; +#endif + CID_Subrs subrs; + + /* since version 2.1 - interface to PostScript hinter */ + void* pshinter; + + /* since version 2.1.8, but was originally positioned after `afm_data' */ + FT_Byte* binary_data; /* used if hex data has been converted */ + FT_Stream cid_stream; + + } CID_FaceRec; + + +FT_END_HEADER + +#endif /* __T1TYPES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/internal/tttypes.h b/lib/osx/include/freetype/internal/tttypes.h new file mode 100644 index 0000000..000c5a8 --- /dev/null +++ b/lib/osx/include/freetype/internal/tttypes.h @@ -0,0 +1,1529 @@ +/***************************************************************************/ +/* */ +/* tttypes.h */ +/* */ +/* Basic SFNT/TrueType type definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTYPES_H__ +#define __TTTYPES_H__ + + +#include <ft2build.h> +#include FT_TRUETYPE_TABLES_H +#include FT_INTERNAL_OBJECTS_H + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT +#include FT_MULTIPLE_MASTERS_H +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TTC_HeaderRec */ + /* */ + /* <Description> */ + /* TrueType collection header. This table contains the offsets of */ + /* the font headers of each distinct TrueType face in the file. */ + /* */ + /* <Fields> */ + /* tag :: Must be `ttc ' to indicate a TrueType collection. */ + /* */ + /* version :: The version number. */ + /* */ + /* count :: The number of faces in the collection. The */ + /* specification says this should be an unsigned long, but */ + /* we use a signed long since we need the value -1 for */ + /* specific purposes. */ + /* */ + /* offsets :: The offsets of the font headers, one per face. */ + /* */ + typedef struct TTC_HeaderRec_ + { + FT_ULong tag; + FT_Fixed version; + FT_Long count; + FT_ULong* offsets; + + } TTC_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* SFNT_HeaderRec */ + /* */ + /* <Description> */ + /* SFNT file format header. */ + /* */ + /* <Fields> */ + /* format_tag :: The font format tag. */ + /* */ + /* num_tables :: The number of tables in file. */ + /* */ + /* search_range :: Must be `16 * (max power of 2 <= num_tables)'. */ + /* */ + /* entry_selector :: Must be log2 of `search_range / 16'. */ + /* */ + /* range_shift :: Must be `num_tables * 16 - search_range'. */ + /* */ + typedef struct SFNT_HeaderRec_ + { + FT_ULong format_tag; + FT_UShort num_tables; + FT_UShort search_range; + FT_UShort entry_selector; + FT_UShort range_shift; + + FT_ULong offset; /* not in file */ + + } SFNT_HeaderRec, *SFNT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_TableRec */ + /* */ + /* <Description> */ + /* This structure describes a given table of a TrueType font. */ + /* */ + /* <Fields> */ + /* Tag :: A four-bytes tag describing the table. */ + /* */ + /* CheckSum :: The table checksum. This value can be ignored. */ + /* */ + /* Offset :: The offset of the table from the start of the TrueType */ + /* font in its resource. */ + /* */ + /* Length :: The table length (in bytes). */ + /* */ + typedef struct TT_TableRec_ + { + FT_ULong Tag; /* table type */ + FT_ULong CheckSum; /* table checksum */ + FT_ULong Offset; /* table file offset */ + FT_ULong Length; /* table length */ + + } TT_TableRec, *TT_Table; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* WOFF_HeaderRec */ + /* */ + /* <Description> */ + /* WOFF file format header. */ + /* */ + /* <Fields> */ + /* See */ + /* */ + /* http://www.w3.org/TR/WOFF/#WOFFHeader */ + /* */ + typedef struct WOFF_HeaderRec_ + { + FT_ULong signature; + FT_ULong flavor; + FT_ULong length; + FT_UShort num_tables; + FT_UShort reserved; + FT_ULong totalSfntSize; + FT_UShort majorVersion; + FT_UShort minorVersion; + FT_ULong metaOffset; + FT_ULong metaLength; + FT_ULong metaOrigLength; + FT_ULong privOffset; + FT_ULong privLength; + + } WOFF_HeaderRec, *WOFF_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* WOFF_TableRec */ + /* */ + /* <Description> */ + /* This structure describes a given table of a WOFF font. */ + /* */ + /* <Fields> */ + /* Tag :: A four-bytes tag describing the table. */ + /* */ + /* Offset :: The offset of the table from the start of the WOFF */ + /* font in its resource. */ + /* */ + /* CompLength :: Compressed table length (in bytes). */ + /* */ + /* OrigLength :: Unompressed table length (in bytes). */ + /* */ + /* CheckSum :: The table checksum. This value can be ignored. */ + /* */ + /* OrigOffset :: The uncompressed table file offset. This value gets */ + /* computed while constructing the (uncompressed) SFNT */ + /* header. It is not contained in the WOFF file. */ + /* */ + typedef struct WOFF_TableRec_ + { + FT_ULong Tag; /* table ID */ + FT_ULong Offset; /* table file offset */ + FT_ULong CompLength; /* compressed table length */ + FT_ULong OrigLength; /* uncompressed table length */ + FT_ULong CheckSum; /* uncompressed checksum */ + + FT_ULong OrigOffset; /* uncompressed table file offset */ + /* (not in the WOFF file) */ + } WOFF_TableRec, *WOFF_Table; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_LongMetricsRec */ + /* */ + /* <Description> */ + /* A structure modeling the long metrics of the `hmtx' and `vmtx' */ + /* TrueType tables. The values are expressed in font units. */ + /* */ + /* <Fields> */ + /* advance :: The advance width or height for the glyph. */ + /* */ + /* bearing :: The left-side or top-side bearing for the glyph. */ + /* */ + typedef struct TT_LongMetricsRec_ + { + FT_UShort advance; + FT_Short bearing; + + } TT_LongMetricsRec, *TT_LongMetrics; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_ShortMetrics */ + /* */ + /* <Description> */ + /* A simple type to model the short metrics of the `hmtx' and `vmtx' */ + /* tables. */ + /* */ + typedef FT_Short TT_ShortMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_NameEntryRec */ + /* */ + /* <Description> */ + /* A structure modeling TrueType name records. Name records are used */ + /* to store important strings like family name, style name, */ + /* copyright, etc. in _localized_ versions (i.e., language, encoding, */ + /* etc). */ + /* */ + /* <Fields> */ + /* platformID :: The ID of the name's encoding platform. */ + /* */ + /* encodingID :: The platform-specific ID for the name's encoding. */ + /* */ + /* languageID :: The platform-specific ID for the name's language. */ + /* */ + /* nameID :: The ID specifying what kind of name this is. */ + /* */ + /* stringLength :: The length of the string in bytes. */ + /* */ + /* stringOffset :: The offset to the string in the `name' table. */ + /* */ + /* string :: A pointer to the string's bytes. Note that these */ + /* are usually UTF-16 encoded characters. */ + /* */ + typedef struct TT_NameEntryRec_ + { + FT_UShort platformID; + FT_UShort encodingID; + FT_UShort languageID; + FT_UShort nameID; + FT_UShort stringLength; + FT_ULong stringOffset; + + /* this last field is not defined in the spec */ + /* but used by the FreeType engine */ + + FT_Byte* string; + + } TT_NameEntryRec, *TT_NameEntry; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_NameTableRec */ + /* */ + /* <Description> */ + /* A structure modeling the TrueType name table. */ + /* */ + /* <Fields> */ + /* format :: The format of the name table. */ + /* */ + /* numNameRecords :: The number of names in table. */ + /* */ + /* storageOffset :: The offset of the name table in the `name' */ + /* TrueType table. */ + /* */ + /* names :: An array of name records. */ + /* */ + /* stream :: the file's input stream. */ + /* */ + typedef struct TT_NameTableRec_ + { + FT_UShort format; + FT_UInt numNameRecords; + FT_UInt storageOffset; + TT_NameEntryRec* names; + FT_Stream stream; + + } TT_NameTableRec, *TT_NameTable; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GaspRangeRec */ + /* */ + /* <Description> */ + /* A tiny structure used to model a gasp range according to the */ + /* TrueType specification. */ + /* */ + /* <Fields> */ + /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */ + /* */ + /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */ + /* modes to be used. */ + /* */ + typedef struct TT_GaspRangeRec_ + { + FT_UShort maxPPEM; + FT_UShort gaspFlag; + + } TT_GaspRangeRec, *TT_GaspRange; + + +#define TT_GASP_GRIDFIT 0x01 +#define TT_GASP_DOGRAY 0x02 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GaspRec */ + /* */ + /* <Description> */ + /* A structure modeling the TrueType `gasp' table used to specify */ + /* grid-fitting and anti-aliasing behaviour. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numRanges :: The number of gasp ranges in table. */ + /* */ + /* gaspRanges :: An array of gasp ranges. */ + /* */ + typedef struct TT_Gasp_ + { + FT_UShort version; + FT_UShort numRanges; + TT_GaspRange gaspRanges; + + } TT_GaspRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** EMBEDDED BITMAPS SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_MetricsRec */ + /* */ + /* <Description> */ + /* A structure used to hold the big metrics of a given glyph bitmap */ + /* in a TrueType or OpenType font. These are usually found in the */ + /* `EBDT' (Microsoft) or `bloc' (Apple) table. */ + /* */ + /* <Fields> */ + /* height :: The glyph height in pixels. */ + /* */ + /* width :: The glyph width in pixels. */ + /* */ + /* horiBearingX :: The horizontal left bearing. */ + /* */ + /* horiBearingY :: The horizontal top bearing. */ + /* */ + /* horiAdvance :: The horizontal advance. */ + /* */ + /* vertBearingX :: The vertical left bearing. */ + /* */ + /* vertBearingY :: The vertical top bearing. */ + /* */ + /* vertAdvance :: The vertical advance. */ + /* */ + typedef struct TT_SBit_MetricsRec_ + { + FT_UShort height; + FT_UShort width; + + FT_Short horiBearingX; + FT_Short horiBearingY; + FT_UShort horiAdvance; + + FT_Short vertBearingX; + FT_Short vertBearingY; + FT_UShort vertAdvance; + + } TT_SBit_MetricsRec, *TT_SBit_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_SmallMetricsRec */ + /* */ + /* <Description> */ + /* A structure used to hold the small metrics of a given glyph bitmap */ + /* in a TrueType or OpenType font. These are usually found in the */ + /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */ + /* */ + /* <Fields> */ + /* height :: The glyph height in pixels. */ + /* */ + /* width :: The glyph width in pixels. */ + /* */ + /* bearingX :: The left-side bearing. */ + /* */ + /* bearingY :: The top-side bearing. */ + /* */ + /* advance :: The advance width or height. */ + /* */ + typedef struct TT_SBit_Small_Metrics_ + { + FT_Byte height; + FT_Byte width; + + FT_Char bearingX; + FT_Char bearingY; + FT_Byte advance; + + } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_LineMetricsRec */ + /* */ + /* <Description> */ + /* A structure used to describe the text line metrics of a given */ + /* bitmap strike, for either a horizontal or vertical layout. */ + /* */ + /* <Fields> */ + /* ascender :: The ascender in pixels. */ + /* */ + /* descender :: The descender in pixels. */ + /* */ + /* max_width :: The maximum glyph width in pixels. */ + /* */ + /* caret_slope_enumerator :: Rise of the caret slope, typically set */ + /* to 1 for non-italic fonts. */ + /* */ + /* caret_slope_denominator :: Rise of the caret slope, typically set */ + /* to 0 for non-italic fonts. */ + /* */ + /* caret_offset :: Offset in pixels to move the caret for */ + /* proper positioning. */ + /* */ + /* min_origin_SB :: Minimum of horiBearingX (resp. */ + /* vertBearingY). */ + /* min_advance_SB :: Minimum of */ + /* */ + /* horizontal advance - */ + /* ( horiBearingX + width ) */ + /* */ + /* resp. */ + /* */ + /* vertical advance - */ + /* ( vertBearingY + height ) */ + /* */ + /* max_before_BL :: Maximum of horiBearingY (resp. */ + /* vertBearingY). */ + /* */ + /* min_after_BL :: Minimum of */ + /* */ + /* horiBearingY - height */ + /* */ + /* resp. */ + /* */ + /* vertBearingX - width */ + /* */ + /* pads :: Unused (to make the size of the record */ + /* a multiple of 32 bits. */ + /* */ + typedef struct TT_SBit_LineMetricsRec_ + { + FT_Char ascender; + FT_Char descender; + FT_Byte max_width; + FT_Char caret_slope_numerator; + FT_Char caret_slope_denominator; + FT_Char caret_offset; + FT_Char min_origin_SB; + FT_Char min_advance_SB; + FT_Char max_before_BL; + FT_Char min_after_BL; + FT_Char pads[2]; + + } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_RangeRec */ + /* */ + /* <Description> */ + /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */ + /* (Microsoft) or `bloc' (Apple) tables. */ + /* */ + /* <Fields> */ + /* first_glyph :: The first glyph index in the range. */ + /* */ + /* last_glyph :: The last glyph index in the range. */ + /* */ + /* index_format :: The format of index table. Valid values are 1 */ + /* to 5. */ + /* */ + /* image_format :: The format of `EBDT' image data. */ + /* */ + /* image_offset :: The offset to image data in `EBDT'. */ + /* */ + /* image_size :: For index formats 2 and 5. This is the size in */ + /* bytes of each glyph bitmap. */ + /* */ + /* big_metrics :: For index formats 2 and 5. This is the big */ + /* metrics for each glyph bitmap. */ + /* */ + /* num_glyphs :: For index formats 4 and 5. This is the number of */ + /* glyphs in the code array. */ + /* */ + /* glyph_offsets :: For index formats 1 and 3. */ + /* */ + /* glyph_codes :: For index formats 4 and 5. */ + /* */ + /* table_offset :: The offset of the index table in the `EBLC' */ + /* table. Only used during strike loading. */ + /* */ + typedef struct TT_SBit_RangeRec_ + { + FT_UShort first_glyph; + FT_UShort last_glyph; + + FT_UShort index_format; + FT_UShort image_format; + FT_ULong image_offset; + + FT_ULong image_size; + TT_SBit_MetricsRec metrics; + FT_ULong num_glyphs; + + FT_ULong* glyph_offsets; + FT_UShort* glyph_codes; + + FT_ULong table_offset; + + } TT_SBit_RangeRec, *TT_SBit_Range; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_StrikeRec */ + /* */ + /* <Description> */ + /* A structure used describe a given bitmap strike in the `EBLC' */ + /* (Microsoft) or `bloc' (Apple) tables. */ + /* */ + /* <Fields> */ + /* num_index_ranges :: The number of index ranges. */ + /* */ + /* index_ranges :: An array of glyph index ranges. */ + /* */ + /* color_ref :: Unused. `color_ref' is put in for future */ + /* enhancements, but these fields are already */ + /* in use by other platforms (e.g. Newton). */ + /* For details, please see */ + /* */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */ + /* */ + /* hori :: The line metrics for horizontal layouts. */ + /* */ + /* vert :: The line metrics for vertical layouts. */ + /* */ + /* start_glyph :: The lowest glyph index for this strike. */ + /* */ + /* end_glyph :: The highest glyph index for this strike. */ + /* */ + /* x_ppem :: The number of horizontal pixels per EM. */ + /* */ + /* y_ppem :: The number of vertical pixels per EM. */ + /* */ + /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ + /* and 8. */ + /* */ + /* flags :: Is this a vertical or horizontal strike? For */ + /* details, please see */ + /* */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */ + /* */ + typedef struct TT_SBit_StrikeRec_ + { + FT_Int num_ranges; + TT_SBit_Range sbit_ranges; + FT_ULong ranges_offset; + + FT_ULong color_ref; + + TT_SBit_LineMetricsRec hori; + TT_SBit_LineMetricsRec vert; + + FT_UShort start_glyph; + FT_UShort end_glyph; + + FT_Byte x_ppem; + FT_Byte y_ppem; + + FT_Byte bit_depth; + FT_Char flags; + + } TT_SBit_StrikeRec, *TT_SBit_Strike; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_ComponentRec */ + /* */ + /* <Description> */ + /* A simple structure to describe a compound sbit element. */ + /* */ + /* <Fields> */ + /* glyph_code :: The element's glyph index. */ + /* */ + /* x_offset :: The element's left bearing. */ + /* */ + /* y_offset :: The element's top bearing. */ + /* */ + typedef struct TT_SBit_ComponentRec_ + { + FT_UShort glyph_code; + FT_Char x_offset; + FT_Char y_offset; + + } TT_SBit_ComponentRec, *TT_SBit_Component; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_ScaleRec */ + /* */ + /* <Description> */ + /* A structure used describe a given bitmap scaling table, as defined */ + /* in the `EBSC' table. */ + /* */ + /* <Fields> */ + /* hori :: The horizontal line metrics. */ + /* */ + /* vert :: The vertical line metrics. */ + /* */ + /* x_ppem :: The number of horizontal pixels per EM. */ + /* */ + /* y_ppem :: The number of vertical pixels per EM. */ + /* */ + /* x_ppem_substitute :: Substitution x_ppem value. */ + /* */ + /* y_ppem_substitute :: Substitution y_ppem value. */ + /* */ + typedef struct TT_SBit_ScaleRec_ + { + TT_SBit_LineMetricsRec hori; + TT_SBit_LineMetricsRec vert; + + FT_Byte x_ppem; + FT_Byte y_ppem; + + FT_Byte x_ppem_substitute; + FT_Byte y_ppem_substitute; + + } TT_SBit_ScaleRec, *TT_SBit_Scale; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_20Rec */ + /* */ + /* <Description> */ + /* Postscript names sub-table, format 2.0. Stores the PS name of */ + /* each glyph in the font face. */ + /* */ + /* <Fields> */ + /* num_glyphs :: The number of named glyphs in the table. */ + /* */ + /* num_names :: The number of PS names stored in the table. */ + /* */ + /* glyph_indices :: The indices of the glyphs in the names arrays. */ + /* */ + /* glyph_names :: The PS names not in Mac Encoding. */ + /* */ + typedef struct TT_Post_20Rec_ + { + FT_UShort num_glyphs; + FT_UShort num_names; + FT_UShort* glyph_indices; + FT_Char** glyph_names; + + } TT_Post_20Rec, *TT_Post_20; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_25Rec */ + /* */ + /* <Description> */ + /* Postscript names sub-table, format 2.5. Stores the PS name of */ + /* each glyph in the font face. */ + /* */ + /* <Fields> */ + /* num_glyphs :: The number of glyphs in the table. */ + /* */ + /* offsets :: An array of signed offsets in a normal Mac */ + /* Postscript name encoding. */ + /* */ + typedef struct TT_Post_25_ + { + FT_UShort num_glyphs; + FT_Char* offsets; + + } TT_Post_25Rec, *TT_Post_25; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_NamesRec */ + /* */ + /* <Description> */ + /* Postscript names table, either format 2.0 or 2.5. */ + /* */ + /* <Fields> */ + /* loaded :: A flag to indicate whether the PS names are loaded. */ + /* */ + /* format_20 :: The sub-table used for format 2.0. */ + /* */ + /* format_25 :: The sub-table used for format 2.5. */ + /* */ + typedef struct TT_Post_NamesRec_ + { + FT_Bool loaded; + + union + { + TT_Post_20Rec format_20; + TT_Post_25Rec format_25; + + } names; + + } TT_Post_NamesRec, *TT_Post_Names; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** GX VARIATION TABLE SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + typedef struct GX_BlendRec_ *GX_Blend; +#endif + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** EMBEDDED BDF PROPERTIES TABLE SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * These types are used to support a `BDF ' table that isn't part of the + * official TrueType specification. It is mainly used in SFNT-based + * bitmap fonts that were generated from a set of BDF fonts. + * + * The format of the table is as follows. + * + * USHORT version `BDF ' table version number, should be 0x0001. + * USHORT strikeCount Number of strikes (bitmap sizes) in this table. + * ULONG stringTable Offset (from start of BDF table) to string + * table. + * + * This is followed by an array of `strikeCount' descriptors, having the + * following format. + * + * USHORT ppem Vertical pixels per EM for this strike. + * USHORT numItems Number of items for this strike (properties and + * atoms). Maximum is 255. + * + * This array in turn is followed by `strikeCount' value sets. Each + * `value set' is an array of `numItems' items with the following format. + * + * ULONG item_name Offset in string table to item name. + * USHORT item_type The item type. Possible values are + * 0 => string (e.g., COMMENT) + * 1 => atom (e.g., FONT or even SIZE) + * 2 => int32 + * 3 => uint32 + * 0x10 => A flag to indicate a properties. This + * is ORed with the above values. + * ULONG item_value For strings => Offset into string table without + * the corresponding double quotes. + * For atoms => Offset into string table. + * For integers => Direct value. + * + * All strings in the string table consist of bytes and are + * zero-terminated. + * + */ + +#ifdef TT_CONFIG_OPTION_BDF + + typedef struct TT_BDFRec_ + { + FT_Byte* table; + FT_Byte* table_end; + FT_Byte* strings; + FT_ULong strings_size; + FT_UInt num_strikes; + FT_Bool loaded; + + } TT_BDFRec, *TT_BDF; + +#endif /* TT_CONFIG_OPTION_BDF */ + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** ORIGINAL TT_FACE CLASS DEFINITION ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This structure/class is defined here because it is common to the */ + /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ + /* */ + /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */ + /* shared between font drivers, and are thus defined in `ttobjs.h'. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_Face */ + /* */ + /* <Description> */ + /* A handle to a TrueType face/font object. A TT_Face encapsulates */ + /* the resolution and scaling independent parts of a TrueType font */ + /* resource. */ + /* */ + /* <Note> */ + /* The TT_Face structure is also used as a `parent class' for the */ + /* OpenType-CFF class (T2_Face). */ + /* */ + typedef struct TT_FaceRec_* TT_Face; + + + /* a function type used for the truetype bytecode interpreter hooks */ + typedef FT_Error + (*TT_Interpreter)( void* exec_context ); + + /* forward declaration */ + typedef struct TT_LoaderRec_* TT_Loader; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_GotoTableFunc */ + /* */ + /* <Description> */ + /* Seeks a stream to the start of a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* tag :: A 4-byte tag used to name the table. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* <Output> */ + /* length :: The length of the table in bytes. Set to 0 if not */ + /* needed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be at the font file's origin. */ + /* */ + typedef FT_Error + (*TT_Loader_GotoTableFunc)( TT_Face face, + FT_ULong tag, + FT_Stream stream, + FT_ULong* length ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_StartGlyphFunc */ + /* */ + /* <Description> */ + /* Seeks a stream to the start of a given glyph element, and opens a */ + /* frame for it. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + /* glyph index :: The index of the glyph to access. */ + /* */ + /* offset :: The offset of the glyph according to the */ + /* `locations' table. */ + /* */ + /* byte_count :: The size of the frame in bytes. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function is normally equivalent to FT_STREAM_SEEK(offset) */ + /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */ + /* but alternative formats (e.g. compressed ones) might use something */ + /* different. */ + /* */ + typedef FT_Error + (*TT_Loader_StartGlyphFunc)( TT_Loader loader, + FT_UInt glyph_index, + FT_ULong offset, + FT_UInt byte_count ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_ReadGlyphFunc */ + /* */ + /* <Description> */ + /* Reads one glyph element (its header, a simple glyph, or a */ + /* composite) from the loader's current stream frame. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Loader_ReadGlyphFunc)( TT_Loader loader ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_EndGlyphFunc */ + /* */ + /* <Description> */ + /* Closes the current loader stream frame for the glyph. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + typedef void + (*TT_Loader_EndGlyphFunc)( TT_Loader loader ); + + + typedef enum TT_SbitTableType_ + { + TT_SBIT_TABLE_TYPE_NONE = 0, + TT_SBIT_TABLE_TYPE_EBLC, /* `EBLC' (Microsoft), */ + /* `bloc' (Apple) */ + TT_SBIT_TABLE_TYPE_CBLC, /* `CBLC' (Google) */ + TT_SBIT_TABLE_TYPE_SBIX, /* `sbix' (Apple) */ + + /* do not remove */ + TT_SBIT_TABLE_TYPE_MAX + + } TT_SbitTableType; + + + /*************************************************************************/ + /* */ + /* TrueType Face Type */ + /* */ + /* <Struct> */ + /* TT_Face */ + /* */ + /* <Description> */ + /* The TrueType face class. These objects model the resolution and */ + /* point-size independent data found in a TrueType font file. */ + /* */ + /* <Fields> */ + /* root :: The base FT_Face structure, managed by the */ + /* base layer. */ + /* */ + /* ttc_header :: The TrueType collection header, used when */ + /* the file is a `ttc' rather than a `ttf'. */ + /* For ordinary font files, the field */ + /* `ttc_header.count' is set to 0. */ + /* */ + /* format_tag :: The font format tag. */ + /* */ + /* num_tables :: The number of TrueType tables in this font */ + /* file. */ + /* */ + /* dir_tables :: The directory of TrueType tables for this */ + /* font file. */ + /* */ + /* header :: The font's font header (`head' table). */ + /* Read on font opening. */ + /* */ + /* horizontal :: The font's horizontal header (`hhea' */ + /* table). This field also contains the */ + /* associated horizontal metrics table */ + /* (`hmtx'). */ + /* */ + /* max_profile :: The font's maximum profile table. Read on */ + /* font opening. Note that some maximum */ + /* values cannot be taken directly from this */ + /* table. We thus define additional fields */ + /* below to hold the computed maxima. */ + /* */ + /* vertical_info :: A boolean which is set when the font file */ + /* contains vertical metrics. If not, the */ + /* value of the `vertical' field is */ + /* undefined. */ + /* */ + /* vertical :: The font's vertical header (`vhea' table). */ + /* This field also contains the associated */ + /* vertical metrics table (`vmtx'), if found. */ + /* IMPORTANT: The contents of this field is */ + /* undefined if the `vertical_info' field is */ + /* unset. */ + /* */ + /* num_names :: The number of name records within this */ + /* TrueType font. */ + /* */ + /* name_table :: The table of name records (`name'). */ + /* */ + /* os2 :: The font's OS/2 table (`OS/2'). */ + /* */ + /* postscript :: The font's PostScript table (`post' */ + /* table). The PostScript glyph names are */ + /* not loaded by the driver on face opening. */ + /* See the `ttpost' module for more details. */ + /* */ + /* cmap_table :: Address of the face's `cmap' SFNT table */ + /* in memory (it's an extracted frame). */ + /* */ + /* cmap_size :: The size in bytes of the `cmap_table' */ + /* described above. */ + /* */ + /* goto_table :: A function called by each TrueType table */ + /* loader to position a stream's cursor to */ + /* the start of a given table according to */ + /* its tag. It defaults to TT_Goto_Face but */ + /* can be different for strange formats (e.g. */ + /* Type 42). */ + /* */ + /* access_glyph_frame :: A function used to access the frame of a */ + /* given glyph within the face's font file. */ + /* */ + /* forget_glyph_frame :: A function used to forget the frame of a */ + /* given glyph when all data has been loaded. */ + /* */ + /* read_glyph_header :: A function used to read a glyph header. */ + /* It must be called between an `access' and */ + /* `forget'. */ + /* */ + /* read_simple_glyph :: A function used to read a simple glyph. */ + /* It must be called after the header was */ + /* read, and before the `forget'. */ + /* */ + /* read_composite_glyph :: A function used to read a composite glyph. */ + /* It must be called after the header was */ + /* read, and before the `forget'. */ + /* */ + /* sfnt :: A pointer to the SFNT service. */ + /* */ + /* psnames :: A pointer to the PostScript names service. */ + /* */ + /* hdmx :: The face's horizontal device metrics */ + /* (`hdmx' table). This table is optional in */ + /* TrueType/OpenType fonts. */ + /* */ + /* gasp :: The grid-fitting and scaling properties */ + /* table (`gasp'). This table is optional in */ + /* TrueType/OpenType fonts. */ + /* */ + /* pclt :: The `pclt' SFNT table. */ + /* */ + /* num_sbit_scales :: The number of sbit scales for this font. */ + /* */ + /* sbit_scales :: Array of sbit scales embedded in this */ + /* font. This table is optional in a */ + /* TrueType/OpenType font. */ + /* */ + /* postscript_names :: A table used to store the Postscript names */ + /* of the glyphs for this font. See the */ + /* file `ttconfig.h' for comments on the */ + /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */ + /* */ + /* num_locations :: The number of glyph locations in this */ + /* TrueType file. This should be */ + /* identical to the number of glyphs. */ + /* Ignored for Type 2 fonts. */ + /* */ + /* glyph_locations :: An array of longs. These are offsets to */ + /* glyph data within the `glyf' table. */ + /* Ignored for Type 2 font faces. */ + /* */ + /* glyf_len :: The length of the `glyf' table. Needed */ + /* for malformed `loca' tables. */ + /* */ + /* font_program_size :: Size in bytecodes of the face's font */ + /* program. 0 if none defined. Ignored for */ + /* Type 2 fonts. */ + /* */ + /* font_program :: The face's font program (bytecode stream) */ + /* executed at load time, also used during */ + /* glyph rendering. Comes from the `fpgm' */ + /* table. Ignored for Type 2 font fonts. */ + /* */ + /* cvt_program_size :: The size in bytecodes of the face's cvt */ + /* program. Ignored for Type 2 fonts. */ + /* */ + /* cvt_program :: The face's cvt program (bytecode stream) */ + /* executed each time an instance/size is */ + /* changed/reset. Comes from the `prep' */ + /* table. Ignored for Type 2 fonts. */ + /* */ + /* cvt_size :: Size of the control value table (in */ + /* entries). Ignored for Type 2 fonts. */ + /* */ + /* cvt :: The face's original control value table. */ + /* Coordinates are expressed in unscaled font */ + /* units. Comes from the `cvt ' table. */ + /* Ignored for Type 2 fonts. */ + /* */ + /* num_kern_pairs :: The number of kerning pairs present in the */ + /* font file. The engine only loads the */ + /* first horizontal format 0 kern table it */ + /* finds in the font file. Ignored for */ + /* Type 2 fonts. */ + /* */ + /* kern_table_index :: The index of the kerning table in the font */ + /* kerning directory. Ignored for Type 2 */ + /* fonts. */ + /* */ + /* interpreter :: A pointer to the TrueType bytecode */ + /* interpreters field is also used to hook */ + /* the debugger in `ttdebug'. */ + /* */ + /* unpatented_hinting :: If true, use only unpatented methods in */ + /* the bytecode interpreter. */ + /* */ + /* doblend :: A boolean which is set if the font should */ + /* be blended (this is for GX var). */ + /* */ + /* blend :: Contains the data needed to control GX */ + /* variation tables (rather like Multiple */ + /* Master data). */ + /* */ + /* extra :: Reserved for third-party font drivers. */ + /* */ + /* postscript_name :: The PS name of the font. Used by the */ + /* postscript name service. */ + /* */ + typedef struct TT_FaceRec_ + { + FT_FaceRec root; + + TTC_HeaderRec ttc_header; + + FT_ULong format_tag; + FT_UShort num_tables; + TT_Table dir_tables; + + TT_Header header; /* TrueType header table */ + TT_HoriHeader horizontal; /* TrueType horizontal header */ + + TT_MaxProfile max_profile; + + FT_Bool vertical_info; + TT_VertHeader vertical; /* TT Vertical header, if present */ + + FT_UShort num_names; /* number of name records */ + TT_NameTableRec name_table; /* name table */ + + TT_OS2 os2; /* TrueType OS/2 table */ + TT_Postscript postscript; /* TrueType Postscript table */ + + FT_Byte* cmap_table; /* extracted `cmap' table */ + FT_ULong cmap_size; + + TT_Loader_GotoTableFunc goto_table; + + TT_Loader_StartGlyphFunc access_glyph_frame; + TT_Loader_EndGlyphFunc forget_glyph_frame; + TT_Loader_ReadGlyphFunc read_glyph_header; + TT_Loader_ReadGlyphFunc read_simple_glyph; + TT_Loader_ReadGlyphFunc read_composite_glyph; + + /* a typeless pointer to the SFNT_Interface table used to load */ + /* the basic TrueType tables in the face object */ + void* sfnt; + + /* a typeless pointer to the FT_Service_PsCMapsRec table used to */ + /* handle glyph names <-> unicode & Mac values */ + void* psnames; + + + /***********************************************************************/ + /* */ + /* Optional TrueType/OpenType tables */ + /* */ + /***********************************************************************/ + + /* grid-fitting and scaling table */ + TT_GaspRec gasp; /* the `gasp' table */ + + /* PCL 5 table */ + TT_PCLT pclt; + + /* embedded bitmaps support */ + FT_ULong num_sbit_scales; + TT_SBit_Scale sbit_scales; + + /* postscript names table */ + TT_Post_NamesRec postscript_names; + + + /***********************************************************************/ + /* */ + /* TrueType-specific fields (ignored by the OTF-Type2 driver) */ + /* */ + /***********************************************************************/ + + /* the font program, if any */ + FT_ULong font_program_size; + FT_Byte* font_program; + + /* the cvt program, if any */ + FT_ULong cvt_program_size; + FT_Byte* cvt_program; + + /* the original, unscaled, control value table */ + FT_ULong cvt_size; + FT_Short* cvt; + + /* A pointer to the bytecode interpreter to use. This is also */ + /* used to hook the debugger for the `ttdebug' utility. */ + TT_Interpreter interpreter; + +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING + /* Use unpatented hinting only. */ + FT_Bool unpatented_hinting; +#endif + + /***********************************************************************/ + /* */ + /* Other tables or fields. This is used by derivative formats like */ + /* OpenType. */ + /* */ + /***********************************************************************/ + + FT_Generic extra; + + const char* postscript_name; + + FT_ULong glyf_len; + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + FT_Bool doblend; + GX_Blend blend; +#endif + + /* since version 2.2 */ + + FT_Byte* horz_metrics; + FT_ULong horz_metrics_size; + + FT_Byte* vert_metrics; + FT_ULong vert_metrics_size; + + FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */ + FT_Byte* glyph_locations; + + FT_Byte* hdmx_table; + FT_ULong hdmx_table_size; + FT_UInt hdmx_record_count; + FT_ULong hdmx_record_size; + FT_Byte* hdmx_record_sizes; + + FT_Byte* sbit_table; + FT_ULong sbit_table_size; + TT_SbitTableType sbit_table_type; + FT_UInt sbit_num_strikes; + + FT_Byte* kern_table; + FT_ULong kern_table_size; + FT_UInt num_kern_tables; + FT_UInt32 kern_avail_bits; + FT_UInt32 kern_order_bits; + +#ifdef TT_CONFIG_OPTION_BDF + TT_BDFRec bdf; +#endif /* TT_CONFIG_OPTION_BDF */ + + /* since 2.3.0 */ + FT_ULong horz_metrics_offset; + FT_ULong vert_metrics_offset; + +#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING + /* since 2.4.12 */ + FT_ULong sph_found_func_flags; /* special functions found */ + /* for this face */ + FT_Bool sph_compatibility_mode; +#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + + } TT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GlyphZoneRec */ + /* */ + /* <Description> */ + /* A glyph zone is used to load, scale and hint glyph outline */ + /* coordinates. */ + /* */ + /* <Fields> */ + /* memory :: A handle to the memory manager. */ + /* */ + /* max_points :: The maximum size in points of the zone. */ + /* */ + /* max_contours :: Max size in links contours of the zone. */ + /* */ + /* n_points :: The current number of points in the zone. */ + /* */ + /* n_contours :: The current number of contours in the zone. */ + /* */ + /* org :: The original glyph coordinates (font */ + /* units/scaled). */ + /* */ + /* cur :: The current glyph coordinates (scaled/hinted). */ + /* */ + /* tags :: The point control tags. */ + /* */ + /* contours :: The contours end points. */ + /* */ + /* first_point :: Offset of the current subglyph's first point. */ + /* */ + typedef struct TT_GlyphZoneRec_ + { + FT_Memory memory; + FT_UShort max_points; + FT_Short max_contours; + FT_UShort n_points; /* number of points in zone */ + FT_Short n_contours; /* number of contours */ + + FT_Vector* org; /* original point coordinates */ + FT_Vector* cur; /* current point coordinates */ + FT_Vector* orus; /* original (unscaled) point coordinates */ + + FT_Byte* tags; /* current touch flags */ + FT_UShort* contours; /* contour end points */ + + FT_UShort first_point; /* offset of first (#0) point */ + + } TT_GlyphZoneRec, *TT_GlyphZone; + + + /* handle to execution context */ + typedef struct TT_ExecContextRec_* TT_ExecContext; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_Size */ + /* */ + /* <Description> */ + /* A handle to a TrueType size object. */ + /* */ + typedef struct TT_SizeRec_* TT_Size; + + + /* glyph loader structure */ + typedef struct TT_LoaderRec_ + { + TT_Face face; + TT_Size size; + FT_GlyphSlot glyph; + FT_GlyphLoader gloader; + + FT_ULong load_flags; + FT_UInt glyph_index; + + FT_Stream stream; + FT_Int byte_len; + + FT_Short n_contours; + FT_BBox bbox; + FT_Int left_bearing; + FT_Int advance; + FT_Int linear; + FT_Bool linear_def; + FT_Vector pp1; + FT_Vector pp2; + + FT_ULong glyf_offset; + + /* the zone where we load our glyphs */ + TT_GlyphZoneRec base; + TT_GlyphZoneRec zone; + + TT_ExecContext exec; + FT_Byte* instructions; + FT_ULong ins_pos; + + /* for possible extensibility in other formats */ + void* other; + + /* since version 2.1.8 */ + FT_Int top_bearing; + FT_Int vadvance; + FT_Vector pp3; + FT_Vector pp4; + + /* since version 2.2.1 */ + FT_Byte* cursor; + FT_Byte* limit; + + /* since version 2.6.2 */ + FT_ListRec composites; + + } TT_LoaderRec; + + +FT_END_HEADER + +#endif /* __TTTYPES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/t1tables.h b/lib/osx/include/freetype/t1tables.h new file mode 100644 index 0000000..a6ea415 --- /dev/null +++ b/lib/osx/include/freetype/t1tables.h @@ -0,0 +1,761 @@ +/***************************************************************************/ +/* */ +/* t1tables.h */ +/* */ +/* Basic Type 1/Type 2 tables definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TABLES_H__ +#define __T1TABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* type1_tables */ + /* */ + /* <Title> */ + /* Type 1 Tables */ + /* */ + /* <Abstract> */ + /* Type~1 (PostScript) specific font tables. */ + /* */ + /* <Description> */ + /* This section contains the definition of Type 1-specific tables, */ + /* including structures related to other PostScript font formats. */ + /* */ + /* <Order> */ + /* PS_FontInfoRec */ + /* PS_FontInfo */ + /* PS_PrivateRec */ + /* PS_Private */ + /* */ + /* CID_FaceDictRec */ + /* CID_FaceDict */ + /* CID_FaceInfoRec */ + /* CID_FaceInfo */ + /* */ + /* FT_Has_PS_Glyph_Names */ + /* FT_Get_PS_Font_Info */ + /* FT_Get_PS_Font_Private */ + /* FT_Get_PS_Font_Value */ + /* */ + /* T1_Blend_Flags */ + /* T1_EncodingType */ + /* PS_Dict_Keys */ + /* */ + /*************************************************************************/ + + + /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ + /* structures in order to support Multiple Master fonts. */ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfoRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* FontInfo dictionary. */ + /* */ + typedef struct PS_FontInfoRec_ + { + FT_String* version; + FT_String* notice; + FT_String* full_name; + FT_String* family_name; + FT_String* weight; + FT_Long italic_angle; + FT_Bool is_fixed_pitch; + FT_Short underline_position; + FT_UShort underline_thickness; + + } PS_FontInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfo */ + /* */ + /* <Description> */ + /* A handle to a @PS_FontInfoRec structure. */ + /* */ + typedef struct PS_FontInfoRec_* PS_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_FontInfo */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_FontInfoRec T1_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_PrivateRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 private dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* Private dictionary. */ + /* */ + typedef struct PS_PrivateRec_ + { + FT_Int unique_id; + FT_Int lenIV; + + FT_Byte num_blue_values; + FT_Byte num_other_blues; + FT_Byte num_family_blues; + FT_Byte num_family_other_blues; + + FT_Short blue_values[14]; + FT_Short other_blues[10]; + + FT_Short family_blues [14]; + FT_Short family_other_blues[10]; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_fuzz; + + FT_UShort standard_width[1]; + FT_UShort standard_height[1]; + + FT_Byte num_snap_widths; + FT_Byte num_snap_heights; + FT_Bool force_bold; + FT_Bool round_stem_up; + + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ + + FT_Fixed expansion_factor; + + FT_Long language_group; + FT_Long password; + + FT_Short min_feature[2]; + + } PS_PrivateRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Private */ + /* */ + /* <Description> */ + /* A handle to a @PS_PrivateRec structure. */ + /* */ + typedef struct PS_PrivateRec_* PS_Private; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_Private */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_PrivateRec T1_Private; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_Blend_Flags */ + /* */ + /* <Description> */ + /* A set of flags used to indicate which fields are present in a */ + /* given blend dictionary (font info or private). Used to support */ + /* Multiple Masters fonts. */ + /* */ + /* <Values> */ + /* T1_BLEND_UNDERLINE_POSITION :: */ + /* T1_BLEND_UNDERLINE_THICKNESS :: */ + /* T1_BLEND_ITALIC_ANGLE :: */ + /* T1_BLEND_BLUE_VALUES :: */ + /* T1_BLEND_OTHER_BLUES :: */ + /* T1_BLEND_STANDARD_WIDTH :: */ + /* T1_BLEND_STANDARD_HEIGHT :: */ + /* T1_BLEND_STEM_SNAP_WIDTHS :: */ + /* T1_BLEND_STEM_SNAP_HEIGHTS :: */ + /* T1_BLEND_BLUE_SCALE :: */ + /* T1_BLEND_BLUE_SHIFT :: */ + /* T1_BLEND_FAMILY_BLUES :: */ + /* T1_BLEND_FAMILY_OTHER_BLUES :: */ + /* T1_BLEND_FORCE_BOLD :: */ + /* */ + typedef enum T1_Blend_Flags_ + { + /* required fields in a FontInfo blend dictionary */ + T1_BLEND_UNDERLINE_POSITION = 0, + T1_BLEND_UNDERLINE_THICKNESS, + T1_BLEND_ITALIC_ANGLE, + + /* required fields in a Private blend dictionary */ + T1_BLEND_BLUE_VALUES, + T1_BLEND_OTHER_BLUES, + T1_BLEND_STANDARD_WIDTH, + T1_BLEND_STANDARD_HEIGHT, + T1_BLEND_STEM_SNAP_WIDTHS, + T1_BLEND_STEM_SNAP_HEIGHTS, + T1_BLEND_BLUE_SCALE, + T1_BLEND_BLUE_SHIFT, + T1_BLEND_FAMILY_BLUES, + T1_BLEND_FAMILY_OTHER_BLUES, + T1_BLEND_FORCE_BOLD, + + T1_BLEND_MAX /* do not remove */ + + } T1_Blend_Flags; + + + /* these constants are deprecated; use the corresponding */ + /* `T1_Blend_Flags' values instead */ +#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION +#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS +#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE +#define t1_blend_blue_values T1_BLEND_BLUE_VALUES +#define t1_blend_other_blues T1_BLEND_OTHER_BLUES +#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH +#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT +#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS +#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS +#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE +#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT +#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES +#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES +#define t1_blend_force_bold T1_BLEND_FORCE_BOLD +#define t1_blend_max T1_BLEND_MAX + + /* */ + + + /* maximum number of Multiple Masters designs, as defined in the spec */ +#define T1_MAX_MM_DESIGNS 16 + + /* maximum number of Multiple Masters axes, as defined in the spec */ +#define T1_MAX_MM_AXIS 4 + + /* maximum number of elements in a design map */ +#define T1_MAX_MM_MAP_POINTS 20 + + + /* this structure is used to store the BlendDesignMap entry for an axis */ + typedef struct PS_DesignMap_ + { + FT_Byte num_points; + FT_Long* design_points; + FT_Fixed* blend_points; + + } PS_DesignMapRec, *PS_DesignMap; + + /* backwards-compatible definition */ + typedef PS_DesignMapRec T1_DesignMap; + + + typedef struct PS_BlendRec_ + { + FT_UInt num_designs; + FT_UInt num_axis; + + FT_String* axis_names[T1_MAX_MM_AXIS]; + FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; + PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; + + FT_Fixed* weight_vector; + FT_Fixed* default_weight_vector; + + PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; + PS_Private privates [T1_MAX_MM_DESIGNS + 1]; + + FT_ULong blend_bitflags; + + FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; + + /* since 2.3.0 */ + + /* undocumented, optional: the default design instance; */ + /* corresponds to default_weight_vector -- */ + /* num_default_design_vector == 0 means it is not present */ + /* in the font and associated metrics files */ + FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; + FT_UInt num_default_design_vector; + + } PS_BlendRec, *PS_Blend; + + + /* backwards-compatible definition */ + typedef PS_BlendRec T1_Blend; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDictRec */ + /* */ + /* <Description> */ + /* A structure used to represent data in a CID top-level dictionary. */ + /* */ + typedef struct CID_FaceDictRec_ + { + PS_PrivateRec private_dict; + + FT_UInt len_buildchar; + FT_Fixed forcebold_threshold; + FT_Pos stroke_width; + FT_Fixed expansion_factor; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_UInt num_subrs; + FT_ULong subrmap_offset; + FT_Int sd_bytes; + + } CID_FaceDictRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDict */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceDictRec structure. */ + /* */ + typedef struct CID_FaceDictRec_* CID_FaceDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FontDict */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceDictRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceDictRec CID_FontDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfoRec */ + /* */ + /* <Description> */ + /* A structure used to represent CID Face information. */ + /* */ + typedef struct CID_FaceInfoRec_ + { + FT_String* cid_font_name; + FT_Fixed cid_version; + FT_Int cid_font_type; + + FT_String* registry; + FT_String* ordering; + FT_Int supplement; + + PS_FontInfoRec font_info; + FT_BBox font_bbox; + FT_ULong uid_base; + + FT_Int num_xuid; + FT_ULong xuid[16]; + + FT_ULong cidmap_offset; + FT_Int fd_bytes; + FT_Int gd_bytes; + FT_ULong cid_count; + + FT_Int num_dicts; + CID_FaceDict font_dicts; + + FT_ULong data_offset; + + } CID_FaceInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfo */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceInfoRec structure. */ + /* */ + typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_Info */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceInfoRec CID_Info; + + + /************************************************************************ + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph + * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, + * except that certain fonts (mostly TrueType) contain incorrect + * glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ + FT_EXPORT( FT_Int ) + FT_Has_PS_Glyph_Names( FT_Face face ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * Output font info structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * String pointers within the @PS_FontInfoRec structure are owned by + * the face and don't need to be freed by the caller. Missing entries + * in the font's FontInfo dictionary are represented by NULL pointers. + * + * If the font's format is not PostScript-based, this function will + * return the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Info( FT_Face face, + PS_FontInfo afont_info ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Private + * + * @description: + * Retrieve the @PS_PrivateRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_private :: + * Output private dictionary structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the @PS_PrivateRec structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_EncodingType */ + /* */ + /* <Description> */ + /* An enumeration describing the `Encoding' entry in a Type 1 */ + /* dictionary. */ + /* */ + /* <Values> */ + /* T1_ENCODING_TYPE_NONE :: */ + /* T1_ENCODING_TYPE_ARRAY :: */ + /* T1_ENCODING_TYPE_STANDARD :: */ + /* T1_ENCODING_TYPE_ISOLATIN1 :: */ + /* T1_ENCODING_TYPE_EXPERT :: */ + /* */ + typedef enum T1_EncodingType_ + { + T1_ENCODING_TYPE_NONE = 0, + T1_ENCODING_TYPE_ARRAY, + T1_ENCODING_TYPE_STANDARD, + T1_ENCODING_TYPE_ISOLATIN1, + T1_ENCODING_TYPE_EXPERT + + } T1_EncodingType; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* PS_Dict_Keys */ + /* */ + /* <Description> */ + /* An enumeration used in calls to @FT_Get_PS_Font_Value to identify */ + /* the Type~1 dictionary entry to retrieve. */ + /* */ + /* <Values> */ + /* PS_DICT_FONT_TYPE :: */ + /* PS_DICT_FONT_MATRIX :: */ + /* PS_DICT_FONT_BBOX :: */ + /* PS_DICT_PAINT_TYPE :: */ + /* PS_DICT_FONT_NAME :: */ + /* PS_DICT_UNIQUE_ID :: */ + /* PS_DICT_NUM_CHAR_STRINGS :: */ + /* PS_DICT_CHAR_STRING_KEY :: */ + /* PS_DICT_CHAR_STRING :: */ + /* PS_DICT_ENCODING_TYPE :: */ + /* PS_DICT_ENCODING_ENTRY :: */ + /* PS_DICT_NUM_SUBRS :: */ + /* PS_DICT_SUBR :: */ + /* PS_DICT_STD_HW :: */ + /* PS_DICT_STD_VW :: */ + /* PS_DICT_NUM_BLUE_VALUES :: */ + /* PS_DICT_BLUE_VALUE :: */ + /* PS_DICT_BLUE_FUZZ :: */ + /* PS_DICT_NUM_OTHER_BLUES :: */ + /* PS_DICT_OTHER_BLUE :: */ + /* PS_DICT_NUM_FAMILY_BLUES :: */ + /* PS_DICT_FAMILY_BLUE :: */ + /* PS_DICT_NUM_FAMILY_OTHER_BLUES :: */ + /* PS_DICT_FAMILY_OTHER_BLUE :: */ + /* PS_DICT_BLUE_SCALE :: */ + /* PS_DICT_BLUE_SHIFT :: */ + /* PS_DICT_NUM_STEM_SNAP_H :: */ + /* PS_DICT_STEM_SNAP_H :: */ + /* PS_DICT_NUM_STEM_SNAP_V :: */ + /* PS_DICT_STEM_SNAP_V :: */ + /* PS_DICT_FORCE_BOLD :: */ + /* PS_DICT_RND_STEM_UP :: */ + /* PS_DICT_MIN_FEATURE :: */ + /* PS_DICT_LEN_IV :: */ + /* PS_DICT_PASSWORD :: */ + /* PS_DICT_LANGUAGE_GROUP :: */ + /* PS_DICT_VERSION :: */ + /* PS_DICT_NOTICE :: */ + /* PS_DICT_FULL_NAME :: */ + /* PS_DICT_FAMILY_NAME :: */ + /* PS_DICT_WEIGHT :: */ + /* PS_DICT_IS_FIXED_PITCH :: */ + /* PS_DICT_UNDERLINE_POSITION :: */ + /* PS_DICT_UNDERLINE_THICKNESS :: */ + /* PS_DICT_FS_TYPE :: */ + /* PS_DICT_ITALIC_ANGLE :: */ + /* */ + typedef enum PS_Dict_Keys_ + { + /* conventionally in the font dictionary */ + PS_DICT_FONT_TYPE, /* FT_Byte */ + PS_DICT_FONT_MATRIX, /* FT_Fixed */ + PS_DICT_FONT_BBOX, /* FT_Fixed */ + PS_DICT_PAINT_TYPE, /* FT_Byte */ + PS_DICT_FONT_NAME, /* FT_String* */ + PS_DICT_UNIQUE_ID, /* FT_Int */ + PS_DICT_NUM_CHAR_STRINGS, /* FT_Int */ + PS_DICT_CHAR_STRING_KEY, /* FT_String* */ + PS_DICT_CHAR_STRING, /* FT_String* */ + PS_DICT_ENCODING_TYPE, /* T1_EncodingType */ + PS_DICT_ENCODING_ENTRY, /* FT_String* */ + + /* conventionally in the font Private dictionary */ + PS_DICT_NUM_SUBRS, /* FT_Int */ + PS_DICT_SUBR, /* FT_String* */ + PS_DICT_STD_HW, /* FT_UShort */ + PS_DICT_STD_VW, /* FT_UShort */ + PS_DICT_NUM_BLUE_VALUES, /* FT_Byte */ + PS_DICT_BLUE_VALUE, /* FT_Short */ + PS_DICT_BLUE_FUZZ, /* FT_Int */ + PS_DICT_NUM_OTHER_BLUES, /* FT_Byte */ + PS_DICT_OTHER_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_OTHER_BLUE, /* FT_Short */ + PS_DICT_BLUE_SCALE, /* FT_Fixed */ + PS_DICT_BLUE_SHIFT, /* FT_Int */ + PS_DICT_NUM_STEM_SNAP_H, /* FT_Byte */ + PS_DICT_STEM_SNAP_H, /* FT_Short */ + PS_DICT_NUM_STEM_SNAP_V, /* FT_Byte */ + PS_DICT_STEM_SNAP_V, /* FT_Short */ + PS_DICT_FORCE_BOLD, /* FT_Bool */ + PS_DICT_RND_STEM_UP, /* FT_Bool */ + PS_DICT_MIN_FEATURE, /* FT_Short */ + PS_DICT_LEN_IV, /* FT_Int */ + PS_DICT_PASSWORD, /* FT_Long */ + PS_DICT_LANGUAGE_GROUP, /* FT_Long */ + + /* conventionally in the font FontInfo dictionary */ + PS_DICT_VERSION, /* FT_String* */ + PS_DICT_NOTICE, /* FT_String* */ + PS_DICT_FULL_NAME, /* FT_String* */ + PS_DICT_FAMILY_NAME, /* FT_String* */ + PS_DICT_WEIGHT, /* FT_String* */ + PS_DICT_IS_FIXED_PITCH, /* FT_Bool */ + PS_DICT_UNDERLINE_POSITION, /* FT_Short */ + PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */ + PS_DICT_FS_TYPE, /* FT_UShort */ + PS_DICT_ITALIC_ANGLE, /* FT_Long */ + + PS_DICT_MAX = PS_DICT_ITALIC_ANGLE + + } PS_Dict_Keys; + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Value + * + * @description: + * Retrieve the value for the supplied key from a PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * key :: + * An enumeration value representing the dictionary key to retrieve. + * + * idx :: + * For array values, this specifies the index to be returned. + * + * value :: + * A pointer to memory into which to write the value. + * + * valen_len :: + * The size, in bytes, of the memory supplied for the value. + * + * @output: + * value :: + * The value matching the above key, if it exists. + * + * @return: + * The amount of memory (in bytes) required to hold the requested + * value (if it exists, -1 otherwise). + * + * @note: + * The values returned are not pointers into the internal structures of + * the face, but are `fresh' copies, so that the memory containing them + * belongs to the calling application. This also enforces the + * `read-only' nature of these values, i.e., this function cannot be + * used to manipulate the face. + * + * `value' is a void pointer because the values returned can be of + * various types. + * + * If either `value' is NULL or `value_len' is too small, just the + * required memory size for the requested entry is returned. + * + * The `idx' parameter is used, not only to retrieve elements of, for + * example, the FontMatrix or FontBBox, but also to retrieve name keys + * from the CharStrings dictionary, and the charstrings themselves. It + * is ignored for atomic values. + * + * PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To + * get the value as in the font stream, you need to divide by + * 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale). + * + * IMPORTANT: Only key/value pairs read by the FreeType interpreter can + * be retrieved. So, for example, PostScript procedures such as NP, + * ND, and RD are not available. Arbitrary keys are, obviously, not be + * available either. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Long ) + FT_Get_PS_Font_Value( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + /* */ + +FT_END_HEADER + +#endif /* __T1TABLES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ttnameid.h b/lib/osx/include/freetype/ttnameid.h new file mode 100644 index 0000000..c9585f2 --- /dev/null +++ b/lib/osx/include/freetype/ttnameid.h @@ -0,0 +1,1237 @@ +/***************************************************************************/ +/* */ +/* ttnameid.h */ +/* */ +/* TrueType name ID definitions (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTNAMEID_H__ +#define __TTNAMEID_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + + + /*************************************************************************/ + /* */ + /* Possible values for the `platform' identifier code in the name */ + /* records of the TTF `name' table. */ + /* */ + /*************************************************************************/ + + + /*********************************************************************** + * + * @enum: + * TT_PLATFORM_XXX + * + * @description: + * A list of valid values for the `platform_id' identifier code in + * @FT_CharMapRec and @FT_SfntName structures. + * + * @values: + * TT_PLATFORM_APPLE_UNICODE :: + * Used by Apple to indicate a Unicode character map and/or name entry. + * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note + * that name entries in this format are coded as big-endian UCS-2 + * character codes _only_. + * + * TT_PLATFORM_MACINTOSH :: + * Used by Apple to indicate a MacOS-specific charmap and/or name entry. + * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that + * most TrueType fonts contain an Apple roman charmap to be usable on + * MacOS systems (even if they contain a Microsoft charmap as well). + * + * TT_PLATFORM_ISO :: + * This value was used to specify ISO/IEC 10646 charmaps. It is however + * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding + * `encoding_id' values. + * + * TT_PLATFORM_MICROSOFT :: + * Used by Microsoft to indicate Windows-specific charmaps. See + * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. + * Note that most fonts contain a Unicode charmap using + * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). + * + * TT_PLATFORM_CUSTOM :: + * Used to indicate application-specific charmaps. + * + * TT_PLATFORM_ADOBE :: + * This value isn't part of any font format specification, but is used + * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec + * structure. See @TT_ADOBE_ID_XXX. + */ + +#define TT_PLATFORM_APPLE_UNICODE 0 +#define TT_PLATFORM_MACINTOSH 1 +#define TT_PLATFORM_ISO 2 /* deprecated */ +#define TT_PLATFORM_MICROSOFT 3 +#define TT_PLATFORM_CUSTOM 4 +#define TT_PLATFORM_ADOBE 7 /* artificial */ + + + /*********************************************************************** + * + * @enum: + * TT_APPLE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. + * + * @values: + * TT_APPLE_ID_DEFAULT :: + * Unicode version 1.0. + * + * TT_APPLE_ID_UNICODE_1_1 :: + * Unicode 1.1; specifies Hangul characters starting at U+34xx. + * + * TT_APPLE_ID_ISO_10646 :: + * Deprecated (identical to preceding). + * + * TT_APPLE_ID_UNICODE_2_0 :: + * Unicode 2.0 and beyond (UTF-16 BMP only). + * + * TT_APPLE_ID_UNICODE_32 :: + * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations + * on a real cmap. + */ + +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ +#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ + + + /*********************************************************************** + * + * @enum: + * TT_MAC_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MACINTOSH charmaps and name entries. + * + * @values: + * TT_MAC_ID_ROMAN :: + * TT_MAC_ID_JAPANESE :: + * TT_MAC_ID_TRADITIONAL_CHINESE :: + * TT_MAC_ID_KOREAN :: + * TT_MAC_ID_ARABIC :: + * TT_MAC_ID_HEBREW :: + * TT_MAC_ID_GREEK :: + * TT_MAC_ID_RUSSIAN :: + * TT_MAC_ID_RSYMBOL :: + * TT_MAC_ID_DEVANAGARI :: + * TT_MAC_ID_GURMUKHI :: + * TT_MAC_ID_GUJARATI :: + * TT_MAC_ID_ORIYA :: + * TT_MAC_ID_BENGALI :: + * TT_MAC_ID_TAMIL :: + * TT_MAC_ID_TELUGU :: + * TT_MAC_ID_KANNADA :: + * TT_MAC_ID_MALAYALAM :: + * TT_MAC_ID_SINHALESE :: + * TT_MAC_ID_BURMESE :: + * TT_MAC_ID_KHMER :: + * TT_MAC_ID_THAI :: + * TT_MAC_ID_LAOTIAN :: + * TT_MAC_ID_GEORGIAN :: + * TT_MAC_ID_ARMENIAN :: + * TT_MAC_ID_MALDIVIAN :: + * TT_MAC_ID_SIMPLIFIED_CHINESE :: + * TT_MAC_ID_TIBETAN :: + * TT_MAC_ID_MONGOLIAN :: + * TT_MAC_ID_GEEZ :: + * TT_MAC_ID_SLAVIC :: + * TT_MAC_ID_VIETNAMESE :: + * TT_MAC_ID_SINDHI :: + * TT_MAC_ID_UNINTERP :: + */ + +#define TT_MAC_ID_ROMAN 0 +#define TT_MAC_ID_JAPANESE 1 +#define TT_MAC_ID_TRADITIONAL_CHINESE 2 +#define TT_MAC_ID_KOREAN 3 +#define TT_MAC_ID_ARABIC 4 +#define TT_MAC_ID_HEBREW 5 +#define TT_MAC_ID_GREEK 6 +#define TT_MAC_ID_RUSSIAN 7 +#define TT_MAC_ID_RSYMBOL 8 +#define TT_MAC_ID_DEVANAGARI 9 +#define TT_MAC_ID_GURMUKHI 10 +#define TT_MAC_ID_GUJARATI 11 +#define TT_MAC_ID_ORIYA 12 +#define TT_MAC_ID_BENGALI 13 +#define TT_MAC_ID_TAMIL 14 +#define TT_MAC_ID_TELUGU 15 +#define TT_MAC_ID_KANNADA 16 +#define TT_MAC_ID_MALAYALAM 17 +#define TT_MAC_ID_SINHALESE 18 +#define TT_MAC_ID_BURMESE 19 +#define TT_MAC_ID_KHMER 20 +#define TT_MAC_ID_THAI 21 +#define TT_MAC_ID_LAOTIAN 22 +#define TT_MAC_ID_GEORGIAN 23 +#define TT_MAC_ID_ARMENIAN 24 +#define TT_MAC_ID_MALDIVIAN 25 +#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 +#define TT_MAC_ID_TIBETAN 26 +#define TT_MAC_ID_MONGOLIAN 27 +#define TT_MAC_ID_GEEZ 28 +#define TT_MAC_ID_SLAVIC 29 +#define TT_MAC_ID_VIETNAMESE 30 +#define TT_MAC_ID_SINDHI 31 +#define TT_MAC_ID_UNINTERP 32 + + + /*********************************************************************** + * + * @enum: + * TT_ISO_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ISO charmaps and name entries. + * + * Their use is now deprecated. + * + * @values: + * TT_ISO_ID_7BIT_ASCII :: + * ASCII. + * TT_ISO_ID_10646 :: + * ISO/10646. + * TT_ISO_ID_8859_1 :: + * Also known as Latin-1. + */ + +#define TT_ISO_ID_7BIT_ASCII 0 +#define TT_ISO_ID_10646 1 +#define TT_ISO_ID_8859_1 2 + + + /*********************************************************************** + * + * @enum: + * TT_MS_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MICROSOFT charmaps and name entries. + * + * @values: + * TT_MS_ID_SYMBOL_CS :: + * Corresponds to Microsoft symbol encoding. See + * @FT_ENCODING_MS_SYMBOL. + * + * TT_MS_ID_UNICODE_CS :: + * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See + * @FT_ENCODING_UNICODE. + * + * TT_MS_ID_SJIS :: + * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. + * + * TT_MS_ID_GB2312 :: + * Corresponds to Simplified Chinese as used in Mainland China. See + * @FT_ENCODING_GB2312. + * + * TT_MS_ID_BIG_5 :: + * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. + * See @FT_ENCODING_BIG5. + * + * TT_MS_ID_WANSUNG :: + * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. + * + * TT_MS_ID_JOHAB :: + * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. + * + * TT_MS_ID_UCS_4 :: + * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to + * the OpenType specification version 1.4 (mid-2001.) + */ + +#define TT_MS_ID_SYMBOL_CS 0 +#define TT_MS_ID_UNICODE_CS 1 +#define TT_MS_ID_SJIS 2 +#define TT_MS_ID_GB2312 3 +#define TT_MS_ID_BIG_5 4 +#define TT_MS_ID_WANSUNG 5 +#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_UCS_4 10 + + + /*********************************************************************** + * + * @enum: + * TT_ADOBE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! + * + * @values: + * TT_ADOBE_ID_STANDARD :: + * Adobe standard encoding. + * TT_ADOBE_ID_EXPERT :: + * Adobe expert encoding. + * TT_ADOBE_ID_CUSTOM :: + * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. + */ + +#define TT_ADOBE_ID_STANDARD 0 +#define TT_ADOBE_ID_EXPERT 1 +#define TT_ADOBE_ID_CUSTOM 2 +#define TT_ADOBE_ID_LATIN_1 3 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MACINTOSH. These values are also used as return values */ + /* for function @FT_Get_CMap_Language_ID. */ + /* */ + /* The canonical source for the Apple assigned Language ID's is at */ + /* */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html */ + /* */ +#define TT_MAC_LANGID_ENGLISH 0 +#define TT_MAC_LANGID_FRENCH 1 +#define TT_MAC_LANGID_GERMAN 2 +#define TT_MAC_LANGID_ITALIAN 3 +#define TT_MAC_LANGID_DUTCH 4 +#define TT_MAC_LANGID_SWEDISH 5 +#define TT_MAC_LANGID_SPANISH 6 +#define TT_MAC_LANGID_DANISH 7 +#define TT_MAC_LANGID_PORTUGUESE 8 +#define TT_MAC_LANGID_NORWEGIAN 9 +#define TT_MAC_LANGID_HEBREW 10 +#define TT_MAC_LANGID_JAPANESE 11 +#define TT_MAC_LANGID_ARABIC 12 +#define TT_MAC_LANGID_FINNISH 13 +#define TT_MAC_LANGID_GREEK 14 +#define TT_MAC_LANGID_ICELANDIC 15 +#define TT_MAC_LANGID_MALTESE 16 +#define TT_MAC_LANGID_TURKISH 17 +#define TT_MAC_LANGID_CROATIAN 18 +#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 +#define TT_MAC_LANGID_URDU 20 +#define TT_MAC_LANGID_HINDI 21 +#define TT_MAC_LANGID_THAI 22 +#define TT_MAC_LANGID_KOREAN 23 +#define TT_MAC_LANGID_LITHUANIAN 24 +#define TT_MAC_LANGID_POLISH 25 +#define TT_MAC_LANGID_HUNGARIAN 26 +#define TT_MAC_LANGID_ESTONIAN 27 +#define TT_MAC_LANGID_LETTISH 28 +#define TT_MAC_LANGID_SAAMISK 29 +#define TT_MAC_LANGID_FAEROESE 30 +#define TT_MAC_LANGID_FARSI 31 +#define TT_MAC_LANGID_RUSSIAN 32 +#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 +#define TT_MAC_LANGID_FLEMISH 34 +#define TT_MAC_LANGID_IRISH 35 +#define TT_MAC_LANGID_ALBANIAN 36 +#define TT_MAC_LANGID_ROMANIAN 37 +#define TT_MAC_LANGID_CZECH 38 +#define TT_MAC_LANGID_SLOVAK 39 +#define TT_MAC_LANGID_SLOVENIAN 40 +#define TT_MAC_LANGID_YIDDISH 41 +#define TT_MAC_LANGID_SERBIAN 42 +#define TT_MAC_LANGID_MACEDONIAN 43 +#define TT_MAC_LANGID_BULGARIAN 44 +#define TT_MAC_LANGID_UKRAINIAN 45 +#define TT_MAC_LANGID_BYELORUSSIAN 46 +#define TT_MAC_LANGID_UZBEK 47 +#define TT_MAC_LANGID_KAZAKH 48 +#define TT_MAC_LANGID_AZERBAIJANI 49 +#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 +#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 +#define TT_MAC_LANGID_ARMENIAN 51 +#define TT_MAC_LANGID_GEORGIAN 52 +#define TT_MAC_LANGID_MOLDAVIAN 53 +#define TT_MAC_LANGID_KIRGHIZ 54 +#define TT_MAC_LANGID_TAJIKI 55 +#define TT_MAC_LANGID_TURKMEN 56 +#define TT_MAC_LANGID_MONGOLIAN 57 +#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 +#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 +#define TT_MAC_LANGID_PASHTO 59 +#define TT_MAC_LANGID_KURDISH 60 +#define TT_MAC_LANGID_KASHMIRI 61 +#define TT_MAC_LANGID_SINDHI 62 +#define TT_MAC_LANGID_TIBETAN 63 +#define TT_MAC_LANGID_NEPALI 64 +#define TT_MAC_LANGID_SANSKRIT 65 +#define TT_MAC_LANGID_MARATHI 66 +#define TT_MAC_LANGID_BENGALI 67 +#define TT_MAC_LANGID_ASSAMESE 68 +#define TT_MAC_LANGID_GUJARATI 69 +#define TT_MAC_LANGID_PUNJABI 70 +#define TT_MAC_LANGID_ORIYA 71 +#define TT_MAC_LANGID_MALAYALAM 72 +#define TT_MAC_LANGID_KANNADA 73 +#define TT_MAC_LANGID_TAMIL 74 +#define TT_MAC_LANGID_TELUGU 75 +#define TT_MAC_LANGID_SINHALESE 76 +#define TT_MAC_LANGID_BURMESE 77 +#define TT_MAC_LANGID_KHMER 78 +#define TT_MAC_LANGID_LAO 79 +#define TT_MAC_LANGID_VIETNAMESE 80 +#define TT_MAC_LANGID_INDONESIAN 81 +#define TT_MAC_LANGID_TAGALOG 82 +#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 +#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 +#define TT_MAC_LANGID_AMHARIC 85 +#define TT_MAC_LANGID_TIGRINYA 86 +#define TT_MAC_LANGID_GALLA 87 +#define TT_MAC_LANGID_SOMALI 88 +#define TT_MAC_LANGID_SWAHILI 89 +#define TT_MAC_LANGID_RUANDA 90 +#define TT_MAC_LANGID_RUNDI 91 +#define TT_MAC_LANGID_CHEWA 92 +#define TT_MAC_LANGID_MALAGASY 93 +#define TT_MAC_LANGID_ESPERANTO 94 +#define TT_MAC_LANGID_WELSH 128 +#define TT_MAC_LANGID_BASQUE 129 +#define TT_MAC_LANGID_CATALAN 130 +#define TT_MAC_LANGID_LATIN 131 +#define TT_MAC_LANGID_QUECHUA 132 +#define TT_MAC_LANGID_GUARANI 133 +#define TT_MAC_LANGID_AYMARA 134 +#define TT_MAC_LANGID_TATAR 135 +#define TT_MAC_LANGID_UIGHUR 136 +#define TT_MAC_LANGID_DZONGKHA 137 +#define TT_MAC_LANGID_JAVANESE 138 +#define TT_MAC_LANGID_SUNDANESE 139 + + +#if 0 /* these seem to be errors that have been dropped */ + +#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 +#define TT_MAC_LANGID_IRISH_GAELIC 141 + +#endif + + + /* The following codes are new as of 2000-03-10 */ +#define TT_MAC_LANGID_GALICIAN 140 +#define TT_MAC_LANGID_AFRIKAANS 141 +#define TT_MAC_LANGID_BRETON 142 +#define TT_MAC_LANGID_INUKTITUT 143 +#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 +#define TT_MAC_LANGID_MANX_GAELIC 145 +#define TT_MAC_LANGID_IRISH_GAELIC 146 +#define TT_MAC_LANGID_TONGAN 147 +#define TT_MAC_LANGID_GREEK_POLYTONIC 148 +#define TT_MAC_LANGID_GREELANDIC 149 +#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MICROSOFT. */ + /* */ + /* The canonical source for the MS assigned LCIDs is */ + /* */ + /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ + /* */ + +#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 +#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 +#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 +#define TT_MS_LANGID_ARABIC_EGYPT 0x0C01 +#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 +#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 +#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 +#define TT_MS_LANGID_ARABIC_TUNISIA 0x1C01 +#define TT_MS_LANGID_ARABIC_OMAN 0x2001 +#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 +#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 +#define TT_MS_LANGID_ARABIC_JORDAN 0x2C01 +#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 +#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 +#define TT_MS_LANGID_ARABIC_UAE 0x3801 +#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3C01 +#define TT_MS_LANGID_ARABIC_QATAR 0x4001 +#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 +#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 +#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 +#define TT_MS_LANGID_CHINESE_PRC 0x0804 +#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0C04 +#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 + +#if 1 /* this looks like the correct value */ +#define TT_MS_LANGID_CHINESE_MACAU 0x1404 +#else /* but beware, Microsoft may change its mind... + the most recent Word reference has the following: */ +#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG +#endif + +#if 0 /* used only with .NET `cultures'; commented out */ +#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04 +#endif + +#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 +#define TT_MS_LANGID_DANISH_DENMARK 0x0406 +#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 +#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 +#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0C07 +#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 +#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 +#define TT_MS_LANGID_GREEK_GREECE 0x0408 + + /* don't ask what this one means... It is commented out currently. */ +#if 0 +#define TT_MS_LANGID_GREEK_GREECE2 0x2008 +#endif + +#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 +#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 +#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 +#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0C09 +#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 +#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 +#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 +#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1C09 +#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 +#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 +#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 +#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2C09 +#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 +#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 +#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 +#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3C09 +#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 +#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 +#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 +#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040A +#define TT_MS_LANGID_SPANISH_MEXICO 0x080A +#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0C0A +#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100A +#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140A +#define TT_MS_LANGID_SPANISH_PANAMA 0x180A +#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1C0A +#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200A +#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240A +#define TT_MS_LANGID_SPANISH_PERU 0x280A +#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2C0A +#define TT_MS_LANGID_SPANISH_ECUADOR 0x300A +#define TT_MS_LANGID_SPANISH_CHILE 0x340A +#define TT_MS_LANGID_SPANISH_URUGUAY 0x380A +#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3C0A +#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400A +#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440A +#define TT_MS_LANGID_SPANISH_HONDURAS 0x480A +#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4C0A +#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500A +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540A + /* The following ID blatantly violate MS specs by using a */ + /* sublanguage > 0x1F. */ +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40AU +#define TT_MS_LANGID_FINNISH_FINLAND 0x040B +#define TT_MS_LANGID_FRENCH_FRANCE 0x040C +#define TT_MS_LANGID_FRENCH_BELGIUM 0x080C +#define TT_MS_LANGID_FRENCH_CANADA 0x0C0C +#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100C +#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140C +#define TT_MS_LANGID_FRENCH_MONACO 0x180C +#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1C0C +#define TT_MS_LANGID_FRENCH_REUNION 0x200C +#define TT_MS_LANGID_FRENCH_CONGO 0x240C + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO +#define TT_MS_LANGID_FRENCH_SENEGAL 0x280C +#define TT_MS_LANGID_FRENCH_CAMEROON 0x2C0C +#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300C +#define TT_MS_LANGID_FRENCH_MALI 0x340C +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380C +#define TT_MS_LANGID_FRENCH_HAITI 0x3C0C + /* and another violation of the spec (see 0xE40AU) */ +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40CU +#define TT_MS_LANGID_HEBREW_ISRAEL 0x040D +#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040E +#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040F +#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 +#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 +#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 +#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 +#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 +#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 +#define TT_MS_LANGID_POLISH_POLAND 0x0415 +#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 +#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 +#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 +#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 +#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 +#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 +#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 +#define TT_MS_LANGID_CROATIAN_CROATIA 0x041A +#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081A +#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0C1A + +#if 0 /* this used to be this value, but it looks like we were wrong */ +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101A +#else /* current sources say */ +#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141A + /* and XPsp2 Platform SDK added (2004-07-26) */ + /* Names are shortened to be significant within 40 chars. */ +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181A +#endif + +#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041B +#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041C +#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041D +#define TT_MS_LANGID_SWEDISH_FINLAND 0x081D +#define TT_MS_LANGID_THAI_THAILAND 0x041E +#define TT_MS_LANGID_TURKISH_TURKEY 0x041F +#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 +#define TT_MS_LANGID_URDU_INDIA 0x0820 +#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 +#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 +#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 +#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 +#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 +#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 +#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 +#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 +#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 +#define TT_MS_LANGID_FARSI_IRAN 0x0429 +#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042A +#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042B +#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042C +#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082C +#define TT_MS_LANGID_BASQUE_SPAIN 0x042D +#define TT_MS_LANGID_SORBIAN_GERMANY 0x042E +#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042F +#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 +#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 +#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 +#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 +#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 +#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 +#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 +#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 +#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 +#define TT_MS_LANGID_HINDI_INDIA 0x0439 +#define TT_MS_LANGID_MALTESE_MALTA 0x043A + /* Added by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043B +#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083B +#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3B +#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103B +#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143B +#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183B +#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3B +#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203B +#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243B + /* ... and we also keep our old identifier... */ +#define TT_MS_LANGID_SAAMI_LAPONIA 0x043B + +#if 0 /* this seems to be a previous inversion */ +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#else +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#endif + +#define TT_MS_LANGID_YIDDISH_GERMANY 0x043D +#define TT_MS_LANGID_MALAY_MALAYSIA 0x043E +#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083E +#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043F +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ + TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN + +#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 +#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 +#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 +#define TT_MS_LANGID_BENGALI_INDIA 0x0445 +#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 +#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 +#define TT_MS_LANGID_ORIYA_INDIA 0x0448 +#define TT_MS_LANGID_TAMIL_INDIA 0x0449 +#define TT_MS_LANGID_TELUGU_INDIA 0x044A +#define TT_MS_LANGID_KANNADA_INDIA 0x044B +#define TT_MS_LANGID_MALAYALAM_INDIA 0x044C +#define TT_MS_LANGID_ASSAMESE_INDIA 0x044D +#define TT_MS_LANGID_MARATHI_INDIA 0x044E +#define TT_MS_LANGID_SANSKRIT_INDIA 0x044F +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 +#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 + /* Don't use the next constant! It has */ + /* (1) the wrong spelling (Dzonghka) */ + /* (2) Microsoft doesn't officially define it -- */ + /* at least it is not in the List of Local */ + /* ID Values. */ + /* (3) Dzongkha is not the same language as */ + /* Tibetan, so merging it is wrong anyway. */ + /* */ + /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 + +#if 0 + /* the following used to be defined */ +#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 + /* ... but it was changed; */ +#else + /* So we will continue to #define it, but with the correct value */ +#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN +#endif + +#define TT_MS_LANGID_WELSH_WALES 0x0452 +#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 +#define TT_MS_LANGID_LAO_LAOS 0x0454 +#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 +#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 +#define TT_MS_LANGID_KONKANI_INDIA 0x0457 +#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 +#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 +#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 + /* Missing a LCID for Sindhi in Devanagari script */ +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045A +#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045B +#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045C +#define TT_MS_LANGID_INUKTITUT_CANADA 0x045D +#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045E +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045F +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085F + /* Missing a LCID for Tifinagh script */ +#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 + /* Spelled this way by XPsp2 Platform SDK (2004-07-26) */ + /* script is yet unclear... might be Arabic, Nagari or Sharada */ +#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 + /* ... and aliased (by MS) for compatibility reasons. */ +#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA +#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_NEPALI_INDIA 0x0861 +#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 +#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 +#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES +#define TT_MS_LANGID_EDO_NIGERIA 0x0466 +#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046A +#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046B +#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086B +#define TT_MS_LANGID_QUECHUA_PERU 0x0C6B +#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046C + /* Also spelled by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ + TT_MS_LANGID_SEPEDI_SOUTH_AFRICA + /* language codes 0x046D, 0x046E and 0x046F are (still) unknown. */ +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 +#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 +#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 +#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 + /* also spelled in the `Passport SDK' list as: */ +#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA +#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 +#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 +#define TT_MS_LANGID_LATIN 0x0476 +#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 + /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ + /* not written (but OTOH the peculiar writing system is worth */ + /* studying). */ +#define TT_MS_LANGID_YI_CHINA 0x0478 +#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 + /* language codes from 0x047A to 0x047F are (still) unknown. */ +#define TT_MS_LANGID_UIGHUR_CHINA 0x0480 +#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 + +#if 0 /* not deemed useful for fonts */ +#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04FF +#endif + + + /*************************************************************************/ + /* */ + /* Possible values of the `name' identifier field in the name records of */ + /* the TTF `name' table. These values are platform independent. */ + /* */ +#define TT_NAME_ID_COPYRIGHT 0 +#define TT_NAME_ID_FONT_FAMILY 1 +#define TT_NAME_ID_FONT_SUBFAMILY 2 +#define TT_NAME_ID_UNIQUE_ID 3 +#define TT_NAME_ID_FULL_NAME 4 +#define TT_NAME_ID_VERSION_STRING 5 +#define TT_NAME_ID_PS_NAME 6 +#define TT_NAME_ID_TRADEMARK 7 + + /* the following values are from the OpenType spec */ +#define TT_NAME_ID_MANUFACTURER 8 +#define TT_NAME_ID_DESIGNER 9 +#define TT_NAME_ID_DESCRIPTION 10 +#define TT_NAME_ID_VENDOR_URL 11 +#define TT_NAME_ID_DESIGNER_URL 12 +#define TT_NAME_ID_LICENSE 13 +#define TT_NAME_ID_LICENSE_URL 14 + /* number 15 is reserved */ +#define TT_NAME_ID_PREFERRED_FAMILY 16 +#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 +#define TT_NAME_ID_MAC_FULL_NAME 18 + + /* The following code is new as of 2000-01-21 */ +#define TT_NAME_ID_SAMPLE_TEXT 19 + + /* This is new in OpenType 1.3 */ +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + + + /*************************************************************************/ + /* */ + /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ + /* */ + /* Updated 08-Nov-2008. */ + /* */ + + /* Bit 0 Basic Latin */ +#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ + /* Bit 1 C1 Controls and Latin-1 Supplement */ +#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ + /* Bit 2 Latin Extended-A */ +#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ + /* Bit 3 Latin Extended-B */ +#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ +#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ + /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ +#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ +#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ + /* Bit 7 Greek and Coptic */ +#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ +#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ + /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ + /* Bit 10 Armenian */ +#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ + /* Bit 11 Hebrew */ +#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ +#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ + /* Bit 15 Devanagari */ +#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ + /* Bit 16 Bengali */ +#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ + /* Bit 17 Gurmukhi */ +#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ + /* Bit 18 Gujarati */ +#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ + /* Bit 19 Oriya */ +#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ + /* Bit 20 Tamil */ +#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ + /* Bit 21 Telugu */ +#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ + /* Bit 22 Kannada */ +#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ + /* Bit 23 Malayalam */ +#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ + /* Bit 24 Thai */ +#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ + /* Bit 25 Lao */ +#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ +#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ + /* Bit 28 Hangul Jamo */ +#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ + /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ +#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ + /* Bit 30 Greek Extended */ +#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ +#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ + /* Bit 32 Superscripts And Subscripts */ +#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ + /* Bit 33 Currency Symbols */ +#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ + /* Bit 34 Combining Diacritical Marks For Symbols */ +#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ + /* Bit 35 Letterlike Symbols */ +#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ + /* Bit 36 Number Forms */ +#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ +#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ + /* U+27F0-U+27FF */ + /* U+2900-U+297F */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ +#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ + /* U+2A00-U+2AFF */ + /* U+27C0-U+27EF */ + /* U+2980-U+29FF */ + /* Bit 39 Miscellaneous Technical */ +#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ + /* Bit 40 Control Pictures */ +#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ + /* Bit 41 Optical Character Recognition */ +#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ + /* Bit 42 Enclosed Alphanumerics */ +#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ + /* Bit 43 Box Drawing */ +#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ + /* Bit 44 Block Elements */ +#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ + /* Bit 45 Geometric Shapes */ +#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ + /* Bit 46 Miscellaneous Symbols */ +#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ + /* Bit 47 Dingbats */ +#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ + /* Bit 48 CJK Symbols and Punctuation */ +#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ + /* Bit 49 Hiragana */ +#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ +#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ + /* U+31F0-U+31FF */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ +#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ + /* U+31A0-U+31BF */ + /* Bit 52 Hangul Compatibility Jamo */ +#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA + /* Bit 54 Enclosed CJK Letters and Months */ +#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ + /* Bit 55 CJK Compatibility */ +#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ + /* Bit 56 Hangul Syllables */ +#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + /* */ + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000 */ +#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ + /* U+DB80-U+DBFF */ + /* U+DC00-U+DFFF */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ +#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ + /* U+2E80-U+2EFF */ + /* U+2F00-U+2FDF */ + /* U+2FF0-U+2FFF */ + /* U+3400-U+4DB5 */ + /*U+20000-U+2A6DF*/ + /* U+3190-U+319F */ + /* Bit 60 Private Use */ +#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ + /*U+2F800-U+2FA1F*/ + /* Bit 62 Alphabetic Presentation Forms */ +#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ + /* Bit 63 Arabic Presentation Forms-A */ +#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ + /* Bit 64 Combining Half Marks */ +#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ + /* Bit 66 Small Form Variants */ +#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ + /* Bit 67 Arabic Presentation Forms-B */ +#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ + /* Bit 68 Halfwidth and Fullwidth Forms */ +#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ + /* Bit 69 Specials */ +#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ + /* Bit 70 Tibetan */ +#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ + /* Bit 71 Syriac */ +#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ + /* Bit 72 Thaana */ +#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ + /* Bit 73 Sinhala */ +#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ + /* Bit 74 Myanmar */ +#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ +#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ + /* Bit 76 Cherokee */ +#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ + /* Bit 77 Unified Canadian Aboriginal Syllabics */ +#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ + /* Bit 78 Ogham */ +#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ + /* Bit 79 Runic */ +#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ +#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ + /* Bit 81 Mongolian */ +#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ + /* Bit 82 Braille Patterns */ +#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ +#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ + /* U+A490-U+A4CF */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ +#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ + /* U+1720-U+173F */ + /* U+1740-U+175F */ + /* U+1760-U+177F */ + /* Bit 85 Old Italic */ +#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ + /* Bit 86 Gothic */ +#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ + /* Bit 87 Deseret */ +#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ +#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ + /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ + /* Bit 89 Mathematical Alphanumeric Symbols */ +#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ +#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ + /*U+100000-U+10FFFD*/ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ +#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ + /* Bit 92 Tags */ +#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ + + + /*************************************************************************/ + /* */ + /* Some compilers have a very limited length of identifiers. */ + /* */ +#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) +#define HAVE_LIMIT_ON_IDENTS +#endif + + +#ifndef HAVE_LIMIT_ON_IDENTS + + + /*************************************************************************/ + /* */ + /* Here some alias #defines in order to be clearer. */ + /* */ + /* These are not always #defined to stay within the 31~character limit, */ + /* which some compilers have. */ + /* */ + /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ + /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ + /* If you get a warning with such a compiler, use the -i40 switch. */ + /* */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ + TT_UCR_ARABIC_PRESENTATIONS_A +#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ + TT_UCR_ARABIC_PRESENTATIONS_B + +#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ + TT_UCR_COMBINING_DIACRITICS +#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ + TT_UCR_COMBINING_DIACRITICS_SYMB + + +#endif /* !HAVE_LIMIT_ON_IDENTS */ + + +FT_END_HEADER + +#endif /* __TTNAMEID_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/tttables.h b/lib/osx/include/freetype/tttables.h new file mode 100644 index 0000000..1568f40 --- /dev/null +++ b/lib/osx/include/freetype/tttables.h @@ -0,0 +1,829 @@ +/***************************************************************************/ +/* */ +/* tttables.h */ +/* */ +/* Basic SFNT/TrueType tables definitions and interface */ +/* (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTABLES_H__ +#define __TTTABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + /* <Title> */ + /* TrueType Tables */ + /* */ + /* <Abstract> */ + /* TrueType specific table types and functions. */ + /* */ + /* <Description> */ + /* This section contains the definition of TrueType-specific tables */ + /* as well as some routines used to access and process them. */ + /* */ + /* <Order> */ + /* TT_Header */ + /* TT_HoriHeader */ + /* TT_VertHeader */ + /* TT_OS2 */ + /* TT_Postscript */ + /* TT_PCLT */ + /* TT_MaxProfile */ + /* */ + /* FT_Sfnt_Tag */ + /* FT_Get_Sfnt_Table */ + /* FT_Load_Sfnt_Table */ + /* FT_Sfnt_Table_Info */ + /* */ + /* FT_Get_CMap_Language_ID */ + /* FT_Get_CMap_Format */ + /* */ + /* FT_PARAM_TAG_UNPATENTED_HINTING */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Header */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType font header table. All */ + /* fields follow the TrueType specification. */ + /* */ + typedef struct TT_Header_ + { + FT_Fixed Table_Version; + FT_Fixed Font_Revision; + + FT_Long CheckSum_Adjust; + FT_Long Magic_Number; + + FT_UShort Flags; + FT_UShort Units_Per_EM; + + FT_Long Created [2]; + FT_Long Modified[2]; + + FT_Short xMin; + FT_Short yMin; + FT_Short xMax; + FT_Short yMax; + + FT_UShort Mac_Style; + FT_UShort Lowest_Rec_PPEM; + + FT_Short Font_Direction; + FT_Short Index_To_Loc_Format; + FT_Short Glyph_Data_Format; + + } TT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_HoriHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType horizontal header, the `hhea' */ + /* table, as well as the corresponding horizontal metrics table, */ + /* i.e., the `hmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of all */ + /* glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoAscender' field */ + /* of the OS/2 table instead if you want */ + /* the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the distance */ + /* from the baseline to the bottom-most of */ + /* all glyph points found in the font. It */ + /* is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Width_Max :: This field is the maximum of all advance */ + /* widths found in the font. It can be */ + /* used to compute the maximum width of an */ + /* arbitrary string of text. */ + /* */ + /* min_Left_Side_Bearing :: The minimum left side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Right_Side_Bearing :: The minimum right side bearing of all */ + /* glyphs within the font. */ + /* */ + /* xMax_Extent :: The maximum horizontal extent (i.e., the */ + /* `width' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ + /* table -- this value can be smaller than */ + /* the total number of glyphs in the font. */ + /* */ + /* long_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields, */ + /* which are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_HoriHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Width_Max; /* advance width maximum */ + + FT_Short min_Left_Side_Bearing; /* minimum left-sb */ + FT_Short min_Right_Side_Bearing; /* minimum right-sb */ + FT_Short xMax_Extent; /* xmax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_HMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* `HMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_HoriHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_VertHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType vertical header, the `vhea' */ + /* table, as well as the corresponding vertical metrics table, i.e., */ + /* the `vmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of */ + /* all glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoAscender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the */ + /* distance from the baseline to the */ + /* bottom-most of all glyph points found */ + /* in the font. It is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Height_Max :: This field is the maximum of all */ + /* advance heights found in the font. It */ + /* can be used to compute the maximum */ + /* height of an arbitrary string of text. */ + /* */ + /* min_Top_Side_Bearing :: The minimum top side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ + /* glyphs within the font. */ + /* */ + /* yMax_Extent :: The maximum vertical extent (i.e., the */ + /* `height' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* caret_Offset :: The cursor's offset for slanted fonts. */ + /* This value is `reserved' in vmtx */ + /* version 1.0. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of VMetrics entries in the */ + /* `vmtx' table -- this value can be */ + /* smaller than the total number of glyphs */ + /* in the font. */ + /* */ + /* long_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields, */ + /* which are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_VertHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Height_Max; /* advance height maximum */ + + FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ + FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ + FT_Short yMax_Extent; /* xmax or ymax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_VMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they're used to connect the metrics header to the relevant */ + /* `HMTX' or `VMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_VertHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_OS2 */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType OS/2 table. All fields */ + /* comply to the OpenType specification. */ + /* */ + /* Note that we now support old Mac fonts that do not include an OS/2 */ + /* table. In this case, the `version' field is always set to 0xFFFF. */ + /* */ + typedef struct TT_OS2_ + { + FT_UShort version; /* 0x0001 - more or 0xFFFF */ + FT_Short xAvgCharWidth; + FT_UShort usWeightClass; + FT_UShort usWidthClass; + FT_UShort fsType; + FT_Short ySubscriptXSize; + FT_Short ySubscriptYSize; + FT_Short ySubscriptXOffset; + FT_Short ySubscriptYOffset; + FT_Short ySuperscriptXSize; + FT_Short ySuperscriptYSize; + FT_Short ySuperscriptXOffset; + FT_Short ySuperscriptYOffset; + FT_Short yStrikeoutSize; + FT_Short yStrikeoutPosition; + FT_Short sFamilyClass; + + FT_Byte panose[10]; + + FT_ULong ulUnicodeRange1; /* Bits 0-31 */ + FT_ULong ulUnicodeRange2; /* Bits 32-63 */ + FT_ULong ulUnicodeRange3; /* Bits 64-95 */ + FT_ULong ulUnicodeRange4; /* Bits 96-127 */ + + FT_Char achVendID[4]; + + FT_UShort fsSelection; + FT_UShort usFirstCharIndex; + FT_UShort usLastCharIndex; + FT_Short sTypoAscender; + FT_Short sTypoDescender; + FT_Short sTypoLineGap; + FT_UShort usWinAscent; + FT_UShort usWinDescent; + + /* only version 1 and higher: */ + + FT_ULong ulCodePageRange1; /* Bits 0-31 */ + FT_ULong ulCodePageRange2; /* Bits 32-63 */ + + /* only version 2 and higher: */ + + FT_Short sxHeight; + FT_Short sCapHeight; + FT_UShort usDefaultChar; + FT_UShort usBreakChar; + FT_UShort usMaxContext; + + /* only version 5 and higher: */ + + FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ + FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ + + } TT_OS2; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Postscript */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PostScript table. All fields */ + /* comply to the TrueType specification. This structure does not */ + /* reference the PostScript glyph names, which can be nevertheless */ + /* accessed with the `ttpost' module. */ + /* */ + typedef struct TT_Postscript_ + { + FT_Fixed FormatType; + FT_Fixed italicAngle; + FT_Short underlinePosition; + FT_Short underlineThickness; + FT_ULong isFixedPitch; + FT_ULong minMemType42; + FT_ULong maxMemType42; + FT_ULong minMemType1; + FT_ULong maxMemType1; + + /* Glyph names follow in the file, but we don't */ + /* load them by default. See the ttpost.c file. */ + + } TT_Postscript; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_PCLT */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PCLT table. All fields */ + /* comply to the TrueType specification. */ + /* */ + typedef struct TT_PCLT_ + { + FT_Fixed Version; + FT_ULong FontNumber; + FT_UShort Pitch; + FT_UShort xHeight; + FT_UShort Style; + FT_UShort TypeFamily; + FT_UShort CapHeight; + FT_UShort SymbolSet; + FT_Char TypeFace[16]; + FT_Char CharacterComplement[8]; + FT_Char FileName[6]; + FT_Char StrokeWeight; + FT_Char WidthType; + FT_Byte SerifStyle; + FT_Byte Reserved; + + } TT_PCLT; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_MaxProfile */ + /* */ + /* <Description> */ + /* The maximum profile is a table containing many max values, which */ + /* can be used to pre-allocate arrays. This ensures that no memory */ + /* allocation occurs during a glyph load. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numGlyphs :: The number of glyphs in this TrueType */ + /* font. */ + /* */ + /* maxPoints :: The maximum number of points in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositePoints'. */ + /* */ + /* maxContours :: The maximum number of contours in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositeContours'. */ + /* */ + /* maxCompositePoints :: The maximum number of points in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxPoints'. */ + /* */ + /* maxCompositeContours :: The maximum number of contours in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxContours'. */ + /* */ + /* maxZones :: The maximum number of zones used for */ + /* glyph hinting. */ + /* */ + /* maxTwilightPoints :: The maximum number of points in the */ + /* twilight zone used for glyph hinting. */ + /* */ + /* maxStorage :: The maximum number of elements in the */ + /* storage area used for glyph hinting. */ + /* */ + /* maxFunctionDefs :: The maximum number of function */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxInstructionDefs :: The maximum number of instruction */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxStackElements :: The maximum number of stack elements used */ + /* during bytecode interpretation. */ + /* */ + /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ + /* used for glyph hinting. */ + /* */ + /* maxComponentElements :: The maximum number of simple (i.e., non- */ + /* composite) glyphs in a composite glyph. */ + /* */ + /* maxComponentDepth :: The maximum nesting depth of composite */ + /* glyphs. */ + /* */ + /* <Note> */ + /* This structure is only used during font loading. */ + /* */ + typedef struct TT_MaxProfile_ + { + FT_Fixed version; + FT_UShort numGlyphs; + FT_UShort maxPoints; + FT_UShort maxContours; + FT_UShort maxCompositePoints; + FT_UShort maxCompositeContours; + FT_UShort maxZones; + FT_UShort maxTwilightPoints; + FT_UShort maxStorage; + FT_UShort maxFunctionDefs; + FT_UShort maxInstructionDefs; + FT_UShort maxStackElements; + FT_UShort maxSizeOfInstructions; + FT_UShort maxComponentElements; + FT_UShort maxComponentDepth; + + } TT_MaxProfile; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Sfnt_Tag */ + /* */ + /* <Description> */ + /* An enumeration used to specify the index of an SFNT table. */ + /* Used in the @FT_Get_Sfnt_Table API function. */ + /* */ + /* <Values> */ + /* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */ + /* */ + /* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */ + /* */ + /* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */ + /* */ + /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ + /* */ + /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader struture. */ + /* */ + /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ + /* */ + /* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */ + /* */ + typedef enum FT_Sfnt_Tag_ + { + FT_SFNT_HEAD, + FT_SFNT_MAXP, + FT_SFNT_OS2, + FT_SFNT_HHEA, + FT_SFNT_VHEA, + FT_SFNT_POST, + FT_SFNT_PCLT, + + FT_SFNT_MAX + + } FT_Sfnt_Tag; + + /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ + /* values instead */ +#define ft_sfnt_head FT_SFNT_HEAD +#define ft_sfnt_maxp FT_SFNT_MAXP +#define ft_sfnt_os2 FT_SFNT_OS2 +#define ft_sfnt_hhea FT_SFNT_HHEA +#define ft_sfnt_vhea FT_SFNT_VHEA +#define ft_sfnt_post FT_SFNT_POST +#define ft_sfnt_pclt FT_SFNT_PCLT + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Table */ + /* */ + /* <Description> */ + /* Return a pointer to a given SFNT table within a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the source. */ + /* */ + /* tag :: The index of the SFNT table. */ + /* */ + /* <Return> */ + /* A type-less pointer to the table. This will be~0 in case of */ + /* error, or if the corresponding table was not found *OR* loaded */ + /* from the file. */ + /* */ + /* Use a typecast according to `tag' to access the structure */ + /* elements. */ + /* */ + /* <Note> */ + /* The table is owned by the face object and disappears with it. */ + /* */ + /* This function is only useful to access SFNT tables that are loaded */ + /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ + /* a list. */ + /* */ + /* Here an example how to access the `vhea' table: */ + /* */ + /* { */ + /* TT_VertHeader* vert_header; */ + /* */ + /* */ + /* vert_header = */ + /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ + /* } */ + /* */ + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + + /************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use the value~0 if you want + * to access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag == 0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length' parameter is NULL, then try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length' is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length' set to~0, as in the following example: + * + * { + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * } + * + * Note that structures like @TT_Header or @TT_OS2 can't be used with + * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that + * those structures depend on the processor architecture, with varying + * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). + * + */ + FT_EXPORT( FT_Error ) + FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + + /************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return information on an SFNT table. + * + * @input: + * face :: + * A handle to the source face. + * + * table_index :: + * The index of an SFNT table. The function returns + * FT_Err_Table_Missing for an invalid value. + * + * @inout: + * tag :: + * The name tag of the SFNT table. If the value is NULL, `table_index' + * is ignored, and `length' returns the number of SFNT tables in the + * font. + * + * @output: + * length :: + * The length of the SFNT table (or the number of SFNT tables, depending + * on `tag'). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While parsing fonts, FreeType handles SFNT tables with length zero as + * missing. + * + */ + FT_EXPORT( FT_Error ) + FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Language_ID */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap language ID. Definitions of */ + /* language ID values are in `ttnameid.h'. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The language ID of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, just return~0 as the default value. */ + /* */ + /* For a format~14 cmap (to access Unicode IVS), the return value is */ + /* 0xFFFFFFFF. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Format */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap format. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The format of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, return -1. */ + /* */ + FT_EXPORT( FT_Long ) + FT_Get_CMap_Format( FT_CharMap charmap ); + + /* */ + + +FT_END_HEADER + +#endif /* __TTTABLES_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/tttags.h b/lib/osx/include/freetype/tttags.h new file mode 100644 index 0000000..3836c7b --- /dev/null +++ b/lib/osx/include/freetype/tttags.h @@ -0,0 +1,111 @@ +/***************************************************************************/ +/* */ +/* tttags.h */ +/* */ +/* Tags for TrueType and OpenType tables (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTAGS_H__ +#define __TTAGS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) +#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' ) +#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) +#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' ) +#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) +#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) +#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) +#define TTAG_CBDT FT_MAKE_TAG( 'C', 'B', 'D', 'T' ) +#define TTAG_CBLC FT_MAKE_TAG( 'C', 'B', 'L', 'C' ) +#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) +#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) +#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) +#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) +#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) +#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) +#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) +#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) +#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) +#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) +#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) +#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) +#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' ) +#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) +#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) +#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) +#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) +#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) +#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) +#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) +#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) +#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) +#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) +#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) +#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) +#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) +#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) +#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) +#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) +#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) +#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) +#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) +#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) +#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) +#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) +#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) +#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) +#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) +#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) +#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) +#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sbix FT_MAKE_TAG( 's', 'b', 'i', 'x' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) +#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) +#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) +#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) +#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) +#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) +#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) +#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) +#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) +#define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' ) + + +FT_END_HEADER + +#endif /* __TTAGS_H__ */ + + +/* END */ diff --git a/lib/osx/include/freetype/ttunpat.h b/lib/osx/include/freetype/ttunpat.h new file mode 100644 index 0000000..8ea5568 --- /dev/null +++ b/lib/osx/include/freetype/ttunpat.h @@ -0,0 +1,60 @@ +/***************************************************************************/ +/* */ +/* ttunpat.h */ +/* */ +/* Definitions for the unpatented TrueType hinting system */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* Written by Graham Asher <graham.asher@btinternet.com> */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTUNPAT_H__ +#define __TTUNPAT_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * A constant used as the tag of an @FT_Parameter structure to indicate + * that unpatented methods only should be used by the TrueType bytecode + * interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + /* */ + + +FT_END_HEADER + + +#endif /* __TTUNPAT_H__ */ + + +/* END */ diff --git a/lib/osx/include/ft2build.h b/lib/osx/include/ft2build.h new file mode 100644 index 0000000..419b80a --- /dev/null +++ b/lib/osx/include/ft2build.h @@ -0,0 +1,42 @@ +/***************************************************************************/ +/* */ +/* ft2build.h */ +/* */ +/* FreeType 2 build and setup macros. */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This is the `entry point' for FreeType header file inclusions. It is */ + /* the only header file which should be included directly; all other */ + /* FreeType header files should be accessed with macro names (after */ + /* including `ft2build.h'). */ + /* */ + /* A typical example is */ + /* */ + /* #include <ft2build.h> */ + /* #include FT_FREETYPE_H */ + /* */ + /*************************************************************************/ + + +#ifndef __FT2BUILD_H__ +#define __FT2BUILD_H__ + +#include <freetype/config/ftheader.h> + +#endif /* __FT2BUILD_H__ */ + + +/* END */ diff --git a/lib/osx/include/jemalloc/jemalloc.h b/lib/osx/include/jemalloc/jemalloc.h new file mode 100644 index 0000000..ebd3cab --- /dev/null +++ b/lib/osx/include/jemalloc/jemalloc.h @@ -0,0 +1,379 @@ +#ifndef JEMALLOC_H_ +#define JEMALLOC_H_ +#ifdef __cplusplus +extern "C" { +#endif + +/* Defined if __attribute__((...)) syntax is supported. */ +#define JEMALLOC_HAVE_ATTR + +/* Defined if alloc_size attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_ALLOC_SIZE */ + +/* Defined if format(gnu_printf, ...) attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF */ + +/* Defined if format(printf, ...) attribute is supported. */ +#define JEMALLOC_HAVE_ATTR_FORMAT_PRINTF + +/* + * Define overrides for non-standard allocator-related functions if they are + * present on the system. + */ +/* #undef JEMALLOC_OVERRIDE_MEMALIGN */ +#define JEMALLOC_OVERRIDE_VALLOC + +/* + * At least Linux omits the "const" in: + * + * size_t malloc_usable_size(const void *ptr); + * + * Match the operating system's prototype. + */ +#define JEMALLOC_USABLE_SIZE_CONST const + +/* + * If defined, specify throw() for the public function prototypes when compiling + * with C++. The only justification for this is to match the prototypes that + * glibc defines. + */ +/* #undef JEMALLOC_USE_CXX_THROW */ + +#ifdef _MSC_VER +# ifdef _WIN64 +# define LG_SIZEOF_PTR_WIN 3 +# else +# define LG_SIZEOF_PTR_WIN 2 +# endif +#endif + +/* sizeof(void *) == 2^LG_SIZEOF_PTR. */ +#define LG_SIZEOF_PTR 3 + +/* + * Name mangling for public symbols is controlled by --with-mangling and + * --with-jemalloc-prefix. With default settings the je_ prefix is stripped by + * these macro definitions. + */ +#ifndef JEMALLOC_NO_RENAME +# define je_malloc_conf je_malloc_conf +# define je_malloc_message je_malloc_message +# define je_malloc je_malloc +# define je_calloc je_calloc +# define je_posix_memalign je_posix_memalign +# define je_aligned_alloc je_aligned_alloc +# define je_realloc je_realloc +# define je_free je_free +# define je_mallocx je_mallocx +# define je_rallocx je_rallocx +# define je_xallocx je_xallocx +# define je_sallocx je_sallocx +# define je_dallocx je_dallocx +# define je_sdallocx je_sdallocx +# define je_nallocx je_nallocx +# define je_mallctl je_mallctl +# define je_mallctlnametomib je_mallctlnametomib +# define je_mallctlbymib je_mallctlbymib +# define je_malloc_stats_print je_malloc_stats_print +# define je_malloc_usable_size je_malloc_usable_size +# define je_valloc je_valloc +#endif + +#include <stdlib.h> +#include <stdbool.h> +#include <stdint.h> +#include <limits.h> +#include <strings.h> + +#define JEMALLOC_VERSION "4.2.1-0-g3de035335255d553bdb344c32ffdb603816195d8" +#define JEMALLOC_VERSION_MAJOR 4 +#define JEMALLOC_VERSION_MINOR 2 +#define JEMALLOC_VERSION_BUGFIX 1 +#define JEMALLOC_VERSION_NREV 0 +#define JEMALLOC_VERSION_GID "3de035335255d553bdb344c32ffdb603816195d8" + +# define MALLOCX_LG_ALIGN(la) ((int)(la)) +# if LG_SIZEOF_PTR == 2 +# define MALLOCX_ALIGN(a) ((int)(ffs((int)(a))-1)) +# else +# define MALLOCX_ALIGN(a) \ + ((int)(((size_t)(a) < (size_t)INT_MAX) ? ffs((int)(a))-1 : \ + ffs((int)(((size_t)(a))>>32))+31)) +# endif +# define MALLOCX_ZERO ((int)0x40) +/* + * Bias tcache index bits so that 0 encodes "automatic tcache management", and 1 + * encodes MALLOCX_TCACHE_NONE. + */ +# define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8)) +# define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1) +/* + * Bias arena index bits so that 0 encodes "use an automatically chosen arena". + */ +# define MALLOCX_ARENA(a) ((((int)(a))+1) << 20) + +#if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW) +# define JEMALLOC_CXX_THROW throw() +#else +# define JEMALLOC_CXX_THROW +#endif + +#if _MSC_VER +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) __declspec(align(s)) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# ifndef JEMALLOC_EXPORT +# ifdef DLLEXPORT +# define JEMALLOC_EXPORT __declspec(dllexport) +# else +# define JEMALLOC_EXPORT __declspec(dllimport) +# endif +# endif +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE __declspec(noinline) +# ifdef __cplusplus +# define JEMALLOC_NOTHROW __declspec(nothrow) +# else +# define JEMALLOC_NOTHROW +# endif +# define JEMALLOC_SECTION(s) __declspec(allocate(s)) +# define JEMALLOC_RESTRICT_RETURN __declspec(restrict) +# if _MSC_VER >= 1900 && !defined(__EDG__) +# define JEMALLOC_ALLOCATOR __declspec(allocator) +# else +# define JEMALLOC_ALLOCATOR +# endif +#elif defined(JEMALLOC_HAVE_ATTR) +# define JEMALLOC_ATTR(s) __attribute__((s)) +# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s)) +# ifdef JEMALLOC_HAVE_ATTR_ALLOC_SIZE +# define JEMALLOC_ALLOC_SIZE(s) JEMALLOC_ATTR(alloc_size(s)) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) JEMALLOC_ATTR(alloc_size(s1, s2)) +# else +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# endif +# ifndef JEMALLOC_EXPORT +# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default")) +# endif +# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i)) +# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF) +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(printf, s, i)) +# else +# define JEMALLOC_FORMAT_PRINTF(s, i) +# endif +# define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline) +# define JEMALLOC_NOTHROW JEMALLOC_ATTR(nothrow) +# define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s)) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#else +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# define JEMALLOC_EXPORT +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE +# define JEMALLOC_NOTHROW +# define JEMALLOC_SECTION(s) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#endif + +/* + * The je_ prefix on the following public symbol declarations is an artifact + * of namespace management, and should be omitted in application code unless + * JEMALLOC_NO_DEMANGLE is defined (see jemalloc_mangle.h). + */ +extern JEMALLOC_EXPORT const char *je_malloc_conf; +extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque, + const char *s); + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_malloc(size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_calloc(size_t num, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_posix_memalign(void **memptr, + size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1)); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_aligned_alloc(size_t alignment, + size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) + JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_realloc(void *ptr, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr) + JEMALLOC_CXX_THROW; + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_mallocx(size_t size, int flags) + JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_rallocx(void *ptr, size_t size, + int flags) JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_xallocx(void *ptr, size_t size, + size_t extra, int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_sallocx(const void *ptr, + int flags) JEMALLOC_ATTR(pure); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_dallocx(void *ptr, int flags); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size, + int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_nallocx(size_t size, int flags) + JEMALLOC_ATTR(pure); + +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctl(const char *name, + void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlnametomib(const char *name, + size_t *mibp, size_t *miblenp); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_malloc_stats_print( + void (*write_cb)(void *, const char *), void *je_cbopaque, + const char *opts); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size( + JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW; + +#ifdef JEMALLOC_OVERRIDE_MEMALIGN +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_memalign(size_t alignment, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc); +#endif + +#ifdef JEMALLOC_OVERRIDE_VALLOC +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_valloc(size_t size) JEMALLOC_CXX_THROW + JEMALLOC_ATTR(malloc); +#endif + +/* + * void * + * chunk_alloc(void *new_addr, size_t size, size_t alignment, bool *zero, + * bool *commit, unsigned arena_ind); + */ +typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); + +/* + * bool + * chunk_dalloc(void *chunk, size_t size, bool committed, unsigned arena_ind); + */ +typedef bool (chunk_dalloc_t)(void *, size_t, bool, unsigned); + +/* + * bool + * chunk_commit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_commit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_decommit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_decommit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_purge(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_purge_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_split(void *chunk, size_t size, size_t size_a, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_split_t)(void *, size_t, size_t, size_t, bool, unsigned); + +/* + * bool + * chunk_merge(void *chunk_a, size_t size_a, void *chunk_b, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_merge_t)(void *, size_t, void *, size_t, bool, unsigned); + +typedef struct { + chunk_alloc_t *alloc; + chunk_dalloc_t *dalloc; + chunk_commit_t *commit; + chunk_decommit_t *decommit; + chunk_purge_t *purge; + chunk_split_t *split; + chunk_merge_t *merge; +} chunk_hooks_t; + +/* + * By default application code must explicitly refer to mangled symbol names, + * so that it is possible to use jemalloc in conjunction with another allocator + * in the same application. Define JEMALLOC_MANGLE in order to cause automatic + * name mangling that matches the API prefixing that happened as a result of + * --with-mangling and/or --with-jemalloc-prefix configuration settings. + */ +#ifdef JEMALLOC_MANGLE +# ifndef JEMALLOC_NO_DEMANGLE +# define JEMALLOC_NO_DEMANGLE +# endif +# define malloc_conf je_malloc_conf +# define malloc_message je_malloc_message +# define malloc je_malloc +# define calloc je_calloc +# define posix_memalign je_posix_memalign +# define aligned_alloc je_aligned_alloc +# define realloc je_realloc +# define free je_free +# define mallocx je_mallocx +# define rallocx je_rallocx +# define xallocx je_xallocx +# define sallocx je_sallocx +# define dallocx je_dallocx +# define sdallocx je_sdallocx +# define nallocx je_nallocx +# define mallctl je_mallctl +# define mallctlnametomib je_mallctlnametomib +# define mallctlbymib je_mallctlbymib +# define malloc_stats_print je_malloc_stats_print +# define malloc_usable_size je_malloc_usable_size +# define valloc je_valloc +#endif + +/* + * The je_* macros can be used as stable alternative names for the + * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily + * meant for use in jemalloc itself, but it can be used by application code to + * provide isolation from the name mangling specified via --with-mangling + * and/or --with-jemalloc-prefix. + */ +#ifndef JEMALLOC_NO_DEMANGLE +# undef je_malloc_conf +# undef je_malloc_message +# undef je_malloc +# undef je_calloc +# undef je_posix_memalign +# undef je_aligned_alloc +# undef je_realloc +# undef je_free +# undef je_mallocx +# undef je_rallocx +# undef je_xallocx +# undef je_sallocx +# undef je_dallocx +# undef je_sdallocx +# undef je_nallocx +# undef je_mallctl +# undef je_mallctlnametomib +# undef je_mallctlbymib +# undef je_malloc_stats_print +# undef je_malloc_usable_size +# undef je_valloc +#endif + +#ifdef __cplusplus +} +#endif +#endif /* JEMALLOC_H_ */ diff --git a/lib/osx/include/ogg/config_types.h b/lib/osx/include/ogg/config_types.h new file mode 100644 index 0000000..4b00047 --- /dev/null +++ b/lib/osx/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/lib/osx/include/ogg/ogg.h b/lib/osx/include/ogg/ogg.h new file mode 100644 index 0000000..cea4ebe --- /dev/null +++ b/lib/osx/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/lib/osx/include/ogg/os_types.h b/lib/osx/include/ogg/os_types.h new file mode 100644 index 0000000..8bf8210 --- /dev/null +++ b/lib/osx/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/lib/osx/include/png.h b/lib/osx/include/png.h new file mode 100644 index 0000000..f2013cf --- /dev/null +++ b/lib/osx/include/png.h @@ -0,0 +1,3265 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.6.18, July 23, 2015 + * + * Copyright (c) 1998-2015 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.6.18, July 23, 2015: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 12.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 12.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-7 13 10210 12.so.0.10[.0] + * 1.2.10rc1-2 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.4.0beta1-5 14 10400 14.so.0.0[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.4.0beta7-8 14 10400 14.so.0.0[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.4.0beta9-14 14 10400 14.so.0.0[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.4.0beta15-36 14 10400 14.so.0.0[.0] + * 1.4.0beta37-87 14 10400 14.so.14.0[.0] + * 1.4.0rc01 14 10400 14.so.14.0[.0] + * 1.4.0beta88-109 14 10400 14.so.14.0[.0] + * 1.4.0rc02-08 14 10400 14.so.14.0[.0] + * 1.4.0 14 10400 14.so.14.0[.0] + * 1.4.1beta01-03 14 10401 14.so.14.1[.0] + * 1.4.1rc01 14 10401 14.so.14.1[.0] + * 1.4.1beta04-12 14 10401 14.so.14.1[.0] + * 1.4.1 14 10401 14.so.14.1[.0] + * 1.4.2 14 10402 14.so.14.2[.0] + * 1.4.3 14 10403 14.so.14.3[.0] + * 1.4.4 14 10404 14.so.14.4[.0] + * 1.5.0beta01-58 15 10500 15.so.15.0[.0] + * 1.5.0rc01-07 15 10500 15.so.15.0[.0] + * 1.5.0 15 10500 15.so.15.0[.0] + * 1.5.1beta01-11 15 10501 15.so.15.1[.0] + * 1.5.1rc01-02 15 10501 15.so.15.1[.0] + * 1.5.1 15 10501 15.so.15.1[.0] + * 1.5.2beta01-03 15 10502 15.so.15.2[.0] + * 1.5.2rc01-03 15 10502 15.so.15.2[.0] + * 1.5.2 15 10502 15.so.15.2[.0] + * 1.5.3beta01-10 15 10503 15.so.15.3[.0] + * 1.5.3rc01-02 15 10503 15.so.15.3[.0] + * 1.5.3beta11 15 10503 15.so.15.3[.0] + * 1.5.3 [omitted] + * 1.5.4beta01-08 15 10504 15.so.15.4[.0] + * 1.5.4rc01 15 10504 15.so.15.4[.0] + * 1.5.4 15 10504 15.so.15.4[.0] + * 1.5.5beta01-08 15 10505 15.so.15.5[.0] + * 1.5.5rc01 15 10505 15.so.15.5[.0] + * 1.5.5 15 10505 15.so.15.5[.0] + * 1.5.6beta01-07 15 10506 15.so.15.6[.0] + * 1.5.6rc01-03 15 10506 15.so.15.6[.0] + * 1.5.6 15 10506 15.so.15.6[.0] + * 1.5.7beta01-05 15 10507 15.so.15.7[.0] + * 1.5.7rc01-03 15 10507 15.so.15.7[.0] + * 1.5.7 15 10507 15.so.15.7[.0] + * 1.6.0beta01-40 16 10600 16.so.16.0[.0] + * 1.6.0rc01-08 16 10600 16.so.16.0[.0] + * 1.6.0 16 10600 16.so.16.0[.0] + * 1.6.1beta01-09 16 10601 16.so.16.1[.0] + * 1.6.1rc01 16 10601 16.so.16.1[.0] + * 1.6.1 16 10601 16.so.16.1[.0] + * 1.6.2beta01 16 10602 16.so.16.2[.0] + * 1.6.2rc01-06 16 10602 16.so.16.2[.0] + * 1.6.2 16 10602 16.so.16.2[.0] + * 1.6.3beta01-11 16 10603 16.so.16.3[.0] + * 1.6.3rc01 16 10603 16.so.16.3[.0] + * 1.6.3 16 10603 16.so.16.3[.0] + * 1.6.4beta01-02 16 10604 16.so.16.4[.0] + * 1.6.4rc01 16 10604 16.so.16.4[.0] + * 1.6.4 16 10604 16.so.16.4[.0] + * 1.6.5 16 10605 16.so.16.5[.0] + * 1.6.6 16 10606 16.so.16.6[.0] + * 1.6.7beta01-04 16 10607 16.so.16.7[.0] + * 1.6.7rc01-03 16 10607 16.so.16.7[.0] + * 1.6.7 16 10607 16.so.16.7[.0] + * 1.6.8beta01-02 16 10608 16.so.16.8[.0] + * 1.6.8rc01-02 16 10608 16.so.16.8[.0] + * 1.6.8 16 10608 16.so.16.8[.0] + * 1.6.9beta01-04 16 10609 16.so.16.9[.0] + * 1.6.9rc01-02 16 10609 16.so.16.9[.0] + * 1.6.9 16 10609 16.so.16.9[.0] + * 1.6.10beta01-03 16 10610 16.so.16.10[.0] + * 1.6.10rc01-03 16 10610 16.so.16.10[.0] + * 1.6.10 16 10610 16.so.16.10[.0] + * 1.6.11beta01-06 16 10611 16.so.16.11[.0] + * 1.6.11rc01-02 16 10611 16.so.16.11[.0] + * 1.6.11 16 10611 16.so.16.11[.0] + * 1.6.12rc01-03 16 10612 16.so.16.12[.0] + * 1.6.12 16 10612 16.so.16.12[.0] + * 1.6.13beta01-04 16 10613 16.so.16.13[.0] + * 1.6.13rc01-02 16 10613 16.so.16.13[.0] + * 1.6.13 16 10613 16.so.16.13[.0] + * 1.6.14beta01-07 16 10614 16.so.16.14[.0] + * 1.6.14rc01-02 16 10614 16.so.16.14[.0] + * 1.6.14 16 10614 16.so.16.14[.0] + * 1.6.15beta01-08 16 10615 16.so.16.15[.0] + * 1.6.15rc01-03 16 10615 16.so.16.15[.0] + * 1.6.15 16 10615 16.so.16.15[.0] + * 1.6.16beta01-03 16 10616 16.so.16.16[.0] + * 1.6.16rc01-02 16 10616 16.so.16.16[.0] + * 1.6.16 16 10616 16.so.16.16[.0] + * 1.6.17beta01-06 16 10617 16.so.16.17[.0] + * 1.6.17rc01-06 16 10617 16.so.16.17[.0] + * 1.6.17 16 10617 16.so.16.17[.0] + * 1.6.18beta01-09 16 10618 16.so.16.18[.0] + * 1.6.18rc01-03 16 10618 16.so.16.18[.0] + * 1.6.18 16 10618 16.so.16.18[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcNN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng-manual.txt or libpng.3 for more information. The PNG + * specification is available as a W3C Recommendation and as an ISO + * Specification, <http://www.w3.org/TR/2003/REC-PNG-20031110/ + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + * + * If you modify libpng you may insert additional notices immediately following + * this sentence. + * + * This code is released under the libpng license. + * + * libpng versions 1.0.7, July 1, 2000, through 1.6.18, July 23, 2015, are + * Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.0.6 + * with the following individuals added to the list of Contributing Authors: + * + * Simon-Pierre Cadieux + * Mans Rullgard + * Cosmin Truta + * Gilles Vollant + * James Yu + * + * and with the following additions to the disclaimer: + * + * There is no warranty against interference with your enjoyment of the + * library or against infringement. There is no warranty that our + * efforts or the library will fulfill any of your particular purposes + * or needs. This library is provided with all faults, and the entire + * risk of satisfactory quality, performance, accuracy, and effort is with + * the user. + * + * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + * Copyright (c) 1998-2000 Glenn Randers-Pehrson, and are distributed according + * to the same disclaimer and license as libpng-0.96, with the following + * individuals added to the list of Contributing Authors: + * + * Tom Lane + * Glenn Randers-Pehrson + * Eric S. Raymond + * Willem van Schaik + * + * libpng versions 0.89, June 1996, through 0.96, May 1997, are + * Copyright (c) 1996-1997 Andreas Dilger, and are + * distributed according to the same disclaimer and license as libpng-0.88, + * with the following individuals added to the list of Contributing Authors: + * + * John Bowler + * Kevin Bracey + * Sam Bushell + * Magnus Holmgren + * Greg Roelofs + * Tom Tanner + * + * libpng versions 0.5, May 1995, through 0.88, January 1996, are + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + * + * For the purposes of this copyright and license, "Contributing Authors" + * is defined as the following set of individuals: + * + * Andreas Dilger + * Dave Martindale + * Guy Eric Schalnat + * Paul Schmidt + * Tim Wegner + * + * The PNG Reference Library is supplied "AS IS". The Contributing Authors + * and Group 42, Inc. disclaim all warranties, expressed or implied, + * including, without limitation, the warranties of merchantability and of + * fitness for any purpose. The Contributing Authors and Group 42, Inc. + * assume no liability for direct, indirect, incidental, special, exemplary, + * or consequential damages, which may result from the use of the PNG + * Reference Library, even if advised of the possibility of such damage. + * + * Permission is hereby granted to use, copy, modify, and distribute this + * source code, or portions hereof, for any purpose, without fee, subject + * to the following restrictions: + * + * 1. The origin of this source code must not be misrepresented. + * + * 2. Altered versions must be plainly marked as such and must not + * be misrepresented as being the original source. + * + * 3. This Copyright notice may not be removed or altered from any + * source or altered source distribution. + * + * The Contributing Authors and Group 42, Inc. specifically permit, without + * fee, and encourage the use of this source code as a component to + * supporting the PNG file format in commercial products. If you use this + * source code in a product, acknowledgment is not required but would be + * appreciated. + */ + +/* + * A "png_get_copyright" function is available, for convenient use in "about" + * boxes and the like: + * + * printf("%s", png_get_copyright(NULL)); + * + * Also, the PNG logo (in PNG format, of course) is supplied in the + * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + */ + +/* + * Libpng is OSI Certified Open Source Software. OSI Certified Open Source is + * a certification mark of the Open Source Initiative. OSI has not addressed + * the additional disclaimers inserted at version 1.0.7. + */ + +/* + * The contributing authors would like to thank all those who helped + * with testing, bug fixes, and patience. This wouldn't have been + * possible without all of you. + * + * Thanks to Frank J. T. Wojcik for helping with the documentation. + */ + +/* + * Y2K compliance in libpng: + * ========================= + * + * July 23, 2015 + * + * Since the PNG Development group is an ad-hoc body, we can't make + * an official declaration. + * + * This is your unofficial assurance that libpng from version 0.71 and + * upward through 1.6.18 are Y2K compliant. It is my belief that + * earlier versions were also Y2K compliant. + * + * Libpng only has two year fields. One is a 2-byte unsigned integer + * that will hold years up to 65535. The other, which is deprecated, + * holds the date in text format, and will hold years up to 9999. + * + * The integer is + * "png_uint_16 year" in png_time_struct. + * + * The string is + * "char time_buffer[29]" in png_struct. This is no longer used + * in libpng-1.6.x and will be removed from libpng-1.7.0. + * + * There are seven time-related functions: + * png.c: png_convert_to_rfc_1123_buffer() in png.c + * (formerly png_convert_to_rfc_1123() prior to libpng-1.5.x and + * png_convert_to_rfc_1152() in error prior to libpng-0.98) + * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c + * png_convert_from_time_t() in pngwrite.c + * png_get_tIME() in pngget.c + * png_handle_tIME() in pngrutil.c, called in pngread.c + * png_set_tIME() in pngset.c + * png_write_tIME() in pngwutil.c, called in pngwrite.c + * + * All handle dates properly in a Y2K environment. The + * png_convert_from_time_t() function calls gmtime() to convert from system + * clock time, which returns (year - 1900), which we properly convert to + * the full 4-digit year. There is a possibility that libpng applications + * are not passing 4-digit years into the png_convert_to_rfc_1123_buffer() + * function, or that they are incorrectly passing only a 2-digit year + * instead of "year - 1900" into the png_convert_from_struct_tm() function, + * but this is not under our control. The libpng documentation has always + * stated that it works with 4-digit years, and the APIs have been + * documented as such. + * + * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned + * integer to hold the year, and can hold years as large as 65535. + * + * zlib, upon which libpng depends, is also Y2K compliant. It contains + * no date-related code. + * + * Glenn Randers-Pehrson + * libpng maintainer + * PNG Development Group + */ + +#ifndef PNG_H +#define PNG_H + +/* This is not the place to learn how to use libpng. The file libpng-manual.txt + * describes how to use libpng, and the file example.c summarizes it + * with some code on which to build. This file is useful for looking + * at the actual function definitions and structure components. If that + * file has been stripped from your copy of libpng, you can find it at + * <http://www.libpng.org/pub/png/libpng-manual.txt> + * + * If you just need to read a PNG file and don't want to read the documentation + * skip to the end of this file and read the section entitled 'simplified API'. + */ + +/* Version information for png.h - this should match the version in png.c */ +#define PNG_LIBPNG_VER_STRING "1.6.18" +#define PNG_HEADER_VERSION_STRING \ + " libpng version 1.6.18 - July 23, 2015\n" + +#define PNG_LIBPNG_VER_SONUM 16 +#define PNG_LIBPNG_VER_DLLNUM 16 + +/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ +#define PNG_LIBPNG_VER_MAJOR 1 +#define PNG_LIBPNG_VER_MINOR 6 +#define PNG_LIBPNG_VER_RELEASE 18 + +/* This should match the numeric part of the final component of + * PNG_LIBPNG_VER_STRING, omitting any leading zero: + */ + +#define PNG_LIBPNG_VER_BUILD 0 + +/* Release Status */ +#define PNG_LIBPNG_BUILD_ALPHA 1 +#define PNG_LIBPNG_BUILD_BETA 2 +#define PNG_LIBPNG_BUILD_RC 3 +#define PNG_LIBPNG_BUILD_STABLE 4 +#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 + +/* Release-Specific Flags */ +#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with + PNG_LIBPNG_BUILD_STABLE only */ +#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_SPECIAL */ +#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_PRIVATE */ + +#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE + +/* Careful here. At one time, Guy wanted to use 082, but that would be octal. + * We must not include leading zeros. + * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only + * version 1.0.0 was mis-numbered 100 instead of 10000). From + * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release + */ +#define PNG_LIBPNG_VER 10618 /* 1.6.18 */ + +/* Library configuration: these options cannot be changed after + * the library has been built. + */ +#ifndef PNGLCONF_H + /* If pnglibconf.h is missing, you can + * copy scripts/pnglibconf.h.prebuilt to pnglibconf.h + */ +# include "pnglibconf.h" +#endif + +#ifndef PNG_VERSION_INFO_ONLY + /* Machine specific configuration. */ +# include "pngconf.h" +#endif + +/* + * Added at libpng-1.2.8 + * + * Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#define png_libpng_ver png_get_header_ver(NULL) + +/* This file is arranged in several sections: + * + * 1. Any configuration options that can be specified by for the application + * code when it is built. (Build time configuration is in pnglibconf.h) + * 2. Type definitions (base types are defined in pngconf.h), structure + * definitions. + * 3. Exported library functions. + * 4. Simplified API. + * + * The library source code has additional files (principally pngpriv.h) that + * allow configuration of the library. + */ +/* Section 1: run time configuration + * See pnglibconf.h for build time configuration + * + * Run time configuration allows the application to choose between + * implementations of certain arithmetic APIs. The default is set + * at build time and recorded in pnglibconf.h, but it is safe to + * override these (and only these) settings. Note that this won't + * change what the library does, only application code, and the + * settings can (and probably should) be made on a per-file basis + * by setting the #defines before including png.h + * + * Use macros to read integers from PNG data or use the exported + * functions? + * PNG_USE_READ_MACROS: use the macros (see below) Note that + * the macros evaluate their argument multiple times. + * PNG_NO_USE_READ_MACROS: call the relevant library function. + * + * Use the alternative algorithm for compositing alpha samples that + * does not use division? + * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' + * algorithm. + * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. + * + * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is + * false? + * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error + * APIs to png_warning. + * Otherwise the calls are mapped to png_error. + */ + +/* Section 2: type definitions, including structures and compile time + * constants. + * See pngconf.h for base types that vary by machine/system + */ + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef char* png_libpng_version_1_6_18; + +/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. + * + * png_struct is the cache of information used while reading or writing a single + * PNG file. One of these is always required, although the simplified API + * (below) hides the creation and destruction of it. + */ +typedef struct png_struct_def png_struct; +typedef const png_struct * png_const_structp; +typedef png_struct * png_structp; +typedef png_struct * * png_structpp; + +/* png_info contains information read from or to be written to a PNG file. One + * or more of these must exist while reading or creating a PNG file. The + * information is not used by libpng during read but is used to control what + * gets written when a PNG file is created. "png_get_" function calls read + * information during read and "png_set_" functions calls write information + * when creating a PNG. + * been moved into a separate header file that is not accessible to + * applications. Read libpng-manual.txt or libpng.3 for more info. + */ +typedef struct png_info_def png_info; +typedef png_info * png_infop; +typedef const png_info * png_const_infop; +typedef png_info * * png_infopp; + +/* Types with names ending 'p' are pointer types. The corresponding types with + * names ending 'rp' are identical pointer types except that the pointer is + * marked 'restrict', which means that it is the only pointer to the object + * passed to the function. Applications should not use the 'restrict' types; + * it is always valid to pass 'p' to a pointer with a function argument of the + * corresponding 'rp' type. Different compilers have different rules with + * regard to type matching in the presence of 'restrict'. For backward + * compatibility libpng callbacks never have 'restrict' in their parameters and, + * consequentially, writing portable application code is extremely difficult if + * an attempt is made to use 'restrict'. + */ +typedef png_struct * PNG_RESTRICT png_structrp; +typedef const png_struct * PNG_RESTRICT png_const_structrp; +typedef png_info * PNG_RESTRICT png_inforp; +typedef const png_info * PNG_RESTRICT png_const_inforp; + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color * png_colorp; +typedef const png_color * png_const_colorp; +typedef png_color * * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 * png_color_16p; +typedef const png_color_16 * png_const_color_16p; +typedef png_color_16 * * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 * png_color_8p; +typedef const png_color_8 * png_const_color_8p; +typedef png_color_8 * * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry * png_sPLT_entryp; +typedef const png_sPLT_entry * png_const_sPLT_entryp; +typedef png_sPLT_entry * * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t * png_sPLT_tp; +typedef const png_sPLT_t * png_const_sPLT_tp; +typedef png_sPLT_t * * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text" fields can be a + * regular C string, an empty string, or a NULL pointer. + * However, the structure returned by png_get_text() will always contain + * the "text" field as a regular zero-terminated C string (possibly + * empty), never a NULL pointer, so it can be safely used in printf() and + * other string-handling functions. Note that the "itxt_length", "lang", and + * "lang_key" members of the structure only exist when the library is built + * with iTXt chunk support. Prior to libpng-1.4.0 the library was built by + * default without iTXt support. Also note that when iTXt *is* supported, + * the "lang" and "lang_key" fields contain NULL pointers when the + * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or + * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the + * same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag" + * which is always 0 or 1, or its "compression method" which is always 0. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +} png_text; +typedef png_text * png_textp; +typedef const png_text * png_const_textp; +typedef png_text * * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time * png_timep; +typedef const png_time * png_const_timep; +typedef png_time * * png_timepp; + +#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) ||\ + defined(PNG_USER_CHUNKS_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + * + * The data in the structure is set by libpng on read and used on write. + */ +typedef struct png_unknown_chunk_t +{ + png_byte name[5]; /* Textual chunk name with '\0' terminator */ + png_byte *data; /* Data, should not be modified on read! */ + png_size_t size; + + /* On write 'location' must be set using the flag values listed below. + * Notice that on read it is set by libpng however the values stored have + * more bits set than are listed below. Always treat the value as a + * bitmask. On write set only one bit - setting multiple bits may cause the + * chunk to be written in multiple places. + */ + png_byte location; /* mode of operation at read time */ +} +png_unknown_chunk; + +typedef png_unknown_chunk * png_unknown_chunkp; +typedef const png_unknown_chunk * png_const_unknown_chunkp; +typedef png_unknown_chunk * * png_unknown_chunkpp; +#endif + +/* Flag values for the unknown chunk location byte. */ +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_AFTER_IDAT 0x08 + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) + +/* These are constants for fixed point values encoded in the + * PNG specification manner (x100000) + */ +#define PNG_FP_1 100000 +#define PNG_FP_HALF 50000 +#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL) +#define PNG_FP_MIN (-PNG_FP_MAX) + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_<chunk> defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000 /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info * png_row_infop; +typedef png_row_info * * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. Note that the 'write' function must not + * modify the buffer it is passed. The 'read' function, on the other hand, is + * expected to return the read data in the buffer. + */ +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); + +/* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +/* not used anywhere */ +/* typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); */ +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This must match the function definition in <setjmp.h>, and the application + * must include this before png.h to obtain the definition of jmp_buf. The + * function is required to be PNG_NORETURN, but this is not checked. If the + * function does return the application will crash via an abort() or similar + * system level call. + * + * If you get a warning here while building the library you may need to make + * changes to ensure that pnglibconf.h records the calling convention used by + * your compiler. This may be very difficult - try using a different compiler + * to build the library! + */ +PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.4.0 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ +/* Added to libpng-1.5.4 */ +#define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ +#define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +/* NOTE: prior to 1.5 these functions had no 'API' style declaration, + * this allowed the zlib default functions to be used on Windows + * platforms. In 1.5 the zlib default malloc (which just calls malloc and + * ignores the first argument) should be completely compatible with the + * following. + */ +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); + +/* Section 3: exported functions + * Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng-manual.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + * + * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in + * pngconf.h and in the *.dfn files in the scripts directory. + * + * PNG_EXPORT(ordinal, type, name, (args)); + * + * ordinal: ordinal that is used while building + * *.def files. The ordinal value is only + * relevant when preprocessing png.h with + * the *.dfn files for building symbol table + * entries, and are removed by pngconf.h. + * type: return type of the function + * name: function name + * args: function arguments, with types + * + * When we wish to append attributes to a function prototype we use + * the PNG_EXPORTA() macro instead. + * + * PNG_EXPORTA(ordinal, type, name, (args), attributes); + * + * ordinal, type, name, and args: same as in PNG_EXPORT(). + * attributes: function attributes + */ + +/* Returns the version number of the library */ +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); + +/* Tell lib we have already handled the first <num_bytes> magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +PNG_EXPORTA(4, png_structp, png_create_read_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +PNG_EXPORTA(5, png_structp, png_create_write_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); + +PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, + (png_const_structrp png_ptr)); + +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr, + png_size_t size)); + +/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp + * match up. + */ +#ifdef PNG_SETJMP_SUPPORTED +/* This function returns the jmp_buf built in to *png_ptr. It must be + * supplied with an appropriate 'longjmp' function to use on that jmp_buf + * unless the default error function is overridden in which case NULL is + * acceptable. The size of the jmp_buf is checked against the actual size + * allocated by the library - the call will return NULL on a mismatch + * indicating an ABI mismatch. + */ +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); +# define png_jmpbuf(png_ptr) \ + (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) +#endif +/* This function should be used by libpng applications in place of + * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it + * will use it; otherwise it will call PNG_ABORT(). This function was + * added in libpng-1.5.0. + */ +PNG_EXPORTA(9, void, png_longjmp, (png_const_structrp png_ptr, int val), + PNG_NORETURN); + +#ifdef PNG_READ_SUPPORTED +/* Reset the compression stream */ +PNG_EXPORTA(10, int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED); +#endif + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(11, png_structp, png_create_read_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +PNG_EXPORTA(12, png_structp, png_create_write_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +#endif + +/* Write the PNG file signature. */ +PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr)); + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr, + png_const_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr, + png_const_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr)); + +/* Allocate and initialize the info structure */ +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr), + PNG_ALLOCATED); + +/* DEPRECATED: this function allowed init structures to be created using the + * default allocation method (typically malloc). Use is deprecated in 1.6.0 and + * the API will be removed in the future. + */ +PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr, + png_size_t png_info_struct_size), PNG_DEPRECATED); + +/* Writes all the PNG information before the image. */ +PNG_EXPORT(20, void, png_write_info_before_PLTE, + (png_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(21, void, png_write_info, + (png_structrp png_ptr, png_const_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +PNG_EXPORT(22, void, png_read_info, + (png_structrp png_ptr, png_inforp info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED + /* Convert to a US string format: there is no localization support in this + * routine. The original implementation used a 29 character buffer in + * png_struct, this will be removed in future versions. + */ +#if PNG_LIBPNG_VER < 10700 +/* To do: remove this from libpng17 (and from libpng17/png.c and pngstruct.h) */ +PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr, + png_const_timep ptime),PNG_DEPRECATED); +#endif +PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, (char out[29], + png_const_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + const struct tm * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +PNG_EXPORT(25, void, png_convert_from_time_t, (png_timep ptime, time_t ttime)); +#endif /* CONVERT_tIME */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +PNG_EXPORT(26, void, png_set_expand, (png_structrp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structrp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +/* Expand to 16-bit channels, forces conversion of palette to RGB and expansion + * of a tRNS chunk if present. + */ +PNG_EXPORT(221, void, png_set_expand_16, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +PNG_EXPORT(30, void, png_set_bgr, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +#define PNG_ERROR_ACTION_NONE 1 +#define PNG_ERROR_ACTION_WARN 2 +#define PNG_ERROR_ACTION_ERROR 3 +#define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ + +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structrp png_ptr, + int error_action, double red, double green)) +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green)) + +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp + png_ptr)); +#endif + +#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); +#endif + +#ifdef PNG_READ_ALPHA_MODE_SUPPORTED +/* How the alpha channel is interpreted - this affects how the color channels + * of a PNG file are returned to the calling application when an alpha channel, + * or a tRNS chunk in a palette file, is present. + * + * This has no effect on the way pixels are written into a PNG output + * datastream. The color samples in a PNG datastream are never premultiplied + * with the alpha samples. + * + * The default is to return data according to the PNG specification: the alpha + * channel is a linear measure of the contribution of the pixel to the + * corresponding composited pixel, and the color channels are unassociated + * (not premultiplied). The gamma encoded color channels must be scaled + * according to the contribution and to do this it is necessary to undo + * the encoding, scale the color values, perform the composition and reencode + * the values. This is the 'PNG' mode. + * + * The alternative is to 'associate' the alpha with the color information by + * storing color channel values that have been scaled by the alpha. + * image. These are the 'STANDARD', 'ASSOCIATED' or 'PREMULTIPLIED' modes + * (the latter being the two common names for associated alpha color channels). + * + * For the 'OPTIMIZED' mode, a pixel is treated as opaque only if the alpha + * value is equal to the maximum value. + * + * The final choice is to gamma encode the alpha channel as well. This is + * broken because, in practice, no implementation that uses this choice + * correctly undoes the encoding before handling alpha composition. Use this + * choice only if other serious errors in the software or hardware you use + * mandate it; the typical serious error is for dark halos to appear around + * opaque areas of the composited PNG image because of arithmetic overflow. + * + * The API function png_set_alpha_mode specifies which of these choices to use + * with an enumerated 'mode' value and the gamma of the required output: + */ +#define PNG_ALPHA_PNG 0 /* according to the PNG standard */ +#define PNG_ALPHA_STANDARD 1 /* according to Porter/Duff */ +#define PNG_ALPHA_ASSOCIATED 1 /* as above; this is the normal practice */ +#define PNG_ALPHA_PREMULTIPLIED 1 /* as above */ +#define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ +#define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ + +PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structrp png_ptr, int mode, + double output_gamma)) +PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr, + int mode, png_fixed_point output_gamma)) +#endif + +#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) +/* The output_gamma value is a screen gamma in libpng terminology: it expresses + * how to decode the output values, not how they are encoded. + */ +#define PNG_DEFAULT_sRGB -1 /* sRGB gamma and color space */ +#define PNG_GAMMA_MAC_18 -2 /* Old Mac '1.8' gamma and color space */ +#define PNG_GAMMA_sRGB 220000 /* Television standards--matches sRGB gamma */ +#define PNG_GAMMA_LINEAR PNG_FP_1 /* Linear */ +#endif + +/* The following are examples of calls to png_set_alpha_mode to achieve the + * required overall gamma correction and, where necessary, alpha + * premultiplication. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * This is the default libpng handling of the alpha channel - it is not + * pre-multiplied into the color components. In addition the call states + * that the output is for a sRGB system and causes all PNG files without gAMA + * chunks to be assumed to be encoded using sRGB. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * In this case the output is assumed to be something like an sRGB conformant + * display preceeded by a power-law lookup table of power 1.45. This is how + * early Mac systems behaved. + * + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR); + * This is the classic Jim Blinn approach and will work in academic + * environments where everything is done by the book. It has the shortcoming + * of assuming that input PNG data with no gamma information is linear - this + * is unlikely to be correct unless the PNG files where generated locally. + * Most of the time the output precision will be so low as to show + * significant banding in dark areas of the image. + * + * png_set_expand_16(pp); + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_DEFAULT_sRGB); + * This is a somewhat more realistic Jim Blinn inspired approach. PNG files + * are assumed to have the sRGB encoding if not marked with a gamma value and + * the output is always 16 bits per component. This permits accurate scaling + * and processing of the data. If you know that your input PNG files were + * generated locally you might need to replace PNG_DEFAULT_sRGB with the + * correct value for your system. + * + * png_set_alpha_mode(pp, PNG_ALPHA_OPTIMIZED, PNG_DEFAULT_sRGB); + * If you just need to composite the PNG image onto an existing background + * and if you control the code that does this you can use the optimization + * setting. In this case you just copy completely opaque pixels to the + * output. For pixels that are not completely transparent (you just skip + * those) you do the composition math using png_composite or png_composite_16 + * below then encode the resultant 8-bit or 16-bit values to match the output + * encoding. + * + * Other cases + * If neither the PNG nor the standard linear encoding work for you because + * of the software or hardware you use then you have a big problem. The PNG + * case will probably result in halos around the image. The linear encoding + * will probably result in a washed out, too bright, image (it's actually too + * contrasty.) Try the ALPHA_OPTIMIZED mode above - this will probably + * substantially reduce the halos. Alternatively try: + * + * png_set_alpha_mode(pp, PNG_ALPHA_BROKEN, PNG_DEFAULT_sRGB); + * This option will also reduce the halos, but there will be slight dark + * halos round the opaque parts of the image where the background is light. + * In the OPTIMIZED mode the halos will be light halos where the background + * is dark. Take your pick - the halos are unavoidable unless you can get + * your hardware/software fixed! (The OPTIMIZED approach is slightly + * faster.) + * + * When the default gamma of PNG files doesn't match the output gamma. + * If you have PNG files with no gamma information png_set_alpha_mode allows + * you to provide a default gamma, but it also sets the ouput gamma to the + * matching value. If you know your PNG files have a gamma that doesn't + * match the output you can take advantage of the fact that + * png_set_alpha_mode always sets the output gamma but only sets the PNG + * default if it is not already set: + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * The first call sets both the default and the output gamma values, the + * second call overrides the output gamma without changing the default. This + * is easier than achieving the same effect with png_set_gamma. You must use + * PNG_ALPHA_PNG for the first call - internal checking in png_set_alpha will + * fire if more than one call to png_set_alpha_mode and png_set_background is + * made in the same read operation, however multiple calls with PNG_ALPHA_PNG + * are ignored. + */ + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(39, void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler, + int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +# define PNG_FILLER_BEFORE 0 +# define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, + png_uint_32 filler, int flags)); +#endif /* READ_FILLER || WRITE_FILLER */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +PNG_EXPORT(41, void, png_set_swap, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +PNG_EXPORT(42, void, png_set_packing, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ + defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +PNG_EXPORT(43, void, png_set_packswap, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +PNG_EXPORT(44, void, png_set_shift, (png_structrp png_ptr, png_const_color_8p + true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. + * MUST be called before png_read_update_info or png_start_read_image, + * otherwise it will not have the desired effect. Note that it is still + * necessary to call png_read_row or png_read_rows png_get_image_height + * times for each pass. +*/ +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +PNG_EXPORT(46, void, png_set_invert_mono, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. Prior to + * libpng-1.5.4 this API must not be called before the PNG file header has been + * read. Doing so will result in unexpected behavior and possible warnings or + * errors if the PNG file contains a bKGD chunk. + */ +PNG_FP_EXPORT(47, void, png_set_background, (png_structrp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)) +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structrp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, png_fixed_point background_gamma)) +#endif +#ifdef PNG_READ_BACKGROUND_SUPPORTED +# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +# define PNG_BACKGROUND_GAMMA_SCREEN 1 +# define PNG_BACKGROUND_GAMMA_FILE 2 +# define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED +/* Scale a 16-bit depth file down to 8-bit, accurately. */ +PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_16_TO_8 SUPPORTED /* Name prior to 1.5.4 */ +/* Strip the second byte of information from a 16-bit depth file. */ +PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* Turn on quantizing, and reduce the palette to the number of colors + * available. + */ +PNG_EXPORT(49, void, png_set_quantize, (png_structrp png_ptr, + png_colorp palette, int num_palette, int maximum_colors, + png_const_uint_16p histogram, int full_quantize)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* The threshold on gamma processing is configurable but hard-wired into the + * library. The following is the floating point variant. + */ +#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) + +/* Handle gamma correction. Screen_gamma=(display_exponent). + * NOTE: this API simply sets the screen and file gamma values. It will + * therefore override the value for gamma in a PNG file if it is called after + * the file header has been read - use with care - call before reading the PNG + * file for best results! + * + * These routines accept the same gamma values as png_set_alpha_mode (described + * above). The PNG_GAMMA_ defines and PNG_DEFAULT_sRGB can be passed to either + * API (floating point or fixed.) Notice, however, that the 'file_gamma' value + * is the inverse of a 'screen gamma' value. + */ +PNG_FP_EXPORT(50, void, png_set_gamma, (png_structrp png_ptr, + double screen_gamma, double override_file_gamma)) +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structrp png_ptr, + png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) +#endif + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +PNG_EXPORT(51, void, png_set_flush, (png_structrp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +PNG_EXPORT(52, void, png_write_flush, (png_structrp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +PNG_EXPORT(53, void, png_start_read_image, (png_structrp png_ptr)); + +/* Optional call to update the users info structure */ +PNG_EXPORT(54, void, png_read_update_info, (png_structrp png_ptr, + png_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +PNG_EXPORT(55, void, png_read_rows, (png_structrp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +PNG_EXPORT(56, void, png_read_row, (png_structrp png_ptr, png_bytep row, + png_bytep display_row)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +PNG_EXPORT(57, void, png_read_image, (png_structrp png_ptr, png_bytepp image)); +#endif + +/* Write a row of image data */ +PNG_EXPORT(58, void, png_write_row, (png_structrp png_ptr, + png_const_bytep row)); + +/* Write a few rows of image data: (*row) is not written; however, the type + * is declared as writeable to maintain compatibility with previous versions + * of libpng and to allow the 'display_row' array from read_rows to be passed + * unchanged to write_rows. + */ +PNG_EXPORT(59, void, png_write_rows, (png_structrp png_ptr, png_bytepp row, + png_uint_32 num_rows)); + +/* Write the image data */ +PNG_EXPORT(60, void, png_write_image, (png_structrp png_ptr, png_bytepp image)); + +/* Write the end of the PNG file. */ +PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr, + png_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +PNG_EXPORT(62, void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +PNG_EXPORT(63, void, png_destroy_info_struct, (png_const_structrp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, + int ancil_action)); + +/* Values for png_set_crc_action() say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +#ifdef PNG_WRITE_SUPPORTED +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, + int filters)); +#endif /* WRITE */ + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#ifdef PNG_WRITE_SUPPORTED +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, + png_const_doublep filter_costs)) +PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, + (png_structrp png_ptr, int heuristic_method, int num_weights, + png_const_fixed_point_p filter_weights, + png_const_fixed_point_p filter_costs)) +#endif /* WRITE_WEIGHTED_FILTER */ + +/* The following are no longer used and will be removed from libpng-1.7: */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED +PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, + int level)); + +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structrp png_ptr, + int mem_level)); + +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structrp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, + int window_bits)); + +PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, + int method)); +#endif /* WRITE_CUSTOMIZE_COMPRESSION */ + +#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +/* Also set zlib parameters for compressing non-IDAT chunks */ +PNG_EXPORT(222, void, png_set_text_compression_level, (png_structrp png_ptr, + int level)); + +PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structrp png_ptr, + int mem_level)); + +PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structrp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(225, void, png_set_text_compression_window_bits, + (png_structrp png_ptr, int window_bits)); + +PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, + int method)); +#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ +#endif /* WRITE */ + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng-manual.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +PNG_EXPORT(75, void, png_set_error_fn, (png_structrp png_ptr, + png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +PNG_EXPORT(77, void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +PNG_EXPORT(78, void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr)); + +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structrp png_ptr, + png_read_status_ptr read_row_fn)); + +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structrp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +PNG_EXPORT(82, void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr read_user_transform_fn)); +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr write_user_transform_fn)); +#endif + +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structrp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, + (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED +/* Return information about the row currently being processed. Note that these + * APIs do not fail but will return unexpected results if called outside a user + * transform callback. Also note that when transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); +#endif + +#ifdef PNG_READ_USER_CHUNKS_SUPPORTED +/* This callback is called only for *unknown* chunks. If + * PNG_HANDLE_AS_UNKNOWN_SUPPORTED is set then it is possible to set known + * chunks to be treated as unknown, however in this case the callback must do + * any processing required by the chunk (e.g. by calling the appropriate + * png_set_ APIs.) + * + * There is no write support - on write, by default, all the chunks in the + * 'unknown' list are written in the specified position. + * + * The integer return from the callback function is interpreted thus: + * + * negative: An error occurred; png_chunk_error will be called. + * zero: The chunk was not handled, the chunk will be saved. A critical + * chunk will cause an error at this point unless it is to be saved. + * positive: The chunk was handled, libpng will ignore/discard it. + * + * See "INTERACTION WTIH USER CHUNK CALLBACKS" below for important notes about + * how this behavior will change in libpng 1.7 + */ +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structrp png_ptr, + png_voidp progressive_ptr, png_progressive_info_ptr info_fn, + png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, + (png_const_structrp png_ptr)); + +/* Function to be called when data becomes available */ +PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr, + png_inforp info_ptr, png_bytep buffer, png_size_t buffer_size)); + +/* A function which may be called *only* within png_process_data to stop the + * processing of any more data. The function returns the number of bytes + * remaining, excluding any that libpng has cached internally. A subsequent + * call to png_process_data must supply these bytes again. If the argument + * 'save' is set to true the routine will first save all the pending data and + * will always return 0. + */ +PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structrp, int save)); + +/* A function which may be called *only* outside (after) a call to + * png_process_data. It returns the number of bytes of data to skip in the + * input. Normally it will return 0, but if it returns a non-zero value the + * application must skip than number of bytes of input data and pass the + * following data to the next call to png_process_data. + */ +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); + +/* Function that combines rows. 'new_row' is a flag that should come from + * the callback and be non-NULL if anything needs to be done; the library + * stores its own version of the new data internally and ignores the passed + * in value. + */ +PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, + png_bytep old_row, png_const_bytep new_row)); +#endif /* PROGRESSIVE_READ */ + +PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); +/* Added at libpng version 1.4.0 */ +PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Added at libpng version 1.2.4 */ +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Frees a pointer allocated by png_malloc() */ +PNG_EXPORT(97, void, png_free, (png_const_structrp png_ptr, png_voidp ptr)); + +/* Free data that was allocated internally */ +PNG_EXPORT(98, void, png_free_data, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 free_me, int num)); + +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application; this works on the png_info structure passed + * in, it does not change the state for other png_info structures. + * + * It is unlikely that this function works correctly as of 1.6.0 and using it + * may result either in memory leaks or double free of allocated data. + */ +PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, + png_inforp info_ptr, int freer, png_uint_32 mask)); + +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_FREE_UNKN 0x0200 +#endif +/* PNG_FREE_LIST 0x0400 removed in 1.6.0 because it is ignored */ +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED); +PNG_EXPORTA(101, void, png_free_default, (png_const_structrp png_ptr, + png_voidp ptr), PNG_DEPRECATED); +#endif + +#ifdef PNG_ERROR_TEXT_SUPPORTED +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(102, void, png_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +/* The same, but the chunk name is prepended to the error string. */ +PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +#else +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN); +# define png_error(s1,s2) png_err(s1) +# define png_chunk_error(s1,s2) png_err(s1) +#endif + +#ifdef PNG_WARNINGS_SUPPORTED +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +PNG_EXPORT(105, void, png_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); + +/* Non-fatal error in libpng, chunk name is prepended to message. */ +PNG_EXPORT(106, void, png_chunk_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); +#else +# define png_warning(s1,s2) ((void)(s1)) +# define png_chunk_warning(s1,s2) ((void)(s1)) +#endif + +#ifdef PNG_BENIGN_ERRORS_SUPPORTED +/* Benign error in libpng. Can continue, but may have a problem. + * User can choose whether to handle as a fatal error or as a warning. */ +PNG_EXPORT(107, void, png_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_READ_SUPPORTED +/* Same, chunk name is prepended to message (only during read) */ +PNG_EXPORT(108, void, png_chunk_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); +#endif + +PNG_EXPORT(109, void, png_set_benign_errors, + (png_structrp png_ptr, int allowed)); +#else +# ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +# else +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* The png_set_<chunk> functions are for storing values in the png_info_struct. + * Similarly, the png_get_<chunk> calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_<chunk> functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image height in pixels. */ +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image bit_depth. */ +PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image color_type. */ +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image filter_type. */ +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image interlace_type. */ +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image compression_type. */ +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +#endif /* EASY_ACCESS */ + +#ifdef PNG_READ_SUPPORTED +/* Returns pointer to signature string read from PNG header */ +PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(132, void, png_set_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)) +PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *red_X, double *red_Y, double *red_Z, + double *green_X, double *green_Y, double *green_Z, double *blue_X, + double *blue_Y, double *blue_Z)) +PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_white_x, png_fixed_point *int_white_y, + png_fixed_point *int_red_x, png_fixed_point *int_red_y, + png_fixed_point *int_green_x, png_fixed_point *int_green_y, + png_fixed_point *int_blue_x, png_fixed_point *int_blue_y)) +PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_red_X, png_fixed_point *int_red_Y, + png_fixed_point *int_red_Z, png_fixed_point *int_green_X, + png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, + png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, + png_fixed_point *int_blue_Z)) +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(135, void, png_set_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)) +PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_const_structrp png_ptr, + png_inforp info_ptr, double red_X, double red_Y, double red_Z, + double green_X, double green_Y, double green_Z, double blue_X, + double blue_Y, double blue_Z)) +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) +PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, + png_fixed_point int_red_Z, png_fixed_point int_green_X, + png_fixed_point int_green_Y, png_fixed_point int_green_Z, + png_fixed_point int_blue_X, png_fixed_point int_blue_Y, + png_fixed_point int_blue_Z)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *file_gamma)) +PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_file_gamma)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_const_structrp png_ptr, + png_inforp info_ptr, double file_gamma)) +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_file_gamma)) +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(142, void, png_set_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_uint_16p hist)); +#endif + +PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); + +PNG_EXPORT(144, void, png_set_IHDR, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(146, void, png_set_oFFs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charp *purpose, png_int_32 *X0, + png_int_32 *X1, int *type, int *nparams, png_charp *units, + png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(148, void, png_set_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1, + int type, int nparams, png_const_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(150, void, png_set_pHYs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr, + png_inforp info_ptr, png_colorp *palette, int *num_palette)); + +PNG_EXPORT(152, void, png_set_PLTE, (png_structrp png_ptr, + png_inforp info_ptr, png_const_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(154, void, png_set_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *file_srgb_intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(156, void, png_set_sRGB, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charpp name, int *compression_type, + png_bytepp profile, png_uint_32 *proflen)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(159, void, png_set_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp name, int compression_type, + png_const_bytep profile, png_uint_32 proflen)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(160, int, png_get_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(161, void, png_set_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +PNG_EXPORT(162, int, png_get_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_textp *text_ptr, int *num_text)); +#endif + +/* Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +PNG_EXPORT(163, void, png_set_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(165, void, png_set_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep *trans_alpha, int *num_trans, + png_color_16p *trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(167, void, png_set_tRNS, (png_structrp png_ptr, + png_inforp info_ptr, png_const_bytep trans_alpha, int num_trans, + png_const_color_16p trans_color)); +#endif + +#ifdef PNG_sCAL_SUPPORTED +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *unit, double *width, double *height)) +#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ + defined(PNG_FLOATING_POINT_SUPPORTED) +/* NOTE: this API is currently implemented using floating point arithmetic, + * consequently it can only be used on systems with floating point support. + * In any case the range of values supported by png_fixed_point is small and it + * is highly recommended that png_get_sCAL_s be used instead. + */ +PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_fixed_point *width, png_fixed_point *height)) +#endif +PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_charpp swidth, png_charpp sheight)); + +PNG_FP_EXPORT(170, void, png_set_sCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, double width, double height)) +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, png_fixed_point width, + png_fixed_point height)) +PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, + png_const_charp swidth, png_const_charp sheight)); +#endif /* sCAL */ + +#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +/* Provide the default handling for all unknown chunks or, optionally, for + * specific unknown chunks. + * + * NOTE: prior to 1.6.0 the handling specified for particular chunks on read was + * ignored and the default was used, the per-chunk setting only had an effect on + * write. If you wish to have chunk-specific handling on read in code that must + * work on earlier versions you must use a user chunk callback to specify the + * desired handling (keep or discard.) + * + * The 'keep' parameter is a PNG_HANDLE_CHUNK_ value as listed below. The + * parameter is interpreted as follows: + * + * READ: + * PNG_HANDLE_CHUNK_AS_DEFAULT: + * Known chunks: do normal libpng processing, do not keep the chunk (but + * see the comments below about PNG_HANDLE_AS_UNKNOWN_SUPPORTED) + * Unknown chunks: for a specific chunk use the global default, when used + * as the default discard the chunk data. + * PNG_HANDLE_CHUNK_NEVER: + * Discard the chunk data. + * PNG_HANDLE_CHUNK_IF_SAFE: + * Keep the chunk data if the chunk is not critical else raise a chunk + * error. + * PNG_HANDLE_CHUNK_ALWAYS: + * Keep the chunk data. + * + * If the chunk data is saved it can be retrieved using png_get_unknown_chunks, + * below. Notice that specifying "AS_DEFAULT" as a global default is equivalent + * to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks + * it simply resets the behavior to the libpng default. + * + * INTERACTION WTIH USER CHUNK CALLBACKS: + * The per-chunk handling is always used when there is a png_user_chunk_ptr + * callback and the callback returns 0; the chunk is then always stored *unless* + * it is critical and the per-chunk setting is other than ALWAYS. Notice that + * the global default is *not* used in this case. (In effect the per-chunk + * value is incremented to at least IF_SAFE.) + * + * IMPORTANT NOTE: this behavior will change in libpng 1.7 - the global and + * per-chunk defaults will be honored. If you want to preserve the current + * behavior when your callback returns 0 you must set PNG_HANDLE_CHUNK_IF_SAFE + * as the default - if you don't do this libpng 1.6 will issue a warning. + * + * If you want unhandled unknown chunks to be discarded in libpng 1.6 and + * earlier simply return '1' (handled). + * + * PNG_HANDLE_AS_UNKNOWN_SUPPORTED: + * If this is *not* set known chunks will always be handled by libpng and + * will never be stored in the unknown chunk list. Known chunks listed to + * png_set_keep_unknown_chunks will have no effect. If it is set then known + * chunks listed with a keep other than AS_DEFAULT will *never* be processed + * by libpng, in addition critical chunks must either be processed by the + * callback or saved. + * + * The IHDR and IEND chunks must not be listed. Because this turns off the + * default handling for chunks that would otherwise be recognized the + * behavior of libpng transformations may well become incorrect! + * + * WRITE: + * When writing chunks the options only apply to the chunks specified by + * png_set_unknown_chunks (below), libpng will *always* write known chunks + * required by png_set_ calls and will always write the core critical chunks + * (as required for PLTE). + * + * Each chunk in the png_set_unknown_chunks list is looked up in the + * png_set_keep_unknown_chunks list to find the keep setting, this is then + * interpreted as follows: + * + * PNG_HANDLE_CHUNK_AS_DEFAULT: + * Write safe-to-copy chunks and write other chunks if the global + * default is set to _ALWAYS, otherwise don't write this chunk. + * PNG_HANDLE_CHUNK_NEVER: + * Do not write the chunk. + * PNG_HANDLE_CHUNK_IF_SAFE: + * Write the chunk if it is safe-to-copy, otherwise do not write it. + * PNG_HANDLE_CHUNK_ALWAYS: + * Write the chunk. + * + * Note that the default behavior is effectively the opposite of the read case - + * in read unknown chunks are not stored by default, in write they are written + * by default. Also the behavior of PNG_HANDLE_CHUNK_IF_SAFE is very different + * - on write the safe-to-copy bit is checked, on read the critical bit is + * checked and on read if the chunk is critical an error will be raised. + * + * num_chunks: + * =========== + * If num_chunks is positive, then the "keep" parameter specifies the manner + * for handling only those chunks appearing in the chunk_list array, + * otherwise the chunk list array is ignored. + * + * If num_chunks is 0 the "keep" parameter specifies the default behavior for + * unknown chunks, as described above. + * + * If num_chunks is negative, then the "keep" parameter specifies the manner + * for handling all unknown chunks plus all chunks recognized by libpng + * except for the IHDR, PLTE, tRNS, IDAT, and IEND chunks (which continue to + * be processed by libpng. + */ +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, + int keep, png_const_bytep chunk_list, int num_chunks)); + +/* The "keep" PNG_HANDLE_CHUNK_ parameter for the specified chunk is returned; + * the result is therefore true (non-zero) if special handling is required, + * false for the default handling. + */ +PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, + png_const_bytep chunk_name)); +#endif + +#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); + /* NOTE: prior to 1.6.0 this routine set the 'location' field of the added + * unknowns to the location currently stored in the png_struct. This is + * invariably the wrong value on write. To fix this call the following API + * for each chunk in the list with the correct location. If you know your + * code won't be compiled on earlier versions you can rely on + * png_set_unknown_chunks(write-ptr, png_get_unknown_chunks(read-ptr)) doing + * the correct thing. + */ + +PNG_EXPORT(175, void, png_set_unknown_chunk_location, + (png_const_structrp png_ptr, png_inforp info_ptr, int chunk, int location)); + +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +PNG_EXPORT(177, void, png_set_invalid, (png_const_structrp png_ptr, + png_inforp info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +PNG_EXPORT(178, void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr, + int transforms, png_voidp params)); +#endif +#ifdef PNG_WRITE_SUPPORTED +PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr, + int transforms, png_voidp params)); +#endif +#endif + +PNG_EXPORT(180, png_const_charp, png_get_copyright, + (png_const_structrp png_ptr)); +PNG_EXPORT(181, png_const_charp, png_get_header_ver, + (png_const_structrp png_ptr)); +PNG_EXPORT(182, png_const_charp, png_get_header_version, + (png_const_structrp png_ptr)); +PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, + (png_const_structrp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr, + png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 +#define PNG_HANDLE_CHUNK_LAST 4 + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +PNG_EXPORT(185, void, png_set_strip_error_numbers, (png_structrp png_ptr, + png_uint_32 strip_mode)); +#endif + +/* Added in libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +PNG_EXPORT(186, void, png_set_user_limits, (png_structrp png_ptr, + png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(187, png_uint_32, png_get_user_width_max, + (png_const_structrp png_ptr)); +PNG_EXPORT(188, png_uint_32, png_get_user_height_max, + (png_const_structrp png_ptr)); +/* Added in libpng-1.4.0 */ +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structrp png_ptr, + png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, + (png_const_structrp png_ptr)); +/* Added in libpng-1.4.1 */ +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structrp png_ptr, + png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, + (png_const_structrp png_ptr)); +#endif + +#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) +PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_FP_EXPORT(196, float, png_get_x_offset_inches, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#endif + +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structrp png_ptr, + png_const_inforp info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#endif + +# ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +# endif /* pHYs */ +#endif /* INCH_CONVERSIONS */ + +/* Added in libpng-1.4.0 */ +#ifdef PNG_IO_STATE_SUPPORTED +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr)); + +/* Removed from libpng 1.6; use png_get_io_chunk_type. */ +PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr), + PNG_DEPRECATED) + +PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, + (png_const_structrp png_ptr)); + +/* The flags returned by png_get_io_state() are the following: */ +# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +# define PNG_IO_READING 0x0001 /* currently reading */ +# define PNG_IO_WRITING 0x0002 /* currently writing */ +# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +#endif /* IO_STATE */ + +/* Interlace support. The following macros are always defined so that if + * libpng interlace handling is turned off the macros may be used to handle + * interlaced images within the application. + */ +#define PNG_INTERLACE_ADAM7_PASSES 7 + +/* Two macros to return the first row and first column of the original, + * full, image which appears in a given pass. 'pass' is in the range 0 + * to 6 and the result is in the range 0 to 7. + */ +#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7) +#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7) + +/* A macro to return the offset between pixels in the output row for a pair of + * pixels in the input - effectively the inverse of the 'COL_SHIFT' macro that + * follows. Note that ROW_OFFSET is the offset from one row to the next whereas + * COL_OFFSET is from one column to the next, within a row. + */ +#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8) +#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1)) + +/* Two macros to help evaluate the number of rows or columns in each + * pass. This is expressed as a shift - effectively log2 of the number or + * rows or columns in each 8x8 tile of the original image. + */ +#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) +#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) + +/* Hence two macros to determine the number of rows or columns in a given + * pass of an image given its height or width. In fact these macros may + * return non-zero even though the sub-image is empty, because the other + * dimension may be empty for a small image. + */ +#define PNG_PASS_ROWS(height, pass) (((height)+(((1<<PNG_PASS_ROW_SHIFT(pass))\ + -1)-PNG_PASS_START_ROW(pass)))>>PNG_PASS_ROW_SHIFT(pass)) +#define PNG_PASS_COLS(width, pass) (((width)+(((1<<PNG_PASS_COL_SHIFT(pass))\ + -1)-PNG_PASS_START_COL(pass)))>>PNG_PASS_COL_SHIFT(pass)) + +/* For the reader row callbacks (both progressive and sequential) it is + * necessary to find the row in the output image given a row in an interlaced + * image, so two more macros: + */ +#define PNG_ROW_FROM_PASS_ROW(y_in, pass) \ + (((y_in)<<PNG_PASS_ROW_SHIFT(pass))+PNG_PASS_START_ROW(pass)) +#define PNG_COL_FROM_PASS_COL(x_in, pass) \ + (((x_in)<<PNG_PASS_COL_SHIFT(pass))+PNG_PASS_START_COL(pass)) + +/* Two macros which return a boolean (0 or 1) saying whether the given row + * or column is in a particular pass. These use a common utility macro that + * returns a mask for a given pass - the offset 'off' selects the row or + * column version. The mask has the appropriate bit set for each column in + * the tile. + */ +#define PNG_PASS_MASK(pass,off) ( \ + ((0x110145AF>>(((7-(off))-(pass))<<2)) & 0xF) | \ + ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0)) + +#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ + ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) +#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ + ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ + * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 \ + - (png_uint_16)(alpha)) + 128); \ + (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ + * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(65535 \ + - (png_uint_32)(alpha)) + 32768); \ + (composite) = (png_uint_16)(0xffff & ((temp + (temp >> 16)) >> 16)); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = \ + (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + 127) / 255)) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = \ + (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ + 32767) / 65535)) +#endif /* READ_COMPOSITE_NODIV */ + +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); +#endif + +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr, + png_const_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); +#endif +#ifdef PNG_SAVE_INT_32_SUPPORTED +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); +#endif + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif + +#ifdef PNG_USE_READ_MACROS +/* Inline macros to do direct reads of bytes from the input buffer. + * The png_get_int_32() routine assumes we are using two's complement + * format for negative values, which is almost certainly true. + */ +# define PNG_get_uint_32(buf) \ + (((png_uint_32)(*(buf)) << 24) + \ + ((png_uint_32)(*((buf) + 1)) << 16) + \ + ((png_uint_32)(*((buf) + 2)) << 8) + \ + ((png_uint_32)(*((buf) + 3)))) + + /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the + * function) incorrectly returned a value of type png_uint_32. + */ +# define PNG_get_uint_16(buf) \ + ((png_uint_16) \ + (((unsigned int)(*(buf)) << 8) + \ + ((unsigned int)(*((buf) + 1))))) + +# define PNG_get_int_32(buf) \ + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \ + : (png_int_32)png_get_uint_32(buf))) + + /* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, + * but defining a macro name prefixed with PNG_PREFIX. + */ +# ifndef PNG_PREFIX +# define png_get_uint_32(buf) PNG_get_uint_32(buf) +# define png_get_uint_16(buf) PNG_get_uint_16(buf) +# define png_get_int_32(buf) PNG_get_int_32(buf) +# endif +#else +# ifdef PNG_PREFIX + /* No macros; revert to the (redefined) function */ +# define PNG_get_uint_32 (png_get_uint_32) +# define PNG_get_uint_16 (png_get_uint_16) +# define PNG_get_int_32 (png_get_int_32) +# endif +#endif + +#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ + defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) +/******************************************************************************* + * SIMPLIFIED API + ******************************************************************************* + * + * Please read the documentation in libpng-manual.txt (TODO: write said + * documentation) if you don't understand what follows. + * + * The simplified API hides the details of both libpng and the PNG file format + * itself. It allows PNG files to be read into a very limited number of + * in-memory bitmap formats or to be written from the same formats. If these + * formats do not accomodate your needs then you can, and should, use the more + * sophisticated APIs above - these support a wide variety of in-memory formats + * and a wide variety of sophisticated transformations to those formats as well + * as a wide variety of APIs to manipulate ancillary information. + * + * To read a PNG file using the simplified API: + * + * 1) Declare a 'png_image' structure (see below) on the stack, set the + * version field to PNG_IMAGE_VERSION and the 'opaque' pointer to NULL + * (this is REQUIRED, your program may crash if you don't do it.) + * 2) Call the appropriate png_image_begin_read... function. + * 3) Set the png_image 'format' member to the required sample format. + * 4) Allocate a buffer for the image and, if required, the color-map. + * 5) Call png_image_finish_read to read the image and, if required, the + * color-map into your buffers. + * + * There are no restrictions on the format of the PNG input itself; all valid + * color types, bit depths, and interlace methods are acceptable, and the + * input image is transformed as necessary to the requested in-memory format + * during the png_image_finish_read() step. The only caveat is that if you + * request a color-mapped image from a PNG that is full-color or makes + * complex use of an alpha channel the transformation is extremely lossy and the + * result may look terrible. + * + * To write a PNG file using the simplified API: + * + * 1) Declare a 'png_image' structure on the stack and memset() it to all zero. + * 2) Initialize the members of the structure that describe the image, setting + * the 'format' member to the format of the image samples. + * 3) Call the appropriate png_image_write... function with a pointer to the + * image and, if necessary, the color-map to write the PNG data. + * + * png_image is a structure that describes the in-memory format of an image + * when it is being read or defines the in-memory format of an image that you + * need to write: + */ +#define PNG_IMAGE_VERSION 1 + +typedef struct png_control *png_controlp; +typedef struct +{ + png_controlp opaque; /* Initialize to NULL, free with png_image_free */ + png_uint_32 version; /* Set to PNG_IMAGE_VERSION */ + png_uint_32 width; /* Image width in pixels (columns) */ + png_uint_32 height; /* Image height in pixels (rows) */ + png_uint_32 format; /* Image format as defined below */ + png_uint_32 flags; /* A bit mask containing informational flags */ + png_uint_32 colormap_entries; + /* Number of entries in the color-map */ + + /* In the event of an error or warning the following field will be set to a + * non-zero value and the 'message' field will contain a '\0' terminated + * string with the libpng error or warning message. If both warnings and + * an error were encountered, only the error is recorded. If there + * are multiple warnings, only the first one is recorded. + * + * The upper 30 bits of this value are reserved, the low two bits contain + * a value as follows: + */ +# define PNG_IMAGE_WARNING 1 +# define PNG_IMAGE_ERROR 2 + /* + * The result is a two-bit code such that a value more than 1 indicates + * a failure in the API just called: + * + * 0 - no warning or error + * 1 - warning + * 2 - error + * 3 - error preceded by warning + */ +# define PNG_IMAGE_FAILED(png_cntrl) ((((png_cntrl).warning_or_error)&0x03)>1) + + png_uint_32 warning_or_error; + + char message[64]; +} png_image, *png_imagep; + +/* The samples of the image have one to four channels whose components have + * original values in the range 0 to 1.0: + * + * 1: A single gray or luminance channel (G). + * 2: A gray/luminance channel and an alpha channel (GA). + * 3: Three red, green, blue color channels (RGB). + * 4: Three color channels and an alpha channel (RGBA). + * + * The components are encoded in one of two ways: + * + * a) As a small integer, value 0..255, contained in a single byte. For the + * alpha channel the original value is simply value/255. For the color or + * luminance channels the value is encoded according to the sRGB specification + * and matches the 8-bit format expected by typical display devices. + * + * The color/gray channels are not scaled (pre-multiplied) by the alpha + * channel and are suitable for passing to color management software. + * + * b) As a value in the range 0..65535, contained in a 2-byte integer. All + * channels can be converted to the original value by dividing by 65535; all + * channels are linear. Color channels use the RGB encoding (RGB end-points) of + * the sRGB specification. This encoding is identified by the + * PNG_FORMAT_FLAG_LINEAR flag below. + * + * When the simplified API needs to convert between sRGB and linear colorspaces, + * the actual sRGB transfer curve defined in the sRGB specification (see the + * article at http://en.wikipedia.org/wiki/SRGB) is used, not the gamma=1/2.2 + * approximation used elsewhere in libpng. + * + * When an alpha channel is present it is expected to denote pixel coverage + * of the color or luminance channels and is returned as an associated alpha + * channel: the color/gray channels are scaled (pre-multiplied) by the alpha + * value. + * + * The samples are either contained directly in the image data, between 1 and 8 + * bytes per pixel according to the encoding, or are held in a color-map indexed + * by bytes in the image data. In the case of a color-map the color-map entries + * are individual samples, encoded as above, and the image data has one byte per + * pixel to select the relevant sample from the color-map. + */ + +/* PNG_FORMAT_* + * + * #defines to be used in png_image::format. Each #define identifies a + * particular layout of sample data and, if present, alpha values. There are + * separate defines for each of the two component encodings. + * + * A format is built up using single bit flag values. All combinations are + * valid. Formats can be built up from the flag values or you can use one of + * the predefined values below. When testing formats always use the FORMAT_FLAG + * macros to test for individual features - future versions of the library may + * add new flags. + * + * When reading or writing color-mapped images the format should be set to the + * format of the entries in the color-map then png_image_{read,write}_colormap + * called to read or write the color-map and set the format correctly for the + * image data. Do not set the PNG_FORMAT_FLAG_COLORMAP bit directly! + * + * NOTE: libpng can be built with particular features disabled, if you see + * compiler errors because the definition of one of the following flags has been + * compiled out it is because libpng does not have the required support. It is + * possible, however, for the libpng configuration to enable the format on just + * read or just write; in that case you may see an error at run time. You can + * guard against this by checking for the definition of the appropriate + * "_SUPPORTED" macro, one of: + * + * PNG_SIMPLIFIED_{READ,WRITE}_{BGR,AFIRST}_SUPPORTED + */ +#define PNG_FORMAT_FLAG_ALPHA 0x01U /* format with an alpha channel */ +#define PNG_FORMAT_FLAG_COLOR 0x02U /* color format: otherwise grayscale */ +#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2 byte channels else 1 byte */ +#define PNG_FORMAT_FLAG_COLORMAP 0x08U /* image data is color-mapped */ + +#ifdef PNG_FORMAT_BGR_SUPPORTED +# define PNG_FORMAT_FLAG_BGR 0x10U /* BGR colors, else order is RGB */ +#endif + +#ifdef PNG_FORMAT_AFIRST_SUPPORTED +# define PNG_FORMAT_FLAG_AFIRST 0x20U /* alpha channel comes first */ +#endif + +/* Commonly used formats have predefined macros. + * + * First the single byte (sRGB) formats: + */ +#define PNG_FORMAT_GRAY 0 +#define PNG_FORMAT_GA PNG_FORMAT_FLAG_ALPHA +#define PNG_FORMAT_AG (PNG_FORMAT_GA|PNG_FORMAT_FLAG_AFIRST) +#define PNG_FORMAT_RGB PNG_FORMAT_FLAG_COLOR +#define PNG_FORMAT_BGR (PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_BGR) +#define PNG_FORMAT_RGBA (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_ARGB (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_AFIRST) +#define PNG_FORMAT_BGRA (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_ABGR (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_AFIRST) + +/* Then the linear 2-byte formats. When naming these "Y" is used to + * indicate a luminance (gray) channel. + */ +#define PNG_FORMAT_LINEAR_Y PNG_FORMAT_FLAG_LINEAR +#define PNG_FORMAT_LINEAR_Y_ALPHA (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_LINEAR_RGB (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR) +#define PNG_FORMAT_LINEAR_RGB_ALPHA \ + (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA) + +/* With color-mapped formats the image data is one byte for each pixel, the byte + * is an index into the color-map which is formatted as above. To obtain a + * color-mapped format it is sufficient just to add the PNG_FOMAT_FLAG_COLORMAP + * to one of the above definitions, or you can use one of the definitions below. + */ +#define PNG_FORMAT_RGB_COLORMAP (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_BGR_COLORMAP (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_RGBA_COLORMAP (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_ARGB_COLORMAP (PNG_FORMAT_ARGB|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_BGRA_COLORMAP (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_ABGR_COLORMAP (PNG_FORMAT_ABGR|PNG_FORMAT_FLAG_COLORMAP) + +/* PNG_IMAGE macros + * + * These are convenience macros to derive information from a png_image + * structure. The PNG_IMAGE_SAMPLE_ macros return values appropriate to the + * actual image sample values - either the entries in the color-map or the + * pixels in the image. The PNG_IMAGE_PIXEL_ macros return corresponding values + * for the pixels and will always return 1 for color-mapped formats. The + * remaining macros return information about the rows in the image and the + * complete image. + * + * NOTE: All the macros that take a png_image::format parameter are compile time + * constants if the format parameter is, itself, a constant. Therefore these + * macros can be used in array declarations and case labels where required. + * Similarly the macros are also pre-processor constants (sizeof is not used) so + * they can be used in #if tests. + * + * First the information about the samples. + */ +#define PNG_IMAGE_SAMPLE_CHANNELS(fmt)\ + (((fmt)&(PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA))+1) + /* Return the total number of channels in a given format: 1..4 */ + +#define PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)\ + ((((fmt) & PNG_FORMAT_FLAG_LINEAR) >> 2)+1) + /* Return the size in bytes of a single component of a pixel or color-map + * entry (as appropriate) in the image: 1 or 2. + */ + +#define PNG_IMAGE_SAMPLE_SIZE(fmt)\ + (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)) + /* This is the size of the sample data for one sample. If the image is + * color-mapped it is the size of one color-map entry (and image pixels are + * one byte in size), otherwise it is the size of one image pixel. + */ + +#define PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(fmt)\ + (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * 256) + /* The maximum size of the color-map required by the format expressed in a + * count of components. This can be used to compile-time allocate a + * color-map: + * + * png_uint_16 colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(linear_fmt)]; + * + * png_byte colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(sRGB_fmt)]; + * + * Alternatively use the PNG_IMAGE_COLORMAP_SIZE macro below to use the + * information from one of the png_image_begin_read_ APIs and dynamically + * allocate the required memory. + */ + +/* Corresponding information about the pixels */ +#define PNG_IMAGE_PIXEL_(test,fmt)\ + (((fmt)&PNG_FORMAT_FLAG_COLORMAP)?1:test(fmt)) + +#define PNG_IMAGE_PIXEL_CHANNELS(fmt)\ + PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_CHANNELS,fmt) + /* The number of separate channels (components) in a pixel; 1 for a + * color-mapped image. + */ + +#define PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)\ + PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_COMPONENT_SIZE,fmt) + /* The size, in bytes, of each component in a pixel; 1 for a color-mapped + * image. + */ + +#define PNG_IMAGE_PIXEL_SIZE(fmt) PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_SIZE,fmt) + /* The size, in bytes, of a complete pixel; 1 for a color-mapped image. */ + +/* Information about the whole row, or whole image */ +#define PNG_IMAGE_ROW_STRIDE(image)\ + (PNG_IMAGE_PIXEL_CHANNELS((image).format) * (image).width) + /* Return the total number of components in a single row of the image; this + * is the minimum 'row stride', the minimum count of components between each + * row. For a color-mapped image this is the minimum number of bytes in a + * row. + */ + +#define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\ + (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride)) + /* Return the size, in bytes, of an image buffer given a png_image and a row + * stride - the number of components to leave space for in each row. + */ + +#define PNG_IMAGE_SIZE(image)\ + PNG_IMAGE_BUFFER_SIZE(image, PNG_IMAGE_ROW_STRIDE(image)) + /* Return the size, in bytes, of the image in memory given just a png_image; + * the row stride is the minimum stride required for the image. + */ + +#define PNG_IMAGE_COLORMAP_SIZE(image)\ + (PNG_IMAGE_SAMPLE_SIZE((image).format) * (image).colormap_entries) + /* Return the size, in bytes, of the color-map of this image. If the image + * format is not a color-map format this will return a size sufficient for + * 256 entries in the given format; check PNG_FORMAT_FLAG_COLORMAP if + * you don't want to allocate a color-map in this case. + */ + +/* PNG_IMAGE_FLAG_* + * + * Flags containing additional information about the image are held in the + * 'flags' field of png_image. + */ +#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01 + /* This indicates the the RGB values of the in-memory bitmap do not + * correspond to the red, green and blue end-points defined by sRGB. + */ + +#define PNG_IMAGE_FLAG_FAST 0x02 + /* On write emphasise speed over compression; the resultant PNG file will be + * larger but will be produced significantly faster, particular for large + * images. Do not use this option for images which will be distributed, only + * used it when producing intermediate files that will be read back in + * repeatedly. For a typical 24-bit image the option will double the read + * speed at the cost of increasing the image size by 25%, however for many + * more compressible images the PNG file can be 10 times larger with only a + * slight speed gain. + */ + +#define PNG_IMAGE_FLAG_16BIT_sRGB 0x04 + /* On read if the image is a 16-bit per component image and there is no gAMA + * or sRGB chunk assume that the components are sRGB encoded. Notice that + * images output by the simplified API always have gamma information; setting + * this flag only affects the interpretation of 16-bit images from an + * external source. It is recommended that the application expose this flag + * to the user; the user can normally easily recognize the difference between + * linear and sRGB encoding. This flag has no effect on write - the data + * passed to the write APIs must have the correct encoding (as defined + * above.) + * + * If the flag is not set (the default) input 16-bit per component data is + * assumed to be linear. + * + * NOTE: the flag can only be set after the png_image_begin_read_ call, + * because that call initializes the 'flags' field. + */ + +#ifdef PNG_SIMPLIFIED_READ_SUPPORTED +/* READ APIs + * --------- + * + * The png_image passed to the read APIs must have been initialized by setting + * the png_controlp field 'opaque' to NULL (or, safer, memset the whole thing.) + */ +#ifdef PNG_STDIO_SUPPORTED +PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, + const char *file_name)); + /* The named file is opened for read and the image header is filled in + * from the PNG header in the file. + */ + +PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, + FILE* file)); + /* The PNG header is read from the stdio FILE object. */ +#endif /* STDIO */ + +PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, + png_const_voidp memory, png_size_t size)); + /* The PNG header is read from the given memory buffer. */ + +PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image, + png_const_colorp background, void *buffer, png_int_32 row_stride, + void *colormap)); + /* Finish reading the image into the supplied buffer and clean up the + * png_image structure. + * + * row_stride is the step, in byte or 2-byte units as appropriate, + * between adjacent rows. A positive stride indicates that the top-most row + * is first in the buffer - the normal top-down arrangement. A negative + * stride indicates that the bottom-most row is first in the buffer. + * + * background need only be supplied if an alpha channel must be removed from + * a png_byte format and the removal is to be done by compositing on a solid + * color; otherwise it may be NULL and any composition will be done directly + * onto the buffer. The value is an sRGB color to use for the background, + * for grayscale output the green channel is used. + * + * background must be supplied when an alpha channel must be removed from a + * single byte color-mapped output format, in other words if: + * + * 1) The original format from png_image_begin_read_from_* had + * PNG_FORMAT_FLAG_ALPHA set. + * 2) The format set by the application does not. + * 3) The format set by the application has PNG_FORMAT_FLAG_COLORMAP set and + * PNG_FORMAT_FLAG_LINEAR *not* set. + * + * For linear output removing the alpha channel is always done by compositing + * on black and background is ignored. + * + * colormap must be supplied when PNG_FORMAT_FLAG_COLORMAP is set. It must + * be at least the size (in bytes) returned by PNG_IMAGE_COLORMAP_SIZE. + * image->colormap_entries will be updated to the actual number of entries + * written to the colormap; this may be less than the original value. + */ + +PNG_EXPORT(238, void, png_image_free, (png_imagep image)); + /* Free any data allocated by libpng in image->opaque, setting the pointer to + * NULL. May be called at any time after the structure is initialized. + */ +#endif /* SIMPLIFIED_READ */ + +#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED +#ifdef PNG_STDIO_SUPPORTED +/* WRITE APIS + * ---------- + * For write you must initialize a png_image structure to describe the image to + * be written. To do this use memset to set the whole structure to 0 then + * initialize fields describing your image. + * + * version: must be set to PNG_IMAGE_VERSION + * opaque: must be initialized to NULL + * width: image width in pixels + * height: image height in rows + * format: the format of the data (image and color-map) you wish to write + * flags: set to 0 unless one of the defined flags applies; set + * PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB for color format images where the RGB + * values do not correspond to the colors in sRGB. + * colormap_entries: set to the number of entries in the color-map (0 to 256) + */ +PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, + const char *file, int convert_to_8bit, const void *buffer, + png_int_32 row_stride, const void *colormap)); + /* Write the image to the named file. */ + +PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, + int convert_to_8_bit, const void *buffer, png_int_32 row_stride, + const void *colormap)); + /* Write the image to the given (FILE*). */ + +/* With both write APIs if image is in one of the linear formats with 16-bit + * data then setting convert_to_8_bit will cause the output to be an 8-bit PNG + * gamma encoded according to the sRGB specification, otherwise a 16-bit linear + * encoded PNG file is written. + * + * With color-mapped data formats the colormap parameter point to a color-map + * with at least image->colormap_entries encoded in the specified format. If + * the format is linear the written PNG color-map will be converted to sRGB + * regardless of the convert_to_8_bit flag. + * + * With all APIs row_stride is handled as in the read APIs - it is the spacing + * from one row to the next in component sized units (1 or 2 bytes) and if + * negative indicates a bottom-up row layout in the buffer. If row_stride is zero, + * libpng will calculate it for you from the image width and number of channels. + * + * Note that the write API does not support interlacing, sub-8-bit pixels, indexed + * PNG (color_type 3) or most ancillary chunks. + */ +#endif /* STDIO */ +#endif /* SIMPLIFIED_WRITE */ +/******************************************************************************* + * END OF SIMPLIFIED API + ******************************************************************************/ +#endif /* SIMPLIFIED_{READ|WRITE} */ + +#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +PNG_EXPORT(242, void, png_set_check_for_invalid_index, + (png_structrp png_ptr, int allowed)); +# ifdef PNG_GET_PALETTE_MAX_SUPPORTED +PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, + png_const_infop info_ptr)); +# endif +#endif /* CHECK_FOR_INVALID_INDEX */ + +/******************************************************************************* + * IMPLEMENTATION OPTIONS + ******************************************************************************* + * + * Support for arbitrary implementation-specific optimizations. The API allows + * particular options to be turned on or off. 'Option' is the number of the + * option and 'onoff' is 0 (off) or non-0 (on). The value returned is given + * by the PNG_OPTION_ defines below. + * + * HARDWARE: normally hardware capabilites, such as the Intel SSE instructions, + * are detected at run time, however sometimes it may be impossible + * to do this in user mode, in which case it is necessary to discover + * the capabilities in an OS specific way. Such capabilities are + * listed here when libpng has support for them and must be turned + * ON by the application if present. + * + * SOFTWARE: sometimes software optimizations actually result in performance + * decrease on some architectures or systems, or with some sets of + * PNG images. 'Software' options allow such optimizations to be + * selected at run time. + */ +#ifdef PNG_SET_OPTION_SUPPORTED +#ifdef PNG_ARM_NEON_API_SUPPORTED +# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ +#endif +#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ +#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ +#define PNG_OPTION_NEXT 6 /* Next option - numbers must be even */ + +/* Return values: NOTE: there are four values and 'off' is *not* zero */ +#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ +#define PNG_OPTION_INVALID 1 /* Option number out of range */ +#define PNG_OPTION_OFF 2 +#define PNG_OPTION_ON 3 + +PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, + int onoff)); +#endif /* SET_OPTION */ + +/******************************************************************************* + * END OF HARDWARE AND SOFTWARE OPTIONS + ******************************************************************************/ + +/* Maintainer: Put new public prototypes here ^, in libpng.3, in project + * defs, and in scripts/symbols.def. + */ + +/* The last ordinal number (this is the *last* one already used; the next + * one to use is one more than this.) + */ +#ifdef PNG_EXPORT_LAST_ORDINAL + PNG_EXPORT_LAST_ORDINAL(244); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff --git a/lib/osx/include/pngconf.h b/lib/osx/include/pngconf.h new file mode 100644 index 0000000..62e37cf --- /dev/null +++ b/lib/osx/include/pngconf.h @@ -0,0 +1,622 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.6.18, July 23, 2015 + * + * Copyright (c) 1998-2015 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + * Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ + +/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C + * compiler for correct compilation. The following header files are required by + * the standard. If your compiler doesn't provide these header files, or they + * do not match the standard, you will need to provide/improve them. + */ +#include <limits.h> +#include <stddef.h> + +/* Library header files. These header files are all defined by ISOC90; libpng + * expects conformant implementations, however, an ISOC90 conformant system need + * not provide these header files if the functionality cannot be implemented. + * In this case it will be necessary to disable the relevant parts of libpng in + * the build of pnglibconf.h. + * + * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not + * include this unnecessary header file. + */ + +#ifdef PNG_STDIO_SUPPORTED + /* Required for the definition of FILE: */ +# include <stdio.h> +#endif + +#ifdef PNG_SETJMP_SUPPORTED + /* Required for the definition of jmp_buf and the declaration of longjmp: */ +# include <setjmp.h> +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED + /* Required for struct tm: */ +# include <time.h> +#endif + +#endif /* PNG_BUILDING_SYMBOL_TABLE */ + +/* Prior to 1.6.0 it was possible to turn off 'const' in declarations using + * PNG_NO_CONST; this is no longer supported except for data declarations which + * apparently still cause problems in 2011 on some compilers. + */ +#define PNG_CONST const /* backward compatibility only */ + +/* This controls optimization of the reading of 16 and 32 bit values + * from PNG files. It can be set on a per-app-file basis - it + * just changes whether a macro is used when the function is called. + * The library builder sets the default; if read functions are not + * built into the library the macro implementation is forced on. + */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# if PNG_DEFAULT_READ_MACROS +# define PNG_USE_READ_MACROS +# endif +#endif + +/* COMPILER SPECIFIC OPTIONS. + * + * These options are provided so that a variety of difficult compilers + * can be used. Some are fixed at build time (e.g. PNG_API_RULE + * below) but still have compiler specific implementations, others + * may be changed on a per-file basis when compiling against libpng. + */ + +/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect + * against legacy (pre ISOC90) compilers that did not understand function + * prototypes. It is not required for modern C compilers. + */ +#ifndef PNGARG +# define PNGARG(arglist) arglist +#endif + +/* Function calling conventions. + * ============================= + * Normally it is not necessary to specify to the compiler how to call + * a function - it just does it - however on x86 systems derived from + * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems + * and some others) there are multiple ways to call a function and the + * default can be changed on the compiler command line. For this reason + * libpng specifies the calling convention of every exported function and + * every function called via a user supplied function pointer. This is + * done in this file by defining the following macros: + * + * PNGAPI Calling convention for exported functions. + * PNGCBAPI Calling convention for user provided (callback) functions. + * PNGCAPI Calling convention used by the ANSI-C library (required + * for longjmp callbacks and sometimes used internally to + * specify the calling convention for zlib). + * + * These macros should never be overridden. If it is necessary to + * change calling convention in a private build this can be done + * by setting PNG_API_RULE (which defaults to 0) to one of the values + * below to select the correct 'API' variants. + * + * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. + * This is correct in every known environment. + * PNG_API_RULE=1 Use the operating system convention for PNGAPI and + * the 'C' calling convention (from PNGCAPI) for + * callbacks (PNGCBAPI). This is no longer required + * in any known environment - if it has to be used + * please post an explanation of the problem to the + * libpng mailing list. + * + * These cases only differ if the operating system does not use the C + * calling convention, at present this just means the above cases + * (x86 DOS/Windows sytems) and, even then, this does not apply to + * Cygwin running on those systems. + * + * Note that the value must be defined in pnglibconf.h so that what + * the application uses to call the library matches the conventions + * set when building the library. + */ + +/* Symbol export + * ============= + * When building a shared library it is almost always necessary to tell + * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' + * is used to mark the symbols. On some systems these symbols can be + * extracted at link time and need no special processing by the compiler, + * on other systems the symbols are flagged by the compiler and just + * the declaration requires a special tag applied (unfortunately) in a + * compiler dependent way. Some systems can do either. + * + * A small number of older systems also require a symbol from a DLL to + * be flagged to the program that calls it. This is a problem because + * we do not know in the header file included by application code that + * the symbol will come from a shared library, as opposed to a statically + * linked one. For this reason the application must tell us by setting + * the magic flag PNG_USE_DLL to turn on the special processing before + * it includes png.h. + * + * Four additional macros are used to make this happen: + * + * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from + * the build or imported if PNG_USE_DLL is set - compiler + * and system specific. + * + * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to + * 'type', compiler specific. + * + * PNG_DLL_EXPORT Set to the magic to use during a libpng build to + * make a symbol exported from the DLL. Not used in the + * public header files; see pngpriv.h for how it is used + * in the libpng build. + * + * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come + * from a DLL - used to define PNG_IMPEXP when + * PNG_USE_DLL is set. + */ + +/* System specific discovery. + * ========================== + * This code is used at build time to find PNG_IMPEXP, the API settings + * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL + * import processing is possible. On Windows systems it also sets + * compiler-specific macros to the values required to change the calling + * conventions of the various functions. + */ +#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ + defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) + /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or + * MinGW on any architecture currently supported by Windows. Also includes + * Watcom builds but these need special treatment because they are not + * compatible with GCC or Visual C because of different calling conventions. + */ +# if PNG_API_RULE == 2 + /* If this line results in an error, either because __watcall is not + * understood or because of a redefine just below you cannot use *this* + * build of the library with the compiler you are using. *This* build was + * build using Watcom and applications must also be built using Watcom! + */ +# define PNGCAPI __watcall +# endif + +# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) +# define PNGCAPI __cdecl +# if PNG_API_RULE == 1 + /* If this line results in an error __stdcall is not understood and + * PNG_API_RULE should not have been set to '1'. + */ +# define PNGAPI __stdcall +# endif +# else + /* An older compiler, or one not detected (erroneously) above, + * if necessary override on the command line to get the correct + * variants for the compiler. + */ +# ifndef PNGCAPI +# define PNGCAPI _cdecl +# endif +# if PNG_API_RULE == 1 && !defined(PNGAPI) +# define PNGAPI _stdcall +# endif +# endif /* compiler/api */ + + /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ + +# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) +# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" +# endif + +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ + +#else /* !Windows */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# define PNGAPI _System +# else /* !Windows/x86 && !OS/2 */ + /* Use the defaults, or define PNG*API on the command line (but + * this will have to be done for every compile!) + */ +# endif /* other system, !OS/2 */ +#endif /* !Windows/x86 */ + +/* Now do all the defaulting . */ +#ifndef PNGCAPI +# define PNGCAPI +#endif +#ifndef PNGCBAPI +# define PNGCBAPI PNGCAPI +#endif +#ifndef PNGAPI +# define PNGAPI PNGCAPI +#endif + +/* PNG_IMPEXP may be set on the compilation system command line or (if not set) + * then in an internal header file when building the library, otherwise (when + * using the library) it is set here. + */ +#ifndef PNG_IMPEXP +# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) + /* This forces use of a DLL, disallowing static linking */ +# define PNG_IMPEXP PNG_DLL_IMPORT +# endif + +# ifndef PNG_IMPEXP +# define PNG_IMPEXP +# endif +#endif + +/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat + * 'attributes' as a storage class - the attributes go at the start of the + * function definition, and attributes are always appended regardless of the + * compiler. This considerably simplifies these macros but may cause problems + * if any compilers both need function attributes and fail to handle them as + * a storage class (this is unlikely.) + */ +#ifndef PNG_FUNCTION +# define PNG_FUNCTION(type, name, args, attributes) attributes type name args +#endif + +#ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type +#endif + + /* The ordinal value is only relevant when preprocessing png.h for symbol + * table entries, so we discard it here. See the .dfn files in the + * scripts directory. + */ + +#ifndef PNG_EXPORTA +# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ + PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ + PNG_LINKAGE_API attributes) +#endif + +/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, + * so make something non-empty to satisfy the requirement: + */ +#define PNG_EMPTY /*empty list*/ + +#define PNG_EXPORT(ordinal, type, name, args) \ + PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) + +/* Use PNG_REMOVED to comment out a removed interface. */ +#ifndef PNG_REMOVED +# define PNG_REMOVED(ordinal, type, name, args, attributes) +#endif + +#ifndef PNG_CALLBACK +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +#endif + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. + * + * Added at libpng-1.2.41. + */ + +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED + /* Support for compiler specific function attributes. These are used + * so that where compiler support is available, incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. Disabling these removes the warnings but may also produce + * less efficient code. + */ +# if defined(__clang__) && defined(__has_attribute) + /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ +# if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# if !defined(PNG_PRIVATE) +# ifdef __has_extension +# if __has_extension(attribute_unavailable_with_message) +# define PNG_PRIVATE __attribute__((__unavailable__(\ + "This function is not exported by libpng."))) +# endif +# endif +# endif +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif + +# elif defined(__GNUC__) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if __GNUC__ >= 3 +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif +# if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif +# endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ +# endif /* __GNUC__ >= 3 */ + +# elif defined(_MSC_VER) && (_MSC_VER >= 1300) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* not supported */ +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __declspec(noreturn) +# endif +# ifndef PNG_ALLOCATED +# if (_MSC_VER >= 1400) +# define PNG_ALLOCATED __declspec(restrict) +# endif +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __declspec(deprecated) +# endif +# ifndef PNG_PRIVATE +# define PNG_PRIVATE __declspec(deprecated) +# endif +# ifndef PNG_RESTRICT +# if (_MSC_VER >= 1400) +# define PNG_RESTRICT __restrict +# endif +# endif + +# elif defined(__WATCOMC__) +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif +# endif +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif +#ifndef PNG_RESTRICT +# define PNG_RESTRICT /* The C99 "restrict" feature */ +#endif + +#ifndef PNG_FP_EXPORT /* A floating point API. */ +# ifdef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FP_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No floating point APIs */ +# define PNG_FP_EXPORT(ordinal, type, name, args) +# endif +#endif +#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ +# ifdef PNG_FIXED_POINT_SUPPORTED +# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No fixed point APIs */ +# define PNG_FIXED_EXPORT(ordinal, type, name, args) +# endif +#endif + +#ifndef PNG_BUILDING_SYMBOL_TABLE +/* Some typedefs to get us started. These should be safe on most of the common + * platforms. + * + * png_uint_32 and png_int_32 may, currently, be larger than required to hold a + * 32-bit value however this is not normally advisable. + * + * png_uint_16 and png_int_16 should always be two bytes in size - this is + * verified at library build time. + * + * png_byte must always be one byte in size. + * + * The checks below use constants from limits.h, as defined by the ISOC90 + * standard. + */ +#if CHAR_BIT == 8 && UCHAR_MAX == 255 + typedef unsigned char png_byte; +#else +# error "libpng requires 8 bit bytes" +#endif + +#if INT_MIN == -32768 && INT_MAX == 32767 + typedef int png_int_16; +#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 + typedef short png_int_16; +#else +# error "libpng requires a signed 16 bit type" +#endif + +#if UINT_MAX == 65535 + typedef unsigned int png_uint_16; +#elif USHRT_MAX == 65535 + typedef unsigned short png_uint_16; +#else +# error "libpng requires an unsigned 16 bit type" +#endif + +#if INT_MIN < -2147483646 && INT_MAX > 2147483646 + typedef int png_int_32; +#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 + typedef long int png_int_32; +#else +# error "libpng requires a signed 32 bit (or more) type" +#endif + +#if UINT_MAX > 4294967294 + typedef unsigned int png_uint_32; +#elif ULONG_MAX > 4294967294 + typedef unsigned long int png_uint_32; +#else +# error "libpng requires an unsigned 32 bit (or more) type" +#endif + +/* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, + * requires an ISOC90 compiler and relies on consistent behavior of sizeof. + */ +typedef size_t png_size_t; +typedef ptrdiff_t png_ptrdiff_t; + +/* libpng needs to know the maximum value of 'size_t' and this controls the + * definition of png_alloc_size_t, below. This maximum value of size_t limits + * but does not control the maximum allocations the library makes - there is + * direct application control of this through png_set_user_limits(). + */ +#ifndef PNG_SMALL_SIZE_T + /* Compiler specific tests for systems where size_t is known to be less than + * 32 bits (some of these systems may no longer work because of the lack of + * 'far' support; see above.) + */ +# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ + (defined(_MSC_VER) && defined(MAXSEG_64K)) +# define PNG_SMALL_SIZE_T +# endif +#endif + +/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no + * smaller than png_uint_32. Casts from png_size_t or png_uint_32 to + * png_alloc_size_t are not necessary; in fact, it is recommended not to use + * them at all so that the compiler can complain when something turns out to be + * problematic. + * + * Casts in the other direction (from png_alloc_size_t to png_size_t or + * png_uint_32) should be explicitly applied; however, we do not expect to + * encounter practical situations that require such conversions. + * + * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than + * 4294967295 - i.e. less than the maximum value of png_uint_32. + */ +#ifdef PNG_SMALL_SIZE_T + typedef png_uint_32 png_alloc_size_t; +#else + typedef png_size_t png_alloc_size_t; +#endif + +/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler + * implementations of Intel CPU specific support of user-mode segmented address + * spaces, where 16-bit pointers address more than 65536 bytes of memory using + * separate 'segment' registers. The implementation requires two different + * types of pointer (only one of which includes the segment value.) + * + * If required this support is available in version 1.2 of libpng and may be + * available in versions through 1.5, although the correctness of the code has + * not been verified recently. + */ + +/* Typedef for floating-point numbers that are converted to fixed-point with a + * multiple of 100,000, e.g., gamma + */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void * png_voidp; +typedef const void * png_const_voidp; +typedef png_byte * png_bytep; +typedef const png_byte * png_const_bytep; +typedef png_uint_32 * png_uint_32p; +typedef const png_uint_32 * png_const_uint_32p; +typedef png_int_32 * png_int_32p; +typedef const png_int_32 * png_const_int_32p; +typedef png_uint_16 * png_uint_16p; +typedef const png_uint_16 * png_const_uint_16p; +typedef png_int_16 * png_int_16p; +typedef const png_int_16 * png_const_int_16p; +typedef char * png_charp; +typedef const char * png_const_charp; +typedef png_fixed_point * png_fixed_point_p; +typedef const png_fixed_point * png_const_fixed_point_p; +typedef png_size_t * png_size_tp; +typedef const png_size_t * png_const_size_tp; + +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double * png_doublep; +typedef const double * png_const_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte * * png_bytepp; +typedef png_uint_32 * * png_uint_32pp; +typedef png_int_32 * * png_int_32pp; +typedef png_uint_16 * * png_uint_16pp; +typedef png_int_16 * * png_int_16pp; +typedef const char * * png_const_charpp; +typedef char * * png_charpp; +typedef png_fixed_point * * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double * * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char * * * png_charppp; + +#endif /* PNG_BUILDING_SYMBOL_TABLE */ + +#endif /* PNGCONF_H */ diff --git a/lib/osx/include/pnglibconf.h b/lib/osx/include/pnglibconf.h new file mode 100644 index 0000000..a8144c8 --- /dev/null +++ b/lib/osx/include/pnglibconf.h @@ -0,0 +1,214 @@ +/* pnglibconf.h - library build configuration */ + +/* libpng version 1.6.18, July 23, 2015 */ + +/* Copyright (c) 1998-2014 Glenn Randers-Pehrson */ + +/* This code is released under the libpng license. */ +/* For conditions of distribution and use, see the disclaimer */ +/* and license in png.h */ + +/* pnglibconf.h */ +/* Machine generated file: DO NOT EDIT */ +/* Derived from: scripts/pnglibconf.dfa */ +#ifndef PNGLCONF_H +#define PNGLCONF_H +/* options */ +#define PNG_16BIT_SUPPORTED +#define PNG_ALIGNED_MEMORY_SUPPORTED +/*#undef PNG_ARM_NEON_API_SUPPORTED*/ +/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ +#define PNG_BENIGN_ERRORS_SUPPORTED +#define PNG_BENIGN_READ_ERRORS_SUPPORTED +/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ +#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_COLORSPACE_SUPPORTED +#define PNG_CONSOLE_IO_SUPPORTED +#define PNG_CONVERT_tIME_SUPPORTED +#define PNG_EASY_ACCESS_SUPPORTED +/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ +#define PNG_ERROR_TEXT_SUPPORTED +#define PNG_FIXED_POINT_SUPPORTED +#define PNG_FLOATING_ARITHMETIC_SUPPORTED +#define PNG_FLOATING_POINT_SUPPORTED +#define PNG_FORMAT_AFIRST_SUPPORTED +#define PNG_FORMAT_BGR_SUPPORTED +#define PNG_GAMMA_SUPPORTED +#define PNG_GET_PALETTE_MAX_SUPPORTED +#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +#define PNG_INCH_CONVERSIONS_SUPPORTED +#define PNG_INFO_IMAGE_SUPPORTED +#define PNG_IO_STATE_SUPPORTED +#define PNG_MNG_FEATURES_SUPPORTED +#define PNG_POINTER_INDEXING_SUPPORTED +#define PNG_PROGRESSIVE_READ_SUPPORTED +#define PNG_READ_16BIT_SUPPORTED +#define PNG_READ_ALPHA_MODE_SUPPORTED +#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_BGR_SUPPORTED +#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_READ_COMPOSITE_NODIV_SUPPORTED +#define PNG_READ_COMPRESSED_TEXT_SUPPORTED +#define PNG_READ_EXPAND_16_SUPPORTED +#define PNG_READ_EXPAND_SUPPORTED +#define PNG_READ_FILLER_SUPPORTED +#define PNG_READ_GAMMA_SUPPORTED +#define PNG_READ_GET_PALETTE_MAX_SUPPORTED +#define PNG_READ_GRAY_TO_RGB_SUPPORTED +#define PNG_READ_INTERLACING_SUPPORTED +#define PNG_READ_INT_FUNCTIONS_SUPPORTED +#define PNG_READ_INVERT_ALPHA_SUPPORTED +#define PNG_READ_INVERT_SUPPORTED +#define PNG_READ_OPT_PLTE_SUPPORTED +#define PNG_READ_PACKSWAP_SUPPORTED +#define PNG_READ_PACK_SUPPORTED +#define PNG_READ_QUANTIZE_SUPPORTED +#define PNG_READ_RGB_TO_GRAY_SUPPORTED +#define PNG_READ_SCALE_16_TO_8_SUPPORTED +#define PNG_READ_SHIFT_SUPPORTED +#define PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_STRIP_ALPHA_SUPPORTED +#define PNG_READ_SUPPORTED +#define PNG_READ_SWAP_ALPHA_SUPPORTED +#define PNG_READ_SWAP_SUPPORTED +#define PNG_READ_TEXT_SUPPORTED +#define PNG_READ_TRANSFORMS_SUPPORTED +#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_READ_USER_CHUNKS_SUPPORTED +#define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_bKGD_SUPPORTED +#define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_gAMA_SUPPORTED +#define PNG_READ_hIST_SUPPORTED +#define PNG_READ_iCCP_SUPPORTED +#define PNG_READ_iTXt_SUPPORTED +#define PNG_READ_oFFs_SUPPORTED +#define PNG_READ_pCAL_SUPPORTED +#define PNG_READ_pHYs_SUPPORTED +#define PNG_READ_sBIT_SUPPORTED +#define PNG_READ_sCAL_SUPPORTED +#define PNG_READ_sPLT_SUPPORTED +#define PNG_READ_sRGB_SUPPORTED +#define PNG_READ_tEXt_SUPPORTED +#define PNG_READ_tIME_SUPPORTED +#define PNG_READ_tRNS_SUPPORTED +#define PNG_READ_zTXt_SUPPORTED +#define PNG_SAVE_INT_32_SUPPORTED +#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_SETJMP_SUPPORTED +#define PNG_SET_OPTION_SUPPORTED +#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_SET_USER_LIMITS_SUPPORTED +#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED +#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED +#define PNG_SIMPLIFIED_READ_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_SUPPORTED +#define PNG_STDIO_SUPPORTED +#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_TEXT_SUPPORTED +#define PNG_TIME_RFC1123_SUPPORTED +#define PNG_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_CHUNKS_SUPPORTED +#define PNG_USER_LIMITS_SUPPORTED +#define PNG_USER_MEM_SUPPORTED +#define PNG_USER_TRANSFORM_INFO_SUPPORTED +#define PNG_USER_TRANSFORM_PTR_SUPPORTED +#define PNG_WARNINGS_SUPPORTED +#define PNG_WRITE_16BIT_SUPPORTED +#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_BGR_SUPPORTED +#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED +#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED +#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +#define PNG_WRITE_FILLER_SUPPORTED +#define PNG_WRITE_FILTER_SUPPORTED +#define PNG_WRITE_FLUSH_SUPPORTED +#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED +#define PNG_WRITE_INTERLACING_SUPPORTED +#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED +#define PNG_WRITE_INVERT_ALPHA_SUPPORTED +#define PNG_WRITE_INVERT_SUPPORTED +#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED +#define PNG_WRITE_PACKSWAP_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED +#define PNG_WRITE_SHIFT_SUPPORTED +#define PNG_WRITE_SUPPORTED +#define PNG_WRITE_SWAP_ALPHA_SUPPORTED +#define PNG_WRITE_SWAP_SUPPORTED +#define PNG_WRITE_TEXT_SUPPORTED +#define PNG_WRITE_TRANSFORMS_SUPPORTED +#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_WRITE_USER_TRANSFORM_SUPPORTED +#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_WRITE_bKGD_SUPPORTED +#define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_gAMA_SUPPORTED +#define PNG_WRITE_hIST_SUPPORTED +#define PNG_WRITE_iCCP_SUPPORTED +#define PNG_WRITE_iTXt_SUPPORTED +#define PNG_WRITE_oFFs_SUPPORTED +#define PNG_WRITE_pCAL_SUPPORTED +#define PNG_WRITE_pHYs_SUPPORTED +#define PNG_WRITE_sBIT_SUPPORTED +#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_sPLT_SUPPORTED +#define PNG_WRITE_sRGB_SUPPORTED +#define PNG_WRITE_tEXt_SUPPORTED +#define PNG_WRITE_tIME_SUPPORTED +#define PNG_WRITE_tRNS_SUPPORTED +#define PNG_WRITE_zTXt_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_iTXt_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_tEXt_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_tRNS_SUPPORTED +#define PNG_zTXt_SUPPORTED +/* end of options */ +/* settings */ +#define PNG_API_RULE 0 +#define PNG_COST_SHIFT 3 +#define PNG_DEFAULT_READ_MACROS 1 +#define PNG_GAMMA_THRESHOLD_FIXED 5000 +#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE +#define PNG_INFLATE_BUF_SIZE 1024 +#define PNG_LINKAGE_API extern +#define PNG_LINKAGE_CALLBACK extern +#define PNG_LINKAGE_DATA extern +#define PNG_LINKAGE_FUNCTION extern +#define PNG_MAX_GAMMA_8 11 +#define PNG_QUANTIZE_BLUE_BITS 5 +#define PNG_QUANTIZE_GREEN_BITS 5 +#define PNG_QUANTIZE_RED_BITS 5 +#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) +#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 +#define PNG_USER_CHUNK_CACHE_MAX 1000 +#define PNG_USER_CHUNK_MALLOC_MAX 8000000 +#define PNG_USER_HEIGHT_MAX 1000000 +#define PNG_USER_WIDTH_MAX 1000000 +#define PNG_WEIGHT_SHIFT 8 +#define PNG_ZBUF_SIZE 8192 +#define PNG_ZLIB_VERNUM 0x1250 +#define PNG_Z_DEFAULT_COMPRESSION (-1) +#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 +#define PNG_Z_DEFAULT_STRATEGY 1 +#define PNG_sCAL_PRECISION 5 +#define PNG_sRGB_PROFILE_CHECKS 2 +/* end of settings */ +#endif /* PNGLCONF_H */ diff --git a/lib/osx/include/steam/isteamapplist.h b/lib/osx/include/steam/isteamapplist.h new file mode 100644 index 0000000..d678909 --- /dev/null +++ b/lib/osx/include/steam/isteamapplist.h @@ -0,0 +1,63 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPLIST_H +#define ISTEAMAPPLIST_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamtypes.h" + +//----------------------------------------------------------------------------- +// Purpose: This is a restricted interface that can only be used by previously approved apps, +// contact your Steam Account Manager if you believe you need access to this API. +// This interface lets you detect installed apps for the local Steam client, useful for debugging tools +// to offer lists of apps to debug via Steam. +//----------------------------------------------------------------------------- +class ISteamAppList +{ +public: + virtual uint32 GetNumInstalledApps() = 0; + virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; + + virtual int GetAppName( AppId_t nAppID, OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found + virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found + + virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game +}; + +#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when a new app is installed +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when an app is uninstalled +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) +#endif // ISTEAMAPPLIST_H diff --git a/lib/osx/include/steam/isteamapps.h b/lib/osx/include/steam/isteamapps.h new file mode 100644 index 0000000..9a97b4a --- /dev/null +++ b/lib/osx/include/steam/isteamapps.h @@ -0,0 +1,176 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPS_H +#define ISTEAMAPPS_H +#ifdef _WIN32 +#pragma once +#endif + +const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key + + +//----------------------------------------------------------------------------- +// Purpose: interface to app data +//----------------------------------------------------------------------------- +class ISteamApps +{ +public: + virtual bool BIsSubscribed() = 0; + virtual bool BIsLowViolence() = 0; + virtual bool BIsCybercafe() = 0; + virtual bool BIsVACBanned() = 0; + virtual const char *GetCurrentGameLanguage() = 0; + virtual const char *GetAvailableGameLanguages() = 0; + + // only use this member if you need to check ownership of another game related to yours, a demo for example + virtual bool BIsSubscribedApp( AppId_t appID ) = 0; + + // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed + virtual bool BIsDlcInstalled( AppId_t appID ) = 0; + + // returns the Unix time of the purchase of the app + virtual uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID ) = 0; + + // Checks if the user is subscribed to the current app through a free weekend + // This function will return false for users who have a retail or other type of license + // Before using, please ask your Valve technical contact how to package and secure your free weekened + virtual bool BIsSubscribedFromFreeWeekend() = 0; + + // Returns the number of DLC pieces for the running app + virtual int GetDLCCount() = 0; + + // Returns metadata for DLC by index, of range [0, GetDLCCount()] + virtual bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize ) = 0; + + // Install/Uninstall control for optional DLC + virtual void InstallDLC( AppId_t nAppID ) = 0; + virtual void UninstallDLC( AppId_t nAppID ) = 0; + + // Request legacy cd-key for yourself or owned DLC. If you are interested in this + // data then make sure you provide us with a list of valid keys to be distributed + // to users when they purchase the game, before the game ships. + // You'll receive an AppProofOfPurchaseKeyResponse_t callback when + // the key is available (which may be immediately). + virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0; + + virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch + virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing + virtual uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots ) = 0; // return installed depots in mount order + + // returns current app install folder for AppID, returns folder name length + virtual uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize ) = 0; + virtual bool BIsAppInstalled( AppId_t appID ) = 0; // returns true if that app is installed (not necessarily owned) + + virtual CSteamID GetAppOwner() = 0; // returns the SteamID of the original owner. If different from current user, it's borrowed + + // Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc. + // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. + // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + // but it is advised that you not param names beginning with an underscore for your own features. + virtual const char *GetLaunchQueryParam( const char *pchKey ) = 0; + + // get download progress for optional DLC + virtual bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // return the buildid of this app, may change at any time based on backend updates to the game + virtual int GetAppBuildId() = 0; + + // Request all proof of purchase keys for the calling appid and asociated DLC. + // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with + // appropriate appid values, ending with a final callback where the m_nAppId + // member is k_uAppIdInvalid (zero). + virtual void RequestAllProofOfPurchaseKeys() = 0; + + CALL_RESULT( FileDetailsResult_t ) + virtual SteamAPICall_t GetFileDetails( const char* pszFileName ) = 0; +}; + +#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: posted after the user gains ownership of DLC & that DLC is installed +//----------------------------------------------------------------------------- +struct DlcInstalled_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 5 }; + AppId_t m_nAppID; // AppID of the DLC +}; + + +//----------------------------------------------------------------------------- +// Purpose: possible results when registering an activation code +//----------------------------------------------------------------------------- +enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RegisterActivationCode() +//----------------------------------------------------------------------------- +struct RegisterActivationCodeResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; + ERegisterActivationCodeResult m_eResult; + uint32 m_unPackageRegistered; // package that was registered. Only set on success +}; + + +//--------------------------------------------------------------------------------- +// Purpose: posted after the user gains executes a steam url with query parameters +// such as steam://run/<appid>//?param1=value1;param2=value2;param3=value3; etc +// while the game is already running. The new params can be queried +// with GetLaunchQueryParam. +//--------------------------------------------------------------------------------- +struct NewLaunchQueryParameters_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys +// for supporting third-party CD keys, or other proof-of-purchase systems. +//----------------------------------------------------------------------------- +struct AppProofOfPurchaseKeyResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; + EResult m_eResult; + uint32 m_nAppID; + uint32 m_cchKeyLength; + char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to GetFileDetails +//----------------------------------------------------------------------------- +struct FileDetailsResult_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 23 }; + EResult m_eResult; + uint64 m_ulFileSize; // original file size in bytes + uint8 m_FileSHA[20]; // original file SHA1 hash + uint32 m_unFlags; // +}; + + +#pragma pack( pop ) +#endif // ISTEAMAPPS_H diff --git a/lib/osx/include/steam/isteamappticket.h b/lib/osx/include/steam/isteamappticket.h new file mode 100644 index 0000000..21fb9e1 --- /dev/null +++ b/lib/osx/include/steam/isteamappticket.h @@ -0,0 +1,28 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: a private, but well versioned, interface to get at critical bits +// of a steam3 appticket - consumed by the simple drm wrapper to let it +// ask about ownership with greater confidence. +// +//============================================================================= + +#ifndef ISTEAMAPPTICKET_H +#define ISTEAMAPPTICKET_H +#pragma once + +//----------------------------------------------------------------------------- +// Purpose: hand out a reasonable "future proof" view of an app ownership ticket +// the raw (signed) buffer, and indices into that buffer where the appid and +// steamid are located. the sizes of the appid and steamid are implicit in +// (each version of) the interface - currently uin32 appid and uint64 steamid +//----------------------------------------------------------------------------- +class ISteamAppTicket +{ +public: + virtual uint32 GetAppOwnershipTicketData( uint32 nAppID, void *pvBuffer, uint32 cbBufferLength, uint32 *piAppId, uint32 *piSteamId, uint32 *piSignature, uint32 *pcbSignature ) = 0; +}; + +#define STEAMAPPTICKET_INTERFACE_VERSION "STEAMAPPTICKET_INTERFACE_VERSION001" + + +#endif // ISTEAMAPPTICKET_H diff --git a/lib/osx/include/steam/isteamclient.h b/lib/osx/include/steam/isteamclient.h new file mode 100644 index 0000000..45d707d --- /dev/null +++ b/lib/osx/include/steam/isteamclient.h @@ -0,0 +1,520 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: Main interface for loading and accessing Steamworks API's from the +// Steam client. +// For most uses, this code is wrapped inside of SteamAPI_Init() +//============================================================================= + +#ifndef ISTEAMCLIENT_H +#define ISTEAMCLIENT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + +// Define compile time assert macros to let us validate the structure sizes. +#define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; + +#ifndef REFERENCE +#define REFERENCE(arg) ((void)arg) +#endif + +#if defined(STEAM_API_EXPORTS) && !defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) __VA_ARGS__ +#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) +#else +#define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: +#endif + +#if defined(__linux__) || defined(__APPLE__) +// The 32-bit version of gcc has the alignment requirement for uint64 and double set to +// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. +// The 64-bit version of gcc has the alignment requirement for these types set to +// 8 meaning that unless we use #pragma pack(4) our structures will get bigger. +// The 64-bit structure packing has to match the 32-bit structure packing for each platform. +#define VALVE_CALLBACK_PACK_SMALL +#else +#define VALVE_CALLBACK_PACK_LARGE +#endif + +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error ??? +#endif + +typedef struct ValvePackingSentinel_t +{ + uint32 m_u32; + uint64 m_u64; + uint16 m_u16; + double m_d; +} ValvePackingSentinel_t; + +#pragma pack( pop ) + + +#if defined(VALVE_CALLBACK_PACK_SMALL) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 ) +#elif defined(VALVE_CALLBACK_PACK_LARGE) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 ) +#else +#error ??? +#endif + + +// handle to a communication pipe to the Steam client +typedef int32 HSteamPipe; +// handle to single instance of a steam user +typedef int32 HSteamUser; +// function prototype +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); +extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); +#if defined( __SNC__ ) + #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor +#endif + +// interface predec +class ISteamUser; +class ISteamGameServer; +class ISteamFriends; +class ISteamUtils; +class ISteamMatchmaking; +class ISteamContentServer; +class ISteamMatchmakingServers; +class ISteamUserStats; +class ISteamApps; +class ISteamNetworking; +class ISteamRemoteStorage; +class ISteamScreenshots; +class ISteamMusic; +class ISteamMusicRemote; +class ISteamGameServerStats; +class ISteamPS3OverlayRender; +class ISteamHTTP; +class ISteamUnifiedMessages; +class ISteamController; +class ISteamUGC; +class ISteamAppList; +class ISteamHTMLSurface; +class ISteamInventory; +class ISteamVideo; + +//----------------------------------------------------------------------------- +// Purpose: Interface to creating a new steam instance, or to +// connect to an existing steam instance, whether it's in a +// different process or is local. +// +// For most scenarios this is all handled automatically via SteamAPI_Init(). +// You'll only need these APIs if you have a more complex versioning scheme, +// or if you want to implement a multiplexed gameserver where a single process +// is handling multiple games at once with independent gameserver SteamIDs. +//----------------------------------------------------------------------------- +class ISteamClient +{ +public: + // Creates a communication pipe to the Steam client. + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamPipe CreateSteamPipe() = 0; + + // Releases a previously created communications pipe + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; + + // connects to an existing global user, failing if none exists + // used by the game to coordinate with the steamUI + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; + + // used by game servers, create a steam user that won't be shared with anyone else + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0; + + // removes an allocated user + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0; + + // retrieves the ISteamUser interface associated with the handle + virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // retrieves the ISteamGameServer interface associated with the handle + virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // set the local IP and Port to bind to + // this must be set before CreateLocalUser() + virtual void SetLocalIPBinding( uint32 unIP, uint16 usPort ) = 0; + + // returns the ISteamFriends interface + virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUtils interface + virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmaking interface + virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmakingServers interface + virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the a generic interface + virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUserStats interface + virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamGameServerStats interface + virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns apps interface + virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // networking + virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // remote storage + virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // user screenshots + virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message. + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Trigger global shutdown for the DLL + virtual bool BShutdownIfAllPipesClosed() = 0; + + // Expose HTTP interface + virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUnifiedMessages interface + virtual ISteamUnifiedMessages *GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamController interface + virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUGC interface + virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns app list interface, only available on specially registered apps + virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player + virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player Remote + virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // html page display + virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // Helper functions for internal Steam usage + STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) + + // inventory + virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Video + virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; +}; + + +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient017" + +//----------------------------------------------------------------------------- +// Purpose: Base values for callback identifiers, each callback must +// have a unique ID. +//----------------------------------------------------------------------------- +enum { k_iSteamUserCallbacks = 100 }; +enum { k_iSteamGameServerCallbacks = 200 }; +enum { k_iSteamFriendsCallbacks = 300 }; +enum { k_iSteamBillingCallbacks = 400 }; +enum { k_iSteamMatchmakingCallbacks = 500 }; +enum { k_iSteamContentServerCallbacks = 600 }; +enum { k_iSteamUtilsCallbacks = 700 }; +enum { k_iClientFriendsCallbacks = 800 }; +enum { k_iClientUserCallbacks = 900 }; +enum { k_iSteamAppsCallbacks = 1000 }; +enum { k_iSteamUserStatsCallbacks = 1100 }; +enum { k_iSteamNetworkingCallbacks = 1200 }; +enum { k_iClientRemoteStorageCallbacks = 1300 }; +enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamGameServerItemsCallbacks = 1500 }; +enum { k_iClientUtilsCallbacks = 1600 }; +enum { k_iSteamGameCoordinatorCallbacks = 1700 }; +enum { k_iSteamGameServerStatsCallbacks = 1800 }; +enum { k_iSteam2AsyncCallbacks = 1900 }; +enum { k_iSteamGameStatsCallbacks = 2000 }; +enum { k_iClientHTTPCallbacks = 2100 }; +enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamScreenshotsCallbacks = 2300 }; +enum { k_iClientAudioCallbacks = 2400 }; +enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +enum { k_iSteamStreamLauncherCallbacks = 2600 }; +enum { k_iClientControllerCallbacks = 2700 }; +enum { k_iSteamControllerCallbacks = 2800 }; +enum { k_iClientParentalSettingsCallbacks = 2900 }; +enum { k_iClientDeviceAuthCallbacks = 3000 }; +enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; +enum { k_iClientMusicCallbacks = 3200 }; +enum { k_iClientRemoteClientManagerCallbacks = 3300 }; +enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamStreamClientCallbacks = 3500 }; +enum { k_IClientProductBuilderCallbacks = 3600 }; +enum { k_iClientShortcutsCallbacks = 3700 }; +enum { k_iClientRemoteControlManagerCallbacks = 3800 }; +enum { k_iSteamAppListCallbacks = 3900 }; +enum { k_iSteamMusicCallbacks = 4000 }; +enum { k_iSteamMusicRemoteCallbacks = 4100 }; +enum { k_iClientVRCallbacks = 4200 }; +enum { k_iClientGameNotificationCallbacks = 4300 }; +enum { k_iSteamGameNotificationCallbacks = 4400 }; +enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; +enum { k_iClientVideoCallbacks = 4600 }; +enum { k_iClientInventoryCallbacks = 4700 }; +enum { k_iClientBluetoothManagerCallbacks = 4800 }; + +//----------------------------------------------------------------------------- +// The CALLBACK macros are for client side callback logging enabled with +// log_callback <first callnbackID> <last callbackID> +// Do not change any of these. +//----------------------------------------------------------------------------- + +#ifdef STEAM_CALLBACK_INSPECTION_ENABLED + +#define DEFINE_CALLBACK( callbackname, callbackid ) \ +struct callbackname { \ + typedef callbackname SteamCallback_t; \ + enum { k_iCallback = callbackid }; \ + static callbackname *GetNullPointer() { return 0; } \ + static const char *GetCallbackName() { return #callbackname; } \ + static uint32 GetCallbackID() { return callbackname::k_iCallback; } + +#define CALLBACK_MEMBER( varidx, vartype, varname ) \ + public: vartype varname ; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname; \ + varSize = sizeof( vartype ); \ + varCount = 1; \ + *pszName = #varname; *pszType = #vartype; } + +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) \ + public: vartype varname [ varcount ]; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname[0]; \ + varSize = sizeof( vartype ); \ + varCount = varcount; \ + *pszName = #varname; *pszType = #vartype; } + + +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) \ + static uint32 GetNumMemberVariables() { return numvars; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + switch ( index ) { default : return false; + + +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) case varidx : GetMemberVar_##varidx( varOffset, varSize, varCount, pszName, pszType ); return true; + +#define END_CALLBACK_INTERNAL_END() }; } }; + +#define END_DEFINE_CALLBACK_0() \ + static uint32 GetNumMemberVariables() { return 0; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { REFERENCE( pszType ); REFERENCE( pszName ); REFERENCE( varCount ); REFERENCE( varSize ); REFERENCE( varOffset ); REFERENCE( index ); return false; } \ + }; + +#else + +#define DEFINE_CALLBACK( callbackname, callbackid ) struct callbackname { typedef callbackname SteamCallback_t; enum { k_iCallback = callbackid }; +#define CALLBACK_MEMBER( varidx, vartype, varname ) public: vartype varname ; +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) public: vartype varname [ varcount ]; +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) +#define END_CALLBACK_INTERNAL_END() }; +#define END_DEFINE_CALLBACK_0() }; + +#endif + +#define END_DEFINE_CALLBACK_1() \ + END_CALLBACK_INTERNAL_BEGIN( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_2() \ + END_CALLBACK_INTERNAL_BEGIN( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_3() \ + END_CALLBACK_INTERNAL_BEGIN( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_4() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_5() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_END() + + +#define END_DEFINE_CALLBACK_6() \ + END_CALLBACK_INTERNAL_BEGIN( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_7() \ + END_CALLBACK_INTERNAL_BEGIN( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_8() \ + END_CALLBACK_INTERNAL_BEGIN( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_9() \ + END_CALLBACK_INTERNAL_BEGIN( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_10() \ + END_CALLBACK_INTERNAL_BEGIN( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_11() \ + END_CALLBACK_INTERNAL_BEGIN( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_12() \ + END_CALLBACK_INTERNAL_BEGIN( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_13() \ + END_CALLBACK_INTERNAL_BEGIN( 13 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_14() \ + END_CALLBACK_INTERNAL_BEGIN( 14 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 13 ) \ + END_CALLBACK_INTERNAL_END() + +#endif // ISTEAMCLIENT_H diff --git a/lib/osx/include/steam/isteamcontroller.h b/lib/osx/include/steam/isteamcontroller.h new file mode 100644 index 0000000..68f7af6 --- /dev/null +++ b/lib/osx/include/steam/isteamcontroller.h @@ -0,0 +1,251 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to valve controller +// +//============================================================================= + +#ifndef ISTEAMCONTROLLER_H +#define ISTEAMCONTROLLER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define STEAM_CONTROLLER_MAX_COUNT 16 + +#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 + +#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 + +#define STEAM_CONTROLLER_MAX_ORIGINS 8 + +// When sending an option to a specific controller handle, you can send to all controllers via this command +#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX + +#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f +#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f + +enum ESteamControllerPad +{ + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right +}; + +enum EControllerSource +{ + k_EControllerSource_None, + k_EControllerSource_LeftTrackpad, + k_EControllerSource_RightTrackpad, + k_EControllerSource_Joystick, + k_EControllerSource_ABXY, + k_EControllerSource_Switch, + k_EControllerSource_LeftTrigger, + k_EControllerSource_RightTrigger, + k_EControllerSource_Gyro, + k_EControllerSource_Count +}; + +enum EControllerSourceMode +{ + k_EControllerSourceMode_None, + k_EControllerSourceMode_Dpad, + k_EControllerSourceMode_Buttons, + k_EControllerSourceMode_FourButtons, + k_EControllerSourceMode_AbsoluteMouse, + k_EControllerSourceMode_RelativeMouse, + k_EControllerSourceMode_JoystickMove, + k_EControllerSourceMode_JoystickCamera, + k_EControllerSourceMode_ScrollWheel, + k_EControllerSourceMode_Trigger, + k_EControllerSourceMode_TouchMenu, + k_EControllerSourceMode_MouseJoystick, + k_EControllerSourceMode_MouseRegion, + k_EControllerSourceMode_RadialMenu, + k_EControllerSourceMode_Switches +}; + +enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None, + k_EControllerActionOrigin_A, + k_EControllerActionOrigin_B, + k_EControllerActionOrigin_X, + k_EControllerActionOrigin_Y, + k_EControllerActionOrigin_LeftBumper, + k_EControllerActionOrigin_RightBumper, + k_EControllerActionOrigin_LeftGrip, + k_EControllerActionOrigin_RightGrip, + k_EControllerActionOrigin_Start, + k_EControllerActionOrigin_Back, + k_EControllerActionOrigin_LeftPad_Touch, + k_EControllerActionOrigin_LeftPad_Swipe, + k_EControllerActionOrigin_LeftPad_Click, + k_EControllerActionOrigin_LeftPad_DPadNorth, + k_EControllerActionOrigin_LeftPad_DPadSouth, + k_EControllerActionOrigin_LeftPad_DPadWest, + k_EControllerActionOrigin_LeftPad_DPadEast, + k_EControllerActionOrigin_RightPad_Touch, + k_EControllerActionOrigin_RightPad_Swipe, + k_EControllerActionOrigin_RightPad_Click, + k_EControllerActionOrigin_RightPad_DPadNorth, + k_EControllerActionOrigin_RightPad_DPadSouth, + k_EControllerActionOrigin_RightPad_DPadWest, + k_EControllerActionOrigin_RightPad_DPadEast, + k_EControllerActionOrigin_LeftTrigger_Pull, + k_EControllerActionOrigin_LeftTrigger_Click, + k_EControllerActionOrigin_RightTrigger_Pull, + k_EControllerActionOrigin_RightTrigger_Click, + k_EControllerActionOrigin_LeftStick_Move, + k_EControllerActionOrigin_LeftStick_Click, + k_EControllerActionOrigin_LeftStick_DPadNorth, + k_EControllerActionOrigin_LeftStick_DPadSouth, + k_EControllerActionOrigin_LeftStick_DPadWest, + k_EControllerActionOrigin_LeftStick_DPadEast, + k_EControllerActionOrigin_Gyro_Move, + k_EControllerActionOrigin_Gyro_Pitch, + k_EControllerActionOrigin_Gyro_Yaw, + k_EControllerActionOrigin_Gyro_Roll, + + k_EControllerActionOrigin_Count +}; + +// ControllerHandle_t is used to refer to a specific controller. +// This handle will consistently identify a controller, even if it is disconnected and re-connected +typedef uint64 ControllerHandle_t; + + +// These handles are used to refer to a specific in-game action or action set +// All action handles should be queried during initialization for performance reasons +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; + +#pragma pack( push, 1 ) + +struct ControllerAnalogActionData_t +{ + // Type of data coming from this action, this will match what got specified in the action set + EControllerSourceMode eMode; + + // The current state of this action; will be delta updates for mouse actions + float x, y; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerDigitalActionData_t +{ + // The current state of this action; will be true if currently pressed + bool bState; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerMotionData_t +{ + // Sensor-fused absolute rotation; will drift in heading + float rotQuatX; + float rotQuatY; + float rotQuatZ; + float rotQuatW; + + // Positional acceleration + float posAccelX; + float posAccelY; + float posAccelZ; + + // Angular velocity + float rotVelX; + float rotVelY; + float rotVelZ; +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Native Steam controller support API +//----------------------------------------------------------------------------- +class ISteamController +{ +public: + + // Init and Shutdown must be called when starting/ending use of this interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. + virtual void RunFrame() = 0; + + // Enumerate currently connected controllers + // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetConnectedControllers( ControllerHandle_t *handlesOut ) = 0; + + // Invokes the Steam overlay and brings up the binding screen + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; + + // ACTION SETS + // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; + + // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') + // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in + // your state loops, instead of trying to place it in all of your state transitions. + virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0; + virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0; + + // ACTIONS + // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of the supplied digital game action + virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0; + + // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) = 0; + + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of these supplied analog game action + virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0; + + // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) = 0; + + virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0; + + // Trigger a haptic pulse on a controller + virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + + // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. + // nFlags is currently unused and reserved for future use. + virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + + // Returns the associated gamepad index for the specified controller, if emulating a gamepad + virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; + + // Returns the associated controller handle for the specified emulated gamepad + virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; + + // Returns raw motion data from the specified controller + virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0; + + // Attempt to display origins of given action in the controller HUD, for the currently active action set + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; + virtual bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; +}; + +#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController004" + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/osx/include/steam/isteamfriends.h b/lib/osx/include/steam/isteamfriends.h new file mode 100644 index 0000000..8013356 --- /dev/null +++ b/lib/osx/include/steam/isteamfriends.h @@ -0,0 +1,636 @@ +//====== Copyright (C) 1996-2008, Valve Corporation, All rights reserved. ===== +// +// Purpose: interface to both friends list data and general information about users +// +//============================================================================= + +#ifndef ISTEAMFRIENDS_H +#define ISTEAMFRIENDS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamclientpublic.h" + + +//----------------------------------------------------------------------------- +// Purpose: set of relationships to other users +//----------------------------------------------------------------------------- +enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, // was used by the original implementation of the facebook linking feature, but now unused. + + // keep this updated + k_EFriendRelationshipMax = 8, +}; + +// maximum length of friend group name (not including terminating nul!) +const int k_cchMaxFriendsGroupName = 64; + +// maximum number of groups a single user is allowed +const int k_cFriendsGroupLimit = 100; + +// friends group identifier type +typedef int16 FriendsGroupID_t; + +// invalid friends group identifier constant +const FriendsGroupID_t k_FriendsGroupID_Invalid = -1; + +const int k_cEnumerateFollowersMax = 50; + + +//----------------------------------------------------------------------------- +// Purpose: list of states a friend can be in +//----------------------------------------------------------------------------- +enum EPersonaState +{ + k_EPersonaStateOffline = 0, // friend is not currently logged on + k_EPersonaStateOnline = 1, // friend is logged on + k_EPersonaStateBusy = 2, // user is on, but busy + k_EPersonaStateAway = 3, // auto-away feature + k_EPersonaStateSnooze = 4, // auto-away for a long time + k_EPersonaStateLookingToTrade = 5, // Online, trading + k_EPersonaStateLookingToPlay = 6, // Online, wanting to play + k_EPersonaStateMax, +}; + + +//----------------------------------------------------------------------------- +// Purpose: flags for enumerating friends list, or quickly checking a the relationship between users +//----------------------------------------------------------------------------- +enum EFriendFlags +{ + k_EFriendFlagNone = 0x00, + k_EFriendFlagBlocked = 0x01, + k_EFriendFlagFriendshipRequested = 0x02, + k_EFriendFlagImmediate = 0x04, // "regular" friend + k_EFriendFlagClanMember = 0x08, + k_EFriendFlagOnGameServer = 0x10, + // k_EFriendFlagHasPlayedWith = 0x20, // not currently used + // k_EFriendFlagFriendOfFriend = 0x40, // not currently used + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + k_EFriendFlagSuggested = 0x800, + k_EFriendFlagChatMember = 0x1000, + k_EFriendFlagAll = 0xFFFF, +}; + + +// friend game played information +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct FriendGameInfo_t +{ + CGameID m_gameID; + uint32 m_unGameIP; + uint16 m_usGamePort; + uint16 m_usQueryPort; + CSteamID m_steamIDLobby; +}; +#pragma pack( pop ) + +// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. +// The UTF-8 version has to be very generous to accomodate characters that get large when encoded +// in UTF-8. +enum +{ + k_cchPersonaNameMax = 128, + k_cwchPersonaNameMax = 32, +}; + +//----------------------------------------------------------------------------- +// Purpose: user restriction flags +//----------------------------------------------------------------------------- +enum EUserRestriction +{ + k_nUserRestrictionNone = 0, // no known chat/content restriction + k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) + k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat + k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat + k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat + k_nUserRestrictionRating = 16, // user is too young according to rating in current region + k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) + k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) +}; + +//----------------------------------------------------------------------------- +// Purpose: information about user sessions +//----------------------------------------------------------------------------- +struct FriendSessionStateInfo_t +{ + uint32 m_uiOnlineSessionInstances; + uint8 m_uiPublishedToFriendsSessionInstance; +}; + + + +// size limit on chat room or member metadata +const uint32 k_cubChatMetadataMax = 8192; + +// size limits on Rich Presence data +enum { k_cchMaxRichPresenceKeys = 20 }; +enum { k_cchMaxRichPresenceKeyLength = 64 }; +enum { k_cchMaxRichPresenceValueLength = 256 }; + +// These values are passed as parameters to the store +enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +}; + +//----------------------------------------------------------------------------- +// Purpose: interface to accessing information about individual users, +// that can be a friend, in a group, on a game server or in a lobby with the local user +//----------------------------------------------------------------------------- +class ISteamFriends +{ +public: + // returns the local players name - guaranteed to not be NULL. + // this is the same name as on the users community profile page + // this is stored in UTF-8 format + // like all the other interface functions that return a char *, it's important that this pointer is not saved + // off; it will eventually be free'd or re-allocated + virtual const char *GetPersonaName() = 0; + + // Sets the player name, stores it on the server and publishes the changes to all friends who are online. + // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. + // + // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. + // + // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted + // to change the name back, in addition to the SetPersonaNameResponse_t callback. + CALL_RESULT( SetPersonaNameResponse_t ) + virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0; + + // gets the status of the current user + virtual EPersonaState GetPersonaState() = 0; + + // friend iteration + // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria + // then GetFriendByIndex() can then be used to return the id's of each of those users + virtual int GetFriendCount( int iFriendFlags ) = 0; + + // returns the steamID of a user + // iFriend is a index of range [0, GetFriendCount()) + // iFriendsFlags must be the same value as used in GetFriendCount() + // the returned CSteamID can then be used by all the functions below to access details about the user + virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0; + + // returns a relationship to a user + virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0; + + // returns the current status of the specified user + // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user + virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0; + + // returns the name another user - guaranteed to not be NULL. + // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user + // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously + // + virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0; + + // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details + virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0; + // accesses old friends names - returns an empty string when their are no more items in the history + virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0; + // friends steam level + virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0; + + // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. + virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0; + + // friend grouping (tag) apis + // returns the number of friends groups + virtual int GetFriendsGroupCount() = 0; + // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) + virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0; + // returns the name for the given friends group (NULL in the case of invalid friends group IDs) + virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0; + // returns the number of members in a given friends group + virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0; + // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid + virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0; + + // returns true if the specified user meets any of the criteria specified in iFriendFlags + // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values + virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0; + + // clan (group) iteration and access functions + virtual int GetClanCount() = 0; + virtual CSteamID GetClanByIndex( int iClan ) = 0; + virtual const char *GetClanName( CSteamID steamIDClan ) = 0; + virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; + // returns the most recent information we have about what's happening in a clan + virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; + // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + virtual SteamAPICall_t DownloadClanActivityCounts( ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; + + // iterators for getting users in a chat room, lobby, game server or clan + // note that large clans that cannot be iterated by the local user + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + // steamIDSource can be the steamID of a group, game server, lobby or chat room + virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0; + virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0; + + // returns true if the local user can see that steamIDUser is a member or in steamIDSource + virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0; + + // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) + virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0; + + // activates the game overlay, with an optional dialog to open + // valid options are "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements" + virtual void ActivateGameOverlay( const char *pchDialog ) = 0; + + // activates game overlay to a specific place + // valid options are + // "steamid" - opens the overlay web browser to the specified user or groups profile + // "chat" - opens a chat window to the specified user, or joins the group chat + // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API + // "stats" - opens the overlay web browser to the specified user's stats + // "achievements" - opens the overlay web browser to the specified user's achievements + // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend + // "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend + // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite + // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite + virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0; + + // activates game overlay web browser directly to the specified URL + // full address with protocol type is required, e.g. http://www.steamgames.com/ + virtual void ActivateGameOverlayToWebPage( const char *pchURL ) = 0; + + // activates game overlay to store page for app + virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0; + + // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is + // in game + virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0; + + // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. + virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0; + + // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again + virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0; + + // requests information about a user - persona name & avatar + // if bRequireNameOnly is set, then the avatar of a user isn't downloaded + // - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them + // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved + // if returns false, it means that we already have all the details about that user, and functions can be called immediately + virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; + + // requests information about a clan officer list + // when complete, data is returned in ClanOfficerListResponse_t call result + // this makes available the calls below + // you can only ask about clans that a user is a member of + // note that this won't download avatars automatically; if you get an officer, + // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar + CALL_RESULT( ClanOfficerListResponse_t ) + virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0; + + // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed + + // returns the steamID of the clan owner + virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0; + // returns the number of officers in a clan (including the owner) + virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0; + // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) + virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0; + // if current user is chat restricted, he can't send or receive any text/voice chat messages. + // the user can't see custom avatars. But the user can be online and send/recv game invites. + // a chat restricted user can't add friends or join any groups. + virtual uint32 GetUserRestrictions() = 0; + + // Rich Presence data is automatically shared between friends who are in the same game + // Each user has a set of Key/Value pairs + // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength + // There are two magic keys: + // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list + // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + // GetFriendRichPresence() returns an empty string "" if no value is set + // SetRichPresence() to a NULL or an empty string deletes the key + // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() + // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) + virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0; + virtual void ClearRichPresence() = 0; + virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0; + virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0; + virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0; + // Requests rich presence for a specific user. + virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0; + + // rich invite support + // if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game + // if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string + // invites can only be sent to friends + virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; + + // recently-played-with friends iteration + // this iterates the entire list of users recently played with, across games + // GetFriendCoplayTime() returns as a unix time + virtual int GetCoplayFriendCount() = 0; + virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0; + virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0; + virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0; + + // chat interface for games + // this allows in-game access to group (clan) chats from in the game + // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay + // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat + CALL_RESULT( JoinClanChatRoomCompletionResult_t ) + virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0; + virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0; + virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0; + virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0; + virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0; + virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, OUT_STRUCT() CSteamID *psteamidChatter ) = 0; + virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0; + + // interact with the Steam (game overlay / desktop) + virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + + // peer-to-peer chat interception + // this is so you can show P2P chats inline in the game + virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0; + virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0; + virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // following apis + CALL_RESULT( FriendsGetFollowerCount_t ) + virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0; + CALL_RESULT( FriendsIsFollowing_t ) + virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0; + CALL_RESULT( FriendsEnumerateFollowingList_t ) + virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0; +}; + +#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends015" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a friends' status changes +//----------------------------------------------------------------------------- +struct PersonaStateChange_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 4 }; + + uint64 m_ulSteamID; // steamID of the friend who changed + int m_nChangeFlags; // what's changed +}; + + +// used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user +// these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend +enum EPersonaChange +{ + k_EPersonaChangeName = 0x0001, + k_EPersonaChangeStatus = 0x0002, + k_EPersonaChangeComeOnline = 0x0004, + k_EPersonaChangeGoneOffline = 0x0008, + k_EPersonaChangeGamePlayed = 0x0010, + k_EPersonaChangeGameServer = 0x0020, + k_EPersonaChangeAvatar = 0x0040, + k_EPersonaChangeJoinedSource= 0x0080, + k_EPersonaChangeLeftSource = 0x0100, + k_EPersonaChangeRelationshipChanged = 0x0200, + k_EPersonaChangeNameFirstSet = 0x0400, + k_EPersonaChangeFacebookInfo = 0x0800, + k_EPersonaChangeNickname = 0x1000, + k_EPersonaChangeSteamLevel = 0x2000, +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted when game overlay activates or deactivates +// the game can use this to be pause or resume single player games +//----------------------------------------------------------------------------- +struct GameOverlayActivated_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; + uint8 m_bActive; // true if it's just been activated, false otherwise +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a different game server from their friends list +// game client should attempt to connect to specified server when this is received +//----------------------------------------------------------------------------- +struct GameServerChangeRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 32 }; + char m_rgchServer[64]; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") + char m_rgchPassword[64]; // server password, if any +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a lobby from their friends list +// game client should attempt to connect to specified lobby when this is received +//----------------------------------------------------------------------------- +struct GameLobbyJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 33 }; + CSteamID m_steamIDLobby; + + // The friend they did the join via (will be invalid if not directly via a friend) + // + // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but + // the account type will be console user so you can tell at least that this was from a PSN friend + // rather than a Steam friend. + CSteamID m_steamIDFriend; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call +// if the image wasn't already available +//----------------------------------------------------------------------------- +struct AvatarImageLoaded_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 34 }; + CSteamID m_steamID; // steamid the avatar has been loaded for + int m_iImage; // the image index of the now loaded image + int m_iWide; // width of the loaded image + int m_iTall; // height of the loaded image +}; + + +//----------------------------------------------------------------------------- +// Purpose: marks the return of a request officer list call +//----------------------------------------------------------------------------- +struct ClanOfficerListResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 35 }; + CSteamID m_steamIDClan; + int m_cOfficers; + uint8 m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating updated data about friends rich presence information +//----------------------------------------------------------------------------- +struct FriendRichPresenceUpdate_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 36 }; + CSteamID m_steamIDFriend; // friend who's rich presence has changed + AppId_t m_nAppID; // the appID of the game (should always be the current game) +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a game from their friends list +// rich presence will have been set with the "connect" key which is set here +//----------------------------------------------------------------------------- +struct GameRichPresenceJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 37 }; + CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) + char m_rgchConnect[k_cchMaxRichPresenceValueLength]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received for a clan chat the game has joined +//----------------------------------------------------------------------------- +struct GameConnectedClanChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 38 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has joined a clan chat +//----------------------------------------------------------------------------- +struct GameConnectedChatJoin_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 39 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has left the chat we're in +//----------------------------------------------------------------------------- +struct GameConnectedChatLeave_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 40 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + bool m_bKicked; // true if admin kicked + bool m_bDropped; // true if Steam connection dropped +}; + + +//----------------------------------------------------------------------------- +// Purpose: a DownloadClanActivityCounts() call has finished +//----------------------------------------------------------------------------- +struct DownloadClanActivityCountsResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 41 }; + bool m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a JoinClanChatRoom() call has finished +//----------------------------------------------------------------------------- +struct JoinClanChatRoomCompletionResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 42 }; + CSteamID m_steamIDClanChat; + EChatRoomEnterResponse m_eChatRoomEnterResponse; +}; + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received from a user +//----------------------------------------------------------------------------- +struct GameConnectedFriendChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 43 }; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +struct FriendsGetFollowerCount_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 44 }; + EResult m_eResult; + CSteamID m_steamID; + int m_nCount; +}; + + +struct FriendsIsFollowing_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 45 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bIsFollowing; +}; + + +struct FriendsEnumerateFollowingList_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 46 }; + EResult m_eResult; + CSteamID m_rgSteamID[ k_cEnumerateFollowersMax ]; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; +}; + +//----------------------------------------------------------------------------- +// Purpose: reports the result of an attempt to change the user's persona name +//----------------------------------------------------------------------------- +struct SetPersonaNameResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 47 }; + + bool m_bSuccess; // true if name change succeeded completely. + bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) + EResult m_result; // detailed result code +}; + + +#pragma pack( pop ) + +#endif // ISTEAMFRIENDS_H diff --git a/lib/osx/include/steam/isteamgamecoordinator.h b/lib/osx/include/steam/isteamgamecoordinator.h new file mode 100644 index 0000000..5ab0637 --- /dev/null +++ b/lib/osx/include/steam/isteamgamecoordinator.h @@ -0,0 +1,75 @@ +//====== Copyright ©, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to the game coordinator for this application +// +//============================================================================= + +#ifndef ISTEAMGAMECOORDINATOR +#define ISTEAMGAMECOORDINATOR +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible return values from the ISteamGameCoordinator API +enum EGCResults +{ + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for sending and receiving messages from the Game Coordinator +// for this application +//----------------------------------------------------------------------------- +class ISteamGameCoordinator +{ +public: + + // sends a message to the Game Coordinator + virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0; + + // returns true if there is a message waiting from the game coordinator + virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0; + + // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or + // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. + // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned + // and the message remains at the head of the queue. + virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + +}; +#define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - A new message is available for reading from the message queue +struct GCMessageAvailable_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 }; + uint32 m_nMessageSize; +}; + +// callback notification - A message failed to make it to the GC. It may be down temporarily +struct GCMessageFailed_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMGAMECOORDINATOR diff --git a/lib/osx/include/steam/isteamgameserver.h b/lib/osx/include/steam/isteamgameserver.h new file mode 100644 index 0000000..e19f1dd --- /dev/null +++ b/lib/osx/include/steam/isteamgameserver.h @@ -0,0 +1,387 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam for game servers +// +//============================================================================= + +#ifndef ISTEAMGAMESERVER_H +#define ISTEAMGAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServer +{ +public: + +// +// Basic server data. These properties, if set, must be set before before calling LogOn. They +// may not be changed after logged in. +// + + /// This is called by SteamGameServer_Init, and you will usually not need to call it directly + virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; + + /// Game product identifier. This is currently used by the master server for version checking purposes. + /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. + virtual void SetProduct( const char *pszProduct ) = 0; + + /// Description of the game. This is a required field and is displayed in the steam server browser....for now. + /// This is a required field, but it will go away eventually, as the data should be determined from the AppID. + virtual void SetGameDescription( const char *pszGameDescription ) = 0; + + /// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning + /// this application is the original game, not a mod. + /// + /// @see k_cbMaxGameServerGameDir + virtual void SetModDir( const char *pszModDir ) = 0; + + /// Is this is a dedicated server? The default value is false. + virtual void SetDedicatedServer( bool bDedicated ) = 0; + +// +// Login +// + + /// Begin process to login to a persistent game server account + /// + /// You need to register for callbacks to determine the result of this operation. + /// @see SteamServersConnected_t + /// @see SteamServerConnectFailure_t + /// @see SteamServersDisconnected_t + virtual void LogOn( const char *pszToken ) = 0; + + /// Login to a generic, anonymous account. + /// + /// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, + /// but this is no longer the case. + virtual void LogOnAnonymous() = 0; + + /// Begin process of logging game server out of steam + virtual void LogOff() = 0; + + // status functions + virtual bool BLoggedOn() = 0; + virtual bool BSecure() = 0; + virtual CSteamID GetSteamID() = 0; + + /// Returns true if the master server has requested a restart. + /// Only returns true once per request. + virtual bool WasRestartRequested() = 0; + +// +// Server state. These properties may be changed at any time. +// + + /// Max player count that will be reported to server browser and client queries + virtual void SetMaxPlayerCount( int cPlayersMax ) = 0; + + /// Number of bots. Default value is zero + virtual void SetBotPlayerCount( int cBotplayers ) = 0; + + /// Set the name of server as it will appear in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetServerName( const char *pszServerName ) = 0; + + /// Set name of map to report in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetMapName( const char *pszMapName ) = 0; + + /// Let people know if your server will require a password + virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; + + /// Spectator server. The default value is zero, meaning the service + /// is not used. + virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; + + /// Name of the spectator server. (Only used if spectator port is nonzero.) + /// + /// @see k_cbMaxGameServerMapName + virtual void SetSpectatorServerName( const char *pszSpectatorServerName ) = 0; + + /// Call this to clear the whole list of key/values that are sent in rules queries. + virtual void ClearAllKeyValues() = 0; + + /// Call this to add/update a key/value pair. + virtual void SetKeyValue( const char *pKey, const char *pValue ) = 0; + + /// Sets a string defining the "gametags" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// + /// @see k_cbMaxGameServerTags + virtual void SetGameTags( const char *pchGameTags ) = 0; + + /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// don't set this unless it actually changes, its only uploaded to the master once (when + /// acknowledged) + /// + /// @see k_cbMaxGameServerGameData + virtual void SetGameData( const char *pchGameData ) = 0; + + /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region + virtual void SetRegion( const char *pszRegion ) = 0; + +// +// Player list management / authentication +// + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + + // New auth system APIs - do not mix with the old auth system APIs. + // ---------------------------------------------------------------- + + // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t + // returns false if we're not connected to the steam servers and thus cannot ask + virtual bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) = 0; + + + // these two functions s are deprecated, and will not return results + // they will be removed in a future version of the SDK + virtual void GetGameplayStats( ) = 0; + CALL_RESULT( GSReputation_t ) + virtual SteamAPICall_t GetServerReputation() = 0; + + // Returns the public IP of the server according to Steam, useful when the server is + // behind NAT and you want to advertise its IP in a lobby for other clients to directly + // connect to + virtual uint32 GetPublicIP() = 0; + +// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own +// socket to talk to the master server on, it lets the game use its socket to forward messages +// back and forth. This prevents us from requiring server ops to open up yet another port +// in their firewalls. +// +// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + + // These are used when you've elected to multiplex the game server's UDP socket + // rather than having the master server updater use its own sockets. + // + // Source games use this to simplify the job of the server admins, so they + // don't have to open up more ports on their firewalls. + + // Call this when a packet that starts with 0xFFFFFFFF comes in. That means + // it's for us. + virtual bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort ) = 0; + + // AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. + // This gets a packet that the master server updater needs to send out on UDP. + // It returns the length of the packet it wants to send, or 0 if there are no more packets to send. + // Call this each frame until it returns 0. + virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; + +// +// Control heartbeats / advertisement with master server +// + + // Call this as often as you like to tell the master server updater whether or not + // you want it to be active (default: off). + virtual void EnableHeartbeats( bool bActive ) = 0; + + // You usually don't need to modify this. + // Pass -1 to use the default value for iHeartbeatInterval. + // Some mods change this. + virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; + + // Force a heartbeat to steam at the next opportunity + virtual void ForceHeartbeat() = 0; + + // associate this game server with this clan for the purposes of computing player compat + CALL_RESULT( AssociateWithClanResult_t ) + virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; + + // ask if any of the current players dont want to play with this new player - or vice versa + CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) + virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + +}; + +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer012" + +// game server flags +const uint32 k_unServerFlagNone = 0x00; +const uint32 k_unServerFlagActive = 0x01; // server has users playing +const uint32 k_unServerFlagSecure = 0x02; // server wants to be secure +const uint32 k_unServerFlagDedicated = 0x04; // server is dedicated +const uint32 k_unServerFlagLinux = 0x08; // linux build +const uint32 k_unServerFlagPassworded = 0x10; // password protected +const uint32 k_unServerFlagPrivate = 0x20; // server shouldn't list on master server and + // won't enforce authentication of users that connect to the server. + // Useful when you run a server where the clients may not + // be connected to the internet but you want them to play (i.e LANs) + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// client has been approved to connect to this game server +struct GSClientApprove_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 1 }; + CSteamID m_SteamID; // SteamID of approved player + CSteamID m_OwnerSteamID; // SteamID of original owner for game license +}; + + +// client has been denied to connection to this game server +struct GSClientDeny_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 2 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; + char m_rgchOptionalText[128]; +}; + + +// request the game server should kick the user +struct GSClientKick_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 3 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; +}; + +// NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, +// do not reuse them here. + + +// client achievement info +struct GSClientAchievementStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 6 }; + uint64 m_SteamID; + char m_pchAchievement[128]; + bool m_bUnlocked; +}; + +// received when the game server requests to be displayed as secure (VAC protected) +// m_bSecure is true if the game server should display itself as secure to users, false otherwise +struct GSPolicyResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 15 }; + uint8 m_bSecure; +}; + +// GS gameplay stats info +struct GSGameplayStats_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 7 }; + EResult m_eResult; // Result of the call + int32 m_nRank; // Overall rank of the server (0-based) + uint32 m_unTotalConnects; // Total number of clients who have ever connected to the server + uint32 m_unTotalMinutesPlayed; // Total number of minutes ever played on the server +}; + +// send as a reply to RequestUserGroupStatus() +struct GSClientGroupStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 8 }; + CSteamID m_SteamIDUser; + CSteamID m_SteamIDGroup; + bool m_bMember; + bool m_bOfficer; +}; + +// Sent as a reply to GetServerReputation() +struct GSReputation_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 9 }; + EResult m_eResult; // Result of the call; + uint32 m_unReputationScore; // The reputation score for the game server + bool m_bBanned; // True if the server is banned from the Steam + // master servers + + // The following members are only filled out if m_bBanned is true. They will all + // be set to zero otherwise. Master server bans are by IP so it is possible to be + // banned even when the score is good high if there is a bad server on another port. + // This information can be used to determine which server is bad. + + uint32 m_unBannedIP; // The IP of the banned server + uint16 m_usBannedPort; // The port of the banned server + uint64 m_ulBannedGameID; // The game ID the banned server is serving + uint32 m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) +}; + +// Sent as a reply to AssociateWithClan() +struct AssociateWithClanResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 10 }; + EResult m_eResult; // Result of the call; +}; + +// Sent as a reply to ComputeNewPlayerCompatibility() +struct ComputeNewPlayerCompatibilityResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 11 }; + EResult m_eResult; // Result of the call; + int m_cPlayersThatDontLikeCandidate; + int m_cPlayersThatCandidateDoesntLike; + int m_cClanPlayersThatDontLikeCandidate; + CSteamID m_SteamIDCandidate; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMGAMESERVER_H diff --git a/lib/osx/include/steam/isteamgameserverstats.h b/lib/osx/include/steam/isteamgameserverstats.h new file mode 100644 index 0000000..e7922c9 --- /dev/null +++ b/lib/osx/include/steam/isteamgameserverstats.h @@ -0,0 +1,101 @@ +//====== Copyright © Valve Corporation, All rights reserved. ======= +// +// Purpose: interface for game servers to steam stats and achievements +// +//============================================================================= + +#ifndef ISTEAMGAMESERVERSTATS_H +#define ISTEAMGAMESERVERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServerStats +{ +public: + // downloads stats for the user + // returns a GSStatsReceived_t callback when completed + // if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats will only be auto-updated for clients playing on the server. For other + // users you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( GSStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + + // Set / update stats and achievements. + // Note: These updates will work only on stats game servers are allowed to edit and only for + // game servers that have been declared as officially controlled by the game creators. + // Set the IP range of your official servers on the Steamworks page + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; + virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + + // Store the current data on the server, will get a GSStatsStored_t callback when set. + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + CALL_RESULT( GSStatsStored_t ) + virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; +}; + +#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct GSStatsReceived_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct GSStatsStored_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; + EResult m_eResult; // success / error + CSteamID m_steamIDUser; // The user for whom the stats were stored +}; + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct GSStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + +#pragma pack( pop ) + + +#endif // ISTEAMGAMESERVERSTATS_H diff --git a/lib/osx/include/steam/isteamhtmlsurface.h b/lib/osx/include/steam/isteamhtmlsurface.h new file mode 100644 index 0000000..ccfc6af --- /dev/null +++ b/lib/osx/include/steam/isteamhtmlsurface.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to display html pages in a texture +// +//============================================================================= + +#ifndef ISTEAMHTMLSURFACE_H +#define ISTEAMHTMLSURFACE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +typedef uint32 HHTMLBrowser; +const uint32 INVALID_HTMLBROWSER = 0; + +//----------------------------------------------------------------------------- +// Purpose: Functions for displaying HTML pages and interacting with them +//----------------------------------------------------------------------------- +class ISteamHTMLSurface +{ +public: + virtual ~ISteamHTMLSurface() {} + + // Must call init and shutdown when starting/ending use of the interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Create a browser object for display of a html page, when creation is complete the call handle + // will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. + // The user agent string is a substring to be added to the general user agent string so you can + // identify your client on web servers. + // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if + // you do not require this functionality. + // + // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, + // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS + // section of this interface (AllowStartRequest, etc) for more details. If you do + // not implement these callback handlers, the browser may appear to hang instead of + // navigating to new pages or triggering javascript popups. + // + CALL_RESULT( HTML_BrowserReady_t ) + virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; + + // Call this when you are done with a html surface, this lets us free the resources being used by it + virtual void RemoveBrowser( HHTMLBrowser unBrowserHandle ) = 0; + + // Navigate to this URL, results in a HTML_StartRequest_t as the request commences + virtual void LoadURL( HHTMLBrowser unBrowserHandle, const char *pchURL, const char *pchPostData ) = 0; + + // Tells the surface the size in pixels to display the surface + virtual void SetSize( HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ) = 0; + + // Stop the load of the current html page + virtual void StopLoad( HHTMLBrowser unBrowserHandle ) = 0; + // Reload (most likely from local cache) the current page + virtual void Reload( HHTMLBrowser unBrowserHandle ) = 0; + // navigate back in the page history + virtual void GoBack( HHTMLBrowser unBrowserHandle ) = 0; + // navigate forward in the page history + virtual void GoForward( HHTMLBrowser unBrowserHandle ) = 0; + + // add this header to any url requests from this browser + virtual void AddHeader( HHTMLBrowser unBrowserHandle, const char *pchKey, const char *pchValue ) = 0; + // run this javascript script in the currently loaded page + virtual void ExecuteJavascript( HHTMLBrowser unBrowserHandle, const char *pchScript ) = 0; + + enum EHTMLMouseButton + { + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, + }; + + // Mouse click and mouse movement commands + virtual void MouseUp( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDown( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDoubleClick( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + // x and y are relative to the HTML bounds + virtual void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + // nDelta is pixels of scroll + virtual void MouseWheel( HHTMLBrowser unBrowserHandle, int32 nDelta ) = 0; + + enum EMouseCursor + { + dc_user = 0, + dc_none, + dc_arrow, + dc_ibeam, + dc_hourglass, + dc_waitarrow, + dc_crosshair, + dc_up, + dc_sizenw, + dc_sizese, + dc_sizene, + dc_sizesw, + dc_sizew, + dc_sizee, + dc_sizen, + dc_sizes, + dc_sizewe, + dc_sizens, + dc_sizeall, + dc_no, + dc_hand, + dc_blank, // don't show any custom cursor, just use your default + dc_middle_pan, + dc_north_pan, + dc_north_east_pan, + dc_east_pan, + dc_south_east_pan, + dc_south_pan, + dc_south_west_pan, + dc_west_pan, + dc_north_west_pan, + dc_alias, + dc_cell, + dc_colresize, + dc_copycur, + dc_verticaltext, + dc_rowresize, + dc_zoomin, + dc_zoomout, + dc_help, + dc_custom, + + dc_last, // custom cursors start from this value and up + }; + + enum EHTMLKeyModifiers + { + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1 << 0, + k_eHTMLKeyModifier_CtrlDown = 1 << 1, + k_eHTMLKeyModifier_ShiftDown = 1 << 2, + }; + + // keyboard interactions, native keycode is the virtual key code value from your OS + virtual void KeyDown( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + virtual void KeyUp( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + // cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) + virtual void KeyChar( HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + + // programmatically scroll this many pixels on the page + virtual void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + virtual void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + + // tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things + virtual void SetKeyFocus( HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ) = 0; + + // open the current pages html code in the local editor of choice, used for debugging + virtual void ViewSource( HHTMLBrowser unBrowserHandle ) = 0; + // copy the currently selected text on the html page to the local clipboard + virtual void CopyToClipboard( HHTMLBrowser unBrowserHandle ) = 0; + // paste from the local clipboard to the current html page + virtual void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) = 0; + + // find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element + virtual void Find( HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse ) = 0; + // cancel a currently running find + virtual void StopFind( HHTMLBrowser unBrowserHandle ) = 0; + + // return details about the link at position x,y on the current page + virtual void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + + // set a webcookie for the hostname in question + virtual void SetCookie( const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath = "/", RTime32 nExpires = 0, bool bSecure = false, bool bHTTPOnly = false ) = 0; + + // Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) + virtual void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) = 0; + + // Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are + // more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, + // all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". + // When background mode is disabled, any video or audio objects with that property will resume with ".play()". + virtual void SetBackgroundMode( HHTMLBrowser unBrowserHandle, bool bBackgroundMode ) = 0; + + // CALLBACKS + // + // These set of functions are used as responses to callback requests + // + + // You MUST call this in response to a HTML_StartRequest_t callback + // Set bAllowed to true to allow this navigation, false to cancel it and stay + // on the current page. You can use this feature to limit the valid pages + // allowed in your HTML surface. + virtual void AllowStartRequest( HHTMLBrowser unBrowserHandle, bool bAllowed ) = 0; + + // You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback + // Set bResult to true for the OK option of a confirm, use false otherwise + virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; + + // You MUST call this in response to a HTML_FileOpenDialog_t callback + IGNOREATTR() + virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; +}; + +#define STEAMHTMLSURFACE_INTERFACE_VERSION "STEAMHTMLSURFACE_INTERFACE_VERSION_003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//----------------------------------------------------------------------------- +// Purpose: The browser is ready for use +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_BrowserReady_t, k_iSteamHTMLSurfaceCallbacks + 1 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this browser is now fully created and ready to navigate to pages +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser has a pending paint +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_NeedsPaint_t, k_iSteamHTMLSurfaceCallbacks + 2) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint +CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called +CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture +CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture +CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update +CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update +CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update +CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update +CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered +CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages +END_DEFINE_CALLBACK_12() + + +//----------------------------------------------------------------------------- +// Purpose: The browser wanted to navigate to a new page +// NOTE - you MUST call AllowStartRequest in response to this callback +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_StartRequest_t, k_iSteamHTMLSurfaceCallbacks + 3) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface navigating +CALLBACK_MEMBER(1, const char *, pchURL) // the url they wish to navigate to +CALLBACK_MEMBER(2, const char *, pchTarget) // the html link target type (i.e _blank, _self, _parent, _top ) +CALLBACK_MEMBER(3, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER(4, bool, bIsRedirect) // true if this was a http/html redirect from the last load request +END_DEFINE_CALLBACK_5() + + +//----------------------------------------------------------------------------- +// Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_CloseBrowser_t, k_iSteamHTMLSurfaceCallbacks + 4) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser is navigating to a new url +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_URLChanged_t, k_iSteamHTMLSurfaceCallbacks + 5 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface navigating +CALLBACK_MEMBER( 1, const char *, pchURL ) // the url they wish to navigate to +CALLBACK_MEMBER( 2, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER( 3, bool, bIsRedirect ) // true if this was a http/html redirect from the last load request +CALLBACK_MEMBER( 4, const char *, pchPageTitle ) // the title of the page +CALLBACK_MEMBER( 5, bool, bNewNavigation ) // true if this was from a fresh tab and not a click on an existing page +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: A page is finished loading +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FinishedRequest_t, k_iSteamHTMLSurfaceCallbacks + 6 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +CALLBACK_MEMBER( 2, const char *, pchPageTitle ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a request to load this url in a new tab +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_OpenLinkInNewTab_t, k_iSteamHTMLSurfaceCallbacks + 7 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: the page has a new title now +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ChangedTitle_t, k_iSteamHTMLSurfaceCallbacks + 8 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: results from a search +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SearchResults_t, k_iSteamHTMLSurfaceCallbacks + 9 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unResults ) // +CALLBACK_MEMBER( 2, uint32, unCurrentMatch ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: page history status changed on the ability to go backwards and forward +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_CanGoBackAndForward_t, k_iSteamHTMLSurfaceCallbacks + 10 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, bool, bCanGoBack ) // +CALLBACK_MEMBER( 2, bool, bCanGoForward ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the horizontal scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HorizontalScroll_t, k_iSteamHTMLSurfaceCallbacks + 11 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool , bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the vertical scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_VerticalScroll_t, k_iSteamHTMLSurfaceCallbacks + 12 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool, bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: response to GetLinkAtPosition call +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_LinkAtPosition_t, k_iSteamHTMLSurfaceCallbacks + 13 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, x ) // NOTE - Not currently set +CALLBACK_MEMBER( 2, uint32, y ) // NOTE - Not currently set +CALLBACK_MEMBER( 3, const char *, pchURL ) // +CALLBACK_MEMBER( 4, bool, bInput ) // +CALLBACK_MEMBER( 5, bool, bLiveLink ) // +END_DEFINE_CALLBACK_6() + + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript alert dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSAlert_t, k_iSteamHTMLSurfaceCallbacks + 14 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript confirmation dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSConfirm_t, k_iSteamHTMLSurfaceCallbacks + 15 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: when received show a file open dialog +// then call FileLoadDialogResponse with the file(s) the user selected. +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FileOpenDialog_t, k_iSteamHTMLSurfaceCallbacks + 16 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +CALLBACK_MEMBER( 2, const char *, pchInitialFile ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a new html window has been created +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_NewWindow_t, k_iSteamHTMLSurfaceCallbacks + 21 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the current surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // the page to load +CALLBACK_MEMBER( 2, uint32, unX ) // the x pos into the page to display the popup +CALLBACK_MEMBER( 3, uint32, unY ) // the y pos into the page to display the popup +CALLBACK_MEMBER( 4, uint32, unWide ) // the total width of the pBGRA texture +CALLBACK_MEMBER( 5, uint32, unTall ) // the total height of the pBGRA texture +CALLBACK_MEMBER( 6, HHTMLBrowser, unNewWindow_BrowserHandle ) // the handle of the new window surface +END_DEFINE_CALLBACK_7() + + +//----------------------------------------------------------------------------- +// Purpose: change the cursor to display +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: informational message from the browser +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: update the text of an existing tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: hide the tooltip you are showing +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HideToolTip_t, k_iSteamHTMLSurfaceCallbacks + 26 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMHTMLSURFACE_H diff --git a/lib/osx/include/steam/isteamhttp.h b/lib/osx/include/steam/isteamhttp.h new file mode 100644 index 0000000..8fab537 --- /dev/null +++ b/lib/osx/include/steam/isteamhttp.h @@ -0,0 +1,210 @@ +//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to http client +// +//============================================================================= + +#ifndef ISTEAMHTTP_H +#define ISTEAMHTTP_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamhttpenums.h" + +// Handle to a HTTP Request handle +typedef uint32 HTTPRequestHandle; +#define INVALID_HTTPREQUEST_HANDLE 0 + +typedef uint32 HTTPCookieContainerHandle; +#define INVALID_HTTPCOOKIE_HANDLE 0 + +//----------------------------------------------------------------------------- +// Purpose: interface to http client +//----------------------------------------------------------------------------- +class ISteamHTTP +{ +public: + + // Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + // the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + // so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + // or such. + virtual HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL ) = 0; + + // Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + // sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + virtual bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue ) = 0; + + // Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + // timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + // has already been sent. + virtual bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ) = 0; + + // Set a request header value for the request, must be called prior to sending the request. Will + // return false if the handle is invalid or the request is already sent. + virtual bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue ) = 0; + + // Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + // when creating the request. Must be called prior to sending the request. Will return false if the + // handle is invalid or the request is already sent. + virtual bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback. + // + // Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + // header and only do a local cache lookup rather than sending any actual remote request. + virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + // HTTPRequestDataReceived_t callbacks while streaming. + virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + // returns the size of the header value if present so the caller and allocate a correctly sized buffer for + // GetHTTPResponseHeaderValue. + virtual bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize ) = 0; + + // Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // header is not present or if your buffer is too small to contain it's value. You should first call + // BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + virtual bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize ) = 0; + + // Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid. + virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0; + + // Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + // the correct buffer size to use. + virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + // handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + // do not match the size and offset sent in HTTPRequestDataReceived_t. + virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + // callback and finishing using the response. + virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Gets progress on downloading the body for the request. This will be zero unless a response header has already been + // received which included a content-length field. For responses that contain no content-length it will report + // zero for the duration of the request as the size is unknown until the connection closes. + virtual bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut ) = 0; + + // Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + // have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + // parameter will set the content-type header for the request so the server may know how to interpret the body. + virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0; + + // Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + // than any response to your requests using this cookie container may add new cookies which may be transmitted with + // future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + // during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + // repeat executions of your process. + virtual HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify ) = 0; + + // Release a cookie container you are finished using, freeing it's memory + virtual bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Adds a cookie to the specified cookie container that will be used with future requests. + virtual bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie ) = 0; + + // Set the cookie container to use for a HTTP request + virtual bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + virtual bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo ) = 0; + + // Set that https request should require verified SSL certificate via machines certificate trust store + virtual bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ) = 0; + + // Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + // which can bump everytime we get more data + virtual bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds ) = 0; + + // Check if the reason the request failed was because we timed it out (rather than some harder failure) + virtual bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut ) = 0; +}; + +#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION002" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct HTTPRequestCompleted_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + + // Handle value for the request that has completed. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + // This will be true if we actually got any sort of response from the server (even an error). + // It will be false if we failed due to an internal error or client side network failure. + bool m_bRequestSuccessful; + + // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal + // OK response, if you get something else you probably need to treat it as a failure. + EHTTPStatusCode m_eStatusCode; + + uint32 m_unBodySize; // Same as GetHTTPResponseBodySize() +}; + + +struct HTTPRequestHeadersReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + + // Handle value for the request that has received headers. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; +}; + +struct HTTPRequestDataReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + + // Handle value for the request that has received data. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + + // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cOffset; + + // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cBytesReceived; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMHTTP_H \ No newline at end of file diff --git a/lib/osx/include/steam/isteaminventory.h b/lib/osx/include/steam/isteaminventory.h new file mode 100644 index 0000000..5d236a5 --- /dev/null +++ b/lib/osx/include/steam/isteaminventory.h @@ -0,0 +1,357 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Inventory +// +//============================================================================= + +#ifndef ISTEAMINVENTORY_H +#define ISTEAMINVENTORY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// Every individual instance of an item has a globally-unique ItemInstanceID. +// This ID is unique to the combination of (player, specific item instance) +// and will not be transferred to another player or re-used for another item. +typedef uint64 SteamItemInstanceID_t; + +static const SteamItemInstanceID_t k_SteamItemInstanceIDInvalid = (SteamItemInstanceID_t)~0; + +// Types of items in your game are identified by a 32-bit "item definition number". +// Valid definition numbers are between 1 and 999999999; numbers less than or equal to +// zero are invalid, and numbers greater than or equal to one billion (1x10^9) are +// reserved for internal Steam use. +typedef int32 SteamItemDef_t; + + +enum ESteamItemFlags +{ + // Item status flags - these flags are permanently attached to specific item instances + k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. + + // Action confirmation flags - these flags are set one time only, as part of a result set + k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated + k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. + + // All other flag bits are currently reserved for internal Steam use at this time. + // Do not assume anything about the state of other flags which are not defined here. +}; + +struct SteamItemDetails_t +{ + SteamItemInstanceID_t m_itemId; + SteamItemDef_t m_iDefinition; + uint16 m_unQuantity; + uint16 m_unFlags; // see ESteamItemFlags +}; + +typedef int32 SteamInventoryResult_t; + +static const SteamInventoryResult_t k_SteamInventoryResultInvalid = -1; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Inventory query and manipulation API +//----------------------------------------------------------------------------- +class ISteamInventory +{ +public: + + // INVENTORY ASYNC RESULT MANAGEMENT + // + // Asynchronous inventory queries always output a result handle which can be used with + // GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + // be triggered when the asynchronous result becomes ready (or fails). + // + + // Find out the status of an asynchronous inventory result handle. Possible values: + // k_EResultPending - still in progress + // k_EResultOK - done, result ready + // k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + // k_EResultInvalidParam - ERROR: invalid API call parameters + // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + // k_EResultFail - ERROR: unknown / generic error + METHOD_DESC(Find out the status of an asynchronous inventory result handle.) + virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; + + // Copies the contents of a result set into a flat array. The specific + // contents of the result set depend on which query which was used. + METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) + virtual bool GetResultItems( SteamInventoryResult_t resultHandle, + OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, + uint32 *punOutItemsArraySize ) = 0; + + // Returns the server time at which the result was generated. Compare against + // the value of IClientUtils::GetServerRealTime() to determine age. + METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) + virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; + + // Returns true if the result belongs to the target steam ID, false if the + // result does not. This is important when using DeserializeResult, to verify + // that a remote player is not pretending to have a different user's inventory. + METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) + virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; + + // Destroys a result handle and frees all associated memory. + METHOD_DESC(Destroys a result handle and frees all associated memory.) + virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; + + + // INVENTORY ASYNC QUERY + // + + // Captures the entire state of the current user's Steam inventory. + // You must call DestroyResult on this handle when you are done with it. + // Returns false and sets *pResultHandle to zero if inventory is unavailable. + // Note: calls to this function are subject to rate limits and may return + // cached results if called too frequently. It is suggested that you call + // this function only when you are about to display the user's full inventory, + // or if you expect that the inventory may have changed. + METHOD_DESC(Captures the entire state of the current users Steam inventory.) + virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; + + + // Captures the state of a subset of the current user's Steam inventory, + // identified by an array of item instance IDs. The results from this call + // can be serialized and passed to other players to "prove" that the current + // user owns specific items, without exposing the user's entire inventory. + // For example, you could call GetItemsByID with the IDs of the user's + // currently equipped cosmetic items and serialize this to a buffer, and + // then transmit this buffer to other players upon joining a game. + METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) + virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; + + + // RESULT SERIALIZATION AND AUTHENTICATION + // + // Serialized result sets contain a short signature which can't be forged + // or replayed across different game sessions. A result set can be serialized + // on the local client, transmitted to other players via your game networking, + // and deserialized by the remote players. This is a secure way of preventing + // hackers from lying about posessing rare/high-value items. + + // Serializes a result set with signature bytes to an output buffer. Pass + // NULL as an output buffer to get the required size via punOutBufferSize. + // The size of a serialized result depends on the number items which are being + // serialized. When securely transmitting items to other players, it is + // recommended to use "GetItemsByID" first to create a minimal result set. + // Results have a built-in timestamp which will be considered "expired" after + // an hour has elapsed. See DeserializeResult for expiration handling. + virtual bool SerializeResult( SteamInventoryResult_t resultHandle, OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize ) = 0; + + // Deserializes a result set and verifies the signature bytes. Returns false + // if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + // Otherwise returns true and then delivers error codes via GetResultStatus. + // + // The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + // be set to true by your game at this time. + // + // DeserializeResult has a potential soft-failure mode where the handle status + // is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + // The "expired" result could indicate that the data may be out of date - not + // just due to timed expiration (one hour), but also because one of the items + // in the result set may have been traded or consumed since the result set was + // generated. You could compare the timestamp from GetResultTimestamp() to + // ISteamUtils::GetServerRealTime() to determine how old the data is. You could + // simply ignore the "expired" result code and continue as normal, or you + // could challenge the player with expired data to send an updated result set. + virtual bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false ) = 0; + + + // INVENTORY ASYNC MODIFICATION + // + + // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + // notification with a matching nCallbackContext parameter. This API is insecure, and could + // be abused by hacked clients. It is, however, very useful as a development cheat or as + // a means of prototyping item-related features for your game. The use of GenerateItems can + // be restricted to certain item definitions or fully blocked via the Steamworks website. + // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + // describe the quantity of each item to generate. + virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; + + // GrantPromoItems() checks the list of promotional items for which the user may be eligible + // and grants the items (one time only). On success, the result set will include items which + // were granted, if any. If no items were granted because the user isn't eligible for any + // promotions, this is still considered a success. + METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) + virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; + + // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + // scanning for all eligible promotional items, the check is restricted to a single item + // definition or set of item definitions. This can be useful if your game has custom UI for + // showing a specific promo item to the user. + virtual bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef ) = 0; + virtual bool AddPromoItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength ) = 0; + + // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + // Not for the faint of heart - if your game implements item removal at all, a high-friction + // UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity + // can be NULL or else an array of the same length as pArrayItems which describe the quantity + // of each item to destroy. ConsumeItem can be restricted to certain item definitions or + // fully blocked via the Steamworks website to minimize support/abuse issues such as the + // clasic "my brother borrowed my laptop and deleted all of my rare items". + METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) + virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; + + // ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be + // used to implement crafting recipes or transmutations, or items which unpack themselves + // into other items. Like GenerateItems, this is a flexible and dangerous API which is + // meant for rapid prototyping. You can configure restrictions on ExchangeItems via the + // Steamworks website, such as limiting it to a whitelist of input/output combinations + // corresponding to recipes. + // (Note: although GenerateItems may be hard or impossible to use securely in your game, + // ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.) + virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, + ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, + ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; + + + // TransferItemQuantity() is intended for use with items which are "stackable" (can have + // quantity greater than one). It can be used to split a stack into two, or to transfer + // quantity from one stack into another stack of identical items. To split one stack into + // two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + virtual bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ) = 0; + + + // TIMED DROPS AND PLAYTIME CREDIT + // + + // Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when + // active gameplay begins, and at least once every two minutes afterwards. The backend + // performs its own time calculations, so the precise timing of the heartbeat is not + // critical as long as you send at least one heartbeat every two minutes. Calling the + // function more often than that is not harmful, it will simply have no effect. Note: + // players may be able to spoof this message by hacking their client, so you should not + // attempt to use this as a mechanism to restrict playtime credits. It is simply meant + // to distinguish between being in any kind of gameplay situation vs the main menu or + // a pre-game launcher window. (If you are stingy with handing out playtime credit, it + // will only encourage players to run bots or use mouse/kb event simulators.) + // + // Playtime credit accumulation can be capped on a daily or weekly basis through your + // Steamworks configuration. + // + METHOD_DESC(Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.) + virtual void SendItemDropHeartbeat() = 0; + + // Playtime credit must be consumed and turned into item drops by your game. Only item + // definitions which are marked as "playtime item generators" can be spawned. The call + // will return an empty result set if there is not enough playtime credit for a drop. + // Your game should call TriggerItemDrop at an appropriate time for the user to receive + // new items, such as between rounds or while the player is dead. Note that players who + // hack their clients could modify the value of "dropListDefinition", so do not use it + // to directly control rarity. It is primarily useful during testing and development, + // where you may wish to perform experiments with different types of drops. + METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) + virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; + + + // IN-GAME TRADING + // + // TradeItems() implements limited in-game trading of items, if you prefer not to use + // the overlay or an in-game web browser to perform Steam Trading through the website. + // You should implement a UI where both players can see and agree to a trade, and then + // each client should call TradeItems simultaneously (+/- 5 seconds) with matching + // (but reversed) parameters. The result is the same as if both players performed a + // Steam Trading transaction through the web. Each player will get an inventory result + // confirming the removal or quantity changes of the items given away, and the new + // item instance id numbers and quantities of the received items. + // (Note: new item instance IDs are generated whenever an item changes ownership.) + virtual bool TradeItems( SteamInventoryResult_t *pResultHandle, CSteamID steamIDTradePartner, + ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength, + ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength ) = 0; + + + // ITEM DEFINITIONS + // + // Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + // to a set of string properties. Some of these properties are required to display items + // on the Steam community web site. Other properties can be defined by applications. + // Use of these functions is optional; there is no reason to call LoadItemDefinitions + // if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + // weapon mod = 55) and does not allow for adding new item types without a client patch. + // + + // LoadItemDefinitions triggers the automatic load and refresh of item definitions. + // Every time new item definitions are available (eg, from the dynamic addition of new + // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + // callback will be fired. + METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) + virtual bool LoadItemDefinitions() = 0; + + // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + // defined via Steamworks configuration, and not necessarily contiguous integers). + // If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + // contain the total size necessary for a subsequent call. Otherwise, the call will + // return false if and only if there is not enough space in the output array. + virtual bool GetItemDefinitionIDs( + OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, + DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; + + // GetItemDefinitionProperty returns a string property from a given item definition. + // Note that some properties (for example, "name") may be localized and will depend + // on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, + OUT_STRING_COUNT(punValueBufferSizeOut) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; +}; + +#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V001" + + +// SteamInventoryResultReady_t callbacks are fired whenever asynchronous +// results transition from "Pending" to "OK" or an error state. There will +// always be exactly one callback per handle. +struct SteamInventoryResultReady_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + SteamInventoryResult_t m_handle; + EResult m_result; +}; + + +// SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems +// successfully returns a result which is newer / fresher than the last +// known result. (It will not trigger if the inventory hasn't changed, +// or if results from two overlapping calls are reversed in flight and +// the earlier result is already known to be stale/out-of-date.) +// The normal ResultReady callback will still be triggered immediately +// afterwards; this is an additional notification for your convenience. +struct SteamInventoryFullUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + SteamInventoryResult_t m_handle; +}; + + +// A SteamInventoryDefinitionUpdate_t callback is triggered whenever +// item definitions have been updated, which could be in response to +// LoadItemDefinitions() or any other async request which required +// a definition update in order to process results from the server. +struct SteamInventoryDefinitionUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/osx/include/steam/isteammasterserverupdater.h b/lib/osx/include/steam/isteammasterserverupdater.h new file mode 100644 index 0000000..4be0ca5 --- /dev/null +++ b/lib/osx/include/steam/isteammasterserverupdater.h @@ -0,0 +1 @@ +#error "This file isn't used any more" diff --git a/lib/osx/include/steam/isteammatchmaking.h b/lib/osx/include/steam/isteammatchmaking.h new file mode 100644 index 0000000..837d98b --- /dev/null +++ b/lib/osx/include/steam/isteammatchmaking.h @@ -0,0 +1,751 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing game server/client match making +// +//============================================================================= + +#ifndef ISTEAMMATCHMAKING +#define ISTEAMMATCHMAKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" +#include "matchmakingtypes.h" +#include "isteamclient.h" +#include "isteamfriends.h" + +// lobby type description +enum ELobbyType +{ + k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else + k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list + k_ELobbyTypePublic = 2, // visible for friends and in lobby list + k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends + // useful if you want a user in two lobbies, for example matching groups together + // a user can be in only one regular lobby, and up to two invisible lobbies +}; + +// lobby search filter tools +enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +}; + +// lobby search distance. Lobby results are sorted from closest to farthest. +enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned + k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions + k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe + k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) +}; + +// maximum number of characters a lobby metadata key can be +#define k_nMaxLobbyKeyLength 255 + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to favorites +// and to operate on game lobbies. +//----------------------------------------------------------------------------- +class ISteamMatchmaking +{ +public: + // game server favorites storage + // saves basic details about a multiplayer game server locally + + // returns the number of favorites servers the user has stored + virtual int GetFavoriteGameCount() = 0; + + // returns the details of the game server + // iGame is of range [0,GetFavoriteGameCount()) + // *pnIP, *pnConnPort are filled in the with IP:port of the game server + // *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections + // *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added + virtual bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer ) = 0; + + // adds the game server to the local list; updates the time played of the server if it already exists in the list + virtual int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ) = 0; + + // removes the game server from the local storage; returns true if one was removed + virtual bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ) = 0; + + /////// + // Game lobby functions + + // Get a list of relevant lobbies + // this is an asynchronous request + // results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found + // this will never return lobbies that are full + // to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call + // use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. + /* + class CMyLobbyListManager + { + CCallResult<CMyLobbyListManager, LobbyMatchList_t> m_CallResultLobbyMatchList; + void FindLobbies() + { + // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() + SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); + m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); + } + + void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) + { + // lobby list has be retrieved from Steam back-end, use results + } + } + */ + // + CALL_RESULT( LobbyMatchList_t ) + virtual SteamAPICall_t RequestLobbyList() = 0; + // filters for lobbies + // this needs to be called before RequestLobbyList() to take effect + // these are cleared on each call to RequestLobbyList() + virtual void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType ) = 0; + // numerical comparison + virtual void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ) = 0; + // returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence + virtual void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo ) = 0; + // returns only lobbies with the specified number of slots available + virtual void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) = 0; + // sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) + virtual void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter ) = 0; + // sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client + virtual void AddRequestLobbyListResultCountFilter( int cMaxResults ) = 0; + + virtual void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby ) = 0; + + // returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call + // should only be called after a LobbyMatchList_t callback is received + // iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) + // the returned CSteamID::IsValid() will be false if iLobby is out of range + virtual CSteamID GetLobbyByIndex( int iLobby ) = 0; + + // Create a lobby on the Steam servers. + // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID + // of the lobby will need to be communicated via game channels or via InviteUserToLobby() + // this is an asynchronous request + // results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + CALL_RESULT( LobbyCreated_t ) + virtual SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers ) = 0; + + // Joins an existing lobby + // this is an asynchronous request + // results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful + // lobby metadata is available to use immediately on this call completing + CALL_RESULT( LobbyEnter_t ) + virtual SteamAPICall_t JoinLobby( CSteamID steamIDLobby ) = 0; + + // Leave a lobby; this will take effect immediately on the client side + // other users in the lobby will be notified by a LobbyChatUpdate_t callback + virtual void LeaveLobby( CSteamID steamIDLobby ) = 0; + + // Invite another user to the lobby + // the target user will receive a LobbyInvite_t callback + // will return true if the invite is successfully sent, whether or not the target responds + // returns false if the local user is not connected to the Steam servers + // if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, + // or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> + virtual bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee ) = 0; + + // Lobby iteration, for viewing details of users in a lobby + // only accessible if the lobby user is a member of the specified lobby + // persona information for other lobby members (name, avatar, etc.) will be asynchronously received + // and accessible via ISteamFriends interface + + // returns the number of users in the specified lobby + virtual int GetNumLobbyMembers( CSteamID steamIDLobby ) = 0; + // returns the CSteamID of a user in the lobby + // iMember is of range [0,GetNumLobbyMembers()) + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + virtual CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ) = 0; + + // Get data associated with this lobby + // takes a simple key, and returns the string associated with it + // "" will be returned if no value is set, or if steamIDLobby is invalid + virtual const char *GetLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + // Sets a key/value pair in the lobby metadata + // each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data + // this can be used to set lobby names, map, etc. + // to reset a key, just set it to "" + // other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback + virtual bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // returns the number of metadata keys set on the specified lobby + virtual int GetLobbyDataCount( CSteamID steamIDLobby ) = 0; + + // returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) + virtual bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize ) = 0; + + // removes a metadata key from the lobby + virtual bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + + // Gets per-user metadata for someone in this lobby + virtual const char *GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey ) = 0; + // Sets per-user metadata (for the local user implicitly) + virtual void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // Broadcasts a chat message to the all the users in the lobby + // users in the lobby (including the local user) will receive a LobbyChatMsg_t callback + // returns true if the message is successfully sent + // pvMsgBody can be binary or text data, up to 4k + // if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator + virtual bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody ) = 0; + // Get a chat message as specified in a LobbyChatMsg_t callback + // iChatID is the LobbyChatMsg_t::m_iChatID value in the callback + // *pSteamIDUser is filled in with the CSteamID of the member + // *pvData is filled in with the message itself + // return value is the number of bytes written into the buffer + virtual int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, OUT_STRUCT() CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // Refreshes metadata for a lobby you're not necessarily in right now + // you never do this for lobbies you're a member of, only if your + // this will send down all the metadata associated with a lobby + // this is an asynchronous call + // returns false if the local user is not connected to the Steam servers + // results will be returned by a LobbyDataUpdate_t callback + // if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + virtual bool RequestLobbyData( CSteamID steamIDLobby ) = 0; + + // sets the game server associated with the lobby + // usually at this point, the users will join the specified game server + // either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect + virtual void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer ) = 0; + // returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist + virtual bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, OUT_STRUCT() CSteamID *psteamIDGameServer ) = 0; + + // set the limit on the # of users who can join the lobby + virtual bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers ) = 0; + // returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined + virtual int GetLobbyMemberLimit( CSteamID steamIDLobby ) = 0; + + // updates which type of lobby it is + // only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls + virtual bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType ) = 0; + + // sets whether or not a lobby is joinable - defaults to true for a new lobby + // if set to false, no user can join, even if they are a friend or have been invited + virtual bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable ) = 0; + + // returns the current lobby owner + // you must be a member of the lobby to access this + // there always one lobby owner - if the current owner leaves, another user will become the owner + // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner + virtual CSteamID GetLobbyOwner( CSteamID steamIDLobby ) = 0; + + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner ) = 0; + + // link two lobbies for the purposes of checking player compatibility + // you must be the lobby owner of both lobbies + virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0; + +#ifdef _PS3 + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; +#endif + CALL_BACK( LobbyChatUpdate_t ) +}; +#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" + + +//----------------------------------------------------------------------------- +// Callback interfaces for server list functions (see ISteamMatchmakingServers below) +// +// The idea here is that your game code implements objects that implement these +// interfaces to receive callback notifications after calling asynchronous functions +// inside the ISteamMatchmakingServers() interface below. +// +// This is different than normal Steam callback handling due to the potentially +// large size of server lists. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when requesting server list. +//----------------------------------------------------------------------------- +typedef void* HServerListRequest; + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after a server list refresh +// or an individual server update. +// +// Since you get these callbacks after requesting full list refreshes you will +// usually implement this interface inside an object like CServerBrowser. If that +// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() +// to cancel any in-progress queries so you don't get a callback into the destructed +// object and crash. +//----------------------------------------------------------------------------- +class ISteamMatchmakingServerListResponse +{ +public: + // Server has responded ok with updated data + virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0; + + // Server has failed to respond + virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0; + + // A list refresh you had initiated is now 100% completed + virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after pinging an individual server +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PingServer() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPingResponse +{ +public: + // Server has responded successfully and has updated data + virtual void ServerResponded( gameserveritem_t &server ) = 0; + + // Server failed to respond to the ping request + virtual void ServerFailedToRespond() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting details on +// who is playing on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPlayersResponse +{ +public: + // Got data on a new player on the server -- you'll get this callback once per player + // on the server which you have requested player data on. + virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; + + // The server failed to respond to the request for player details + virtual void PlayersFailedToRespond() = 0; + + // The server has finished responding to the player details request + // (ie, you won't get anymore AddPlayerToList callbacks) + virtual void PlayersRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting rules +// details on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->ServerRules() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingRulesResponse +{ +public: + // Got data on a rule on the server -- you'll get one of these per rule defined on + // the server you are querying + virtual void RulesResponded( const char *pchRule, const char *pchValue ) = 0; + + // The server failed to respond to the request for rule details + virtual void RulesFailedToRespond() = 0; + + // The server has finished responding to the rule details request + // (ie, you won't get anymore RulesResponded callbacks) + virtual void RulesRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when querying details on an individual server. +//----------------------------------------------------------------------------- +typedef int HServerQuery; +const int HSERVERQUERY_INVALID = 0xffffffff; + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to game lists and details +//----------------------------------------------------------------------------- +class ISteamMatchmakingServers +{ +public: + // Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. + // Each call allocates a new asynchronous request object. + // Request object must be released by calling ReleaseRequest( hServerListRequest ) + virtual HServerListRequest RequestInternetServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + + // Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. + // RefreshComplete callback is not posted when request is released. + virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0; + + /* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: + + "map" + - Server passes the filter if the server is playing the specified map. + "gamedataand" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedataor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedatanor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsand" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsnor" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "and" (x1 && x2 && ... && xn) + "or" (x1 || x2 || ... || xn) + "nand" !(x1 && x2 && ... && xn) + "nor" !(x1 || x2 || ... || xn) + - Performs Boolean operation on the following filters. The operand to this filter specifies + the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue + pairs must immediately follow, i.e. this is a prefix logical operator notation.) + In the simplest case where Boolean expressions are not nested, this is simply + the number of operands. + + For example, to match servers on a particular map or with a particular tag, would would + use these filters. + + ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) + "or", "2" + "map", "cp_dustbowl" + "gametagsand", "payload" + + If logical inputs are nested, then the operand specifies the size of the entire + "length" of its operands, not the number of immediate children. + + ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) + "or", "4" + "map", "cp_dustbowl" + "and", "2" + "gametagsand", "payload" + "gametagsnor", "payloadrace" + + Unary NOT can be achieved using either "nand" or "nor" with a single operand. + + "addr" + - Server passes the filter if the server's query address matches the specified IP or IP:port. + "gameaddr" + - Server passes the filter if the server's game address matches the specified IP or IP:port. + + The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t + + "dedicated" + - Server passes the filter if it passed true to SetDedicatedServer. + "secure" + - Server passes the filter if the server is VAC-enabled. + "notfull" + - Server passes the filter if the player count is less than the reported max player count. + "hasplayers" + - Server passes the filter if the player count is greater than zero. + "noplayers" + - Server passes the filter if it doesn't have any players. + "linux" + - Server passes the filter if it's a linux server + */ + + // Get details on a given server in the list, you can get the valid range of index + // values by calling GetServerCount(). You will also receive index values in + // ISteamMatchmakingServerListResponse::ServerResponded() callbacks + virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0; + + // Cancel an request which is operation on the given list type. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above list request calls. Not doing so may result in a crash when a callback + // occurs on the destructed object. + // Canceling a query does not release the allocated request handle. + // The request handle must be released using ReleaseRequest( hRequest ) + virtual void CancelQuery( HServerListRequest hRequest ) = 0; + + // Ping every server in your list again but don't update the list of servers + // Query callback installed when the server list was requested will be used + // again to post notifications and RefreshComplete, so the callback must remain + // valid until another RefreshComplete is called on it or the request + // is released with ReleaseRequest( hRequest ) + virtual void RefreshQuery( HServerListRequest hRequest ) = 0; + + // Returns true if the list is currently refreshing its server list + virtual bool IsRefreshing( HServerListRequest hRequest ) = 0; + + // How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 + virtual int GetServerCount( HServerListRequest hRequest ) = 0; + + // Refresh a single server inside of a query (rather than all the servers ) + virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0; + + + //----------------------------------------------------------------------------- + // Queries to individual servers directly via IP/Port + //----------------------------------------------------------------------------- + + // Request updated ping time and other details from a single server + virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; + + // Request the list of players currently playing on a server + virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; + + // Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) + virtual HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse ) = 0; + + // Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above calls to avoid crashing when callbacks occur. + virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0; +}; +#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002" + +// game server flags +const uint32 k_unFavoriteFlagNone = 0x00; +const uint32 k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list +const uint32 k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list + + +//----------------------------------------------------------------------------- +// Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 +//----------------------------------------------------------------------------- +enum EChatMemberStateChange +{ + // Specific to joining / leaving the chatroom + k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room + k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room + k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first + k_EChatMemberStateChangeKicked = 0x0008, // User kicked + k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned +}; + +// returns true of the flags indicate that a user has been removed from the chat +#define BChatMemberStateChangeRemoved( rgfChatMemberStateChangeFlags ) ( rgfChatMemberStateChangeFlags & ( k_EChatMemberStateChangeDisconnected | k_EChatMemberStateChangeLeft | k_EChatMemberStateChangeKicked | k_EChatMemberStateChangeBanned ) ) + + +//----------------------------------------------------------------------------- +// Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: a server was added/removed from the favorites list, you should refresh now +//----------------------------------------------------------------------------- +struct FavoritesListChanged_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 2 }; + uint32 m_nIP; // an IP of 0 means reload the whole list, any other value means just one server + uint32 m_nQueryPort; + uint32 m_nConnPort; + uint32 m_nAppID; + uint32 m_nFlags; + bool m_bAdd; // true if this is adding the entry, otherwise it is a remove + AccountID_t m_unAccountId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Someone has invited you to join a Lobby +// normally you don't need to do anything with this, since +// the Steam UI will also display a '<user> has invited you to the lobby, join?' dialog +// +// if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", +// or with the callback GameLobbyJoinRequested_t if they're already in-game +//----------------------------------------------------------------------------- +struct LobbyInvite_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 3 }; + + uint64 m_ulSteamIDUser; // Steam ID of the person making the invite + uint64 m_ulSteamIDLobby; // Steam ID of the Lobby + uint64 m_ulGameID; // GameID of the Lobby +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent on entering a lobby, or on failing to enter +// m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, +// or a higher value on failure (see enum EChatRoomEnterResponse) +//----------------------------------------------------------------------------- +struct LobbyEnter_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 4 }; + + uint64 m_ulSteamIDLobby; // SteamID of the Lobby you have entered + uint32 m_rgfChatPermissions; // Permissions of the current user + bool m_bLocked; // If true, then only invited users may join + uint32 m_EChatRoomEnterResponse; // EChatRoomEnterResponse +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby metadata has changed +// if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details +// if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata +//----------------------------------------------------------------------------- +struct LobbyDataUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 5 }; + + uint64 m_ulSteamIDLobby; // steamID of the Lobby + uint64 m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself + uint8 m_bSuccess; // true if we lobby data was successfully changed; + // will only be false if RequestLobbyData() was called on a lobby that no longer exists +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby chat room state has changed +// this is usually sent when a user has joined or left the lobby +//----------------------------------------------------------------------------- +struct LobbyChatUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 6 }; + + uint64 m_ulSteamIDLobby; // Lobby ID + uint64 m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient + uint64 m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) + // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick + uint32 m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values +}; + + +//----------------------------------------------------------------------------- +// Purpose: A chat message for this lobby has been sent +// use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message +//----------------------------------------------------------------------------- +struct LobbyChatMsg_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 7 }; + + uint64 m_ulSteamIDLobby; // the lobby id this is in + uint64 m_ulSteamIDUser; // steamID of the user who has sent this message + uint8 m_eChatEntryType; // type of message + uint32 m_iChatID; // index of the chat entry to lookup +}; + + +//----------------------------------------------------------------------------- +// Purpose: A game created a game for all the members of the lobby to join, +// as triggered by a SetLobbyGameServer() +// it's up to the individual clients to take action on this; the usual +// game behavior is to leave the lobby and connect to the specified game server +//----------------------------------------------------------------------------- +struct LobbyGameCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 9 }; + + uint64 m_ulSteamIDLobby; // the lobby we were in + uint64 m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members + uint32 m_unIP; // IP & Port of the game server (if any) + uint16 m_usPort; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Number of matching lobbies found +// iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 +//----------------------------------------------------------------------------- +struct LobbyMatchList_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 10 }; + uint32 m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted if a user is forcefully removed from a lobby +// can occur if a user loses connection to Steam +//----------------------------------------------------------------------------- +struct LobbyKicked_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 }; + uint64 m_ulSteamIDLobby; // Lobby + uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself + uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct LobbyCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 13 }; + + EResult m_eResult; // k_EResultOK - the lobby was successfully created + // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end + // k_EResultTimeout - you the message to the Steam servers, but it didn't respond + // k_EResultFail - the server responded, but with an unknown internal error + // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game + // k_EResultLimitExceeded - your game client has created too many lobbies + + uint64 m_ulSteamIDLobby; // chat room, zero if failed +}; + +// used by now obsolete RequestFriendsLobbiesResponse_t +// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 }; + + +//----------------------------------------------------------------------------- +// Purpose: Result of CheckForPSNGameBootInvite +// m_eResult == k_EResultOK on success +// at this point, the local user may not have finishing joining this lobby; +// game code should wait until the subsequent LobbyEnter_t callback is received +//----------------------------------------------------------------------------- +struct PSNGameBootInviteResult_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 }; + + bool m_bGameBootInviteExists; + CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct FavoritesListAccountsUpdated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 16 }; + + EResult m_eResult; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMMATCHMAKING diff --git a/lib/osx/include/steam/isteammusic.h b/lib/osx/include/steam/isteammusic.h new file mode 100644 index 0000000..779a4c2 --- /dev/null +++ b/lib/osx/include/steam/isteammusic.h @@ -0,0 +1,67 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSIC_H +#define ISTEAMMUSIC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3 +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions to control music playback in the steam client +//----------------------------------------------------------------------------- +class ISteamMusic +{ +public: + virtual bool BIsEnabled() = 0; + virtual bool BIsPlaying() = 0; + + virtual AudioPlayback_Status GetPlaybackStatus() = 0; + + virtual void Play() = 0; + virtual void Pause() = 0; + virtual void PlayPrevious() = 0; + virtual void PlayNext() = 0; + + // volume is between 0.0 and 1.0 + virtual void SetVolume( float flVolume ) = 0; + virtual float GetVolume() = 0; + +}; + +#define STEAMMUSIC_INTERFACE_VERSION "STEAMMUSIC_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( PlaybackStatusHasChanged_t, k_iSteamMusicCallbacks + 1 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( VolumeHasChanged_t, k_iSteamMusicCallbacks + 2 ) + CALLBACK_MEMBER( 0, float, m_flNewVolume ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + +#endif // #define ISTEAMMUSIC_H diff --git a/lib/osx/include/steam/isteammusicremote.h b/lib/osx/include/steam/isteammusicremote.h new file mode 100644 index 0000000..ea29a7d --- /dev/null +++ b/lib/osx/include/steam/isteammusicremote.h @@ -0,0 +1,129 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSICREMOTE_H +#define ISTEAMMUSICREMOTE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteammusic.h" + +#define k_SteamMusicNameMaxLength 255 +#define k_SteamMusicPNGMaxLength 65535 + + +class ISteamMusicRemote +{ +public: + // Service Definition + virtual bool RegisterSteamMusicRemote( const char *pchName ) = 0; + virtual bool DeregisterSteamMusicRemote() = 0; + virtual bool BIsCurrentMusicRemote() = 0; + virtual bool BActivationSuccess( bool bValue ) = 0; + + virtual bool SetDisplayName( const char *pchDisplayName ) = 0; + virtual bool SetPNGIcon_64x64( void *pvBuffer, uint32 cbBufferLength ) = 0; + + // Abilities for the user interface + virtual bool EnablePlayPrevious(bool bValue) = 0; + virtual bool EnablePlayNext( bool bValue ) = 0; + virtual bool EnableShuffled( bool bValue ) = 0; + virtual bool EnableLooped( bool bValue ) = 0; + virtual bool EnableQueue( bool bValue ) = 0; + virtual bool EnablePlaylists( bool bValue ) = 0; + + // Status + virtual bool UpdatePlaybackStatus( AudioPlayback_Status nStatus ) = 0; + virtual bool UpdateShuffled( bool bValue ) = 0; + virtual bool UpdateLooped( bool bValue ) = 0; + virtual bool UpdateVolume( float flValue ) = 0; // volume is between 0.0 and 1.0 + + // Current Entry + virtual bool CurrentEntryWillChange() = 0; + virtual bool CurrentEntryIsAvailable( bool bAvailable ) = 0; + virtual bool UpdateCurrentEntryText( const char *pchText ) = 0; + virtual bool UpdateCurrentEntryElapsedSeconds( int nValue ) = 0; + virtual bool UpdateCurrentEntryCoverArt( void *pvBuffer, uint32 cbBufferLength ) = 0; + virtual bool CurrentEntryDidChange() = 0; + + // Queue + virtual bool QueueWillChange() = 0; + virtual bool ResetQueueEntries() = 0; + virtual bool SetQueueEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentQueueEntry( int nID ) = 0; + virtual bool QueueDidChange() = 0; + + // Playlist + virtual bool PlaylistWillChange() = 0; + virtual bool ResetPlaylistEntries() = 0; + virtual bool SetPlaylistEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentPlaylistEntry( int nID ) = 0; + virtual bool PlaylistDidChange() = 0; +}; + +#define STEAMMUSICREMOTE_INTERFACE_VERSION "STEAMMUSICREMOTE_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( MusicPlayerRemoteWillActivate_t, k_iSteamMusicRemoteCallbacks + 1) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteWillDeactivate_t, k_iSteamMusicRemoteCallbacks + 2 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteToFront_t, k_iSteamMusicRemoteCallbacks + 3 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWillQuit_t, k_iSteamMusicRemoteCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlay_t, k_iSteamMusicRemoteCallbacks + 5 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPause_t, k_iSteamMusicRemoteCallbacks + 6 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayPrevious_t, k_iSteamMusicRemoteCallbacks + 7 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayNext_t, k_iSteamMusicRemoteCallbacks + 8 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsShuffled_t, k_iSteamMusicRemoteCallbacks + 9 ) + CALLBACK_MEMBER( 0, bool, m_bShuffled ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsLooped_t, k_iSteamMusicRemoteCallbacks + 10 ) + CALLBACK_MEMBER(0, bool, m_bLooped ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsVolume_t, k_iSteamMusicCallbacks + 11 ) + CALLBACK_MEMBER(0, float, m_flNewVolume) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsQueueEntry_t, k_iSteamMusicCallbacks + 12 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsPlaylistEntry_t, k_iSteamMusicCallbacks + 13 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsPlayingRepeatStatus_t, k_iSteamMusicRemoteCallbacks + 14 ) + CALLBACK_MEMBER(0, int, m_nPlayingRepeatStatus ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + + +#endif // #define ISTEAMMUSICREMOTE_H diff --git a/lib/osx/include/steam/isteamnetworking.h b/lib/osx/include/steam/isteamnetworking.h new file mode 100644 index 0000000..8f70819 --- /dev/null +++ b/lib/osx/include/steam/isteamnetworking.h @@ -0,0 +1,306 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing network connections between game clients & servers +// +//============================================================================= + +#ifndef ISTEAMNETWORKING +#define ISTEAMNETWORKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible errors returned by SendP2PPacket() API +// these will be posted in the P2PSessionConnectFail_t callback +enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, // target is not running the same game + k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running + k_EP2PSessionErrorDestinationNotLoggedIn = 3, // target user isn't connected to Steam + k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() + // corporate firewalls can also block this (NAT traversal is not firewall traversal) + // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + k_EP2PSessionErrorMax = 5 +}; + +// SendP2PPacket() send types +// Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets +enum EP2PSend +{ + // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). + // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or + // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. + k_EP2PSendUnreliable = 0, + + // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first + // packet sent to a remote host almost guarantees the packet will be dropped. + // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets + k_EP2PSendUnreliableNoDelay = 1, + + // Reliable message send. Can send up to 1MB of data in a single message. + // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. + k_EP2PSendReliable = 2, + + // As above, but applies the Nagle algorithm to the send - sends will accumulate + // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). + // Useful if you want to send a set of smaller messages but have the coalesced into a single packet + // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then + // do a normal k_EP2PSendReliable to force all the buffered data to be sent. + k_EP2PSendReliableWithBuffering = 3, + +}; + + +// connection state to a specified user, returned by GetP2PSessionState() +// this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct P2PSessionState_t +{ + uint8 m_bConnectionActive; // true if we've got an active open connection + uint8 m_bConnecting; // true if we're currently trying to establish a connection + uint8 m_eP2PSessionError; // last error recorded (see enum above) + uint8 m_bUsingRelay; // true if it's going through a relay server (TURN) + int32 m_nBytesQueuedForSend; + int32 m_nPacketsQueuedForSend; + uint32 m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. + uint16 m_nRemotePort; // Only exists for compatibility with older authentication api's +}; +#pragma pack( pop ) + + +// handle to a socket +typedef uint32 SNetSocket_t; // CreateP2PConnectionSocket() +typedef uint32 SNetListenSocket_t; // CreateListenSocket() + +// connection progress indicators, used by CreateP2PConnectionSocket() +enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + + // communication is valid + k_ESNetSocketStateConnected = 1, + + // states while establishing a connection + k_ESNetSocketStateInitiated = 10, // the connection state machine has started + + // p2p connections + k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info + k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info + + // direct connections + k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server + + // failure states + k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end + k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown + k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection + k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us + k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke + +}; + +// describes how the socket is currently connected +enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for making connections and sending data between clients, +// traversing NAT's where possible +//----------------------------------------------------------------------------- +class ISteamNetworking +{ +public: + //////////////////////////////////////////////////////////////////////////////////////////// + // Session-less connection functions + // automatically establishes NAT-traversing or Relay server connections + + // Sends a P2P packet to the specified user + // UDP-like, unreliable and a max packet size of 1200 bytes + // the first packet send may be delayed as the NAT-traversal code runs + // if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + // see EP2PSend enum above for the descriptions of the different ways of sending packets + // + // nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + // with the same channel number in order to retrieve the data on the other end + // using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + virtual bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 ) = 0; + + // returns true if any data is available for read, and the amount of data that will need to be read + virtual bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 ) = 0; + + // reads in a packet that has been sent from another user via SendP2PPacket() + // returns the size of the message and the steamID of the user who sent it in the last two parameters + // if the buffer passed in is too small, the message will be truncated + // this call is not blocking, and will return false if no data is available + virtual bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 ) = 0; + + // AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + // P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + // if you don't want to talk to the user, just ignore the request + // if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + // this may be called multiple times for a single user + // (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + virtual bool AcceptP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + // if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + virtual bool CloseP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + // open channels to a user have been closed, the open session to the user will be closed and new data from this + // user will trigger a P2PSessionRequest_t callback + virtual bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel ) = 0; + + // fills out P2PSessionState_t structure with details about the underlying connection to the user + // should only needed for debugging purposes + // returns false if no connection exists to the specified user + virtual bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState ) = 0; + + // Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + // or NAT-traversal cannot be established. Only applies to connections created after setting this value, + // or to existing connections that need to automatically reconnect after this value is set. + // + // P2P packet relay is allowed by default + virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; + + + //////////////////////////////////////////////////////////////////////////////////////////// + // LISTEN / CONNECT style interface functions + // + // This is an older set of functions designed around the Berkeley TCP sockets model + // it's preferential that you use the above P2P functions, they're more robust + // and these older functions will be removed eventually + // + //////////////////////////////////////////////////////////////////////////////////////////// + + + // creates a socket and listens others to connect + // will trigger a SocketStatusCallback_t callback on another client connecting + // nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + // this can usually just be 0 unless you want multiple sets of connections + // unIP is the local IP address to bind to + // pass in 0 if you just want the default local IP + // unPort is the port to use + // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; + + // creates a socket and begin connection to a remote destination + // can connect via a known steamID (client or game server), or directly to an IP + // on success will trigger a SocketStatusCallback_t callback + // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; + virtual SNetSocket_t CreateConnectionSocket( uint32 nIP, uint16 nPort, int nTimeoutSec ) = 0; + + // disconnects the connection to the socket, if any, and invalidates the handle + // any unread data on the socket will be thrown away + // if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + virtual bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + // destroying a listen socket will automatically kill all the regular sockets generated from it + virtual bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + + // sending data + // must be a handle to a connected socket + // data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + // use the reliable flag with caution; although the resend rate is pretty aggressive, + // it can still cause stalls in receiving data (like TCP) + virtual bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable ) = 0; + + // receiving data + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + virtual bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize ) = 0; + + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + virtual bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + + // checks for data from any socket that has been connected off this listen socket + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + // fills out *phSocket with the socket that data is available on + virtual bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // retrieves data from any socket that has been connected off this listen socket + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + // fills out *phSocket with the socket that data is available on + virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // returns information about the specified socket, filling out the contents of the pointers + virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, uint32 *punIPRemote, uint16 *punPortRemote ) = 0; + + // returns which local port the listen socket is bound to + // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, uint32 *pnIP, uint16 *pnPort ) = 0; + + // returns true to describe how the socket ended up connecting + virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; + + // max packet size, in bytes + virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; +}; +#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking005" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API +// in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them +struct P2PSessionRequest_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 2 }; + CSteamID m_steamIDRemote; // user who wants to talk to us +}; + + +// callback notification - packets can't get through to the specified user via the SendP2PPacket() API +// all packets queued packets unsent at this point will be dropped +// further attempts to send will retry making the connection (but will be dropped if we fail again) +struct P2PSessionConnectFail_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 3 }; + CSteamID m_steamIDRemote; // user we were sending packets to + uint8 m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble +}; + + +// callback notification - status of a socket has changed +// used as part of the CreateListenSocket() / CreateP2PConnectionSocket() +struct SocketStatusCallback_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 1 }; + SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host + SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection + CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one + int m_eSNetSocketState; // socket state, ESNetSocketState +}; + +#pragma pack( pop ) + +#endif // ISTEAMNETWORKING diff --git a/lib/osx/include/steam/isteamps3overlayrenderer.h b/lib/osx/include/steam/isteamps3overlayrenderer.h new file mode 100644 index 0000000..4e07d4a --- /dev/null +++ b/lib/osx/include/steam/isteamps3overlayrenderer.h @@ -0,0 +1,91 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface the game must provide Steam with on PS3 in order for the +// Steam overlay to render. +// +//============================================================================= + +#ifndef ISTEAMPS3OVERLAYRENDERER_H +#define ISTEAMPS3OVERLAYRENDERER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cell/pad.h" + +//----------------------------------------------------------------------------- +// Purpose: Enum for supported gradient directions +//----------------------------------------------------------------------------- +enum EOverlayGradientDirection +{ + k_EOverlayGradientHorizontal = 1, + k_EOverlayGradientVertical = 2, + k_EOverlayGradientNone = 3, +}; + +// Helpers for fetching individual color components from ARGB packed DWORD colors Steam PS3 overlay renderer uses. +#define STEAM_COLOR_RED( color ) \ + (int)(((color)>>16)&0xff) + +#define STEAM_COLOR_GREEN( color ) \ + (int)(((color)>>8)&0xff) + +#define STEAM_COLOR_BLUE( color ) \ + (int)((color)&0xff) + +#define STEAM_COLOR_ALPHA( color ) \ + (int)(((color)>>24)&0xff) + + +//----------------------------------------------------------------------------- +// Purpose: Interface the game must expose to Steam for rendering +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRenderHost +{ +public: + + // Interface for game engine to implement which Steam requires to render. + + // Draw a textured rect. This may use only part of the texture and will pass texture coords, it will also possibly request a gradient and will specify colors for vertexes. + virtual void DrawTexturedRect( int x0, int y0, int x1, int y1, float u0, float v0, float u1, float v1, int32 iTextureID, DWORD colorStart, DWORD colorEnd, EOverlayGradientDirection eDirection ) = 0; + + // Load a RGBA texture for Steam, or update a previously loaded one. Updates may be partial. You must not evict or remove this texture once Steam has uploaded it. + virtual void LoadOrUpdateTexture( int32 iTextureID, bool bIsFullTexture, int x0, int y0, uint32 uWidth, uint32 uHeight, int32 iBytes, char *pData ) = 0; + + // Delete a texture Steam previously uploaded + virtual void DeleteTexture( int32 iTextureID ) = 0; + + // Delete all previously uploaded textures + virtual void DeleteAllTextures() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Interface Steam exposes for the game to tell it when to render, etc. +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRender +{ +public: + + // Call once at startup to initialize the Steam overlay and pass it your host interface ptr + virtual bool BHostInitialize( uint32 unScreenWidth, uint32 unScreenHeight, uint32 unRefreshRate, ISteamPS3OverlayRenderHost *pRenderHost, void *CellFontLib ) = 0; + + // Call this once a frame when you are ready for the Steam overlay to render (ie, right before flipping buffers, after all your rendering) + virtual void Render() = 0; + + // Call this everytime you read input on PS3. + // + // If this returns true, then the overlay is active and has consumed the input, your game + // should then ignore all the input until BHandleCellPadData once again returns false, which + // will mean the overlay is deactivated. + virtual bool BHandleCellPadData( const CellPadData &padData ) = 0; + + // Call this if you detect no controllers connected or that the XMB is intercepting input + // + // This is important to clear input state for the overlay, so keys left down during XMB activation + // are not continued to be processed. + virtual bool BResetInputState() = 0; +}; + + +#endif // ISTEAMPS3OVERLAYRENDERER_H \ No newline at end of file diff --git a/lib/osx/include/steam/isteamremotestorage.h b/lib/osx/include/steam/isteamremotestorage.h new file mode 100644 index 0000000..3ac2871 --- /dev/null +++ b/lib/osx/include/steam/isteamremotestorage.h @@ -0,0 +1,681 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMREMOTESTORAGE_H +#define ISTEAMREMOTESTORAGE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +//----------------------------------------------------------------------------- +// Purpose: Defines the largest allowed file size. Cloud files cannot be written +// in a single chunk over 100MB (and cannot be over 200MB total.) +//----------------------------------------------------------------------------- +const uint32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + + +//----------------------------------------------------------------------------- +// Purpose: Structure that contains an array of const char * strings and the number of those strings +//----------------------------------------------------------------------------- +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct SteamParamStringArray_t +{ + const char ** m_ppStrings; + int32 m_nNumStrings; +}; +#pragma pack( pop ) + +// A handle to a piece of user generated content +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +const PublishedFileId_t k_PublishedFileIdInvalid = 0; +const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull; +const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull; + +// Handle for writing to Steam Cloud +typedef uint64 UGCFileWriteStreamHandle_t; +const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull; + +const uint32 k_cchPublishedDocumentTitleMax = 128 + 1; +const uint32 k_cchPublishedDocumentDescriptionMax = 8000; +const uint32 k_cchPublishedDocumentChangeDescriptionMax = 8000; +const uint32 k_unEnumeratePublishedFilesMaxResults = 50; +const uint32 k_cchTagListMax = 1024 + 1; +const uint32 k_cchFilenameMax = 260; +const uint32 k_cchPublishedFileURLMax = 256; + + +enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = (1 << 0), + k_ERemoteStoragePlatformOSX = (1 << 1), + k_ERemoteStoragePlatformPS3 = (1 << 2), + k_ERemoteStoragePlatformLinux = (1 << 3), + k_ERemoteStoragePlatformReserved2 = (1 << 4), + + k_ERemoteStoragePlatformAll = 0xffffffff +}; + +enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +}; + + +enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + + k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to + k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game + k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items + k_EWorkshopFileTypeArt = 3, // artwork + k_EWorkshopFileTypeVideo = 4, // external video + k_EWorkshopFileTypeScreenshot = 5, // screenshot + k_EWorkshopFileTypeGame = 6, // Greenlight game entry + k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry + k_EWorkshopFileTypeConcept = 8, // Greenlight concept + k_EWorkshopFileTypeWebGuide = 9, // Steam web guide + k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide + k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold + k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings + k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal + k_EWorkshopFileTypeSteamVideo = 14, // Steam video + k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + + // Update k_EWorkshopFileTypeMax if you add values. + k_EWorkshopFileTypeMax = 16 + +}; + +enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +}; + +enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +}; + +enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +}; + +enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1 +}; + + +enum EUGCReadAction +{ + // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. + // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. + // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. + k_EUGCRead_ContinueReadingUntilFinished = 0, + + // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. + // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. + k_EUGCRead_ContinueReading = 1, + + // Frees the file handle. Use this when you're done reading the content. + // To read the file from Steam again you will need to call UGCDownload again. + k_EUGCRead_Close = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing, reading and writing files stored remotely +// and cached locally +//----------------------------------------------------------------------------- +class ISteamRemoteStorage +{ + public: + // NOTE + // + // Filenames are case-insensitive, and will be converted to lowercase automatically. + // So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then + // iterate the files, the filename returned will be "foo.bar". + // + + // file operations + virtual bool FileWrite( const char *pchFile, const void *pvData, int32 cubData ) = 0; + virtual int32 FileRead( const char *pchFile, void *pvData, int32 cubDataToRead ) = 0; + + CALL_RESULT( RemoteStorageFileWriteAsyncComplete_t ) + virtual SteamAPICall_t FileWriteAsync( const char *pchFile, const void *pvData, uint32 cubData ) = 0; + + CALL_RESULT( RemoteStorageFileReadAsyncComplete_t ) + virtual SteamAPICall_t FileReadAsync( const char *pchFile, uint32 nOffset, uint32 cubToRead ) = 0; + virtual bool FileReadAsyncComplete( SteamAPICall_t hReadCall, void *pvBuffer, uint32 cubToRead ) = 0; + + virtual bool FileForget( const char *pchFile ) = 0; + virtual bool FileDelete( const char *pchFile ) = 0; + CALL_RESULT( RemoteStorageFileShareResult_t ) + virtual SteamAPICall_t FileShare( const char *pchFile ) = 0; + virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0; + + // file operations that cause network IO + virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0; + virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0; + virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0; + virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0; + + // file information + virtual bool FileExists( const char *pchFile ) = 0; + virtual bool FilePersisted( const char *pchFile ) = 0; + virtual int32 GetFileSize( const char *pchFile ) = 0; + virtual int64 GetFileTimestamp( const char *pchFile ) = 0; + virtual ERemoteStoragePlatform GetSyncPlatforms( const char *pchFile ) = 0; + + // iteration + virtual int32 GetFileCount() = 0; + virtual const char *GetFileNameAndSize( int iFile, int32 *pnFileSizeInBytes ) = 0; + + // configuration management + virtual bool GetQuota( uint64 *pnTotalBytes, uint64 *puAvailableBytes ) = 0; + virtual bool IsCloudEnabledForAccount() = 0; + virtual bool IsCloudEnabledForApp() = 0; + virtual void SetCloudEnabledForApp( bool bEnabled ) = 0; + + // user generated content + + // Downloads a UGC file. A priority value of 0 will download the file immediately, + // otherwise it will wait to download the file until all downloads with a lower priority + // value are completed. Downloads with equal priority will occur simultaneously. + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0; + + // Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false + // or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage + virtual bool GetUGCDownloadProgress( UGCHandle_t hContent, int32 *pnBytesDownloaded, int32 *pnBytesExpected ) = 0; + + // Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result + virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, OUT_STRING() char **ppchName, int32 *pnFileSizeInBytes, OUT_STRUCT() CSteamID *pSteamIDOwner ) = 0; + + // After download, gets the content of the file. + // Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. + // Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate + // enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail + // unless UGCDownload is called again. + // For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. + virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ) = 0; + + // Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() + virtual int32 GetCachedUGCCount() = 0; + virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; + + // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you + // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. + +#if defined(_PS3) || defined(_SERVER) + // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback + virtual void GetFileListFromServer() = 0; + // Indicate this file should be downloaded in the next sync + virtual bool FileFetch( const char *pchFile ) = 0; + // Indicate this file should be persisted in the next sync + virtual bool FilePersist( const char *pchFile ) = 0; + // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback + virtual bool SynchronizeToClient() = 0; + // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback + virtual bool SynchronizeToServer() = 0; + // Reset any fetch/persist/etc requests + virtual bool ResetFileRequestState() = 0; +#endif + + // publishing UGC + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; + virtual PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileFile( PublishedFileUpdateHandle_t updateHandle, const char *pchFile ) = 0; + virtual bool UpdatePublishedFilePreviewFile( PublishedFileUpdateHandle_t updateHandle, const char *pchPreviewFile ) = 0; + virtual bool UpdatePublishedFileTitle( PublishedFileUpdateHandle_t updateHandle, const char *pchTitle ) = 0; + virtual bool UpdatePublishedFileDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchDescription ) = 0; + virtual bool UpdatePublishedFileVisibility( PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; + virtual bool UpdatePublishedFileTags( PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageUpdatePublishedFileResult_t ) + virtual SteamAPICall_t CommitPublishedFileUpdate( PublishedFileUpdateHandle_t updateHandle ) = 0; + // Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, + // cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. + // A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. + CALL_RESULT( RemoteStorageGetPublishedFileDetailsResult_t ) + virtual SteamAPICall_t GetPublishedFileDetails( PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ) = 0; + CALL_RESULT( RemoteStorageDeletePublishedFileResult_t ) + virtual SteamAPICall_t DeletePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + // enumerate the files that the current user published with this app + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserPublishedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserSubscribedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSubscribedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileSetChangeDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchChangeDescription ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageUpdateUserPublishedItemVoteResult_t ) + virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0; + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageSetUserPublishedFileActionResult_t ) + virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0; + CALL_RESULT( RemoteStorageEnumeratePublishedFilesByUserActionResult_t ) + virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0; + // this method enumerates the public view of workshop files + CALL_RESULT( RemoteStorageEnumerateWorkshopFilesResult_t ) + virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0; + + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; +}; + +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: sent when the local file cache is fully synced with the server for an app +// That means that an application can be started and has all latest files +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedClient_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumDownloads; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent when the server is fully synced with the local file cache for an app +// That means that we can shutdown Steam and our data is stored on the server +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedServer_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumUploads; +}; + +//----------------------------------------------------------------------------- +// Purpose: Status of up and downloads during a sync session +// +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; + char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred + AppId_t m_nAppID; // App this info relates to + uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk + double m_dAppPercentComplete; // Percent complete that this app's transfers are + bool m_bUploading; // if false, downloading +}; + +// +// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h +// + + +//----------------------------------------------------------------------------- +// Purpose: Sent after we've determined the list of files that are out of sync +// with the server. +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncStatusCheck_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; + AppId_t m_nAppID; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to FileShare() +//----------------------------------------------------------------------------- +struct RemoteStorageFileShareResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + EResult m_eResult; // The result of the operation + UGCHandle_t m_hFile; // The handle that can be shared with users and features + char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared +}; + + +// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to PublishFile() +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to DeletePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageDeletePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateUserPublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageSubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateSubscribePublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +#if defined(VALVE_CALLBACK_PACK_SMALL) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 ); +#elif defined(VALVE_CALLBACK_PACK_LARGE) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 + 4 ); +#else +#warning You must first include isteamclient.h +#endif + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UnsubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageUnsubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to CommitPublishedFileUpdate() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdatePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UGCDownload() +//----------------------------------------------------------------------------- +struct RemoteStorageDownloadUGCResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + EResult m_eResult; // The result of the operation. + UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. + AppId_t m_nAppID; // ID of the app that created this file. + int32 m_nSizeInBytes; // The size of the file that was downloaded, in bytes. + char m_pchFileName[k_cchFilenameMax]; // The name of the file that was downloaded. + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetPublishedFileDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedFileDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + ERemoteStoragePublishedFileVisibility m_eVisibility; + bool m_bBanned; + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_pchFileName[k_cchFilenameMax]; // The name of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + EWorkshopFileType m_eFileType; // Type of the file + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop +}; + + +struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + EResult m_eResult; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ]; + AppId_t m_nAppId; + uint32 m_unStartIndex; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of GetPublishedItemVoteDetails +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + EResult m_eResult; + PublishedFileId_t m_unPublishedFileId; + int32 m_nVotesFor; + int32 m_nVotesAgainst; + int32 m_nReports; + float m_fScore; +}; + + +//----------------------------------------------------------------------------- +// Purpose: User subscribed to a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileSubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + +//----------------------------------------------------------------------------- +// Purpose: User unsubscribed from a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUnsubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Published file that a user owns was deleted (from within the app or the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileDeleted_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UpdateUserPublishedItemVote() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserPublishedItemVoteDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageUserVoteDetails_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopVote m_eVote; // what the user voted +}; + +struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +struct RemoteStorageSetUserPublishedFileActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopFileAction m_eAction; // the action that was attempted +}; + +struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + EResult m_eResult; // The result of the operation. + EWorkshopFileAction m_eAction; // the action that was filtered on + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called periodically while a PublishWorkshopFile is in progress +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + double m_dPercentFile; + bool m_bPreview; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called when the content for a published file is updated +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUpdated_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. + uint64 m_ulUnused; // not used anymore +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileWriteAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileWriteAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + EResult m_eResult; // result +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileReadAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileReadAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made + EResult m_eResult; // result + uint32 m_nOffset; // offset in the file this read was at + uint32 m_cubRead; // amount read - will the <= the amount requested +}; + +#pragma pack( pop ) + + +#endif // ISTEAMREMOTESTORAGE_H diff --git a/lib/osx/include/steam/isteamscreenshots.h b/lib/osx/include/steam/isteamscreenshots.h new file mode 100644 index 0000000..6095705 --- /dev/null +++ b/lib/osx/include/steam/isteamscreenshots.h @@ -0,0 +1,116 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMSCREENSHOTS_H +#define ISTEAMSCREENSHOTS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +const uint32 k_nScreenshotMaxTaggedUsers = 32; +const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32; +const int k_cubUFSTagTypeMax = 255; +const int k_cubUFSTagValueMax = 255; + +// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail +// one will be generated. +const int k_ScreenshotThumbWidth = 200; + +// Handle is valid for the lifetime of your process and no longer +typedef uint32 ScreenshotHandle; +#define INVALID_SCREENSHOT_HANDLE 0 + +enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5 +}; + +//----------------------------------------------------------------------------- +// Purpose: Functions for adding screenshots to the user's screenshot library +//----------------------------------------------------------------------------- +class ISteamScreenshots +{ +public: + // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0; + + // Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio + // as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0; + + // Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. + virtual void TriggerScreenshot() = 0; + + // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, + // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary + // in response. + virtual void HookScreenshots( bool bHook ) = 0; + + // Sets metadata about a screenshot's location (for example, the name of the map) + virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0; + + // Tags a user as being visible in the screenshot + virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0; + + // Tags a published file as being visible in the screenshot + virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0; + + // Returns true if the app has hooked the screenshot + virtual bool IsScreenshotsHooked() = 0; + + // Adds a VR screenshot to the user's screenshot library from disk in the supported type. + // pchFilename should be the normal 2D image used in the library view + // pchVRFilename should contain the image that matches the correct type + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename ) = 0; +}; + +#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: Screenshot successfully written or otherwise added to the library +// and can now be tagged +//----------------------------------------------------------------------------- +struct ScreenshotReady_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 }; + ScreenshotHandle m_hLocal; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: Screenshot has been requested by the user. Only sent if +// HookScreenshots() has been called, in which case Steam will not take +// the screenshot itself. +//----------------------------------------------------------------------------- +struct ScreenshotRequested_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMSCREENSHOTS_H + diff --git a/lib/osx/include/steam/isteamugc.h b/lib/osx/include/steam/isteamugc.h new file mode 100644 index 0000000..1827fc6 --- /dev/null +++ b/lib/osx/include/steam/isteamugc.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam ugc +// +//============================================================================= + +#ifndef ISTEAMUGC_H +#define ISTEAMUGC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; + + +const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; +const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; + + +// Matching UGC types for queries +enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) + k_EUGCMatchingUGCType_All = ~0, // return everything +}; + +// Different lists of published UGC for a user. +// If the current logged in user is different than the specified user, then some options may not be allowed. +enum EUserUGCList +{ + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, +}; + +// Sort order for user published UGC lists (defaults to creation order descending) +enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, +}; + +// Combination of sorting and filtering for queries across all UGC +enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +}; + +enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t + k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data + k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files + k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam + k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image + k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes +}; + +enum EItemState +{ + k_EItemStateNone = 0, // item not tracked on client + k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. + k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage + k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) + k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content + k_EItemStateDownloading = 16, // item update is currently downloading + k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired +}; + +enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +}; + +enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) + k_EItemPreviewType_YouTubeVideo = 1, // video id is stored + k_EItemPreviewType_Sketchfab = 2, // model id is stored + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout + // +---+---+-------+ + // | |Up | | + // +---+---+---+---+ + // | L | F | R | B | + // +---+---+---+---+ + // | |Dn | | + // +---+---+---+---+ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value +}; + +const uint32 kNumUGCResultsPerPage = 50; +const uint32 k_cchDeveloperMetadataMax = 5000; + +// Details for a single published file/UGC +struct SteamUGCDetails_t +{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; // The result of the operation. + EWorkshopFileType m_eFileType; // Type of the file + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + uint32 m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) + ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility + bool m_bBanned; // whether the file was banned + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + // file/url information + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + // voting information + uint32 m_unVotesUp; // number of votes up + uint32 m_unVotesDown; // number of votes down + float m_flScore; // calculated score + // collection details + uint32 m_unNumChildren; +}; + +//----------------------------------------------------------------------------- +// Purpose: Steam UGC support API +//----------------------------------------------------------------------------- +class ISteamUGC +{ +public: + + // Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + + // Send the query to Steam + CALL_RESULT( SteamUGCQueryCompleted_t ) + virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Retrieve an individual result after receiving the callback for querying UGC + virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; + virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; + virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; + virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; + virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0; + virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; + virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + + // Release the request to free up memory, after retrieving results + virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Options to set for querying UGC + virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; + virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; + virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0; + virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0; + virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; + virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; + virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; + virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; + virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; + + // Options only for querying user UGC + virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; + + // Options only for querying all UGC + virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; + virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; + virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; + + // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; + + // Steam Workshop Creator API + CALL_RESULT( CreateItemResult_t ) + virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet + + virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + + virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item + virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item + virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set + virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item + virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item + virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder + virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key + virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. + virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item + virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item + virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) + + CALL_RESULT( SubmitItemUpdateResult_t ) + virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() + virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0; + + // Steam Workshop Consumer API + CALL_RESULT( SetUserItemVoteResult_t ) + virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0; + CALL_RESULT( GetUserItemVoteResult_t ) + virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits + virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items + virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs + + // get EItemState flags about item on this client + virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0; + + // get info about currently installed content on disc for items that have k_EItemStateInstalled set + // if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0; + + // get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + // then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + // If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0; + + // game servers can set a specific workshop folder before issuing any UGC commands. + // This is helpful if you want to support multiple game servers running out of the same install folder + virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0; + + // SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends + virtual void SuspendDownloads( bool bSuspend ) = 0; + + // usage tracking + CALL_RESULT( StartPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; +}; + +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION009" + +//----------------------------------------------------------------------------- +// Purpose: Callback for querying UGC +//----------------------------------------------------------------------------- +struct SteamUGCQueryCompleted_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + UGCQueryHandle_t m_handle; + EResult m_eResult; + uint32 m_unNumResultsReturned; + uint32 m_unTotalMatchingResults; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback for requesting details on one piece of UGC +//----------------------------------------------------------------------------- +struct SteamUGCRequestUGCDetailsResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + SteamUGCDetails_t m_details; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::CreateItem() +//----------------------------------------------------------------------------- +struct CreateItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::SubmitItemUpdate() +//----------------------------------------------------------------------------- +struct SubmitItemUpdateResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + EResult m_eResult; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a Workshop item has been installed or updated +//----------------------------------------------------------------------------- +struct ItemInstalled_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of DownloadItem(), existing item files can be accessed again +//----------------------------------------------------------------------------- +struct DownloadItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() +//----------------------------------------------------------------------------- +struct UserFavoriteItemsListChanged_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bWasAddRequest; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SetUserItemVote() +//----------------------------------------------------------------------------- +struct SetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVoteUp; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserItemVote() +//----------------------------------------------------------------------------- +struct GetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVotedUp; + bool m_bVotedDown; + bool m_bVoteSkipped; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StartPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StartPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StopPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StopPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + EResult m_eResult; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMUGC_H diff --git a/lib/osx/include/steam/isteamunifiedmessages.h b/lib/osx/include/steam/isteamunifiedmessages.h new file mode 100644 index 0000000..684f4e8 --- /dev/null +++ b/lib/osx/include/steam/isteamunifiedmessages.h @@ -0,0 +1,63 @@ +//====== Copyright � 1996-2007, Valve Corporation, All rights reserved. ======= +// +// Purpose: Interface to unified messages client +// +// You should not need to use this interface except if your product is using a language other than C++. +// Contact your Steam Tech contact for more details. +// +//============================================================================= + +#ifndef ISTEAMUNIFIEDMESSAGES_H +#define ISTEAMUNIFIEDMESSAGES_H +#ifdef _WIN32 +#pragma once +#endif + +typedef uint64 ClientUnifiedMessageHandle; + +class ISteamUnifiedMessages +{ +public: + static const ClientUnifiedMessageHandle k_InvalidUnifiedMessageHandle = 0; + + // Sends a service method (in binary serialized form) using the Steam Client. + // Returns a unified message handle (k_InvalidUnifiedMessageHandle if could not send the message). + virtual ClientUnifiedMessageHandle SendMethod( const char *pchServiceMethod, const void *pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext ) = 0; + + // Gets the size of the response and the EResult. Returns false if the response is not ready yet. + virtual bool GetMethodResponseInfo( ClientUnifiedMessageHandle hHandle, uint32 *punResponseSize, EResult *peResult ) = 0; + + // Gets a response in binary serialized form (and optionally release the corresponding allocated memory). + virtual bool GetMethodResponseData( ClientUnifiedMessageHandle hHandle, void *pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease ) = 0; + + // Releases the message and its corresponding allocated memory. + virtual bool ReleaseMethod( ClientUnifiedMessageHandle hHandle ) = 0; + + // Sends a service notification (in binary serialized form) using the Steam Client. + // Returns true if the notification was sent successfully. + virtual bool SendNotification( const char *pchServiceNotification, const void *pNotificationBuffer, uint32 unNotificationBufferSize ) = 0; +}; + +#define STEAMUNIFIEDMESSAGES_INTERFACE_VERSION "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct SteamUnifiedMessagesSendMethodResult_t +{ + enum { k_iCallback = k_iClientUnifiedMessagesCallbacks + 1 }; + ClientUnifiedMessageHandle m_hHandle; // The handle returned by SendMethod(). + uint64 m_unContext; // Context provided when calling SendMethod(). + EResult m_eResult; // The result of the method call. + uint32 m_unResponseSize; // The size of the response. +}; + +#pragma pack( pop ) + +#endif // ISTEAMUNIFIEDMESSAGES_H diff --git a/lib/osx/include/steam/isteamuser.h b/lib/osx/include/steam/isteamuser.h new file mode 100644 index 0000000..f97a057 --- /dev/null +++ b/lib/osx/include/steam/isteamuser.h @@ -0,0 +1,355 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to user account information in Steam +// +//============================================================================= + +#ifndef ISTEAMUSER_H +#define ISTEAMUSER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// structure that contains client callback data +// see callbacks documentation for more details +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct CallbackMsg_t +{ + HSteamUser m_hSteamUser; + int m_iCallback; + uint8 *m_pubParam; + int m_cubParam; +}; +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing and manipulating a steam account +// associated with one client instance +//----------------------------------------------------------------------------- +class ISteamUser +{ +public: + // returns the HSteamUser this interface represents + // this is only used internally by the API, and by a few select interfaces that support multi-user + virtual HSteamUser GetHSteamUser() = 0; + + // returns true if the Steam client current has a live connection to the Steam servers. + // If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. + // The Steam client will automatically be trying to recreate the connection as often as possible. + virtual bool BLoggedOn() = 0; + + // returns the CSteamID of the account currently logged into the Steam client + // a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API + virtual CSteamID GetSteamID() = 0; + + // Multiplayer Authentication functions + + // InitiateGameConnection() starts the state machine for authenticating the game client with the game server + // It is the client portion of a three-way handshake between the client, the game server, and the steam servers + // + // Parameters: + // void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. + // int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> ) + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + // bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) + // + // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed + // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + + // notify of disconnect + // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + + // Legacy functions + + // used by only a few games to track usage events + virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; + + // get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. + // this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local" + virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0; + + // Starts voice recording. Once started, use GetVoice() to get the data + virtual void StartVoiceRecording( ) = 0; + + // Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for + // a little bit after this function is called. GetVoice() should continue to be called until it returns + // k_eVoiceResultNotRecording + virtual void StopVoiceRecording( ) = 0; + + // Determine the amount of captured audio data that is available in bytes. + // This provides both the compressed and uncompressed data. Please note that the uncompressed + // data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected. + // nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case) + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to + // DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format. + // Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected, and may have passed through denoising filters, etc. + // This function should be called as often as possible once recording has started; once per frame at least. + // nBytesWritten is set to the number of bytes written to pDestBuffer. + // nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer. + // You must grab both compressed and uncompressed here at the same time, if you want both. + // Matching data that is not read during this call will be thrown away. + // GetAvailableVoice() can be used to determine how much data is actually available. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Decompresses a chunk of compressed data produced by GetVoice(). + // nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall. + // In that case, nBytesWritten is set to the size of the buffer required to decompress the given + // data. The suggested buffer size for the destination buffer is 22 kilobytes. + // The output format of the data is 16-bit signed at the requested samples per second. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate + virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; + + // This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results + virtual uint32 GetVoiceOptimalSampleRate() = 0; + + // Retrieve ticket to be sent to the entity who wishes to authenticate you. + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to BeginAuthSession, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam + // (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. + virtual bool BIsBehindNAT() = 0; + + // set data to be replicated to friends so that they can join your game + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + virtual void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer ) = 0; + + // Requests a ticket encrypted with an app specific shared key + // pDataToInclude, cbDataToInclude will be encrypted into the ticket + // ( This is asynchronous, you must wait for the ticket to be completed by the server ) + CALL_RESULT( EncryptedAppTicketResponse_t ) + virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; + + // retrieve a finished ticket + virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Trading Card badges data access + // if you only have one set of cards, the series will be 1 + // the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) + virtual int GetGameBadgeLevel( int nSeries, bool bFoil ) = 0; + + // gets the Steam Level of the user, as shown on their profile + virtual int GetPlayerSteamLevel() = 0; + + // Requests a URL which authenticates an in-game browser for store check-out, + // and then redirects to the specified URL. As long as the in-game browser + // accepts and handles session cookies, Steam microtransaction checkout pages + // will automatically recognize the user instead of presenting a login page. + // The result of this API call will be a StoreAuthURLResponse_t callback. + // NOTE: The URL has a very short lifetime to prevent history-snooping attacks, + // so you should only call this API when you are about to launch the browser, + // or else immediately navigate to the result URL using a hidden browser window. + // NOTE 2: The resulting authorization cookie has an expiration time of one day, + // so it would be a good idea to request and visit a new auth URL every 12 hours. + CALL_RESULT( StoreAuthURLResponse_t ) + virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; + + // gets whether the users phone number is verified + virtual bool BIsPhoneVerified() = 0; + + // gets whether the user has two factor enabled on their account + virtual bool BIsTwoFactorEnabled() = 0; + + // gets whether the users phone number is identifying + virtual bool BIsPhoneIdentifying() = 0; + + // gets whether the users phone number is awaiting (re)verification + virtual bool BIsPhoneRequiringVerification() = 0; + +}; + +#define STEAMUSER_INTERFACE_VERSION "SteamUser019" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a connections to the Steam back-end has been established +// this means the Steam client now has a working connection to the Steam servers +// usually this will have occurred before the game has launched, and should +// only be seen if the user has dropped connection due to a networking issue +// or a Steam server update +//----------------------------------------------------------------------------- +struct SteamServersConnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 1 }; +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a connection attempt has failed +// this will occur periodically if the Steam client is not connected, +// and has failed in it's retry to establish a connection +//----------------------------------------------------------------------------- +struct SteamServerConnectFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 2 }; + EResult m_eResult; + bool m_bStillRetrying; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called if the client has lost connection to the Steam servers +// real-time services will be disabled until a matching SteamServersConnected_t has been posted +//----------------------------------------------------------------------------- +struct SteamServersDisconnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 3 }; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, +// which it may be in the process of or already connected to. +// The game client should immediately disconnect upon receiving this message. +// This can usually occur if the user doesn't have rights to play on the game server. +//----------------------------------------------------------------------------- +struct ClientGameServerDeny_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 13 }; + + uint32 m_uAppID; + uint32 m_unGameServerIP; + uint16 m_usGameServerPort; + uint16 m_bSecure; + uint32 m_uReason; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) +// When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. +// This usually occurs in the rare event the Steam client has some kind of fatal error. +//----------------------------------------------------------------------------- +struct IPCFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 17 }; + enum EFailureType + { + k_EFailureFlushedCallbackQueue, + k_EFailurePipeFail, + }; + uint8 m_eFailureType; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Signaled whenever licenses change +//----------------------------------------------------------------------------- +struct LicensesUpdated_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 25 }; +}; + + +//----------------------------------------------------------------------------- +// callback for BeginAuthSession +//----------------------------------------------------------------------------- +struct ValidateAuthTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 43 }; + CSteamID m_SteamID; + EAuthSessionResponse m_eAuthSessionResponse; + CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a user has responded to a microtransaction authorization request +//----------------------------------------------------------------------------- +struct MicroTxnAuthorizationResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 52 }; + + uint32 m_unAppID; // AppID for this microtransaction + uint64 m_ulOrderID; // OrderID provided for the microtransaction + uint8 m_bAuthorized; // if user authorized transaction +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result from RequestEncryptedAppTicket +//----------------------------------------------------------------------------- +struct EncryptedAppTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 54 }; + + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// callback for GetAuthSessionTicket +//----------------------------------------------------------------------------- +struct GetAuthSessionTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 63 }; + HAuthTicket m_hAuthTicket; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to a steam://gamewebcallback/ command +//----------------------------------------------------------------------------- +struct GameWebCallback_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 64 }; + char m_szURL[256]; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL +//----------------------------------------------------------------------------- +struct StoreAuthURLResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 65 }; + char m_szURL[512]; +}; + + + +#pragma pack( pop ) + +#endif // ISTEAMUSER_H diff --git a/lib/osx/include/steam/isteamuserstats.h b/lib/osx/include/steam/isteamuserstats.h new file mode 100644 index 0000000..29ae38b --- /dev/null +++ b/lib/osx/include/steam/isteamuserstats.h @@ -0,0 +1,476 @@ +//====== Copyright � 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to stats, achievements, and leaderboards +// +//============================================================================= + +#ifndef ISTEAMUSERSTATS_H +#define ISTEAMUSERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamremotestorage.h" + +// size limit on stat or achievement name (UTF-8 encoded) +enum { k_cchStatNameMax = 128 }; + +// maximum number of bytes for a leaderboard name (UTF-8 encoded) +enum { k_cchLeaderboardNameMax = 128 }; + +// maximum number of details int32's storable for a single leaderboard entry +enum { k_cLeaderboardDetailsMax = 64 }; + +// handle to a single leaderboard +typedef uint64 SteamLeaderboard_t; + +// handle to a set of downloaded entries in a leaderboard +typedef uint64 SteamLeaderboardEntries_t; + +// type of data request, when downloading leaderboard entries +enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3 +}; + +// the sort order of a leaderboard +enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number + k_ELeaderboardSortMethodDescending = 2, // top-score is highest number +}; + +// the display type (used by the Steam Community web site) for a leaderboard +enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score + k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds +}; + +enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score + k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified +}; + +// a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct LeaderboardEntry_t +{ + CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info + int32 m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard + int32 m_nScore; // score as set in the leaderboard + int32 m_cDetails; // number of int32 details available for this entry + UGCHandle_t m_hUGC; // handle for UGC attached to the entry +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing stats, achievements, and leaderboard information +//----------------------------------------------------------------------------- +class ISteamUserStats +{ +public: + // Ask the server to send down this user's data and achievements for this game + CALL_BACK( UserStatsReceived_t ) + virtual bool RequestCurrentStats() = 0; + + // Data accessors + virtual bool GetStat( const char *pchName, int32 *pData ) = 0; + virtual bool GetStat( const char *pchName, float *pData ) = 0; + + // Set / update data + virtual bool SetStat( const char *pchName, int32 nData ) = 0; + virtual bool SetStat( const char *pchName, float fData ) = 0; + virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + // Achievement flag accessors + virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0; + virtual bool SetAchievement( const char *pchName ) = 0; + virtual bool ClearAchievement( const char *pchName ) = 0; + + // Get the achievement status, and the time it was unlocked if unlocked. + // If the return value is true, but the unlock time is zero, that means it was unlocked before Steam + // began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. + virtual bool GetAchievementAndUnlockTime( const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Store the current data on the server, will get a callback when set + // And one callback for every new achievement + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + virtual bool StoreStats() = 0; + + // Achievement / GroupAchievement metadata + + // Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. + // A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback + // which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the + // specified achievement. + virtual int GetAchievementIcon( const char *pchName ) = 0; + + // Get general attributes for an achievement. Accepts the following keys: + // - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) + // - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) + virtual const char *GetAchievementDisplayAttribute( const char *pchName, const char *pchKey ) = 0; + + // Achievement progress - triggers an AchievementProgress callback, that is all. + // Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. + virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0; + + // Used for iterating achievements. In general games should not need these functions because they should have a + // list of existing achievements compiled into them + virtual uint32 GetNumAchievements() = 0; + // Get achievement name iAchievement in [0,GetNumAchievements) + virtual const char *GetAchievementName( uint32 iAchievement ) = 0; + + // Friends stats & achievements + + // downloads stats for the user + // returns a UserStatsReceived_t received when completed + // if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( UserStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + // See notes for GetAchievementAndUnlockTime above + virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Reset stats + virtual bool ResetAllStats( bool bAchievementsToo ) = 0; + + // Leaderboard functions + + // asks the Steam back-end for a leaderboard by name, and will create it if it's not yet + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT(LeaderboardFindResult_t) + virtual SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) = 0; + + // as above, but won't create the leaderboard if it's not found + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT( LeaderboardFindResult_t ) + virtual SteamAPICall_t FindLeaderboard( const char *pchLeaderboardName ) = 0; + + // returns the name of a leaderboard + virtual const char *GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the total number of entries in a leaderboard, as of the last request + virtual int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the sort method of the leaderboard + virtual ELeaderboardSortMethod GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the display type of the leaderboard + virtual ELeaderboardDisplayType GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // Asks the Steam back-end for a set of rows in the leaderboard. + // This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t + // LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) + // You can ask for more entries than exist, and it will return as many as do exist. + // k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] + // k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate + // e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after + // k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) = 0; + // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers + // if a user doesn't have a leaderboard entry, they won't be included in the result + // a max of 100 users can be downloaded at a time, with only one outstanding call at a time + METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, + ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; + + // Returns data about a single leaderboard entry + // use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries + // e.g. + // void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) + // { + // for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) + // { + // LeaderboardEntry_t leaderboardEntry; + // int32 details[3]; // we know this is how many we've stored previously + // GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); + // assert( leaderboardEntry.m_cDetails == 3 ); + // ... + // } + // once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid + virtual bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) = 0; + + // Uploads a user score to the Steam back-end. + // This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t + // Details are extra game-defined information regarding how the user got that score + // pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list + CALL_RESULT( LeaderboardScoreUploaded_t ) + virtual SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 *pScoreDetails, int cScoreDetailsCount ) = 0; + + // Attaches a piece of user generated content the user's entry on a leaderboard. + // hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). + // This call is asynchronous, with the result returned in LeaderboardUGCSet_t. + CALL_RESULT( LeaderboardUGCSet_t ) + virtual SteamAPICall_t AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) = 0; + + // Retrieves the number of players currently playing your game (online + offline) + // This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t + CALL_RESULT( NumberOfCurrentPlayers_t ) + virtual SteamAPICall_t GetNumberOfCurrentPlayers() = 0; + + // Requests that Steam fetch data on the percentage of players who have received each achievement + // for the game globally. + // This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. + CALL_RESULT( GlobalAchievementPercentagesReady_t ) + virtual SteamAPICall_t RequestGlobalAchievementPercentages() = 0; + + // Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch + // the next most achieved afterwards. Will return -1 if there is no data on achievement + // percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). + virtual int GetMostAchievedAchievementInfo( char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another + // GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last + // achievement has been iterated. + virtual int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Returns the percentage of users who have achieved the specified achievement. + virtual bool GetAchievementAchievedPercent( const char *pchName, float *pflPercent ) = 0; + + // Requests global stats data, which is available for stats marked as "aggregated". + // This call is asynchronous, with the results returned in GlobalStatsReceived_t. + // nHistoryDays specifies how many days of day-by-day history to retrieve in addition + // to the overall totals. The limit is 60. + CALL_RESULT( GlobalStatsReceived_t ) + virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; + + // Gets the lifetime totals for an aggregated stat + virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; + virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; + + // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. + // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, + // etc. cubData is the size in bytes of the pubData buffer. Returns the number of + // elements actually set. + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; + +#ifdef _PS3 + // Call to kick off installation of the PS3 trophies. This call is asynchronous, and the results will be returned in a PS3TrophiesInstalled_t + // callback. + virtual bool InstallPS3Trophies() = 0; + + // Returns the amount of space required at boot to install trophies. This value can be used when comparing the amount of space needed + // by the game to the available space value passed to the game at boot. The value is set during InstallPS3Trophies(). + virtual uint64 GetTrophySpaceRequiredBeforeInstall() = 0; + + // On PS3, user stats & achievement progress through Steam must be stored with the user's saved game data. + // At startup, before calling RequestCurrentStats(), you must pass the user's stats data to Steam via this method. + // If you do not have any user data, call this function with pvData = NULL and cubData = 0 + virtual bool SetUserStatsData( const void *pvData, uint32 cubData ) = 0; + + // Call to get the user's current stats data. You should retrieve this data after receiving successful UserStatsReceived_t & UserStatsStored_t + // callbacks, and store the data with the user's save game data. You can call this method with pvData = NULL and cubData = 0 to get the required + // buffer size. + virtual bool GetUserStatsData( void *pvData, uint32 cubData, uint32 *pcubWritten ) = 0; +#endif +}; + +#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION011" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct UserStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 1 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct UserStatsStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 2 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // success / error +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the achievements for a game, or an +// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress +// are zero, that means the achievement has been fully unlocked. +//----------------------------------------------------------------------------- +struct UserAchievementStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 3 }; + + uint64 m_nGameID; // Game this is for + bool m_bGroupAchievement; // if this is a "group" achievement + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + uint32 m_nCurProgress; // current progress towards the achievement + uint32 m_nMaxProgress; // "out of" this many +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardFindResult_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 4 }; + SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found + uint8 m_bLeaderboardFound; // 0 if no leaderboard found +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoresDownloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 5 }; + SteamLeaderboard_t m_hSteamLeaderboard; + SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() + int m_cEntryCount; // the number of entries downloaded +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoreUploaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 6 }; + uint8 m_bSuccess; // 1 if the call was successful + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + int32 m_nScore; // the score that was attempted to set + uint8 m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better + int m_nGlobalRankNew; // the new global rank of the user in this leaderboard + int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard +}; + +struct NumberOfCurrentPlayers_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 7 }; + uint8 m_bSuccess; // 1 if the call was successful + int32 m_cPlayers; // Number of players currently playing +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct UserStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that an achievement icon has been fetched +//----------------------------------------------------------------------------- +struct UserAchievementIconFetched_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 9 }; + + CGameID m_nGameID; // Game this is for + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + bool m_bAchieved; // Is the icon for the achieved or not achieved version? + int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that global achievement percentages are fetched +//----------------------------------------------------------------------------- +struct GlobalAchievementPercentagesReady_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 10 }; + + uint64 m_nGameID; // Game this is for + EResult m_eResult; // Result of the operation +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() +//----------------------------------------------------------------------------- +struct LeaderboardUGCSet_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 11 }; + EResult m_eResult; // The result of the operation + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating that PS3 trophies have been installed +//----------------------------------------------------------------------------- +struct PS3TrophiesInstalled_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // The result of the operation + uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies + +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating global stats have been received. +// Returned as a result of RequestGlobalStats() +//----------------------------------------------------------------------------- +struct GlobalStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game global stats were requested for + EResult m_eResult; // The result of the request +}; + +#pragma pack( pop ) + + +#endif // ISTEAMUSER_H diff --git a/lib/osx/include/steam/isteamutils.h b/lib/osx/include/steam/isteamutils.h new file mode 100644 index 0000000..aaf839f --- /dev/null +++ b/lib/osx/include/steam/isteamutils.h @@ -0,0 +1,254 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to utility functions in Steam +// +//============================================================================= + +#ifndef ISTEAMUTILS_H +#define ISTEAMUTILS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +// Steam API call failure results +enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, // no failure + k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away + k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken + // SteamServersDisconnected_t callback will be sent around the same time + // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again + k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists + k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call +}; + + +// Input modes for the Big Picture gamepad text entry +enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1 +}; + + +// Controls number of allowed lines for the Big Picture gamepad text entry +enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1 +}; + + +// function prototype for warning message hook +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); + +//----------------------------------------------------------------------------- +// Purpose: interface to user independent utility functions +//----------------------------------------------------------------------------- +class ISteamUtils +{ +public: + // return the number of seconds since the user + virtual uint32 GetSecondsSinceAppActive() = 0; + virtual uint32 GetSecondsSinceComputerActive() = 0; + + // the universe this client is connecting to + virtual EUniverse GetConnectedUniverse() = 0; + + // Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) + virtual uint32 GetServerRealTime() = 0; + + // returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + // e.g "US" or "UK". + virtual const char *GetIPCountry() = 0; + + // returns true if the image exists, and valid sizes were filled out + virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0; + + // returns true if the image exists, and the buffer was successfully filled out + // results are returned in RGBA format + // the destination buffer size should be 4 * height * width * sizeof(char) + virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; + + // returns the IP of the reporting server for valve - currently only used in Source engine games + virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; + + // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + virtual uint8 GetCurrentBatteryPower() = 0; + + // returns the appID of the current process + virtual uint32 GetAppID() = 0; + + // Sets the position where the overlay instance for the currently calling game should show notifications. + // This position is per-game and if this function is called from outside of a game context it will do nothing. + virtual void SetOverlayNotificationPosition( ENotificationPosition eNotificationPosition ) = 0; + + // API asynchronous call results + // can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + virtual bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, bool *pbFailed ) = 0; + virtual ESteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) = 0; + virtual bool GetAPICallResult( SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() instead. Game servers do not need to call this function. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + // start & hook the game process, so this function will initially return false while the overlay is loading. + virtual bool IsOverlayEnabled() = 0; + + // Normally this call is unneeded if your game has a constantly running frame loop that calls the + // D3D Present API, or OGL SwapBuffers API every frame. + // + // However, if you have a game that only refreshes the screen on an event driven basis then that can break + // the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + // need to Present() to the screen any time an even needing a notification happens or when the overlay is + // brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + // in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + // refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + virtual bool BOverlayNeedsPresent() = 0; + + // Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + // of the partner site, for example to refuse to load modified executable files. + // The result is returned in CheckFileSignature_t. + // k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + // k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + // k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + // k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + // k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + CALL_RESULT( CheckFileSignature_t ) + virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; + + // Activates the Big Picture text input dialog which only supports gamepad input + virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; + + // Returns previously entered text & length + virtual uint32 GetEnteredGamepadTextLength() = 0; + virtual bool GetEnteredGamepadTextInput( char *pchText, uint32 cchText ) = 0; + + // returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + virtual const char *GetSteamUILanguage() = 0; + + // returns true if Steam itself is running in VR mode + virtual bool IsSteamRunningInVR() = 0; + + // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; + + // returns true if Steam & the Steam Overlay are running in Big Picture mode + // Games much be launched through the Steam client to enable the Big Picture overlay. During development, + // a game can be added as a non-steam game to the developers library to test this feature + virtual bool IsSteamInBigPictureMode() = 0; + + // ask SteamUI to create and render its OpenVR dashboard + virtual void StartVRDashboard() = 0; +}; + +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils008" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: The country of the user changed +//----------------------------------------------------------------------------- +struct IPCountry_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 1 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute +//----------------------------------------------------------------------------- +struct LowBatteryPower_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 2 }; + uint8 m_nMinutesBatteryLeft; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a SteamAsyncCall_t has completed (or failed) +//----------------------------------------------------------------------------- +struct SteamAPICallCompleted_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; + SteamAPICall_t m_hAsyncCall; + int m_iCallback; + uint32 m_cubParam; +}; + + +//----------------------------------------------------------------------------- +// called when Steam wants to shutdown +//----------------------------------------------------------------------------- +struct SteamShutdown_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 4 }; +}; + +//----------------------------------------------------------------------------- +// results for CheckFileSignature +//----------------------------------------------------------------------------- +enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +}; + +//----------------------------------------------------------------------------- +// callback for CheckFileSignature +//----------------------------------------------------------------------------- +struct CheckFileSignature_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 5 }; + ECheckFileSignature m_eCheckFileSignature; +}; + + +// k_iSteamUtilsCallbacks + 13 is taken + + +//----------------------------------------------------------------------------- +// Big Picture gamepad text input has been closed +//----------------------------------------------------------------------------- +struct GamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; + bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input + uint32 m_unSubmittedText; +}; + +// k_iSteamUtilsCallbacks + 15 is taken + +#pragma pack( pop ) + +#endif // ISTEAMUTILS_H diff --git a/lib/osx/include/steam/isteamvideo.h b/lib/osx/include/steam/isteamvideo.h new file mode 100644 index 0000000..6893f0b --- /dev/null +++ b/lib/osx/include/steam/isteamvideo.h @@ -0,0 +1,60 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Video +// +//============================================================================= + +#ifndef ISTEAMVIDEO_H +#define ISTEAMVIDEO_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + + + +//----------------------------------------------------------------------------- +// Purpose: Steam Video API +//----------------------------------------------------------------------------- +class ISteamVideo +{ +public: + + // Get a URL suitable for streaming the given Video app ID's video + virtual void GetVideoURL( AppId_t unVideoAppID ) = 0; + + // returns true if user is uploading a live broadcast + virtual bool IsBroadcasting( int *pnNumViewers ) = 0; +}; + +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V001" + +DEFINE_CALLBACK( BroadcastUploadStart_t, k_iClientVideoCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( BroadcastUploadStop_t, k_iClientVideoCallbacks + 5 ) + CALLBACK_MEMBER( 0, EBroadcastUploadResult, m_eResult ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) + CALLBACK_MEMBER( 0, EResult, m_eResult ) + CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) + CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMVIDEO_H diff --git a/lib/osx/include/steam/matchmakingtypes.h b/lib/osx/include/steam/matchmakingtypes.h new file mode 100644 index 0000000..e52cfc6 --- /dev/null +++ b/lib/osx/include/steam/matchmakingtypes.h @@ -0,0 +1,251 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef MATCHMAKINGTYPES_H +#define MATCHMAKINGTYPES_H + +#ifdef _WIN32 +#pragma once +#endif + +#ifdef POSIX +#ifndef _snprintf +#define _snprintf snprintf +#endif +#endif + +#include <stdio.h> +#include <string.h> + +// +// Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. +// WARNING: These cannot be changed easily, without breaking clients using old interfaces. +// +const int k_cbMaxGameServerGameDir = 32; +const int k_cbMaxGameServerMapName = 32; +const int k_cbMaxGameServerGameDescription = 64; +const int k_cbMaxGameServerName = 64; +const int k_cbMaxGameServerTags = 128; +const int k_cbMaxGameServerGameData = 2048; + +/// Store key/value pair used in matchmaking queries. +/// +/// Actually, the name Key/Value is a bit misleading. The "key" is better +/// understood as "filter operation code" and the "value" is the operand to this +/// filter operation. The meaning of the operand depends upon the filter. +struct MatchMakingKeyValuePair_t +{ + MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; } + MatchMakingKeyValuePair_t( const char *pchKey, const char *pchValue ) + { + strncpy( m_szKey, pchKey, sizeof(m_szKey) ); // this is a public header, use basic c library string funcs only! + m_szKey[ sizeof( m_szKey ) - 1 ] = '\0'; + strncpy( m_szValue, pchValue, sizeof(m_szValue) ); + m_szValue[ sizeof( m_szValue ) - 1 ] = '\0'; + } + char m_szKey[ 256 ]; + char m_szValue[ 256 ]; +}; + + +enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match +}; + +// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, +// namely: its IP, its connection port, and its query port. +class servernetadr_t +{ +public: + + servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} + + void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +#ifdef NETADR_H + netadr_t GetIPAndQueryPort(); +#endif + + // Access the query port. + uint16 GetQueryPort() const; + void SetQueryPort( uint16 usPort ); + + // Access the connection port. + uint16 GetConnectionPort() const; + void SetConnectionPort( uint16 usPort ); + + // Access the IP + uint32 GetIP() const; + void SetIP( uint32 ); + + // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). + const char *GetConnectionAddressString() const; + const char *GetQueryAddressString() const; + + // Comparison operators and functions. + bool operator<(const servernetadr_t &netadr) const; + void operator=( const servernetadr_t &that ) + { + m_usConnectionPort = that.m_usConnectionPort; + m_usQueryPort = that.m_usQueryPort; + m_unIP = that.m_unIP; + } + + +private: + const char *ToString( uint32 unIP, uint16 usPort ) const; + uint16 m_usConnectionPort; // (in HOST byte order) + uint16 m_usQueryPort; + uint32 m_unIP; +}; + + +inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ) +{ + m_unIP = ip; + m_usQueryPort = usQueryPort; + m_usConnectionPort = usConnectionPort; +} + +#ifdef NETADR_H +inline netadr_t servernetadr_t::GetIPAndQueryPort() +{ + return netadr_t( m_unIP, m_usQueryPort ); +} +#endif + +inline uint16 servernetadr_t::GetQueryPort() const +{ + return m_usQueryPort; +} + +inline void servernetadr_t::SetQueryPort( uint16 usPort ) +{ + m_usQueryPort = usPort; +} + +inline uint16 servernetadr_t::GetConnectionPort() const +{ + return m_usConnectionPort; +} + +inline void servernetadr_t::SetConnectionPort( uint16 usPort ) +{ + m_usConnectionPort = usPort; +} + +inline uint32 servernetadr_t::GetIP() const +{ + return m_unIP; +} + +inline void servernetadr_t::SetIP( uint32 unIP ) +{ + m_unIP = unIP; +} + +inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const +{ + static char s[4][64]; + static int nBuf = 0; + unsigned char *ipByte = (unsigned char *)&unIP; +#ifdef VALVE_BIG_ENDIAN + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); +#else + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); +#endif + const char *pchRet = s[nBuf]; + ++nBuf; + nBuf %= ( (sizeof(s)/sizeof(s[0])) ); + return pchRet; +} + +inline const char* servernetadr_t::GetConnectionAddressString() const +{ + return ToString( m_unIP, m_usConnectionPort ); +} + +inline const char* servernetadr_t::GetQueryAddressString() const +{ + return ToString( m_unIP, m_usQueryPort ); +} + +inline bool servernetadr_t::operator<(const servernetadr_t &netadr) const +{ + return ( m_unIP < netadr.m_unIP ) || ( m_unIP == netadr.m_unIP && m_usQueryPort < netadr.m_usQueryPort ); +} + +//----------------------------------------------------------------------------- +// Purpose: Data describing a single server +//----------------------------------------------------------------------------- +class gameserveritem_t +{ +public: + gameserveritem_t(); + + const char* GetName() const; + void SetName( const char *pName ); + +public: + servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server + int m_nPing; ///< current ping time in milliseconds + bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past + bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed + char m_szGameDir[k_cbMaxGameServerGameDir]; ///< current game directory + char m_szMap[k_cbMaxGameServerMapName]; ///< current map + char m_szGameDescription[k_cbMaxGameServerGameDescription]; ///< game description + uint32 m_nAppID; ///< Steam App ID of this server + int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! + int m_nMaxPlayers; ///< Maximum players that can join this server + int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server + bool m_bPassword; ///< true if this server needs a password to join + bool m_bSecure; ///< Is this server protected by VAC + uint32 m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) + int m_nServerVersion; ///< server version as reported to Steam + +private: + + /// Game server name + char m_szServerName[k_cbMaxGameServerName]; + + // For data added after SteamMatchMaking001 add it here +public: + /// the tags this server exposes + char m_szGameTags[k_cbMaxGameServerTags]; + + /// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) + CSteamID m_steamID; +}; + + +inline gameserveritem_t::gameserveritem_t() +{ + m_szGameDir[0] = m_szMap[0] = m_szGameDescription[0] = m_szServerName[0] = 0; + m_bHadSuccessfulResponse = m_bDoNotRefresh = m_bPassword = m_bSecure = false; + m_nPing = m_nAppID = m_nPlayers = m_nMaxPlayers = m_nBotPlayers = m_ulTimeLastPlayed = m_nServerVersion = 0; + m_szGameTags[0] = 0; +} + +inline const char* gameserveritem_t::GetName() const +{ + // Use the IP address as the name if nothing is set yet. + if ( m_szServerName[0] == 0 ) + return m_NetAdr.GetConnectionAddressString(); + else + return m_szServerName; +} + +inline void gameserveritem_t::SetName( const char *pName ) +{ + strncpy( m_szServerName, pName, sizeof( m_szServerName ) ); + m_szServerName[ sizeof( m_szServerName ) - 1 ] = '\0'; +} + + +#endif // MATCHMAKINGTYPES_H diff --git a/lib/osx/include/steam/steam_api.h b/lib/osx/include/steam/steam_api.h new file mode 100644 index 0000000..e3a31ae --- /dev/null +++ b/lib/osx/include/steam/steam_api.h @@ -0,0 +1,394 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_API_H +#define STEAM_API_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamuser.h" +#include "isteamfriends.h" +#include "isteamutils.h" +#include "isteammatchmaking.h" +#include "isteamuserstats.h" +#include "isteamapps.h" +#include "isteamnetworking.h" +#include "isteamremotestorage.h" +#include "isteamscreenshots.h" +#include "isteammusic.h" +#include "isteammusicremote.h" +#include "isteamhttp.h" +#include "isteamunifiedmessages.h" +#include "isteamcontroller.h" +#include "isteamugc.h" +#include "isteamapplist.h" +#include "isteamhtmlsurface.h" +#include "isteaminventory.h" +#include "isteamvideo.h" + + +// Steam API export macro +#if defined( _WIN32 ) && !defined( _X360 ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __declspec( dllexport ) + #elif defined( STEAM_API_NODLL ) + #define S_API extern "C" + #else + #define S_API extern "C" __declspec( dllimport ) + #endif // STEAM_API_EXPORTS +#elif defined( GNUC ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __attribute__ ((visibility("default"))) + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#else // !WIN32 + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Steam API setup & shutdown +// +// These functions manage loading, initializing and shutdown of the steamclient.dll +// +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + + +// SteamAPI_Init must be called before using any other API functions. If it fails, an +// error message will be output to the debugger (or stderr) with further information. +S_API bool S_CALLTYPE SteamAPI_Init(); + +// SteamAPI_Shutdown should be called during process shutdown if possible. +S_API void S_CALLTYPE SteamAPI_Shutdown(); + +// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. +// +// Returns true if the current process should terminate. Steam is now re-launching your application. +// +// Returns false if no action needs to be taken. This means that your executable was started through +// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). +// Your current process should continue if false is returned. +// +// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary +// since the DRM wrapper will ensure that your application was launched properly through Steam. +S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); + +// Many Steam API functions allocate a small amount of thread-local memory for parameter storage. +// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. +// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded +// program never needs to explicitly call this function. +S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); + + +// crash dump recording functions +S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); +S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Global accessors for Steamworks C++ APIs. See individual isteam*.h files for details. +// You should not cache the results of these accessors or pass the result pointers across +// modules! Different modules may be compiled against different SDK header versions, and +// the interface pointers could therefore be different across modules. Every line of code +// which calls into a Steamworks API should retrieve the interface from a global accessor. +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#if !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamClient(); +inline ISteamUser *SteamUser(); +inline ISteamFriends *SteamFriends(); +inline ISteamUtils *SteamUtils(); +inline ISteamMatchmaking *SteamMatchmaking(); +inline ISteamUserStats *SteamUserStats(); +inline ISteamApps *SteamApps(); +inline ISteamNetworking *SteamNetworking(); +inline ISteamMatchmakingServers *SteamMatchmakingServers(); +inline ISteamRemoteStorage *SteamRemoteStorage(); +inline ISteamScreenshots *SteamScreenshots(); +inline ISteamHTTP *SteamHTTP(); +inline ISteamUnifiedMessages *SteamUnifiedMessages(); +inline ISteamController *SteamController(); +inline ISteamUGC *SteamUGC(); +inline ISteamAppList *SteamAppList(); +inline ISteamMusic *SteamMusic(); +inline ISteamMusicRemote *SteamMusicRemote(); +inline ISteamHTMLSurface *SteamHTMLSurface(); +inline ISteamInventory *SteamInventory(); +inline ISteamVideo *SteamVideo(); +#endif // VERSION_SAFE_STEAM_API_INTERFACES + + +// CSteamAPIContext encapsulates the Steamworks API global accessors into +// a single object. This is DEPRECATED and only remains for compatibility. +class CSteamAPIContext +{ +public: + // DEPRECATED - there is no benefit to using this over the global accessors + CSteamAPIContext() { Clear(); } + void Clear(); + bool Init(); + ISteamClient* SteamClient() const { return m_pSteamClient; } + ISteamUser* SteamUser() const { return m_pSteamUser; } + ISteamFriends* SteamFriends() const { return m_pSteamFriends; } + ISteamUtils* SteamUtils() const { return m_pSteamUtils; } + ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } + ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } + ISteamApps* SteamApps() const { return m_pSteamApps; } + ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } + ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } + ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } + ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } + ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } + ISteamUnifiedMessages* SteamUnifiedMessages() const { return m_pSteamUnifiedMessages; } + ISteamController* SteamController() const { return m_pController; } + ISteamUGC* SteamUGC() const { return m_pSteamUGC; } + ISteamAppList* SteamAppList() const { return m_pSteamAppList; } + ISteamMusic* SteamMusic() const { return m_pSteamMusic; } + ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } + ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } + ISteamInventory* SteamInventory() const { return m_pSteamInventory; } + ISteamVideo* SteamVideo() const { return m_pSteamVideo; } + // DEPRECATED - there is no benefit to using this over the global accessors +private: + ISteamClient *m_pSteamClient; + ISteamUser *m_pSteamUser; + ISteamFriends *m_pSteamFriends; + ISteamUtils *m_pSteamUtils; + ISteamMatchmaking *m_pSteamMatchmaking; + ISteamUserStats *m_pSteamUserStats; + ISteamApps *m_pSteamApps; + ISteamMatchmakingServers *m_pSteamMatchmakingServers; + ISteamNetworking *m_pSteamNetworking; + ISteamRemoteStorage *m_pSteamRemoteStorage; + ISteamScreenshots *m_pSteamScreenshots; + ISteamHTTP *m_pSteamHTTP; + ISteamUnifiedMessages *m_pSteamUnifiedMessages; + ISteamController *m_pController; + ISteamUGC *m_pSteamUGC; + ISteamAppList *m_pSteamAppList; + ISteamMusic *m_pSteamMusic; + ISteamMusicRemote *m_pSteamMusicRemote; + ISteamHTMLSurface *m_pSteamHTMLSurface; + ISteamInventory *m_pSteamInventory; + ISteamVideo *m_pSteamVideo; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steam callback and call-result helpers +// +// The following macros and classes are used to register your application for +// callbacks and call-results, which are delivered in a predictable manner. +// +// STEAM_CALLBACK macros are meant for use inside of a C++ class definition. +// They map a Steam notification callback directly to a class member function +// which is automatically prototyped as "void func( callback_type *pParam )". +// +// CCallResult is used with specific Steam APIs that return "result handles". +// The handle can be passed to a CCallResult object's Set function, along with +// an object pointer and member-function pointer. The member function will +// be executed once the results of the Steam API call are available. +// +// CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK +// macros if you require finer control over registration and unregistration. +// +// Callbacks and call-results are queued automatically and are only +// delivered/executed when your application calls SteamAPI_RunCallbacks(). +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously, +// but if you choose to do this, callback code could be executed on any thread. +// One alternative is to call SteamAPI_RunCallbacks from the main thread only, +// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. +S_API void S_CALLTYPE SteamAPI_RunCallbacks(); + + +// Declares a callback member function plus a helper member variable which +// registers the callback on object creation and unregisters on destruction. +// The optional fourth 'var' param exists only for backwards-compatibility +// and can be ignored. +#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) ) + +// Declares a callback function and a named CCallbackManual variable which +// has Register and Unregister functions instead of automatic registration. +#define STEAM_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type > var; void func( callback_type *pParam ) + + +// Internal functions used by the utility CCallback objects to receive callbacks +S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); +// Internal functions used by the utility CCallResult objects to receive async call results +S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); + + +//----------------------------------------------------------------------------- +// Purpose: base for callbacks and call results - internal implementation detail +//----------------------------------------------------------------------------- +class CCallbackBase +{ +public: + CCallbackBase() { m_nCallbackFlags = 0; m_iCallback = 0; } + // don't add a virtual destructor because we export this binary interface across dll's + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) = 0; + int GetICallback() { return m_iCallback; } + virtual int GetCallbackSizeBytes() = 0; + +protected: + enum { k_ECallbackFlagsRegistered = 0x01, k_ECallbackFlagsGameServer = 0x02 }; + uint8 m_nCallbackFlags; + int m_iCallback; + friend class CCallbackMgr; + +private: + CCallbackBase( const CCallbackBase& ); + CCallbackBase& operator=( const CCallbackBase& ); +}; + +//----------------------------------------------------------------------------- +// Purpose: templated base for callbacks - internal implementation detail +//----------------------------------------------------------------------------- +template< int sizeof_P > +class CCallbackImpl : protected CCallbackBase +{ +public: + ~CCallbackImpl() { if ( m_nCallbackFlags & k_ECallbackFlagsRegistered ) SteamAPI_UnregisterCallback( this ); } + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } + +protected: + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } + virtual int GetCallbackSizeBytes() { return sizeof_P; } +}; + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +class CCallResult : private CCallbackBase +{ +public: + typedef void (T::*func_t)( P*, bool ); + + CCallResult(); + ~CCallResult(); + + void Set( SteamAPICall_t hAPICall, T *p, func_t func ); + bool IsActive() const; + void Cancel(); + + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } +private: + virtual void Run( void *pvParam ); + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); + virtual int GetCallbackSizeBytes() { return sizeof( P ); } + + SteamAPICall_t m_hAPICall; + T *m_pObj; + func_t m_Func; +}; + + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver = false > +class CCallback : public CCallbackImpl< sizeof( P ) > +{ +public: + typedef void (T::*func_t)(P*); + + // NOTE: If you can't provide the correct parameters at construction time, you should + // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. + CCallback( T *pObj, func_t func ); + + void Register( T *pObj, func_t func ); + void Unregister(); + +protected: + virtual void Run( void *pvParam ); + + T *m_pObj; + func_t m_Func; +}; + + +//----------------------------------------------------------------------------- +// Purpose: subclass of CCallback which allows default-construction in +// an unregistered state; you must call Register manually +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameServer = false > +class CCallbackManual : public CCallback< T, P, bGameServer > +{ +public: + CCallbackManual() : CCallback< T, P, bGameServer >( NULL, NULL ) {} + + // Inherits public Register and Unregister functions from base class +}; + + + +#ifdef _WIN32 +// disable this warning; this pattern need for steam callback registration +#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list +#endif + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_IsSteamRunning() returns true if Steam is currently running +S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); + +// Pumps out all the steam messages, calling registered callbacks. +// NOT THREADSAFE - do not call from multiple threads simultaneously. +S_API void Steam_RunCallbacks( HSteamPipe hSteamPipe, bool bGameServerCallbacks ); + +// register the callback funcs to use to interact with the steam dll +S_API void Steam_RegisterInterfaceFuncs( void *hModule ); + +// returns the HSteamUser of the last user to dispatch a callback +S_API HSteamUser Steam_GetHSteamUserCurrent(); + +// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. +// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs +S_API const char *SteamAPI_GetSteamInstallPath(); + +// returns the pipe we are communicating to Steam with +S_API HSteamPipe SteamAPI_GetHSteamPipe(); + +// sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks +S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); + +// backwards compat export, passes through to SteamAPI_ variants +S_API HSteamPipe GetHSteamPipe(); +S_API HSteamUser GetHSteamUser(); + + +#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) +// exists only for backwards compat with code written against older SDKs +S_API bool S_CALLTYPE SteamAPI_InitSafe(); +#endif + +#include "steam_api_internal.h" + +#endif // STEAM_API_H diff --git a/lib/osx/include/steam/steam_api.json b/lib/osx/include/steam/steam_api.json new file mode 100644 index 0000000..09adb0c --- /dev/null +++ b/lib/osx/include/steam/steam_api.json @@ -0,0 +1,7576 @@ +{"typedefs":[{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "int8","type": "signed char"} +,{"typedef": "int16","type": "short"} +,{"typedef": "uint16","type": "unsigned short"} +,{"typedef": "int32","type": "int"} +,{"typedef": "uint32","type": "unsigned int"} +,{"typedef": "int64","type": "long long"} +,{"typedef": "uint64","type": "unsigned long long"} +,{"typedef": "lint64","type": "int64"} +,{"typedef": "ulint64","type": "uint64"} +,{"typedef": "intp","type": "long long"} +,{"typedef": "uintp","type": "unsigned long long"} +,{"typedef": "Salt_t","type": "uint8 [8]"} +,{"typedef": "GID_t","type": "uint64"} +,{"typedef": "JobID_t","type": "uint64"} +,{"typedef": "TxnID_t","type": "GID_t"} +,{"typedef": "PackageId_t","type": "uint32"} +,{"typedef": "BundleId_t","type": "uint32"} +,{"typedef": "AppId_t","type": "uint32"} +,{"typedef": "AssetClassId_t","type": "uint64"} +,{"typedef": "PhysicalItemId_t","type": "uint32"} +,{"typedef": "DepotId_t","type": "uint32"} +,{"typedef": "RTime32","type": "uint32"} +,{"typedef": "CellID_t","type": "uint32"} +,{"typedef": "SteamAPICall_t","type": "uint64"} +,{"typedef": "AccountID_t","type": "uint32"} +,{"typedef": "PartnerId_t","type": "uint32"} +,{"typedef": "ManifestId_t","type": "uint64"} +,{"typedef": "HAuthTicket","type": "uint32"} +,{"typedef": "PFNLegacyKeyRegistration","type": "void (*)(const char *, const char *)"} +,{"typedef": "PFNLegacyKeyInstalled","type": "_Bool (*)(void)"} +,{"typedef": "PFNPreMinidumpCallback","type": "void (*)(void *)"} +,{"typedef": "BREAKPAD_HANDLE","type": "void *"} +,{"typedef": "ValvePackingSentinel_t","type": "struct ValvePackingSentinel_t"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "HSteamPipe","type": "int32"} +,{"typedef": "HSteamUser","type": "int32"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "SteamAPI_CheckCallbackRegistered_t","type": "uint32 (*)(int)"} +,{"typedef": "FriendsGroupID_t","type": "int16"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "HServerListRequest","type": "void *"} +,{"typedef": "HServerQuery","type": "int"} +,{"typedef": "UGCHandle_t","type": "uint64"} +,{"typedef": "PublishedFileUpdateHandle_t","type": "uint64"} +,{"typedef": "PublishedFileId_t","type": "uint64"} +,{"typedef": "UGCFileWriteStreamHandle_t","type": "uint64"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "SteamLeaderboard_t","type": "uint64"} +,{"typedef": "SteamLeaderboardEntries_t","type": "uint64"} +,{"typedef": "SNetSocket_t","type": "uint32"} +,{"typedef": "SNetListenSocket_t","type": "uint32"} +,{"typedef": "ScreenshotHandle","type": "uint32"} +,{"typedef": "PlaybackStatusHasChanged_t::SteamCallback_t","type": "struct PlaybackStatusHasChanged_t"} +,{"typedef": "VolumeHasChanged_t::SteamCallback_t","type": "struct VolumeHasChanged_t"} +,{"typedef": "MusicPlayerRemoteWillActivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillActivate_t"} +,{"typedef": "MusicPlayerRemoteWillDeactivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillDeactivate_t"} +,{"typedef": "MusicPlayerRemoteToFront_t::SteamCallback_t","type": "struct MusicPlayerRemoteToFront_t"} +,{"typedef": "MusicPlayerWillQuit_t::SteamCallback_t","type": "struct MusicPlayerWillQuit_t"} +,{"typedef": "MusicPlayerWantsPlay_t::SteamCallback_t","type": "struct MusicPlayerWantsPlay_t"} +,{"typedef": "MusicPlayerWantsPause_t::SteamCallback_t","type": "struct MusicPlayerWantsPause_t"} +,{"typedef": "MusicPlayerWantsPlayPrevious_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayPrevious_t"} +,{"typedef": "MusicPlayerWantsPlayNext_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayNext_t"} +,{"typedef": "MusicPlayerWantsShuffled_t::SteamCallback_t","type": "struct MusicPlayerWantsShuffled_t"} +,{"typedef": "MusicPlayerWantsLooped_t::SteamCallback_t","type": "struct MusicPlayerWantsLooped_t"} +,{"typedef": "MusicPlayerWantsVolume_t::SteamCallback_t","type": "struct MusicPlayerWantsVolume_t"} +,{"typedef": "MusicPlayerSelectsQueueEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsQueueEntry_t"} +,{"typedef": "MusicPlayerSelectsPlaylistEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsPlaylistEntry_t"} +,{"typedef": "MusicPlayerWantsPlayingRepeatStatus_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayingRepeatStatus_t"} +,{"typedef": "HTTPRequestHandle","type": "uint32"} +,{"typedef": "HTTPCookieContainerHandle","type": "uint32"} +,{"typedef": "ClientUnifiedMessageHandle","type": "uint64"} +,{"typedef": "ControllerHandle_t","type": "uint64"} +,{"typedef": "ControllerActionSetHandle_t","type": "uint64"} +,{"typedef": "ControllerDigitalActionHandle_t","type": "uint64"} +,{"typedef": "ControllerAnalogActionHandle_t","type": "uint64"} +,{"typedef": "UGCQueryHandle_t","type": "uint64"} +,{"typedef": "UGCUpdateHandle_t","type": "uint64"} +,{"typedef": "SteamAppInstalled_t::SteamCallback_t","type": "struct SteamAppInstalled_t"} +,{"typedef": "SteamAppUninstalled_t::SteamCallback_t","type": "struct SteamAppUninstalled_t"} +,{"typedef": "HHTMLBrowser","type": "uint32"} +,{"typedef": "HTML_BrowserReady_t::SteamCallback_t","type": "struct HTML_BrowserReady_t"} +,{"typedef": "HTML_NeedsPaint_t::SteamCallback_t","type": "struct HTML_NeedsPaint_t"} +,{"typedef": "HTML_StartRequest_t::SteamCallback_t","type": "struct HTML_StartRequest_t"} +,{"typedef": "HTML_CloseBrowser_t::SteamCallback_t","type": "struct HTML_CloseBrowser_t"} +,{"typedef": "HTML_URLChanged_t::SteamCallback_t","type": "struct HTML_URLChanged_t"} +,{"typedef": "HTML_FinishedRequest_t::SteamCallback_t","type": "struct HTML_FinishedRequest_t"} +,{"typedef": "HTML_OpenLinkInNewTab_t::SteamCallback_t","type": "struct HTML_OpenLinkInNewTab_t"} +,{"typedef": "HTML_ChangedTitle_t::SteamCallback_t","type": "struct HTML_ChangedTitle_t"} +,{"typedef": "HTML_SearchResults_t::SteamCallback_t","type": "struct HTML_SearchResults_t"} +,{"typedef": "HTML_CanGoBackAndForward_t::SteamCallback_t","type": "struct HTML_CanGoBackAndForward_t"} +,{"typedef": "HTML_HorizontalScroll_t::SteamCallback_t","type": "struct HTML_HorizontalScroll_t"} +,{"typedef": "HTML_VerticalScroll_t::SteamCallback_t","type": "struct HTML_VerticalScroll_t"} +,{"typedef": "HTML_LinkAtPosition_t::SteamCallback_t","type": "struct HTML_LinkAtPosition_t"} +,{"typedef": "HTML_JSAlert_t::SteamCallback_t","type": "struct HTML_JSAlert_t"} +,{"typedef": "HTML_JSConfirm_t::SteamCallback_t","type": "struct HTML_JSConfirm_t"} +,{"typedef": "HTML_FileOpenDialog_t::SteamCallback_t","type": "struct HTML_FileOpenDialog_t"} +,{"typedef": "HTML_NewWindow_t::SteamCallback_t","type": "struct HTML_NewWindow_t"} +,{"typedef": "HTML_SetCursor_t::SteamCallback_t","type": "struct HTML_SetCursor_t"} +,{"typedef": "HTML_StatusText_t::SteamCallback_t","type": "struct HTML_StatusText_t"} +,{"typedef": "HTML_ShowToolTip_t::SteamCallback_t","type": "struct HTML_ShowToolTip_t"} +,{"typedef": "HTML_UpdateToolTip_t::SteamCallback_t","type": "struct HTML_UpdateToolTip_t"} +,{"typedef": "HTML_HideToolTip_t::SteamCallback_t","type": "struct HTML_HideToolTip_t"} +,{"typedef": "SteamItemInstanceID_t","type": "uint64"} +,{"typedef": "SteamItemDef_t","type": "int32"} +,{"typedef": "SteamInventoryResult_t","type": "int32"} +,{"typedef": "BroadcastUploadStart_t::SteamCallback_t","type": "struct BroadcastUploadStart_t"} +,{"typedef": "BroadcastUploadStop_t::SteamCallback_t","type": "struct BroadcastUploadStop_t"} +,{"typedef": "GetVideoURLResult_t::SteamCallback_t","type": "struct GetVideoURLResult_t"} +,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} +,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} +], +"enums":[ + {"enumname": "EUniverse","values": [ + {"name": "k_EUniverseInvalid","value": "0"} + ,{"name": "k_EUniversePublic","value": "1"} + ,{"name": "k_EUniverseBeta","value": "2"} + ,{"name": "k_EUniverseInternal","value": "3"} + ,{"name": "k_EUniverseDev","value": "4"} + ,{"name": "k_EUniverseMax","value": "5"} +]} +, {"enumname": "EResult","values": [ + {"name": "k_EResultOK","value": "1"} + ,{"name": "k_EResultFail","value": "2"} + ,{"name": "k_EResultNoConnection","value": "3"} + ,{"name": "k_EResultInvalidPassword","value": "5"} + ,{"name": "k_EResultLoggedInElsewhere","value": "6"} + ,{"name": "k_EResultInvalidProtocolVer","value": "7"} + ,{"name": "k_EResultInvalidParam","value": "8"} + ,{"name": "k_EResultFileNotFound","value": "9"} + ,{"name": "k_EResultBusy","value": "10"} + ,{"name": "k_EResultInvalidState","value": "11"} + ,{"name": "k_EResultInvalidName","value": "12"} + ,{"name": "k_EResultInvalidEmail","value": "13"} + ,{"name": "k_EResultDuplicateName","value": "14"} + ,{"name": "k_EResultAccessDenied","value": "15"} + ,{"name": "k_EResultTimeout","value": "16"} + ,{"name": "k_EResultBanned","value": "17"} + ,{"name": "k_EResultAccountNotFound","value": "18"} + ,{"name": "k_EResultInvalidSteamID","value": "19"} + ,{"name": "k_EResultServiceUnavailable","value": "20"} + ,{"name": "k_EResultNotLoggedOn","value": "21"} + ,{"name": "k_EResultPending","value": "22"} + ,{"name": "k_EResultEncryptionFailure","value": "23"} + ,{"name": "k_EResultInsufficientPrivilege","value": "24"} + ,{"name": "k_EResultLimitExceeded","value": "25"} + ,{"name": "k_EResultRevoked","value": "26"} + ,{"name": "k_EResultExpired","value": "27"} + ,{"name": "k_EResultAlreadyRedeemed","value": "28"} + ,{"name": "k_EResultDuplicateRequest","value": "29"} + ,{"name": "k_EResultAlreadyOwned","value": "30"} + ,{"name": "k_EResultIPNotFound","value": "31"} + ,{"name": "k_EResultPersistFailed","value": "32"} + ,{"name": "k_EResultLockingFailed","value": "33"} + ,{"name": "k_EResultLogonSessionReplaced","value": "34"} + ,{"name": "k_EResultConnectFailed","value": "35"} + ,{"name": "k_EResultHandshakeFailed","value": "36"} + ,{"name": "k_EResultIOFailure","value": "37"} + ,{"name": "k_EResultRemoteDisconnect","value": "38"} + ,{"name": "k_EResultShoppingCartNotFound","value": "39"} + ,{"name": "k_EResultBlocked","value": "40"} + ,{"name": "k_EResultIgnored","value": "41"} + ,{"name": "k_EResultNoMatch","value": "42"} + ,{"name": "k_EResultAccountDisabled","value": "43"} + ,{"name": "k_EResultServiceReadOnly","value": "44"} + ,{"name": "k_EResultAccountNotFeatured","value": "45"} + ,{"name": "k_EResultAdministratorOK","value": "46"} + ,{"name": "k_EResultContentVersion","value": "47"} + ,{"name": "k_EResultTryAnotherCM","value": "48"} + ,{"name": "k_EResultPasswordRequiredToKickSession","value": "49"} + ,{"name": "k_EResultAlreadyLoggedInElsewhere","value": "50"} + ,{"name": "k_EResultSuspended","value": "51"} + ,{"name": "k_EResultCancelled","value": "52"} + ,{"name": "k_EResultDataCorruption","value": "53"} + ,{"name": "k_EResultDiskFull","value": "54"} + ,{"name": "k_EResultRemoteCallFailed","value": "55"} + ,{"name": "k_EResultPasswordUnset","value": "56"} + ,{"name": "k_EResultExternalAccountUnlinked","value": "57"} + ,{"name": "k_EResultPSNTicketInvalid","value": "58"} + ,{"name": "k_EResultExternalAccountAlreadyLinked","value": "59"} + ,{"name": "k_EResultRemoteFileConflict","value": "60"} + ,{"name": "k_EResultIllegalPassword","value": "61"} + ,{"name": "k_EResultSameAsPreviousValue","value": "62"} + ,{"name": "k_EResultAccountLogonDenied","value": "63"} + ,{"name": "k_EResultCannotUseOldPassword","value": "64"} + ,{"name": "k_EResultInvalidLoginAuthCode","value": "65"} + ,{"name": "k_EResultAccountLogonDeniedNoMail","value": "66"} + ,{"name": "k_EResultHardwareNotCapableOfIPT","value": "67"} + ,{"name": "k_EResultIPTInitError","value": "68"} + ,{"name": "k_EResultParentalControlRestricted","value": "69"} + ,{"name": "k_EResultFacebookQueryError","value": "70"} + ,{"name": "k_EResultExpiredLoginAuthCode","value": "71"} + ,{"name": "k_EResultIPLoginRestrictionFailed","value": "72"} + ,{"name": "k_EResultAccountLockedDown","value": "73"} + ,{"name": "k_EResultAccountLogonDeniedVerifiedEmailRequired","value": "74"} + ,{"name": "k_EResultNoMatchingURL","value": "75"} + ,{"name": "k_EResultBadResponse","value": "76"} + ,{"name": "k_EResultRequirePasswordReEntry","value": "77"} + ,{"name": "k_EResultValueOutOfRange","value": "78"} + ,{"name": "k_EResultUnexpectedError","value": "79"} + ,{"name": "k_EResultDisabled","value": "80"} + ,{"name": "k_EResultInvalidCEGSubmission","value": "81"} + ,{"name": "k_EResultRestrictedDevice","value": "82"} + ,{"name": "k_EResultRegionLocked","value": "83"} + ,{"name": "k_EResultRateLimitExceeded","value": "84"} + ,{"name": "k_EResultAccountLoginDeniedNeedTwoFactor","value": "85"} + ,{"name": "k_EResultItemDeleted","value": "86"} + ,{"name": "k_EResultAccountLoginDeniedThrottle","value": "87"} + ,{"name": "k_EResultTwoFactorCodeMismatch","value": "88"} + ,{"name": "k_EResultTwoFactorActivationCodeMismatch","value": "89"} + ,{"name": "k_EResultAccountAssociatedToMultiplePartners","value": "90"} + ,{"name": "k_EResultNotModified","value": "91"} + ,{"name": "k_EResultNoMobileDevice","value": "92"} + ,{"name": "k_EResultTimeNotSynced","value": "93"} + ,{"name": "k_EResultSmsCodeFailed","value": "94"} + ,{"name": "k_EResultAccountLimitExceeded","value": "95"} + ,{"name": "k_EResultAccountActivityLimitExceeded","value": "96"} + ,{"name": "k_EResultPhoneActivityLimitExceeded","value": "97"} + ,{"name": "k_EResultRefundToWallet","value": "98"} + ,{"name": "k_EResultEmailSendFailure","value": "99"} + ,{"name": "k_EResultNotSettled","value": "100"} + ,{"name": "k_EResultNeedCaptcha","value": "101"} + ,{"name": "k_EResultGSLTDenied","value": "102"} + ,{"name": "k_EResultGSOwnerDenied","value": "103"} + ,{"name": "k_EResultInvalidItemType","value": "104"} + ,{"name": "k_EResultIPBanned","value": "105"} + ,{"name": "k_EResultGSLTExpired","value": "106"} +]} +, {"enumname": "EVoiceResult","values": [ + {"name": "k_EVoiceResultOK","value": "0"} + ,{"name": "k_EVoiceResultNotInitialized","value": "1"} + ,{"name": "k_EVoiceResultNotRecording","value": "2"} + ,{"name": "k_EVoiceResultNoData","value": "3"} + ,{"name": "k_EVoiceResultBufferTooSmall","value": "4"} + ,{"name": "k_EVoiceResultDataCorrupted","value": "5"} + ,{"name": "k_EVoiceResultRestricted","value": "6"} + ,{"name": "k_EVoiceResultUnsupportedCodec","value": "7"} + ,{"name": "k_EVoiceResultReceiverOutOfDate","value": "8"} + ,{"name": "k_EVoiceResultReceiverDidNotAnswer","value": "9"} +]} +, {"enumname": "EDenyReason","values": [ + {"name": "k_EDenyInvalid","value": "0"} + ,{"name": "k_EDenyInvalidVersion","value": "1"} + ,{"name": "k_EDenyGeneric","value": "2"} + ,{"name": "k_EDenyNotLoggedOn","value": "3"} + ,{"name": "k_EDenyNoLicense","value": "4"} + ,{"name": "k_EDenyCheater","value": "5"} + ,{"name": "k_EDenyLoggedInElseWhere","value": "6"} + ,{"name": "k_EDenyUnknownText","value": "7"} + ,{"name": "k_EDenyIncompatibleAnticheat","value": "8"} + ,{"name": "k_EDenyMemoryCorruption","value": "9"} + ,{"name": "k_EDenyIncompatibleSoftware","value": "10"} + ,{"name": "k_EDenySteamConnectionLost","value": "11"} + ,{"name": "k_EDenySteamConnectionError","value": "12"} + ,{"name": "k_EDenySteamResponseTimedOut","value": "13"} + ,{"name": "k_EDenySteamValidationStalled","value": "14"} + ,{"name": "k_EDenySteamOwnerLeftGuestUser","value": "15"} +]} +, {"enumname": "EBeginAuthSessionResult","values": [ + {"name": "k_EBeginAuthSessionResultOK","value": "0"} + ,{"name": "k_EBeginAuthSessionResultInvalidTicket","value": "1"} + ,{"name": "k_EBeginAuthSessionResultDuplicateRequest","value": "2"} + ,{"name": "k_EBeginAuthSessionResultInvalidVersion","value": "3"} + ,{"name": "k_EBeginAuthSessionResultGameMismatch","value": "4"} + ,{"name": "k_EBeginAuthSessionResultExpiredTicket","value": "5"} +]} +, {"enumname": "EAuthSessionResponse","values": [ + {"name": "k_EAuthSessionResponseOK","value": "0"} + ,{"name": "k_EAuthSessionResponseUserNotConnectedToSteam","value": "1"} + ,{"name": "k_EAuthSessionResponseNoLicenseOrExpired","value": "2"} + ,{"name": "k_EAuthSessionResponseVACBanned","value": "3"} + ,{"name": "k_EAuthSessionResponseLoggedInElseWhere","value": "4"} + ,{"name": "k_EAuthSessionResponseVACCheckTimedOut","value": "5"} + ,{"name": "k_EAuthSessionResponseAuthTicketCanceled","value": "6"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed","value": "7"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalid","value": "8"} + ,{"name": "k_EAuthSessionResponsePublisherIssuedBan","value": "9"} +]} +, {"enumname": "EUserHasLicenseForAppResult","values": [ + {"name": "k_EUserHasLicenseResultHasLicense","value": "0"} + ,{"name": "k_EUserHasLicenseResultDoesNotHaveLicense","value": "1"} + ,{"name": "k_EUserHasLicenseResultNoAuth","value": "2"} +]} +, {"enumname": "EAccountType","values": [ + {"name": "k_EAccountTypeInvalid","value": "0"} + ,{"name": "k_EAccountTypeIndividual","value": "1"} + ,{"name": "k_EAccountTypeMultiseat","value": "2"} + ,{"name": "k_EAccountTypeGameServer","value": "3"} + ,{"name": "k_EAccountTypeAnonGameServer","value": "4"} + ,{"name": "k_EAccountTypePending","value": "5"} + ,{"name": "k_EAccountTypeContentServer","value": "6"} + ,{"name": "k_EAccountTypeClan","value": "7"} + ,{"name": "k_EAccountTypeChat","value": "8"} + ,{"name": "k_EAccountTypeConsoleUser","value": "9"} + ,{"name": "k_EAccountTypeAnonUser","value": "10"} + ,{"name": "k_EAccountTypeMax","value": "11"} +]} +, {"enumname": "EAppReleaseState","values": [ + {"name": "k_EAppReleaseState_Unknown","value": "0"} + ,{"name": "k_EAppReleaseState_Unavailable","value": "1"} + ,{"name": "k_EAppReleaseState_Prerelease","value": "2"} + ,{"name": "k_EAppReleaseState_PreloadOnly","value": "3"} + ,{"name": "k_EAppReleaseState_Released","value": "4"} +]} +, {"enumname": "EAppOwnershipFlags","values": [ + {"name": "k_EAppOwnershipFlags_None","value": "0"} + ,{"name": "k_EAppOwnershipFlags_OwnsLicense","value": "1"} + ,{"name": "k_EAppOwnershipFlags_FreeLicense","value": "2"} + ,{"name": "k_EAppOwnershipFlags_RegionRestricted","value": "4"} + ,{"name": "k_EAppOwnershipFlags_LowViolence","value": "8"} + ,{"name": "k_EAppOwnershipFlags_InvalidPlatform","value": "16"} + ,{"name": "k_EAppOwnershipFlags_SharedLicense","value": "32"} + ,{"name": "k_EAppOwnershipFlags_FreeWeekend","value": "64"} + ,{"name": "k_EAppOwnershipFlags_RetailLicense","value": "128"} + ,{"name": "k_EAppOwnershipFlags_LicenseLocked","value": "256"} + ,{"name": "k_EAppOwnershipFlags_LicensePending","value": "512"} + ,{"name": "k_EAppOwnershipFlags_LicenseExpired","value": "1024"} + ,{"name": "k_EAppOwnershipFlags_LicensePermanent","value": "2048"} + ,{"name": "k_EAppOwnershipFlags_LicenseRecurring","value": "4096"} + ,{"name": "k_EAppOwnershipFlags_LicenseCanceled","value": "8192"} + ,{"name": "k_EAppOwnershipFlags_AutoGrant","value": "16384"} + ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} + ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} + ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} +]} +, {"enumname": "EAppType","values": [ + {"name": "k_EAppType_Invalid","value": "0"} + ,{"name": "k_EAppType_Game","value": "1"} + ,{"name": "k_EAppType_Application","value": "2"} + ,{"name": "k_EAppType_Tool","value": "4"} + ,{"name": "k_EAppType_Demo","value": "8"} + ,{"name": "k_EAppType_Media_DEPRECATED","value": "16"} + ,{"name": "k_EAppType_DLC","value": "32"} + ,{"name": "k_EAppType_Guide","value": "64"} + ,{"name": "k_EAppType_Driver","value": "128"} + ,{"name": "k_EAppType_Config","value": "256"} + ,{"name": "k_EAppType_Hardware","value": "512"} + ,{"name": "k_EAppType_Franchise","value": "1024"} + ,{"name": "k_EAppType_Video","value": "2048"} + ,{"name": "k_EAppType_Plugin","value": "4096"} + ,{"name": "k_EAppType_Music","value": "8192"} + ,{"name": "k_EAppType_Series","value": "16384"} + ,{"name": "k_EAppType_Shortcut","value": "1073741824"} + ,{"name": "k_EAppType_DepotOnly","value": "-2147483648"} +]} +, {"enumname": "ESteamUserStatType","values": [ + {"name": "k_ESteamUserStatTypeINVALID","value": "0"} + ,{"name": "k_ESteamUserStatTypeINT","value": "1"} + ,{"name": "k_ESteamUserStatTypeFLOAT","value": "2"} + ,{"name": "k_ESteamUserStatTypeAVGRATE","value": "3"} + ,{"name": "k_ESteamUserStatTypeACHIEVEMENTS","value": "4"} + ,{"name": "k_ESteamUserStatTypeGROUPACHIEVEMENTS","value": "5"} + ,{"name": "k_ESteamUserStatTypeMAX","value": "6"} +]} +, {"enumname": "EChatEntryType","values": [ + {"name": "k_EChatEntryTypeInvalid","value": "0"} + ,{"name": "k_EChatEntryTypeChatMsg","value": "1"} + ,{"name": "k_EChatEntryTypeTyping","value": "2"} + ,{"name": "k_EChatEntryTypeInviteGame","value": "3"} + ,{"name": "k_EChatEntryTypeEmote","value": "4"} + ,{"name": "k_EChatEntryTypeLeftConversation","value": "6"} + ,{"name": "k_EChatEntryTypeEntered","value": "7"} + ,{"name": "k_EChatEntryTypeWasKicked","value": "8"} + ,{"name": "k_EChatEntryTypeWasBanned","value": "9"} + ,{"name": "k_EChatEntryTypeDisconnected","value": "10"} + ,{"name": "k_EChatEntryTypeHistoricalChat","value": "11"} + ,{"name": "k_EChatEntryTypeLinkBlocked","value": "14"} +]} +, {"enumname": "EChatRoomEnterResponse","values": [ + {"name": "k_EChatRoomEnterResponseSuccess","value": "1"} + ,{"name": "k_EChatRoomEnterResponseDoesntExist","value": "2"} + ,{"name": "k_EChatRoomEnterResponseNotAllowed","value": "3"} + ,{"name": "k_EChatRoomEnterResponseFull","value": "4"} + ,{"name": "k_EChatRoomEnterResponseError","value": "5"} + ,{"name": "k_EChatRoomEnterResponseBanned","value": "6"} + ,{"name": "k_EChatRoomEnterResponseLimited","value": "7"} + ,{"name": "k_EChatRoomEnterResponseClanDisabled","value": "8"} + ,{"name": "k_EChatRoomEnterResponseCommunityBan","value": "9"} + ,{"name": "k_EChatRoomEnterResponseMemberBlockedYou","value": "10"} + ,{"name": "k_EChatRoomEnterResponseYouBlockedMember","value": "11"} +]} +, {"enumname": "EChatSteamIDInstanceFlags","values": [ + {"name": "k_EChatAccountInstanceMask","value": "4095"} + ,{"name": "k_EChatInstanceFlagClan","value": "524288"} + ,{"name": "k_EChatInstanceFlagLobby","value": "262144"} + ,{"name": "k_EChatInstanceFlagMMSLobby","value": "131072"} +]} +, {"enumname": "EMarketingMessageFlags","values": [ + {"name": "k_EMarketingMessageFlagsNone","value": "0"} + ,{"name": "k_EMarketingMessageFlagsHighPriority","value": "1"} + ,{"name": "k_EMarketingMessageFlagsPlatformWindows","value": "2"} + ,{"name": "k_EMarketingMessageFlagsPlatformMac","value": "4"} + ,{"name": "k_EMarketingMessageFlagsPlatformLinux","value": "8"} + ,{"name": "k_EMarketingMessageFlagsPlatformRestrictions","value": "14"} +]} +, {"enumname": "ENotificationPosition","values": [ + {"name": "k_EPositionTopLeft","value": "0"} + ,{"name": "k_EPositionTopRight","value": "1"} + ,{"name": "k_EPositionBottomLeft","value": "2"} + ,{"name": "k_EPositionBottomRight","value": "3"} +]} +, {"enumname": "EBroadcastUploadResult","values": [ + {"name": "k_EBroadcastUploadResultNone","value": "0"} + ,{"name": "k_EBroadcastUploadResultOK","value": "1"} + ,{"name": "k_EBroadcastUploadResultInitFailed","value": "2"} + ,{"name": "k_EBroadcastUploadResultFrameFailed","value": "3"} + ,{"name": "k_EBroadcastUploadResultTimeout","value": "4"} + ,{"name": "k_EBroadcastUploadResultBandwidthExceeded","value": "5"} + ,{"name": "k_EBroadcastUploadResultLowFPS","value": "6"} + ,{"name": "k_EBroadcastUploadResultMissingKeyFrames","value": "7"} + ,{"name": "k_EBroadcastUploadResultNoConnection","value": "8"} + ,{"name": "k_EBroadcastUploadResultRelayFailed","value": "9"} + ,{"name": "k_EBroadcastUploadResultSettingsChanged","value": "10"} + ,{"name": "k_EBroadcastUploadResultMissingAudio","value": "11"} + ,{"name": "k_EBroadcastUploadResultTooFarBehind","value": "12"} + ,{"name": "k_EBroadcastUploadResultTranscodeBehind","value": "13"} +]} +, {"enumname": "ELaunchOptionType","values": [ + {"name": "k_ELaunchOptionType_None","value": "0"} + ,{"name": "k_ELaunchOptionType_Default","value": "1"} + ,{"name": "k_ELaunchOptionType_SafeMode","value": "2"} + ,{"name": "k_ELaunchOptionType_Multiplayer","value": "3"} + ,{"name": "k_ELaunchOptionType_Config","value": "4"} + ,{"name": "k_ELaunchOptionType_OpenVR","value": "5"} + ,{"name": "k_ELaunchOptionType_Server","value": "6"} + ,{"name": "k_ELaunchOptionType_Editor","value": "7"} + ,{"name": "k_ELaunchOptionType_Manual","value": "8"} + ,{"name": "k_ELaunchOptionType_Benchmark","value": "9"} + ,{"name": "k_ELaunchOptionType_Option1","value": "10"} + ,{"name": "k_ELaunchOptionType_Option2","value": "11"} + ,{"name": "k_ELaunchOptionType_Option3","value": "12"} + ,{"name": "k_ELaunchOptionType_OculusVR","value": "13"} + ,{"name": "k_ELaunchOptionType_OpenVROverlay","value": "14"} + ,{"name": "k_ELaunchOptionType_OSVR","value": "15"} + ,{"name": "k_ELaunchOptionType_Dialog","value": "1000"} +]} +, {"enumname": "EVRHMDType","values": [ + {"name": "k_eEVRHMDType_None","value": "-1"} + ,{"name": "k_eEVRHMDType_Unknown","value": "0"} + ,{"name": "k_eEVRHMDType_HTC_Dev","value": "1"} + ,{"name": "k_eEVRHMDType_HTC_VivePre","value": "2"} + ,{"name": "k_eEVRHMDType_HTC_Vive","value": "3"} + ,{"name": "k_eEVRHMDType_HTC_Unknown","value": "20"} + ,{"name": "k_eEVRHMDType_Oculus_DK1","value": "21"} + ,{"name": "k_eEVRHMDType_Oculus_DK2","value": "22"} + ,{"name": "k_eEVRHMDType_Oculus_Rift","value": "23"} + ,{"name": "k_eEVRHMDType_Oculus_Unknown","value": "40"} +]} +, {"enumname": "EControllerType","values": [ + {"name": "k_eControllerType_None","value": "-1"} + ,{"name": "k_eControllerType_Unknown","value": "0"} + ,{"name": "k_eControllerType_UnknownSteamController","value": "1"} + ,{"name": "k_eControllerType_SteamController","value": "2"} + ,{"name": "k_eControllerType_UnknownNonSteamController","value": "30"} + ,{"name": "k_eControllerType_XBox360Controller","value": "31"} + ,{"name": "k_eControllerType_XBoxOneController","value": "32"} + ,{"name": "k_eControllerType_PS3Controller","value": "33"} + ,{"name": "k_eControllerType_PS4Controller","value": "34"} + ,{"name": "k_eControllerType_WiiController","value": "35"} + ,{"name": "k_eControllerType_AppleController","value": "36"} +]} +, {"enumname": "CGameID::EGameIDType","values": [ + {"name": "k_EGameIDTypeApp","value": "0"} + ,{"name": "k_EGameIDTypeGameMod","value": "1"} + ,{"name": "k_EGameIDTypeShortcut","value": "2"} + ,{"name": "k_EGameIDTypeP2P","value": "3"} +]} +, {"enumname": "IPCFailure_t::EFailureType","values": [ + {"name": "k_EFailureFlushedCallbackQueue","value": "0"} + ,{"name": "k_EFailurePipeFail","value": "1"} +]} +, {"enumname": "EFriendRelationship","values": [ + {"name": "k_EFriendRelationshipNone","value": "0"} + ,{"name": "k_EFriendRelationshipBlocked","value": "1"} + ,{"name": "k_EFriendRelationshipRequestRecipient","value": "2"} + ,{"name": "k_EFriendRelationshipFriend","value": "3"} + ,{"name": "k_EFriendRelationshipRequestInitiator","value": "4"} + ,{"name": "k_EFriendRelationshipIgnored","value": "5"} + ,{"name": "k_EFriendRelationshipIgnoredFriend","value": "6"} + ,{"name": "k_EFriendRelationshipSuggested_DEPRECATED","value": "7"} + ,{"name": "k_EFriendRelationshipMax","value": "8"} +]} +, {"enumname": "EPersonaState","values": [ + {"name": "k_EPersonaStateOffline","value": "0"} + ,{"name": "k_EPersonaStateOnline","value": "1"} + ,{"name": "k_EPersonaStateBusy","value": "2"} + ,{"name": "k_EPersonaStateAway","value": "3"} + ,{"name": "k_EPersonaStateSnooze","value": "4"} + ,{"name": "k_EPersonaStateLookingToTrade","value": "5"} + ,{"name": "k_EPersonaStateLookingToPlay","value": "6"} + ,{"name": "k_EPersonaStateMax","value": "7"} +]} +, {"enumname": "EFriendFlags","values": [ + {"name": "k_EFriendFlagNone","value": "0"} + ,{"name": "k_EFriendFlagBlocked","value": "1"} + ,{"name": "k_EFriendFlagFriendshipRequested","value": "2"} + ,{"name": "k_EFriendFlagImmediate","value": "4"} + ,{"name": "k_EFriendFlagClanMember","value": "8"} + ,{"name": "k_EFriendFlagOnGameServer","value": "16"} + ,{"name": "k_EFriendFlagRequestingFriendship","value": "128"} + ,{"name": "k_EFriendFlagRequestingInfo","value": "256"} + ,{"name": "k_EFriendFlagIgnored","value": "512"} + ,{"name": "k_EFriendFlagIgnoredFriend","value": "1024"} + ,{"name": "k_EFriendFlagSuggested","value": "2048"} + ,{"name": "k_EFriendFlagChatMember","value": "4096"} + ,{"name": "k_EFriendFlagAll","value": "65535"} +]} +, {"enumname": "EUserRestriction","values": [ + {"name": "k_nUserRestrictionNone","value": "0"} + ,{"name": "k_nUserRestrictionUnknown","value": "1"} + ,{"name": "k_nUserRestrictionAnyChat","value": "2"} + ,{"name": "k_nUserRestrictionVoiceChat","value": "4"} + ,{"name": "k_nUserRestrictionGroupChat","value": "8"} + ,{"name": "k_nUserRestrictionRating","value": "16"} + ,{"name": "k_nUserRestrictionGameInvites","value": "32"} + ,{"name": "k_nUserRestrictionTrading","value": "64"} +]} +, {"enumname": "EOverlayToStoreFlag","values": [ + {"name": "k_EOverlayToStoreFlag_None","value": "0"} + ,{"name": "k_EOverlayToStoreFlag_AddToCart","value": "1"} + ,{"name": "k_EOverlayToStoreFlag_AddToCartAndShow","value": "2"} +]} +, {"enumname": "EPersonaChange","values": [ + {"name": "k_EPersonaChangeName","value": "1"} + ,{"name": "k_EPersonaChangeStatus","value": "2"} + ,{"name": "k_EPersonaChangeComeOnline","value": "4"} + ,{"name": "k_EPersonaChangeGoneOffline","value": "8"} + ,{"name": "k_EPersonaChangeGamePlayed","value": "16"} + ,{"name": "k_EPersonaChangeGameServer","value": "32"} + ,{"name": "k_EPersonaChangeAvatar","value": "64"} + ,{"name": "k_EPersonaChangeJoinedSource","value": "128"} + ,{"name": "k_EPersonaChangeLeftSource","value": "256"} + ,{"name": "k_EPersonaChangeRelationshipChanged","value": "512"} + ,{"name": "k_EPersonaChangeNameFirstSet","value": "1024"} + ,{"name": "k_EPersonaChangeFacebookInfo","value": "2048"} + ,{"name": "k_EPersonaChangeNickname","value": "4096"} + ,{"name": "k_EPersonaChangeSteamLevel","value": "8192"} +]} +, {"enumname": "ESteamAPICallFailure","values": [ + {"name": "k_ESteamAPICallFailureNone","value": "-1"} + ,{"name": "k_ESteamAPICallFailureSteamGone","value": "0"} + ,{"name": "k_ESteamAPICallFailureNetworkFailure","value": "1"} + ,{"name": "k_ESteamAPICallFailureInvalidHandle","value": "2"} + ,{"name": "k_ESteamAPICallFailureMismatchedCallback","value": "3"} +]} +, {"enumname": "EGamepadTextInputMode","values": [ + {"name": "k_EGamepadTextInputModeNormal","value": "0"} + ,{"name": "k_EGamepadTextInputModePassword","value": "1"} +]} +, {"enumname": "EGamepadTextInputLineMode","values": [ + {"name": "k_EGamepadTextInputLineModeSingleLine","value": "0"} + ,{"name": "k_EGamepadTextInputLineModeMultipleLines","value": "1"} +]} +, {"enumname": "ECheckFileSignature","values": [ + {"name": "k_ECheckFileSignatureInvalidSignature","value": "0"} + ,{"name": "k_ECheckFileSignatureValidSignature","value": "1"} + ,{"name": "k_ECheckFileSignatureFileNotFound","value": "2"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisApp","value": "3"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisFile","value": "4"} +]} +, {"enumname": "EMatchMakingServerResponse","values": [ + {"name": "eServerResponded","value": "0"} + ,{"name": "eServerFailedToRespond","value": "1"} + ,{"name": "eNoServersListedOnMasterServer","value": "2"} +]} +, {"enumname": "ELobbyType","values": [ + {"name": "k_ELobbyTypePrivate","value": "0"} + ,{"name": "k_ELobbyTypeFriendsOnly","value": "1"} + ,{"name": "k_ELobbyTypePublic","value": "2"} + ,{"name": "k_ELobbyTypeInvisible","value": "3"} +]} +, {"enumname": "ELobbyComparison","values": [ + {"name": "k_ELobbyComparisonEqualToOrLessThan","value": "-2"} + ,{"name": "k_ELobbyComparisonLessThan","value": "-1"} + ,{"name": "k_ELobbyComparisonEqual","value": "0"} + ,{"name": "k_ELobbyComparisonGreaterThan","value": "1"} + ,{"name": "k_ELobbyComparisonEqualToOrGreaterThan","value": "2"} + ,{"name": "k_ELobbyComparisonNotEqual","value": "3"} +]} +, {"enumname": "ELobbyDistanceFilter","values": [ + {"name": "k_ELobbyDistanceFilterClose","value": "0"} + ,{"name": "k_ELobbyDistanceFilterDefault","value": "1"} + ,{"name": "k_ELobbyDistanceFilterFar","value": "2"} + ,{"name": "k_ELobbyDistanceFilterWorldwide","value": "3"} +]} +, {"enumname": "EChatMemberStateChange","values": [ + {"name": "k_EChatMemberStateChangeEntered","value": "1"} + ,{"name": "k_EChatMemberStateChangeLeft","value": "2"} + ,{"name": "k_EChatMemberStateChangeDisconnected","value": "4"} + ,{"name": "k_EChatMemberStateChangeKicked","value": "8"} + ,{"name": "k_EChatMemberStateChangeBanned","value": "16"} +]} +, {"enumname": "ERemoteStoragePlatform","values": [ + {"name": "k_ERemoteStoragePlatformNone","value": "0"} + ,{"name": "k_ERemoteStoragePlatformWindows","value": "1"} + ,{"name": "k_ERemoteStoragePlatformOSX","value": "2"} + ,{"name": "k_ERemoteStoragePlatformPS3","value": "4"} + ,{"name": "k_ERemoteStoragePlatformLinux","value": "8"} + ,{"name": "k_ERemoteStoragePlatformReserved2","value": "16"} + ,{"name": "k_ERemoteStoragePlatformAll","value": "-1"} +]} +, {"enumname": "ERemoteStoragePublishedFileVisibility","values": [ + {"name": "k_ERemoteStoragePublishedFileVisibilityPublic","value": "0"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityFriendsOnly","value": "1"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityPrivate","value": "2"} +]} +, {"enumname": "EWorkshopFileType","values": [ + {"name": "k_EWorkshopFileTypeFirst","value": "0"} + ,{"name": "k_EWorkshopFileTypeCommunity","value": "0"} + ,{"name": "k_EWorkshopFileTypeMicrotransaction","value": "1"} + ,{"name": "k_EWorkshopFileTypeCollection","value": "2"} + ,{"name": "k_EWorkshopFileTypeArt","value": "3"} + ,{"name": "k_EWorkshopFileTypeVideo","value": "4"} + ,{"name": "k_EWorkshopFileTypeScreenshot","value": "5"} + ,{"name": "k_EWorkshopFileTypeGame","value": "6"} + ,{"name": "k_EWorkshopFileTypeSoftware","value": "7"} + ,{"name": "k_EWorkshopFileTypeConcept","value": "8"} + ,{"name": "k_EWorkshopFileTypeWebGuide","value": "9"} + ,{"name": "k_EWorkshopFileTypeIntegratedGuide","value": "10"} + ,{"name": "k_EWorkshopFileTypeMerch","value": "11"} + ,{"name": "k_EWorkshopFileTypeControllerBinding","value": "12"} + ,{"name": "k_EWorkshopFileTypeSteamworksAccessInvite","value": "13"} + ,{"name": "k_EWorkshopFileTypeSteamVideo","value": "14"} + ,{"name": "k_EWorkshopFileTypeGameManagedItem","value": "15"} + ,{"name": "k_EWorkshopFileTypeMax","value": "16"} +]} +, {"enumname": "EWorkshopVote","values": [ + {"name": "k_EWorkshopVoteUnvoted","value": "0"} + ,{"name": "k_EWorkshopVoteFor","value": "1"} + ,{"name": "k_EWorkshopVoteAgainst","value": "2"} + ,{"name": "k_EWorkshopVoteLater","value": "3"} +]} +, {"enumname": "EWorkshopFileAction","values": [ + {"name": "k_EWorkshopFileActionPlayed","value": "0"} + ,{"name": "k_EWorkshopFileActionCompleted","value": "1"} +]} +, {"enumname": "EWorkshopEnumerationType","values": [ + {"name": "k_EWorkshopEnumerationTypeRankedByVote","value": "0"} + ,{"name": "k_EWorkshopEnumerationTypeRecent","value": "1"} + ,{"name": "k_EWorkshopEnumerationTypeTrending","value": "2"} + ,{"name": "k_EWorkshopEnumerationTypeFavoritesOfFriends","value": "3"} + ,{"name": "k_EWorkshopEnumerationTypeVotedByFriends","value": "4"} + ,{"name": "k_EWorkshopEnumerationTypeContentByFriends","value": "5"} + ,{"name": "k_EWorkshopEnumerationTypeRecentFromFollowedUsers","value": "6"} +]} +, {"enumname": "EWorkshopVideoProvider","values": [ + {"name": "k_EWorkshopVideoProviderNone","value": "0"} + ,{"name": "k_EWorkshopVideoProviderYoutube","value": "1"} +]} +, {"enumname": "EUGCReadAction","values": [ + {"name": "k_EUGCRead_ContinueReadingUntilFinished","value": "0"} + ,{"name": "k_EUGCRead_ContinueReading","value": "1"} + ,{"name": "k_EUGCRead_Close","value": "2"} +]} +, {"enumname": "ELeaderboardDataRequest","values": [ + {"name": "k_ELeaderboardDataRequestGlobal","value": "0"} + ,{"name": "k_ELeaderboardDataRequestGlobalAroundUser","value": "1"} + ,{"name": "k_ELeaderboardDataRequestFriends","value": "2"} + ,{"name": "k_ELeaderboardDataRequestUsers","value": "3"} +]} +, {"enumname": "ELeaderboardSortMethod","values": [ + {"name": "k_ELeaderboardSortMethodNone","value": "0"} + ,{"name": "k_ELeaderboardSortMethodAscending","value": "1"} + ,{"name": "k_ELeaderboardSortMethodDescending","value": "2"} +]} +, {"enumname": "ELeaderboardDisplayType","values": [ + {"name": "k_ELeaderboardDisplayTypeNone","value": "0"} + ,{"name": "k_ELeaderboardDisplayTypeNumeric","value": "1"} + ,{"name": "k_ELeaderboardDisplayTypeTimeSeconds","value": "2"} + ,{"name": "k_ELeaderboardDisplayTypeTimeMilliSeconds","value": "3"} +]} +, {"enumname": "ELeaderboardUploadScoreMethod","values": [ + {"name": "k_ELeaderboardUploadScoreMethodNone","value": "0"} + ,{"name": "k_ELeaderboardUploadScoreMethodKeepBest","value": "1"} + ,{"name": "k_ELeaderboardUploadScoreMethodForceUpdate","value": "2"} +]} +, {"enumname": "ERegisterActivationCodeResult","values": [ + {"name": "k_ERegisterActivationCodeResultOK","value": "0"} + ,{"name": "k_ERegisterActivationCodeResultFail","value": "1"} + ,{"name": "k_ERegisterActivationCodeResultAlreadyRegistered","value": "2"} + ,{"name": "k_ERegisterActivationCodeResultTimeout","value": "3"} + ,{"name": "k_ERegisterActivationCodeAlreadyOwned","value": "4"} +]} +, {"enumname": "EP2PSessionError","values": [ + {"name": "k_EP2PSessionErrorNone","value": "0"} + ,{"name": "k_EP2PSessionErrorNotRunningApp","value": "1"} + ,{"name": "k_EP2PSessionErrorNoRightsToApp","value": "2"} + ,{"name": "k_EP2PSessionErrorDestinationNotLoggedIn","value": "3"} + ,{"name": "k_EP2PSessionErrorTimeout","value": "4"} + ,{"name": "k_EP2PSessionErrorMax","value": "5"} +]} +, {"enumname": "EP2PSend","values": [ + {"name": "k_EP2PSendUnreliable","value": "0"} + ,{"name": "k_EP2PSendUnreliableNoDelay","value": "1"} + ,{"name": "k_EP2PSendReliable","value": "2"} + ,{"name": "k_EP2PSendReliableWithBuffering","value": "3"} +]} +, {"enumname": "ESNetSocketState","values": [ + {"name": "k_ESNetSocketStateInvalid","value": "0"} + ,{"name": "k_ESNetSocketStateConnected","value": "1"} + ,{"name": "k_ESNetSocketStateInitiated","value": "10"} + ,{"name": "k_ESNetSocketStateLocalCandidatesFound","value": "11"} + ,{"name": "k_ESNetSocketStateReceivedRemoteCandidates","value": "12"} + ,{"name": "k_ESNetSocketStateChallengeHandshake","value": "15"} + ,{"name": "k_ESNetSocketStateDisconnecting","value": "21"} + ,{"name": "k_ESNetSocketStateLocalDisconnect","value": "22"} + ,{"name": "k_ESNetSocketStateTimeoutDuringConnect","value": "23"} + ,{"name": "k_ESNetSocketStateRemoteEndDisconnected","value": "24"} + ,{"name": "k_ESNetSocketStateConnectionBroken","value": "25"} +]} +, {"enumname": "ESNetSocketConnectionType","values": [ + {"name": "k_ESNetSocketConnectionTypeNotConnected","value": "0"} + ,{"name": "k_ESNetSocketConnectionTypeUDP","value": "1"} + ,{"name": "k_ESNetSocketConnectionTypeUDPRelay","value": "2"} +]} +, {"enumname": "EVRScreenshotType","values": [ + {"name": "k_EVRScreenshotType_None","value": "0"} + ,{"name": "k_EVRScreenshotType_Mono","value": "1"} + ,{"name": "k_EVRScreenshotType_Stereo","value": "2"} + ,{"name": "k_EVRScreenshotType_MonoCubemap","value": "3"} + ,{"name": "k_EVRScreenshotType_MonoPanorama","value": "4"} + ,{"name": "k_EVRScreenshotType_StereoPanorama","value": "5"} +]} +, {"enumname": "AudioPlayback_Status","values": [ + {"name": "AudioPlayback_Undefined","value": "0"} + ,{"name": "AudioPlayback_Playing","value": "1"} + ,{"name": "AudioPlayback_Paused","value": "2"} + ,{"name": "AudioPlayback_Idle","value": "3"} +]} +, {"enumname": "EHTTPMethod","values": [ + {"name": "k_EHTTPMethodInvalid","value": "0"} + ,{"name": "k_EHTTPMethodGET","value": "1"} + ,{"name": "k_EHTTPMethodHEAD","value": "2"} + ,{"name": "k_EHTTPMethodPOST","value": "3"} + ,{"name": "k_EHTTPMethodPUT","value": "4"} + ,{"name": "k_EHTTPMethodDELETE","value": "5"} + ,{"name": "k_EHTTPMethodOPTIONS","value": "6"} + ,{"name": "k_EHTTPMethodPATCH","value": "7"} +]} +, {"enumname": "EHTTPStatusCode","values": [ + {"name": "k_EHTTPStatusCodeInvalid","value": "0"} + ,{"name": "k_EHTTPStatusCode100Continue","value": "100"} + ,{"name": "k_EHTTPStatusCode101SwitchingProtocols","value": "101"} + ,{"name": "k_EHTTPStatusCode200OK","value": "200"} + ,{"name": "k_EHTTPStatusCode201Created","value": "201"} + ,{"name": "k_EHTTPStatusCode202Accepted","value": "202"} + ,{"name": "k_EHTTPStatusCode203NonAuthoritative","value": "203"} + ,{"name": "k_EHTTPStatusCode204NoContent","value": "204"} + ,{"name": "k_EHTTPStatusCode205ResetContent","value": "205"} + ,{"name": "k_EHTTPStatusCode206PartialContent","value": "206"} + ,{"name": "k_EHTTPStatusCode300MultipleChoices","value": "300"} + ,{"name": "k_EHTTPStatusCode301MovedPermanently","value": "301"} + ,{"name": "k_EHTTPStatusCode302Found","value": "302"} + ,{"name": "k_EHTTPStatusCode303SeeOther","value": "303"} + ,{"name": "k_EHTTPStatusCode304NotModified","value": "304"} + ,{"name": "k_EHTTPStatusCode305UseProxy","value": "305"} + ,{"name": "k_EHTTPStatusCode307TemporaryRedirect","value": "307"} + ,{"name": "k_EHTTPStatusCode400BadRequest","value": "400"} + ,{"name": "k_EHTTPStatusCode401Unauthorized","value": "401"} + ,{"name": "k_EHTTPStatusCode402PaymentRequired","value": "402"} + ,{"name": "k_EHTTPStatusCode403Forbidden","value": "403"} + ,{"name": "k_EHTTPStatusCode404NotFound","value": "404"} + ,{"name": "k_EHTTPStatusCode405MethodNotAllowed","value": "405"} + ,{"name": "k_EHTTPStatusCode406NotAcceptable","value": "406"} + ,{"name": "k_EHTTPStatusCode407ProxyAuthRequired","value": "407"} + ,{"name": "k_EHTTPStatusCode408RequestTimeout","value": "408"} + ,{"name": "k_EHTTPStatusCode409Conflict","value": "409"} + ,{"name": "k_EHTTPStatusCode410Gone","value": "410"} + ,{"name": "k_EHTTPStatusCode411LengthRequired","value": "411"} + ,{"name": "k_EHTTPStatusCode412PreconditionFailed","value": "412"} + ,{"name": "k_EHTTPStatusCode413RequestEntityTooLarge","value": "413"} + ,{"name": "k_EHTTPStatusCode414RequestURITooLong","value": "414"} + ,{"name": "k_EHTTPStatusCode415UnsupportedMediaType","value": "415"} + ,{"name": "k_EHTTPStatusCode416RequestedRangeNotSatisfiable","value": "416"} + ,{"name": "k_EHTTPStatusCode417ExpectationFailed","value": "417"} + ,{"name": "k_EHTTPStatusCode4xxUnknown","value": "418"} + ,{"name": "k_EHTTPStatusCode429TooManyRequests","value": "429"} + ,{"name": "k_EHTTPStatusCode500InternalServerError","value": "500"} + ,{"name": "k_EHTTPStatusCode501NotImplemented","value": "501"} + ,{"name": "k_EHTTPStatusCode502BadGateway","value": "502"} + ,{"name": "k_EHTTPStatusCode503ServiceUnavailable","value": "503"} + ,{"name": "k_EHTTPStatusCode504GatewayTimeout","value": "504"} + ,{"name": "k_EHTTPStatusCode505HTTPVersionNotSupported","value": "505"} + ,{"name": "k_EHTTPStatusCode5xxUnknown","value": "599"} +]} +, {"enumname": "ESteamControllerPad","values": [ + {"name": "k_ESteamControllerPad_Left","value": "0"} + ,{"name": "k_ESteamControllerPad_Right","value": "1"} +]} +, {"enumname": "EControllerSource","values": [ + {"name": "k_EControllerSource_None","value": "0"} + ,{"name": "k_EControllerSource_LeftTrackpad","value": "1"} + ,{"name": "k_EControllerSource_RightTrackpad","value": "2"} + ,{"name": "k_EControllerSource_Joystick","value": "3"} + ,{"name": "k_EControllerSource_ABXY","value": "4"} + ,{"name": "k_EControllerSource_Switch","value": "5"} + ,{"name": "k_EControllerSource_LeftTrigger","value": "6"} + ,{"name": "k_EControllerSource_RightTrigger","value": "7"} + ,{"name": "k_EControllerSource_Gyro","value": "8"} + ,{"name": "k_EControllerSource_Count","value": "9"} +]} +, {"enumname": "EControllerSourceMode","values": [ + {"name": "k_EControllerSourceMode_None","value": "0"} + ,{"name": "k_EControllerSourceMode_Dpad","value": "1"} + ,{"name": "k_EControllerSourceMode_Buttons","value": "2"} + ,{"name": "k_EControllerSourceMode_FourButtons","value": "3"} + ,{"name": "k_EControllerSourceMode_AbsoluteMouse","value": "4"} + ,{"name": "k_EControllerSourceMode_RelativeMouse","value": "5"} + ,{"name": "k_EControllerSourceMode_JoystickMove","value": "6"} + ,{"name": "k_EControllerSourceMode_JoystickCamera","value": "7"} + ,{"name": "k_EControllerSourceMode_ScrollWheel","value": "8"} + ,{"name": "k_EControllerSourceMode_Trigger","value": "9"} + ,{"name": "k_EControllerSourceMode_TouchMenu","value": "10"} + ,{"name": "k_EControllerSourceMode_MouseJoystick","value": "11"} + ,{"name": "k_EControllerSourceMode_MouseRegion","value": "12"} + ,{"name": "k_EControllerSourceMode_RadialMenu","value": "13"} + ,{"name": "k_EControllerSourceMode_Switches","value": "14"} +]} +, {"enumname": "EControllerActionOrigin","values": [ + {"name": "k_EControllerActionOrigin_None","value": "0"} + ,{"name": "k_EControllerActionOrigin_A","value": "1"} + ,{"name": "k_EControllerActionOrigin_B","value": "2"} + ,{"name": "k_EControllerActionOrigin_X","value": "3"} + ,{"name": "k_EControllerActionOrigin_Y","value": "4"} + ,{"name": "k_EControllerActionOrigin_LeftBumper","value": "5"} + ,{"name": "k_EControllerActionOrigin_RightBumper","value": "6"} + ,{"name": "k_EControllerActionOrigin_LeftGrip","value": "7"} + ,{"name": "k_EControllerActionOrigin_RightGrip","value": "8"} + ,{"name": "k_EControllerActionOrigin_Start","value": "9"} + ,{"name": "k_EControllerActionOrigin_Back","value": "10"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Touch","value": "11"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Swipe","value": "12"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Click","value": "13"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadNorth","value": "14"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadSouth","value": "15"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadWest","value": "16"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadEast","value": "17"} + ,{"name": "k_EControllerActionOrigin_RightPad_Touch","value": "18"} + ,{"name": "k_EControllerActionOrigin_RightPad_Swipe","value": "19"} + ,{"name": "k_EControllerActionOrigin_RightPad_Click","value": "20"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadNorth","value": "21"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadSouth","value": "22"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadWest","value": "23"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadEast","value": "24"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Pull","value": "25"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Click","value": "26"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Pull","value": "27"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Click","value": "28"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Move","value": "29"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Click","value": "30"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadNorth","value": "31"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadSouth","value": "32"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadWest","value": "33"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadEast","value": "34"} + ,{"name": "k_EControllerActionOrigin_Gyro_Move","value": "35"} + ,{"name": "k_EControllerActionOrigin_Gyro_Pitch","value": "36"} + ,{"name": "k_EControllerActionOrigin_Gyro_Yaw","value": "37"} + ,{"name": "k_EControllerActionOrigin_Gyro_Roll","value": "38"} + ,{"name": "k_EControllerActionOrigin_Count","value": "39"} +]} +, {"enumname": "EControllerActivationType","values": [ + {"name": "k_EControllerActivationType_None","value": "0"} + ,{"name": "k_EControllerActivationType_FullPress","value": "1"} + ,{"name": "k_EControllerActivationType_SoftPress","value": "2"} + ,{"name": "k_EControllerActivationType_StartPress","value": "3"} + ,{"name": "k_EControllerActivationType_Release","value": "4"} + ,{"name": "k_EControllerActivationType_LongPress","value": "5"} + ,{"name": "k_EControllerActivationType_DoublePress","value": "6"} + ,{"name": "k_EControllerActivationType_Analog","value": "7"} +]} +, {"enumname": "EControllerPressureButton","values": [ + {"name": "k_EControllerPressureButton_LeftTrackPad","value": "0"} + ,{"name": "k_EControllerPressureButton_RightTrackPad","value": "1"} + ,{"name": "k_EControllerPressureButton_LeftBumper","value": "2"} + ,{"name": "k_EControllerPressureButton_RightBumper","value": "3"} + ,{"name": "k_EControllerPressureButton_LeftGripLower","value": "4"} + ,{"name": "k_EControllerPressureButton_RightGripLower","value": "5"} + ,{"name": "k_EControllerPressureButton_LeftGripUpper","value": "6"} + ,{"name": "k_EControllerPressureButton_RightGripUpper","value": "7"} + ,{"name": "k_EControllerPressureButton_Invalid","value": "8"} +]} +, {"enumname": "EControllerActivatorOutputAxis","values": [ + {"name": "k_EOutputAxisLeftTrigger","value": "0"} + ,{"name": "k_EOutputAxisRightTrigger","value": "1"} + ,{"name": "k_EOutputAxisLeftThumbXPos","value": "2"} + ,{"name": "k_EOutputAxisLeftThumbXNeg","value": "3"} + ,{"name": "k_EOutputAxisLeftThumbYPos","value": "4"} + ,{"name": "k_EOutputAxisLeftThumbYNeg","value": "5"} + ,{"name": "k_EOutputAxisRightThumbXPos","value": "6"} + ,{"name": "k_EOutputAxisRightThumbXNeg","value": "7"} + ,{"name": "k_EOutputAxisRightThumbYPos","value": "8"} + ,{"name": "k_EOutputAxisRightThumbYNeg","value": "9"} +]} +, {"enumname": "EControllerConfigFeature","values": [ + {"name": "k_EControllerConfigFeature_None","value": "0"} + ,{"name": "k_EControllerConfigFeature_Gamepad","value": "1"} + ,{"name": "k_EControllerConfigFeature_Keyboard","value": "2"} + ,{"name": "k_EControllerConfigFeature_Mouse","value": "3"} + ,{"name": "k_EControllerConfigFeature_Gyro","value": "4"} + ,{"name": "k_EControllerConfigFeature_TouchMenu","value": "5"} + ,{"name": "k_EControllerConfigFeature_ModeShift","value": "6"} + ,{"name": "k_EControllerConfigFeature_ActionSet","value": "7"} + ,{"name": "k_EControllerConfigFeature_Activator","value": "8"} +]} +, {"enumname": "EControllerPopupMenuActivationType","values": [ + {"name": "k_EMenuButtonPress","value": "0"} + ,{"name": "k_EMenuButtonRelease","value": "1"} + ,{"name": "k_EMenuTouchRelease","value": "2"} + ,{"name": "k_EMenuTouchAlways","value": "3"} +]} +, {"enumname": "EUGCMatchingUGCType","values": [ + {"name": "k_EUGCMatchingUGCType_Items","value": "0"} + ,{"name": "k_EUGCMatchingUGCType_Items_Mtx","value": "1"} + ,{"name": "k_EUGCMatchingUGCType_Items_ReadyToUse","value": "2"} + ,{"name": "k_EUGCMatchingUGCType_Collections","value": "3"} + ,{"name": "k_EUGCMatchingUGCType_Artwork","value": "4"} + ,{"name": "k_EUGCMatchingUGCType_Videos","value": "5"} + ,{"name": "k_EUGCMatchingUGCType_Screenshots","value": "6"} + ,{"name": "k_EUGCMatchingUGCType_AllGuides","value": "7"} + ,{"name": "k_EUGCMatchingUGCType_WebGuides","value": "8"} + ,{"name": "k_EUGCMatchingUGCType_IntegratedGuides","value": "9"} + ,{"name": "k_EUGCMatchingUGCType_UsableInGame","value": "10"} + ,{"name": "k_EUGCMatchingUGCType_ControllerBindings","value": "11"} + ,{"name": "k_EUGCMatchingUGCType_GameManagedItems","value": "12"} + ,{"name": "k_EUGCMatchingUGCType_All","value": "-1"} +]} +, {"enumname": "EUserUGCList","values": [ + {"name": "k_EUserUGCList_Published","value": "0"} + ,{"name": "k_EUserUGCList_VotedOn","value": "1"} + ,{"name": "k_EUserUGCList_VotedUp","value": "2"} + ,{"name": "k_EUserUGCList_VotedDown","value": "3"} + ,{"name": "k_EUserUGCList_WillVoteLater","value": "4"} + ,{"name": "k_EUserUGCList_Favorited","value": "5"} + ,{"name": "k_EUserUGCList_Subscribed","value": "6"} + ,{"name": "k_EUserUGCList_UsedOrPlayed","value": "7"} + ,{"name": "k_EUserUGCList_Followed","value": "8"} +]} +, {"enumname": "EUserUGCListSortOrder","values": [ + {"name": "k_EUserUGCListSortOrder_CreationOrderDesc","value": "0"} + ,{"name": "k_EUserUGCListSortOrder_CreationOrderAsc","value": "1"} + ,{"name": "k_EUserUGCListSortOrder_TitleAsc","value": "2"} + ,{"name": "k_EUserUGCListSortOrder_LastUpdatedDesc","value": "3"} + ,{"name": "k_EUserUGCListSortOrder_SubscriptionDateDesc","value": "4"} + ,{"name": "k_EUserUGCListSortOrder_VoteScoreDesc","value": "5"} + ,{"name": "k_EUserUGCListSortOrder_ForModeration","value": "6"} +]} +, {"enumname": "EUGCQuery","values": [ + {"name": "k_EUGCQuery_RankedByVote","value": "0"} + ,{"name": "k_EUGCQuery_RankedByPublicationDate","value": "1"} + ,{"name": "k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate","value": "2"} + ,{"name": "k_EUGCQuery_RankedByTrend","value": "3"} + ,{"name": "k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate","value": "4"} + ,{"name": "k_EUGCQuery_CreatedByFriendsRankedByPublicationDate","value": "5"} + ,{"name": "k_EUGCQuery_RankedByNumTimesReported","value": "6"} + ,{"name": "k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate","value": "7"} + ,{"name": "k_EUGCQuery_NotYetRated","value": "8"} + ,{"name": "k_EUGCQuery_RankedByTotalVotesAsc","value": "9"} + ,{"name": "k_EUGCQuery_RankedByVotesUp","value": "10"} + ,{"name": "k_EUGCQuery_RankedByTextSearch","value": "11"} + ,{"name": "k_EUGCQuery_RankedByTotalUniqueSubscriptions","value": "12"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeTrend","value": "13"} + ,{"name": "k_EUGCQuery_RankedByTotalPlaytime","value": "14"} + ,{"name": "k_EUGCQuery_RankedByAveragePlaytimeTrend","value": "15"} + ,{"name": "k_EUGCQuery_RankedByLifetimeAveragePlaytime","value": "16"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeSessionsTrend","value": "17"} + ,{"name": "k_EUGCQuery_RankedByLifetimePlaytimeSessions","value": "18"} +]} +, {"enumname": "EItemUpdateStatus","values": [ + {"name": "k_EItemUpdateStatusInvalid","value": "0"} + ,{"name": "k_EItemUpdateStatusPreparingConfig","value": "1"} + ,{"name": "k_EItemUpdateStatusPreparingContent","value": "2"} + ,{"name": "k_EItemUpdateStatusUploadingContent","value": "3"} + ,{"name": "k_EItemUpdateStatusUploadingPreviewFile","value": "4"} + ,{"name": "k_EItemUpdateStatusCommittingChanges","value": "5"} +]} +, {"enumname": "EItemState","values": [ + {"name": "k_EItemStateNone","value": "0"} + ,{"name": "k_EItemStateSubscribed","value": "1"} + ,{"name": "k_EItemStateLegacyItem","value": "2"} + ,{"name": "k_EItemStateInstalled","value": "4"} + ,{"name": "k_EItemStateNeedsUpdate","value": "8"} + ,{"name": "k_EItemStateDownloading","value": "16"} + ,{"name": "k_EItemStateDownloadPending","value": "32"} +]} +, {"enumname": "EItemStatistic","values": [ + {"name": "k_EItemStatistic_NumSubscriptions","value": "0"} + ,{"name": "k_EItemStatistic_NumFavorites","value": "1"} + ,{"name": "k_EItemStatistic_NumFollowers","value": "2"} + ,{"name": "k_EItemStatistic_NumUniqueSubscriptions","value": "3"} + ,{"name": "k_EItemStatistic_NumUniqueFavorites","value": "4"} + ,{"name": "k_EItemStatistic_NumUniqueFollowers","value": "5"} + ,{"name": "k_EItemStatistic_NumUniqueWebsiteViews","value": "6"} + ,{"name": "k_EItemStatistic_ReportScore","value": "7"} + ,{"name": "k_EItemStatistic_NumSecondsPlayed","value": "8"} + ,{"name": "k_EItemStatistic_NumPlaytimeSessions","value": "9"} + ,{"name": "k_EItemStatistic_NumComments","value": "10"} +]} +, {"enumname": "EItemPreviewType","values": [ + {"name": "k_EItemPreviewType_Image","value": "0"} + ,{"name": "k_EItemPreviewType_YouTubeVideo","value": "1"} + ,{"name": "k_EItemPreviewType_Sketchfab","value": "2"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_HorizontalCross","value": "3"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_LatLong","value": "4"} + ,{"name": "k_EItemPreviewType_ReservedMax","value": "255"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLMouseButton","values": [ + {"name": "eHTMLMouseButton_Left","value": "0"} + ,{"name": "eHTMLMouseButton_Right","value": "1"} + ,{"name": "eHTMLMouseButton_Middle","value": "2"} +]} +, {"enumname": "ISteamHTMLSurface::EMouseCursor","values": [ + {"name": "dc_user","value": "0"} + ,{"name": "dc_none","value": "1"} + ,{"name": "dc_arrow","value": "2"} + ,{"name": "dc_ibeam","value": "3"} + ,{"name": "dc_hourglass","value": "4"} + ,{"name": "dc_waitarrow","value": "5"} + ,{"name": "dc_crosshair","value": "6"} + ,{"name": "dc_up","value": "7"} + ,{"name": "dc_sizenw","value": "8"} + ,{"name": "dc_sizese","value": "9"} + ,{"name": "dc_sizene","value": "10"} + ,{"name": "dc_sizesw","value": "11"} + ,{"name": "dc_sizew","value": "12"} + ,{"name": "dc_sizee","value": "13"} + ,{"name": "dc_sizen","value": "14"} + ,{"name": "dc_sizes","value": "15"} + ,{"name": "dc_sizewe","value": "16"} + ,{"name": "dc_sizens","value": "17"} + ,{"name": "dc_sizeall","value": "18"} + ,{"name": "dc_no","value": "19"} + ,{"name": "dc_hand","value": "20"} + ,{"name": "dc_blank","value": "21"} + ,{"name": "dc_middle_pan","value": "22"} + ,{"name": "dc_north_pan","value": "23"} + ,{"name": "dc_north_east_pan","value": "24"} + ,{"name": "dc_east_pan","value": "25"} + ,{"name": "dc_south_east_pan","value": "26"} + ,{"name": "dc_south_pan","value": "27"} + ,{"name": "dc_south_west_pan","value": "28"} + ,{"name": "dc_west_pan","value": "29"} + ,{"name": "dc_north_west_pan","value": "30"} + ,{"name": "dc_alias","value": "31"} + ,{"name": "dc_cell","value": "32"} + ,{"name": "dc_colresize","value": "33"} + ,{"name": "dc_copycur","value": "34"} + ,{"name": "dc_verticaltext","value": "35"} + ,{"name": "dc_rowresize","value": "36"} + ,{"name": "dc_zoomin","value": "37"} + ,{"name": "dc_zoomout","value": "38"} + ,{"name": "dc_help","value": "39"} + ,{"name": "dc_custom","value": "40"} + ,{"name": "dc_last","value": "41"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLKeyModifiers","values": [ + {"name": "k_eHTMLKeyModifier_None","value": "0"} + ,{"name": "k_eHTMLKeyModifier_AltDown","value": "1"} + ,{"name": "k_eHTMLKeyModifier_CtrlDown","value": "2"} + ,{"name": "k_eHTMLKeyModifier_ShiftDown","value": "4"} +]} +, {"enumname": "ESteamItemFlags","values": [ + {"name": "k_ESteamItemNoTrade","value": "1"} + ,{"name": "k_ESteamItemRemoved","value": "256"} + ,{"name": "k_ESteamItemConsumed","value": "512"} +]} +], +"consts":[{ + "constname": "k_iSteamUserCallbacks","consttype": "int", "constval": "100"} +,{ + "constname": "k_iSteamGameServerCallbacks","consttype": "int", "constval": "200"} +,{ + "constname": "k_iSteamFriendsCallbacks","consttype": "int", "constval": "300"} +,{ + "constname": "k_iSteamBillingCallbacks","consttype": "int", "constval": "400"} +,{ + "constname": "k_iSteamMatchmakingCallbacks","consttype": "int", "constval": "500"} +,{ + "constname": "k_iSteamContentServerCallbacks","consttype": "int", "constval": "600"} +,{ + "constname": "k_iSteamUtilsCallbacks","consttype": "int", "constval": "700"} +,{ + "constname": "k_iClientFriendsCallbacks","consttype": "int", "constval": "800"} +,{ + "constname": "k_iClientUserCallbacks","consttype": "int", "constval": "900"} +,{ + "constname": "k_iSteamAppsCallbacks","consttype": "int", "constval": "1000"} +,{ + "constname": "k_iSteamUserStatsCallbacks","consttype": "int", "constval": "1100"} +,{ + "constname": "k_iSteamNetworkingCallbacks","consttype": "int", "constval": "1200"} +,{ + "constname": "k_iClientRemoteStorageCallbacks","consttype": "int", "constval": "1300"} +,{ + "constname": "k_iClientDepotBuilderCallbacks","consttype": "int", "constval": "1400"} +,{ + "constname": "k_iSteamGameServerItemsCallbacks","consttype": "int", "constval": "1500"} +,{ + "constname": "k_iClientUtilsCallbacks","consttype": "int", "constval": "1600"} +,{ + "constname": "k_iSteamGameCoordinatorCallbacks","consttype": "int", "constval": "1700"} +,{ + "constname": "k_iSteamGameServerStatsCallbacks","consttype": "int", "constval": "1800"} +,{ + "constname": "k_iSteam2AsyncCallbacks","consttype": "int", "constval": "1900"} +,{ + "constname": "k_iSteamGameStatsCallbacks","consttype": "int", "constval": "2000"} +,{ + "constname": "k_iClientHTTPCallbacks","consttype": "int", "constval": "2100"} +,{ + "constname": "k_iClientScreenshotsCallbacks","consttype": "int", "constval": "2200"} +,{ + "constname": "k_iSteamScreenshotsCallbacks","consttype": "int", "constval": "2300"} +,{ + "constname": "k_iClientAudioCallbacks","consttype": "int", "constval": "2400"} +,{ + "constname": "k_iClientUnifiedMessagesCallbacks","consttype": "int", "constval": "2500"} +,{ + "constname": "k_iSteamStreamLauncherCallbacks","consttype": "int", "constval": "2600"} +,{ + "constname": "k_iClientControllerCallbacks","consttype": "int", "constval": "2700"} +,{ + "constname": "k_iSteamControllerCallbacks","consttype": "int", "constval": "2800"} +,{ + "constname": "k_iClientParentalSettingsCallbacks","consttype": "int", "constval": "2900"} +,{ + "constname": "k_iClientDeviceAuthCallbacks","consttype": "int", "constval": "3000"} +,{ + "constname": "k_iClientNetworkDeviceManagerCallbacks","consttype": "int", "constval": "3100"} +,{ + "constname": "k_iClientMusicCallbacks","consttype": "int", "constval": "3200"} +,{ + "constname": "k_iClientRemoteClientManagerCallbacks","consttype": "int", "constval": "3300"} +,{ + "constname": "k_iClientUGCCallbacks","consttype": "int", "constval": "3400"} +,{ + "constname": "k_iSteamStreamClientCallbacks","consttype": "int", "constval": "3500"} +,{ + "constname": "k_IClientProductBuilderCallbacks","consttype": "int", "constval": "3600"} +,{ + "constname": "k_iClientShortcutsCallbacks","consttype": "int", "constval": "3700"} +,{ + "constname": "k_iClientRemoteControlManagerCallbacks","consttype": "int", "constval": "3800"} +,{ + "constname": "k_iSteamAppListCallbacks","consttype": "int", "constval": "3900"} +,{ + "constname": "k_iSteamMusicCallbacks","consttype": "int", "constval": "4000"} +,{ + "constname": "k_iSteamMusicRemoteCallbacks","consttype": "int", "constval": "4100"} +,{ + "constname": "k_iClientVRCallbacks","consttype": "int", "constval": "4200"} +,{ + "constname": "k_iClientGameNotificationCallbacks","consttype": "int", "constval": "4300"} +,{ + "constname": "k_iSteamGameNotificationCallbacks","consttype": "int", "constval": "4400"} +,{ + "constname": "k_iSteamHTMLSurfaceCallbacks","consttype": "int", "constval": "4500"} +,{ + "constname": "k_iClientVideoCallbacks","consttype": "int", "constval": "4600"} +,{ + "constname": "k_iClientInventoryCallbacks","consttype": "int", "constval": "4700"} +,{ + "constname": "k_iClientBluetoothManagerCallbacks","consttype": "int", "constval": "4800"} +,{ + "constname": "k_cchPersonaNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cwchPersonaNameMax","consttype": "int", "constval": "32"} +,{ + "constname": "k_cchMaxRichPresenceKeys","consttype": "int", "constval": "20"} +,{ + "constname": "k_cchMaxRichPresenceKeyLength","consttype": "int", "constval": "64"} +,{ + "constname": "k_cchMaxRichPresenceValueLength","consttype": "int", "constval": "256"} +,{ + "constname": "k_cchStatNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cchLeaderboardNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cLeaderboardDetailsMax","consttype": "int", "constval": "64"} +,{ + "constname": "k_InvalidUnifiedMessageHandle","consttype": "const ClientUnifiedMessageHandle", "constval": "0"} +,{ + "constname": "k_SteamItemInstanceIDInvalid","consttype": "const SteamItemInstanceID_t", "constval": "18446744073709551615"} +,{ + "constname": "k_SteamInventoryResultInvalid","consttype": "const SteamInventoryResult_t", "constval": "-1"} +], +"structs":[{"struct": "CSteamID","fields": [ +{ "fieldname": "m_steamid", "fieldtype": "union SteamID_t"}]} +,{"struct": "CSteamID::SteamID_t","fields": [ +{ "fieldname": "m_comp", "fieldtype": "struct SteamIDComponent_t"}, +{ "fieldname": "m_unAll64Bits", "fieldtype": "uint64"}]} +,{"struct": "CSteamID::SteamID_t::SteamIDComponent_t","fields": [ +{ "fieldname": "m_unAccountID", "fieldtype": "uint32"}, +{ "fieldname": "m_unAccountInstance", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EAccountType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EUniverse", "fieldtype": "enum EUniverse"}]} +,{"struct": "CGameID::GameID_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nModID", "fieldtype": "unsigned int"}]} +,{"struct": "CGameID::(anonymous)","fields": [ +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_gameID", "fieldtype": "struct CGameID::GameID_t"}]} +,{"struct": "ValvePackingSentinel_t","fields": [ +{ "fieldname": "m_u32", "fieldtype": "uint32"}, +{ "fieldname": "m_u64", "fieldtype": "uint64"}, +{ "fieldname": "m_u16", "fieldtype": "uint16"}, +{ "fieldname": "m_d", "fieldtype": "double"}]} +,{"struct": "CallbackMsg_t","fields": [ +{ "fieldname": "m_hSteamUser", "fieldtype": "HSteamUser"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_pubParam", "fieldtype": "uint8 *"}, +{ "fieldname": "m_cubParam", "fieldtype": "int"}]} +,{"struct": "SteamServerConnectFailure_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bStillRetrying", "fieldtype": "_Bool"}]} +,{"struct": "SteamServersDisconnected_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ClientGameServerDeny_t","fields": [ +{ "fieldname": "m_uAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_unGameServerIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGameServerPort", "fieldtype": "uint16"}, +{ "fieldname": "m_bSecure", "fieldtype": "uint16"}, +{ "fieldname": "m_uReason", "fieldtype": "uint32"}]} +,{"struct": "ValidateAuthTicketResponse_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eAuthSessionResponse", "fieldtype": "enum EAuthSessionResponse"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "MicroTxnAuthorizationResponse_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_ulOrderID", "fieldtype": "uint64"}, +{ "fieldname": "m_bAuthorized", "fieldtype": "uint8"}]} +,{"struct": "EncryptedAppTicketResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GetAuthSessionTicketResponse_t","fields": [ +{ "fieldname": "m_hAuthTicket", "fieldtype": "HAuthTicket"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GameWebCallback_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [256]"}]} +,{"struct": "StoreAuthURLResponse_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [512]"}]} +,{"struct": "FriendGameInfo_t","fields": [ +{ "fieldname": "m_gameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_unGameIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGamePort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FriendSessionStateInfo_t","fields": [ +{ "fieldname": "m_uiOnlineSessionInstances", "fieldtype": "uint32"}, +{ "fieldname": "m_uiPublishedToFriendsSessionInstance", "fieldtype": "uint8"}]} +,{"struct": "PersonaStateChange_t","fields": [ +{ "fieldname": "m_ulSteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_nChangeFlags", "fieldtype": "int"}]} +,{"struct": "GameOverlayActivated_t","fields": [ +{ "fieldname": "m_bActive", "fieldtype": "uint8"}]} +,{"struct": "GameServerChangeRequested_t","fields": [ +{ "fieldname": "m_rgchServer", "fieldtype": "char [64]"}, +{ "fieldname": "m_rgchPassword", "fieldtype": "char [64]"}]} +,{"struct": "GameLobbyJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}]} +,{"struct": "AvatarImageLoaded_t","fields": [ +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iImage", "fieldtype": "int"}, +{ "fieldname": "m_iWide", "fieldtype": "int"}, +{ "fieldname": "m_iTall", "fieldtype": "int"}]} +,{"struct": "ClanOfficerListResponse_t","fields": [ +{ "fieldname": "m_steamIDClan", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_cOfficers", "fieldtype": "int"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "FriendRichPresenceUpdate_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "GameRichPresenceJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_rgchConnect", "fieldtype": "char [256]"}]} +,{"struct": "GameConnectedClanChatMsg_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "GameConnectedChatJoin_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GameConnectedChatLeave_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bKicked", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDropped", "fieldtype": "_Bool"}]} +,{"struct": "DownloadClanActivityCountsResult_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}]} +,{"struct": "JoinClanChatRoomCompletionResult_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eChatRoomEnterResponse", "fieldtype": "enum EChatRoomEnterResponse"}]} +,{"struct": "GameConnectedFriendChatMsg_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "FriendsGetFollowerCount_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nCount", "fieldtype": "int"}]} +,{"struct": "FriendsIsFollowing_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bIsFollowing", "fieldtype": "_Bool"}]} +,{"struct": "FriendsEnumerateFollowingList_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_rgSteamID", "fieldtype": "class CSteamID [50]"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}]} +,{"struct": "SetPersonaNameResponse_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_bLocalSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "LowBatteryPower_t","fields": [ +{ "fieldname": "m_nMinutesBatteryLeft", "fieldtype": "uint8"}]} +,{"struct": "SteamAPICallCompleted_t","fields": [ +{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_cubParam", "fieldtype": "uint32"}]} +,{"struct": "CheckFileSignature_t","fields": [ +{ "fieldname": "m_eCheckFileSignature", "fieldtype": "enum ECheckFileSignature"}]} +,{"struct": "GamepadTextInputDismissed_t","fields": [ +{ "fieldname": "m_bSubmitted", "fieldtype": "_Bool"}, +{ "fieldname": "m_unSubmittedText", "fieldtype": "uint32"}]} +,{"struct": "MatchMakingKeyValuePair_t","fields": [ +{ "fieldname": "m_szKey", "fieldtype": "char [256]"}, +{ "fieldname": "m_szValue", "fieldtype": "char [256]"}]} +,{"struct": "servernetadr_t","fields": [ +{ "fieldname": "m_usConnectionPort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}]} +,{"struct": "gameserveritem_t","fields": [ +{ "fieldname": "m_NetAdr", "fieldtype": "class servernetadr_t"}, +{ "fieldname": "m_nPing", "fieldtype": "int"}, +{ "fieldname": "m_bHadSuccessfulResponse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDoNotRefresh", "fieldtype": "_Bool"}, +{ "fieldname": "m_szGameDir", "fieldtype": "char [32]"}, +{ "fieldname": "m_szMap", "fieldtype": "char [32]"}, +{ "fieldname": "m_szGameDescription", "fieldtype": "char [64]"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nMaxPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nBotPlayers", "fieldtype": "int"}, +{ "fieldname": "m_bPassword", "fieldtype": "_Bool"}, +{ "fieldname": "m_bSecure", "fieldtype": "_Bool"}, +{ "fieldname": "m_ulTimeLastPlayed", "fieldtype": "uint32"}, +{ "fieldname": "m_nServerVersion", "fieldtype": "int"}, +{ "fieldname": "m_szServerName", "fieldtype": "char [64]"}, +{ "fieldname": "m_szGameTags", "fieldtype": "char [128]"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListChanged_t","fields": [ +{ "fieldname": "m_nIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nQueryPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nConnPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nFlags", "fieldtype": "uint32"}, +{ "fieldname": "m_bAdd", "fieldtype": "_Bool"}, +{ "fieldname": "m_unAccountId", "fieldtype": "AccountID_t"}]} +,{"struct": "LobbyInvite_t","fields": [ +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}]} +,{"struct": "LobbyEnter_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatPermissions", "fieldtype": "uint32"}, +{ "fieldname": "m_bLocked", "fieldtype": "_Bool"}, +{ "fieldname": "m_EChatRoomEnterResponse", "fieldtype": "uint32"}]} +,{"struct": "LobbyDataUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMember", "fieldtype": "uint64"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "LobbyChatUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUserChanged", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMakingChange", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatMemberStateChange", "fieldtype": "uint32"}]} +,{"struct": "LobbyChatMsg_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_eChatEntryType", "fieldtype": "uint8"}, +{ "fieldname": "m_iChatID", "fieldtype": "uint32"}]} +,{"struct": "LobbyGameCreated_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDGameServer", "fieldtype": "uint64"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usPort", "fieldtype": "uint16"}]} +,{"struct": "LobbyMatchList_t","fields": [ +{ "fieldname": "m_nLobbiesMatching", "fieldtype": "uint32"}]} +,{"struct": "LobbyKicked_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDAdmin", "fieldtype": "uint64"}, +{ "fieldname": "m_bKickedDueToDisconnect", "fieldtype": "uint8"}]} +,{"struct": "LobbyCreated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}]} +,{"struct": "PSNGameBootInviteResult_t","fields": [ +{ "fieldname": "m_bGameBootInviteExists", "fieldtype": "_Bool"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListAccountsUpdated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamParamStringArray_t","fields": [ +{ "fieldname": "m_ppStrings", "fieldtype": "const char **"}, +{ "fieldname": "m_nNumStrings", "fieldtype": "int32"}]} +,{"struct": "RemoteStorageAppSyncedClient_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumDownloads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncedServer_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumUploads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncProgress_t","fields": [ +{ "fieldname": "m_rgchCurrentFile", "fieldtype": "char [260]"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_uBytesTransferredThisChunk", "fieldtype": "uint32"}, +{ "fieldname": "m_dAppPercentComplete", "fieldtype": "double"}, +{ "fieldname": "m_bUploading", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageAppSyncStatusCheck_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileShareResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_rgchFilename", "fieldtype": "char [260]"}]} +,{"struct": "RemoteStoragePublishFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDeletePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserPublishedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeSubscribed", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStorageUnsubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUpdatePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDownloadUGCResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nSizeInBytes", "fieldtype": "int32"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageGetPublishedFileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageEnumerateWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgScore", "fieldtype": "float [50]"}, +{ "fieldname": "m_nAppId", "fieldtype": "AppId_t"}, +{ "fieldname": "m_unStartIndex", "fieldtype": "uint32"}]} +,{"struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nVotesFor", "fieldtype": "int32"}, +{ "fieldname": "m_nVotesAgainst", "fieldtype": "int32"}, +{ "fieldname": "m_nReports", "fieldtype": "int32"}, +{ "fieldname": "m_fScore", "fieldtype": "float"}]} +,{"struct": "RemoteStoragePublishedFileSubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileUnsubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileDeleted_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUserVoteDetails_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eVote", "fieldtype": "enum EWorkshopVote"}]} +,{"struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSetUserPublishedFileActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}]} +,{"struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeUpdated", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStoragePublishFileProgress_t","fields": [ +{ "fieldname": "m_dPercentFile", "fieldtype": "double"}, +{ "fieldname": "m_bPreview", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStoragePublishedFileUpdated_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_ulUnused", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageFileWriteAsyncComplete_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileReadAsyncComplete_t","fields": [ +{ "fieldname": "m_hFileReadAsync", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cubRead", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardEntry_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nGlobalRank", "fieldtype": "int32"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_cDetails", "fieldtype": "int32"}, +{ "fieldname": "m_hUGC", "fieldtype": "UGCHandle_t"}]} +,{"struct": "UserStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserStatsStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserAchievementStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_bGroupAchievement", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_nCurProgress", "fieldtype": "uint32"}, +{ "fieldname": "m_nMaxProgress", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardFindResult_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_bLeaderboardFound", "fieldtype": "uint8"}]} +,{"struct": "LeaderboardScoresDownloaded_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_hSteamLeaderboardEntries", "fieldtype": "SteamLeaderboardEntries_t"}, +{ "fieldname": "m_cEntryCount", "fieldtype": "int"}]} +,{"struct": "LeaderboardScoreUploaded_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_bScoreChanged", "fieldtype": "uint8"}, +{ "fieldname": "m_nGlobalRankNew", "fieldtype": "int"}, +{ "fieldname": "m_nGlobalRankPrevious", "fieldtype": "int"}]} +,{"struct": "NumberOfCurrentPlayers_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_cPlayers", "fieldtype": "int32"}]} +,{"struct": "UserStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserAchievementIconFetched_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_bAchieved", "fieldtype": "_Bool"}, +{ "fieldname": "m_nIconHandle", "fieldtype": "int"}]} +,{"struct": "GlobalAchievementPercentagesReady_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "LeaderboardUGCSet_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}]} +,{"struct": "PS3TrophiesInstalled_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulRequiredDiskSpace", "fieldtype": "uint64"}]} +,{"struct": "GlobalStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "DlcInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RegisterActivationCodeResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum ERegisterActivationCodeResult"}, +{ "fieldname": "m_unPackageRegistered", "fieldtype": "uint32"}]} +,{"struct": "AppProofOfPurchaseKeyResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_cchKeyLength", "fieldtype": "uint32"}, +{ "fieldname": "m_rgchKey", "fieldtype": "char [240]"}]} +,{"struct": "FileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulFileSize", "fieldtype": "uint64"}, +{ "fieldname": "m_FileSHA", "fieldtype": "uint8 [20]"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint32"}]} +,{"struct": "P2PSessionState_t","fields": [ +{ "fieldname": "m_bConnectionActive", "fieldtype": "uint8"}, +{ "fieldname": "m_bConnecting", "fieldtype": "uint8"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}, +{ "fieldname": "m_bUsingRelay", "fieldtype": "uint8"}, +{ "fieldname": "m_nBytesQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nPacketsQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nRemoteIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nRemotePort", "fieldtype": "uint16"}]} +,{"struct": "P2PSessionRequest_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}]} +,{"struct": "P2PSessionConnectFail_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}]} +,{"struct": "SocketStatusCallback_t","fields": [ +{ "fieldname": "m_hSocket", "fieldtype": "SNetSocket_t"}, +{ "fieldname": "m_hListenSocket", "fieldtype": "SNetListenSocket_t"}, +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eSNetSocketState", "fieldtype": "int"}]} +,{"struct": "ScreenshotReady_t","fields": [ +{ "fieldname": "m_hLocal", "fieldtype": "ScreenshotHandle"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "VolumeHasChanged_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerWantsShuffled_t","fields": [ +{ "fieldname": "m_bShuffled", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsLooped_t","fields": [ +{ "fieldname": "m_bLooped", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsVolume_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerSelectsQueueEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerSelectsPlaylistEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerWantsPlayingRepeatStatus_t","fields": [ +{ "fieldname": "m_nPlayingRepeatStatus", "fieldtype": "int"}]} +,{"struct": "HTTPRequestCompleted_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_bRequestSuccessful", "fieldtype": "_Bool"}, +{ "fieldname": "m_eStatusCode", "fieldtype": "enum EHTTPStatusCode"}, +{ "fieldname": "m_unBodySize", "fieldtype": "uint32"}]} +,{"struct": "HTTPRequestHeadersReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}]} +,{"struct": "HTTPRequestDataReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_cOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cBytesReceived", "fieldtype": "uint32"}]} +,{"struct": "SteamUnifiedMessagesSendMethodResult_t","fields": [ +{ "fieldname": "m_hHandle", "fieldtype": "ClientUnifiedMessageHandle"}, +{ "fieldname": "m_unContext", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unResponseSize", "fieldtype": "uint32"}]} +,{"struct": "ControllerAnalogActionData_t","fields": [ +{ "fieldname": "eMode", "fieldtype": "enum EControllerSourceMode"}, +{ "fieldname": "x", "fieldtype": "float"}, +{ "fieldname": "y", "fieldtype": "float"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerDigitalActionData_t","fields": [ +{ "fieldname": "bState", "fieldtype": "_Bool"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerMotionData_t","fields": [ +{ "fieldname": "rotQuatX", "fieldtype": "float"}, +{ "fieldname": "rotQuatY", "fieldtype": "float"}, +{ "fieldname": "rotQuatZ", "fieldtype": "float"}, +{ "fieldname": "rotQuatW", "fieldtype": "float"}, +{ "fieldname": "posAccelX", "fieldtype": "float"}, +{ "fieldname": "posAccelY", "fieldtype": "float"}, +{ "fieldname": "posAccelZ", "fieldtype": "float"}, +{ "fieldname": "rotVelX", "fieldtype": "float"}, +{ "fieldname": "rotVelY", "fieldtype": "float"}, +{ "fieldname": "rotVelZ", "fieldtype": "float"}]} +,{"struct": "SteamUGCDetails_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeAddedToUserList", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_unVotesUp", "fieldtype": "uint32"}, +{ "fieldname": "m_unVotesDown", "fieldtype": "uint32"}, +{ "fieldname": "m_flScore", "fieldtype": "float"}, +{ "fieldname": "m_unNumChildren", "fieldtype": "uint32"}]} +,{"struct": "SteamUGCQueryCompleted_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "UGCQueryHandle_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumResultsReturned", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMatchingResults", "fieldtype": "uint32"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "SteamUGCRequestUGCDetailsResult_t","fields": [ +{ "fieldname": "m_details", "fieldtype": "struct SteamUGCDetails_t"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "CreateItemResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "SubmitItemUpdateResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "DownloadItemResult_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserFavoriteItemsListChanged_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bWasAddRequest", "fieldtype": "_Bool"}]} +,{"struct": "SetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVoteUp", "fieldtype": "_Bool"}]} +,{"struct": "GetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVotedUp", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVotedDown", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVoteSkipped", "fieldtype": "_Bool"}]} +,{"struct": "StartPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "StopPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamAppInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "SteamAppUninstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "HTML_BrowserReady_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_NeedsPaint_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pBGRA", "fieldtype": "const char *"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateX", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateY", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateWide", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateTall", "fieldtype": "uint32"}, +{ "fieldname": "unScrollX", "fieldtype": "uint32"}, +{ "fieldname": "unScrollY", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "unPageSerial", "fieldtype": "uint32"}]} +,{"struct": "HTML_StartRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchTarget", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}]} +,{"struct": "HTML_CloseBrowser_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_URLChanged_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}, +{ "fieldname": "bNewNavigation", "fieldtype": "_Bool"}]} +,{"struct": "HTML_FinishedRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_OpenLinkInNewTab_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}]} +,{"struct": "HTML_ChangedTitle_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_SearchResults_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unResults", "fieldtype": "uint32"}, +{ "fieldname": "unCurrentMatch", "fieldtype": "uint32"}]} +,{"struct": "HTML_CanGoBackAndForward_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "bCanGoBack", "fieldtype": "_Bool"}, +{ "fieldname": "bCanGoForward", "fieldtype": "_Bool"}]} +,{"struct": "HTML_HorizontalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_VerticalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_LinkAtPosition_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "x", "fieldtype": "uint32"}, +{ "fieldname": "y", "fieldtype": "uint32"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "bInput", "fieldtype": "_Bool"}, +{ "fieldname": "bLiveLink", "fieldtype": "_Bool"}]} +,{"struct": "HTML_JSAlert_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_JSConfirm_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_FileOpenDialog_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}, +{ "fieldname": "pchInitialFile", "fieldtype": "const char *"}]} +,{"struct": "HTML_NewWindow_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "unX", "fieldtype": "uint32"}, +{ "fieldname": "unY", "fieldtype": "uint32"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unNewWindow_BrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_SetCursor_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "eMouseCursor", "fieldtype": "uint32"}]} +,{"struct": "HTML_StatusText_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_ShowToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_UpdateToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_HideToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "SteamItemDetails_t","fields": [ +{ "fieldname": "m_itemId", "fieldtype": "SteamItemInstanceID_t"}, +{ "fieldname": "m_iDefinition", "fieldtype": "SteamItemDef_t"}, +{ "fieldname": "m_unQuantity", "fieldtype": "uint16"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint16"}]} +,{"struct": "SteamInventoryResultReady_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "SteamInventoryFullUpdate_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}]} +,{"struct": "BroadcastUploadStop_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EBroadcastUploadResult"}]} +,{"struct": "GetVideoURLResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} +,{"struct": "CSteamAPIContext","fields": [ +{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, +{ "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, +{ "fieldname": "m_pSteamFriends", "fieldtype": "class ISteamFriends *"}, +{ "fieldname": "m_pSteamUtils", "fieldtype": "class ISteamUtils *"}, +{ "fieldname": "m_pSteamMatchmaking", "fieldtype": "class ISteamMatchmaking *"}, +{ "fieldname": "m_pSteamUserStats", "fieldtype": "class ISteamUserStats *"}, +{ "fieldname": "m_pSteamApps", "fieldtype": "class ISteamApps *"}, +{ "fieldname": "m_pSteamMatchmakingServers", "fieldtype": "class ISteamMatchmakingServers *"}, +{ "fieldname": "m_pSteamNetworking", "fieldtype": "class ISteamNetworking *"}, +{ "fieldname": "m_pSteamRemoteStorage", "fieldtype": "class ISteamRemoteStorage *"}, +{ "fieldname": "m_pSteamScreenshots", "fieldtype": "class ISteamScreenshots *"}, +{ "fieldname": "m_pSteamHTTP", "fieldtype": "class ISteamHTTP *"}, +{ "fieldname": "m_pSteamUnifiedMessages", "fieldtype": "class ISteamUnifiedMessages *"}, +{ "fieldname": "m_pController", "fieldtype": "class ISteamController *"}, +{ "fieldname": "m_pSteamUGC", "fieldtype": "class ISteamUGC *"}, +{ "fieldname": "m_pSteamAppList", "fieldtype": "class ISteamAppList *"}, +{ "fieldname": "m_pSteamMusic", "fieldtype": "class ISteamMusic *"}, +{ "fieldname": "m_pSteamMusicRemote", "fieldtype": "class ISteamMusicRemote *"}, +{ "fieldname": "m_pSteamHTMLSurface", "fieldtype": "class ISteamHTMLSurface *"}, +{ "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, +{ "fieldname": "m_pSteamVideo", "fieldtype": "class ISteamVideo *"}]} +,{"struct": "CCallbackBase","fields": [ +{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}]} +,{"struct": "CCallResult","fields": [ +{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "CCallback","fields": [ +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "GSClientApprove_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "GSClientDeny_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}, +{ "fieldname": "m_rgchOptionalText", "fieldtype": "char [128]"}]} +,{"struct": "GSClientKick_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}]} +,{"struct": "GSClientAchievementStatus_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_pchAchievement", "fieldtype": "char [128]"}, +{ "fieldname": "m_bUnlocked", "fieldtype": "_Bool"}]} +,{"struct": "GSPolicyResponse_t","fields": [ +{ "fieldname": "m_bSecure", "fieldtype": "uint8"}]} +,{"struct": "GSGameplayStats_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nRank", "fieldtype": "int32"}, +{ "fieldname": "m_unTotalConnects", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMinutesPlayed", "fieldtype": "uint32"}]} +,{"struct": "GSClientGroupStatus_t","fields": [ +{ "fieldname": "m_SteamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_SteamIDGroup", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bMember", "fieldtype": "_Bool"}, +{ "fieldname": "m_bOfficer", "fieldtype": "_Bool"}]} +,{"struct": "GSReputation_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unReputationScore", "fieldtype": "uint32"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_unBannedIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usBannedPort", "fieldtype": "uint16"}, +{ "fieldname": "m_ulBannedGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_unBanExpires", "fieldtype": "uint32"}]} +,{"struct": "AssociateWithClanResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ComputeNewPlayerCompatibilityResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_cPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_cPlayersThatCandidateDoesntLike", "fieldtype": "int"}, +{ "fieldname": "m_cClanPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_SteamIDCandidate", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsReceived_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsStored_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +], +"methods":[{ + "classname": "ISteamClient", + "methodname": "CreateSteamPipe", + "returntype": "HSteamPipe" +} +,{ + "classname": "ISteamClient", + "methodname": "BReleaseSteamPipe", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ConnectToGlobalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "CreateLocalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "phSteamPipe" ,"paramtype": "HSteamPipe *"}, +{ "paramname": "eAccountType" ,"paramtype": "EAccountType"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ReleaseUser", + "returntype": "void", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "hUser" ,"paramtype": "HSteamUser"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUser", + "returntype": "class ISteamUser *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServer", + "returntype": "class ISteamGameServer *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "SetLocalIPBinding", + "returntype": "void", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamFriends", + "returntype": "class ISteamFriends *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUtils", + "returntype": "class ISteamUtils *", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmaking", + "returntype": "class ISteamMatchmaking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmakingServers", + "returntype": "class ISteamMatchmakingServers *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGenericInterface", + "returntype": "void *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUserStats", + "returntype": "class ISteamUserStats *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServerStats", + "returntype": "class ISteamGameServerStats *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamApps", + "returntype": "class ISteamApps *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamNetworking", + "returntype": "class ISteamNetworking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamRemoteStorage", + "returntype": "class ISteamRemoteStorage *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamScreenshots", + "returntype": "class ISteamScreenshots *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamClient", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "BShutdownIfAllPipesClosed", + "returntype": "bool" +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTTP", + "returntype": "class ISteamHTTP *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUnifiedMessages", + "returntype": "class ISteamUnifiedMessages *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamController", + "returntype": "class ISteamController *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUGC", + "returntype": "class ISteamUGC *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamAppList", + "returntype": "class ISteamAppList *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusic", + "returntype": "class ISteamMusic *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusicRemote", + "returntype": "class ISteamMusicRemote *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTMLSurface", + "returntype": "class ISteamHTMLSurface *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamInventory", + "returntype": "class ISteamInventory *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamVideo", + "returntype": "class ISteamVideo *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetHSteamUser", + "returntype": "HSteamUser" +} +,{ + "classname": "ISteamUser", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamUser", + "methodname": "InitiateGameConnection", + "returntype": "int", + "params": [ +{ "paramname": "pAuthBlob" ,"paramtype": "void *"}, +{ "paramname": "cbMaxAuthBlob" ,"paramtype": "int"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"}, +{ "paramname": "bSecure" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TerminateGameConnection", + "returntype": "void", + "params": [ +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TrackAppUsageEvent", + "returntype": "void", + "params": [ +{ "paramname": "gameID" ,"paramtype": "class CGameID"}, +{ "paramname": "eAppUsageEvent" ,"paramtype": "int"}, +{ "paramname": "pchExtraInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetUserDataFolder", + "returntype": "bool", + "params": [ +{ "paramname": "pchBuffer" ,"paramtype": "char *"}, +{ "paramname": "cubBuffer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "StartVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "StopVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAvailableVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pcbCompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "pcbUncompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "bWantCompressed" ,"paramtype": "bool"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "bWantUncompressed" ,"paramtype": "bool"}, +{ "paramname": "pUncompressedDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbUncompressedDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nUncompressBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "DecompressVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pCompressed" ,"paramtype": "const void *"}, +{ "paramname": "cbCompressed" ,"paramtype": "uint32"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoiceOptimalSampleRate", + "returntype": "uint32" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsBehindNAT", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "AdvertiseGame", + "returntype": "void", + "params": [ +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "RequestEncryptedAppTicket", "callresult": "EncryptedAppTicketResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pDataToInclude" ,"paramtype": "void *"}, +{ "paramname": "cbDataToInclude" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetEncryptedAppTicket", + "returntype": "bool", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetGameBadgeLevel", + "returntype": "int", + "params": [ +{ "paramname": "nSeries" ,"paramtype": "int"}, +{ "paramname": "bFoil" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetPlayerSteamLevel", + "returntype": "int" +} +,{ + "classname": "ISteamUser", + "methodname": "RequestStoreAuthURL", "callresult": "StoreAuthURLResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchRedirectURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneVerified", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsTwoFactorEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneIdentifying", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneRequiringVerification", + "returntype": "bool" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaName", + "returntype": "const char *" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPersonaName", "callresult": "SetPersonaNameResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchPersonaName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaState", + "returntype": "EPersonaState" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCount", + "returntype": "int", + "params": [ +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iFriend" ,"paramtype": "int"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRelationship", + "returntype": "EFriendRelationship", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaState", + "returntype": "EPersonaState", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendGamePlayed", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pFriendGameInfo" ,"out_struct": " " ,"paramtype": "struct FriendGameInfo_t *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaNameHistory", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iPersonaName" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendSteamLevel", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPlayerNickname", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupIDByIndex", + "returntype": "FriendsGroupID_t", + "params": [ +{ "paramname": "iFG" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupName", + "returntype": "const char *", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersCount", + "returntype": "int", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersList", + "returntype": "void", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"}, +{ "paramname": "pOutSteamIDMembers" ,"out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nMembersCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "HasFriend", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iClan" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanTag", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanActivityCounts", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "pnOnline" ,"paramtype": "int *"}, +{ "paramname": "pnInGame" ,"paramtype": "int *"}, +{ "paramname": "pnChatting" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "DownloadClanActivityCounts", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "psteamIDClans" ,"array_count": "cClansToRequest" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cClansToRequest" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCountFromSource", + "returntype": "int", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendFromSourceByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsUserInSource", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetInGameVoiceSpeaking", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bSpeaking" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlay", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToUser", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToWebPage", + "returntype": "void", + "params": [ +{ "paramname": "pchURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToStore", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "eFlag" ,"paramtype": "EOverlayToStoreFlag"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPlayedWith", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUserPlayedWith" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayInviteDialog", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetSmallFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetMediumFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetLargeFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestUserInformation", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bRequireNameOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestClanOfficerList", "callresult": "ClanOfficerListResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iOfficer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetUserRestrictions", + "returntype": "uint32" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetRichPresence", + "returntype": "bool", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ClearRichPresence", + "returntype": "void" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresence", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyByIndex", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iKey" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestFriendRichPresence", + "returntype": "void", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "InviteUserToGame", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchConnectString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriendCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriend", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iCoplayFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayTime", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayGame", + "returntype": "AppId_t", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "JoinClanChatRoom", "callresult": "JoinClanChatRoomCompletionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "LeaveClanChatRoom", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMemberCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetChatMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iUser" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SendClanChatMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessage" ,"paramtype": "int"}, +{ "paramname": "prgchText" ,"paramtype": "void *"}, +{ "paramname": "cchTextMax" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"}, +{ "paramname": "psteamidChatter" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatAdmin", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatWindowOpenInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "OpenClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "CloseClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetListenForFriendsMessages", + "returntype": "bool", + "params": [ +{ "paramname": "bInterceptEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ReplyToFriendMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchMsgToSend" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessageID" ,"paramtype": "int"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFollowerCount", "callresult": "FriendsGetFollowerCount_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsFollowing", "callresult": "FriendsIsFollowing_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "EnumerateFollowingList", "callresult": "FriendsEnumerateFollowingList_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceAppActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceComputerActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetConnectedUniverse", + "returntype": "EUniverse" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetServerRealTime", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCountry", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageSize", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32 *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageRGBA", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pubDest" ,"paramtype": "uint8 *"}, +{ "paramname": "nDestBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCSERIPPort", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32 *"}, +{ "paramname": "usPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCurrentBatteryPower", + "returntype": "uint8" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAppID", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationPosition", + "returntype": "void", + "params": [ +{ "paramname": "eNotificationPosition" ,"paramtype": "ENotificationPosition"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsAPICallCompleted", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallFailureReason", + "returntype": "ESteamAPICallFailure", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallResult", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pCallback" ,"paramtype": "void *"}, +{ "paramname": "cubCallback" ,"paramtype": "int"}, +{ "paramname": "iCallbackExpected" ,"paramtype": "int"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsOverlayEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "BOverlayNeedsPresent", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "CheckFileSignature", "callresult": "CheckFileSignature_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "szFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "ShowGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "eInputMode" ,"paramtype": "EGamepadTextInputMode"}, +{ "paramname": "eLineInputMode" ,"paramtype": "EGamepadTextInputLineMode"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "unCharMax" ,"paramtype": "uint32"}, +{ "paramname": "pchExistingText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextLength", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "char *"}, +{ "paramname": "cchText" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSteamUILanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamRunningInVR", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationInset", + "returntype": "void", + "params": [ +{ "paramname": "nHorizontalInset" ,"paramtype": "int"}, +{ "paramname": "nVerticalInset" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamInBigPictureMode", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "StartVRDashboard", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGameCount", + "returntype": "int" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "iGame" ,"paramtype": "int"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnConnPort" ,"paramtype": "uint16 *"}, +{ "paramname": "pnQueryPort" ,"paramtype": "uint16 *"}, +{ "paramname": "punFlags" ,"paramtype": "uint32 *"}, +{ "paramname": "pRTime32LastPlayedOnServer" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddFavoriteGame", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "rTime32LastPlayedOnServer" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RemoveFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyList", "callresult": "LobbyMatchList_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListStringFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "pchValueToMatch" ,"paramtype": "const char *"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNumericalFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToMatch" ,"paramtype": "int"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNearValueFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToBeCloseTo" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListFilterSlotsAvailable", + "returntype": "void", + "params": [ +{ "paramname": "nSlotsAvailable" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListDistanceFilter", + "returntype": "void", + "params": [ +{ "paramname": "eLobbyDistanceFilter" ,"paramtype": "ELobbyDistanceFilter"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListResultCountFilter", + "returntype": "void", + "params": [ +{ "paramname": "cMaxResults" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListCompatibleMembersFilter", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iLobby" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "CreateLobby", "callresult": "LobbyCreated_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "JoinLobby", "callresult": "LobbyEnter_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "LeaveLobby", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "InviteUserToLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDInvitee" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetNumLobbyMembers", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMember" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iLobbyData" ,"paramtype": "int"}, +{ "paramname": "pchKey" ,"paramtype": "char *"}, +{ "paramname": "cchKeyBufferSize" ,"paramtype": "int"}, +{ "paramname": "pchValue" ,"paramtype": "char *"}, +{ "paramname": "cchValueBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "DeleteLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberData", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SendLobbyChatMsg", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pvMsgBody" ,"paramtype": "const void *"}, +{ "paramname": "cubMsgBody" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyChatEntry", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iChatID" ,"paramtype": "int"}, +{ "paramname": "pSteamIDUser" ,"out_struct": " " ,"paramtype": "class CSteamID *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyGameServer", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "unGameServerIP" ,"paramtype": "uint32"}, +{ "paramname": "unGameServerPort" ,"paramtype": "uint16"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "punGameServerIP" ,"paramtype": "uint32 *"}, +{ "paramname": "punGameServerPort" ,"paramtype": "uint16 *"}, +{ "paramname": "psteamIDGameServer" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberLimit", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberLimit", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyType", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyJoinable", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "bLobbyJoinable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyOwner", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDNewOwner" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLinkedLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDLobbyDependent" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "RefreshComplete", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "response" ,"paramtype": "EMatchMakingServerResponse"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "server" ,"paramtype": "class gameserveritem_t &"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "AddPlayerToList", + "returntype": "void", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nScore" ,"paramtype": "int"}, +{ "paramname": "flTimePlayed" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesResponded", + "returntype": "void", + "params": [ +{ "paramname": "pchRule" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestInternetServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestLANServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFriendsServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFavoritesServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestHistoryServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestSpectatorServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ReleaseRequest", + "returntype": "void", + "params": [ +{ "paramname": "hServerListRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerDetails", + "returntype": "class gameserveritem_t *", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "IsRefreshing", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerCount", + "returntype": "int", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshServer", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PingServer", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPingResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PlayerDetails", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPlayersResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ServerRules", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingRulesResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelServerQuery", + "returntype": "void", + "params": [ +{ "paramname": "hServerQuery" ,"paramtype": "HServerQuery"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWrite", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileRead", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteAsync", "callresult": "RemoteStorageFileWriteAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsync", "callresult": "RemoteStorageFileReadAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "nOffset" ,"paramtype": "uint32"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsyncComplete", + "returntype": "bool", + "params": [ +{ "paramname": "hReadCall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileForget", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileDelete", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileShare", "callresult": "RemoteStorageFileShareResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetSyncPlatforms", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "eRemoteStoragePlatform" ,"paramtype": "ERemoteStoragePlatform"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamOpen", + "returntype": "UGCFileWriteStreamHandle_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamWriteChunk", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamClose", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamCancel", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileExists", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FilePersisted", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileSize", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileTimestamp", + "returntype": "int64", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetSyncPlatforms", + "returntype": "ERemoteStoragePlatform", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileNameAndSize", + "returntype": "const char *", + "params": [ +{ "paramname": "iFile" ,"paramtype": "int"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetQuota", + "returntype": "bool", + "params": [ +{ "paramname": "pnTotalBytes" ,"paramtype": "uint64 *"}, +{ "paramname": "puAvailableBytes" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForAccount", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForApp", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetCloudEnabledForApp", + "returntype": "void", + "params": [ +{ "paramname": "bEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownload", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnBytesDownloaded" ,"paramtype": "int32 *"}, +{ "paramname": "pnBytesExpected" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDetails", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "ppchName" ,"out_string": " " ,"paramtype": "char **"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"}, +{ "paramname": "pSteamIDOwner" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCRead", + "returntype": "int32", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "eAction" ,"paramtype": "EUGCReadAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCHandle", + "returntype": "UGCHandle_t", + "params": [ +{ "paramname": "iCachedContent" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishWorkshopFile", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "eWorkshopFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CreatePublishedFileUpdateRequest", + "returntype": "PublishedFileUpdateHandle_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFilePreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTitle", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CommitPublishedFileUpdate", "callresult": "RemoteStorageUpdatePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedFileDetails", "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxSecondsOld" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "DeletePublishedFile", "callresult": "RemoteStorageDeletePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserPublishedFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SubscribePublishedFile", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSubscribedFiles", "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UnsubscribePublishedFile", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileSetChangeDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchChangeDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdateUserPublishedItemVote", "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUserPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSharedWorkshopFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamId" ,"paramtype": "class CSteamID"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "pRequiredTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pExcludedTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishVideo", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eVideoProvider" ,"paramtype": "EWorkshopVideoProvider"}, +{ "paramname": "pchVideoAccount" ,"paramtype": "const char *"}, +{ "paramname": "pchVideoIdentifier" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetUserPublishedFileAction", "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedFilesByUserAction", "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedWorkshopFiles", "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eEnumerationType" ,"paramtype": "EWorkshopEnumerationType"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "unCount" ,"paramtype": "uint32"}, +{ "paramname": "unDays" ,"paramtype": "uint32"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pUserTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownloadToLocation", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestCurrentStats", "callback": "UserStatsReceived_t", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UpdateAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ClearAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "StoreStats", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementIcon", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementDisplayAttribute", + "returntype": "const char *", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "IndicateAchievementProgress", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nCurProgress" ,"paramtype": "uint32"}, +{ "paramname": "nMaxProgress" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumAchievements", + "returntype": "uint32" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementName", + "returntype": "const char *", + "params": [ +{ "paramname": "iAchievement" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestUserStats", "callresult": "UserStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ResetAllStats", + "returntype": "bool", + "params": [ +{ "paramname": "bAchievementsToo" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindOrCreateLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"}, +{ "paramname": "eLeaderboardSortMethod" ,"paramtype": "ELeaderboardSortMethod"}, +{ "paramname": "eLeaderboardDisplayType" ,"paramtype": "ELeaderboardDisplayType"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardName", + "returntype": "const char *", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardEntryCount", + "returntype": "int", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardSortMethod", + "returntype": "ELeaderboardSortMethod", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardDisplayType", + "returntype": "ELeaderboardDisplayType", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntries", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardDataRequest" ,"paramtype": "ELeaderboardDataRequest"}, +{ "paramname": "nRangeStart" ,"paramtype": "int"}, +{ "paramname": "nRangeEnd" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntriesForUsers", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "prgUsers" ,"array_count": "cUsers" ,"desc": "Array of users to retrieve" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cUsers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetDownloadedLeaderboardEntry", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamLeaderboardEntries" ,"paramtype": "SteamLeaderboardEntries_t"}, +{ "paramname": "index" ,"paramtype": "int"}, +{ "paramname": "pLeaderboardEntry" ,"paramtype": "struct LeaderboardEntry_t *"}, +{ "paramname": "pDetails" ,"paramtype": "int32 *"}, +{ "paramname": "cDetailsMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UploadLeaderboardScore", "callresult": "LeaderboardScoreUploaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardUploadScoreMethod" ,"paramtype": "ELeaderboardUploadScoreMethod"}, +{ "paramname": "nScore" ,"paramtype": "int32"}, +{ "paramname": "pScoreDetails" ,"paramtype": "const int32 *"}, +{ "paramname": "cScoreDetailsCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "AttachLeaderboardUGC", "callresult": "LeaderboardUGCSet_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "hUGC" ,"paramtype": "UGCHandle_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumberOfCurrentPlayers", "callresult": "NumberOfCurrentPlayers_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalAchievementPercentages", "callresult": "GlobalAchievementPercentagesReady_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNextMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "iIteratorPrevious" ,"paramtype": "int"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAchievedPercent", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalStats", "callresult": "GlobalStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nHistoryDays" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int64 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "double *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "int64 *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "double *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribed", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsLowViolence", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsCybercafe", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsVACBanned", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentGameLanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "GetAvailableGameLanguages", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedApp", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsDlcInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetEarliestPurchaseUnixTime", + "returntype": "uint32", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedFromFreeWeekend", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetDLCCount", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "BGetDLCDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "iDLC" ,"paramtype": "int"}, +{ "paramname": "pAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pbAvailable" ,"paramtype": "bool *"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "InstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "UninstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAppProofOfPurchaseKey", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentBetaName", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "MarkContentCorrupt", + "returntype": "bool", + "params": [ +{ "paramname": "bMissingFilesOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetInstalledDepots", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pvecDepots" ,"paramtype": "DepotId_t *"}, +{ "paramname": "cMaxDepots" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppInstallDir", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchFolder" ,"paramtype": "char *"}, +{ "paramname": "cchFolderBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsAppInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppOwner", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamApps", + "methodname": "GetLaunchQueryParam", + "returntype": "const char *", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetDlcDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppBuildId", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAllProofOfPurchaseKeys", + "returntype": "void" +} +,{ + "classname": "ISteamApps", + "methodname": "GetFileDetails", "callresult": "FileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pszFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pubData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "eP2PSendType" ,"paramtype": "EP2PSend"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsP2PPacketAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "ReadP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "psteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AcceptP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PChannelWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetP2PSessionState", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pConnectionState" ,"paramtype": "struct P2PSessionState_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AllowP2PPacketRelay", + "returntype": "bool", + "params": [ +{ "paramname": "bAllow" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateListenSocket", + "returntype": "SNetListenSocket_t", + "params": [ +{ "paramname": "nVirtualP2PPort" ,"paramtype": "int"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateP2PConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "steamIDTarget" ,"paramtype": "class CSteamID"}, +{ "paramname": "nVirtualPort" ,"paramtype": "int"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroySocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroyListenSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendDataOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "bReliable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailableOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveDataFromSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveData", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pSteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "peSocketStatus" ,"paramtype": "int *"}, +{ "paramname": "punIPRemote" ,"paramtype": "uint32 *"}, +{ "paramname": "punPortRemote" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetListenSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketConnectionType", + "returntype": "ESNetSocketConnectionType", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetMaxPacketSize", + "returntype": "int", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "WriteScreenshot", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pubRGB" ,"paramtype": "void *"}, +{ "paramname": "cubRGB" ,"paramtype": "uint32"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchThumbnailFilename" ,"paramtype": "const char *"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TriggerScreenshot", + "returntype": "void" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "HookScreenshots", + "returntype": "void", + "params": [ +{ "paramname": "bHook" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "SetLocation", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagUser", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagPublishedFile", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "unPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "IsScreenshotsHooked", + "returntype": "bool" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddVRScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "eType" ,"paramtype": "EVRScreenshotType"}, +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsPlaying", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "GetPlaybackStatus", + "returntype": "AudioPlayback_Status" +} +,{ + "classname": "ISteamMusic", + "methodname": "Play", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "Pause", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayPrevious", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayNext", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "SetVolume", + "returntype": "void", + "params": [ +{ "paramname": "flVolume" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "GetVolume", + "returntype": "float" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "RegisterSteamMusicRemote", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "DeregisterSteamMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BIsCurrentMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BActivationSuccess", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetDisplayName", + "returntype": "bool", + "params": [ +{ "paramname": "pchDisplayName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPNGIcon_64x64", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayPrevious", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayNext", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableQueue", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlaylists", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdatePlaybackStatus", + "returntype": "bool", + "params": [ +{ "paramname": "nStatus" ,"paramtype": "AudioPlayback_Status"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateVolume", + "returntype": "bool", + "params": [ +{ "paramname": "flValue" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryIsAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "bAvailable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryText", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryElapsedSeconds", + "returntype": "bool", + "params": [ +{ "paramname": "nValue" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryCoverArt", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetQueueEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetPlaylistEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateHTTPRequest", + "returntype": "HTTPRequestHandle", + "params": [ +{ "paramname": "eHTTPRequestMethod" ,"paramtype": "EHTTPMethod"}, +{ "paramname": "pchAbsoluteURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestContextValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "ulContextValue" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestNetworkActivityTimeout", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unTimeoutSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pchHeaderValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestGetOrPostParameter", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchParamName" ,"paramtype": "const char *"}, +{ "paramname": "pchParamValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequestAndStreamResponse", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "DeferHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "PrioritizeHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderSize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "unResponseHeaderSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pHeaderValueBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodySize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unBodySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPStreamingResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPDownloadProgressPct", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pflPercentOut" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRawPostBody", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchContentType" ,"paramtype": "const char *"}, +{ "paramname": "pubBody" ,"paramtype": "uint8 *"}, +{ "paramname": "unBodyLen" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateCookieContainer", + "returntype": "HTTPCookieContainerHandle", + "params": [ +{ "paramname": "bAllowResponsesToModify" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetCookie", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"}, +{ "paramname": "pchHost" ,"paramtype": "const char *"}, +{ "paramname": "pchUrl" ,"paramtype": "const char *"}, +{ "paramname": "pchCookie" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestUserAgentInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchUserAgentInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRequiresVerifiedCertificate", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "bRequireVerifiedCertificate" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestAbsoluteTimeoutMS", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unMilliseconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPRequestWasTimedOut", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pbWasTimedOut" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendMethod", + "returntype": "ClientUnifiedMessageHandle", + "params": [ +{ "paramname": "pchServiceMethod" ,"paramtype": "const char *"}, +{ "paramname": "pRequestBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unRequestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "unContext" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "punResponseSize" ,"paramtype": "uint32 *"}, +{ "paramname": "peResult" ,"paramtype": "EResult *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseData", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "pResponseBuffer" ,"paramtype": "void *"}, +{ "paramname": "unResponseBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bAutoRelease" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "ReleaseMethod", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendNotification", + "returntype": "bool", + "params": [ +{ "paramname": "pchServiceNotification" ,"paramtype": "const char *"}, +{ "paramname": "pNotificationBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unNotificationBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "RunFrame", + "returntype": "void" +} +,{ + "classname": "ISteamController", + "methodname": "GetConnectedControllers", + "returntype": "int", + "params": [ +{ "paramname": "handlesOut" ,"paramtype": "ControllerHandle_t *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowBindingPanel", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetActionSetHandle", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "pszActionSetName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ActivateActionSet", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetCurrentActionSet", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionHandle", + "returntype": "ControllerDigitalActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionData", + "returntype": "struct ControllerDigitalActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionHandle", + "returntype": "ControllerAnalogActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionData", + "returntype": "struct ControllerAnalogActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "StopAnalogActionMomentum", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eAction" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerRepeatedHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "usOffMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "unRepeat" ,"paramtype": "unsigned short"}, +{ "paramname": "nFlags" ,"paramtype": "unsigned int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetGamepadIndexForController", + "returntype": "int", + "params": [ +{ "paramname": "ulControllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetControllerForGamepadIndex", + "returntype": "ControllerHandle_t", + "params": [ +{ "paramname": "nIndex" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetMotionData", + "returntype": "struct ControllerMotionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowDigitalActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowAnalogActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUserUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "unAccountID" ,"paramtype": "AccountID_t"}, +{ "paramname": "eListType" ,"paramtype": "EUserUGCList"}, +{ "paramname": "eMatchingUGCType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "eSortOrder" ,"paramtype": "EUserUGCListSortOrder"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryAllUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "eQueryType" ,"paramtype": "EUGCQuery"}, +{ "paramname": "eMatchingeMatchingUGCTypeFileType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUGCDetailsRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SendQueryUGCRequest", "callresult": "SteamUGCQueryCompleted_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCResult", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pDetails" ,"paramtype": "struct SteamUGCDetails_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCPreviewURL", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchURL" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchMetadata" ,"out_string_count": "cchMetadatasize" ,"paramtype": "char *"}, +{ "paramname": "cchMetadatasize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCStatistic", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "eStatType" ,"paramtype": "EItemStatistic"}, +{ "paramname": "pStatValue" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumAdditionalPreviews", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCAdditionalPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "previewIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchURLOrVideoID" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"}, +{ "paramname": "pchOriginalFileName" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchOriginalFileNameSize" ,"paramtype": "uint32"}, +{ "paramname": "pPreviewType" ,"paramtype": "EItemPreviewType *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumKeyValueTags", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "keyValueTagIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchKey" ,"out_string_count": "cchKeySize" ,"paramtype": "char *"}, +{ "paramname": "cchKeySize" ,"paramtype": "uint32"}, +{ "paramname": "pchValue" ,"out_string_count": "cchValueSize" ,"paramtype": "char *"}, +{ "paramname": "cchValueSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "ReleaseQueryUGCRequest", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddExcludedTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnOnlyIDs", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnOnlyIDs" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnKeyValueTags" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnLongDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnLongDescription" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnMetadata" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnChildren" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnAdditionalPreviews", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnAdditionalPreviews" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnTotalOnly", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnTotalOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetAllowCachedResponse", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetCloudFileNameFilter", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pMatchCloudFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetMatchAnyTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bMatchAnyTag" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetSearchText", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pSearchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetRankedByTrendDays", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unDays" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RequestUGCDetails", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateItem", "callresult": "CreateItemResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "eFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartItemUpdate", + "returntype": "UGCUpdateHandle_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTitle", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemUpdateLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchMetaData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "const struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemContent", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszContentFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "type" ,"paramtype": "EItemPreviewType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubmitItemUpdate", "callresult": "SubmitItemUpdateResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchChangeNote" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemUpdateProgress", + "returntype": "EItemUpdateStatus", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "punBytesProcessed" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetUserItemVote", "callresult": "SetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetUserItemVote", "callresult": "GetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemToFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemFromFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubscribeItem", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UnsubscribeItem", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetNumSubscribedItems", + "returntype": "uint32" +} +,{ + "classname": "ISteamUGC", + "methodname": "GetSubscribedItems", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemState", + "returntype": "uint32", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemInstallInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punSizeOnDisk" ,"paramtype": "uint64 *"}, +{ "paramname": "pchFolder" ,"out_string_count": "cchFolderSize" ,"paramtype": "char *"}, +{ "paramname": "cchFolderSize" ,"paramtype": "uint32"}, +{ "paramname": "punTimeStamp" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemDownloadInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "DownloadItem", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bHighPriority" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "BInitWorkshopForGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unWorkshopDepotID" ,"paramtype": "DepotId_t"}, +{ "paramname": "pszFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SuspendDownloads", + "returntype": "void", + "params": [ +{ "paramname": "bSuspend" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTrackingForAllItems", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetNumInstalledApps", + "returntype": "uint32" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetInstalledApps", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "unMaxAppIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppName", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppInstallDir", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchDirectory" ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppBuildId", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "DestructISteamHTMLSurface", + "returntype": "void" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CreateBrowser", "callresult": "HTML_BrowserReady_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchUserAgent" ,"paramtype": "const char *"}, +{ "paramname": "pchUserCSS" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "RemoveBrowser", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "LoadURL", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchURL" ,"paramtype": "const char *"}, +{ "paramname": "pchPostData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetSize", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "unWidth" ,"paramtype": "uint32"}, +{ "paramname": "unHeight" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopLoad", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Reload", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoBack", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoForward", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AddHeader", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ExecuteJavascript", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchScript" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDoubleClick", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseMove", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseWheel", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nDelta" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyChar", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "cUnicodeChar" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetHorizontalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetVerticalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetKeyFocus", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bHasKeyFocus" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ViewSource", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CopyToClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "PasteFromClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Find", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchSearchStr" ,"paramtype": "const char *"}, +{ "paramname": "bCurrentlyInFind" ,"paramtype": "bool"}, +{ "paramname": "bReverse" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopFind", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GetLinkAtPosition", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetCookie", + "returntype": "void", + "params": [ +{ "paramname": "pchHostname" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"}, +{ "paramname": "pchPath" ,"paramtype": "const char *"}, +{ "paramname": "nExpires" ,"paramtype": "RTime32"}, +{ "paramname": "bSecure" ,"paramtype": "bool"}, +{ "paramname": "bHTTPOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetPageScaleFactor", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "flZoom" ,"paramtype": "float"}, +{ "paramname": "nPointX" ,"paramtype": "int"}, +{ "paramname": "nPointY" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetBackgroundMode", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bBackgroundMode" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AllowStartRequest", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bAllowed" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "JSDialogResponse", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bResult" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultStatus", "desc": "Find out the status of an asynchronous inventory result handle.", + "returntype": "EResult", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultItems", "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutItemsArray" ,"out_array_count": "punOutItemsArraySize" ,"desc": "Output array" ,"paramtype": "struct SteamItemDetails_t *"}, +{ "paramname": "punOutItemsArraySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultTimestamp", "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", + "returntype": "uint32", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "CheckResultSteamID", "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "steamIDExpected" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DestroyResult", "desc": "Destroys a result handle and frees all associated memory.", + "returntype": "void", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetAllItems", "desc": "Captures the entire state of the current users Steam inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemsByID", "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pInstanceIDs" ,"array_count": "unCountInstanceIDs" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "unCountInstanceIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SerializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutBuffer" ,"out_buffer_count": "punOutBufferSize" ,"paramtype": "void *"}, +{ "paramname": "punOutBufferSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DeserializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "pOutResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pBuffer" ,"buffer_count": "punOutBufferSize" ,"paramtype": "const void *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bRESERVED_MUST_BE_FALSE" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GenerateItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayQuantity" ,"array_count": "unArrayLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GrantPromoItems", "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItem", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemDef" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ConsumeItem", "desc": "ConsumeItem() removes items from the inventory permanently.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemConsume" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ExchangeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayGenerate" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayGenerateQuantity" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayGenerateLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayDestroy" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "punArrayDestroyQuantity" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayDestroyLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TransferItemQuantity", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemIdSource" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"}, +{ "paramname": "itemIdDest" ,"paramtype": "SteamItemInstanceID_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SendItemDropHeartbeat", "desc": "Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.", + "returntype": "void" +} +,{ + "classname": "ISteamInventory", + "methodname": "TriggerItemDrop", "desc": "Playtime credit must be consumed and turned into item drops by your game.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "dropListDefinition" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TradeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "steamIDTradePartner" ,"paramtype": "class CSteamID"}, +{ "paramname": "pArrayGive" ,"array_count": "nArrayGiveLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGiveQuantity" ,"array_count": "nArrayGiveLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGiveLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayGet" ,"array_count": "nArrayGetLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGetQuantity" ,"array_count": "nArrayGetLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGetLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "LoadItemDefinitions", "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", + "returntype": "bool" +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionIDs", + "returntype": "bool", + "params": [ +{ "paramname": "pItemDefIDs" ,"out_array_count": "punItemDefIDsArraySize" ,"desc": "List of item definition IDs" ,"paramtype": "SteamItemDef_t *"}, +{ "paramname": "punItemDefIDsArraySize" ,"desc": "Size of array is passed in and actual size used is returned in this param" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionProperty", + "returntype": "bool", + "params": [ +{ "paramname": "iDefinition" ,"paramtype": "SteamItemDef_t"}, +{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, +{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, +{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "GetVideoURL", + "returntype": "void", + "params": [ +{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "IsBroadcasting", + "returntype": "bool", + "params": [ +{ "paramname": "pnNumViewers" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "InitGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usGamePort" ,"paramtype": "uint16"}, +{ "paramname": "usQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "nGameAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchVersionString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetProduct", + "returntype": "void", + "params": [ +{ "paramname": "pszProduct" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameDescription", + "returntype": "void", + "params": [ +{ "paramname": "pszGameDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetModDir", + "returntype": "void", + "params": [ +{ "paramname": "pszModDir" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetDedicatedServer", + "returntype": "void", + "params": [ +{ "paramname": "bDedicated" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOn", + "returntype": "void", + "params": [ +{ "paramname": "pszToken" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOnAnonymous", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOff", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BSecure", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "WasRestartRequested", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMaxPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cPlayersMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetBotPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cBotplayers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMapName", + "returntype": "void", + "params": [ +{ "paramname": "pszMapName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetPasswordProtected", + "returntype": "void", + "params": [ +{ "paramname": "bPasswordProtected" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorPort", + "returntype": "void", + "params": [ +{ "paramname": "unSpectatorPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszSpectatorServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ClearAllKeyValues", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetKeyValue", + "returntype": "void", + "params": [ +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameTags", + "returntype": "void", + "params": [ +{ "paramname": "pchGameTags" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameData", + "returntype": "void", + "params": [ +{ "paramname": "pchGameData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetRegion", + "returntype": "void", + "params": [ +{ "paramname": "pszRegion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserConnectAndAuthenticate", + "returntype": "bool", + "params": [ +{ "paramname": "unIPClient" ,"paramtype": "uint32"}, +{ "paramname": "pvAuthBlob" ,"paramtype": "const void *"}, +{ "paramname": "cubAuthBlobSize" ,"paramtype": "uint32"}, +{ "paramname": "pSteamIDUser" ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CreateUnauthenticatedUserConnection", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserDisconnect", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BUpdateUserData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchPlayerName" ,"paramtype": "const char *"}, +{ "paramname": "uScore" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "RequestUserGroupStatus", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDGroup" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetGameplayStats", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetServerReputation", "callresult": "GSReputation_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetPublicIP", + "returntype": "uint32" +} +,{ + "classname": "ISteamGameServer", + "methodname": "HandleIncomingPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pData" ,"paramtype": "const void *"}, +{ "paramname": "cbData" ,"paramtype": "int"}, +{ "paramname": "srcIP" ,"paramtype": "uint32"}, +{ "paramname": "srcPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetNextOutgoingPacket", + "returntype": "int", + "params": [ +{ "paramname": "pOut" ,"paramtype": "void *"}, +{ "paramname": "cbMaxOut" ,"paramtype": "int"}, +{ "paramname": "pNetAdr" ,"paramtype": "uint32 *"}, +{ "paramname": "pPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EnableHeartbeats", + "returntype": "void", + "params": [ +{ "paramname": "bActive" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetHeartbeatInterval", + "returntype": "void", + "params": [ +{ "paramname": "iHeartbeatInterval" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ForceHeartbeat", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "AssociateWithClan", "callresult": "AssociateWithClanResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ComputeNewPlayerCompatibility", "callresult": "ComputeNewPlayerCompatibilityResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDNewPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "RequestUserStats", "callresult": "GSStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "UpdateUserAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "ClearUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "StoreUserStats", "callresult": "GSStatsStored_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +] +} \ No newline at end of file diff --git a/lib/osx/include/steam/steam_api_flat.h b/lib/osx/include/steam/steam_api_flat.h new file mode 100644 index 0000000..e77e4cb --- /dev/null +++ b/lib/osx/include/steam/steam_api_flat.h @@ -0,0 +1,802 @@ +//====== Copyright (c) 1996-2014, Valve Corporation, All rights reserved. ======= +// +// Purpose: Header for flatted SteamAPI. Use this for binding to other languages. +// This file is auto-generated, do not edit it. +// +//============================================================================= + +#ifndef STEAMAPIFLAT_H +#define STEAMAPIFLAT_H +#ifdef _WIN32 +#pragma once +#endif + +#include <stdint.h> + + +typedef unsigned char uint8; +typedef unsigned char uint8; +typedef signed char int8; +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; +typedef int64 lint64; +typedef uint64 ulint64; +typedef uint8 Salt_t[8]; +typedef uint64 GID_t; +typedef uint64 JobID_t; +typedef GID_t TxnID_t; +typedef uint32 PackageId_t; +typedef uint32 BundleId_t; +typedef uint32 AppId_t; +typedef uint64 AssetClassId_t; +typedef uint32 PhysicalItemId_t; +typedef uint32 DepotId_t; +typedef uint32 RTime32; +typedef uint32 CellID_t; +typedef uint64 SteamAPICall_t; +typedef uint32 AccountID_t; +typedef uint32 PartnerId_t; +typedef uint64 ManifestId_t; +typedef uint32 HAuthTicket; +typedef void * BREAKPAD_HANDLE; +typedef char compile_time_assert_type[1]; +typedef int32 HSteamPipe; +typedef int32 HSteamUser; +typedef int16 FriendsGroupID_t; +typedef void * HServerListRequest; +typedef int HServerQuery; +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +typedef uint64 UGCFileWriteStreamHandle_t; +typedef char compile_time_assert_type[1]; +typedef uint64 SteamLeaderboard_t; +typedef uint64 SteamLeaderboardEntries_t; +typedef uint32 SNetSocket_t; +typedef uint32 SNetListenSocket_t; +typedef uint32 ScreenshotHandle; +typedef uint32 HTTPRequestHandle; +typedef uint32 HTTPCookieContainerHandle; +typedef uint64 ClientUnifiedMessageHandle; +typedef uint64 ControllerHandle_t; +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; +typedef uint32 HHTMLBrowser; +typedef uint64 SteamItemInstanceID_t; +typedef int32 SteamItemDef_t; +typedef int32 SteamInventoryResult_t; +// OpenVR Constants +int const_k_iSteamUserCallbacks = 100; +int const_k_iSteamGameServerCallbacks = 200; +int const_k_iSteamFriendsCallbacks = 300; +int const_k_iSteamBillingCallbacks = 400; +int const_k_iSteamMatchmakingCallbacks = 500; +int const_k_iSteamContentServerCallbacks = 600; +int const_k_iSteamUtilsCallbacks = 700; +int const_k_iClientFriendsCallbacks = 800; +int const_k_iClientUserCallbacks = 900; +int const_k_iSteamAppsCallbacks = 1000; +int const_k_iSteamUserStatsCallbacks = 1100; +int const_k_iSteamNetworkingCallbacks = 1200; +int const_k_iClientRemoteStorageCallbacks = 1300; +int const_k_iClientDepotBuilderCallbacks = 1400; +int const_k_iSteamGameServerItemsCallbacks = 1500; +int const_k_iClientUtilsCallbacks = 1600; +int const_k_iSteamGameCoordinatorCallbacks = 1700; +int const_k_iSteamGameServerStatsCallbacks = 1800; +int const_k_iSteam2AsyncCallbacks = 1900; +int const_k_iSteamGameStatsCallbacks = 2000; +int const_k_iClientHTTPCallbacks = 2100; +int const_k_iClientScreenshotsCallbacks = 2200; +int const_k_iSteamScreenshotsCallbacks = 2300; +int const_k_iClientAudioCallbacks = 2400; +int const_k_iClientUnifiedMessagesCallbacks = 2500; +int const_k_iSteamStreamLauncherCallbacks = 2600; +int const_k_iClientControllerCallbacks = 2700; +int const_k_iSteamControllerCallbacks = 2800; +int const_k_iClientParentalSettingsCallbacks = 2900; +int const_k_iClientDeviceAuthCallbacks = 3000; +int const_k_iClientNetworkDeviceManagerCallbacks = 3100; +int const_k_iClientMusicCallbacks = 3200; +int const_k_iClientRemoteClientManagerCallbacks = 3300; +int const_k_iClientUGCCallbacks = 3400; +int const_k_iSteamStreamClientCallbacks = 3500; +int const_k_IClientProductBuilderCallbacks = 3600; +int const_k_iClientShortcutsCallbacks = 3700; +int const_k_iClientRemoteControlManagerCallbacks = 3800; +int const_k_iSteamAppListCallbacks = 3900; +int const_k_iSteamMusicCallbacks = 4000; +int const_k_iSteamMusicRemoteCallbacks = 4100; +int const_k_iClientVRCallbacks = 4200; +int const_k_iClientGameNotificationCallbacks = 4300; +int const_k_iSteamGameNotificationCallbacks = 4400; +int const_k_iSteamHTMLSurfaceCallbacks = 4500; +int const_k_iClientVideoCallbacks = 4600; +int const_k_iClientInventoryCallbacks = 4700; +int const_k_iClientBluetoothManagerCallbacks = 4800; +int const_k_cchPersonaNameMax = 128; +int const_k_cwchPersonaNameMax = 32; +int const_k_cchMaxRichPresenceKeys = 20; +int const_k_cchMaxRichPresenceKeyLength = 64; +int const_k_cchMaxRichPresenceValueLength = 256; +int const_k_cchStatNameMax = 128; +int const_k_cchLeaderboardNameMax = 128; +int const_k_cLeaderboardDetailsMax = 64; +unsigned long const_k_InvalidUnifiedMessageHandle = 0; +unsigned long const_k_SteamItemInstanceIDInvalid = 0xffffffff; +int const_k_SteamInventoryResultInvalid = -1; + + + +// OpenVR Enums +// OpenVR Structs + + + +S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser(intptr_t instancePtr, HSteamPipe * phSteamPipe, EAccountType eAccountType); +S_API void SteamAPI_ISteamClient_ReleaseUser(intptr_t instancePtr, HSteamPipe hSteamPipe, HSteamUser hUser); +S_API class ISteamUser * SteamAPI_ISteamClient_GetISteamUser(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void SteamAPI_ISteamClient_SetLocalIPBinding(intptr_t instancePtr, uint32 unIP, uint16 usPort); +S_API class ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils(intptr_t instancePtr, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamApps * SteamAPI_ISteamClient_GetISteamApps(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamClient_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(intptr_t instancePtr); +S_API class ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUnifiedMessages * SteamAPI_ISteamClient_GetISteamUnifiedMessages(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamController * SteamAPI_ISteamClient_GetISteamController(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BLoggedOn(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamUser_GetSteamID(intptr_t instancePtr); +S_API int SteamAPI_ISteamUser_InitiateGameConnection(intptr_t instancePtr, void * pAuthBlob, int cbMaxAuthBlob, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure); +S_API void SteamAPI_ISteamUser_TerminateGameConnection(intptr_t instancePtr, uint32 unIPServer, uint16 usPortServer); +S_API void SteamAPI_ISteamUser_TrackAppUsageEvent(intptr_t instancePtr, class CGameID gameID, int eAppUsageEvent, const char * pchExtraInfo); +S_API bool SteamAPI_ISteamUser_GetUserDataFolder(intptr_t instancePtr, char * pchBuffer, int cubBuffer); +S_API void SteamAPI_ISteamUser_StartVoiceRecording(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_StopVoiceRecording(intptr_t instancePtr); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed, void * pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 * nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice(intptr_t instancePtr, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate); +S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(intptr_t instancePtr); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamUser_BIsBehindNAT(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_AdvertiseGame(intptr_t instancePtr, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket(intptr_t instancePtr, void * pDataToInclude, int cbDataToInclude); +S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API int SteamAPI_ISteamUser_GetGameBadgeLevel(intptr_t instancePtr, int nSeries, bool bFoil); +S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL(intptr_t instancePtr, const char * pchRedirectURL); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetPersonaName(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName(intptr_t instancePtr, const char * pchPersonaName); +S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState(intptr_t instancePtr); +S_API int SteamAPI_ISteamFriends_GetFriendCount(intptr_t instancePtr, int iFriendFlags); +S_API uint64 SteamAPI_ISteamFriends_GetFriendByIndex(intptr_t instancePtr, int iFriend, int iFriendFlags); +S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed(intptr_t instancePtr, class CSteamID steamIDFriend, struct FriendGameInfo_t * pFriendGameInfo); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(intptr_t instancePtr, class CSteamID steamIDFriend, int iPersonaName); +S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname(intptr_t instancePtr, class CSteamID steamIDPlayer); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount(intptr_t instancePtr); +S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(intptr_t instancePtr, int iFG); +S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(intptr_t instancePtr, FriendsGroupID_t friendsGroupID, class CSteamID * pOutSteamIDMembers, int nMembersCount); +S_API bool SteamAPI_ISteamFriends_HasFriend(intptr_t instancePtr, class CSteamID steamIDFriend, int iFriendFlags); +S_API int SteamAPI_ISteamFriends_GetClanCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetClanByIndex(intptr_t instancePtr, int iClan); +S_API const char * SteamAPI_ISteamFriends_GetClanName(intptr_t instancePtr, class CSteamID steamIDClan); +S_API const char * SteamAPI_ISteamFriends_GetClanTag(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts(intptr_t instancePtr, class CSteamID steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting); +S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts(intptr_t instancePtr, class CSteamID * psteamIDClans, int cClansToRequest); +S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource(intptr_t instancePtr, class CSteamID steamIDSource); +S_API uint64 SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(intptr_t instancePtr, class CSteamID steamIDSource, int iFriend); +S_API bool SteamAPI_ISteamFriends_IsUserInSource(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDSource); +S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(intptr_t instancePtr, class CSteamID steamIDUser, bool bSpeaking); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlay(intptr_t instancePtr, const char * pchDialog); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(intptr_t instancePtr, const char * pchDialog, class CSteamID steamID); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(intptr_t instancePtr, const char * pchURL); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(intptr_t instancePtr, AppId_t nAppID, EOverlayToStoreFlag eFlag); +S_API void SteamAPI_ISteamFriends_SetPlayedWith(intptr_t instancePtr, class CSteamID steamIDUserPlayedWith); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_RequestUserInformation(intptr_t instancePtr, class CSteamID steamIDUser, bool bRequireNameOnly); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOwner(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanOfficerCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOfficerByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iOfficer); +S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamFriends_SetRichPresence(intptr_t instancePtr, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamFriends_ClearRichPresence(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchKey); +S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(intptr_t instancePtr, class CSteamID steamIDFriend, int iKey); +S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_InviteUserToGame(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchConnectString); +S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetCoplayFriend(intptr_t instancePtr, int iCoplayFriend); +S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetChatMemberByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iUser); +S_API bool SteamAPI_ISteamFriends_SendClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, const char * pchText); +S_API int SteamAPI_ISteamFriends_GetClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, class CSteamID * psteamidChatter); +S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin(intptr_t instancePtr, class CSteamID steamIDClanChat, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(intptr_t instancePtr, bool bInterceptEnabled); +S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchMsgToSend); +S_API int SteamAPI_ISteamFriends_GetFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList(intptr_t instancePtr, uint32 unStartIndex); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(intptr_t instancePtr); +S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUtils_GetIPCountry(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetImageSize(intptr_t instancePtr, int iImage, uint32 * pnWidth, uint32 * pnHeight); +S_API bool SteamAPI_ISteamUtils_GetImageRGBA(intptr_t instancePtr, int iImage, uint8 * pubDest, int nDestBufferSize); +S_API bool SteamAPI_ISteamUtils_GetCSERIPPort(intptr_t instancePtr, uint32 * unIP, uint16 * usPort); +S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetAppID(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(intptr_t instancePtr, ENotificationPosition eNotificationPosition); +S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, bool * pbFailed); +S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason(intptr_t instancePtr, SteamAPICall_t hSteamAPICall); +S_API bool SteamAPI_ISteamUtils_GetAPICallResult(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed); +S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature(intptr_t instancePtr, const char * szFileName); +S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput(intptr_t instancePtr, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText); +S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(intptr_t instancePtr, char * pchText, uint32 cchText); +S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); +S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); +S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); +S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(intptr_t instancePtr, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToBeCloseTo); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(intptr_t instancePtr, int nSlotsAvailable); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(intptr_t instancePtr, ELobbyDistanceFilter eLobbyDistanceFilter); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(intptr_t instancePtr, int cMaxResults); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyByIndex(intptr_t instancePtr, int iLobby); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby(intptr_t instancePtr, ELobbyType eLobbyType, int cMaxMembers); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_LeaveLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDInvitee); +S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iMember); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize); +S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDUser, const char * pchKey); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(intptr_t instancePtr, class CSteamID steamIDLobby, const void * pvMsgBody, int cubMsgBody); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(intptr_t instancePtr, class CSteamID steamIDLobby, int iChatID, class CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, class CSteamID steamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, class CSteamID * psteamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby, int cMaxMembers); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType(intptr_t instancePtr, class CSteamID steamIDLobby, ELobbyType eLobbyType); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(intptr_t instancePtr, class CSteamID steamIDLobby, bool bLobbyJoinable); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDNewOwner); +S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDLobbyDependent); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(intptr_t instancePtr, HServerListRequest hRequest, EMatchMakingServerResponse response); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(intptr_t instancePtr, class gameserveritem_t & server); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(intptr_t instancePtr, const char * pchName, int nScore, float flTimePlayed); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(intptr_t instancePtr, const char * pchRule, const char * pchValue); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(intptr_t instancePtr); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList(intptr_t instancePtr, AppId_t iApp, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(intptr_t instancePtr, HServerListRequest hServerListRequest); +S_API class gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(intptr_t instancePtr, HServerListRequest hRequest); +S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPingResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPlayersResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingRulesResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(intptr_t instancePtr, HServerQuery hServerQuery); +S_API bool SteamAPI_ISteamRemoteStorage_FileWrite(intptr_t instancePtr, const char * pchFile, const void * pvData, int32 cubData); +S_API int32 SteamAPI_ISteamRemoteStorage_FileRead(intptr_t instancePtr, const char * pchFile, void * pvData, int32 cubDataToRead); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync(intptr_t instancePtr, const char * pchFile, const void * pvData, uint32 cubData); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync(intptr_t instancePtr, const char * pchFile, uint32 nOffset, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(intptr_t instancePtr, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileForget(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileDelete(intptr_t instancePtr, const char * pchFile); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(intptr_t instancePtr, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform); +S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileExists(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize(intptr_t instancePtr, const char * pchFile); +S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp(intptr_t instancePtr, const char * pchFile); +S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(intptr_t instancePtr, int iFile, int32 * pnFileSizeInBytes); +S_API bool SteamAPI_ISteamRemoteStorage_GetQuota(intptr_t instancePtr, uint64 * pnTotalBytes, uint64 * puAvailableBytes); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(intptr_t instancePtr); +S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(intptr_t instancePtr, bool bEnabled); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload(intptr_t instancePtr, UGCHandle_t hContent, uint32 unPriority); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(intptr_t instancePtr, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(intptr_t instancePtr, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, class CSteamID * pSteamIDOwner); +S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead(intptr_t instancePtr, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction); +S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(intptr_t instancePtr); +S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(intptr_t instancePtr, int32 iCachedContent); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(intptr_t instancePtr, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType); +S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(intptr_t instancePtr, class CSteamID steamId, uint32 unStartIndex, struct SteamParamStringArray_t * pRequiredTags, struct SteamParamStringArray_t * pExcludedTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo(intptr_t instancePtr, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(intptr_t instancePtr, EWorkshopFileAction eAction, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(intptr_t instancePtr, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, struct SteamParamStringArray_t * pTags, struct SteamParamStringArray_t * pUserTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(intptr_t instancePtr, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority); +S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUserStats_GetStat(intptr_t instancePtr, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetStat0(intptr_t instancePtr, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_SetStat(intptr_t instancePtr, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamUserStats_SetStat0(intptr_t instancePtr, const char * pchName, float fData); +S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(intptr_t instancePtr, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamUserStats_GetAchievement(intptr_t instancePtr, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_SetAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_ClearAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(intptr_t instancePtr, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_StoreStats(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetAchievementIcon(intptr_t instancePtr, const char * pchName); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(intptr_t instancePtr, const char * pchName, const char * pchKey); +S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(intptr_t instancePtr, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress); +S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementName(intptr_t instancePtr, uint32 iAchievement); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamUserStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_ResetAllStats(intptr_t instancePtr, bool bAchievementsToo); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName); +S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, class CSteamID * prgUsers, int cUsers); +S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(intptr_t instancePtr, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, struct LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(intptr_t instancePtr, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(intptr_t instancePtr, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(intptr_t instancePtr, const char * pchName, float * pflPercent); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats(intptr_t instancePtr, int nHistoryDays); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat(intptr_t instancePtr, const char * pchStatName, int64 * pData); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat0(intptr_t instancePtr, const char * pchStatName, double * pData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory(intptr_t instancePtr, const char * pchStatName, int64 * pData, uint32 cubData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory0(intptr_t instancePtr, const char * pchStatName, double * pData, uint32 cubData); +S_API bool SteamAPI_ISteamApps_BIsSubscribed(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsLowViolence(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsCybercafe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsVACBanned(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsSubscribedApp(intptr_t instancePtr, AppId_t appID); +S_API bool SteamAPI_ISteamApps_BIsDlcInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(intptr_t instancePtr); +S_API int SteamAPI_ISteamApps_GetDLCCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex(intptr_t instancePtr, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize); +S_API void SteamAPI_ISteamApps_InstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_UninstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_GetCurrentBetaName(intptr_t instancePtr, char * pchName, int cchNameBufferSize); +S_API bool SteamAPI_ISteamApps_MarkContentCorrupt(intptr_t instancePtr, bool bMissingFilesOnly); +S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots(intptr_t instancePtr, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots); +S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir(intptr_t instancePtr, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize); +S_API bool SteamAPI_ISteamApps_BIsAppInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint64 SteamAPI_ISteamApps_GetAppOwner(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam(intptr_t instancePtr, const char * pchKey); +S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress(intptr_t instancePtr, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API int SteamAPI_ISteamApps_GetAppBuildId(intptr_t instancePtr); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails(intptr_t instancePtr, const char * pszFileName); +S_API bool SteamAPI_ISteamNetworking_SendP2PPacket(intptr_t instancePtr, class CSteamID steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel); +S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(intptr_t instancePtr, uint32 * pcubMsgSize, int nChannel); +S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket(intptr_t instancePtr, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, class CSteamID * psteamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(intptr_t instancePtr, class CSteamID steamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState(intptr_t instancePtr, class CSteamID steamIDRemote, struct P2PSessionState_t * pConnectionState); +S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(intptr_t instancePtr, bool bAllow); +S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket(intptr_t instancePtr, int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(intptr_t instancePtr, class CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket(intptr_t instancePtr, uint32 nIP, uint16 nPort, int nTimeoutSec); +S_API bool SteamAPI_ISteamNetworking_DestroySocket(intptr_t instancePtr, SNetSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket(intptr_t instancePtr, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailable(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_RetrieveData(intptr_t instancePtr, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_GetSocketInfo(intptr_t instancePtr, SNetSocket_t hSocket, class CSteamID * pSteamIDRemote, int * peSocketStatus, uint32 * punIPRemote, uint16 * punPortRemote); +S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pnIP, uint16 * pnPort); +S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType(intptr_t instancePtr, SNetSocket_t hSocket); +S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize(intptr_t instancePtr, SNetSocket_t hSocket); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot(intptr_t instancePtr, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(intptr_t instancePtr, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight); +S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot(intptr_t instancePtr); +S_API void SteamAPI_ISteamScreenshots_HookScreenshots(intptr_t instancePtr, bool bHook); +S_API bool SteamAPI_ISteamScreenshots_SetLocation(intptr_t instancePtr, ScreenshotHandle hScreenshot, const char * pchLocation); +S_API bool SteamAPI_ISteamScreenshots_TagUser(intptr_t instancePtr, ScreenshotHandle hScreenshot, class CSteamID steamID); +S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile(intptr_t instancePtr, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID); +S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(intptr_t instancePtr); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(intptr_t instancePtr, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename); +S_API bool SteamAPI_ISteamMusic_BIsEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusic_BIsPlaying(intptr_t instancePtr); +S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Play(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Pause(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayPrevious(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayNext(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_SetVolume(intptr_t instancePtr, float flVolume); +S_API float SteamAPI_ISteamMusic_GetVolume(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName(intptr_t instancePtr, const char * pchDisplayName); +S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableQueue(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(intptr_t instancePtr, AudioPlayback_Status nStatus); +S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume(intptr_t instancePtr, float flValue); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(intptr_t instancePtr, bool bAvailable); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(intptr_t instancePtr, const char * pchText); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(intptr_t instancePtr, int nValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(intptr_t instancePtr); +S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest(intptr_t instancePtr, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(intptr_t instancePtr, HTTPRequestHandle hRequest, uint64 ulContextValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 * unBodySize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(intptr_t instancePtr, HTTPRequestHandle hRequest, float * pflPercentOut); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen); +S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer(intptr_t instancePtr, bool bAllowResponsesToModify); +S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetCookie(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(intptr_t instancePtr, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchUserAgentInfo); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(intptr_t instancePtr, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unMilliseconds); +S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(intptr_t instancePtr, HTTPRequestHandle hRequest, bool * pbWasTimedOut); +S_API ClientUnifiedMessageHandle SteamAPI_ISteamUnifiedMessages_SendMethod(intptr_t instancePtr, const char * pchServiceMethod, const void * pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, uint32 * punResponseSize, EResult * peResult); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, void * pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease); +S_API bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle); +S_API bool SteamAPI_ISteamUnifiedMessages_SendNotification(intptr_t instancePtr, const char * pchServiceNotification, const void * pNotificationBuffer, uint32 unNotificationBufferSize); +S_API bool SteamAPI_ISteamController_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamController_Shutdown(intptr_t instancePtr); +S_API void SteamAPI_ISteamController_RunFrame(intptr_t instancePtr); +S_API int SteamAPI_ISteamController_GetConnectedControllers(intptr_t instancePtr, ControllerHandle_t * handlesOut); +S_API bool SteamAPI_ISteamController_ShowBindingPanel(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle(intptr_t instancePtr, const char * pszActionSetName); +S_API void SteamAPI_ISteamController_ActivateActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle); +S_API int SteamAPI_ISteamController_GetDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut); +S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle); +S_API int SteamAPI_ISteamController_GetAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut); +S_API void SteamAPI_ISteamController_StopAnalogActionMomentum(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction); +S_API void SteamAPI_ISteamController_TriggerHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec); +S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags); +S_API int SteamAPI_ISteamController_GetGamepadIndexForController(intptr_t instancePtr, ControllerHandle_t ulControllerHandle); +S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex(intptr_t instancePtr, int nIndex); +S_API struct ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API bool SteamAPI_ISteamController_ShowDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition); +S_API bool SteamAPI_ISteamController_ShowAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(intptr_t instancePtr, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(intptr_t instancePtr, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, struct SteamUGCDetails_t * pDetails); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize); +S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_AddRequiredTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_AddExcludedTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnOnlyIDs); +S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnKeyValueTags); +S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnLongDescription); +S_API bool SteamAPI_ISteamUGC_SetReturnMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnMetadata); +S_API bool SteamAPI_ISteamUGC_SetReturnChildren(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnChildren); +S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews); +S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnTotalOnly); +S_API bool SteamAPI_ISteamUGC_SetLanguage(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds); +S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pMatchCloudFileName); +S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag(intptr_t instancePtr, UGCQueryHandle_t handle, bool bMatchAnyTag); +S_API bool SteamAPI_ISteamUGC_SetSearchText(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pSearchText); +S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); +S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pKey, const char * pValue); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds); +S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem(intptr_t instancePtr, AppId_t nConsumerAppId, EWorkshopFileType eFileType); +S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate(intptr_t instancePtr, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_SetItemTitle(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchTitle); +S_API bool SteamAPI_ISteamUGC_SetItemDescription(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchDescription); +S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetItemMetadata(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchMetaData); +S_API bool SteamAPI_ISteamUGC_SetItemVisibility(intptr_t instancePtr, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamUGC_SetItemTags(intptr_t instancePtr, UGCUpdateHandle_t updateHandle, const struct SteamParamStringArray_t * pTags); +S_API bool SteamAPI_ISteamUGC_SetItemContent(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszContentFolder); +S_API bool SteamAPI_ISteamUGC_SetItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey); +S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchChangeNote); +S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress(intptr_t instancePtr, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API uint32 SteamAPI_ISteamUGC_GetItemState(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp); +S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API bool SteamAPI_ISteamUGC_DownloadItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bHighPriority); +S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(intptr_t instancePtr, DepotId_t unWorkshopDepotID, const char * pszFolder); +S_API void SteamAPI_ISteamUGC_SuspendDownloads(intptr_t instancePtr, bool bSuspend); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps(intptr_t instancePtr, AppId_t * pvecAppID, uint32 unMaxAppIDs); +S_API int SteamAPI_ISteamAppList_GetAppName(intptr_t instancePtr, AppId_t nAppID, char * pchName, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppInstallDir(intptr_t instancePtr, AppId_t nAppID, char * pchDirectory, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppBuildId(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Shutdown(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser(intptr_t instancePtr, const char * pchUserAgent, const char * pchUserCSS); +S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_LoadURL(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData); +S_API void SteamAPI_ISteamHTMLSurface_SetSize(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight); +S_API void SteamAPI_ISteamHTMLSurface_StopLoad(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Reload(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoBack(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoForward(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_AddHeader(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchScript); +S_API void SteamAPI_ISteamHTMLSurface_MouseUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseMove(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_MouseWheel(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int32 nDelta); +S_API void SteamAPI_ISteamHTMLSurface_KeyDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyChar(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus); +S_API void SteamAPI_ISteamHTMLSurface_ViewSource(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Find(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse); +S_API void SteamAPI_ISteamHTMLSurface_StopFind(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_SetCookie(intptr_t instancePtr, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly); +S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY); +S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bBackgroundMode); +S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bAllowed); +S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bResult); +S_API EResult SteamAPI_ISteamInventory_GetResultStatus(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetResultItems(intptr_t instancePtr, SteamInventoryResult_t resultHandle, struct SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize); +S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_CheckResultSteamID(intptr_t instancePtr, SteamInventoryResult_t resultHandle, class CSteamID steamIDExpected); +S_API void SteamAPI_ISteamInventory_DestroyResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetAllItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_GetItemsByID(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs); +S_API bool SteamAPI_ISteamInventory_SerializeResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize); +S_API bool SteamAPI_ISteamInventory_DeserializeResult(intptr_t instancePtr, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE); +S_API bool SteamAPI_ISteamInventory_GenerateItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_GrantPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_AddPromoItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef); +S_API bool SteamAPI_ISteamInventory_AddPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_ConsumeItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity); +S_API bool SteamAPI_ISteamInventory_ExchangeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength); +S_API bool SteamAPI_ISteamInventory_TransferItemQuantity(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest); +S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_TriggerItemDrop(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition); +S_API bool SteamAPI_ISteamInventory_TradeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, class CSteamID steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength); +S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(intptr_t instancePtr, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(intptr_t instancePtr, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); +S_API void SteamAPI_ISteamVideo_GetVideoURL(intptr_t instancePtr, AppId_t unVideoAppID); +S_API bool SteamAPI_ISteamVideo_IsBroadcasting(intptr_t instancePtr, int * pnNumViewers); +S_API bool SteamAPI_ISteamGameServer_InitGameServer(intptr_t instancePtr, uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char * pchVersionString); +S_API void SteamAPI_ISteamGameServer_SetProduct(intptr_t instancePtr, const char * pszProduct); +S_API void SteamAPI_ISteamGameServer_SetGameDescription(intptr_t instancePtr, const char * pszGameDescription); +S_API void SteamAPI_ISteamGameServer_SetModDir(intptr_t instancePtr, const char * pszModDir); +S_API void SteamAPI_ISteamGameServer_SetDedicatedServer(intptr_t instancePtr, bool bDedicated); +S_API void SteamAPI_ISteamGameServer_LogOn(intptr_t instancePtr, const char * pszToken); +S_API void SteamAPI_ISteamGameServer_LogOnAnonymous(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_LogOff(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BLoggedOn(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BSecure(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamGameServer_GetSteamID(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_WasRestartRequested(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount(intptr_t instancePtr, int cPlayersMax); +S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount(intptr_t instancePtr, int cBotplayers); +S_API void SteamAPI_ISteamGameServer_SetServerName(intptr_t instancePtr, const char * pszServerName); +S_API void SteamAPI_ISteamGameServer_SetMapName(intptr_t instancePtr, const char * pszMapName); +S_API void SteamAPI_ISteamGameServer_SetPasswordProtected(intptr_t instancePtr, bool bPasswordProtected); +S_API void SteamAPI_ISteamGameServer_SetSpectatorPort(intptr_t instancePtr, uint16 unSpectatorPort); +S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName(intptr_t instancePtr, const char * pszSpectatorServerName); +S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetKeyValue(intptr_t instancePtr, const char * pKey, const char * pValue); +S_API void SteamAPI_ISteamGameServer_SetGameTags(intptr_t instancePtr, const char * pchGameTags); +S_API void SteamAPI_ISteamGameServer_SetGameData(intptr_t instancePtr, const char * pchGameData); +S_API void SteamAPI_ISteamGameServer_SetRegion(intptr_t instancePtr, const char * pszRegion); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(intptr_t instancePtr, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, class CSteamID * pSteamIDUser); +S_API uint64 SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchPlayerName, uint32 uScore); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDGroup); +S_API void SteamAPI_ISteamGameServer_GetGameplayStats(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket(intptr_t instancePtr, const void * pData, int cbData, uint32 srcIP, uint16 srcPort); +S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(intptr_t instancePtr, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort); +S_API void SteamAPI_ISteamGameServer_EnableHeartbeats(intptr_t instancePtr, bool bActive); +S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval(intptr_t instancePtr, int iHeartbeatInterval); +S_API void SteamAPI_ISteamGameServer_ForceHeartbeat(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan(intptr_t instancePtr, class CSteamID steamIDClan); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(intptr_t instancePtr, class CSteamID steamIDNewPlayer); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float fData); +S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +#endif // STEAMAPIFLAT_H + + diff --git a/lib/osx/include/steam/steam_api_internal.h b/lib/osx/include/steam/steam_api_internal.h new file mode 100644 index 0000000..ed0423b --- /dev/null +++ b/lib/osx/include/steam/steam_api_internal.h @@ -0,0 +1,327 @@ +//====== Copyright 1996-2015, Valve Corporation, All rights reserved. ======= +// +// Purpose: Internal private Steamworks API declarations and definitions +// +//============================================================================= + +#ifndef STEAM_API_INTERNAL_H +#define STEAM_API_INTERNAL_H + +S_API HSteamUser SteamAPI_GetHSteamUser(); +S_API void * S_CALLTYPE SteamInternal_ContextInit( void *pContextInitData ); +S_API void * S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); + +#if !defined( STEAM_API_EXPORTS ) + +inline void S_CALLTYPE SteamInternal_OnContextInit( void* p ) +{ + ((CSteamAPIContext*)p)->Clear(); + if ( SteamAPI_GetHSteamPipe() ) + ((CSteamAPIContext*)p)->Init(); +} +inline CSteamAPIContext& SteamInternal_ModuleContext() +{ + // SteamInternal_ContextInit takes a base pointer for the equivalent of + // struct { void (*pFn)(void* pCtx); uintp counter; CSteamAPIContext ctx; } + // Do not change layout of 2 + sizeof... or add non-pointer aligned data! + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* s_CallbackCounterAndContext[ 2 + sizeof(CSteamAPIContext)/sizeof(void*) ] = { (void*)&SteamInternal_OnContextInit, 0 }; + return *(CSteamAPIContext*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); +} + +inline ISteamClient *SteamClient() { return SteamInternal_ModuleContext().SteamClient(); } +inline ISteamUser *SteamUser() { return SteamInternal_ModuleContext().SteamUser(); } +inline ISteamFriends *SteamFriends() { return SteamInternal_ModuleContext().SteamFriends(); } +inline ISteamUtils *SteamUtils() { return SteamInternal_ModuleContext().SteamUtils(); } +inline ISteamMatchmaking *SteamMatchmaking() { return SteamInternal_ModuleContext().SteamMatchmaking(); } +inline ISteamUserStats *SteamUserStats() { return SteamInternal_ModuleContext().SteamUserStats(); } +inline ISteamApps *SteamApps() { return SteamInternal_ModuleContext().SteamApps(); } +inline ISteamMatchmakingServers *SteamMatchmakingServers() { return SteamInternal_ModuleContext().SteamMatchmakingServers(); } +inline ISteamNetworking *SteamNetworking() { return SteamInternal_ModuleContext().SteamNetworking(); } +inline ISteamRemoteStorage *SteamRemoteStorage() { return SteamInternal_ModuleContext().SteamRemoteStorage(); } +inline ISteamScreenshots *SteamScreenshots() { return SteamInternal_ModuleContext().SteamScreenshots(); } +inline ISteamHTTP *SteamHTTP() { return SteamInternal_ModuleContext().SteamHTTP(); } +inline ISteamUnifiedMessages *SteamUnifiedMessages() { return SteamInternal_ModuleContext().SteamUnifiedMessages(); } +inline ISteamController *SteamController() { return SteamInternal_ModuleContext().SteamController(); } +inline ISteamUGC *SteamUGC() { return SteamInternal_ModuleContext().SteamUGC(); } +inline ISteamAppList *SteamAppList() { return SteamInternal_ModuleContext().SteamAppList(); } +inline ISteamMusic *SteamMusic() { return SteamInternal_ModuleContext().SteamMusic(); } +inline ISteamMusicRemote *SteamMusicRemote() { return SteamInternal_ModuleContext().SteamMusicRemote(); } +inline ISteamHTMLSurface *SteamHTMLSurface() { return SteamInternal_ModuleContext().SteamHTMLSurface(); } +inline ISteamInventory *SteamInventory() { return SteamInternal_ModuleContext().SteamInventory(); } +inline ISteamVideo *SteamVideo() { return SteamInternal_ModuleContext().SteamVideo(); } + +#endif // !defined( STEAM_API_EXPORTS ) + + +inline void CSteamAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamUser = NULL; + m_pSteamFriends = NULL; + m_pSteamUtils = NULL; + m_pSteamMatchmaking = NULL; + m_pSteamUserStats = NULL; + m_pSteamApps = NULL; + m_pSteamMatchmakingServers = NULL; + m_pSteamNetworking = NULL; + m_pSteamRemoteStorage = NULL; + m_pSteamHTTP = NULL; + m_pSteamScreenshots = NULL; + m_pSteamMusic = NULL; + m_pSteamUnifiedMessages = NULL; + m_pController = NULL; + m_pSteamUGC = NULL; + m_pSteamAppList = NULL; + m_pSteamMusic = NULL; + m_pSteamMusicRemote = NULL; + m_pSteamHTMLSurface = NULL; + m_pSteamInventory = NULL; +} + + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamAPIContext::Init() +{ + HSteamUser hSteamUser = SteamAPI_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamUser = m_pSteamClient->GetISteamUser( hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION ); + if ( !m_pSteamUser ) + return false; + + m_pSteamFriends = m_pSteamClient->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION ); + if ( !m_pSteamFriends ) + return false; + + m_pSteamUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamUtils ) + return false; + + m_pSteamMatchmaking = m_pSteamClient->GetISteamMatchmaking( hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION ); + if ( !m_pSteamMatchmaking ) + return false; + + m_pSteamMatchmakingServers = m_pSteamClient->GetISteamMatchmakingServers( hSteamUser, hSteamPipe, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); + if ( !m_pSteamMatchmakingServers ) + return false; + + m_pSteamUserStats = m_pSteamClient->GetISteamUserStats( hSteamUser, hSteamPipe, STEAMUSERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamUserStats ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + m_pSteamNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamNetworking ) + return false; + + m_pSteamRemoteStorage = m_pSteamClient->GetISteamRemoteStorage( hSteamUser, hSteamPipe, STEAMREMOTESTORAGE_INTERFACE_VERSION ); + if ( !m_pSteamRemoteStorage ) + return false; + + m_pSteamScreenshots = m_pSteamClient->GetISteamScreenshots( hSteamUser, hSteamPipe, STEAMSCREENSHOTS_INTERFACE_VERSION ); + if ( !m_pSteamScreenshots ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamUnifiedMessages = m_pSteamClient->GetISteamUnifiedMessages( hSteamUser, hSteamPipe, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION ); + if ( !m_pSteamUnifiedMessages ) + return false; + + m_pController = m_pSteamClient->GetISteamController( hSteamUser, hSteamPipe, STEAMCONTROLLER_INTERFACE_VERSION ); + if ( !m_pController ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamAppList = m_pSteamClient->GetISteamAppList( hSteamUser, hSteamPipe, STEAMAPPLIST_INTERFACE_VERSION ); + if ( !m_pSteamAppList ) + return false; + + m_pSteamMusic = m_pSteamClient->GetISteamMusic( hSteamUser, hSteamPipe, STEAMMUSIC_INTERFACE_VERSION ); + if ( !m_pSteamMusic ) + return false; + + m_pSteamMusicRemote = m_pSteamClient->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION ); + if ( !m_pSteamMusicRemote ) + return false; + + m_pSteamHTMLSurface = m_pSteamClient->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION ); + if ( !m_pSteamHTMLSurface ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamVideo = m_pSteamClient->GetISteamVideo( hSteamUser, hSteamPipe, STEAMVIDEO_INTERFACE_VERSION ); + if ( !m_pSteamVideo ) + return false; + + return true; +} + + +//----------------------------------------------------------------------------- +// The following macros are implementation details, not intended for public use +//----------------------------------------------------------------------------- +#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) +#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED +#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y +#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ + struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ + CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ + private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + pOuter->func( reinterpret_cast<param*>( pvParam ) ); \ + } \ + } m_steamcallback_ ## func ; void func( param *pParam ) +#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ + CCallback< thisclass, param > var; void func( param *pParam ) + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +inline CCallResult<T, P>::CCallResult() +{ + m_hAPICall = k_uAPICallInvalid; + m_pObj = NULL; + m_Func = NULL; + m_iCallback = P::k_iCallback; +} + +template< class T, class P > +inline void CCallResult<T, P>::Set( SteamAPICall_t hAPICall, T *p, func_t func ) +{ + if ( m_hAPICall ) + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + + m_hAPICall = hAPICall; + m_pObj = p; + m_Func = func; + + if ( hAPICall ) + SteamAPI_RegisterCallResult( this, hAPICall ); +} + +template< class T, class P > +inline bool CCallResult<T, P>::IsActive() const +{ + return (m_hAPICall != k_uAPICallInvalid); +} + +template< class T, class P > +inline void CCallResult<T, P>::Cancel() +{ + if ( m_hAPICall != k_uAPICallInvalid ) + { + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + m_hAPICall = k_uAPICallInvalid; + } + +} + +template< class T, class P > +inline CCallResult<T, P>::~CCallResult() +{ + Cancel(); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam ) +{ + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, false); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) +{ + if ( hSteamAPICall == m_hAPICall ) + { + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, bIOFailure); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver > +inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) + : m_pObj( NULL ), m_Func( NULL ) +{ + if ( bGameserver ) + { + this->SetGameserverFlag(); + } + Register( pObj, func ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) +{ + if ( !pObj || !func ) + return; + + if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) + Unregister(); + + m_pObj = pObj; + m_Func = func; + // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered + SteamAPI_RegisterCallback( this, P::k_iCallback ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Unregister() +{ + // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered + SteamAPI_UnregisterCallback( this ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) +{ + (m_pObj->*m_Func)((P *)pvParam); +} + + +#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) +// this should be called before the game initialized the steam APIs +// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) +// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) +// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder +// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback +// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. +S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); +S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#endif + + +#endif // STEAM_API_INTERNAL_H diff --git a/lib/osx/include/steam/steam_api_interop.cs b/lib/osx/include/steam/steam_api_interop.cs new file mode 100644 index 0000000..f7a6775 --- /dev/null +++ b/lib/osx/include/steam/steam_api_interop.cs @@ -0,0 +1,10470 @@ +//====== Copyright 1996-2016, Valve Corporation, All rights reserved. ======= +// +// Purpose: This file contains C#/managed code bindings for the SteamAPI interfaces +// This file is auto-generated, do not edit it. +// +//============================================================================= + +using System; +using System.Runtime.InteropServices; +using Valve.Steamworks; +using Valve.Interop; + +namespace Valve.Interop +{ + +public class NativeEntrypoints +{ + + +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe")] +internal static extern uint SteamAPI_ISteamClient_CreateSteamPipe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BReleaseSteamPipe")] +internal static extern bool SteamAPI_ISteamClient_BReleaseSteamPipe(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ConnectToGlobalUser")] +internal static extern uint SteamAPI_ISteamClient_ConnectToGlobalUser(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateLocalUser")] +internal static extern uint SteamAPI_ISteamClient_CreateLocalUser(IntPtr instancePtr, ref uint phSteamPipe, uint eAccountType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ReleaseUser")] +internal static extern void SteamAPI_ISteamClient_ReleaseUser(IntPtr instancePtr, uint hSteamPipe, uint hUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUser")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUser(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServer")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServer(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetLocalIPBinding")] +internal static extern void SteamAPI_ISteamClient_SetLocalIPBinding(IntPtr instancePtr, uint unIP, char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamFriends")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamFriends(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUtils")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUtils(IntPtr instancePtr, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmaking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmaking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmakingServers")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmakingServers(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGenericInterface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGenericInterface(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUserStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUserStats(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServerStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServerStats(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamApps")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamApps(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamNetworking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamNetworking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamRemoteStorage")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamRemoteStorage(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamScreenshots(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamClient_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamClient_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed")] +internal static extern bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTTP")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTTP(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUnifiedMessages")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUnifiedMessages(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamController")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamController(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUGC")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUGC(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamAppList")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamAppList(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusic")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusic(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusicRemote")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusicRemote(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTMLSurface(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInventory(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamVideo(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser")] +internal static extern uint SteamAPI_ISteamUser_GetHSteamUser(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BLoggedOn")] +internal static extern bool SteamAPI_ISteamUser_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetSteamID")] +internal static extern ulong SteamAPI_ISteamUser_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection")] +internal static extern int SteamAPI_ISteamUser_InitiateGameConnection(IntPtr instancePtr, IntPtr pAuthBlob, int cbMaxAuthBlob, ulong steamIDGameServer, uint unIPServer, char usPortServer, bool bSecure); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection")] +internal static extern void SteamAPI_ISteamUser_TerminateGameConnection(IntPtr instancePtr, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent")] +internal static extern void SteamAPI_ISteamUser_TrackAppUsageEvent(IntPtr instancePtr, ulong gameID, int eAppUsageEvent, string pchExtraInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetUserDataFolder")] +internal static extern bool SteamAPI_ISteamUser_GetUserDataFolder(IntPtr instancePtr, string pchBuffer, int cubBuffer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StartVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StartVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StopVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice")] +internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoice")] +internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed, IntPtr pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, ref uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_DecompressVoice")] +internal static extern uint SteamAPI_ISteamUser_DecompressVoice(IntPtr instancePtr, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate")] +internal static extern uint SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamUser_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_EndAuthSession")] +internal static extern void SteamAPI_ISteamUser_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamUser_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamUser_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsBehindNAT")] +internal static extern bool SteamAPI_ISteamUser_BIsBehindNAT(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_AdvertiseGame")] +internal static extern void SteamAPI_ISteamUser_AdvertiseGame(IntPtr instancePtr, ulong steamIDGameServer, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestEncryptedAppTicket")] +internal static extern ulong SteamAPI_ISteamUser_RequestEncryptedAppTicket(IntPtr instancePtr, IntPtr pDataToInclude, int cbDataToInclude); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetEncryptedAppTicket")] +internal static extern bool SteamAPI_ISteamUser_GetEncryptedAppTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetGameBadgeLevel")] +internal static extern int SteamAPI_ISteamUser_GetGameBadgeLevel(IntPtr instancePtr, int nSeries, bool bFoil); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetPlayerSteamLevel")] +internal static extern int SteamAPI_ISteamUser_GetPlayerSteamLevel(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL")] +internal static extern ulong SteamAPI_ISteamUser_RequestStoreAuthURL(IntPtr instancePtr, string pchRedirectURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneVerified(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled")] +internal static extern bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneIdentifying")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneIdentifying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneRequiringVerification")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPersonaName(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName")] +internal static extern ulong SteamAPI_ISteamFriends_SetPersonaName(IntPtr instancePtr, string pchPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetPersonaState(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCount(IntPtr instancePtr, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendByIndex(IntPtr instancePtr, int iFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRelationship")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendRelationship(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendPersonaState(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaName(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendGamePlayed")] +internal static extern bool SteamAPI_ISteamFriends_GetFriendGamePlayed(IntPtr instancePtr, ulong steamIDFriend, ref FriendGameInfo_t pFriendGameInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(IntPtr instancePtr, ulong steamIDFriend, int iPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendSteamLevel")] +internal static extern int SteamAPI_ISteamFriends_GetFriendSteamLevel(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPlayerNickname")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPlayerNickname(IntPtr instancePtr, ulong steamIDPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex")] +internal static extern char SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(IntPtr instancePtr, int iFG); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendsGroupName(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersList")] +internal static extern void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(IntPtr instancePtr, char friendsGroupID, [In, Out] CSteamID[] pOutSteamIDMembers, int nMembersCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_HasFriend")] +internal static extern bool SteamAPI_ISteamFriends_HasFriend(IntPtr instancePtr, ulong steamIDFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanByIndex(IntPtr instancePtr, int iClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanName(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanTag")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanTag(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanActivityCounts")] +internal static extern bool SteamAPI_ISteamFriends_GetClanActivityCounts(IntPtr instancePtr, ulong steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_DownloadClanActivityCounts")] +internal static extern ulong SteamAPI_ISteamFriends_DownloadClanActivityCounts(IntPtr instancePtr, [In, Out] CSteamID[] psteamIDClans, int cClansToRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCountFromSource")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCountFromSource(IntPtr instancePtr, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(IntPtr instancePtr, ulong steamIDSource, int iFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsUserInSource")] +internal static extern bool SteamAPI_ISteamFriends_IsUserInSource(IntPtr instancePtr, ulong steamIDUser, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking")] +internal static extern void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(IntPtr instancePtr, ulong steamIDUser, bool bSpeaking); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlay")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlay(IntPtr instancePtr, string pchDialog); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToUser")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(IntPtr instancePtr, string pchDialog, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(IntPtr instancePtr, string pchURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToStore")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(IntPtr instancePtr, uint nAppID, char eFlag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPlayedWith")] +internal static extern void SteamAPI_ISteamFriends_SetPlayedWith(IntPtr instancePtr, ulong steamIDUserPlayedWith); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetSmallFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetSmallFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetMediumFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetMediumFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetLargeFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetLargeFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestUserInformation")] +internal static extern bool SteamAPI_ISteamFriends_RequestUserInformation(IntPtr instancePtr, ulong steamIDUser, bool bRequireNameOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestClanOfficerList")] +internal static extern ulong SteamAPI_ISteamFriends_RequestClanOfficerList(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOwner")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOwner(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanOfficerCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOfficerByIndex(IntPtr instancePtr, ulong steamIDClan, int iOfficer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetUserRestrictions")] +internal static extern uint SteamAPI_ISteamFriends_GetUserRestrictions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetRichPresence")] +internal static extern bool SteamAPI_ISteamFriends_SetRichPresence(IntPtr instancePtr, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ClearRichPresence")] +internal static extern void SteamAPI_ISteamFriends_ClearRichPresence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresence")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(IntPtr instancePtr, ulong steamIDFriend, int iKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestFriendRichPresence")] +internal static extern void SteamAPI_ISteamFriends_RequestFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_InviteUserToGame")] +internal static extern bool SteamAPI_ISteamFriends_InviteUserToGame(IntPtr instancePtr, ulong steamIDFriend, string pchConnectString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetCoplayFriendCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriend")] +internal static extern ulong SteamAPI_ISteamFriends_GetCoplayFriend(IntPtr instancePtr, int iCoplayFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayTime")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCoplayTime(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayGame")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendCoplayGame(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_JoinClanChatRoom")] +internal static extern ulong SteamAPI_ISteamFriends_JoinClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_LeaveClanChatRoom")] +internal static extern bool SteamAPI_ISteamFriends_LeaveClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMemberCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMemberCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetChatMemberByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetChatMemberByIndex(IntPtr instancePtr, ulong steamIDClan, int iUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SendClanChatMessage")] +internal static extern bool SteamAPI_ISteamFriends_SendClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMessage")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref uint peChatEntryType, ref CSteamID psteamidChatter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatAdmin")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatAdmin(IntPtr instancePtr, ulong steamIDClanChat, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetListenForFriendsMessages")] +internal static extern bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(IntPtr instancePtr, bool bInterceptEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ReplyToFriendMessage")] +internal static extern bool SteamAPI_ISteamFriends_ReplyToFriendMessage(IntPtr instancePtr, ulong steamIDFriend, string pchMsgToSend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendMessage")] +internal static extern int SteamAPI_ISteamFriends_GetFriendMessage(IntPtr instancePtr, ulong steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFollowerCount")] +internal static extern ulong SteamAPI_ISteamFriends_GetFollowerCount(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsFollowing")] +internal static extern ulong SteamAPI_ISteamFriends_IsFollowing(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_EnumerateFollowingList")] +internal static extern ulong SteamAPI_ISteamFriends_EnumerateFollowingList(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceAppActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceAppActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetConnectedUniverse")] +internal static extern int SteamAPI_ISteamUtils_GetConnectedUniverse(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetServerRealTime")] +internal static extern uint SteamAPI_ISteamUtils_GetServerRealTime(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCountry")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetIPCountry(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageSize")] +internal static extern bool SteamAPI_ISteamUtils_GetImageSize(IntPtr instancePtr, int iImage, ref uint pnWidth, ref uint pnHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageRGBA")] +internal static extern bool SteamAPI_ISteamUtils_GetImageRGBA(IntPtr instancePtr, int iImage, IntPtr pubDest, int nDestBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCSERIPPort")] +internal static extern bool SteamAPI_ISteamUtils_GetCSERIPPort(IntPtr instancePtr, ref uint unIP, ref char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCurrentBatteryPower")] +internal static extern byte SteamAPI_ISteamUtils_GetCurrentBatteryPower(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAppID")] +internal static extern uint SteamAPI_ISteamUtils_GetAppID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationPosition")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(IntPtr instancePtr, uint eNotificationPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsAPICallCompleted")] +internal static extern bool SteamAPI_ISteamUtils_IsAPICallCompleted(IntPtr instancePtr, ulong hSteamAPICall, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallFailureReason")] +internal static extern int SteamAPI_ISteamUtils_GetAPICallFailureReason(IntPtr instancePtr, ulong hSteamAPICall); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult")] +internal static extern bool SteamAPI_ISteamUtils_GetAPICallResult(IntPtr instancePtr, ulong hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamUtils_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamUtils_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsOverlayEnabled")] +internal static extern bool SteamAPI_ISteamUtils_IsOverlayEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_BOverlayNeedsPresent")] +internal static extern bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_CheckFileSignature")] +internal static extern ulong SteamAPI_ISteamUtils_CheckFileSignature(IntPtr instancePtr, string szFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_ShowGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_ShowGamepadTextInput(IntPtr instancePtr, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength")] +internal static extern uint SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(IntPtr instancePtr, string pchText, uint cchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSteamUILanguage")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetSteamUILanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningInVR")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamRunningInVR(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(IntPtr instancePtr, int nHorizontalInset, int nVerticalInset); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] +internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(IntPtr instancePtr, int iGame, ref uint pnAppID, ref uint pnIP, ref char pnConnPort, ref char pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddFavoriteGame")] +internal static extern int SteamAPI_ISteamMatchmaking_AddFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyList")] +internal static extern ulong SteamAPI_ISteamMatchmaking_RequestLobbyList(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(IntPtr instancePtr, string pchKeyToMatch, string pchValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToBeCloseTo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(IntPtr instancePtr, int nSlotsAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(IntPtr instancePtr, uint eLobbyDistanceFilter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(IntPtr instancePtr, int cMaxResults); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyByIndex(IntPtr instancePtr, int iLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_CreateLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_CreateLobby(IntPtr instancePtr, uint eLobbyType, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_JoinLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_JoinLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_LeaveLobby")] +internal static extern void SteamAPI_ISteamMatchmaking_LeaveLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_InviteUserToLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDInvitee); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers")] +internal static extern int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(IntPtr instancePtr, ulong steamIDLobby, int iMember); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(IntPtr instancePtr, ulong steamIDLobby, int iLobbyData, string pchKey, int cchKeyBufferSize, string pchValue, int cchValueBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_DeleteLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDUser, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberData")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg")] +internal static extern bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(IntPtr instancePtr, ulong steamIDLobby, IntPtr pvMsgBody, int cubMsgBody); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(IntPtr instancePtr, ulong steamIDLobby, int iChatID, ref CSteamID pSteamIDUser, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_RequestLobbyData(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyGameServer")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, uint unGameServerIP, char unGameServerPort, ulong steamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyGameServer")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, ref uint punGameServerIP, ref char punGameServerPort, ref CSteamID psteamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyType")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyType(IntPtr instancePtr, ulong steamIDLobby, uint eLobbyType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyJoinable")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(IntPtr instancePtr, ulong steamIDLobby, bool bLobbyJoinable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyOwner")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyOwner")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDNewOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLinkedLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDLobbyDependent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(IntPtr instancePtr, uint hRequest, uint response); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(IntPtr instancePtr, IntPtr server); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(IntPtr instancePtr, string pchName, int nScore, float flTimePlayed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(IntPtr instancePtr, string pchRule, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestLANServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestLANServerList(IntPtr instancePtr, uint iApp, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ReleaseRequest")] +internal static extern void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(IntPtr instancePtr, uint hServerListRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerDetails")] +internal static extern IntPtr SteamAPI_ISteamMatchmakingServers_GetServerDetails(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_IsRefreshing")] +internal static extern bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerCount")] +internal static extern int SteamAPI_ISteamMatchmakingServers_GetServerCount(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshServer")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshServer(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PingServer")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PingServer(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PlayerDetails")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PlayerDetails(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ServerRules")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_ServerRules(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelServerQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(IntPtr instancePtr, uint hServerQuery); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWrite")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWrite(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_FileRead(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubDataToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteAsync(IntPtr instancePtr, string pchFile, IntPtr pvData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileReadAsync(IntPtr instancePtr, string pchFile, uint nOffset, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(IntPtr instancePtr, ulong hReadCall, IntPtr pvBuffer, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileForget")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileForget(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileDelete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileDelete(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileShare")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileShare(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms")] +internal static extern bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(IntPtr instancePtr, string pchFile, uint eRemoteStoragePlatform); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(IntPtr instancePtr, ulong writeHandle, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileExists")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileExists(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersisted")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FilePersisted(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileSize")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileSize(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileTimestamp")] +internal static extern long SteamAPI_ISteamRemoteStorage_GetFileTimestamp(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms")] +internal static extern uint SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize")] +internal static extern IntPtr SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(IntPtr instancePtr, int iFile, ref int pnFileSizeInBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetQuota")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetQuota(IntPtr instancePtr, ref ulong pnTotalBytes, ref ulong puAvailableBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp")] +internal static extern void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(IntPtr instancePtr, bool bEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownload")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownload(IntPtr instancePtr, ulong hContent, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(IntPtr instancePtr, ulong hContent, ref int pnBytesDownloaded, ref int pnBytesExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDetails")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(IntPtr instancePtr, ulong hContent, ref uint pnAppID, System.Text.StringBuilder ppchName, ref int pnFileSizeInBytes, ref CSteamID pSteamIDOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_UGCRead(IntPtr instancePtr, ulong hContent, IntPtr pvData, int cubDataToRead, uint cOffset, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(IntPtr instancePtr, int iCachedContent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(IntPtr instancePtr, string pchFile, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags, uint eWorkshopFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(IntPtr instancePtr, ulong updateHandle, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(IntPtr instancePtr, ulong updateHandle, string pchPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(IntPtr instancePtr, ulong updateHandle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(IntPtr instancePtr, ulong updateHandle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(IntPtr instancePtr, ulong updateHandle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(IntPtr instancePtr, ulong updateHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(IntPtr instancePtr, ulong unPublishedFileId, uint unMaxSecondsOld); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_DeletePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_DeletePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(IntPtr instancePtr, ulong updateHandle, string pchChangeDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(IntPtr instancePtr, ulong unPublishedFileId, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(IntPtr instancePtr, ulong steamId, uint unStartIndex, ref SteamParamStringArray_t pRequiredTags, ref SteamParamStringArray_t pExcludedTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishVideo")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishVideo(IntPtr instancePtr, uint eVideoProvider, string pchVideoAccount, string pchVideoIdentifier, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(IntPtr instancePtr, ulong unPublishedFileId, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(IntPtr instancePtr, uint eAction, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(IntPtr instancePtr, uint eEnumerationType, uint unStartIndex, uint unCount, uint unDays, ref SteamParamStringArray_t pTags, ref SteamParamStringArray_t pUserTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(IntPtr instancePtr, ulong hContent, string pchLocation, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestCurrentStats")] +internal static extern bool SteamAPI_ISteamUserStats_RequestCurrentStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat(IntPtr instancePtr, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat0(IntPtr instancePtr, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat(IntPtr instancePtr, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat0(IntPtr instancePtr, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UpdateAvgRateStat")] +internal static extern bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(IntPtr instancePtr, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievement(IntPtr instancePtr, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_SetAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ClearAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_ClearAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(IntPtr instancePtr, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_StoreStats")] +internal static extern bool SteamAPI_ISteamUserStats_StoreStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementIcon")] +internal static extern int SteamAPI_ISteamUserStats_GetAchievementIcon(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(IntPtr instancePtr, string pchName, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_IndicateAchievementProgress")] +internal static extern bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(IntPtr instancePtr, string pchName, uint nCurProgress, uint nMaxProgress); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumAchievements")] +internal static extern uint SteamAPI_ISteamUserStats_GetNumAchievements(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementName(IntPtr instancePtr, uint iAchievement); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ResetAllStats")] +internal static extern bool SteamAPI_ISteamUserStats_ResetAllStats(IntPtr instancePtr, bool bAchievementsToo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(IntPtr instancePtr, string pchLeaderboardName, uint eLeaderboardSortMethod, uint eLeaderboardDisplayType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindLeaderboard(IntPtr instancePtr, string pchLeaderboardName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetLeaderboardName(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount")] +internal static extern int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(IntPtr instancePtr, ulong hSteamLeaderboard, [In, Out] CSteamID[] prgUsers, int cUsers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry")] +internal static extern bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(IntPtr instancePtr, ulong hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, ref int pDetails, int cDetailsMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UploadLeaderboardScore")] +internal static extern ulong SteamAPI_ISteamUserStats_UploadLeaderboardScore(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardUploadScoreMethod, int nScore, ref int pScoreDetails, int cScoreDetailsCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_AttachLeaderboardUGC")] +internal static extern ulong SteamAPI_ISteamUserStats_AttachLeaderboardUGC(IntPtr instancePtr, ulong hSteamLeaderboard, ulong hUGC); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers")] +internal static extern ulong SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(IntPtr instancePtr, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(IntPtr instancePtr, int iIteratorPrevious, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(IntPtr instancePtr, string pchName, ref float pflPercent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalStats(IntPtr instancePtr, int nHistoryDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat(IntPtr instancePtr, string pchStatName, ref long pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat0(IntPtr instancePtr, string pchStatName, ref double pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory(IntPtr instancePtr, string pchStatName, [In, Out] long[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory0")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory0(IntPtr instancePtr, string pchStatName, [In, Out] double[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribed")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsLowViolence")] +internal static extern bool SteamAPI_ISteamApps_BIsLowViolence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsCybercafe")] +internal static extern bool SteamAPI_ISteamApps_BIsCybercafe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsVACBanned")] +internal static extern bool SteamAPI_ISteamApps_BIsVACBanned(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentGameLanguage")] +internal static extern IntPtr SteamAPI_ISteamApps_GetCurrentGameLanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAvailableGameLanguages")] +internal static extern IntPtr SteamAPI_ISteamApps_GetAvailableGameLanguages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedApp")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedApp(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsDlcInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsDlcInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime")] +internal static extern uint SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDLCCount")] +internal static extern int SteamAPI_ISteamApps_GetDLCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BGetDLCDataByIndex")] +internal static extern bool SteamAPI_ISteamApps_BGetDLCDataByIndex(IntPtr instancePtr, int iDLC, ref uint pAppID, ref bool pbAvailable, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_InstallDLC")] +internal static extern void SteamAPI_ISteamApps_InstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_UninstallDLC")] +internal static extern void SteamAPI_ISteamApps_UninstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey")] +internal static extern void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentBetaName")] +internal static extern bool SteamAPI_ISteamApps_GetCurrentBetaName(IntPtr instancePtr, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_MarkContentCorrupt")] +internal static extern bool SteamAPI_ISteamApps_MarkContentCorrupt(IntPtr instancePtr, bool bMissingFilesOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetInstalledDepots")] +internal static extern uint SteamAPI_ISteamApps_GetInstalledDepots(IntPtr instancePtr, uint appID, ref uint pvecDepots, uint cMaxDepots); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppInstallDir")] +internal static extern uint SteamAPI_ISteamApps_GetAppInstallDir(IntPtr instancePtr, uint appID, string pchFolder, uint cchFolderBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsAppInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsAppInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppOwner")] +internal static extern ulong SteamAPI_ISteamApps_GetAppOwner(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetLaunchQueryParam")] +internal static extern IntPtr SteamAPI_ISteamApps_GetLaunchQueryParam(IntPtr instancePtr, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDlcDownloadProgress")] +internal static extern bool SteamAPI_ISteamApps_GetDlcDownloadProgress(IntPtr instancePtr, uint nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId")] +internal static extern int SteamAPI_ISteamApps_GetAppBuildId(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys")] +internal static extern void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetFileDetails")] +internal static extern ulong SteamAPI_ISteamApps_GetFileDetails(IntPtr instancePtr, string pszFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_SendP2PPacket(IntPtr instancePtr, ulong steamIDRemote, IntPtr pubData, uint cubData, uint eP2PSendType, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(IntPtr instancePtr, ref uint pcubMsgSize, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_ReadP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_ReadP2PPacket(IntPtr instancePtr, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref CSteamID psteamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(IntPtr instancePtr, ulong steamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetP2PSessionState")] +internal static extern bool SteamAPI_ISteamNetworking_GetP2PSessionState(IntPtr instancePtr, ulong steamIDRemote, ref P2PSessionState_t pConnectionState); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AllowP2PPacketRelay")] +internal static extern bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(IntPtr instancePtr, bool bAllow); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateListenSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateListenSocket(IntPtr instancePtr, int nVirtualP2PPort, uint nIP, char nPort, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(IntPtr instancePtr, ulong steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateConnectionSocket(IntPtr instancePtr, uint nIP, char nPort, int nTimeoutSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroySocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroySocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroyListenSocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroyListenSocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendDataOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_SendDataOnSocket(IntPtr instancePtr, uint hSocket, IntPtr pubData, uint cubData, bool bReliable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(IntPtr instancePtr, uint hSocket, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveDataFromSocket")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(IntPtr instancePtr, uint hSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailable(IntPtr instancePtr, uint hListenSocket, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveData")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveData(IntPtr instancePtr, uint hListenSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetSocketInfo(IntPtr instancePtr, uint hSocket, ref CSteamID pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref char punPortRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetListenSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetListenSocketInfo(IntPtr instancePtr, uint hListenSocket, ref uint pnIP, ref char pnPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketConnectionType")] +internal static extern uint SteamAPI_ISteamNetworking_GetSocketConnectionType(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetMaxPacketSize")] +internal static extern int SteamAPI_ISteamNetworking_GetMaxPacketSize(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot")] +internal static extern uint SteamAPI_ISteamScreenshots_WriteScreenshot(IntPtr instancePtr, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(IntPtr instancePtr, string pchFilename, string pchThumbnailFilename, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TriggerScreenshot")] +internal static extern void SteamAPI_ISteamScreenshots_TriggerScreenshot(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_HookScreenshots")] +internal static extern void SteamAPI_ISteamScreenshots_HookScreenshots(IntPtr instancePtr, bool bHook); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_SetLocation")] +internal static extern bool SteamAPI_ISteamScreenshots_SetLocation(IntPtr instancePtr, uint hScreenshot, string pchLocation); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagUser")] +internal static extern bool SteamAPI_ISteamScreenshots_TagUser(IntPtr instancePtr, uint hScreenshot, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagPublishedFile")] +internal static extern bool SteamAPI_ISteamScreenshots_TagPublishedFile(IntPtr instancePtr, uint hScreenshot, ulong unPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_IsScreenshotsHooked")] +internal static extern bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(IntPtr instancePtr, uint eType, string pchFilename, string pchVRFilename); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled")] +internal static extern bool SteamAPI_ISteamMusic_BIsEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying")] +internal static extern bool SteamAPI_ISteamMusic_BIsPlaying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus")] +internal static extern int SteamAPI_ISteamMusic_GetPlaybackStatus(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Play")] +internal static extern void SteamAPI_ISteamMusic_Play(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Pause")] +internal static extern void SteamAPI_ISteamMusic_Pause(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious")] +internal static extern void SteamAPI_ISteamMusic_PlayPrevious(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayNext")] +internal static extern void SteamAPI_ISteamMusic_PlayNext(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_SetVolume")] +internal static extern void SteamAPI_ISteamMusic_SetVolume(IntPtr instancePtr, float flVolume); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetVolume")] +internal static extern float SteamAPI_ISteamMusic_GetVolume(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BActivationSuccess")] +internal static extern bool SteamAPI_ISteamMusicRemote_BActivationSuccess(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetDisplayName")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetDisplayName(IntPtr instancePtr, string pchDisplayName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayPrevious")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayNext")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayNext(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableQueue")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableQueue(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlaylists")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlaylists(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(IntPtr instancePtr, int nStatus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateVolume")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateVolume(IntPtr instancePtr, float flValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(IntPtr instancePtr, bool bAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(IntPtr instancePtr, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(IntPtr instancePtr, int nValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetQueueEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetQueueEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateHTTPRequest")] +internal static extern uint SteamAPI_ISteamHTTP_CreateHTTPRequest(IntPtr instancePtr, uint eHTTPRequestMethod, string pchAbsoluteURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(IntPtr instancePtr, uint hRequest, ulong ulContextValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(IntPtr instancePtr, uint hRequest, uint unTimeoutSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, string pchHeaderValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(IntPtr instancePtr, uint hRequest, string pchParamName, string pchParamValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequest(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_DeferHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_DeferHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(IntPtr instancePtr, uint hRequest, string pchHeaderName, ref uint unResponseHeaderSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, IntPtr pHeaderValueBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(IntPtr instancePtr, uint hRequest, ref uint unBodySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(IntPtr instancePtr, uint hRequest, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(IntPtr instancePtr, uint hRequest, uint cOffset, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(IntPtr instancePtr, uint hRequest, ref float pflPercentOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(IntPtr instancePtr, uint hRequest, string pchContentType, IntPtr pubBody, uint unBodyLen); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateCookieContainer")] +internal static extern uint SteamAPI_ISteamHTTP_CreateCookieContainer(IntPtr instancePtr, bool bAllowResponsesToModify); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(IntPtr instancePtr, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetCookie")] +internal static extern bool SteamAPI_ISteamHTTP_SetCookie(IntPtr instancePtr, uint hCookieContainer, string pchHost, string pchUrl, string pchCookie); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(IntPtr instancePtr, uint hRequest, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(IntPtr instancePtr, uint hRequest, string pchUserAgentInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(IntPtr instancePtr, uint hRequest, bool bRequireVerifiedCertificate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(IntPtr instancePtr, uint hRequest, uint unMilliseconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(IntPtr instancePtr, uint hRequest, ref bool pbWasTimedOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendMethod")] +internal static extern ulong SteamAPI_ISteamUnifiedMessages_SendMethod(IntPtr instancePtr, string pchServiceMethod, IntPtr pRequestBuffer, uint unRequestBufferSize, ulong unContext); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(IntPtr instancePtr, ulong hHandle, ref uint punResponseSize, ref uint peResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseData")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(IntPtr instancePtr, ulong hHandle, IntPtr pResponseBuffer, uint unResponseBufferSize, bool bAutoRelease); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_ReleaseMethod")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(IntPtr instancePtr, ulong hHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendNotification")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_SendNotification(IntPtr instancePtr, string pchServiceNotification, IntPtr pNotificationBuffer, uint unNotificationBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Init")] +internal static extern bool SteamAPI_ISteamController_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Shutdown")] +internal static extern bool SteamAPI_ISteamController_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_RunFrame")] +internal static extern void SteamAPI_ISteamController_RunFrame(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetConnectedControllers")] +internal static extern int SteamAPI_ISteamController_GetConnectedControllers(IntPtr instancePtr, ref ulong handlesOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowBindingPanel")] +internal static extern bool SteamAPI_ISteamController_ShowBindingPanel(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActionSetHandle")] +internal static extern ulong SteamAPI_ISteamController_GetActionSetHandle(IntPtr instancePtr, string pszActionSetName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ActivateActionSet")] +internal static extern void SteamAPI_ISteamController_ActivateActionSet(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetCurrentActionSet")] +internal static extern ulong SteamAPI_ISteamController_GetCurrentActionSet(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetDigitalActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionData")] +internal static extern ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong digitalActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetAnalogActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionData")] +internal static extern ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong analogActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_StopAnalogActionMomentum")] +internal static extern void SteamAPI_ISteamController_StopAnalogActionMomentum(IntPtr instancePtr, ulong controllerHandle, ulong eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerRepeatedHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec, char usOffMicroSec, char unRepeat, uint nFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGamepadIndexForController")] +internal static extern int SteamAPI_ISteamController_GetGamepadIndexForController(IntPtr instancePtr, ulong ulControllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetControllerForGamepadIndex")] +internal static extern ulong SteamAPI_ISteamController_GetControllerForGamepadIndex(IntPtr instancePtr, int nIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetMotionData")] +internal static extern ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowDigitalActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowAnalogActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(IntPtr instancePtr, uint unAccountID, uint eListType, uint eMatchingUGCType, uint eSortOrder, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(IntPtr instancePtr, uint eQueryType, uint eMatchingeMatchingUGCTypeFileType, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SendQueryUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_SendQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCResult")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCResult(IntPtr instancePtr, ulong handle, uint index, ref SteamUGCDetails_t pDetails); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchURL, uint cchURLSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCMetadata")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchMetadata, uint cchMetadatasize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCChildren")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCChildren(IntPtr instancePtr, ulong handle, uint index, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCStatistic")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(IntPtr instancePtr, ulong handle, uint index, uint eStatType, ref ulong pStatValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, System.Text.StringBuilder pchOriginalFileName, uint cchOriginalFileNameSize, ref uint pPreviewType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(IntPtr instancePtr, ulong handle, uint index, uint keyValueTagIndex, System.Text.StringBuilder pchKey, uint cchKeySize, System.Text.StringBuilder pchValue, uint cchValueSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest")] +internal static extern bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddExcludedTag")] +internal static extern bool SteamAPI_ISteamUGC_AddExcludedTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnOnlyIDs")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(IntPtr instancePtr, ulong handle, bool bReturnOnlyIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(IntPtr instancePtr, ulong handle, bool bReturnKeyValueTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnLongDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnLongDescription(IntPtr instancePtr, ulong handle, bool bReturnLongDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnMetadata(IntPtr instancePtr, ulong handle, bool bReturnMetadata); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnChildren")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnChildren(IntPtr instancePtr, ulong handle, bool bReturnChildren); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(IntPtr instancePtr, ulong handle, bool bReturnAdditionalPreviews); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnTotalOnly(IntPtr instancePtr, ulong handle, bool bReturnTotalOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse")] +internal static extern bool SteamAPI_ISteamUGC_SetAllowCachedResponse(IntPtr instancePtr, ulong handle, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter")] +internal static extern bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(IntPtr instancePtr, ulong handle, string pMatchCloudFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetMatchAnyTag")] +internal static extern bool SteamAPI_ISteamUGC_SetMatchAnyTag(IntPtr instancePtr, ulong handle, bool bMatchAnyTag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetSearchText")] +internal static extern bool SteamAPI_ISteamUGC_SetSearchText(IntPtr instancePtr, ulong handle, string pSearchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetRankedByTrendDays")] +internal static extern bool SteamAPI_ISteamUGC_SetRankedByTrendDays(IntPtr instancePtr, ulong handle, uint unDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(IntPtr instancePtr, ulong handle, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RequestUGCDetails")] +internal static extern ulong SteamAPI_ISteamUGC_RequestUGCDetails(IntPtr instancePtr, ulong nPublishedFileID, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateItem")] +internal static extern ulong SteamAPI_ISteamUGC_CreateItem(IntPtr instancePtr, uint nConsumerAppId, uint eFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_StartItemUpdate(IntPtr instancePtr, uint nConsumerAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTitle")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTitle(IntPtr instancePtr, ulong handle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetItemDescription(IntPtr instancePtr, ulong handle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemUpdateLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetItemMetadata(IntPtr instancePtr, ulong handle, string pchMetaData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemVisibility")] +internal static extern bool SteamAPI_ISteamUGC_SetItemVisibility(IntPtr instancePtr, ulong handle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTags")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemContent")] +internal static extern bool SteamAPI_ISteamUGC_SetItemContent(IntPtr instancePtr, ulong handle, string pszContentFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_SetItemPreview(IntPtr instancePtr, ulong handle, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(IntPtr instancePtr, ulong handle, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddItemKeyValueTag(IntPtr instancePtr, ulong handle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewFile(IntPtr instancePtr, ulong handle, string pszPreviewFile, uint type); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewVideo(IntPtr instancePtr, ulong handle, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(IntPtr instancePtr, ulong handle, uint index, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(IntPtr instancePtr, ulong handle, uint index, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemPreview(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, ulong handle, string pchChangeNote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress")] +internal static extern uint SteamAPI_ISteamUGC_GetItemUpdateProgress(IntPtr instancePtr, ulong handle, ref ulong punBytesProcessed, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_SetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_GetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemToFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_AddItemToFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemFromFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_RemoveItemFromFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_SubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UnsubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_UnsubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetNumSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetNumSubscribedItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetSubscribedItems(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemState")] +internal static extern uint SteamAPI_ISteamUGC_GetItemState(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemInstallInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemInstallInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punSizeOnDisk, System.Text.StringBuilder pchFolder, uint cchFolderSize, ref uint punTimeStamp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemDownloadInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemDownloadInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_DownloadItem")] +internal static extern bool SteamAPI_ISteamUGC_DownloadItem(IntPtr instancePtr, ulong nPublishedFileID, bool bHighPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_BInitWorkshopForGameServer")] +internal static extern bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(IntPtr instancePtr, uint unWorkshopDepotID, string pszFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SuspendDownloads")] +internal static extern void SteamAPI_ISteamUGC_SuspendDownloads(IntPtr instancePtr, bool bSuspend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StartPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetNumInstalledApps(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetInstalledApps(IntPtr instancePtr, ref uint pvecAppID, uint unMaxAppIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppName")] +internal static extern int SteamAPI_ISteamAppList_GetAppName(IntPtr instancePtr, uint nAppID, System.Text.StringBuilder pchName, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppInstallDir")] +internal static extern int SteamAPI_ISteamAppList_GetAppInstallDir(IntPtr instancePtr, uint nAppID, string pchDirectory, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppBuildId")] +internal static extern int SteamAPI_ISteamAppList_GetAppBuildId(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface")] +internal static extern void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Init")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Shutdown")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CreateBrowser")] +internal static extern ulong SteamAPI_ISteamHTMLSurface_CreateBrowser(IntPtr instancePtr, string pchUserAgent, string pchUserCSS); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_RemoveBrowser")] +internal static extern void SteamAPI_ISteamHTMLSurface_RemoveBrowser(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_LoadURL")] +internal static extern void SteamAPI_ISteamHTMLSurface_LoadURL(IntPtr instancePtr, uint unBrowserHandle, string pchURL, string pchPostData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetSize")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetSize(IntPtr instancePtr, uint unBrowserHandle, uint unWidth, uint unHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopLoad")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopLoad(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Reload")] +internal static extern void SteamAPI_ISteamHTMLSurface_Reload(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoBack")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoBack(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoForward")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoForward(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AddHeader")] +internal static extern void SteamAPI_ISteamHTMLSurface_AddHeader(IntPtr instancePtr, uint unBrowserHandle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ExecuteJavascript")] +internal static extern void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(IntPtr instancePtr, uint unBrowserHandle, string pchScript); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseUp(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDown(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDoubleClick")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseMove")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseMove(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseWheel")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseWheel(IntPtr instancePtr, uint unBrowserHandle, int nDelta); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyDown(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyUp(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyChar")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyChar(IntPtr instancePtr, uint unBrowserHandle, uint cUnicodeChar, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetVerticalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetKeyFocus")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetKeyFocus(IntPtr instancePtr, uint unBrowserHandle, bool bHasKeyFocus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ViewSource")] +internal static extern void SteamAPI_ISteamHTMLSurface_ViewSource(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CopyToClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_CopyToClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_PasteFromClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Find")] +internal static extern void SteamAPI_ISteamHTMLSurface_Find(IntPtr instancePtr, uint unBrowserHandle, string pchSearchStr, bool bCurrentlyInFind, bool bReverse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopFind")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopFind(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition")] +internal static extern void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetCookie")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetCookie(IntPtr instancePtr, string pchHostname, string pchKey, string pchValue, string pchPath, ulong nExpires, bool bSecure, bool bHTTPOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(IntPtr instancePtr, uint unBrowserHandle, float flZoom, int nPointX, int nPointY); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetBackgroundMode")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(IntPtr instancePtr, uint unBrowserHandle, bool bBackgroundMode); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AllowStartRequest")] +internal static extern void SteamAPI_ISteamHTMLSurface_AllowStartRequest(IntPtr instancePtr, uint unBrowserHandle, bool bAllowed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_JSDialogResponse")] +internal static extern void SteamAPI_ISteamHTMLSurface_JSDialogResponse(IntPtr instancePtr, uint unBrowserHandle, bool bResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus")] +internal static extern uint SteamAPI_ISteamInventory_GetResultStatus(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItems")] +internal static extern bool SteamAPI_ISteamInventory_GetResultItems(IntPtr instancePtr, int resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp")] +internal static extern uint SteamAPI_ISteamInventory_GetResultTimestamp(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID")] +internal static extern bool SteamAPI_ISteamInventory_CheckResultSteamID(IntPtr instancePtr, int resultHandle, ulong steamIDExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DestroyResult")] +internal static extern void SteamAPI_ISteamInventory_DestroyResult(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetAllItems")] +internal static extern bool SteamAPI_ISteamInventory_GetAllItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemsByID")] +internal static extern bool SteamAPI_ISteamInventory_GetItemsByID(IntPtr instancePtr, ref int pResultHandle, [In, Out] ulong[] pInstanceIDs, uint unCountInstanceIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SerializeResult")] +internal static extern bool SteamAPI_ISteamInventory_SerializeResult(IntPtr instancePtr, int resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DeserializeResult")] +internal static extern bool SteamAPI_ISteamInventory_DeserializeResult(IntPtr instancePtr, ref int pOutResultHandle, IntPtr pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GenerateItems")] +internal static extern bool SteamAPI_ISteamInventory_GenerateItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GrantPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_GrantPromoItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItem")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItem(IntPtr instancePtr, ref int pResultHandle, int itemDef); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ConsumeItem")] +internal static extern bool SteamAPI_ISteamInventory_ConsumeItem(IntPtr instancePtr, ref int pResultHandle, ulong itemConsume, uint unQuantity); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ExchangeItems")] +internal static extern bool SteamAPI_ISteamInventory_ExchangeItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] ulong[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TransferItemQuantity")] +internal static extern bool SteamAPI_ISteamInventory_TransferItemQuantity(IntPtr instancePtr, ref int pResultHandle, ulong itemIdSource, uint unQuantity, ulong itemIdDest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SendItemDropHeartbeat")] +internal static extern void SteamAPI_ISteamInventory_SendItemDropHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TriggerItemDrop")] +internal static extern bool SteamAPI_ISteamInventory_TriggerItemDrop(IntPtr instancePtr, ref int pResultHandle, int dropListDefinition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TradeItems")] +internal static extern bool SteamAPI_ISteamInventory_TradeItems(IntPtr instancePtr, ref int pResultHandle, ulong steamIDTradePartner, [In, Out] ulong[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] ulong[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_LoadItemDefinitions")] +internal static extern bool SteamAPI_ISteamInventory_LoadItemDefinitions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionIDs")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(IntPtr instancePtr, [In, Out] int[] pItemDefIDs, ref uint punItemDefIDsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionProperty")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(IntPtr instancePtr, int iDefinition, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL")] +internal static extern void SteamAPI_ISteamVideo_GetVideoURL(IntPtr instancePtr, uint unVideoAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting")] +internal static extern bool SteamAPI_ISteamVideo_IsBroadcasting(IntPtr instancePtr, ref int pnNumViewers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_InitGameServer")] +internal static extern bool SteamAPI_ISteamGameServer_InitGameServer(IntPtr instancePtr, uint unIP, char usGamePort, char usQueryPort, uint unFlags, uint nGameAppId, string pchVersionString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetProduct")] +internal static extern void SteamAPI_ISteamGameServer_SetProduct(IntPtr instancePtr, string pszProduct); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameDescription")] +internal static extern void SteamAPI_ISteamGameServer_SetGameDescription(IntPtr instancePtr, string pszGameDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetModDir")] +internal static extern void SteamAPI_ISteamGameServer_SetModDir(IntPtr instancePtr, string pszModDir); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetDedicatedServer")] +internal static extern void SteamAPI_ISteamGameServer_SetDedicatedServer(IntPtr instancePtr, bool bDedicated); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOn")] +internal static extern void SteamAPI_ISteamGameServer_LogOn(IntPtr instancePtr, string pszToken); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOnAnonymous")] +internal static extern void SteamAPI_ISteamGameServer_LogOnAnonymous(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOff")] +internal static extern void SteamAPI_ISteamGameServer_LogOff(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BLoggedOn")] +internal static extern bool SteamAPI_ISteamGameServer_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BSecure")] +internal static extern bool SteamAPI_ISteamGameServer_BSecure(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetSteamID")] +internal static extern ulong SteamAPI_ISteamGameServer_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_WasRestartRequested")] +internal static extern bool SteamAPI_ISteamGameServer_WasRestartRequested(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMaxPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetMaxPlayerCount(IntPtr instancePtr, int cPlayersMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetBotPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetBotPlayerCount(IntPtr instancePtr, int cBotplayers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetServerName(IntPtr instancePtr, string pszServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMapName")] +internal static extern void SteamAPI_ISteamGameServer_SetMapName(IntPtr instancePtr, string pszMapName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetPasswordProtected")] +internal static extern void SteamAPI_ISteamGameServer_SetPasswordProtected(IntPtr instancePtr, bool bPasswordProtected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorPort")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorPort(IntPtr instancePtr, char unSpectatorPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorServerName(IntPtr instancePtr, string pszSpectatorServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ClearAllKeyValues")] +internal static extern void SteamAPI_ISteamGameServer_ClearAllKeyValues(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetKeyValue")] +internal static extern void SteamAPI_ISteamGameServer_SetKeyValue(IntPtr instancePtr, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameTags")] +internal static extern void SteamAPI_ISteamGameServer_SetGameTags(IntPtr instancePtr, string pchGameTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameData")] +internal static extern void SteamAPI_ISteamGameServer_SetGameData(IntPtr instancePtr, string pchGameData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetRegion")] +internal static extern void SteamAPI_ISteamGameServer_SetRegion(IntPtr instancePtr, string pszRegion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate")] +internal static extern bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(IntPtr instancePtr, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref CSteamID pSteamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection")] +internal static extern ulong SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect")] +internal static extern void SteamAPI_ISteamGameServer_SendUserDisconnect(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData")] +internal static extern bool SteamAPI_ISteamGameServer_BUpdateUserData(IntPtr instancePtr, ulong steamIDUser, string pchPlayerName, uint uScore); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamGameServer_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EndAuthSession")] +internal static extern void SteamAPI_ISteamGameServer_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamGameServer_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamGameServer_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_RequestUserGroupStatus")] +internal static extern bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(IntPtr instancePtr, ulong steamIDUser, ulong steamIDGroup); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetGameplayStats")] +internal static extern void SteamAPI_ISteamGameServer_GetGameplayStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetServerReputation")] +internal static extern ulong SteamAPI_ISteamGameServer_GetServerReputation(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetPublicIP")] +internal static extern uint SteamAPI_ISteamGameServer_GetPublicIP(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_HandleIncomingPacket")] +internal static extern bool SteamAPI_ISteamGameServer_HandleIncomingPacket(IntPtr instancePtr, IntPtr pData, int cbData, uint srcIP, char srcPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket")] +internal static extern int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(IntPtr instancePtr, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref char pPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EnableHeartbeats")] +internal static extern void SteamAPI_ISteamGameServer_EnableHeartbeats(IntPtr instancePtr, bool bActive); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetHeartbeatInterval")] +internal static extern void SteamAPI_ISteamGameServer_SetHeartbeatInterval(IntPtr instancePtr, int iHeartbeatInterval); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ForceHeartbeat")] +internal static extern void SteamAPI_ISteamGameServer_ForceHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan")] +internal static extern ulong SteamAPI_ISteamGameServer_AssociateWithClan(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility")] +internal static extern ulong SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(IntPtr instancePtr, ulong steamIDNewPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(IntPtr instancePtr, ulong steamIDUser, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_ClearUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_StoreUserStats(IntPtr instancePtr, ulong steamIDUser); +public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t pUserStatsReceived_t); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallback")] +public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallback")] +public static extern ulong CUserStatsReceived_t_RemoveCallback(ulong handle); +public delegate void SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult(RemoteStorageFileReadAsyncComplete_t pRemoteStorageFileReadAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult(RemoteStorageGetPublishedItemVoteDetailsResult_t pRemoteStorageGetPublishedItemVoteDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FileDetailsResult_t_CallResult(FileDetailsResult_t pFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_SetCallResult")] +public static extern ulong CFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_FileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsStored_t_CallResult(GSStatsStored_t pGSStatsStored_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_SetCallResult")] +public static extern ulong CGSStatsStored_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsStored_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_RemoveCallResult")] +public static extern ulong CGSStatsStored_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_HTML_BrowserReady_t_CallResult(HTML_BrowserReady_t pHTML_BrowserReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_SetCallResult")] +public static extern ulong CHTML_BrowserReady_t_SetCallResult(ulong hAPICall, SteamAPI_HTML_BrowserReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_RemoveCallResult")] +public static extern ulong CHTML_BrowserReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsGetFollowerCount_t_CallResult(FriendsGetFollowerCount_t pFriendsGetFollowerCount_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_SetCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsGetFollowerCount_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_RemoveCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsIsFollowing_t_CallResult(FriendsIsFollowing_t pFriendsIsFollowing_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_SetCallResult")] +public static extern ulong CFriendsIsFollowing_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsIsFollowing_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_RemoveCallResult")] +public static extern ulong CFriendsIsFollowing_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyMatchList_t_CallResult(LobbyMatchList_t pLobbyMatchList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_SetCallResult")] +public static extern ulong CLobbyMatchList_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyMatchList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_RemoveCallResult")] +public static extern ulong CLobbyMatchList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult(RemoteStorageUpdatePublishedFileResult_t pRemoteStorageUpdatePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_StoreAuthURLResponse_t_CallResult(StoreAuthURLResponse_t pStoreAuthURLResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_SetCallResult")] +public static extern ulong CStoreAuthURLResponse_t_SetCallResult(ulong hAPICall, SteamAPI_StoreAuthURLResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_RemoveCallResult")] +public static extern ulong CStoreAuthURLResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyCreated_t_CallResult(LobbyCreated_t pLobbyCreated_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_SetCallResult")] +public static extern ulong CLobbyCreated_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyCreated_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_RemoveCallResult")] +public static extern ulong CLobbyCreated_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult(RemoteStorageFileWriteAsyncComplete_t pRemoteStorageFileWriteAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult(RemoteStorageDeletePublishedFileResult_t pRemoteStorageDeletePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult(RemoteStorageGetPublishedFileDetailsResult_t pRemoteStorageGetPublishedFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult(RemoteStorageDownloadUGCResult_t pRemoteStorageDownloadUGCResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SteamUGCQueryCompleted_t_CallResult(SteamUGCQueryCompleted_t pSteamUGCQueryCompleted_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_SetCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_SetCallResult(ulong hAPICall, SteamAPI_SteamUGCQueryCompleted_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_RemoveCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileShareResult_t_CallResult(RemoteStorageFileShareResult_t pRemoteStorageFileShareResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_SetCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileShareResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyEnter_t_CallResult(LobbyEnter_t pLobbyEnter_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_SetCallResult")] +public static extern ulong CLobbyEnter_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyEnter_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_RemoveCallResult")] +public static extern ulong CLobbyEnter_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SubmitItemUpdateResult_t_CallResult(SubmitItemUpdateResult_t pSubmitItemUpdateResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_SetCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_SetCallResult(ulong hAPICall, SteamAPI_SubmitItemUpdateResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_RemoveCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_NumberOfCurrentPlayers_t_CallResult(NumberOfCurrentPlayers_t pNumberOfCurrentPlayers_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_SetCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_SetCallResult(ulong hAPICall, SteamAPI_NumberOfCurrentPlayers_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_RemoveCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsReceived_t_CallResult(GSStatsReceived_t pGSStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_SetCallResult")] +public static extern ulong CGSStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_RemoveCallResult")] +public static extern ulong CGSStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoresDownloaded_t_CallResult(LeaderboardScoresDownloaded_t pLeaderboardScoresDownloaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoresDownloaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult(RemoteStorageUpdateUserPublishedItemVoteResult_t pRemoteStorageUpdateUserPublishedItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult(RemoteStorageEnumerateUserSubscribedFilesResult_t pRemoteStorageEnumerateUserSubscribedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CreateItemResult_t_CallResult(CreateItemResult_t pCreateItemResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_SetCallResult")] +public static extern ulong CCreateItemResult_t_SetCallResult(ulong hAPICall, SteamAPI_CreateItemResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_RemoveCallResult")] +public static extern ulong CCreateItemResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetUserItemVoteResult_t_CallResult(SetUserItemVoteResult_t pSetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CSetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_SetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CSetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult(ComputeNewPlayerCompatibilityResult_t pComputeNewPlayerCompatibilityResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_SetCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_SetCallResult(ulong hAPICall, SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_RemoveCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoreUploaded_t_CallResult(LeaderboardScoreUploaded_t pLeaderboardScoreUploaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoreUploaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalAchievementPercentagesReady_t_CallResult(GlobalAchievementPercentagesReady_t pGlobalAchievementPercentagesReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_SetCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_RemoveCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalStatsReceived_t_CallResult(GlobalStatsReceived_t pGlobalStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_SetCallResult")] +public static extern ulong CGlobalStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_RemoveCallResult")] +public static extern ulong CGlobalStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult(RemoteStorageEnumeratePublishedFilesByUserActionResult_t pRemoteStorageEnumeratePublishedFilesByUserActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ClanOfficerListResponse_t_CallResult(ClanOfficerListResponse_t pClanOfficerListResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_SetCallResult")] +public static extern ulong CClanOfficerListResponse_t_SetCallResult(ulong hAPICall, SteamAPI_ClanOfficerListResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_RemoveCallResult")] +public static extern ulong CClanOfficerListResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStoragePublishFileProgress_t_CallResult(RemoteStoragePublishFileProgress_t pRemoteStoragePublishFileProgress_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_SetCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_RemoveCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult(RemoteStorageEnumerateWorkshopFilesResult_t pRemoteStorageEnumerateWorkshopFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSReputation_t_CallResult(GSReputation_t pGSReputation_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_SetCallResult")] +public static extern ulong CGSReputation_t_SetCallResult(ulong hAPICall, SteamAPI_GSReputation_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_RemoveCallResult")] +public static extern ulong CGSReputation_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserFavoriteItemsListChanged_t_CallResult(UserFavoriteItemsListChanged_t pUserFavoriteItemsListChanged_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_SetCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_SetCallResult(ulong hAPICall, SteamAPI_UserFavoriteItemsListChanged_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_RemoveCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_EncryptedAppTicketResponse_t_CallResult(EncryptedAppTicketResponse_t pEncryptedAppTicketResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_SetCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_SetCallResult(ulong hAPICall, SteamAPI_EncryptedAppTicketResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_RemoveCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult(RemoteStorageSetUserPublishedFileActionResult_t pRemoteStorageSetUserPublishedFileActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult(RemoteStorageEnumerateUserPublishedFilesResult_t pRemoteStorageEnumerateUserPublishedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsEnumerateFollowingList_t_CallResult(FriendsEnumerateFollowingList_t pFriendsEnumerateFollowingList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_SetCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsEnumerateFollowingList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_RemoveCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult(RemoteStorageSubscribePublishedFileResult_t pRemoteStorageSubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GetUserItemVoteResult_t_CallResult(GetUserItemVoteResult_t pGetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CGetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_GetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CGetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_AssociateWithClanResult_t_CallResult(AssociateWithClanResult_t pAssociateWithClanResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_SetCallResult")] +public static extern ulong CAssociateWithClanResult_t_SetCallResult(ulong hAPICall, SteamAPI_AssociateWithClanResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_RemoveCallResult")] +public static extern ulong CAssociateWithClanResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardUGCSet_t_CallResult(LeaderboardUGCSet_t pLeaderboardUGCSet_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_SetCallResult")] +public static extern ulong CLeaderboardUGCSet_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardUGCSet_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_RemoveCallResult")] +public static extern ulong CLeaderboardUGCSet_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CheckFileSignature_t_CallResult(CheckFileSignature_t pCheckFileSignature_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_SetCallResult")] +public static extern ulong CCheckFileSignature_t_SetCallResult(ulong hAPICall, SteamAPI_CheckFileSignature_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_RemoveCallResult")] +public static extern ulong CCheckFileSignature_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult(RemoteStorageUnsubscribePublishedFileResult_t pRemoteStorageUnsubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetPersonaNameResponse_t_CallResult(SetPersonaNameResponse_t pSetPersonaNameResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_SetCallResult")] +public static extern ulong CSetPersonaNameResponse_t_SetCallResult(ulong hAPICall, SteamAPI_SetPersonaNameResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_RemoveCallResult")] +public static extern ulong CSetPersonaNameResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserStatsReceived_t_CallResult(UserStatsReceived_t pUserStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallResult")] +public static extern ulong CUserStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_UserStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallResult")] +public static extern ulong CUserStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult(JoinClanChatRoomCompletionResult_t pJoinClanChatRoomCompletionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_SetCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_SetCallResult(ulong hAPICall, SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_RemoveCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardFindResult_t_CallResult(LeaderboardFindResult_t pLeaderboardFindResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_SetCallResult")] +public static extern ulong CLeaderboardFindResult_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardFindResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_RemoveCallResult")] +public static extern ulong CLeaderboardFindResult_t_RemoveCallResult(ulong handle); + +} + +} + +namespace Valve.Steamworks +{ + + public abstract class ISteamClient + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateSteamPipe(); + public abstract bool BReleaseSteamPipe(uint hSteamPipe); + public abstract uint ConnectToGlobalUser(uint hSteamPipe); + public abstract uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType); + public abstract void ReleaseUser(uint hSteamPipe,uint hUser); + public abstract ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract void SetLocalIPBinding(uint unIP,char usPort); + public abstract ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool BShutdownIfAllPipesClosed(); + public abstract ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion); + } + + + public abstract class ISteamUser + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetHSteamUser(); + public abstract bool BLoggedOn(); + public abstract ulong GetSteamID(); + public abstract int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure); + public abstract void TerminateGameConnection(uint unIPServer,char usPortServer); + public abstract void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo); + public abstract bool GetUserDataFolder(string pchBuffer,int cubBuffer); + public abstract void StartVoiceRecording(); + public abstract void StopVoiceRecording(); + public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate); + public abstract uint GetVoiceOptimalSampleRate(); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool BIsBehindNAT(); + public abstract void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer); + public abstract ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude); + public abstract bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract int GetGameBadgeLevel(int nSeries,bool bFoil); + public abstract int GetPlayerSteamLevel(); + public abstract ulong RequestStoreAuthURL(string pchRedirectURL); + public abstract bool BIsPhoneVerified(); + public abstract bool BIsTwoFactorEnabled(); + public abstract bool BIsPhoneIdentifying(); + public abstract bool BIsPhoneRequiringVerification(); + } + + + public abstract class ISteamFriends + { + public abstract IntPtr GetIntPtr(); + public abstract string GetPersonaName(); + public abstract ulong SetPersonaName(string pchPersonaName); + public abstract uint GetPersonaState(); + public abstract int GetFriendCount(int iFriendFlags); + public abstract ulong GetFriendByIndex(int iFriend,int iFriendFlags); + public abstract uint GetFriendRelationship(ulong steamIDFriend); + public abstract uint GetFriendPersonaState(ulong steamIDFriend); + public abstract string GetFriendPersonaName(ulong steamIDFriend); + public abstract bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo); + public abstract string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName); + public abstract int GetFriendSteamLevel(ulong steamIDFriend); + public abstract string GetPlayerNickname(ulong steamIDPlayer); + public abstract int GetFriendsGroupCount(); + public abstract char GetFriendsGroupIDByIndex(int iFG); + public abstract string GetFriendsGroupName(char friendsGroupID); + public abstract int GetFriendsGroupMembersCount(char friendsGroupID); + public abstract void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers); + public abstract bool HasFriend(ulong steamIDFriend,int iFriendFlags); + public abstract int GetClanCount(); + public abstract ulong GetClanByIndex(int iClan); + public abstract string GetClanName(ulong steamIDClan); + public abstract string GetClanTag(ulong steamIDClan); + public abstract bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting); + public abstract ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans); + public abstract int GetFriendCountFromSource(ulong steamIDSource); + public abstract ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend); + public abstract bool IsUserInSource(ulong steamIDUser,ulong steamIDSource); + public abstract void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking); + public abstract void ActivateGameOverlay(string pchDialog); + public abstract void ActivateGameOverlayToUser(string pchDialog,ulong steamID); + public abstract void ActivateGameOverlayToWebPage(string pchURL); + public abstract void ActivateGameOverlayToStore(uint nAppID,char eFlag); + public abstract void SetPlayedWith(ulong steamIDUserPlayedWith); + public abstract void ActivateGameOverlayInviteDialog(ulong steamIDLobby); + public abstract int GetSmallFriendAvatar(ulong steamIDFriend); + public abstract int GetMediumFriendAvatar(ulong steamIDFriend); + public abstract int GetLargeFriendAvatar(ulong steamIDFriend); + public abstract bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly); + public abstract ulong RequestClanOfficerList(ulong steamIDClan); + public abstract ulong GetClanOwner(ulong steamIDClan); + public abstract int GetClanOfficerCount(ulong steamIDClan); + public abstract ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer); + public abstract uint GetUserRestrictions(); + public abstract bool SetRichPresence(string pchKey,string pchValue); + public abstract void ClearRichPresence(); + public abstract string GetFriendRichPresence(ulong steamIDFriend,string pchKey); + public abstract int GetFriendRichPresenceKeyCount(ulong steamIDFriend); + public abstract string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey); + public abstract void RequestFriendRichPresence(ulong steamIDFriend); + public abstract bool InviteUserToGame(ulong steamIDFriend,string pchConnectString); + public abstract int GetCoplayFriendCount(); + public abstract ulong GetCoplayFriend(int iCoplayFriend); + public abstract int GetFriendCoplayTime(ulong steamIDFriend); + public abstract uint GetFriendCoplayGame(ulong steamIDFriend); + public abstract ulong JoinClanChatRoom(ulong steamIDClan); + public abstract bool LeaveClanChatRoom(ulong steamIDClan); + public abstract int GetClanChatMemberCount(ulong steamIDClan); + public abstract ulong GetChatMemberByIndex(ulong steamIDClan,int iUser); + public abstract bool SendClanChatMessage(ulong steamIDClanChat,string pchText); + public abstract int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter); + public abstract bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser); + public abstract bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat); + public abstract bool OpenClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool CloseClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool SetListenForFriendsMessages(bool bInterceptEnabled); + public abstract bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend); + public abstract int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract ulong GetFollowerCount(ulong steamID); + public abstract ulong IsFollowing(ulong steamID); + public abstract ulong EnumerateFollowingList(uint unStartIndex); + } + + + public abstract class ISteamUtils + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetSecondsSinceAppActive(); + public abstract uint GetSecondsSinceComputerActive(); + public abstract int GetConnectedUniverse(); + public abstract uint GetServerRealTime(); + public abstract string GetIPCountry(); + public abstract bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight); + public abstract bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize); + public abstract bool GetCSERIPPort(ref uint unIP,ref char usPort); + public abstract byte GetCurrentBatteryPower(); + public abstract uint GetAppID(); + public abstract void SetOverlayNotificationPosition(uint eNotificationPosition); + public abstract bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed); + public abstract int GetAPICallFailureReason(ulong hSteamAPICall); + public abstract bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool IsOverlayEnabled(); + public abstract bool BOverlayNeedsPresent(); + public abstract ulong CheckFileSignature(string szFileName); + public abstract bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText); + public abstract uint GetEnteredGamepadTextLength(); + public abstract bool GetEnteredGamepadTextInput(string pchText,uint cchText); + public abstract string GetSteamUILanguage(); + public abstract bool IsSteamRunningInVR(); + public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); + public abstract bool IsSteamInBigPictureMode(); + public abstract void StartVRDashboard(); + } + + + public abstract class ISteamMatchmaking + { + public abstract IntPtr GetIntPtr(); + public abstract int GetFavoriteGameCount(); + public abstract bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer); + public abstract int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer); + public abstract bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags); + public abstract ulong RequestLobbyList(); + public abstract void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo); + public abstract void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); + public abstract void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter); + public abstract void AddRequestLobbyListResultCountFilter(int cMaxResults); + public abstract void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby); + public abstract ulong GetLobbyByIndex(int iLobby); + public abstract ulong CreateLobby(uint eLobbyType,int cMaxMembers); + public abstract ulong JoinLobby(ulong steamIDLobby); + public abstract void LeaveLobby(ulong steamIDLobby); + public abstract bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee); + public abstract int GetNumLobbyMembers(ulong steamIDLobby); + public abstract ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember); + public abstract string GetLobbyData(ulong steamIDLobby,string pchKey); + public abstract bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract int GetLobbyDataCount(ulong steamIDLobby); + public abstract bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize); + public abstract bool DeleteLobbyData(ulong steamIDLobby,string pchKey); + public abstract string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey); + public abstract void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody); + public abstract int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract bool RequestLobbyData(ulong steamIDLobby); + public abstract void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer); + public abstract bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer); + public abstract bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers); + public abstract int GetLobbyMemberLimit(ulong steamIDLobby); + public abstract bool SetLobbyType(ulong steamIDLobby,uint eLobbyType); + public abstract bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable); + public abstract ulong GetLobbyOwner(ulong steamIDLobby); + public abstract bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner); + public abstract bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent); + } + + + public abstract class ISteamMatchmakingServerListResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(uint hRequest,int iServer); + public abstract void ServerFailedToRespond(uint hRequest,int iServer); + public abstract void RefreshComplete(uint hRequest,uint response); + } + + + public abstract class ISteamMatchmakingPingResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(IntPtr server); + public abstract void ServerFailedToRespond(); + } + + + public abstract class ISteamMatchmakingPlayersResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void AddPlayerToList(string pchName,int nScore,float flTimePlayed); + public abstract void PlayersFailedToRespond(); + public abstract void PlayersRefreshComplete(); + } + + + public abstract class ISteamMatchmakingRulesResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void RulesResponded(string pchRule,string pchValue); + public abstract void RulesFailedToRespond(); + public abstract void RulesRefreshComplete(); + } + + + public abstract class ISteamMatchmakingServers + { + public abstract IntPtr GetIntPtr(); + public abstract uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract void ReleaseRequest(uint hServerListRequest); + public abstract gameserveritem_t GetServerDetails(uint hRequest,int iServer); + public abstract void CancelQuery(uint hRequest); + public abstract void RefreshQuery(uint hRequest); + public abstract bool IsRefreshing(uint hRequest); + public abstract int GetServerCount(uint hRequest); + public abstract void RefreshServer(uint hRequest,int iServer); + public abstract uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse); + public abstract uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse); + public abstract uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse); + public abstract void CancelServerQuery(uint hServerQuery); + } + + + public abstract class ISteamRemoteStorage + { + public abstract IntPtr GetIntPtr(); + public abstract bool FileWrite(string pchFile,IntPtr pvData,int cubData); + public abstract int FileRead(string pchFile,IntPtr pvData,int cubDataToRead); + public abstract ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData); + public abstract ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead); + public abstract bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead); + public abstract bool FileForget(string pchFile); + public abstract bool FileDelete(string pchFile); + public abstract ulong FileShare(string pchFile); + public abstract bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform); + public abstract ulong FileWriteStreamOpen(string pchFile); + public abstract bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData); + public abstract bool FileWriteStreamClose(ulong writeHandle); + public abstract bool FileWriteStreamCancel(ulong writeHandle); + public abstract bool FileExists(string pchFile); + public abstract bool FilePersisted(string pchFile); + public abstract int GetFileSize(string pchFile); + public abstract long GetFileTimestamp(string pchFile); + public abstract uint GetSyncPlatforms(string pchFile); + public abstract int GetFileCount(); + public abstract string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes); + public abstract bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes); + public abstract bool IsCloudEnabledForAccount(); + public abstract bool IsCloudEnabledForApp(); + public abstract void SetCloudEnabledForApp(bool bEnabled); + public abstract ulong UGCDownload(ulong hContent,uint unPriority); + public abstract bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected); + public abstract bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner); + public abstract int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction); + public abstract int GetCachedUGCCount(); + public abstract ulong GetCachedUGCHandle(int iCachedContent); + public abstract ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType); + public abstract ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileFile(ulong updateHandle,string pchFile); + public abstract bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile); + public abstract bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle); + public abstract bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription); + public abstract bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility); + public abstract bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract ulong CommitPublishedFileUpdate(ulong updateHandle); + public abstract ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld); + public abstract ulong DeletePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserPublishedFiles(uint unStartIndex); + public abstract ulong SubscribePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserSubscribedFiles(uint unStartIndex); + public abstract ulong UnsubscribePublishedFile(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription); + public abstract ulong GetPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp); + public abstract ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags); + public abstract ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags); + public abstract ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction); + public abstract ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex); + public abstract ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags); + public abstract ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority); + } + + + public abstract class ISteamUserStats + { + public abstract IntPtr GetIntPtr(); + public abstract bool RequestCurrentStats(); + public abstract bool GetStat(string pchName,ref int pData); + public abstract bool GetStat0(string pchName,ref float pData); + public abstract bool SetStat(string pchName,int nData); + public abstract bool SetStat0(string pchName,float fData); + public abstract bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength); + public abstract bool GetAchievement(string pchName,ref bool pbAchieved); + public abstract bool SetAchievement(string pchName); + public abstract bool ClearAchievement(string pchName); + public abstract bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool StoreStats(); + public abstract int GetAchievementIcon(string pchName); + public abstract string GetAchievementDisplayAttribute(string pchName,string pchKey); + public abstract bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress); + public abstract uint GetNumAchievements(); + public abstract string GetAchievementName(uint iAchievement); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool ResetAllStats(bool bAchievementsToo); + public abstract ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType); + public abstract ulong FindLeaderboard(string pchLeaderboardName); + public abstract string GetLeaderboardName(ulong hSteamLeaderboard); + public abstract int GetLeaderboardEntryCount(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardSortMethod(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardDisplayType(ulong hSteamLeaderboard); + public abstract ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd); + public abstract ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers); + public abstract bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax); + public abstract ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount); + public abstract ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC); + public abstract ulong GetNumberOfCurrentPlayers(); + public abstract ulong RequestGlobalAchievementPercentages(); + public abstract int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract bool GetAchievementAchievedPercent(string pchName,ref float pflPercent); + public abstract ulong RequestGlobalStats(int nHistoryDays); + public abstract bool GetGlobalStat(string pchStatName,ref long pData); + public abstract bool GetGlobalStat0(string pchStatName,ref double pData); + public abstract int GetGlobalStatHistory(string pchStatName,long [] pData); + public abstract int GetGlobalStatHistory0(string pchStatName,double [] pData); + } + + + public abstract class ISteamApps + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsSubscribed(); + public abstract bool BIsLowViolence(); + public abstract bool BIsCybercafe(); + public abstract bool BIsVACBanned(); + public abstract string GetCurrentGameLanguage(); + public abstract string GetAvailableGameLanguages(); + public abstract bool BIsSubscribedApp(uint appID); + public abstract bool BIsDlcInstalled(uint appID); + public abstract uint GetEarliestPurchaseUnixTime(uint nAppID); + public abstract bool BIsSubscribedFromFreeWeekend(); + public abstract int GetDLCCount(); + public abstract bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize); + public abstract void InstallDLC(uint nAppID); + public abstract void UninstallDLC(uint nAppID); + public abstract void RequestAppProofOfPurchaseKey(uint nAppID); + public abstract bool GetCurrentBetaName(string pchName,int cchNameBufferSize); + public abstract bool MarkContentCorrupt(bool bMissingFilesOnly); + public abstract uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots); + public abstract uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize); + public abstract bool BIsAppInstalled(uint appID); + public abstract ulong GetAppOwner(); + public abstract string GetLaunchQueryParam(string pchKey); + public abstract bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract int GetAppBuildId(); + public abstract void RequestAllProofOfPurchaseKeys(); + public abstract ulong GetFileDetails(string pszFileName); + } + + + public abstract class ISteamNetworking + { + public abstract IntPtr GetIntPtr(); + public abstract bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel); + public abstract bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel); + public abstract bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel); + public abstract bool AcceptP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel); + public abstract bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState); + public abstract bool AllowP2PPacketRelay(bool bAllow); + public abstract uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay); + public abstract uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay); + public abstract uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec); + public abstract bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable); + public abstract bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize); + public abstract bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize); + public abstract bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote); + public abstract bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort); + public abstract uint GetSocketConnectionType(uint hSocket); + public abstract int GetMaxPacketSize(uint hSocket); + } + + + public abstract class ISteamScreenshots + { + public abstract IntPtr GetIntPtr(); + public abstract uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight); + public abstract uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight); + public abstract void TriggerScreenshot(); + public abstract void HookScreenshots(bool bHook); + public abstract bool SetLocation(uint hScreenshot,string pchLocation); + public abstract bool TagUser(uint hScreenshot,ulong steamID); + public abstract bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID); + public abstract bool IsScreenshotsHooked(); + public abstract uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename); + } + + + public abstract class ISteamMusic + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsEnabled(); + public abstract bool BIsPlaying(); + public abstract int GetPlaybackStatus(); + public abstract void Play(); + public abstract void Pause(); + public abstract void PlayPrevious(); + public abstract void PlayNext(); + public abstract void SetVolume(float flVolume); + public abstract float GetVolume(); + } + + + public abstract class ISteamMusicRemote + { + public abstract IntPtr GetIntPtr(); + public abstract bool RegisterSteamMusicRemote(string pchName); + public abstract bool DeregisterSteamMusicRemote(); + public abstract bool BIsCurrentMusicRemote(); + public abstract bool BActivationSuccess(bool bValue); + public abstract bool SetDisplayName(string pchDisplayName); + public abstract bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool EnablePlayPrevious(bool bValue); + public abstract bool EnablePlayNext(bool bValue); + public abstract bool EnableShuffled(bool bValue); + public abstract bool EnableLooped(bool bValue); + public abstract bool EnableQueue(bool bValue); + public abstract bool EnablePlaylists(bool bValue); + public abstract bool UpdatePlaybackStatus(int nStatus); + public abstract bool UpdateShuffled(bool bValue); + public abstract bool UpdateLooped(bool bValue); + public abstract bool UpdateVolume(float flValue); + public abstract bool CurrentEntryWillChange(); + public abstract bool CurrentEntryIsAvailable(bool bAvailable); + public abstract bool UpdateCurrentEntryText(string pchText); + public abstract bool UpdateCurrentEntryElapsedSeconds(int nValue); + public abstract bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool CurrentEntryDidChange(); + public abstract bool QueueWillChange(); + public abstract bool ResetQueueEntries(); + public abstract bool SetQueueEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentQueueEntry(int nID); + public abstract bool QueueDidChange(); + public abstract bool PlaylistWillChange(); + public abstract bool ResetPlaylistEntries(); + public abstract bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentPlaylistEntry(int nID); + public abstract bool PlaylistDidChange(); + } + + + public abstract class ISteamHTTP + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL); + public abstract bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue); + public abstract bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds); + public abstract bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue); + public abstract bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue); + public abstract bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle); + public abstract bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle); + public abstract bool DeferHTTPRequest(uint hRequest); + public abstract bool PrioritizeHTTPRequest(uint hRequest); + public abstract bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize); + public abstract bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize); + public abstract bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize); + public abstract bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool ReleaseHTTPRequest(uint hRequest); + public abstract bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut); + public abstract bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen); + public abstract uint CreateCookieContainer(bool bAllowResponsesToModify); + public abstract bool ReleaseCookieContainer(uint hCookieContainer); + public abstract bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie); + public abstract bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer); + public abstract bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo); + public abstract bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate); + public abstract bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds); + public abstract bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut); + } + + + public abstract class ISteamUnifiedMessages + { + public abstract IntPtr GetIntPtr(); + public abstract ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext); + public abstract bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult); + public abstract bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease); + public abstract bool ReleaseMethod(ulong hHandle); + public abstract bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize); + } + + + public abstract class ISteamController + { + public abstract IntPtr GetIntPtr(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract void RunFrame(); + public abstract int GetConnectedControllers(ref ulong handlesOut); + public abstract bool ShowBindingPanel(ulong controllerHandle); + public abstract ulong GetActionSetHandle(string pszActionSetName); + public abstract void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle); + public abstract ulong GetCurrentActionSet(ulong controllerHandle); + public abstract ulong GetDigitalActionHandle(string pszActionName); + public abstract ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle); + public abstract int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut); + public abstract ulong GetAnalogActionHandle(string pszActionName); + public abstract ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle); + public abstract int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut); + public abstract void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction); + public abstract void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec); + public abstract void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags); + public abstract int GetGamepadIndexForController(ulong ulControllerHandle); + public abstract ulong GetControllerForGamepadIndex(int nIndex); + public abstract ControllerMotionData_t GetMotionData(ulong controllerHandle); + public abstract bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition); + public abstract bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition); + } + + + public abstract class ISteamUGC + { + public abstract IntPtr GetIntPtr(); + public abstract ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong SendQueryUGCRequest(ulong handle); + public abstract bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails); + public abstract bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL); + public abstract bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata); + public abstract bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue); + public abstract uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index); + public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType); + public abstract uint GetQueryUGCNumKeyValueTags(ulong handle,uint index); + public abstract bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue); + public abstract bool ReleaseQueryUGCRequest(ulong handle); + public abstract bool AddRequiredTag(ulong handle,string pTagName); + public abstract bool AddExcludedTag(ulong handle,string pTagName); + public abstract bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs); + public abstract bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags); + public abstract bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription); + public abstract bool SetReturnMetadata(ulong handle,bool bReturnMetadata); + public abstract bool SetReturnChildren(ulong handle,bool bReturnChildren); + public abstract bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews); + public abstract bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly); + public abstract bool SetLanguage(ulong handle,string pchLanguage); + public abstract bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds); + public abstract bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName); + public abstract bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag); + public abstract bool SetSearchText(ulong handle,string pSearchText); + public abstract bool SetRankedByTrendDays(ulong handle,uint unDays); + public abstract bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue); + public abstract ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds); + public abstract ulong CreateItem(uint nConsumerAppId,uint eFileType); + public abstract ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID); + public abstract bool SetItemTitle(ulong handle,string pchTitle); + public abstract bool SetItemDescription(ulong handle,string pchDescription); + public abstract bool SetItemUpdateLanguage(ulong handle,string pchLanguage); + public abstract bool SetItemMetadata(ulong handle,string pchMetaData); + public abstract bool SetItemVisibility(ulong handle,uint eVisibility); + public abstract bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract bool SetItemContent(ulong handle,string pszContentFolder); + public abstract bool SetItemPreview(ulong handle,string pszPreviewFile); + public abstract bool RemoveItemKeyValueTags(ulong handle,string pchKey); + public abstract bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue); + public abstract bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type); + public abstract bool AddItemPreviewVideo(ulong handle,string pszVideoID); + public abstract bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile); + public abstract bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID); + public abstract bool RemoveItemPreview(ulong handle,uint index); + public abstract ulong SubmitItemUpdate(ulong handle,string pchChangeNote); + public abstract uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal); + public abstract ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp); + public abstract ulong GetUserItemVote(ulong nPublishedFileID); + public abstract ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong SubscribeItem(ulong nPublishedFileID); + public abstract ulong UnsubscribeItem(ulong nPublishedFileID); + public abstract uint GetNumSubscribedItems(); + public abstract uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract uint GetItemState(ulong nPublishedFileID); + public abstract bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp); + public abstract bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract bool DownloadItem(ulong nPublishedFileID,bool bHighPriority); + public abstract bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder); + public abstract void SuspendDownloads(bool bSuspend); + public abstract ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTrackingForAllItems(); + } + + + public abstract class ISteamAppList + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetNumInstalledApps(); + public abstract uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs); + public abstract int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax); + public abstract int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax); + public abstract int GetAppBuildId(uint nAppID); + } + + + public abstract class ISteamHTMLSurface + { + public abstract IntPtr GetIntPtr(); + public abstract void DestructISteamHTMLSurface(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract ulong CreateBrowser(string pchUserAgent,string pchUserCSS); + public abstract void RemoveBrowser(uint unBrowserHandle); + public abstract void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData); + public abstract void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight); + public abstract void StopLoad(uint unBrowserHandle); + public abstract void Reload(uint unBrowserHandle); + public abstract void GoBack(uint unBrowserHandle); + public abstract void GoForward(uint unBrowserHandle); + public abstract void AddHeader(uint unBrowserHandle,string pchKey,string pchValue); + public abstract void ExecuteJavascript(uint unBrowserHandle,string pchScript); + public abstract void MouseUp(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDown(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseMove(uint unBrowserHandle,int x,int y); + public abstract void MouseWheel(uint unBrowserHandle,int nDelta); + public abstract void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers); + public abstract void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus); + public abstract void ViewSource(uint unBrowserHandle); + public abstract void CopyToClipboard(uint unBrowserHandle); + public abstract void PasteFromClipboard(uint unBrowserHandle); + public abstract void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse); + public abstract void StopFind(uint unBrowserHandle); + public abstract void GetLinkAtPosition(uint unBrowserHandle,int x,int y); + public abstract void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly); + public abstract void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY); + public abstract void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode); + public abstract void AllowStartRequest(uint unBrowserHandle,bool bAllowed); + public abstract void JSDialogResponse(uint unBrowserHandle,bool bResult); + } + + + public abstract class ISteamInventory + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetResultStatus(int resultHandle); + public abstract bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray); + public abstract uint GetResultTimestamp(int resultHandle); + public abstract bool CheckResultSteamID(int resultHandle,ulong steamIDExpected); + public abstract void DestroyResult(int resultHandle); + public abstract bool GetAllItems(ref int pResultHandle); + public abstract bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs); + public abstract bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize); + public abstract bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE); + public abstract bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity); + public abstract bool GrantPromoItems(ref int pResultHandle); + public abstract bool AddPromoItem(ref int pResultHandle,int itemDef); + public abstract bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs); + public abstract bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity); + public abstract bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity); + public abstract bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest); + public abstract void SendItemDropHeartbeat(); + public abstract bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition); + public abstract bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity); + public abstract bool LoadItemDefinitions(); + public abstract bool GetItemDefinitionIDs(out int [] pItemDefIDs); + public abstract bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer); + } + + + public abstract class ISteamVideo + { + public abstract IntPtr GetIntPtr(); + public abstract void GetVideoURL(uint unVideoAppID); + public abstract bool IsBroadcasting(ref int pnNumViewers); + } + + + public abstract class ISteamGameServer + { + public abstract IntPtr GetIntPtr(); + public abstract bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString); + public abstract void SetProduct(string pszProduct); + public abstract void SetGameDescription(string pszGameDescription); + public abstract void SetModDir(string pszModDir); + public abstract void SetDedicatedServer(bool bDedicated); + public abstract void LogOn(string pszToken); + public abstract void LogOnAnonymous(); + public abstract void LogOff(); + public abstract bool BLoggedOn(); + public abstract bool BSecure(); + public abstract ulong GetSteamID(); + public abstract bool WasRestartRequested(); + public abstract void SetMaxPlayerCount(int cPlayersMax); + public abstract void SetBotPlayerCount(int cBotplayers); + public abstract void SetServerName(string pszServerName); + public abstract void SetMapName(string pszMapName); + public abstract void SetPasswordProtected(bool bPasswordProtected); + public abstract void SetSpectatorPort(char unSpectatorPort); + public abstract void SetSpectatorServerName(string pszSpectatorServerName); + public abstract void ClearAllKeyValues(); + public abstract void SetKeyValue(string pKey,string pValue); + public abstract void SetGameTags(string pchGameTags); + public abstract void SetGameData(string pchGameData); + public abstract void SetRegion(string pszRegion); + public abstract bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser); + public abstract ulong CreateUnauthenticatedUserConnection(); + public abstract void SendUserDisconnect(ulong steamIDUser); + public abstract bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup); + public abstract void GetGameplayStats(); + public abstract ulong GetServerReputation(); + public abstract uint GetPublicIP(); + public abstract bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort); + public abstract int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort); + public abstract void EnableHeartbeats(bool bActive); + public abstract void SetHeartbeatInterval(int iHeartbeatInterval); + public abstract void ForceHeartbeat(); + public abstract ulong AssociateWithClan(ulong steamIDClan); + public abstract ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer); + } + + + public abstract class ISteamGameServerStats + { + public abstract IntPtr GetIntPtr(); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool SetUserStat(ulong steamIDUser,string pchName,int nData); + public abstract bool SetUserStat0(ulong steamIDUser,string pchName,float fData); + public abstract bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength); + public abstract bool SetUserAchievement(ulong steamIDUser,string pchName); + public abstract bool ClearUserAchievement(ulong steamIDUser,string pchName); + public abstract ulong StoreUserStats(ulong steamIDUser); + } + + +public class CSteamClient : ISteamClient +{ +public CSteamClient(IntPtr SteamClient) +{ + m_pSteamClient = SteamClient; +} +IntPtr m_pSteamClient; + +public override IntPtr GetIntPtr() { return m_pSteamClient; } + +private void CheckIfUsable() +{ + if (m_pSteamClient == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateSteamPipe() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateSteamPipe(m_pSteamClient); + return result; +} +public override bool BReleaseSteamPipe(uint hSteamPipe) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BReleaseSteamPipe(m_pSteamClient,hSteamPipe); + return result; +} +public override uint ConnectToGlobalUser(uint hSteamPipe) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_ConnectToGlobalUser(m_pSteamClient,hSteamPipe); + return result; +} +public override uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType) +{ + CheckIfUsable(); + phSteamPipe = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateLocalUser(m_pSteamClient,ref phSteamPipe,eAccountType); + return result; +} +public override void ReleaseUser(uint hSteamPipe,uint hUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_ReleaseUser(m_pSteamClient,hSteamPipe,hUser); +} +public override ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUser(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUser) Marshal.PtrToStructure(result, typeof(ISteamUser)); +} +public override ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServer(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamGameServer) Marshal.PtrToStructure(result, typeof(ISteamGameServer)); +} +public override void SetLocalIPBinding(uint unIP,char usPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetLocalIPBinding(m_pSteamClient,unIP,usPort); +} +public override ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamFriends(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamFriends) Marshal.PtrToStructure(result, typeof(ISteamFriends)); +} +public override ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUtils(m_pSteamClient,hSteamPipe,pchVersion); + return (ISteamUtils) Marshal.PtrToStructure(result, typeof(ISteamUtils)); +} +public override ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmaking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmaking) Marshal.PtrToStructure(result, typeof(ISteamMatchmaking)); +} +public override ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmakingServers(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmakingServers) Marshal.PtrToStructure(result, typeof(ISteamMatchmakingServers)); +} +public override IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGenericInterface(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (IntPtr) Marshal.PtrToStructure(result, typeof(IntPtr)); +} +public override ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUserStats(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUserStats) Marshal.PtrToStructure(result, typeof(ISteamUserStats)); +} +public override ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServerStats(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamGameServerStats) Marshal.PtrToStructure(result, typeof(ISteamGameServerStats)); +} +public override ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamApps(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamApps) Marshal.PtrToStructure(result, typeof(ISteamApps)); +} +public override ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamNetworking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamNetworking) Marshal.PtrToStructure(result, typeof(ISteamNetworking)); +} +public override ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamRemoteStorage(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamRemoteStorage) Marshal.PtrToStructure(result, typeof(ISteamRemoteStorage)); +} +public override ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamScreenshots(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamScreenshots) Marshal.PtrToStructure(result, typeof(ISteamScreenshots)); +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_GetIPCCallCount(m_pSteamClient); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetWarningMessageHook(m_pSteamClient,pFunction); +} +public override bool BShutdownIfAllPipesClosed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(m_pSteamClient); + return result; +} +public override ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTTP(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTTP) Marshal.PtrToStructure(result, typeof(ISteamHTTP)); +} +public override ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUnifiedMessages(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamUnifiedMessages) Marshal.PtrToStructure(result, typeof(ISteamUnifiedMessages)); +} +public override ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamController(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamController) Marshal.PtrToStructure(result, typeof(ISteamController)); +} +public override ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUGC(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUGC) Marshal.PtrToStructure(result, typeof(ISteamUGC)); +} +public override ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamAppList(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamAppList) Marshal.PtrToStructure(result, typeof(ISteamAppList)); +} +public override ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusic(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusic) Marshal.PtrToStructure(result, typeof(ISteamMusic)); +} +public override ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusicRemote(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusicRemote) Marshal.PtrToStructure(result, typeof(ISteamMusicRemote)); +} +public override ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTMLSurface(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTMLSurface) Marshal.PtrToStructure(result, typeof(ISteamHTMLSurface)); +} +public override ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamInventory(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamInventory) Marshal.PtrToStructure(result, typeof(ISteamInventory)); +} +public override ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamVideo(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamVideo) Marshal.PtrToStructure(result, typeof(ISteamVideo)); +} +} + + +public class CSteamUser : ISteamUser +{ +public CSteamUser(IntPtr SteamUser) +{ + m_pSteamUser = SteamUser; +} +IntPtr m_pSteamUser; + +public override IntPtr GetIntPtr() { return m_pSteamUser; } + +private void CheckIfUsable() +{ + if (m_pSteamUser == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetHSteamUser() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetHSteamUser(m_pSteamUser); + return result; +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BLoggedOn(m_pSteamUser); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_GetSteamID(m_pSteamUser); + return result; +} +public override int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_InitiateGameConnection(m_pSteamUser,pAuthBlob,cbMaxAuthBlob,steamIDGameServer,unIPServer,usPortServer,bSecure); + return result; +} +public override void TerminateGameConnection(uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TerminateGameConnection(m_pSteamUser,unIPServer,usPortServer); +} +public override void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TrackAppUsageEvent(m_pSteamUser,gameID,eAppUsageEvent,pchExtraInfo); +} +public override bool GetUserDataFolder(string pchBuffer,int cubBuffer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetUserDataFolder(m_pSteamUser,pchBuffer,cubBuffer); + return result; +} +public override void StartVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StartVoiceRecording(m_pSteamUser); +} +public override void StopVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StopVoiceRecording(m_pSteamUser); +} +public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + pcbCompressed = 0; + pcbUncompressed = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + nUncompressBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed,pUncompressedDestBuffer,cbUncompressedDestBufferSize,ref nUncompressBytesWritten,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_DecompressVoice(m_pSteamUser,pCompressed,cbCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,nDesiredSampleRate); + return result; +} +public override uint GetVoiceOptimalSampleRate() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(m_pSteamUser); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAuthSessionTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_BeginAuthSession(m_pSteamUser,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_EndAuthSession(m_pSteamUser,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_CancelAuthTicket(m_pSteamUser,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_UserHasLicenseForApp(m_pSteamUser,steamID,appID); + return result; +} +public override bool BIsBehindNAT() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsBehindNAT(m_pSteamUser); + return result; +} +public override void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_AdvertiseGame(m_pSteamUser,steamIDGameServer,unIPServer,usPortServer); +} +public override ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestEncryptedAppTicket(m_pSteamUser,pDataToInclude,cbDataToInclude); + return result; +} +public override bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetEncryptedAppTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override int GetGameBadgeLevel(int nSeries,bool bFoil) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetGameBadgeLevel(m_pSteamUser,nSeries,bFoil); + return result; +} +public override int GetPlayerSteamLevel() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetPlayerSteamLevel(m_pSteamUser); + return result; +} +public override ulong RequestStoreAuthURL(string pchRedirectURL) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestStoreAuthURL(m_pSteamUser,pchRedirectURL); + return result; +} +public override bool BIsPhoneVerified() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneVerified(m_pSteamUser); + return result; +} +public override bool BIsTwoFactorEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsTwoFactorEnabled(m_pSteamUser); + return result; +} +public override bool BIsPhoneIdentifying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneIdentifying(m_pSteamUser); + return result; +} +public override bool BIsPhoneRequiringVerification() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneRequiringVerification(m_pSteamUser); + return result; +} +} + + +public class CSteamFriends : ISteamFriends +{ +public CSteamFriends(IntPtr SteamFriends) +{ + m_pSteamFriends = SteamFriends; +} +IntPtr m_pSteamFriends; + +public override IntPtr GetIntPtr() { return m_pSteamFriends; } + +private void CheckIfUsable() +{ + if (m_pSteamFriends == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override string GetPersonaName() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaName(m_pSteamFriends); + return Marshal.PtrToStringAnsi(result); +} +public override ulong SetPersonaName(string pchPersonaName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_SetPersonaName(m_pSteamFriends,pchPersonaName); + return result; +} +public override uint GetPersonaState() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaState(m_pSteamFriends); + return result; +} +public override int GetFriendCount(int iFriendFlags) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCount(m_pSteamFriends,iFriendFlags); + return result; +} +public override ulong GetFriendByIndex(int iFriend,int iFriendFlags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendByIndex(m_pSteamFriends,iFriend,iFriendFlags); + return result; +} +public override uint GetFriendRelationship(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRelationship(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendPersonaState(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaState(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendPersonaName(ulong steamIDFriend) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaName(m_pSteamFriends,steamIDFriend); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo) +{ + CheckIfUsable(); + pFriendGameInfo = new FriendGameInfo_t(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendGamePlayed(m_pSteamFriends,steamIDFriend,ref pFriendGameInfo); + return result; +} +public override string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(m_pSteamFriends,steamIDFriend,iPersonaName); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendSteamLevel(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendSteamLevel(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetPlayerNickname(ulong steamIDPlayer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPlayerNickname(m_pSteamFriends,steamIDPlayer); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupCount(m_pSteamFriends); + return result; +} +public override char GetFriendsGroupIDByIndex(int iFG) +{ + CheckIfUsable(); + char result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(m_pSteamFriends,iFG); + return result; +} +public override string GetFriendsGroupName(char friendsGroupID) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupName(m_pSteamFriends,friendsGroupID); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupMembersCount(char friendsGroupID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(m_pSteamFriends,friendsGroupID); + return result; +} +public override void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers) +{ + CheckIfUsable(); + int nMembersCount = GetFriendsGroupMembersCount (friendsGroupID); + pOutSteamIDMembers = new CSteamID[nMembersCount]; + NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersList(m_pSteamFriends,friendsGroupID,pOutSteamIDMembers,nMembersCount); +} +public override bool HasFriend(ulong steamIDFriend,int iFriendFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_HasFriend(m_pSteamFriends,steamIDFriend,iFriendFlags); + return result; +} +public override int GetClanCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanCount(m_pSteamFriends); + return result; +} +public override ulong GetClanByIndex(int iClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanByIndex(m_pSteamFriends,iClan); + return result; +} +public override string GetClanName(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanName(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override string GetClanTag(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanTag(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting) +{ + CheckIfUsable(); + pnOnline = 0; + pnInGame = 0; + pnChatting = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanActivityCounts(m_pSteamFriends,steamIDClan,ref pnOnline,ref pnInGame,ref pnChatting); + return result; +} +public override ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_DownloadClanActivityCounts(m_pSteamFriends,psteamIDClans,(int) psteamIDClans.Length); + return result; +} +public override int GetFriendCountFromSource(ulong steamIDSource) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCountFromSource(m_pSteamFriends,steamIDSource); + return result; +} +public override ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(m_pSteamFriends,steamIDSource,iFriend); + return result; +} +public override bool IsUserInSource(ulong steamIDUser,ulong steamIDSource) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsUserInSource(m_pSteamFriends,steamIDUser,steamIDSource); + return result; +} +public override void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(m_pSteamFriends,steamIDUser,bSpeaking); +} +public override void ActivateGameOverlay(string pchDialog) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlay(m_pSteamFriends,pchDialog); +} +public override void ActivateGameOverlayToUser(string pchDialog,ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToUser(m_pSteamFriends,pchDialog,steamID); +} +public override void ActivateGameOverlayToWebPage(string pchURL) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(m_pSteamFriends,pchURL); +} +public override void ActivateGameOverlayToStore(uint nAppID,char eFlag) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToStore(m_pSteamFriends,nAppID,eFlag); +} +public override void SetPlayedWith(ulong steamIDUserPlayedWith) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetPlayedWith(m_pSteamFriends,steamIDUserPlayedWith); +} +public override void ActivateGameOverlayInviteDialog(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(m_pSteamFriends,steamIDLobby); +} +public override int GetSmallFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetSmallFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetMediumFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetMediumFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetLargeFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetLargeFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestUserInformation(m_pSteamFriends,steamIDUser,bRequireNameOnly); + return result; +} +public override ulong RequestClanOfficerList(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestClanOfficerList(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOwner(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOwner(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanOfficerCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerByIndex(m_pSteamFriends,steamIDClan,iOfficer); + return result; +} +public override uint GetUserRestrictions() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetUserRestrictions(m_pSteamFriends); + return result; +} +public override bool SetRichPresence(string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetRichPresence(m_pSteamFriends,pchKey,pchValue); + return result; +} +public override void ClearRichPresence() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ClearRichPresence(m_pSteamFriends); +} +public override string GetFriendRichPresence(ulong steamIDFriend,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresence(m_pSteamFriends,steamIDFriend,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendRichPresenceKeyCount(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(m_pSteamFriends,steamIDFriend,iKey); + return Marshal.PtrToStringAnsi(result); +} +public override void RequestFriendRichPresence(ulong steamIDFriend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_RequestFriendRichPresence(m_pSteamFriends,steamIDFriend); +} +public override bool InviteUserToGame(ulong steamIDFriend,string pchConnectString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_InviteUserToGame(m_pSteamFriends,steamIDFriend,pchConnectString); + return result; +} +public override int GetCoplayFriendCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriendCount(m_pSteamFriends); + return result; +} +public override ulong GetCoplayFriend(int iCoplayFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriend(m_pSteamFriends,iCoplayFriend); + return result; +} +public override int GetFriendCoplayTime(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayTime(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendCoplayGame(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayGame(m_pSteamFriends,steamIDFriend); + return result; +} +public override ulong JoinClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_JoinClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override bool LeaveClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_LeaveClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanChatMemberCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMemberCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetChatMemberByIndex(ulong steamIDClan,int iUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetChatMemberByIndex(m_pSteamFriends,steamIDClan,iUser); + return result; +} +public override bool SendClanChatMessage(ulong steamIDClanChat,string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SendClanChatMessage(m_pSteamFriends,steamIDClanChat,pchText); + return result; +} +public override int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter) +{ + CheckIfUsable(); + peChatEntryType = 0; + psteamidChatter = new CSteamID(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMessage(m_pSteamFriends,steamIDClanChat,iMessage,prgchText,cchTextMax,ref peChatEntryType,ref psteamidChatter); + return result; +} +public override bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatAdmin(m_pSteamFriends,steamIDClanChat,steamIDUser); + return result; +} +public override bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool OpenClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool CloseClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool SetListenForFriendsMessages(bool bInterceptEnabled) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetListenForFriendsMessages(m_pSteamFriends,bInterceptEnabled); + return result; +} +public override bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_ReplyToFriendMessage(m_pSteamFriends,steamIDFriend,pchMsgToSend); + return result; +} +public override int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendMessage(m_pSteamFriends,steamIDFriend,iMessageID,pvData,cubData,ref peChatEntryType); + return result; +} +public override ulong GetFollowerCount(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFollowerCount(m_pSteamFriends,steamID); + return result; +} +public override ulong IsFollowing(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_IsFollowing(m_pSteamFriends,steamID); + return result; +} +public override ulong EnumerateFollowingList(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_EnumerateFollowingList(m_pSteamFriends,unStartIndex); + return result; +} +} + + +public class CSteamUtils : ISteamUtils +{ +public CSteamUtils(IntPtr SteamUtils) +{ + m_pSteamUtils = SteamUtils; +} +IntPtr m_pSteamUtils; + +public override IntPtr GetIntPtr() { return m_pSteamUtils; } + +private void CheckIfUsable() +{ + if (m_pSteamUtils == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetSecondsSinceAppActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceAppActive(m_pSteamUtils); + return result; +} +public override uint GetSecondsSinceComputerActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(m_pSteamUtils); + return result; +} +public override int GetConnectedUniverse() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetConnectedUniverse(m_pSteamUtils); + return result; +} +public override uint GetServerRealTime() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetServerRealTime(m_pSteamUtils); + return result; +} +public override string GetIPCountry() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCountry(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight) +{ + CheckIfUsable(); + pnWidth = 0; + pnHeight = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageSize(m_pSteamUtils,iImage,ref pnWidth,ref pnHeight); + return result; +} +public override bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageRGBA(m_pSteamUtils,iImage,pubDest,nDestBufferSize); + return result; +} +public override bool GetCSERIPPort(ref uint unIP,ref char usPort) +{ + CheckIfUsable(); + unIP = 0; + usPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCSERIPPort(m_pSteamUtils,ref unIP,ref usPort); + return result; +} +public override byte GetCurrentBatteryPower() +{ + CheckIfUsable(); + byte result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCurrentBatteryPower(m_pSteamUtils); + return result; +} +public override uint GetAppID() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAppID(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationPosition(uint eNotificationPosition) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationPosition(m_pSteamUtils,eNotificationPosition); +} +public override bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsAPICallCompleted(m_pSteamUtils,hSteamAPICall,ref pbFailed); + return result; +} +public override int GetAPICallFailureReason(ulong hSteamAPICall) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallFailureReason(m_pSteamUtils,hSteamAPICall); + return result; +} +public override bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallResult(m_pSteamUtils,hSteamAPICall,pCallback,cubCallback,iCallbackExpected,ref pbFailed); + return result; +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCCallCount(m_pSteamUtils); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetWarningMessageHook(m_pSteamUtils,pFunction); +} +public override bool IsOverlayEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsOverlayEnabled(m_pSteamUtils); + return result; +} +public override bool BOverlayNeedsPresent() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_BOverlayNeedsPresent(m_pSteamUtils); + return result; +} +public override ulong CheckFileSignature(string szFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUtils_CheckFileSignature(m_pSteamUtils,szFileName); + return result; +} +public override bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_ShowGamepadTextInput(m_pSteamUtils,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText); + return result; +} +public override uint GetEnteredGamepadTextLength() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(m_pSteamUtils); + return result; +} +public override bool GetEnteredGamepadTextInput(string pchText,uint cchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(m_pSteamUtils,pchText,cchText); + return result; +} +public override string GetSteamUILanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSteamUILanguage(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool IsSteamRunningInVR() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamRunningInVR(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationInset(m_pSteamUtils,nHorizontalInset,nVerticalInset); +} +public override bool IsSteamInBigPictureMode() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamInBigPictureMode(m_pSteamUtils); + return result; +} +public override void StartVRDashboard() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); +} +} + + +public class CSteamMatchmaking : ISteamMatchmaking +{ +public CSteamMatchmaking(IntPtr SteamMatchmaking) +{ + m_pSteamMatchmaking = SteamMatchmaking; +} +IntPtr m_pSteamMatchmaking; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmaking; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmaking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override int GetFavoriteGameCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(m_pSteamMatchmaking); + return result; +} +public override bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer) +{ + CheckIfUsable(); + pnAppID = 0; + pnIP = 0; + pnConnPort = (char) 0; + pnQueryPort = (char) 0; + punFlags = 0; + pRTime32LastPlayedOnServer = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGame(m_pSteamMatchmaking,iGame,ref pnAppID,ref pnIP,ref pnConnPort,ref pnQueryPort,ref punFlags,ref pRTime32LastPlayedOnServer); + return result; +} +public override int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags,rTime32LastPlayedOnServer); + return result; +} +public override bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags); + return result; +} +public override ulong RequestLobbyList() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyList(m_pSteamMatchmaking); + return result; +} +public override void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(m_pSteamMatchmaking,pchKeyToMatch,pchValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToBeCloseTo); +} +public override void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(m_pSteamMatchmaking,nSlotsAvailable); +} +public override void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(m_pSteamMatchmaking,eLobbyDistanceFilter); +} +public override void AddRequestLobbyListResultCountFilter(int cMaxResults) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(m_pSteamMatchmaking,cMaxResults); +} +public override void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(m_pSteamMatchmaking,steamIDLobby); +} +public override ulong GetLobbyByIndex(int iLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyByIndex(m_pSteamMatchmaking,iLobby); + return result; +} +public override ulong CreateLobby(uint eLobbyType,int cMaxMembers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_CreateLobby(m_pSteamMatchmaking,eLobbyType,cMaxMembers); + return result; +} +public override ulong JoinLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_JoinLobby(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void LeaveLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_LeaveLobby(m_pSteamMatchmaking,steamIDLobby); +} +public override bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_InviteUserToLobby(m_pSteamMatchmaking,steamIDLobby,steamIDInvitee); + return result; +} +public override int GetNumLobbyMembers(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(m_pSteamMatchmaking,steamIDLobby,iMember); + return result; +} +public override string GetLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); + return result; +} +public override int GetLobbyDataCount(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataCount(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(m_pSteamMatchmaking,steamIDLobby,iLobbyData,pchKey,cchKeyBufferSize,pchValue,cchValueBufferSize); + return result; +} +public override bool DeleteLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_DeleteLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return result; +} +public override string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,steamIDUser,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); +} +public override bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(m_pSteamMatchmaking,steamIDLobby,pvMsgBody,cubMsgBody); + return result; +} +public override int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + pSteamIDUser = new CSteamID(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(m_pSteamMatchmaking,steamIDLobby,iChatID,ref pSteamIDUser,pvData,cubData,ref peChatEntryType); + return result; +} +public override bool RequestLobbyData(ulong steamIDLobby) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyData(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,unGameServerIP,unGameServerPort,steamIDGameServer); +} +public override bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer) +{ + CheckIfUsable(); + punGameServerIP = 0; + punGameServerPort = (char) 0; + psteamIDGameServer = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,ref punGameServerIP,ref punGameServerPort,ref psteamIDGameServer); + return result; +} +public override bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby,cMaxMembers); + return result; +} +public override int GetLobbyMemberLimit(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyType(ulong steamIDLobby,uint eLobbyType) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyType(m_pSteamMatchmaking,steamIDLobby,eLobbyType); + return result; +} +public override bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyJoinable(m_pSteamMatchmaking,steamIDLobby,bLobbyJoinable); + return result; +} +public override ulong GetLobbyOwner(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyOwner(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyOwner(m_pSteamMatchmaking,steamIDLobby,steamIDNewOwner); + return result; +} +public override bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLinkedLobby(m_pSteamMatchmaking,steamIDLobby,steamIDLobbyDependent); + return result; +} +} + + +public class CSteamMatchmakingServerListResponse : ISteamMatchmakingServerListResponse +{ +public CSteamMatchmakingServerListResponse(IntPtr SteamMatchmakingServerListResponse) +{ + m_pSteamMatchmakingServerListResponse = SteamMatchmakingServerListResponse; +} +IntPtr m_pSteamMatchmakingServerListResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServerListResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServerListResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void ServerFailedToRespond(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void RefreshComplete(uint hRequest,uint response) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(m_pSteamMatchmakingServerListResponse,hRequest,response); +} +} + + +public class CSteamMatchmakingPingResponse : ISteamMatchmakingPingResponse +{ +public CSteamMatchmakingPingResponse(IntPtr SteamMatchmakingPingResponse) +{ + m_pSteamMatchmakingPingResponse = SteamMatchmakingPingResponse; +} +IntPtr m_pSteamMatchmakingPingResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPingResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPingResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(IntPtr server) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(m_pSteamMatchmakingPingResponse,server); +} +public override void ServerFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(m_pSteamMatchmakingPingResponse); +} +} + + +public class CSteamMatchmakingPlayersResponse : ISteamMatchmakingPlayersResponse +{ +public CSteamMatchmakingPlayersResponse(IntPtr SteamMatchmakingPlayersResponse) +{ + m_pSteamMatchmakingPlayersResponse = SteamMatchmakingPlayersResponse; +} +IntPtr m_pSteamMatchmakingPlayersResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPlayersResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPlayersResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void AddPlayerToList(string pchName,int nScore,float flTimePlayed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(m_pSteamMatchmakingPlayersResponse,pchName,nScore,flTimePlayed); +} +public override void PlayersFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(m_pSteamMatchmakingPlayersResponse); +} +public override void PlayersRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(m_pSteamMatchmakingPlayersResponse); +} +} + + +public class CSteamMatchmakingRulesResponse : ISteamMatchmakingRulesResponse +{ +public CSteamMatchmakingRulesResponse(IntPtr SteamMatchmakingRulesResponse) +{ + m_pSteamMatchmakingRulesResponse = SteamMatchmakingRulesResponse; +} +IntPtr m_pSteamMatchmakingRulesResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingRulesResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingRulesResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void RulesResponded(string pchRule,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(m_pSteamMatchmakingRulesResponse,pchRule,pchValue); +} +public override void RulesFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(m_pSteamMatchmakingRulesResponse); +} +public override void RulesRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(m_pSteamMatchmakingRulesResponse); +} +} + + +public class CSteamMatchmakingServers : ISteamMatchmakingServers +{ +public CSteamMatchmakingServers(IntPtr SteamMatchmakingServers) +{ + m_pSteamMatchmakingServers = SteamMatchmakingServers; +} +IntPtr m_pSteamMatchmakingServers; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServers; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServers == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestLANServerList(m_pSteamMatchmakingServers,iApp,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void ReleaseRequest(uint hServerListRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ReleaseRequest(m_pSteamMatchmakingServers,hServerListRequest); +} +public override gameserveritem_t GetServerDetails(uint hRequest,int iServer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerDetails(m_pSteamMatchmakingServers,hRequest,iServer); + return (gameserveritem_t) Marshal.PtrToStructure(result, typeof(gameserveritem_t)); +} +public override void CancelQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelQuery(m_pSteamMatchmakingServers,hRequest); +} +public override void RefreshQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshQuery(m_pSteamMatchmakingServers,hRequest); +} +public override bool IsRefreshing(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_IsRefreshing(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override int GetServerCount(uint hRequest) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerCount(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override void RefreshServer(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshServer(m_pSteamMatchmakingServers,hRequest,iServer); +} +public override uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PingServer(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PlayerDetails(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ServerRules(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void CancelServerQuery(uint hServerQuery) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelServerQuery(m_pSteamMatchmakingServers,hServerQuery); +} +} + + +public class CSteamRemoteStorage : ISteamRemoteStorage +{ +public CSteamRemoteStorage(IntPtr SteamRemoteStorage) +{ + m_pSteamRemoteStorage = SteamRemoteStorage; +} +IntPtr m_pSteamRemoteStorage; + +public override IntPtr GetIntPtr() { return m_pSteamRemoteStorage; } + +private void CheckIfUsable() +{ + if (m_pSteamRemoteStorage == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool FileWrite(string pchFile,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWrite(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override int FileRead(string pchFile,IntPtr pvData,int cubDataToRead) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileRead(m_pSteamRemoteStorage,pchFile,pvData,cubDataToRead); + return result; +} +public override ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteAsync(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsync(m_pSteamRemoteStorage,pchFile,nOffset,cubToRead); + return result; +} +public override bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(m_pSteamRemoteStorage,hReadCall,pvBuffer,cubToRead); + return result; +} +public override bool FileForget(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileForget(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileDelete(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileDelete(m_pSteamRemoteStorage,pchFile); + return result; +} +public override ulong FileShare(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileShare(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(m_pSteamRemoteStorage,pchFile,eRemoteStoragePlatform); + return result; +} +public override ulong FileWriteStreamOpen(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(m_pSteamRemoteStorage,writeHandle,pvData,cubData); + return result; +} +public override bool FileWriteStreamClose(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileWriteStreamCancel(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileExists(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileExists(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FilePersisted(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FilePersisted(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileSize(string pchFile) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileSize(m_pSteamRemoteStorage,pchFile); + return result; +} +public override long GetFileTimestamp(string pchFile) +{ + CheckIfUsable(); + long result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileTimestamp(m_pSteamRemoteStorage,pchFile); + return result; +} +public override uint GetSyncPlatforms(string pchFile) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileCount(m_pSteamRemoteStorage); + return result; +} +public override string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes) +{ + CheckIfUsable(); + pnFileSizeInBytes = 0; + IntPtr result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(m_pSteamRemoteStorage,iFile,ref pnFileSizeInBytes); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes) +{ + CheckIfUsable(); + pnTotalBytes = 0; + puAvailableBytes = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetQuota(m_pSteamRemoteStorage,ref pnTotalBytes,ref puAvailableBytes); + return result; +} +public override bool IsCloudEnabledForAccount() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(m_pSteamRemoteStorage); + return result; +} +public override bool IsCloudEnabledForApp() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(m_pSteamRemoteStorage); + return result; +} +public override void SetCloudEnabledForApp(bool bEnabled) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(m_pSteamRemoteStorage,bEnabled); +} +public override ulong UGCDownload(ulong hContent,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownload(m_pSteamRemoteStorage,hContent,unPriority); + return result; +} +public override bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected) +{ + CheckIfUsable(); + pnBytesDownloaded = 0; + pnBytesExpected = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(m_pSteamRemoteStorage,hContent,ref pnBytesDownloaded,ref pnBytesExpected); + return result; +} +public override bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner) +{ + CheckIfUsable(); + pnAppID = 0; + pnFileSizeInBytes = 0; + pSteamIDOwner = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDetails(m_pSteamRemoteStorage,hContent,ref pnAppID,ppchName,ref pnFileSizeInBytes,ref pSteamIDOwner); + return result; +} +public override int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCRead(m_pSteamRemoteStorage,hContent,pvData,cubDataToRead,cOffset,eAction); + return result; +} +public override int GetCachedUGCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(m_pSteamRemoteStorage); + return result; +} +public override ulong GetCachedUGCHandle(int iCachedContent) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(m_pSteamRemoteStorage,iCachedContent); + return result; +} +public override ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(m_pSteamRemoteStorage,pchFile,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags,eWorkshopFileType); + return result; +} +public override ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileFile(ulong updateHandle,string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(m_pSteamRemoteStorage,updateHandle,pchFile); + return result; +} +public override bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(m_pSteamRemoteStorage,updateHandle,pchPreviewFile); + return result; +} +public override bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(m_pSteamRemoteStorage,updateHandle,pchTitle); + return result; +} +public override bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(m_pSteamRemoteStorage,updateHandle,pchDescription); + return result; +} +public override bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(m_pSteamRemoteStorage,updateHandle,eVisibility); + return result; +} +public override bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(m_pSteamRemoteStorage,updateHandle,ref pTags); + return result; +} +public override ulong CommitPublishedFileUpdate(ulong updateHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(m_pSteamRemoteStorage,updateHandle); + return result; +} +public override ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(m_pSteamRemoteStorage,unPublishedFileId,unMaxSecondsOld); + return result; +} +public override ulong DeletePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_DeletePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserPublishedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong SubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSubscribedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong UnsubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(m_pSteamRemoteStorage,updateHandle,pchChangeDescription); + return result; +} +public override ulong GetPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(m_pSteamRemoteStorage,unPublishedFileId,bVoteUp); + return result; +} +public override ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(m_pSteamRemoteStorage,steamId,unStartIndex,ref pRequiredTags,ref pExcludedTags); + return result; +} +public override ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishVideo(m_pSteamRemoteStorage,eVideoProvider,pchVideoAccount,pchVideoIdentifier,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags); + return result; +} +public override ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(m_pSteamRemoteStorage,unPublishedFileId,eAction); + return result; +} +public override ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(m_pSteamRemoteStorage,eAction,unStartIndex); + return result; +} +public override ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(m_pSteamRemoteStorage,eEnumerationType,unStartIndex,unCount,unDays,ref pTags,ref pUserTags); + return result; +} +public override ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(m_pSteamRemoteStorage,hContent,pchLocation,unPriority); + return result; +} +} + + +public class CSteamUserStats : ISteamUserStats +{ +public CSteamUserStats(IntPtr SteamUserStats) +{ + m_pSteamUserStats = SteamUserStats; +} +IntPtr m_pSteamUserStats; + +public override IntPtr GetIntPtr() { return m_pSteamUserStats; } + +private void CheckIfUsable() +{ + if (m_pSteamUserStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RequestCurrentStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestCurrentStats(m_pSteamUserStats); + return result; +} +public override bool GetStat(string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool GetStat0(string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat0(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool SetStat(string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat(m_pSteamUserStats,pchName,nData); + return result; +} +public override bool SetStat0(string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat0(m_pSteamUserStats,pchName,fData); + return result; +} +public override bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_UpdateAvgRateStat(m_pSteamUserStats,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool GetAchievement(string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievement(m_pSteamUserStats,pchName,ref pbAchieved); + return result; +} +public override bool SetAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool ClearAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ClearAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(m_pSteamUserStats,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool StoreStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_StoreStats(m_pSteamUserStats); + return result; +} +public override int GetAchievementIcon(string pchName) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementIcon(m_pSteamUserStats,pchName); + return result; +} +public override string GetAchievementDisplayAttribute(string pchName,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(m_pSteamUserStats,pchName,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_IndicateAchievementProgress(m_pSteamUserStats,pchName,nCurProgress,nMaxProgress); + return result; +} +public override uint GetNumAchievements() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumAchievements(m_pSteamUserStats); + return result; +} +public override string GetAchievementName(uint iAchievement) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementName(m_pSteamUserStats,iAchievement); + return Marshal.PtrToStringAnsi(result); +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestUserStats(m_pSteamUserStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat0(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievement(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool ResetAllStats(bool bAchievementsToo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ResetAllStats(m_pSteamUserStats,bAchievementsToo); + return result; +} +public override ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(m_pSteamUserStats,pchLeaderboardName,eLeaderboardSortMethod,eLeaderboardDisplayType); + return result; +} +public override ulong FindLeaderboard(string pchLeaderboardName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindLeaderboard(m_pSteamUserStats,pchLeaderboardName); + return result; +} +public override string GetLeaderboardName(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardName(m_pSteamUserStats,hSteamLeaderboard); + return Marshal.PtrToStringAnsi(result); +} +public override int GetLeaderboardEntryCount(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardSortMethod(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardDisplayType(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardDataRequest,nRangeStart,nRangeEnd); + return result; +} +public override ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(m_pSteamUserStats,hSteamLeaderboard,prgUsers,(int) prgUsers.Length); + return result; +} +public override bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax) +{ + CheckIfUsable(); + pDetails = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(m_pSteamUserStats,hSteamLeaderboardEntries,index,ref pLeaderboardEntry,ref pDetails,cDetailsMax); + return result; +} +public override ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount) +{ + CheckIfUsable(); + pScoreDetails = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_UploadLeaderboardScore(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardUploadScoreMethod,nScore,ref pScoreDetails,cScoreDetailsCount); + return result; +} +public override ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_AttachLeaderboardUGC(m_pSteamUserStats,hSteamLeaderboard,hUGC); + return result; +} +public override ulong GetNumberOfCurrentPlayers() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(m_pSteamUserStats); + return result; +} +public override ulong RequestGlobalAchievementPercentages() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(m_pSteamUserStats); + return result; +} +public override int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(m_pSteamUserStats,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(m_pSteamUserStats,iIteratorPrevious,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override bool GetAchievementAchievedPercent(string pchName,ref float pflPercent) +{ + CheckIfUsable(); + pflPercent = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(m_pSteamUserStats,pchName,ref pflPercent); + return result; +} +public override ulong RequestGlobalStats(int nHistoryDays) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalStats(m_pSteamUserStats,nHistoryDays); + return result; +} +public override bool GetGlobalStat(string pchStatName,ref long pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override bool GetGlobalStat0(string pchStatName,ref double pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat0(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override int GetGlobalStatHistory(string pchStatName,long [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +public override int GetGlobalStatHistory0(string pchStatName,double [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory0(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +} + + +public class CSteamApps : ISteamApps +{ +public CSteamApps(IntPtr SteamApps) +{ + m_pSteamApps = SteamApps; +} +IntPtr m_pSteamApps; + +public override IntPtr GetIntPtr() { return m_pSteamApps; } + +private void CheckIfUsable() +{ + if (m_pSteamApps == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsSubscribed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribed(m_pSteamApps); + return result; +} +public override bool BIsLowViolence() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsLowViolence(m_pSteamApps); + return result; +} +public override bool BIsCybercafe() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsCybercafe(m_pSteamApps); + return result; +} +public override bool BIsVACBanned() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsVACBanned(m_pSteamApps); + return result; +} +public override string GetCurrentGameLanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentGameLanguage(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override string GetAvailableGameLanguages() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetAvailableGameLanguages(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override bool BIsSubscribedApp(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedApp(m_pSteamApps,appID); + return result; +} +public override bool BIsDlcInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsDlcInstalled(m_pSteamApps,appID); + return result; +} +public override uint GetEarliestPurchaseUnixTime(uint nAppID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(m_pSteamApps,nAppID); + return result; +} +public override bool BIsSubscribedFromFreeWeekend() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(m_pSteamApps); + return result; +} +public override int GetDLCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetDLCCount(m_pSteamApps); + return result; +} +public override bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + pAppID = 0; + pbAvailable = false; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BGetDLCDataByIndex(m_pSteamApps,iDLC,ref pAppID,ref pbAvailable,pchName,cchNameBufferSize); + return result; +} +public override void InstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_InstallDLC(m_pSteamApps,nAppID); +} +public override void UninstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_UninstallDLC(m_pSteamApps,nAppID); +} +public override void RequestAppProofOfPurchaseKey(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(m_pSteamApps,nAppID); +} +public override bool GetCurrentBetaName(string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentBetaName(m_pSteamApps,pchName,cchNameBufferSize); + return result; +} +public override bool MarkContentCorrupt(bool bMissingFilesOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_MarkContentCorrupt(m_pSteamApps,bMissingFilesOnly); + return result; +} +public override uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots) +{ + CheckIfUsable(); + pvecDepots = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetInstalledDepots(m_pSteamApps,appID,ref pvecDepots,cMaxDepots); + return result; +} +public override uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppInstallDir(m_pSteamApps,appID,pchFolder,cchFolderBufferSize); + return result; +} +public override bool BIsAppInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsAppInstalled(m_pSteamApps,appID); + return result; +} +public override ulong GetAppOwner() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppOwner(m_pSteamApps); + return result; +} +public override string GetLaunchQueryParam(string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetLaunchQueryParam(m_pSteamApps,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetDlcDownloadProgress(m_pSteamApps,nAppID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override int GetAppBuildId() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppBuildId(m_pSteamApps); + return result; +} +public override void RequestAllProofOfPurchaseKeys() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(m_pSteamApps); +} +public override ulong GetFileDetails(string pszFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetFileDetails(m_pSteamApps,pszFileName); + return result; +} +} + + +public class CSteamNetworking : ISteamNetworking +{ +public CSteamNetworking(IntPtr SteamNetworking) +{ + m_pSteamNetworking = SteamNetworking; +} +IntPtr m_pSteamNetworking; + +public override IntPtr GetIntPtr() { return m_pSteamNetworking; } + +private void CheckIfUsable() +{ + if (m_pSteamNetworking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendP2PPacket(m_pSteamNetworking,steamIDRemote,pubData,cubData,eP2PSendType,nChannel); + return result; +} +public override bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsP2PPacketAvailable(m_pSteamNetworking,ref pcubMsgSize,nChannel); + return result; +} +public override bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_ReadP2PPacket(m_pSteamNetworking,pubDest,cubDest,ref pcubMsgSize,ref psteamIDRemote,nChannel); + return result; +} +public override bool AcceptP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(m_pSteamNetworking,steamIDRemote,nChannel); + return result; +} +public override bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetP2PSessionState(m_pSteamNetworking,steamIDRemote,ref pConnectionState); + return result; +} +public override bool AllowP2PPacketRelay(bool bAllow) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AllowP2PPacketRelay(m_pSteamNetworking,bAllow); + return result; +} +public override uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateListenSocket(m_pSteamNetworking,nVirtualP2PPort,nIP,nPort,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(m_pSteamNetworking,steamIDTarget,nVirtualPort,nTimeoutSec,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateConnectionSocket(m_pSteamNetworking,nIP,nPort,nTimeoutSec); + return result; +} +public override bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroySocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroyListenSocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendDataOnSocket(m_pSteamNetworking,hSocket,pubData,cubData,bReliable); + return result; +} +public override bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(m_pSteamNetworking,hSocket,ref pcubMsgSize); + return result; +} +public override bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveDataFromSocket(m_pSteamNetworking,hSocket,pubDest,cubDest,ref pcubMsgSize); + return result; +} +public override bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailable(m_pSteamNetworking,hListenSocket,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveData(m_pSteamNetworking,hListenSocket,pubDest,cubDest,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote) +{ + CheckIfUsable(); + peSocketStatus = 0; + punIPRemote = 0; + punPortRemote = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketInfo(m_pSteamNetworking,hSocket,ref pSteamIDRemote,ref peSocketStatus,ref punIPRemote,ref punPortRemote); + return result; +} +public override bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort) +{ + CheckIfUsable(); + pnIP = 0; + pnPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetListenSocketInfo(m_pSteamNetworking,hListenSocket,ref pnIP,ref pnPort); + return result; +} +public override uint GetSocketConnectionType(uint hSocket) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketConnectionType(m_pSteamNetworking,hSocket); + return result; +} +public override int GetMaxPacketSize(uint hSocket) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetMaxPacketSize(m_pSteamNetworking,hSocket); + return result; +} +} + + +public class CSteamScreenshots : ISteamScreenshots +{ +public CSteamScreenshots(IntPtr SteamScreenshots) +{ + m_pSteamScreenshots = SteamScreenshots; +} +IntPtr m_pSteamScreenshots; + +public override IntPtr GetIntPtr() { return m_pSteamScreenshots; } + +private void CheckIfUsable() +{ + if (m_pSteamScreenshots == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_WriteScreenshot(m_pSteamScreenshots,pubRGB,cubRGB,nWidth,nHeight); + return result; +} +public override uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(m_pSteamScreenshots,pchFilename,pchThumbnailFilename,nWidth,nHeight); + return result; +} +public override void TriggerScreenshot() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_TriggerScreenshot(m_pSteamScreenshots); +} +public override void HookScreenshots(bool bHook) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_HookScreenshots(m_pSteamScreenshots,bHook); +} +public override bool SetLocation(uint hScreenshot,string pchLocation) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_SetLocation(m_pSteamScreenshots,hScreenshot,pchLocation); + return result; +} +public override bool TagUser(uint hScreenshot,ulong steamID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagUser(m_pSteamScreenshots,hScreenshot,steamID); + return result; +} +public override bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagPublishedFile(m_pSteamScreenshots,hScreenshot,unPublishedFileID); + return result; +} +public override bool IsScreenshotsHooked() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_IsScreenshotsHooked(m_pSteamScreenshots); + return result; +} +public override uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(m_pSteamScreenshots,eType,pchFilename,pchVRFilename); + return result; +} +} + + +public class CSteamMusic : ISteamMusic +{ +public CSteamMusic(IntPtr SteamMusic) +{ + m_pSteamMusic = SteamMusic; +} +IntPtr m_pSteamMusic; + +public override IntPtr GetIntPtr() { return m_pSteamMusic; } + +private void CheckIfUsable() +{ + if (m_pSteamMusic == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsEnabled(m_pSteamMusic); + return result; +} +public override bool BIsPlaying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsPlaying(m_pSteamMusic); + return result; +} +public override int GetPlaybackStatus() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMusic_GetPlaybackStatus(m_pSteamMusic); + return result; +} +public override void Play() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Play(m_pSteamMusic); +} +public override void Pause() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Pause(m_pSteamMusic); +} +public override void PlayPrevious() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayPrevious(m_pSteamMusic); +} +public override void PlayNext() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayNext(m_pSteamMusic); +} +public override void SetVolume(float flVolume) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_SetVolume(m_pSteamMusic,flVolume); +} +public override float GetVolume() +{ + CheckIfUsable(); + float result = NativeEntrypoints.SteamAPI_ISteamMusic_GetVolume(m_pSteamMusic); + return result; +} +} + + +public class CSteamMusicRemote : ISteamMusicRemote +{ +public CSteamMusicRemote(IntPtr SteamMusicRemote) +{ + m_pSteamMusicRemote = SteamMusicRemote; +} +IntPtr m_pSteamMusicRemote; + +public override IntPtr GetIntPtr() { return m_pSteamMusicRemote; } + +private void CheckIfUsable() +{ + if (m_pSteamMusicRemote == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RegisterSteamMusicRemote(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(m_pSteamMusicRemote,pchName); + return result; +} +public override bool DeregisterSteamMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BIsCurrentMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BActivationSuccess(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BActivationSuccess(m_pSteamMusicRemote,bValue); + return result; +} +public override bool SetDisplayName(string pchDisplayName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetDisplayName(m_pSteamMusicRemote,pchDisplayName); + return result; +} +public override bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool EnablePlayPrevious(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayPrevious(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlayNext(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayNext(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableQueue(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableQueue(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlaylists(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlaylists(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdatePlaybackStatus(int nStatus) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(m_pSteamMusicRemote,nStatus); + return result; +} +public override bool UpdateShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateVolume(float flValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateVolume(m_pSteamMusicRemote,flValue); + return result; +} +public override bool CurrentEntryWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(m_pSteamMusicRemote); + return result; +} +public override bool CurrentEntryIsAvailable(bool bAvailable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(m_pSteamMusicRemote,bAvailable); + return result; +} +public override bool UpdateCurrentEntryText(string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(m_pSteamMusicRemote,pchText); + return result; +} +public override bool UpdateCurrentEntryElapsedSeconds(int nValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(m_pSteamMusicRemote,nValue); + return result; +} +public override bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool CurrentEntryDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(m_pSteamMusicRemote); + return result; +} +public override bool QueueWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetQueueEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetQueueEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetQueueEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetQueueEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentQueueEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool QueueDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueDidChange(m_pSteamMusicRemote); + return result; +} +public override bool PlaylistWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetPlaylistEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPlaylistEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentPlaylistEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool PlaylistDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistDidChange(m_pSteamMusicRemote); + return result; +} +} + + +public class CSteamHTTP : ISteamHTTP +{ +public CSteamHTTP(IntPtr SteamHTTP) +{ + m_pSteamHTTP = SteamHTTP; +} +IntPtr m_pSteamHTTP; + +public override IntPtr GetIntPtr() { return m_pSteamHTTP; } + +private void CheckIfUsable() +{ + if (m_pSteamHTTP == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateHTTPRequest(m_pSteamHTTP,eHTTPRequestMethod,pchAbsoluteURL); + return result; +} +public override bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(m_pSteamHTTP,hRequest,ulContextValue); + return result; +} +public override bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(m_pSteamHTTP,hRequest,unTimeoutSeconds); + return result; +} +public override bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pchHeaderValue); + return result; +} +public override bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(m_pSteamHTTP,hRequest,pchParamName,pchParamValue); + return result; +} +public override bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequest(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool DeferHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_DeferHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool PrioritizeHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize) +{ + CheckIfUsable(); + unResponseHeaderSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(m_pSteamHTTP,hRequest,pchHeaderName,ref unResponseHeaderSize); + return result; +} +public override bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pHeaderValueBuffer,unBufferSize); + return result; +} +public override bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize) +{ + CheckIfUsable(); + unBodySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(m_pSteamHTTP,hRequest,ref unBodySize); + return result; +} +public override bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(m_pSteamHTTP,hRequest,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(m_pSteamHTTP,hRequest,cOffset,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool ReleaseHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut) +{ + CheckIfUsable(); + pflPercentOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(m_pSteamHTTP,hRequest,ref pflPercentOut); + return result; +} +public override bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(m_pSteamHTTP,hRequest,pchContentType,pubBody,unBodyLen); + return result; +} +public override uint CreateCookieContainer(bool bAllowResponsesToModify) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateCookieContainer(m_pSteamHTTP,bAllowResponsesToModify); + return result; +} +public override bool ReleaseCookieContainer(uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseCookieContainer(m_pSteamHTTP,hCookieContainer); + return result; +} +public override bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetCookie(m_pSteamHTTP,hCookieContainer,pchHost,pchUrl,pchCookie); + return result; +} +public override bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(m_pSteamHTTP,hRequest,hCookieContainer); + return result; +} +public override bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(m_pSteamHTTP,hRequest,pchUserAgentInfo); + return result; +} +public override bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(m_pSteamHTTP,hRequest,bRequireVerifiedCertificate); + return result; +} +public override bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(m_pSteamHTTP,hRequest,unMilliseconds); + return result; +} +public override bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut) +{ + CheckIfUsable(); + pbWasTimedOut = false; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(m_pSteamHTTP,hRequest,ref pbWasTimedOut); + return result; +} +} + + +public class CSteamUnifiedMessages : ISteamUnifiedMessages +{ +public CSteamUnifiedMessages(IntPtr SteamUnifiedMessages) +{ + m_pSteamUnifiedMessages = SteamUnifiedMessages; +} +IntPtr m_pSteamUnifiedMessages; + +public override IntPtr GetIntPtr() { return m_pSteamUnifiedMessages; } + +private void CheckIfUsable() +{ + if (m_pSteamUnifiedMessages == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendMethod(m_pSteamUnifiedMessages,pchServiceMethod,pRequestBuffer,unRequestBufferSize,unContext); + return result; +} +public override bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult) +{ + CheckIfUsable(); + punResponseSize = 0; + peResult = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(m_pSteamUnifiedMessages,hHandle,ref punResponseSize,ref peResult); + return result; +} +public override bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(m_pSteamUnifiedMessages,hHandle,pResponseBuffer,unResponseBufferSize,bAutoRelease); + return result; +} +public override bool ReleaseMethod(ulong hHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_ReleaseMethod(m_pSteamUnifiedMessages,hHandle); + return result; +} +public override bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendNotification(m_pSteamUnifiedMessages,pchServiceNotification,pNotificationBuffer,unNotificationBufferSize); + return result; +} +} + + +public class CSteamController : ISteamController +{ +public CSteamController(IntPtr SteamController) +{ + m_pSteamController = SteamController; +} +IntPtr m_pSteamController; + +public override IntPtr GetIntPtr() { return m_pSteamController; } + +private void CheckIfUsable() +{ + if (m_pSteamController == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Init(m_pSteamController); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Shutdown(m_pSteamController); + return result; +} +public override void RunFrame() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_RunFrame(m_pSteamController); +} +public override int GetConnectedControllers(ref ulong handlesOut) +{ + CheckIfUsable(); + handlesOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetConnectedControllers(m_pSteamController,ref handlesOut); + return result; +} +public override bool ShowBindingPanel(ulong controllerHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowBindingPanel(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetActionSetHandle(string pszActionSetName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetActionSetHandle(m_pSteamController,pszActionSetName); + return result; +} +public override void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_ActivateActionSet(m_pSteamController,controllerHandle,actionSetHandle); +} +public override ulong GetCurrentActionSet(ulong controllerHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetCurrentActionSet(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetDigitalActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle) +{ + CheckIfUsable(); + ControllerDigitalActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionData(m_pSteamController,controllerHandle,digitalActionHandle); + return result; +} +public override int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,digitalActionHandle,ref originsOut); + return result; +} +public override ulong GetAnalogActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle) +{ + CheckIfUsable(); + ControllerAnalogActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionData(m_pSteamController,controllerHandle,analogActionHandle); + return result; +} +public override int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,analogActionHandle,ref originsOut); + return result; +} +public override void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_StopAnalogActionMomentum(m_pSteamController,controllerHandle,eAction); +} +public override void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec); +} +public override void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerRepeatedHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec,usOffMicroSec,unRepeat,nFlags); +} +public override int GetGamepadIndexForController(ulong ulControllerHandle) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamController_GetGamepadIndexForController(m_pSteamController,ulControllerHandle); + return result; +} +public override ulong GetControllerForGamepadIndex(int nIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetControllerForGamepadIndex(m_pSteamController,nIndex); + return result; +} +public override ControllerMotionData_t GetMotionData(ulong controllerHandle) +{ + CheckIfUsable(); + ControllerMotionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetMotionData(m_pSteamController,controllerHandle); + return result; +} +public override bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowDigitalActionOrigins(m_pSteamController,controllerHandle,digitalActionHandle,flScale,flXPosition,flYPosition); + return result; +} +public override bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowAnalogActionOrigins(m_pSteamController,controllerHandle,analogActionHandle,flScale,flXPosition,flYPosition); + return result; +} +} + + +public class CSteamUGC : ISteamUGC +{ +public CSteamUGC(IntPtr SteamUGC) +{ + m_pSteamUGC = SteamUGC; +} +IntPtr m_pSteamUGC; + +public override IntPtr GetIntPtr() { return m_pSteamUGC; } + +private void CheckIfUsable() +{ + if (m_pSteamUGC == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(m_pSteamUGC,unAccountID,eListType,eMatchingUGCType,eSortOrder,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(m_pSteamUGC,eQueryType,eMatchingeMatchingUGCTypeFileType,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong SendQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SendQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCResult(m_pSteamUGC,handle,index,ref pDetails); + return result; +} +public override bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchURL = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCMetadata(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchMetadata = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCChildren(m_pSteamUGC,handle,index,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue) +{ + CheckIfUsable(); + pStatValue = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCStatistic(m_pSteamUGC,handle,index,eStatType,ref pStatValue); + return result; +} +public override uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType) +{ + CheckIfUsable(); + pPreviewType = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,pStrBuffer2,cchOriginalFileNameSize,ref pPreviewType); + pchURLOrVideoID = pStrBuffer1.ToString(); + pchOriginalFileName = pStrBuffer2.ToString(); + return result; +} +public override uint GetQueryUGCNumKeyValueTags(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(m_pSteamUGC,handle,index,keyValueTagIndex,pStrBuffer1,2048,pStrBuffer2,2048); + pchKey = pStrBuffer1.ToString(); + pchValue = pStrBuffer2.ToString(); + return result; +} +public override bool ReleaseQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool AddRequiredTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool AddExcludedTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddExcludedTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnOnlyIDs(m_pSteamUGC,handle,bReturnOnlyIDs); + return result; +} +public override bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnKeyValueTags(m_pSteamUGC,handle,bReturnKeyValueTags); + return result; +} +public override bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnLongDescription(m_pSteamUGC,handle,bReturnLongDescription); + return result; +} +public override bool SetReturnMetadata(ulong handle,bool bReturnMetadata) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnMetadata(m_pSteamUGC,handle,bReturnMetadata); + return result; +} +public override bool SetReturnChildren(ulong handle,bool bReturnChildren) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnChildren(m_pSteamUGC,handle,bReturnChildren); + return result; +} +public override bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(m_pSteamUGC,handle,bReturnAdditionalPreviews); + return result; +} +public override bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnTotalOnly(m_pSteamUGC,handle,bReturnTotalOnly); + return result; +} +public override bool SetLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetAllowCachedResponse(m_pSteamUGC,handle,unMaxAgeSeconds); + return result; +} +public override bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetCloudFileNameFilter(m_pSteamUGC,handle,pMatchCloudFileName); + return result; +} +public override bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetMatchAnyTag(m_pSteamUGC,handle,bMatchAnyTag); + return result; +} +public override bool SetSearchText(ulong handle,string pSearchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetSearchText(m_pSteamUGC,handle,pSearchText); + return result; +} +public override bool SetRankedByTrendDays(ulong handle,uint unDays) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetRankedByTrendDays(m_pSteamUGC,handle,unDays); + return result; +} +public override bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredKeyValueTag(m_pSteamUGC,handle,pKey,pValue); + return result; +} +public override ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RequestUGCDetails(m_pSteamUGC,nPublishedFileID,unMaxAgeSeconds); + return result; +} +public override ulong CreateItem(uint nConsumerAppId,uint eFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateItem(m_pSteamUGC,nConsumerAppId,eFileType); + return result; +} +public override ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartItemUpdate(m_pSteamUGC,nConsumerAppId,nPublishedFileID); + return result; +} +public override bool SetItemTitle(ulong handle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTitle(m_pSteamUGC,handle,pchTitle); + return result; +} +public override bool SetItemDescription(ulong handle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemDescription(m_pSteamUGC,handle,pchDescription); + return result; +} +public override bool SetItemUpdateLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemUpdateLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetItemMetadata(ulong handle,string pchMetaData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemMetadata(m_pSteamUGC,handle,pchMetaData); + return result; +} +public override bool SetItemVisibility(ulong handle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemVisibility(m_pSteamUGC,handle,eVisibility); + return result; +} +public override bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTags(m_pSteamUGC,updateHandle,ref pTags); + return result; +} +public override bool SetItemContent(ulong handle,string pszContentFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemContent(m_pSteamUGC,handle,pszContentFolder); + return result; +} +public override bool SetItemPreview(ulong handle,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemPreview(m_pSteamUGC,handle,pszPreviewFile); + return result; +} +public override bool RemoveItemKeyValueTags(ulong handle,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemKeyValueTags(m_pSteamUGC,handle,pchKey); + return result; +} +public override bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemKeyValueTag(m_pSteamUGC,handle,pchKey,pchValue); + return result; +} +public override bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewFile(m_pSteamUGC,handle,pszPreviewFile,type); + return result; +} +public override bool AddItemPreviewVideo(ulong handle,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewVideo(m_pSteamUGC,handle,pszVideoID); + return result; +} +public override bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewFile(m_pSteamUGC,handle,index,pszPreviewFile); + return result; +} +public override bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewVideo(m_pSteamUGC,handle,index,pszVideoID); + return result; +} +public override bool RemoveItemPreview(ulong handle,uint index) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemPreview(m_pSteamUGC,handle,index); + return result; +} +public override ulong SubmitItemUpdate(ulong handle,string pchChangeNote) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubmitItemUpdate(m_pSteamUGC,handle,pchChangeNote); + return result; +} +public override uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesProcessed = 0; + punBytesTotal = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemUpdateProgress(m_pSteamUGC,handle,ref punBytesProcessed,ref punBytesTotal); + return result; +} +public override ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SetUserItemVote(m_pSteamUGC,nPublishedFileID,bVoteUp); + return result; +} +public override ulong GetUserItemVote(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_GetUserItemVote(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemToFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemFromFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong SubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong UnsubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_UnsubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override uint GetNumSubscribedItems() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetNumSubscribedItems(m_pSteamUGC); + return result; +} +public override uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetSubscribedItems(m_pSteamUGC,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override uint GetItemState(ulong nPublishedFileID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemState(m_pSteamUGC,nPublishedFileID); + return result; +} +public override bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp) +{ + CheckIfUsable(); + punSizeOnDisk = 0; + punTimeStamp = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemInstallInfo(m_pSteamUGC,nPublishedFileID,ref punSizeOnDisk,pStrBuffer1,2048,ref punTimeStamp); + pchFolder = pStrBuffer1.ToString(); + return result; +} +public override bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemDownloadInfo(m_pSteamUGC,nPublishedFileID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override bool DownloadItem(ulong nPublishedFileID,bool bHighPriority) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_DownloadItem(m_pSteamUGC,nPublishedFileID,bHighPriority); + return result; +} +public override bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_BInitWorkshopForGameServer(m_pSteamUGC,unWorkshopDepotID,pszFolder); + return result; +} +public override void SuspendDownloads(bool bSuspend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUGC_SuspendDownloads(m_pSteamUGC,bSuspend); +} +public override ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTrackingForAllItems() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(m_pSteamUGC); + return result; +} +} + + +public class CSteamAppList : ISteamAppList +{ +public CSteamAppList(IntPtr SteamAppList) +{ + m_pSteamAppList = SteamAppList; +} +IntPtr m_pSteamAppList; + +public override IntPtr GetIntPtr() { return m_pSteamAppList; } + +private void CheckIfUsable() +{ + if (m_pSteamAppList == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetNumInstalledApps() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetNumInstalledApps(m_pSteamAppList); + return result; +} +public override uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs) +{ + CheckIfUsable(); + pvecAppID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetInstalledApps(m_pSteamAppList,ref pvecAppID,unMaxAppIDs); + return result; +} +public override int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppName(m_pSteamAppList,nAppID,pchName,cchNameMax); + return result; +} +public override int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppInstallDir(m_pSteamAppList,nAppID,pchDirectory,cchNameMax); + return result; +} +public override int GetAppBuildId(uint nAppID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppBuildId(m_pSteamAppList,nAppID); + return result; +} +} + + +public class CSteamHTMLSurface : ISteamHTMLSurface +{ +public CSteamHTMLSurface(IntPtr SteamHTMLSurface) +{ + m_pSteamHTMLSurface = SteamHTMLSurface; +} +IntPtr m_pSteamHTMLSurface; + +public override IntPtr GetIntPtr() { return m_pSteamHTMLSurface; } + +private void CheckIfUsable() +{ + if (m_pSteamHTMLSurface == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void DestructISteamHTMLSurface() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(m_pSteamHTMLSurface); +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Init(m_pSteamHTMLSurface); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Shutdown(m_pSteamHTMLSurface); + return result; +} +public override ulong CreateBrowser(string pchUserAgent,string pchUserCSS) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CreateBrowser(m_pSteamHTMLSurface,pchUserAgent,pchUserCSS); + return result; +} +public override void RemoveBrowser(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_RemoveBrowser(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_LoadURL(m_pSteamHTMLSurface,unBrowserHandle,pchURL,pchPostData); +} +public override void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetSize(m_pSteamHTMLSurface,unBrowserHandle,unWidth,unHeight); +} +public override void StopLoad(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopLoad(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Reload(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Reload(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoBack(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoBack(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoForward(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoForward(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void AddHeader(uint unBrowserHandle,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AddHeader(m_pSteamHTMLSurface,unBrowserHandle,pchKey,pchValue); +} +public override void ExecuteJavascript(uint unBrowserHandle,string pchScript) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ExecuteJavascript(m_pSteamHTMLSurface,unBrowserHandle,pchScript); +} +public override void MouseUp(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseUp(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDown(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDown(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDoubleClick(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseMove(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseMove(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void MouseWheel(uint unBrowserHandle,int nDelta) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseWheel(m_pSteamHTMLSurface,unBrowserHandle,nDelta); +} +public override void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyDown(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyUp(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyChar(m_pSteamHTMLSurface,unBrowserHandle,cUnicodeChar,eHTMLKeyModifiers); +} +public override void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetVerticalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetKeyFocus(m_pSteamHTMLSurface,unBrowserHandle,bHasKeyFocus); +} +public override void ViewSource(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ViewSource(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void CopyToClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CopyToClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void PasteFromClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_PasteFromClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Find(m_pSteamHTMLSurface,unBrowserHandle,pchSearchStr,bCurrentlyInFind,bReverse); +} +public override void StopFind(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopFind(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GetLinkAtPosition(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetCookie(m_pSteamHTMLSurface,pchHostname,pchKey,pchValue,pchPath,nExpires,bSecure,bHTTPOnly); +} +public override void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(m_pSteamHTMLSurface,unBrowserHandle,flZoom,nPointX,nPointY); +} +public override void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetBackgroundMode(m_pSteamHTMLSurface,unBrowserHandle,bBackgroundMode); +} +public override void AllowStartRequest(uint unBrowserHandle,bool bAllowed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AllowStartRequest(m_pSteamHTMLSurface,unBrowserHandle,bAllowed); +} +public override void JSDialogResponse(uint unBrowserHandle,bool bResult) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_JSDialogResponse(m_pSteamHTMLSurface,unBrowserHandle,bResult); +} +} + + +public class CSteamInventory : ISteamInventory +{ +public CSteamInventory(IntPtr SteamInventory) +{ + m_pSteamInventory = SteamInventory; +} +IntPtr m_pSteamInventory; + +public override IntPtr GetIntPtr() { return m_pSteamInventory; } + +private void CheckIfUsable() +{ + if (m_pSteamInventory == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetResultStatus(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultStatus(m_pSteamInventory,resultHandle); + return result; +} +public override bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray) +{ + CheckIfUsable(); + uint punOutItemsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,null,ref punOutItemsArraySize); + pOutItemsArray= new SteamItemDetails_t[punOutItemsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,pOutItemsArray,ref punOutItemsArraySize); + return result; +} +public override uint GetResultTimestamp(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultTimestamp(m_pSteamInventory,resultHandle); + return result; +} +public override bool CheckResultSteamID(int resultHandle,ulong steamIDExpected) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_CheckResultSteamID(m_pSteamInventory,resultHandle,steamIDExpected); + return result; +} +public override void DestroyResult(int resultHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_DestroyResult(m_pSteamInventory,resultHandle); +} +public override bool GetAllItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetAllItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsByID(m_pSteamInventory,ref pResultHandle,pInstanceIDs,(uint) pInstanceIDs.Length); + return result; +} +public override bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize) +{ + CheckIfUsable(); + punOutBufferSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SerializeResult(m_pSteamInventory,resultHandle,pOutBuffer,ref punOutBufferSize); + return result; +} +public override bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE) +{ + CheckIfUsable(); + pOutResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_DeserializeResult(m_pSteamInventory,ref pOutResultHandle,pBuffer,unBufferSize,bRESERVED_MUST_BE_FALSE); + return result; +} +public override bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GenerateItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,punArrayQuantity,(uint) punArrayQuantity.Length); + return result; +} +public override bool GrantPromoItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GrantPromoItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool AddPromoItem(ref int pResultHandle,int itemDef) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItem(m_pSteamInventory,ref pResultHandle,itemDef); + return result; +} +public override bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,(uint) pArrayItemDefs.Length); + return result; +} +public override bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ConsumeItem(m_pSteamInventory,ref pResultHandle,itemConsume,unQuantity); + return result; +} +public override bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ExchangeItems(m_pSteamInventory,ref pResultHandle,pArrayGenerate,punArrayGenerateQuantity,(uint) punArrayGenerateQuantity.Length,pArrayDestroy,punArrayDestroyQuantity,(uint) punArrayDestroyQuantity.Length); + return result; +} +public override bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TransferItemQuantity(m_pSteamInventory,ref pResultHandle,itemIdSource,unQuantity,itemIdDest); + return result; +} +public override void SendItemDropHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_SendItemDropHeartbeat(m_pSteamInventory); +} +public override bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TriggerItemDrop(m_pSteamInventory,ref pResultHandle,dropListDefinition); + return result; +} +public override bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TradeItems(m_pSteamInventory,ref pResultHandle,steamIDTradePartner,pArrayGive,pArrayGiveQuantity,(uint) pArrayGiveQuantity.Length,pArrayGet,pArrayGetQuantity,(uint) pArrayGetQuantity.Length); + return result; +} +public override bool LoadItemDefinitions() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_LoadItemDefinitions(m_pSteamInventory); + return result; +} +public override bool GetItemDefinitionIDs(out int [] pItemDefIDs) +{ + CheckIfUsable(); + uint punItemDefIDsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,null,ref punItemDefIDsArraySize); + pItemDefIDs= new int[punItemDefIDsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,pItemDefIDs,ref punItemDefIDsArraySize); + return result; +} +public override bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer) +{ + CheckIfUsable(); + uint punValueBufferSizeOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,null,ref punValueBufferSizeOut); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); + pchValueBuffer = pStrBuffer1.ToString(); + return result; +} +} + + +public class CSteamVideo : ISteamVideo +{ +public CSteamVideo(IntPtr SteamVideo) +{ + m_pSteamVideo = SteamVideo; +} +IntPtr m_pSteamVideo; + +public override IntPtr GetIntPtr() { return m_pSteamVideo; } + +private void CheckIfUsable() +{ + if (m_pSteamVideo == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void GetVideoURL(uint unVideoAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamVideo_GetVideoURL(m_pSteamVideo,unVideoAppID); +} +public override bool IsBroadcasting(ref int pnNumViewers) +{ + CheckIfUsable(); + pnNumViewers = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamVideo_IsBroadcasting(m_pSteamVideo,ref pnNumViewers); + return result; +} +} + + +public class CSteamGameServer : ISteamGameServer +{ +public CSteamGameServer(IntPtr SteamGameServer) +{ + m_pSteamGameServer = SteamGameServer; +} +IntPtr m_pSteamGameServer; + +public override IntPtr GetIntPtr() { return m_pSteamGameServer; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServer == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_InitGameServer(m_pSteamGameServer,unIP,usGamePort,usQueryPort,unFlags,nGameAppId,pchVersionString); + return result; +} +public override void SetProduct(string pszProduct) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetProduct(m_pSteamGameServer,pszProduct); +} +public override void SetGameDescription(string pszGameDescription) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameDescription(m_pSteamGameServer,pszGameDescription); +} +public override void SetModDir(string pszModDir) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetModDir(m_pSteamGameServer,pszModDir); +} +public override void SetDedicatedServer(bool bDedicated) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetDedicatedServer(m_pSteamGameServer,bDedicated); +} +public override void LogOn(string pszToken) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOn(m_pSteamGameServer,pszToken); +} +public override void LogOnAnonymous() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOnAnonymous(m_pSteamGameServer); +} +public override void LogOff() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOff(m_pSteamGameServer); +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BLoggedOn(m_pSteamGameServer); + return result; +} +public override bool BSecure() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BSecure(m_pSteamGameServer); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetSteamID(m_pSteamGameServer); + return result; +} +public override bool WasRestartRequested() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_WasRestartRequested(m_pSteamGameServer); + return result; +} +public override void SetMaxPlayerCount(int cPlayersMax) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMaxPlayerCount(m_pSteamGameServer,cPlayersMax); +} +public override void SetBotPlayerCount(int cBotplayers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetBotPlayerCount(m_pSteamGameServer,cBotplayers); +} +public override void SetServerName(string pszServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetServerName(m_pSteamGameServer,pszServerName); +} +public override void SetMapName(string pszMapName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMapName(m_pSteamGameServer,pszMapName); +} +public override void SetPasswordProtected(bool bPasswordProtected) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetPasswordProtected(m_pSteamGameServer,bPasswordProtected); +} +public override void SetSpectatorPort(char unSpectatorPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorPort(m_pSteamGameServer,unSpectatorPort); +} +public override void SetSpectatorServerName(string pszSpectatorServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorServerName(m_pSteamGameServer,pszSpectatorServerName); +} +public override void ClearAllKeyValues() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ClearAllKeyValues(m_pSteamGameServer); +} +public override void SetKeyValue(string pKey,string pValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetKeyValue(m_pSteamGameServer,pKey,pValue); +} +public override void SetGameTags(string pchGameTags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameTags(m_pSteamGameServer,pchGameTags); +} +public override void SetGameData(string pchGameData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameData(m_pSteamGameServer,pchGameData); +} +public override void SetRegion(string pszRegion) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetRegion(m_pSteamGameServer,pszRegion); +} +public override bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(m_pSteamGameServer,unIPClient,pvAuthBlob,cubAuthBlobSize,ref pSteamIDUser); + return result; +} +public override ulong CreateUnauthenticatedUserConnection() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(m_pSteamGameServer); + return result; +} +public override void SendUserDisconnect(ulong steamIDUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserDisconnect(m_pSteamGameServer,steamIDUser); +} +public override bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BUpdateUserData(m_pSteamGameServer,steamIDUser,pchPlayerName,uScore); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetAuthSessionTicket(m_pSteamGameServer,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_BeginAuthSession(m_pSteamGameServer,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EndAuthSession(m_pSteamGameServer,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_CancelAuthTicket(m_pSteamGameServer,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_UserHasLicenseForApp(m_pSteamGameServer,steamID,appID); + return result; +} +public override bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_RequestUserGroupStatus(m_pSteamGameServer,steamIDUser,steamIDGroup); + return result; +} +public override void GetGameplayStats() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_GetGameplayStats(m_pSteamGameServer); +} +public override ulong GetServerReputation() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetServerReputation(m_pSteamGameServer); + return result; +} +public override uint GetPublicIP() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetPublicIP(m_pSteamGameServer); + return result; +} +public override bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_HandleIncomingPacket(m_pSteamGameServer,pData,cbData,srcIP,srcPort); + return result; +} +public override int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort) +{ + CheckIfUsable(); + pNetAdr = 0; + pPort = (char) 0; + int result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetNextOutgoingPacket(m_pSteamGameServer,pOut,cbMaxOut,ref pNetAdr,ref pPort); + return result; +} +public override void EnableHeartbeats(bool bActive) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EnableHeartbeats(m_pSteamGameServer,bActive); +} +public override void SetHeartbeatInterval(int iHeartbeatInterval) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetHeartbeatInterval(m_pSteamGameServer,iHeartbeatInterval); +} +public override void ForceHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ForceHeartbeat(m_pSteamGameServer); +} +public override ulong AssociateWithClan(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_AssociateWithClan(m_pSteamGameServer,steamIDClan); + return result; +} +public override ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(m_pSteamGameServer,steamIDNewPlayer); + return result; +} +} + + +public class CSteamGameServerStats : ISteamGameServerStats +{ +public CSteamGameServerStats(IntPtr SteamGameServerStats) +{ + m_pSteamGameServerStats = SteamGameServerStats; +} +IntPtr m_pSteamGameServerStats; + +public override IntPtr GetIntPtr() { return m_pSteamGameServerStats; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServerStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_RequestUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool SetUserStat(ulong steamIDUser,string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,nData); + return result; +} +public override bool SetUserStat0(ulong steamIDUser,string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,fData); + return result; +} +public override bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(m_pSteamGameServerStats,steamIDUser,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool SetUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override bool ClearUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_ClearUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override ulong StoreUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_StoreUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +} + + +public class CUserStatsReceived_t_Callback +{ + public CUserStatsReceived_t_Callback() { } + ~CUserStatsReceived_t_Callback() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_Callback func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallback(func); + } +} +public class CRemoteStorageFileReadAsyncComplete_t_CallResult +{ + public CRemoteStorageFileReadAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileReadAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CFileDetailsResult_t_CallResult +{ + public CFileDetailsResult_t_CallResult() { } + ~CFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsStored_t_CallResult +{ + public CGSStatsStored_t_CallResult() { } + ~CGSStatsStored_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsStored_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsStored_t_SetCallResult(hAPICall, func); + } +} +public class CHTML_BrowserReady_t_CallResult +{ + public CHTML_BrowserReady_t_CallResult() { } + ~CHTML_BrowserReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_HTML_BrowserReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsGetFollowerCount_t_CallResult +{ + public CFriendsGetFollowerCount_t_CallResult() { } + ~CFriendsGetFollowerCount_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsGetFollowerCount_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsIsFollowing_t_CallResult +{ + public CFriendsIsFollowing_t_CallResult() { } + ~CFriendsIsFollowing_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsIsFollowing_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyMatchList_t_CallResult +{ + public CLobbyMatchList_t_CallResult() { } + ~CLobbyMatchList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyMatchList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdatePublishedFileResult_t_CallResult +{ + public CRemoteStorageUpdatePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUpdatePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CStoreAuthURLResponse_t_CallResult +{ + public CStoreAuthURLResponse_t_CallResult() { } + ~CStoreAuthURLResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StoreAuthURLResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyCreated_t_CallResult +{ + public CLobbyCreated_t_CallResult() { } + ~CLobbyCreated_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyCreated_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyCreated_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileWriteAsyncComplete_t_CallResult +{ + public CRemoteStorageFileWriteAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileWriteAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDeletePublishedFileResult_t_CallResult +{ + public CRemoteStorageDeletePublishedFileResult_t_CallResult() { } + ~CRemoteStorageDeletePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedFileDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDownloadUGCResult_t_CallResult +{ + public CRemoteStorageDownloadUGCResult_t_CallResult() { } + ~CRemoteStorageDownloadUGCResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_SetCallResult(hAPICall, func); + } +} +public class CSteamUGCQueryCompleted_t_CallResult +{ + public CSteamUGCQueryCompleted_t_CallResult() { } + ~CSteamUGCQueryCompleted_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamUGCQueryCompleted_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileShareResult_t_CallResult +{ + public CRemoteStorageFileShareResult_t_CallResult() { } + ~CRemoteStorageFileShareResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileShareResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyEnter_t_CallResult +{ + public CLobbyEnter_t_CallResult() { } + ~CLobbyEnter_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyEnter_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyEnter_t_SetCallResult(hAPICall, func); + } +} +public class CSubmitItemUpdateResult_t_CallResult +{ + public CSubmitItemUpdateResult_t_CallResult() { } + ~CSubmitItemUpdateResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SubmitItemUpdateResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_SetCallResult(hAPICall, func); + } +} +public class CNumberOfCurrentPlayers_t_CallResult +{ + public CNumberOfCurrentPlayers_t_CallResult() { } + ~CNumberOfCurrentPlayers_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_NumberOfCurrentPlayers_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsReceived_t_CallResult +{ + public CGSStatsReceived_t_CallResult() { } + ~CGSStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoresDownloaded_t_CallResult +{ + public CLeaderboardScoresDownloaded_t_CallResult() { } + ~CLeaderboardScoresDownloaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoresDownloaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult +{ + public CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() { } + ~CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CCreateItemResult_t_CallResult +{ + public CCreateItemResult_t_CallResult() { } + ~CCreateItemResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CreateItemResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCreateItemResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetUserItemVoteResult_t_CallResult +{ + public CSetUserItemVoteResult_t_CallResult() { } + ~CSetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CComputeNewPlayerCompatibilityResult_t_CallResult +{ + public CComputeNewPlayerCompatibilityResult_t_CallResult() { } + ~CComputeNewPlayerCompatibilityResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoreUploaded_t_CallResult +{ + public CLeaderboardScoreUploaded_t_CallResult() { } + ~CLeaderboardScoreUploaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoreUploaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalAchievementPercentagesReady_t_CallResult +{ + public CGlobalAchievementPercentagesReady_t_CallResult() { } + ~CGlobalAchievementPercentagesReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalStatsReceived_t_CallResult +{ + public CGlobalStatsReceived_t_CallResult() { } + ~CGlobalStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult +{ + public CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() { } + ~CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CClanOfficerListResponse_t_CallResult +{ + public CClanOfficerListResponse_t_CallResult() { } + ~CClanOfficerListResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ClanOfficerListResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStoragePublishFileProgress_t_CallResult +{ + public CRemoteStoragePublishFileProgress_t_CallResult() { } + ~CRemoteStoragePublishFileProgress_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSReputation_t_CallResult +{ + public CGSReputation_t_CallResult() { } + ~CGSReputation_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSReputation_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSReputation_t_SetCallResult(hAPICall, func); + } +} +public class CUserFavoriteItemsListChanged_t_CallResult +{ + public CUserFavoriteItemsListChanged_t_CallResult() { } + ~CUserFavoriteItemsListChanged_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserFavoriteItemsListChanged_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_SetCallResult(hAPICall, func); + } +} +public class CEncryptedAppTicketResponse_t_CallResult +{ + public CEncryptedAppTicketResponse_t_CallResult() { } + ~CEncryptedAppTicketResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_EncryptedAppTicketResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSetUserPublishedFileActionResult_t_CallResult +{ + public CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() { } + ~CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsEnumerateFollowingList_t_CallResult +{ + public CFriendsEnumerateFollowingList_t_CallResult() { } + ~CFriendsEnumerateFollowingList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsEnumerateFollowingList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageSubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageSubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CGetUserItemVoteResult_t_CallResult +{ + public CGetUserItemVoteResult_t_CallResult() { } + ~CGetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CAssociateWithClanResult_t_CallResult +{ + public CAssociateWithClanResult_t_CallResult() { } + ~CAssociateWithClanResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AssociateWithClanResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardUGCSet_t_CallResult +{ + public CLeaderboardUGCSet_t_CallResult() { } + ~CLeaderboardUGCSet_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardUGCSet_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_SetCallResult(hAPICall, func); + } +} +public class CCheckFileSignature_t_CallResult +{ + public CCheckFileSignature_t_CallResult() { } + ~CCheckFileSignature_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CheckFileSignature_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUnsubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetPersonaNameResponse_t_CallResult +{ + public CSetPersonaNameResponse_t_CallResult() { } + ~CSetPersonaNameResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetPersonaNameResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_SetCallResult(hAPICall, func); + } +} +public class CUserStatsReceived_t_CallResult +{ + public CUserStatsReceived_t_CallResult() { } + ~CUserStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CJoinClanChatRoomCompletionResult_t_CallResult +{ + public CJoinClanChatRoomCompletionResult_t_CallResult() { } + ~CJoinClanChatRoomCompletionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardFindResult_t_CallResult +{ + public CLeaderboardFindResult_t_CallResult() { } + ~CLeaderboardFindResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardFindResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_SetCallResult(hAPICall, func); + } +} +public class SteamAPIInterop +{ +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RestartAppIfNecessary")] +internal static extern void SteamAPI_RestartAppIfNecessary(uint unOwnAppID ); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_Init")] +internal static extern void SteamAPI_Init(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RunCallbacks")] +internal static extern void SteamAPI_RunCallbacks(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RegisterCallback")] +internal static extern void SteamAPI_RegisterCallback(IntPtr pCallback, int iCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_UnregisterCallback")] +internal static extern void SteamAPI_UnregisterCallback(IntPtr pCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamClient")] +internal static extern IntPtr SteamClient(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUser")] +internal static extern IntPtr SteamUser(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamFriends")] +internal static extern IntPtr SteamFriends(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUtils")] +internal static extern IntPtr SteamUtils(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmaking")] +internal static extern IntPtr SteamMatchmaking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServerListResponse")] +internal static extern IntPtr SteamMatchmakingServerListResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPingResponse")] +internal static extern IntPtr SteamMatchmakingPingResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPlayersResponse")] +internal static extern IntPtr SteamMatchmakingPlayersResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingRulesResponse")] +internal static extern IntPtr SteamMatchmakingRulesResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServers")] +internal static extern IntPtr SteamMatchmakingServers(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamRemoteStorage")] +internal static extern IntPtr SteamRemoteStorage(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUserStats")] +internal static extern IntPtr SteamUserStats(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamApps")] +internal static extern IntPtr SteamApps(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamNetworking")] +internal static extern IntPtr SteamNetworking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamScreenshots")] +internal static extern IntPtr SteamScreenshots(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusic")] +internal static extern IntPtr SteamMusic(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusicRemote")] +internal static extern IntPtr SteamMusicRemote(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTTP")] +internal static extern IntPtr SteamHTTP(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUnifiedMessages")] +internal static extern IntPtr SteamUnifiedMessages(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamController")] +internal static extern IntPtr SteamController(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUGC")] +internal static extern IntPtr SteamUGC(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAppList")] +internal static extern IntPtr SteamAppList(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTMLSurface")] +internal static extern IntPtr SteamHTMLSurface(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamInventory")] +internal static extern IntPtr SteamInventory(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamVideo")] +internal static extern IntPtr SteamVideo(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServer")] +internal static extern IntPtr SteamGameServer(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServerStats")] +internal static extern IntPtr SteamGameServerStats(); +} + + +public enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + k_EUniverseMax = 5, +} +public enum EResult +{ + k_EResultOK = 1, + k_EResultFail = 2, + k_EResultNoConnection = 3, + k_EResultInvalidPassword = 5, + k_EResultLoggedInElsewhere = 6, + k_EResultInvalidProtocolVer = 7, + k_EResultInvalidParam = 8, + k_EResultFileNotFound = 9, + k_EResultBusy = 10, + k_EResultInvalidState = 11, + k_EResultInvalidName = 12, + k_EResultInvalidEmail = 13, + k_EResultDuplicateName = 14, + k_EResultAccessDenied = 15, + k_EResultTimeout = 16, + k_EResultBanned = 17, + k_EResultAccountNotFound = 18, + k_EResultInvalidSteamID = 19, + k_EResultServiceUnavailable = 20, + k_EResultNotLoggedOn = 21, + k_EResultPending = 22, + k_EResultEncryptionFailure = 23, + k_EResultInsufficientPrivilege = 24, + k_EResultLimitExceeded = 25, + k_EResultRevoked = 26, + k_EResultExpired = 27, + k_EResultAlreadyRedeemed = 28, + k_EResultDuplicateRequest = 29, + k_EResultAlreadyOwned = 30, + k_EResultIPNotFound = 31, + k_EResultPersistFailed = 32, + k_EResultLockingFailed = 33, + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, + k_EResultBlocked = 40, + k_EResultIgnored = 41, + k_EResultNoMatch = 42, + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, + k_EResultAccountNotFeatured = 45, + k_EResultAdministratorOK = 46, + k_EResultContentVersion = 47, + k_EResultTryAnotherCM = 48, + k_EResultPasswordRequiredToKickSession = 49, + k_EResultAlreadyLoggedInElsewhere = 50, + k_EResultSuspended = 51, + k_EResultCancelled = 52, + k_EResultDataCorruption = 53, + k_EResultDiskFull = 54, + k_EResultRemoteCallFailed = 55, + k_EResultPasswordUnset = 56, + k_EResultExternalAccountUnlinked = 57, + k_EResultPSNTicketInvalid = 58, + k_EResultExternalAccountAlreadyLinked = 59, + k_EResultRemoteFileConflict = 60, + k_EResultIllegalPassword = 61, + k_EResultSameAsPreviousValue = 62, + k_EResultAccountLogonDenied = 63, + k_EResultCannotUseOldPassword = 64, + k_EResultInvalidLoginAuthCode = 65, + k_EResultAccountLogonDeniedNoMail = 66, + k_EResultHardwareNotCapableOfIPT = 67, + k_EResultIPTInitError = 68, + k_EResultParentalControlRestricted = 69, + k_EResultFacebookQueryError = 70, + k_EResultExpiredLoginAuthCode = 71, + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, + k_EResultRequirePasswordReEntry = 77, + k_EResultValueOutOfRange = 78, + k_EResultUnexpectedError = 79, + k_EResultDisabled = 80, + k_EResultInvalidCEGSubmission = 81, + k_EResultRestrictedDevice = 82, + k_EResultRegionLocked = 83, + k_EResultRateLimitExceeded = 84, + k_EResultAccountLoginDeniedNeedTwoFactor = 85, + k_EResultItemDeleted = 86, + k_EResultAccountLoginDeniedThrottle = 87, + k_EResultTwoFactorCodeMismatch = 88, + k_EResultTwoFactorActivationCodeMismatch = 89, + k_EResultAccountAssociatedToMultiplePartners = 90, + k_EResultNotModified = 91, + k_EResultNoMobileDevice = 92, + k_EResultTimeNotSynced = 93, + k_EResultSmsCodeFailed = 94, + k_EResultAccountLimitExceeded = 95, + k_EResultAccountActivityLimitExceeded = 96, + k_EResultPhoneActivityLimitExceeded = 97, + k_EResultRefundToWallet = 98, + k_EResultEmailSendFailure = 99, + k_EResultNotSettled = 100, + k_EResultNeedCaptcha = 101, + k_EResultGSLTDenied = 102, + k_EResultGSOwnerDenied = 103, + k_EResultInvalidItemType = 104, + k_EResultIPBanned = 105, + k_EResultGSLTExpired = 106, +} +public enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, +} +public enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +} +public enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, + k_EBeginAuthSessionResultInvalidTicket = 1, + k_EBeginAuthSessionResultDuplicateRequest = 2, + k_EBeginAuthSessionResultInvalidVersion = 3, + k_EBeginAuthSessionResultGameMismatch = 4, + k_EBeginAuthSessionResultExpiredTicket = 5, +} +public enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, + k_EAuthSessionResponseUserNotConnectedToSteam = 1, + k_EAuthSessionResponseNoLicenseOrExpired = 2, + k_EAuthSessionResponseVACBanned = 3, + k_EAuthSessionResponseLoggedInElseWhere = 4, + k_EAuthSessionResponseVACCheckTimedOut = 5, + k_EAuthSessionResponseAuthTicketCanceled = 6, + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, + k_EAuthSessionResponseAuthTicketInvalid = 8, + k_EAuthSessionResponsePublisherIssuedBan = 9, +} +public enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, + k_EUserHasLicenseResultDoesNotHaveLicense = 1, + k_EUserHasLicenseResultNoAuth = 2, +} +public enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, + k_EAccountTypeMultiseat = 2, + k_EAccountTypeGameServer = 3, + k_EAccountTypeAnonGameServer = 4, + k_EAccountTypePending = 5, + k_EAccountTypeContentServer = 6, + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, + k_EAccountTypeAnonUser = 10, + k_EAccountTypeMax = 11, +} +public enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, + k_EAppReleaseState_Unavailable = 1, + k_EAppReleaseState_Prerelease = 2, + k_EAppReleaseState_PreloadOnly = 3, + k_EAppReleaseState_Released = 4, +} +public enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0, + k_EAppOwnershipFlags_OwnsLicense = 1, + k_EAppOwnershipFlags_FreeLicense = 2, + k_EAppOwnershipFlags_RegionRestricted = 4, + k_EAppOwnershipFlags_LowViolence = 8, + k_EAppOwnershipFlags_InvalidPlatform = 16, + k_EAppOwnershipFlags_SharedLicense = 32, + k_EAppOwnershipFlags_FreeWeekend = 64, + k_EAppOwnershipFlags_RetailLicense = 128, + k_EAppOwnershipFlags_LicenseLocked = 256, + k_EAppOwnershipFlags_LicensePending = 512, + k_EAppOwnershipFlags_LicenseExpired = 1024, + k_EAppOwnershipFlags_LicensePermanent = 2048, + k_EAppOwnershipFlags_LicenseRecurring = 4096, + k_EAppOwnershipFlags_LicenseCanceled = 8192, + k_EAppOwnershipFlags_AutoGrant = 16384, + k_EAppOwnershipFlags_PendingGift = 32768, + k_EAppOwnershipFlags_RentalNotActivated = 65536, + k_EAppOwnershipFlags_Rental = 131072, +} +public enum EAppType +{ + k_EAppType_Invalid = 0, + k_EAppType_Game = 1, + k_EAppType_Application = 2, + k_EAppType_Tool = 4, + k_EAppType_Demo = 8, + k_EAppType_Media_DEPRECATED = 16, + k_EAppType_DLC = 32, + k_EAppType_Guide = 64, + k_EAppType_Driver = 128, + k_EAppType_Config = 256, + k_EAppType_Hardware = 512, + k_EAppType_Franchise = 1024, + k_EAppType_Video = 2048, + k_EAppType_Plugin = 4096, + k_EAppType_Music = 8192, + k_EAppType_Series = 16384, + k_EAppType_Shortcut = 1073741824, + k_EAppType_DepotOnly = -2147483648, +} +public enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + k_ESteamUserStatTypeMAX = 6, +} +public enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, + k_EChatEntryTypeTyping = 2, + k_EChatEntryTypeInviteGame = 3, + k_EChatEntryTypeEmote = 4, + k_EChatEntryTypeLeftConversation = 6, + k_EChatEntryTypeEntered = 7, + k_EChatEntryTypeWasKicked = 8, + k_EChatEntryTypeWasBanned = 9, + k_EChatEntryTypeDisconnected = 10, + k_EChatEntryTypeHistoricalChat = 11, + k_EChatEntryTypeLinkBlocked = 14, +} +public enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, + k_EChatRoomEnterResponseDoesntExist = 2, + k_EChatRoomEnterResponseNotAllowed = 3, + k_EChatRoomEnterResponseFull = 4, + k_EChatRoomEnterResponseError = 5, + k_EChatRoomEnterResponseBanned = 6, + k_EChatRoomEnterResponseLimited = 7, + k_EChatRoomEnterResponseClanDisabled = 8, + k_EChatRoomEnterResponseCommunityBan = 9, + k_EChatRoomEnterResponseMemberBlockedYou = 10, + k_EChatRoomEnterResponseYouBlockedMember = 11, +} +public enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 4095, + k_EChatInstanceFlagClan = 524288, + k_EChatInstanceFlagLobby = 262144, + k_EChatInstanceFlagMMSLobby = 131072, +} +public enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1, + k_EMarketingMessageFlagsPlatformWindows = 2, + k_EMarketingMessageFlagsPlatformMac = 4, + k_EMarketingMessageFlagsPlatformLinux = 8, + k_EMarketingMessageFlagsPlatformRestrictions = 14, +} +public enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +} +public enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, + k_EBroadcastUploadResultOK = 1, + k_EBroadcastUploadResultInitFailed = 2, + k_EBroadcastUploadResultFrameFailed = 3, + k_EBroadcastUploadResultTimeout = 4, + k_EBroadcastUploadResultBandwidthExceeded = 5, + k_EBroadcastUploadResultLowFPS = 6, + k_EBroadcastUploadResultMissingKeyFrames = 7, + k_EBroadcastUploadResultNoConnection = 8, + k_EBroadcastUploadResultRelayFailed = 9, + k_EBroadcastUploadResultSettingsChanged = 10, + k_EBroadcastUploadResultMissingAudio = 11, + k_EBroadcastUploadResultTooFarBehind = 12, + k_EBroadcastUploadResultTranscodeBehind = 13, +} +public enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, + k_ELaunchOptionType_Default = 1, + k_ELaunchOptionType_SafeMode = 2, + k_ELaunchOptionType_Multiplayer = 3, + k_ELaunchOptionType_Config = 4, + k_ELaunchOptionType_OpenVR = 5, + k_ELaunchOptionType_Server = 6, + k_ELaunchOptionType_Editor = 7, + k_ELaunchOptionType_Manual = 8, + k_ELaunchOptionType_Benchmark = 9, + k_ELaunchOptionType_Option1 = 10, + k_ELaunchOptionType_Option2 = 11, + k_ELaunchOptionType_Option3 = 12, + k_ELaunchOptionType_OculusVR = 13, + k_ELaunchOptionType_OpenVROverlay = 14, + k_ELaunchOptionType_OSVR = 15, + k_ELaunchOptionType_Dialog = 1000, +} +public enum EVRHMDType +{ + k_eEVRHMDType_None = -1, + k_eEVRHMDType_Unknown = 0, + k_eEVRHMDType_HTC_Dev = 1, + k_eEVRHMDType_HTC_VivePre = 2, + k_eEVRHMDType_HTC_Vive = 3, + k_eEVRHMDType_HTC_Unknown = 20, + k_eEVRHMDType_Oculus_DK1 = 21, + k_eEVRHMDType_Oculus_DK2 = 22, + k_eEVRHMDType_Oculus_Rift = 23, + k_eEVRHMDType_Oculus_Unknown = 40, +} +public enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36, +} +public enum EFailureType +{ + k_EFailureFlushedCallbackQueue = 0, + k_EFailurePipeFail = 1, +} +public enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, + k_EFriendRelationshipMax = 8, +} +public enum EPersonaState +{ + k_EPersonaStateOffline = 0, + k_EPersonaStateOnline = 1, + k_EPersonaStateBusy = 2, + k_EPersonaStateAway = 3, + k_EPersonaStateSnooze = 4, + k_EPersonaStateLookingToTrade = 5, + k_EPersonaStateLookingToPlay = 6, + k_EPersonaStateMax = 7, +} +public enum EFriendFlags +{ + k_EFriendFlagNone = 0, + k_EFriendFlagBlocked = 1, + k_EFriendFlagFriendshipRequested = 2, + k_EFriendFlagImmediate = 4, + k_EFriendFlagClanMember = 8, + k_EFriendFlagOnGameServer = 16, + k_EFriendFlagRequestingFriendship = 128, + k_EFriendFlagRequestingInfo = 256, + k_EFriendFlagIgnored = 512, + k_EFriendFlagIgnoredFriend = 1024, + k_EFriendFlagSuggested = 2048, + k_EFriendFlagChatMember = 4096, + k_EFriendFlagAll = 65535, +} +public enum EUserRestriction +{ + k_nUserRestrictionNone = 0, + k_nUserRestrictionUnknown = 1, + k_nUserRestrictionAnyChat = 2, + k_nUserRestrictionVoiceChat = 4, + k_nUserRestrictionGroupChat = 8, + k_nUserRestrictionRating = 16, + k_nUserRestrictionGameInvites = 32, + k_nUserRestrictionTrading = 64, +} +public enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +} +public enum EPersonaChange +{ + k_EPersonaChangeName = 1, + k_EPersonaChangeStatus = 2, + k_EPersonaChangeComeOnline = 4, + k_EPersonaChangeGoneOffline = 8, + k_EPersonaChangeGamePlayed = 16, + k_EPersonaChangeGameServer = 32, + k_EPersonaChangeAvatar = 64, + k_EPersonaChangeJoinedSource = 128, + k_EPersonaChangeLeftSource = 256, + k_EPersonaChangeRelationshipChanged = 512, + k_EPersonaChangeNameFirstSet = 1024, + k_EPersonaChangeFacebookInfo = 2048, + k_EPersonaChangeNickname = 4096, + k_EPersonaChangeSteamLevel = 8192, +} +public enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, + k_ESteamAPICallFailureSteamGone = 0, + k_ESteamAPICallFailureNetworkFailure = 1, + k_ESteamAPICallFailureInvalidHandle = 2, + k_ESteamAPICallFailureMismatchedCallback = 3, +} +public enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1, +} +public enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1, +} +public enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +} +public enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond = 1, + eNoServersListedOnMasterServer = 2, +} +public enum ELobbyType +{ + k_ELobbyTypePrivate = 0, + k_ELobbyTypeFriendsOnly = 1, + k_ELobbyTypePublic = 2, + k_ELobbyTypeInvisible = 3, +} +public enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +} +public enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose = 0, + k_ELobbyDistanceFilterDefault = 1, + k_ELobbyDistanceFilterFar = 2, + k_ELobbyDistanceFilterWorldwide = 3, +} +public enum EChatMemberStateChange +{ + k_EChatMemberStateChangeEntered = 1, + k_EChatMemberStateChangeLeft = 2, + k_EChatMemberStateChangeDisconnected = 4, + k_EChatMemberStateChangeKicked = 8, + k_EChatMemberStateChangeBanned = 16, +} +public enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = 1, + k_ERemoteStoragePlatformOSX = 2, + k_ERemoteStoragePlatformPS3 = 4, + k_ERemoteStoragePlatformLinux = 8, + k_ERemoteStoragePlatformReserved2 = 16, + k_ERemoteStoragePlatformAll = -1, +} +public enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +} +public enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + k_EWorkshopFileTypeCommunity = 0, + k_EWorkshopFileTypeMicrotransaction = 1, + k_EWorkshopFileTypeCollection = 2, + k_EWorkshopFileTypeArt = 3, + k_EWorkshopFileTypeVideo = 4, + k_EWorkshopFileTypeScreenshot = 5, + k_EWorkshopFileTypeGame = 6, + k_EWorkshopFileTypeSoftware = 7, + k_EWorkshopFileTypeConcept = 8, + k_EWorkshopFileTypeWebGuide = 9, + k_EWorkshopFileTypeIntegratedGuide = 10, + k_EWorkshopFileTypeMerch = 11, + k_EWorkshopFileTypeControllerBinding = 12, + k_EWorkshopFileTypeSteamworksAccessInvite = 13, + k_EWorkshopFileTypeSteamVideo = 14, + k_EWorkshopFileTypeGameManagedItem = 15, + k_EWorkshopFileTypeMax = 16, +} +public enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +} +public enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +} +public enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +} +public enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1, +} +public enum EUGCReadAction +{ + k_EUGCRead_ContinueReadingUntilFinished = 0, + k_EUGCRead_ContinueReading = 1, + k_EUGCRead_Close = 2, +} +public enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3, +} +public enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, + k_ELeaderboardSortMethodDescending = 2, +} +public enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, + k_ELeaderboardDisplayTypeTimeSeconds = 2, + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, +} +public enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, + k_ELeaderboardUploadScoreMethodForceUpdate = 2, +} +public enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +} +public enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, + k_EP2PSessionErrorNoRightsToApp = 2, + k_EP2PSessionErrorDestinationNotLoggedIn = 3, + k_EP2PSessionErrorTimeout = 4, + k_EP2PSessionErrorMax = 5, +} +public enum EP2PSend +{ + k_EP2PSendUnreliable = 0, + k_EP2PSendUnreliableNoDelay = 1, + k_EP2PSendReliable = 2, + k_EP2PSendReliableWithBuffering = 3, +} +public enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + k_ESNetSocketStateConnected = 1, + k_ESNetSocketStateInitiated = 10, + k_ESNetSocketStateLocalCandidatesFound = 11, + k_ESNetSocketStateReceivedRemoteCandidates = 12, + k_ESNetSocketStateChallengeHandshake = 15, + k_ESNetSocketStateDisconnecting = 21, + k_ESNetSocketStateLocalDisconnect = 22, + k_ESNetSocketStateTimeoutDuringConnect = 23, + k_ESNetSocketStateRemoteEndDisconnected = 24, + k_ESNetSocketStateConnectionBroken = 25, +} +public enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +} +public enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5, +} +public enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3, +} +public enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET = 1, + k_EHTTPMethodHEAD = 2, + k_EHTTPMethodPOST = 3, + k_EHTTPMethodPUT = 4, + k_EHTTPMethodDELETE = 5, + k_EHTTPMethodOPTIONS = 6, + k_EHTTPMethodPATCH = 7, +} +public enum EHTTPStatusCode +{ + k_EHTTPStatusCodeInvalid = 0, + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + k_EHTTPStatusCode307TemporaryRedirect = 307, + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, + k_EHTTPStatusCode402PaymentRequired = 402, + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, + k_EHTTPStatusCode429TooManyRequests = 429, + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +} +public enum ESteamControllerPad +{ + k_ESteamControllerPad_Left = 0, + k_ESteamControllerPad_Right = 1, +} +public enum EControllerSource +{ + k_EControllerSource_None = 0, + k_EControllerSource_LeftTrackpad = 1, + k_EControllerSource_RightTrackpad = 2, + k_EControllerSource_Joystick = 3, + k_EControllerSource_ABXY = 4, + k_EControllerSource_Switch = 5, + k_EControllerSource_LeftTrigger = 6, + k_EControllerSource_RightTrigger = 7, + k_EControllerSource_Gyro = 8, + k_EControllerSource_Count = 9, +} +public enum EControllerSourceMode +{ + k_EControllerSourceMode_None = 0, + k_EControllerSourceMode_Dpad = 1, + k_EControllerSourceMode_Buttons = 2, + k_EControllerSourceMode_FourButtons = 3, + k_EControllerSourceMode_AbsoluteMouse = 4, + k_EControllerSourceMode_RelativeMouse = 5, + k_EControllerSourceMode_JoystickMove = 6, + k_EControllerSourceMode_JoystickCamera = 7, + k_EControllerSourceMode_ScrollWheel = 8, + k_EControllerSourceMode_Trigger = 9, + k_EControllerSourceMode_TouchMenu = 10, + k_EControllerSourceMode_MouseJoystick = 11, + k_EControllerSourceMode_MouseRegion = 12, + k_EControllerSourceMode_RadialMenu = 13, + k_EControllerSourceMode_Switches = 14, +} +public enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None = 0, + k_EControllerActionOrigin_A = 1, + k_EControllerActionOrigin_B = 2, + k_EControllerActionOrigin_X = 3, + k_EControllerActionOrigin_Y = 4, + k_EControllerActionOrigin_LeftBumper = 5, + k_EControllerActionOrigin_RightBumper = 6, + k_EControllerActionOrigin_LeftGrip = 7, + k_EControllerActionOrigin_RightGrip = 8, + k_EControllerActionOrigin_Start = 9, + k_EControllerActionOrigin_Back = 10, + k_EControllerActionOrigin_LeftPad_Touch = 11, + k_EControllerActionOrigin_LeftPad_Swipe = 12, + k_EControllerActionOrigin_LeftPad_Click = 13, + k_EControllerActionOrigin_LeftPad_DPadNorth = 14, + k_EControllerActionOrigin_LeftPad_DPadSouth = 15, + k_EControllerActionOrigin_LeftPad_DPadWest = 16, + k_EControllerActionOrigin_LeftPad_DPadEast = 17, + k_EControllerActionOrigin_RightPad_Touch = 18, + k_EControllerActionOrigin_RightPad_Swipe = 19, + k_EControllerActionOrigin_RightPad_Click = 20, + k_EControllerActionOrigin_RightPad_DPadNorth = 21, + k_EControllerActionOrigin_RightPad_DPadSouth = 22, + k_EControllerActionOrigin_RightPad_DPadWest = 23, + k_EControllerActionOrigin_RightPad_DPadEast = 24, + k_EControllerActionOrigin_LeftTrigger_Pull = 25, + k_EControllerActionOrigin_LeftTrigger_Click = 26, + k_EControllerActionOrigin_RightTrigger_Pull = 27, + k_EControllerActionOrigin_RightTrigger_Click = 28, + k_EControllerActionOrigin_LeftStick_Move = 29, + k_EControllerActionOrigin_LeftStick_Click = 30, + k_EControllerActionOrigin_LeftStick_DPadNorth = 31, + k_EControllerActionOrigin_LeftStick_DPadSouth = 32, + k_EControllerActionOrigin_LeftStick_DPadWest = 33, + k_EControllerActionOrigin_LeftStick_DPadEast = 34, + k_EControllerActionOrigin_Gyro_Move = 35, + k_EControllerActionOrigin_Gyro_Pitch = 36, + k_EControllerActionOrigin_Gyro_Yaw = 37, + k_EControllerActionOrigin_Gyro_Roll = 38, + k_EControllerActionOrigin_Count = 39, +} +public enum EControllerActivationType +{ + k_EControllerActivationType_None = 0, + k_EControllerActivationType_FullPress = 1, + k_EControllerActivationType_SoftPress = 2, + k_EControllerActivationType_StartPress = 3, + k_EControllerActivationType_Release = 4, + k_EControllerActivationType_LongPress = 5, + k_EControllerActivationType_DoublePress = 6, + k_EControllerActivationType_Analog = 7, +} +public enum EControllerPressureButton +{ + k_EControllerPressureButton_LeftTrackPad = 0, + k_EControllerPressureButton_RightTrackPad = 1, + k_EControllerPressureButton_LeftBumper = 2, + k_EControllerPressureButton_RightBumper = 3, + k_EControllerPressureButton_LeftGripLower = 4, + k_EControllerPressureButton_RightGripLower = 5, + k_EControllerPressureButton_LeftGripUpper = 6, + k_EControllerPressureButton_RightGripUpper = 7, + k_EControllerPressureButton_Invalid = 8, +} +public enum EControllerActivatorOutputAxis +{ + k_EOutputAxisLeftTrigger = 0, + k_EOutputAxisRightTrigger = 1, + k_EOutputAxisLeftThumbXPos = 2, + k_EOutputAxisLeftThumbXNeg = 3, + k_EOutputAxisLeftThumbYPos = 4, + k_EOutputAxisLeftThumbYNeg = 5, + k_EOutputAxisRightThumbXPos = 6, + k_EOutputAxisRightThumbXNeg = 7, + k_EOutputAxisRightThumbYPos = 8, + k_EOutputAxisRightThumbYNeg = 9, +} +public enum EControllerConfigFeature +{ + k_EControllerConfigFeature_None = 0, + k_EControllerConfigFeature_Gamepad = 1, + k_EControllerConfigFeature_Keyboard = 2, + k_EControllerConfigFeature_Mouse = 3, + k_EControllerConfigFeature_Gyro = 4, + k_EControllerConfigFeature_TouchMenu = 5, + k_EControllerConfigFeature_ModeShift = 6, + k_EControllerConfigFeature_ActionSet = 7, + k_EControllerConfigFeature_Activator = 8, +} +public enum EControllerPopupMenuActivationType +{ + k_EMenuButtonPress = 0, + k_EMenuButtonRelease = 1, + k_EMenuTouchRelease = 2, + k_EMenuTouchAlways = 3, +} +public enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, + k_EUGCMatchingUGCType_All = -1, +} +public enum EUserUGCList +{ + k_EUserUGCList_Published = 0, + k_EUserUGCList_VotedOn = 1, + k_EUserUGCList_VotedUp = 2, + k_EUserUGCList_VotedDown = 3, + k_EUserUGCList_WillVoteLater = 4, + k_EUserUGCList_Favorited = 5, + k_EUserUGCList_Subscribed = 6, + k_EUserUGCList_UsedOrPlayed = 7, + k_EUserUGCList_Followed = 8, +} +public enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc = 0, + k_EUserUGCListSortOrder_CreationOrderAsc = 1, + k_EUserUGCListSortOrder_TitleAsc = 2, + k_EUserUGCListSortOrder_LastUpdatedDesc = 3, + k_EUserUGCListSortOrder_SubscriptionDateDesc = 4, + k_EUserUGCListSortOrder_VoteScoreDesc = 5, + k_EUserUGCListSortOrder_ForModeration = 6, +} +public enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +} +public enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, + k_EItemUpdateStatusPreparingConfig = 1, + k_EItemUpdateStatusPreparingContent = 2, + k_EItemUpdateStatusUploadingContent = 3, + k_EItemUpdateStatusUploadingPreviewFile = 4, + k_EItemUpdateStatusCommittingChanges = 5, +} +public enum EItemState +{ + k_EItemStateNone = 0, + k_EItemStateSubscribed = 1, + k_EItemStateLegacyItem = 2, + k_EItemStateInstalled = 4, + k_EItemStateNeedsUpdate = 8, + k_EItemStateDownloading = 16, + k_EItemStateDownloadPending = 32, +} +public enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +} +public enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, + k_EItemPreviewType_YouTubeVideo = 1, + k_EItemPreviewType_Sketchfab = 2, + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, + k_EItemPreviewType_EnvironmentMap_LatLong = 4, + k_EItemPreviewType_ReservedMax = 255, +} +public enum EHTMLMouseButton +{ + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, +} +public enum EMouseCursor +{ + dc_user = 0, + dc_none = 1, + dc_arrow = 2, + dc_ibeam = 3, + dc_hourglass = 4, + dc_waitarrow = 5, + dc_crosshair = 6, + dc_up = 7, + dc_sizenw = 8, + dc_sizese = 9, + dc_sizene = 10, + dc_sizesw = 11, + dc_sizew = 12, + dc_sizee = 13, + dc_sizen = 14, + dc_sizes = 15, + dc_sizewe = 16, + dc_sizens = 17, + dc_sizeall = 18, + dc_no = 19, + dc_hand = 20, + dc_blank = 21, + dc_middle_pan = 22, + dc_north_pan = 23, + dc_north_east_pan = 24, + dc_east_pan = 25, + dc_south_east_pan = 26, + dc_south_pan = 27, + dc_south_west_pan = 28, + dc_west_pan = 29, + dc_north_west_pan = 30, + dc_alias = 31, + dc_cell = 32, + dc_colresize = 33, + dc_copycur = 34, + dc_verticaltext = 35, + dc_rowresize = 36, + dc_zoomin = 37, + dc_zoomout = 38, + dc_help = 39, + dc_custom = 40, + dc_last = 41, +} +public enum EHTMLKeyModifiers +{ + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1, + k_eHTMLKeyModifier_CtrlDown = 2, + k_eHTMLKeyModifier_ShiftDown = 4, +} +public enum ESteamItemFlags +{ + k_ESteamItemNoTrade = 1, + k_ESteamItemRemoved = 256, + k_ESteamItemConsumed = 512, +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamID +{ + public SteamID_t m_steamid; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamID_t +{ + public SteamIDComponent_t m_comp; + public ulong m_unAll64Bits; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamIDComponent_t +{ + public uint m_unAccountID; + public uint m_unAccountInstance; + public uint m_EAccountType; + public EUniverse m_EUniverse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameID_t +{ + public uint m_nAppID; + public uint m_nType; + public uint m_nModID; +} +[StructLayout(LayoutKind.Sequential)] public struct ValvePackingSentinel_t +{ + public uint m_u32; + public ulong m_u64; + public char m_u16; + public double m_d; +} +[StructLayout(LayoutKind.Sequential)] public struct CallbackMsg_t +{ + public uint m_hSteamUser; + public int m_iCallback; + public IntPtr m_pubParam; // uint8 * + public int m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServerConnectFailure_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bStillRetrying; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServersDisconnected_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ClientGameServerDeny_t +{ + public uint m_uAppID; + public uint m_unGameServerIP; + public char m_usGameServerPort; + public char m_bSecure; + public uint m_uReason; +} +[StructLayout(LayoutKind.Sequential)] public struct ValidateAuthTicketResponse_t +{ + public ulong m_SteamID; + public EAuthSessionResponse m_eAuthSessionResponse; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct MicroTxnAuthorizationResponse_t +{ + public uint m_unAppID; + public ulong m_ulOrderID; + public byte m_bAuthorized; +} +[StructLayout(LayoutKind.Sequential)] public struct EncryptedAppTicketResponse_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GetAuthSessionTicketResponse_t +{ + public uint m_hAuthTicket; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GameWebCallback_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct StoreAuthURLResponse_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)] + public string m_szURL; //char[512] +} +[StructLayout(LayoutKind.Sequential)] public struct FriendGameInfo_t +{ + public ulong m_gameID; + public uint m_unGameIP; + public char m_usGamePort; + public char m_usQueryPort; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendSessionStateInfo_t +{ + public uint m_uiOnlineSessionInstances; + public byte m_uiPublishedToFriendsSessionInstance; +} +[StructLayout(LayoutKind.Sequential)] public struct PersonaStateChange_t +{ + public ulong m_ulSteamID; + public int m_nChangeFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct GameOverlayActivated_t +{ + public byte m_bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct GameServerChangeRequested_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchServer; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchPassword; //char[64] +} +[StructLayout(LayoutKind.Sequential)] public struct GameLobbyJoinRequested_t +{ + public ulong m_steamIDLobby; + public ulong m_steamIDFriend; +} +[StructLayout(LayoutKind.Sequential)] public struct AvatarImageLoaded_t +{ + public ulong m_steamID; + public int m_iImage; + public int m_iWide; + public int m_iTall; +} +[StructLayout(LayoutKind.Sequential)] public struct ClanOfficerListResponse_t +{ + public ulong m_steamIDClan; + public int m_cOfficers; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendRichPresenceUpdate_t +{ + public ulong m_steamIDFriend; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameRichPresenceJoinRequested_t +{ + public ulong m_steamIDFriend; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchConnect; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedClanChatMsg_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatJoin_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatLeave_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + [MarshalAs(UnmanagedType.I1)] + public bool m_bKicked; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDropped; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadClanActivityCountsResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct JoinClanChatRoomCompletionResult_t +{ + public ulong m_steamIDClanChat; + public EChatRoomEnterResponse m_eChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedFriendChatMsg_t +{ + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsGetFollowerCount_t +{ + public EResult m_eResult; + public ulong m_steamID; + public int m_nCount; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsIsFollowing_t +{ + public EResult m_eResult; + public ulong m_steamID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bIsFollowing; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsEnumerateFollowingList_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public CSteamID[] m_rgSteamID; //CSteamID[50] + public int m_nResultsReturned; + public int m_nTotalResultCount; +} +[StructLayout(LayoutKind.Sequential)] public struct SetPersonaNameResponse_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocalSuccess; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct LowBatteryPower_t +{ + public byte m_nMinutesBatteryLeft; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamAPICallCompleted_t +{ + public ulong m_hAsyncCall; + public int m_iCallback; + public uint m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct CheckFileSignature_t +{ + public ECheckFileSignature m_eCheckFileSignature; +} +[StructLayout(LayoutKind.Sequential)] public struct GamepadTextInputDismissed_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSubmitted; + public uint m_unSubmittedText; +} +[StructLayout(LayoutKind.Sequential)] public struct MatchMakingKeyValuePair_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szKey; //char[256] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szValue; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct servernetadr_t +{ + public char m_usConnectionPort; + public char m_usQueryPort; + public uint m_unIP; +} +[StructLayout(LayoutKind.Sequential)] public struct gameserveritem_t +{ + public servernetadr_t m_NetAdr; + public int m_nPing; + [MarshalAs(UnmanagedType.I1)] + public bool m_bHadSuccessfulResponse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDoNotRefresh; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szGameDir; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szMap; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szGameDescription; //char[64] + public uint m_nAppID; + public int m_nPlayers; + public int m_nMaxPlayers; + public int m_nBotPlayers; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPassword; + [MarshalAs(UnmanagedType.I1)] + public bool m_bSecure; + public uint m_ulTimeLastPlayed; + public int m_nServerVersion; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szServerName; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_szGameTags; //char[128] + public ulong m_steamID; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListChanged_t +{ + public uint m_nIP; + public uint m_nQueryPort; + public uint m_nConnPort; + public uint m_nAppID; + public uint m_nFlags; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAdd; + public uint m_unAccountId; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyInvite_t +{ + public ulong m_ulSteamIDUser; + public ulong m_ulSteamIDLobby; + public ulong m_ulGameID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyEnter_t +{ + public ulong m_ulSteamIDLobby; + public uint m_rgfChatPermissions; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocked; + public uint m_EChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyDataUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDMember; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUserChanged; + public ulong m_ulSteamIDMakingChange; + public uint m_rgfChatMemberStateChange; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatMsg_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUser; + public byte m_eChatEntryType; + public uint m_iChatID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyGameCreated_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDGameServer; + public uint m_unIP; + public char m_usPort; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyMatchList_t +{ + public uint m_nLobbiesMatching; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyKicked_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDAdmin; + public byte m_bKickedDueToDisconnect; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyCreated_t +{ + public EResult m_eResult; + public ulong m_ulSteamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct PSNGameBootInviteResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bGameBootInviteExists; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListAccountsUpdated_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamParamStringArray_t +{ + public IntPtr m_ppStrings; // const char ** + public int m_nNumStrings; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedClient_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumDownloads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedServer_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumUploads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncProgress_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchCurrentFile; //char[260] + public uint m_nAppID; + public uint m_uBytesTransferredThisChunk; + public double m_dAppPercentComplete; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUploading; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncStatusCheck_t +{ + public uint m_nAppID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileShareResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchFilename; //char[260] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDeletePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeSubscribed; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUnsubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdatePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDownloadUGCResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + public uint m_nAppID; + public int m_nSizeInBytes; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public ulong m_ulSteamIDOwner; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedFileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_hFile; + public ulong m_hPreviewFile; + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public EWorkshopFileType m_eFileType; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] + public float[] m_rgScore; //float[50] + public uint m_nAppId; + public uint m_unStartIndex; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + public EResult m_eResult; + public ulong m_unPublishedFileId; + public int m_nVotesFor; + public int m_nVotesAgainst; + public int m_nReports; + public float m_fScore; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileSubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUnsubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileDeleted_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUserVoteDetails_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopVote m_eVote; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSetUserPublishedFileActionResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopFileAction m_eAction; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + public EResult m_eResult; + public EWorkshopFileAction m_eAction; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeUpdated; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileProgress_t +{ + public double m_dPercentFile; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPreview; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUpdated_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; + public ulong m_ulUnused; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileWriteAsyncComplete_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileReadAsyncComplete_t +{ + public ulong m_hFileReadAsync; + public EResult m_eResult; + public uint m_nOffset; + public uint m_cubRead; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardEntry_t +{ + public ulong m_steamIDUser; + public int m_nGlobalRank; + public int m_nScore; + public int m_cDetails; + public ulong m_hUGC; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsStored_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementStored_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bGroupAchievement; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + public uint m_nCurProgress; + public uint m_nMaxProgress; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardFindResult_t +{ + public ulong m_hSteamLeaderboard; + public byte m_bLeaderboardFound; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoresDownloaded_t +{ + public ulong m_hSteamLeaderboard; + public ulong m_hSteamLeaderboardEntries; + public int m_cEntryCount; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoreUploaded_t +{ + public byte m_bSuccess; + public ulong m_hSteamLeaderboard; + public int m_nScore; + public byte m_bScoreChanged; + public int m_nGlobalRankNew; + public int m_nGlobalRankPrevious; +} +[StructLayout(LayoutKind.Sequential)] public struct NumberOfCurrentPlayers_t +{ + public byte m_bSuccess; + public int m_cPlayers; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsUnloaded_t +{ + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementIconFetched_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bAchieved; + public int m_nIconHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalAchievementPercentagesReady_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardUGCSet_t +{ + public EResult m_eResult; + public ulong m_hSteamLeaderboard; +} +[StructLayout(LayoutKind.Sequential)] public struct PS3TrophiesInstalled_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_ulRequiredDiskSpace; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct DlcInstalled_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RegisterActivationCodeResponse_t +{ + public ERegisterActivationCodeResult m_eResult; + public uint m_unPackageRegistered; +} +[StructLayout(LayoutKind.Sequential)] public struct AppProofOfPurchaseKeyResponse_t +{ + public EResult m_eResult; + public uint m_nAppID; + public uint m_cchKeyLength; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)] + public string m_rgchKey; //char[240] +} +[StructLayout(LayoutKind.Sequential)] public struct FileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_ulFileSize; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U1)] + public byte[] m_FileSHA; //byte[20] + public uint m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionState_t +{ + public byte m_bConnectionActive; + public byte m_bConnecting; + public byte m_eP2PSessionError; + public byte m_bUsingRelay; + public int m_nBytesQueuedForSend; + public int m_nPacketsQueuedForSend; + public uint m_nRemoteIP; + public char m_nRemotePort; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionRequest_t +{ + public ulong m_steamIDRemote; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionConnectFail_t +{ + public ulong m_steamIDRemote; + public byte m_eP2PSessionError; +} +[StructLayout(LayoutKind.Sequential)] public struct SocketStatusCallback_t +{ + public uint m_hSocket; + public uint m_hListenSocket; + public ulong m_steamIDRemote; + public int m_eSNetSocketState; +} +[StructLayout(LayoutKind.Sequential)] public struct ScreenshotReady_t +{ + public uint m_hLocal; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bShuffled; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bLooped; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int m_nPlayingRepeatStatus; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestCompleted_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + [MarshalAs(UnmanagedType.I1)] + public bool m_bRequestSuccessful; + public EHTTPStatusCode m_eStatusCode; + public uint m_unBodySize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestHeadersReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestDataReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + public uint m_cOffset; + public uint m_cBytesReceived; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUnifiedMessagesSendMethodResult_t +{ + public ulong m_hHandle; + public ulong m_unContext; + public EResult m_eResult; + public uint m_unResponseSize; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerAnalogActionData_t +{ + public EControllerSourceMode eMode; + public float x; + public float y; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerDigitalActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bState; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerMotionData_t +{ + public float rotQuatX; + public float rotQuatY; + public float rotQuatZ; + public float rotQuatW; + public float posAccelX; + public float posAccelY; + public float posAccelZ; + public float rotVelX; + public float rotVelY; + public float rotVelZ; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCDetails_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + public EWorkshopFileType m_eFileType; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public uint m_rtimeAddedToUserList; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + public ulong m_hFile; + public ulong m_hPreviewFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public uint m_unVotesUp; + public uint m_unVotesDown; + public float m_flScore; + public uint m_unNumChildren; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCQueryCompleted_t +{ + public ulong m_handle; + public EResult m_eResult; + public uint m_unNumResultsReturned; + public uint m_unTotalMatchingResults; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCRequestUGCDetailsResult_t +{ + public SteamUGCDetails_t m_details; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct CreateItemResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct SubmitItemUpdateResult_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadItemResult_t +{ + public uint m_unAppID; + public ulong m_nPublishedFileId; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserFavoriteItemsListChanged_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bWasAddRequest; +} +[StructLayout(LayoutKind.Sequential)] public struct SetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteUp; +} +[StructLayout(LayoutKind.Sequential)] public struct GetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedUp; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedDown; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteSkipped; +} +[StructLayout(LayoutKind.Sequential)] public struct StartPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct StopPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_BrowserReady_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NeedsPaint_t +{ + public uint unBrowserHandle; + public IntPtr pBGRA; // const char * + public uint unWide; + public uint unTall; + public uint unUpdateX; + public uint unUpdateY; + public uint unUpdateWide; + public uint unUpdateTall; + public uint unScrollX; + public uint unScrollY; + public float flPageScale; + public uint unPageSerial; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StartRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchTarget; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CloseBrowser_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_URLChanged_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; + public IntPtr pchPageTitle; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bNewNavigation; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FinishedRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPageTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_OpenLinkInNewTab_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ChangedTitle_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SearchResults_t +{ + public uint unBrowserHandle; + public uint unResults; + public uint unCurrentMatch; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CanGoBackAndForward_t +{ + public uint unBrowserHandle; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoBack; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoForward; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HorizontalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_VerticalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_LinkAtPosition_t +{ + public uint unBrowserHandle; + public uint x; + public uint y; + public IntPtr pchURL; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bInput; + [MarshalAs(UnmanagedType.I1)] + public bool bLiveLink; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSAlert_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSConfirm_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FileOpenDialog_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * + public IntPtr pchInitialFile; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NewWindow_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public uint unX; + public uint unY; + public uint unWide; + public uint unTall; + public uint unNewWindow_BrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SetCursor_t +{ + public uint unBrowserHandle; + public uint eMouseCursor; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StatusText_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ShowToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_UpdateToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HideToolTip_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamItemDetails_t +{ + public ulong m_itemId; + public int m_iDefinition; + public char m_unQuantity; + public char m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryResultReady_t +{ + public int m_handle; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryFullUpdate_t +{ + public int m_handle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EBroadcastUploadResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EResult m_eResult; + public uint m_unVideoAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext +{ + public IntPtr m_pSteamClient; // class ISteamClient * + public IntPtr m_pSteamUser; // class ISteamUser * + public IntPtr m_pSteamFriends; // class ISteamFriends * + public IntPtr m_pSteamUtils; // class ISteamUtils * + public IntPtr m_pSteamMatchmaking; // class ISteamMatchmaking * + public IntPtr m_pSteamUserStats; // class ISteamUserStats * + public IntPtr m_pSteamApps; // class ISteamApps * + public IntPtr m_pSteamMatchmakingServers; // class ISteamMatchmakingServers * + public IntPtr m_pSteamNetworking; // class ISteamNetworking * + public IntPtr m_pSteamRemoteStorage; // class ISteamRemoteStorage * + public IntPtr m_pSteamScreenshots; // class ISteamScreenshots * + public IntPtr m_pSteamHTTP; // class ISteamHTTP * + public IntPtr m_pSteamUnifiedMessages; // class ISteamUnifiedMessages * + public IntPtr m_pController; // class ISteamController * + public IntPtr m_pSteamUGC; // class ISteamUGC * + public IntPtr m_pSteamAppList; // class ISteamAppList * + public IntPtr m_pSteamMusic; // class ISteamMusic * + public IntPtr m_pSteamMusicRemote; // class ISteamMusicRemote * + public IntPtr m_pSteamHTMLSurface; // class ISteamHTMLSurface * + public IntPtr m_pSteamInventory; // class ISteamInventory * + public IntPtr m_pSteamVideo; // class ISteamVideo * +} +[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase +{ + public byte m_nCallbackFlags; + public int m_iCallback; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallResult +{ + public ulong m_hAPICall; + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallback +{ + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientApprove_t +{ + public ulong m_SteamID; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientDeny_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchOptionalText; //char[128] +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientKick_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientAchievementStatus_t +{ + public ulong m_SteamID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_pchAchievement; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bUnlocked; +} +[StructLayout(LayoutKind.Sequential)] public struct GSPolicyResponse_t +{ + public byte m_bSecure; +} +[StructLayout(LayoutKind.Sequential)] public struct GSGameplayStats_t +{ + public EResult m_eResult; + public int m_nRank; + public uint m_unTotalConnects; + public uint m_unTotalMinutesPlayed; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientGroupStatus_t +{ + public ulong m_SteamIDUser; + public ulong m_SteamIDGroup; + [MarshalAs(UnmanagedType.I1)] + public bool m_bMember; + [MarshalAs(UnmanagedType.I1)] + public bool m_bOfficer; +} +[StructLayout(LayoutKind.Sequential)] public struct GSReputation_t +{ + public EResult m_eResult; + public uint m_unReputationScore; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + public uint m_unBannedIP; + public char m_usBannedPort; + public ulong m_ulBannedGameID; + public uint m_unBanExpires; +} +[StructLayout(LayoutKind.Sequential)] public struct AssociateWithClanResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ComputeNewPlayerCompatibilityResult_t +{ + public EResult m_eResult; + public int m_cPlayersThatDontLikeCandidate; + public int m_cPlayersThatCandidateDoesntLike; + public int m_cClanPlayersThatDontLikeCandidate; + public ulong m_SteamIDCandidate; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsReceived_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsStored_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsUnloaded_t +{ + public ulong m_steamIDUser; +} + +public class SteamAPI +{ +public static void Init(uint appId) +{ +SteamAPIInterop.SteamAPI_RestartAppIfNecessary (appId); +SteamAPIInterop.SteamAPI_Init (); +} + +public static void RunCallbacks() +{ +SteamAPIInterop.SteamAPI_RunCallbacks (); +} + +public static void RegisterCallback(IntPtr pCallback, int iCallback) +{ +SteamAPIInterop.SteamAPI_RegisterCallback (pCallback, iCallback); +} + +public static void UnregisterCallback(IntPtr pCallback) +{ +SteamAPIInterop.SteamAPI_UnregisterCallback (pCallback); +} + +public const int k_iSteamUserCallbacks = 100; +public const int k_iSteamGameServerCallbacks = 200; +public const int k_iSteamFriendsCallbacks = 300; +public const int k_iSteamBillingCallbacks = 400; +public const int k_iSteamMatchmakingCallbacks = 500; +public const int k_iSteamContentServerCallbacks = 600; +public const int k_iSteamUtilsCallbacks = 700; +public const int k_iClientFriendsCallbacks = 800; +public const int k_iClientUserCallbacks = 900; +public const int k_iSteamAppsCallbacks = 1000; +public const int k_iSteamUserStatsCallbacks = 1100; +public const int k_iSteamNetworkingCallbacks = 1200; +public const int k_iClientRemoteStorageCallbacks = 1300; +public const int k_iClientDepotBuilderCallbacks = 1400; +public const int k_iSteamGameServerItemsCallbacks = 1500; +public const int k_iClientUtilsCallbacks = 1600; +public const int k_iSteamGameCoordinatorCallbacks = 1700; +public const int k_iSteamGameServerStatsCallbacks = 1800; +public const int k_iSteam2AsyncCallbacks = 1900; +public const int k_iSteamGameStatsCallbacks = 2000; +public const int k_iClientHTTPCallbacks = 2100; +public const int k_iClientScreenshotsCallbacks = 2200; +public const int k_iSteamScreenshotsCallbacks = 2300; +public const int k_iClientAudioCallbacks = 2400; +public const int k_iClientUnifiedMessagesCallbacks = 2500; +public const int k_iSteamStreamLauncherCallbacks = 2600; +public const int k_iClientControllerCallbacks = 2700; +public const int k_iSteamControllerCallbacks = 2800; +public const int k_iClientParentalSettingsCallbacks = 2900; +public const int k_iClientDeviceAuthCallbacks = 3000; +public const int k_iClientNetworkDeviceManagerCallbacks = 3100; +public const int k_iClientMusicCallbacks = 3200; +public const int k_iClientRemoteClientManagerCallbacks = 3300; +public const int k_iClientUGCCallbacks = 3400; +public const int k_iSteamStreamClientCallbacks = 3500; +public const int k_IClientProductBuilderCallbacks = 3600; +public const int k_iClientShortcutsCallbacks = 3700; +public const int k_iClientRemoteControlManagerCallbacks = 3800; +public const int k_iSteamAppListCallbacks = 3900; +public const int k_iSteamMusicCallbacks = 4000; +public const int k_iSteamMusicRemoteCallbacks = 4100; +public const int k_iClientVRCallbacks = 4200; +public const int k_iClientGameNotificationCallbacks = 4300; +public const int k_iSteamGameNotificationCallbacks = 4400; +public const int k_iSteamHTMLSurfaceCallbacks = 4500; +public const int k_iClientVideoCallbacks = 4600; +public const int k_iClientInventoryCallbacks = 4700; +public const int k_iClientBluetoothManagerCallbacks = 4800; +public const int k_cchPersonaNameMax = 128; +public const int k_cwchPersonaNameMax = 32; +public const int k_cchMaxRichPresenceKeys = 20; +public const int k_cchMaxRichPresenceKeyLength = 64; +public const int k_cchMaxRichPresenceValueLength = 256; +public const int k_cchStatNameMax = 128; +public const int k_cchLeaderboardNameMax = 128; +public const int k_cLeaderboardDetailsMax = 64; +public const ulong k_InvalidUnifiedMessageHandle = 0; +public const ulong k_SteamItemInstanceIDInvalid = 0xffffffffffffffff; +public const int k_SteamInventoryResultInvalid = -1; +public static ISteamClient SteamClient() +{ +return new CSteamClient(SteamAPIInterop.SteamClient()); +} + +public static ISteamUser SteamUser() +{ +return new CSteamUser(SteamAPIInterop.SteamUser()); +} + +public static ISteamFriends SteamFriends() +{ +return new CSteamFriends(SteamAPIInterop.SteamFriends()); +} + +public static ISteamUtils SteamUtils() +{ +return new CSteamUtils(SteamAPIInterop.SteamUtils()); +} + +public static ISteamMatchmaking SteamMatchmaking() +{ +return new CSteamMatchmaking(SteamAPIInterop.SteamMatchmaking()); +} + +public static ISteamMatchmakingServerListResponse SteamMatchmakingServerListResponse() +{ +return new CSteamMatchmakingServerListResponse(SteamAPIInterop.SteamMatchmakingServerListResponse()); +} + +public static ISteamMatchmakingPingResponse SteamMatchmakingPingResponse() +{ +return new CSteamMatchmakingPingResponse(SteamAPIInterop.SteamMatchmakingPingResponse()); +} + +public static ISteamMatchmakingPlayersResponse SteamMatchmakingPlayersResponse() +{ +return new CSteamMatchmakingPlayersResponse(SteamAPIInterop.SteamMatchmakingPlayersResponse()); +} + +public static ISteamMatchmakingRulesResponse SteamMatchmakingRulesResponse() +{ +return new CSteamMatchmakingRulesResponse(SteamAPIInterop.SteamMatchmakingRulesResponse()); +} + +public static ISteamMatchmakingServers SteamMatchmakingServers() +{ +return new CSteamMatchmakingServers(SteamAPIInterop.SteamMatchmakingServers()); +} + +public static ISteamRemoteStorage SteamRemoteStorage() +{ +return new CSteamRemoteStorage(SteamAPIInterop.SteamRemoteStorage()); +} + +public static ISteamUserStats SteamUserStats() +{ +return new CSteamUserStats(SteamAPIInterop.SteamUserStats()); +} + +public static ISteamApps SteamApps() +{ +return new CSteamApps(SteamAPIInterop.SteamApps()); +} + +public static ISteamNetworking SteamNetworking() +{ +return new CSteamNetworking(SteamAPIInterop.SteamNetworking()); +} + +public static ISteamScreenshots SteamScreenshots() +{ +return new CSteamScreenshots(SteamAPIInterop.SteamScreenshots()); +} + +public static ISteamMusic SteamMusic() +{ +return new CSteamMusic(SteamAPIInterop.SteamMusic()); +} + +public static ISteamMusicRemote SteamMusicRemote() +{ +return new CSteamMusicRemote(SteamAPIInterop.SteamMusicRemote()); +} + +public static ISteamHTTP SteamHTTP() +{ +return new CSteamHTTP(SteamAPIInterop.SteamHTTP()); +} + +public static ISteamUnifiedMessages SteamUnifiedMessages() +{ +return new CSteamUnifiedMessages(SteamAPIInterop.SteamUnifiedMessages()); +} + +public static ISteamController SteamController() +{ +return new CSteamController(SteamAPIInterop.SteamController()); +} + +public static ISteamUGC SteamUGC() +{ +return new CSteamUGC(SteamAPIInterop.SteamUGC()); +} + +public static ISteamAppList SteamAppList() +{ +return new CSteamAppList(SteamAPIInterop.SteamAppList()); +} + +public static ISteamHTMLSurface SteamHTMLSurface() +{ +return new CSteamHTMLSurface(SteamAPIInterop.SteamHTMLSurface()); +} + +public static ISteamInventory SteamInventory() +{ +return new CSteamInventory(SteamAPIInterop.SteamInventory()); +} + +public static ISteamVideo SteamVideo() +{ +return new CSteamVideo(SteamAPIInterop.SteamVideo()); +} + +public static ISteamGameServer SteamGameServer() +{ +return new CSteamGameServer(SteamAPIInterop.SteamGameServer()); +} + +public static ISteamGameServerStats SteamGameServerStats() +{ +return new CSteamGameServerStats(SteamAPIInterop.SteamGameServerStats()); +} + +} + + + +} + diff --git a/lib/osx/include/steam/steam_gameserver.h b/lib/osx/include/steam/steam_gameserver.h new file mode 100644 index 0000000..f2d2847 --- /dev/null +++ b/lib/osx/include/steam/steam_gameserver.h @@ -0,0 +1,237 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_GAMESERVER_H +#define STEAM_GAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api.h" +#include "isteamgameserver.h" +#include "isteamgameserverstats.h" + +enum EServerMode +{ + eServerModeInvalid = 0, // DO NOT USE + eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list + eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect + eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients +}; + +// Initialize ISteamGameServer interface object, and set server properties which may not be changed. +// +// After calling this function, you should set any additional server parameters, and then +// call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() +// +// - usSteamPort is the local port used to communicate with the steam servers. +// - usGamePort is the port that clients will connect to for gameplay. +// - usQueryPort is the port that will manage server browser related duties and info +// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving +// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. +// - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the +// server is out of date. (Only servers with the latest version will be listed.) + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + +S_API void SteamGameServer_Shutdown(); +S_API void SteamGameServer_RunCallbacks(); + +// Most Steam API functions allocate some amount of thread-local memory for +// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() +// will free all API-related memory associated with the calling thread. +// This memory is released automatically by SteamGameServer_RunCallbacks(), +// so single-threaded servers do not need to explicitly call this function. +inline void SteamGameServer_ReleaseCurrentThreadMemory(); + +S_API bool SteamGameServer_BSecure(); +S_API uint64 SteamGameServer_GetSteamID(); + +// If your application contains modules which could be built against different Steamworks SDK +// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot +// use the version-less global accessors. Instead, create and use CSteamGameServerAPIContext +// objects to retrieve interface pointers which are appropriate for your Steamworks SDK headers. +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamGameServerClient(); +inline ISteamGameServer *SteamGameServer(); +inline ISteamUtils *SteamGameServerUtils(); +inline ISteamNetworking *SteamGameServerNetworking(); +inline ISteamGameServerStats *SteamGameServerStats(); +inline ISteamHTTP *SteamGameServerHTTP(); +inline ISteamInventory *SteamGameServerInventory(); +inline ISteamUGC *SteamGameServerUGC(); +inline ISteamApps *SteamGameServerApps(); +#endif + +class CSteamGameServerAPIContext +{ +public: + CSteamGameServerAPIContext() { Clear(); } + inline void Clear(); + inline bool Init(); + + ISteamClient *SteamClient() const { return m_pSteamClient; } + ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } + ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } + ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } + ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } + ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } + ISteamInventory *SteamInventory() const { return m_pSteamInventory; } + ISteamUGC *SteamUGC() const { return m_pSteamUGC; } + ISteamApps *SteamApps() const { return m_pSteamApps; } + +private: + ISteamClient *m_pSteamClient; + ISteamGameServer *m_pSteamGameServer; + ISteamUtils *m_pSteamGameServerUtils; + ISteamNetworking *m_pSteamGameServerNetworking; + ISteamGameServerStats *m_pSteamGameServerStats; + ISteamHTTP *m_pSteamHTTP; + ISteamInventory *m_pSteamInventory; + ISteamUGC *m_pSteamUGC; + ISteamApps *m_pSteamApps; +}; + + +// Older SDKs exported this global pointer, but it is no longer supported. +// You should use SteamGameServerClient() or CSteamGameServerAPIContext to +// safely access the ISteamClient APIs from your game server application. +//S_API ISteamClient *g_pSteamClientGameServer; + +// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and +// is no longer supported. Use SteamGameServer_Init instead. +//S_API void S_CALLTYPE SteamGameServer_InitSafe(); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// These macros are similar to the STEAM_CALLBACK_* macros in steam_api.h, but only trigger for gameserver callbacks +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_GAMESERVER_CALLBACK( thisclass, func, /*callback_type, [deprecated] var*/... ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, GS, 3 ), ( this->SetGameserverFlag();, thisclass, func, __VA_ARGS__ ) ) + +#define STEAM_GAMESERVER_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) + + +#define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ + CCallback< thisclass, param, true > var; void func( param *pParam ) + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + + +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline CSteamGameServerAPIContext& SteamGameServerInternal_ModuleContext() +{ + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* ctx[ sizeof(CSteamGameServerAPIContext)/sizeof(void*) ]; + return *(CSteamGameServerAPIContext*)ctx; +} +#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ + if ( !SteamGameServer_GetHSteamPipe() ) return 0; \ + CSteamGameServerAPIContext &ctx = SteamGameServerInternal_ModuleContext(); \ + if ( !ctx.AccessFunc() ) ctx.Init(); \ + return ctx.AccessFunc(); + +inline ISteamClient *SteamGameServerClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } +inline ISteamGameServer *SteamGameServer() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServer ) } +inline ISteamUtils *SteamGameServerUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerUtils ) } +inline ISteamNetworking *SteamGameServerNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerNetworking ) } +inline ISteamGameServerStats *SteamGameServerStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerStats ) } +inline ISteamHTTP *SteamGameServerHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } +inline ISteamInventory *SteamGameServerInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } +inline ISteamUGC *SteamGameServerUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } +inline ISteamApps *SteamGameServerApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } +#undef _STEAMINTERNAL_ACCESSOR_BODY +#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) + + +inline void CSteamGameServerAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamGameServer = NULL; + m_pSteamGameServerUtils = NULL; + m_pSteamGameServerNetworking = NULL; + m_pSteamGameServerStats = NULL; + m_pSteamHTTP = NULL; + m_pSteamInventory = NULL; + m_pSteamUGC = NULL; + m_pSteamApps = NULL; +} + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamGameServerAPIContext::Init() +{ + HSteamUser hSteamUser = SteamGameServer_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamGameServer_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamGameServer = m_pSteamClient->GetISteamGameServer( hSteamUser, hSteamPipe, STEAMGAMESERVER_INTERFACE_VERSION ); + if ( !m_pSteamGameServer ) + return false; + + m_pSteamGameServerUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerUtils ) + return false; + + m_pSteamGameServerNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamGameServerNetworking ) + return false; + + m_pSteamGameServerStats = m_pSteamClient->GetISteamGameServerStats( hSteamUser, hSteamPipe, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerStats ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + return true; +} + + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + if ( !SteamInternal_GameServer_Init( unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + return false; + + return true; +} + + +inline void SteamGameServer_ReleaseCurrentThreadMemory() +{ + SteamAPI_ReleaseCurrentThreadMemory(); +} + +#endif // STEAM_GAMESERVER_H diff --git a/lib/osx/include/steam/steamclientpublic.h b/lib/osx/include/steam/steamclientpublic.h new file mode 100644 index 0000000..8d89376 --- /dev/null +++ b/lib/osx/include/steam/steamclientpublic.h @@ -0,0 +1,1255 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMCLIENTPUBLIC_H +#define STEAMCLIENTPUBLIC_H +#ifdef _WIN32 +#pragma once +#endif +//lint -save -e1931 -e1927 -e1924 -e613 -e726 + +// This header file defines the interface between the calling application and the code that +// knows how to communicate with the connection manager (CM) from the Steam service + +// This header file is intended to be portable; ideally this 1 header file plus a lib or dll +// is all you need to integrate the client library into some other tree. So please avoid +// including or requiring other header files if possible. This header should only describe the +// interface layer, no need to include anything about the implementation. + +#include "steamtypes.h" +#include "steamuniverse.h" + +// General result codes +enum EResult +{ + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection +// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha + k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned + k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) + k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid + k_EResultIPBanned = 105, // the ip address has been banned from taking this action + k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use +}; + +// Error codes for use with the voice functions +enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, + +}; + +// Result codes to GSHandleClientDeny/Kick +enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +}; + +// return type of GetAuthSessionTicket +typedef uint32 HAuthTicket; +const HAuthTicket k_HAuthTicketInvalid = 0; + +// results from BeginAuthSession +enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. + k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. + k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID + k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version + k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game + k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired +}; + +// Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession +enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. + k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam + k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. + k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. + k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. + k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user + k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. + k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. + k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC +}; + +// results from UserHasLicenseForApp +enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated +}; + + +// Steam account types +enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, // single user account + k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account + k_EAccountTypeGameServer = 3, // game server account + k_EAccountTypeAnonGameServer = 4, // anonymous game server account + k_EAccountTypePending = 5, // pending + k_EAccountTypeContentServer = 6, // content server + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. + k_EAccountTypeAnonUser = 10, + + // Max of 16 items in this field + k_EAccountTypeMax +}; + + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing + k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all + k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released + k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released. + k_EAppReleaseState_Released = 4, // owners can download and play app. +}; + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0x0000, // unknown + k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game + k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game + k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region + k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version + k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform + k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device + k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses + k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) + k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user + k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play + k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired + k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc + k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically + k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring + k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license + k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem + k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet + k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental +}; + + +//----------------------------------------------------------------------------- +// Purpose: designed as flags to allow filters masks +//----------------------------------------------------------------------------- +enum EAppType +{ + k_EAppType_Invalid = 0x000, // unknown / invalid + k_EAppType_Game = 0x001, // playable game, default type + k_EAppType_Application = 0x002, // software application + k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers + k_EAppType_Demo = 0x008, // game demo + k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web + k_EAppType_DLC = 0x020, // down loadable content + k_EAppType_Guide = 0x040, // game guide, PDF etc + k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) + k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) + k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) + k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games + k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) + k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps + k_EAppType_Music = 0x2000, // Music files + k_EAppType_Series = 0x4000, // Container app for video series + + k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only + k_EAppType_DepotOnly = 0x80000000, // placeholder since depots and apps share the same namespace +}; + + + +//----------------------------------------------------------------------------- +// types of user game stats fields +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE +//----------------------------------------------------------------------------- +enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + // Read as FLOAT, set with count / session length + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + + // max, for sanity checks + k_ESteamUserStatTypeMAX +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Entry Types (previously was only friend-to-friend message types) +//----------------------------------------------------------------------------- +enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, // Normal text message from another user + k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) + k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game + k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) + //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) + k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) + // Above are previous FriendMsgType entries, now merged into more generic chat entry types + k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) + k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) + k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) + k_EChatEntryTypeDisconnected = 10, // user disconnected + k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message + //k_EChatEntryTypeReserved1 = 12, // No longer used + //k_EChatEntryTypeReserved2 = 13, // No longer used + k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Room Enter Responses +//----------------------------------------------------------------------------- +enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, // Success + k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) + k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat + k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size + k_EChatRoomEnterResponseError = 5, // Unexpected Error + k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join + k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) + k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled + k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account + k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining + k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat + // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used + // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used + // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used +}; + + +typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); +typedef bool (*PFNLegacyKeyInstalled)(); + +const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; +const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; +// we allow 3 simultaneous user account instances right now, 1= desktop, 2 = console, 4 = web, 0 = all +const unsigned int k_unSteamUserDesktopInstance = 1; +const unsigned int k_unSteamUserConsoleInstance = 2; +const unsigned int k_unSteamUserWebInstance = 4; + +// Special flags for Chat accounts - they go in the top 8 bits +// of the steam ID's "instance", leaving 12 for the actual instances +enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags + + k_EChatInstanceFlagClan = ( k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit + k_EChatInstanceFlagLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc + k_EChatInstanceFlagMMSLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc + + // Max of 8 flags +}; + + +//----------------------------------------------------------------------------- +// Purpose: Marketing message flags that change how a client should handle them +//----------------------------------------------------------------------------- +enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1 << 0, + k_EMarketingMessageFlagsPlatformWindows = 1 << 1, + k_EMarketingMessageFlagsPlatformMac = 1 << 2, + k_EMarketingMessageFlagsPlatformLinux = 1 << 3, + + //aggregate flags + k_EMarketingMessageFlagsPlatformRestrictions = + k_EMarketingMessageFlagsPlatformWindows | + k_EMarketingMessageFlagsPlatformMac | + k_EMarketingMessageFlagsPlatformLinux, +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Possible positions to tell the overlay to show notifications in +//----------------------------------------------------------------------------- +enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Broadcast upload result details +//----------------------------------------------------------------------------- +enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, // broadcast state unknown + k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems + k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed + k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed + k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out + k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data + k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low + k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames + k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay + k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload + k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings + k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data + k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading + k_EBroadcastUploadResultTranscodeBehind = 13, // server failed to keep up with transcode +}; + + +//----------------------------------------------------------------------------- +// Purpose: codes for well defined launch options +//----------------------------------------------------------------------------- +enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, // unknown what launch option does + k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode + k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode + k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode + k_ELaunchOptionType_Config = 4, // runs config tool for this game + k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR + k_ELaunchOptionType_Server = 6, // runs dedicated server for this game + k_ELaunchOptionType_Editor = 7, // runs game editor + k_ELaunchOptionType_Manual = 8, // shows game manual + k_ELaunchOptionType_Benchmark = 9, // runs game benchmark + k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name + k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name + k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name + k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK + k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay + k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK + + + k_ELaunchOptionType_Dialog = 1000, // show launch options dialog +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_OpenVR + || eType == k_ELaunchOptionType_OpenVROverlay + || eType == k_ELaunchOptionType_OculusVR + || eType == k_ELaunchOptionType_OSVR; +} + + +//----------------------------------------------------------------------------- +// Purpose: code points for VR HMD vendors and models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EVRHMDType +{ + k_eEVRHMDType_None = -1, // unknown vendor and model + + k_eEVRHMDType_Unknown = 0, // unknown vendor and model + + k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits + k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre + k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release + + k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd + + k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 + k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 + k_eEVRHMDType_Oculus_Rift = 23, // Oculus rift + + k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD +}; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Controller models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + + // Steam Controllers + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + + // Other Controllers + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36 +}; + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Oculus HMD +//----------------------------------------------------------------------------- +static inline bool BIsOculusHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_Unknown; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Vive HMD +//----------------------------------------------------------------------------- +static inline bool BIsViveHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown; +} + + +#pragma pack( push, 1 ) + +#define CSTEAMID_DEFINED + +// Steam ID structure (64 bits total) +class CSteamID +{ +public: + + //----------------------------------------------------------------------------- + // Purpose: Constructor + //----------------------------------------------------------------------------- + CSteamID() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + Set( unAccountID, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // unAccountInstance - instance + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) + { +#if defined(_SERVER) && defined(Assert) + Assert( ! ( ( k_EAccountTypeIndividual == eAccountType ) && ( unAccountInstance > k_unSteamUserWebInstance ) ) ); // enforce that for individual accounts, instance is always 1 +#endif // _SERVER + InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : ulSteamID - 64-bit representation of a Steam ID + // Note: Will not accept a uint32 or int32 as input, as that is a probable mistake. + // See the stubbed out overloads in the private: section for more info. + //----------------------------------------------------------------------------- + CSteamID( uint64 ulSteamID ) + { + SetFromUint64( ulSteamID ); + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CSteamID( uint64_t ulSteamID ) + { + SetFromUint64( (uint64)ulSteamID ); + } +#endif + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void Set( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + + if ( eAccountType == k_EAccountTypeClan || eAccountType == k_EAccountTypeGameServer ) + { + m_steamid.m_comp.m_unAccountInstance = 0; + } + else + { + // by default we pick the desktop instance + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; + } + } + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void InstancedSet( uint32 unAccountID, uint32 unInstance, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + m_steamid.m_comp.m_unAccountInstance = unInstance; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 52 bit parts and universe/type + // Input : ulIdentifier - 52 bits of goodness + //----------------------------------------------------------------------------- + void FullSet( uint64 ulIdentifier, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = ( ulIdentifier & k_unSteamAccountIDMask ); // account ID is low 32 bits + m_steamid.m_comp.m_unAccountInstance = ( ( ulIdentifier >> 32 ) & k_unSteamAccountInstanceMask ); // account instance is next 20 bits + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 64-bit representation + // Input : ulSteamID - 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + void SetFromUint64( uint64 ulSteamID ) + { + m_steamid.m_unAll64Bits = ulSteamID; + } + + + //----------------------------------------------------------------------------- + // Purpose: Clear all fields, leaving an invalid ID. + //----------------------------------------------------------------------------- + void Clear() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to convert + // eUniverse - universe this ID belongs to + //----------------------------------------------------------------------------- + void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe + m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; // Steam2 only knew desktop instances + } + + //----------------------------------------------------------------------------- + // Purpose: Fills out a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to write to + //----------------------------------------------------------------------------- + void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const + { + // only individual accounts have any meaning in Steam 2, only they can be mapped + // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); + + pTSteamGlobalUserID->m_SteamInstanceID = 0; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; + } +#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) + + //----------------------------------------------------------------------------- + // Purpose: Converts steam ID to its 64-bit representation + // Output : 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + uint64 ConvertToUint64() const + { + return m_steamid.m_unAll64Bits; + } + + + //----------------------------------------------------------------------------- + // Purpose: Converts the static parts of a steam ID to a 64-bit representation. + // For multiseat accounts, all instances of that account will have the + // same static account key, so they can be grouped together by the static + // account key. + // Output : 64-bit static account key + //----------------------------------------------------------------------------- + uint64 GetStaticAccountKey() const + { + // note we do NOT include the account instance (which is a dynamic property) in the static account key + return (uint64) ( ( ( (uint64) m_steamid.m_comp.m_EUniverse ) << 56 ) + ((uint64) m_steamid.m_comp.m_EAccountType << 52 ) + m_steamid.m_comp.m_unAccountID ); + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonGameServer; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonUserLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonUser; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server login that will be filled in? + //----------------------------------------------------------------------------- + bool BBlankAnonAccount() const + { + return m_steamid.m_comp.m_unAccountID == 0 && BAnonAccount() && m_steamid.m_comp.m_unAccountInstance == 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a game server account id? (Either persistent or anonymous) + //----------------------------------------------------------------------------- + bool BGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a persistent (not anonymous) game server account id? + //----------------------------------------------------------------------------- + bool BPersistentGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server account id? + //----------------------------------------------------------------------------- + bool BAnonGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a content server account id? + //----------------------------------------------------------------------------- + bool BContentServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeContentServer; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a clan account id? + //----------------------------------------------------------------------------- + bool BClanAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool BChatAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool IsLobby() const + { + return ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat ) + && ( m_steamid.m_comp.m_unAccountInstance & k_EChatInstanceFlagLobby ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an individual user account id? + //----------------------------------------------------------------------------- + bool BIndividualAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual || m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous account? + //----------------------------------------------------------------------------- + bool BAnonAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) + //----------------------------------------------------------------------------- + bool BAnonUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a faked up Steam ID for a PSN friend account? + //----------------------------------------------------------------------------- + bool BConsoleUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + // simple accessors + void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } + void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } + void ClearIndividualInstance() { if ( BIndividualAccount() ) m_steamid.m_comp.m_unAccountInstance = 0; } + bool HasNoIndividualInstance() const { return BIndividualAccount() && (m_steamid.m_comp.m_unAccountInstance==0); } + AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } + uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } + EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } + EUniverse GetEUniverse() const { return m_steamid.m_comp.m_EUniverse; } + void SetEUniverse( EUniverse eUniverse ) { m_steamid.m_comp.m_EUniverse = eUniverse; } + bool IsValid() const; + + // this set of functions is hidden, will be moved out of class + explicit CSteamID( const char *pchSteamID, EUniverse eDefaultUniverse = k_EUniverseInvalid ); + const char * Render() const; // renders this steam ID to string + static const char * Render( uint64 ulSteamID ); // static method to render a uint64 representation of a steam ID to a string + + void SetFromString( const char *pchSteamID, EUniverse eDefaultUniverse ); + // SetFromString allows many partially-correct strings, constraining how + // we might be able to change things in the future. + // SetFromStringStrict requires the exact string forms that we support + // and is preferred when the caller knows it's safe to be strict. + // Returns whether the string parsed correctly. + bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); + bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); + + inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } + inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } + inline bool operator<( const CSteamID &val ) const { return m_steamid.m_unAll64Bits < val.m_steamid.m_unAll64Bits; } + inline bool operator>( const CSteamID &val ) const { return m_steamid.m_unAll64Bits > val.m_steamid.m_unAll64Bits; } + + // DEBUG function + bool BValidExternalSteamID() const; + +private: + // These are defined here to prevent accidental implicit conversion of a u32AccountID to a CSteamID. + // If you get a compiler error about an ambiguous constructor/function then it may be because you're + // passing a 32-bit int to a function that takes a CSteamID. You should explicitly create the SteamID + // using the correct Universe and account Type/Instance values. + CSteamID( uint32 ); + CSteamID( int32 ); + + // 64 bits total + union SteamID_t + { + struct SteamIDComponent_t + { +#ifdef VALVE_BIG_ENDIAN + EUniverse m_EUniverse : 8; // universe this account belongs to + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + unsigned int m_unAccountInstance : 20; // dynamic instance ID + uint32 m_unAccountID : 32; // unique account identifier +#else + uint32 m_unAccountID : 32; // unique account identifier + unsigned int m_unAccountInstance : 20; // dynamic instance ID + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + EUniverse m_EUniverse : 8; // universe this account belongs to +#endif + } m_comp; + + uint64 m_unAll64Bits; + } m_steamid; +}; + +inline bool CSteamID::IsValid() const +{ + if ( m_steamid.m_comp.m_EAccountType <= k_EAccountTypeInvalid || m_steamid.m_comp.m_EAccountType >= k_EAccountTypeMax ) + return false; + + if ( m_steamid.m_comp.m_EUniverse <= k_EUniverseInvalid || m_steamid.m_comp.m_EUniverse >= k_EUniverseMax ) + return false; + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance > k_unSteamUserWebInstance ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != 0 ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 ) + return false; + // Any limit on instances? We use them for local users and bots + } + return true; +} + +// generic invalid CSteamID +#define k_steamIDNil CSteamID() + +// This steamID comes from a user game connection to an out of date GS that hasnt implemented the protocol +// to provide its steamID +#define k_steamIDOutofDateGS CSteamID( 0, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID comes from a user game connection to an sv_lan GS +#define k_steamIDLanModeGS CSteamID( 0, 0, k_EUniversePublic, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that has just booted but hasnt yet even initialized +// its steam3 component and started logging on. +#define k_steamIDNotInitYetGS CSteamID( 1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that isn't using the steam authentication system but still +// wants to support the "Join Game" option in the friends list +#define k_steamIDNonSteamGS CSteamID( 2, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) + + +#ifdef STEAM +// Returns the matching chat steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeChat it will be returned with the same instance +CSteamID ChatIDFromSteamID( const CSteamID &steamID ); +// Returns the matching clan steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeClan it will be returned with the same instance +CSteamID ClanIDFromSteamID( const CSteamID &steamID ); +// Asserts steamID type before conversion +CSteamID ChatIDFromClanID( const CSteamID &steamIDClan ); +// Asserts steamID type before conversion +CSteamID ClanIDFromChatID( const CSteamID &steamIDChat ); + +#endif // _STEAM + + +//----------------------------------------------------------------------------- +// Purpose: encapsulates an appID/modID pair +//----------------------------------------------------------------------------- +class CGameID +{ +public: + + CGameID() + { + m_gameID.m_nType = k_EGameIDTypeApp; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nModID = 0; + } + + explicit CGameID( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CGameID( uint64_t ulGameID ) + { + m_ulGameID = (uint64)ulGameID; + } +#endif + + explicit CGameID( int32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + explicit CGameID( uint32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + CGameID( uint32 nAppID, uint32 nModID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nModID = nModID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + } + + // Hidden functions used only by Steam + explicit CGameID( const char *pchGameID ); + const char *Render() const; // render this Game ID to string + static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string + + // must include checksum_crc.h first to get this functionality +#if defined( CHECKSUM_CRC_H ) + CGameID( uint32 nAppID, const char *pchModPath ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + + char rgchModDir[MAX_PATH]; + V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); + CRC32_t crc32; + CRC32_Init( &crc32 ); + CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + + CGameID( const char *pchExePath, const char *pchAppName ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeShortcut; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + if ( pchExePath ) + CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); + if ( pchAppName ) + CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#if defined( VSTFILEID_H ) + + CGameID( VstFileID vstFileID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeP2P; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + const char *pchFileId = vstFileID.Render(); + CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#endif /* VSTFILEID_H */ + +#endif /* CHECKSUM_CRC_H */ + + + uint64 ToUint64() const + { + return m_ulGameID; + } + + uint64 *GetUint64Ptr() + { + return &m_ulGameID; + } + + void Set( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } + + bool IsMod() const + { + return ( m_gameID.m_nType == k_EGameIDTypeGameMod ); + } + + bool IsShortcut() const + { + return ( m_gameID.m_nType == k_EGameIDTypeShortcut ); + } + + bool IsP2PFile() const + { + return ( m_gameID.m_nType == k_EGameIDTypeP2P ); + } + + bool IsSteamApp() const + { + return ( m_gameID.m_nType == k_EGameIDTypeApp ); + } + + uint32 ModID() const + { + return m_gameID.m_nModID; + } + + uint32 AppID() const + { + return m_gameID.m_nAppID; + } + + bool operator == ( const CGameID &rhs ) const + { + return m_ulGameID == rhs.m_ulGameID; + } + + bool operator != ( const CGameID &rhs ) const + { + return !(*this == rhs); + } + + bool operator < ( const CGameID &rhs ) const + { + return ( m_ulGameID < rhs.m_ulGameID ); + } + + bool IsValid() const + { + // each type has it's own invalid fixed point: + switch( m_gameID.m_nType ) + { + case k_EGameIDTypeApp: + return m_gameID.m_nAppID != k_uAppIdInvalid; + + case k_EGameIDTypeGameMod: + return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + case k_EGameIDTypeShortcut: + return (m_gameID.m_nModID & 0x80000000) != 0; + + case k_EGameIDTypeP2P: + return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + default: +#if defined(Assert) + Assert(false); +#endif + return false; + } + + } + + void Reset() + { + m_ulGameID = 0; + } + + + +private: + + enum EGameIDType + { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + + struct GameID_t + { +#ifdef VALVE_BIG_ENDIAN + unsigned int m_nModID : 32; + unsigned int m_nType : 8; + unsigned int m_nAppID : 24; +#else + unsigned int m_nAppID : 24; + unsigned int m_nType : 8; + unsigned int m_nModID : 32; +#endif + }; + + union + { + uint64 m_ulGameID; + GameID_t m_gameID; + }; +}; + +#pragma pack( pop ) + +const int k_cchGameExtraInfoMax = 64; + + +//----------------------------------------------------------------------------- +// Constants used for query ports. +//----------------------------------------------------------------------------- + +#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. +#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. + + +//----------------------------------------------------------------------------- +// Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback +// just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) +//----------------------------------------------------------------------------- +typedef void (*PFNPreMinidumpCallback)(void *context); + +//----------------------------------------------------------------------------- +// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers +//----------------------------------------------------------------------------- +typedef void *BREAKPAD_HANDLE; +#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 + +#endif // STEAMCLIENTPUBLIC_H diff --git a/lib/osx/include/steam/steamencryptedappticket.h b/lib/osx/include/steam/steamencryptedappticket.h new file mode 100644 index 0000000..48c63b4 --- /dev/null +++ b/lib/osx/include/steam/steamencryptedappticket.h @@ -0,0 +1,32 @@ +//========= Copyright © 1996-2010, Valve LLC, All rights reserved. ============ +// +// Purpose: utilities to decode/decrypt a ticket from the +// ISteamUser::RequestEncryptedAppTicket, ISteamUser::GetEncryptedAppTicket API +// +// To use: declare CSteamEncryptedAppTicket, then call BDecryptTicket +// if BDecryptTicket returns true, other accessors are valid +// +//============================================================================= + +#include "steam_api.h" + +static const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + + +S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, + uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, + const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey ); + +S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID ); + +S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); \ No newline at end of file diff --git a/lib/osx/include/steam/steamhttpenums.h b/lib/osx/include/steam/steamhttpenums.h new file mode 100644 index 0000000..d95f195 --- /dev/null +++ b/lib/osx/include/steam/steamhttpenums.h @@ -0,0 +1,98 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: HTTP related enums, stuff that is shared by both clients and servers, and our +// UI projects goes here. +// +//============================================================================= + +#ifndef STEAMHTTPENUMS_H +#define STEAMHTTPENUMS_H +#ifdef _WIN32 +#pragma once +#endif + +// HTTP related types + +// This enum is used in client API methods, do not re-number existing values. +enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT +}; + + +// HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions +// of each of these. +enum EHTTPStatusCode +{ + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +}; + +#endif // STEAMHTTPENUMS_H \ No newline at end of file diff --git a/lib/osx/include/steam/steamps3params.h b/lib/osx/include/steam/steamps3params.h new file mode 100644 index 0000000..c0741b4 --- /dev/null +++ b/lib/osx/include/steam/steamps3params.h @@ -0,0 +1,112 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMPS3PARAMS_H +#define STEAMPS3PARAMS_H +#ifdef _WIN32 +#pragma once +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 initialization parameters +// +// The following structure must be passed to when loading steam_api_ps3.prx +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_PS3_PATH_MAX 1055 +#define STEAM_PS3_SERVICE_ID_MAX 32 +#define STEAM_PS3_COMMUNICATION_ID_MAX 10 +#define STEAM_PS3_COMMUNICATION_SIG_MAX 160 +#define STEAM_PS3_LANGUAGE_MAX 64 +#define STEAM_PS3_REGION_CODE_MAX 16 +#define STEAM_PS3_CURRENT_PARAMS_VER 2 +struct SteamPS3Params_t +{ + uint32 m_unVersion; // set to STEAM_PS3_CURRENT_PARAMS_VER + + void *pReserved; + uint32 m_nAppId; // set to your game's appid + + char m_rgchInstallationPath[ STEAM_PS3_PATH_MAX ]; // directory containing latest steam prx's and sdata. Can be read only (BDVD) + char m_rgchSystemCache[ STEAM_PS3_PATH_MAX ]; // temp working cache, not persistent + char m_rgchGameData[ STEAM_PS3_PATH_MAX ]; // persistent game data path for storing user data + char m_rgchNpServiceID[ STEAM_PS3_SERVICE_ID_MAX ]; + char m_rgchNpCommunicationID[ STEAM_PS3_COMMUNICATION_ID_MAX ]; + char m_rgchNpCommunicationSig[ STEAM_PS3_COMMUNICATION_SIG_MAX ]; + + // Language should be one of the following. must be zero terminated + // danish + // dutch + // english + // finnish + // french + // german + // italian + // korean + // norwegian + // polish + // portuguese + // russian + // schinese + // spanish + // swedish + // tchinese + char m_rgchSteamLanguage[ STEAM_PS3_LANGUAGE_MAX ]; + + // region codes are "SCEA", "SCEE", "SCEJ". must be zero terminated + char m_rgchRegionCode[ STEAM_PS3_REGION_CODE_MAX ]; + + // Should be SYS_TTYP3 through SYS_TTYP10, if it's 0 then Steam won't spawn a + // thread to read console input at all. Using this let's you use Steam console commands + // like: profile_on, profile_off, profile_dump, mem_stats, mem_validate. + unsigned int m_cSteamInputTTY; + + struct Ps3netInit_t + { + bool m_bNeedInit; + void *m_pMemory; + int m_nMemorySize; + int m_flags; + } m_sysNetInitInfo; + + struct Ps3jpgInit_t + { + bool m_bNeedInit; + } m_sysJpgInitInfo; + + struct Ps3pngInit_t + { + bool m_bNeedInit; + } m_sysPngInitInfo; + + struct Ps3sysutilUserInfo_t + { + bool m_bNeedInit; + } m_sysSysUtilUserInfo; + + bool m_bIncludeNewsPage; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 memory structure +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAMPS3_MALLOC_INUSE 0x53D04A51 +#define STEAMPS3_MALLOC_SYSTEM 0x0D102C48 +#define STEAMPS3_MALLOC_OK 0xFFD04A51 +struct SteamPS3Memory_t +{ + bool m_bSingleAllocation; // If true, Steam will request one 6MB allocation and use the returned memory for all future allocations + // If false, Steam will make call malloc for each allocation + + // required function pointers + void* (*m_pfMalloc)(size_t); + void* (*m_pfRealloc)(void *, size_t); + void (*m_pfFree)(void *); + size_t (*m_pUsable_size)(void*); +}; + + +#endif // STEAMPS3PARAMS_H diff --git a/lib/osx/include/steam/steamtypes.h b/lib/osx/include/steam/steamtypes.h new file mode 100644 index 0000000..f74df1a --- /dev/null +++ b/lib/osx/include/steam/steamtypes.h @@ -0,0 +1,181 @@ +//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMTYPES_H +#define STEAMTYPES_H +#ifdef _WIN32 +#pragma once +#endif + +#define S_CALLTYPE __cdecl + +// Steam-specific types. Defined here so this header file can be included in other code bases. +#ifndef WCHARTYPES_H +typedef unsigned char uint8; +#endif + +#if defined( __GNUC__ ) && !defined(POSIX) + #if __GNUC__ < 4 + #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" + #endif + #define POSIX 1 +#endif + +#if defined(__x86_64__) || defined(_WIN64) +#define X64BITS +#endif + +// Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. +#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) +#define VALVE_BIG_ENDIAN +#endif + +typedef unsigned char uint8; +typedef signed char int8; + +#if defined( _WIN32 ) + +typedef __int16 int16; +typedef unsigned __int16 uint16; +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; + +typedef int64 lint64; +typedef uint64 ulint64; + +#ifdef X64BITS +typedef __int64 intp; // intp is an integer that can accomodate a pointer +typedef unsigned __int64 uintp; // (ie, sizeof(intp) >= sizeof(int) && sizeof(intp) >= sizeof(void *) +#else +typedef __int32 intp; +typedef unsigned __int32 uintp; +#endif + +#else // _WIN32 + +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; + +// [u]int64 are actually defined as 'long long' and gcc 64-bit +// doesn't automatically consider them the same as 'long int'. +// Changing the types for [u]int64 is complicated by +// there being many definitions, so we just +// define a 'long int' here and use it in places that would +// otherwise confuse the compiler. +typedef long int lint64; +typedef unsigned long int ulint64; + +#ifdef X64BITS +typedef long long intp; +typedef unsigned long long uintp; +#else +typedef int intp; +typedef unsigned int uintp; +#endif + +#endif // else _WIN32 + +#ifdef API_GEN +# define CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define CLANG_ATTR(ATTR) +#endif + +#define METHOD_DESC(DESC) CLANG_ATTR( "desc:" #DESC ";" ) +#define IGNOREATTR() CLANG_ATTR( "ignore" ) +#define OUT_STRUCT() CLANG_ATTR( "out_struct: ;" ) +#define OUT_STRING() CLANG_ATTR( "out_string: ;" ) +#define OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define OUT_ARRAY_COUNT(COUNTER, DESC) CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define ARRAY_COUNT(COUNTER) CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define ARRAY_COUNT_D(COUNTER, DESC) CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define BUFFER_COUNT(COUNTER) CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define OUT_BUFFER_COUNT(COUNTER) CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define OUT_STRING_COUNT(COUNTER) CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define DESC(DESC) CLANG_ATTR("desc:" #DESC ";") +#define CALL_RESULT(RESULT_TYPE) CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define CALL_BACK(RESULT_TYPE) CLANG_ATTR("callback:" #RESULT_TYPE ";") + +const int k_cubSaltSize = 8; +typedef uint8 Salt_t[ k_cubSaltSize ]; + +//----------------------------------------------------------------------------- +// GID (GlobalID) stuff +// This is a globally unique identifier. It's guaranteed to be unique across all +// racks and servers for as long as a given universe persists. +//----------------------------------------------------------------------------- +// NOTE: for GID parsing/rendering and other utils, see gid.h +typedef uint64 GID_t; + +const GID_t k_GIDNil = 0xffffffffffffffffull; + +// For convenience, we define a number of types that are just new names for GIDs +typedef uint64 JobID_t; // Each Job has a unique ID +typedef GID_t TxnID_t; // Each financial transaction has a unique ID + +const GID_t k_TxnIDNil = k_GIDNil; +const GID_t k_TxnIDUnknown = 0; + +const JobID_t k_JobIDNil = 0xffffffffffffffffull; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 PackageId_t; +const PackageId_t k_uPackageIdFreeSub = 0x0; +const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; + +typedef uint32 BundleId_t; +const BundleId_t k_uBundleIdInvalid = 0; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 AppId_t; +const AppId_t k_uAppIdInvalid = 0x0; + +typedef uint64 AssetClassId_t; +const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; + +typedef uint32 PhysicalItemId_t; +const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; + + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. AppIds and DepotIDs also presently +// share the same namespace, but since we'd like to change that in the future +// I've defined it seperately here. +typedef uint32 DepotId_t; +const DepotId_t k_uDepotIdInvalid = 0x0; + +// RTime32 +// We use this 32 bit time representing real world time. +// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +typedef uint32 RTime32; + +typedef uint32 CellID_t; +const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; + +// handle to a Steam API call +typedef uint64 SteamAPICall_t; +const SteamAPICall_t k_uAPICallInvalid = 0x0; + +typedef uint32 AccountID_t; + +typedef uint32 PartnerId_t; +const PartnerId_t k_uPartnerIdInvalid = 0; + +// ID for a depot content manifest +typedef uint64 ManifestId_t; +const ManifestId_t k_uManifestIdInvalid = 0; + + + +#endif // STEAMTYPES_H diff --git a/lib/osx/include/steam/steamuniverse.h b/lib/osx/include/steam/steamuniverse.h new file mode 100644 index 0000000..dd384dc --- /dev/null +++ b/lib/osx/include/steam/steamuniverse.h @@ -0,0 +1,27 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMUNIVERSE_H +#define STEAMUNIVERSE_H +#ifdef _WIN32 +#pragma once +#endif + + +// Steam universes. Each universe is a self-contained Steam instance. +enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + // k_EUniverseRC = 5, // no such universe anymore + k_EUniverseMax +}; + + +#endif // STEAMUNIVERSE_H diff --git a/lib/osx/include/vorbis/codec.h b/lib/osx/include/vorbis/codec.h new file mode 100644 index 0000000..999aa33 --- /dev/null +++ b/lib/osx/include/vorbis/codec.h @@ -0,0 +1,243 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +#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/lib/osx/include/vorbis/vorbisenc.h b/lib/osx/include/vorbis/vorbisenc.h new file mode 100644 index 0000000..02332b5 --- /dev/null +++ b/lib/osx/include/vorbis/vorbisenc.h @@ -0,0 +1,436 @@ +/******************************************************************** + * * + * 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: vorbis encode-engine setup + last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +/** \file + * Libvorbisenc is a convenient API for setting up an encoding + * environment using libvorbis. Libvorbisenc encapsulates the + * actions needed to set up the encoder properly. + */ + +#ifndef _OV_ENC_H_ +#define _OV_ENC_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include "codec.h" + +/** + * This is the primary function within libvorbisenc for setting up managed + * bitrate modes. + * + * Before this function is called, the \ref vorbis_info + * struct should be initialized by using vorbis_info_init() from the libvorbis + * API. After encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_init(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step bitrate-managed encode + * setup. It functions similarly to the one-step setup performed by \ref + * vorbis_encode_init but allows an application to make further encode setup + * tweaks using \ref vorbis_encode_ctl before finally calling \ref + * vorbis_encode_setup_init to complete the setup process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_setup_managed(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step variable bitrate + * (quality-based) encode setup. It functions similarly to the one-step setup + * performed by \ref vorbis_encode_init_vbr() but allows an application to + * make further encode setup tweaks using \ref vorbis_encode_ctl() before + * finally calling \ref vorbis_encode_setup_init to complete the setup + * process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using \ref vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_setup_vbr(vorbis_info *vi, + long channels, + long rate, + + float quality + ); + +/** + * This is the primary function within libvorbisenc for setting up variable + * bitrate ("quality" based) modes. + * + * + * Before this function is called, the vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * + * \return Zero for success, or a negative number for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_init_vbr(vorbis_info *vi, + long channels, + long rate, + + float base_quality + ); + +/** + * This function performs the last stage of three-step encoding setup, as + * described in the API overview under managed bitrate modes. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API, one of + * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to + * initialize the high-level encoding setup, and \ref vorbis_encode_ctl() + * called if necessary to make encoding setup changes. + * vorbis_encode_setup_init() finalizes the highlevel encoding structure into + * a complete encoding setup after which the application may make no further + * setup changes. + * + * After encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * + * \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first + * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to + * initialize the high-level encoding setup + * + */ +extern int vorbis_encode_setup_init(vorbis_info *vi); + +/** + * This function implements a generic interface to miscellaneous encoder + * settings similar to the classic UNIX 'ioctl()' system call. Applications + * may use vorbis_encode_ctl() to query or set bitrate management or quality + * mode details by using one of several \e request arguments detailed below. + * vorbis_encode_ctl() must be called after one of + * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used + * to modify settings, \ref vorbis_encode_ctl() must be called before \ref + * vorbis_encode_setup_init(). + * + * \param vi Pointer to an initialized vorbis_info struct. + * + * \param number Specifies the desired action; See \ref encctlcodes "the list + * of available requests". + * + * \param arg void * pointing to a data structure matching the request + * argument. + * + * \retval 0 Success. Any further return information (such as the result of a + * query) is placed into the storage pointed to by *arg. + * + * \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after + * calling vorbis_encode_setup_init(). + * + * \retval OV_EIMPL Unimplemented or unknown request + */ +extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); + +/** + * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl() + * with the \ref ovectl_ratemanage2_arg struct and \ref + * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code. + * + * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl() + * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref + * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. +*/ +struct ovectl_ratemanage_arg { + int management_active; /**< nonzero if bitrate management is active*/ +/** hard lower limit (in kilobits per second) below which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_min; +/** hard upper limit (in kilobits per second) above which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_max; +/** the window period (in seconds) used to regulate the hard bitrate minimum + and maximum*/ + double bitrate_hard_window; +/** soft lower limit (in kilobits per second) below which the average bitrate + tracker will start nudging the bitrate higher.*/ + long bitrate_av_lo; +/** soft upper limit (in kilobits per second) above which the average bitrate + tracker will start nudging the bitrate lower.*/ + long bitrate_av_hi; +/** the window period (in seconds) used to regulate the average bitrate + minimum and maximum.*/ + double bitrate_av_window; +/** Regulates the relative centering of the average and hard windows; in + libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but + followed the average window regulation. In libvorbis 1.1 a bit-reservoir + interface replaces the old windowing interface; the older windowing + interface is simulated and this field has no effect.*/ + double bitrate_av_window_center; +}; + +/** + * \name struct ovectl_ratemanage2_arg + * + * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and + * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. + * +*/ +struct ovectl_ratemanage2_arg { + int management_active; /**< nonzero if bitrate management is active */ +/** Lower allowed bitrate limit in kilobits per second */ + long bitrate_limit_min_kbps; +/** Upper allowed bitrate limit in kilobits per second */ + long bitrate_limit_max_kbps; + long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */ +/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0 + * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0 + * buffers against future sudden drops in instantaneous bitrate. Default is + * 0.1 + */ + double bitrate_limit_reservoir_bias; +/** Average bitrate setting in kilobits per second */ + long bitrate_average_kbps; +/** Slew rate limit setting for average bitrate adjustment; sets the minimum + * time in seconds the bitrate tracker may swing from one extreme to the + * other when boosting or damping average bitrate. + */ + double bitrate_average_damping; +}; + + +/** + * \name vorbis_encode_ctl() codes + * + * \anchor encctlcodes + * + * These values are passed as the \c number parameter of vorbis_encode_ctl(). + * The type of the referent of that function's \c arg pointer depends on these + * codes. + */ +/*@{*/ + +/** + * Query the current encoder bitrate management setting. + * + *Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to query the current encoder bitrate management setting. Also used to + * initialize fields of an ovectl_ratemanage2_arg structure for use with + * \ref OV_ECTL_RATEMANAGE2_SET. + */ +#define OV_ECTL_RATEMANAGE2_GET 0x14 + +/** + * Set the current encoder bitrate management settings. + * + * Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to set the current encoder bitrate management settings to the values + * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable + * bitrate management. +*/ +#define OV_ECTL_RATEMANAGE2_SET 0x15 + +/** + * Returns the current encoder hard-lowpass setting (kHz) in the double + * pointed to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_GET 0x20 + +/** + * Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid + * lowpass settings range from 2 to 99. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_SET 0x21 + +/** + * Returns the current encoder impulse block setting in the double pointed + * to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_IBLOCK_GET 0x30 + +/** + * Sets the impulse block bias to the the value pointed to by arg. + * + * Argument: <tt>double *</tt> + * + * Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will + * direct to encoder to use more bits when incoding short blocks that contain + * strong impulses, thus improving the accuracy of impulse encoding. + */ +#define OV_ECTL_IBLOCK_SET 0x31 + +/** + * Returns the current encoder coupling setting in the int pointed + * to by arg. + * + * Argument: <tt>int *</tt> +*/ +#define OV_ECTL_COUPLING_GET 0x40 + +/** + * Enables/disables channel coupling in multichannel encoding according to arg. + * + * Argument: <tt>int *</tt> + * + * Zero disables channel coupling for multichannel inputs, nonzer enables + * channel coupling. Setting has no effect on monophonic encoding or + * multichannel counts that do not offer coupling. At present, coupling is + * available for stereo and 5.1 encoding. + */ +#define OV_ECTL_COUPLING_SET 0x41 + + /* deprecated rate management supported only for compatibility */ + +/** + * Old interface to querying bitrate management settings. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_GET 0x10 +/** + * Old interface to modifying bitrate management settings. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_SET 0x11 +/** + * Old interface to setting average-bitrate encoding mode. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_AVG 0x12 +/** + * Old interface to setting bounded-bitrate encoding modes. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_HARD 0x13 + +/*@}*/ + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/lib/osx/include/vorbis/vorbisfile.h b/lib/osx/include/vorbis/vorbisfile.h new file mode 100644 index 0000000..9271331 --- /dev/null +++ b/lib/osx/include/vorbis/vorbisfile.h @@ -0,0 +1,206 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ + +#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/lib/osx/include/zconf.h b/lib/osx/include/zconf.h new file mode 100644 index 0000000..996fff2 --- /dev/null +++ b/lib/osx/include/zconf.h @@ -0,0 +1,511 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2013 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzvprintf z_gzvprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateGetDictionary z_inflateGetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include <windows.h> + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include <limits.h> +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include <sys/types.h> /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include <stdarg.h> /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include <stddef.h> /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include <unixio.h> /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/lib/osx/include/zlib.h b/lib/osx/include/zlib.h new file mode 100644 index 0000000..3e0c767 --- /dev/null +++ b/lib/osx/include/zlib.h @@ -0,0 +1,1768 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.8, April 28th, 2013 + + Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + + 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. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.8" +#define ZLIB_VERNUM 0x1280 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 8 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, + z_const unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, + const char *format, + va_list va)); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/lib/osx/libGLEW.a b/lib/osx/libGLEW.a new file mode 100644 index 0000000000000000000000000000000000000000..e8689d838ac46a02f1aa3e7fd8b92a7b5bdc47c5 GIT binary patch literal 725456 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≷7U! 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%0DACIc2`&7W$+@~<={<%=s&xpEy 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 literal 0 HcmV?d00001 diff --git a/lib/osx/libSDL2.a b/lib/osx/libSDL2.a new file mode 100644 index 0000000000000000000000000000000000000000..14be572a5ac688d763747da143b6f0ab392db3fc GIT binary patch literal 1418152 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 z%0D3Amb@j(3y@DG{{-c~kgrQ#1LYVvM*eyqv<LniC4Q#;6Xp7-zl{7Y%4flUA-{&Q z9NbHO4&_&<|2y)dC^yFbEFs^G@_gjClW#)VfV_#^fU+KZ8Tmq#=YXrpr=y$>KAC(R z%J<QK8Tk;DgJ}Oi@_r~k0q2u<MR`2@9mrdwd=7aA`KKs*!5fg*MtLpzOCf*z3;eDR z@-I=U`S}cG4|tgTKFVjnZ<Aj~`2x6){36OO@H6BmQ2q|wPQDN2Q{X$vx1#I@H<K5l zd>niQ`4W^*f@{cUp?n^ED)~f|o#5Hz!%@BjK8Sn(%BR5v<ULS63*MQ$9m>1GndE6G z?*VT_UJvE3F`tvktDw9K`8Rt9^YaDDJmkyCe@FQf%;#UpZ=&28c|Z9Tl<OmZp8OQb zJ&<>hA4Itk@_Wd?LAg7)g?uf_Jn&WI%TZ28{dwebQBFaA2Kf|}%aNCpk3{(}_)zjM zQ9cANB=3##CGc+K9Z{YM&LVG)^5<xO6Y_>A)4-|Z)llvQ|GWHPe!fDv3Gxy0$0+lW ze?Wc*<)+A&l3ztxfcz!$vnV%5-bsE0<vz&oC*Or~GvtfNH=x`F`PJkrQEq^|mV7?S zbnw~a(@^dUzk+-W$}N!pihMB2-H;cNr=#2*yeD}VlzW1+$y=dp!SS&fd1I6}gVV@s zqWlH?N#y_Rh2OydkD|oSv`<iOi2gq$zlSmx`2hJ(C_noD2s;xvo9h4npOEYcNlA`< zNS2E1u6@Wd4B3i1W-c?C%`6O(OV&_AvXm}uQc9(0lhUG6DHZKEZCaET(f)sZ?&mpU z?#K7{_@D3coacFe_Rr^h&bimjy(;fDe2@5@{2Bal@hAC1_<iCp@(8|GJX7VZz?X=} z6rYFB5`UFX#dE}pN}rCWh~Fzd22U2ds=Wj8K4KSnH~b2*jq<m_n~Rm?4e`2SJ$Ws> zs(6vSJpNxNea46Uq-e(HXR($1JNyf=g8XCrJ@FFxoA@i@S@PZZlj45)qxb{jB=zTR z{0{MU`D*-Tv5L|!!sm#U<umYnv86l{4;feg$KfNzi{(jpf3bzUC*E1STlHOzUm^w+ zZ;IC!&z9H0&k<XwzDjsm@e;-V?r6v7xOlPRKjPnrz2s5+1Mz<OJNWBjC*^+;e^zWJ ze*%A4+@kcG@r`0<#n<60#Rt^>rTBbti~M?gnmA9Mi)V=Q<rDC+;sW__e31B+yf5Be z{9W~Tz}t$A<t^|=;#q3Xh4{H*BgL!XXNlz%_wYYD=x>x1|3x(G>3gw);$PyQh(}ca z`}kYpNu}S5KQC5N`ls;6#2*!Z5Wh!UF5iIPCSI=e%kjnH8pY@0GsTLE7vNdqW2%25 zK3-fRAB7JUZ;}tddx_(ezYE?@94l{yHxsXx`}q0dHS!vGWid})4*%y0{hqk|chQW` zPhyVz2>!X4CI1jVAYLoqhrcAI%6H*A#8L8X`2FHY`6hh5c$It=zDyh;Ux3dRhs%rb zDPpqxT0B)8EWa8bAr6rb#`}qb<N>^+I8c5mezCY*-WabZ&XU*0&lU^i74S2}>*as8 zx8w7xI8FWo{*^da{waP?Tp-_%zbej?zkok2&X;e;w~9B&@5S#FljLjgTg0LA8}S>& zW%BFrLUDpT8=oZJBoE@F#WeXa{7P}Dyf@xeOp&+8TZ?n#33vl>w)_ITrZ`nz1wT`~ zPX2E@J3c4Gh4N$gw_;d+82?BtlD~_;Ax@XSj6WydEZ>PgBF>O+!S51h%5TSS6<5e_ z!WW7w<zalfxJsUfPZlT2)9`D=boo{I5OI<`5$_>p$UEVei8sny;!VUQ@{92E#Gt%7 zUQrw`FN6Pexjr*U{+p<y-cfO~{A>I(F<X8Je_I?Qe+}Owj+Q@zKQ3m<AHwewhsh)O zS}`PFfiDpoYCoEX&k}vbr{X!{G{w{L6!8}AKV$G@v9Hn(#QTW-<=yZr#6I#icylpP z-Vm=V_LkSetBU>P<?;V6)8EX=Pl{%IeimO<d%nZJ5ckPH#@`e7%HPCa5nq?@#-9{l zkw1z*AigHQ8^1$*L%tfnS$tIeU4+jOua(ch^TijGJ`)d#FUiN@BgGfxNqBz~SN@)O zXYq0Q<@hCHMBWsyFK&|8!Osy7tGr5hS@8?`-<R6)IWE2<{}KO2JRpzaABZ2x-@#uO zKa{_SKP!G9e*%A4JS5+YZxr8?uftc0@5-0r^TmVm>+xyg`|?~oLws940Us;YmJi1V ziDfn4eev$%d5U+y+lu8BZ-F-wKU4fd{9N%Hc{Thj@ngA%|It>Tb1DBtH0$YmF)IHO z|3o|@e;<EK{8YXde_s4r{uKV0c)t8W{2uX4wQmD{oA|Bb%kjlxJH_YXGsU%v7vNc9 zN5v=N<Hh#!QTR|XLFotJy~L`Dcfs3<%@l8iHxsKU?&If+%@wbKR~D-&UJn1Kjb7g? z{<~<#=O=NM*548QbMaRBhxh@puF~(rUlK2n@4|P87s|Kc_lql(e-pl5yji{qUnbrr zUx3dR>nMK_K1D1qzZOpw^W<0KBgFfZe=y!pY_0wU@Qz}>(qD>SEKZa+#_Ne^%WLCj zi`C>6@H50BmH%gJJ3haPH5C5=|4OVW{}ewcJ|N$ZzbZZ`e*u45d_?7K$F~})z4zjG zif72z;J1hwN`E7MgSbt89bPD=%d_!G;#Soc#7B!y$%o-ridE&k@vh<=<!_I-7U#+n z@CM>+`2~1QF)XiwpDAvT|J%xr&k1pn{22bN_>1a0jDI8^lfR3<A^s|V8GlavS-um0 zMEp&@1;0z&sPb>eZxxrzZ^9Rfcgn-~bn!BcXC6LTY$Z>_uMuxk`B&jX#2b}A5$_>3 zQu<E#W#Yq%x5S%>Kgut{&l7);SH~-gf2jO2_+OXk`9$&GL>={xiVNjm<DZF(<%jUM z#ahb$8ooy?qxL+5KQ8u^KZM^Wo~!f`e63hUz5-t&o*|!y&k~y`|5Q9jY%EX5Q^bFj zehi*0-Yp-9_Yv=qcf+p`Bl0$Qb8(ZrAzoM9Ag_g274MOk$Ny`o_uJ$rMKeA>i*3}N z@9;0g6^eh1zbCGgzlpyh7Rq<yPm0;{NAU;5$|~<}{0_0Xd^LWvSfuoe@Ht|F;xq7k z@h{C!CLR+1k&nYiioWtE;r+!1@}78SvA+Cr{1WkR<!_4D7ynbd4t|cIyb@m4#FhT< zi|zOv7yp(2h<_taSNbUaff$y*gTF4$mcNKUE6$fcfj=x>FW-!B6lcoU;VZ?P<xBDT z;!^qb_%v~uJQvRpm&hmJW5pZg!|_4l0(oD&yEseU0dFhLmAAkfi8shE#LpGy$*bXK ziF4#0{znU4Px4<x9reB!Z<2qBe<CiDzmLBqZkO-HpBHCpe4oM}6W7Zh#P1O&$~WM* ziGRwM<BP?ARNh>CruetK0M8Pyl263PizDQt@S);x`2f6^I8xpPZzqnGx5Ar=*T{YR zd~uk(23}blEiZ@v(_F7F<iCq%e0~!9$&cWli+$uD;s?a5<@@lL#8L8H_zrQLd>ekh zI6%G$UoZBRufms!SIQUQv&Ce25k5s6D8Cj@6$i<$#z%;~<%98l;$V3I?<g*mUy5HW z4v{y;>xqxbYvX5&iSi2g8RAg+p9yw+eif7CKj2@9{pFwH2gS$a`|(%BTjVd`Pm4dv zx8qyIqw;(4JH<EUYw%mdSGAsQ#BUJakza=wiu>i+_$2W?c@Q5hzAYbyUn#yR?~QjA z-;%e-TZ`|?6YvJ&8}bYAn&L<DD)^b=Yw~}a+3`6c9*`fyzZLh%591$+AIRUu-w;2P zzl=X89+L0G9}x>Q9$WCc#Dj|8j^8T2FTV+2D83>O<I~0J%Abc%77r_)hF>GTrTA6& z5b=J+6Y(D6gYr)JW#T${OT38~l3#?MC;l$4j#m`_Qu$@@znbdbr{uqhI_e!2yXpS& zHU62{U496ETYOsSU&Hr^52^fT@W;ii@`v#I#E{ZQ@U>!^d<DKld{RCSpCvvcpNi** zn^j&qo+8eWkHM40<MM%cAF-+Ocf+p`Gv#gY=Hg^|L%gndt-KaqRm_l=$Ny`h_Z#IW zMKeA>i{s_r;a`Z8<R9bji4){+;;)G5^4<88;umV~qxb{jm-4&uJH%9_Uya`^ey#W- ze2#cR@fmo&I7{(NJS1K(ABT?=+iL!j@c!bZ@}78S@m7_0Iev+_THX||FK(09!OsyN zkypaYiZ`gfzZ=`}IWA6<|A>DhZkI>#55!f<{|^4TxI_LT{;arD{sjK8_?hx=#y5(e z%h%y6#mAL?DL!BPRPpQaX<}K$bMXxE3HbzktoW_c561_IQ{{c}?qZ?51Kw7Q%3I)# z#BwU{Li}7YTk&f6S>hDAhyT$?>rwuTXx7vB;$-=k_$OkH{C)f_F;Bi1e_qUzKZQRg z7RVpO?-6t58}Qr2eED*GvG~2(I~SiRexi5*o+Tbvd?G$x{7ya!A1XdCAAt7~ducs& z!P|+u6>o(%6LaN0e!e(GUIVWz?va<n|7oc8r}q3Vn(_HboTBoN;Gc^H@(=L?;zs4) zhrcAQlkdWJh_}nP;rEO8$v5Ha#XIGz@MYq9`2u{lc(1$&pCWFSUyG;0tHnQc{!;N) z{T@v{&VSLs{=UpS(VWi_O~2Z4{(aw`e_qs4Z=twa{Ywx{`kJDSdLPuc=VyrKd`L9s zFXsHdi|qLwqB%cHH04~x`HGxBSkIoHE1Gh$M3cTP=U>0jo_|6#=jVy0oYtJbfb&P{ z+Ve|AQ%<31(qAi<)l0rqyt-)eufD*>7r_}Y6OMz)un)WfwuBeK>aYy_?R;DQxA0SV z0KNpDf)B&H;cB=9&Vo5G4UUF`VK3MYwt)3vEm#r$TgSHZ7(5IQ!hP_0_ypVx?|>`d zJUAUrhS$JhupjIK+rp->F02mEgeT5pT;Zp1KYR)9fcL`<a3!1%XTTho21moeuor9x zo5Ay8W%y5R+rFRR=kNf03GRUR!}V}EoC~MHOqc?%f{CyzYz-U0+OPur^IY4$AK<6( z0DK8P1s{fY!?o}xcmphgS#Saz3H!rt@G_VH>%p^OIrv8{+uk4H7w|p!8hj3Jhxfwu za5<b0XTVH24kp2#@N(D`)`6Aa-!*9;jKX)|i|`4!8Lop%;q@>VPJqK<U)TY*fc0T5 zSRVdW!?x=v{0zPg_rRTS3%nDqf{Woym<1=mk#HdF0o%g_SPz~J%fUa+Vf<hez5`!` zPr%J^9b5{phq-V990>=)Zm<n(2y4Oe@MLw{uJ7Q-@J+Y}?u1+6Cb$YNfJHD1j)y~G zU)TY*fEU7Quq-@zHuDP)!-Mcu_%z%G?}4|$#qfHV3n##lus`e!FM;*pIj}4|Ud^`e z8~8DN8@>#mhTGsha2>oE&Vy57IvfLsz#gzYycqhh1}q1EuWH+Q1bztj!Ci10+yqy_ z1#l+Jg5%*(*bBCU&EWa4GW@5CZO>2eb9eymg-^kU;oWdGTm)ypOgIiE!JhDP*c8@* zmEhl%ZM%MiQTQHw4L$=Of)RKtTnMMb$?zID1onXKVFJ7WR)POkvh6wszk&zht8f>5 z3~q+&;8HjT=ED#i1Bbxgup?{*8^Lp7CHP-O+s@zMxA0SV0Pcm)!bjnK@OF3$TmWan zTsQ#^hy7tU*akL)wO~c~R|VVNqwp|%7rqR4!mV%<Tm=`y>tQYo!7*?M><v4@R<IGQ z1FOO^@WffRy+6Ru;rsA)xEnqWx4_%sO)w1e;3Rl8918ow&ae$^0xy7P!!zLT<!yVv zhf(+*d<{Max5Ink8mQlOGDp4HP_Ip6uHWH_QNL>z;~=Pi3yZmahdRcVumP+I^>6mE zxZc}|@mu&2d;>lQ^&U(t-Cb}ETn6=T6tVa;sQ18Po&xnAf6T9h0oV?<fc0T5SP}kJ z&gMS~^&V!dJiQkhquyhUaTnYM?}2*HG8SJ7^`2GC^<G7c`ZweluYtp0KiCDfg-u~y zSRI}TPv}Ldj(R`9PvHT$7d{0agd5;;I2RVc3^*1h!9MT`*b-g@Yr-?(pJi<Oeu7`Z z58#_{58Mg2!cFitxD?KTQ{iM7gd^Yp*d1ODo5PD>O;`c`bB1mAFYrtFK71WM3m=7d z!_{yJ48uY=366$?VF0#+Ent0E3s!{x#+vEXI|dKKcj2q>X}A?`g15n?a1NXb)8QC6 z1onm<VJp}O+Lv8kJ-bbL^@{X7+_sEY%{*7P5!1!iVo+=)juI~slf;%{qIj_w5L<{H zM9o<>^SqrPCWy^MUu-JY5u1qB#l~U<v61MB4Mp=D-atGi`r;9>z8Dp?2C5wr>xuit z3&p)+U2(T~fw)sVU)(0v5jTtHi4n23xJEozTrSoU7l~R^)xu&8u}C~e%oVGP>EhX9 zP^>17603?yVihq_tSkn^N@54GqS!{%8m*Qfo+bKXd9jXordVApCsq*4ik?_TG|%~G zh{w!xwRlAQ?+o={{8v0AYRy;MFa9m=75@@<i+_qc#Xm&z{C`s1ES?Y};_u=b@wm8L z{7qaW{wjt=T|?E1#Gl1n@tBw{{v-y)AH`APQ87vUK};0C7X#vVVh8bCv5j~{Oc1{j zeer9tj`)>WUDUN&t%CT4=!u8LlX_17Ts$U5#UtWpVpRN8JS2W1?iW86_lh5hyTuR1 zo#F?gd3|w6+$<gxBck?%YHP&z#O30<;v(^Y7#80Vi^R9ZTyejcF1{rO#W%%K;u~U; zxKB(JwZ~Koh_8tq#8<^O;$AU9d`0xdm&H2bOJa5LMX`doN7R437sQi#UGThkOx!J+ z*D245QE``eNYq|dZNK=8xL15y+$}yO?i8OC&Fhz);%0G&7!jWk*NBgc%f;>DBJnXX zENXA8RwO<m=8D_Ibn#&^C_W^P61R#;;)7zM_<$G?w}>6Y`^7fmW-&p$PxQrm#X90W zVs%k_aJ35JU7{y$5>M*&$42p(7!i+%cZyMQgLp{1L)<UkE}GXz>&4yTI&r7CR@^48 z5jTssi4jqIeYG{>t>SWVm1tf!trWxJ3b9DMMa&hKi|OLcVo<zE93?Ijlf<QBqNsaE zwSah|*g;$@wh<SJ3F1Q07Z-?i#Q9=%ah_N~yg~HDx#CH^&Y2?~6T{*Wakdy0uNM!A zv&8-4b>d!ernp<2A?_5Xi`&E^akDs0jEGakHDaN-Tr3b5iTPq!%oB^mDPpdeE2fJ% zVo=N$M~PWtl9(wbij&2Fc&*q$%n;j%>0*L7N%X~uVjVFgRu|L63Sz40i4(+=di|6l zn%8$h@rXEHjEdvLL*g~!e(`E?uQ*oREsha)ilfDC;waI)?i(pa#H++L;s|lMI9yyL zCW~Qlm{=qZ6?4TTF<l%Y2F1bRC~=UOBn}i4#Vf^tI6&+m_7~fTiDH7-PxQsUVjZ!M zSY7NbRuFrMp4d}7sn=sY#A9MWJR)`%qhdGlkl0n+FLn{l>&MRGZn2ZNQ|u^i6FZ2T z#Vf>!*j`*CwiB0&my3(U%fzsFsaPbo6?4TlV!GH`42rG9QQ{?HlGsvA6fYJ7Vhgc@ z*j#KQCWr}QGtn2Digm;$Vs){xSV3$gdSXNIq+Z`O5RZwzctor(M#YQ7Lt;H~zj&dz zSF9`U7B3LZ>(leaZDJj9vv{5u5o?QU#B;^vVl8ozSW^s(HN+zE95Gj{E~blTi$SrP zI7+N4CW%$VM6t3M5G#ot#EN1Yv4WT&o+bKXd9jXordVApCsq*4ik?_TJgEn<GsI)& zflNFi{->&=qMjkE9TNW$_ltjvd&R#*^E&rWai{o)xJ^7MZWd375%G6%jd)yKF8(Gi z5`PuL;xA&6__LTR9uw2WpTwZ}qc}=DDkh0Ph>7C&VnF;(>>z$Cwh@nr3F0@RFMci7 z5x)|vi(iTr#4kio)H89llX@Ncxp+*BiburHMDu$2Q}K}aiMU_<SllaqB<>bJ6nBar zh}*<N;%4!n7!ltW*NE?l%SAnVS6d_=5X0g-Vv+c^m@DoV)5W*Mp!lXZN_<0168DLT z;_G5Sd`;{izACm6_lgPPE21yHEY=ZU603_ZiWS5?q9?u}p498x=fz{<Zt;ltoEQ~% ziHF2z#r@(l;$Bg&8LH{uyuGJH{qBPIq_|DoDeB*fy&Ymid_pv@(;pX?i`&IT;$vc1 zd{itF9}#oKZDP9kuox5{5=V(!#U$}TF;RR#42WCA4&wb{8*#IkAl@hX;=N)W@gA|d zc(+(Vyi4>%z1FFAvYhV!;xREI9ue;p^*ayV22sBY<=r9f7jGB$itEMQ;yQ7sxK=c; z_t%J<MZI>a77<sAYs6c{<>D%Fk+@O}iz~z;@fI;xTrQ@IH;X~>CUKOwOiU7&iizS9 zF(BS3b`TefZNx=lg1Auh#RXy=alTkxoF`TgZxB6ku6VMn?*HO3F)SVtXNytsdhw7r zOWZGBCz|&SW{SJT8RAZHy0}d&5;u#}#E3XmTq72W%f$k5k(e)r#XPY{oFe9mxnjDQ zBL>B6ag>-PCW)D1qBvO$h}Vi8#0;^Gm@X!WlSE&fDAo}}Vs$Z1tRSX}o;X1~Sw{DN z@t7DCkBH;Ns5nkMBwi!#7q1rgietsy;uz7qFELu&CXNy}izCH|c$K(D93d_jhl`8E zWHBrb6N|*5Vy>7Zri(+wpg33@B@Pmk#DQX>c%>K+2Z$ZS{$d+3QA`l~iN4rZtRwaj ztBbwG3SuwO6MKp$&(Qr}JSGOjBVu<kDs~eOiCxA0Vi$3**jd~yb`p1r9mQ>82XV7_ zg%}ari)+Mo;&SnFaglhL7#1%Ti^R5KuGmIQ7h8)#v6VPVyhKbATZ)O|#bQ8gA$Aa( zi*3XNF+pr5`eIYDj@U%3E;be`h>b)~Y$%@ebpIERiN1J5tS?5zi^M}>J#oKyp}1G9 zEAAFA5O<2_i`&FH;%4zYF(TF$*NEqe%f(vaBC)0z7Hfz_;yGfjSY1pP&lZDXHT`## zSXE3CtB8qWWicRD5<7?$#WrFEF+n^_^u_XG9q~+2Wt&UBn$no1ucFQEUg?&`Sl(<d z^77Fomb+mDhG7r}pbtG5y^;Jd0>dx}1JH*aj4mcWjKDAq!T|K42cwI~4<j%PgD?Pn z=)veh^1}!W!ypVmA9^slfc!85!!QT~(1#w3&L=;Nz%UHL0Q8{;qw~lQBQOkuFaUk% z!RQU-hY=WtK^TBO^k8%@`C$ZxVGstO4?P&2Lw*>6VHkt~=tB=i!{mn%7=}R@fIjqK zR5!mfbRF!55g3L+7=S+XU{p8FSbi9RVHkt~=tB=ib+e7-hY=WtK^TBO^k7ss=~#Xk zfngYg0q8>yMs;(K<%ba%hCvvBKJ;Kz4+XLOFapCc2m{cE9*pW?B9<RUU>F8r0Q%5_ zQEjNP{4fH;FbD(ChaQaT;U$(IMqn5QVF3EjgHb*7#PY)k48tG{Kp%QAs)wamei(sa z7=!`nLk~vvkQK`hBQOkuFaUk%!Kfb2V)<bNhG7r}pbtG5)k9q@Ka9XI48j2Pp$DUS z7>wnI5g3L+7=S+XU^JKfFapCc2m{cE9*pLYA4Xsp24MjD(1X!z^1}!W!ypVmA9^sF zMSd88VHkt~=tB=iGszDlFbsn*0Db5|^Zf>~@rMx@hCvvBKJ;MpTJpmP48tG{Kp%QA znn8XTfngYg0q8>yM$^d;BQOkuFaUk%!RRFN!w3w+APhhsdN4YX{4fH;FbD(ChaQZE z$PXhh41+KLedxhx8u?)ahG7r}pbtG5O(j2!z%UHL0Q8{;qZ7yvBQOkuFaUk%!DtHk zVFZR@5C)(RJs1s=A4Xsp24MjD(1X$O<cAR$hCvvBKJ;L89Qk1chG7r}pbtG5y@vcS z0>dx}1JH*aj9yKC7=d9JgaPP74@Sq5A4Xsp24MjD(1X!2<cAR$hCvvBKJ;L8H2Gl! zhG7r}pbtG59YuZ^fngYg0q8>yMn{q#Mqn5QVF3EjgVC$V4<j%PgD?Pn=)vd+^1}!W z!ypVmA9^r4ocu5X!!QT~(1#w3CX*jVU>F8r0Q%5_(P89=5g3L+7=S+XV00+?VFZR@ z5C)(RJs3?QKa9XI48j2Pp$DTw$PXhh41+KLedxjHVDiHV48tG{Kp%QAI*9x*0>dx} z1JH*aj1D9}jKDAq!T|K42cuV#A4Xsp24MjD(1Xzd<cAR$hCvvBKJ;L;Klxz<hG7r} zpbtG5O(Z{zz%UHL0Q8{;qy5MaBQOkuFaUk%!DwId!w3w+APhhsdNA6D{4fH;FbD(C zhaQafCO?e8Fbu)~^q~i%y~qzEFbsn*0Db7eXixIP2n@p@3_u@xFxrFsFapCc2m{cE z9*hRa4<j%PgD?Pn=)q`r^1}!W!ypVmA9^s_jr=eI!!QT~(1#w3b|pWIz%UHL0Q8{; zqg}`kBQOkuFaUk%!Dwgl!w3w+APhhsdNA6F{4fH;FbD(ChaQY}BtMM6Fbu)~^q~i% z9mo$OFbsn*0Db7e=oRFL5g3L+7=S+XV6;8?VFZR@5C)(RJs53Aei(t~^YqTp`%*y| zfIjqK^m6h;^Eq@TUl;~q0Q%5_(aXpWBQOkuFaUk%LG!t1roP=U0>dx}1JH*ajJ72| zjKDAq!T|K42cvDs4<j%PgD?Pn=)q`f^1}!W!ypVmA9^s_iu^DF!!QT~(1#w3UP69o zK1V1ve=rCG(1#w3wj@7{z%UHL0Q8{;&F9v{<_|_-7zSYg`p|>X7UYK!7=}R@fIjqK zv^n`<1cqS{2A~f;7)>BQjKDAq!T|K42cyl%4<j%PgD?Pn=)q`H@<a1E5V84#K^TBO z^kB3J`C$ZxVGstO4?So;cOW)@FapCc2m{cE9*j03Ka9XI48j2Pp$DT4$qyqi41+KL zedxhx1M<TN48tG{Kp%QA>XRQvU>F8r0Q%5_(fZ_v5g3L+7=S+XVDuvL!w3w+APhhs zdN5j#{4fH;FbD(ChaQYxNPZZBVHkt~=tB=i>yjTvU>F8r0Q%5_(F@2ABQOkuFaUk% z!RYzqhY=WtK^TBO^kB3O`C$ZxVGstO4?P$?kNhwK!!QT~(1#w3)+RrUz%UHL0Q8{; zqvw(zMqn5QVF3EjgV9>#hY=WtK^TBO^q~3s;xo+s8%AIl24MjD(1Xz$<cAR$hCvvB zKJ;Mp9P+~m48tG{Kp%QATAlnb0>dx}1JH*ajGj$?7=d9JgaPP74@RqzA4Xsp24MjD z(1X#c<cAR$hCvvBKJ;L;3i)9KhG7r}pbtG5txSFxfngYg0q8>yMk|pYMqn5QVF3Ej zgVBoQhY=WtK^TBO^kB3C`C$ZxVGstO4?P$?i~KMG!!QT~(1#w3mM1@qz%UHL0Q8{; zqi2#IMqn5QVF3EjgVA#2hY=WtK^TBO^kB3s`C$ZxVGstO4?P$yLw*>6VHkt~=tB=i zwfV&M9~gmQ7=!`nLk~th^1}!W!ypVm9}1?3^7R_%mtxeGHMf~F`dz_pas?Xou>Qh2 z>#wi2UNq2p{hrp-ldXS-4<){_myMV0W8<m4t&hT+i01f)`o6)R7+}-i-`B>6j<i0x zpY`E`t+!0H{`ny5-{a%QS%0X%jaN#sei%=?)cRSf#~fGcyy<U4ybazJFH8DS_|I)^ z`h2{y+G+CNfM29>F#Zg_wvF}A@oD(ac=;=B{0z|?4e*QbAC%6N*BSpcXnhnu;4<q= z@k0C&yf)+UCLZZ()BlQR;>|Q~=2(Ca#Furn=`-*zx?7))*I|5C;d>aLNATUGe;)r* z>%#QsZQOi+j`82|>Q`AmNAqfqTSr^J9Dk<0_3Q9M_)`2Dtus^JefW>$e*vEmwDGU- zJ@_SBSLQerwDAG>YqWO_z8!xYH=p-!>iZF|Mg8rE#ESFYrvAS8U*u20A0<8oFC_m` zyvi6`{_VK=oMKbo4*Y%mUHmuvOZ-XJ+i&<=qRC$_$+qwL3D#@jKe1jK<0r@4_~rQV zORV?CN2FLEj`vElo`#pl3-G=8JbV<s3OE10Y1(%;{v`XucKj{;McjO!m`VRG{>v5C zf5Izuu>K$3hV|KRsO|qfq@RFaLwr8oko*z6FY!J2`FIrX-`dvq4_-*T;V{NKVB_8K zPw+Iny{-e(pT&4x{2}}h?LB}GQ9UO8N&Fe&b+s>><6B+lCf*+3kN3rI(RE<rlko!9 z!y-JJ_*VQ-51alq{PT;ge}%8rK5fb~|Gs99>qc0wi@$k|^$vJP+A{*LNPqHh^Zm4@ zyk+=a#^Vm$e7}>4KZW<h-@`xZWaEG0$H`w`?J~zB+>g58pW!3%EZp?N95vNXQ{P6s zNaY&eg?~l;AK|rW|4H0@KbJ{gPy3uXDze}9#IF=hd>DR!@yx=nVEh*07q_(O@50~Z z`rVB$q5l2&6U3vq`S&eT-#_>e`gg%d+rG}M|10ptjNfqFe15LUKLy`H|8K(0_q3b% z1Ng6(S>KOedAarDcq_d5C|iGZ{2Kfn^3TQBwzv83!;=`VeRw2b<3Hn{Gaj|I@0#Of z{4%@}_uC}=IPK5E&G$x_{@jRv)q?u*z1;sl#mh22f8js1vFTfDUpI&OUIbI#aC{^4 zF$JH8--Da)FEZ&rz|HrI8UGfq$a?q#f0FU2HP+Vmf!3i(-x}Y*^*#_EiBH0><och7 zH^!gEkFy>>#4C{h1iq}Zt*@5G(Hw1PZ(DqS2OA%ZS0_Fh&tZNR;jP&p*5Ln={xSS& z*25wED9>~M;48SE+pFE?xSaJq7H`k^7U3^b-y+=X>t_7!!N0^G$7gCCoA`b_pY`!Q z{ww2OUe}>HcH#~21iTx5J3bn(!Tn__-bD8`Q{Mu-74g;hLav{C@u950J$O6D;{g5? z*Vi$83(vPz^&DW12=PntFB5G2L+}UjYw^AKGQ3|Gn|?FCC1`yozKHsM!YAUjl+GM0 z8PATvn0jR|w)y+x_3>=HF7tU0KB;)V@VoF2@lUya{=?^M-!S8QS&A1s%syj$FmApt z)c82ueDA06hw!2JVZ0pv4_+6)K-Y~qzV2%Cx4@SW?}Wce++3&TxQG7c;Wy!P@dEr# z+<YFsY2Pz=5BvlCk>NJ}JH8S>C)L*XHv3;I{7L*u+<YI1DL);L;LGsdtk*4gfv!uF z{uO*Ieh}X<z{Y>W4^ZAYdTunw*TwC@Zy=tGU(NNi5MRiCv8mYgy3y4C3w}QPM~9Ft z|Fd>Bo{XF4N|QbpH_xrcm*9gtTHl86ApR}>y~fp~FF(<iUrYTm-W@+kd?EfH{sz9P zmrY-9lFk1B?eACYy={CX{$gM2*WvfDA8f?i(7*TaJg%3D>9+jxj9*VYlm6X^zeIiO z@SGmDzGv~)c-ahF-j(<jcx`+*{x#)I!8ho2l^LJa_;>8rui;OOvGE$$+VaE1ufWIZ zK4kLG#%JO?@sIGI@xSoelWlqD=)P_8cg8QpgZP<TAM^1s_%8fy+EXplmiGkS4`0f9 zPs6KUX6u`SoA2u~_1}vx8Df18z7;=#*KA|s7iZb}%=ZwP{7Lw3=D!d>iLb*C=sD1& ze-8f%{}pf4-Nu_`+wyziIryvWk2~<A_{aGAo;Lp(IX3@0wC^H(IO}g1{vG4F0B_O7 z=6@5PO#92^+VVzspnZ5h*7sO^D)BJ>PIH@nJKnpc^`m$O`^A7Mw)~}SZF~j3j`@5T z|07`I`|xhG|6APr{-GJ)dU>|I^^9*Pd~SamACFJO=i!5bHhw>D?t`YhC-H9VC-37K z_^<eCyn4Q^f4=rTlm8O@QG5WthxC*1WB5G0Ild7ehQEx@#=pn2DZhFF{m0wk50ZWi z{sBH4-*Jg;@7=}u@n7&ahuiqsg|_@O)?Y7t`Zya;$2Z~g@n!fHJY%Fy{}z5}E9*bt z=6jgT_*I;0>odPsVZ1AT8Tad{_}!P<_$_!}_OA!=RXuF{75o9Nufw?c9zIk4Klpd7 z-?r0i{ne9fJcOU!%lcaU`+nBn!2c!xclf34ZTzAlTi$=9ABNX#VdFV?0)7|XkNgMm z?OgAbr`z)SGF}PzQ;bg^+<Z^C>E8r=F8!a4ug34jN0I(j{GIVO|Bv`{xcR#)b8N+j z;raLid>#H2z5xFb-*u%ezu`<<Ud6%IyW{44XVd<x@wNDJ{1E;k{sMjy?>E-wZ+V?9 z|7*r?DE=ot6>r4+Zoxa_Z{e>EvgMVXWy?F-(RvsB66SXto|tIkVZ1Ka=O(<#02_ZB zH}A`v{{D*pNBIq}xAmQ%{@!?lt~UKdyn1)*i||PUt#852_gtCs_u-e*zQ6G9)Zb{f zt*<Wg(Fgyrwaq^XpF{e^_@BdU{2{zD>+^N|A=*<jY|C%X{0zjaF@Nju>co%W`?(&^ zoMZE!7-Q>efq#tm!&d}tJPn_LFUB)cZ2Vcg2iM<Wd<<TDuB~r9?dgm^jThi`ueRlF z#XIBg;K`$H`~+TrUwDHp-+X_pnV%lG`950X6Y+KQZwYR`uh+z%!v}Y={wtnJyvICS z{>lzEUWhMa|9c3ZihqNbVZO}Y37g}QYi$0}_$qt_UZ;<ZzmB)L%K9<9#{}zD7ufO= z@OrrUUMJI^PWUC`tdGF^;4|>{thd|nrI*?C_u(n{3;0Wn&u{pwfK6X+p>5Ar=DQaD z4&E4lp@&W19lsx+g5TH0#+TwPn6KOMH@Kd6;K80Y{k!<*eXak2|AE(DWZQQg>6_wP zDX%@=kpA?=TQi?2_=jz6`PbwBb+>*KUc~)o18)9K#LUM-_$&19ReTcu1KwnmO@G#6 z+uj~{N4yMvHU8O1n|?OF>tgGV;OmLMi9d_~ikt6`Htnl(qphzU&oAxp7ZYv#27F$M z^$30k{wzMFvyC6ZQ(3>q@!9wVOKg2L`q}hX;9bXCzZxHfFUJ#@&&Tn8__ugE`)$3Y zw)`9Lp?JR`w*2{c2L2>o7C(wN!5b{I<<;SO9f9B2(v~*^zk%_)4IhGU$NwSy+xYp! zf5grAPMZ0se3PxOCgY!gkL7w8gipt>#ka6OEyT}a{GP@e;!(T`>;E7861>^Xw*KM0 zY<qg+1^6sHhyFZ)4`qA~;Nt=|{}*^S{8#*m<~Ck-xvlRg?f3CD#Jl3}Ty4`2!p9_8 zzZRc{FT>Zhvhi*BeO$k9;G1awFZdYJm$}8Z=hzUNzXm>Tfc3uk^>_-thw`T2*HPY0 zc=y3J{{wiHp!Lu2m$-h)t+4ff$$ZtqfA3+_H^#fOpIwgUGyX&Iw`gBBzGINhe+xc_ z_4OET{@vNEzxVJ5hgm;?Ki=AUjg_{2bB9{*i?>R%J{j-R+xkrW3(DV$FC)GeKgjz3 z0`J8B@+*D?{b{kv*8ddoe)yO81pF)Z*ID@U)E~invA&MrDR_-rZTWw)pI?EecDMZ* zj#p+sosPG{H{ci3zo+rX*#C~=JKEXuYOJ>P9cDg8;gj)u@$2g-eK|dUeyvH;QP{-# zUfg_tkUqc8TU^$bR|&tRy!E%wvGEG$S}&?-ePbo-hc2|f1Mik#eO5Iaf2FDQH>`S} zrdhuiH{S<g>i-B|b(ZxP@b`$Hz_+MBCOwy*H=Xp`iSHr(xA<+O=W)o(#McvlSp78R zna>?E#|*p?zLx$xf!D2R(>JJW)7QJm`ZXFib3Adj^-s!JpQmv#<!@EF<}ly?Vtg~{ zx8wQ@;@GjGk&QRR8=h%BnelB;`_1P{nxh^4ABTUZxi;lz;yoz;McO~Bij5!Fd2^hk zz7Ozm%<nh2`JN9`-dLSCM@Z|(_@$I@J`dRVAmaMW=a@f$k8f=KPz{^E%6Znm##>Qe z{slIEq_&OE!6&l*9%sB)*0=G)lz*?*t*O7K+F_0vq~AmOAnnT_eL3<UCtij2mDRYI z<787?o;7`j7v=X*yUekg^6w-6JG6HQ@!OTgw5NT;SaR=buBY2njyaAqe|NGT)+((@ z|4%I&pUZrWr2oSi@2-sZ5z-%|KLOg)n(J*A{X0tBeD9hmzcKM$%+J4?2XmP3(KPX` z)c<&O>-E)6bG(7q!l$SmCVd|Lf0yw+!g@8o-)`cM(cfPxST9TYos`eS&%w>UVf-G_ zU#@X6-UR=axcR&|bKFRMx6;4CqDlWC<Fk$Z=u`YsuHQxUe=zg?8|!Z=@ds3fIRcDd zC(`%eddj2!7vuZ!1I*8rc$oUr@N-DN8vmT}UxGIv{YLyc#-|;Ak!bq&6#kytXuJhJ zk@1>^oA049@e}xD%D)OPFPiwnxcOXv<1gVY=zk*pe~$VB#PhT+P5Q5xkE)E{x5Tqp zZ!f9e=J<~Kuf*$W<2CsYvj5%8`fEr0F#FSd{B5qE6udqC(|35rj$K+uraXNIZR|+H zci_L1e<g0l(WE!OPiu}El&9~!j2&ypzX3Pbp-KNQ{k@0wAH$paHr|5t=JWqd`dYa8 zI|1YM@%OntuEJYs9h!I@#$y}%eU5F8w}SHZ*~78Jd~b|NKON8G`mBn7Pdpp%MF02E z-U`geXs*}2)HfL4#r66+`+t_&Y3ehdTWF4>4XmHRe%C`W6CX?Zk+i3k&Y7b^LmU5< z=Z6Kv@4!28J<sNPKF)qtmGL;2_>IJ`puDfhf0fp$sec##@H(9QjYxlx_@Aur$M8(@ zA0_=}>U)R&wxm5X8NXi4-&E4?(s@(=WB6Z;=K@`q=D3mhznT5Kn{U&fqj5IJ#s=0u z)P39>-_gGE#QU)SJw$vO^*@Pkz+c48ec8094CB>?cvZY9{q3hT=J<{MrVL(<_&&zx zBjPuS=IBPe0rAFMuUFtZRFA2DGhT)G6#Pr({~PxI>y*}{{{^q+Tc5%H{XFB>n)*NF z{%Gza=4h^QH~9}TKf~)<zk~TW#`St8=_}lB<2CX5tdE|I&((}qUHoa{6SYs6qYUjI zfd4>y)>2-Y=E1b*d7dXmuzuboekS|N2Y7wj`whNa<7D!WWxU3+KTO2UK49WsG2g>{ z>wn?1@MFbs+Ml6yZH_M7uU2xsHf&_`Ka79e*!nd5uQcnga6MEZe}DRSjPgVHgXF&i zpThVrW`4K$w!D1&U8OVq`550!ds@=pe)PX59u`gdBzz<DaUI@?@%)SVe^BFU(jVk` zXJa$#+t|Ols$V94Hh!Ri^#t5}pMi<z;^pa22rsK~GVx=SKa=uz;m6sJ#*lsi?K6Le zW{#)ua`*zBGv%Gfeqp|c%XoY8SEK*?@G9gt&&}p|mGN6jd7t|>|6=0JSbrhLdoA~C zeFu8%cw6hn)OQ%)$$aZOietxq+H(wF!T7bppY?72s`z)5w*{ZWc;15l$$piKZ{m8M ziMLR@O?%AeLYw0Q?%!kZa<soUZvH;kq;G`xBz^(=@k1)Z#1{~ML+6e6C4RSlHa--; zne{gw|FMaUcgD}<e)%%x{l|K&Li`ox>tEtKH7}-o^ZDQA_>b{<mw0R1+k|)v%HK)+ zUF~xw|9q~;<E*zbtoK*g-{#??i06?02JYv*@bgrUDX)skHODIE<2-ya?Kj`!V2(2q zZ2B4GKg{)zhQH5xUyi>^d)DI*<M-mt@37@Pf`3l@8N5jSHtkE~emIx@_hWs3LHjSX z&GR}kzUp@D$YlJkqW$~1zlQP8*q<wET+Gph>m!-^E^TV-ugLT53hFoCZ)1+Ws@Sxz z8R-`=e|KqK&G8NG*~ffT;QkUM-j(q?O#C70t4Z8^|D!2?GJY53EyU;0-dpikDDO*+ zi#e9#KjHPXubA@8=jxlI3;rkZySTp1`zq!bP5z7U*3E4GA*{#AzV#2tU!-|6<?q2W zx!#+Te-iz<93O%YD2}sVcgO2+{l7_h#~8m6#3v`%`WkV++Dm=EF`uJZzZuNW^U7!1 zHx9p&{CDV_Ir7=hzsDyvvgv=v>(Rd_cs}UL{jMtY|H}N|tbUnet>)F#_ZADZFZ<V` z1~xvI_<rRx$ICo_e(1;4>rVThqrK8tdF$~DnE&gwuFbJf<(m2yXq?P3lm0zI`rjF! zd-3K<W75yXn^4~yxI(e`GJFgDYe;)XQh!Td33VLRJel$?(Rp)(np!vM%<(tt$-J&N z$GKeZC-8fi@0ECCuD5Hr-p%L7oAT4~%b2gXOhe7V`uzm&)6Ayt$a*#J1DO0}@E2Hr zJ6T`Jl-H5`otgh2emC)X_;ti@#y?QIP5J+_f89&@^XZS-*G;^e`e6?9eWb>JC4Fz= z6No>>c%Q?1T1EXgvtO(seWESSYs&s`DLxR-QNPV`G|kqBddGe1$(#t1J_R4Ac9`}J zW4tFZU-uKQ%l`cwzLB_j-_{%h@D2FC_;!3A{u<sIUx{DKe!ZXT`7XxmdB$fq`*&?~ zVd%)?eqEq-ZjNvDKhyr7@VmHv|G}T3{Pp<fqDg;0{sH%&+4xxMUxxS8bz#!)z|Hp- z8Gi}?l=uO>32{@8IqoBF-iI(pW&@jlAkTk4*0ug2^WT+tE7GUXzTb%tY--atVtpjD zKF()6m$M!#<Fl#19OVtA{BG3$F7@xD{N}{X-?5ux0QDasen%5q|7QF!`$Mu#?yV;M z3_OSRmCyQmQ01EO`-u4-n_#`I*1b6%X8-@1_<y2Fe<9bG`TiK=W$|k+wB8Ii-#268 zC)vN>Cx12K=dylMY<1ph#^+h;A4z(B$6@R+-(z6P8$|qK_U{79Ux(kpc$)7wH0iTg zzdte_MVcpb1oS@>zZSoi@;_2L%(0CAzomYd<0aP9e%gO4{e1zS+|ZVH1?{;LH?M2V z@g42!f)8PQ9%KF*GoSP6U&ThYyp8yajjd<k&r|<@8b@;+UT5RoiC@KdcBMbRk-szb z9i)9D@m0j@<D*rk8J|_$Pb#wBTd{stG9ItuH#M{AH}U%C$p+Rhz=v_axt{djGyjM2 zbn<V*t1w^bTwfcxU#_CO^EK|KeNC9}Os=0A<d5LLll}r;FSH?jF8!;BpWyo0Mfx*o ze~9>I_OG#;M|1q4^QQg}N&kj#eP(ff<~zcAcuHwa`mdRfH}T)_x69ag7utWN`fbv8 zX8hN3JzPlot@x$*E3DU@q&LsSCjTCM5&kAVcfE~YkL$ZLW9gr#y>F>plRr)KY>tP? zKaKh(Xq}n(8OmplB-X3Gi!*loshElHqr4WZuR5&HDEHetSa0VszWMlPly@8B(Vz9U z2_H`SIi&xa{kJ~-nZbJPkMAPBko(tSd<Aa4|H-tsKl{aQ#&<aWKIPp>c_VqgY{mMl zs&poQbNai9^19mL@J4aJ{hRwil{;*D^F5sASV8=9yfgkI>3_m25ii7>;tlaA={Jd{ zJ^P7w(Ks3ZM*E^UwsSrGf=|=BHSvG&XDF`%`^yWgck_L-=BUs5?1MMr`khOCuWO!6 zd9}&^A@w!D`_i7)_)g02gs-9feelmzt|>1Gzpa7w4b=As<9|PX7=MQJSF_$8!H?0N zyYT1e&ue&P*84}4_e>*O-`Du}^!I1&E9Q6|Z_aour#$n%qB-6tUX^$yd>ZBLQaaPW zwv_jW@)$oC?|7m0MtHBYte=HH&h<Ny`nt1!zCii4sc$(xnfWdt{ZYnidvSXhpSi^M zF+a=jE%;?>mpRP$g`4)SA-<e=7mb5Cj^fL;FPp=Rvq}Ff<6-)3{1y6h5Alt}Z@||R zU#;uRq+f>XI|E}r1@BA$CgKmUo}R%!q`cQD->eH$-otoTr8E8>>Ca?8xEJ3+d0*g* z*xy!?|2o$HSbQ};4bQ<d@J0B1{13{1g!1RmpMH$z`;6x>e1OuK_WsTMJ*IMu|BOeO zfAhYXIiAC>puX*RU0mPw7|TDK^y{hb1L9HqBi^rB%zTU@y}ny9mfy6?9Gz%?cYNEt z*yqaFp#J|7$0y8;kDthm_wN_Q`$Mba{kc`~{`j<b?|xgnZ*b!4v*Y7W-VpB#o%B<k z^c$V@H#$B!E55vjjyH4KcgC#v^fPaa_uWPD-a9YeKX&rhy(K>WiW8qaIX>RUX@6rU zev#AvwoZ9Z6~vc!$eGV|PJ7z9{aG2GKii2vIw?MGe$QP?u;h5s@eNM>7p#a+|LKf) z@3%DGmt@5I2`Bwfr+tq({kwHZeE$EO^;*YS{~Mh4*Kz7!<6J*A9X~NKzP<&{{Iqh$ zcZ@Th4>|p7>5Ru<r$3X@<LfiO$5(nj&UDIa=y*$K{T^|~v*+UY@{*nTY?&V)U*MFt zH#0u|iW8sj)VIee|4C>6xx?9i%<qYo?(ezI^&EA^EBV^^^c@^u>&(w=r~dPu^sAil zKg&r!%Nd^p=lcFT6yKhT&i+(&YJ5E8lwa8??@^~cFFF1H+^O%o`SIoFJLCJlv;UQG z*29m^c$?odEj=G?obo#q#>dw?UUhbSe2kO-?(5^@Z#w<YbILpHq+h)zKL2Y@`A3}V z@gL{<yDc1_zlk$G2b}%nLTCNYT^65z<CJ)RY<j#ea^jiJe)H|Z`1Bo}`l>tE(_&}+ zHn=%H{}N~aTIsZ>hm(Gv6K~*L&*ty!O0S1socs9<r@Rx+dY|R2uM{W!E6)7XaLV86 zwC7f5|I2aK^JZtiA3P_%{WG2My}+5zmv4$s|ESZx-<|o~>eT<K>rVQSPW)MCysA0( z|A-Sm=IlowI`Kp&zxg}s((`w*6Yu7X=X=iji8}pX<c#MD=l*z=v%YIM>$}F<`1Txg zuIGc!`dH?S*Lln1^EYwUZ#8GXxY~K%YU#ueEQl{}uQMK%u8WUXarTdm&UjtstfzFx z*E#(=$GKmvaQb(LbAO!ZTu%p`_*G8+R41P7jQ5>R`<giWZ~I%~`~S1EADnRZ`yZV7 z_|+NT9q#(QHNO14&i-A-8Lt<d_Py(j$Cu80ZE?!q<)k0%tWWcId!?@z^SL9XeYUe7 zXFC0V+Uc+PyPDGZzjDTVl(QbIIQRP>ob@~1Sug3%_1)5We%RsES1BjHJ;$B#JmFlw zpX9}-|HZjqU*p_AUw5vL<4$|GxapnoU6~bM-&xLj805_FlTP{Fo&Jq;uIG_X`*zQb zudlI_e}&WD(N26%MtuJB*2VkK)$u;dS&w%+_w$X;{b{r_{+~GOZGuz&C(iZV+-c8o zXaBw3iFbDVR_A*8aB_Tqu5tQ*zB8T=IrF*Fxu0xt#<S4bU-I1R!+Ac<bLuyL2V44j z`^}lZZ=CiuaqchYI^(y|sc)2Xz1-`R_p;O8XPxpEIM1tF9KX&<-`2Ul+dJ_A&U&iq zT>nFz>;EIC{dYRg19Kfu&5s|??auYn+Zo^Qob`C6^L+BMvwjac``d0O|JTm_EYEq~ z*x>9BKRWyEY-c|m<LqC1o&D~;qWJ#a=d`z}vtRXf=KDXV{hOTU$s3&U=<bxa$f>WY z6L0ABXN6P$w@!chJL~sZ=Xz}H><4E!K50(;czo@wum2pM=-eMKa^@@Ktk=t?#g|{r zS)b<bUQ1ukiB5T*GvALo@kgEg^Qg1Fw>$go9ZvdBoVfWr@6zqL!>R8KXFnL=jCWfn zp6u+e|2o&}04IHGXTMwJ%-3RP|32)*vmBq`q<`9pCpuos*}t=#@fzst-%XwSwfWq$ z(&Klo^ZY!+DL=!xUWPdHagI~}ROfzj(usF+)@Kc8fBVhJKi9c_Uvr)h`#W*-Ic25$ zcd>K*{p_^=9cMkh;M70CDgObd{x(j0lT-g_=lQ6;v%mb~r0?UbuNKbuzvt|4zd85M zZcce8ob^9!QT+H+cG6eLj*ma?tfx<%@yT|cp9-DzRMpwf*ExROjQIM-I{R&gGhe%$ z^7lIZf6rM@Yn}e?yg9zU-yN?oJwD#k8IRvq#K#Mq{W0vs-*W1|*V%7wcE<B5Cw~X0 z{Ju_nx-(uMIO}b#GafHE`~Mft`YkgjzJISc`^O3=f0DC)8amG>yPfB!*3R{l<#<nL z{BL#om*iYOHJ$dSIQ!RK3*!5;&)MHUaqfQ&C&j1l?D%YF|D5aG@1Jw7heM8^<2<iD z?5wXF9nWx{Hy1kXY3l5!yPf>6IqT<Y=YBcGDeryfem-eQ{CI42Jm9Ra>zw?5IO$WJ z{rGKXf12%hd&iGC<GIY)9}YO>=Q_`uuQ~HK+9^Nm+;0n=`}3Ple6-_(o%HuP@%E07 zbk<+UxgT|MuBWq{^4mJsYqGQ6`#I~gqjUWpa-MH;ocao!_VjkjPjuRU(%Ij4IM?S1 z=l=G-<GY>fW3JPl^XJE}$FH3E8{(|Lp3eQUrsE$u<I~8A*LKEhiL)QJm>A!l#?F4< z*0~->JL_-7<oNu}ocerce!q6ctG_co6P)>J>-Y^$edcq(N<S~HaQt?szvHIIr%!j{ zT^z6P?Eix%#^?XpX}|fL$I|V2#3^sO<2g=yDmeSYRHwXl&iymjS^ujXALsZS$M-qq z2b}qu;*94Ur@ft==c`Md^;gF6U!3(Z-WgBxIc}xLFYI_#XFfVR`J>K!ymwxFd4-MR zJ^7+|KXPuoZ>Syb-uUF+1IG`{nUowVNXpB|$;&91UUIJA|2U^~Ju)-nlj>YzMs~r- zjDqyj0>jhuLMdsdogSHyot86gNN!4MNrkHIf1K?-dT@`V{^LX01$i_qF(tPkBXwwD zsQ5&`f#XMHXXd1&4a}I3ms0BNK=<6RP<C1<uUAekMP-GuQj33{mYSbgBKZY*r=+l8 zVu!dB>Tj={%$&R{LzJVYpLQZSH6=SWCoR-BFDI)cp>hsN$;ck2Avu*bDU>%cCofCM zl{hq|FqEB2uy-gkg&%FNhZSZ`$P6WwoJ~&8nKmetpPw=*)Keds8k<aWE;%DBH#6i$ zdWY1FoauuK3qqtd<CZ$P)QRDF(+9?%akQ7FvmjI|N6EDH&dASI!}@E8DZO7xR;X8w zW-cc)Gn6-2);A}wRD3|r^n6X_<kKUzx22Mvnz=p{o|`kx_LpASwR36+O1oBwnWDnH zJgp-qkUT9VxAduzDS5eratiZ9{j*D-9+Xm)k(Dtc6n8Eo`?Pa*d`hPpmXeVlmu;A) zAtx{HRANS2ocGU9PEW}VrIjwnmVEko^{iiB%7h8=sS{K3FY7(Hc#JYqbF!z}vB?h= zgo=NjRO)9fjl2+P;>OF&V5q3T=2k?DQrX<Iwsmo5&1I6AkvkzLB`<CGsS^I@SvB{6 zq)jeJ$ty5f`)B7C(t_lIoLuMB$drtNK2tTd!!xo%IVA~0Stby7PVGxO?PPK&D=8<x zxcK5-C{bB8QMTJAU(Y;kC#fmLr}C%d5uB2rQ~aY{rt0`r8KG&p&S_0l{AqPMIW;d7 z%GUl68>QsJ+|rpeRXy_aLwN-mIodK#MO4uLb-q{9h+a8`*|f|yr*~e;w4@wu&|DmL zw`M*|OUXFen3@+GRclGQh)ZeT%)<QiQl1pAw&tX~P`;*xss@f9lrlNQRcO!kC``-9 z8CsY@lB;wXl+sgyktzB8vx`&3GM&;`rc+vaqdax?)K3F*riJo)W)>GVA~(0RX5^=3 zOe&6PVQ4=zqhebtKPAOW$%b?%(QFkbE3n-ko|304%%0Sooqn=MK~7dis+NmQGkjoj z$<H>VTqU8BpY6?V$b@S{sYK0<uC&`RU}NkvabihA8yFm#cKS(kU7db*SYh_*Cr9L_ z=^jw}{HcXDtfVe=rQ|w2b+*4Yle~N-I(5osR&uigoH~8l37byC5TEX}6C<)?*Guu> z*lc|>GBZz=9dCm&iehU@cc-kBQ}bmv-=vJ9P-f|f-RXw)>zQ1bH!&qu`*uNk>A3FU z<~~<ak`~HTUBjd<9nphSPHO2Bv1gFt7Q`Moilz8gsm>-ApVQBS3$tR&pL=h<T`YE% z6}D5PU9_N(kWR+B`oGTg4o%HS4V8{)3hW@n_TRoasilgE-6P{q6>npu&YoHru^ot3 z^vO=m%*hXxKGiETl#*wjB1`&UHy?CZXi`SLR!(fk;hZMXIg?bFm0LPRQYaMXr#7vU zTFkSgM$wK`NoD3S(QKP$#l)Q~UO1<k5L;EKy)f*MG2f+1D4s)Ar#U2xz11e=<)rpV zOVf7A>5`G}nU^ssy&$_Jpb50)y8-1$O3|I!+?w@lT3mc=jTFy9h8AL6Ahs5I=bd)m zE~?Yd56>w~P4AnLJ*lLel++wbEcu~SKYJDy6y#)+p!E5a%uLR5dBiR=PTA&~hvd>{ zOI?V4vJ10@=L|~8pG*!7X>sYC(Krp)qh+zhJ&Br&peTb-alW{d@lUP_B^TtW*Sc0u zWjrlSPraszPf<KqeKS+^1sAcW^Wy5%;vPjIPO>eRKBaY`=R`HMKs8U$6FW(hQ>KQr zZ}isPI3;g*NRRp2iiw%q!2b*s&wt9aff-s#wk3Me7psBSW*Noj)mt@=9c7SS!I0jb zw<{*LQ^cK*tqi+^oH|b-J@rJAcG}qy`6+rWQ#z(<?MRSzV#)-5D*3@|iqrCJ2lTW4 zYkw}elP1NVQKOwRy?P{<oKg0|TuLx6oAhj=XE|G<a`p~QOexGXuNz9v>MAR(N>o~l zAA)uLoqjr5FLpv%r=Kr<#@stfyQ=GxmshGur7X5%mU7K!DJ%8k#LS%H5>(!)wGi7U zN;>;L&nvy%ZL|(j%w4c#<Wtj6{hU`K1=@P_cvVuU`jV#yz*5^xN$7u_BYCOarzH7l z=d`xW`mqnt=Bl99KH2~Cv{?wJUT4Rik&AQKHK(rjC@jcHRdb62X7tU=3VWj|Y07Em zc+j#VSe#iE#-HH1A@&wTaUy#zIcH+Qw3NKi|4MI%zejdje6S!#FBOVQ85YXQnHn-L zbQlBON=jM({P?Y^q$8~FlGhT6DcNayp>E@5Jc?g@#0Au`|1(hP{!miOFl`q3dLq-+ zJ)yX8+nLx3w&`>wrWNMepY43uw>r#IX-SIItW!T{mxy^2r&K_%&_bm>JMKiug4U2^ zr3_0c&Zth=k#^4aO36$uG+V55zW9;RwvBsOY)RWQLvlmerPRL9QtE_xSEZEpHgEeB zhDx2$`&)6Il%lsJO2vDb2dFsL^HVHSTB);U)td{lfA+*2+pv;lY47^~BTzcE_LR63 zc8o?2I(1U-RHVkegw-~hZL3mdy_tf<FG01!J{s7R#WzLg^l5pLi|@jvGoO}<`*7(r z_SJLAvbD9AtOdRL&oHmCOGe0cGyb%CqYOg|3-nGz-@@$FQyCOd!~b_AB`rR!UQ?I6 z0xDhOReGQ*?Zp?3)6)K_#jQ-q&!D{}Ka}ia{qz>2&6ujUI`cCo$<i`&v?T4>*t<dF zPkH<Znx$*g6;I2lGq#FTZeFkyr`9E0@^i`1_AS(dUTlHbBJ)#IGAB@cN<j)gmHeP_ zG_L`A=H%$*fP!h6`O~v(&e+r5@EqqU(8iQa?}-*n)T=Ig!tSef8qFK9rO*DaS8o4z zno|+;ZbWk71bZ8|1)6sioKwR_njG2?@(TuqsMnq=Q4N%~?@U`nOiKT(0V^Fril@R{ zA$oSUDVT6=k$NJur&2@u4UO^R$LANMq)r~6nm&2_#1wPJyvtu)26x%m#xO86HAGlX zoSHWCc4%ycPE9#=UbUWnUVThU*4ipgr^}$1{`nw7Gi>WCc_+1BX3m7-llDQ)?uRy+ z8N}Yxvs3g=h~DXMrI*B$ZNMhw9qH1i%;sr5e&wo}#eKBlQ_Iy%N_<RjW16L=4L);% z#)|UO(oR2_Qjn8Dby{b6p@~T;1?eRxdg^|2>V&zKYnKWYq>@6_#GV&Mrj(r0-Pt{* zvFjb0P&mn!nwi57I&II`j_3}`>s0eE0D3)QgZ6UPLMl0P+OU{cEoKPRwEsJi-7wu` z#iORd?Kh%-@BdHu|E^$AN^b7|QMU#pE^6LdooM?uH9tF7O)l1W(<@GrX^QwsyCFYm zQz<D#+fK3Mm-@M6n@ZL@`?f-L({3Aar-~oG>?R)<vZ;IK<moMg{Qt+^*T7d*UHRTX z0s+ArRFtZz7eC`ilmIHxM(;KE!igk`1Q072Vh9iogh}o#XaS)iEyqh7=8b)&ojRpc zJCB)u=(JX;t&)HeP-_uCiq&dttwQ4mYKvGq-1lF5uYLC3=bQ`L_h#Pj{eC^a?5wlb zT6^v9kF)n$`&txZHr9AAN^zi&S*$5u%mIoH(}Dws@GyRgOff>D4N;fW@kk0{3s8Wg z{o}@_Ma}e`sDsE&3fd46YiqBtu=Jvpr!2Xe4sW|Jf!R@^v1vN1u{EQLR}3=VM=h7R zIG*t#k#u9M=dBINPhUwE0=&H4VxciAwl!H8yJLu6Nc&x!IMvksc)uUzBzC`ypg_q{ zE`%^0r+8EzAtbe9W=KL_@UdkeL~JI4K6dQSd|52mK9=(ym#VerA-AR^Mdj1P*+ZpB zs${OlacibsCSGDB>&zufX-R6L#2S?*ZLzy2DROW!5Ox)aWvt{>sWMP9CIf*ci<Q#N zSo+E^=wj`+QL{q|C5FGnES#KeEEG*47DASsg_6Z%q0kX#F1Z=|Jbo;#IW3$Fe8bFH z78bjK7$~OTT*;qcbd$!Vi*PI`vmuk?L!xQ$*t7_TgOXA9X6l;MWhG9`-)fH?pN^V> zwuB}}=dF?xe%_<8a7M>7@K$>=@Iofd3l`2i|JDRm$r^(sC{_z8zGCEtl7*KF1sWyW zi1vGhG@~Wms<SBz&cMk<89wcq#|wu|v6kCuoQpKvg8k%%w0x%(lsBj%#VVXPoCa`^ zNHu}I(f|pW4wBHg`NUpU&H@Z`UNxcG#MH}L1rqP2+1Rb~LdYD4QACI8P&H3md|n`4 z8-|4n#Wi=_isfe*$vmjmQ6R<EaHuILk~|a<M(xO7g>Q`czEF8+2*;f-7$}^85Im0r zLxdCPQ^;tkvK)=Cec6B|n#P;}ul}w#Sw#&6cu_>gHmelc($N7W8eM@rK**yhPL4RP z3nB2f1?NmMTjQW;ah52dFJc9tTv-U3oh^hEsXx2y?~{cYs0YZnv4l;x@w=`(u}z5@ zmpoJka=f?ky6S8^_&G5)UdvCkE?v|ZBHzYq`8Hn5xA8m=(MOV5u-fnY>}hNzJ*nFo zu#QW&G`3=i#o^@mB9D?;KR}V>(8q^-QguL)Fj1wJL(zja6+%Pt_L?0EnUu{$E@zc6 z84opeg;BdcV&7HnxLV1r5!xIU!8>;sgCTQ!r|%}xULl}>u`;AJDTh&0NPr-}7x6J6 z3tZ@V2<<cJPd1YjIenN_VqzBKYp|_JQc)k;gYn)Ys07q>$bymVV##Equ-TJnO}ETy zW{F<$lD>`%g-pm2*C>xGi477Tmqy`SqK&E8G4S5aR}YDe3&pG7C~>o9OZj-OtK)aO z^!2Bi_<o#zy$nEoT)m4`w(`&s)b)v34a!dq<f^)9o}cKpU(I>5v}6d7o~tq~t#UiF zde#hy!X$|TQu>4q$<*Y;%vw!DdFG`d9MT$228}-aO%+C4HW+MG#sFE?BdavpRIipp zsj?M`rK~TQPq8sTrP5@jN1G-G4N`Qp@w8X&$Fbt0&4{6x6d-M+p$KUcP&i_A#UjNf zAme!n=<=q5q#Y0vJw-{ILN%-pa?lX}PAE*;OhR$eM#)mv3Y0e0R-_El{0fye2M_i_ zE7GROr9cS5RJ62%(1aQiK+d8e1g~-NDokii+9K^fO>1Qw<%RI6ku5)mEX9zZy2YiI z+mS<2(?)P<$^K%Ks2alXasz@Fr+FB(BBw3W+lEvMoi^E4?DWxSSH)BMv}v+F!qQ?W zeA+?qWuX;6ZIV_1wehwhs7;e8FxS~O9Sy@$47I5k^CysksEw7M>(;2+0d3DEU$EI0 zhTt${v^V?sta`)RCyk|>EeRZ!LTP|1a~T?zh8<JE)ED-MRAm1MVX^&UD4yDKEd^AY z<S9_H(y2{l^}$dYtqaA1MQX4H0+NENAIU2RR#dgAB+pY=wMn$QYGZ@~tBsP~83n8~ zR>R0>VBusGuJ2S(t~32Y(6qcWIeA29b0C7F(Uroh9Z)9UQ+&0F$Q8}?HWE<<kzRe; zyvUx|611_Nf~<|!I%hWCQ<$~UGUco|Ym?Ab3<X-7CcYKvgvv$>t%)Eyh+zd=JG2l= z-zhd)2o0jm2{uR#V!RImTe|m2V53<v*G8g8v4U;@PgQ3lRTs0dSP`KW+Bh^2Sq<{5 z%O;|s<R{8c5QMkGNX1?oCs`rQMuRngqeX;L@U^*V0VoxJZM>`to@nI<Vi<#`2pmS# z3c+DiPcb-*C^tXD;?*6K6eI1hC^q`E7rLfFD(#nfio<q5DHOq#Vz5olOOWAE+~MK! z5<CTCJ02-cX^7giaIDfI!D<ZZ!gdJ6E*BTZW~|L2XGXoRq7{*CKKfV-ivb-1T2pF! zB#c9R+JzBVQQ3}1d^7m7p_Y`$4wPQ)0Knl$Q)+fe<Dm|lK{jKs@g9dzWVTsA6vGr9 zm}Gpx6;1A}g>j&1$U@c%&H?e_!(ON~2T1DpCWNXRy3}&E!&(Z^Hc2Z&+juqU`0{8g zM%zK8-kO-Ie4(_Wv>ie#Oxt)piTMP{8qx>Tb}(HCLJc~Ms5*vEZXUE8SY(y)wqA&2 z)#i{aQna?Cl}l1X;o2s9Ekf&8+YD$_GX8uFkich-;?vh3eNZ7gARp<Ld%scvJB)6q zLxx6RDB}6(q_AyE3?Pj1lR5#u045##Vm>MlD`MF4kz{+&irscPjDgNj@V0qSG%9wV zY}AWT__q1&FJBrEpb25KD0!j8K=^v4f)*4M;58J&?I^uABoxDKno15e0w{>vM6bIA zNodzTg>gG5?Zja`w-1he;%PZ?L<ZfV=}a*YdZACD+)e><jZ7J5MZWNoE?d4-Fb@lF zoPY$wvv8?Y9th1;Q}Nv9LGok?`y`Vhy3H9t(B!wQ-DUy~e>TorAwmf~jDkYQLy?N> zb{L3<0=tdVitIKXk}ZXHn@Wo$q33R+5hx6;KFU2scRLjCOc)C9Ve~M;v{nhjBY8rj z-IjyYg<!Q}yv>cR;}Gr;lu($r!y<m&_Qkkv(~*)R(h*+H8aQYYiu87H)FX801GpfP z73^(JSxN1-qJ4nHm{I~X6gdSqW|aU-UK)CpPvhPW8&Jr%$w<7hpUaB*HjC_&C_=5E zZ!=Kq(2DvtjoL^)8h;?knrrrzzgMMx0<XJSk>8GuTfR@BKa58<2Sc&nW`c$&Dfrt+ zL($(R;Fv}z{M%T+;=fHr{_+?A*nCv(K0^ST0fLUoV5~<1ft9W^Mqd~R*koBXqDR{V z^cWZn*f`lvwBdkFr9K9A4tsAi-A;xCHj)lW{5T3M4GU~u;FW=aP4GHARt3_~z^0?n zWDCechhD1B@W2kQJ{@f=uf0T9w<(^Yf{iv*6>I{XLWGDh4HfJFLfbJUgjR5{`L&9J zA8#8n*i;moXV4I!$i|`#8}cwn0|%Rkxq)mNY@}C5(%``+sv~gq4M@}O5}O4=$pFGe z23Lu~M$%?di$J76uE1?_Kt{b<m3|^_%Rs`G>@$?GiC&vlmJv4DE3R;|Jh`>aBy0iT zfQ%z^XoCtnEIyCD9U|yF*hENW1B(D&4L&x(%V|xMUlti&*vtWhH(!w<hRv%CGHk3o zb!mfwg^joCnYyq|SIs0ykx2;RrNM?R1!EYLs%)HB0NQ}VX6S%M#Ld1yWYA%A1rVqS z+Gb}151TpM!o%i4cxCBf6Xe7zhg4Eq3ZsT?l^vZo$YEK6*b&h-w`UPzlWfb7Fj`%+ zFWIOWtOHtYUV#k5K@TL1(}z@T1|><BBz6dHxzeJ<CXr={jZu<#@u=-dY&LwDqBWWJ zBLO<nlAn$_jqObAa2PF=y@^fm4t%9XwoR1ZUvk<Dqwu+W7>TAt8*led<U$pR&89me zwWV+#pE-&x0Lwe-HCPh}TNRtw2=f#hL!E@pR00HLu3{4mvlW|QnXlL+BuXr-g=LFP zLe&U!78~2zw$Mg^%|^(A!a7jy_ja(Ei_IhlOY{O*lh~9%b=YPvM`8Axzu4@m)=;*# z8O#yc>W`XAHhi(A*cs6}ST>h1ld(~rxr~igW-~UH%x7#2nvxGg<}@}Bnbp{sFG!Ob z8ySZ4CKa+QvDs0qa_kNzsSh-5ev>D(VTKdn5DQePO%{yAOPXPP6ObTNn3qG#Xz|Q+ z^2x}@A#(~z=o`vx$Ce>EP+oaCK=YgN*dpW>xM|K~)A0dBW<54CVBTYsaTF`ed~B>7 z`#sB^01-*eLqri6`@y`SZilD6qEG_D^5H-z8M~mKS&%K!?ssBz6NWf8ml_K4(evSv zS#1Jjiv-DUJ``ZEwBtjP1sUGA2-!5*0#GK{dI}E~P6(PA*%Cc-BO7g(p**m$IaK+D z(d?;G6qg;?G)J;2GANrRg^|RUs7;V_NfX)9+XOoo;#<{bP?-oJ$%KRu&|}$p$(AKl zKUu5Yrtk(;C{3<mLP@kz2_?u?awtjGMkoor*s^-E(+H|z{bbXmP;CWeQ*m^st)XlZ zXWTP@vZ=hwrc9=6B3e36C5vDsWz*CSfwY#gY2N1}ohY)^l+7V~7%4{v@O-ooN;Af> z5PHC>Dj*xZn%0dWVKL4bO0+=+)kuRBWJLuHCCbfWaS9Vk*H&0|a%I~O2JtFISYX*< zkQP~CAvA5JWry+PdDdDs-J3^|%T`}?c{6BU8l+QeP?lR^qLJwQEa>QL$z=y!fEmli z$R<VAtE$7Md->!BhM_trL6+W;IK*INS$x^iAQ}7>cO)rCqy;R&0x_7Hs=<69r`8M? z<Uk^i!Xab?tib{a(W8K8=4JCh4iAKR7?6}BGe80_LGnvDG6U`17`@O=ps{T$m0N7G zw|N^z)Ely4RMArM#!LC8E8xOHvL%|G5(MDESelX9R5?8yfr0n4xuopC)?6lfP-qmU z#hNXEN-0z_Ei6L`GD^LTWXls9GxKenZb{<M5RKZV>xL9g*X<~rj_{n)aJr6PnWyE8 zKb)@P52x$+!|6Pa(;ki;u`J3UUiM9&xtkqS&M~YKCKZdDebTWe37Wr!N%5J%*(}Js zY@5m)&L+!rP(SrYug(Tc^Ef-K%%)`~XES)(v0{?)WzW-*4I|o1S5%NPpR*%SYlFND za;FTN4|X`Ar7q0sY`ke+XH&SNhJ=ykb~ZPg-PuS?;`nB>aVi7K=FX;C=6E&<M+Iz_ zXXCx<CaVdXghG-nAxQE<k!@a{P(hL~-?O=;8J~?4=6pUBZ24@AFz>TbWaejMDATiM z2XHX^vvGFo(OXY!{%14OKso(-8z;W5{YX+Ql4gN6vo;U3@x(991pRomu$pBPC?ynu zb-HVr585QzxS>*Gqj|YG&BoFoCv;h+C+Y$eUKAzqBL!CEDDe9Fl#SD)>GWD3$!lRX zNjr>3peZguw7wn$2QHqXUlQ<hs^0QRcxv*<KvLwo-!D8ItD;0O+A{TJ%St)#f<o0e z$Z3d?%Z?xm%6fWoMt!v}3al5WTxH`BQ2>YZ0hb74^dYau{Z`F0C)u2&&gjPp#@bZH zB|+98Rxn=`${fV9<Vz-oN%mt|vL8(;zAEL%$_6{ZmP<!^<8722NrFhU_E6+RAC_}4 z!H1?q)u#Md&Ve5-bKu9y989dR)9ZD0X+W&Hxb&g!y{;W<U_3pQsPzco_RNPZ0y;Lv zy$~7*baG?a73+|o`izP#nw)Z!&9EjR8Tm+ZO(Hgw8jJvbLt=|WgRQb6)&#ji5hlbM zNvbih3f2f^JghNT1q;hzjWNxJH5PdnOIGY|81j&{aIE?~rt!-T0zukTSj(rn3bPZ| z9MVWw`(@b~7Q&k3GY_^20o!0r=H;)n+SO?J`R2!3Cc&DSK2!Xxa!KXKdhLSeBx$Cr zCE0U3ZPH-C^)spAHV;`Al0T4cEU^C75t8Yz_Hkjzrfc90qhHO86+E>C^Cw%3AfOuN zzB-h5^y}IBYMRf`*C5bgjJERC1X;>~^qTg)n%Oq))p*0QS0jC9y_z7SG<QnOT>A}r zbvO)t6NELdM#;Tx?eCB_yBe|3k3iQY3tr7(RRX@%(qz7Ck!{;uizKrW3`HH^vf4F5 z<tHJ7`9k4P!!*{_;%rM@jrYttl_{<!`D}DGfxcA5rw<$GY6^k~>s%AV<Fhi&)g%(5 z?Q%6<80BiOw8+(d*}qV7p1rM~hRzZ~qZzRYOJn~p%ovp@jRus0CtKla>5%IwcZLx? z`&%7ECRQ8YY6>zSjBGUq;(Zvea*Q-08{$ySKxu1RElgV}nT+a(X$+i9p)#`70?^(~ z3tLSP8)Cw0R^x<1v=8U=Dyv!@NC+Y&AtN<HkPm0hMLv?x>unSm621Ka1E&mVbz0DH zmG!KJq#7^+s+Mn{unfRxVjxhlvP{`xR?9;L=b^}T8A2Lz*icpnmrM|1Gua55PCYwV z9hTNLY#ghRvS4{CVhdG2Rhz~7DTYm~pQH_9{S>*&8Hh`F6FP7*@`oa!&1G!|s|8wT zR7Maf3jsY#RvjiBD?^|hLqddOwbiSZEu|=9JtILOD5bH?_M}<}qLXv1aZqN6lJkh( zbT!OewG8_H4+uuf4H~%WFk+`75J;J}YCf@|h3%@ws5KH&PDZVo00gv`q^X3mXw_8N z_Q1n?m(pZa(?JpA1D(>tmNiI_-@gGeYFHMaVZ~|%HcVJ8ywVqt_N$ttn<g8tYLaca zs_}-|sz$1D+sup4U{y1t$#_5KW8~d1Rn@$PovKFa;opo;7P{6cGeqlbN+VJ&%5K-D zIMuLCT*xtoU!ZC+NQW><)ltbcmT8ZwX<o$|wx*hj<|3;-l!~yn8LAZ!=}@^BKmKEs zifqI32#5_({Xq>|AhR4~NW;{_BnrDzEr^Uxwa+LXWpNr##6GYYj(fNmI840E8|@MV zNX8&zTAAwTP&6tzrbuK?+Lvlh`+Euu!X{MHm6#wU5VBq=@cTpr7)_f}9TQ@ZO+gxz zYJy4vG9^q#HO1=}K0Ml^ToQUeJY>{U9wSmMmF8T(1*xX0Cda=+WC+HIxrmjwQ1D|! z1`)YK`i;})AW=3~wi?wD%8<s9r7tAQWP4F79Fr_#QO$t#$O1G43Num7LpGw?N3#eF zL@fkx2EtnqkpZaY^OitiXf_Jf+z?3?p&DVBgK8wo#kK|2Bw8*=Lr{$adjO|C@3aZ1 z=9e_{2ak*daX^0@G=m2sL1LtRrk0Jg_)&(zr{+V8^7Hxq(#}%{L2SB(ift$(*@!nk z5g}#&!vU`}@6=LJBV^lYA$%BR)v0-8iMRVqIxV^}LL0($Kx2@$>EQ&lcfT2@jxK1! zscDGO*l1G*oSH8C2};PY-qcj8VZ%IA6CgI6z-xC|8L$_$f`njs{iw_}H9NObzpbX9 zK~}73sHr(%ogu6=HO4g2)L5LON&8HV3K(Z<60)ApGE*~AfvT@|{(UC9D2_}uW@$T^ zGKj(mN7k4+LRqxZ6jNi-y2%bxBV=_OMwpsJJpqQ57DAX`Y7A{K`&pFXrRIVl&+1ZR zy-tWplT9u)5oIbXGK>hr3cs<X4ynFdjCAv|L-arc?Wyb-I73s%z<LTg2F^0A)X^Ju zl^Usacnkqrb;m;b%qg`H>bUC1p^Okf%c?dEDXl=Nj|qcGO~HWc!+2%R_LG`dDM+Xf z5NSNA>5wHXCp9Lx5Rzt-nnNvh5Gz|jYFZ$4y;^S_oz=FM)H401lA7W*M9&aX)4VbX zp&{1@>a%~;K|x07BajW-NF55_VBW3)8AfUfgej{?3#mo`gVoDXO_L=;7(?p7WC^K# z-oP)+AT{2zfz&9uSKUSijv8rK8g(v%sA}7XmT~%!Z1kulWBeeCM~(3EXP7%`Y6sL$ zVC$$6!q8EB$;wgtP^`42sZ1O-A&-5dW<W^KxKU%}G{wt%oPHTm@zfUbQ^a&kb_7Nr z**0j@QPWnVwr13LpDClCPzO6kjYDB$nr!uB0thl+^o6o8s>V@D!f;XZazkUQMU59G zi`uIM@S&1nuc&$O^@Fxx86#RmM4pF;IYF5z>JaF%o{gf$dZ$!upr|QwtuN;cqc9{| znI`(#X)-aG?QVkvt9%<gx|>i-2x0J>BN}n~Y!Nl3kqi;Fms+#3LbR}+38KcD_J<m4 z8y{*sR#ReWC@l{)9;GeK4mGM3CWhJv2E!){0qY#O9p_maYJNE^p#hVrp+*Nv*k@;W z1kQkwq2^V!fO7L$80O`Xvsm7gDceFF-cGsJ?lMG3t3n+_n-prCXHTe6!kAEd(H0h% zLdlF!Q-uwo_9_EHjbZCSjqnC&VY;XBC@eWL2Jvc{Vi*mEgflG$EwbNSP!qkhn3jN= z>?J9jtV6eGE5WePp=6mU$Usx}>;rXZNk$67$shzQ19f1z6KR<RY9bcq!X{8-f(C(_ zhNC5E4X9CaWYyMw76l0lqadHgcAYZj(;;ckAc#dM)`<?%#GZc;ZTAZ?xX><pv(aW% z_Y5V5B9SS>-cP3*_<*sWMYXIP{OLewZ`JHeA~KHshmZgv*bwVJod#{%r*U=>$t~}Y z;t3G!sYY7#X{nYupGM0-%9hWMmxg>AD~IVOVa2Dhc7nynQAm3Icp0-Fi|(W>_jCl7 z*`7x8{sh~H7*Wb;J&33IJBXEQyC7Z`a1f9FWgF?~6oF(~=xKtKWtit_5)Lp7+dPfu z+@XWZpDQ!+$NMQE6f{g8r5BM&o|Y!ZD;jd>K0$-veX`I&iZaI2;bbQeW@Z+WH*JFi zV;J!hEk#s6(fVyOBYjAKsgdRjrp5{%+6WY+7(3WOqG4{Q^DCRGkJ&3~X-ucN5xJ}b zKfy4u)7+jI?8?huLo+h(O+v!_AV84Wgw>rE=Y^np^~~!0bOg*pNB>g>bvn=jjQ&O( z2#tY}*0ZW+45F7GZXp;EePLzc<Ryy{!M32&DM8fyQIR)%enQZ2&Jt|ug85R7Oj%Qf zkBn3ui7Y|~jpeM!b^p|6Y?=WQcpM6&BKjjx5tb+EJYkPOrO$h#yBO7M?6$Fqnog~^ z=N6#o-LwEnRC{<_lt053PDi8+;WP%UJpQqXnkLC1I3JZa8o4Ztj9RmUX!AkImgSp{ zk;)+`kd{(Gtbc>SNP+mQpKl;^Yw%3bbfmg5gb;OG2q7XQrz?c0<MhnW!r}}e>NrD) zI?fOx&w%v3Z{%K<ln*JpkKdS0r%;aItPSE>vS~Ud?hrFJO_$;QHf)-XOv;w!8L(-Z z3`<=J)@vHAc4jTpHBFW|vhCJ1)zd{26N4$%(?|<Y>}48C-ZNLza@BkqPL;bO_?R`a zAyhS`#hDgknW$+r_a#3!8>eZ$cKL&FMl5WWrdd=%J)1O5vJKKS9{aP(8cid;iWBx` z8jk{y73#x#{KC>Kgx`mk=4YCZZO=498lD+`GAPqtX>z9h!rn}KDNisqvk+uyrV)0n z>x~FyW~Mo5V1hZBMu<;13qwi=Y+a_=4AU}=Bu=&~Gm&a>f#0q3%snVxA=Jaz=46^v zwm-5Z(>P^iVxVYH@vO)+C(yh$AQLi;M;Vg+m`3Oki;TxK-fI&uu?oS`<X}^*1+O4$ zdoL|OHRYo+7}jDsG!o?*g=uUEN=1VJ!mdj*+fBr0A*R_30dn^Ci9tC|Pm*nz4uZJI z2uvf`Doi6JM<T#tVuWcD48L?J(l@dYZ0ZCvFq=u(fN2yPIR)5+^_P#Wmh84Pj-vFT zSXzKhSbXV_vVBc3WJy~uivzuQyul&E1Tir2(!n^>FwW9AnM@1C$+U39b`{xx>5wu? z*mP+WDo6JiX`4j{70KI{G%jvwN=&PfI2lsDTYX2OAVm(PHAx>r_83MUp|eO1)&A^$ zV$*aN@uE^)K_YCQ5{V>IW9BecO6=}n$42ENG@*20l!fR7Ui4`H@?AE46Q3{%>=BhU zbCRUUW-i~kvMVmpBx>9Sks7fkY9EKZWTGZgL$*RHuWT2}Co6V><P?ooz5-9})$@=+ zqUo8)K8|?;dsW+%tb#~wP<mC1wB%GoB4<=wG=5S{KNS-%y|i+|_=y#jvDn4q#)B|^ z98oLAjk{#x#8|9yoZ_B0ydJ+K-lQyGno0Sk<HELxe17@ow+|1EL<$DOTL4!GcR#(v z;P89~ZW8(PJUxux%{<BvnGtd%m!5`(G*ryxyY$aU&7PtC>TM3cD0v$O$uuEhs}&Ey zhK8oL#rPrWbVFvzvKFk28)}m#eI9#a497tZrR9D=PAcB?)6meos9`}n+PuUyG}!4| z&8%^T(^wvRBgaG{i_|;8GvP|;W%zLVAEC&`z-_@x5nwSALje#jG7ZjrD1GFpE<Wuu z({X=a?{vQ9IN4GP>ts)H+_?v~MutTqkLK{~Bka1~ik|3$yE;EA$c*VrZ6Tu5y>g47 zb@fEQ1!9kL`P>7Up-$&x&W&@o3kro)57kpaq=1W3VIz?f_;v8@(<24TOA1Ox3@zRO zE-H^x;pR~q@Thu@B#tfl@}TOGLsFfhsmulsUdpckL{XKW4v668BLGnzRRH84ay;N^ zM(p(xPh|02iT?&!yqo?De02La!WT5Qw8|b>4>c~&4orSK+pNaViR)k3({qP^qn`S) z=&00L@f@umS6n)YJF@J@^V{2&nq4@o|BA*I6U89<?>aN%67Bu}4{DfrVhpK&(4+dV zYJ;D&|1ROUl)T*#a4ZQ7^xvC1Itb5CLqjq#BcXh<pOP<M(*5|OjR#9Pz-o?S0~#4M zxHvi^=aF+R8ICp{9AJ4pEUyGYL<463Cmj#wA$}SIN`^!tdjZYyfD%NG<kFY{mQVfA zc;L7P9;Ly^aktIgPZ9{3z_&(XW@3gIENa|eCESCK`*CgdEMln3o_S`i+q_$h7)kd- z-=GogdKOGh*GuW*Z09%eIxsZ)Af+(U)svZukz`}V!G|ZoE5h}qHV&fL!9FBgUF@bd z69<nqt40yNq)&*UG95UkqGw>)jv^W)3WzaP@wO=~>1H<8b>+5DZ0X`!R}N^7o7zNz z3X|Dei<9nRGm7Z9dJ}674@MF)r*`$M8bf>|WP~JSV5p2N5`D0@_VVW4nWz}^5_1xB z6E`Iqc<fW<Sl}<mM@ewS9$By?Pd=k1@Hf*4<0BJ5d1iJ|fbK9RU--F9AC*V`(Z=5c z|49X#%c*pD<1eS1#>FJuZ<vqLDIPUW*L4nEKcu_puEM_;&HYReX<F|;d}O)AM=j+S z%*W}E_~XAt##ep=!z3VPr}DD_@wfOtAp`xO{C9xGfWH95SXKU0K%#$x>31;xR*5g2 z0*Dq`J{}M=auvs4K2Oqz#2LmI0+2j0&m4;vRbCT-KNg)*jg!~GPxFwfmxb&H5D!R# zuIhCg{Df1_dc2taO+NpB`21si{@Z+hJ!>T~Q_z06jj<;$d!C~Z7d9?k+JIjyqj_d2 zv{3BO)mU@2!iw9*!bAy}hK7!GBNT(07Twx#lu0pQ&WXKUTdCJSZHo2pr<pe=O}fOI zH_bT{MHUI0HxJNY8zZV*_bw-Yo@evPl2F2f{)XeEU(K5Y>G`Dd=73x#MwGlwXmDR6 z0fBiF>)yp}ONc~|f8JE-K;Q5lPNMLeZH*9^H>J7}bNko5DqWkI{_#kDVc;*KhKBk0 zLef0`^lhXG4iAkn^lZlBz)YXS>i-Q5M_wmv;&LxGGF+>YZbrM_VWKbNc!@V+S~W zvr*qCNx4>*kG4+eL3nz0b0&9V;4$-y=oU#1`Jcu~OelfxhLTevk&A(z_t{8f95P7B zoJM?jXyzqH>7z9^eY1VqM=S|u)jQo)zd=jfN5LI;yOR|QZl^1kE|R$JDk|uTgVKkY zH0HRk3Qt#0`h@Joly(UDF@#j~NTzJn7(znEC@0%6O@&0b%)5x7>`26M2C>8+l2#Z> ztdH1TMIQ_mFL6TqipWck(^oW6zR@eqcJ$zt3Z5RkQW?^NS2dm1c2nU;uFigLf=I>H zeT6g=M4Zm;#m<_KX)4P6cA&(`PAPF*u@aJr^~x{vI;8ytbEF96q0^_DeDYoM-I%y( z?slq~`e{yQ6-}^_%!!goM)EVlIVkx{D_+_<810JlyLFK9UVsLxDoj@2qcjQ#IqqI8 zc8c+V=Pe0m)Vm+Mdwcg4C!-G@s_j0D(mOR<_!o-h1oy?>{Y9Ox4b6^N7yZtQ9fcLU z1_u2{0XW}FR31#<(0RBZbK=7!eBF!B{`SK?y#qy^zZ*LCgpC7NbREoG1`(MtTZ#N= z4F5y|rn*vesTWMeG3<nO?yK%Af-C7BxDg97u^jVK%8S=ADR)Q0ead|{;eJ@-{wEq= zu@a6?*|m4UV>IKlggoTsR4~p1XGIT6U<^r@%RR9`?s_S@HiLwAemp4Y9!$D#W+pk= zBH0*w(qo<MNYVDP(@@(E)wpbmdmOjdad&6lKwYb*<<5N$i)!itbxpZc#le9y6Jk|O zQOrQiAQ?ZwWWk+fe*&nQ+>ToJcXeHFN59%rS9v&kPcN3N(Y2#NitUVcjRdUCHciV8 zt~}KKLgj&Fd%&80qUP2YkjUzBHEweBIJ}h6OBr5b^b*6%7<w6lmlAqGV;$^drxw?^ zwWIMbIXbfDa%w7>n;duMPGnc+sV6<s$x<FgmIqFBSMJ_Qxp6a(iK5J|+?~xlMuM`} z6}!`lo$N5j#s86_v}Eas*KFNR#4@tDbLDe`qFrOqa3KnVfct@x<G!-L0B96asw)@0 z>nv0N8X)!DTK7%C<o2%lh`P{<lhCz$P;^_c7IdE$wEe#qHC<Fj02NHho`z(Te_-_1 z*#LsC;w4a{YafEYCR;ZS6*vyC46qCk!<iEU90NE85E*w$0Kq%6*rEKn#fdd5Bch}} z<8(Wdh>&eBc9+JT>~Y|jgb<Yf7$R`Gc45$S6G(^SpqUVE;6%Jo39{emi#zaPw24n6 z_%qQ#=%32<<wYg%ttig*xZ*8Q@JdbR<C7A(Uq-uri}ke8yyYm3?qWA;(Y-M^IaDx6 z+_jXTX#ygJg-D^}REl95J3j76k-EyN7-G#FBZA4Kqfv;`b*CV_9Ju8`D_XSvwsa3w z<nYZ#d2o9ZuAB$dzLFek+ym}M9#bBc!&)MJt=3P&H)_Jo**!cx+Q|MeQNzgNF=AMg z0|s`&C_@80gJI4Zjb=wvQFdq&UFhv(<$*8!Zr}|ihXzCu()(5xQmN?BwEJ=!HX>sf zk1vAINcz~VXtMGn6bv#Bo$iW*`dxf+&!|thf2?s2rz&!(uGd$cBt$3NzEr`R1H-q{ zB2Zw&Kiv`@M!$?y>`H8*#$U_d<DG|c>Ca$DJqd!+C9AfHFiH2Lb9=jX-SI%hOYUB4 z%=Fa}$`i@p=qDGVYAHLE$rHFBYTbjm-7a<t(L|>3cH#hf)fe&AeK2>tlfAJ7<5K1w zF`HEEso0gO=uv5Ndy&*!u4~t-kqWhinu9l^A$rIC04Xr0#flu#$OYiIV*9ez74xna zjHdhHDy{BNr|Y2M9ik>ljGNfN<VlV4Nn0CY)DronOipy%F}3c}V)Q!dT$m!n!j?KL zI`I=u_G)BqSLTn7dsWE*`h+MQos2A&=Tsw3*Pisr81kLUNtq!|<<jExu@21&T{IPB z-k7@`LI{x_;<(odK_VcUQJ`HQl{IMGdTHP_=3!nva#N-qjIlHYplluYl|=4WXa*RW z<U*{j>vc>Y8MJV*cvFGB)+}o#w`z>ca=|axpr#^`WyP-GcXxUPhkfKY?ForGsLNhb z>t^<eW+aNy*hD_ToqIp_YVH?!)zND&&+N+#Lr08@auYN)dCM(ok}cw_%U)UQuIxu8 zP-Rdh46W!nSTHDaVQqJ2GjIQ>hSZnZOrtNhweMFb9p%b?j99d1?c2NAT8I^qEOR;z zNzF=KGo#_UnW>qnhWZ(a88!7YYO3oaAjJeJCP<gXSfxHDKObW)OUf6twk%wfzASdu z{Na%qi<%`R)*%ksV~ZL)VmIUVt60aPOgc6nKhPL~eRAvkCFi7Ltx$tv?!U`4XPP78 z8#gB2V=W!A1<;9zm7O)8<2sibn0~19{8i6tJJdHIXl!IqKpf%eSpXNduP-(tLHl>O zQO6Vp!v8ysP<SpzF^BDIy(&6TByx*n3xu!X&CN6N&|8l}|9hs>Y5`9`{y#B&6^M-m zg9G%>@CW;4B6u)-J=62aZ(#Zz2p?8HuP{BDNB-MJ_^|qEEtUZ<1qh>mhv~Gxg(r}| z=b1he#IW$^4HMxabrJ-^FJt;r(8KcgCezQ!6aHA5+VI=}7Z(3Qre{D8tDl#dp0E7W zhg!aKr`UTmALVkYoqPL^)t!ZRq0Q3gUlQ(ryf66{;9Wdw-}5SYK6L?*t#G@U@82bt z-p8EMIb^-JI~s`)Kka*7{ehHA{X;xTZpeP>Q((CEpya=W*}e3#pVIqBxPM?i?l(Fe z2H&Zu&GnyvkM>%>!h9n*d|14#;JcOis6UBE<!5rI$UUX+Zt(RoANQ-!^!*%s&mJXS zD#zEs_Ym_@KNF9N*H`Wo{|OkAhI}Z?k=spZ{GS8g+xg@g?PEUpk}Qw<p?FmM2H$${ z)iWRW$Iy5m0N-5ZqkfrB-pk;-lli!R2INus&=hwc^HDz)k4j%i`Ah`=yUfr1HXxVE zaSr(2VLs}=;?Z)w{<9W*ryY{zP5s#7tI_S^``~M3zI^raCi*-2bopLD?6j0W42Z41 z^8W>hGA&;Rh~`jwJK#j@=QjZo-xNUNy9f|NUioL4J_N83{0A{k5&RusIsRUd<5p=O zAd*%7Z|wgn;JNT;+1~*;4*pvJQ5~ff497AY%y1tftpMLnKn&@N9|b%e{P#(J={Feu zBjeWtVlS_Jg~WH?1b7DgQvp#n<!1m=d{ID>GZ+wZOAq1SS)lI+#MWf_W9+{Vkiu;M z#8zW@7BB{Q8`EzDB>rmw&j+jlECY-Ko&z`mkjnM5fM>%$8j#9q2q2!)-(w!7a(YG1 zr=>dq&xQX{_Wu|VEBEprvj1y<l)p8Al&+f?rU0?eR(=^E$(_KkjNw>@Comkzu#n*{ ztS2a4Tjjc<bTh+$X1EcM<bQ$vZ44JMoX+qKGzO}#UjtG)o?!SWAo^7KLx9Nd=zjsE ze0_uID<!^sF8il5ycm$=ox%R&8Pe=Q@>T$nyaxQE_^xAkCBtzH&ty0pkiz{5jR3Es z{{Tqk&HK}(&rsul|0zI{_YFWQ?=;{=fS&=R`uqU@uytI%ACUNd3y7vv{sO}%82*Uq z-vc}i^zTUj;%*7MzYI7Q_%+gBdOIN11D~&#Hp7pm(oN@gh`Mw-AoZI%_MgxG(*f~U zdJ_IodPXoTV0ciVBc%fj`x*Wkkn-^i`?mp-{0G?oUG{&C{p;9&JNs{C|6KOZ0z41l zuLY#?br^pI;Dx}WE=7Fcp{Mi={G;;cJ@!(xX<9p!V|Wqadt`YJ*~D-)!+8wj3}Xx< z4EvF9{0-@0xQXFvhVvN48O9h!81^H6ybkGMxQXFvhVvN48O9g_h;Zj2@UdvC>U`$! zfj<^~M4hkPtNa)|=mC3#&PCO_p5|i;zZZ><o?B3ubS|paozvN`)|oNzo`$@u^Qs>( zoyvory8$V@T6Y$)U#;_>XTMt4pU2_VI`|cYrSR&zVj=UZ?}#4utM8Wgm|v~)zsGd- zU2rn{)jIu)>{shvjG-bvwa&ea{c7Dx?Tpf+*14lNy=q;*h3RU2`V{*C#B&d)Pkm=l ze<gY9yW$U!2e0?kBYmd-N}vBLAe!_`eE!Kk|ErKZ3QZhihIpvmo8f79$Mg^Q;-fDv zlfJ>1-fcdAhmZeDKKd=b_z(Nyqw{z(zG`3iDB7P%f5}Hb?DJpflmDJCej3M2dGdt3 zIwS8ClfEg<9qCMaGhMye+#xTR)(7c{rAx(zfX2YMaB<_(>P3x97B<WKCo~O;{nyv| z_@_Zt4JY<=w~A!UbTqfijSK0YFK=9%-(Vued&9EEbkm~d_70ALE;tv`YunnEDqNdP zphgLfYo|_YgxVwyR*mz2tyciuV0rzUP!P7c3@rg6>N**d|7Q}|{>lI21Jd-)k0oO> zKTg`)__5x--@!}Sk?8*imxKqjBBY%MRLKopbcsU(4IK24MfsVxKmK>$dW#hKZ!1N@ z{TCn->eF4m*O<2Mc=;=CXfX;(>A8zE_^&MpMXC@|^V1OJvjvvbVw;2o?75n7nJj)( z%%>cB?Nl02KdoNqq>Cq7`Yj9P*m6X@?oXrN^74t4D(E6$9HeJ2`{^@4Il_NZ{g$uc zql_LUZyy#=iwF_WZ)wF(9<?{N;-iipzdp)FmJ<_H=#Pw+I+E<AHJJ4@G_br$6783_ zh2>!lDW08>XUf1dVLd{B<OupVs+`Plm^!@2nj?Tcn*Pl`PTxPWghNQ5`Ixc^e>DA; z)yK=w^Ee?JP_LBVGJHhv(#;ZiH2s!-e5BKJh~*tP$u2+06xA%b^6SN~M*L85iHyTX z$EipGrDYliqOv4MYmX6dwD$P44;?(<@aVSTQoDju>okdPK%54xx{!~5D)xY9`B0~_ zGBaY}w7xZEF*&O{xoysx-f{3bmD^Ul<n+FK<v>)Ew~{#bkfBAPbQ5sERq+z5Zba|; zC$Lo<!~rxPHnqG!BC~5poeF?tG&yc&r_=p_@Z)`VZTI&_#XzIe!iv``cGcm$3#ZhX zNNvI4hp9Mz8pl7Jf+TXY#yFja;?cWt^0m{+rgmo|1y9!G9&?&@)~x9(Mv2x`KDFYJ z0i5+BiY#1ihbn-|9ntkI*tQYMAciW0I5n<u57ah|L@bdyoaRlb<&&>HPRkRN_?o7* z!zuMtil^6P9~e%_#kpAJqqLGwpY7y&oi#fsey6f`#Xb~dZRHayw&4tS`Y15=$RnAG zo;sY#onmIGFOi$3v!o95Jf-C|Z<SG=+z)HrN47v$)o~x$34l_9a&UC*B-9ArQJX(Q z$|K7!Q+dTn(Ou&}^eP;+QCaCklP}tJ{0E_OF@!j!WT*QlyAgqz#9ShGeTgXbFFk}v zYP)|x94Qwk$=#F~oMSDA^~I~T?mPP^6$$q-oXjVB-#RVP`Nx8Rc}e#tkAW>g`=61T zzP{bB=5pLt5|2`VRnX%=zrgNs_s=h<(pHk7A;K9#<%(*k+_B=>+5()XiPFe+3Bd)A zS;<9cFU6fRQQ<f^&Wu7;ypJBm3Me9t{mz=lsCczj%yw}7Sa1bM`ze9mx!yE7Y{en% zaX2H^XYhhYo-m`Hr=U5bxs0QZP(`6@3vyr=Wz^NPe2kOZ?#L#`xpOL?T=CpMkvO>2 zLMctnGEKoFduU9#AFIPu?&vKCsHo5!35eL}B=}lB+~p{pmX8EiK_8ACH6x2q9e20j zaZer99WRh)!$OaUG^r|bB8mEZH^dwVHaCONeVr^$mQy|1Da9^2?3591>bVc1qf$HZ zukNV@*{_U2Iv2R9y*OGmY;%NR&Tz8OF>G^G1xS_tHE%f>Fs;MY-Pxht>mtye>HKI= z^eg{?Ib3D9YghEHZ<9ZJJyb(Pd#gC;R2~mS05r2T+eKC@pI-6S{x1?2sUo%G<%4L+ z!ZG;QaB3B;2%>8rL`_x=qSr3k89*k!d-un=99Y_7__yp#r>Xh`r;3L1XgArUfa9Kx z;DGLsTf2QsZFk3r?9>r>J(V~SB)J_C%t>x9!8@?s@tm^}2)up}y`cwg*9XzrJEPa* z_4B=u_JgNHe4~ES11KsO0fh%p5Z{k}9?Y|=A#qf7Nv`^Y{l_37(T6&zsB=9FT=5cp zsHfXO!q0=ylBvar2vsusDIj)#5WVRMgcZo@5x{N-W*bQx(N|r95};f)A=#sDJhiX- z1nSxQli0HaLgcloKon4gM2P}gkjql+oj;@52IV*tJ+H4*c;I)szgR+JkIIpnOxBLa z?8Sr%nOU<!&j9sdlHm*%D~5`LeGm&TRp~ZWr33pvMs29HQ3W8ws@5ovCDkLia5@hS zqWnk8euE7E8X13)@>m=#dxiab$v-0crCEp>0l!K$i^_T-TJ|ykLd~HN_fXZ~9R)e+ zt3Stkv<xM9Lr=5}#cI{3s6Sa>qq=0pmUPJmHK!U$8^s<krg|iP6i1s^VD$PukSSu{ zB2rSKWOvJy-Gr(xxrb7Qd?8OIKcG0HWvJtu_UU}xgp%lumc52VZ;O^a3GfT#3hjm3 z*9~vMJ&Q7WK6*Wx=;xnMZSkud=RGn%bDjk~df|(iqT2_{g!RbRp1v-cO5_+Z*m1k| z!bi3<UHfRl$PRJ4-ogtNLcfGxeI0N?Ry5xQZWoz(INgts5E1wO9xU=|<rIc-jpk;h zJ3$RhjlP{fqq#g1y~_bRGFvov7^ba9=tu{%DTk+6zlk!bYxxV!>$QV_7DFJ2t91`k zm~w>S49kksq!UdNmGS%F|BObKh$aCc-Bdu)3!jO8t!F{>!lGlr0&M9E#R8u71Rw={ zN5D~CRCVMh`uj-UX88ASq@0NIe-gNE!hwf*Zz$R(cyAafp%_NcGH4j-dH}2{(W6A2 z?Sm|&K;}nFnImFiV##+Y9Flnt*Rse2{IZ>UnMokxXxSg4Uw#@gNtR664MpQbibi#9 zf*4|;21XM?m+U9M*jy0pIv-Ub2fS^RQQ2lkiT3(_^oF88VRU&vI$MZPeTP!x<wm5* z%MB$sUv5+`e!#inD%sCfLURF9=w<IK^+?%TH2xCNI5LByWxt4C*qe$@L1&n|Q!GV0 zsdd#<K1MlP{}Z&$RM*>jl8Ua|g952(dfdrosYN+0J!0LMU0XoyRdxyb2yn8;IBvJ- z5|}x<sjbtz(fvofps#R`=%yaxjqI}L3@qdkQ|U@!xpA?x@kkLCSP`;#d>e=kDv7Ft zI(;H;>Mds9<1}EYaYeUNAS%zASmt!!E!s_Ra+%Y$QBZh-sl9yV?#yvmfYIb`tj$Dq z+6w>}084$c4-(OmDB?s_B(hTq+Z*vYa%fO={W8o<Lcb90t8OQ8C0{KDm{a&Fd1_xB zL7v)I3o(+RQiCHiD!Oi`Y+|$VF|oa-X-c6}xqZcb9Knf*07K@;bHsFjIO@6=6h^Oq zyW*w9BOsw?9;B!tdsK#o<HgT?P#rBPd>8-cB;UpOj%b0XeYcP>weMnZ4^70%p7)a& zbQ94s4BWGSiDadAMlam?h1;E`?KRznj{yPE(Go-gaU<T1mLaw|ze4VA5|}v@7fnq! zs7Y=1Uv$JJ^C{vvG|c}N;sHm+06&03vz~KEMeB6-6z8@h-eq4O7_OtN$vsZxQd9YO zbp5et7M&koamQz|Y~6zjtmtuH5i2-b^}Hrq*jM9znZBnXr|2y)5Z`csi|GbTK`5$d z+2d3_lTkaL$JF^Wd5*>VF7DYSi+9Va`FsyX2^5G}B0Wy;SU{D`eNG~_6JkTfOVP6D zAyG_Yqvqa^80sFtzts2fZ{}vmE-8G4{@1>O_(s)jLB=1ah$%Gwp}<A77=Oq+Dzynw zq=<`_vyyF#%|_n3P47qNpaspY+lbVNp*Im7Rrrd{DFou5iiFA*dAlJ65wj_}*{KZ} z<Pn@2@hD27NUx~oxk!DqA@%)e8R~Z~<*cFZ0s6Y={5T%%ilRc0NKEW=o~%GSEE(O2 zVFs}IIg)Ye4iK<xp>~0V0E7br{G1&qg*jN$2*Qg*0LsZ>IesXfdEBm2ZC61%0{A$B z?r*N9>04qT%x;Zgn5%6Wpkc12`zHiMN!GYK@TDJJONW|JbKG6$K17^TyFYg!Pu*__ zzNy{Giwhqu!UC@X%Z!quJ~SHVVFaRQwR7vivB1{u{7ba#86<i42Tt^YKRXq_BKRT( z1SdNARj1$s=hlyjZ^TZ6?blAlv&8nEWc$D=I80yiogc+Bo2R-DTu1|QBKH-_25mNo zFCMQQt4|;gv7geT1}OR*D&xV4TSxx_w1A42sLj1hEi)1QeBrCql2FqnseZ3@!3!L7 zBwsBgFItevLf$&?&7n3g8kG@53Jr$f9)f6DsAzCHUeU}DjMjFLj`YnLfn_hoBfKT4 zSI`(ayO&x!CsurBq+a$KTTC>z8>Iex=VN88pBjn8Po2E@rK(5aaOAw=D%9KO;Hptz z4fH;yJUQdzu^(-faQ~GIw^rUW{a+@(`t2)Eu9<%6yE}e&<x`7q{D-mad#{|i<klrn zJB{&vaLxS4Lj2y^k{E8pZ(0;<nIBuymX0lG%Pg56X(G*3;cv$^II+ehw?SjIwY9Nb z1&%GiRZg+?Wo=74B1_sltQ0k0{`OU@y?J3v2X<_m=SNc0r(Zk$vKTHnm%ri{tBRe~ zLI>l<vp~M1q1q4QBfkVXOn>xZ4$&=x1;TG*44spPg=c+>2!#*RFQjpno-ACL{_8S~ z*z~l(h0*(&PAh`2_+O)qOFUmgJYn?Z;@c5se|ggXrBO2cXwbvb&)cw(eEN@(0W?57 zs+|3Leb6xx`j1yIAJv0+l%7|Jo?;pdzhQo^mw^5l$^9nWRd31oseZ(x<W39PlRpK9 z``(uP0l9{L;UB?w!aI_W>P<XKF6(Qa2_)%1E@M8bKk+C&zIR0AAADPwkLuCl^QDvc z)8L0Cgm|c4Eq-5l5&ym5KY$$=dZ?Z){;PxK@Emxa__O4vdbjvlpKcw_2QU_oz6B6l z@8uT*qA8Uh2Z*ix@_w`%f{y?aeih&dz~93|;hq7+kwE#s0b(90Ka25?VPg%i<@W<p z_%AbTVEjJVwc@pW3n0n)E+GEO@4`Q<_(ty;DbsTsAkpjC{~JUOYn<|BfIyWW4~VDy zo7nKjkx<ojfGEn*=K~_C<;O~YIq3ru{$7SzhI0XlFE0J%Co}#yhHv1@k;0LlAHk;q zDLp$FKFat_fF$Ri*iU+Y;4l9&An`9{|E=u5l;P<TmeZFl`e6CTXg8FvI{>MC3IVBJ zevHp0f`7rr52~j0O+aL=v>%Z2|0Ez(YZgBai1^AsKp_(Ud4R-!A|Ua9h;fF>>19AF z$8CTVUnk=`0I7aSFOB$X04e-c?7tk4(s>s9Kg;yv0IB|S$TWpJ1W4ib0aCsG3Xtmc zM@+vL5KXfD>wv`9#rQiIe<L7;BfSd>NBV5!FJ=F8$Rx${1R&*~ESyLV>Ei&ucs1jX zXZ&D^FD3mLlJh?RN$ylY3U?(S$s;`sf*T-|@T&kx-s$W|TNZTSsJyX#EAlZU#*i|F zzajmg6YOEQiQ#I7^BBe%#ux&Ka5U!8E~uJ!e#Cw?&S%-L=7p!&ug3W=z)$);YF@&t z@T+--^z4YP=DmLQgH1f7%T4qJ?BC9QHIH5cJkiy>hO&s9hBlziFTV>K{=8?D&rjuV z(ubpdOut{BsME(kACl4EJbj|~;5WmQ@u%sh?;+Fw6Q6&O&yPiv#s7-WUm@ckge=Ra zfy{#PYUnJ<EM}Uxg1H%rGVS8RdRz{QGuKen7rHu%1J&XF(-x`S!V5DYMq-!;$^(p) ztFUX@+Mz+vaywtP0kZs^Q)ZW8{n&=KCE%9=k}V4sU|qJPDgWghP&sK@dYhq<KtIM} zc*AbA3aF{rzpVRz_=~N+pEM28A@S>!*uMdG#GjeS_ZtIP|N1mDjH@Z>Du&_1^XX^M zWnN+T?^RqfsbYML9(ixqt<AUH+}7AWUnyw(pWZ*Rh4mSfKE<XBWi!S!^H=F-yo~va z9+HQy9JwDI<nx3G=w}?|J`PUD7|g%wfk^K$`!FF%UjetldUU^jMn9)Z9R7pr046uD z&w8Qs%hB#1>BpcW9xQI?Ie^KK<gK0<iM%8*_P?X)XY`Mi{5Q*aJaXVnJ3N)8`5a9@ z!zq*8JsfcM`C=UsnSHrfhY`^dc{KfuVuYt>BUi#0)Q?#om<Jb04*8#wFN(%@Z(%V8 z)U!cbgs;>KAOPV4`WZC0(mW!Uba?p`5A6<g=I&T_OnluHIHTI%f`;NAf@LZi^s+O0 z_YLXnKW$_W1g;y>`R0{tez_X2@pY>ToX#DC_J0n{Y{WXDci)K4{^-bl!Rj6oA+H=s z?CT~Mm_Y|2=-~YY9Q3rvvg+P_$947(9eKbD3Q1m2pQu5msKF3bxc@<fqg3PuFPql8 zZ%k+Z;E{(sQIKqjGDHvZi5_f<E`;c!ftz~weYUf|VB}vsc@S^OGvo_-hWx=k`GuzZ zBFKkr@&T#4g00CBXkL!I?c`zVbo&q`>1oKFtXcIHFY#R{S4AI8P8i;Ks30?}BFFc1 z&~^uILxG4)zh^9M-ZVEG*6(D(FHMS_>?Ne-A})M*J-YS_sEb7O!M?53LLoRk651MF z^MKt-_md{w*J``5=EKM2opTC?uYD={)orP@xkU7<k0)Z!XO4+J_-y62=vvb5n7nR9 z!SF=(fpwIdHHWbhh~IHe_g&b8+1mNh&}HXui9?FhJ^Ci_I!z<)bPAryy|x9O$iS#I zhtVeDnW0-EU>X=y(X%E;>B*eEAUhJ}0dbXRdYOxm@(u1zw{HE#kr*A*7ZGvbYC?aw z`wZb@q?=klFn-P9dJ1-u5e)rI1v_4#>()mf+BK|qfh!^sme%gaq5^Q*j{<SLV$0OI zb2lc}t-Lq6Zt-`MZu4gB!fkL<-_NGjLt)^4rQOm)rqqM83FsGWGA`Z21)sRH<$xCF zT%OsTxkg?aG21v<*g|Wl{U0CB;l4eLlKbDIx7En!{x|6jg&W!b8$reE{%6G-iedjQ zyoq#g*p9dF!99w8u@i0&+{<upz#V|2es4B6tu_HgtaG~yFRP-~bjN8<Q=ij~4;`wu zpRW;(v}upi``bY>fNY-bA;sfP?By0MwN9kRQVPM<1-N@KmmVP!s#HaQnCVo$nx1xW zN+O;<R-LR%J(Wi(0d&)W2qG@rp?t}#u7v`V6or!>+;p_=erjAO|023H;u*fsfK2yO zkJ1Q9a?~+YP}EpY)JYJvnML8;t558;&dt3hp|`;-v`nCGrq9#Jq8{C82p!18+UJNS zbVquIFD}`#GF7muAB<)m(sIbM|AB{NNU}O624b^FAKTsU#mQ8EW~9&`3s~OswHI`k zK*If%xbwljWpb~$tw<N7aj!tKFSUuTG73r6W_RvWNxDI%d*%22iQ8l*t_PPo?#+xu zap4{UzC%dRsp)YeL9Gwz8%izB=`Ny`i^NAC65UvO7P#VKA?bl0-Z4xac4#2F2G)`I z-k0oS4{@)Sto73{fIxCPZi}h<6Xr)W_u^Af|G2?Mq+_7OYq!~Nil%Md%7j+ZjW6>^ zr1Ix?QoBz_u@jF`=_4WZ4+DeLg$*1HoiE)bqxm*~x`nH|=$r5joZ`jhWJlm$AqX$( zB<^U6dyKql1ucn`4JRg6UlB=P2!$=DyOa{)WGB$28zXR_%!QmTOXScfx8qtIna`Jz zfRQo*=K&xrry+^BJxwjqaO<ai*axBUOsq4v>W-^BbEn;Lb7yYE9k+JoiZf~4^D&La zpD%%B&70_FTRDb{5X1Md3xbk-6u`@3=}+O?-wAdsC2)^XwrCy-Y#?Rixv+QOlFnQ# zlOQ6550rK0Mq*UX7RAYTa%XN><}CPTlW#<4?i4|z+Z&y(9+biL6m2xMcOce%?YFw8 z^ml%Aa<m#llPDZ?PM!#NfXk{yS*p-U!(=B^s9r=WF$iCdApiwOYmW9yMTz1VsW960 zFc8rP2V*_b+kag2!KnqEuU*;u+K6Gj(FdysVeaqkA2Mtw!gmZFxB=n&Dg1>h{NT(g z5jNV}Kf((;WLPip4@z{tab;rI(*rjOZiMZju%(E0P-cn<b{d2eYk_3lF)$9qg3RdT zx<iFqF<zv)m&G~{ot%nRe>gB&4Ph=yM~u(O?8G&4CgE#zwnKj4X$0nGxF)#yaLsVE zSFsRo5nK!0EpWHOwZbiiTLRYxw-oO0;M(Cj;OOfi14nx%%ixy7-3E6%9DV1HhnoP0 zCBC>r?-IaE;ph{p5^fwEB^{kod}h!mM+~kUt_to(xVdn1;Ld=%9PS*rd2koN(I?ME zaF7+h3=Z@-mdkO3jbphSzY;DEmw>wpt{N^0mx7xNHwDgttAV>3ZYtazkXHwI4cxVG z)8MXyn+`_{i5YM+;by^I4>ud`2Ds0|A-!>=HI6jLZ-T=?QhXj9$~=xTk2k?VJe7GI zWgbVF$5G~SlzALw9!HtSQRZ=!c^qXPN14Y_=5dsH9AzFyna5G)ag=!+WgbVF$5G~S zlzALw9{(cT3b>VUtKg8A_-eQ{a1^h4y5Rq^52t8<4g5M}eFN^F;JyiW58OY)eG6_A z+_&NW1@1d=_riUeIPM4kf580+?#FNs!2Ja7LAZzDw!r-q?qRr}!TlWW5x7U;w!-zm z^}=m~+Ya{_+~aUN;QHWp!tH{40`5t;r{I18_cYuu;daA41Gfk6S-9umo`-t@?pJVo z;a-IMHQY;ZFT?!?PUW#5@2|oA7VdX&ufzQw?hUv%;S}G0C8TvV_UYoV1&kNM6~RHn zIzAMx7;YFG&PC!-$&AAuI6e{%d#Ld!TnQZZAmhiu9S;Z1$~ewM;!rb*W6w7}2JSO( zC&T?$=HYL$|5gHjD}n#}B{1xCDf1YHBN;{+j$(K`!_f>+V)z+`r!XvKcpAg849{SA z7Q=HGp3CrjhUE+|Vpzd&0>g_LUdphN;pGgg7+%RR!LXWPis2N7H4LXRtYdgB!|NE% zX4t^6h2dg`9Sk!JmodDJ;TIXMWOxU|H4Hl$b}{@4LziKe;oS_s#_$^q?_s!!;ddDR zE5m<d_<e@=G5j&ZhZz2hVIRXi4EHj8mEr3Q2N=H3@F2q+!=f`}`x?$L%J4XbCo?>Q z;ROsYW_Sg|sSIZ@oXc<l!#0M?8LnY?C&Pba_)Ui2WvF`8583}P!ybma82*CcGYp?+ z_#(sKFno>S?-}lA_%_4$82*XjM+^(jlqng)@EC^2F+7Q3DZ|qlp3U%lh7}AiVR$*i zBtw;7KfIRdvyZ~(5BJ~YZ{c*cGrW!AYKC8CsQT-A_Ww_Y-(dJHhCg8VV}}1#`S>Zz z-_G!9hOaSvpJ9$+^emZ@F$~8tJdfc7hF37Wmf>uMjSO#L*uiiG!!Cv!7=E4MzcBnB z!v`2X!my9wZic^R_&bJgG5m<(ptEH@j$wET!wVRGj^Wh|=Q3Q%a1F!t48P9sdklZd za0kQZ8T#vSALHL=_@4}ioFh4-3{PfwHp6iY{qp{Q^<T#MNin>Z;SCI%7%pbGjA19k zuP|KC@M{b=G5mLiKVtYW!^au^g5h3<zi0SIh6QC@9}GXs@O*}sF#H_D|6l9jZ|VM9 z3H+@D{#F8iD}le2z<);xh)bgI%TevIbI$5Ghwi&>S@H#_x6O}qG&L@1YMbAT{eAlN z%|zs?NOdF`Nkt|{rbL`bP2}px)JQEh!>@^43zd`WBGV)Fkr|Phky(-JBeQX#@aM6~ zKOP(W6S28}2{!g8VIzKAWO_61+FBAxLHyF@$W{1dst){IXmeyn<IRzJ@m7w_{Ts2d zKL?xomt#YJ9yaqY#72H~<I)bgMk+G7A~Jb=Wb%Z_<cX2V7e^*v5}AByWb&lQ<Vujn z!GT^eJ~FMnWl6fe2|wSxBmw{v3K4o*Bktdd;Foxt+tU%J4OyGkxUhNV(g^M_qMy)8 z!32XaNxCI`I$bIrscl}6jtD>4U`B!4f^LoA8nC5}^J5pOm-Ez1xq3NYy`+|)fR(30 zy^L2c6V%H@^>VR#xkSBOs$M3kmrC_APQ6?h!DVHwElrK-7W@#^w6<kB(khe)%Bune zR)G@3FY!*UK$%sb&?-=B<56nksZ>#{<H0w6VkEV^xhaF<aGG0}M(UcEWFqw_pQd!A zK8>r#5(^t!mPBSQnco({U23>Yed%o|G}xO&CgVq6BXp-%WL8^iW-%44d=cfxg?52T za#gG>Q9p6qxN{?kR@_R}h?>C_YSWwl4z&#h$<|19Yja~eRb^W{60j6knx*k}E#ka( zDY7TXv5R6dJ=N_<BT`QPIi_)5>5Rkcj74pkj>aYPJG7`|b5jfSIW?j>(@x5nx6Q;) zNh5R8Q=hq6_*rV15`V6G`J#GRsa~i-GrMl(j7WGC^-`@~lIkU;UM8!T+1E~2uQ#ce zv((Gy)XNp><!tZ8dt0GUE4;VM6zUB1B6}gHG_J5?)k|ITVl;vFX2TEtO(<#_2w7_^ z0s){7Yfw>`>2~}?uz?baxJz4aGf>HvFSKCvVIk*V<aH}cxbUEVwR=IYYFW~#eb+Xn z8@-fqT`QSR^YX^|vie0Ak5#AJTjg8*q84;{>i01;O!<Oe(U#+Z<P$?fOft%M;*@X1 zT8FW-epw6d?~5cd^IO`kq2K%yZ_{x5pL~;jiKx?B8*h_1(Rb>a=eIO+hr9mz>mzma z!?)FqtxcI$(E;cO|Io+UBZ=x*J$eX5QXLbc86dSc@=tDSUk2S)!6bTZb!>VwZb<78 z+*h@=-MYB3{nn1iRqZs)Ey3l7qLXSbjfyQDOOZCt$<(WoHLd8@Gujp|#E%Oquk71Q zL!i_xVx(woZpQhf^?a#7c;$bC!uUu`;sW%4Va&y#huu^ED-~i;xE&YSP0(|q1d3bw z@SpBTrDuW!0eXVz$LFEXVEV{B^hT!RJP^8Dq}^ygl||Bzv(ZpHvKI_`*ggLpLu7ac z0r|HvVT@!8(Eowy`O^Q-N1=a@>F4K>{{qwFpoiuE#Gx|axp~50$@D3C=wD_!=_G{N z;l0oFKY$(<|I5WvFo>byPhfIBJHEZok-}Lnr`oaKj_*u_Pr{9VLGr~|UKk(c;XLM} z_AVY}7svP6UjXFYaF;S)1npitiqB`~M)5xeSGHHi&;1}^7f5_>!JWu_+#f>u=oX!^ z%*XvAl#kSaM=&3^uTZ}E;Ct^^GJVuf#G~?K*bS}+-?v#F^%ske?eD039su8oFG_g< zzNz-_K~TP52Y)B?b8`(%=LnQ_BlB^83gw#!zU!FpNco-vzDqs<-&*jU!hGD%LgW2D z_&&>gaZxz<7gCPT8S!$z(|jC`%H=QMyOiZ|{|n_KTe4ZqM{QU<Dqh1rv=)5dU_R=P z7N1eiY4FYYwX8qtmlhw(BYQ!RN*@6n0o9;1;OT&q84h9iB>MMffbRu_*wW2_7*a?7 zGa#~8x`E-B7^WHC%<y`KlL0B*m4K%~-X!){Fgyv6<n?2`A^Hn|#Q#f%4*-q@{$4=h zTfz7x>~CWK96$;`ll|8)JPi;}=^%z5qM;JsJAf1q*)I~@EgNuYAHxS3ewX1!hFOMf zfT-*8YXM6ECj*`VsP6k83jZnaAAs<)pnkOnkobQDNc{f>Nc>W*H&U8`pZIG5&jSB( zfTzMgjPZXil=rv44oLaw10*`#?@!_GWBRw5PWStt3_RIW68{Ro68IOh|3-#a15&w? zJ!K5^vl%~}{bWZ;?d4g(GeKVlNa<S$Ncm9r{+BWS6hKN(6p-TmGlUb|%aHE*C;xVa z|H|-OhID^9$=?Qe9OV2Ekod`7G6w$!K>U@u_(%BNvK<Yf->E=R4e4RHh2i}Sx&02= z#Qu#8sU1_ebqrTCT+VPQ!$l0|F`UhC8bgO+oZ%#f;~17Pj4>R;u!LbT!%4E;4jIR= zjA4x77=|Sbiy4x!6y;+d+8sf%$0fLzA+>Mv)9+jm>|wZt;r$FZGu*_G+CA}aV7QLq zYKF@hE@ilg;XH=38BSy9FpM*t#BdzLGKMjRV;Gh&EM^#CcnFE3^ie+}xQ}5!!@Uf5 zGu+9rhv626_cNs5-@xCHO$;|O+`w=h!_^F94974mVOY$NgyC<<A@nDL2N>>S*w1h; z!`%#bGNj)~rf_8piy4v`gOH1UCgd_CJ7@CuGu+E?H^ZF_dl+tEct69<3^y^{$Z!M0 zbqrTCT+VPQ!$l0|F`UhC8bgO+oZ%#f;~17P9K*1LVKKu9!$TM^M7|mBW7yA-#v7vV zX1J4K55p}C?`OD~;U<O~8E#;>j^S#C%NZ_ZxQO9AhO-$?W9Tr9Gn~Y59K$k(F@|Fp zmM|=47-2|u#3KI;_c82exR>E>hC3PdFx<lMeukSFZeqBRA&s{b&pL*y87^nIl;I+V z^BB%%IE|shFwSri!*LAD7{(ZmVOYYjm|=wBAq@T^{|xsr>}N>pVNw4KcQWi@xP>9~ zVFll2hMO2}WVnIhI)<wmE@w#J>lDu-hVvNCW;l(Z!!XWp62ox}%NWKOZbCgHt3y^Z zoX0TEFvc*#upi9C-@|Yd!_^GuF^n^eF^n+mN4$6)(!+2Q!_^GuF^n^eF$56d=y!6C zMOu{o?!CYti@vJtUa1^u&p_F&LU&g1-%kaBXA2zJ@gG7MdVUC5<X7LBIrgjX;;*w` zeW&gLFY&8=h0B?)zT;cjufE&A&HU;+nr;=P@antx_v}~S(Nw=gSKq6%*st~x7P36G z??T^;#IN=t@GAUj--W(Mh_3cAZfAcZ%7`B5OAET%XPL$6QTqy|9AAR@-(`NauW%~L zk>soAO9*dxBWL^k<3Tj(^kcZDKLJ6e|7{=rcAuZyrHVc>+81Be$Nw9jeE;vZ$ZG=V zDgtb93JY{VjZDpNN#i#|X3(CYxB<cBw6WJ?!@X^p_>~07ss!pE98s7W+R|omX@#8J z)|BDj7g0w(4RqqexcSWs8gWZP!>!_1Ph@EPs6<ktAq2mLV#*ZW@QWAZrXlu4#ZNqV zq9EfM#3!ydxKNxmsU+6(5fqU<_D}M&B}l9&QyFM_b4Rn6U5N@@u#ibFnACyoU;Ekx zWK^YLGVa_$N{@000|J0a#4XCzU=O)60TDLg$fIfTQiG3D(Y(Y!g#G}A5t07~GZ2v~ zV?zo8gkW)|Mn8R1hhq_00bVhiwPGTv9K7oC2xckerv@pAg#@bLMtWyf*H4_$Hgg8f z_5P}R9xBF<n;4@<-t(}Sa;PqOK;I0z=V252bR-6c2YUq(TEpaf#^Ga>o*w2|P66=X zvqd;8=f(3$e}^L-mHbNHBzz3RrsPxK^Pti}^N)IX3KCunQ`U2|dl^)^cvy~1#7FEA zish)ko3Whp`6o`rB*-%#zwD#k%doUWhVJJ~j>ASIz3x06^Mxc?B9C@2!!+LLEyE&+ zo|2RPx_cRV&X6{3CFfubfx<fmvS{r@4~Zs+DvpeWQ+vyJ{lpI$$@Uf93x29mbq@fH zMoEG+aCO|Ojqu>d*S|%`^q{%hwG}s6SdVim1xFgDsYSG)ak6Ah8NIvLsXUY}T)Qj% z4!r48A!rk*1Ls22^>~S-$G|LGpiYFv=iR7M^@9<>i#W4IR4)|CDcO;m@d|tEQQ46z z#9Icx58sm+HZYu|7gglu=K5ud<qw^6>S5~%Ze^=m@lv*EIsDP@?Cppl7NTV@rV{P0 zF2GM~RP0G?p`F5gz(jJ}J3o$Po;EG91yN^TS)7v?GApm5q#pYy)skmN4$E*shGqDu zM~5>-nN?c9CSXRSehFh*%H5H0f0=Nf$JGk3FC_!>lW?yxE(&&EO}dAZ?)xIGD1y@k z=8dHLhot*a$~_>BapxrFir-4#kC;)uHqtXM$L*!C;4VqHFC^$U=S4JE9IQ^nGn1U| z3`~A!?o~-9>sg3Oy6+{2eYAW|vU26it7auDGkaG}lRtIgRPN1;8knFwBKPStRd89_ z_$3xfJ|$BmUot1%ex$F&v*V_p_<*o|G7NnFU~IoXu!GvMbrD6%?Mt}7AanG;Ai<P( zYL)mMhR&)x$d_(GUi(sX_7UkzQLBZyaprDhbVIHCrbtsZb+@~t_np%Uc06;~&D>2l zFl_7n!)XQEp82yob3?N7oy^I}%0I(y)-7L(;7PYC4N%du|9SK!B?R^3&Rw0%UQ8_6 zQsU^^lRn0sxi(esPO{+Rfs^r?boV9CJ%Hjk_r;X^PSX82;XaN^ujm0PIc$G)EnTnG zS@lH(j--#v7R?7t792_zl+VN4z_6ryF}=8ZT|uhrdOdx6;$ZSjR9|~vYCTBE<2nM| z<dN0&$m%+o&zb9UPq;JJXH)BPJKfZ}>`0QI6(TENSXJzfo(I4CLf1k1d7U|Ur>C+P z6cL@<+qH`*^8_9ti)hy#iCZMVAy@c2tNs_!(`ROjMEC8<oQ#SY0~B@NV|gT?{xc}I zdn@hZgkBjivoE!gh`2I<S|J*=z5*kgTJ5Ipl^xtoZI<Pf9XSttZr%5BZ${Ex`~WT$ z*ka$6L02TKTpLNBkS!G%mjOmng$)cv(b9`6YL4$IaI(Xk%j<S$qG+t<bsC~HsU=qQ zq`Ghghr>UA<8Pdc+$Tjx`(tgk9I_*I*~Mrti+9VESL{ixJ(wwtKKNvAS7Iv-%ZX>- zOnmsO#MnNx*Fnhp!0Cz3!?-N|5ll%wwqe9mK;?siti$yXPj`M)kV$4oi=2rn#dRVZ zQtqD;xSks3>h5DA)rb^*kGkXsXn{t$lG)}BGF^$vzUbPk5v4nKt>dm-hxWc4i9=4K z?l+OlY-%m6$`2(kuUZRqbp5|l%DWqIt4Y;5yux(e>3yS6#Fp4X*+RWX*WQdbN)djg zg}7>)$|-cB@;8oq&vFdJD<{{vZ`Jg^URYbuk6$(@5t90ZlvL$^;@6TeUZBGy&mG`+ zY75?EKEXuv+>@E#I@vA~=N6H8U;dozXo|b0_f7nK(lfOMAIbDZ*FH{3i9Wak=JC<4 z`$W{;B!v=O<32AUz%S}d?VeLrT%Ao;6(`T_A1nqN{Qk}OY}GspA|pP3lHi7<J3f=G zqS~lFe?^rn4ibMCtYmQmbh2th^$z^Q>x`<xid{+fjO@k4t%Qj}aW8krM<0CeN4YhJ zbD&Wj8Cgn?Jlwmkc-<2NMOWQ9<FXN`lx-LdMQ_T^z1w|NB&1>w-wZMvH_e!xDLZqm zx>5$~&e_J<mGwu<fm{tr<Je0$|H2)s#TmC+^+sUq6N3HN=_gQMtqs%ralHmTj z_VUHMGiSMUzw{#GS{jjeSr&KJR*l&I;bEST{T<0kx~aRp*|An$pHr8;q!zahQPf2; zt1sbZisZ0;>6u#x7n;Kgm%tSmQix!df>i|W;>{Q}aQV*NboWm8%8f#-z8nRY>x@#D zqp0b2yWpV&V~x;RbtMWfk{-(Q6@zTiW?=R53+=#TL2KRsBITmQ$(|;pVeUs4&ER4m zxjF(3<7QDz@b%ERsrs6icdV;G#jlb*yoI>vdJesMNzAIpOs^7mwTJ_Elhdzt9sDT; zOAk-nc}-&VYw@1_L!uAvs(dkh4VE7l(aj-O<A#vj=s1|%Ua=_Z{0J+-#OiAj@qu%; zqBQXf1~<v5DslnFp^4QC5?d>J#3fQl<J$-zePWp+>Umau!aXeW?QTz2UQDw_bnR~Z zPa*ztS_qYSi;C*9?9>bNZ2bhy(@#9}XGKSd%!%2e)d-BqW<;Nug5Ze^RFSY#Q3#ik z7t56Hs!8a<73$}zGRGw;qmw`+&SSfJXsV;M&=7{%fnHJUG#OE4oi0*L@zLUzuz_|j zCO5&Rnu9C{*;ulrn-K`NBb^leDt_#(#}$pFa<A7itb0e~0u)8DNHq$qLgzS@rJEom zBildPH8mwURmL6n38(Vc>5)zr>t@_gv^(?m!1)-8@v9qjl~M5kezQvO8!Zd>61^(h zPL396^fOqLSjum4R?Pb@*5U`rGaoUzL*$HMaV;W(;-UqDJETu=;}v~?$n;ntu_DFY zWsduixX5PZUvM)EUU3si<`7;F$U|vd?1KlHbO2-~2jM;@jQcYFguB~)4@t$3z<ITF z0y0-dq0kzJyH6+GZQ|oWtxa_o0pB?08w?iFur*aKWjGqOV#hjqOwz4;4r9~qg!>d$ z?vA(>Dbe}(&_w6&5A`L_EQZKjU*VZFq;7?a{4|Dti7miJ5<kU1G%PFwf4h%pHEy5y z&AV>A;}_jl-IB;XRj~_f;KsB~YmK*8)!=t1#?&;SSnfMiGx&~J#liT&9YZt6B<?&B zKPGqQF}S&H?XKm+*6u+Zw5-7k<}qBZ=JdLS4`GX77jETCRQ@TmGgaB2z_qyvw<q(j zwQeq(*`1yFoJfe{ZU=&2_tMpAC}jWd3G#JN{2_q`vI;draiR*NYggk1m&YWB9a`R& zth}RSRZFsR*$MbzMEph?miKEW6~-<(F&(RT=}~&A*u#<aQA@j?1z|-mzkBG?t?e`n z;5IJ#-Ra_|TEx}BYV|#EI{Ndyh;#ryvQ>r4Gmv$>`~WZB{Y<#X$NS)rT@d1m!9k7V zwA^m|j2&Li=3ayzf~ATWn%(U}>JNRw%np(*+5{^1gKW`8;rSy*j%(Ut%fyCjY*Awe zF6^hhQz$-nG|!J+Gqbif)|6@QXlsvkWZD;yRy*{E;q8buwl|9#{XvFuak}+3a4cQg z)}C&j&pfe3_yK^9rT90$t+`{#Iq6tyOEcn1FKSuBQX}#Qlc6A;ZeA=Ulfpjza=;Pf z5*Z0>YiemkY(iozy{K6QiHV)D2;H(<ckRsj6t>`M6EkXNrQl7b8m>=FpN7nP4{z7d z7-~Ig8%H!5duv_royOeIv7jdq{&Nx^`Kp8gI__8z4|II!3D9Z3ot}L0D?OtGc*6Am z&S!}wLP}8n<xIaJPx!l;P6K4v?+B<(vz?%a>2L1jU8*|)!@^G&t5b0&Jf)ChqgVMf zGrb0zUt!^YNF4(Y?#c<JH$YE{o^QZ~mCr{^zX$X%{oDUZ8zguR!iCY-)7A<e8kEE2 z|D5S7^Uy1~;?E`_A^C4$`ek|OUuXK{JoHzYUX_P_DmSdp=AmE4bQTk+pUF(8uZ6Js zsXJB*-UblXKBByDIu-P=^7}l~^R@qlN1>}d$b9;(8~FDmR6qCh31zY)X96bSZf8DD z2PVg3OTIj)dgKs;uNChN%vZ|zFh1JjnZbNKE`-YaIrw^+kIO%l?{)Bf_Y<TKcN|6T zWWIzyeTIJGMDTrw`FPw2jdu?Cvdl;0hj>)Eu)GU^TnoORGar?acod)ScPNOT^ji-x zKaDHmQT#srR^li9)(!l7A2iNb{2}_nCxGV<{JR_Z^m|F}=fL+o^U?ToB)P;-XV>q% zN6VO8j>aSLsC0*<<D1}bdtdU?_+;@L_3;?^USmEQrz}3!o2GX97Wig;Am!0`B_0*O z!FK}ka^@c;AB|fUpAqlpz;^-j(fE~*Z$9|eFdvU&q3vZo`0ijn9?wGg9su7zFdvU= zp?oic?>^?^@hz0Eun;=p%*W$gDBlI(dzkq~`18wts%O$&_-E#$aZfy|oPG67{A<CV z`I9W~ZOrbC3sZvn+7Ez#DF4n2jf>(@@{Rg=8GPq4-;u_pLd>Djqwp<}<7jCk!&<;{ z{8a-Yn$edszMSD0hB=Jy#CH&o_}*stI>VO$(I(2D1;kUji{X6?Hvx_XeF6I?01|&0 z;1IxXA!DZl#$^UeF9AFQ{xjG=1`tPC<t6O@SXNx=y9}RV_>T--hIcTe--V%c-NNvH zv-d9GQB~*u@B|_T1Scw3tVRX_4a#7`H35+fNnl1NfCL0j!4PsG)Iee~!=)mICRoNX z)>f_b)YjPA9&2rDZ-^c%2_OO6D$<K6R%x|Lj8>|xf*11rervsJX3w5IB=$Vd|M|Z2 z|JIYqZ?E;f>s{Bq_S$Q|>s{9gUL#l}c%k6u1mD!p^{gYn^N{|F;{ToCPbK_8@!u`D zS;D^r9D{iEKo9T+p;rl(36=uKgB}q7EWxRQ*@EW-@k!1*6v%cMB;m*P{3Yw}g0BIY z-frLpz#mEY1Hf$fzYg@`?<+vcsS)~eAnSdm_=f<=udLUi{{Dq|R4)9l>G@O^?fYYF z@g5Za9>E=gKLp~>d!P940kR&qi2oMB4M03gy$wKgV{eUwe*uU+9NwwG%YbePKY{t+ zX!wr+S-$6hlc1;kFp&J~ffzQtjX=1p)q?YYlv5!7X@Ua<dC)24{uW4iKT<FGuB`71 zZU$Zs`a1E~ivN1?F9c$!$hs0Z7JSqPX8I@4$tmwWApL&^vL2rm{|@orCH~t58-NqQ zS1tZUf>#P&B6uE<^3#DV_q%#Noz*4yRl&_b@|6Se81c>pvc7U9oaX{Df1?G@7aS(& z7W^2UhV^Ll-(P{B@%||Iq~LdfqrrE(_?ra7g0+Ixf;?Y{a;_B&3Kj@X5WHCM0>N_y z*_kgzdheqWDCc>>{eta++Xa6tNPSuIe^GE5&;vPh#Xm=oda#uLPgEZH-vqKgcLCWC z{~L%bcpnlv_q@;_68{<?`6|UfMeuSU<#wa<kpF2QlJZiop7+Z};5cA4km;6*e~$R4 z0wKZ+Ta^l7|5EX>Gs0#4Q-Le%b-@>aAZ2YA|09AA2+BMq>n`{?PDFvo*RU@OeZ63v z;5CAN!8{=Ijkt7K7YibcE=zY?R~Fj?`54e9*d(}Iut3lw=n_1F!ZKdFV4Gl*;BvtN zL64wI@CYKS_=0VMO@hk>3j{raF2N%x1TF`(3$_V12`(2b5cCKFR6N)hRr;1j-(@EK zD4Wq&xdVJW=gGVm&k;ZKPsi0e(#?DK2Z&4kLi3)x1AO$G_p*P8-@M0h?-c3gy^Q+Y z^qcqC2Ze6l%fjL}?_oQH-@KRRA}-^b_p8Ce|7Vq3m#a<q&3iESw~*hwcm7G}<~?`} z;*oCLx#BnP`6DI0w}jzgp__G(W#TvM4u{2W);an~e6y}_r{wnvk;nec^v$}@wZi|r z&~eWzx>;A@I7EK4j<8(hnRSEfq<rQ*{9ch~-rMc^oAr<fmYAbHzSSSK`F{bTmHr>L z_;Me`<c&uDto$=={zjYpeKz@wYmLwI*R1}{HvR=R`9o~^d)dYxwb75+(pzKW*P49P zGELGaRmy>JWm4r$&?HqM7B$jE^_5s^w1-l*3Y!%Uh3eK6!cYaao*Pw9(I?fbnmQCl zAJ#&SEuM*yAj~;JNu4r;5!0VlshdD&71dZ`i)*T2L_$SfP1QktsWeHI80}X|l`(2% zU3f)pRapf~Ru)=ibXK8{S)?ec$O~1tHT9KY?$K9C>6+6mFsA_qBvk0)@`ieqXkd*d zS=1zF*M=Kwl!mA!uusQ>71pg;3lk`%dZiks0#=t>j~FvWv#YTpJe7tkNDJAhmYkHY zu=+}C>elHNwy+>pLgQOVs5vM0q%gfMURYOK*N}o{T{E{NAQ9Cfy(M@yY{n!Ba?szk zA9;qN_+fJfh81A7#Hzv@Yr#3Sbt}qiElDAYZqrhnC}#;zrSz-%fnDPlLbTvi)CE;A z8-eqN9qB1_fMF-XnjsWFK?;<Ktz=~3RAknu^fXH$b@eZpGb@>taP%9-uFrhVTYgTS zM>(zkdt-Q2$fEx1sQ=5oO)d|9aGYly!Wfy#b&(gYUht?OUsw3k(|n$z7NQP+%-PRT zGlZa|W#lb^fT1L&yP6CSvA1*2j2yh{EB7RxD^@4jj0KgIo%-B3Q?681VGr+3U$;gg zv`G#QA%D!`ag<l;EFp`%>FZ_)_Ysk|9?v~%k<aMkIcnUWIS4Y^fo(v<i|Ok!3H~6O zYb^=^pUJ7u?))s?I%5W^Ag-oR33a|>J1Jhm{LMEXbA`_rRbGFj_!vH$3x|AHWelz> zojQi%&@t2(U-_&~ebM1a^k_n&a*9m;vZK&{=qx_U!XaH@iluurA>CwdOPcB%v;Km* z_cSi*Va|<`$3Mcmx2pz+@=W;bWDfcE+B%sFf+{<jCvDkoeyf~2udFmMXRa?;=J(Al z3KlOYWsc+SR()yjo-PSj=aV>nM>!!PIA4ZKijOl7lpC!fi9S(6<UK8kuI_2XP4%7S z(5HI+)8sR@{;AW8eP@{h)hfD136Jr~x!KHLEq+imQ%=g`xSo4A`09jD%H_!SB=~L+ zJ}F-kUolFIztuDG4@*s6FA(FQm+u=4=X)Fevd+LihC^jSh5sFhB_!_w!FIv#0^zd0 zg@2@fNwAus2w#GK4EGC8Vkp8d#y^JheQE%Z_cLy?VNF0JJz%+DfuKhapy*!%^8L`X zXBGVzSj>1>1i$tD>KyT#b{i>v(_f~D-}EoOA3=P~@!INNVDs~R%u3fYLrzy=^UbpP zi}UpOT%Gj!_+cwqVqo0ID?OWUT(uHLxoA4B43}$QHmj@=am#K5M_Ij=5}Woq&vX2+ ztyWuw8}l<iuP05NpttMDew|QVxT41Lz;@cN^I4wPO&r|e%=5Kg{QvIr`YCiOtGpvv z@1D+pr04aipRXn#nM#`eXMKJpv^mJVJ^xL<E){v>^?GkiIv+Gv*W2^@sFbrwGO`5n zm_ME`k0R40i0tioU4xsF&OEmdp&hK{?d$WJ-&KY~&Nfus9^}pGdCmMGo9ej^_)Lz^ zYqP6HZ$r=zq|*7&@H;<$28C@pho>KkmQ*yo!yg^46pJ>Y&a7HW7R4f{{Z*)^9#oSy zT`F<0IU+jgd4K+up+WwhUH<%C8{h3dbIZZ?gYtLXJis5l;CUsLmLyV0^;gWxPzrRL z#s;HvGIQH=djip+$Nl*eD6!L@{~RUewj=8q`On>)9*CwN*Tp%?a`+=Sx6Y{J>u_k8 z`XXADQmavALo;&yIYs&P8JmU#DxUR63!vS4!9JC<@1aE2oW)NVy|xtR)mch>0hAq? zB4kDfzZ%TX4V}ZIN%MCje^6{xwC?mRhc~S3Y4=wggWh?6okJ*ceF5rQDz_C`gq>`C zO_Uahq`wFSFvSv0KSbTH>>lL}Msoa}1?mn1st#z5$)gI{^~-kW_QaH4+3*P)Qr>r; zwdijAE4dT@if_kRi2-itxw$Ep7%H&%fXYe$+drP-^R{HmJMNahp<f0g?*=1p=zK<Y zs}ogwLbXtSb8p!TvM*Ya;hSDE*uCW~WZYlT5s2Q5IpU<JnM)mu%J#G-5Qr3K#tR*& zC>b1xE`pk6`ZIxOai+idiha<s<>R!c!xt$TOvzo}q)?>Q@*fbeGYx~C%AFF7yoerk z0D9D<`LPcJMQID-+|p=a26U#Qg@Yr-zw9jD0Xf)-!U=%ueRpOt>!TRzoK}r$sH-0f zR1{~R;@x+!G=XSIrtaFo{EI`gOxNyuR?&(xTd#q#;-U<H#eRP@eP1x*q2${kxgdjA ztnPxrCbfdh?%XX0-COxw?%C&yARXQ_(15?9!ymcgc_!w^>7w0@qMN&=eSOVNPBG#o zmf~K+ohY{Anxu;#HA#P#V*5?EbNQziAE4$j_i#DxFcCFN%)ytVe2ebGzmjeESA2IM z@<AZdV>^OVwbXyJN3mL4UP0+`)M)IyPlmmUFl4&wZg=+E@4J`Qu=18|b7#K~PyOKB z!|uiH?(s(vxahv{h%aTi#~%w1|I)ec>|LN2WV#pccaQG~4{%4ntmK>(W(%xl<u8Y% zvzDL*&YGXOllG>PYH~qmaT^IZ(expx?yI^}U1JApQ5EY+UQt?cJFh6bcn_~w^5T8y zLJ5b0;>1!M3R<94rI*LFI~j;LtgTGe7CK<~f+x_Wk#Y|z1C<?P?n0=(bIhG=9diSn zds&&AMquj*8F7ebbQ1Kc)zFJ=j~y6@`UfJ<s(RN7yrG4;hkecX4!-HU00vidxI_BJ z?AZ<7-N78Z-V8)<$y9+cJzE*&Tm3x|^~F8*m?-KvepMv>AL^N)_V?+neAku+D<(5X z)X^V(RqF-+I?hHn9V;D5>3SmyPV_wP>v=Z(x(t^(FP*1-0(QpNgYTLf*1&wRN6n%< zl~rq3RaC)RuQjk5b3)h;H7-M6uuc=4gqvr565YJd%tS1w_bKyQc5Mp!4<$9xb4il_ zn$S7g!zIx_*5NQp?W}j`lNcPqob(b;2>lC~#W?BZ8T%V`;B(T;+pV53F4sel?__uK z2AMyx9-PuQ^_S{>a6L}2r8Dgid(VSBI=-**U1W*y$($_dy^MUd_+24<Y%k>;^kw)y zSSoyMH{~4o_&DGRyL6}0Q+geIcL|@gqhtQ4ch@X@Y)|D(x)!}G>fJpceCo+WMjPKa z1X1rUm$wld+gCZm=b(RdJNTD=r1{z23H&yFI@aft;Q7|anxE~joRM#_cSyav^Lc;5 znft+>-=CqMfUWgmAl@atw9^NF);&PXkG&D`hk<ZerQ#2Yf0p2MAmdLIyikxY!5FE% zuc5zE?g8CzvvvZpHsE~%h^e@@7I+r$^FU0oy$__T^)ByLAmiTz#M<JF`9Q{_Jumt_ zK*l?O%rf4uftY)H#{wDt3hJNX)a65;_ih1V1oqAYBC2-+kn(BAh4TJ|Ofvp!K+N2{ z{C>uAKMurS)=vcg3rKn229o{_3BL_U`D?|`2@w9W=HeguCIhiH;2j4<7KibBKhr-7 zB9ZG2q<<YqdJPaPSxbR%S;hEA`V~OZ+22U_0O7Lu-a%ZBK>Q6T5cCK#kl{zbL~Ivq z6KoP(E?6Mw5d^4sD}l6AWZol3h<`mAlWseHT&FPOV2k+8xRon@GY)5fm;7eD=@$BH zK)SW~k#73&7U4JJm|y&6TxR`|-;A>b;y2?eXXT_D$4mOnxJkQO7Ba@zME?Wex6)s* z`N!D!r9YVDT;H+Le`@nDvdP<H^XmnXg<P$Ouc;_+{1d5q3Kyw|uzc{u*Am#t=kquA zaZ<%O^~cFI;nihIR%{hUMbbW;USRQY;m6{gQ`JZ_FEGPy35@$ve2sMajEJ1$00bpP zm%#dc&q9>qT0Zvl?faQUvL&wL*D%`$DkQEV>y#~#Vcj1GHdq4e-<FJh8Tnx3q05~# zb!z^^36mz|dOVYJCLm-&jtbAonKB70RTJ{22)q8iv`%dbs#=T9J&l%SE649lkFvvh z@Pp$zD*JdU*MxDH?tt(ZKgKAIQyhDg>+5$WV~>pTFl@NyLx{R}lh&;&U}7HYfo0(} zEL&Mwut<_pVC1w(;6CJ&c{v7ol4XjIx!%@=w&5W_$MKi02G1)~Hv0R#E`))L<>5LN zpU>8HAtu2etCD%d^XM}>^HSkkq%CjwVRj=B`P8qsF#DrZ{Mf>rdsw~y{|+@!?B4#S zueE4&PxJA??ynp}()a@Odl38;>0j}u9q&2fixw9=gp=j(M_}`j_nY^n<L$Np>jshE z`{YHWi`pr|*Rsy=WhC=O!585Xd_6r_OX(TmZV7-pvd<ba6(PP4iVM=h5U>dOFA4hc z7kR>ieEB7#-7PfKh;R?WM|Tx4-5BqDge?Sbw&ES<Zh4#J$f9h7k4wxj)q_-q3-mh2 zn3<USH18`&&hjBNf#Pg(Z@CY#6z7m8hN2p}o-$;->E3L}$x`^3p_C8ype7fAZwOmD ziLZOLVQR^tupZ3bl9~LPsh@ibzfuh0eUi*H$}qLOfwaf;;JZx{6HKi{Uc!z_EU4Ux z9i=-dDgF|TS92J!z}K%vE=Yic{rL|TMZ(y#UiAp1V*#ek*VOqb3>kDbAMd|zy1#YE z?~oRH&SrnwKJ4h#d&IlXGZ*~22nM}Zk{9@br}w-kF4efVAHrJCoz2Iw3muar@I_&j z=1<`ff#zTDqdz>1s}aq=KA=2$H!|O|r>EXA?;hcrf;zY!zjM*nw*vnp*Y1-&J^A=8 z!S5FQ9>i}yet*aB3h)-=Hy6Lf`0@VQd?jlme2#nj?7_{)PYVx<&c*WP^m!Sf)0F)Q zy+oPFHK0#i>3!nr@4&^1pgRwPlGA(Qav7{H)@<lEiSE{3=#TV5KiCW1%)jjKk(`%a zfS+I9Q<#6{%zKLMJ!mwDLHyREZRn&txC4^+afQIQwhw&wfiKhtzCGY;=!I_>^3Qqq z2k0SuuQ&+A`_7CffqYN+1rU!8@54Z_W<3DJU)DDKL!)GU6$qC#2Z(2Ymv*}GsPLu( z@#yfr3MM==yj)$vqs;qtAm2lRz`?+afLPG+a%Gk8OE&`fUh{b%^U(wZ%YfyA1%e(y zfTGs}`F+u}E59AlZ~DPP@tb~iyZB8%;(N4p-uxiq;xFb}ZT?3<vC@~@=%iWc2W|f2 zHb1|MTKO-u`LDA1ciQ4_u+gdKY?a4B)#~R+Z1w9&?>te6Q%Y*Vy2hAwO9wSZPKost zeL>agy0umEU9<$3YI=#Oc>)2teo)D(bfgupudl<FZ$}yxxe9B_F}sh^sjy(Os?P#b z(|!{~wK#lqwQ~7aRaWBIvNG$;yqaeKC2$3+%GW|O(aK~|CN$!uAc;{+R;^jJn&nFj z1~1QcvW2SZor4p<48iHmVD_q797v?A#4_1d0TzWdw5yqKs|htH)o{Jdx2NXl`L{>D z4>zo<tG7<HoxTtA#&>z}gX27VYeEN7!LfhG`63GEVH`N)=Ny|q&Kv3aI?uk1k>HHH z;T#+okUY<Z!B4ykk_Knj4>NMUqsgv^F<4ohWH%Pn+xOgT403cw<T>ESAf_%c58&DX zT!P5n=It366zPsh1#v%`h*sf!owpxH`j;WbLm1c|K@Jcvrhmn2{`ibz9wkX!_1&3y zd(7_2muUASd|UsP_E25Zm9Eeijma4p(%~BXhNBc-3_E}Lka#_&Ui8w4gt_utE-~>E zx*w`l=F$_4)aP{;aHi?%EXZcP;*&!6S(v5q*bd0fZC9xTBgZY@13*3<y+@H@d`oe3 zzpM(NzRJS-mkMLXiesr+a$~tnkuiT{NnTN;K1XsD`(Rr-f2SY0)Z(>`j)9$p*$Bd% zQa-G~?1sv$d?<$X6ji6NRK#-jlxFA(T<<{$i;Q|zft|_*AZC&9p}?@`(b>)!hNa{z zqi&$+P5NsGig?aW_9vaCZIZGdbbZ+cnoH^i-<ku_*?E2%Li`iW<wQCxB?*5n5Zx4$ zI%p?zD`fo<_}`Mk5;{qtiMHGiXyoKFVDn8mt`N-T#Y;6rY2T@szQ|tF_weB`))xFy zSc+G!55%ftHO&~^sA5R3-1u)dehxbTKjWvp=#Tgd&<%L|vU6sm_wlS1f9vEQ1G>+I z|2FOCQgEt1%esRtm;(Q0b8>XYX#S{Q=#1u%(!zuN{nzC|PXBcU-5FaBhDYHl2fX;r zEAZ#<^}A;s^XEV7chC8UKe8^*KX$LWL-LTC+#b{fh#a%_w*WuFpQOF3p3qg)TqyQO zo(s5t3cEUf+)E!q5>y(3`6t5T*dqeb>kIs2p=a=_-#z<P)jv?>FR8i=q+OrKScd{1 zerW58x&;D}=lqf1tG=}fl4cjcRL^hxX(#ZpaP1lXvBwelLs+ZqMDh?F7n*oes|rGH z^}CeOEcrj%#+dKM+ITxUF4}lMK(#T?t%0AG2~XL^tuuI2OT(CA#C1Api*#>s4_`cc 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� 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≶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 F{{r__1zG?A literal 0 HcmV?d00001 diff --git a/lib/osx/libdiscord_game_sdk.dylib b/lib/osx/libdiscord_game_sdk.dylib new file mode 100644 index 0000000000000000000000000000000000000000..8011a64a0ef657bd978e6cb275c221bdb7c65311 GIT binary patch literal 351064 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®Lmk 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 IC;Z?40=>;aH~;_u literal 0 HcmV?d00001 diff --git a/lib/osx/libfreetype.a b/lib/osx/libfreetype.a new file mode 100644 index 0000000000000000000000000000000000000000..e40bc221189a1670ac345fa4d45e2559b90f2ef8 GIT binary patch literal 868256 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�p4+l&%<OLr%BVY7-;=s$)3! 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 VgF6d@07osh_{f@j#Y~%y`ac5E_ecN$ literal 0 HcmV?d00001 diff --git a/lib/osx/libjemalloc.a b/lib/osx/libjemalloc.a new file mode 100644 index 0000000000000000000000000000000000000000..81ee56df295f88da3458bef7f8fc31bfe8fbf035 GIT binary patch literal 1515176 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≤wOq571t>~ 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�^rCxM!+j<jxC8 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 IoW>d=4WV7I8S7!vP!~!C^ZNKf=N<>H98+J2~9K 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%0A4&xqNUbygMfQuLS!hpw_OGptURf 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 D5j({! literal 0 HcmV?d00001 diff --git a/lib/osx/libogg.a b/lib/osx/libogg.a new file mode 100644 index 0000000000000000000000000000000000000000..337689f01e444c02df45018fdbb5e7e54dffb8c4 GIT binary patch literal 29696 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 E{}JHweE<Le literal 0 HcmV?d00001 diff --git a/lib/osx/libpcre.a b/lib/osx/libpcre.a new file mode 100644 index 0000000000000000000000000000000000000000..0f04e75cfe7fd2333a29fb54666b11c021ceec65 GIT binary patch literal 132352 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 literal 0 HcmV?d00001 diff --git a/lib/osx/libpng.a b/lib/osx/libpng.a new file mode 100644 index 0000000000000000000000000000000000000000..75d60db888c82e9af6d85d783c3e7b122f423c2f GIT binary patch literal 282008 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≈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 D>ZLa? literal 0 HcmV?d00001 diff --git a/lib/osx/libsteam_api.dylib b/lib/osx/libsteam_api.dylib new file mode 100644 index 0000000000000000000000000000000000000000..d23ef4c5ed3ee733dbeaa010049b5da6dd006340 GIT binary patch literal 540944 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�@3<VLaA<2`}ymdlEhg`dNe*wL~9} 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%0D5G4YXqPyhJA%CY}EcH#3r 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%0D~Rn#-*hs|zXWk_ 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 E59LDluK)l5 literal 0 HcmV?d00001 diff --git a/lib/osx/libvorbis.a b/lib/osx/libvorbis.a new file mode 100644 index 0000000000000000000000000000000000000000..0edb8eff31fe71731fa116f1c6cf34c069f2ed2c GIT binary patch literal 239464 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 Xwa-<Yc-*jFb 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 RYER(b!23RUx1?0?kCDx3fS literal 0 HcmV?d00001 diff --git a/lib/osx/libvorbisfile.a b/lib/osx/libvorbisfile.a new file mode 100644 index 0000000000000000000000000000000000000000..c774d9b616733db72df92f52b88d5afb725d25d3 GIT binary patch literal 35520 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 literal 0 HcmV?d00001 diff --git a/lib/osx/libz.a b/lib/osx/libz.a new file mode 100644 index 0000000000000000000000000000000000000000..e1a60a4eb0db2242f73176e3a880aa59fb64afbf GIT binary patch literal 106176 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/SDL2.dll b/lib/windows32/SDL2.dll new file mode 100644 index 0000000000000000000000000000000000000000..64789ee4a9237fca0b6d3978f93223f694a25d62 GIT binary patch literal 2270208 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%0DIpf z!Y-(H5H?lo7gY7!Ggtd9^<Pmfv8Z0UIV^aDsmg6<3Xgz9AB$t~he3G8foO7a2<ws! zHOIwtvOm2=jh%M?Y<sWNy2v6%aym(TAGZa6ge2yDTS(%X`#^=#>uc5)h(rZ_NfAI> znYXeYTOnMXq;*Ov>zRz|1eJ~15sh|4$|I)R(lS(>V7m2f`;dm%*!NX<$gC`ghe<g( zuZW2oN%$!2i^fRfK&#+rwF&6P1y?!lEj5J(9TTEFQ=g=v_ApC3$$SFwN-o~8p^6&# zN_<^rCn_`|anxqrR6m2#X7)yca%SL6+BDuNj!GrbBnX8iBD@aO#l{P-x(Vn=nVAO( zt+QJxir29OErmqZQZ`tht(neAp70<o78IRMPES%LcBG;zOTL{*qTv!;y9E_$4arw2 z5dBqGpG24S>KVjdJ2KXCK05Un0hla7tv0=>EYLSycgF~BNU;d?Ic8#INv-C&h7f-P z@z@$$EnT+4HZ;8-p+*Yw;|dOyIYWV`Y?av=RyTHc5A#-H^#FrBT#xXqMTrY&QIxQm z+y>adTvt5Mg&bImsQ!=xk5-$Bi!`*6wH{r&R9pFEC2|WJWWUmetsV9n*7NXf#o|Bo zuQ7+TZNU_DV8@C1uy5ojMu=FI1xXht8}x=+y4c*zv0-!nX*GtYrc|2b3``By`x>nw z*d_B<)_Vb`W|5#QFpWe?5KqB(+muzoF0hQ)2pbhj*?Ajt61k}BJ-Hxl0`MFcq?@nG zc0uaLj2-WSv>EB?f|Pp}J?z#tqNPery;YB4>eaY)^QE(5_64nD^YpyK;S$R&50`48 zmq4w@hV5G0l#VzeHKM;p2A+U8TV;Qz>Ncg|@74Sr>zV?NVQSOS!<mMi6ih+s;qh>I z;!=|KE}P;d%v<iHks*AZX`sJRQ>+5(%$gEiK61BT%)J$Np-}n)iYE<x>v@p5i219* z4;bTiFvTY*sK$a;%<%iT<fp>j5N}W9Gn{*HyAVGUzZ;;@4uX>v|2<*>Kk_}K;%n2X zLrndPjMOd9B|nvpKE&t;5uLm!9k`K!-_FeQy(BHvs%?!#qGO3VEG&3z|EXrCzr?sz zysu4sbgjhfz(#=Z93TV&U6^pWUQKSl@CkTO{Rx9@Ziwtl9DOZbye#th+FId8b$VD_ zj)9Af{qjSiFmiQTiR<>X5?6Jm64!zysygK@jg%B9K_#wg@MI}^&cUJoMkLy=7A(Oq zm1`xgtCy*-zGo$_>Sh+Cy`@z*NjZ+UG!%?t`}0llE}Z=7Xv&@kJS-kd`+v=8&-8nG zc$Iv?c`9(YvF%%q%T=&^84&!N%*3UirVrL^|F47Jq}$dE|F1c-oibQJ^PO34TW$ZZ zga2R`l;QvN@J1GN7$n4L%uSgE`ESiCXvswWUwglj+1lVt`Lav%>Yl*9w%xT@S7ze; za%mBo{D=I%1_1yx5I$p#ODFdKy1=$y2-?lEO3D7xTnQiq{J$bzfy1kH+p_$>w!?BK z1~*aufh_;8N4OM;|JQ_mga6l~`VIbHkLfq~e|<~8!T;+h-`ag`IY9jIN&V3-A310Z zVxscl(jRN&!>vDLu?&0k$2y70*B@kknc)Kcv0gq3^+%U{6zPwR^5MnDpW^@Z@Rz^y z=lOqa!gzo%Hzqbd2ugq#NTfLaUw?v&X*=i){$Cp)Y-wvuxZ1P)zYZmyz6-g5I*Au{ zfubB_LD~`Qb;!jpv%r_Q8t<@Q^S>REa=Jg*mLB?p4XSeWFG5JL5vhkbZNpX|$7!2| z*X}^k4O`{xWLu81S*Nrt#kHC|*@gjU1Dm;Tpx7xHHe6{)YOtZAR5Uj{silYe35hIL z*TDbm)*KK{<gi`PZbhu)f))#r+0c!)aHGXF5ZPej9TW`dBfa04K8yZkjR^g2K*JT9 zscQa`v?U9;h@>DV@c(pwk$qHSeICh40sG$nym2Ryj#tSj1kP>Y_Yp-&C$!-+?yp?n zitJYy5y0;ZJFTDI4uMLn5^&>duINpJ?~j6w3P5nlnW2G1eg@ovl$$HI!jYwPU&K;* z&ki2)R<Mad(>a0!8K*hxRTFu#OnwwGSVv@E9{Tt!@w!U`UgXlx<SP5a&)QyhldVV! z!JOl`DIR$hFHODjz4u34(pnE{(*TLTTO*-Q%YAa|&(YCbFNPJHx3<561KzC;F6vbd znCb=^yR54Gv3Fkh@L+1|sH5pW{7>@FyYDg7K9u+y-KG*1mc{p9F*FFhLbvHOSG_NP zEaj>fh6Y?{k4K3j=E~M4PJR00Ej*(?-bI8`{T&ng<7N9%o|}eS3p#qS^Mg+p1%DN8 zGw9k4{uxIMFtA*0baN4v6m9+7j!!dZyLJm~Ty4q~8ARA_fd|V|o@cvQSi!R!nN~`p z*ILFI+x?#K;on!dT6p8{vNc}X3NRNq!%`py8rkwrYyt($ir{CXCTP}r;eJLn7n-#` zdY}Q<v$mK{XlhH;buRTOwa{g3X)J;rt#b4EzSoMvW4WPEIyc_7D3<vYC0~9q^|kb6 z^$BD90hsM^?#&JuTb@%MU+xRJ`%$~koTh?BXl}8YAMSVAGVrkXweYbV=%y{exOfoj z#Wj0zZupmDHYd6Yf+0(T>ZT$UAd1P1p3k!Yk48lN++xAKv9&|!Im&RtbH;_EY#-EY zwL0aOwKC-wwc2ul)|EUvY@5IkKBx+momL+LoGP>Gv%^_sD%>e-qH>%<kS~>f!gi|w zRBC0?GwFY(-^p`H27nMVdQ<3;vH$b|Jbo2|)EZ<MAl_Al5vv8h%mu(XEI~aSD^Jb6 z6N0~&gG_SseHb8D*Ha>EF4B4+kx~UNIR%XTSQ#onw`xJY%fedJf9$ZF+aTrx$q&R8 zfaF@92+AP$hB6jlXK<+~G_eVBU5%v(3DFSpK6nl7#e0#7Bq9k}fY?H_!e>>vPa=PQ zVp4~!i}?sIFejmjNbW^5BcCT(v(csNDp8xotxitj@9#bikr7ct*j1Fe7n80<E<v7= z$9W!^AY*52f{ZrVqrw7jO1gzEeds|byzEkEl@Er5=Blv6e5qgW=IKAWf-uxKAah(W z1@=)0@If-CScTgV0}oT4k$i!he2)zx1QNF4e)sh^h~YGdO#wWw(hyV5?S<sm=POrt zcuy{Y_{qAwoXc<WEPsW7#rMVdj#p|PLZzHCM;?+TYve(@`7t<UX7ee}MNcgHis4qy zz{H0E6P(RC@~cpr3LldehVrqJ?85$TZ0%bJ0DUEX<Bb#6Mq0i!=?sWRgPEuAPs?Mp zccDz=>&?uk?wA=F3tg?0G-mI6FL*68urUWDPgbF5xYLKs4$%3@B2rlVfg5eVp$r)g zh&y9`shXJ>qHm7uumP&icLXQ}eZ4k7za{`3<iV4mX;yWmY|7ry*Oj!(Zd4XjK@5=C zrhpDCaV|f-%ULuhBc;*KDSsLS18ng%Sp?R6guT<fWjBcu&{ahPrw#|W-uZ@!AH`@V z0@%Ca;X**cQEkGxH4{6sM*7UH`vwqfeCv`t>GK>ct=ye#;HTa@5Zsyg%H>U_ow_lY z2;rbz{wRB4wDagt{%8r_L#<fl%hdU3_qn{#Lv8Hd*n&p(uoAf4@-eEvV6MFRIhY{9 z#oP#<@tPn~L5~TuP7ia;sw}fJ%ZMy!v?@WX<pw*e(2;KY9%B{j=U<ZDw7UR(s8tRg zB}u33^_ujUbl9I-1}i8r&cNG>5}mm7O5+~{3AAxWjjBXk)`V944l{jh?M8g)DP4=O zHxMQ*&IqqUfS2Y-h@|lM#>pSxqd>vsFKDX@xbW~0MWiZOdD)k-wG^cYA7y)kcIgm1 z&cm0;U&8tst5?-!Hf)ezHxn7=qNzo>1!yWNoc4ZcmlqX}lL}-b#sxu+AWOm=jIx{= zud;1}>^@tT7JhbTHnPm-zTV=Byd7GgZgj(-RMn$X=4@W}$oH`{Xw!F?Q<u-0JQ=97 z+CovYsC;Rxx(BaTjO;7e`ZZRQhdt)&h#{-Y`>%N-uNsk^NEGh(nF%e6d~?pjKSHrw zN6^Qe7+`8hike5kJW;Ind=lJkG}>K)g4p<L`E>bi#v}2|5N>+Ncy=%z`}i4c0MrXc z)pH}8S?|MacIp85rP#wS@%!!+em%T{-z(GKZ{a)nRhB91|HJ$FeM9Qoxa$>kA!VRA z24hCb)rp4Xv%#=7gjZ=Z(PM&kf06C}E42Ia8$HW+5o4v-HrTHLje`|R@`@L7nVX?j zqdQ#YE|6qNYMRNs))9KW8~Js*|Jt_Kf!i-a6FL8N`_L{EbM}gAtaqsQmGCbdkRhHi zmmnryqgTF~d{mi}Y(Q18r}yf}p@%<!MklY6Z%4nAQw{r=)92q;iV}sR<K|z9LzaQ% z9K-*D`6qg_1>o(<{DX!g=id}lYWjoI4+&47btM_I4hhCj_L|e@9GKJDS{?c7nsIZ^ zU~2~0U&50UPD^HIO}NI>Xb$e(9b%Btton(Y70k`lCm=km?4W!cRx*=#pj1)f12OoM zC_%lZ1hXfg1m!j*2&0cSC5YlRgA(l2lwc!}2>UNh2eu(e_&w2q9Gec%UD^cmN$9}y z&7cEc#vJ`pEMxv}P0#=Tlb+u)|G%C7mihnxvG+CbQ59F;30YtR3wPD1QBz6lR%4|t zR9Z=iHAt33B^ZT3ETC9@kXG7a-9TCaNp}N#dtFG2pS3D|v{mZ|w9*KEV3v<0D3u@x ziJ%5Sy=zeM3xX*7{{Ls@?%srGpT19@_xJvO@9R&p_s%(Y=FFKhXU@!=Ib){ZrT@=K z^>@|(XQbZ0xc`$--Tz4|+Utw^Kj{6E{?E|TU(o+s{(JrZ!Y}Oqfb{79(|Yv(A05;G z#h9R6@{q*+Xk{F%`Us}OAalK)^D*k6?DjD<XvbS)xJMG%AlqED$%~$Y3}h_GbM^zF zM_2QF1GLc{qe16QX}f$e-n-l7)>!6NH<pDi^5ZWu^zzer6Oq!7B@G~K{7@>?LnsI{ zt~~QaxG&D}q00e=B`q;WER3?rdaev8E5NZqNwyK;N~(3e7h_lCIA(a0kB)-0?~Nt& zUK^g;&m{d2P=5vGpjpNNALda#<zO|s0SJ(BV93uP2dF2<0jF4*<sjr7)W1>3c>1ZC z&VbJ2(SKa?9LhJ8aGq5<lvTgF7#7*wq4Z!s5%OxG!mxb+XuBV?EUZ5j1A!%hBxll@ z7>YFJ1Crt#ntThf^EN3Lqp-)Clw;-u5IbHN4CavIJP4b(n^L&yOfVtiS=Q${8VD+o zD|yBdc_AilYt|syC`o7y@kgL*4e>Z0T^iyXR1>zsZlJsE0ml>|N5NSi+3BbNOr~j_ zO80M@g?P0K^?1$x+Zj*yXO7>Ue@(wj|92LIVGl_EPul~cKg4J-N_Hk(dVqFBBCQ9U zRxu(sV3xvh*oa(*CwKcOA&pEyaw=f8%tsN|3>;i=%5eDOaX#wE{e3^^F853E-d*k! zK76Rg<5%!Bqn^`Iu5#t0xdUo6w(mRuIv7ONh};H7H;0{-FDvW?r`cPXZq2E%CKX!< z+Uf}u!;oW}CtKAJEhYe@hokBkhE?!%+#<5<ASah`6i3<m<K!|1+`%O6{Fi}P?G10p z;bdn$KF!Y^$Mc3cQ?5*W>w26T5xa`%2hiRs{Ump~43|!}tz7+OZhAgH0lR?kkhE7J z;<;WefN?k_aqE3vkz-|_Oaw<}0dpoQK-+t^^)%NT@HP~03~W6Nzcu(BVTCu4C*ajz zshVbTC3`Y5ul?MUKj$PP5=N@AD2TtcpYwoJ=y+oh&tcSlF5&&^1_H8%R{Gj(nCQqg zU{%lwisz9cO+d7Yxq%#c0(eL+FyD#4!^NB;x!!XcQn?OetXOBFr!E;Kt2#y4eL^2K zBGUnmVX}aU781O8<cbqrJ4@_7Up-3aOUIb%I|zN~jtAJTa+4jn2Gn9qOG|)N1VTt0 zLo|;IaH7)(_=mU(g)9IlMn7M?3P{d(tO#y5tl)A~iDe0sHX*k%BT|pyjUoBy`GQkF zk^_<O3A8Lju2X;TL&O$GwRHBfQ_Bc3V@0!`#;S`NkKDn>1)^E|;!y?$V@VwZp&rvN ztyhcEdi62PJy2@5@pT4-4Am07+B_3_bpiFN8i8))Z02n15-$dWx_3yuvwAeR^LRb} zxb!OM9SO2+KUxF4<B1n;HRXplOjOer=*!yAC6;3(6TOhnJURCXIy#IiyQZ!`znfVE zl0YV8T)s;T16dHO+({>ehRxl<r;{LHzZPL)EY9k6Ypx4JkoGKuUS&e!G32P|QxGpi zEO93jmG;H?$+k4QecyguCCDriA>x3{dbC)6d`}-^MI6mhfPeX{*_nkHDo{&IEWSrd z(e5zE6qUaRl{$OO%UFLxd)8k|C9<akb(hSUr~fOG$?l$@pMuaEhIdlrCNMSKFE3&z zVo#;4&4Nrp)1gc*mJfrhaU!0J=b`u&O^9E_&}Om+@@1mB=XLehGxL0V6sivFbYm(` zra7M&nf5`z{3n^beIY1h7p9Y!jAe6wsmHN<0db9EAAnMfV>M`Z&B1#2c=j9x2|YvR zw-jeE*GE~#Z)$$4<yZ!`<bS}forjOo?U5dzWYEPR)%gG!CkHDl&MEbr-I};2U4eQv z|4q+tWtf<Uh3v5inz?`~q6kqk$q=&$=lk36G%|C&-S<2Q$T}baf22A?+Jd$&IMj}H zi*a)Bx+pYJR<u7icXIw7f?7i3AQyY}kMOZ_2WOJ~5Z|G}2!`W@eJ9>gP619mL-Ay; z56^;rs(#j*h4t}IVRG1ap!7txjBheuPprkW9^W}$OC(?YF82DpX}HYSm!#ei7J!QQ zY_J65?ZF=FzbL2M`Y+yljJF4{mc*qWNKq!CW7QmatePWFhS;jnIFBWw9n>~WF8In- zzZ?-l%45p4>H0go*klNA@Tq$}dfX3cHe-Q&TX_FCOSY@5U--@P{gl0}kTh#C*T@h6 z7J4r8WU6~wrx<gScW?>Mx??~8B0lWWeBxE^v+fAsfuGCylEryU)|y!;Tg;<rsG9}n zYv_M|Mwh+D&?WlQmqMeNPo=#pxX)U;9Ql)*43F3TUc3G3RIF>h_bSG(_UG}Oi+_HQ zw<}19_tm^Wa%*`1Fi@M3qPBT4jS>C_x~;{<ctLSrx0aUR37E%$zcksmV;o3Mo(-gC zLE;zI9Yn$e12<8X$%jTAFUcr;awOhxyMib1#y}vz0H(uma`JS1ZVJ#^tS1SERlUFP zNe+kVT%L6!>=bJ$m#ym#g4gg>D{Kj!W0mHCEwq%bSA;Y#CJO!+y7>`+w>2^j?+M{g z2gEKsV%)l(aT#uJ%x*Ipb{P#Vg-fTim<a44GzJ?jv@jzh(pY_ca`Ls-;%fnHUQ87J z2TH+*6M!^lAxXd1ypITEQgDCa;+c33oepRXpd@Pp5|Wcc3T_I#M{E(L*MNi8Q{}KI zd{8JkhaLpk)k{+ahEfG~#+?2Pq4$-7c;Q!KD@42=ZGynB$OZ1uCgv26Vnzzr{S0Wa zu-uhuEHY6JL6-^0c7wjBK@H7E5ys8+O^|>}xy$B<fLWEh*SNta0Sp<1%wmz%h6u}D z6zpTc4hZh0SUyEZv03UP{Jh*w=k75U^=Iyw%0L=DiO%%!iF#U#8^IN8DZ7SsM->s# zffi4chke%K3VG<rYzaRn3)DCt4}5katCIAH^96SPftHo-O?I-iSws}LV7Xr%fPs1d z|E80Ovz+k`EzS4ywE7@iiJJP-lc*;q==9VrzYOL?&`vx}T-Cam5BelM@tV%S%2Dqt zoOkEDeTkV!st0@?^KrQGD#r>CW-T6pDx4!K0z=3SeQcy&rJvnmm3N%o0ze;*M!-k+ z-<0^2Sc(#7yzAxs;y4LDZe7HK&uX31T#u_-><{)TSHOjs)~V6n6a`0p74u?X6|Uk8 zN=z{}*h;~dBV*vl>ER;-jK$}(cLwgcg(I%aD`+ob-derS8jteYaEF_TJ6_6nqjP=V zoWB7#mzX<ojSlWj>ii1pQCO2xom*Juhm&$eZq{skvkwZUpV>MpH?-HR-fiI<pyPTV zP<0(CEvvv8pe|g5VqKJDpO58k07ot6E`^S-Uz*2K5LS6K_De$3t)&Ohme?9f?E~KN zF%r<~7U(Nh1~}Y?;1o1@gmnjzVS|H+)E;0rd}VGs_`sB0utgObW-XSITsvO><V%fj z)SZN`$b4uNf-Hv^UX$fDrEWNxnT4YpP2nSb5m_31U|*!&f|(EP7f(MtK$)ODFfQ5n zi-;NFCLcRy4@}w8@W`rYa`HqXguW!J&B$ssZA2jA&MFp#7Y<sSUnD2P`N#*NLPM>^ zv)ES=#zkfyMnfxlDSSb;$8EpS&?riSJf>5+RlQFOtTiVWQdLJo+Y)6AMxKm%gcgbx z?xvuX&ejN8O*e}kCq-;f(Zi6Gx)V9cfVj*4Fb0^LJX|*V5ZtkD^s>MlAVAjE%JK=< zNz%(Fn}D_O2N_1mA-!<Y23&1$&PU~AQQ2fUj7^ra&=AQ$Y<1e;G#aiPXf%vPy~htg zK$zgZc!xj!MlR0kWFx}Dr0nb#L~PjO&2A}F><aESB8+hbdkw0!L%1Y*b)N_%PE_t@ z3kkC3RV`FTVvE)<>S!lAg#DdE(w*yge;A|%r^6sHln``fM_P`R5@a4e(#KfzG5G<b z!D(MK0a7r;%|xkaV)D$(f+w-yIXHJdKHI5l6!$;9!V06J(O?H^%(`ynpUQplH@w;F z3h!VT6$~(;%V*$XyVrwl?R{s#0N=f-eN#JXJ_FquiEVrV>w^2>p1$w(;66$4AfZDi zytb(wR?XxR3{Yf?WNR%Jv!t<lK+2vu1?1C`fi_oA2!|<l3;-F$1QbiXFfldihCz)c z7AQR*yOJ!B!<RInEd;>DD7@%;<+VB<NWFkdC&Mxo!wR*;x{iqSD^N`d9;Kw3!#vu9 ztP6!yocoktWm)l)?s;x!ktgUPdGS&&;O+2}RYRPs$m>|--#Mb_L4o_y``oU3^{78h z7z}&O(pgYAdro2tzXGAkUt_beqzuiUS|0-e{(|)UKMZvRt<r7&?_O7Ju5#8@oi1p} zvg#>%S@jR>hk6OXsCykX0FC14k&Y3sYCw7$BcRvOq=}bNN66orM=%e;FUa71%QB@S zg`m_&^2jo7S#n;4JY+gI3}oqJj)_6KzA~R%!^Op?xQJ?$Jg@dG)BWld6-%eCj586f zg{{TZu%e641@%;*;U*Cr2;DL27;Abd9qYimD`DNsK{MzU{R*1-tMqGPIV&yWtB{)L zM=L<Rb3HY2keyP!%lz!E^t;T@cBJ2Be%6$F=OwG-G2^Hn()l&EKklyUlOB-6>-(5Z z7z+EFt>KaVLT~iY5EQ*`8saVJpu`9gtD3L-dbtX4qae<hL*>LeA2WP$-O-=;&0*vP zvg%{O{b*{Op|kOWZiz4q9GTct?lQ4t4x_OWcKR@o6gn5m15W6$S1b8jzAxQ3(_Myf zHBS)y#0j9f@DAEv)f*H2@FJZ+ttT(Y8-7sr3#@}VeoJ!;^t?6PlC&mZ%C(QP=Btsa zXRqjW&B}o(u>gXGo9)}y$R=(%^?~AmYA>~3nv1nku9*(Q8p{aG^Q*+6dZ<w{E>IC} z^k8N_mE#xJ=}>)N%wxh?lOhflFvWxN(F>~Vdj`Pz=J$=f8s<WXkmNcMxg)Yx88<Z| zg{UZ|cuOpN8~)sb`yKeO-aA}wuEIt%W29C&<1>Q-7CnSqiozQ+ar_Lv6C>L*+QtQ@ zw@>M6FZST+T0lz_sJMN~XIN?ouNU1w2_|*+nU`l}7%Sk1mo+a?*51Euyr+H2f%Z~Q z+jwvLl#dH%1*)oV=cGJ0wZ6ydR-n4!&--9B2gTsQL=YJ(DQA{`O<uk6<a|~U#9@u? ze~&oxGB<H!J#7Yw8|!Vm6jYKpfAw9;0|A0a#$Aryhcb&n(nzujWTD;4%nz`*+oTC= z4+@Vko=dE0@+v62B7?YA(~U`XU(kSd^SAf6@I@9DWZEwBWQ77Ha9Gu>y2uOWjUz>H zuCKl?u^D|h{CTEPcLT{mEH!e+V+eCNK7U)-(u_9S_{D8T&=<7XFDl5ES!lCaXfsqt zH5zK68Vzyoz?ZSqB;X5*g;-wn1!CFHdo(F=ydx{vloWLEZTLY*Bwi-cV*3et2AM01 zxBznDi$a+Mmy4Y)Gbf|HA4L!Qd*mqE3erc8VmC@SDkd?-&VJ(3tPC))2-KGp&I89b zCVr11gk$uA(Hvv$W?O88VIDD?#jeQ$X+_vbHdeG`!8^1)lLZ<pAmZ&;b+wO{A~Wsw zt3ES}0^#OVfg<NWK%uz9>#4-IQ53SCXudW)X}*Abt&(Tiz(t_^*o>tSu5>bQzw$Fo zq+z?WgQvRCUO1c<9;tpZu^kFUdIgobyB1xs5to{;n`&Llcv9B`-Qr)b#~c>+5$bUr z3X_33aTNzleIFjrOF=tZ)jq2{$C{S%^pC;FDf$PPE8@VlMmlJD0(QTCM|tWj@)t6` zJjWdGMTFoH;lr7s0kI0>>{r5{o<8@xu?e2c=Jvj`F^ace$Sb+S>%498_NuP73%lB@ zJ}d01euMW*rY;_n@ecZZ5Wg_Dz}jxw`hNUvkI}R#BlC4FGKRlTc%47o<Tt9~#&Kg0 z6z;6vZ@w6Q>u4<J6B3%)TKGZeFPX3Ca{Hjb+_non?Ny%6Tb1kSQb+itJh=}L_3y&9 zQ`UT+yYkuzCYTfNU{Fn`?gMZK3hTa~Y-zHBIjShL)Z3mVr*cswTv^*UwT<zJHJpn& z!Ky(bpYRv=D;OvA<Kos5?i<Q@sOj|_!PlGGN{)Eiu_E90PW$t)pph5;dUo%@-yGP> z_T({H8SOa%yyjwYFe{^NP>4*%7q7(ypTz-h$i*&Lj*vkNMF`xPWz6&(g$x(Y$1&*| zD4ti_I(;PQ)iyPrrQ1hw?*oT>YS7dEgWLry#+X;89U^gkSqb*L(8m~$aApNej<HUp zztGSguKl=)EFEQa9cLL`ps2G<_)_}@0}Gius|yu9=tI7zF^;e=IWBCwu>b@6sw4XF zEPHD3Fj^<nCLvv~6PuT`+1p=&*`4xzq-P;p6hxYs!%m`yKXUXynQ_uBj*PcIfETU@ zq+Jc~IwVI!lPS<R>>pwa$O>{&jxz&l?*uOA+&YoCmVOo2(r0Bcf8@x5nWq$d`)(vy z!C~-dq)2h=%2iws*CUVFoGuweAu5Rvnr0j_EWlSKwKX0UaT0b5GF1y3x*(|`kP3j@ zliUeD3`%aFrW}~{J(Bzk{_BeH>a$Kr)kh^`oC}B#Cc}~?RmG6={s3}<qAW;#%_Hw| z(hJUwOVP~PDLsyRwh9ng!JafDE^v3hEV8>t(m$tJ(TgI|jX~ei`Ec>Z_BER(-S#~) z_o$`-n<*l*AnfzlA~*RssIwL(oXv#mP@DPSRX5L57^FS&`&a2l_HLI`;kWXOEgt@^ z+v)TQ<!V;ii>uiW^m+(4JM?<UJ$Q6&z<mgT#0K2v^m>T)H+va);SEF6ey5ug%P^q8 z|HCzpdlvd6wLd4F6rK0o9-Y_ie|pu$*q@t*j~pfQKkt7EnM-WrP^k5pvE)-!tv7#E zRzUlsu?}eCZu4bb57{rj<D#@bTCvL&HS|s8hIX;?HWmJ0s&<@;3M%7~+YeRXiQ8zA zDe7o<1V<)zy69E@sW12LpL*YEnAh~`pIQe<5C1eqRB-#JeqY|zd?p_~c%(JD!m7%( zY67v@`ItE7SXFseF+44ffEBq201CA`+T0j_HxD*h=)Cit$iqX<SAmDunJ*g+69YrC zU&f&*#w=~jwv7fm7R>A%l&&9E7NJRUkw2%{Uc}}_AEe3c$^1046(#X_&<GPY$geS# z3~$I+GmI2}dhGvAGLOQcXC@+t-t19}hdfa_f46l>o>|^vuifnStPS6c+wmfoLrY`+ z&cj>EV<iEBFcxQ_D<I)}CxuQrpDqV#3lWd-IjB1bl;+@ex(Xn=&7Ot)*<8gRXo3;~ zvBQWT`}|X|b&G{}DEk3}bva%ct4>3)!w*W7o{?M@$3oTYVk{kN@hKG_5Ao0AHN-~U zHe@HOosJJVZVp8eSm@MlVjt+<{XBBhz56=s=DB+JH;$9u9Vkz2uj70`suuK((6vZ> zmwi&?^O*Yq(GqRfz(1p(cxS+1Oo#1AEFGJ2eNboKocjS$iY%A}+vwzjQurflph}*v zHkRB4_Hcih{@^RYMt=+YUsEO?eTPxep8e0gUUf3c9W|H!Dk=Wa0pF-w0w*0+5AavF z2{Q5|C(HvXHMt6wLT-o3;r&ZaUqLJ4pu^_SH#J{>hgB)f*C7MC@pY9Ud>skC)`yQ` zD0xH%x7}8GEB$}Ua2O{a2b@XJAZQZn5*&0fBFAGX32|9=1sfUcG1v-|br&K;!NP27 zztU^XZ!zIL5ZrEJLk4TeHF=q*H1^Fr6O0J1#>|C>dirryltYgkdO#RQREV93LMZ1J zk)ArYsMF=#qAR^N`AGyzE+g@c_uI8ffcq4n6c>&gmUS#FACd|A-40S<614%Fdm3yo z9P?O(A5@?bKd8-SlBR)DMV7K12^h+x7Sp9!Jld?B#G41yDu{A)T8jk}I90Ga4MjfM z(P<r9S?lw(zmv$1@*}1983^d6zYk!HgG7k_-Z{qccY^$=BWcQewI7>H9B=EcV{<uf zPex)tM3M%p+g~xUlZlED<v&<=KNcOE`_WO)-A}GVc@AE&zuh)pY`@F{DM(~c_p5QC ze7AKO!^V*V&-DlW3>1wS7Yr4=^)RXBv~2d_^jTR(hmKu_sp>ik;r!j^=sat(A4<{O ziuq)1Qatf;Ym@ZB3;Ao4a=)&Zzuy^NeL74y9G>La+##8tn$7q@ME_<+9p4%AT}I{X z=(lOuhd~ME=v=nRkZcOV?%@ZmVkkK*{G7>^`76>~!FnR^PRIS~7}DfSp|RvGDyft{ z@3sFQK@L6Jufx@TCtv95|LOJ%;jESP=&R6QQ*Ae})8M!&O{va*pz~S9sDSc-{voTR zwhb=Dqb5yeL#{S-PPw}6A1)R_z(sT6SJW1Mk6Fi_IT~iqchx$$_{Y2bZN<OV<!>wg zwJv{K@y|{B+j8Wp@L6RDXJDJHaKNzU@0T6heb$X|Wv)Io@hKX`#osyH3W~gm#KL~n z9~3U|RPRsV?71V4?)t2C+jHzrtQ6bAsT6)ax*cSJerYi(wm!Xl3_dIWU{`&Feph|O zzc^hVb-pO=Z<Y4fTBFwYw<dnePND=xpH~nktrUE8+Mt|KFaB^B;0ry(s~OXH^lLez zZA8ZKQTZQoJe6?^{yuob8QtgL3ehT70L&Nbm&0JKFl6KC97N^nZ{08gZjs-%rtP+H z{1vQ#l}|(EuDBP`U(r!lVkDLUel8v;^;_`EA*%bX=AS<Yb+W4&c@0WUFJ9Ac!B{dJ zeH{zfkXJc(3x>PL#g)D2HTSrf`~ms}&gaUwsQLx>ag4~fSfp~1FQ7_Ywh%g4L>z~v zj!)zOtU0Ve$(LZZew;XzHbkxJ*4WsQ&11Rh&c5kr1dgn!(|8=jpy4Ns_}?3wC}#hi zF$v#yn}y+BMkb6(RBv)&iMqgqBNR*HDM5hns79%EAfI=MC@h~Et2i8E)>!OGyyD`M z<_9-0dhjEbI*_Ebrs9!VjeR9L5PGcY7AzQ&P4i_4p9ep`o}mCtf+YHY26c-DpwhZA zD>d@7UJe&!^j4*bVSoTA-2P832UwM4Lq4j2Yjl|0B-8j<k>9G^zLj&ko+CW$4LU3z zGqwj?&=oYl%2CmPHClUW2mp00m%73Sf!wCKV(D)fX+fak0WEFO0}7hmwW7V^{<sI2 zl|B|Ml|-$iP6$%zSS>vD@6@S0ZLfe%ClA^yX&Gq55Jx>H=Nk@Ek;?e3-WyW;eu!O> z_*oaWlHC5V_*5I0e@C9$xO^UuE~EW=n4OrCkE78Jd&8}tpX*IO)7Bw#oW(M2=ZJoO z|NF=I!#*YY*rlIEAG`Fkj7Kj0EaTCa>gTK7`d9H`Jd=bkW^i|JJ{$C3>*llZK$;<I z$dI(pMg_Vid^V<&A-(S-J3|%Kqr(ccX=)$YF62J)ZgNi@mIhzf2p`teuaWwv`LU+Q zd6zX(|1>|2-G5GSKPNRlsr}w7)AjcS?5=^BjAJN3wOo^@AE9yJkB*H<Zw2BnSMN51 zjoNee(4~iyyT<xbQ-#+KbFwfNa|g^9UOSxFge`7IUk7(5DzOEsU+ZbxR1AX=S;ye) z5L>LksnL!eqJTCR=V0cQk+_zk%k_p<t85s?h&oy8cj5mkg%5K(BQYY4Uo{M;oPU<i z8+jO!EHb}12Uc@N!ke})tV^+VVAR!-n8ge6SJp$WL|`3l_e!F&%MztbRwF&KBF7TX zq7Shj;GHTu@mTsD9VH`i5Bpf7Z0hbNFK-#(+SJ|cZ0eqii=}jVlf}Y*^#jMhS>~TQ zzQv{ZnDfea^eNv9m|6Ezz7OC-nFpwYZH&pa;Hwz171gkJW!%>JC9}KxOTUkIz2odq zHX9je3&3PvUs2oF-Sc^}M?Mc8o6k6WOuEd<)n@rK7<l~Pj{P$)mLr;Iirm8UKb5Pk z@@Hbj2>#P$mVM?P#g}~sbZg8|j!<KL=8Z!WQ}_Xcff$hkIGfn(zWNY{F6^r(YG8C> zeW5r9CJZi;=eE2$D}5M5^x)zap14w8;=2g#?j=4Nt%ZIpLo#ZTfu3*gy8wM;S}W|V z)n4QuZcCa7{&`<7m`|lKF%57qtAVLJ&yNSE)aL$b=wp?3FZ8y03ZSmKG09H7|KY>l zM*tg^_PaRBhhO;hy_ab(N3eUoG}|-u(?;8;pFqCdn0ofwo_mfWkXQI<wz2pYP*q#> zce<z2XE$_n`2EaqGJEda+M;Jui9d;zC&Pz5bAMD@6r%&GU{+$8&J#{#h7V`Yy$FC5 zHskDgHDH(<a7L_5vN_F_4Q>-E+z4On>~-M}aRbpy;SD~s)rl{F)iiFK_%S=m)8>m^ zGn3aWBhp1)c!LMg7#T;B?SlX8sTx+j&)$Q_x<-8LTX0;sY#ySRC}bH2!qev+aS~Kt zQT<W*zaB{5@R{1FyDYrFikA%)V$p~NGzVMxgGCUA^=2G24#$qgbs`?^hs$x4O_qDG z-X#$Gc1hX}B9C{H!bpO3XO9|)-{3P3^}#jN^EZ1!18{RXRs~BiD|N}7WW4fXucSe< zvA)dR{)0}V*{8F&qe!!Y&wL%$;g)bqA2IQ;0)nZ*i*u1fa3zt^k)r29AXx|<CGatm z?SXyKMS~mI&-R|6z##w}@O}@#>j`~|(BP`suS>+n;HtGA^Wj-*NGMV}K9JP%Rd_C5 zFVB^$jGPv{Ha?_3z)S?M8ILe7<T~S|c&w(zIIh@(ZNnfxTfS3&#^)V6J0k}iUzNW~ zVoBl~e87E1`JkgsBLSnhMSrZyJg`+>1+D&Jr$Br>%=x(Swe-ga6on4K%U7m9Ze8*F zSuj!+!T7$|`F{B`>F*oWv-ADRr_<l(KjtdD!ufdi<LQrEKa^+Z<NVe7<5ZE;Kl)R1 z@jS3O!;~qNSx>>_SmVDOqLjt9DTYpRHG4AvZ0{jRMnl#?fek-s?->Jh#)L5<3osoA z;IGtd&r32Kl8wkxmHZr&pO9pnI5Q&4Rq_@l|3Q**;1TOWDtRxH>m<3D$?H^dCzF3B z$t6tQrjomuJXw;<n7mIVXN^a4u_TXU@+T^J5R=cA<O(MDqX2sXxlBG@lIaT)Iawv2 z#pELwvX*dY!g{qz9?9f=l022kg(|s($^Ve#=}f*@C68xvgCt+e<S8oo8YbT-$upTe zOC`@{a#WIMF?qg9p3mePBzZQIm#E}LO#Y!HhnReyO8z~Q$4GJwlUJ(b<xCzb$@7>T zSILhv`9vnmk`f_X6l4t{M@AD8frt?Ds)B4JWRF0i8q%pC+X!hE2*(9}b67$45b~Hn z=<r2Ie<~?Y;9WwN3FKA{IZ;6l6Y@)eaMO?9oS`7zO98n`Ab-%1;R<phAwhvG*N_Vo z<ST@nBajC)1Toi1!8wE+Cy<9UWQu~EN5~=c2Q&PrhWuDTf`q&(kd+!TS3xc(WW7LE zX-J)dTt&#k0$Hsg%M|1~LY4~T84dZPg4{qzwLls*WQBs<M936@Y|xNr6(mZ?Xo0k7 z$O{T`8zE;2gx#JTZC8*72^l014pD@>tss9T<f9A70}fV%e4-$0327GyXT5}E`Glh{ z67rltc54V7qQUFe2>FvhIy7X6f+PsB1hP*<zNsLe5ORY+Yz-NuAbl$UnJkd~8gdaJ zSR;(yfL#ofmpKIUtz{HBZZ|Y>yz=8C4rez{5Vz_&0|V5-;A)Ri_b$-z4gO}>mreI( z*t_wku5m$suIs}Fh*h@$oC7c?WcJY@q16Kp23z0=cYxa_;^|+vUzJ@#>NY*hK=z^R zg(HU<5t5G_`nZWA+t}!_`JBcp-)~UK(f!p6VNK%sTPzXp)8HOS^cdcoRMMviS_d<7 z!Ti;GFtJhh)Q`zCC*<oX<GDypE{oy=EC9eBPW*{QIrcpngm?SetGpSB!ReVF3(X^& zMg;6Ccu%s>c3FlbANmNlA}=AK^I5Sgk&jgN4?mEhqVDI&s(DNvNdo9v@}X9NB3r2s z#z?Wi;P#ECv<r`JO0CKb=C3z^I`h|*V&ro>^C{FtNPh>Jq#v+n35#J`2U6=|D8mZ- z0jg_!Dugj&^*sDxrFH_%2(H5ioR49U^V+#s_O&cQ-W2+Q748Cn>z+%W#P?+FH>~mv zYdPzDj{6H%?Lr{LD*Bke<%7AZ7IbHr&(sQ!%Qvh>+h;sQBg-i0yO6$NwX~Sb->$-6 z<G9-8_(AdSklvr3uh=Ey)0m<7h9EgExr}-ZBAZ-B)rZs@(B}{)5J`BUeV2NXqXq~d zI3|xGj&&=+YPaDz<-<QO{&{$AVL}PK=D-9WeU$L))xRG3#dk<fPN-Oowo5+6Kh0sD zti;33W|*gI=yV6GE6nqggqzD|<H_ydZ)LG#&44rkk&iDNQI|Wd$FGI^!+5q7`)Hm3 zEj`*8_9@UgoX9JSRFe8hQa5{-`Ugg-%PJZDQyQa`50>R7g6jZiF|L(A#~q?CZ?R?4 z^4O*-rhH55C*UtA)6e?w{O#!3f5R*ab}x%c4CKsIoBWtJjB(^|7~AunQPQ4~46HPx zLK0GC&G$j)7%v!=0T)kPD1z4ewW@n^*)2$ojmgz3sQ?85Qpr>~YJnBWewew*op{Id zg+!S!8*QCns5|L@_7eqI6aqVGoKdQQS5MpM>9Y<e&8EbaTrt1|(6%%lZ8bOEGKE*} z;9aBfXuP@cu2*<P4&Eq@M{CZFH%8%|<KUg3@o3(;@lI2Cr#g6@cxOFm@44|lI#cSA z?clA~cr*arcrPftF1>zW->vaz5xVj2S9otbcsFW1nuu<^n-ty-2k#P%N1M@&H$mZT zbnwp5cr+s2c;_g*RSw<}ytBTvD&2Tl3h#agZ=1%Wnd!#c^>yLP?;N~GG#>3vH{KHp zuhzi}YdjjFZahojaUDnGWs1h5W$MPeM&VuM;GL`SXsWvLMk&1U4&FeGN88nncY?w@ z-@)69ck+eCtQ)U0AoU&U;61JJXx+N;)+@Zz9K2;3kLIo$?{0-R$icf_<I(ta<K3w6 zl3Y(=KN_R)XbQXWE>U<NIC!UNJQ~JsyfYNuUI*_ZytBSElihen&XD@P?BKni@n|%= z@wO?vW(V(njYkvOjrWMcTjSu}r15A_yYa#b?-2)Yg2tnH?Z%s;@a}Q&&e3=@w%vH= zD!io*UY5qA>FvfFsPJkXyj^%FUucNC@%DaA_;RCz_k_lyS?<PrTH*bNgJ)?x8tHDl zWeRVygLjR_qsi{ZyI$d4<lv3ccr@VMcw-daC<pHZjYo6djdz;D`=*1}iFekQ#=RTw zqpwPRhd6laH6BfUH{J^h?>GnVZjDF7-;H;_!pm~-Zq#_32DtHVQh1+miJo$QiN@ok zz>POS;l1tPouTnKMR4Ptqwv}tyd!vLeK}!p<7Fwl7aY888jsTlH{Py%;mflQ-Xj{1 zlL<H86AEvIgBR9#oLac?EQR++2XBhT<3z)aca6eZrtvV`&ZhzJhjW!dN4=By6`89{ z1^Xk6|E5@^i62wfsO0+QG2FGMdFR2Zs2%$bXIY=Alv9{;lcX^61aO8k<;RjjvjZuY zFlDl&(855<bfyF)#fKDH5oPndiF;Y7taJW_bOr?BV-!To{_h~PSt1hSi;S4qK&UJY z%{Nj;Ip+?yXmP>5j97Q?ejwMU;3LEf2S*a8V0>mAe&@f+$>x?x<_?Ma9k3W!X&mD4 z;j|dGX=B*m7M8*yWeyYrn$5`x1u!%*^GL$4dq1v55VsUhttCbi_m-0rVCmAcGKa?g zLVN?HTmW=-o(OPLNV(iChbcPj08CIiYXWa0Fn!oNl@rSN9@sF#{6Zm4TwzO?Tie{G z^(==84@PjhV3%Wl0as@G6J!<M5J<;!#>;B*uA6%&`iu5QWj+T0Mn1%{-+W(PZicxV z(?(8!aILqm8m_FzQkD7}q}rG0G&sN#b2-z_(`o%x+A~Z$L#KTN4gzm0(+r*Vx=OQ| zcFr(JSQaoo;@emFHiqrocOqT~%PVciT)rm1O{fpA!})qZUj2Bzh_8F(mFDaezP=={ zxp=*vuj}QNYwmS?T_vyic)f?Of0EY#ULWV{?ebcH*G9fBme-+p-NM%zc^!t=*ZBHl zyjtg)W8l4FL?|$patfiBrE&_1yvN7u8F4tWmyb8$8agA=#>X3T_}M@Bcu6jON!Iak z0&a6KBAoA8*XQ%INBMYDfS>)5k2e<Zv)lQ2iNut&_&9+(laYmZWG|}0Z|wS_*o|d! zt_Fv~{Pjs(emC;j)4}Vy#?>1jNk-64B0zsX)MmH{sejGKsFjJ}3hOM-=N&h}Yg8t2 zh(q@rW)aNzZ6!Iw6uy}-5!Q;x``pOC)5x+<I@W^_uaG$j0GXV?Kv;S%kxGI0r5C*- zIU%4NG5LsdCG2h|fpqau_ym+ubTOOGU=KR|$8abkJe_quvH^|J7l<+o+c_KA*OC*s z^@h`()hkg^fY85~dGZ7-mz;*<GB{oqP8vqtZZ08=OV6ipG{GNxf?dT5A}=~5B_|-n z^=FDH^89h?84rc;Rlf|q#?7qh@N*x&3qIEBhAlaWhSIAj=$>z}Yayn_7|v+1&kAmF zJOlg&!uNfX@am34gaF*zw=q-BroIRI5`~!RY7$W*R0vfMt~9yanpj^1WtOa9-NG9@ z>s7pUj};2!#I7ugtz|`64E8@g;q_9RNjN&;)P~PaZ6@WgHb<&o#%f3o@`5HwEZN^D z!_lPbmj#0W4=zIMAL_Hd-ug8I8z!ea=Vg1pzrush^6*(cqL*0ThwG1ZLymQYA1g}6 zieJ!ocqF|f<sy@BX-D{V;s$T-#O|8;a`yWvANVfuA<OK{R{LG_e=iCkYvk0Nc_6b5 zS4;4G&t*C8drZ>p+x<F|JX~iIkn2oTV0sJ+R#gSVj;X#m7;S|Xk~sgZ))>f|M?`Oo z$Anx=l4&zEHAOVD03xH(Z&xcP-R?T+0Yav64s4SU-ZJp-%(YSHn)PqXG%VMyIR2WV zsY16q^tUF8(y~cG1M_j=&1Q%l8I_nn4tt5K&cv(sBUi)bm&7M~0h@oW_+)DQ8i#CW zT2lkl(LJw4#zXN=YiJmLXXDouMe_wTnKj!3A(rr2Tq!aS#O*xsC~SbN)*e+SE#kFD z)j<oMraP*RSj4kilz1V}k;V!f-h@Qp*GDb*0V<)c`!k`6uCcMM1W6;L6xl*8m2vZ$ z9g~N(P<#9Je|)av2wDwlan5JWr?!gFU&jivD;IF6A5IfAhc5mw33Bo5=V=0%Dn91J z({~WJ9jb6fu%u&mbxG%3_($a2<`0WynEM=BB6WP|P9!29-(Bz?z^`}aJf%sO@z)dh zPyE>VC&8~|(oA%}vt#ucSjh>0+IP<5PfZ6bb>YZxoEaHsb}6$0?F)a<(7RT61L$Wx zxDJdq7=gCoQ8^V85dlr`d~8g_672a?eaNvt=XmI84<a_AZ2Er{9Ca0@qz1GHc&tQ1 z@Zd#h&#SpSru@9Y_H%-svs)4?kp_MMA3QeWXh-ev9mH2WQD>~^;_U_QXoHzA*mu7r zMp?cY2k;Qi(4qxK#@`!~c>qeZKu)|Bg)Ya)Qfz*1ZmH)|F<vCjU<KlAGe`>UIV9P| zd`DFX#@Szc7~VlozQh?sRKsv8&S0^5*n}g~x8KH<=+Ck)x{FA>%jw`L89|;WZaERI z?%=!8fQluKxNy}cD*i4tD=YqcD&yvG6<P=X!!MP~`fMjeLq@NFW-EYeIoe<1?LxGY zFJYJjTm66|ZZ(?6he$0*I5ysHBQV_Yb~ng-Z}E1YfdGXi-tO8HK)q_G@P6QTE13~4 zoXEPV`u9AKG{HO)-aj4Zkr3S;0iqU47~S&CW;23$*;kE)eYno*kL!ERw8~qWYj0(( z@gM2|`2xBqBJ|d}5gcA?aG;`1pN&|6h)5xCy~uy{VQft_FJy#0{)hEpo@Tl<I3XYL z_pozoEUxsxzfdBlj+hgWb55ainzP<SMcpoFTaHhiOOS(3q5k6gT>Ub<F4Xy*-Ev9@ z)D1;B;08;ytM);aG_#o)jMIYGB&o=F>OauCWK#tfVhb@P>&#NrYd6kLW5L=i^}(}4 zxnbYBP7WHu%i7$L-DDns^qZwTWY%1o&%DG#ySX&LXN;)IOB*N3))@`RGcWwhyv%5@ zQJ;_r|I(WY7Ygj>qSk4Sjfd-V=;u%Grh2$QORQV}pyP=9et}j!yHFWOlBgbb6I55! z&cnR_UDVFk7LLkT^D3Dr>c=Q)rv`ddX&|{i1M|EVYjUntJe`K_$(V1%Cg*FuA$$T1 z5rp3hwn32G=T7RH)Wn42wl%E<_O4Z$8oO~!oi<&rRV~ZguJb;Y0_lwpAG*4X>=_){ zyMtJ*Z`VroJbk_#oYgBhpAEq_q|TJ6V%*cC#s^)S;mXzHxGMw7GAY=ILki;pUYuoR zC*?PebG1VvcWYv$Fe<2Q$#lvXuXhTz!8iq@l&K>@kn6sQEPz5=1YXoMNBE^j`j4ve zq+Dy7FlwsH&QYM0ouff6MmeA_U{r5l7o%L@d=URdjGDF?-hsz3N*xvc=Zw0Yj1t)i zXqH^*soP~lE`bUizN>Sr)?4ZE^=bF`>InHkmyokXE}fqqUmFK&K{q1rq7l+#>|d0G z{{?owIv+S_&RMD-*FA_~IIS(@nBPCR$D$M@&TDW7F!ZYQ=g^Ks4Ph7_>aEE#gIvOL zCUaiPR{z2tQeBqF1K}v&Wk0O#t$s&()UVi8zm7qu-vrnXMr0%8sMq@av-~^0B>#o3 z{MqwUHj0aXW{Y)^584_;$o@AJ9}Z|igPWJ;;B=t5&RDV4tbE4&FarH?2!(MirU~P_ z`C;Zda|h0NnXOxo%F%GE@|mq&#)<<m&oAK6hP^(`MRo>z)oakvrG6Ik4xAgg7k&el zHJU*eD08_X?*h@Bza7EMJr__~0>gLdtf0-373_)Wen_oaeNo~c%mxkV;#aTo=G;Nx z*mLgosPH+8^_OX0^|0suS^oRKq&*G{Ov&>`TD-lrhtxYCP;1&|^QH>an==xvTlycP zTAVG$^c2daTCm24=>pi_Qw_WHLvL!hH*hc7rS>K@s!D8Q^xb?m<(KJXP(nRS{fkFg zo0Ct3WHxR6F)D?IdME^SQmT9KKjVKcmieeOo%VI>li35D_B|!d`yTBp{9i5=+00mG zM&xgz&meQ=RRuU%xSAFe#tQaYT7_ynFX?4G?^Pe1;iAtysBg~(ZId~dIH%V^{XwPj z9_0Dnx~t)2F1e%Qm<MR*#;)tq_w!+IUb(2^gn@8(Hse)BTClF$oaKS`N&JReu#P_D zDWp8P%AgMxPW0MA@ELW6zM=9N<JRCa11g_MEgv9S3XY&<CU$DYNq*IR3VIUPL;c~r z8_ypz&^jbnMn!Et^cWTYZ!jMqCcPieD&K64K6YFjoiZROUp%SxPmBm{FgT;5D5|o= zP%^IDxY4Vg>g$pdl-F%se5ij)k4QAb-t>q%lxa<C!;wt06+yFkK9iAj_o+J-Oq?3L z+lGMP=*01zSES^@n&N|F^+knQ)t?mJ=&3%C$l@8ZIT;J*H)a@-v!J@s`r)`fy|&J5 z0TXaI7dK-ubVBf%n5P2DKXDWk%D8G);!r3ZK{!LQf7XV{Vr8pUz8ztvdhz?msgvZS zsn#MA1{IIBYx7<{C+6$rKJEYR=X_aaY-&Oy>jpmi^;s@&_}~51@rJL`PaEx{8i6Cy z-*hS((>{o2?G1lFilaCDua%Fx5&0cy5s!Fd@ge~}>i|Q))L!v7z@0s+zX)CH@`|sb z^ScAM#N`!#fgA803BB!^`;FS7x>Pn_!TM!rfcS%jKkr*T7}fO+e+ko1Xr9~Fg*W&e zCwbMCbqlKXo&ZW3iTF%h!jP#co@XP2BI~zYdB7^rOz73qaT{{&5yqInlm-tBEphAm zY=mO{5VpG?^Y`gg9hXtzO+=KwshGo8co9z!F`s7F?b15j3!Y>kWtI`S0GKh)?=Uq- z95;YHcKK7ECrJm(uWK}$ac&-h4NB-syJRwG;VNyUi9AN6zR3BogBW5>;>Ux`aUh}u zl@RM5L`>`~S9WEz<u}*D^oPA4-|IJ?Y>e;8&2GzX2{$wNT?GQSm6@d<xA$SlwF^C2 zh<F#~0uc(%LFBbUly5}#knVm64vRwv)388L-X{u;fcLDn=kb(_`88tHWwZ}roVZQx zS9z*`6K#`Hr=rw7QtIB^?3V1d&S<*-fN88=%(Dm#$gj8hfyOdWj$l2EqgK+6L-DO3 zXq?e-s`U*6ap9^ERB0lLM2Hik;fI;{&BbpY{DPPtW}$qXKbRQs3k_JenrHsp+n#}% zhMPRBUorlERu~H8SO4zSHpJ5!$BrjY7tW}c-|uVk(2wQ)8$I4n?eRW9usr<Br9`<x zc)j8~L#lu*L`;qE%>@C!2?cUNim>CQ?B}yzF(-fAo}tJBAM#0BlTr5x7G5ON6}l+2 z>r`xUgaX%^A13}YeU3Hex!ff_gI9kJ=O+%ehhYkmuM`{JPX)1Y<jROBIfD4`k{%JC zB85H<B2+Rw**Qv=I-@@NJSdjCl|^n|qTIZa{k%EJt2Q;z78Q`7GKBnth`b20+k=pe zGRR0pmeG(KMa}Wr2knKGM(7L?k<;4|)^Jn%m7ePRqOV8+j)=SjHjyoz_vrbMmXFK> z6pzk))s{_};9*auMW&;4qv2l>APNozh=TNm0u-`Rjfl>ZOLE=K=arFMGmQ7oXnC#$ z!FlzF1&?d5l?a!#BRC-WRYGabwF=svHyUbKF3PV0$BMHk%<ZS63*svZFs6tvRi9@5 z%o~n-!cD$HY$jJfO2J4hQ{#+zWcW+*4oH?S3O$6JKwd78RcoQCTFtSa@iP^-Qa-Ip zi%&foT+v%1A=mOdixuC8za&B{t&?khgbJhT#*<oPb${9@`a<=mSy;G^yoX`Ocruvr zWqtTNz4T$oH9E;Jr21?M)rZG9eHaH2XF-P12lC9h-p*h5AUd~mWJ+Gm!@`d!I19;( zzLsh!@WG1?k&D2kWaLJyqC3QXVFP)OZJ=WsX9<EUcK+F+DAPu(=XRc+re}dJl{<he zm4+a6CP#=~#iA<H8p&e4S}gidEP9q2dWiLE*oMYN^h4b)tYN39G;wH6+=!Cuo%o3d za4`vjLt4{(R=o^q!JOD7p4f=u_*;Fr)U}<%%;mh}it`K^qiR3pP=}`RV3`ju818WE zPSA_NFMFqnMb70<e2%JIG8lKxP}YrxF+Oznd?XoIDFb~I2H`yy!jQ*}=lf8Ec{s8u zB>FHPVaua0gA1U369SoIT;S@I9|0Rpi2}0ZE)H_MV`DJVj747~g_V8;d$e!|VCK5Q zokn;OP%@7eR{L+f86XyfLD!$zs@V_y-QM>AmIvDrloDOYhv1D@eB5^7XXX{3wO`Ry zxURaR^LrQpzJq_?!oP3e-<kOLHT*jr|4zlflko3&{2Ppa(DR-B5P1>fMLO=H)>9xI zYx!8;+>Moea3lU+Zu}j;dC02vL-U=Cs^y~^aoZE`=r78Q`xW{1hJS(I@P9A--on0( zsEpzN*>b}__JGlJC<@R@!#|_Z@L$<s_$Mtin%-wxtKlEN+-PdU^VpR})puDxqv>se z>W!*zs@IlR0c|v@2C3Jbc*TcRUzgXauc)6B6|nhLqu_jbJe#fOAAi88>cZz89~sB3 zEJnY>??bckYc$1y`l3-KJT;nLtOO)Fju51t_@dEtkhm*(MYmD#iP7{45mwIAuP1&& z^eV~dT_Vno;?K-mje`9~0ZVS$PyCsWA_2eCmm4SUH=6blbNU9OV6V}%m+<Mk@r>W9 zR^vpZ?IOJDW24{|qv;jG@2rsWUcqC12_H`c<RxO&b09Pdwi-=aiCD1^&-jgo1PjTV zh*fr{QLx2m+Cr4Fm3%&N3m$78Fq(uFWzQG|Ek;v|z&rSSVhiBK+l{71em`?H{!F*= z=gz6f7{3*_;7<*a%2=`Du4uFjkZ5$G{N?N~8l{4ZMr-)DED|lNkCy#`!_LXkvWKGe z7c;qjlKlOV{N;_!(fVKUZ^fc$#qXkJtD<F%(X!3avbJd1zG&HjXxV4cJ1-)_ot5&J z=lr90{#5?{l7Fk}qE)|*R^1b=dN^A3_h?l-TJ?`;ReQAR&1lsJ(W=j*757Ff{t~Td zh*qqNR=gOkcqLl#R<z>7XvI<U(`fxA%%gs?{Jlp0@(@I{{wDsdSRAcb7Ol81TJcD< z;>l>m`e?<LXvMB*#oN(}kD?VxcKpH}M%`yn!d7JtReSgiEQMVTL$I(i$B5ibK($}> zU-Wo?%(nxvfe|hi=3VUKOtVIU)p`ocbBrat!YsZg%X}g8qxLM|RQcM+cw#^7W7g#G z&0jbTNGAg+Hgzz<z%ngYFtW^=e7@xg#$jkoVE7eAKrlRJ%}`<#2*xgjk*hF<2}WPD zW+X922*$GtBVS<@2}VD&ri2*9f^nb1C{P$>g3;fssUXHU!KhUj!xY9u1geew&}-IA zZLg{l_{|DFQY$y9&veNr+pL+%e6AI|^A%pP%4e2f3@~d##F#A@Llj1t!l)69f#&Lk zP(?(VCrC#ziv?RM1nEvJuVo0H&s=?r!n-qyUqRieP^%Pby@NW)T+O8_WO?VU4(dvU zIz7B@u)?Mn12Q&OKcG>U6BV+s#3bs(!86+#F8I!e2)+<_EAh~N=cD+W_$e`<mg{4l zjd;&UysIbF?g5QMnGTTr=A+mtze$EI6S4&>xh{+^)WG>QW~OF|sqwRm@rN;fA_Q@2 z{Jhi?^Auy|#_{tOP7`|_KQXP7L36ztLg`=f8b;6T9p;A^81n2Nf)u0SszKIdpV4qB z{>?RL1tMuMO#mA6yxnUd2EB~XNz@5q<Iy5}OON~?BF3|lh1hIgcz#Z%d8yYb_ls9n zdt+NBA{LKEtYb_@aWV$cigAt>BNU(UgufE-7#IAmAVW8C>^5IuoZ|HO={W-P1<aSw z$FTe{m-xcy$5*`5Cl&qp)%|$xn-O_*7H$&3H$CDX!<({g5TStS_{SI({jbGgw1Paw zV}=1CVUWjuEHRL&CNT>8o%W$Y+uL~Dt=&}<fa&(Te?hw=gaq0fw{@xZ?%e2@3lJcz z2bfJ0%okuTnef^KD_{=gQKak-&XbK^X_4DF$4866U#{+IJP&WIJwkUiZisG#FBPI@ z(h$^%kw4>mR*WRP^F7Ii&Y?MG$)nsm5yv<NqxE2!rz8+Skv<lQEW~=`CO_(syq%qg zuA(^GGzku8^j(w7YE!PF1k_*=yDlk>k23O%d*i6?t?MFNRRn1Y)YmAjq~{Nd4lv6N z!?X(-{TYPH5{Jq~ZNN1__vJ`|g+>2I))WL4fXPE8h%V>`H*#Z$vkTM|`Phmu;hfM5 z-C!NCl#46;QKUko8^Z$kmFliSGdrZL`L664Vx@zH2JB6E{}Mvn1fXyhgUM~iu|%Nb z3sjirFb;+0Q99&)v3U|1I3HhgTSbuRXq%=M790*sUXLQ}^&7BZvk~jj(?BHs<?{In zn@!L|%GuUWet?7ZSXd^^_I=bP4z{;qhXaVicO@qkp<&Z4qGfaVuEZq}SZN=8e}nV= z<`27)oz5i)=&yiX3E1#m_TLD3lJfkbcq0$B7Sd0{`c)33I@kIMlwN426<&?XS=Mwy zmQ7?+g8^2!LOtbM;c<AP^`3<}0X}34<x8z_&dvzj+e&cnvIe1?jWftP^k$}@!Q zv%)i(4{tuSX5k5BIyWEw3Wzv_he|gKlAtdm5|-QsTVbBKV}?JGZiWtbTjQv31c^rE zWh5ad{LP@_YAa?4$q5si1quXo70#n+XcuQ)=z%2oxh@uN<P^v0U=n0fZbLzHFeja1 za@i`pNDxL}ct3rl^5kPi0J#giNCy5sbHSst)?)uk_BEeoM<Nx!M}4eY#HEvb`x{@M zprZ(a&t)TipAl(flAI}IUwj^KW>aU5o<}rr(Bv{AKOBW{fA5YO@2$2A58z7qMFMLK z`K%=zdCe&QT8sD>tVJr}W|V)MB^3|4BvZaMSIT!!&`V7@#x7gQPlP^--2z`SG(9$U zT<qyPfr3hViwS2(_D~1q+nt#_92**iwA4%ycpmbbn^o|2SoSEMmAvQo$ilt_KC6X~ zTnp^<{gv+`z7P`RxTePxAet<f`W1FzaTdJmFh*na#tI%gp%2*$Z9STe$*S4VU_|F< z#3yYeM0{dED^&@anaK*Du0gqomz{Du!@cw5lx0!;5mOI;RmYg8p3pIB)KdUgB|gpW z19{v8VK}yrgaFLy-cyD*Hj7;2D>BM0)OF`zbp{D_7veWD2&9T#qdF%ojR#@Il9pZg z*WTBI!P5$}d=#9w`vY7>a5tNdP)gUYKoY`F+3g*KJPJtr-J9_@F`d@%9L@9u?>Lik z&=cWz`kY)wiQ#CdYV?N6qe+>HXB&&&p}Y<atR;#)%>{@nfW2vAkIOFaQ~(edux9~? zJ{jnC-Q{&eU{E>;m=ul1<DKHX^%833MjU?dqe%N^r!?Ggd4?|Sk#3~{z)R<lna6~m z@(yf@BrxPV=G=_>H5_YkZ%mtgd>8mAUQp6SQ$4nBJb1B2hPV%b)`>t!CP&b^?;$<0 z2*r|7h2y<O-FZxDA?uX2Nc{`(;wY`f3nOH{ZLh^H4j!<e-voaTG%4<3A;hflBqt0r z`>}6<;^YKB_vr~hoFMJE&Lqn2=g{iRoFbz^aG;hh=!G642+i6P<kui7Hs>q4zpH+_ z5UJ?(up$ch{jb%q?$wC1IUZ||Qv=l|N+I&o;Cb9|8cPB^V|%7jU3xC>nMzgbxzd%& zSjmoCz9=Hxjzulhl?(|ksRnP7%N`Iyz1G;A6pWSa4)dpA0QG?R2s<M-ejG@E@&;Hf zbP3NS8%JlQ^zw0(BbU~+<ZQSpx|2>F@*3{)8cY6$`GOTL21RoHdvd}^^~T|6A=QW} zKxoa=t%ahZVK3bOEQCVRn<b4zg&!G-OfnN!rzarE31w<L6FA05^lR$B;V%tOCVtLI zjuJiGbIP5tZi4?;(xrCD5?d*ykXzoL3cN(jdCyVrQ=Rt_>it~jy-2+eaNezYka%|7 z<mIUQ(}C-xw-(W0&bP~E;lK(W5L008`LWr96R)GIX*%6_`M?u5=^SJ!fmeC(10ksJ ztqR|+vF(G`<4CzDu*$J|b|kuRev5-D|AXR|iJQ{iiXZNBR^w}jp2uRd`z0<-)3cTx zD)9p*h~Ma1Mu|#%3-4A~YRYTC19BBCr-kMdZ05uPs1)4|MxvEX1dZ5+TTejZX%KJw zJdl@|%9%=g+xcEjZ*1HiJ0IV#g?A?cse^Cq3wX|0%htq)yHPiLEo?S$B>Y-3@rWCT z=TRJ--=}dF6UP%^Hug4_X~RTZORgklv1!oWy~O95$oO2RXm^L^U<W^kcWVrOp3~qA zu}|JX9dc&O0z12poYIQ!fq4}Rb|5(wr|Z2;1!@w|K7dm3y0&T1BLKm$wZjOC4JS{; z?Lx$^-LQiCC{J-`FqWc@9z~>j6wQvW%dy|lX(US*VDCU0ymh)q?AnZeZ08MSkc39^ z06IHbj?$T-J7U)rYhY@t82=Az@NVEEZ+>NepWyWzJLRI@VC&jzoj_ey<z@ukl6X>b zLa0YPsmA_1YQ`^bry+o1=@$l~=6V&Is*#Lh>M0}34uc;mKHp4ahU5)Qo+rt)pd(); zah||7CjW;d%hdBn3fpG#cuCGB_Khm}Ad}CNWEuY>DtYkDNY0mJ3`2-irINqK<ZMX} zF!}c?`5R3Bu!{s1F!@g^`8+1?lH{RGeoR%Tl*t<;c^H%LQrMH3{Fo$<VDbYhc?Oej zm*kO5UZIlbF!^RlE@JXiD!GoyGbOp0$s1Mj?M%K*l1rG}s*;y8`TLSw#^hZp`DrGf zA<5&I{FX{?VX{w>E13L&O5V!kPY$v26Pf&(O73LxYm!{WWF5=tV<tCC@>C`tKTsO2 z-$Ep>l;r75))AR<n0%KcU(4iv3Ok?4zm{ZpG-16*C7;9O>m_*>lk-$^A(JOc@@ytw zq>{^+e7+=ym^@J>Phs+zl3c^&T9y1`CL5AGkI7{!c>$BV4x;kmg{lihZdH(52zgB) z5e=zQklz!sK_F2L>4H*&=srluUj)KokmWq1Ab%yKULYJ037Lwprue3jkU0XO9YsjK zf@~pVszA7yNXR}FZf7?k7Yc-nh=e?(Ao~d^5Xf>3nWZ3~5i(dH4`|3R1@YDb^6@9+ z!9yDIv7$PMkXHoqsD`Xokh2JB6v#@a9L1dxg#1|`oKTXsVG43FA-4#GlW;;lR<c$} z$S(x)j8l$+Tt`TiKpHh<o`NhO<Oc%TpdrNyat9#+fwX9dM?oGXWPm_6Ye<U<9M?$5 zfse_9Rt<SnQN5jz9Rk^|A+r@^4<XM8q)kIcD98td{HH*6Ye<)(;3y$cfplm{je-n> zm16%)ARLj%ogzT&&NJv|EM~kJZiB||JdxuZBDRXn9zJ@U5jhXZxU{^@{?>jTD6M`& zMd@ignIUyrsgb|FN|syfui)1THUj5NHU4X7K%jLCu%nC$*!MUM0U_mJMg4A<Lw(>H zX(Xk_MCu>jN9r02&yu7Kt`VX7>)wpcWymi)zatal74pk4mR=5fE@7vQ6Dd#Vt%j!t zawM9a*n^S26xIdnZ9jrHj&K}3PyiQ~mU9evqN9uRJMhiqN@wCQ{@4pNGBvpyc@dC1 zw=+LP_QKe_mgc@Q9_An{*hc(OVZmBeSg<yLb3hGdY99M-j38j)po77-%us(PL{N}Y z;KaI;s9Y0fS@U^(0(bBb#0kV=3M(@~eh!YfE1Qcctg+zs=CDm<{73!)?a#MxtzZ@d zjON@u3m2J4!!tG{te4Fl`FGDk#(2fK7Q7mF&%$#hpO+818=*6?4+l&$ydOCtu~8Bk zPt!QARDx*|HGf$8vyK9JF5hf0nC9k=D(3RM`aptd$_LXl5<k9Le~iNLn(;Mx73!uB z=Eu4;38u-9Tc@W#ZUsF;u=@DGr1ZzF6H(p83qiNaB39u6%@R_RxiqS(O11s|Zn+FQ zA)QMxa>4iJ9n9z{imj@OMAu|K9hHKt^0~ZQKGUb@d{T9oj+kG5Sh&V<k;M_@g-*A| zW~U3Csz{CD6p0kotPpsx2$vD8hJ>YphUFszbJ0rn+S^y*uW{U><@iBcpGGY(@&k$& z1&bjcnB0h>*79Hwj@rQfru=J2U+D1UGE$=E%}%;p8JJ2}Jqc@t{8%ppIWM$5G3x@P zmw;jgPz=rCYf%{b-_6b8sCr7a+gPG#4!4ksjD^p&-@P4A%J=zc9yqcl(~)O%;sNfr zp_}z~j;TeTW7_CN9nq8NlC67&oMYOv8=8SG&qib#vO)ND<&|xee8gi+k13Dm$Fv^P z%3_`$aqiCN<V~qC`=(cwzMv86Rsmt;o_LYu$vnuOpz&yay78tE@6Tzxb2J|9Q8(VX z#9NTY%hGr>P~CU~i8l#&HtWZhq^;`4NbCZ}2x2^^F=)2BF`9{SJTdOk7_?yB7=I$h z0ZhQ`n=}TkRyRhN7%vjz3XMSn){SvBF&-txc^ZSZtQ+G3V*G{}Cu$6uwQh{B5Mw4W zKEe}gOAFVHapV<Xj3vfajX`7AjnPhw05Mi*4BEYJj3<fFhZr%9K@-@GaT_r@Fx=SJ zYYbY$Zj2j=v6dJYX$%_1Zj8%_@dsj@r7>tDyD`2^j9(F>ug0Lc?8X>G3|teRwD;nP z{Gf^K#^`JZ#`lO3*BG>|-58sQkwc98GzJZ4H^zg+z_dAO&(|2VxZN0a#AqeP6pcYE z+l_GzF&-yIp~j%W?Zy~Qj9Z9tvc{m1?Zy~FjGqwW6FjlDw9efapSJ;{j2PQA2JLP) z#x7!<NsPa04BG5&j5WmY5M!yvpq=N&xPusPV1>Z`sm7p<=*FlfMk6sUaZ2fdF@YHO z660)*LEF@w$8ciIBSwFXLA%zCVG!eo#CQ`=<OgkHH^#d=fiaR8>oo@LX*b3T#5jo< zf7BSX#oZVW6XRnX;;?Vl7_=?j7>kMV5;3M}4BDk`jQ=3UN@9%C7@XU<F~$&M2{BI5 z7@QZmF}_NSS;RPmC)SpBu^S_~0~i+*<7JIOo7#=>DlrO(@r1^pJ?_SMni&0v@mq~S zTi%Uv7curBJd*u$jgiv>V=gh)5u;pVa8BgTqmmfQiE)m`;C#xBaV{|y5F=Y-a4zP? zIF1-oiSag`$Pdor+!*h_42<s+W24649MFyN4`SpJ<9?07`J)@-5n>!f7$>_{V{q>2 z#xRMoT?cyVEq?yUY^>{iLHztY4MY6=KjQIUj-T(uo0uAy2OrWJ&^6R5flF>E5W*7X zFf3cn#IdIWq>n`Uth$%5a6JM`lGh@o2r09%p&Y<-F+2}&#GsiD2uHkaM%}qEK)C;S z4h<3HV612_?1Y~u>=QZCTVkwOj}i(v8|wdO6`hH3fl*=sE`f*VJ$AESTEJU?%LI=> zCJw-LMcsGKvsmy0!LCf^C)};EpV*3-R7oI^xgM_I1=X+Pxdge;m7mn-;~%$)i;)-H z9<Z|q`jNLE&)lFL$@Zu5gm>;bjKD8_ABLH-yF4^mzZ^i`ON4v?n;zBy3#Nc}&XbsR z2*vz2v)9==;YaF0)^rq%HD(nbVb*p`tCT4vcHCqJMDT*atVEuQm|@ja*dzK$sDOS5 z6_DS&$XTfd;T|i@xi+e0Psi*QK>|)wCyWrW1xD^*ow=NItv>8<MIW}FghLk1i=4Ot zC^)>qi&bxjTJS;16A8+LJmqVG=2zJF_x<MtZTUzDI#m<IFjJvH${y786h6+vjmT}N zLgC}n@f@0uxCZ6icW?~pNyXOWe9(sN`<z&5zD{P<laq?ctWvBsR-dVF7rFZZ%*1iJ zbs2t}gB6O`tkg6SG@L9yCWFomP77eaZ4rs!e+jyA)~C563-J2<lb8O5*iX*4?v>++ zKd-QtdBBgjl~ve+21;!uNCPc$8tAzXH9s2UD;{A_@q+;c5XYf9SK?%$e2^(|dvN$a zi0XSJt04EyCDa-x=5fqR7#tv&I^EYD&S{OB(Kr{NJ8<)9@}11X-YFP60MZs{MyU%g zz*7O}VoHHZfl%l`ZHP}&4&Uq0%ESV_UZCV7AIOZMQlyV(QoGEquy2NwhmLO%XkOe+ zXo;VSZt<W@$ZAfNTpkkM1j(E18TH9Z#g|KXZP1dRfoOP#W7~SkHF#`Z?1-*4mYo=3 zx`aOnxNrjMrmrAJv>Awf9_L|OyYS?fI5itl7<cb{JV}Ue+26|Wi-=ObSXrhVtmCmd zBzY~|HQqhRV_o9WC}sjko`Bh9FNB4RU7T)oO!8O*$!2IT5<%J0g%wL-@NfV{2rq^o z#8ToLi^C7D6J%wOZvpcq!_tutLf7F;?ilK+FF4;nQ&0Y~`==*=Ai(o&m@1GQnE-aY z2%}B{S)BHT=W%<+1N+kUUWz@M|4Ms5`M&N4tkjpa_rY{~clK!Sd|}a-v^QCemSH<j z1TNdR0>3$QD(S}Z9!>jSZSCKIdH)5mbCEGllcB`y-$cehlJP$vbWgwp?kRLX`R8#Z zDzw~ja}V;CItT8SyP2E+MY(g0k8b&s?f{<VQDvH7v^_Y973OsoN6A2sQIex+O5uF( zT@k=jP{BMMcx3`lx+9(r<3Us(j@^3z;uBlT{d2Xxf_=D9wh85{{OQ(v3SX~&$GW!& z2sp5NmL5UsWo0-yX{6a^-Cd6?sJJmS_q`Vu(XQ$}RzEJcybOT#IF}(AD)Bj%q^gMf z-)!rr3>ZnV2{(!!NZ!tsOQl5eT<70I*Q>Mdqe!4j571-*>-{TrQ{2F9HQf~MBky~j zM>EKg_y0;9n?)p-Rr&rs7+@XZ>v&p2cCPKeWuWt8<N8#<$yYSYh_Je^J<$(oYTQ@t zR{(?}j29)T@uHaH#igH1^D!RMvExNiy7}gIru0YA7w8Xl<YxwyzKUbHWC|W#<3;x# zqnKN)<8TxM702wYffzX`ULf|%yDpH9QQ8cwY>k%)nFXX`T%efw7%Rs3a9*zrA(0qf zUzLz=mF60e8;CYOV8Trp?mEd<MbtPhc($qlA16Sc#pMMUfy`EZ4S!}C)zr{JZAZ=c zZ_{#*B0euhT#z4#U6^TZjK4c1QwrJoxv?T4kHxrBP+hCr45_uo_R!2(pb}Lv<B&li zGM*TMNk&d4k2M9h9tO3!$Li$SnT&deC}!yqxO<Yvnu6=Zh|=bazZs;Jg7q(qlSR6d zJoY8}YIXB}O<xtb;%27fI{Xd39o=F=8n?!?pFbv`!xDOxVLYECad5uNZsige3}Zbl zoNj!D=w!J0O3Oy<9Q=xfv-L22j2Jj3vnl-6QA}-e6Srau#~PpS7P!Q3NCx%E*g#?g z;5hFW-q*!>Qjo4$+@i^_Dk_ZQi}{)>uNUVSC$Pg~_GMkp377{e$QR?xiB7#iuL-r0 zg*D?%>+6;ONSFJ5w{bYrdV`l68_fHc9>z(FiV?VQ0|W~9<eKFj(7s=>Dm>~8Ve0%K zj}9^-h8f&!A5XUf+;rSwWk7#?!>aD+F#@>bseSitY7is(2W%T)1IZP9E94V>ug3wx zsyi%2h)fNrzZXMTP*5xy0)2hUNMv~noKfhm+krQ><B;%?0mfqJJ$UxsGZj{s(tp<E z9CUVb{yytczctruR&GblzG32q_MM$PA5mD7Q=MB_=C3}%s>scn?KOk@FfR2oTSw)F z_TnOUY)_GbjhNe7<!y{asv-)QWSCjLn;xAuD|NZ2aGmmK)`8$gf@ov$tAL%)KycWi zmjt>GA_1WXBD0Yo0pE<ePN1#9KU_4gkZ(oy!#9!ra}cB;9**}()FP?gXeiA_#4nsK z@#3_}fGEg4SnW02jD~ij0l_He4#eTqeddSp4lfU7qOrE|&(`=G{%kguS-HEgp1U5Q zN#=(Ld@#eT-u`-Udwbtu*u&Yq2~MVn#yG>A#zdT7o*F<g!F@Bpme+&(B*8NSK{fD# z10i_<G*)s_fmOMi9-g-|Ukb#Xv+#i7cYqb0$tN5c#Slw}altRK77>9%^&-Ln%P5vF zlNA9p6#&?PwQ6$dMtcT34MLF}l)=|E93v*x1bnPVa@Tmg7JWGt*K(oOH|1Y2D34pO z2W2DD7r7x8&02SWx!1TebHCb|xnKHed52Z%iCyI_tYsZSep7y%YgrNeFC)Jnza04y z<A+_b23NmAi0T;T2-Qmr0ez1Bf}GH=)g4Om#Rh&cR=x<m)C*`}BZhnISj%Am7T76) z@3616hHvJl_#Rv~57_Z7vUwh}CVQ<p<HDczF&4c@3ZNs9FT_wdPoblqtuMjzg~B`R zoSO%(;1oV~^=CQ`0-UN;Kg0gJ6cOBQPe%a=M#n?N+eg(-Me#=DR-jqM73fUt8IL0k zG3e01GPS-8Q|CsuZUxtQ@IxnG<dD1!ZllfwTi#QM^hoRlku&XXh<?E<rtya@{$vFr zH||E*6%K?^QbtjF5V{tg;z#;&!3)O_94;_;2S4jbR*Zw-(QQ`A9)qhTZl;FT7BS+l zsVI-MZj41kkg-HoGa}qloRh1fv-OwQY}Kc(LI2K3JP!e0gDpYls{5z#4u*{8&ghGc zI6cywxGF6W-CJD5=M=ghv&DIm0{>?uo=lSj{W0gH>J=&7LA_Fi5|r-vo})X0ND@6u z|A|kPq)3(RyZ=Eq>ICCji+oqec=#w@Rl{-3Lpa)NlL)I-+ewq~T_YxDB9D5l`@T!| zoF+mf6eDy6>X7)DrOJM#R*5G0BoSKb+5nSkC8Fu-)~~_*IwLWMDe@hZyLA=Z?W%`# zevR}qh7}Zg6%~3}Zg^cExQK5G^*39>Bm0Hk=pp-LW^xAy2Y0Lg6<bjW6HUK{eIzj; zT{^~#Sa3hB&sfmrxXa-xHOU!`)g}&JLEEa_U%2QN<Q}>hij)2d`^-xIA{tS32adxv zFRB8R#Wyc<TGco~K1m=1YI2RZnbu<nUjx0BkywPM!rST3TK%|egb8VSaE{D$@bqvI znT!Mx0EuuTgGULH$RB5X`A=}yLBAc(E_sQKyQohh2l$NOjd&lP<DTlM!;NIcbQ369 zms+e;{0A4FB1DcCWX<glM`oMu0Ih1BnX9Xi_7Wu72b#L*STKS8ZWeLYQ`h}vALcjf zBwjB@-cbb3ArL;NOBIMJ3ZQ&~ZqlHT0#Pdg)OR&`8OCC2iaOO}>#^SEL7)HhI8f%f zZ8^SP-z`9S<x{*wOjd!1Sy-{aLSqRgN@Xy>IS26~ZK678%2n+uB>5Ryck0>exb~G3 zFdAlNBmCxFhdxIre{&<I8=kBz>&l$7Uxv-?i47eSE9C{iIDZA_Cu8wXL2±{D`6 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ℑHCnT0-@&*7)u+Ftqtf=3eRk%=ze^{ULG zzu^@1_5INLXrGhLuHKP2a?^s`)#kj19SMI-;>h_6_NT^@^pWp=-!^3DSt*|ydsxSM zKHQWzTH-#miY;NYowD$qqO&1<2L69K85zCamn6DwK2873_d^q1H=X7^@Fk88F~BW7 z5jZ>F$=cYTr>5>q9J#<93z2NY!B2zWPfhw$YHG=;-}{%w24vDD;yv;al@WbY0ekX9 z4~@@b0<2SBGFe5_y7BJL_8$xUD{>Ls`+vrb{N+hxCRXp!H{NTBclvyFox?xeZ*H6S z<)#)YbdeXIlQ_;<wr2X8nGKUV&EA%YU7gKDuA7}zZc9@L5%Yy-F_Tlk_~THj@TWAx zWJH8R@wQaF7C#s7Hc#8g#0PrUL^y&m-p9KpFBN$L$2CeD@nMPMed2@kVwfQR%75GJ zOhb3K@usL9ulByGXK&a{Q7*mL{Si3J-s+BTXZYK&3Cxn8p$7+12LG=2){xKXbtK*` zb{jS6pkRApOI7TgoXX3pqq-n!Jl;v&q)1()>`+;^w_a#zK01Wb(ZrDgn-oB9X_2>$ zqB$N(FRwBM#=4I&UI&S&MHSoT5A!<nNu+xfjMUsm<!<eIE)Q>q-i3+Rat`nCMrynB z=h>5{G&m^K@;g%xG#q8erWG4Vv?AB0^YB|_w6!=dyU$(Ap}Zr#7n+X^aW<T_BeBNu z@1^tVc;(3I{F-~6Mb&*0t8)c4yRq@O!F{d|;_LqEaHRR|$Pb;CvtCQEO-N%O0bOE& zeuLZ8)IZf6?Yr=-MEW!Cb4?vD2kgoE$*Di*h5KMB?IhAO_44<sSp7J;3-T93{FY?# zYtVWs{91I5R48?==pev<2%44B7pZ$?$(O)#aTd$pU=YP9xo!ohG?+HnGuS?mf7Gpg znTi5zKhGuDCZEe<`;+YWmw3J;lmFY?HH5kgIc^uFZ>Xp|K9Dldv_Z%gr^7JtM<9e4 z24d**7uik-MrbzR75cLS@-zh16`f31U@Sf*ZM}5q#tPJfTlc<3rXAj^{#mNd@JTOv zBT$jLLrbO_x(`1+-NkFB#@e;i7;u4h+yvqcSuVIS;DY9l$VY8NLa8CkM++)KwwX;k z0o&O1A>oU0nHT;{b?R|5A|!voGT_4*{is~TUc|E{!}pfo67QD4kai)1ga@lFnpR%s z)*gisjL;qx)0~pa=8MZhNgilA!x@l#_kTgO>J=i`+y<C49|{-r?!$r{@t-&@<Ua8t z?2{raKt{^{DfeAxJ`cH1<hBZ80s6tM)8^<ki=9PookA+9n{xktzPSuq1$?uM8Swu* zzWIf%p$FfTh3qkgc23DR9NiwgFnkm8%g;i7$f^aigAgKbV;ugMk!!ER&(AWOk(2Ao z_RO5&wM_F4bJmkI7DSODa2qE$sU^;{Z~<#E6Gsc;UvV4zqnb>j*4xBm==;SL$LF6- z1m=@oy0$4k0v3!M-s%-4o{zH9pj3M|t%mk_?sNUgj&fJLo|@ffW5*MwU6t)!vWHwR zHF~@?mt#uK4LYVe(jzgh)a0;lS$}cMEf$QoxD6C|K_EX{LVSb>{bB}h9Zv=CZ2xC^ zubKWIwEf2b_7636e+&g!xZN@GqZ#h9t##c?Zw}O@!NeORP=JX!D67tjz4I^B9INy> zYPdf}Z<wTra1>~{0JLP(ukuL1%lI7Brn{nDh%q&^#-Hk0`w~-o{9ijZo?PCqrb`V* z55m*fy*1zq@NNTZML`$wPt=A*+!}*8Yp;h{u-{Z;xL-9#`Y!l7ZW_PtgJoG%tv&I3 z3#3~sMI363_Ww30cr{zs!u)^?Ya7B!-^l2@jz0+Twt#;t^;mvT%r1+fK*?cG4ShCD zV+&)e<CHMfUsy%o)r`tXO(oS+=jeDQv7#V7@PYxtcmd8+-67OVH0~yEFRa_MB(EZE z&#xpKgj`v^Si?8zt>+JrZ^+u!7@pdo<b-0@EV!zHSZmZ-MUL&*-5D`jotoM06~{=i znYd997=aKgv*IglHe}?Yg>5saYrU;&kldMywe!!c=$apCiS)_ALn?6AkfR!ZG&!Nb z?3B|2IEk*@>hGglkfer?L&+D3#Bf;5`SA7Qq<UB@*5S_++Ke5fGvzgm#-CcoA9L!e zeeU_CS|C!8SQ2&4Z%XX!Of-!I8^so;vjdn0l&(Sd7o_H$A$%6lGdUl0d7=_G3#FZT zUd(SKeLrO8rjSp|K~E80ZfjXnO+}7d_c+A$pW+YvCJ4!T<Hpc6fd5=R&cdHXCtKvk zuSkAX^f^nA&>gdu+^?dC&}2gRplnY_Hvdc1&8sswwf$B#6XJnXCnR)_fTbhpRYc_3 zn%N&s8NNN??XT?Hu=-5plT>5CeXwbRW&uYr!$_RM>dDP!HRcFZWoqiH%XZ18#P8wr z61C26?0$Ze_ZFvSI6{QZT@{<f&ogWWaKr1mm-O?RE4uFbGAGrvjw`08vU!&#$FU-D zNes5rRM~LnNJaDfL8V=(Ne+oHF*3cWDmZ#M94iRl6CAaU1mq-IbQxR5rGJk&gbsLJ z<TgRV)I<l*CwA92MNg-bM@5{6asLuY(tWYvWW19N!(^A&oZqQ@h8#QbRZOaQqKkK( zG)^6SSD2c(pA{9UMGospS%Vhv+bV>JH81Y)$RM{gau(ftmx>GEl;Jd4)cj7Q^k^!2 zmD6Q7?7mo`%{TO3V>-hot(*lcCShf&V-mQvPFb1StUfTA+xzJk_jbtvBfdB7y<KY% zacei(d%MVhbjD_TZ&w$Py!bnNZ<iI2s`yKLZ`Tv#*~K!{Zx<7ghPceWw<`$-#H)E{ zmk<n$f0b*yb|4zRiEF!P;Eebe+{VwJSwHDajvlu>)DVt$A<S^<(|%aX`@&;juGs%) zE`%U<!Q13*^j>rJL(jr~^@R>-pa0*K5$=llHbQ1}j#nN7|9SR2#U@Siz$T?@Q<eRA z9Am?>`)_yT>_M)3xzGqqr2GcgR1*tHsa+aVV>Iq9B7=Vw-<ELRz^+c`0Ho3Gpu-^? zN%&+n7cjPUOF!R9mhC<oE8#^^;?2%f<V@$~()G;ul(=khVeph!?@CrQ?sgj|kqfO= z>u#+kF1gRGpOTw6N+zr3cDe6UKShUO#+Py(sh>g!Arha@b>I3aeG^Cf#{Ze?e)UuO zC64xs-^g|U`YHX{W*|O=>%96Yc}g)J$8~=Flzaxd@y~EQpnl2#_AQEE%JsndDFYKn z2gZkR9j%`dO&pEJ&*A!v`YC55j-C-GV|DbI^%J$MBX%Nsf5`UG{&yK02B;`vR&%(w zKUFozncMKIik9kQ;AyzG!Ji{KuDAT}Hbw^3N6sVMF#o?henYk9i~i29Dq1POp(AwY zLp@?9l?rP{T}E9INT4C&z#NVb06$<kTDCRtaqcBe675io1C)yX81E-Fd(y_x|1s~X z|3Zp-^sejM_tt#w6Y;O&lYO#%uZeN(@ZBFZx#OFqh*ncEPKnwO!GJK*zH?hqN1la$ zTN^qh<F$nva6t}LGASAbN5*FEV3}!K-&>z%D(U;c@-+ExIqWt<9{h9t!!kU_<4~Ve zT3>JFI#v8*XY2MO+na%%2!7PVfBQKT?SxHPy<Gh#qwyJUk9KO7IG5?`_@%;$<L}9; zWV8M-vaP5WtVaK%2Xj+P@PJhBMCv^q&Mr0YEY9Y$OJ;SneXnijIgzt1>;<Qn1wF9+ z?ReeTGef^=T7`dYUTSQ2#kEoQer1V>_s{3oD9g`D;uc4}4XIn4((Q@k2;?Vu<ZZ}5 zo_HIHlvn5-BdD<<@lL0+LlwKj30xE;S`fDhofXHb_jy~WA@O#nbGWoKRa~Z3Gl8U? zSAUM2AS-Dzo%(5L=!~Sz%&nismSh=8o7ty+TAxIhk+hkS`e_m6@gr$7`_@nEo9Hr< zHnU&-w0?;$BWW}H*H7!8=rWQvGp~MH9-H?{(q`t@Ps=AbDM_0-pnlo_Ht3S1%^X-i zZD69yNZQP3{j_MJ%ShVHGwP?Ek?1m#Hu22*acAD>t<`vd_4Wtp7>k4nw~22Wr}twb zyN}U$2ZBP18;*~%P%l+EfQ>`?ac`nF)7TA+Woq5X)V`o7`z^%rNr+6r(FJ&2pKw|- zyTj-^GObrRY*aGHZ5-e}S2U_U{;vC6Guvpejvl<1HTB+af&B-lC=bsvUWjk$VY;7m zG2PFT%HS|RS=Pj5sMG}~;#<}<H}P4Or#?!}O;nD}sXk=K`<bGFJ(w|#(bT&FR+_eC zZi0r+u>Iq^S$xN)BLfnQpadcDfZejWf~kmwHCx<??|G3}s_@gOjlA>@GRE|#?3KA* z;T_>eq3{~Hm|50jw}6h*pw-~9xrwWC;(^_^@J^uJxrvIL_#I`hSbYG}faeQ5*8;Jw zyWF7mTY`Du#6BlgI6)p@P~P-=4CRgY=rnOSAAskXK|V+<2UPIn^*f;+s%9Z|$1kbO zTa81pr6XL6Ve8f6bI>(ARy;RxWlnr_*d7~lnij|9RR4GCzO$7uo!<E@0<7(;3$SfU z{V@Tpr<6$nKDA-->V`kz$K-Tu3UI{y^31YsH4(upFQ%EIxrxPibm8_?4Jfm@iTij| zeb4|fnTFhzeUj0bx7*t>7tK}D@ej~Xe(YRq!$t1OiMff^+{CKfgzxY^p69Oo<Xnz* z-$s#wxmV`K2NI!FUDYdLh36w8v=-%C2AKwtv?e?1uGH7ngF8NB^v+xa=X`f1i$t1p zQ`2%)aiO=_U3t#jidFGlr5o9P#OlG7({kbI(v7QmSJuR7Ot#+OC)}Sz!yDp_^hAve z>$o(050E2*evHcn&{Ov#-(7k3jW^Q>^3Yp;Y<@;Wjsk*N?5-T*uIx8gqvA(Eyt!_Q z-xLD1AZKpk*wTfU&rNhKT~G)z+?5-N+HA~@ljX@j@eXul%-;{zPd~=ZT-I1kbXVRY zM5k^C8C&C1yuG&a>i;xV{=qw_PZv|#UD*~6Rd44uY(?;c_W(k`a354K**n;wJbicN z1c(GwPln|~sCwh`g#N-sCDbU078<$*J)T{+CqCN%cBQFRh1`{c^kl(o)57ZB^$YkW zZO0z=`w!fx-z`DE6D_%kJ+R2u>Yvo@ss1f>h!oPWd*TPO_%)3jUApkcs_+{<EBqha zfbNcEVPUH;th{Lq5|71dK9>`}R&GCt|2@g>sAM>KU`B?~PkS9SP%#1*;oujeop6_! zpQm=cXu)&M6bG*aC!P%(j5EFp<lDAaOncVv4%)nmHc^u?WS!;NBrQ#B1G6z!<qYXg zP2;G?(KScP7hb{=gYuZO9f>#V3ev4)g0=MP)o!Axrt)(O+mIrB^vHSU%OMLsmYP&j zbHrV6Ij(MHgrD6`^-co(3v&2e(rMK2EvwDZ!D37{6Bz$`$G4wkbd=Mv*X$(S@s2tA z!@nEmvHl6m$%slc<}i{kO6+W^tZ~2Bgg#}~&cXW`+szO@t!YN}KP&Hzj2Gi0>E4Lc z7jW{<cgogv^lhlveA+tx!sfQC%hq8CL*)V7mLC<nh{21)A>s&w)LH-zkm~0dLe`+v zQsbTYO(O2AdWIF|6ty!F&lh-s1Y$q;Iv}65{@WQYPT-Wh{tVNlZH;or?51yEw{~b0 zWvtDYH{R??ssa)d|9$VS0`K*X$ASk9(EkBv2TSgn$hUfYZkGO{eY_$7ae~0PBNwWs z2R<PoFiIW15}yg)zrJOax^$;Oq&Xp|V}t5T&W;t-U@I!IHx0&4)KvCCe><;lO2<Ez zsx0!_Lk^VxQO2r0<<sqEX&&cU)sJ;5jzAw%^IY_$Y(re}^nTE1u=k$TvjCyE%wXW? z8P|x&%!Iucf&a$$AME-Y-zTfgd>FC9g4$QA3)zOv>L2$xM#)W1?JMlBy}o*X*knW5 zD=bnNpP6P2;0Gi0p-@=4it}NG!MFN>;wmWKHvjC7p&5EHNMyUWvuLj3K=lE%in>ET z0{ybuYwLI`#Gd%q$gdDo1lkL0a4g2BCYT29R|AV2wfV8S?)WgTtL&AIXzjZAg-XRu zI~tEg&-rY0P`m?7QmlGg)*h~A0&k7l4fFjNYRX@dm8RP@xLZrqi@`L)y<8;mbNnV4 zpGnIQLeW=y7g6%NY|(CZY$-whN9xHkJ!vm(t|n+3Kab!EK27z@iRUv}f$AUja1SwB zRbKrF@5=Vv=%uA*O>=vDlz!aI;Dq+Tx?5V5Q<A#bsav;bN%i!Wej^bQ;plU?F}8fb zpZ&z22jI_PsmhV?n0+Zb)X2g{46)(QaU?H03=W7#8b$+*3_r3B8l?^&b{oGln&Daf zG|k&Kv%TYAJO0J!v&&f6y^Y02uh5-rvFkI%TE;U#Bp#HSkQ@KG@Y5VIxJ?!I1Flr+ zzJAU}fG3bYIT!R@o1cB1VGwc5HX3f}(eMm%O}*8E4^>MPG5(L>gmUuhYAPM!W4)Ev zJnw~`__(4cKCHYRt4^EY0RD1|Gct9jlhrr>57DEn&;JYb2=<feO1xW{TwIX6KB|0% zg$_<bj4^cmU$9f&mi(6L87=)sCaYpGLgTUw;tt7Uz#sj^A8f@EA4Wj&7^k;dfl)m4 zBzbwSdbf=iNNl~9<oH5waRDv^t4}lw$qJ>EBKc?-_>U%~XhvdsaQ)2~f^j8JwMm-E zkV+r<AYY3p%Xt~|Hmk7P=oy)t(#=_mEv7J$Im*O{xeh;n)BN9Hw_<eH|9B9VZD13> z!)-17FH5|lqgjVjS0PyqY+S?;B&9`Fvx&;tR)q$6V@9A1Y#~I}AS#riC{lV3fF)>< zz5e;6+`u;6ZLBe{jg>p5RX8IVl8vb7q=Av=AD#b*hyVZ*!lelRL?Q<p6bL~9G;v@( z(wHjj&z?86X4Pd?f2D=QG6)CX=l8Uq^*1;b`+MTs#!F1JYecd-n!G8G28m3zSwBz2 zz)Q4r5dI-W3?NHzSA~Du(_&B*;aa<>Mbme`pHG;Y-k8Y>w8#s9#Qe4CXT|#ZiCFOq zEy{}KuV87=;sVP=)g@Uz2pFaThXY0nm~1CriPb+D{(9-}<S+D%aYc;V04-~-yexIE z6OVX1$_^3vVtN9^{(HNLPYqT~Z~A}c(9zVqsT+f!-oKca)o)cCn|~(0{2*-)$cQ%0 zzO1swa;^{rS%4sKCa@LuhbUl}O|I;qUCMQ>XDQ0INX+Cd8hf253}dg02zIf|nP3&> zins%+^-8%1N3hZp1n6_e^K+h3j1M*-sI=g0uZs!Cs1j|=w*79^Mr}aqwWS}&m=b*< z_sP2m(vWMCC)cdOd`;{ul+Vzf%RaKRR|tUHcv0OR&V!;U+=p6*i@UiL2v-7vZQXrf zCC_S(F_W+TgRoW1<SVRc;(qKX4O*D5JjFcmXWE4C>bJnKo$OqgmzgIvlb#C+j+@+` z7I(!qRiQ9zpO7M5ubI#P0(TrG%08~G^Z;Ef(b!(U&K7T^{D5BL_?lyv#m`NAP!J#C z9mePV<Fmpd534)9-3Dcy>18`{oE4;4)$v>Ny5rAuu6ls!SnbC&7Cr1=B83r9Sp5s+ ziI9jk0?nM!g=m3FGskrT9j_A-4<RxijgD`K`+Cq3PRU~!l;Jx|&sVba%<6MeNb{1_ znJGNrF(G4?CTo-4WAq<7inKb?L{QBEs*tqWS;COk?0_;puV#^`dxiq3*oRp*rRzM+ zXP-WwYw8w5r))mOY4f=jjtS`9i0aUehCPzazETion+;U5+1ekHYStrZtm9SFNNdGS zd3V|LxVB5__w`YRmfE1T4^rny&ve?2^n<vJ_@OkhxS$|DUK=Rhl&9PxR9eKUzPyfK zw2m(bd1RZ2OShRgPG1A>BA!vase+Cl1cf@Dwwxj))ozu#UhTim5AiI?KZB0HU|>0T z6@o;K5<o<k5&Q^Ai#kYsrR&C<Gb6Q7ANKIyPzLO4!ht-k@xj?~N8>mKvUhU+io>9Z zLt8qlqYO;aW@}0OFRzsmU>9RD%d=)YrhGO=P#Pe>oP#<(CO=O)<^nn0#<h*RZX-K$ z4D`AfC6}&^@09W&eAN|<FPJZ+ilUBwNG2Zzs`BU1A`>9_j&5ErT~)21zI3G-#D;)` z@MQf#jV0ut7lV_}WcWFZ6x|wBZSqWJhE<=1KYIrLv!K}PRKJ2x8?*x=P5dOZckI}U z!G{7-trqRW>Toj*KZ=MlMUHHkGmp{iXM4vhOX3$+4vUw6mPyKo(8nm1LO96Coaw9y zd>z<q7;mo&1wa}>gw~E%vA^S-%3*G;HchYmIOlZneJFXUX$}Uns6~oFIX!GpsB2kO zb-akl66|S!%X3WicAlxw&NF39(&1N3(|<u3M42+=Q?C`)s8~OLjv{+Gw8_*`9<iH) z1V$>q?AC4Lk=IW7g2S8eHxLfDc5uI(oYL(wJO0_yY6f35R}Et=Ik$8q*RVsbKQycJ z8Y;hBJw??}LEW9g4Z<@@>!0~0y}_%_WA3sUALUG2->*1h7k^N#;0m!mO?iF(%gBa( zpT+0D+D`4I_98P|h99H+yN_2+<(SvTrtVl>JvkKtX9$tdrHBX^Q-_YfSVG4$b?!;& zIbIedIvpJ;c3&*2ZG1?Sy#$DL8-XOn6aquzz!0$nrRHq`A>IK7y~?RwCXCUW;~bWH zJsFw(z3UY`&y%8DxCtF_eV%507V^1tmNimA>JYh)8<^<dSkYPC;%)JcB3~6-=4&I7 zVo!UM*6OreC{#fEpWzZ%nWtgSs2{bN$)XPki>u%+cAYbL^IgiJOVq{A)bv;}b9Tk) zs|a^EEh^Ya|C#?S;4sC%atT?O$SXFVCUe?JQYHaMMDkmCOVG<Pu`)*fzE&IxS*jYN zJb|JqPBql-AqBYdt(HzfwD*IJhVuse3c-6f(c!SqJjF~i9CYp7RAA=N>2FZ}B~#w5 z`vQ$XYT^!WYgGTH$pR4=m7jL&76=>n<d(a2i|8&-`<Qqhp>F?1UP*kgJ9^>xSF7w* zBL%EmcP&_wbxz%!>(-6thA2g00I#u2WH}(34#Hs)jQ{j9OtOkjzR3gYdAJY$h^hnc zV`Jh-AGMO$l;gh%#H7<)b(!HPSpxT=CN*1A*>9v<>xuUP3>MRA?v}~i+G8SMZwAW; zF1+Ysvl`OtOkaRSw=~oFg4o}>5BT*j=Z|*oRrBrL_Rts{44bdDkSzk`5BZnUedAYw zO#gmT2(!o;r+Enf$2?O3Z->NQ2Wd+q{83yAzoo8GO1)8mLjcRM(qE`=0{cMFcpRC_ z(gguKX<k$8BkA?F!xy8n%ybX+TYRgBz*0itoUo^ze-3;4Mal*IK2a0-C<|Dax-hG@ z=72j(RUzPW4pFZnmUj>EmIE~C`ah8*jAV6T4Lki`@R)?Y9scj>h_~JUi+-dBL^YAj z|02XRPvnuAC)(((cbOOT<URjM=n!<qXo#RQVc*ghW;(T)4}wnJ#ifO~ge@jSY>uRJ zPUzdU6gm}}zJxZh3~?zX#1Kl(^DpAYWD~;R)qPSkI4mO%3xPfof&weC=S9h5ytKEQ zjsDr;b>Rjv0k$QH5<BYOr^fAffy;eH!1U`4zQer0N079@7yBLXgQARnH;F9gfp}7> zq}|NadVdijNNhQFgm+)!op-?Fxcg4$2>#*lT&1n7Vji8nbDEh)Z$n*1Nq{SDCX&Tj zZEs~J(l4kl(ouMJBK-#T1|ZQhGm(BnZvCv>#F5NI`VD>RXZ1l|m9la}q<$7hrkIKJ z8~WDI>YF%XCem-{S3j#?;)t0@zoCEqto|IUqLh^z^6F>hC61Vh^c(W)XXPi3n2Gco z2Gq|QkT_x{(r*}8KWkv(h?z*gAzD9+r2%Fl{f0B@XPuEaVkXkR80<tEB`3^3U%j_d za7xCx3*}?UTt!KddA;QRGu&jDeXbP<%k2?RE1N2ue2+wGV?*KnuaKrJqFUyEgzpKe z_A@cwt6&EfPIWC}i~CgcC2_kyBVfBwDt}}c*stb0n7R;!((PYBmDmC!8Na5fKpUXP zne3%gMH=kG*9s13?z_Ol3jUI8Uxp$XkFK}Bwd`GO`;XVm5JU#54|#+-fak|N#W*Mh zX61#(H<}ETIidc+@2WymO}=t*bbdel<@(5#Xr9T|$>ghQt)ZBF<@HfFQ5Mus>6QqY zr}+5UiAsRhHe-1u)Lpif%xP{=*+@T-PkezWKb!8ljW;u^^MusIQ^Etii!-R49$QrQ ziUtTn=Qb?;M9r~F;uST=F0HOI#|wDJ^%WIr@c1VFTczV2@8}5O*Erxpa~J_n$+x#_ z+m3gv4+`L{O>!IAScjPcjTUdC6FIovy4Ie7nxxY899?@|!QE`#rN(Wn%y%EyJrJXJ z?Bmsg2@C^@X7wi#wlO<J-ob^@q=hxdJ`w*i$phoIR$jmGYU@6|@gxUDj3>K?l__W# z(PlAuPNTYe;EwmSZb-t^1#4U69+++IA;To60k40O6!15AEX4sc&>u2G?r;M5e#{=r zz~|P^7-Y!12+$Q%o8*5T6jMG<1KPWuppj0Mt2LW;#bb+Vj@{wbl9p-rH=P|@BsA#b zx~+>0s&s9V*1iQ}ldZ<N(d>y$mpLnadTg{hUKOhfaiNXMCSN(8e4wGQ9$Yh;2bG** z6k4g*@>@v==UwWVSPfO9>&lyt41q$G-Z75NW?w&cqP~wvBf$}BR(MN6#8KctlTEPc zaH>=cPdk7{DJlTuNacCVl>L)WTx^rKiZa@QO<^>ZGgXAqu`TDn%yiZK-%w?-<{~U4 z%nH#?&-pUN-)XPX#8`(C13Q9a2KrAG?|a$oUs#EgIGba_UO?QvN)y9l{5l&4qyk4< zWOTF_1qg$j-uOcQr!ve{u|=d?XRs}HQkGybTNi^~;k@<_XMrlhnZmPN@X02xa1}nc zkex^|kb<pBTQ%?|%1Y4@l$rzdadF;p-s6(g{|xR()f&XN*q=*N-!!?hd{OCbm)r6= zZMOY_PV5HV**OxXQVw`6W~u^|F;#IjjQ;pPK*F2`mXWSvzTzy!qt|ZQ9lxAYt~YaN zv3;$0G-HV(rCtX6J(7z=eAK>1-+>s5xz6;r8G%7Z$QBdk=){P${NEn9D-Uq@Pv}@W zXtWk#mqOHYGN(RrmGCEJuEFx8P>=ansPuT9jB=Y`PK+;%B=a<&S^{6InzAOTzX1d> zye`mKder0KS3pQF>CwET(6=Tcj?HrG)<Hn(j7#f3sXzWoOVUZukhr$Q)CjTvwg5nI zpTaFPk2|!TVBCMume<CXqE+2y#ETl|;VP2GN)vN~CN#h@qbz^AKIzdHBZHMffx_fQ z{>WbI!4j)w1kOT7DC;S89n5uz*S+W8$nY6+Jg54-R27Lt3aT?c0*=UwD6rN@?9cq9 z$9)m%v~Y4$w_DW)nb_V??0qzSgPeTsSEujz5wL-H0I76lv%?qE0BMiQ;s$D~<{0CT zchF@ui!}Zy0x_VePogRJDRr8LC;3{Nmg&nCx*?7b(z7Mff0!!0rAMXy!zv`w3v%(p zHt9)=jLU@#B{`P1K-wMq>7OPRirfcF>{$$RxYIVYb&aSd7QcVdU0D_TVzBsqDr@rR z#is5+74Z8-^^D>YFq!BoepOiv0*;W|a2d8D^?0m?t~~wHi!Z)NJZP==GVmULi|sYp zs^4iUWpMPMnUR>l1~A^HL|6X8*ERbPs3Nzv3u>pnX)3`uqL-w2ddv%gi%K(BdO3OQ z%(t9QFEJ01t@II9T5IH;k!+=hRetlG{2T_Yl?>^jRyozO0>rKRPb>ocT7(?l3R>#F z&b`7HX<3RpBz7g>u!@}9^7)F&DYjMK68X$0_^pE9%QcsUR/NW6qCio#B#!HOtc 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%0AKME1b;8)KoYz)j3q$YQ$LiuH5x)oTtLVh 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%0Dor~0}@950+b2wB^X)<zf9$l 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 T{*Z9<H^~;;b^hUh{MWw$oO2|P literal 0 HcmV?d00001 diff --git a/lib/windows32/SDL2.lib b/lib/windows32/SDL2.lib new file mode 100644 index 0000000000000000000000000000000000000000..b35ba62a2807cb26a2ed8f29224d9744d6031ece GIT binary patch literal 187788 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/cygogg-0.dll b/lib/windows32/cygogg-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..7f616036f45f19f1261c5c50fa97d5d4a096a68e GIT binary patch literal 86143 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 W9Bhtc5%%gNoiWJ3G~>a1E&N~oB7lnk literal 0 HcmV?d00001 diff --git a/lib/windows32/cygvorbis-0.dll b/lib/windows32/cygvorbis-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..4e92dcfe90228e6872969fe3349ea04b79bd3cab GIT binary patch literal 216763 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 Uy04n%X*>AF(V<`Zj*J-p3#uqXb^rhX literal 0 HcmV?d00001 diff --git a/lib/windows32/cygvorbisenc-2.dll b/lib/windows32/cygvorbisenc-2.dll new file mode 100644 index 0000000000000000000000000000000000000000..47d95799c60ceb0e62aaae46890453649640c7a7 GIT binary patch literal 1659815 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"jjI|ITW;(#-0#+Cz1h}qzuBu*KDHSD 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 G&;B19@^k?J literal 0 HcmV?d00001 diff --git a/lib/windows32/cygvorbisfile-3.dll b/lib/windows32/cygvorbisfile-3.dll new file mode 100644 index 0000000000000000000000000000000000000000..27aac9b09b2bb65746068e516e2004a3ea4766f4 GIT binary patch literal 81293 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�G>$3Yias~T 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 m`sZ+^yJZ3&Kj?iz30P<9g+1q~}}W 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 F|6gT%Dv|&I literal 0 HcmV?d00001 diff --git a/lib/windows32/discord_game_sdk.dll b/lib/windows32/discord_game_sdk.dll new file mode 100644 index 0000000000000000000000000000000000000000..423a9da9e7ed7ea5e8d5f8f8041f694254be53ef GIT binary patch literal 221696 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�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 Dva<3| literal 0 HcmV?d00001 diff --git a/lib/windows32/discord_game_sdk.lib b/lib/windows32/discord_game_sdk.lib new file mode 100644 index 0000000000000000000000000000000000000000..9613d67b804666c369e45e0050afd6d221150935 GIT binary patch literal 2148 zcmcIl-EI;=6#jOhEfS*yo8A}=CPb}?&~6J!6JuzLiP$Y|D7_w5b}dvWWT7NpdDBau z#b;=IgkJQ*3m>2_f#>Ybw6LxMX+1DM=j@p|Gv9n?=Ghy|tvBArv#D`;y*jQdZAEsB zRYUe_aR3W|eg;G@fcYe;SF#MK9SBj{-QTNJMe*IicBQmm-Kz+@*{gS4TO3(!NA&E^ z5Tbl&ntyuYYtYqqtiC@i?}*}Nb(4lR+g%~t(_UXV4bgSnUgyMWHTz!>ZY=u2w_V5T zJ8Jm2ab`S>8$9L+kTV^)hyuxZ;EK>0P@zBOph2fPO1}uic+lGcC1D6oIU6>U(ar{- znamW$om$)uoO;G?wGhuLQc1^2Gv?ORfLh$tA{df9)qoh`OQL0L=i}*7`oLF#57hal z6xkM#*vd3*t8b+Z^=XkhmsE(no<yiFVC7u;<)s-*)QM3%<;V5{Qs;E!c#M0jVliy1 zFYqYAB;biz9^fI48_C^f-R<-`pZcknmF1LKD)0E8$Lsr~@<5(|GR^BHsAje;AS@iM zs@`dLY5B(uO&bnXU>?iD>(!x9C;;9L8p`7Bmm@}$Wu1M<fNP)JjfL&YTuI^Cfi0<V zqr;~9b|jyIpNbq)vdPG8T;F7-rh9Dq;jNa}9L^@*$Eb|3X-(OgP2ZIwTV@mE^8Z*e z&51vu75w$OojDtgjr<6Hem4H12>$tp<M)qj%t@#`hF>a0wj<fNu0AoFe=23f@9uG) z2HWSfg1hHvPC=aF*OoKcq<kI@)82k#!FMF|GMM$2&8r735c3tq)ab4aeOf~!{|4S* By#4?H literal 0 HcmV?d00001 diff --git a/lib/windows32/freetype.lib b/lib/windows32/freetype.lib new file mode 100644 index 0000000000000000000000000000000000000000..7402d4df343e55f486320634b841d2aaedf7b2a2 GIT binary patch literal 42752 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/freetype6.dll b/lib/windows32/freetype6.dll new file mode 100644 index 0000000000000000000000000000000000000000..ead809b6f5f2eb39ed2d965032e16648be01d276 GIT binary patch literal 551096 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%0D|;Q-o*bw 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%0DnL#U@YP~2l|&wo7z82O~76G9L5&_mG8Q5 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≥|Yg=+T=yKfI# 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/glew32.dll b/lib/windows32/glew32.dll new file mode 100644 index 0000000000000000000000000000000000000000..bce2a63e749fe3189b39ec71318010d62604a49c GIT binary patch literal 396800 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/glew32.lib b/lib/windows32/glew32.lib new file mode 100644 index 0000000000000000000000000000000000000000..a12d7718852f79a9c66865cd5f39ead971b55834 GIT binary patch literal 606480 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 AfB*mh literal 0 HcmV?d00001 diff --git a/lib/windows32/include/C99/stdbool.h b/lib/windows32/include/C99/stdbool.h new file mode 100644 index 0000000..d92160e --- /dev/null +++ b/lib/windows32/include/C99/stdbool.h @@ -0,0 +1,20 @@ +#ifndef stdbool_h +#define stdbool_h + +#include <wtypes.h> + +/* MSVC doesn't define _Bool or bool in C, but does have BOOL */ +/* Note this doesn't pass autoconf's test because (bool) 0.5 != true */ +/* Clang-cl uses MSVC headers, so needs msvc_compat, but has _Bool as + * a built-in type. */ +#ifndef __clang__ +typedef BOOL _Bool; +#endif + +#define bool _Bool +#define true 1 +#define false 0 + +#define __bool_true_false_are_defined 1 + +#endif /* stdbool_h */ diff --git a/lib/windows32/include/C99/stdint.h b/lib/windows32/include/C99/stdint.h new file mode 100644 index 0000000..d02608a --- /dev/null +++ b/lib/windows32/include/C99/stdint.h @@ -0,0 +1,247 @@ +// 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-2008 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. The name of the author 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 + +#include <limits.h> + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we should wrap <wchar.h> 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 <wchar.h> +#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 <wchar.h> +#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 +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/lib/windows32/include/GL/glew.h b/lib/windows32/include/GL/glew.h new file mode 100644 index 0000000..9afa5c6 --- /dev/null +++ b/lib/windows32/include/GL/glew.h @@ -0,0 +1,19367 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glew_h__ +#define __glew_h__ +#define __GLEW_H__ + +#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__X_GL_H) +#error gl.h included before glew.h +#endif +#if defined(__gl2_h_) +#error gl2.h included before glew.h +#endif +#if defined(__gltypes_h_) +#error gltypes.h included before glew.h +#endif +#if defined(__REGAL_H__) +#error Regal.h included before glew.h +#endif +#if defined(__glext_h_) || defined(__GLEXT_H_) +#error glext.h included before glew.h +#endif +#if defined(__gl_ATI_h_) +#error glATI.h included before glew.h +#endif + +#define __gl_h_ +#define __gl2_h_ +#define __GL_H__ +#define _GL_H +#define __gltypes_h_ +#define __REGAL_H__ +#define __X_GL_H +#define __glext_h_ +#define __GLEXT_H_ +#define __gl_ATI_h_ + +#if defined(_WIN32) + +/* + * GLEW does not include <windows.h> to avoid name space pollution. + * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t + * defined properly. + */ +/* <windef.h> and <gl.h>*/ +#ifdef APIENTRY +# ifndef GLAPIENTRY +# define GLAPIENTRY APIENTRY +# endif +# ifndef GLEWAPIENTRY +# define GLEWAPIENTRY APIENTRY +# endif +#else +#define GLEW_APIENTRY_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) +# define APIENTRY __stdcall +# ifndef GLAPIENTRY +# define GLAPIENTRY __stdcall +# endif +# ifndef GLEWAPIENTRY +# define GLEWAPIENTRY __stdcall +# endif +# else +# define APIENTRY +# endif +#endif +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# endif +#endif +/* <winnt.h> */ +#ifndef CALLBACK +#define GLEW_CALLBACK_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define CALLBACK __attribute__ ((__stdcall__)) +# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) +# define CALLBACK __stdcall +# else +# define CALLBACK +# endif +#endif +/* <wingdi.h> and <winnt.h> */ +#ifndef WINGDIAPI +#define GLEW_WINGDIAPI_DEFINED +#define WINGDIAPI __declspec(dllimport) +#endif +/* <ctype.h> */ +#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short wchar_t; +# define _WCHAR_T_DEFINED +#endif +/* <stddef.h> */ +#if !defined(_W64) +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif +#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) +# ifdef _WIN64 +typedef __int64 ptrdiff_t; +# else +typedef _W64 int ptrdiff_t; +# endif +# define _PTRDIFF_T_DEFINED +# define _PTRDIFF_T_ +#endif + +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# else +# define GLAPI WINGDIAPI +# endif +#endif + +/* + * GLEW_STATIC is defined for static library. + * GLEW_BUILD is defined for building the DLL library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#else /* _UNIX */ + +/* + * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO + * C. On my system, this amounts to _3 lines_ of included code, all of + * them pretty much harmless. If you know of a way of detecting 32 vs + * 64 _targets_ at compile time you are free to replace this with + * something that's portable. For now, _this_ is the portable solution. + * (mem, 2004-01-04) + */ + +#include <stddef.h> + +/* SGI MIPSPro doesn't like stdint.h in C++ mode */ +/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */ + +#if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__) +#include <inttypes.h> +#else +#include <stdint.h> +#endif + +#define GLEW_APIENTRY_DEFINED +#define APIENTRY + +/* + * GLEW_STATIC is defined for static library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# if defined(__GNUC__) && __GNUC__>=4 +# define GLEWAPI extern __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# define GLEWAPI extern __global +# else +# define GLEWAPI extern +# endif +#endif + +/* <glu.h> */ +#ifndef GLAPI +#define GLAPI extern +#endif + +#endif /* _WIN32 */ + +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifndef GLEWAPIENTRY +#define GLEWAPIENTRY +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ + +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 + +typedef unsigned int GLenum; +typedef unsigned int GLbitfield; +typedef unsigned int GLuint; +typedef int GLint; +typedef int GLsizei; +typedef unsigned char GLboolean; +typedef signed char GLbyte; +typedef short GLshort; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; +typedef unsigned long GLulong; +typedef float GLfloat; +typedef float GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void GLvoid; +#if defined(_MSC_VER) && _MSC_VER < 1400 +typedef __int64 GLint64EXT; +typedef unsigned __int64 GLuint64EXT; +#elif defined(_MSC_VER) || defined(__BORLANDC__) +typedef signed long long GLint64EXT; +typedef unsigned long long GLuint64EXT; +#else +# if defined(__MINGW32__) || defined(__CYGWIN__) +#include <inttypes.h> +# endif +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif +typedef GLint64EXT GLint64; +typedef GLuint64EXT GLuint64; +typedef struct __GLsync *GLsync; + +typedef char GLchar; + +#define GL_ZERO 0 +#define GL_FALSE 0 +#define GL_LOGIC_OP 0x0BF1 +#define GL_NONE 0 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_NO_ERROR 0 +#define GL_POINTS 0x0000 +#define GL_CURRENT_BIT 0x00000001 +#define GL_TRUE 1 +#define GL_ONE 1 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_POINT_BIT 0x00000002 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_BIT 0x00000004 +#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_BIT 0x00000008 +#define GL_POLYGON 0x0009 +#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 0x0100 +#define GL_LOAD 0x0101 +#define GL_RETURN 0x0102 +#define GL_MULT 0x0103 +#define GL_ADD 0x0104 +#define GL_NEVER 0x0200 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#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_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_STENCIL_BUFFER_BIT 0x00000400 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#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 +#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_PASS_THROUGH_TOKEN 0x0700 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_EXP 0x0800 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_EXP2 0x0801 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LIST_MODE 0x0B30 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#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_LIGHTING 0x0B50 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_SHADE_MODEL 0x0B54 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_FOG 0x0B60 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#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_MATRIX_MODE 0x0BA0 +#define GL_NORMALIZE 0x0BA1 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_INDEX_MODE 0x0C30 +#define GL_RGBA_MODE 0x0C31 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_RENDER_MODE 0x0C40 +#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_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#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_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#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_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#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_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#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_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 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_INDEX_BITS 0x0D51 +#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_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_NAME_STACK_DEPTH 0x0D70 +#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_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#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_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#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 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_COLOR_INDEX 0x1900 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_BITMAP 0x1A00 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_RENDER 0x1C00 +#define GL_FEEDBACK 0x1C01 +#define GL_SELECT 0x1C02 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_S 0x2000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV 0x2300 +#define GL_EYE_LINEAR 0x2400 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_SPHERE_MAP 0x2402 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_PLANE 0x2502 +#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_CLAMP 0x2900 +#define GL_REPEAT 0x2901 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_R3_G3_B2 0x2A10 +#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 +#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 +#define GL_LIGHT0 0x4000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#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_HINT_BIT 0x00008000 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#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_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_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_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_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_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_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000fffff +#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff + +GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); +GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); +GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void GLAPIENTRY glArrayElement (GLint i); +GLAPI void GLAPIENTRY glBegin (GLenum mode); +GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); +GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); +GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GLAPI void GLAPIENTRY glCallList (GLuint list); +GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const void *lists); +GLAPI void GLAPIENTRY glClear (GLbitfield mask); +GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); +GLAPI void GLAPIENTRY glClearIndex (GLfloat c); +GLAPI void GLAPIENTRY glClearStencil (GLint s); +GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); +GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); +GLAPI void GLAPIENTRY glColor3iv (const GLint *v); +GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); +GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void GLAPIENTRY glColor4iv (const GLint *v); +GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); +GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); +GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); +GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); +GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +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); +GLAPI void GLAPIENTRY glCullFace (GLenum mode); +GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); +GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GLAPI void GLAPIENTRY glDepthFunc (GLenum func); +GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); +GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); +GLAPI void GLAPIENTRY glDisable (GLenum cap); +GLAPI void GLAPIENTRY glDisableClientState (GLenum array); +GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); +GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); +GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); +GLAPI void GLAPIENTRY glEnable (GLenum cap); +GLAPI void GLAPIENTRY glEnableClientState (GLenum array); +GLAPI void GLAPIENTRY glEnd (void); +GLAPI void GLAPIENTRY glEndList (void); +GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); +GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); +GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); +GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); +GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); +GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); +GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); +GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); +GLAPI void GLAPIENTRY glFinish (void); +GLAPI void GLAPIENTRY glFlush (void); +GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glFrontFace (GLenum mode); +GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); +GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); +GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); +GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); +GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); +GLAPI GLenum GLAPIENTRY glGetError (void); +GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, 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 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 glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); +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 glGetPointerv (GLenum pname, void* *params); +GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); +GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); +GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, 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 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +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 glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); +GLAPI void GLAPIENTRY glIndexMask (GLuint mask); +GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glIndexd (GLdouble c); +GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); +GLAPI void GLAPIENTRY glIndexf (GLfloat c); +GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); +GLAPI void GLAPIENTRY glIndexi (GLint c); +GLAPI void GLAPIENTRY glIndexiv (const GLint *c); +GLAPI void GLAPIENTRY glIndexs (GLshort c); +GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); +GLAPI void GLAPIENTRY glIndexub (GLubyte c); +GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); +GLAPI void GLAPIENTRY glInitNames (void); +GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const void *pointer); +GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); +GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); +GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); +GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); +GLAPI void GLAPIENTRY glLineWidth (GLfloat width); +GLAPI void GLAPIENTRY glListBase (GLuint base); +GLAPI void GLAPIENTRY glLoadIdentity (void); +GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glLoadName (GLuint name); +GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); +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 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 glMaterialf (GLenum face, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); +GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); +GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); +GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); +GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); +GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); +GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void GLAPIENTRY glPassThrough (GLfloat token); +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 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 glPixelZoom (GLfloat xfactor, GLfloat yfactor); +GLAPI void GLAPIENTRY glPointSize (GLfloat size); +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 glPopAttrib (void); +GLAPI void GLAPIENTRY glPopClientAttrib (void); +GLAPI void GLAPIENTRY glPopMatrix (void); +GLAPI void GLAPIENTRY glPopName (void); +GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushMatrix (void); +GLAPI void GLAPIENTRY glPushName (GLuint name); +GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); +GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); +GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); +GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); +GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); +GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); +GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); +GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); +GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); +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 glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); +GLAPI void GLAPIENTRY glShadeModel (GLenum mode); +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 glTexCoord1d (GLdouble s); +GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); +GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord1i (GLint s); +GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); +GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); +GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); +GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); +GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); +GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); +GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); +GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); +GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); +GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); +GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); +GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) + +#endif /* GL_VERSION_1_1 */ + +/* ---------------------------------- GLU ---------------------------------- */ + +#ifndef GLEW_NO_GLU +# ifdef __APPLE__ +# include <Availability.h> +# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +# define GLEW_NO_GLU +# endif +# endif +#endif + +#ifndef GLEW_NO_GLU +/* this is where we can safely include GLU */ +# if defined(__APPLE__) && defined(__MACH__) +# include <OpenGL/glu.h> +# else +# include <GL/glu.h> +# endif +#endif + +/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 + +#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_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_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_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_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E + +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + +#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) +#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) +#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) +#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) + +#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) + +#endif /* GL_VERSION_1_2 */ + +/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ + +#ifndef GL_VERSION_1_2_1 +#define GL_VERSION_1_2_1 1 + +#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) + +#endif /* GL_VERSION_1_2_1 */ + +/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 + +#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_CLAMP_TO_BORDER 0x812D +#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_SUBTRACT 0x84E7 +#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_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_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#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_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_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_MULTISAMPLE_BIT 0x20000000 + +typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, void *img); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); + +#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) +#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) +#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) +#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) +#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) +#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) +#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) +#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) +#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) +#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) +#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) +#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) +#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) +#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) +#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) +#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) +#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) +#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) +#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) +#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) +#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) +#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) +#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) +#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) +#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) +#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) +#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) +#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) +#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) +#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) +#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) +#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) +#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) +#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) +#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) +#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) +#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) +#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) +#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) +#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) +#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) +#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) +#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) +#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) +#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) +#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) + +#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) + +#endif /* GL_VERSION_1_3 */ + +/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const* indices, GLsizei drawcount); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); + +#define glBlendColor GLEW_GET_FUN(__glewBlendColor) +#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) +#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) +#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) +#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) +#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) +#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) +#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) +#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) +#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) +#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) +#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) +#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) +#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) +#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) +#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) +#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) +#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) +#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) +#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) +#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) +#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) +#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) +#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) +#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) +#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) +#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) +#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) +#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) +#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) +#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) +#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) +#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) +#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) +#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) +#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) +#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) +#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) +#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) +#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) +#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) +#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) +#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) +#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) +#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) +#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) +#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) + +#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) + +#endif /* GL_VERSION_1_4 */ + +/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 + +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#define GL_SRC2_RGB GL_SOURCE2_RGB +#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 + +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void* data); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); +typedef void* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); + +#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) +#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) +#define glBufferData GLEW_GET_FUN(__glewBufferData) +#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) +#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) +#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) +#define glEndQuery GLEW_GET_FUN(__glewEndQuery) +#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) +#define glGenQueries GLEW_GET_FUN(__glewGenQueries) +#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) +#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) +#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) +#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) +#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) +#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) +#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) +#define glIsQuery GLEW_GET_FUN(__glewIsQuery) +#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) +#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) + +#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) + +#endif /* GL_VERSION_1_5 */ + +/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLuint obj, GLsizei maxLength, GLsizei* length, GLchar* source); +typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const* string, const GLint* length); +typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); + +#define glAttachShader GLEW_GET_FUN(__glewAttachShader) +#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) +#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) +#define glCompileShader GLEW_GET_FUN(__glewCompileShader) +#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) +#define glCreateShader GLEW_GET_FUN(__glewCreateShader) +#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) +#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) +#define glDetachShader GLEW_GET_FUN(__glewDetachShader) +#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) +#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) +#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) +#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) +#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) +#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) +#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) +#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) +#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) +#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) +#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) +#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) +#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) +#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) +#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) +#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) +#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) +#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) +#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) +#define glIsProgram GLEW_GET_FUN(__glewIsProgram) +#define glIsShader GLEW_GET_FUN(__glewIsShader) +#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) +#define glShaderSource GLEW_GET_FUN(__glewShaderSource) +#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) +#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) +#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) +#define glUniform1f GLEW_GET_FUN(__glewUniform1f) +#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) +#define glUniform1i GLEW_GET_FUN(__glewUniform1i) +#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) +#define glUniform2f GLEW_GET_FUN(__glewUniform2f) +#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) +#define glUniform2i GLEW_GET_FUN(__glewUniform2i) +#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) +#define glUniform3f GLEW_GET_FUN(__glewUniform3f) +#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) +#define glUniform3i GLEW_GET_FUN(__glewUniform3i) +#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) +#define glUniform4f GLEW_GET_FUN(__glewUniform4f) +#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) +#define glUniform4i GLEW_GET_FUN(__glewUniform4i) +#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) +#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) +#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) +#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) +#define glUseProgram GLEW_GET_FUN(__glewUseProgram) +#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) +#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) +#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) +#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) +#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) +#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) +#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) +#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) +#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) +#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) +#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) +#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) +#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) +#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) +#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) +#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) +#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) +#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) +#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) +#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) +#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) +#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) +#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) +#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) +#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) +#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) +#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) +#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) +#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) +#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) +#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) +#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) +#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) +#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) +#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) +#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) +#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) +#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) + +#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) + +#endif /* GL_VERSION_2_0 */ + +/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 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 + +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + +#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) +#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) +#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) +#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) +#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) +#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) + +#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) + +#endif /* GL_VERSION_2_1 */ + +/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 + +#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 +#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 +#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 +#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 +#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 +#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 +#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB +#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES +#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#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_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#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_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#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_ALPHA_INTEGER 0x8D97 +#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 + +typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint colorNumber, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawBuffer, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawBuffer, const GLint* value); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawBuffer, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum cap, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum cap, GLuint index); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum pname, GLuint index, GLboolean* data); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar* name); +typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum cap, GLuint index); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void*pointer); + +#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) +#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) +#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) +#define glClampColor GLEW_GET_FUN(__glewClampColor) +#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) +#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) +#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) +#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) +#define glColorMaski GLEW_GET_FUN(__glewColorMaski) +#define glDisablei GLEW_GET_FUN(__glewDisablei) +#define glEnablei GLEW_GET_FUN(__glewEnablei) +#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) +#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) +#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) +#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) +#define glGetStringi GLEW_GET_FUN(__glewGetStringi) +#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) +#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) +#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) +#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) +#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) +#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) +#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) +#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) +#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) +#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) +#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) +#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) +#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) +#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) +#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) +#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) +#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) +#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) +#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) +#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) +#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) +#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) +#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) +#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) +#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) +#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) +#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) +#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) +#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) +#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) +#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) +#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) +#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) +#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) +#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) +#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) +#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) +#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) +#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) + +#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) + +#endif /* GL_VERSION_3_0 */ + +/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 + +#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_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#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_BUFFER_FORMAT 0x8C2E +#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_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalFormat, GLuint buffer); + +#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) +#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) +#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) +#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) + +#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) + +#endif /* GL_VERSION_3_1 */ + +/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 + +#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_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#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_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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum value, GLint64 * data); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum pname, GLuint index, GLint64 * data); + +#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) +#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) +#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) + +#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) + +#endif /* GL_VERSION_3_2 */ + +/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_RGB10_A2UI 0x906F + +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); + +#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) + +#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) + +#endif /* GL_VERSION_3_3 */ + +/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ + +#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_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F +#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 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); + +#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) +#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) +#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) +#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) +#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) + +#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) + +#endif /* GL_VERSION_4_0 */ + +/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 + +#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) + +#endif /* GL_VERSION_4_1 */ + +/* ----------------------------- GL_VERSION_4_2 ---------------------------- */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 + +#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_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 + +#define GLEW_VERSION_4_2 GLEW_GET_VAR(__GLEW_VERSION_4_2) + +#endif /* GL_VERSION_4_2 */ + +/* ----------------------------- GL_VERSION_4_3 ---------------------------- */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 + +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E + +#define GLEW_VERSION_4_3 GLEW_GET_VAR(__GLEW_VERSION_4_3) + +#endif /* GL_VERSION_4_3 */ + +/* ----------------------------- GL_VERSION_4_4 ---------------------------- */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 + +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A + +#define GLEW_VERSION_4_4 GLEW_GET_VAR(__GLEW_VERSION_4_4) + +#endif /* GL_VERSION_4_4 */ + +/* ----------------------------- GL_VERSION_4_5 ---------------------------- */ + +#ifndef GL_VERSION_4_5 +#define GL_VERSION_4_5 1 + +typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSPROC) (void); + +#define glGetGraphicsResetStatus GLEW_GET_FUN(__glewGetGraphicsResetStatus) + +#define GLEW_VERSION_4_5 GLEW_GET_VAR(__GLEW_VERSION_4_5) + +#endif /* GL_VERSION_4_5 */ + +/* -------------------------- GL_3DFX_multisample -------------------------- */ + +#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 + +#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) + +#endif /* GL_3DFX_multisample */ + +/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 + +typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); + +#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) + +#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) + +#endif /* GL_3DFX_tbuffer */ + +/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ + +#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 + +#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) + +#endif /* GL_3DFX_texture_compression_FXT1 */ + +/* ----------------------- GL_AMD_blend_minmax_factor ---------------------- */ + +#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 + +#define GLEW_AMD_blend_minmax_factor GLEW_GET_VAR(__GLEW_AMD_blend_minmax_factor) + +#endif /* GL_AMD_blend_minmax_factor */ + +/* ----------------------- GL_AMD_conservative_depth ----------------------- */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 + +#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) + +#endif /* GL_AMD_conservative_depth */ + +/* -------------------------- GL_AMD_debug_output -------------------------- */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 + +#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 (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, GLchar* message); + +#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) +#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) +#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) +#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) + +#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) + +#endif /* GL_AMD_debug_output */ + +/* ---------------------- GL_AMD_depth_clamp_separate ---------------------- */ + +#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 + +#define GLEW_AMD_depth_clamp_separate GLEW_GET_VAR(__GLEW_AMD_depth_clamp_separate) + +#endif /* GL_AMD_depth_clamp_separate */ + +/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + +#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) +#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) +#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) +#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) + +#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) + +#endif /* GL_AMD_draw_buffers_blend */ + +/* --------------------------- GL_AMD_gcn_shader --------------------------- */ + +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 + +#define GLEW_AMD_gcn_shader GLEW_GET_VAR(__GLEW_AMD_gcn_shader) + +#endif /* GL_AMD_gcn_shader */ + +/* ------------------------ GL_AMD_gpu_shader_int64 ------------------------ */ + +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 + +#define GLEW_AMD_gpu_shader_int64 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int64) + +#endif /* GL_AMD_gpu_shader_int64 */ + +/* ---------------------- GL_AMD_interleaved_elements ---------------------- */ + +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 + +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RG8UI 0x8238 +#define GL_RG16UI 0x823A +#define GL_RGBA8UI 0x8D7C +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 + +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param); + +#define glVertexAttribParameteriAMD GLEW_GET_FUN(__glewVertexAttribParameteriAMD) + +#define GLEW_AMD_interleaved_elements GLEW_GET_VAR(__GLEW_AMD_interleaved_elements) + +#endif /* GL_AMD_interleaved_elements */ + +/* ----------------------- GL_AMD_multi_draw_indirect ---------------------- */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); + +#define glMultiDrawArraysIndirectAMD GLEW_GET_FUN(__glewMultiDrawArraysIndirectAMD) +#define glMultiDrawElementsIndirectAMD GLEW_GET_FUN(__glewMultiDrawElementsIndirectAMD) + +#define GLEW_AMD_multi_draw_indirect GLEW_GET_VAR(__GLEW_AMD_multi_draw_indirect) + +#endif /* GL_AMD_multi_draw_indirect */ + +/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); +typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); + +#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) +#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) +#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) + +#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) + +#endif /* GL_AMD_name_gen_delete */ + +/* ---------------------- GL_AMD_occlusion_query_event --------------------- */ + +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 + +#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_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param); + +#define glQueryObjectParameteruiAMD GLEW_GET_FUN(__glewQueryObjectParameteruiAMD) + +#define GLEW_AMD_occlusion_query_event GLEW_GET_VAR(__GLEW_AMD_occlusion_query_event) + +#endif /* GL_AMD_occlusion_query_event */ + +/* ----------------------- GL_AMD_performance_monitor ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar *counterString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, GLchar *groupString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); + +#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) +#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) +#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) +#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) +#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) +#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) +#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) +#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) +#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) +#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) +#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) + +#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) + +#endif /* GL_AMD_performance_monitor */ + +/* -------------------------- GL_AMD_pinned_memory ------------------------- */ + +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 + +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 + +#define GLEW_AMD_pinned_memory GLEW_GET_VAR(__GLEW_AMD_pinned_memory) + +#endif /* GL_AMD_pinned_memory */ + +/* ----------------------- GL_AMD_query_buffer_object ---------------------- */ + +#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 + +#define GLEW_AMD_query_buffer_object GLEW_GET_VAR(__GLEW_AMD_query_buffer_object) + +#endif /* GL_AMD_query_buffer_object */ + +/* ------------------------ GL_AMD_sample_positions ------------------------ */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 + +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F + +typedef void (GLAPIENTRY * PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat* val); + +#define glSetMultisamplefvAMD GLEW_GET_FUN(__glewSetMultisamplefvAMD) + +#define GLEW_AMD_sample_positions GLEW_GET_VAR(__GLEW_AMD_sample_positions) + +#endif /* GL_AMD_sample_positions */ + +/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F + +#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) + +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +/* -------------------- GL_AMD_shader_atomic_counter_ops ------------------- */ + +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 + +#define GLEW_AMD_shader_atomic_counter_ops GLEW_GET_VAR(__GLEW_AMD_shader_atomic_counter_ops) + +#endif /* GL_AMD_shader_atomic_counter_ops */ + +/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 + +#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) + +#endif /* GL_AMD_shader_stencil_export */ + +/* ------------------- GL_AMD_shader_stencil_value_export ------------------ */ + +#ifndef GL_AMD_shader_stencil_value_export +#define GL_AMD_shader_stencil_value_export 1 + +#define GLEW_AMD_shader_stencil_value_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_value_export) + +#endif /* GL_AMD_shader_stencil_value_export */ + +/* ---------------------- GL_AMD_shader_trinary_minmax --------------------- */ + +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 + +#define GLEW_AMD_shader_trinary_minmax GLEW_GET_VAR(__GLEW_AMD_shader_trinary_minmax) + +#endif /* GL_AMD_shader_trinary_minmax */ + +/* ------------------------- GL_AMD_sparse_texture ------------------------- */ + +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 + +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#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 + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); + +#define glTexStorageSparseAMD GLEW_GET_FUN(__glewTexStorageSparseAMD) +#define glTextureStorageSparseAMD GLEW_GET_FUN(__glewTextureStorageSparseAMD) + +#define GLEW_AMD_sparse_texture GLEW_GET_VAR(__GLEW_AMD_sparse_texture) + +#endif /* GL_AMD_sparse_texture */ + +/* ------------------- GL_AMD_stencil_operation_extended ------------------- */ + +#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 (GLAPIENTRY * PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); + +#define glStencilOpValueAMD GLEW_GET_FUN(__glewStencilOpValueAMD) + +#define GLEW_AMD_stencil_operation_extended GLEW_GET_VAR(__GLEW_AMD_stencil_operation_extended) + +#endif /* GL_AMD_stencil_operation_extended */ + +/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 + +#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) + +#endif /* GL_AMD_texture_texture4 */ + +/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 + +#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) + +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +/* ----------------------- GL_AMD_transform_feedback4 ---------------------- */ + +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 + +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 + +#define GLEW_AMD_transform_feedback4 GLEW_GET_VAR(__GLEW_AMD_transform_feedback4) + +#endif /* GL_AMD_transform_feedback4 */ + +/* ----------------------- GL_AMD_vertex_shader_layer ---------------------- */ + +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 + +#define GLEW_AMD_vertex_shader_layer GLEW_GET_VAR(__GLEW_AMD_vertex_shader_layer) + +#endif /* GL_AMD_vertex_shader_layer */ + +/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ + +#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 (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); + +#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) +#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) + +#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) + +#endif /* GL_AMD_vertex_shader_tessellator */ + +/* ------------------ GL_AMD_vertex_shader_viewport_index ------------------ */ + +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 + +#define GLEW_AMD_vertex_shader_viewport_index GLEW_GET_VAR(__GLEW_AMD_vertex_shader_viewport_index) + +#endif /* GL_AMD_vertex_shader_viewport_index */ + +/* ------------------------- GL_ANGLE_depth_texture ------------------------ */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 + +#define GLEW_ANGLE_depth_texture GLEW_GET_VAR(__GLEW_ANGLE_depth_texture) + +#endif /* GL_ANGLE_depth_texture */ + +/* ----------------------- GL_ANGLE_framebuffer_blit ----------------------- */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 + +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA + +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +#define glBlitFramebufferANGLE GLEW_GET_FUN(__glewBlitFramebufferANGLE) + +#define GLEW_ANGLE_framebuffer_blit GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_blit) + +#endif /* GL_ANGLE_framebuffer_blit */ + +/* -------------------- GL_ANGLE_framebuffer_multisample ------------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleANGLE GLEW_GET_FUN(__glewRenderbufferStorageMultisampleANGLE) + +#define GLEW_ANGLE_framebuffer_multisample GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_multisample) + +#endif /* GL_ANGLE_framebuffer_multisample */ + +/* ----------------------- GL_ANGLE_instanced_arrays ----------------------- */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); + +#define glDrawArraysInstancedANGLE GLEW_GET_FUN(__glewDrawArraysInstancedANGLE) +#define glDrawElementsInstancedANGLE GLEW_GET_FUN(__glewDrawElementsInstancedANGLE) +#define glVertexAttribDivisorANGLE GLEW_GET_FUN(__glewVertexAttribDivisorANGLE) + +#define GLEW_ANGLE_instanced_arrays GLEW_GET_VAR(__GLEW_ANGLE_instanced_arrays) + +#endif /* GL_ANGLE_instanced_arrays */ + +/* -------------------- GL_ANGLE_pack_reverse_row_order -------------------- */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 + +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 + +#define GLEW_ANGLE_pack_reverse_row_order GLEW_GET_VAR(__GLEW_ANGLE_pack_reverse_row_order) + +#endif /* GL_ANGLE_pack_reverse_row_order */ + +/* ------------------------ GL_ANGLE_program_binary ------------------------ */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 + +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 + +#define GLEW_ANGLE_program_binary GLEW_GET_VAR(__GLEW_ANGLE_program_binary) + +#endif /* GL_ANGLE_program_binary */ + +/* ------------------- GL_ANGLE_texture_compression_dxt1 ------------------- */ + +#ifndef GL_ANGLE_texture_compression_dxt1 +#define GL_ANGLE_texture_compression_dxt1 1 + +#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 + +#define GLEW_ANGLE_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt1) + +#endif /* GL_ANGLE_texture_compression_dxt1 */ + +/* ------------------- GL_ANGLE_texture_compression_dxt3 ------------------- */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 + +#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 + +#define GLEW_ANGLE_texture_compression_dxt3 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt3) + +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +/* ------------------- GL_ANGLE_texture_compression_dxt5 ------------------- */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 + +#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 + +#define GLEW_ANGLE_texture_compression_dxt5 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt5) + +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +/* ------------------------- GL_ANGLE_texture_usage ------------------------ */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 + +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 + +#define GLEW_ANGLE_texture_usage GLEW_GET_VAR(__GLEW_ANGLE_texture_usage) + +#endif /* GL_ANGLE_texture_usage */ + +/* -------------------------- GL_ANGLE_timer_query ------------------------- */ + +#ifndef GL_ANGLE_timer_query +#define GL_ANGLE_timer_query 1 + +#define GL_QUERY_COUNTER_BITS_ANGLE 0x8864 +#define GL_CURRENT_QUERY_ANGLE 0x8865 +#define GL_QUERY_RESULT_ANGLE 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ANGLE 0x8867 +#define GL_TIME_ELAPSED_ANGLE 0x88BF +#define GL_TIMESTAMP_ANGLE 0x8E28 + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYANGLEPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESANGLEPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYANGLEPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENQUERIESANGLEPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VANGLEPROC) (GLuint id, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVANGLEPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VANGLEPROC) (GLuint id, GLenum pname, GLuint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVANGLEPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVANGLEPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYANGLEPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERANGLEPROC) (GLuint id, GLenum target); + +#define glBeginQueryANGLE GLEW_GET_FUN(__glewBeginQueryANGLE) +#define glDeleteQueriesANGLE GLEW_GET_FUN(__glewDeleteQueriesANGLE) +#define glEndQueryANGLE GLEW_GET_FUN(__glewEndQueryANGLE) +#define glGenQueriesANGLE GLEW_GET_FUN(__glewGenQueriesANGLE) +#define glGetQueryObjecti64vANGLE GLEW_GET_FUN(__glewGetQueryObjecti64vANGLE) +#define glGetQueryObjectivANGLE GLEW_GET_FUN(__glewGetQueryObjectivANGLE) +#define glGetQueryObjectui64vANGLE GLEW_GET_FUN(__glewGetQueryObjectui64vANGLE) +#define glGetQueryObjectuivANGLE GLEW_GET_FUN(__glewGetQueryObjectuivANGLE) +#define glGetQueryivANGLE GLEW_GET_FUN(__glewGetQueryivANGLE) +#define glIsQueryANGLE GLEW_GET_FUN(__glewIsQueryANGLE) +#define glQueryCounterANGLE GLEW_GET_FUN(__glewQueryCounterANGLE) + +#define GLEW_ANGLE_timer_query GLEW_GET_VAR(__GLEW_ANGLE_timer_query) + +#endif /* GL_ANGLE_timer_query */ + +/* ------------------- GL_ANGLE_translated_shader_source ------------------- */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 + +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 + +typedef void (GLAPIENTRY * PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); + +#define glGetTranslatedShaderSourceANGLE GLEW_GET_FUN(__glewGetTranslatedShaderSourceANGLE) + +#define GLEW_ANGLE_translated_shader_source GLEW_GET_VAR(__GLEW_ANGLE_translated_shader_source) + +#endif /* GL_ANGLE_translated_shader_source */ + +/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 + +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 + +#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) + +#endif /* GL_APPLE_aux_depth_stencil */ + +/* ------------------------ GL_APPLE_client_storage ------------------------ */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 + +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 + +#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) + +#endif /* GL_APPLE_client_storage */ + +/* ------------------------- GL_APPLE_element_array ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); + +#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) +#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) +#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) +#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) +#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) + +#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) + +#endif /* GL_APPLE_element_array */ + +/* ----------------------------- GL_APPLE_fence ---------------------------- */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 + +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B + +typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); + +#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) +#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) +#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) +#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) +#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) +#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) +#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) +#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) + +#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) + +#endif /* GL_APPLE_fence */ + +/* ------------------------- GL_APPLE_float_pixels ------------------------- */ + +#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 + +#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) + +#endif /* GL_APPLE_float_pixels */ + +/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); + +#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) +#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) + +#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) + +#endif /* GL_APPLE_flush_buffer_range */ + +/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); + +#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) +#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) +#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) + +#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) + +#endif /* GL_APPLE_object_purgeable */ + +/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ + +#ifndef GL_APPLE_pixel_buffer +#define GL_APPLE_pixel_buffer 1 + +#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 + +#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) + +#endif /* GL_APPLE_pixel_buffer */ + +/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 + +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_422_APPLE 0x8A1F +#define GL_RGB_RAW_422_APPLE 0x8A51 + +#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) + +#endif /* GL_APPLE_rgb_422 */ + +/* --------------------------- GL_APPLE_row_bytes -------------------------- */ + +#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 + +#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) + +#endif /* GL_APPLE_row_bytes */ + +/* ------------------------ GL_APPLE_specular_vector ----------------------- */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 + +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 + +#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) + +#endif /* GL_APPLE_specular_vector */ + +/* ------------------------- GL_APPLE_texture_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params); +typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, void *pointer); + +#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) +#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) + +#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) + +#endif /* GL_APPLE_texture_range */ + +/* ------------------------ GL_APPLE_transform_hint ------------------------ */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 + +#define GL_TRANSFORM_HINT_APPLE 0x85B1 + +#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) + +#endif /* GL_APPLE_transform_hint */ + +/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); + +#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) +#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) +#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) +#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) + +#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) + +#endif /* GL_APPLE_vertex_array_object */ + +/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ + +#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_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF + +typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); + +#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) +#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) +#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) + +#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) + +#endif /* GL_APPLE_vertex_array_range */ + +/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ + +#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 (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); + +#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) +#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) +#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) +#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) +#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) +#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) +#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) + +#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) + +#endif /* GL_APPLE_vertex_program_evaluators */ + +/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 + +#define GL_YCBCR_422_APPLE 0x85B9 + +#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) + +#endif /* GL_APPLE_ycbcr_422 */ + +/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 + +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_RGB565 0x8D62 +#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_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD + +typedef int GLfixed; + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); +typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const void*binary, GLsizei length); + +#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) +#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) +#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) +#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) +#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) + +#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) + +#endif /* GL_ARB_ES2_compatibility */ + +/* ----------------------- GL_ARB_ES3_1_compatibility ---------------------- */ + +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 + +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers); + +#define glMemoryBarrierByRegion GLEW_GET_FUN(__glewMemoryBarrierByRegion) + +#define GLEW_ARB_ES3_1_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_1_compatibility) + +#endif /* GL_ARB_ES3_1_compatibility */ + +/* ------------------------ GL_ARB_ES3_compatibility ----------------------- */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 + +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#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_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 GLEW_ARB_ES3_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_compatibility) + +#endif /* GL_ARB_ES3_compatibility */ + +/* ------------------------ GL_ARB_arrays_of_arrays ------------------------ */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 + +#define GLEW_ARB_arrays_of_arrays GLEW_GET_VAR(__GLEW_ARB_arrays_of_arrays) + +#endif /* GL_ARB_arrays_of_arrays */ + +/* -------------------------- GL_ARB_base_instance ------------------------- */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); + +#define glDrawArraysInstancedBaseInstance GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstance) +#define glDrawElementsInstancedBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstance) +#define glDrawElementsInstancedBaseVertexBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstance) + +#define GLEW_ARB_base_instance GLEW_GET_VAR(__GLEW_ARB_base_instance) + +#endif /* GL_ARB_base_instance */ + +/* ------------------------ GL_ARB_bindless_texture ------------------------ */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 + +#define GL_UNSIGNED_INT64_ARB 0x140F + +typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT* params); +typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT* v); + +#define glGetImageHandleARB GLEW_GET_FUN(__glewGetImageHandleARB) +#define glGetTextureHandleARB GLEW_GET_FUN(__glewGetTextureHandleARB) +#define glGetTextureSamplerHandleARB GLEW_GET_FUN(__glewGetTextureSamplerHandleARB) +#define glGetVertexAttribLui64vARB GLEW_GET_FUN(__glewGetVertexAttribLui64vARB) +#define glIsImageHandleResidentARB GLEW_GET_FUN(__glewIsImageHandleResidentARB) +#define glIsTextureHandleResidentARB GLEW_GET_FUN(__glewIsTextureHandleResidentARB) +#define glMakeImageHandleNonResidentARB GLEW_GET_FUN(__glewMakeImageHandleNonResidentARB) +#define glMakeImageHandleResidentARB GLEW_GET_FUN(__glewMakeImageHandleResidentARB) +#define glMakeTextureHandleNonResidentARB GLEW_GET_FUN(__glewMakeTextureHandleNonResidentARB) +#define glMakeTextureHandleResidentARB GLEW_GET_FUN(__glewMakeTextureHandleResidentARB) +#define glProgramUniformHandleui64ARB GLEW_GET_FUN(__glewProgramUniformHandleui64ARB) +#define glProgramUniformHandleui64vARB GLEW_GET_FUN(__glewProgramUniformHandleui64vARB) +#define glUniformHandleui64ARB GLEW_GET_FUN(__glewUniformHandleui64ARB) +#define glUniformHandleui64vARB GLEW_GET_FUN(__glewUniformHandleui64vARB) +#define glVertexAttribL1ui64ARB GLEW_GET_FUN(__glewVertexAttribL1ui64ARB) +#define glVertexAttribL1ui64vARB GLEW_GET_FUN(__glewVertexAttribL1ui64vARB) + +#define GLEW_ARB_bindless_texture GLEW_GET_VAR(__GLEW_ARB_bindless_texture) + +#endif /* GL_ARB_bindless_texture */ + +/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar * name); + +#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) +#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) + +#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) + +#endif /* GL_ARB_blend_func_extended */ + +/* ------------------------- GL_ARB_buffer_storage ------------------------- */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 + +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT 0x00000040 +#define GL_MAP_COHERENT_BIT 0x00000080 +#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 + +typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); + +#define glBufferStorage GLEW_GET_FUN(__glewBufferStorage) +#define glNamedBufferStorageEXT GLEW_GET_FUN(__glewNamedBufferStorageEXT) + +#define GLEW_ARB_buffer_storage GLEW_GET_VAR(__GLEW_ARB_buffer_storage) + +#endif /* GL_ARB_buffer_storage */ + +/* ---------------------------- GL_ARB_cl_event ---------------------------- */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 + +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 + +typedef struct _cl_context *cl_context; +typedef struct _cl_event *cl_event; + +typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); + +#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) + +#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) + +#endif /* GL_ARB_cl_event */ + +/* ----------------------- GL_ARB_clear_buffer_object ---------------------- */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 + +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + +#define glClearBufferData GLEW_GET_FUN(__glewClearBufferData) +#define glClearBufferSubData GLEW_GET_FUN(__glewClearBufferSubData) +#define glClearNamedBufferDataEXT GLEW_GET_FUN(__glewClearNamedBufferDataEXT) +#define glClearNamedBufferSubDataEXT GLEW_GET_FUN(__glewClearNamedBufferSubDataEXT) + +#define GLEW_ARB_clear_buffer_object GLEW_GET_VAR(__GLEW_ARB_clear_buffer_object) + +#endif /* GL_ARB_clear_buffer_object */ + +/* -------------------------- GL_ARB_clear_texture ------------------------- */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 + +#define GL_CLEAR_TEXTURE 0x9365 + +typedef void (GLAPIENTRY * PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + +#define glClearTexImage GLEW_GET_FUN(__glewClearTexImage) +#define glClearTexSubImage GLEW_GET_FUN(__glewClearTexSubImage) + +#define GLEW_ARB_clear_texture GLEW_GET_VAR(__GLEW_ARB_clear_texture) + +#endif /* GL_ARB_clear_texture */ + +/* -------------------------- GL_ARB_clip_control -------------------------- */ + +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 + +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F + +typedef void (GLAPIENTRY * PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth); + +#define glClipControl GLEW_GET_FUN(__glewClipControl) + +#define GLEW_ARB_clip_control GLEW_GET_VAR(__GLEW_ARB_clip_control) + +#endif /* GL_ARB_clip_control */ + +/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); + +#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) + +#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) + +#endif /* GL_ARB_color_buffer_float */ + +/* -------------------------- GL_ARB_compatibility ------------------------- */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 + +#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) + +#endif /* GL_ARB_compatibility */ + +/* ---------------- GL_ARB_compressed_texture_pixel_storage ---------------- */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 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 GLEW_ARB_compressed_texture_pixel_storage GLEW_GET_VAR(__GLEW_ARB_compressed_texture_pixel_storage) + +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +/* ------------------------- GL_ARB_compute_shader ------------------------- */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 + +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#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_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#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 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_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF + +typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); + +#define glDispatchCompute GLEW_GET_FUN(__glewDispatchCompute) +#define glDispatchComputeIndirect GLEW_GET_FUN(__glewDispatchComputeIndirect) + +#define GLEW_ARB_compute_shader GLEW_GET_VAR(__GLEW_ARB_compute_shader) + +#endif /* GL_ARB_compute_shader */ + +/* ------------------- GL_ARB_compute_variable_group_size ------------------ */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 + +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 + +typedef void (GLAPIENTRY * 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); + +#define glDispatchComputeGroupSizeARB GLEW_GET_FUN(__glewDispatchComputeGroupSizeARB) + +#define GLEW_ARB_compute_variable_group_size GLEW_GET_VAR(__GLEW_ARB_compute_variable_group_size) + +#endif /* GL_ARB_compute_variable_group_size */ + +/* ------------------- GL_ARB_conditional_render_inverted ------------------ */ + +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 + +#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 GLEW_ARB_conditional_render_inverted GLEW_GET_VAR(__GLEW_ARB_conditional_render_inverted) + +#endif /* GL_ARB_conditional_render_inverted */ + +/* ----------------------- GL_ARB_conservative_depth ----------------------- */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 + +#define GLEW_ARB_conservative_depth GLEW_GET_VAR(__GLEW_ARB_conservative_depth) + +#endif /* GL_ARB_conservative_depth */ + +/* --------------------------- GL_ARB_copy_buffer -------------------------- */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 + +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 + +typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); + +#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) + +#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) + +#endif /* GL_ARB_copy_buffer */ + +/* --------------------------- GL_ARB_copy_image --------------------------- */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 + +typedef void (GLAPIENTRY * 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); + +#define glCopyImageSubData GLEW_GET_FUN(__glewCopyImageSubData) + +#define GLEW_ARB_copy_image GLEW_GET_VAR(__GLEW_ARB_copy_image) + +#endif /* GL_ARB_copy_image */ + +/* -------------------------- GL_ARB_cull_distance ------------------------- */ + +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 + +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA + +#define GLEW_ARB_cull_distance GLEW_GET_VAR(__GLEW_ARB_cull_distance) + +#endif /* GL_ARB_cull_distance */ + +/* -------------------------- GL_ARB_debug_output -------------------------- */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 + +#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 (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog); + +#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) +#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) +#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) +#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) + +#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) + +#endif /* GL_ARB_debug_output */ + +/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 + +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD + +#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) + +#endif /* GL_ARB_depth_buffer_float */ + +/* --------------------------- GL_ARB_depth_clamp -------------------------- */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 + +#define GL_DEPTH_CLAMP 0x864F + +#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) + +#endif /* GL_ARB_depth_clamp */ + +/* -------------------------- GL_ARB_depth_texture ------------------------- */ + +#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 + +#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) + +#endif /* GL_ARB_depth_texture */ + +/* ----------------------- GL_ARB_derivative_control ----------------------- */ + +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 + +#define GLEW_ARB_derivative_control GLEW_GET_VAR(__GLEW_ARB_derivative_control) + +#endif /* GL_ARB_derivative_control */ + +/* ----------------------- GL_ARB_direct_state_access ---------------------- */ + +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 + +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_TEXTURE_BINDING 0x82EB + +typedef void (GLAPIENTRY * PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint* textures); +typedef void (GLAPIENTRY * PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64* param); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments); +typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides); + +#define glBindTextureUnit GLEW_GET_FUN(__glewBindTextureUnit) +#define glBlitNamedFramebuffer GLEW_GET_FUN(__glewBlitNamedFramebuffer) +#define glCheckNamedFramebufferStatus GLEW_GET_FUN(__glewCheckNamedFramebufferStatus) +#define glClearNamedBufferData GLEW_GET_FUN(__glewClearNamedBufferData) +#define glClearNamedBufferSubData GLEW_GET_FUN(__glewClearNamedBufferSubData) +#define glClearNamedFramebufferfi GLEW_GET_FUN(__glewClearNamedFramebufferfi) +#define glClearNamedFramebufferfv GLEW_GET_FUN(__glewClearNamedFramebufferfv) +#define glClearNamedFramebufferiv GLEW_GET_FUN(__glewClearNamedFramebufferiv) +#define glClearNamedFramebufferuiv GLEW_GET_FUN(__glewClearNamedFramebufferuiv) +#define glCompressedTextureSubImage1D GLEW_GET_FUN(__glewCompressedTextureSubImage1D) +#define glCompressedTextureSubImage2D GLEW_GET_FUN(__glewCompressedTextureSubImage2D) +#define glCompressedTextureSubImage3D GLEW_GET_FUN(__glewCompressedTextureSubImage3D) +#define glCopyNamedBufferSubData GLEW_GET_FUN(__glewCopyNamedBufferSubData) +#define glCopyTextureSubImage1D GLEW_GET_FUN(__glewCopyTextureSubImage1D) +#define glCopyTextureSubImage2D GLEW_GET_FUN(__glewCopyTextureSubImage2D) +#define glCopyTextureSubImage3D GLEW_GET_FUN(__glewCopyTextureSubImage3D) +#define glCreateBuffers GLEW_GET_FUN(__glewCreateBuffers) +#define glCreateFramebuffers GLEW_GET_FUN(__glewCreateFramebuffers) +#define glCreateProgramPipelines GLEW_GET_FUN(__glewCreateProgramPipelines) +#define glCreateQueries GLEW_GET_FUN(__glewCreateQueries) +#define glCreateRenderbuffers GLEW_GET_FUN(__glewCreateRenderbuffers) +#define glCreateSamplers GLEW_GET_FUN(__glewCreateSamplers) +#define glCreateTextures GLEW_GET_FUN(__glewCreateTextures) +#define glCreateTransformFeedbacks GLEW_GET_FUN(__glewCreateTransformFeedbacks) +#define glCreateVertexArrays GLEW_GET_FUN(__glewCreateVertexArrays) +#define glDisableVertexArrayAttrib GLEW_GET_FUN(__glewDisableVertexArrayAttrib) +#define glEnableVertexArrayAttrib GLEW_GET_FUN(__glewEnableVertexArrayAttrib) +#define glFlushMappedNamedBufferRange GLEW_GET_FUN(__glewFlushMappedNamedBufferRange) +#define glGenerateTextureMipmap GLEW_GET_FUN(__glewGenerateTextureMipmap) +#define glGetCompressedTextureImage GLEW_GET_FUN(__glewGetCompressedTextureImage) +#define glGetNamedBufferParameteri64v GLEW_GET_FUN(__glewGetNamedBufferParameteri64v) +#define glGetNamedBufferParameteriv GLEW_GET_FUN(__glewGetNamedBufferParameteriv) +#define glGetNamedBufferPointerv GLEW_GET_FUN(__glewGetNamedBufferPointerv) +#define glGetNamedBufferSubData GLEW_GET_FUN(__glewGetNamedBufferSubData) +#define glGetNamedFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameteriv) +#define glGetNamedFramebufferParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferParameteriv) +#define glGetNamedRenderbufferParameteriv GLEW_GET_FUN(__glewGetNamedRenderbufferParameteriv) +#define glGetQueryBufferObjecti64v GLEW_GET_FUN(__glewGetQueryBufferObjecti64v) +#define glGetQueryBufferObjectiv GLEW_GET_FUN(__glewGetQueryBufferObjectiv) +#define glGetQueryBufferObjectui64v GLEW_GET_FUN(__glewGetQueryBufferObjectui64v) +#define glGetQueryBufferObjectuiv GLEW_GET_FUN(__glewGetQueryBufferObjectuiv) +#define glGetTextureImage GLEW_GET_FUN(__glewGetTextureImage) +#define glGetTextureLevelParameterfv GLEW_GET_FUN(__glewGetTextureLevelParameterfv) +#define glGetTextureLevelParameteriv GLEW_GET_FUN(__glewGetTextureLevelParameteriv) +#define glGetTextureParameterIiv GLEW_GET_FUN(__glewGetTextureParameterIiv) +#define glGetTextureParameterIuiv GLEW_GET_FUN(__glewGetTextureParameterIuiv) +#define glGetTextureParameterfv GLEW_GET_FUN(__glewGetTextureParameterfv) +#define glGetTextureParameteriv GLEW_GET_FUN(__glewGetTextureParameteriv) +#define glGetTransformFeedbacki64_v GLEW_GET_FUN(__glewGetTransformFeedbacki64_v) +#define glGetTransformFeedbacki_v GLEW_GET_FUN(__glewGetTransformFeedbacki_v) +#define glGetTransformFeedbackiv GLEW_GET_FUN(__glewGetTransformFeedbackiv) +#define glGetVertexArrayIndexed64iv GLEW_GET_FUN(__glewGetVertexArrayIndexed64iv) +#define glGetVertexArrayIndexediv GLEW_GET_FUN(__glewGetVertexArrayIndexediv) +#define glGetVertexArrayiv GLEW_GET_FUN(__glewGetVertexArrayiv) +#define glInvalidateNamedFramebufferData GLEW_GET_FUN(__glewInvalidateNamedFramebufferData) +#define glInvalidateNamedFramebufferSubData GLEW_GET_FUN(__glewInvalidateNamedFramebufferSubData) +#define glMapNamedBuffer GLEW_GET_FUN(__glewMapNamedBuffer) +#define glMapNamedBufferRange GLEW_GET_FUN(__glewMapNamedBufferRange) +#define glNamedBufferData GLEW_GET_FUN(__glewNamedBufferData) +#define glNamedBufferStorage GLEW_GET_FUN(__glewNamedBufferStorage) +#define glNamedBufferSubData GLEW_GET_FUN(__glewNamedBufferSubData) +#define glNamedFramebufferDrawBuffer GLEW_GET_FUN(__glewNamedFramebufferDrawBuffer) +#define glNamedFramebufferDrawBuffers GLEW_GET_FUN(__glewNamedFramebufferDrawBuffers) +#define glNamedFramebufferParameteri GLEW_GET_FUN(__glewNamedFramebufferParameteri) +#define glNamedFramebufferReadBuffer GLEW_GET_FUN(__glewNamedFramebufferReadBuffer) +#define glNamedFramebufferRenderbuffer GLEW_GET_FUN(__glewNamedFramebufferRenderbuffer) +#define glNamedFramebufferTexture GLEW_GET_FUN(__glewNamedFramebufferTexture) +#define glNamedFramebufferTextureLayer GLEW_GET_FUN(__glewNamedFramebufferTextureLayer) +#define glNamedRenderbufferStorage GLEW_GET_FUN(__glewNamedRenderbufferStorage) +#define glNamedRenderbufferStorageMultisample GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisample) +#define glTextureBuffer GLEW_GET_FUN(__glewTextureBuffer) +#define glTextureBufferRange GLEW_GET_FUN(__glewTextureBufferRange) +#define glTextureParameterIiv GLEW_GET_FUN(__glewTextureParameterIiv) +#define glTextureParameterIuiv GLEW_GET_FUN(__glewTextureParameterIuiv) +#define glTextureParameterf GLEW_GET_FUN(__glewTextureParameterf) +#define glTextureParameterfv GLEW_GET_FUN(__glewTextureParameterfv) +#define glTextureParameteri GLEW_GET_FUN(__glewTextureParameteri) +#define glTextureParameteriv GLEW_GET_FUN(__glewTextureParameteriv) +#define glTextureStorage1D GLEW_GET_FUN(__glewTextureStorage1D) +#define glTextureStorage2D GLEW_GET_FUN(__glewTextureStorage2D) +#define glTextureStorage2DMultisample GLEW_GET_FUN(__glewTextureStorage2DMultisample) +#define glTextureStorage3D GLEW_GET_FUN(__glewTextureStorage3D) +#define glTextureStorage3DMultisample GLEW_GET_FUN(__glewTextureStorage3DMultisample) +#define glTextureSubImage1D GLEW_GET_FUN(__glewTextureSubImage1D) +#define glTextureSubImage2D GLEW_GET_FUN(__glewTextureSubImage2D) +#define glTextureSubImage3D GLEW_GET_FUN(__glewTextureSubImage3D) +#define glTransformFeedbackBufferBase GLEW_GET_FUN(__glewTransformFeedbackBufferBase) +#define glTransformFeedbackBufferRange GLEW_GET_FUN(__glewTransformFeedbackBufferRange) +#define glUnmapNamedBuffer GLEW_GET_FUN(__glewUnmapNamedBuffer) +#define glVertexArrayAttribBinding GLEW_GET_FUN(__glewVertexArrayAttribBinding) +#define glVertexArrayAttribFormat GLEW_GET_FUN(__glewVertexArrayAttribFormat) +#define glVertexArrayAttribIFormat GLEW_GET_FUN(__glewVertexArrayAttribIFormat) +#define glVertexArrayAttribLFormat GLEW_GET_FUN(__glewVertexArrayAttribLFormat) +#define glVertexArrayBindingDivisor GLEW_GET_FUN(__glewVertexArrayBindingDivisor) +#define glVertexArrayElementBuffer GLEW_GET_FUN(__glewVertexArrayElementBuffer) +#define glVertexArrayVertexBuffer GLEW_GET_FUN(__glewVertexArrayVertexBuffer) +#define glVertexArrayVertexBuffers GLEW_GET_FUN(__glewVertexArrayVertexBuffers) + +#define GLEW_ARB_direct_state_access GLEW_GET_VAR(__GLEW_ARB_direct_state_access) + +#endif /* GL_ARB_direct_state_access */ + +/* -------------------------- GL_ARB_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) + +#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) + +#endif /* GL_ARB_draw_buffers */ + +/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); + +#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) +#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) +#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) +#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) + +#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) + +#endif /* GL_ARB_draw_buffers_blend */ + +/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 + +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount, const GLint *basevertex); + +#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) +#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) +#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) +#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) + +#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) + +#endif /* GL_ARB_draw_elements_base_vertex */ + +/* -------------------------- GL_ARB_draw_indirect ------------------------- */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 + +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect); + +#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) +#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) + +#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) + +#endif /* GL_ARB_draw_indirect */ + +/* ------------------------- GL_ARB_draw_instanced ------------------------- */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 + +#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) + +#endif /* GL_ARB_draw_instanced */ + +/* ------------------------ GL_ARB_enhanced_layouts ------------------------ */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 + +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C + +#define GLEW_ARB_enhanced_layouts GLEW_GET_VAR(__GLEW_ARB_enhanced_layouts) + +#endif /* GL_ARB_enhanced_layouts */ + +/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 + +#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) + +#endif /* GL_ARB_explicit_attrib_location */ + +/* -------------------- GL_ARB_explicit_uniform_location ------------------- */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 + +#define GL_MAX_UNIFORM_LOCATIONS 0x826E + +#define GLEW_ARB_explicit_uniform_location GLEW_GET_VAR(__GLEW_ARB_explicit_uniform_location) + +#endif /* GL_ARB_explicit_uniform_location */ + +/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 + +#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) + +#endif /* GL_ARB_fragment_coord_conventions */ + +/* --------------------- GL_ARB_fragment_layer_viewport -------------------- */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 + +#define GLEW_ARB_fragment_layer_viewport GLEW_GET_VAR(__GLEW_ARB_fragment_layer_viewport) + +#endif /* GL_ARB_fragment_layer_viewport */ + +/* ------------------------ GL_ARB_fragment_program ------------------------ */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 + +#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 + +#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) + +#endif /* GL_ARB_fragment_program */ + +/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 + +#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) + +#endif /* GL_ARB_fragment_program_shadow */ + +/* ------------------------- GL_ARB_fragment_shader ------------------------ */ + +#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 + +#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) + +#endif /* GL_ARB_fragment_shader */ + +/* ------------------- GL_ARB_framebuffer_no_attachments ------------------- */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); + +#define glFramebufferParameteri GLEW_GET_FUN(__glewFramebufferParameteri) +#define glGetFramebufferParameteriv GLEW_GET_FUN(__glewGetFramebufferParameteriv) +#define glGetNamedFramebufferParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferParameterivEXT) +#define glNamedFramebufferParameteriEXT GLEW_GET_FUN(__glewNamedFramebufferParameteriEXT) + +#define GLEW_ARB_framebuffer_no_attachments GLEW_GET_VAR(__GLEW_ARB_framebuffer_no_attachments) + +#endif /* GL_ARB_framebuffer_no_attachments */ + +/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 + +#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_INDEX 0x8222 +#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_UNSIGNED_NORMALIZED 0x8C17 +#define GL_SRGB 0x8C40 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) +#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) +#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) +#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) +#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) +#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) +#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) +#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) +#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) +#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) +#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) +#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) +#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) +#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) +#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) +#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) +#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) +#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) +#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) +#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) + +#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) + +#endif /* GL_ARB_framebuffer_object */ + +/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB 0x8DB9 + +#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) + +#endif /* GL_ARB_framebuffer_sRGB */ + +/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_ARB 0xA +#define GL_LINE_STRIP_ADJACENCY_ARB 0xB +#define GL_TRIANGLES_ADJACENCY_ARB 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#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 (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) +#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) +#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) +#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) + +#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) + +#endif /* GL_ARB_geometry_shader4 */ + +/* ----------------------- GL_ARB_get_program_binary ----------------------- */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary); +typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); + +#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) +#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) +#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) + +#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) + +#endif /* GL_ARB_get_program_binary */ + +/* ---------------------- GL_ARB_get_texture_sub_image --------------------- */ + +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 + +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +typedef void (GLAPIENTRY * 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); + +#define glGetCompressedTextureSubImage GLEW_GET_FUN(__glewGetCompressedTextureSubImage) +#define glGetTextureSubImage GLEW_GET_FUN(__glewGetTextureSubImage) + +#define GLEW_ARB_get_texture_sub_image GLEW_GET_VAR(__GLEW_ARB_get_texture_sub_image) + +#endif /* GL_ARB_get_texture_sub_image */ + +/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 + +#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 GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) + +#endif /* GL_ARB_gpu_shader5 */ + +/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 + +#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_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + +#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) +#define glUniform1d GLEW_GET_FUN(__glewUniform1d) +#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) +#define glUniform2d GLEW_GET_FUN(__glewUniform2d) +#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) +#define glUniform3d GLEW_GET_FUN(__glewUniform3d) +#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) +#define glUniform4d GLEW_GET_FUN(__glewUniform4d) +#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) +#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) +#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) +#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) +#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) +#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) +#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) +#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) +#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) +#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) + +#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) + +#endif /* GL_ARB_gpu_shader_fp64 */ + +/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 + +#define GL_HALF_FLOAT_ARB 0x140B + +#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) + +#endif /* GL_ARB_half_float_pixel */ + +/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 + +#define GL_HALF_FLOAT 0x140B + +#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) + +#endif /* GL_ARB_half_float_vertex */ + +/* ----------------------------- GL_ARB_imaging ---------------------------- */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 + +#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_IGNORE_BORDER 0x8150 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_WRAP_BORDER 0x8152 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, void *values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); + +#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) +#define glColorTable GLEW_GET_FUN(__glewColorTable) +#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) +#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) +#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) +#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) +#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) +#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) +#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) +#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) +#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) +#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) +#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) +#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) +#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) +#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) +#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) +#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) +#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) +#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) +#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) +#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) +#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) +#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) +#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) +#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) +#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) +#define glHistogram GLEW_GET_FUN(__glewHistogram) +#define glMinmax GLEW_GET_FUN(__glewMinmax) +#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) +#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) +#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) + +#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) + +#endif /* GL_ARB_imaging */ + +/* ----------------------- GL_ARB_indirect_parameters ---------------------- */ + +#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 (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); + +#define glMultiDrawArraysIndirectCountARB GLEW_GET_FUN(__glewMultiDrawArraysIndirectCountARB) +#define glMultiDrawElementsIndirectCountARB GLEW_GET_FUN(__glewMultiDrawElementsIndirectCountARB) + +#define GLEW_ARB_indirect_parameters GLEW_GET_VAR(__GLEW_ARB_indirect_parameters) + +#endif /* GL_ARB_indirect_parameters */ + +/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); + +#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) +#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) +#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) + +#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) + +#endif /* GL_ARB_instanced_arrays */ + +/* ---------------------- GL_ARB_internalformat_query ---------------------- */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 + +#define GL_NUM_SAMPLE_COUNTS 0x9380 + +typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); + +#define glGetInternalformativ GLEW_GET_FUN(__glewGetInternalformativ) + +#define GLEW_ARB_internalformat_query GLEW_GET_VAR(__GLEW_ARB_internalformat_query) + +#endif /* GL_ARB_internalformat_query */ + +/* ---------------------- GL_ARB_internalformat_query2 --------------------- */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 + +#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_SRGB_DECODE_ARB 0x8299 +#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 + +typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params); + +#define glGetInternalformati64v GLEW_GET_FUN(__glewGetInternalformati64v) + +#define GLEW_ARB_internalformat_query2 GLEW_GET_VAR(__GLEW_ARB_internalformat_query2) + +#endif /* GL_ARB_internalformat_query2 */ + +/* ----------------------- GL_ARB_invalidate_subdata ----------------------- */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 + +typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments); +typedef void (GLAPIENTRY * PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + +#define glInvalidateBufferData GLEW_GET_FUN(__glewInvalidateBufferData) +#define glInvalidateBufferSubData GLEW_GET_FUN(__glewInvalidateBufferSubData) +#define glInvalidateFramebuffer GLEW_GET_FUN(__glewInvalidateFramebuffer) +#define glInvalidateSubFramebuffer GLEW_GET_FUN(__glewInvalidateSubFramebuffer) +#define glInvalidateTexImage GLEW_GET_FUN(__glewInvalidateTexImage) +#define glInvalidateTexSubImage GLEW_GET_FUN(__glewInvalidateTexSubImage) + +#define GLEW_ARB_invalidate_subdata GLEW_GET_VAR(__GLEW_ARB_invalidate_subdata) + +#endif /* GL_ARB_invalidate_subdata */ + +/* ---------------------- GL_ARB_map_buffer_alignment ---------------------- */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 + +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC + +#define GLEW_ARB_map_buffer_alignment GLEW_GET_VAR(__GLEW_ARB_map_buffer_alignment) + +#endif /* GL_ARB_map_buffer_alignment */ + +/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + +#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) +#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) + +#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) + +#endif /* GL_ARB_map_buffer_range */ + +/* ------------------------- GL_ARB_matrix_palette ------------------------- */ + +#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 (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); + +#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) +#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) +#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) +#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) +#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) + +#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) + +#endif /* GL_ARB_matrix_palette */ + +/* --------------------------- GL_ARB_multi_bind --------------------------- */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides); + +#define glBindBuffersBase GLEW_GET_FUN(__glewBindBuffersBase) +#define glBindBuffersRange GLEW_GET_FUN(__glewBindBuffersRange) +#define glBindImageTextures GLEW_GET_FUN(__glewBindImageTextures) +#define glBindSamplers GLEW_GET_FUN(__glewBindSamplers) +#define glBindTextures GLEW_GET_FUN(__glewBindTextures) +#define glBindVertexBuffers GLEW_GET_FUN(__glewBindVertexBuffers) + +#define GLEW_ARB_multi_bind GLEW_GET_VAR(__GLEW_ARB_multi_bind) + +#endif /* GL_ARB_multi_bind */ + +/* ----------------------- GL_ARB_multi_draw_indirect ---------------------- */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); + +#define glMultiDrawArraysIndirect GLEW_GET_FUN(__glewMultiDrawArraysIndirect) +#define glMultiDrawElementsIndirect GLEW_GET_FUN(__glewMultiDrawElementsIndirect) + +#define GLEW_ARB_multi_draw_indirect GLEW_GET_VAR(__GLEW_ARB_multi_draw_indirect) + +#endif /* GL_ARB_multi_draw_indirect */ + +/* --------------------------- GL_ARB_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); + +#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) + +#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) + +#endif /* GL_ARB_multisample */ + +/* -------------------------- GL_ARB_multitexture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) +#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) +#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) +#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) +#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) +#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) +#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) +#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) +#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) +#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) +#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) +#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) +#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) +#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) +#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) +#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) +#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) +#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) +#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) +#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) +#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) +#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) +#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) +#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) +#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) +#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) +#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) +#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) +#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) +#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) +#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) +#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) +#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) +#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) + +#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) + +#endif /* GL_ARB_multitexture */ + +/* ------------------------- GL_ARB_occlusion_query ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); + +#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) +#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) +#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) +#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) +#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) +#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) +#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) +#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) + +#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) + +#endif /* GL_ARB_occlusion_query */ + +/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 + +#define GL_ANY_SAMPLES_PASSED 0x8C2F + +#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) + +#endif /* GL_ARB_occlusion_query2 */ + +/* -------------------- GL_ARB_pipeline_statistics_query ------------------- */ + +#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 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F + +#define GLEW_ARB_pipeline_statistics_query GLEW_GET_VAR(__GLEW_ARB_pipeline_statistics_query) + +#endif /* GL_ARB_pipeline_statistics_query */ + +/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) + +#endif /* GL_ARB_pixel_buffer_object */ + +/* ------------------------ GL_ARB_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) +#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) + +#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) + +#endif /* GL_ARB_point_parameters */ + +/* -------------------------- GL_ARB_point_sprite -------------------------- */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 + +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 + +#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) + +#endif /* GL_ARB_point_sprite */ + +/* --------------------- GL_ARB_program_interface_query -------------------- */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 + +#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_IS_PER_PATCH 0x92E7 +#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 + +typedef void (GLAPIENTRY * PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params); +typedef GLuint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name); +typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar* name); +typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params); + +#define glGetProgramInterfaceiv GLEW_GET_FUN(__glewGetProgramInterfaceiv) +#define glGetProgramResourceIndex GLEW_GET_FUN(__glewGetProgramResourceIndex) +#define glGetProgramResourceLocation GLEW_GET_FUN(__glewGetProgramResourceLocation) +#define glGetProgramResourceLocationIndex GLEW_GET_FUN(__glewGetProgramResourceLocationIndex) +#define glGetProgramResourceName GLEW_GET_FUN(__glewGetProgramResourceName) +#define glGetProgramResourceiv GLEW_GET_FUN(__glewGetProgramResourceiv) + +#define GLEW_ARB_program_interface_query GLEW_GET_VAR(__GLEW_ARB_program_interface_query) + +#endif /* GL_ARB_program_interface_query */ + +/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); + +#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) + +#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) + +#endif /* GL_ARB_provoking_vertex */ + +/* ----------------------- GL_ARB_query_buffer_object ---------------------- */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 + +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 + +#define GLEW_ARB_query_buffer_object GLEW_GET_VAR(__GLEW_ARB_query_buffer_object) + +#endif /* GL_ARB_query_buffer_object */ + +/* ------------------ GL_ARB_robust_buffer_access_behavior ----------------- */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 + +#define GLEW_ARB_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_ARB_robust_buffer_access_behavior) + +#endif /* GL_ARB_robust_buffer_access_behavior */ + +/* --------------------------- GL_ARB_robustness --------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); +typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); +typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); +typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); +typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); +typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, void*column, void*span); +typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); +typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); + +#define glGetGraphicsResetStatusARB GLEW_GET_FUN(__glewGetGraphicsResetStatusARB) +#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) +#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) +#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) +#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) +#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) +#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) +#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) +#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) +#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) +#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) +#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) +#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) +#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) +#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) +#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) +#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) +#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) +#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) +#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) + +#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) + +#endif /* GL_ARB_robustness */ + +/* ---------------- GL_ARB_robustness_application_isolation ---------------- */ + +#ifndef GL_ARB_robustness_application_isolation +#define GL_ARB_robustness_application_isolation 1 + +#define GLEW_ARB_robustness_application_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_application_isolation) + +#endif /* GL_ARB_robustness_application_isolation */ + +/* ---------------- GL_ARB_robustness_share_group_isolation ---------------- */ + +#ifndef GL_ARB_robustness_share_group_isolation +#define GL_ARB_robustness_share_group_isolation 1 + +#define GLEW_ARB_robustness_share_group_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_share_group_isolation) + +#endif /* GL_ARB_robustness_share_group_isolation */ + +/* ------------------------- GL_ARB_sample_shading ------------------------- */ + +#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 (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); + +#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) + +#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) + +#endif /* GL_ARB_sample_shading */ + +/* ------------------------- GL_ARB_sampler_objects ------------------------ */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 + +#define GL_SAMPLER_BINDING 0x8919 + +typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); +typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); + +#define glBindSampler GLEW_GET_FUN(__glewBindSampler) +#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) +#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) +#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) +#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) +#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) +#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) +#define glIsSampler GLEW_GET_FUN(__glewIsSampler) +#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) +#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) +#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) +#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) +#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) +#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) + +#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) + +#endif /* GL_ARB_sampler_objects */ + +/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F + +#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) + +#endif /* GL_ARB_seamless_cube_map */ + +/* ------------------ GL_ARB_seamless_cubemap_per_texture ------------------ */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F + +#define GLEW_ARB_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_ARB_seamless_cubemap_per_texture) + +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +/* --------------------- GL_ARB_separate_shader_objects -------------------- */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 + +#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_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_ALL_SHADER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar * const * strings); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); + +#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) +#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) +#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) +#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) +#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) +#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) +#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) +#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) +#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) +#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) +#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) +#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) +#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) +#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) +#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) +#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) +#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) +#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) +#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) +#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) +#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) +#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) +#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) +#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) +#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) +#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) +#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) +#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) +#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) +#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) +#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) +#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) +#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) +#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) +#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) +#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) +#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) +#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) +#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) +#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) +#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) +#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) +#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) +#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) +#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) +#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) +#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) +#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) +#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) +#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) +#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) +#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) +#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) +#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) +#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) +#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) +#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) +#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) +#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) +#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) + +#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) + +#endif /* GL_ARB_separate_shader_objects */ + +/* --------------------- GL_ARB_shader_atomic_counters --------------------- */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 + +#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_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC + +typedef void (GLAPIENTRY * PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params); + +#define glGetActiveAtomicCounterBufferiv GLEW_GET_FUN(__glewGetActiveAtomicCounterBufferiv) + +#define GLEW_ARB_shader_atomic_counters GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counters) + +#endif /* GL_ARB_shader_atomic_counters */ + +/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 + +#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) + +#endif /* GL_ARB_shader_bit_encoding */ + +/* --------------------- GL_ARB_shader_draw_parameters --------------------- */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 + +#define GLEW_ARB_shader_draw_parameters GLEW_GET_VAR(__GLEW_ARB_shader_draw_parameters) + +#endif /* GL_ARB_shader_draw_parameters */ + +/* ------------------------ GL_ARB_shader_group_vote ----------------------- */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 + +#define GLEW_ARB_shader_group_vote GLEW_GET_VAR(__GLEW_ARB_shader_group_vote) + +#endif /* GL_ARB_shader_group_vote */ + +/* --------------------- GL_ARB_shader_image_load_store -------------------- */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); + +#define glBindImageTexture GLEW_GET_FUN(__glewBindImageTexture) +#define glMemoryBarrier GLEW_GET_FUN(__glewMemoryBarrier) + +#define GLEW_ARB_shader_image_load_store GLEW_GET_VAR(__GLEW_ARB_shader_image_load_store) + +#endif /* GL_ARB_shader_image_load_store */ + +/* ------------------------ GL_ARB_shader_image_size ----------------------- */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 + +#define GLEW_ARB_shader_image_size GLEW_GET_VAR(__GLEW_ARB_shader_image_size) + +#endif /* GL_ARB_shader_image_size */ + +/* ------------------------- GL_ARB_shader_objects ------------------------- */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 + +#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 char GLcharARB; +typedef unsigned int GLhandleARB; + +typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); +typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); + +#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) +#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) +#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) +#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) +#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) +#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) +#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) +#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) +#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) +#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) +#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) +#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) +#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) +#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) +#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) +#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) +#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) +#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) +#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) +#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) +#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) +#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) +#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) +#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) +#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) +#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) +#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) +#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) +#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) +#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) +#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) +#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) +#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) +#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) +#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) +#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) +#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) +#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) +#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) + +#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) + +#endif /* GL_ARB_shader_objects */ + +/* ------------------------ GL_ARB_shader_precision ------------------------ */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 + +#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) + +#endif /* GL_ARB_shader_precision */ + +/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 + +#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) + +#endif /* GL_ARB_shader_stencil_export */ + +/* ------------------ GL_ARB_shader_storage_buffer_object ------------------ */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 + +#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#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 + +typedef void (GLAPIENTRY * PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + +#define glShaderStorageBlockBinding GLEW_GET_FUN(__glewShaderStorageBlockBinding) + +#define GLEW_ARB_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_ARB_shader_storage_buffer_object) + +#endif /* GL_ARB_shader_storage_buffer_object */ + +/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 + +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B + +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); +typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar* name); +typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); +typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); + +#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) +#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) +#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) +#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) +#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) +#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) +#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) +#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) + +#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) + +#endif /* GL_ARB_shader_subroutine */ + +/* ------------------ GL_ARB_shader_texture_image_samples ------------------ */ + +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 + +#define GLEW_ARB_shader_texture_image_samples GLEW_GET_VAR(__GLEW_ARB_shader_texture_image_samples) + +#endif /* GL_ARB_shader_texture_image_samples */ + +/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 + +#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) + +#endif /* GL_ARB_shader_texture_lod */ + +/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 + +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C + +#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) + +#endif /* GL_ARB_shading_language_100 */ + +/* -------------------- GL_ARB_shading_language_420pack -------------------- */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 + +#define GLEW_ARB_shading_language_420pack GLEW_GET_VAR(__GLEW_ARB_shading_language_420pack) + +#endif /* GL_ARB_shading_language_420pack */ + +/* -------------------- GL_ARB_shading_language_include -------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* const *path, const GLint *length); +typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar* name, GLenum pname, GLint *params); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar *string); + +#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) +#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) +#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) +#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) +#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) +#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) + +#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) + +#endif /* GL_ARB_shading_language_include */ + +/* -------------------- GL_ARB_shading_language_packing -------------------- */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 + +#define GLEW_ARB_shading_language_packing GLEW_GET_VAR(__GLEW_ARB_shading_language_packing) + +#endif /* GL_ARB_shading_language_packing */ + +/* ----------------------------- GL_ARB_shadow ----------------------------- */ + +#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 + +#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) + +#endif /* GL_ARB_shadow */ + +/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 + +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF + +#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) + +#endif /* GL_ARB_shadow_ambient */ + +/* -------------------------- GL_ARB_sparse_buffer ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); + +#define glBufferPageCommitmentARB GLEW_GET_FUN(__glewBufferPageCommitmentARB) + +#define GLEW_ARB_sparse_buffer GLEW_GET_VAR(__GLEW_ARB_sparse_buffer) + +#endif /* GL_ARB_sparse_buffer */ + +/* ------------------------- GL_ARB_sparse_texture ------------------------- */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 + +#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_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA + +typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +typedef void (GLAPIENTRY * PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); + +#define glTexPageCommitmentARB GLEW_GET_FUN(__glewTexPageCommitmentARB) +#define glTexturePageCommitmentEXT GLEW_GET_FUN(__glewTexturePageCommitmentEXT) + +#define GLEW_ARB_sparse_texture GLEW_GET_VAR(__GLEW_ARB_sparse_texture) + +#endif /* GL_ARB_sparse_texture */ + +/* ------------------------ GL_ARB_stencil_texturing ----------------------- */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 + +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA + +#define GLEW_ARB_stencil_texturing GLEW_GET_VAR(__GLEW_ARB_stencil_texturing) + +#endif /* GL_ARB_stencil_texturing */ + +/* ------------------------------ GL_ARB_sync ------------------------------ */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 + +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#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 0xFFFFFFFFFFFFFFFF + +typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); +typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); +typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); +typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); +typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); + +#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) +#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) +#define glFenceSync GLEW_GET_FUN(__glewFenceSync) +#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) +#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) +#define glIsSync GLEW_GET_FUN(__glewIsSync) +#define glWaitSync GLEW_GET_FUN(__glewWaitSync) + +#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) + +#endif /* GL_ARB_sync */ + +/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 + +#define GL_PATCHES 0xE +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#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_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_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A + +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); + +#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) +#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) + +#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) + +#endif /* GL_ARB_tessellation_shader */ + +/* ------------------------- GL_ARB_texture_barrier ------------------------ */ + +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 + +typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERPROC) (void); + +#define glTextureBarrier GLEW_GET_FUN(__glewTextureBarrier) + +#define GLEW_ARB_texture_barrier GLEW_GET_VAR(__GLEW_ARB_texture_barrier) + +#endif /* GL_ARB_texture_barrier */ + +/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_ARB 0x812D + +#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) + +#endif /* GL_ARB_texture_border_clamp */ + +/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) + +#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) + +#endif /* GL_ARB_texture_buffer_object */ + +/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 + +#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) + +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +/* ---------------------- GL_ARB_texture_buffer_range ---------------------- */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 + +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F + +typedef void (GLAPIENTRY * PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + +#define glTexBufferRange GLEW_GET_FUN(__glewTexBufferRange) +#define glTextureBufferRangeEXT GLEW_GET_FUN(__glewTextureBufferRangeEXT) + +#define GLEW_ARB_texture_buffer_range GLEW_GET_VAR(__GLEW_ARB_texture_buffer_range) + +#endif /* GL_ARB_texture_buffer_range */ + +/* ----------------------- GL_ARB_texture_compression ---------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void *img); + +#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) +#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) +#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) +#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) +#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) +#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) +#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) + +#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) + +#endif /* GL_ARB_texture_compression */ + +/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ + +#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 + +#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) + +#endif /* GL_ARB_texture_compression_bptc */ + +/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 + +#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 GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) + +#endif /* GL_ARB_texture_compression_rgtc */ + +/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) + +#endif /* GL_ARB_texture_cube_map */ + +/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ + +#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 + +#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) + +#endif /* GL_ARB_texture_cube_map_array */ + +/* ------------------------- GL_ARB_texture_env_add ------------------------ */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 + +#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) + +#endif /* GL_ARB_texture_env_add */ + +/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 + +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#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 GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) + +#endif /* GL_ARB_texture_env_combine */ + +/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 + +#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) + +#endif /* GL_ARB_texture_env_crossbar */ + +/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) + +#endif /* GL_ARB_texture_env_dot3 */ + +/* -------------------------- GL_ARB_texture_float ------------------------- */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 + +#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 +#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 GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) + +#endif /* GL_ARB_texture_float */ + +/* ------------------------- GL_ARB_texture_gather ------------------------- */ + +#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 + +#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) + +#endif /* GL_ARB_texture_gather */ + +/* ------------------ GL_ARB_texture_mirror_clamp_to_edge ------------------ */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 + +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 + +#define GLEW_ARB_texture_mirror_clamp_to_edge GLEW_GET_VAR(__GLEW_ARB_texture_mirror_clamp_to_edge) + +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_ARB 0x8370 + +#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) + +#endif /* GL_ARB_texture_mirrored_repeat */ + +/* ----------------------- GL_ARB_texture_multisample ---------------------- */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + +#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) +#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) +#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) +#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) + +#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) + +#endif /* GL_ARB_texture_multisample */ + +/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 + +#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) + +#endif /* GL_ARB_texture_non_power_of_two */ + +/* ---------------------- GL_ARB_texture_query_levels ---------------------- */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 + +#define GLEW_ARB_texture_query_levels GLEW_GET_VAR(__GLEW_ARB_texture_query_levels) + +#endif /* GL_ARB_texture_query_levels */ + +/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 + +#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) + +#endif /* GL_ARB_texture_query_lod */ + +/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ + +#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 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 + +#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) + +#endif /* GL_ARB_texture_rectangle */ + +/* --------------------------- GL_ARB_texture_rg --------------------------- */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 + +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#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 GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) + +#endif /* GL_ARB_texture_rg */ + +/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 + +#define GL_RGB10_A2UI 0x906F + +#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) + +#endif /* GL_ARB_texture_rgb10_a2ui */ + +/* ------------------------ GL_ARB_texture_stencil8 ------------------------ */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 + +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GLEW_ARB_texture_stencil8 GLEW_GET_VAR(__GLEW_ARB_texture_stencil8) + +#endif /* GL_ARB_texture_stencil8 */ + +/* ------------------------- GL_ARB_texture_storage ------------------------ */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 + +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + +#define glTexStorage1D GLEW_GET_FUN(__glewTexStorage1D) +#define glTexStorage2D GLEW_GET_FUN(__glewTexStorage2D) +#define glTexStorage3D GLEW_GET_FUN(__glewTexStorage3D) +#define glTextureStorage1DEXT GLEW_GET_FUN(__glewTextureStorage1DEXT) +#define glTextureStorage2DEXT GLEW_GET_FUN(__glewTextureStorage2DEXT) +#define glTextureStorage3DEXT GLEW_GET_FUN(__glewTextureStorage3DEXT) + +#define GLEW_ARB_texture_storage GLEW_GET_VAR(__GLEW_ARB_texture_storage) + +#endif /* GL_ARB_texture_storage */ + +/* ------------------- GL_ARB_texture_storage_multisample ------------------ */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + +#define glTexStorage2DMultisample GLEW_GET_FUN(__glewTexStorage2DMultisample) +#define glTexStorage3DMultisample GLEW_GET_FUN(__glewTexStorage3DMultisample) +#define glTextureStorage2DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage2DMultisampleEXT) +#define glTextureStorage3DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage3DMultisampleEXT) + +#define GLEW_ARB_texture_storage_multisample GLEW_GET_VAR(__GLEW_ARB_texture_storage_multisample) + +#endif /* GL_ARB_texture_storage_multisample */ + +/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 + +#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 GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) + +#endif /* GL_ARB_texture_swizzle */ + +/* -------------------------- GL_ARB_texture_view -------------------------- */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + +#define glTextureView GLEW_GET_FUN(__glewTextureView) + +#define GLEW_ARB_texture_view GLEW_GET_VAR(__GLEW_ARB_texture_view) + +#endif /* GL_ARB_texture_view */ + +/* --------------------------- GL_ARB_timer_query -------------------------- */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 + +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); +typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); + +#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) +#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) +#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) + +#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) + +#endif /* GL_ARB_timer_query */ + +/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); + +#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) +#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) +#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) +#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) +#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) +#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) +#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) + +#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) + +#endif /* GL_ARB_transform_feedback2 */ + +/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 + +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_VERTEX_STREAMS 0x8E71 + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); + +#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) +#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) +#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) +#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) + +#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) + +#endif /* GL_ARB_transform_feedback3 */ + +/* ------------------ GL_ARB_transform_feedback_instanced ------------------ */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); + +#define glDrawTransformFeedbackInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackInstanced) +#define glDrawTransformFeedbackStreamInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackStreamInstanced) + +#define GLEW_ARB_transform_feedback_instanced GLEW_GET_VAR(__GLEW_ARB_transform_feedback_instanced) + +#endif /* GL_ARB_transform_feedback_instanced */ + +/* ---------------- GL_ARB_transform_feedback_overflow_query --------------- */ + +#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 + +#define GLEW_ARB_transform_feedback_overflow_query GLEW_GET_VAR(__GLEW_ARB_transform_feedback_overflow_query) + +#endif /* GL_ARB_transform_feedback_overflow_query */ + +/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ + +#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 (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); + +#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) +#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) +#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) +#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) + +#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) + +#endif /* GL_ARB_transpose_matrix */ + +/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 + +#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 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); +typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint* uniformIndices); +typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + +#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) +#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) +#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) +#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) +#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) +#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) +#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) +#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) +#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) +#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) + +#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) + +#endif /* GL_ARB_uniform_buffer_object */ + +/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) + +#endif /* GL_ARB_vertex_array_bgra */ + +/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); + +#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) +#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) +#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) +#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) + +#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) + +#endif /* GL_ARB_vertex_array_object */ + +/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + +#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) +#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) +#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) +#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) +#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) +#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) +#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) +#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) +#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) +#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) + +#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) + +#endif /* GL_ARB_vertex_attrib_64bit */ + +/* ---------------------- GL_ARB_vertex_attrib_binding --------------------- */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); + +#define glBindVertexBuffer GLEW_GET_FUN(__glewBindVertexBuffer) +#define glVertexArrayBindVertexBufferEXT GLEW_GET_FUN(__glewVertexArrayBindVertexBufferEXT) +#define glVertexArrayVertexAttribBindingEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribBindingEXT) +#define glVertexArrayVertexAttribFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribFormatEXT) +#define glVertexArrayVertexAttribIFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIFormatEXT) +#define glVertexArrayVertexAttribLFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLFormatEXT) +#define glVertexArrayVertexBindingDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexBindingDivisorEXT) +#define glVertexAttribBinding GLEW_GET_FUN(__glewVertexAttribBinding) +#define glVertexAttribFormat GLEW_GET_FUN(__glewVertexAttribFormat) +#define glVertexAttribIFormat GLEW_GET_FUN(__glewVertexAttribIFormat) +#define glVertexAttribLFormat GLEW_GET_FUN(__glewVertexAttribLFormat) +#define glVertexBindingDivisor GLEW_GET_FUN(__glewVertexBindingDivisor) + +#define GLEW_ARB_vertex_attrib_binding GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_binding) + +#endif /* GL_ARB_vertex_attrib_binding */ + +/* -------------------------- GL_ARB_vertex_blend -------------------------- */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 + +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#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_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 (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); +typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); + +#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) +#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) +#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) +#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) +#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) +#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) +#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) +#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) +#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) +#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) + +#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) + +#endif /* GL_ARB_vertex_blend */ + +/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 + +#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 ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); + +#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) +#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) +#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) +#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) +#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) +#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) +#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) +#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) +#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) +#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) +#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) + +#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) + +#endif /* GL_ARB_vertex_buffer_object */ + +/* ------------------------- GL_ARB_vertex_program ------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); + +#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) +#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) +#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) +#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) +#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) +#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) +#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) +#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) +#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) +#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) +#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) +#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) +#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) +#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) +#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) +#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) +#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) +#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) +#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) +#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) +#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) +#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) +#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) +#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) +#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) +#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) +#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) +#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) +#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) +#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) +#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) +#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) +#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) +#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) +#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) +#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) +#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) +#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) +#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) +#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) +#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) +#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) +#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) +#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) +#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) +#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) +#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) +#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) +#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) +#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) +#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) +#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) +#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) +#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) +#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) +#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) +#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) +#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) +#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) +#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) +#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) +#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) + +#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) + +#endif /* GL_ARB_vertex_program */ + +/* -------------------------- GL_ARB_vertex_shader ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); + +#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) +#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) +#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) + +#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) + +#endif /* GL_ARB_vertex_shader */ + +/* ------------------- GL_ARB_vertex_type_10f_11f_11f_rev ------------------ */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 + +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B + +#define GLEW_ARB_vertex_type_10f_11f_11f_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_10f_11f_11f_rev) + +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 + +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_INT_2_10_10_10_REV 0x8D9F + +typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); + +#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) +#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) +#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) +#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) +#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) +#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) +#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) +#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) +#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) +#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) +#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) +#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) +#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) +#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) +#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) +#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) +#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) +#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) +#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) +#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) +#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) +#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) +#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) +#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) +#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) +#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) +#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) +#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) +#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) +#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) +#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) +#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) +#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) +#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) +#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) +#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) +#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) +#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) + +#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) + +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +/* ------------------------- GL_ARB_viewport_array ------------------------- */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 + +#define GL_DEPTH_RANGE 0x0B70 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#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 +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F + +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); + +#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) +#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) +#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) +#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) +#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) +#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) +#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) +#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) +#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) +#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) + +#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) + +#endif /* GL_ARB_viewport_array */ + +/* --------------------------- GL_ARB_window_pos --------------------------- */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); + +#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) +#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) +#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) +#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) +#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) +#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) +#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) +#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) +#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) +#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) +#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) +#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) +#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) +#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) +#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) +#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) + +#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) + +#endif /* GL_ARB_window_pos */ + +/* ------------------------- GL_ATIX_point_sprites ------------------------- */ + +#ifndef GL_ATIX_point_sprites +#define GL_ATIX_point_sprites 1 + +#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 +#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 +#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 +#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 +#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 +#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 + +#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) + +#endif /* GL_ATIX_point_sprites */ + +/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ + +#ifndef GL_ATIX_texture_env_combine3 +#define GL_ATIX_texture_env_combine3 1 + +#define GL_MODULATE_ADD_ATIX 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 +#define GL_MODULATE_SUBTRACT_ATIX 0x8746 + +#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) + +#endif /* GL_ATIX_texture_env_combine3 */ + +/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ + +#ifndef GL_ATIX_texture_env_route +#define GL_ATIX_texture_env_route 1 + +#define GL_SECONDARY_COLOR_ATIX 0x8747 +#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 +#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 + +#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) + +#endif /* GL_ATIX_texture_env_route */ + +/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ + +#ifndef GL_ATIX_vertex_shader_output_point_size +#define GL_ATIX_vertex_shader_output_point_size 1 + +#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E + +#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) + +#endif /* GL_ATIX_vertex_shader_output_point_size */ + +/* -------------------------- GL_ATI_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) + +#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) + +#endif /* GL_ATI_draw_buffers */ + +/* -------------------------- GL_ATI_element_array ------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer); + +#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) +#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) +#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) + +#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) + +#endif /* GL_ATI_element_array */ + +/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); + +#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) +#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) +#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) +#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) + +#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) + +#endif /* GL_ATI_envmap_bumpmap */ + +/* ------------------------- GL_ATI_fragment_shader ------------------------ */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 + +#define GL_2X_BIT_ATI 0x00000001 +#define GL_RED_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#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_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_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_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 + +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); + +#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) +#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) +#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) +#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) +#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) +#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) +#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) +#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) +#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) +#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) +#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) +#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) +#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) +#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) + +#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) + +#endif /* GL_ATI_fragment_shader */ + +/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 + +typedef void * (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); + +#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) +#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) + +#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) + +#endif /* GL_ATI_map_object_buffer */ + +/* ----------------------------- GL_ATI_meminfo ---------------------------- */ + +#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 + +#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) + +#endif /* GL_ATI_meminfo */ + +/* -------------------------- GL_ATI_pn_triangles -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); + +#define glPNTrianglesfATI GLEW_GET_FUN(__glewPNTrianglesfATI) +#define glPNTrianglesiATI GLEW_GET_FUN(__glewPNTrianglesiATI) + +#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) + +#endif /* GL_ATI_pn_triangles */ + +/* ------------------------ GL_ATI_separate_stencil ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + +#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) +#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) + +#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) + +#endif /* GL_ATI_separate_stencil */ + +/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ + +#ifndef GL_ATI_shader_texture_lod +#define GL_ATI_shader_texture_lod 1 + +#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) + +#endif /* GL_ATI_shader_texture_lod */ + +/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 + +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 + +#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) + +#endif /* GL_ATI_text_fragment_shader */ + +/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ + +#ifndef GL_ATI_texture_compression_3dc +#define GL_ATI_texture_compression_3dc 1 + +#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 + +#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) + +#endif /* GL_ATI_texture_compression_3dc */ + +/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ + +#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 + +#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) + +#endif /* GL_ATI_texture_env_combine3 */ + +/* -------------------------- GL_ATI_texture_float ------------------------- */ + +#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 + +#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) + +#endif /* GL_ATI_texture_float */ + +/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ + +#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 + +#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) + +#endif /* GL_ATI_texture_mirror_once */ + +/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ + +#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 void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage); +typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + +#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) +#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) +#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) +#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) +#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) +#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) +#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) +#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) +#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) +#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) +#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) +#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) + +#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) + +#endif /* GL_ATI_vertex_array_object */ + +/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); + +#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) +#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) +#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) + +#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) + +#endif /* GL_ATI_vertex_attrib_array_object */ + +/* ------------------------- GL_ATI_vertex_streams ------------------------- */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 + +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_SOURCE_ATI 0x876C +#define GL_VERTEX_STREAM0_ATI 0x876D +#define GL_VERTEX_STREAM1_ATI 0x876E +#define GL_VERTEX_STREAM2_ATI 0x876F +#define GL_VERTEX_STREAM3_ATI 0x8770 +#define GL_VERTEX_STREAM4_ATI 0x8771 +#define GL_VERTEX_STREAM5_ATI 0x8772 +#define GL_VERTEX_STREAM6_ATI 0x8773 +#define GL_VERTEX_STREAM7_ATI 0x8774 + +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); + +#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) +#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) +#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) +#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) +#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) +#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) +#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) +#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) +#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) +#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) +#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) +#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) +#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) +#define glVertexStream1dATI GLEW_GET_FUN(__glewVertexStream1dATI) +#define glVertexStream1dvATI GLEW_GET_FUN(__glewVertexStream1dvATI) +#define glVertexStream1fATI GLEW_GET_FUN(__glewVertexStream1fATI) +#define glVertexStream1fvATI GLEW_GET_FUN(__glewVertexStream1fvATI) +#define glVertexStream1iATI GLEW_GET_FUN(__glewVertexStream1iATI) +#define glVertexStream1ivATI GLEW_GET_FUN(__glewVertexStream1ivATI) +#define glVertexStream1sATI GLEW_GET_FUN(__glewVertexStream1sATI) +#define glVertexStream1svATI GLEW_GET_FUN(__glewVertexStream1svATI) +#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) +#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) +#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) +#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) +#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) +#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) +#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) +#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) +#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) +#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) +#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) +#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) +#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) +#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) +#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) +#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) +#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) +#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) +#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) +#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) +#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) +#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) +#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) +#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) + +#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) + +#endif /* GL_ATI_vertex_streams */ + +/* --------------------------- GL_EXT_422_pixels --------------------------- */ + +#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 + +#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) + +#endif /* GL_EXT_422_pixels */ + +/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ + +#ifndef GL_EXT_Cg_shader +#define GL_EXT_Cg_shader 1 + +#define GL_CG_VERTEX_SHADER_EXT 0x890E +#define GL_CG_FRAGMENT_SHADER_EXT 0x890F + +#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) + +#endif /* GL_EXT_Cg_shader */ + +/* ------------------------------ GL_EXT_abgr ------------------------------ */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 + +#define GL_ABGR_EXT 0x8000 + +#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) + +#endif /* GL_EXT_abgr */ + +/* ------------------------------ GL_EXT_bgra ------------------------------ */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 + +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 + +#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) + +#endif /* GL_EXT_bgra */ + +/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ + +#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 GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); + +#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) +#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) +#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) + +#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) + +#endif /* GL_EXT_bindable_uniform */ + +/* --------------------------- GL_EXT_blend_color -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + +#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) + +#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) + +#endif /* GL_EXT_blend_color */ + +/* --------------------- GL_EXT_blend_equation_separate -------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); + +#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) + +#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) + +#endif /* GL_EXT_blend_equation_separate */ + +/* ----------------------- GL_EXT_blend_func_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 (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) + +#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) + +#endif /* GL_EXT_blend_func_separate */ + +/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 + +#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) + +#endif /* GL_EXT_blend_logic_op */ + +/* -------------------------- GL_EXT_blend_minmax -------------------------- */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 + +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); + +#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) + +#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) + +#endif /* GL_EXT_blend_minmax */ + +/* ------------------------- GL_EXT_blend_subtract ------------------------- */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 + +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B + +#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) + +#endif /* GL_EXT_blend_subtract */ + +/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 + +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 + +#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) + +#endif /* GL_EXT_clip_volume_hint */ + +/* ------------------------------ GL_EXT_cmyka ----------------------------- */ + +#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 + +#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) + +#endif /* GL_EXT_cmyka */ + +/* ------------------------- GL_EXT_color_subtable ------------------------- */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + +#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) +#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) + +#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) + +#endif /* GL_EXT_color_subtable */ + +/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ + +#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 (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); + +#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) +#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) + +#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) + +#endif /* GL_EXT_compiled_vertex_array */ + +/* --------------------------- GL_EXT_convolution -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); + +#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) +#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) +#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) +#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) +#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) +#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) +#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) +#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) +#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) +#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) +#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) +#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) +#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) + +#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) + +#endif /* GL_EXT_convolution */ + +/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer); + +#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) +#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) + +#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) + +#endif /* GL_EXT_coordinate_frame */ + +/* -------------------------- GL_EXT_copy_texture -------------------------- */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 + +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) +#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) +#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) +#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) +#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) + +#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) + +#endif /* GL_EXT_copy_texture */ + +/* --------------------------- GL_EXT_cull_vertex -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); + +#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) +#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) + +#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) + +#endif /* GL_EXT_cull_vertex */ + +/* --------------------------- GL_EXT_debug_label -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar *label); +typedef void (GLAPIENTRY * PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar* label); + +#define glGetObjectLabelEXT GLEW_GET_FUN(__glewGetObjectLabelEXT) +#define glLabelObjectEXT GLEW_GET_FUN(__glewLabelObjectEXT) + +#define GLEW_EXT_debug_label GLEW_GET_VAR(__GLEW_EXT_debug_label) + +#endif /* GL_EXT_debug_label */ + +/* -------------------------- GL_EXT_debug_marker -------------------------- */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 + +typedef void (GLAPIENTRY * PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar* marker); +typedef void (GLAPIENTRY * PFNGLPOPGROUPMARKEREXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar* marker); + +#define glInsertEventMarkerEXT GLEW_GET_FUN(__glewInsertEventMarkerEXT) +#define glPopGroupMarkerEXT GLEW_GET_FUN(__glewPopGroupMarkerEXT) +#define glPushGroupMarkerEXT GLEW_GET_FUN(__glewPushGroupMarkerEXT) + +#define GLEW_EXT_debug_marker GLEW_GET_VAR(__GLEW_EXT_debug_marker) + +#endif /* GL_EXT_debug_marker */ + +/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ + +#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 (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); + +#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) + +#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) + +#endif /* GL_EXT_depth_bounds_test */ + +/* ----------------------- GL_EXT_direct_state_access ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 *data); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void *img); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void *img); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void** params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void** params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void** param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void** param); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + +#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) +#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) +#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) +#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) +#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) +#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) +#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) +#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) +#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) +#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) +#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) +#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) +#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) +#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) +#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) +#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) +#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) +#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) +#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) +#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) +#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) +#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) +#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) +#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) +#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) +#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) +#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) +#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) +#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) +#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) +#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) +#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) +#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) +#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) +#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) +#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) +#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) +#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) +#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) +#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) +#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) +#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) +#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) +#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) +#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) +#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) +#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) +#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) +#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) +#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) +#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) +#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) +#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) +#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) +#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) +#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) +#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) +#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) +#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) +#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) +#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) +#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) +#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) +#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) +#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) +#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) +#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) +#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) +#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) +#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) +#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) +#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) +#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) +#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) +#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) +#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) +#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) +#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) +#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) +#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) +#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) +#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) +#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) +#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) +#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) +#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) +#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) +#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) +#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) +#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) +#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) +#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) +#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) +#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) +#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) +#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) +#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) +#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) +#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) +#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) +#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) +#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) +#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) +#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) +#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) +#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) +#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) +#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) +#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) +#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) +#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) +#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) +#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) +#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) +#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) +#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) +#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) +#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) +#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) +#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) +#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) +#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) +#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) +#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) +#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) +#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) +#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) +#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) +#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) +#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) +#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) +#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) +#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) +#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) +#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) +#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) +#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) +#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) +#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) +#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) +#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) +#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) +#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) +#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) +#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) +#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) +#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) +#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) +#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) +#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) +#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) +#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) +#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) +#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) +#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) +#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) +#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) +#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) +#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) +#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) +#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) +#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) +#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) +#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) +#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) +#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) +#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) +#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) +#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) +#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) +#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) +#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) +#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) +#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) +#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) +#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) +#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) +#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) +#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) +#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) +#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) +#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) +#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) +#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) +#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) +#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) +#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) +#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) +#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) +#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) +#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) +#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) +#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) +#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) +#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) +#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) +#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) +#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) +#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) +#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) +#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) +#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) +#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) +#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) +#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) +#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) +#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) +#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) +#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) +#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) +#define glVertexArrayVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribDivisorEXT) +#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) +#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) +#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) + +#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) + +#endif /* GL_EXT_direct_state_access */ + +/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 + +typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); +typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); + +#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) +#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) +#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) +#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) +#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) +#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) + +#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) + +#endif /* GL_EXT_draw_buffers2 */ + +/* ------------------------- GL_EXT_draw_instanced ------------------------- */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); + +#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) +#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) + +#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) + +#endif /* GL_EXT_draw_instanced */ + +/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + +#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) + +#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) + +#endif /* GL_EXT_draw_range_elements */ + +/* ---------------------------- GL_EXT_fog_coord --------------------------- */ + +#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 (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); + +#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) +#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) +#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) +#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) +#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) + +#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) + +#endif /* GL_EXT_fog_coord */ + +/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ + +#ifndef GL_EXT_fragment_lighting +#define GL_EXT_fragment_lighting 1 + +#define GL_FRAGMENT_LIGHTING_EXT 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 +#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 +#define GL_LIGHT_ENV_MODE_EXT 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B +#define GL_FRAGMENT_LIGHT0_EXT 0x840C +#define GL_FRAGMENT_LIGHT7_EXT 0x8413 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); + +#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) +#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) +#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) +#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) +#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) +#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) +#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) +#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) +#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) +#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) +#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) +#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) +#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) +#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) +#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) +#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) +#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) +#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) + +#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) + +#endif /* GL_EXT_fragment_lighting */ + +/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 + +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA + +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) + +#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) + +#endif /* GL_EXT_framebuffer_blit */ + +/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) + +#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) + +#endif /* GL_EXT_framebuffer_multisample */ + +/* --------------- GL_EXT_framebuffer_multisample_blit_scaled -------------- */ + +#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 + +#define GLEW_EXT_framebuffer_multisample_blit_scaled GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample_blit_scaled) + +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) +#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) +#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) +#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) +#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) +#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) +#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) +#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) +#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) +#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) +#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) +#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) +#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) +#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) +#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) +#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) +#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) + +#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) + +#endif /* GL_EXT_framebuffer_object */ + +/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA + +#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) + +#endif /* GL_EXT_framebuffer_sRGB */ + +/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_EXT 0xA +#define GL_LINE_STRIP_ADJACENCY_EXT 0xB +#define GL_TRIANGLES_ADJACENCY_EXT 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#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_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_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) +#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) +#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) + +#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) + +#endif /* GL_EXT_geometry_shader4 */ + +/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 + +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); + +#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) +#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) + +#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) + +#endif /* GL_EXT_gpu_program_parameters */ + +/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + +#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) +#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) +#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) +#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) +#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) +#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) +#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) +#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) +#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) +#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) +#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) +#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) +#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) +#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) +#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) +#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) +#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) +#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) +#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) +#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) +#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) +#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) +#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) +#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) +#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) +#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) +#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) +#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) +#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) +#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) +#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) +#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) +#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) +#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) + +#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) + +#endif /* GL_EXT_gpu_shader4 */ + +/* ---------------------------- GL_EXT_histogram --------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); + +#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) +#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) +#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) +#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) +#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) +#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) +#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) +#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) +#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) +#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) + +#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) + +#endif /* GL_EXT_histogram */ + +/* ----------------------- GL_EXT_index_array_formats ---------------------- */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 + +#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) + +#endif /* GL_EXT_index_array_formats */ + +/* --------------------------- GL_EXT_index_func --------------------------- */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 + +typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); + +#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) + +#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) + +#endif /* GL_EXT_index_func */ + +/* ------------------------- GL_EXT_index_material ------------------------- */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 + +typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) + +#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) + +#endif /* GL_EXT_index_material */ + +/* -------------------------- GL_EXT_index_texture ------------------------- */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 + +#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) + +#endif /* GL_EXT_index_texture */ + +/* -------------------------- GL_EXT_light_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 (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) +#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) +#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) + +#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) + +#endif /* GL_EXT_light_texture */ + +/* ------------------------- GL_EXT_misc_attribute ------------------------- */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 + +#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) + +#endif /* GL_EXT_misc_attribute */ + +/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount); + +#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) +#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) + +#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) + +#endif /* GL_EXT_multi_draw_arrays */ + +/* --------------------------- GL_EXT_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); + +#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) +#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) + +#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) + +#endif /* GL_EXT_multisample */ + +/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) + +#endif /* GL_EXT_packed_depth_stencil */ + +/* -------------------------- GL_EXT_packed_float -------------------------- */ + +#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 + +#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) + +#endif /* GL_EXT_packed_float */ + +/* -------------------------- GL_EXT_packed_pixels ------------------------- */ + +#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 + +#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) + +#endif /* GL_EXT_packed_pixels */ + +/* ------------------------ GL_EXT_paletted_texture ------------------------ */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 + +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 +#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF +#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 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B + +typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); + +#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) +#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) +#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) +#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) + +#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) + +#endif /* GL_EXT_paletted_texture */ + +/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) + +#endif /* GL_EXT_pixel_buffer_object */ + +/* ------------------------- GL_EXT_pixel_transform ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) +#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) +#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) +#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) +#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) +#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) + +#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) + +#endif /* GL_EXT_pixel_transform */ + +/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 + +#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) + +#endif /* GL_EXT_pixel_transform_color_table */ + +/* ------------------------ GL_EXT_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) +#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) + +#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) + +#endif /* GL_EXT_point_parameters */ + +/* ------------------------- GL_EXT_polygon_offset ------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); + +#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) + +#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) + +#endif /* GL_EXT_polygon_offset */ + +/* ---------------------- GL_EXT_polygon_offset_clamp ---------------------- */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 + +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B + +typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); + +#define glPolygonOffsetClampEXT GLEW_GET_FUN(__glewPolygonOffsetClampEXT) + +#define GLEW_EXT_polygon_offset_clamp GLEW_GET_VAR(__GLEW_EXT_polygon_offset_clamp) + +#endif /* GL_EXT_polygon_offset_clamp */ + +/* ----------------------- GL_EXT_post_depth_coverage ---------------------- */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 + +#define GLEW_EXT_post_depth_coverage GLEW_GET_VAR(__GLEW_EXT_post_depth_coverage) + +#endif /* GL_EXT_post_depth_coverage */ + +/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); + +#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) + +#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) + +#endif /* GL_EXT_provoking_vertex */ + +/* ----------------------- GL_EXT_raster_multisample ----------------------- */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 + +#define GL_COLOR_SAMPLES_NV 0x8E20 +#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 +#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_TABLE_NV 0x9331 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 + +typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat* v); +typedef void (GLAPIENTRY * PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); + +#define glCoverageModulationNV GLEW_GET_FUN(__glewCoverageModulationNV) +#define glCoverageModulationTableNV GLEW_GET_FUN(__glewCoverageModulationTableNV) +#define glGetCoverageModulationTableNV GLEW_GET_FUN(__glewGetCoverageModulationTableNV) +#define glRasterSamplesEXT GLEW_GET_FUN(__glewRasterSamplesEXT) + +#define GLEW_EXT_raster_multisample GLEW_GET_VAR(__GLEW_EXT_raster_multisample) + +#endif /* GL_EXT_raster_multisample */ + +/* ------------------------- GL_EXT_rescale_normal ------------------------- */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 + +#define GL_RESCALE_NORMAL_EXT 0x803A + +#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) + +#endif /* GL_EXT_rescale_normal */ + +/* -------------------------- GL_EXT_scene_marker -------------------------- */ + +#ifndef GL_EXT_scene_marker +#define GL_EXT_scene_marker 1 + +typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); + +#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) +#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) + +#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) + +#endif /* GL_EXT_scene_marker */ + +/* ------------------------- GL_EXT_secondary_color ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); + +#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) +#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) +#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) +#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) +#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) +#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) +#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) +#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) +#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) +#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) +#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) +#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) +#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) +#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) +#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) +#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) +#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) + +#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) + +#endif /* GL_EXT_secondary_color */ + +/* --------------------- GL_EXT_separate_shader_objects -------------------- */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 + +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D + +typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar* string); +typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); + +#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) +#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) +#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) + +#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) + +#endif /* GL_EXT_separate_shader_objects */ + +/* --------------------- GL_EXT_separate_specular_color -------------------- */ + +#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 + +#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) + +#endif /* GL_EXT_separate_specular_color */ + +/* ------------------- GL_EXT_shader_image_load_formatted ------------------ */ + +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 + +#define GLEW_EXT_shader_image_load_formatted GLEW_GET_VAR(__GLEW_EXT_shader_image_load_formatted) + +#endif /* GL_EXT_shader_image_load_formatted */ + +/* --------------------- GL_EXT_shader_image_load_store -------------------- */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS_EXT 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); + +#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) +#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) + +#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) + +#endif /* GL_EXT_shader_image_load_store */ + +/* ----------------------- GL_EXT_shader_integer_mix ----------------------- */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 + +#define GLEW_EXT_shader_integer_mix GLEW_GET_VAR(__GLEW_EXT_shader_integer_mix) + +#endif /* GL_EXT_shader_integer_mix */ + +/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 + +#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) + +#endif /* GL_EXT_shadow_funcs */ + +/* --------------------- GL_EXT_shared_texture_palette --------------------- */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 + +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB + +#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) + +#endif /* GL_EXT_shared_texture_palette */ + +/* ------------------------- GL_EXT_sparse_texture2 ------------------------ */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 + +#define GLEW_EXT_sparse_texture2 GLEW_GET_VAR(__GLEW_EXT_sparse_texture2) + +#endif /* GL_EXT_sparse_texture2 */ + +/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ + +#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 + +#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) + +#endif /* GL_EXT_stencil_clear_tag */ + +/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ + +#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 (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); + +#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) + +#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) + +#endif /* GL_EXT_stencil_two_side */ + +/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 + +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 + +#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) + +#endif /* GL_EXT_stencil_wrap */ + +/* --------------------------- GL_EXT_subtexture --------------------------- */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 + +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + +#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) +#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) +#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) + +#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) + +#endif /* GL_EXT_subtexture */ + +/* ----------------------------- GL_EXT_texture ---------------------------- */ + +#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 GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) + +#endif /* GL_EXT_texture */ + +/* ---------------------------- GL_EXT_texture3D --------------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + +#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) + +#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) + +#endif /* GL_EXT_texture3D */ + +/* -------------------------- GL_EXT_texture_array ------------------------- */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 + +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + +#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) + +#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) + +#endif /* GL_EXT_texture_array */ + +/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) + +#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) + +#endif /* GL_EXT_texture_buffer_object */ + +/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 + +#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) + +#endif /* GL_EXT_texture_compression_dxt1 */ + +/* -------------------- GL_EXT_texture_compression_latc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) + +#endif /* GL_EXT_texture_compression_latc */ + +/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) + +#endif /* GL_EXT_texture_compression_rgtc */ + +/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) + +#endif /* GL_EXT_texture_compression_s3tc */ + +/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) + +#endif /* GL_EXT_texture_cube_map */ + +/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ + +#ifndef GL_EXT_texture_edge_clamp +#define GL_EXT_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_EXT 0x812F + +#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) + +#endif /* GL_EXT_texture_edge_clamp */ + +/* --------------------------- GL_EXT_texture_env -------------------------- */ + +#ifndef GL_EXT_texture_env +#define GL_EXT_texture_env 1 + +#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) + +#endif /* GL_EXT_texture_env */ + +/* ------------------------- GL_EXT_texture_env_add ------------------------ */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 + +#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) + +#endif /* GL_EXT_texture_env_add */ + +/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ + +#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 + +#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) + +#endif /* GL_EXT_texture_env_combine */ + +/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) + +#endif /* GL_EXT_texture_env_dot3 */ + +/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ + +#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 + +#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) + +#endif /* GL_EXT_texture_filter_anisotropic */ + +/* ---------------------- GL_EXT_texture_filter_minmax --------------------- */ + +#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 + +#define GLEW_EXT_texture_filter_minmax GLEW_GET_VAR(__GLEW_EXT_texture_filter_minmax) + +#endif /* GL_EXT_texture_filter_minmax */ + +/* ------------------------- GL_EXT_texture_integer ------------------------ */ + +#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 (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); + +#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) +#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) +#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) +#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) +#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) +#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) + +#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) + +#endif /* GL_EXT_texture_integer */ + +/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ + +#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 + +#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) + +#endif /* GL_EXT_texture_lod_bias */ + +/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ + +#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 + +#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) + +#endif /* GL_EXT_texture_mirror_clamp */ + +/* ------------------------- GL_EXT_texture_object ------------------------- */ + +#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 (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); +typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); + +#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) +#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) +#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) +#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) +#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) +#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) + +#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) + +#endif /* GL_EXT_texture_object */ + +/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); + +#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) + +#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) + +#endif /* GL_EXT_texture_perturb_normal */ + +/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ + +#ifndef GL_EXT_texture_rectangle +#define GL_EXT_texture_rectangle 1 + +#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 + +#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) + +#endif /* GL_EXT_texture_rectangle */ + +/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ + +#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 + +#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) + +#endif /* GL_EXT_texture_sRGB */ + +/* ----------------------- 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 + +#define GLEW_EXT_texture_sRGB_decode GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_decode) + +#endif /* GL_EXT_texture_sRGB_decode */ + +/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ + +#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 + +#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) + +#endif /* GL_EXT_texture_shared_exponent */ + +/* -------------------------- GL_EXT_texture_snorm ------------------------- */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 + +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_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 GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) + +#endif /* GL_EXT_texture_snorm */ + +/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ + +#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 + +#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) + +#endif /* GL_EXT_texture_swizzle */ + +/* --------------------------- GL_EXT_timer_query -------------------------- */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 + +#define GL_TIME_ELAPSED_EXT 0x88BF + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); + +#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) +#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) + +#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) + +#endif /* GL_EXT_timer_query */ + +/* ----------------------- GL_EXT_transform_feedback ----------------------- */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 + +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#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_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F + +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar * const* varyings, GLenum bufferMode); + +#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) +#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) +#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) +#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) +#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) +#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) +#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) + +#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) + +#endif /* GL_EXT_transform_feedback */ + +/* -------------------------- GL_EXT_vertex_array -------------------------- */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 + +#define GL_DOUBLE_EXT 0x140A +#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 (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); + +#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) +#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) +#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) +#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) +#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) +#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) +#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) +#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) + +#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) + +#endif /* GL_EXT_vertex_array */ + +/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) + +#endif /* GL_EXT_vertex_array_bgra */ + +/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 + +#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 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + +#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) +#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) +#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) +#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) +#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) +#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) +#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) +#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) +#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) +#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) +#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) + +#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) + +#endif /* GL_EXT_vertex_attrib_64bit */ + +/* -------------------------- GL_EXT_vertex_shader ------------------------- */ + +#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_INVARIANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_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 (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); +typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data); +typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, void *addr); +typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, void *addr); +typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, void *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); +typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + +#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) +#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) +#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) +#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) +#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) +#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) +#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) +#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) +#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) +#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) +#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) +#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) +#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) +#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) +#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) +#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) +#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) +#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) +#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) +#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) +#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) +#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) +#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) +#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) +#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) +#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) +#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) +#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) +#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) +#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) +#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) +#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) +#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) +#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) +#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) +#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) +#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) +#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) +#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) +#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) +#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) +#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) + +#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) + +#endif /* GL_EXT_vertex_shader */ + +/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 + +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#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 (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); + +#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) +#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) +#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) + +#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) + +#endif /* GL_EXT_vertex_weighting */ + +/* ------------------------- GL_EXT_x11_sync_object ------------------------ */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 + +#define GL_SYNC_X11_FENCE_EXT 0x90E1 + +typedef GLsync (GLAPIENTRY * PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); + +#define glImportSyncEXT GLEW_GET_FUN(__glewImportSyncEXT) + +#define GLEW_EXT_x11_sync_object GLEW_GET_VAR(__GLEW_EXT_x11_sync_object) + +#endif /* GL_EXT_x11_sync_object */ + +/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 + +typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); + +#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) + +#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) + +#endif /* GL_GREMEDY_frame_terminator */ + +/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 + +typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string); + +#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) + +#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) + +#endif /* GL_GREMEDY_string_marker */ + +/* --------------------- GL_HP_convolution_border_modes -------------------- */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 + +#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) + +#endif /* GL_HP_convolution_border_modes */ + +/* ------------------------- GL_HP_image_transform ------------------------- */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 + +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) +#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) +#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) +#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) +#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) +#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) + +#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) + +#endif /* GL_HP_image_transform */ + +/* -------------------------- GL_HP_occlusion_test ------------------------- */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 + +#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) + +#endif /* GL_HP_occlusion_test */ + +/* ------------------------- GL_HP_texture_lighting ------------------------ */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 + +#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) + +#endif /* GL_HP_texture_lighting */ + +/* --------------------------- GL_IBM_cull_vertex -------------------------- */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 + +#define GL_CULL_VERTEX_IBM 103050 + +#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) + +#endif /* GL_IBM_cull_vertex */ + +/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride); + +#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) +#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) + +#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) + +#endif /* GL_IBM_multimode_draw_arrays */ + +/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 + +#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 + +#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) + +#endif /* GL_IBM_rasterpos_clip */ + +/* --------------------------- GL_IBM_static_data -------------------------- */ + +#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 + +#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) + +#endif /* GL_IBM_static_data */ + +/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_IBM 0x8370 + +#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) + +#endif /* GL_IBM_texture_mirrored_repeat */ + +/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); + +#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) +#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) +#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) +#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) +#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) +#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) +#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) +#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) + +#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) + +#endif /* GL_IBM_vertex_array_lists */ + +/* -------------------------- GL_INGR_color_clamp -------------------------- */ + +#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 + +#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) + +#endif /* GL_INGR_color_clamp */ + +/* ------------------------- GL_INGR_interlace_read ------------------------ */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 + +#define GL_INTERLACE_READ_INGR 0x8568 + +#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) + +#endif /* GL_INGR_interlace_read */ + +/* ------------------- GL_INTEL_fragment_shader_ordering ------------------- */ + +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 + +#define GLEW_INTEL_fragment_shader_ordering GLEW_GET_VAR(__GLEW_INTEL_fragment_shader_ordering) + +#endif /* GL_INTEL_fragment_shader_ordering */ + +/* -------------------------- GL_INTEL_map_texture ------------------------- */ + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 + +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF + +typedef void * (GLAPIENTRY * PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum *layout); +typedef void (GLAPIENTRY * PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); + +#define glMapTexture2DINTEL GLEW_GET_FUN(__glewMapTexture2DINTEL) +#define glSyncTextureINTEL GLEW_GET_FUN(__glewSyncTextureINTEL) +#define glUnmapTexture2DINTEL GLEW_GET_FUN(__glewUnmapTexture2DINTEL) + +#define GLEW_INTEL_map_texture GLEW_GET_VAR(__GLEW_INTEL_map_texture) + +#endif /* GL_INTEL_map_texture */ + +/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); + +#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) +#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) +#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) +#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) + +#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) + +#endif /* GL_INTEL_parallel_arrays */ + +/* ----------------------- GL_INTEL_performance_query ---------------------- */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 + +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x0000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x0001 +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#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 (GLAPIENTRY * PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GLAPIENTRY * PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint* queryHandle); +typedef void (GLAPIENTRY * PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GLAPIENTRY * PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GLAPIENTRY * PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint* queryId); +typedef void (GLAPIENTRY * PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint* nextQueryId); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GLAPIENTRY * PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar* queryName, GLuint *queryId); +typedef void (GLAPIENTRY * PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar* queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); + +#define glBeginPerfQueryINTEL GLEW_GET_FUN(__glewBeginPerfQueryINTEL) +#define glCreatePerfQueryINTEL GLEW_GET_FUN(__glewCreatePerfQueryINTEL) +#define glDeletePerfQueryINTEL GLEW_GET_FUN(__glewDeletePerfQueryINTEL) +#define glEndPerfQueryINTEL GLEW_GET_FUN(__glewEndPerfQueryINTEL) +#define glGetFirstPerfQueryIdINTEL GLEW_GET_FUN(__glewGetFirstPerfQueryIdINTEL) +#define glGetNextPerfQueryIdINTEL GLEW_GET_FUN(__glewGetNextPerfQueryIdINTEL) +#define glGetPerfCounterInfoINTEL GLEW_GET_FUN(__glewGetPerfCounterInfoINTEL) +#define glGetPerfQueryDataINTEL GLEW_GET_FUN(__glewGetPerfQueryDataINTEL) +#define glGetPerfQueryIdByNameINTEL GLEW_GET_FUN(__glewGetPerfQueryIdByNameINTEL) +#define glGetPerfQueryInfoINTEL GLEW_GET_FUN(__glewGetPerfQueryInfoINTEL) + +#define GLEW_INTEL_performance_query GLEW_GET_VAR(__GLEW_INTEL_performance_query) + +#endif /* GL_INTEL_performance_query */ + +/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ + +#ifndef GL_INTEL_texture_scissor +#define GL_INTEL_texture_scissor 1 + +typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); +typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); + +#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) +#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) + +#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) + +#endif /* GL_INTEL_texture_scissor */ + +/* --------------------- GL_KHR_blend_equation_advanced -------------------- */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 + +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#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 (GLAPIENTRY * PFNGLBLENDBARRIERKHRPROC) (void); + +#define glBlendBarrierKHR GLEW_GET_FUN(__glewBlendBarrierKHR) + +#define GLEW_KHR_blend_equation_advanced GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced) + +#endif /* GL_KHR_blend_equation_advanced */ + +/* ---------------- GL_KHR_blend_equation_advanced_coherent ---------------- */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 + +#define GLEW_KHR_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced_coherent) + +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +/* ---------------------- GL_KHR_context_flush_control --------------------- */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 + +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC + +#define GLEW_KHR_context_flush_control GLEW_GET_VAR(__GLEW_KHR_context_flush_control) + +#endif /* GL_KHR_context_flush_control */ + +/* ------------------------------ GL_KHR_debug ----------------------------- */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 + +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#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_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_DISPLAY_LIST 0x82E7 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#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_OUTPUT 0x92E0 + +typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog); +typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei* length, GLchar *label); +typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label); +typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar* label); +typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message); + +#define glDebugMessageCallback GLEW_GET_FUN(__glewDebugMessageCallback) +#define glDebugMessageControl GLEW_GET_FUN(__glewDebugMessageControl) +#define glDebugMessageInsert GLEW_GET_FUN(__glewDebugMessageInsert) +#define glGetDebugMessageLog GLEW_GET_FUN(__glewGetDebugMessageLog) +#define glGetObjectLabel GLEW_GET_FUN(__glewGetObjectLabel) +#define glGetObjectPtrLabel GLEW_GET_FUN(__glewGetObjectPtrLabel) +#define glObjectLabel GLEW_GET_FUN(__glewObjectLabel) +#define glObjectPtrLabel GLEW_GET_FUN(__glewObjectPtrLabel) +#define glPopDebugGroup GLEW_GET_FUN(__glewPopDebugGroup) +#define glPushDebugGroup GLEW_GET_FUN(__glewPushDebugGroup) + +#define GLEW_KHR_debug GLEW_GET_VAR(__GLEW_KHR_debug) + +#endif /* GL_KHR_debug */ + +/* ------------------ GL_KHR_robust_buffer_access_behavior ----------------- */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 + +#define GLEW_KHR_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_KHR_robust_buffer_access_behavior) + +#endif /* GL_KHR_robust_buffer_access_behavior */ + +/* --------------------------- GL_KHR_robustness --------------------------- */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 + +#define GL_CONTEXT_LOST 0x0507 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#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_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 + +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); +typedef void (GLAPIENTRY * PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + +#define glGetnUniformfv GLEW_GET_FUN(__glewGetnUniformfv) +#define glGetnUniformiv GLEW_GET_FUN(__glewGetnUniformiv) +#define glGetnUniformuiv GLEW_GET_FUN(__glewGetnUniformuiv) +#define glReadnPixels GLEW_GET_FUN(__glewReadnPixels) + +#define GLEW_KHR_robustness GLEW_GET_VAR(__GLEW_KHR_robustness) + +#endif /* GL_KHR_robustness */ + +/* ------------------ GL_KHR_texture_compression_astc_hdr ------------------ */ + +#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 + +#define GLEW_KHR_texture_compression_astc_hdr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_hdr) + +#endif /* GL_KHR_texture_compression_astc_hdr */ + +/* ------------------ GL_KHR_texture_compression_astc_ldr ------------------ */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 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 + +#define GLEW_KHR_texture_compression_astc_ldr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_ldr) + +#endif /* GL_KHR_texture_compression_astc_ldr */ + +/* -------------------------- GL_KTX_buffer_region ------------------------- */ + +#ifndef GL_KTX_buffer_region +#define GL_KTX_buffer_region 1 + +#define GL_KTX_FRONT_REGION 0x0 +#define GL_KTX_BACK_REGION 0x1 +#define GL_KTX_Z_REGION 0x2 +#define GL_KTX_STENCIL_REGION 0x3 + +typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDPROC) (void); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); +typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glBufferRegionEnabled GLEW_GET_FUN(__glewBufferRegionEnabled) +#define glDeleteBufferRegion GLEW_GET_FUN(__glewDeleteBufferRegion) +#define glDrawBufferRegion GLEW_GET_FUN(__glewDrawBufferRegion) +#define glNewBufferRegion GLEW_GET_FUN(__glewNewBufferRegion) +#define glReadBufferRegion GLEW_GET_FUN(__glewReadBufferRegion) + +#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) + +#endif /* GL_KTX_buffer_region */ + +/* ------------------------- GL_MESAX_texture_stack ------------------------ */ + +#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 + +#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) + +#endif /* GL_MESAX_texture_stack */ + +/* -------------------------- GL_MESA_pack_invert -------------------------- */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 + +#define GL_PACK_INVERT_MESA 0x8758 + +#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) + +#endif /* GL_MESA_pack_invert */ + +/* ------------------------- GL_MESA_resize_buffers ------------------------ */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 + +typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); + +#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) + +#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) + +#endif /* GL_MESA_resize_buffers */ + +/* --------------------------- GL_MESA_window_pos -------------------------- */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); + +#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) +#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) +#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) +#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) +#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) +#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) +#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) +#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) +#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) +#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) +#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) +#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) +#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) +#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) +#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) +#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) +#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) +#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) +#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) +#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) +#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) +#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) +#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) +#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) + +#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) + +#endif /* GL_MESA_window_pos */ + +/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ + +#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 + +#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) + +#endif /* GL_MESA_ycbcr_texture */ + +/* ----------------------- GL_NVX_conditional_render ----------------------- */ + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 + +typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVXPROC) (void); + +#define glBeginConditionalRenderNVX GLEW_GET_FUN(__glewBeginConditionalRenderNVX) +#define glEndConditionalRenderNVX GLEW_GET_FUN(__glewEndConditionalRenderNVX) + +#define GLEW_NVX_conditional_render GLEW_GET_VAR(__GLEW_NVX_conditional_render) + +#endif /* GL_NVX_conditional_render */ + +/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ + +#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 + +#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) + +#endif /* GL_NVX_gpu_memory_info */ + +/* ------------------- GL_NV_bindless_multi_draw_indirect ------------------ */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); + +#define glMultiDrawArraysIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessNV) +#define glMultiDrawElementsIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessNV) + +#define GLEW_NV_bindless_multi_draw_indirect GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect) + +#endif /* GL_NV_bindless_multi_draw_indirect */ + +/* ---------------- GL_NV_bindless_multi_draw_indirect_count --------------- */ + +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); + +#define glMultiDrawArraysIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessCountNV) +#define glMultiDrawElementsIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessCountNV) + +#define GLEW_NV_bindless_multi_draw_indirect_count GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect_count) + +#endif /* GL_NV_bindless_multi_draw_indirect_count */ + +/* ------------------------- GL_NV_bindless_texture ------------------------ */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 + +typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64* value); + +#define glGetImageHandleNV GLEW_GET_FUN(__glewGetImageHandleNV) +#define glGetTextureHandleNV GLEW_GET_FUN(__glewGetTextureHandleNV) +#define glGetTextureSamplerHandleNV GLEW_GET_FUN(__glewGetTextureSamplerHandleNV) +#define glIsImageHandleResidentNV GLEW_GET_FUN(__glewIsImageHandleResidentNV) +#define glIsTextureHandleResidentNV GLEW_GET_FUN(__glewIsTextureHandleResidentNV) +#define glMakeImageHandleNonResidentNV GLEW_GET_FUN(__glewMakeImageHandleNonResidentNV) +#define glMakeImageHandleResidentNV GLEW_GET_FUN(__glewMakeImageHandleResidentNV) +#define glMakeTextureHandleNonResidentNV GLEW_GET_FUN(__glewMakeTextureHandleNonResidentNV) +#define glMakeTextureHandleResidentNV GLEW_GET_FUN(__glewMakeTextureHandleResidentNV) +#define glProgramUniformHandleui64NV GLEW_GET_FUN(__glewProgramUniformHandleui64NV) +#define glProgramUniformHandleui64vNV GLEW_GET_FUN(__glewProgramUniformHandleui64vNV) +#define glUniformHandleui64NV GLEW_GET_FUN(__glewUniformHandleui64NV) +#define glUniformHandleui64vNV GLEW_GET_FUN(__glewUniformHandleui64vNV) + +#define GLEW_NV_bindless_texture GLEW_GET_VAR(__GLEW_NV_bindless_texture) + +#endif /* GL_NV_bindless_texture */ + +/* --------------------- GL_NV_blend_equation_advanced --------------------- */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 + +#define GL_XOR_NV 0x1506 +#define GL_RED_NV 0x1903 +#define GL_GREEN_NV 0x1904 +#define GL_BLUE_NV 0x1905 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_DISJOINT_NV 0x9283 +#define GL_CONJOINT_NV 0x9284 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#define GL_SRC_NV 0x9286 +#define GL_DST_NV 0x9287 +#define GL_SRC_OVER_NV 0x9288 +#define GL_DST_OVER_NV 0x9289 +#define GL_SRC_IN_NV 0x928A +#define GL_DST_IN_NV 0x928B +#define GL_SRC_OUT_NV 0x928C +#define GL_DST_OUT_NV 0x928D +#define GL_SRC_ATOP_NV 0x928E +#define GL_DST_ATOP_NV 0x928F +#define GL_PLUS_NV 0x9291 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_MULTIPLY_NV 0x9294 +#define GL_SCREEN_NV 0x9295 +#define GL_OVERLAY_NV 0x9296 +#define GL_DARKEN_NV 0x9297 +#define GL_LIGHTEN_NV 0x9298 +#define GL_COLORDODGE_NV 0x9299 +#define GL_COLORBURN_NV 0x929A +#define GL_HARDLIGHT_NV 0x929B +#define GL_SOFTLIGHT_NV 0x929C +#define GL_DIFFERENCE_NV 0x929E +#define GL_MINUS_NV 0x929F +#define GL_EXCLUSION_NV 0x92A0 +#define GL_CONTRAST_NV 0x92A1 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_INVERT_OVG_NV 0x92B4 + +typedef void (GLAPIENTRY * PFNGLBLENDBARRIERNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); + +#define glBlendBarrierNV GLEW_GET_FUN(__glewBlendBarrierNV) +#define glBlendParameteriNV GLEW_GET_FUN(__glewBlendParameteriNV) + +#define GLEW_NV_blend_equation_advanced GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced) + +#endif /* GL_NV_blend_equation_advanced */ + +/* ----------------- GL_NV_blend_equation_advanced_coherent ---------------- */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 + +#define GLEW_NV_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced_coherent) + +#endif /* GL_NV_blend_equation_advanced_coherent */ + +/* --------------------------- GL_NV_blend_square -------------------------- */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 + +#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) + +#endif /* GL_NV_blend_square */ + +/* ------------------------- GL_NV_compute_program5 ------------------------ */ + +#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 + +#define GLEW_NV_compute_program5 GLEW_GET_VAR(__GLEW_NV_compute_program5) + +#endif /* GL_NV_compute_program5 */ + +/* ------------------------ GL_NV_conditional_render ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); + +#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) +#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) + +#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) + +#endif /* GL_NV_conditional_render */ + +/* ----------------------- GL_NV_conservative_raster ----------------------- */ + +#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 (GLAPIENTRY * PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); + +#define glSubpixelPrecisionBiasNV GLEW_GET_FUN(__glewSubpixelPrecisionBiasNV) + +#define GLEW_NV_conservative_raster GLEW_GET_VAR(__GLEW_NV_conservative_raster) + +#endif /* GL_NV_conservative_raster */ + +/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ + +#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 + +#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) + +#endif /* GL_NV_copy_depth_to_color */ + +/* ---------------------------- GL_NV_copy_image --------------------------- */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 + +typedef void (GLAPIENTRY * 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); + +#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) + +#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) + +#endif /* GL_NV_copy_image */ + +/* -------------------------- GL_NV_deep_texture3D ------------------------- */ + +#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 + +#define GLEW_NV_deep_texture3D GLEW_GET_VAR(__GLEW_NV_deep_texture3D) + +#endif /* GL_NV_deep_texture3D */ + +/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); + +#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) +#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) +#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) + +#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) + +#endif /* GL_NV_depth_buffer_float */ + +/* --------------------------- GL_NV_depth_clamp --------------------------- */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 + +#define GL_DEPTH_CLAMP_NV 0x864F + +#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) + +#endif /* GL_NV_depth_clamp */ + +/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ + +#ifndef GL_NV_depth_range_unclamped +#define GL_NV_depth_range_unclamped 1 + +#define GL_SAMPLE_COUNT_BITS_NV 0x8864 +#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 +#define GL_QUERY_RESULT_NV 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 +#define GL_SAMPLE_COUNT_NV 0x8914 + +#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) + +#endif /* GL_NV_depth_range_unclamped */ + +/* --------------------------- GL_NV_draw_texture -------------------------- */ + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 + +typedef void (GLAPIENTRY * PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); + +#define glDrawTextureNV GLEW_GET_FUN(__glewDrawTextureNV) + +#define GLEW_NV_draw_texture GLEW_GET_VAR(__GLEW_NV_draw_texture) + +#endif /* GL_NV_draw_texture */ + +/* ---------------------------- GL_NV_evaluators --------------------------- */ + +#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 (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) +#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) +#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) +#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) +#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) +#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) +#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) +#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) +#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) + +#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) + +#endif /* GL_NV_evaluators */ + +/* ----------------------- GL_NV_explicit_multisample ---------------------- */ + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); + +#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) +#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) +#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) + +#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) + +#endif /* GL_NV_explicit_multisample */ + +/* ------------------------------ GL_NV_fence ------------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); +typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); + +#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) +#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) +#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) +#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) +#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) +#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) +#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) + +#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) + +#endif /* GL_NV_fence */ + +/* -------------------------- GL_NV_fill_rectangle ------------------------- */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 + +#define GL_FILL_RECTANGLE_NV 0x933C + +#define GLEW_NV_fill_rectangle GLEW_GET_VAR(__GLEW_NV_fill_rectangle) + +#endif /* GL_NV_fill_rectangle */ + +/* --------------------------- GL_NV_float_buffer -------------------------- */ + +#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 + +#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) + +#endif /* GL_NV_float_buffer */ + +/* --------------------------- GL_NV_fog_distance -------------------------- */ + +#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 + +#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) + +#endif /* GL_NV_fog_distance */ + +/* -------------------- GL_NV_fragment_coverage_to_color ------------------- */ + +#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 (GLAPIENTRY * PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); + +#define glFragmentCoverageColorNV GLEW_GET_FUN(__glewFragmentCoverageColorNV) + +#define GLEW_NV_fragment_coverage_to_color GLEW_GET_VAR(__GLEW_NV_fragment_coverage_to_color) + +#endif /* GL_NV_fragment_coverage_to_color */ + +/* ------------------------- GL_NV_fragment_program ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); + +#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) +#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) +#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) +#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) +#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) +#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) + +#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) + +#endif /* GL_NV_fragment_program */ + +/* ------------------------ GL_NV_fragment_program2 ------------------------ */ + +#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 + +#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) + +#endif /* GL_NV_fragment_program2 */ + +/* ------------------------ GL_NV_fragment_program4 ------------------------ */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 + +#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) + +#endif /* GL_NV_fragment_program4 */ + +/* --------------------- GL_NV_fragment_program_option --------------------- */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 + +#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) + +#endif /* GL_NV_fragment_program_option */ + +/* -------------------- GL_NV_fragment_shader_interlock -------------------- */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 + +#define GLEW_NV_fragment_shader_interlock GLEW_GET_VAR(__GLEW_NV_fragment_shader_interlock) + +#endif /* GL_NV_fragment_shader_interlock */ + +/* -------------------- GL_NV_framebuffer_mixed_samples -------------------- */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 + +#define GL_COLOR_SAMPLES_NV 0x8E20 +#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 +#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_TABLE_NV 0x9331 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 + +#define GLEW_NV_framebuffer_mixed_samples GLEW_GET_VAR(__GLEW_NV_framebuffer_mixed_samples) + +#endif /* GL_NV_framebuffer_mixed_samples */ + +/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) + +#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) + +#endif /* GL_NV_framebuffer_multisample_coverage */ + +/* ------------------------ GL_NV_geometry_program4 ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); + +#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) + +#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) + +#endif /* GL_NV_geometry_program4 */ + +/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 + +#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) + +#endif /* GL_NV_geometry_shader4 */ + +/* ------------------- GL_NV_geometry_shader_passthrough ------------------- */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 + +#define GLEW_NV_geometry_shader_passthrough GLEW_GET_VAR(__GLEW_NV_geometry_shader_passthrough) + +#endif /* GL_NV_geometry_shader_passthrough */ + +/* --------------------------- GL_NV_gpu_program4 -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); + +#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) +#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) +#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) +#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) +#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) +#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) +#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) +#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) +#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) +#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) +#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) +#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) + +#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) + +#endif /* GL_NV_gpu_program4 */ + +/* --------------------------- GL_NV_gpu_program5 -------------------------- */ + +#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 GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) + +#endif /* GL_NV_gpu_program5 */ + +/* -------------------- GL_NV_gpu_program5_mem_extended -------------------- */ + +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 + +#define GLEW_NV_gpu_program5_mem_extended GLEW_GET_VAR(__GLEW_NV_gpu_program5_mem_extended) + +#endif /* GL_NV_gpu_program5_mem_extended */ + +/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ + +#ifndef GL_NV_gpu_program_fp64 +#define GL_NV_gpu_program_fp64 1 + +#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) + +#endif /* GL_NV_gpu_program_fp64 */ + +/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 + +#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 (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) +#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) +#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) +#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) +#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) +#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) +#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) +#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) +#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) +#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) +#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) +#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) +#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) +#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) +#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) +#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) +#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) +#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) +#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) +#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) +#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) +#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) +#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) +#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) +#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) +#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) +#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) +#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) +#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) +#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) +#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) +#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) +#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) +#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) + +#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) + +#endif /* GL_NV_gpu_shader5 */ + +/* ---------------------------- GL_NV_half_float --------------------------- */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 + +#define GL_HALF_FLOAT_NV 0x140B + +typedef unsigned short GLhalf; + +typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); +typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); +typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); + +#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) +#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) +#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) +#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) +#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) +#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) +#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) +#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) +#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) +#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) +#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) +#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) +#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) +#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) +#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) +#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) +#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) +#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) +#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) +#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) +#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) +#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) +#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) +#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) +#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) +#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) +#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) +#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) +#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) +#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) +#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) +#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) +#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) +#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) +#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) +#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) +#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) +#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) +#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) +#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) +#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) +#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) +#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) +#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) +#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) +#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) + +#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) + +#endif /* GL_NV_half_float */ + +/* ------------------- GL_NV_internalformat_sample_query ------------------- */ + +#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 (GLAPIENTRY * PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params); + +#define glGetInternalformatSampleivNV GLEW_GET_FUN(__glewGetInternalformatSampleivNV) + +#define GLEW_NV_internalformat_sample_query GLEW_GET_VAR(__GLEW_NV_internalformat_sample_query) + +#endif /* GL_NV_internalformat_sample_query */ + +/* ------------------------ GL_NV_light_max_exponent ----------------------- */ + +#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 + +#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) + +#endif /* GL_NV_light_max_exponent */ + +/* ----------------------- GL_NV_multisample_coverage ---------------------- */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 + +#define GL_COLOR_SAMPLES_NV 0x8E20 + +#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) + +#endif /* GL_NV_multisample_coverage */ + +/* --------------------- GL_NV_multisample_filter_hint --------------------- */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 + +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 + +#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) + +#endif /* GL_NV_multisample_filter_hint */ + +/* ------------------------- GL_NV_occlusion_query ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); + +#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) +#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) +#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) +#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) +#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) +#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) +#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) + +#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) + +#endif /* GL_NV_occlusion_query */ + +/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) + +#endif /* GL_NV_packed_depth_stencil */ + +/* --------------------- GL_NV_parameter_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); + +#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) +#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) +#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) + +#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) + +#endif /* GL_NV_parameter_buffer_object */ + +/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 + +#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) + +#endif /* GL_NV_parameter_buffer_object2 */ + +/* -------------------------- GL_NV_path_rendering ------------------------- */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 + +#define GL_CLOSE_PATH_NV 0x00 +#define GL_BOLD_BIT_NV 0x01 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#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_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#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_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#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_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#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_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_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_RELATIVE_RECT_NV 0xF7 +#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_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PRIMARY_COLOR 0x8577 +#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_PATH_STROKE_BOUND_NV 0x9086 +#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_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#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_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_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_FRAGMENT_INPUT_NV 0x936D +#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_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 + +typedef void (GLAPIENTRY * PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLuint (GLAPIENTRY * PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte* commands); +typedef void (GLAPIENTRY * PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat* coords); +typedef void (GLAPIENTRY * PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat* dashArray); +typedef GLfloat (GLAPIENTRY * PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef GLboolean (GLAPIENTRY * PFNGLISPATHNVPROC) (GLuint path); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs); +typedef void (GLAPIENTRY * PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords); +typedef void (GLAPIENTRY * PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GLAPIENTRY * PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum zfunc); +typedef void (GLAPIENTRY * PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat* dashArray); +typedef void (GLAPIENTRY * PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GLAPIENTRY * PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GLAPIENTRY * PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs); +typedef GLboolean (GLAPIENTRY * PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GLAPIENTRY * PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues); +typedef void (GLAPIENTRY * PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]); + +#define glCopyPathNV GLEW_GET_FUN(__glewCopyPathNV) +#define glCoverFillPathInstancedNV GLEW_GET_FUN(__glewCoverFillPathInstancedNV) +#define glCoverFillPathNV GLEW_GET_FUN(__glewCoverFillPathNV) +#define glCoverStrokePathInstancedNV GLEW_GET_FUN(__glewCoverStrokePathInstancedNV) +#define glCoverStrokePathNV GLEW_GET_FUN(__glewCoverStrokePathNV) +#define glDeletePathsNV GLEW_GET_FUN(__glewDeletePathsNV) +#define glGenPathsNV GLEW_GET_FUN(__glewGenPathsNV) +#define glGetPathColorGenfvNV GLEW_GET_FUN(__glewGetPathColorGenfvNV) +#define glGetPathColorGenivNV GLEW_GET_FUN(__glewGetPathColorGenivNV) +#define glGetPathCommandsNV GLEW_GET_FUN(__glewGetPathCommandsNV) +#define glGetPathCoordsNV GLEW_GET_FUN(__glewGetPathCoordsNV) +#define glGetPathDashArrayNV GLEW_GET_FUN(__glewGetPathDashArrayNV) +#define glGetPathLengthNV GLEW_GET_FUN(__glewGetPathLengthNV) +#define glGetPathMetricRangeNV GLEW_GET_FUN(__glewGetPathMetricRangeNV) +#define glGetPathMetricsNV GLEW_GET_FUN(__glewGetPathMetricsNV) +#define glGetPathParameterfvNV GLEW_GET_FUN(__glewGetPathParameterfvNV) +#define glGetPathParameterivNV GLEW_GET_FUN(__glewGetPathParameterivNV) +#define glGetPathSpacingNV GLEW_GET_FUN(__glewGetPathSpacingNV) +#define glGetPathTexGenfvNV GLEW_GET_FUN(__glewGetPathTexGenfvNV) +#define glGetPathTexGenivNV GLEW_GET_FUN(__glewGetPathTexGenivNV) +#define glGetProgramResourcefvNV GLEW_GET_FUN(__glewGetProgramResourcefvNV) +#define glInterpolatePathsNV GLEW_GET_FUN(__glewInterpolatePathsNV) +#define glIsPathNV GLEW_GET_FUN(__glewIsPathNV) +#define glIsPointInFillPathNV GLEW_GET_FUN(__glewIsPointInFillPathNV) +#define glIsPointInStrokePathNV GLEW_GET_FUN(__glewIsPointInStrokePathNV) +#define glMatrixLoad3x2fNV GLEW_GET_FUN(__glewMatrixLoad3x2fNV) +#define glMatrixLoad3x3fNV GLEW_GET_FUN(__glewMatrixLoad3x3fNV) +#define glMatrixLoadTranspose3x3fNV GLEW_GET_FUN(__glewMatrixLoadTranspose3x3fNV) +#define glMatrixMult3x2fNV GLEW_GET_FUN(__glewMatrixMult3x2fNV) +#define glMatrixMult3x3fNV GLEW_GET_FUN(__glewMatrixMult3x3fNV) +#define glMatrixMultTranspose3x3fNV GLEW_GET_FUN(__glewMatrixMultTranspose3x3fNV) +#define glPathColorGenNV GLEW_GET_FUN(__glewPathColorGenNV) +#define glPathCommandsNV GLEW_GET_FUN(__glewPathCommandsNV) +#define glPathCoordsNV GLEW_GET_FUN(__glewPathCoordsNV) +#define glPathCoverDepthFuncNV GLEW_GET_FUN(__glewPathCoverDepthFuncNV) +#define glPathDashArrayNV GLEW_GET_FUN(__glewPathDashArrayNV) +#define glPathFogGenNV GLEW_GET_FUN(__glewPathFogGenNV) +#define glPathGlyphIndexArrayNV GLEW_GET_FUN(__glewPathGlyphIndexArrayNV) +#define glPathGlyphIndexRangeNV GLEW_GET_FUN(__glewPathGlyphIndexRangeNV) +#define glPathGlyphRangeNV GLEW_GET_FUN(__glewPathGlyphRangeNV) +#define glPathGlyphsNV GLEW_GET_FUN(__glewPathGlyphsNV) +#define glPathMemoryGlyphIndexArrayNV GLEW_GET_FUN(__glewPathMemoryGlyphIndexArrayNV) +#define glPathParameterfNV GLEW_GET_FUN(__glewPathParameterfNV) +#define glPathParameterfvNV GLEW_GET_FUN(__glewPathParameterfvNV) +#define glPathParameteriNV GLEW_GET_FUN(__glewPathParameteriNV) +#define glPathParameterivNV GLEW_GET_FUN(__glewPathParameterivNV) +#define glPathStencilDepthOffsetNV GLEW_GET_FUN(__glewPathStencilDepthOffsetNV) +#define glPathStencilFuncNV GLEW_GET_FUN(__glewPathStencilFuncNV) +#define glPathStringNV GLEW_GET_FUN(__glewPathStringNV) +#define glPathSubCommandsNV GLEW_GET_FUN(__glewPathSubCommandsNV) +#define glPathSubCoordsNV GLEW_GET_FUN(__glewPathSubCoordsNV) +#define glPathTexGenNV GLEW_GET_FUN(__glewPathTexGenNV) +#define glPointAlongPathNV GLEW_GET_FUN(__glewPointAlongPathNV) +#define glProgramPathFragmentInputGenNV GLEW_GET_FUN(__glewProgramPathFragmentInputGenNV) +#define glStencilFillPathInstancedNV GLEW_GET_FUN(__glewStencilFillPathInstancedNV) +#define glStencilFillPathNV GLEW_GET_FUN(__glewStencilFillPathNV) +#define glStencilStrokePathInstancedNV GLEW_GET_FUN(__glewStencilStrokePathInstancedNV) +#define glStencilStrokePathNV GLEW_GET_FUN(__glewStencilStrokePathNV) +#define glStencilThenCoverFillPathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverFillPathInstancedNV) +#define glStencilThenCoverFillPathNV GLEW_GET_FUN(__glewStencilThenCoverFillPathNV) +#define glStencilThenCoverStrokePathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathInstancedNV) +#define glStencilThenCoverStrokePathNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathNV) +#define glTransformPathNV GLEW_GET_FUN(__glewTransformPathNV) +#define glWeightPathsNV GLEW_GET_FUN(__glewWeightPathsNV) + +#define GLEW_NV_path_rendering GLEW_GET_VAR(__GLEW_NV_path_rendering) + +#endif /* GL_NV_path_rendering */ + +/* -------------------- GL_NV_path_rendering_shared_edge ------------------- */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 + +#define GL_SHARED_EDGE_NV 0xC0 + +#define GLEW_NV_path_rendering_shared_edge GLEW_GET_VAR(__GLEW_NV_path_rendering_shared_edge) + +#endif /* GL_NV_path_rendering_shared_edge */ + +/* ------------------------- GL_NV_pixel_data_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void *pointer); + +#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) +#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) + +#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) + +#endif /* GL_NV_pixel_data_range */ + +/* --------------------------- GL_NV_point_sprite -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); + +#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) +#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) + +#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) + +#endif /* GL_NV_point_sprite */ + +/* -------------------------- GL_NV_present_video -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); + +#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) +#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) +#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) +#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) +#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) +#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) + +#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) + +#endif /* GL_NV_present_video */ + +/* ------------------------ GL_NV_primitive_restart ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); + +#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) +#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) + +#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) + +#endif /* GL_NV_primitive_restart */ + +/* ------------------------ GL_NV_register_combiners ----------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); + +#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) +#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) +#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) +#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) +#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) +#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) +#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) +#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) +#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) +#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) +#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) +#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) +#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) + +#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) + +#endif /* GL_NV_register_combiners */ + +/* ----------------------- GL_NV_register_combiners2 ----------------------- */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 + +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 + +typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); + +#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) +#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) + +#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) + +#endif /* GL_NV_register_combiners2 */ + +/* ------------------------- GL_NV_sample_locations ------------------------ */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 + +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#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_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v); + +#define glFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewFramebufferSampleLocationsfvNV) +#define glNamedFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewNamedFramebufferSampleLocationsfvNV) + +#define GLEW_NV_sample_locations GLEW_GET_VAR(__GLEW_NV_sample_locations) + +#endif /* GL_NV_sample_locations */ + +/* ------------------ GL_NV_sample_mask_override_coverage ------------------ */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 + +#define GLEW_NV_sample_mask_override_coverage GLEW_GET_VAR(__GLEW_NV_sample_mask_override_coverage) + +#endif /* GL_NV_sample_mask_override_coverage */ + +/* ---------------------- GL_NV_shader_atomic_counters --------------------- */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 + +#define GLEW_NV_shader_atomic_counters GLEW_GET_VAR(__GLEW_NV_shader_atomic_counters) + +#endif /* GL_NV_shader_atomic_counters */ + +/* ----------------------- GL_NV_shader_atomic_float ----------------------- */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 + +#define GLEW_NV_shader_atomic_float GLEW_GET_VAR(__GLEW_NV_shader_atomic_float) + +#endif /* GL_NV_shader_atomic_float */ + +/* -------------------- GL_NV_shader_atomic_fp16_vector -------------------- */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 + +#define GLEW_NV_shader_atomic_fp16_vector GLEW_GET_VAR(__GLEW_NV_shader_atomic_fp16_vector) + +#endif /* GL_NV_shader_atomic_fp16_vector */ + +/* ----------------------- GL_NV_shader_atomic_int64 ----------------------- */ + +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 + +#define GLEW_NV_shader_atomic_int64 GLEW_GET_VAR(__GLEW_NV_shader_atomic_int64) + +#endif /* GL_NV_shader_atomic_int64 */ + +/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ + +#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 (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) +#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) +#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) +#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) +#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) +#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) +#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) +#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) +#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) +#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) +#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) +#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) +#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) + +#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) + +#endif /* GL_NV_shader_buffer_load */ + +/* ------------------- GL_NV_shader_storage_buffer_object ------------------ */ + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 + +#define GLEW_NV_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_NV_shader_storage_buffer_object) + +#endif /* GL_NV_shader_storage_buffer_object */ + +/* ----------------------- GL_NV_shader_thread_group ----------------------- */ + +#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 + +#define GLEW_NV_shader_thread_group GLEW_GET_VAR(__GLEW_NV_shader_thread_group) + +#endif /* GL_NV_shader_thread_group */ + +/* ---------------------- GL_NV_shader_thread_shuffle ---------------------- */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 + +#define GLEW_NV_shader_thread_shuffle GLEW_GET_VAR(__GLEW_NV_shader_thread_shuffle) + +#endif /* GL_NV_shader_thread_shuffle */ + +/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ + +#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 + +#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) + +#endif /* GL_NV_tessellation_program5 */ + +/* -------------------------- GL_NV_texgen_emboss -------------------------- */ + +#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 + +#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) + +#endif /* GL_NV_texgen_emboss */ + +/* ------------------------ GL_NV_texgen_reflection ------------------------ */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 + +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 + +#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) + +#endif /* GL_NV_texgen_reflection */ + +/* ------------------------- GL_NV_texture_barrier ------------------------- */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 + +typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); + +#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) + +#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) + +#endif /* GL_NV_texture_barrier */ + +/* --------------------- GL_NV_texture_compression_vtc --------------------- */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 + +#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) + +#endif /* GL_NV_texture_compression_vtc */ + +/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ + +#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 + +#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) + +#endif /* GL_NV_texture_env_combine4 */ + +/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 + +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F + +#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) + +#endif /* GL_NV_texture_expand_normal */ + +/* ----------------------- GL_NV_texture_multisample ----------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + +#define glTexImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage2DMultisampleCoverageNV) +#define glTexImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage3DMultisampleCoverageNV) +#define glTextureImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage2DMultisampleCoverageNV) +#define glTextureImage2DMultisampleNV GLEW_GET_FUN(__glewTextureImage2DMultisampleNV) +#define glTextureImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage3DMultisampleCoverageNV) +#define glTextureImage3DMultisampleNV GLEW_GET_FUN(__glewTextureImage3DMultisampleNV) + +#define GLEW_NV_texture_multisample GLEW_GET_VAR(__GLEW_NV_texture_multisample) + +#endif /* GL_NV_texture_multisample */ + +/* ------------------------ GL_NV_texture_rectangle ------------------------ */ + +#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 + +#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) + +#endif /* GL_NV_texture_rectangle */ + +/* -------------------------- GL_NV_texture_shader ------------------------- */ + +#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_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_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 + +#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) + +#endif /* GL_NV_texture_shader */ + +/* ------------------------- GL_NV_texture_shader2 ------------------------- */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 + +#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_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#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 GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) + +#endif /* GL_NV_texture_shader2 */ + +/* ------------------------- GL_NV_texture_shader3 ------------------------- */ + +#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 + +#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) + +#endif /* GL_NV_texture_shader3 */ + +/* ------------------------ GL_NV_transform_feedback ----------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); + +#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) +#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) +#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) +#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) +#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) +#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) +#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) +#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) +#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) +#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) +#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) + +#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) + +#endif /* GL_NV_transform_feedback */ + +/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); + +#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) +#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) +#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) +#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) +#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) +#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) +#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) + +#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) + +#endif /* GL_NV_transform_feedback2 */ + +/* ------------------ GL_NV_uniform_buffer_unified_memory ------------------ */ + +#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 + +#define GLEW_NV_uniform_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_uniform_buffer_unified_memory) + +#endif /* GL_NV_uniform_buffer_unified_memory */ + +/* -------------------------- GL_NV_vdpau_interop -------------------------- */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 + +#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 GLintptr GLvdpauSurfaceNV; + +typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); +typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const void*getProcAddress); +typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); +typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); + +#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) +#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) +#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) +#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) +#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) +#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) +#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) +#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) +#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) +#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) + +#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) + +#endif /* GL_NV_vdpau_interop */ + +/* ------------------------ GL_NV_vertex_array_range ----------------------- */ + +#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 (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void *pointer); + +#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) +#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) + +#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) + +#endif /* GL_NV_vertex_array_range */ + +/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 + +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 + +#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) + +#endif /* GL_NV_vertex_array_range2 */ + +/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 + +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); + +#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) +#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) +#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) +#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) +#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) +#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) +#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) +#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) +#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) +#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) +#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) +#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) +#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) +#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) +#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) +#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) +#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) +#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) +#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) + +#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) + +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ + +#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 (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); +typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); + +#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) +#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) +#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) +#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) +#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) +#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) +#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) +#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) +#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) +#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) +#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) +#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) + +#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) + +#endif /* GL_NV_vertex_buffer_unified_memory */ + +/* -------------------------- GL_NV_vertex_program ------------------------- */ + +#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 (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); + +#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) +#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) +#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) +#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) +#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) +#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) +#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) +#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) +#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) +#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) +#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) +#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) +#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) +#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) +#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) +#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) +#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) +#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) +#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) +#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) +#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) +#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) +#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) +#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) +#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) +#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) +#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) +#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) +#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) +#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) +#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) +#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) +#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) +#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) +#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) +#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) +#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) +#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) +#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) +#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) +#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) +#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) +#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) +#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) +#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) +#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) +#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) +#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) +#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) +#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) +#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) +#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) +#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) +#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) +#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) +#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) +#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) +#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) +#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) +#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) +#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) +#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) +#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) +#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) + +#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) + +#endif /* GL_NV_vertex_program */ + +/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 + +#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) + +#endif /* GL_NV_vertex_program1_1 */ + +/* ------------------------- GL_NV_vertex_program2 ------------------------- */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 + +#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) + +#endif /* GL_NV_vertex_program2 */ + +/* ---------------------- GL_NV_vertex_program2_option --------------------- */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 + +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 + +#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) + +#endif /* GL_NV_vertex_program2_option */ + +/* ------------------------- GL_NV_vertex_program3 ------------------------- */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 + +#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C + +#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) + +#endif /* GL_NV_vertex_program3 */ + +/* ------------------------- GL_NV_vertex_program4 ------------------------- */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 + +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD + +#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) + +#endif /* GL_NV_vertex_program4 */ + +/* -------------------------- GL_NV_video_capture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params); + +#define glBeginVideoCaptureNV GLEW_GET_FUN(__glewBeginVideoCaptureNV) +#define glBindVideoCaptureStreamBufferNV GLEW_GET_FUN(__glewBindVideoCaptureStreamBufferNV) +#define glBindVideoCaptureStreamTextureNV GLEW_GET_FUN(__glewBindVideoCaptureStreamTextureNV) +#define glEndVideoCaptureNV GLEW_GET_FUN(__glewEndVideoCaptureNV) +#define glGetVideoCaptureStreamdvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamdvNV) +#define glGetVideoCaptureStreamfvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamfvNV) +#define glGetVideoCaptureStreamivNV GLEW_GET_FUN(__glewGetVideoCaptureStreamivNV) +#define glGetVideoCaptureivNV GLEW_GET_FUN(__glewGetVideoCaptureivNV) +#define glVideoCaptureNV GLEW_GET_FUN(__glewVideoCaptureNV) +#define glVideoCaptureStreamParameterdvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterdvNV) +#define glVideoCaptureStreamParameterfvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterfvNV) +#define glVideoCaptureStreamParameterivNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterivNV) + +#define GLEW_NV_video_capture GLEW_GET_VAR(__GLEW_NV_video_capture) + +#endif /* GL_NV_video_capture */ + +/* ------------------------- GL_NV_viewport_array2 ------------------------- */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 + +#define GLEW_NV_viewport_array2 GLEW_GET_VAR(__GLEW_NV_viewport_array2) + +#endif /* GL_NV_viewport_array2 */ + +/* ------------------------ GL_OES_byte_coordinates ------------------------ */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 + +#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) + +#endif /* GL_OES_byte_coordinates */ + +/* ------------------- GL_OES_compressed_paletted_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 + +#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) + +#endif /* GL_OES_compressed_paletted_texture */ + +/* --------------------------- GL_OES_read_format -------------------------- */ + +#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 + +#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) + +#endif /* GL_OES_read_format */ + +/* ------------------------ GL_OES_single_precision ------------------------ */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); + +#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) +#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) +#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) +#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) +#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) +#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) + +#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) + +#endif /* GL_OES_single_precision */ + +/* ---------------------------- GL_OML_interlace --------------------------- */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 + +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 + +#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) + +#endif /* GL_OML_interlace */ + +/* ---------------------------- GL_OML_resample ---------------------------- */ + +#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 + +#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) + +#endif /* GL_OML_resample */ + +/* ---------------------------- GL_OML_subsample --------------------------- */ + +#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 + +#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) + +#endif /* GL_OML_subsample */ + +/* --------------------------- GL_PGI_misc_hints --------------------------- */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 + +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 +#define GL_CONSERVE_MEMORY_HINT_PGI 107005 +#define GL_RECLAIM_MEMORY_HINT_PGI 107006 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 +#define GL_ALWAYS_FAST_HINT_PGI 107020 +#define GL_ALWAYS_SOFT_HINT_PGI 107021 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 +#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 +#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 +#define GL_STRICT_LIGHTING_HINT_PGI 107031 +#define GL_STRICT_SCISSOR_HINT_PGI 107032 +#define GL_FULL_STIPPLE_HINT_PGI 107033 +#define GL_CLIP_NEAR_HINT_PGI 107040 +#define GL_CLIP_FAR_HINT_PGI 107041 +#define GL_WIDE_LINE_HINT_PGI 107042 +#define GL_BACK_NORMALS_HINT_PGI 107043 + +#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) + +#endif /* GL_PGI_misc_hints */ + +/* -------------------------- GL_PGI_vertex_hints -------------------------- */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 + +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#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_VERTEX_DATA_HINT_PGI 107050 +#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 +#define GL_MATERIAL_SIDE_HINT_PGI 107052 +#define GL_MAX_VERTEX_HINT_PGI 107053 +#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 GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) + +#endif /* GL_PGI_vertex_hints */ + +/* ---------------------- GL_REGAL_ES1_0_compatibility --------------------- */ + +#ifndef GL_REGAL_ES1_0_compatibility +#define GL_REGAL_ES1_0_compatibility 1 + +typedef int GLclampx; + +typedef void (GLAPIENTRY * PFNGLALPHAFUNCXPROC) (GLenum func, GLclampx ref); +typedef void (GLAPIENTRY * PFNGLCLEARCOLORXPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHXPROC) (GLclampx depth); +typedef void (GLAPIENTRY * PFNGLCOLOR4XPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEXPROC) (GLclampx zNear, GLclampx zFar); +typedef void (GLAPIENTRY * PFNGLFOGXPROC) (GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLFOGXVPROC) (GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLFRUSTUMFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GLAPIENTRY * PFNGLFRUSTUMXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GLAPIENTRY * PFNGLLIGHTMODELXPROC) (GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLLIGHTMODELXVPROC) (GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLLIGHTXPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLLIGHTXVPROC) (GLenum light, GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLLINEWIDTHXPROC) (GLfixed width); +typedef void (GLAPIENTRY * PFNGLLOADMATRIXXPROC) (const GLfixed* m); +typedef void (GLAPIENTRY * PFNGLMATERIALXPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLMATERIALXVPROC) (GLenum face, GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLMULTMATRIXXPROC) (const GLfixed* m); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4XPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (GLAPIENTRY * PFNGLNORMAL3XPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (GLAPIENTRY * PFNGLORTHOFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GLAPIENTRY * PFNGLORTHOXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GLAPIENTRY * PFNGLPOINTSIZEXPROC) (GLfixed size); +typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETXPROC) (GLfixed factor, GLfixed units); +typedef void (GLAPIENTRY * PFNGLROTATEXPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEXPROC) (GLclampx value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSCALEXPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (GLAPIENTRY * PFNGLTEXENVXPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLTEXENVXVPROC) (GLenum target, GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLTRANSLATEXPROC) (GLfixed x, GLfixed y, GLfixed z); + +#define glAlphaFuncx GLEW_GET_FUN(__glewAlphaFuncx) +#define glClearColorx GLEW_GET_FUN(__glewClearColorx) +#define glClearDepthx GLEW_GET_FUN(__glewClearDepthx) +#define glColor4x GLEW_GET_FUN(__glewColor4x) +#define glDepthRangex GLEW_GET_FUN(__glewDepthRangex) +#define glFogx GLEW_GET_FUN(__glewFogx) +#define glFogxv GLEW_GET_FUN(__glewFogxv) +#define glFrustumf GLEW_GET_FUN(__glewFrustumf) +#define glFrustumx GLEW_GET_FUN(__glewFrustumx) +#define glLightModelx GLEW_GET_FUN(__glewLightModelx) +#define glLightModelxv GLEW_GET_FUN(__glewLightModelxv) +#define glLightx GLEW_GET_FUN(__glewLightx) +#define glLightxv GLEW_GET_FUN(__glewLightxv) +#define glLineWidthx GLEW_GET_FUN(__glewLineWidthx) +#define glLoadMatrixx GLEW_GET_FUN(__glewLoadMatrixx) +#define glMaterialx GLEW_GET_FUN(__glewMaterialx) +#define glMaterialxv GLEW_GET_FUN(__glewMaterialxv) +#define glMultMatrixx GLEW_GET_FUN(__glewMultMatrixx) +#define glMultiTexCoord4x GLEW_GET_FUN(__glewMultiTexCoord4x) +#define glNormal3x GLEW_GET_FUN(__glewNormal3x) +#define glOrthof GLEW_GET_FUN(__glewOrthof) +#define glOrthox GLEW_GET_FUN(__glewOrthox) +#define glPointSizex GLEW_GET_FUN(__glewPointSizex) +#define glPolygonOffsetx GLEW_GET_FUN(__glewPolygonOffsetx) +#define glRotatex GLEW_GET_FUN(__glewRotatex) +#define glSampleCoveragex GLEW_GET_FUN(__glewSampleCoveragex) +#define glScalex GLEW_GET_FUN(__glewScalex) +#define glTexEnvx GLEW_GET_FUN(__glewTexEnvx) +#define glTexEnvxv GLEW_GET_FUN(__glewTexEnvxv) +#define glTexParameterx GLEW_GET_FUN(__glewTexParameterx) +#define glTranslatex GLEW_GET_FUN(__glewTranslatex) + +#define GLEW_REGAL_ES1_0_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_0_compatibility) + +#endif /* GL_REGAL_ES1_0_compatibility */ + +/* ---------------------- GL_REGAL_ES1_1_compatibility --------------------- */ + +#ifndef GL_REGAL_ES1_1_compatibility +#define GL_REGAL_ES1_1_compatibility 1 + +typedef void (GLAPIENTRY * PFNGLCLIPPLANEFPROC) (GLenum plane, const GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLCLIPPLANEXPROC) (GLenum plane, const GLfixed* equation); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFPROC) (GLenum pname, GLfloat eqn[4]); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEXPROC) (GLenum pname, GLfixed eqn[4]); +typedef void (GLAPIENTRY * PFNGLGETFIXEDVPROC) (GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETLIGHTXVPROC) (GLenum light, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETMATERIALXVPROC) (GLenum face, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETTEXENVXVPROC) (GLenum env, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERXVPROC) (GLenum target, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXPROC) (GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXVPROC) (GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLPOINTSIZEPOINTEROESPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXVPROC) (GLenum target, GLenum pname, const GLfixed* params); + +#define glClipPlanef GLEW_GET_FUN(__glewClipPlanef) +#define glClipPlanex GLEW_GET_FUN(__glewClipPlanex) +#define glGetClipPlanef GLEW_GET_FUN(__glewGetClipPlanef) +#define glGetClipPlanex GLEW_GET_FUN(__glewGetClipPlanex) +#define glGetFixedv GLEW_GET_FUN(__glewGetFixedv) +#define glGetLightxv GLEW_GET_FUN(__glewGetLightxv) +#define glGetMaterialxv GLEW_GET_FUN(__glewGetMaterialxv) +#define glGetTexEnvxv GLEW_GET_FUN(__glewGetTexEnvxv) +#define glGetTexParameterxv GLEW_GET_FUN(__glewGetTexParameterxv) +#define glPointParameterx GLEW_GET_FUN(__glewPointParameterx) +#define glPointParameterxv GLEW_GET_FUN(__glewPointParameterxv) +#define glPointSizePointerOES GLEW_GET_FUN(__glewPointSizePointerOES) +#define glTexParameterxv GLEW_GET_FUN(__glewTexParameterxv) + +#define GLEW_REGAL_ES1_1_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_1_compatibility) + +#endif /* GL_REGAL_ES1_1_compatibility */ + +/* ---------------------------- GL_REGAL_enable ---------------------------- */ + +#ifndef GL_REGAL_enable +#define GL_REGAL_enable 1 + +#define GL_ERROR_REGAL 0x9322 +#define GL_DEBUG_REGAL 0x9323 +#define GL_LOG_REGAL 0x9324 +#define GL_EMULATION_REGAL 0x9325 +#define GL_DRIVER_REGAL 0x9326 +#define GL_MISSING_REGAL 0x9360 +#define GL_TRACE_REGAL 0x9361 +#define GL_CACHE_REGAL 0x9362 +#define GL_CODE_REGAL 0x9363 +#define GL_STATISTICS_REGAL 0x9364 + +#define GLEW_REGAL_enable GLEW_GET_VAR(__GLEW_REGAL_enable) + +#endif /* GL_REGAL_enable */ + +/* ------------------------- GL_REGAL_error_string ------------------------- */ + +#ifndef GL_REGAL_error_string +#define GL_REGAL_error_string 1 + +typedef const GLchar* (GLAPIENTRY * PFNGLERRORSTRINGREGALPROC) (GLenum error); + +#define glErrorStringREGAL GLEW_GET_FUN(__glewErrorStringREGAL) + +#define GLEW_REGAL_error_string GLEW_GET_VAR(__GLEW_REGAL_error_string) + +#endif /* GL_REGAL_error_string */ + +/* ------------------------ GL_REGAL_extension_query ----------------------- */ + +#ifndef GL_REGAL_extension_query +#define GL_REGAL_extension_query 1 + +typedef GLboolean (GLAPIENTRY * PFNGLGETEXTENSIONREGALPROC) (const GLchar* ext); +typedef GLboolean (GLAPIENTRY * PFNGLISSUPPORTEDREGALPROC) (const GLchar* ext); + +#define glGetExtensionREGAL GLEW_GET_FUN(__glewGetExtensionREGAL) +#define glIsSupportedREGAL GLEW_GET_FUN(__glewIsSupportedREGAL) + +#define GLEW_REGAL_extension_query GLEW_GET_VAR(__GLEW_REGAL_extension_query) + +#endif /* GL_REGAL_extension_query */ + +/* ------------------------------ GL_REGAL_log ----------------------------- */ + +#ifndef GL_REGAL_log +#define GL_REGAL_log 1 + +#define GL_LOG_ERROR_REGAL 0x9319 +#define GL_LOG_WARNING_REGAL 0x931A +#define GL_LOG_INFO_REGAL 0x931B +#define GL_LOG_APP_REGAL 0x931C +#define GL_LOG_DRIVER_REGAL 0x931D +#define GL_LOG_INTERNAL_REGAL 0x931E +#define GL_LOG_DEBUG_REGAL 0x931F +#define GL_LOG_STATUS_REGAL 0x9320 +#define GL_LOG_HTTP_REGAL 0x9321 + +typedef void (APIENTRY *GLLOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context); + +typedef void (GLAPIENTRY * PFNGLLOGMESSAGECALLBACKREGALPROC) (GLLOGPROCREGAL callback); + +#define glLogMessageCallbackREGAL GLEW_GET_FUN(__glewLogMessageCallbackREGAL) + +#define GLEW_REGAL_log GLEW_GET_VAR(__GLEW_REGAL_log) + +#endif /* GL_REGAL_log */ + +/* ------------------------- GL_REGAL_proc_address ------------------------- */ + +#ifndef GL_REGAL_proc_address +#define GL_REGAL_proc_address 1 + +typedef void * (GLAPIENTRY * PFNGLGETPROCADDRESSREGALPROC) (const GLchar *name); + +#define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL) + +#define GLEW_REGAL_proc_address GLEW_GET_VAR(__GLEW_REGAL_proc_address) + +#endif /* GL_REGAL_proc_address */ + +/* ----------------------- GL_REND_screen_coordinates ---------------------- */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 + +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 + +#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) + +#endif /* GL_REND_screen_coordinates */ + +/* ------------------------------- GL_S3_s3tc ------------------------------ */ + +#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 + +#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) + +#endif /* GL_S3_s3tc */ + +/* -------------------------- GL_SGIS_color_range -------------------------- */ + +#ifndef GL_SGIS_color_range +#define GL_SGIS_color_range 1 + +#define GL_EXTENDED_RANGE_SGIS 0x85A5 +#define GL_MIN_RED_SGIS 0x85A6 +#define GL_MAX_RED_SGIS 0x85A7 +#define GL_MIN_GREEN_SGIS 0x85A8 +#define GL_MAX_GREEN_SGIS 0x85A9 +#define GL_MIN_BLUE_SGIS 0x85AA +#define GL_MAX_BLUE_SGIS 0x85AB +#define GL_MIN_ALPHA_SGIS 0x85AC +#define GL_MAX_ALPHA_SGIS 0x85AD + +#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) + +#endif /* GL_SGIS_color_range */ + +/* ------------------------- GL_SGIS_detail_texture ------------------------ */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 + +typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); + +#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) +#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) + +#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) + +#endif /* GL_SGIS_detail_texture */ + +/* -------------------------- GL_SGIS_fog_function ------------------------- */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 + +typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); + +#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) +#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) + +#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) + +#endif /* GL_SGIS_fog_function */ + +/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 + +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 + +#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) + +#endif /* GL_SGIS_generate_mipmap */ + +/* -------------------------- GL_SGIS_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); + +#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) +#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) + +#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) + +#endif /* GL_SGIS_multisample */ + +/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 + +#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) + +#endif /* GL_SGIS_pixel_texture */ + +/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ + +#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 + +#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) + +#endif /* GL_SGIS_point_line_texgen */ + +/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 + +typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); +typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); + +#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) +#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) + +#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) + +#endif /* GL_SGIS_sharpen_texture */ + +/* --------------------------- GL_SGIS_texture4D --------------------------- */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 + +typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels); + +#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) +#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) + +#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) + +#endif /* GL_SGIS_texture4D */ + +/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_SGIS 0x812D + +#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) + +#endif /* GL_SGIS_texture_border_clamp */ + +/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_SGIS 0x812F + +#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) + +#endif /* GL_SGIS_texture_edge_clamp */ + +/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 + +typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); +typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); + +#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) +#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) + +#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) + +#endif /* GL_SGIS_texture_filter4 */ + +/* -------------------------- GL_SGIS_texture_lod -------------------------- */ + +#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 + +#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) + +#endif /* GL_SGIS_texture_lod */ + +/* ------------------------- GL_SGIS_texture_select ------------------------ */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 + +#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) + +#endif /* GL_SGIS_texture_select */ + +/* ----------------------------- GL_SGIX_async ----------------------------- */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 + +#define GL_ASYNC_MARKER_SGIX 0x8329 + +typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); +typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); + +#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) +#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) +#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) +#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) +#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) +#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) + +#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) + +#endif /* GL_SGIX_async */ + +/* ------------------------ GL_SGIX_async_histogram ------------------------ */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 + +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D + +#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) + +#endif /* GL_SGIX_async_histogram */ + +/* -------------------------- GL_SGIX_async_pixel -------------------------- */ + +#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 + +#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) + +#endif /* GL_SGIX_async_pixel */ + +/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ + +#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 + +#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) + +#endif /* GL_SGIX_blend_alpha_minmax */ + +/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 + +#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) + +#endif /* GL_SGIX_clipmap */ + +/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 + +#define GL_CONVOLUTION_HINT_SGIX 0x8316 + +#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) + +#endif /* GL_SGIX_convolution_accuracy */ + +/* ------------------------- GL_SGIX_depth_texture ------------------------- */ + +#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 + +#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) + +#endif /* GL_SGIX_depth_texture */ + +/* -------------------------- GL_SGIX_flush_raster ------------------------- */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 + +typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); + +#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) + +#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) + +#endif /* GL_SGIX_flush_raster */ + +/* --------------------------- GL_SGIX_fog_offset -------------------------- */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 + +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 + +#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) + +#endif /* GL_SGIX_fog_offset */ + +/* -------------------------- GL_SGIX_fog_texture -------------------------- */ + +#ifndef GL_SGIX_fog_texture +#define GL_SGIX_fog_texture 1 + +#define GL_FOG_PATCHY_FACTOR_SGIX 0 +#define GL_FRAGMENT_FOG_SGIX 0 +#define GL_TEXTURE_FOG_SGIX 0 + +typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); + +#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) + +#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) + +#endif /* GL_SGIX_fog_texture */ + +/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ + +#ifndef GL_SGIX_fragment_specular_lighting +#define GL_SGIX_fragment_specular_lighting 1 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); + +#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) +#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) +#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) +#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) +#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) +#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) +#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) +#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) +#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) +#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) +#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) +#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) +#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) +#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) +#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) +#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) +#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) + +#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) + +#endif /* GL_SGIX_fragment_specular_lighting */ + +/* --------------------------- GL_SGIX_framezoom --------------------------- */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 + +typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); + +#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) + +#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) + +#endif /* GL_SGIX_framezoom */ + +/* --------------------------- GL_SGIX_interlace --------------------------- */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 + +#define GL_INTERLACE_SGIX 0x8094 + +#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) + +#endif /* GL_SGIX_interlace */ + +/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 + +#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) + +#endif /* GL_SGIX_ir_instrument1 */ + +/* ------------------------- GL_SGIX_list_priority ------------------------- */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 + +#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) + +#endif /* GL_SGIX_list_priority */ + +/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 + +typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); + +#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) + +#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) + +#endif /* GL_SGIX_pixel_texture */ + +/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ + +#ifndef GL_SGIX_pixel_texture_bits +#define GL_SGIX_pixel_texture_bits 1 + +#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) + +#endif /* GL_SGIX_pixel_texture_bits */ + +/* ------------------------ GL_SGIX_reference_plane ------------------------ */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 + +typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); + +#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) + +#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) + +#endif /* GL_SGIX_reference_plane */ + +/* ---------------------------- GL_SGIX_resample --------------------------- */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 + +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 + +#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) + +#endif /* GL_SGIX_resample */ + +/* ----------------------------- GL_SGIX_shadow ---------------------------- */ + +#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 + +#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) + +#endif /* GL_SGIX_shadow */ + +/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 + +#define GL_SHADOW_AMBIENT_SGIX 0x80BF + +#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) + +#endif /* GL_SGIX_shadow_ambient */ + +/* ----------------------------- GL_SGIX_sprite ---------------------------- */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 + +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); + +#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) +#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) +#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) +#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) + +#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) + +#endif /* GL_SGIX_sprite */ + +/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 + +typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); + +#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) + +#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) + +#endif /* GL_SGIX_tag_sample_buffer */ + +/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 + +#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) + +#endif /* GL_SGIX_texture_add_env */ + +/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ + +#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 + +#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) + +#endif /* GL_SGIX_texture_coordinate_clamp */ + +/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 + +#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) + +#endif /* GL_SGIX_texture_lod_bias */ + +/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 + +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E + +#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) + +#endif /* GL_SGIX_texture_multi_buffer */ + +/* ------------------------- GL_SGIX_texture_range ------------------------- */ + +#ifndef GL_SGIX_texture_range +#define GL_SGIX_texture_range 1 + +#define GL_RGB_SIGNED_SGIX 0x85E0 +#define GL_RGBA_SIGNED_SGIX 0x85E1 +#define GL_ALPHA_SIGNED_SGIX 0x85E2 +#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 +#define GL_INTENSITY_SIGNED_SGIX 0x85E4 +#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 +#define GL_RGB16_SIGNED_SGIX 0x85E6 +#define GL_RGBA16_SIGNED_SGIX 0x85E7 +#define GL_ALPHA16_SIGNED_SGIX 0x85E8 +#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 +#define GL_INTENSITY16_SIGNED_SGIX 0x85EA +#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB +#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC +#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED +#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE +#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF +#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 +#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 +#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 +#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 +#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 +#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 +#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 +#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 +#define GL_MIN_LUMINANCE_SGIS 0x85F8 +#define GL_MAX_LUMINANCE_SGIS 0x85F9 +#define GL_MIN_INTENSITY_SGIS 0x85FA +#define GL_MAX_INTENSITY_SGIS 0x85FB + +#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) + +#endif /* GL_SGIX_texture_range */ + +/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ + +#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 + +#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) + +#endif /* GL_SGIX_texture_scale_bias */ + +/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) + +#endif /* GL_SGIX_vertex_preclip */ + +/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ + +#ifndef GL_SGIX_vertex_preclip_hint +#define GL_SGIX_vertex_preclip_hint 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) + +#endif /* GL_SGIX_vertex_preclip_hint */ + +/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 + +#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) + +#endif /* GL_SGIX_ycrcb */ + +/* -------------------------- GL_SGI_color_matrix -------------------------- */ + +#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 + +#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) + +#endif /* GL_SGI_color_matrix */ + +/* --------------------------- GL_SGI_color_table -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table); + +#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) +#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) +#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) +#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) +#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) +#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) +#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) + +#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) + +#endif /* GL_SGI_color_table */ + +/* ----------------------- GL_SGI_texture_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 + +#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) + +#endif /* GL_SGI_texture_color_table */ + +/* ------------------------- GL_SUNX_constant_data ------------------------- */ + +#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 (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); + +#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) + +#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) + +#endif /* GL_SUNX_constant_data */ + +/* -------------------- GL_SUN_convolution_border_modes -------------------- */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 + +#define GL_WRAP_BORDER_SUN 0x81D4 + +#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) + +#endif /* GL_SUN_convolution_border_modes */ + +/* -------------------------- GL_SUN_global_alpha -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); + +#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) +#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) +#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) +#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) +#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) +#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) +#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) +#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) + +#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) + +#endif /* GL_SUN_global_alpha */ + +/* --------------------------- GL_SUN_mesh_array --------------------------- */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 + +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 + +#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) + +#endif /* GL_SUN_mesh_array */ + +/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ + +#ifndef GL_SUN_read_video_pixels +#define GL_SUN_read_video_pixels 1 + +typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels); + +#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) + +#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) + +#endif /* GL_SUN_read_video_pixels */ + +/* --------------------------- GL_SUN_slice_accum -------------------------- */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 + +#define GL_SLICE_ACCUM_SUN 0x85CC + +#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) + +#endif /* GL_SUN_slice_accum */ + +/* -------------------------- GL_SUN_triangle_list ------------------------- */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 + +#define GL_RESTART_SUN 0x01 +#define GL_REPLACE_MIDDLE_SUN 0x02 +#define GL_REPLACE_OLDEST_SUN 0x03 +#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 (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); + +#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) +#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) +#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) +#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) +#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) +#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) +#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) + +#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) + +#endif /* GL_SUN_triangle_list */ + +/* ----------------------------- GL_SUN_vertex ----------------------------- */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 + +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); + +#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) +#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) +#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) +#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) +#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) +#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) +#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) +#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) +#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) +#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) +#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) +#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) +#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) +#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) +#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) +#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) +#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) +#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) +#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) +#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) +#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) +#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) +#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) +#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) +#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) +#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) +#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) +#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) +#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) + +#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) + +#endif /* GL_SUN_vertex */ + +/* -------------------------- GL_WIN_phong_shading ------------------------- */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 + +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB + +#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) + +#endif /* GL_WIN_phong_shading */ + +/* -------------------------- GL_WIN_specular_fog -------------------------- */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 + +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC + +#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) + +#endif /* GL_WIN_specular_fog */ + +/* ---------------------------- GL_WIN_swap_hint --------------------------- */ + +#ifndef GL_WIN_swap_hint +#define GL_WIN_swap_hint 1 + +typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); + +#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) + +#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) + +#endif /* GL_WIN_swap_hint */ + +/* ------------------------------------------------------------------------- */ + +#if defined(GLEW_MX) && defined(_WIN32) +#define GLEW_FUN_EXPORT +#else +#define GLEW_FUN_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) +#define GLEW_VAR_EXPORT +#else +#define GLEW_VAR_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) && defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; + +GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; +GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; +GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; +GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; +GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; +GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; +GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; +GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; +GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; +GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; +GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; +GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; + +GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; +GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; +GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; +GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; +GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; +GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; +GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; +GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; +GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; +GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; +GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; +GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; +GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; +GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; +GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; +GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; + +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; +GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; +GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; +GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; +GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; +GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; +GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; +GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; +GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; +GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; + +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; + +GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus; + +GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; + +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD; + +GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; +GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; +GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; + +GLEW_FUN_EXPORT PFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD; + +GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; +GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; + +GLEW_FUN_EXPORT PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD; + +GLEW_FUN_EXPORT PFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD; + +GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; +GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; + +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE; +GLEW_FUN_EXPORT PFNGLENDQUERYANGLEPROC __glewEndQueryANGLE; +GLEW_FUN_EXPORT PFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE; +GLEW_FUN_EXPORT PFNGLISQUERYANGLEPROC __glewIsQueryANGLE; +GLEW_FUN_EXPORT PFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE; + +GLEW_FUN_EXPORT PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; +GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; +GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; +GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; + +GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; + +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; +GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; +GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; +GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; +GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; + +GLEW_FUN_EXPORT PFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance; + +GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB; +GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB; +GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB; +GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB; +GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; +GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; + +GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEPROC __glewBufferStorage; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT; + +GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; + +GLEW_FUN_EXPORT PFNGLCLEARBUFFERDATAPROC __glewClearBufferData; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT; + +GLEW_FUN_EXPORT PFNGLCLEARTEXIMAGEPROC __glewClearTexImage; +GLEW_FUN_EXPORT PFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage; + +GLEW_FUN_EXPORT PFNGLCLIPCONTROLPROC __glewClipControl; + +GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; + +GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute; +GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect; + +GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB; + +GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; + +GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; + +GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit; +GLEW_FUN_EXPORT PFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer; +GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D; +GLEW_FUN_EXPORT PFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D; +GLEW_FUN_EXPORT PFNGLCREATEBUFFERSPROC __glewCreateBuffers; +GLEW_FUN_EXPORT PFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines; +GLEW_FUN_EXPORT PFNGLCREATEQUERIESPROC __glewCreateQueries; +GLEW_FUN_EXPORT PFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers; +GLEW_FUN_EXPORT PFNGLCREATESAMPLERSPROC __glewCreateSamplers; +GLEW_FUN_EXPORT PFNGLCREATETEXTURESPROC __glewCreateTextures; +GLEW_FUN_EXPORT PFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange; +GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv; +GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData; +GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERPROC __glewTextureBuffer; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange; +GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; + +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage; +GLEW_FUN_EXPORT PFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; +GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; +GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; +GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; +GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; +GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; +GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; +GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; +GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; +GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; +GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; +GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v; + +GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData; +GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData; +GLEW_FUN_EXPORT PFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer; +GLEW_FUN_EXPORT PFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer; +GLEW_FUN_EXPORT PFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage; +GLEW_FUN_EXPORT PFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage; + +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; +GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; + +GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase; +GLEW_FUN_EXPORT PFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange; +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures; +GLEW_FUN_EXPORT PFNGLBINDSAMPLERSPROC __glewBindSamplers; +GLEW_FUN_EXPORT PFNGLBINDTEXTURESPROC __glewBindTextures; +GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect; + +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; +GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; +GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; +GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; + +GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB; +GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; +GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; +GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; +GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; +GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; +GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; +GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; +GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; +GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; + +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; + +GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; +GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; +GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; +GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; + +GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; +GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; + +GLEW_FUN_EXPORT PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIERPROC __glewMemoryBarrier; + +GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; +GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; +GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; +GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; +GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; +GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; +GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; + +GLEW_FUN_EXPORT PFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding; + +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; +GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; + +GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; +GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; +GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; +GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; + +GLEW_FUN_EXPORT PFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB; + +GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB; +GLEW_FUN_EXPORT PFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT; + +GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; +GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; +GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; +GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; +GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; +GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; +GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; + +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; + +GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERPROC __glewTextureBarrier; + +GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; + +GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT; + +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DPROC __glewTexStorage1D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DPROC __glewTexStorage2D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DPROC __glewTexStorage3D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT; + +GLEW_FUN_EXPORT PFNGLTEXTUREVIEWPROC __glewTextureView; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; +GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; +GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; +GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; + +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced; + +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; +GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; +GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; +GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; +GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat; +GLEW_FUN_EXPORT PFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor; + +GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; +GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; +GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; +GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; +GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; +GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; + +GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; +GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; + +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; + +GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; +GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; +GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; +GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; +GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; + +GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; +GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; +GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; + +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; + +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; +GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; +GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; +GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; + +GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; + +GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI; +GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI; + +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; + +GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; +GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; +GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; +GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; +GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; + +GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; + +GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; +GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; + +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; + +GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; + +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; +GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT; +GLEW_FUN_EXPORT PFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT; + +GLEW_FUN_EXPORT PFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT; +GLEW_FUN_EXPORT PFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT; +GLEW_FUN_EXPORT PFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT; + +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; + +GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; +GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; +GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; +GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; + +GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; +GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; + +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; + +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; +GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; +GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; +GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; + +GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; + +GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; + +GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; +GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; + +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; + +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; + +GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV; +GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV; +GLEW_FUN_EXPORT PFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV; +GLEW_FUN_EXPORT PFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT; + +GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; +GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; + +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; + +GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; +GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; + +GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; + +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; + +GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; + +GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; +GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; + +GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; +GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; +GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; +GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; +GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; + +GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; + +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; + +GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; +GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; +GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; +GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; +GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; + +GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; +GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; +GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; +GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; +GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; +GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; +GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; +GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; +GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; +GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; +GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; +GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; + +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; + +GLEW_FUN_EXPORT PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT; + +GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; + +GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; + +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; + +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; + +GLEW_FUN_EXPORT PFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL; +GLEW_FUN_EXPORT PFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL; +GLEW_FUN_EXPORT PFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; + +GLEW_FUN_EXPORT PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL; +GLEW_FUN_EXPORT PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL; + +GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; +GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; + +GLEW_FUN_EXPORT PFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog; +GLEW_FUN_EXPORT PFNGLGETOBJECTLABELPROC __glewGetObjectLabel; +GLEW_FUN_EXPORT PFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel; +GLEW_FUN_EXPORT PFNGLOBJECTLABELPROC __glewObjectLabel; +GLEW_FUN_EXPORT PFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel; +GLEW_FUN_EXPORT PFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup; +GLEW_FUN_EXPORT PFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup; + +GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVPROC __glewGetnUniformfv; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVPROC __glewGetnUniformiv; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv; +GLEW_FUN_EXPORT PFNGLREADNPIXELSPROC __glewReadnPixels; + +GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion; +GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion; +GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion; + +GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV; + +GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV; +GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV; +GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV; +GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV; +GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV; + +GLEW_FUN_EXPORT PFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV; +GLEW_FUN_EXPORT PFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; + +GLEW_FUN_EXPORT PFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV; + +GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; + +GLEW_FUN_EXPORT PFNGLDRAWTEXTURENVPROC __glewDrawTextureNV; + +GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; +GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; +GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; +GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; +GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; +GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; +GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; +GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; +GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; +GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; + +GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; +GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV; + +GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; +GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; + +GLEW_FUN_EXPORT PFNGLCOPYPATHNVPROC __glewCopyPathNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV; +GLEW_FUN_EXPORT PFNGLDELETEPATHSNVPROC __glewDeletePathsNV; +GLEW_FUN_EXPORT PFNGLGENPATHSNVPROC __glewGenPathsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV; +GLEW_FUN_EXPORT PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV; +GLEW_FUN_EXPORT PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV; +GLEW_FUN_EXPORT PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV; +GLEW_FUN_EXPORT PFNGLISPATHNVPROC __glewIsPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV; +GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV; +GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV; +GLEW_FUN_EXPORT PFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV; +GLEW_FUN_EXPORT PFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV; +GLEW_FUN_EXPORT PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV; +GLEW_FUN_EXPORT PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHCOORDSNVPROC __glewPathCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV; +GLEW_FUN_EXPORT PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLPATHFOGGENNVPROC __glewPathFogGenNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV; +GLEW_FUN_EXPORT PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV; +GLEW_FUN_EXPORT PFNGLPATHSTRINGNVPROC __glewPathStringNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHTEXGENNVPROC __glewPathTexGenNV; +GLEW_FUN_EXPORT PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV; +GLEW_FUN_EXPORT PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV; + +GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; +GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; + +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; +GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; +GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV; + +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; +GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; + +GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV; + +GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; +GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; + +GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; +GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; +GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; +GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; + +GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; +GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; +GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; +GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; +GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; +GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; + +GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; +GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; +GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; +GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; +GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; +GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; +GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; + +GLEW_FUN_EXPORT PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV; +GLEW_FUN_EXPORT PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; +GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; +GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; +GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; + +GLEW_FUN_EXPORT PFNGLALPHAFUNCXPROC __glewAlphaFuncx; +GLEW_FUN_EXPORT PFNGLCLEARCOLORXPROC __glewClearColorx; +GLEW_FUN_EXPORT PFNGLCLEARDEPTHXPROC __glewClearDepthx; +GLEW_FUN_EXPORT PFNGLCOLOR4XPROC __glewColor4x; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEXPROC __glewDepthRangex; +GLEW_FUN_EXPORT PFNGLFOGXPROC __glewFogx; +GLEW_FUN_EXPORT PFNGLFOGXVPROC __glewFogxv; +GLEW_FUN_EXPORT PFNGLFRUSTUMFPROC __glewFrustumf; +GLEW_FUN_EXPORT PFNGLFRUSTUMXPROC __glewFrustumx; +GLEW_FUN_EXPORT PFNGLLIGHTMODELXPROC __glewLightModelx; +GLEW_FUN_EXPORT PFNGLLIGHTMODELXVPROC __glewLightModelxv; +GLEW_FUN_EXPORT PFNGLLIGHTXPROC __glewLightx; +GLEW_FUN_EXPORT PFNGLLIGHTXVPROC __glewLightxv; +GLEW_FUN_EXPORT PFNGLLINEWIDTHXPROC __glewLineWidthx; +GLEW_FUN_EXPORT PFNGLLOADMATRIXXPROC __glewLoadMatrixx; +GLEW_FUN_EXPORT PFNGLMATERIALXPROC __glewMaterialx; +GLEW_FUN_EXPORT PFNGLMATERIALXVPROC __glewMaterialxv; +GLEW_FUN_EXPORT PFNGLMULTMATRIXXPROC __glewMultMatrixx; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x; +GLEW_FUN_EXPORT PFNGLNORMAL3XPROC __glewNormal3x; +GLEW_FUN_EXPORT PFNGLORTHOFPROC __glewOrthof; +GLEW_FUN_EXPORT PFNGLORTHOXPROC __glewOrthox; +GLEW_FUN_EXPORT PFNGLPOINTSIZEXPROC __glewPointSizex; +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx; +GLEW_FUN_EXPORT PFNGLROTATEXPROC __glewRotatex; +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex; +GLEW_FUN_EXPORT PFNGLSCALEXPROC __glewScalex; +GLEW_FUN_EXPORT PFNGLTEXENVXPROC __glewTexEnvx; +GLEW_FUN_EXPORT PFNGLTEXENVXVPROC __glewTexEnvxv; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERXPROC __glewTexParameterx; +GLEW_FUN_EXPORT PFNGLTRANSLATEXPROC __glewTranslatex; + +GLEW_FUN_EXPORT PFNGLCLIPPLANEFPROC __glewClipPlanef; +GLEW_FUN_EXPORT PFNGLCLIPPLANEXPROC __glewClipPlanex; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFPROC __glewGetClipPlanef; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEXPROC __glewGetClipPlanex; +GLEW_FUN_EXPORT PFNGLGETFIXEDVPROC __glewGetFixedv; +GLEW_FUN_EXPORT PFNGLGETLIGHTXVPROC __glewGetLightxv; +GLEW_FUN_EXPORT PFNGLGETMATERIALXVPROC __glewGetMaterialxv; +GLEW_FUN_EXPORT PFNGLGETTEXENVXVPROC __glewGetTexEnvxv; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXPROC __glewPointParameterx; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXVPROC __glewPointParameterxv; +GLEW_FUN_EXPORT PFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERXVPROC __glewTexParameterxv; + +GLEW_FUN_EXPORT PFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL; + +GLEW_FUN_EXPORT PFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL; +GLEW_FUN_EXPORT PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL; + +GLEW_FUN_EXPORT PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL; + +GLEW_FUN_EXPORT PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL; + +GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; + +GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; + +GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; +GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; + +GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; +GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; + +GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; + +GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; + +GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; + +GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; + +GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; + +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; + +GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; + +GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; + +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; + +GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; + +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; + +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; + +GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; + +#if defined(GLEW_MX) && !defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_4; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_5; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_blend_minmax_factor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gcn_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int64; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_interleaved_elements; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_occlusion_query_event; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_pinned_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_query_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sample_positions; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_atomic_counter_ops; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_value_export; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_trinary_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sparse_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_stencil_operation_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback4; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_layer; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_viewport_index; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_blit; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_instanced_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_pack_reverse_row_order; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_program_binary; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt1; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt3; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt5; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_usage; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_translated_shader_source; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_1_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_arrays_of_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_base_instance; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_bindless_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_buffer_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clip_control; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compressed_texture_pixel_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_variable_group_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conditional_render_inverted; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_image; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cull_distance; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_derivative_control; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_direct_state_access; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_enhanced_layouts; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_uniform_location; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_layer_viewport; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_no_attachments; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_texture_sub_image; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_indirect_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_invalidate_subdata; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_alignment; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_bind; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pipeline_statistics_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_program_interface_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_query_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robust_buffer_access_behavior; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_application_isolation; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_share_group_isolation; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cubemap_per_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_draw_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_group_vote; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_storage_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_image_samples; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_420pack; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_packing; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_stencil_texturing; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_barrier; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirror_clamp_to_edge; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_levels; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_stencil8; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_view; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_overflow_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_binding; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_label; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_post_depth_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_raster_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_formatted; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_integer_mix; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sparse_texture2; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_decode; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_x11_sync_object; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_fragment_shader_ordering; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_map_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_performance_query; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced_coherent; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_context_flush_control; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_debug; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robust_buffer_access_behavior; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robustness; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_hdr; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_ldr; +GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; +GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NVX_conditional_render; +GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect_count; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced_coherent; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_compute_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_deep_texture3D; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fill_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_coverage_to_color; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_shader_interlock; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_mixed_samples; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader_passthrough; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5_mem_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_internalformat_sample_query; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering_shared_edge; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_locations; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_mask_override_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_counters; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_fp16_vector; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_int64; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_storage_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_group; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_shuffle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_uniform_buffer_unified_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_video_capture; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_array2; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_0_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_1_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_enable; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_error_string; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_extension_query; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_log; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_proc_address; +GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; + +#ifdef GLEW_MX +}; /* GLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +/* error codes */ +#define GLEW_OK 0 +#define GLEW_NO_ERROR 0 +#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ +#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */ +#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */ + +/* string codes */ +#define GLEW_VERSION 1 +#define GLEW_VERSION_MAJOR 2 +#define GLEW_VERSION_MINOR 3 +#define GLEW_VERSION_MICRO 4 + +/* API */ +#ifdef GLEW_MX + +typedef struct GLEWContextStruct GLEWContext; +GLEWAPI GLenum GLEWAPIENTRY glewContextInit (GLEWContext *ctx); +GLEWAPI GLboolean GLEWAPIENTRY glewContextIsSupported (const GLEWContext *ctx, const char *name); + +#define glewInit() glewContextInit(glewGetContext()) +#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) +#ifdef _WIN32 +# define GLEW_GET_FUN(x) glewGetContext()->x +#else +# define GLEW_GET_FUN(x) x +#endif + +#else /* GLEW_MX */ + +GLEWAPI GLenum GLEWAPIENTRY glewInit (void); +GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name); +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLEW_GET_FUN(x) x + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean glewExperimental; +GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name); +GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error); +GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name); + +#ifdef __cplusplus +} +#endif + +#ifdef GLEW_APIENTRY_DEFINED +#undef GLEW_APIENTRY_DEFINED +#undef APIENTRY +#endif + +#ifdef GLEW_CALLBACK_DEFINED +#undef GLEW_CALLBACK_DEFINED +#undef CALLBACK +#endif + +#ifdef GLEW_WINGDIAPI_DEFINED +#undef GLEW_WINGDIAPI_DEFINED +#undef WINGDIAPI +#endif + +#undef GLAPI +/* #undef GLEWAPI */ + +#endif /* __glew_h__ */ diff --git a/lib/windows32/include/GL/glxew.h b/lib/windows32/include/GL/glxew.h new file mode 100644 index 0000000..ca6cf8f --- /dev/null +++ b/lib/windows32/include/GL/glxew.h @@ -0,0 +1,1771 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glxew_h__ +#define __glxew_h__ +#define __GLXEW_H__ + +#ifdef __glxext_h_ +#error glxext.h included before glxew.h +#endif + +#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__) +#error glx.h included before glxew.h +#endif + +#define __glxext_h_ + +#define GLX_H +#define __GLX_glx_h__ +#define __glx_h__ + +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xmd.h> +#include <GL/glew.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* ---------------------------- GLX_VERSION_1_0 --------------------------- */ + +#ifndef GLX_VERSION_1_0 +#define GLX_VERSION_1_0 1 + +#define GLX_USE_GL 1 +#define GLX_BUFFER_SIZE 2 +#define GLX_LEVEL 3 +#define GLX_RGBA 4 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_NO_EXTENSION 3 +#define GLX_BAD_VISUAL 4 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_ENUM 7 + +typedef XID GLXDrawable; +typedef XID GLXPixmap; +#ifdef __sun +typedef struct __glXContextRec *GLXContext; +#else +typedef struct __GLXcontextRec *GLXContext; +#endif + +typedef unsigned int GLXVideoDeviceNV; + +extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase); +extern Bool glXQueryVersion (Display *dpy, int *major, int *minor); +extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value); +extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList); +extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap); +extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix); +extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct); +extern void glXDestroyContext (Display *dpy, GLXContext ctx); +extern Bool glXIsDirect (Display *dpy, GLXContext ctx); +extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask); +extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx); +extern GLXContext glXGetCurrentContext (void); +extern GLXDrawable glXGetCurrentDrawable (void); +extern void glXWaitGL (void); +extern void glXWaitX (void); +extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable); +extern void glXUseXFont (Font font, int first, int count, int listBase); + +#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0) + +#endif /* GLX_VERSION_1_0 */ + +/* ---------------------------- GLX_VERSION_1_1 --------------------------- */ + +#ifndef GLX_VERSION_1_1 +#define GLX_VERSION_1_1 + +#define GLX_VENDOR 0x1 +#define GLX_VERSION 0x2 +#define GLX_EXTENSIONS 0x3 + +extern const char* glXQueryExtensionsString (Display *dpy, int screen); +extern const char* glXGetClientString (Display *dpy, int name); +extern const char* glXQueryServerString (Display *dpy, int screen, int name); + +#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1) + +#endif /* GLX_VERSION_1_1 */ + +/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */ + +#ifndef GLX_VERSION_1_2 +#define GLX_VERSION_1_2 1 + +typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void); + +#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay) + +#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2) + +#endif /* GLX_VERSION_1_2 */ + +/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */ + +#ifndef GLX_VERSION_1_3 +#define GLX_VERSION_1_3 1 + +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_DONT_CARE 0xFFFFFFFF + +typedef XID GLXFBConfigID; +typedef XID GLXPbuffer; +typedef XID GLXWindow; +typedef struct __GLXFBConfigRec *GLXFBConfig; + +typedef struct { + int event_type; + int draw_type; + unsigned long serial; + Bool send_event; + Display *display; + GLXDrawable drawable; + unsigned int buffer_mask; + unsigned int aux_buffer; + int x, y; + int width, height; + int count; +} GLXPbufferClobberEvent; +typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + long pad[24]; +} GLXEvent; + +typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); +typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); + +#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig) +#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext) +#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer) +#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap) +#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow) +#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer) +#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap) +#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow) +#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable) +#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib) +#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs) +#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent) +#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig) +#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent) +#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext) +#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable) +#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent) + +#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3) + +#endif /* GLX_VERSION_1_3 */ + +/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */ + +#ifndef GLX_VERSION_1_4 +#define GLX_VERSION_1_4 1 + +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLES 100001 + +extern void ( * glXGetProcAddress (const GLubyte *procName)) (void); + +#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4) + +#endif /* GLX_VERSION_1_4 */ + +/* -------------------------- GLX_3DFX_multisample ------------------------- */ + +#ifndef GLX_3DFX_multisample +#define GLX_3DFX_multisample 1 + +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 +#define GLX_SAMPLES_3DFX 0x8051 + +#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample) + +#endif /* GLX_3DFX_multisample */ + +/* ------------------------ GLX_AMD_gpu_association ------------------------ */ + +#ifndef GLX_AMD_gpu_association +#define GLX_AMD_gpu_association 1 + +#define GLX_GPU_VENDOR_AMD 0x1F00 +#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 +#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define GLX_GPU_RAM_AMD 0x21A3 +#define GLX_GPU_CLOCK_AMD 0x21A4 +#define GLX_GPU_NUM_PIPES_AMD 0x21A5 +#define GLX_GPU_NUM_SIMD_AMD 0x21A6 +#define GLX_GPU_NUM_RB_AMD 0x21A7 +#define GLX_GPU_NUM_SPI_AMD 0x21A8 + +typedef void ( * PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC) (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC) (unsigned int id, GLXContext share_list); +typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (unsigned int id, GLXContext share_context, const int* attribList); +typedef Bool ( * PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC) (GLXContext ctx); +typedef unsigned int ( * PFNGLXGETCONTEXTGPUIDAMDPROC) (GLXContext ctx); +typedef GLXContext ( * PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef unsigned int ( * PFNGLXGETGPUIDSAMDPROC) (unsigned int maxCount, unsigned int* ids); +typedef int ( * PFNGLXGETGPUINFOAMDPROC) (unsigned int id, int property, GLenum dataType, unsigned int size, void* data); +typedef Bool ( * PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (GLXContext ctx); + +#define glXBlitContextFramebufferAMD GLXEW_GET_FUN(__glewXBlitContextFramebufferAMD) +#define glXCreateAssociatedContextAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAMD) +#define glXCreateAssociatedContextAttribsAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAttribsAMD) +#define glXDeleteAssociatedContextAMD GLXEW_GET_FUN(__glewXDeleteAssociatedContextAMD) +#define glXGetContextGPUIDAMD GLXEW_GET_FUN(__glewXGetContextGPUIDAMD) +#define glXGetCurrentAssociatedContextAMD GLXEW_GET_FUN(__glewXGetCurrentAssociatedContextAMD) +#define glXGetGPUIDsAMD GLXEW_GET_FUN(__glewXGetGPUIDsAMD) +#define glXGetGPUInfoAMD GLXEW_GET_FUN(__glewXGetGPUInfoAMD) +#define glXMakeAssociatedContextCurrentAMD GLXEW_GET_FUN(__glewXMakeAssociatedContextCurrentAMD) + +#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association) + +#endif /* GLX_AMD_gpu_association */ + +/* --------------------- GLX_ARB_context_flush_control --------------------- */ + +#ifndef GLX_ARB_context_flush_control +#define GLX_ARB_context_flush_control 1 + +#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0x0000 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 + +#define GLXEW_ARB_context_flush_control GLXEW_GET_VAR(__GLXEW_ARB_context_flush_control) + +#endif /* GLX_ARB_context_flush_control */ + +/* ------------------------- GLX_ARB_create_context ------------------------ */ + +#ifndef GLX_ARB_create_context +#define GLX_ARB_create_context 1 + +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 + +typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); + +#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB) + +#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context) + +#endif /* GLX_ARB_create_context */ + +/* --------------------- GLX_ARB_create_context_profile -------------------- */ + +#ifndef GLX_ARB_create_context_profile +#define GLX_ARB_create_context_profile 1 + +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define GLXEW_ARB_create_context_profile GLXEW_GET_VAR(__GLXEW_ARB_create_context_profile) + +#endif /* GLX_ARB_create_context_profile */ + +/* ------------------- GLX_ARB_create_context_robustness ------------------- */ + +#ifndef GLX_ARB_create_context_robustness +#define GLX_ARB_create_context_robustness 1 + +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define GLXEW_ARB_create_context_robustness GLXEW_GET_VAR(__GLXEW_ARB_create_context_robustness) + +#endif /* GLX_ARB_create_context_robustness */ + +/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */ + +#ifndef GLX_ARB_fbconfig_float +#define GLX_ARB_fbconfig_float 1 + +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#define GLX_RGBA_FLOAT_TYPE 0x20B9 + +#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float) + +#endif /* GLX_ARB_fbconfig_float */ + +/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_ARB_framebuffer_sRGB +#define GLX_ARB_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 + +#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB) + +#endif /* GLX_ARB_framebuffer_sRGB */ + +/* ------------------------ GLX_ARB_get_proc_address ----------------------- */ + +#ifndef GLX_ARB_get_proc_address +#define GLX_ARB_get_proc_address 1 + +extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void); + +#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address) + +#endif /* GLX_ARB_get_proc_address */ + +/* -------------------------- GLX_ARB_multisample -------------------------- */ + +#ifndef GLX_ARB_multisample +#define GLX_ARB_multisample 1 + +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAMPLES_ARB 100001 + +#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample) + +#endif /* GLX_ARB_multisample */ + +/* ---------------- GLX_ARB_robustness_application_isolation --------------- */ + +#ifndef GLX_ARB_robustness_application_isolation +#define GLX_ARB_robustness_application_isolation 1 + +#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define GLXEW_ARB_robustness_application_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_application_isolation) + +#endif /* GLX_ARB_robustness_application_isolation */ + +/* ---------------- GLX_ARB_robustness_share_group_isolation --------------- */ + +#ifndef GLX_ARB_robustness_share_group_isolation +#define GLX_ARB_robustness_share_group_isolation 1 + +#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define GLXEW_ARB_robustness_share_group_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_share_group_isolation) + +#endif /* GLX_ARB_robustness_share_group_isolation */ + +/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */ + +#ifndef GLX_ARB_vertex_buffer_object +#define GLX_ARB_vertex_buffer_object 1 + +#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095 + +#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object) + +#endif /* GLX_ARB_vertex_buffer_object */ + +/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */ + +#ifndef GLX_ATI_pixel_format_float +#define GLX_ATI_pixel_format_float 1 + +#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100 + +#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float) + +#endif /* GLX_ATI_pixel_format_float */ + +/* ------------------------- GLX_ATI_render_texture ------------------------ */ + +#ifndef GLX_ATI_render_texture +#define GLX_ATI_render_texture 1 + +#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800 +#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801 +#define GLX_TEXTURE_FORMAT_ATI 0x9802 +#define GLX_TEXTURE_TARGET_ATI 0x9803 +#define GLX_MIPMAP_TEXTURE_ATI 0x9804 +#define GLX_TEXTURE_RGB_ATI 0x9805 +#define GLX_TEXTURE_RGBA_ATI 0x9806 +#define GLX_NO_TEXTURE_ATI 0x9807 +#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808 +#define GLX_TEXTURE_1D_ATI 0x9809 +#define GLX_TEXTURE_2D_ATI 0x980A +#define GLX_MIPMAP_LEVEL_ATI 0x980B +#define GLX_CUBE_MAP_FACE_ATI 0x980C +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810 +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811 +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812 +#define GLX_FRONT_LEFT_ATI 0x9813 +#define GLX_FRONT_RIGHT_ATI 0x9814 +#define GLX_BACK_LEFT_ATI 0x9815 +#define GLX_BACK_RIGHT_ATI 0x9816 +#define GLX_AUX0_ATI 0x9817 +#define GLX_AUX1_ATI 0x9818 +#define GLX_AUX2_ATI 0x9819 +#define GLX_AUX3_ATI 0x981A +#define GLX_AUX4_ATI 0x981B +#define GLX_AUX5_ATI 0x981C +#define GLX_AUX6_ATI 0x981D +#define GLX_AUX7_ATI 0x981E +#define GLX_AUX8_ATI 0x981F +#define GLX_AUX9_ATI 0x9820 +#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821 +#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822 + +typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); +typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); + +#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI) +#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI) +#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI) + +#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture) + +#endif /* GLX_ATI_render_texture */ + +/* --------------------------- GLX_EXT_buffer_age -------------------------- */ + +#ifndef GLX_EXT_buffer_age +#define GLX_EXT_buffer_age 1 + +#define GLX_BACK_BUFFER_AGE_EXT 0x20F4 + +#define GLXEW_EXT_buffer_age GLXEW_GET_VAR(__GLXEW_EXT_buffer_age) + +#endif /* GLX_EXT_buffer_age */ + +/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */ + +#ifndef GLX_EXT_create_context_es2_profile +#define GLX_EXT_create_context_es2_profile 1 + +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define GLXEW_EXT_create_context_es2_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es2_profile) + +#endif /* GLX_EXT_create_context_es2_profile */ + +/* ------------------- GLX_EXT_create_context_es_profile ------------------- */ + +#ifndef GLX_EXT_create_context_es_profile +#define GLX_EXT_create_context_es_profile 1 + +#define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 + +#define GLXEW_EXT_create_context_es_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es_profile) + +#endif /* GLX_EXT_create_context_es_profile */ + +/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */ + +#ifndef GLX_EXT_fbconfig_packed_float +#define GLX_EXT_fbconfig_packed_float 1 + +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 + +#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float) + +#endif /* GLX_EXT_fbconfig_packed_float */ + +/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_EXT_framebuffer_sRGB +#define GLX_EXT_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 + +#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB) + +#endif /* GLX_EXT_framebuffer_sRGB */ + +/* ------------------------- GLX_EXT_import_context ------------------------ */ + +#ifndef GLX_EXT_import_context +#define GLX_EXT_import_context 1 + +#define GLX_SHARE_CONTEXT_EXT 0x800A +#define GLX_VISUAL_ID_EXT 0x800B +#define GLX_SCREEN_EXT 0x800C + +typedef XID GLXContextID; + +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context); +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID); +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute,int *value); + +#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT) +#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT) +#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT) +#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT) + +#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context) + +#endif /* GLX_EXT_import_context */ + +/* -------------------------- GLX_EXT_scene_marker ------------------------- */ + +#ifndef GLX_EXT_scene_marker +#define GLX_EXT_scene_marker 1 + +#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker) + +#endif /* GLX_EXT_scene_marker */ + +/* -------------------------- GLX_EXT_stereo_tree -------------------------- */ + +#ifndef GLX_EXT_stereo_tree +#define GLX_EXT_stereo_tree 1 + +#define GLX_STEREO_NOTIFY_EXT 0x00000000 +#define GLX_STEREO_NOTIFY_MASK_EXT 0x00000001 +#define GLX_STEREO_TREE_EXT 0x20F5 + +#define GLXEW_EXT_stereo_tree GLXEW_GET_VAR(__GLXEW_EXT_stereo_tree) + +#endif /* GLX_EXT_stereo_tree */ + +/* -------------------------- GLX_EXT_swap_control ------------------------- */ + +#ifndef GLX_EXT_swap_control +#define GLX_EXT_swap_control 1 + +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 + +typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable, int interval); + +#define glXSwapIntervalEXT GLXEW_GET_FUN(__glewXSwapIntervalEXT) + +#define GLXEW_EXT_swap_control GLXEW_GET_VAR(__GLXEW_EXT_swap_control) + +#endif /* GLX_EXT_swap_control */ + +/* ----------------------- GLX_EXT_swap_control_tear ----------------------- */ + +#ifndef GLX_EXT_swap_control_tear +#define GLX_EXT_swap_control_tear 1 + +#define GLX_LATE_SWAPS_TEAR_EXT 0x20F3 + +#define GLXEW_EXT_swap_control_tear GLXEW_GET_VAR(__GLXEW_EXT_swap_control_tear) + +#endif /* GLX_EXT_swap_control_tear */ + +/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */ + +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_EXT_texture_from_pixmap 1 + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB + +typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer); + +#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT) +#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT) + +#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap) + +#endif /* GLX_EXT_texture_from_pixmap */ + +/* -------------------------- GLX_EXT_visual_info -------------------------- */ + +#ifndef GLX_EXT_visual_info +#define GLX_EXT_visual_info 1 + +#define GLX_X_VISUAL_TYPE_EXT 0x22 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 +#define GLX_NONE_EXT 0x8000 +#define GLX_TRUE_COLOR_EXT 0x8002 +#define GLX_DIRECT_COLOR_EXT 0x8003 +#define GLX_PSEUDO_COLOR_EXT 0x8004 +#define GLX_STATIC_COLOR_EXT 0x8005 +#define GLX_GRAY_SCALE_EXT 0x8006 +#define GLX_STATIC_GRAY_EXT 0x8007 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 + +#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info) + +#endif /* GLX_EXT_visual_info */ + +/* ------------------------- GLX_EXT_visual_rating ------------------------- */ + +#ifndef GLX_EXT_visual_rating +#define GLX_EXT_visual_rating 1 + +#define GLX_VISUAL_CAVEAT_EXT 0x20 +#define GLX_SLOW_VISUAL_EXT 0x8001 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D + +#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating) + +#endif /* GLX_EXT_visual_rating */ + +/* -------------------------- GLX_INTEL_swap_event ------------------------- */ + +#ifndef GLX_INTEL_swap_event +#define GLX_INTEL_swap_event 1 + +#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180 +#define GLX_COPY_COMPLETE_INTEL 0x8181 +#define GLX_FLIP_COMPLETE_INTEL 0x8182 +#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000 + +#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event) + +#endif /* GLX_INTEL_swap_event */ + +/* -------------------------- GLX_MESA_agp_offset -------------------------- */ + +#ifndef GLX_MESA_agp_offset +#define GLX_MESA_agp_offset 1 + +typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer); + +#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA) + +#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset) + +#endif /* GLX_MESA_agp_offset */ + +/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */ + +#ifndef GLX_MESA_copy_sub_buffer +#define GLX_MESA_copy_sub_buffer 1 + +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height); + +#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA) + +#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer) + +#endif /* GLX_MESA_copy_sub_buffer */ + +/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */ + +#ifndef GLX_MESA_pixmap_colormap +#define GLX_MESA_pixmap_colormap 1 + +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); + +#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA) + +#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap) + +#endif /* GLX_MESA_pixmap_colormap */ + +/* ------------------------ GLX_MESA_query_renderer ------------------------ */ + +#ifndef GLX_MESA_query_renderer +#define GLX_MESA_query_renderer 1 + +#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 +#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 +#define GLX_RENDERER_VERSION_MESA 0x8185 +#define GLX_RENDERER_ACCELERATED_MESA 0x8186 +#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187 +#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188 +#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189 +#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A +#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B +#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C +#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D +#define GLX_RENDERER_ID_MESA 0x818E + +typedef Bool ( * PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int* value); +typedef const char* ( * PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute); +typedef Bool ( * PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display* dpy, int screen, int renderer, int attribute, unsigned int *value); +typedef const char* ( * PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute); + +#define glXQueryCurrentRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererIntegerMESA) +#define glXQueryCurrentRendererStringMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererStringMESA) +#define glXQueryRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryRendererIntegerMESA) +#define glXQueryRendererStringMESA GLXEW_GET_FUN(__glewXQueryRendererStringMESA) + +#define GLXEW_MESA_query_renderer GLXEW_GET_VAR(__GLXEW_MESA_query_renderer) + +#endif /* GLX_MESA_query_renderer */ + +/* ------------------------ GLX_MESA_release_buffers ----------------------- */ + +#ifndef GLX_MESA_release_buffers +#define GLX_MESA_release_buffers 1 + +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable d); + +#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA) + +#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers) + +#endif /* GLX_MESA_release_buffers */ + +/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */ + +#ifndef GLX_MESA_set_3dfx_mode +#define GLX_MESA_set_3dfx_mode 1 + +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 + +typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode); + +#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA) + +#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode) + +#endif /* GLX_MESA_set_3dfx_mode */ + +/* ------------------------- GLX_MESA_swap_control ------------------------- */ + +#ifndef GLX_MESA_swap_control +#define GLX_MESA_swap_control 1 + +typedef int ( * PFNGLXGETSWAPINTERVALMESAPROC) (void); +typedef int ( * PFNGLXSWAPINTERVALMESAPROC) (unsigned int interval); + +#define glXGetSwapIntervalMESA GLXEW_GET_FUN(__glewXGetSwapIntervalMESA) +#define glXSwapIntervalMESA GLXEW_GET_FUN(__glewXSwapIntervalMESA) + +#define GLXEW_MESA_swap_control GLXEW_GET_VAR(__GLXEW_MESA_swap_control) + +#endif /* GLX_MESA_swap_control */ + +/* --------------------------- GLX_NV_copy_buffer -------------------------- */ + +#ifndef GLX_NV_copy_buffer +#define GLX_NV_copy_buffer 1 + +typedef void ( * PFNGLXCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void ( * PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + +#define glXCopyBufferSubDataNV GLXEW_GET_FUN(__glewXCopyBufferSubDataNV) +#define glXNamedCopyBufferSubDataNV GLXEW_GET_FUN(__glewXNamedCopyBufferSubDataNV) + +#define GLXEW_NV_copy_buffer GLXEW_GET_VAR(__GLXEW_NV_copy_buffer) + +#endif /* GLX_NV_copy_buffer */ + +/* --------------------------- GLX_NV_copy_image --------------------------- */ + +#ifndef GLX_NV_copy_image +#define GLX_NV_copy_image 1 + +typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define glXCopyImageSubDataNV GLXEW_GET_FUN(__glewXCopyImageSubDataNV) + +#define GLXEW_NV_copy_image GLXEW_GET_VAR(__GLXEW_NV_copy_image) + +#endif /* GLX_NV_copy_image */ + +/* ------------------------ GLX_NV_delay_before_swap ----------------------- */ + +#ifndef GLX_NV_delay_before_swap +#define GLX_NV_delay_before_swap 1 + +typedef Bool ( * PFNGLXDELAYBEFORESWAPNVPROC) (Display* dpy, GLXDrawable drawable, GLfloat seconds); + +#define glXDelayBeforeSwapNV GLXEW_GET_FUN(__glewXDelayBeforeSwapNV) + +#define GLXEW_NV_delay_before_swap GLXEW_GET_VAR(__GLXEW_NV_delay_before_swap) + +#endif /* GLX_NV_delay_before_swap */ + +/* -------------------------- GLX_NV_float_buffer -------------------------- */ + +#ifndef GLX_NV_float_buffer +#define GLX_NV_float_buffer 1 + +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 + +#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer) + +#endif /* GLX_NV_float_buffer */ + +/* ---------------------- GLX_NV_multisample_coverage ---------------------- */ + +#ifndef GLX_NV_multisample_coverage +#define GLX_NV_multisample_coverage 1 + +#define GLX_COLOR_SAMPLES_NV 0x20B3 +#define GLX_COVERAGE_SAMPLES_NV 100001 + +#define GLXEW_NV_multisample_coverage GLXEW_GET_VAR(__GLXEW_NV_multisample_coverage) + +#endif /* GLX_NV_multisample_coverage */ + +/* -------------------------- GLX_NV_present_video ------------------------- */ + +#ifndef GLX_NV_present_video +#define GLX_NV_present_video 1 + +#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 + +typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); +typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements); + +#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV) +#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV) + +#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video) + +#endif /* GLX_NV_present_video */ + +/* --------------------------- GLX_NV_swap_group --------------------------- */ + +#ifndef GLX_NV_swap_group +#define GLX_NV_swap_group 1 + +typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier); +typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group); +typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint *count); +typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); +typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); +typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen); + +#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV) +#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV) +#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV) +#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV) +#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV) +#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV) + +#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group) + +#endif /* GLX_NV_swap_group */ + +/* ----------------------- GLX_NV_vertex_array_range ----------------------- */ + +#ifndef GLX_NV_vertex_array_range +#define GLX_NV_vertex_array_range 1 + +typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer); + +#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV) +#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV) + +#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range) + +#endif /* GLX_NV_vertex_array_range */ + +/* -------------------------- GLX_NV_video_capture ------------------------- */ + +#ifndef GLX_NV_video_capture +#define GLX_NV_video_capture 1 + +#define GLX_DEVICE_ID_NV 0x20CD +#define GLX_UNIQUE_ID_NV 0x20CE +#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +typedef XID GLXVideoCaptureDeviceNV; + +typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); +typedef GLXVideoCaptureDeviceNV * ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display* dpy, int screen, int *nelements); +typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); +typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); +typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); + +#define glXBindVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXBindVideoCaptureDeviceNV) +#define glXEnumerateVideoCaptureDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoCaptureDevicesNV) +#define glXLockVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXLockVideoCaptureDeviceNV) +#define glXQueryVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXQueryVideoCaptureDeviceNV) +#define glXReleaseVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoCaptureDeviceNV) + +#define GLXEW_NV_video_capture GLXEW_GET_VAR(__GLXEW_NV_video_capture) + +#endif /* GLX_NV_video_capture */ + +/* ---------------------------- GLX_NV_video_out --------------------------- */ + +#ifndef GLX_NV_video_out +#define GLX_NV_video_out 1 + +#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 +#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 +#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 +#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 +#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 +#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA +#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB +#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC + +typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); +typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); +typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice); +typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf); +typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); + +#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV) +#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV) +#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV) +#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV) +#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV) +#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV) + +#define GLXEW_NV_video_out GLXEW_GET_VAR(__GLXEW_NV_video_out) + +#endif /* GLX_NV_video_out */ + +/* -------------------------- GLX_OML_swap_method -------------------------- */ + +#ifndef GLX_OML_swap_method +#define GLX_OML_swap_method 1 + +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 + +#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method) + +#endif /* GLX_OML_swap_method */ + +/* -------------------------- GLX_OML_sync_control ------------------------- */ + +#ifndef GLX_OML_sync_control +#define GLX_OML_sync_control 1 + +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator); +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc); + +#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML) +#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML) +#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML) +#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML) +#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML) + +#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control) + +#endif /* GLX_OML_sync_control */ + +/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */ + +#ifndef GLX_SGIS_blended_overlay +#define GLX_SGIS_blended_overlay 1 + +#define GLX_BLENDED_RGBA_SGIS 0x8025 + +#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay) + +#endif /* GLX_SGIS_blended_overlay */ + +/* -------------------------- GLX_SGIS_color_range ------------------------- */ + +#ifndef GLX_SGIS_color_range +#define GLX_SGIS_color_range 1 + +#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range) + +#endif /* GLX_SGIS_color_range */ + +/* -------------------------- GLX_SGIS_multisample ------------------------- */ + +#ifndef GLX_SGIS_multisample +#define GLX_SGIS_multisample 1 + +#define GLX_SAMPLE_BUFFERS_SGIS 100000 +#define GLX_SAMPLES_SGIS 100001 + +#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample) + +#endif /* GLX_SGIS_multisample */ + +/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */ + +#ifndef GLX_SGIS_shared_multisample +#define GLX_SGIS_shared_multisample 1 + +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 + +#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample) + +#endif /* GLX_SGIS_shared_multisample */ + +/* --------------------------- GLX_SGIX_fbconfig --------------------------- */ + +#ifndef GLX_SGIX_fbconfig +#define GLX_SGIX_fbconfig 1 + +#define GLX_RGBA_BIT_SGIX 0x00000001 +#define GLX_WINDOW_BIT_SGIX 0x00000001 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 +#define GLX_SCREEN_EXT 0x800C +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 +#define GLX_RENDER_TYPE_SGIX 0x8011 +#define GLX_X_RENDERABLE_SGIX 0x8012 +#define GLX_FBCONFIG_ID_SGIX 0x8013 +#define GLX_RGBA_TYPE_SGIX 0x8014 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 + +typedef XID GLXFBConfigIDSGIX; +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; + +typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, Pixmap pixmap); +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int *value); +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo *vis); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfig config); + +#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX) +#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX) +#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX) +#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX) +#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX) +#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX) + +#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig) + +#endif /* GLX_SGIX_fbconfig */ + +/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */ + +#ifndef GLX_SGIX_hyperpipe +#define GLX_SGIX_hyperpipe 1 + +#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 +#define GLX_PIPE_RECT_SGIX 0x00000001 +#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 +#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 +#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 +#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 +#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 +#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 +#define GLX_BAD_HYPERPIPE_SGIX 92 +#define GLX_HYPERPIPE_ID_SGIX 0x8030 + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int networkId; +} GLXHyperpipeNetworkSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int XOrigin; + int YOrigin; + int maxHeight; + int maxWidth; +} GLXPipeRectLimits; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int channel; + unsigned int participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int srcXOrigin; + int srcYOrigin; + int srcWidth; + int srcHeight; + int destXOrigin; + int destYOrigin; + int destWidth; + int destHeight; +} GLXPipeRect; + +typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); +typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); +typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); +typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); +typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); + +#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX) +#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX) +#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX) +#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX) +#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX) +#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX) +#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX) +#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX) + +#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe) + +#endif /* GLX_SGIX_hyperpipe */ + +/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */ + +#ifndef GLX_SGIX_pbuffer +#define GLX_SGIX_pbuffer 1 + +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 +#define GLX_PBUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B +#define GLX_LARGEST_PBUFFER_SGIX 0x801C +#define GLX_WIDTH_SGIX 0x801D +#define GLX_HEIGHT_SGIX 0x801E +#define GLX_EVENT_MASK_SGIX 0x801F +#define GLX_DAMAGED_SGIX 0x8020 +#define GLX_SAVED_SGIX 0x8021 +#define GLX_WINDOW_SGIX 0x8022 +#define GLX_PBUFFER_SGIX 0x8023 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 + +typedef XID GLXPbufferSGIX; +typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX; + +typedef GLXPbuffer ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfig config, unsigned int width, unsigned int height, int *attrib_list); +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long *mask); +typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask); + +#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX) +#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX) +#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX) +#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX) +#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX) + +#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer) + +#endif /* GLX_SGIX_pbuffer */ + +/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */ + +#ifndef GLX_SGIX_swap_barrier +#define GLX_SGIX_swap_barrier 1 + +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); + +#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX) +#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX) + +#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier) + +#endif /* GLX_SGIX_swap_barrier */ + +/* -------------------------- GLX_SGIX_swap_group -------------------------- */ + +#ifndef GLX_SGIX_swap_group +#define GLX_SGIX_swap_group 1 + +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); + +#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX) + +#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group) + +#endif /* GLX_SGIX_swap_group */ + +/* ------------------------- GLX_SGIX_video_resize ------------------------- */ + +#ifndef GLX_SGIX_video_resize +#define GLX_SGIX_video_resize 1 + +#define GLX_SYNC_FRAME_SGIX 0x00000000 +#define GLX_SYNC_SWAP_SGIX 0x00000001 + +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window); +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h); +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype); +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int *x, int *y, int *w, int *h); +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); + +#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX) +#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX) +#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX) +#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX) +#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX) + +#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize) + +#endif /* GLX_SGIX_video_resize */ + +/* ---------------------- GLX_SGIX_visual_select_group --------------------- */ + +#ifndef GLX_SGIX_visual_select_group +#define GLX_SGIX_visual_select_group 1 + +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 + +#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group) + +#endif /* GLX_SGIX_visual_select_group */ + +/* ---------------------------- GLX_SGI_cushion ---------------------------- */ + +#ifndef GLX_SGI_cushion +#define GLX_SGI_cushion 1 + +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion); + +#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI) + +#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion) + +#endif /* GLX_SGI_cushion */ + +/* ----------------------- GLX_SGI_make_current_read ----------------------- */ + +#ifndef GLX_SGI_make_current_read +#define GLX_SGI_make_current_read 1 + +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); + +#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI) +#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI) + +#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read) + +#endif /* GLX_SGI_make_current_read */ + +/* -------------------------- GLX_SGI_swap_control ------------------------- */ + +#ifndef GLX_SGI_swap_control +#define GLX_SGI_swap_control 1 + +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); + +#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI) + +#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control) + +#endif /* GLX_SGI_swap_control */ + +/* --------------------------- GLX_SGI_video_sync -------------------------- */ + +#ifndef GLX_SGI_video_sync +#define GLX_SGI_video_sync 1 + +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int* count); +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count); + +#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI) +#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI) + +#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync) + +#endif /* GLX_SGI_video_sync */ + +/* --------------------- GLX_SUN_get_transparent_index --------------------- */ + +#ifndef GLX_SUN_get_transparent_index +#define GLX_SUN_get_transparent_index 1 + +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long *pTransparentIndex); + +#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN) + +#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index) + +#endif /* GLX_SUN_get_transparent_index */ + +/* -------------------------- GLX_SUN_video_resize ------------------------- */ + +#ifndef GLX_SUN_video_resize +#define GLX_SUN_video_resize 1 + +#define GLX_VIDEO_RESIZE_SUN 0x8171 +#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD + +typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor); +typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor); + +#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN) +#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN) + +#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize) + +#endif /* GLX_SUN_video_resize */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT +#define GLXEW_VAR_EXPORT +#else +#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT +#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT +#endif /* GLEW_MX */ + +GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay; + +GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig; +GLXEW_FUN_EXPORT PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext; +GLXEW_FUN_EXPORT PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer; +GLXEW_FUN_EXPORT PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap; +GLXEW_FUN_EXPORT PFNGLXCREATEWINDOWPROC __glewXCreateWindow; +GLXEW_FUN_EXPORT PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer; +GLXEW_FUN_EXPORT PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap; +GLXEW_FUN_EXPORT PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow; +GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs; +GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent; +GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig; +GLXEW_FUN_EXPORT PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent; +GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTPROC __glewXQueryContext; +GLXEW_FUN_EXPORT PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable; +GLXEW_FUN_EXPORT PFNGLXSELECTEVENTPROC __glewXSelectEvent; + +GLXEW_FUN_EXPORT PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD; +GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD; +GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD; +GLXEW_FUN_EXPORT PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD; +GLXEW_FUN_EXPORT PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD; +GLXEW_FUN_EXPORT PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD; +GLXEW_FUN_EXPORT PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD; +GLXEW_FUN_EXPORT PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD; +GLXEW_FUN_EXPORT PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD; + +GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB; + +GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI; +GLXEW_FUN_EXPORT PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI; +GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI; + +GLXEW_FUN_EXPORT PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT; +GLXEW_FUN_EXPORT PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT; +GLXEW_FUN_EXPORT PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT; +GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT; + +GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT; + +GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT; +GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT; + +GLXEW_FUN_EXPORT PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA; + +GLXEW_FUN_EXPORT PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA; + +GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA; + +GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA; + +GLXEW_FUN_EXPORT PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA; + +GLXEW_FUN_EXPORT PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA; + +GLXEW_FUN_EXPORT PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA; +GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA; + +GLXEW_FUN_EXPORT PFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV; +GLXEW_FUN_EXPORT PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV; + +GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV; + +GLXEW_FUN_EXPORT PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV; + +GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV; +GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV; + +GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV; +GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV; +GLXEW_FUN_EXPORT PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV; +GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV; +GLXEW_FUN_EXPORT PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV; +GLXEW_FUN_EXPORT PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV; + +GLXEW_FUN_EXPORT PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV; +GLXEW_FUN_EXPORT PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV; + +GLXEW_FUN_EXPORT PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV; +GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV; +GLXEW_FUN_EXPORT PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV; +GLXEW_FUN_EXPORT PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV; +GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV; + +GLXEW_FUN_EXPORT PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV; +GLXEW_FUN_EXPORT PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV; +GLXEW_FUN_EXPORT PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV; +GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV; +GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV; +GLXEW_FUN_EXPORT PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV; + +GLXEW_FUN_EXPORT PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML; +GLXEW_FUN_EXPORT PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML; +GLXEW_FUN_EXPORT PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML; +GLXEW_FUN_EXPORT PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML; +GLXEW_FUN_EXPORT PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML; + +GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX; +GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX; + +GLXEW_FUN_EXPORT PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX; +GLXEW_FUN_EXPORT PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX; + +GLXEW_FUN_EXPORT PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX; +GLXEW_FUN_EXPORT PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX; +GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX; +GLXEW_FUN_EXPORT PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX; + +GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX; + +GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX; + +GLXEW_FUN_EXPORT PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX; +GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX; +GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX; + +GLXEW_FUN_EXPORT PFNGLXCUSHIONSGIPROC __glewXCushionSGI; + +GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI; +GLXEW_FUN_EXPORT PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI; + +GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI; + +GLXEW_FUN_EXPORT PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI; +GLXEW_FUN_EXPORT PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI; + +GLXEW_FUN_EXPORT PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN; + +GLXEW_FUN_EXPORT PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN; +GLXEW_FUN_EXPORT PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN; + +#if defined(GLEW_MX) +struct GLXEWContextStruct +{ +#endif /* GLEW_MX */ + +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_0; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_1; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_3; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_4; +GLXEW_VAR_EXPORT GLboolean __GLXEW_3DFX_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_AMD_gpu_association; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_context_flush_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_profile; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_robustness; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_fbconfig_float; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_get_proc_address; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_application_isolation; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_share_group_isolation; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_pixel_format_float; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_render_texture; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_buffer_age; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es_profile; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_import_context; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_scene_marker; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_stereo_tree; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control_tear; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_info; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_rating; +GLXEW_VAR_EXPORT GLboolean __GLXEW_INTEL_swap_event; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_agp_offset; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_query_renderer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_buffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_delay_before_swap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_swap_group; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_vertex_array_range; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_capture; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_out; +GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_swap_method; +GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_sync_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_blended_overlay; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_color_range; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_shared_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_fbconfig; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_hyperpipe; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_pbuffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_barrier; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_group; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_video_resize; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_visual_select_group; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_cushion; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_make_current_read; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_swap_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_video_sync; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_get_transparent_index; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_video_resize; + +#ifdef GLEW_MX +}; /* GLXEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------ */ + +#ifdef GLEW_MX + +typedef struct GLXEWContextStruct GLXEWContext; +GLEWAPI GLenum GLEWAPIENTRY glxewContextInit (GLXEWContext *ctx); +GLEWAPI GLboolean GLEWAPIENTRY glxewContextIsSupported (const GLXEWContext *ctx, const char *name); + +#define glxewInit() glxewContextInit(glxewGetContext()) +#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x) + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&(glxewGetContext()->x)) +#define GLXEW_GET_FUN(x) x + +#else /* GLEW_MX */ + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLXEW_GET_FUN(x) x + +GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name); + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name); + +#ifdef __cplusplus +} +#endif + +#endif /* __glxew_h__ */ diff --git a/lib/windows32/include/GL/wglew.h b/lib/windows32/include/GL/wglew.h new file mode 100644 index 0000000..650b34c --- /dev/null +++ b/lib/windows32/include/GL/wglew.h @@ -0,0 +1,1452 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* +** 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. +*/ + +#ifndef __wglew_h__ +#define __wglew_h__ +#define __WGLEW_H__ + +#ifdef __wglext_h_ +#error wglext.h included before wglew.h +#endif + +#define __wglext_h_ + +#if !defined(WINAPI) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN 1 +# endif +#include <windows.h> +# undef WIN32_LEAN_AND_MEAN +#endif + +/* + * GLEW_STATIC needs to be set when using the static version. + * GLEW_BUILD is set when building the DLL version. + */ +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* -------------------------- WGL_3DFX_multisample ------------------------- */ + +#ifndef WGL_3DFX_multisample +#define WGL_3DFX_multisample 1 + +#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 +#define WGL_SAMPLES_3DFX 0x2061 + +#define WGLEW_3DFX_multisample WGLEW_GET_VAR(__WGLEW_3DFX_multisample) + +#endif /* WGL_3DFX_multisample */ + +/* ------------------------- WGL_3DL_stereo_control ------------------------ */ + +#ifndef WGL_3DL_stereo_control +#define WGL_3DL_stereo_control 1 + +#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 + +typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState); + +#define wglSetStereoEmitterState3DL WGLEW_GET_FUN(__wglewSetStereoEmitterState3DL) + +#define WGLEW_3DL_stereo_control WGLEW_GET_VAR(__WGLEW_3DL_stereo_control) + +#endif /* WGL_3DL_stereo_control */ + +/* ------------------------ WGL_AMD_gpu_association ------------------------ */ + +#ifndef WGL_AMD_gpu_association +#define WGL_AMD_gpu_association 1 + +#define WGL_GPU_VENDOR_AMD 0x1F00 +#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_RAM_AMD 0x21A3 +#define WGL_GPU_CLOCK_AMD 0x21A4 +#define WGL_GPU_NUM_PIPES_AMD 0x21A5 +#define WGL_GPU_NUM_SIMD_AMD 0x21A6 +#define WGL_GPU_NUM_RB_AMD 0x21A7 +#define WGL_GPU_NUM_SPI_AMD 0x21A8 + +typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int* attribList); +typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc); +typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc); +typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids); +typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data); +typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc); + +#define wglBlitContextFramebufferAMD WGLEW_GET_FUN(__wglewBlitContextFramebufferAMD) +#define wglCreateAssociatedContextAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAMD) +#define wglCreateAssociatedContextAttribsAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAttribsAMD) +#define wglDeleteAssociatedContextAMD WGLEW_GET_FUN(__wglewDeleteAssociatedContextAMD) +#define wglGetContextGPUIDAMD WGLEW_GET_FUN(__wglewGetContextGPUIDAMD) +#define wglGetCurrentAssociatedContextAMD WGLEW_GET_FUN(__wglewGetCurrentAssociatedContextAMD) +#define wglGetGPUIDsAMD WGLEW_GET_FUN(__wglewGetGPUIDsAMD) +#define wglGetGPUInfoAMD WGLEW_GET_FUN(__wglewGetGPUInfoAMD) +#define wglMakeAssociatedContextCurrentAMD WGLEW_GET_FUN(__wglewMakeAssociatedContextCurrentAMD) + +#define WGLEW_AMD_gpu_association WGLEW_GET_VAR(__WGLEW_AMD_gpu_association) + +#endif /* WGL_AMD_gpu_association */ + +/* ------------------------- WGL_ARB_buffer_region ------------------------- */ + +#ifndef WGL_ARB_buffer_region +#define WGL_ARB_buffer_region 1 + +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 +#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 +#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 + +typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType); +typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion); +typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); +typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height); + +#define wglCreateBufferRegionARB WGLEW_GET_FUN(__wglewCreateBufferRegionARB) +#define wglDeleteBufferRegionARB WGLEW_GET_FUN(__wglewDeleteBufferRegionARB) +#define wglRestoreBufferRegionARB WGLEW_GET_FUN(__wglewRestoreBufferRegionARB) +#define wglSaveBufferRegionARB WGLEW_GET_FUN(__wglewSaveBufferRegionARB) + +#define WGLEW_ARB_buffer_region WGLEW_GET_VAR(__WGLEW_ARB_buffer_region) + +#endif /* WGL_ARB_buffer_region */ + +/* --------------------- WGL_ARB_context_flush_control --------------------- */ + +#ifndef WGL_ARB_context_flush_control +#define WGL_ARB_context_flush_control 1 + +#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0x0000 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 + +#define WGLEW_ARB_context_flush_control WGLEW_GET_VAR(__WGLEW_ARB_context_flush_control) + +#endif /* WGL_ARB_context_flush_control */ + +/* ------------------------- WGL_ARB_create_context ------------------------ */ + +#ifndef WGL_ARB_create_context +#define WGL_ARB_create_context 1 + +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 + +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int* attribList); + +#define wglCreateContextAttribsARB WGLEW_GET_FUN(__wglewCreateContextAttribsARB) + +#define WGLEW_ARB_create_context WGLEW_GET_VAR(__WGLEW_ARB_create_context) + +#endif /* WGL_ARB_create_context */ + +/* --------------------- WGL_ARB_create_context_profile -------------------- */ + +#ifndef WGL_ARB_create_context_profile +#define WGL_ARB_create_context_profile 1 + +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define WGLEW_ARB_create_context_profile WGLEW_GET_VAR(__WGLEW_ARB_create_context_profile) + +#endif /* WGL_ARB_create_context_profile */ + +/* ------------------- WGL_ARB_create_context_robustness ------------------- */ + +#ifndef WGL_ARB_create_context_robustness +#define WGL_ARB_create_context_robustness 1 + +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define WGLEW_ARB_create_context_robustness WGLEW_GET_VAR(__WGLEW_ARB_create_context_robustness) + +#endif /* WGL_ARB_create_context_robustness */ + +/* ----------------------- WGL_ARB_extensions_string ----------------------- */ + +#ifndef WGL_ARB_extensions_string +#define WGL_ARB_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); + +#define wglGetExtensionsStringARB WGLEW_GET_FUN(__wglewGetExtensionsStringARB) + +#define WGLEW_ARB_extensions_string WGLEW_GET_VAR(__WGLEW_ARB_extensions_string) + +#endif /* WGL_ARB_extensions_string */ + +/* ------------------------ WGL_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_ARB_framebuffer_sRGB +#define WGL_ARB_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 + +#define WGLEW_ARB_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_ARB_framebuffer_sRGB) + +#endif /* WGL_ARB_framebuffer_sRGB */ + +/* ----------------------- WGL_ARB_make_current_read ----------------------- */ + +#ifndef WGL_ARB_make_current_read +#define WGL_ARB_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCARB WGLEW_GET_FUN(__wglewGetCurrentReadDCARB) +#define wglMakeContextCurrentARB WGLEW_GET_FUN(__wglewMakeContextCurrentARB) + +#define WGLEW_ARB_make_current_read WGLEW_GET_VAR(__WGLEW_ARB_make_current_read) + +#endif /* WGL_ARB_make_current_read */ + +/* -------------------------- WGL_ARB_multisample -------------------------- */ + +#ifndef WGL_ARB_multisample +#define WGL_ARB_multisample 1 + +#define WGL_SAMPLE_BUFFERS_ARB 0x2041 +#define WGL_SAMPLES_ARB 0x2042 + +#define WGLEW_ARB_multisample WGLEW_GET_VAR(__WGLEW_ARB_multisample) + +#endif /* WGL_ARB_multisample */ + +/* ---------------------------- WGL_ARB_pbuffer ---------------------------- */ + +#ifndef WGL_ARB_pbuffer +#define WGL_ARB_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_ARB 0x202D +#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 +#define WGL_PBUFFER_LARGEST_ARB 0x2033 +#define WGL_PBUFFER_WIDTH_ARB 0x2034 +#define WGL_PBUFFER_HEIGHT_ARB 0x2035 +#define WGL_PBUFFER_LOST_ARB 0x2036 + +DECLARE_HANDLE(HPBUFFERARB); + +typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC); + +#define wglCreatePbufferARB WGLEW_GET_FUN(__wglewCreatePbufferARB) +#define wglDestroyPbufferARB WGLEW_GET_FUN(__wglewDestroyPbufferARB) +#define wglGetPbufferDCARB WGLEW_GET_FUN(__wglewGetPbufferDCARB) +#define wglQueryPbufferARB WGLEW_GET_FUN(__wglewQueryPbufferARB) +#define wglReleasePbufferDCARB WGLEW_GET_FUN(__wglewReleasePbufferDCARB) + +#define WGLEW_ARB_pbuffer WGLEW_GET_VAR(__WGLEW_ARB_pbuffer) + +#endif /* WGL_ARB_pbuffer */ + +/* -------------------------- WGL_ARB_pixel_format ------------------------- */ + +#ifndef WGL_ARB_pixel_format +#define WGL_ARB_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_DRAW_TO_BITMAP_ARB 0x2002 +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_NEED_PALETTE_ARB 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 +#define WGL_SWAP_METHOD_ARB 0x2007 +#define WGL_NUMBER_OVERLAYS_ARB 0x2008 +#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 +#define WGL_TRANSPARENT_ARB 0x200A +#define WGL_SHARE_DEPTH_ARB 0x200C +#define WGL_SHARE_STENCIL_ARB 0x200D +#define WGL_SHARE_ACCUM_ARB 0x200E +#define WGL_SUPPORT_GDI_ARB 0x200F +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_STEREO_ARB 0x2012 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201A +#define WGL_ALPHA_BITS_ARB 0x201B +#define WGL_ALPHA_SHIFT_ARB 0x201C +#define WGL_ACCUM_BITS_ARB 0x201D +#define WGL_ACCUM_RED_BITS_ARB 0x201E +#define WGL_ACCUM_GREEN_BITS_ARB 0x201F +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_GENERIC_ACCELERATION_ARB 0x2026 +#define WGL_FULL_ACCELERATION_ARB 0x2027 +#define WGL_SWAP_EXCHANGE_ARB 0x2028 +#define WGL_SWAP_COPY_ARB 0x2029 +#define WGL_SWAP_UNDEFINED_ARB 0x202A +#define WGL_TYPE_RGBA_ARB 0x202B +#define WGL_TYPE_COLORINDEX_ARB 0x202C +#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int *piValues); + +#define wglChoosePixelFormatARB WGLEW_GET_FUN(__wglewChoosePixelFormatARB) +#define wglGetPixelFormatAttribfvARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvARB) +#define wglGetPixelFormatAttribivARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribivARB) + +#define WGLEW_ARB_pixel_format WGLEW_GET_VAR(__WGLEW_ARB_pixel_format) + +#endif /* WGL_ARB_pixel_format */ + +/* ----------------------- WGL_ARB_pixel_format_float ---------------------- */ + +#ifndef WGL_ARB_pixel_format_float +#define WGL_ARB_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 + +#define WGLEW_ARB_pixel_format_float WGLEW_GET_VAR(__WGLEW_ARB_pixel_format_float) + +#endif /* WGL_ARB_pixel_format_float */ + +/* ------------------------- WGL_ARB_render_texture ------------------------ */ + +#ifndef WGL_ARB_render_texture +#define WGL_ARB_render_texture 1 + +#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 +#define WGL_TEXTURE_FORMAT_ARB 0x2072 +#define WGL_TEXTURE_TARGET_ARB 0x2073 +#define WGL_MIPMAP_TEXTURE_ARB 0x2074 +#define WGL_TEXTURE_RGB_ARB 0x2075 +#define WGL_TEXTURE_RGBA_ARB 0x2076 +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 +#define WGL_TEXTURE_1D_ARB 0x2079 +#define WGL_TEXTURE_2D_ARB 0x207A +#define WGL_MIPMAP_LEVEL_ARB 0x207B +#define WGL_CUBE_MAP_FACE_ARB 0x207C +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_FRONT_LEFT_ARB 0x2083 +#define WGL_FRONT_RIGHT_ARB 0x2084 +#define WGL_BACK_LEFT_ARB 0x2085 +#define WGL_BACK_RIGHT_ARB 0x2086 +#define WGL_AUX0_ARB 0x2087 +#define WGL_AUX1_ARB 0x2088 +#define WGL_AUX2_ARB 0x2089 +#define WGL_AUX3_ARB 0x208A +#define WGL_AUX4_ARB 0x208B +#define WGL_AUX5_ARB 0x208C +#define WGL_AUX6_ARB 0x208D +#define WGL_AUX7_ARB 0x208E +#define WGL_AUX8_ARB 0x208F +#define WGL_AUX9_ARB 0x2090 + +typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int* piAttribList); + +#define wglBindTexImageARB WGLEW_GET_FUN(__wglewBindTexImageARB) +#define wglReleaseTexImageARB WGLEW_GET_FUN(__wglewReleaseTexImageARB) +#define wglSetPbufferAttribARB WGLEW_GET_FUN(__wglewSetPbufferAttribARB) + +#define WGLEW_ARB_render_texture WGLEW_GET_VAR(__WGLEW_ARB_render_texture) + +#endif /* WGL_ARB_render_texture */ + +/* ---------------- WGL_ARB_robustness_application_isolation --------------- */ + +#ifndef WGL_ARB_robustness_application_isolation +#define WGL_ARB_robustness_application_isolation 1 + +#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define WGLEW_ARB_robustness_application_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_application_isolation) + +#endif /* WGL_ARB_robustness_application_isolation */ + +/* ---------------- WGL_ARB_robustness_share_group_isolation --------------- */ + +#ifndef WGL_ARB_robustness_share_group_isolation +#define WGL_ARB_robustness_share_group_isolation 1 + +#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define WGLEW_ARB_robustness_share_group_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_share_group_isolation) + +#endif /* WGL_ARB_robustness_share_group_isolation */ + +/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */ + +#ifndef WGL_ATI_pixel_format_float +#define WGL_ATI_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 + +#define WGLEW_ATI_pixel_format_float WGLEW_GET_VAR(__WGLEW_ATI_pixel_format_float) + +#endif /* WGL_ATI_pixel_format_float */ + +/* -------------------- WGL_ATI_render_texture_rectangle ------------------- */ + +#ifndef WGL_ATI_render_texture_rectangle +#define WGL_ATI_render_texture_rectangle 1 + +#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 + +#define WGLEW_ATI_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_ATI_render_texture_rectangle) + +#endif /* WGL_ATI_render_texture_rectangle */ + +/* ------------------- WGL_EXT_create_context_es2_profile ------------------ */ + +#ifndef WGL_EXT_create_context_es2_profile +#define WGL_EXT_create_context_es2_profile 1 + +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define WGLEW_EXT_create_context_es2_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es2_profile) + +#endif /* WGL_EXT_create_context_es2_profile */ + +/* ------------------- WGL_EXT_create_context_es_profile ------------------- */ + +#ifndef WGL_EXT_create_context_es_profile +#define WGL_EXT_create_context_es_profile 1 + +#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 + +#define WGLEW_EXT_create_context_es_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es_profile) + +#endif /* WGL_EXT_create_context_es_profile */ + +/* -------------------------- WGL_EXT_depth_float -------------------------- */ + +#ifndef WGL_EXT_depth_float +#define WGL_EXT_depth_float 1 + +#define WGL_DEPTH_FLOAT_EXT 0x2040 + +#define WGLEW_EXT_depth_float WGLEW_GET_VAR(__WGLEW_EXT_depth_float) + +#endif /* WGL_EXT_depth_float */ + +/* ---------------------- WGL_EXT_display_color_table ---------------------- */ + +#ifndef WGL_EXT_display_color_table +#define WGL_EXT_display_color_table 1 + +typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef void (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (GLushort* table, GLuint length); + +#define wglBindDisplayColorTableEXT WGLEW_GET_FUN(__wglewBindDisplayColorTableEXT) +#define wglCreateDisplayColorTableEXT WGLEW_GET_FUN(__wglewCreateDisplayColorTableEXT) +#define wglDestroyDisplayColorTableEXT WGLEW_GET_FUN(__wglewDestroyDisplayColorTableEXT) +#define wglLoadDisplayColorTableEXT WGLEW_GET_FUN(__wglewLoadDisplayColorTableEXT) + +#define WGLEW_EXT_display_color_table WGLEW_GET_VAR(__WGLEW_EXT_display_color_table) + +#endif /* WGL_EXT_display_color_table */ + +/* ----------------------- WGL_EXT_extensions_string ----------------------- */ + +#ifndef WGL_EXT_extensions_string +#define WGL_EXT_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void); + +#define wglGetExtensionsStringEXT WGLEW_GET_FUN(__wglewGetExtensionsStringEXT) + +#define WGLEW_EXT_extensions_string WGLEW_GET_VAR(__WGLEW_EXT_extensions_string) + +#endif /* WGL_EXT_extensions_string */ + +/* ------------------------ WGL_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_EXT_framebuffer_sRGB +#define WGL_EXT_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 + +#define WGLEW_EXT_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_EXT_framebuffer_sRGB) + +#endif /* WGL_EXT_framebuffer_sRGB */ + +/* ----------------------- WGL_EXT_make_current_read ----------------------- */ + +#ifndef WGL_EXT_make_current_read +#define WGL_EXT_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCEXT WGLEW_GET_FUN(__wglewGetCurrentReadDCEXT) +#define wglMakeContextCurrentEXT WGLEW_GET_FUN(__wglewMakeContextCurrentEXT) + +#define WGLEW_EXT_make_current_read WGLEW_GET_VAR(__WGLEW_EXT_make_current_read) + +#endif /* WGL_EXT_make_current_read */ + +/* -------------------------- WGL_EXT_multisample -------------------------- */ + +#ifndef WGL_EXT_multisample +#define WGL_EXT_multisample 1 + +#define WGL_SAMPLE_BUFFERS_EXT 0x2041 +#define WGL_SAMPLES_EXT 0x2042 + +#define WGLEW_EXT_multisample WGLEW_GET_VAR(__WGLEW_EXT_multisample) + +#endif /* WGL_EXT_multisample */ + +/* ---------------------------- WGL_EXT_pbuffer ---------------------------- */ + +#ifndef WGL_EXT_pbuffer +#define WGL_EXT_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_EXT 0x202D +#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E +#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_PBUFFER_LARGEST_EXT 0x2033 +#define WGL_PBUFFER_WIDTH_EXT 0x2034 +#define WGL_PBUFFER_HEIGHT_EXT 0x2035 + +DECLARE_HANDLE(HPBUFFEREXT); + +typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC); + +#define wglCreatePbufferEXT WGLEW_GET_FUN(__wglewCreatePbufferEXT) +#define wglDestroyPbufferEXT WGLEW_GET_FUN(__wglewDestroyPbufferEXT) +#define wglGetPbufferDCEXT WGLEW_GET_FUN(__wglewGetPbufferDCEXT) +#define wglQueryPbufferEXT WGLEW_GET_FUN(__wglewQueryPbufferEXT) +#define wglReleasePbufferDCEXT WGLEW_GET_FUN(__wglewReleasePbufferDCEXT) + +#define WGLEW_EXT_pbuffer WGLEW_GET_VAR(__WGLEW_EXT_pbuffer) + +#endif /* WGL_EXT_pbuffer */ + +/* -------------------------- WGL_EXT_pixel_format ------------------------- */ + +#ifndef WGL_EXT_pixel_format +#define WGL_EXT_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 +#define WGL_DRAW_TO_WINDOW_EXT 0x2001 +#define WGL_DRAW_TO_BITMAP_EXT 0x2002 +#define WGL_ACCELERATION_EXT 0x2003 +#define WGL_NEED_PALETTE_EXT 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 +#define WGL_SWAP_METHOD_EXT 0x2007 +#define WGL_NUMBER_OVERLAYS_EXT 0x2008 +#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 +#define WGL_TRANSPARENT_EXT 0x200A +#define WGL_TRANSPARENT_VALUE_EXT 0x200B +#define WGL_SHARE_DEPTH_EXT 0x200C +#define WGL_SHARE_STENCIL_EXT 0x200D +#define WGL_SHARE_ACCUM_EXT 0x200E +#define WGL_SUPPORT_GDI_EXT 0x200F +#define WGL_SUPPORT_OPENGL_EXT 0x2010 +#define WGL_DOUBLE_BUFFER_EXT 0x2011 +#define WGL_STEREO_EXT 0x2012 +#define WGL_PIXEL_TYPE_EXT 0x2013 +#define WGL_COLOR_BITS_EXT 0x2014 +#define WGL_RED_BITS_EXT 0x2015 +#define WGL_RED_SHIFT_EXT 0x2016 +#define WGL_GREEN_BITS_EXT 0x2017 +#define WGL_GREEN_SHIFT_EXT 0x2018 +#define WGL_BLUE_BITS_EXT 0x2019 +#define WGL_BLUE_SHIFT_EXT 0x201A +#define WGL_ALPHA_BITS_EXT 0x201B +#define WGL_ALPHA_SHIFT_EXT 0x201C +#define WGL_ACCUM_BITS_EXT 0x201D +#define WGL_ACCUM_RED_BITS_EXT 0x201E +#define WGL_ACCUM_GREEN_BITS_EXT 0x201F +#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 +#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 +#define WGL_DEPTH_BITS_EXT 0x2022 +#define WGL_STENCIL_BITS_EXT 0x2023 +#define WGL_AUX_BUFFERS_EXT 0x2024 +#define WGL_NO_ACCELERATION_EXT 0x2025 +#define WGL_GENERIC_ACCELERATION_EXT 0x2026 +#define WGL_FULL_ACCELERATION_EXT 0x2027 +#define WGL_SWAP_EXCHANGE_EXT 0x2028 +#define WGL_SWAP_COPY_EXT 0x2029 +#define WGL_SWAP_UNDEFINED_EXT 0x202A +#define WGL_TYPE_RGBA_EXT 0x202B +#define WGL_TYPE_COLORINDEX_EXT 0x202C + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int *piValues); + +#define wglChoosePixelFormatEXT WGLEW_GET_FUN(__wglewChoosePixelFormatEXT) +#define wglGetPixelFormatAttribfvEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvEXT) +#define wglGetPixelFormatAttribivEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribivEXT) + +#define WGLEW_EXT_pixel_format WGLEW_GET_VAR(__WGLEW_EXT_pixel_format) + +#endif /* WGL_EXT_pixel_format */ + +/* ------------------- WGL_EXT_pixel_format_packed_float ------------------- */ + +#ifndef WGL_EXT_pixel_format_packed_float +#define WGL_EXT_pixel_format_packed_float 1 + +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 + +#define WGLEW_EXT_pixel_format_packed_float WGLEW_GET_VAR(__WGLEW_EXT_pixel_format_packed_float) + +#endif /* WGL_EXT_pixel_format_packed_float */ + +/* -------------------------- WGL_EXT_swap_control ------------------------- */ + +#ifndef WGL_EXT_swap_control +#define WGL_EXT_swap_control 1 + +typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void); +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval); + +#define wglGetSwapIntervalEXT WGLEW_GET_FUN(__wglewGetSwapIntervalEXT) +#define wglSwapIntervalEXT WGLEW_GET_FUN(__wglewSwapIntervalEXT) + +#define WGLEW_EXT_swap_control WGLEW_GET_VAR(__WGLEW_EXT_swap_control) + +#endif /* WGL_EXT_swap_control */ + +/* ----------------------- WGL_EXT_swap_control_tear ----------------------- */ + +#ifndef WGL_EXT_swap_control_tear +#define WGL_EXT_swap_control_tear 1 + +#define WGLEW_EXT_swap_control_tear WGLEW_GET_VAR(__WGLEW_EXT_swap_control_tear) + +#endif /* WGL_EXT_swap_control_tear */ + +/* --------------------- WGL_I3D_digital_video_control --------------------- */ + +#ifndef WGL_I3D_digital_video_control +#define WGL_I3D_digital_video_control 1 + +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 + +typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewGetDigitalVideoParametersI3D) +#define wglSetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewSetDigitalVideoParametersI3D) + +#define WGLEW_I3D_digital_video_control WGLEW_GET_VAR(__WGLEW_I3D_digital_video_control) + +#endif /* WGL_I3D_digital_video_control */ + +/* ----------------------------- WGL_I3D_gamma ----------------------------- */ + +#ifndef WGL_I3D_gamma +#define WGL_I3D_gamma 1 + +#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F + +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT* puRed, USHORT *puGreen, USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT* puRed, const USHORT *puGreen, const USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetGammaTableI3D WGLEW_GET_FUN(__wglewGetGammaTableI3D) +#define wglGetGammaTableParametersI3D WGLEW_GET_FUN(__wglewGetGammaTableParametersI3D) +#define wglSetGammaTableI3D WGLEW_GET_FUN(__wglewSetGammaTableI3D) +#define wglSetGammaTableParametersI3D WGLEW_GET_FUN(__wglewSetGammaTableParametersI3D) + +#define WGLEW_I3D_gamma WGLEW_GET_VAR(__WGLEW_I3D_gamma) + +#endif /* WGL_I3D_gamma */ + +/* ---------------------------- WGL_I3D_genlock ---------------------------- */ + +#ifndef WGL_I3D_genlock +#define WGL_I3D_genlock 1 + +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C + +typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT* uRate); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT* uDelay); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT* uEdge); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT* uSource); +typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT* uMaxLineDelay, UINT *uMaxPixelDelay); + +#define wglDisableGenlockI3D WGLEW_GET_FUN(__wglewDisableGenlockI3D) +#define wglEnableGenlockI3D WGLEW_GET_FUN(__wglewEnableGenlockI3D) +#define wglGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGenlockSampleRateI3D) +#define wglGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGenlockSourceDelayI3D) +#define wglGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGenlockSourceEdgeI3D) +#define wglGenlockSourceI3D WGLEW_GET_FUN(__wglewGenlockSourceI3D) +#define wglGetGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGetGenlockSampleRateI3D) +#define wglGetGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGetGenlockSourceDelayI3D) +#define wglGetGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGetGenlockSourceEdgeI3D) +#define wglGetGenlockSourceI3D WGLEW_GET_FUN(__wglewGetGenlockSourceI3D) +#define wglIsEnabledGenlockI3D WGLEW_GET_FUN(__wglewIsEnabledGenlockI3D) +#define wglQueryGenlockMaxSourceDelayI3D WGLEW_GET_FUN(__wglewQueryGenlockMaxSourceDelayI3D) + +#define WGLEW_I3D_genlock WGLEW_GET_VAR(__WGLEW_I3D_genlock) + +#endif /* WGL_I3D_genlock */ + +/* -------------------------- WGL_I3D_image_buffer ------------------------- */ + +#ifndef WGL_I3D_image_buffer +#define WGL_I3D_image_buffer 1 + +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 + +typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, HANDLE* pEvent, LPVOID *pAddress, DWORD *pSize, UINT count); +typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags); +typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress); +typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, LPVOID* pAddress, UINT count); + +#define wglAssociateImageBufferEventsI3D WGLEW_GET_FUN(__wglewAssociateImageBufferEventsI3D) +#define wglCreateImageBufferI3D WGLEW_GET_FUN(__wglewCreateImageBufferI3D) +#define wglDestroyImageBufferI3D WGLEW_GET_FUN(__wglewDestroyImageBufferI3D) +#define wglReleaseImageBufferEventsI3D WGLEW_GET_FUN(__wglewReleaseImageBufferEventsI3D) + +#define WGLEW_I3D_image_buffer WGLEW_GET_VAR(__WGLEW_I3D_image_buffer) + +#endif /* WGL_I3D_image_buffer */ + +/* ------------------------ WGL_I3D_swap_frame_lock ------------------------ */ + +#ifndef WGL_I3D_swap_frame_lock +#define WGL_I3D_swap_frame_lock 1 + +typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL* pFlag); + +#define wglDisableFrameLockI3D WGLEW_GET_FUN(__wglewDisableFrameLockI3D) +#define wglEnableFrameLockI3D WGLEW_GET_FUN(__wglewEnableFrameLockI3D) +#define wglIsEnabledFrameLockI3D WGLEW_GET_FUN(__wglewIsEnabledFrameLockI3D) +#define wglQueryFrameLockMasterI3D WGLEW_GET_FUN(__wglewQueryFrameLockMasterI3D) + +#define WGLEW_I3D_swap_frame_lock WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_lock) + +#endif /* WGL_I3D_swap_frame_lock */ + +/* ------------------------ WGL_I3D_swap_frame_usage ----------------------- */ + +#ifndef WGL_I3D_swap_frame_usage +#define WGL_I3D_swap_frame_usage 1 + +typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float* pUsage); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD* pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage); + +#define wglBeginFrameTrackingI3D WGLEW_GET_FUN(__wglewBeginFrameTrackingI3D) +#define wglEndFrameTrackingI3D WGLEW_GET_FUN(__wglewEndFrameTrackingI3D) +#define wglGetFrameUsageI3D WGLEW_GET_FUN(__wglewGetFrameUsageI3D) +#define wglQueryFrameTrackingI3D WGLEW_GET_FUN(__wglewQueryFrameTrackingI3D) + +#define WGLEW_I3D_swap_frame_usage WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_usage) + +#endif /* WGL_I3D_swap_frame_usage */ + +/* --------------------------- WGL_NV_DX_interop --------------------------- */ + +#ifndef WGL_NV_DX_interop +#define WGL_NV_DX_interop 1 + +#define WGL_ACCESS_READ_ONLY_NV 0x0000 +#define WGL_ACCESS_READ_WRITE_NV 0x0001 +#define WGL_ACCESS_WRITE_DISCARD_NV 0x0002 + +typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice); +typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access); +typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice); +typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access); +typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void* dxObject, HANDLE shareHandle); +typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject); + +#define wglDXCloseDeviceNV WGLEW_GET_FUN(__wglewDXCloseDeviceNV) +#define wglDXLockObjectsNV WGLEW_GET_FUN(__wglewDXLockObjectsNV) +#define wglDXObjectAccessNV WGLEW_GET_FUN(__wglewDXObjectAccessNV) +#define wglDXOpenDeviceNV WGLEW_GET_FUN(__wglewDXOpenDeviceNV) +#define wglDXRegisterObjectNV WGLEW_GET_FUN(__wglewDXRegisterObjectNV) +#define wglDXSetResourceShareHandleNV WGLEW_GET_FUN(__wglewDXSetResourceShareHandleNV) +#define wglDXUnlockObjectsNV WGLEW_GET_FUN(__wglewDXUnlockObjectsNV) +#define wglDXUnregisterObjectNV WGLEW_GET_FUN(__wglewDXUnregisterObjectNV) + +#define WGLEW_NV_DX_interop WGLEW_GET_VAR(__WGLEW_NV_DX_interop) + +#endif /* WGL_NV_DX_interop */ + +/* --------------------------- WGL_NV_DX_interop2 -------------------------- */ + +#ifndef WGL_NV_DX_interop2 +#define WGL_NV_DX_interop2 1 + +#define WGLEW_NV_DX_interop2 WGLEW_GET_VAR(__WGLEW_NV_DX_interop2) + +#endif /* WGL_NV_DX_interop2 */ + +/* --------------------------- WGL_NV_copy_image --------------------------- */ + +#ifndef WGL_NV_copy_image +#define WGL_NV_copy_image 1 + +typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define wglCopyImageSubDataNV WGLEW_GET_FUN(__wglewCopyImageSubDataNV) + +#define WGLEW_NV_copy_image WGLEW_GET_VAR(__WGLEW_NV_copy_image) + +#endif /* WGL_NV_copy_image */ + +/* ------------------------ WGL_NV_delay_before_swap ----------------------- */ + +#ifndef WGL_NV_delay_before_swap +#define WGL_NV_delay_before_swap 1 + +typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds); + +#define wglDelayBeforeSwapNV WGLEW_GET_FUN(__wglewDelayBeforeSwapNV) + +#define WGLEW_NV_delay_before_swap WGLEW_GET_VAR(__WGLEW_NV_delay_before_swap) + +#endif /* WGL_NV_delay_before_swap */ + +/* -------------------------- WGL_NV_float_buffer -------------------------- */ + +#ifndef WGL_NV_float_buffer +#define WGL_NV_float_buffer 1 + +#define WGL_FLOAT_COMPONENTS_NV 0x20B0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 +#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 +#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 +#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 + +#define WGLEW_NV_float_buffer WGLEW_GET_VAR(__WGLEW_NV_float_buffer) + +#endif /* WGL_NV_float_buffer */ + +/* -------------------------- WGL_NV_gpu_affinity -------------------------- */ + +#ifndef WGL_NV_gpu_affinity +#define WGL_NV_gpu_affinity 1 + +#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 + +DECLARE_HANDLE(HGPUNV); +typedef struct _GPU_DEVICE { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD Flags; + RECT rcVirtualScreen; +} GPU_DEVICE, *PGPU_DEVICE; + +typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList); +typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc); +typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); +typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu); +typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu); + +#define wglCreateAffinityDCNV WGLEW_GET_FUN(__wglewCreateAffinityDCNV) +#define wglDeleteDCNV WGLEW_GET_FUN(__wglewDeleteDCNV) +#define wglEnumGpuDevicesNV WGLEW_GET_FUN(__wglewEnumGpuDevicesNV) +#define wglEnumGpusFromAffinityDCNV WGLEW_GET_FUN(__wglewEnumGpusFromAffinityDCNV) +#define wglEnumGpusNV WGLEW_GET_FUN(__wglewEnumGpusNV) + +#define WGLEW_NV_gpu_affinity WGLEW_GET_VAR(__WGLEW_NV_gpu_affinity) + +#endif /* WGL_NV_gpu_affinity */ + +/* ---------------------- WGL_NV_multisample_coverage ---------------------- */ + +#ifndef WGL_NV_multisample_coverage +#define WGL_NV_multisample_coverage 1 + +#define WGL_COVERAGE_SAMPLES_NV 0x2042 +#define WGL_COLOR_SAMPLES_NV 0x20B9 + +#define WGLEW_NV_multisample_coverage WGLEW_GET_VAR(__WGLEW_NV_multisample_coverage) + +#endif /* WGL_NV_multisample_coverage */ + +/* -------------------------- WGL_NV_present_video ------------------------- */ + +#ifndef WGL_NV_present_video +#define WGL_NV_present_video 1 + +#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 + +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList); +typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int* piValue); + +#define wglBindVideoDeviceNV WGLEW_GET_FUN(__wglewBindVideoDeviceNV) +#define wglEnumerateVideoDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoDevicesNV) +#define wglQueryCurrentContextNV WGLEW_GET_FUN(__wglewQueryCurrentContextNV) + +#define WGLEW_NV_present_video WGLEW_GET_VAR(__WGLEW_NV_present_video) + +#endif /* WGL_NV_present_video */ + +/* ---------------------- WGL_NV_render_depth_texture ---------------------- */ + +#ifndef WGL_NV_render_depth_texture +#define WGL_NV_render_depth_texture 1 + +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_DEPTH_COMPONENT_NV 0x20A7 + +#define WGLEW_NV_render_depth_texture WGLEW_GET_VAR(__WGLEW_NV_render_depth_texture) + +#endif /* WGL_NV_render_depth_texture */ + +/* -------------------- WGL_NV_render_texture_rectangle -------------------- */ + +#ifndef WGL_NV_render_texture_rectangle +#define WGL_NV_render_texture_rectangle 1 + +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 + +#define WGLEW_NV_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_NV_render_texture_rectangle) + +#endif /* WGL_NV_render_texture_rectangle */ + +/* --------------------------- WGL_NV_swap_group --------------------------- */ + +#ifndef WGL_NV_swap_group +#define WGL_NV_swap_group 1 + +typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier); +typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint* count); +typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint* maxGroups, GLuint *maxBarriers); +typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint* group, GLuint *barrier); +typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC); + +#define wglBindSwapBarrierNV WGLEW_GET_FUN(__wglewBindSwapBarrierNV) +#define wglJoinSwapGroupNV WGLEW_GET_FUN(__wglewJoinSwapGroupNV) +#define wglQueryFrameCountNV WGLEW_GET_FUN(__wglewQueryFrameCountNV) +#define wglQueryMaxSwapGroupsNV WGLEW_GET_FUN(__wglewQueryMaxSwapGroupsNV) +#define wglQuerySwapGroupNV WGLEW_GET_FUN(__wglewQuerySwapGroupNV) +#define wglResetFrameCountNV WGLEW_GET_FUN(__wglewResetFrameCountNV) + +#define WGLEW_NV_swap_group WGLEW_GET_VAR(__WGLEW_NV_swap_group) + +#endif /* WGL_NV_swap_group */ + +/* ----------------------- WGL_NV_vertex_array_range ----------------------- */ + +#ifndef WGL_NV_vertex_array_range +#define WGL_NV_vertex_array_range 1 + +typedef void * (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer); + +#define wglAllocateMemoryNV WGLEW_GET_FUN(__wglewAllocateMemoryNV) +#define wglFreeMemoryNV WGLEW_GET_FUN(__wglewFreeMemoryNV) + +#define WGLEW_NV_vertex_array_range WGLEW_GET_VAR(__WGLEW_NV_vertex_array_range) + +#endif /* WGL_NV_vertex_array_range */ + +/* -------------------------- WGL_NV_video_capture ------------------------- */ + +#ifndef WGL_NV_video_capture +#define WGL_NV_video_capture 1 + +#define WGL_UNIQUE_ID_NV 0x20CE +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice); +typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); + +#define wglBindVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewBindVideoCaptureDeviceNV) +#define wglEnumerateVideoCaptureDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoCaptureDevicesNV) +#define wglLockVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewLockVideoCaptureDeviceNV) +#define wglQueryVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewQueryVideoCaptureDeviceNV) +#define wglReleaseVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoCaptureDeviceNV) + +#define WGLEW_NV_video_capture WGLEW_GET_VAR(__WGLEW_NV_video_capture) + +#endif /* WGL_NV_video_capture */ + +/* -------------------------- WGL_NV_video_output -------------------------- */ + +#ifndef WGL_NV_video_output +#define WGL_NV_video_output 1 + +#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 +#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 +#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 +#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_FRAME 0x20C8 +#define WGL_VIDEO_OUT_FIELD_1 0x20C9 +#define WGL_VIDEO_OUT_FIELD_2 0x20CA +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC + +DECLARE_HANDLE(HPVIDEODEV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice); +typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock); + +#define wglBindVideoImageNV WGLEW_GET_FUN(__wglewBindVideoImageNV) +#define wglGetVideoDeviceNV WGLEW_GET_FUN(__wglewGetVideoDeviceNV) +#define wglGetVideoInfoNV WGLEW_GET_FUN(__wglewGetVideoInfoNV) +#define wglReleaseVideoDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoDeviceNV) +#define wglReleaseVideoImageNV WGLEW_GET_FUN(__wglewReleaseVideoImageNV) +#define wglSendPbufferToVideoNV WGLEW_GET_FUN(__wglewSendPbufferToVideoNV) + +#define WGLEW_NV_video_output WGLEW_GET_VAR(__WGLEW_NV_video_output) + +#endif /* WGL_NV_video_output */ + +/* -------------------------- WGL_OML_sync_control ------------------------- */ + +#ifndef WGL_OML_sync_control +#define WGL_OML_sync_control 1 + +typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32* numerator, INT32 *denominator); +typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64* ust, INT64 *msc, INT64 *sbc); +typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64 *msc, INT64 *sbc); +typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64* ust, INT64 *msc, INT64 *sbc); + +#define wglGetMscRateOML WGLEW_GET_FUN(__wglewGetMscRateOML) +#define wglGetSyncValuesOML WGLEW_GET_FUN(__wglewGetSyncValuesOML) +#define wglSwapBuffersMscOML WGLEW_GET_FUN(__wglewSwapBuffersMscOML) +#define wglSwapLayerBuffersMscOML WGLEW_GET_FUN(__wglewSwapLayerBuffersMscOML) +#define wglWaitForMscOML WGLEW_GET_FUN(__wglewWaitForMscOML) +#define wglWaitForSbcOML WGLEW_GET_FUN(__wglewWaitForSbcOML) + +#define WGLEW_OML_sync_control WGLEW_GET_VAR(__WGLEW_OML_sync_control) + +#endif /* WGL_OML_sync_control */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define WGLEW_FUN_EXPORT +#define WGLEW_VAR_EXPORT +#else +#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT +#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT +#endif /* GLEW_MX */ + +#ifdef GLEW_MX +struct WGLEWContextStruct +{ +#endif /* GLEW_MX */ + +WGLEW_FUN_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL; + +WGLEW_FUN_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD; +WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD; +WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD; +WGLEW_FUN_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD; +WGLEW_FUN_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD; +WGLEW_FUN_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD; +WGLEW_FUN_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD; +WGLEW_FUN_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD; +WGLEW_FUN_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD; + +WGLEW_FUN_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB; +WGLEW_FUN_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB; +WGLEW_FUN_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB; +WGLEW_FUN_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB; + +WGLEW_FUN_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB; + +WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB; + +WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB; +WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB; + +WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB; +WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB; +WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB; +WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB; +WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB; + +WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB; + +WGLEW_FUN_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB; +WGLEW_FUN_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB; +WGLEW_FUN_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB; + +WGLEW_FUN_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT; +WGLEW_FUN_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT; +WGLEW_FUN_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT; +WGLEW_FUN_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT; + +WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT; + +WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT; +WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT; + +WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT; +WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT; +WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT; +WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT; +WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT; + +WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT; + +WGLEW_FUN_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT; +WGLEW_FUN_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT; + +WGLEW_FUN_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D; +WGLEW_FUN_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D; + +WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D; +WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D; +WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D; +WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D; + +WGLEW_FUN_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D; +WGLEW_FUN_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D; +WGLEW_FUN_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D; +WGLEW_FUN_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D; + +WGLEW_FUN_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D; +WGLEW_FUN_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D; +WGLEW_FUN_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D; +WGLEW_FUN_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D; + +WGLEW_FUN_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D; +WGLEW_FUN_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D; +WGLEW_FUN_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D; +WGLEW_FUN_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D; + +WGLEW_FUN_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D; +WGLEW_FUN_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D; +WGLEW_FUN_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D; +WGLEW_FUN_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D; + +WGLEW_FUN_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV; +WGLEW_FUN_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV; +WGLEW_FUN_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV; +WGLEW_FUN_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV; +WGLEW_FUN_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV; +WGLEW_FUN_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV; +WGLEW_FUN_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV; +WGLEW_FUN_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV; + +WGLEW_FUN_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV; + +WGLEW_FUN_EXPORT PFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV; + +WGLEW_FUN_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV; +WGLEW_FUN_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV; +WGLEW_FUN_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV; +WGLEW_FUN_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV; +WGLEW_FUN_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV; + +WGLEW_FUN_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV; +WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV; +WGLEW_FUN_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV; + +WGLEW_FUN_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV; +WGLEW_FUN_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV; +WGLEW_FUN_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV; +WGLEW_FUN_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV; +WGLEW_FUN_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV; +WGLEW_FUN_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV; + +WGLEW_FUN_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV; +WGLEW_FUN_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV; + +WGLEW_FUN_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV; +WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV; +WGLEW_FUN_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV; +WGLEW_FUN_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV; +WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV; + +WGLEW_FUN_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV; +WGLEW_FUN_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV; +WGLEW_FUN_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV; +WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV; +WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV; +WGLEW_FUN_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV; + +WGLEW_FUN_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML; +WGLEW_FUN_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML; +WGLEW_FUN_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML; +WGLEW_FUN_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML; +WGLEW_FUN_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML; +WGLEW_FUN_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML; +WGLEW_VAR_EXPORT GLboolean __WGLEW_3DFX_multisample; +WGLEW_VAR_EXPORT GLboolean __WGLEW_3DL_stereo_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_AMD_gpu_association; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_buffer_region; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_context_flush_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_profile; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_robustness; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_extensions_string; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_make_current_read; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_multisample; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pbuffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_render_texture; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_application_isolation; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_share_group_isolation; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_pixel_format_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es_profile; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_depth_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_display_color_table; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_extensions_string; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_make_current_read; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_multisample; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pbuffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control_tear; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_digital_video_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_gamma; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_genlock; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_image_buffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop2; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_copy_image; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_delay_before_swap; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_float_buffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_gpu_affinity; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multisample_coverage; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_present_video; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_depth_texture; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_swap_group; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_vertex_array_range; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_capture; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_output; +WGLEW_VAR_EXPORT GLboolean __WGLEW_OML_sync_control; + +#ifdef GLEW_MX +}; /* WGLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX + +typedef struct WGLEWContextStruct WGLEWContext; +GLEWAPI GLenum GLEWAPIENTRY wglewContextInit (WGLEWContext *ctx); +GLEWAPI GLboolean GLEWAPIENTRY wglewContextIsSupported (const WGLEWContext *ctx, const char *name); + +#define wglewInit() wglewContextInit(wglewGetContext()) +#define wglewIsSupported(x) wglewContextIsSupported(wglewGetContext(), x) + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&(wglewGetContext()->x)) +#define WGLEW_GET_FUN(x) wglewGetContext()->x + +#else /* GLEW_MX */ + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define WGLEW_GET_FUN(x) x + +GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name); + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name); + +#ifdef __cplusplus +} +#endif + +#undef GLEWAPI + +#endif /* __wglew_h__ */ diff --git a/lib/windows32/include/SDL.h b/lib/windows32/include/SDL.h new file mode 100644 index 0000000..9ba8f68 --- /dev/null +++ b/lib/windows32/include/SDL.h @@ -0,0 +1,233 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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 + +/* 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/lib/windows32/include/SDL_assert.h b/lib/windows32/include/SDL_assert.h new file mode 100644 index 0000000..87d5c1b --- /dev/null +++ b/lib/windows32/include/SDL_assert.h @@ -0,0 +1,320 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_atomic.h b/lib/windows32/include/SDL_atomic.h new file mode 100644 index 0000000..8273287 --- /dev/null +++ b/lib/windows32/include/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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__) || defined(__ARM_ARCH_5TE__) +#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 + +/* "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__) && __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 + + +/** + * \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/lib/windows32/include/SDL_audio.h b/lib/windows32/include/SDL_audio.h new file mode 100644 index 0000000..ccd3598 --- /dev/null +++ b/lib/windows32/include/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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); + +/** + * \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 + * \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 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_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); + +#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/lib/windows32/include/SDL_bits.h b/lib/windows32/include/SDL_bits.h new file mode 100644 index 0000000..81161ae --- /dev/null +++ b/lib/windows32/include/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_blendmode.h b/lib/windows32/include/SDL_blendmode.h new file mode 100644 index 0000000..4ecbe50 --- /dev/null +++ b/lib/windows32/include/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 = dstA */ + 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/lib/windows32/include/SDL_clipboard.h b/lib/windows32/include/SDL_clipboard.h new file mode 100644 index 0000000..7c351fb --- /dev/null +++ b/lib/windows32/include/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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); + +/** + * 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/lib/windows32/include/SDL_config.h b/lib/windows32/include/SDL_config.h new file mode 100644 index 0000000..01322c1 --- /dev/null +++ b/lib/windows32/include/SDL_config.h @@ -0,0 +1,331 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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(<winsdkver.h>) +#define HAVE_WINSDKVER_H 1 +#endif +#endif + +#ifdef HAVE_WINSDKVER_H +#include <winsdkver.h> +#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(<sdkddkver.h>) +#define HAVE_SDKDDKVER_H 1 +#endif +#endif + +#ifdef HAVE_SDKDDKVER_H +#include <sdkddkver.h> +#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(WDK_NTDDI_VERSION) && WDK_NTDDI_VERSION > 0x0A000008 /* 10.0.19041.0 */ +#define HAVE_D3D12_H 1 +#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(<immintrin.h>) +# 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/lib/windows32/include/SDL_cpuinfo.h b/lib/windows32/include/SDL_cpuinfo.h new file mode 100644 index 0000000..ed5e979 --- /dev/null +++ b/lib/windows32/include/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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__) || 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 <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(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include <lsxintrin.h> +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include <lasxintrin.h> +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#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); + +/** + * 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/lib/windows32/include/SDL_egl.h b/lib/windows32/include/SDL_egl.h new file mode 100644 index 0000000..6f51c08 --- /dev/null +++ b/lib/windows32/include/SDL_egl.h @@ -0,0 +1,2352 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_egl.h + * + * 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 <psp2/types.h> +#endif + +#include <EGL/egl.h> +#include <EGL/eglext.h> + +#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 <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; + */ + +#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 <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 +/* + * 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 <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 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 <KHR/khrplatform.h>*/ + +/* 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 <windows.h> + +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 <X11/Xlib.h> +#include <X11/Xutil.h> + +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 <kernel/image.h> + +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<type>(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 <EGL/eglplatform.h>*/ + +#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 <KHR/khrplatform.h>*/ +/*#include <EGL/eglplatform.h>*/ +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 <EGL/eglplatform.h>*/ + +#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/lib/windows32/include/SDL_endian.h b/lib/windows32/include/SDL_endian.h new file mode 100644 index 0000000..71bc067 --- /dev/null +++ b/lib/windows32/include/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__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__) +#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 +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 +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 +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/lib/windows32/include/SDL_error.h b/lib/windows32/include/SDL_error.h new file mode 100644 index 0000000..31c2261 --- /dev/null +++ b/lib/windows32/include/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_events.h b/lib/windows32/include/SDL_events.h new file mode 100644 index 0000000..9d09703 --- /dev/null +++ b/lib/windows32/include/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ + 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 */ + + /* 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; + +/** + * \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) */ + 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; + +/** + * \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 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; + +/** + * \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 */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} 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() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} 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_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_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/lib/windows32/include/SDL_filesystem.h b/lib/windows32/include/SDL_filesystem.h new file mode 100644 index 0000000..4cad657 --- /dev/null +++ b/lib/windows32/include/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/` + * + * **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/lib/windows32/include/SDL_gamecontroller.h b/lib/windows32/include/SDL_gamecontroller.h new file mode 100644 index 0000000..140054d --- /dev/null +++ b/lib/windows32/include/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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_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 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); + +/** + * 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 (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/lib/windows32/include/SDL_gesture.h b/lib/windows32/include/SDL_gesture.h new file mode 100644 index 0000000..db70b4d --- /dev/null +++ b/lib/windows32/include/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_guid.h b/lib/windows32/include/SDL_guid.h new file mode 100644 index 0000000..d964223 --- /dev/null +++ b/lib/windows32/include/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#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 for an input device that + * identifies that device 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 { + 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/lib/windows32/include/SDL_haptic.h b/lib/windows32/include/SDL_haptic.h new file mode 100644 index 0000000..2462a1e --- /dev/null +++ b/lib/windows32/include/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_hidapi.h b/lib/windows32/include/SDL_hidapi.h new file mode 100644 index 0000000..0575100 --- /dev/null +++ b/lib/windows32/include/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_hints.h b/lib/windows32/include/SDL_hints.h new file mode 100644 index 0000000..ad3b403 --- /dev/null +++ b/lib/windows32/include/SDL_hints.h @@ -0,0 +1,2604 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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. + * + * 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \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 noticeable 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" + * + * 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" + +/** + * \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" + * "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" + +/** + * \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 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" + +/** + * \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". 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 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" + +/** + * \brief 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" + +/** +* \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 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" + +/** + * \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 use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + + +/** + * \brief 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" + + +/** + * \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); + +/** + * 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/lib/windows32/include/SDL_joystick.h b/lib/windows32/include/SDL_joystick.h new file mode 100644 index 0000000..b9b4f62 --- /dev/null +++ b/lib/windows32/include/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 "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 */ +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; + +/** + * \brief 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. + * + * \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/lib/windows32/include/SDL_keyboard.h b/lib/windows32/include/SDL_keyboard.h new file mode 100644 index 0000000..86a37ad --- /dev/null +++ b/lib/windows32/include/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 + * \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. + * + * \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. + * + * 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/lib/windows32/include/SDL_keycode.h b/lib/windows32/include/SDL_keycode.h new file mode 100644 index 0000000..7106223 --- /dev/null +++ b/lib/windows32/include/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 + * 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 +{ + 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; + +/** + * \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/lib/windows32/include/SDL_loadso.h b/lib/windows32/include/SDL_loadso.h new file mode 100644 index 0000000..ca59b68 --- /dev/null +++ b/lib/windows32/include/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_locale.h b/lib/windows32/include/SDL_locale.h new file mode 100644 index 0000000..482dbef --- /dev/null +++ b/lib/windows32/include/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_log.h b/lib/windows32/include/SDL_log.h new file mode 100644 index 0000000..da733c4 --- /dev/null +++ b/lib/windows32/include/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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 + +/** + * \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, + const char *fmt, va_list ap); + +/** + * 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/lib/windows32/include/SDL_main.h b/lib/windows32/include/SDL_main.h new file mode 100644 index 0000000..5cc8e59 --- /dev/null +++ b/lib/windows32/include/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__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: + * \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); + +#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/lib/windows32/include/SDL_messagebox.h b/lib/windows32/include/SDL_messagebox.h new file mode 100644 index 0000000..7896fd1 --- /dev/null +++ b/lib/windows32/include/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_metal.h b/lib/windows32/include/SDL_metal.h new file mode 100644 index 0000000..f36e348 --- /dev/null +++ b/lib/windows32/include/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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/lib/windows32/include/SDL_misc.h b/lib/windows32/include/SDL_misc.h new file mode 100644 index 0000000..13ed9c7 --- /dev/null +++ b/lib/windows32/include/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_mouse.h b/lib/windows32/include/SDL_mouse.h new file mode 100644 index 0000000..aa07575 --- /dev/null +++ b/lib/windows32/include/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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/lib/windows32/include/SDL_mutex.h b/lib/windows32/include/SDL_mutex.h new file mode 100644 index 0000000..e679d38 --- /dev/null +++ b/lib/windows32/include/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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" + +/******************************************************************************/ +/* 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/lib/windows32/include/SDL_name.h b/lib/windows32/include/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/lib/windows32/include/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_opengl.h b/lib/windows32/include/SDL_opengl.h new file mode 100644 index 0000000..0ba8912 --- /dev/null +++ b/lib/windows32/include/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ + + + +/********************************************************************** + * 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/lib/windows32/include/SDL_opengl_glext.h b/lib/windows32/include/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/lib/windows32/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 <windows.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include <KHR/khrplatform.h>*/ +#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 <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; + */ + +#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 <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 +/* + * 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 <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 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/lib/windows32/include/SDL_opengles.h b/lib/windows32/include/SDL_opengles.h new file mode 100644 index 0000000..f4465ea --- /dev/null +++ b/lib/windows32/include/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_opengles2.h b/lib/windows32/include/SDL_opengles2.h new file mode 100644 index 0000000..5e3b717 --- /dev/null +++ b/lib/windows32/include/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_opengles2_gl2.h b/lib/windows32/include/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/lib/windows32/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 <GLES2/gl2platform.h>*/ + +#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 <KHR/khrplatform.h>*/ +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/lib/windows32/include/SDL_opengles2_gl2ext.h b/lib/windows32/include/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/lib/windows32/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/lib/windows32/include/SDL_opengles2_gl2platform.h b/lib/windows32/include/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/lib/windows32/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 <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/lib/windows32/include/SDL_opengles2_khrplatform.h b/lib/windows32/include/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/lib/windows32/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 <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; + */ + +#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 <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 +/* + * 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 <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 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/lib/windows32/include/SDL_pixels.h b/lib/windows32/include/SDL_pixels.h new file mode 100644 index 0000000..9abd57b --- /dev/null +++ b/lib/windows32/include/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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, +#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, +#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/lib/windows32/include/SDL_platform.h b/lib/windows32/include/SDL_platform.h new file mode 100644 index 0000000..d2a7e05 --- /dev/null +++ b/lib/windows32/include/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include <AvailabilityMacros.h> +#include <TargetConditionals.h> + +/* 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(<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 +#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__) +#undef __PSP__ +#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/lib/windows32/include/SDL_power.h b/lib/windows32/include/SDL_power.h new file mode 100644 index 0000000..1d75704 --- /dev/null +++ b/lib/windows32/include/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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/lib/windows32/include/SDL_quit.h b/lib/windows32/include/SDL_quit.h new file mode 100644 index 0000000..d8ceb89 --- /dev/null +++ b/lib/windows32/include/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_rect.h b/lib/windows32/include/SDL_rect.h new file mode 100644 index 0000000..9611a31 --- /dev/null +++ b/lib/windows32/include/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_render.h b/lib/windows32/include/SDL_render.h new file mode 100644 index 0000000..d62715a --- /dev/null +++ b/lib/windows32/include/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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. + * + * 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_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<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/lib/windows32/include/SDL_revision.h b/lib/windows32/include/SDL_revision.h new file mode 100644 index 0000000..dd26edf --- /dev/null +++ b/lib/windows32/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.28.0-0-gffa78e6be (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.0-0-gffa78e6be" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/lib/windows32/include/SDL_rwops.h b/lib/windows32/include/SDL_rwops.h new file mode 100644 index 0000000..8615cb5 --- /dev/null +++ b/lib/windows32/include/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ + +/** + * 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__) || 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); + +#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/lib/windows32/include/SDL_scancode.h b/lib/windows32/include/SDL_scancode.h new file mode 100644 index 0000000..a960a79 --- /dev/null +++ b/lib/windows32/include/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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, /**< 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/lib/windows32/include/SDL_sensor.h b/lib/windows32/include/SDL_sensor.h new file mode 100644 index 0000000..9ecce44 --- /dev/null +++ b/lib/windows32/include/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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; + +/** + * 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, 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 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); + +/** + * 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/lib/windows32/include/SDL_shape.h b/lib/windows32/include/SDL_shape.h new file mode 100644 index 0000000..f66babc --- /dev/null +++ b/lib/windows32/include/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_stdinc.h b/lib/windows32/include/SDL_stdinc.h new file mode 100644 index 0000000..182ed86 --- /dev/null +++ b/lib/windows32/include/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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(_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 <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 +char *alloca(); +# 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. #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 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#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_SCANF_VARARG_FUNC( 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_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#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(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: 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); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const 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 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); + +#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, const char *fmt, va_list ap); +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, const char *fmt, va_list ap); +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, const char *fmt, va_list ap); + +#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-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "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 + +/* 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> +#include <stdio.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); +} + +/** + * 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/lib/windows32/include/SDL_surface.h b/lib/windows32/include/SDL_surface.h new file mode 100644 index 0000000..d6ee615 --- /dev/null +++ b/lib/windows32/include/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_system.h b/lib/windows32/include/SDL_system.h new file mode 100644 index 0000000..4b7eadd --- /dev/null +++ b/lib/windows32/include/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ +#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__ + +#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: + * 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, 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 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; + +/** + * 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); + +#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/lib/windows32/include/SDL_syswm.h b/lib/windows32/include/SDL_syswm.h new file mode 100644 index 0000000..b35734d --- /dev/null +++ b/lib/windows32/include/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_test.h b/lib/windows32/include/SDL_test.h new file mode 100644 index 0000000..80daaaf --- /dev/null +++ b/lib/windows32/include/SDL_test.h @@ -0,0 +1,69 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_h_ +#define SDL_test_h_ + +#include "SDL.h" +#include "SDL_test_assert.h" +#include "SDL_test_common.h" +#include "SDL_test_compare.h" +#include "SDL_test_crc32.h" +#include "SDL_test_font.h" +#include "SDL_test_fuzzer.h" +#include "SDL_test_harness.h" +#include "SDL_test_images.h" +#include "SDL_test_log.h" +#include "SDL_test_md5.h" +#include "SDL_test_memory.h" +#include "SDL_test_random.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Global definitions */ + +/* + * Note: Maximum size of SDLTest log message is less than SDL's limit + * to ensure we can fit additional information such as the timestamp. + */ +#define SDLTEST_MAX_LOGMESSAGE_LENGTH 3584 + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_assert.h b/lib/windows32/include/SDL_test_assert.h new file mode 100644 index 0000000..341e490 --- /dev/null +++ b/lib/windows32/include/SDL_test_assert.h @@ -0,0 +1,105 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_assert.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + * + * Assert API for test code and test cases + * + */ + +#ifndef SDL_test_assert_h_ +#define SDL_test_assert_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Fails the assert. + */ +#define ASSERT_FAIL 0 + +/** + * \brief Passes the assert. + */ +#define ASSERT_PASS 1 + +/** + * \brief Assert that logs and break execution flow on failures. + * + * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0). + * \param assertDescription Message to log with the assert describing it. + */ +void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters. + * + * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0). + * \param assertDescription Message to log with the assert describing it. + * + * \returns the assertCondition so it can be used to externally to break execution flow if desired. + */ +int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Explicitly pass without checking an assertion condition. Updates assertion counter. + * + * \param assertDescription Message to log with the assert describing it. + */ +void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * \brief Resets the assert summary counters to zero. + */ +void SDLTest_ResetAssertSummary(void); + +/** + * \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR. + */ +void SDLTest_LogAssertSummary(void); + + +/** + * \brief Converts the current assert summary state to a test result. + * + * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT + */ +int SDLTest_AssertSummaryToTestResult(void); + +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_common.h b/lib/windows32/include/SDL_test_common.h new file mode 100644 index 0000000..6de63ca --- /dev/null +++ b/lib/windows32/include/SDL_test_common.h @@ -0,0 +1,236 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_common.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* Ported from original test\common.h file. */ + +#ifndef SDL_test_common_h_ +#define SDL_test_common_h_ + +#include "SDL.h" + +#if defined(__PSP__) +#define DEFAULT_WINDOW_WIDTH 480 +#define DEFAULT_WINDOW_HEIGHT 272 +#elif defined(__VITA__) +#define DEFAULT_WINDOW_WIDTH 960 +#define DEFAULT_WINDOW_HEIGHT 544 +#else +#define DEFAULT_WINDOW_WIDTH 640 +#define DEFAULT_WINDOW_HEIGHT 480 +#endif + +#define VERBOSE_VIDEO 0x00000001 +#define VERBOSE_MODES 0x00000002 +#define VERBOSE_RENDER 0x00000004 +#define VERBOSE_EVENT 0x00000008 +#define VERBOSE_AUDIO 0x00000010 +#define VERBOSE_MOTION 0x00000020 + +typedef struct +{ + /* SDL init flags */ + char **argv; + Uint32 flags; + Uint32 verbose; + + /* Video info */ + const char *videodriver; + int display; + const char *window_title; + const char *window_icon; + Uint32 window_flags; + SDL_bool flash_on_focus_loss; + int window_x; + int window_y; + int window_w; + int window_h; + int window_minW; + int window_minH; + int window_maxW; + int window_maxH; + int logical_w; + int logical_h; + float scale; + int depth; + int refresh_rate; + int num_windows; + SDL_Window **windows; + + /* Renderer info */ + const char *renderdriver; + Uint32 render_flags; + SDL_bool skip_renderer; + SDL_Renderer **renderers; + SDL_Texture **targets; + + /* Audio info */ + const char *audiodriver; + SDL_AudioSpec audiospec; + + /* GL settings */ + int gl_red_size; + int gl_green_size; + int gl_blue_size; + int gl_alpha_size; + int gl_buffer_size; + int gl_depth_size; + int gl_stencil_size; + int gl_double_buffer; + int gl_accum_red_size; + int gl_accum_green_size; + int gl_accum_blue_size; + int gl_accum_alpha_size; + int gl_stereo; + int gl_multisamplebuffers; + int gl_multisamplesamples; + int gl_retained_backing; + int gl_accelerated; + int gl_major_version; + int gl_minor_version; + int gl_debug; + int gl_profile_mask; + + /* Additional fields added in 2.0.18 */ + SDL_Rect confine; + +} SDLTest_CommonState; + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * \brief Parse command line parameters and create common state. + * + * \param argv Array of command line parameters + * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO) + * + * \returns a newly allocated common state object. + */ +SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags); + +/** + * \brief Process one common argument. + * + * \param state The common state describing the test window to create. + * \param index The index of the argument to process in argv[]. + * + * \returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error. + */ +int SDLTest_CommonArg(SDLTest_CommonState * state, int index); + + +/** + * \brief Logs command line usage info. + * + * This logs the appropriate command line options for the subsystems in use + * plus other common options, and then any application-specific options. + * This uses the SDL_Log() function and splits up output to be friendly to + * 80-character-wide terminals. + * + * \param state The common state describing the test window for the app. + * \param argv0 argv[0], as passed to main/SDL_main. + * \param options an array of strings for application specific options. The last element of the array should be NULL. + */ +void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options); + +/** + * \brief Returns common usage information + * + * You should (probably) be using SDLTest_CommonLogUsage() instead, but this + * function remains for binary compatibility. Strings returned from this + * function are valid until SDLTest_CommonQuit() is called, in which case + * those strings' memory is freed and can no longer be used. + * + * \param state The common state describing the test window to create. + * \returns a string with usage information + */ +const char *SDLTest_CommonUsage(SDLTest_CommonState * state); + +/** + * \brief Open test window. + * + * \param state The common state describing the test window to create. + * + * \returns SDL_TRUE if initialization succeeded, false otherwise + */ +SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state); + +/** + * \brief Easy argument handling when test app doesn't need any custom args. + * + * \param state The common state describing the test window to create. + * \param argc argc, as supplied to SDL_main + * \param argv argv, as supplied to SDL_main + * + * \returns SDL_FALSE if app should quit, true otherwise. + */ +SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv); + +/** + * \brief Common event handler for test windows. + * + * \param state The common state used to create test window. + * \param event The event to handle. + * \param done Flag indicating we are done. + * + */ +void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done); + +/** + * \brief Close test window. + * + * \param state The common state used to create test window. + * + */ +void SDLTest_CommonQuit(SDLTest_CommonState * state); + +/** + * \brief Draws various window information (position, size, etc.) to the renderer. + * + * \param renderer The renderer to draw to. + * \param window The window whose information should be displayed. + * \param usedHeight Returns the height used, so the caller can draw more below. + * + */ +void SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_common_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_compare.h b/lib/windows32/include/SDL_test_compare.h new file mode 100644 index 0000000..5fce25c --- /dev/null +++ b/lib/windows32/include/SDL_test_compare.h @@ -0,0 +1,69 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_compare.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Defines comparison functions (i.e. for surfaces). + +*/ + +#ifndef SDL_test_compare_h_ +#define SDL_test_compare_h_ + +#include "SDL.h" + +#include "SDL_test_images.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Compares a surface and with reference image data for equality + * + * \param surface Surface used in comparison + * \param referenceSurface Test Surface used in comparison + * \param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy. + * + * \returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ. + */ +int SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_compare_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_crc32.h b/lib/windows32/include/SDL_test_crc32.h new file mode 100644 index 0000000..bf34782 --- /dev/null +++ b/lib/windows32/include/SDL_test_crc32.h @@ -0,0 +1,124 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_crc32.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Implements CRC32 calculations (default output is Perl String::CRC32 compatible). + +*/ + +#ifndef SDL_test_crc32_h_ +#define SDL_test_crc32_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* ------------ Definitions --------- */ + +/* Definition shared by all CRC routines */ + +#ifndef CrcUint32 + #define CrcUint32 unsigned int +#endif +#ifndef CrcUint8 + #define CrcUint8 unsigned char +#endif + +#ifdef ORIGINAL_METHOD + #define CRC32_POLY 0x04c11db7 /* AUTODIN II, Ethernet, & FDDI */ +#else + #define CRC32_POLY 0xEDB88320 /* Perl String::CRC32 compatible */ +#endif + +/** + * Data structure for CRC32 (checksum) computation + */ + typedef struct { + CrcUint32 crc32_table[256]; /* CRC table */ + } SDLTest_Crc32Context; + +/* ---------- Function Prototypes ------------- */ + +/** + * \brief Initialize the CRC context + * + * Note: The function initializes the crc table required for all crc calculations. + * + * \param crcContext pointer to context variable + * + * \returns 0 for OK, -1 on error + * + */ + int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext); + + +/** + * \brief calculate a crc32 from a data block + * + * \param crcContext pointer to context variable + * \param inBuf input buffer to checksum + * \param inLen length of input buffer + * \param crc32 pointer to Uint32 to store the final CRC into + * + * \returns 0 for OK, -1 on error + * + */ +int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32); + +/* Same routine broken down into three steps */ +int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32); +int SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32); +int SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32); + + +/** + * \brief clean up CRC context + * + * \param crcContext pointer to context variable + * + * \returns 0 for OK, -1 on error + * +*/ + +int SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_crc32_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_font.h b/lib/windows32/include/SDL_test_font.h new file mode 100644 index 0000000..18a82ff --- /dev/null +++ b/lib/windows32/include/SDL_test_font.h @@ -0,0 +1,168 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_font.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_font_h_ +#define SDL_test_font_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +#define FONT_CHARACTER_SIZE 8 +#define FONT_LINE_HEIGHT (FONT_CHARACTER_SIZE + 2) + +/** + * \brief Draw a string in the currently set font. + * + * \param renderer The renderer to draw on. + * \param x The X coordinate of the upper left corner of the character. + * \param y The Y coordinate of the upper left corner of the character. + * \param c The character to draw. + * + * \returns 0 on success, -1 on failure. + */ +int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, Uint32 c); + +/** + * \brief Draw a UTF-8 string in the currently set font. + * + * The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets. + * + * \param renderer The renderer to draw on. + * \param x The X coordinate of the upper left corner of the string. + * \param y The Y coordinate of the upper left corner of the string. + * \param s The string to draw. + * + * \returns 0 on success, -1 on failure. + */ +int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s); + +/** + * \brief Data used for multi-line text output + */ +typedef struct SDLTest_TextWindow +{ + SDL_Rect rect; + int current; + int numlines; + char **lines; +} SDLTest_TextWindow; + +/** + * \brief Create a multi-line text output window + * + * \param x The X coordinate of the upper left corner of the window. + * \param y The Y coordinate of the upper left corner of the window. + * \param w The width of the window (currently ignored) + * \param h The height of the window (currently ignored) + * + * \returns the new window, or NULL on failure. + * + * \since This function is available since SDL 2.24.0 + */ +SDLTest_TextWindow *SDLTest_TextWindowCreate(int x, int y, int w, int h); + +/** + * \brief Display a multi-line text output window + * + * This function should be called every frame to display the text + * + * \param textwin The text output window + * \param renderer The renderer to use for display + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer); + +/** + * \brief Add text to a multi-line text output window + * + * Adds UTF-8 text to the end of the current text. The newline character starts a + * new line of text. The backspace character deletes the last character or, if the + * line is empty, deletes the line and goes to the end of the previous line. + * + * \param textwin The text output window + * \param fmt A printf() style format string + * \param ... additional parameters matching % tokens in the `fmt` string, if any + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Add text to a multi-line text output window + * + * Adds UTF-8 text to the end of the current text. The newline character starts a + * new line of text. The backspace character deletes the last character or, if the + * line is empty, deletes the line and goes to the end of the previous line. + * + * \param textwin The text output window + * \param text The text to add to the window + * \param len The length, in bytes, of the text to add to the window + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len); + +/** + * \brief Clear the text in a multi-line text output window + * + * \param textwin The text output window + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowClear(SDLTest_TextWindow *textwin); + +/** + * \brief Free the storage associated with a multi-line text output window + * + * \param textwin The text output window + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin); + +/** + * \brief Cleanup textures used by font drawing functions. + */ +void SDLTest_CleanupTextDrawing(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_font_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_fuzzer.h b/lib/windows32/include/SDL_test_fuzzer.h new file mode 100644 index 0000000..cfe6a14 --- /dev/null +++ b/lib/windows32/include/SDL_test_fuzzer.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_fuzzer.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Data generators for fuzzing test data in a reproducible way. + +*/ + +#ifndef SDL_test_fuzzer_h_ +#define SDL_test_fuzzer_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* + Based on GSOC code by Markus Kauppila <markus.kauppila@gmail.com> +*/ + + +/** + * \file + * Note: The fuzzer implementation uses a static instance of random context + * internally which makes it thread-UNsafe. + */ + +/** + * Initializes the fuzzer for a test + * + * \param execKey Execution "Key" that initializes the random number generator uniquely for the test. + * + */ +void SDLTest_FuzzerInit(Uint64 execKey); + + +/** + * Returns a random Uint8 + * + * \returns a generated integer + */ +Uint8 SDLTest_RandomUint8(void); + +/** + * Returns a random Sint8 + * + * \returns a generated signed integer + */ +Sint8 SDLTest_RandomSint8(void); + + +/** + * Returns a random Uint16 + * + * \returns a generated integer + */ +Uint16 SDLTest_RandomUint16(void); + +/** + * Returns a random Sint16 + * + * \returns a generated signed integer + */ +Sint16 SDLTest_RandomSint16(void); + + +/** + * Returns a random integer + * + * \returns a generated integer + */ +Sint32 SDLTest_RandomSint32(void); + + +/** + * Returns a random positive integer + * + * \returns a generated integer + */ +Uint32 SDLTest_RandomUint32(void); + +/** + * Returns random Uint64. + * + * \returns a generated integer + */ +Uint64 SDLTest_RandomUint64(void); + + +/** + * Returns random Sint64. + * + * \returns a generated signed integer + */ +Sint64 SDLTest_RandomSint64(void); + +/** + * \returns a random float in range [0.0 - 1.0] + */ +float SDLTest_RandomUnitFloat(void); + +/** + * \returns a random double in range [0.0 - 1.0] + */ +double SDLTest_RandomUnitDouble(void); + +/** + * \returns a random float. + * + */ +float SDLTest_RandomFloat(void); + +/** + * \returns a random double. + * + */ +double SDLTest_RandomDouble(void); + +/** + * Returns a random boundary value for Uint8 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Uint16 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Uint32 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Uint64 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Sint8 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100 + * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT8_MIN with error set + */ +Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain); + + +/** + * Returns a random boundary value for Sint16 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100 + * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT16_MIN with error set + */ +Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Sint32 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100 + * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT32_MIN with error set + */ +Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Sint64 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100 + * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT64_MIN with error set + */ +Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain); + + +/** + * Returns integer in range [min, max] (inclusive). + * Min and max values can be negative values. + * If Max in smaller than min, then the values are swapped. + * Min and max are the same value, that value will be returned. + * + * \param min Minimum inclusive value of returned random number + * \param max Maximum inclusive value of returned random number + * + * \returns a generated random integer in range + */ +Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max); + + +/** + * Generates random null-terminated string. The minimum length for + * the string is 1 character, maximum length for the string is 255 + * characters and it can contain ASCII characters from 32 to 126. + * + * Note: Returned string needs to be deallocated. + * + * \returns a newly allocated random string; or NULL if length was invalid or string could not be allocated. + */ +char * SDLTest_RandomAsciiString(void); + + +/** + * Generates random null-terminated string. The maximum length for + * the string is defined by the maxLength parameter. + * String can contain ASCII characters from 32 to 126. + * + * Note: Returned string needs to be deallocated. + * + * \param maxLength The maximum length of the generated string. + * + * \returns a newly allocated random string; or NULL if maxLength was invalid or string could not be allocated. + */ +char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength); + + +/** + * Generates random null-terminated string. The length for + * the string is defined by the size parameter. + * String can contain ASCII characters from 32 to 126. + * + * Note: Returned string needs to be deallocated. + * + * \param size The length of the generated string + * + * \returns a newly allocated random string; or NULL if size was invalid or string could not be allocated. + */ +char * SDLTest_RandomAsciiStringOfSize(int size); + +/** + * Get the invocation count for the fuzzer since last ...FuzzerInit. + * + * \returns the invocation count. + */ +int SDLTest_GetFuzzerInvocationCount(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_fuzzer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_harness.h b/lib/windows32/include/SDL_test_harness.h new file mode 100644 index 0000000..26231dc --- /dev/null +++ b/lib/windows32/include/SDL_test_harness.h @@ -0,0 +1,134 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_harness.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + Defines types for test case definitions and the test execution harness API. + + Based on original GSOC code by Markus Kauppila <markus.kauppila@gmail.com> +*/ + +#ifndef SDL_test_h_arness_h +#define SDL_test_h_arness_h + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* ! Definitions for test case structures */ +#define TEST_ENABLED 1 +#define TEST_DISABLED 0 + +/* ! Definition of all the possible test return values of the test case method */ +#define TEST_ABORTED -1 +#define TEST_STARTED 0 +#define TEST_COMPLETED 1 +#define TEST_SKIPPED 2 + +/* ! Definition of all the possible test results for the harness */ +#define TEST_RESULT_PASSED 0 +#define TEST_RESULT_FAILED 1 +#define TEST_RESULT_NO_ASSERT 2 +#define TEST_RESULT_SKIPPED 3 +#define TEST_RESULT_SETUP_FAILURE 4 + +/* !< Function pointer to a test case setup function (run before every test) */ +typedef void (*SDLTest_TestCaseSetUpFp)(void *arg); + +/* !< Function pointer to a test case function */ +typedef int (*SDLTest_TestCaseFp)(void *arg); + +/* !< Function pointer to a test case teardown function (run after every test) */ +typedef void (*SDLTest_TestCaseTearDownFp)(void *arg); + +/** + * Holds information about a single test case. + */ +typedef struct SDLTest_TestCaseReference { + /* !< Func2Stress */ + SDLTest_TestCaseFp testCase; + /* !< Short name (or function name) "Func2Stress" */ + const char *name; + /* !< Long name or full description "This test pushes func2() to the limit." */ + const char *description; + /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */ + int enabled; +} SDLTest_TestCaseReference; + +/** + * Holds information about a test suite (multiple test cases). + */ +typedef struct SDLTest_TestSuiteReference { + /* !< "PlatformSuite" */ + const char *name; + /* !< The function that is run before each test. NULL skips. */ + SDLTest_TestCaseSetUpFp testSetUp; + /* !< The test cases that are run as part of the suite. Last item should be NULL. */ + const SDLTest_TestCaseReference **testCases; + /* !< The function that is run after each test. NULL skips. */ + SDLTest_TestCaseTearDownFp testTearDown; +} SDLTest_TestSuiteReference; + + +/** + * \brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z). + * + * Note: The returned string needs to be deallocated by the caller. + * + * \param length The length of the seed string to generate + * + * \returns the generated seed string + */ +char *SDLTest_GenerateRunSeed(const int length); + +/** + * \brief Execute a test suite using the given run seed and execution key. + * + * \param testSuites Suites containing the test case. + * \param userRunSeed Custom run seed provided by user, or NULL to autogenerate one. + * \param userExecKey Custom execution key provided by user, or 0 to autogenerate one. + * \param filter Filter specification. NULL disables. Case sensitive. + * \param testIterations Number of iterations to run each test case. + * + * \returns the test run result: 0 when all tests passed, 1 if any tests failed. + */ +int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_h_arness_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_images.h b/lib/windows32/include/SDL_test_images.h new file mode 100644 index 0000000..1211371 --- /dev/null +++ b/lib/windows32/include/SDL_test_images.h @@ -0,0 +1,78 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_images.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Defines some images for tests. + +*/ + +#ifndef SDL_test_images_h_ +#define SDL_test_images_h_ + +#include "SDL.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + *Type for test images. + */ +typedef struct SDLTest_SurfaceImage_s { + int width; + int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + const char *pixel_data; +} SDLTest_SurfaceImage_t; + +/* Test images */ +SDL_Surface *SDLTest_ImageBlit(void); +SDL_Surface *SDLTest_ImageBlitColor(void); +SDL_Surface *SDLTest_ImageBlitAlpha(void); +SDL_Surface *SDLTest_ImageBlitBlendAdd(void); +SDL_Surface *SDLTest_ImageBlitBlend(void); +SDL_Surface *SDLTest_ImageBlitBlendMod(void); +SDL_Surface *SDLTest_ImageBlitBlendNone(void); +SDL_Surface *SDLTest_ImageBlitBlendAll(void); +SDL_Surface *SDLTest_ImageFace(void); +SDL_Surface *SDLTest_ImagePrimitives(void); +SDL_Surface *SDLTest_ImagePrimitivesBlend(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_images_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_log.h b/lib/windows32/include/SDL_test_log.h new file mode 100644 index 0000000..a27ffc2 --- /dev/null +++ b/lib/windows32/include/SDL_test_log.h @@ -0,0 +1,67 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_log.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + * + * Wrapper to log in the TEST category + * + */ + +#ifndef SDL_test_log_h_ +#define SDL_test_log_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Prints given message with a timestamp in the TEST category and INFO priority. + * + * \param fmt Message to be logged + */ +void SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * \brief Prints given message with a timestamp in the TEST category and the ERROR priority. + * + * \param fmt Message to be logged + */ +void SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_md5.h b/lib/windows32/include/SDL_test_md5.h new file mode 100644 index 0000000..538c7ae --- /dev/null +++ b/lib/windows32/include/SDL_test_md5.h @@ -0,0 +1,129 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_md5.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + *********************************************************************** + ** Header file for implementation of MD5 ** + ** RSA Data Security, Inc. MD5 Message-Digest Algorithm ** + ** Created: 2/17/90 RLR ** + ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version ** + ** Revised (for MD5): RLR 4/27/91 ** + ** -- G modified to have y&~z instead of y&z ** + ** -- FF, GG, HH modified to add in last register done ** + ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 ** + ** -- distinct additive constant for each step ** + ** -- round 4 added, working mod 7 ** + *********************************************************************** +*/ + +/* + *********************************************************************** + ** Message-digest routines: ** + ** To form the message digest for a message M ** + ** (1) Initialize a context buffer mdContext using MD5Init ** + ** (2) Call MD5Update on mdContext and M ** + ** (3) Call MD5Final on mdContext ** + ** The message digest is now in mdContext->digest[0...15] ** + *********************************************************************** +*/ + +#ifndef SDL_test_md5_h_ +#define SDL_test_md5_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------ Definitions --------- */ + +/* typedef a 32-bit type */ + typedef unsigned long int MD5UINT4; + +/* Data structure for MD5 (Message-Digest) computation */ + typedef struct { + MD5UINT4 i[2]; /* number of _bits_ handled mod 2^64 */ + MD5UINT4 buf[4]; /* scratch buffer */ + unsigned char in[64]; /* input buffer */ + unsigned char digest[16]; /* actual digest after Md5Final call */ + } SDLTest_Md5Context; + +/* ---------- Function Prototypes ------------- */ + +/** + * \brief initialize the context + * + * \param mdContext pointer to context variable + * + * Note: The function initializes the message-digest context + * mdContext. Call before each new use of the context - + * all fields are set to zero. + */ + void SDLTest_Md5Init(SDLTest_Md5Context * mdContext); + + +/** + * \brief update digest from variable length data + * + * \param mdContext pointer to context variable + * \param inBuf pointer to data array/string + * \param inLen length of data array/string + * + * Note: The function updates the message-digest context to account + * for the presence of each of the characters inBuf[0..inLen-1] + * in the message whose digest is being computed. +*/ + + void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf, + unsigned int inLen); + + +/** + * \brief complete digest computation + * + * \param mdContext pointer to context variable + * + * Note: The function terminates the message-digest computation and + * ends with the desired message digest in mdContext.digest[0..15]. + * Always call before using the digest[] variable. +*/ + + void SDLTest_Md5Final(SDLTest_Md5Context * mdContext); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_md5_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_memory.h b/lib/windows32/include/SDL_test_memory.h new file mode 100644 index 0000000..f959177 --- /dev/null +++ b/lib/windows32/include/SDL_test_memory.h @@ -0,0 +1,63 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_memory.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_memory_h_ +#define SDL_test_memory_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief Start tracking SDL memory allocations + * + * \note This should be called before any other SDL functions for complete tracking coverage + */ +int SDLTest_TrackAllocations(void); + +/** + * \brief Print a log of any outstanding allocations + * + * \note This can be called after SDL_Quit() + */ +void SDLTest_LogAllocations(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_memory_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_test_random.h b/lib/windows32/include/SDL_test_random.h new file mode 100644 index 0000000..0035a80 --- /dev/null +++ b/lib/windows32/include/SDL_test_random.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_random.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + A "32-bit Multiply with carry random number generator. Very fast. + Includes a list of recommended multipliers. + + multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32. + period: (a*2^31)-1 + +*/ + +#ifndef SDL_test_random_h_ +#define SDL_test_random_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* --- Definitions */ + +/* + * Macros that return a random number in a specific format. + */ +#define SDLTest_RandomInt(c) ((int)SDLTest_Random(c)) + +/* + * Context structure for the random number generator state. + */ + typedef struct { + unsigned int a; + unsigned int x; + unsigned int c; + unsigned int ah; + unsigned int al; + } SDLTest_RandomContext; + + +/* --- Function prototypes */ + +/** + * \brief Initialize random number generator with two integers. + * + * Note: The random sequence of numbers returned by ...Random() is the + * same for the same two integers and has a period of 2^31. + * + * \param rndContext pointer to context structure + * \param xi integer that defines the random sequence + * \param ci integer that defines the random sequence + * + */ + void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi, + unsigned int ci); + +/** + * \brief Initialize random number generator based on current system time. + * + * \param rndContext pointer to context structure + * + */ + void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext); + + +/** + * \brief Initialize random number generator based on current system time. + * + * Note: ...RandomInit() or ...RandomInitTime() must have been called + * before using this function. + * + * \param rndContext pointer to context structure + * + * \returns a random number (32bit unsigned integer) + * + */ + unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_random_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows32/include/SDL_thread.h b/lib/windows32/include/SDL_thread.h new file mode 100644 index 0000000..b829bba --- /dev/null +++ b/lib/windows32/include/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__GDK__)) && !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(__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); + +/** + * 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/lib/windows32/include/SDL_timer.h b/lib/windows32/include/SDL_timer.h new file mode 100644 index 0000000..98f9ad1 --- /dev/null +++ b/lib/windows32/include/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_touch.h b/lib/windows32/include/SDL_touch.h new file mode 100644 index 0000000..c12d4a1 --- /dev/null +++ b/lib/windows32/include/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_types.h b/lib/windows32/include/SDL_types.h new file mode 100644 index 0000000..b5d7192 --- /dev/null +++ b/lib/windows32/include/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows32/include/SDL_version.h b/lib/windows32/include/SDL_version.h new file mode 100644 index 0000000..782a7ff --- /dev/null +++ b/lib/windows32/include/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 28 +#define SDL_PATCHLEVEL 0 + +/** + * 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: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * 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/lib/windows32/include/SDL_video.h b/lib/windows32/include/SDL_video.h new file mode 100644 index 0000000..c8b2d7a --- /dev/null +++ b/lib/windows32/include/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_DISPLAYEVENT_MOVED /**< Display has changed position */ +} 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_GL_FLOATBUFFERS +} 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. + * + * **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 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. + * + * \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. + * + * 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(). + * + * \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_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/lib/windows32/include/SDL_vulkan.h b/lib/windows32/include/SDL_vulkan.h new file mode 100644 index 0000000..ab86a0b --- /dev/null +++ b/lib/windows32/include/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + 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) + +#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/lib/windows32/include/begin_code.h b/lib/windows32/include/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/lib/windows32/include/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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)) +# 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) +#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/lib/windows32/include/close_code.h b/lib/windows32/include/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/lib/windows32/include/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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/lib/windows32/include/discord_game_sdk.h b/lib/windows32/include/discord_game_sdk.h new file mode 100644 index 0000000..f7a7927 --- /dev/null +++ b/lib/windows32/include/discord_game_sdk.h @@ -0,0 +1,429 @@ +#ifndef _DISCORD_GAME_SDK_H_ +#define _DISCORD_GAME_SDK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define DISCORD_VERSION 1 +#define DISCORD_APPLICATION_VERSION 1 +#define DISCORD_USERS_VERSION 1 +#define DISCORD_IMAGES_VERSION 1 +#define DISCORD_ACTIVITIES_VERSION 1 +#define DISCORD_RELATIONSHIPS_VERSION 1 +#define DISCORD_LOBBIES_VERSION 1 +#define DISCORD_NETWORK_VERSION 1 +#define DISCORD_OVERLAY_VERSION 1 +#define DISCORD_STORAGE_VERSION 1 + +enum EDiscordResult { + DiscordResult_Ok, + DiscordResult_ServiceUnavailable, + DiscordResult_InvalidVersion, + DiscordResult_LockFailed, + DiscordResult_InternalError, + DiscordResult_InvalidPaylaod, + DiscordResult_InvalidCommand, + DiscordResult_InvalidPermissions, + DiscordResult_NotFetched, + DiscordResult_NotFound, + DiscordResult_Conflict, + DiscordResult_InvalidSecret, + DiscordResult_InvalidJoinSecret, + DiscordResult_NoEligibleActivity, + DiscordResult_InvalidInvite, + DiscordResult_NotAuthenticated, + DiscordResult_InvalidAccessToken, + DiscordResult_ApplicationMismatch, + DiscordResult_InvalidDataUrl, + DiscordResult_InvalidBase64, + DiscordResult_NotFiltered, + DiscordResult_LobbyFull, + DiscordResult_InvalidLobbySecret, + DiscordResult_InvalidFilename, + DiscordResult_InvalidFileSize, + DiscordResult_InvalidEntitlement, + DiscordResult_NotInstalled, + DiscordResult_NotRunning, +}; + +enum EDiscordCreateFlags { + DiscordCreateFlags_Default = 0, + DiscordCreateFlags_NoRequireDiscord = 1, +}; + +enum EDiscordLogLevel { + DiscordLogLevel_Error = 1, + DiscordLogLevel_Warn, + DiscordLogLevel_Info, + DiscordLogLevel_Debug, +}; + +enum EDiscordImageType { + DiscordImageType_User, +}; + +enum EDiscordActivityType { + DiscordActivityType_Playing, + DiscordActivityType_Streaming, + DiscordActivityType_Listening, + DiscordActivityType_Watching, +}; + +enum EDiscordActivityActionType { + DiscordActivityActionType_Join = 1, + DiscordActivityActionType_Spectate, +}; + +enum EDiscordActivityJoinRequestReply { + DiscordActivityJoinRequestReply_No, + DiscordActivityJoinRequestReply_Yes, + DiscordActivityJoinRequestReply_Ignore, +}; + +enum EDiscordStatus { + DiscordStatus_Offline = 0, + DiscordStatus_Online = 1, + DiscordStatus_Idle = 2, + DiscordStatus_DoNotDisturb = 4, +}; + +enum EDiscordRelationshipType { + DiscordRelationshipType_None, + DiscordRelationshipType_Friend, + DiscordRelationshipType_Blocked, + DiscordRelationshipType_PendingIncoming, + DiscordRelationshipType_PendingOutgoing, + DiscordRelationshipType_Implicit, +}; + +enum EDiscordLobbyType { + DiscordLobbyType_Private = 1, + DiscordLobbyType_Public, +}; + +enum EDiscordLobbySearchComparison { + DiscordLobbySearchComparison_LessThanOrEqual = -2, + DiscordLobbySearchComparison_LessThan, + DiscordLobbySearchComparison_Equal, + DiscordLobbySearchComparison_GreaterThan, + DiscordLobbySearchComparison_GreaterThanOrEqual, + DiscordLobbySearchComparison_NotEqual, +}; + +enum EDiscordLobbySearchCast { + DiscordLobbySearchCast_String = 1, + DiscordLobbySearchCast_Number, +}; + +typedef int64_t DiscordClientId; +typedef int32_t DiscordVersion; +typedef int64_t DiscordSnowflake; +typedef int64_t DiscordTimestamp; +typedef DiscordSnowflake DiscordUserId; +typedef char DiscordUserName[256]; +typedef char DiscordUserAvatar[128]; +typedef char DiscordUserDiscriminator[8]; +typedef char DiscordAccessToken[128]; +typedef char DiscordOAuth2Scopes[1024]; +typedef char DiscordLocale[128]; +typedef char DiscordBranch[4096]; +typedef uint8_t* DiscordImageData; +typedef char DiscordImageId[128]; +typedef char DiscordImageCaption[128]; +typedef char DiscordPartyId[128]; +typedef int32_t DiscordPartyMemberCount; +typedef char DiscordSecret[128]; +typedef DiscordSnowflake DiscordLobbyId; +typedef char DiscordLobbySecret[128]; +typedef char DiscordMetadataKey[256]; +typedef char DiscordMetadataValue[4096]; +typedef uint8_t* DiscordLobbyData; +typedef uint64_t DiscordNetworkSessionId; +typedef uint8_t DiscordNetworkChannelId; +typedef uint8_t* DiscordNetworkData; +typedef char DiscordStorageFileName[260]; +typedef uint8_t* DiscordStorageData; + +struct DiscordUser { + DiscordUserId id; + DiscordUserName username; + DiscordUserDiscriminator discriminator; + DiscordUserAvatar avatar; + int bot; +}; + +struct DiscordOAuth2Token { + DiscordAccessToken access_token; + DiscordOAuth2Scopes scopes; + DiscordTimestamp expires; +}; + +struct DiscordImageHandle { + enum EDiscordImageType type; + int64_t id; + uint32_t size; +}; + +struct DiscordImageDimensions { + uint32_t width; + uint32_t height; +}; + +struct DiscordActivityTimestamps { + DiscordTimestamp start; + DiscordTimestamp end; +}; + +struct DiscordActivityAssets { + DiscordImageId large_image; + DiscordImageCaption large_text; + DiscordImageId small_image; + DiscordImageCaption small_text; +}; + +struct DiscordPartySize { + DiscordPartyMemberCount current_size; + DiscordPartyMemberCount max_size; +}; + +struct DiscordActivityParty { + DiscordPartyId id; + struct DiscordPartySize size; +}; + +struct DiscordActivitySecrets { + DiscordSecret match; + DiscordSecret join; + DiscordSecret spectate; +}; + +struct DiscordActivity { + enum EDiscordActivityType type; + char name[128]; + char state[128]; + char details[128]; + struct DiscordActivityTimestamps timestamps; + struct DiscordActivityAssets assets; + struct DiscordActivityParty party; + struct DiscordActivitySecrets secrets; + int instance; +}; + +struct DiscordPresence { + enum EDiscordStatus status; + struct DiscordActivity activity; +}; + +struct DiscordRelationship { + enum EDiscordRelationshipType type; + struct DiscordUser user; + struct DiscordPresence presence; +}; + +struct DiscordLobby { + DiscordLobbyId id; + enum EDiscordLobbyType type; + DiscordSnowflake owner_id; + DiscordLobbySecret secret; + uint32_t capacity; +}; + +struct DiscordFileStat { + DiscordStorageFileName filename; + uint64_t size; + uint64_t last_modified; +}; + +struct IDiscordLobbyTransaction { + enum EDiscordResult (*set_type)(struct IDiscordLobbyTransaction* lobby_transaction, enum EDiscordLobbyType type); + enum EDiscordResult (*set_owner)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordSnowflake owner_id); + enum EDiscordResult (*set_capacity)(struct IDiscordLobbyTransaction* lobby_transaction, uint32_t capacity); + enum EDiscordResult (*set_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key, DiscordMetadataValue value); + enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key); +}; + +struct IDiscordLobbyMemberTransaction { + enum EDiscordResult (*set_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key, DiscordMetadataValue value); + enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key); +}; + +struct IDiscordLobbySearch { + enum EDiscordResult (*filter)(struct IDiscordLobbySearch* lobby_search, DiscordMetadataKey key, enum EDiscordLobbySearchComparison comparison, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value); + enum EDiscordResult (*sort)(struct IDiscordLobbySearch* lobby_search, DiscordMetadataKey key, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value); + enum EDiscordResult (*limit)(struct IDiscordLobbySearch* lobby_search, uint32_t limit); +}; + +typedef void IDiscordApplicationEvents; + +struct IDiscordApplication { + enum EDiscordResult (*destroy)(struct IDiscordApplication* application); + enum EDiscordResult (*validate_or_exit)(struct IDiscordApplication* application, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_current_locale)(struct IDiscordApplication* application, DiscordLocale* locale); + enum EDiscordResult (*get_current_branch)(struct IDiscordApplication* application, DiscordBranch* branch); + enum EDiscordResult (*get_oauth2_token)(struct IDiscordApplication* application, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordOAuth2Token* oauth2_token)); +}; + +struct IDiscordUsersEvents { + void (*on_current_user_update)(void* event_data); +}; + +struct IDiscordUsers { + enum EDiscordResult (*destroy)(struct IDiscordUsers* users); + enum EDiscordResult (*get_current_user)(struct IDiscordUsers* users, struct DiscordUser* current_user); + enum EDiscordResult (*fetch)(struct IDiscordUsers* users, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordUser* user)); +}; + +typedef void IDiscordImagesEvents; + +struct IDiscordImages { + enum EDiscordResult (*destroy)(struct IDiscordImages* images); + enum EDiscordResult (*fetch)(struct IDiscordImages* images, struct DiscordImageHandle handle, int refresh, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordImageHandle handle_result)); + enum EDiscordResult (*get_dimensions)(struct IDiscordImages* images, struct DiscordImageHandle handle, struct DiscordImageDimensions* dimensions); + enum EDiscordResult (*get_data)(struct IDiscordImages* images, struct DiscordImageHandle handle, DiscordImageData data, uint32_t data_length); +}; + +struct IDiscordActivitiesEvents { + void (*on_activity_join)(void* event_data, DiscordSecret secret); + void (*on_activity_spectate)(void* event_data, DiscordSecret secret); + void (*on_activity_join_request)(void* event_data, struct DiscordUser* user); + void (*on_activity_invite)(void* event_data, enum EDiscordActivityActionType type, struct DiscordUser* user, struct DiscordActivity* activity); +}; + +struct IDiscordActivities { + enum EDiscordResult (*destroy)(struct IDiscordActivities* activities); + enum EDiscordResult (*register_)(struct IDiscordActivities* activities, const char* command); + enum EDiscordResult (*register_steam)(struct IDiscordActivities* activities, uint32_t steam_id); + enum EDiscordResult (*update_activity)(struct IDiscordActivities* activities, struct DiscordActivity* activity, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*clear_activity)(struct IDiscordActivities* activities, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*respond)(struct IDiscordActivities* activities, DiscordUserId user_id, enum EDiscordActivityJoinRequestReply reply, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*invite_user)(struct IDiscordActivities* activities, DiscordUserId user_id, enum EDiscordActivityActionType type, const char* content, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*accept_invite)(struct IDiscordActivities* activities, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +struct IDiscordRelationshipsEvents { + void (*on_relationships_update)(void* event_data); + void (*on_relationship_update)(void* event_data, struct DiscordRelationship* relationship); +}; + +struct IDiscordRelationships { + enum EDiscordResult (*destroy)(struct IDiscordRelationships* relationships); + enum EDiscordResult (*filter)(struct IDiscordRelationships* relationships, void* filter_data, int (*filter)(void* filter_data, struct DiscordRelationship* relationship)); + enum EDiscordResult (*count)(struct IDiscordRelationships* relationships, int32_t* count); + enum EDiscordResult (*get)(struct IDiscordRelationships* relationships, DiscordUserId user_id, struct DiscordRelationship* relationship); + enum EDiscordResult (*at)(struct IDiscordRelationships* relationships, uint32_t index, struct DiscordRelationship* relationship); +}; + +struct IDiscordLobbiesEvents { + void (*on_lobby_update)(void* event_data, int64_t lobby_id); + void (*on_lobby_delete)(void* event_data, int64_t lobby_id, uint32_t reason); + void (*on_lobby_member_connect)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_member_update)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_member_disconnect)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_message)(void* event_data, int64_t lobby_id, int64_t user_id, DiscordLobbyData data, uint32_t data_length); + void (*on_lobby_speaking)(void* event_data, int64_t lobby_id, int64_t user_id, int speaking); +}; + +struct IDiscordLobbies { + enum EDiscordResult (*destroy)(struct IDiscordLobbies* lobbies); + enum EDiscordResult (*create_lobby_transaction)(struct IDiscordLobbies* lobbies, struct IDiscordLobbyTransaction** transaction); + enum EDiscordResult (*get_lobby_transaction)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction** transaction); + enum EDiscordResult (*get_member_transaction)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction** transaction); + enum EDiscordResult (*create_lobby)(struct IDiscordLobbies* lobbies, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby)); + enum EDiscordResult (*update_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*delete_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*connect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordLobbySecret lobby_secret, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby)); + enum EDiscordResult (*disconnect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct DiscordLobby* lobby); + enum EDiscordResult (*get_lobby_metadata)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordMetadataKey key, DiscordMetadataValue* value); + enum EDiscordResult (*get_member_count)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, int32_t* count); + enum EDiscordResult (*get_member_user_id)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, int32_t index, DiscordUserId* user_id); + enum EDiscordResult (*get_member_user)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct DiscordUser* user); + enum EDiscordResult (*get_member_metadata)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, DiscordMetadataKey key, DiscordMetadataValue* value); + enum EDiscordResult (*update_member)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*send)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordLobbyData data, uint32_t data_length); + enum EDiscordResult (*create_lobby_search)(struct IDiscordLobbies* lobbies, struct IDiscordLobbySearch** lobby_search); + enum EDiscordResult (*search)(struct IDiscordLobbies* lobbies, struct IDiscordLobbySearch* query, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_lobby_count)(struct IDiscordLobbies* lobbies, int32_t* count); + enum EDiscordResult (*get_lobby_id)(struct IDiscordLobbies* lobbies, int32_t index, DiscordLobbyId* lobby_id); + enum EDiscordResult (*voice_connect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*voice_disconnect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +struct IDiscordNetworkEvents { + void (*on_message)(void* event_data, DiscordNetworkSessionId from, DiscordNetworkChannelId channel, DiscordNetworkData data, uint32_t data_length); +}; + +struct IDiscordNetwork { + enum EDiscordResult (*destroy)(struct IDiscordNetwork* network); + enum EDiscordResult (*get_session_id)(struct IDiscordNetwork* network, DiscordNetworkSessionId* session_id); + enum EDiscordResult (*flush)(struct IDiscordNetwork* network); + enum EDiscordResult (*open_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); + enum EDiscordResult (*open_reliable_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); + enum EDiscordResult (*send)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel, DiscordNetworkData data, uint32_t data_length); + enum EDiscordResult (*close_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); +}; + +struct IDiscordOverlayEvents { + void (*on_overlay_locked)(void* event_data, int locked); +}; + +struct IDiscordOverlay { + enum EDiscordResult (*destroy)(struct IDiscordOverlay* overlay); + enum EDiscordResult (*is_enabled)(struct IDiscordOverlay* overlay, int* enabled); + enum EDiscordResult (*is_locked)(struct IDiscordOverlay* overlay, int* locked); + enum EDiscordResult (*set_locked)(struct IDiscordOverlay* overlay, int locked); + enum EDiscordResult (*open_activity_invite)(struct IDiscordOverlay* overlay, enum EDiscordActivityActionType type, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +typedef void IDiscordStorageEvents; + +struct IDiscordStorage { + enum EDiscordResult (*destroy)(struct IDiscordStorage* storage); + enum EDiscordResult (*read)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length, uint32_t* read); + enum EDiscordResult (*read_async)(struct IDiscordStorage* storage, DiscordStorageFileName name, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, DiscordStorageData data, uint32_t data_length)); + enum EDiscordResult (*read_async_partial)(struct IDiscordStorage* storage, DiscordStorageFileName name, uint64_t offset, uint64_t length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, DiscordStorageData data, uint32_t data_length)); + enum EDiscordResult (*write)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length); + enum EDiscordResult (*write_async)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*delete_)(struct IDiscordStorage* storage, DiscordStorageFileName name); + enum EDiscordResult (*exists)(struct IDiscordStorage* storage, DiscordStorageFileName name, int* exists); + enum EDiscordResult (*count)(struct IDiscordStorage* storage, int32_t* count); + enum EDiscordResult (*stat)(struct IDiscordStorage* storage, DiscordStorageFileName name, struct DiscordFileStat* stat); + enum EDiscordResult (*stat_index)(struct IDiscordStorage* storage, int32_t index, struct DiscordFileStat* stat); +}; + +struct IDiscordCoreEvents { + void (*on_ready)(void* event_data); +}; + +struct IDiscordCore { + enum EDiscordResult (*destroy)(struct IDiscordCore* core); + enum EDiscordResult (*run_callbacks)(struct IDiscordCore* core); + enum EDiscordResult (*set_log_hook)(struct IDiscordCore* core, enum EDiscordLogLevel min_level, void* hook_data, void (*hook)(void* hook_data, enum EDiscordLogLevel level, const char* message)); + enum EDiscordResult (*create_application)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordApplicationEvents* events, void* event_data, struct IDiscordApplication** result); + enum EDiscordResult (*create_users)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordUsersEvents* events, void* event_data, struct IDiscordUsers** result); + enum EDiscordResult (*create_images)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordImagesEvents* events, void* event_data, struct IDiscordImages** result); + enum EDiscordResult (*create_activities)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordActivitiesEvents* events, void* event_data, struct IDiscordActivities** result); + enum EDiscordResult (*create_relationships)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordRelationshipsEvents* events, void* event_data, struct IDiscordRelationships** result); + enum EDiscordResult (*create_lobbies)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordLobbiesEvents* events, void* event_data, struct IDiscordLobbies** result); + enum EDiscordResult (*create_network)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordNetworkEvents* events, void* event_data, struct IDiscordNetwork** result); + enum EDiscordResult (*create_overlay)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordOverlayEvents* events, void* event_data, struct IDiscordOverlay** result); + enum EDiscordResult (*create_storage)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordStorageEvents* events, void* event_data, struct IDiscordStorage** result); +}; + +struct DiscordCreateParams { + DiscordClientId client_id; + uint64_t flags; + struct IDiscordCoreEvents* events; + void* event_data; +}; + +enum EDiscordResult DiscordCreate(DiscordVersion version, struct DiscordCreateParams* params, struct IDiscordCore** result); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/lib/windows32/include/freetype/config/ftconfig.h b/lib/windows32/include/freetype/config/ftconfig.h new file mode 100644 index 0000000..9ceab5c --- /dev/null +++ b/lib/windows32/include/freetype/config/ftconfig.h @@ -0,0 +1,477 @@ +/* ftconfig.h. Generated from ftconfig.in by configure. */ +/***************************************************************************/ +/* */ +/* ftconfig.in */ +/* */ +/* UNIX-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This header file contains a number of macro definitions that are used */ + /* by the rest of the engine. Most of the macros here are automatically */ + /* determined at compile time, and you should not need to change it to */ + /* port FreeType, except to compile the library with a non-ANSI */ + /* compiler. */ + /* */ + /* Note however that if some specific modifications are needed, we */ + /* advise you to place a modified copy in your build directory. */ + /* */ + /* The build directory is usually `freetype/builds/<system>', and */ + /* contains system-specific files that are always included first when */ + /* building the library. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTCONFIG_H__ +#define __FTCONFIG_H__ + +#include <ft2build.h> +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ + /* */ + /* These macros can be toggled to suit a specific system. The current */ + /* ones are defaults used to compile FreeType in an ANSI C environment */ + /* (16bit compilers are also supported). Copy this file to your own */ + /* `freetype/builds/<system>' directory, and edit it to port the engine. */ + /* */ + /*************************************************************************/ + + +#define HAVE_UNISTD_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_STDINT_H 1 + + + /* There are systems (like the Texas Instruments 'C54x) where a `char' */ + /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ + /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ + /* `char' type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + +/* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */ +#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES + +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define FT_SIZEOF_INT SIZEOF_INT +#define FT_SIZEOF_LONG SIZEOF_LONG + +#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ + + /* Following cpp computation of the bit length of int and long */ + /* is copied from default include/freetype/config/ftconfig.h. */ + /* If any improvement is required for this file, it should be */ + /* applied to the original header file for the builders that */ + /* does not use configure script. */ + + /* The size of an `int' type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `int' type!" +#endif + + /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `long' type!" +#endif + +#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ + + + /* Preferred alignment of data */ +#define FT_ALIGNMENT 8 + + + /* FT_UNUSED is a macro used to indicate that a given parameter is not */ + /* used -- this is only used to get rid of unpleasant compiler warnings */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + + /*************************************************************************/ + /* */ + /* AUTOMATIC CONFIGURATION MACROS */ + /* */ + /* These macros are computed from the ones defined above. Don't touch */ + /* their definition, unless you know precisely what you are doing. No */ + /* porter should need to mess with them. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Mac support */ + /* */ + /* This is the only necessary change, so it is defined here instead */ + /* providing a new configuration file. */ + /* */ +#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ + ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* no Carbon frameworks for 64bit 10.4.x */ +#include "AvailabilityMacros.h" +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#define DARWIN_NO_CARBON 1 +#else +#define FT_MACINTOSH 1 +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif + + + /* Fix compiler warning with sgi compiler */ +#if defined( __sgi ) && !defined( __GNUC__ ) +#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) +#pragma set woff 3505 +#endif +#endif + + + /*************************************************************************/ + /* */ + /* IntN types */ + /* */ + /* Used to guarantee the size of some specific integers. */ + /* */ + typedef signed short FT_Int16; + typedef unsigned short FT_UInt16; + +#if FT_SIZEOF_INT == 4 + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == 4 + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32 bits */ +#if FT_SIZEOF_INT >= 4 + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= 4 + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit int type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == 8 + + /* FT_LONG64 must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long + +#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of __BORLANDC__ in order */ + /* to test the compiler version. */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long' type */ +#define FT_LONG64 +#define FT_INT64 long long int + +#endif /* FT_SIZEOF_LONG == 8 */ + + + /*************************************************************************/ + /* */ + /* A 64-bit data type will create compilation problems if you compile */ + /* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ + /* is defined. You can however ignore this rule by defining the */ + /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* */ +#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#ifdef __STDC__ + + /* Undefine the 64-bit macros in strict ANSI compilation mode. */ + /* Since `#undef' doesn't survive in configuration header files */ + /* we use the postprocessing facility of AC_CONFIG_HEADERS to */ + /* replace the leading `/' with `#'. */ +#undef FT_LONG64 +#undef FT_INT64 + +#endif /* __STDC__ */ + +#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ + + +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER + /* Provide assembler fragments for performance-critical functions. */ + /* These must be defined `static __inline__' with GCC. */ + +#ifdef __GNUC__ + +#if defined( __arm__ ) && !defined( __thumb__ ) +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + static __inline__ FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + __asm__ __volatile__ ( + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) ); + return a; + } + +#endif /* __arm__ && !__thumb__ */ + +#if defined( __i386__ ) +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + static __inline__ FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + + __asm__ __volatile__ ( + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "+d"(b) + : "a"(a) + : "%ecx" ); + return result; + } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER +#endif +#endif + + +#ifdef FT_MAKE_OPTION_SINGLE_OBJECT + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#ifdef __cplusplus +#define FT_LOCAL( x ) extern "C" x +#define FT_LOCAL_DEF( x ) extern "C" x +#else +#define FT_LOCAL( x ) extern x +#define FT_LOCAL_DEF( x ) x +#endif + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + + +#ifndef FT_BASE + +#ifdef __cplusplus +#define FT_BASE( x ) extern "C" x +#else +#define FT_BASE( x ) extern x +#endif + +#endif /* !FT_BASE */ + + +#ifndef FT_BASE_DEF + +#ifdef __cplusplus +#define FT_BASE_DEF( x ) x +#else +#define FT_BASE_DEF( x ) x +#endif + +#endif /* !FT_BASE_DEF */ + + +#ifndef FT_EXPORT + +#ifdef __cplusplus +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif + +#endif /* !FT_EXPORT */ + + +#ifndef FT_EXPORT_DEF + +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) extern "C" x +#else +#define FT_EXPORT_DEF( x ) extern x +#endif + +#endif /* !FT_EXPORT_DEF */ + + +#ifndef FT_EXPORT_VAR + +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif + +#endif /* !FT_EXPORT_VAR */ + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"' for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + + +FT_END_HEADER + + +#endif /* __FTCONFIG_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/config/ftheader.h b/lib/windows32/include/freetype/config/ftheader.h new file mode 100644 index 0000000..b63945d --- /dev/null +++ b/lib/windows32/include/freetype/config/ftheader.h @@ -0,0 +1,780 @@ +/***************************************************************************/ +/* */ +/* ftheader.h */ +/* */ +/* Build macros of the FreeType 2 library. */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __FT_HEADER_H__ +#define __FT_HEADER_H__ + + + /*@***********************************************************************/ + /* */ + /* <Macro> */ + /* FT_BEGIN_HEADER */ + /* */ + /* <Description> */ + /* This macro is used in association with @FT_END_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_BEGIN_HEADER extern "C" { +#else +#define FT_BEGIN_HEADER /* nothing */ +#endif + + + /*@***********************************************************************/ + /* */ + /* <Macro> */ + /* FT_END_HEADER */ + /* */ + /* <Description> */ + /* This macro is used in association with @FT_BEGIN_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_END_HEADER } +#else +#define FT_END_HEADER /* nothing */ +#endif + + + /*************************************************************************/ + /* */ + /* Aliases for the FreeType 2 public and configuration files. */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* header_file_macros */ + /* */ + /* <Title> */ + /* Header File Macros */ + /* */ + /* <Abstract> */ + /* Macro definitions used to #include specific header files. */ + /* */ + /* <Description> */ + /* The following macros are defined to the name of specific */ + /* FreeType~2 header files. They can be used directly in #include */ + /* statements as in: */ + /* */ + /* { */ + /* #include FT_FREETYPE_H */ + /* #include FT_MULTIPLE_MASTERS_H */ + /* #include FT_GLYPH_H */ + /* } */ + /* */ + /* There are several reasons why we are now using macros to name */ + /* public header files. The first one is that such macros are not */ + /* limited to the infamous 8.3~naming rule required by DOS (and */ + /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ + /* */ + /* The second reason is that it allows for more flexibility in the */ + /* way FreeType~2 is installed on a given system. */ + /* */ + /*************************************************************************/ + + + /* configuration files */ + + /************************************************************************* + * + * @macro: + * FT_CONFIG_CONFIG_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 configuration data. + * + */ +#ifndef FT_CONFIG_CONFIG_H +#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_STANDARD_LIBRARY_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 interface to the standard C library functions. + * + */ +#ifndef FT_CONFIG_STANDARD_LIBRARY_H +#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_OPTIONS_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 project-specific configuration options. + * + */ +#ifndef FT_CONFIG_OPTIONS_H +#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_MODULES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 modules that are statically linked to new library + * instances in @FT_Init_FreeType. + * + */ +#ifndef FT_CONFIG_MODULES_H +#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> +#endif + + /* */ + + /* public headers */ + + /************************************************************************* + * + * @macro: + * FT_FREETYPE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * base FreeType~2 API. + * + */ +#define FT_FREETYPE_H <freetype/freetype.h> + + + /************************************************************************* + * + * @macro: + * FT_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 error codes (and messages). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_ERRORS_H <freetype/fterrors.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). + * + */ +#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> + + + /************************************************************************* + * + * @macro: + * FT_SYSTEM_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management + * and stream i/o). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_SYSTEM_H <freetype/ftsystem.h> + + + /************************************************************************* + * + * @macro: + * FT_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing type + * definitions related to glyph images (i.e., bitmaps, outlines, + * scan-converter parameters). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_IMAGE_H <freetype/ftimage.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * basic data types defined by FreeType~2. + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_TYPES_H <freetype/fttypes.h> + + + /************************************************************************* + * + * @macro: + * FT_LIST_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list management API of FreeType~2. + * + * (Most applications will never need to include this file.) + * + */ +#define FT_LIST_H <freetype/ftlist.h> + + + /************************************************************************* + * + * @macro: + * FT_OUTLINE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * scalable outline management API of FreeType~2. + * + */ +#define FT_OUTLINE_H <freetype/ftoutln.h> + + + /************************************************************************* + * + * @macro: + * FT_SIZES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API which manages multiple @FT_Size objects per face. + * + */ +#define FT_SIZES_H <freetype/ftsizes.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * module management API of FreeType~2. + * + */ +#define FT_MODULE_H <freetype/ftmodapi.h> + + + /************************************************************************* + * + * @macro: + * FT_RENDER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * renderer module management API of FreeType~2. + * + */ +#define FT_RENDER_H <freetype/ftrender.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPE1_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the Type~1 format. + * + */ +#define FT_TYPE1_TABLES_H <freetype/t1tables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_IDS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * enumeration values which identify name strings, languages, encodings, + * etc. This file really contains a _large_ set of constant macro + * definitions, taken from the TrueType and OpenType specifications. + * + */ +#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the TrueType (as well as OpenType) format. + * + */ +#define FT_TRUETYPE_TABLES_H <freetype/tttables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TAGS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of TrueType four-byte `tags' which identify blocks in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_TRUETYPE_TAGS_H <freetype/tttags.h> + + + /************************************************************************* + * + * @macro: + * FT_BDF_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which accesses BDF-specific strings from a + * face. + * + */ +#define FT_BDF_H <freetype/ftbdf.h> + + + /************************************************************************* + * + * @macro: + * FT_CID_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which access CID font information from a + * face. + * + */ +#define FT_CID_H <freetype/ftcid.h> + + + /************************************************************************* + * + * @macro: + * FT_GZIP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports gzip-compressed files. + * + */ +#define FT_GZIP_H <freetype/ftgzip.h> + + + /************************************************************************* + * + * @macro: + * FT_LZW_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports LZW-compressed files. + * + */ +#define FT_LZW_H <freetype/ftlzw.h> + + + /************************************************************************* + * + * @macro: + * FT_WINFONTS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports Windows FNT files. + * + */ +#define FT_WINFONTS_H <freetype/ftwinfnt.h> + + + /************************************************************************* + * + * @macro: + * FT_GLYPH_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional glyph management component. + * + */ +#define FT_GLYPH_H <freetype/ftglyph.h> + + + /************************************************************************* + * + * @macro: + * FT_BITMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional bitmap conversion component. + * + */ +#define FT_BITMAP_H <freetype/ftbitmap.h> + + + /************************************************************************* + * + * @macro: + * FT_BBOX_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional exact bounding box computation routines. + * + */ +#define FT_BBOX_H <freetype/ftbbox.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. + * + */ +#define FT_CACHE_H <freetype/ftcache.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `glyph image' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for @FT_Glyph elements. You can also + * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to + * store small glyph bitmaps, as it will use less memory. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * glyph image-related cache declarations. + * + */ +#define FT_CACHE_IMAGE_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_SMALL_BITMAPS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `small bitmaps' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for small glyph bitmaps in a relatively + * memory-efficient way. You can also use the API defined in + * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, + * including scalable outlines. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * small bitmaps-related cache declarations. + * + */ +#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_CHARMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `charmap' API of the FreeType~2 cache sub-system. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * charmap-based cache declarations. + * + */ +#define FT_CACHE_CHARMAP_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_MAC_H + * + * @description: + * A macro used in #include statements to name the file containing the + * Macintosh-specific FreeType~2 API. The latter is used to access + * fonts embedded in resource forks. + * + * This header file must be explicitly included by client applications + * compiled on the Mac (note that the base API still works though). + * + */ +#define FT_MAC_H <freetype/ftmac.h> + + + /************************************************************************* + * + * @macro: + * FT_MULTIPLE_MASTERS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional multiple-masters management API of FreeType~2. + * + */ +#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> + + + /************************************************************************* + * + * @macro: + * FT_SFNT_NAMES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which accesses embedded `name' strings in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_SFNT_NAMES_H <freetype/ftsnames.h> + + + /************************************************************************* + * + * @macro: + * FT_OPENTYPE_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, + * GPOS, GSUB, JSTF). + * + */ +#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h> + + + /************************************************************************* + * + * @macro: + * FT_GX_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, + * mort, morx, bsln, just, kern, opbd, trak, prop). + * + */ +#define FT_GX_VALIDATE_H <freetype/ftgxval.h> + + + /************************************************************************* + * + * @macro: + * FT_PFR_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which accesses PFR-specific data. + * + */ +#define FT_PFR_H <freetype/ftpfr.h> + + + /************************************************************************* + * + * @macro: + * FT_STROKER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions to stroke outline paths. + */ +#define FT_STROKER_H <freetype/ftstroke.h> + + + /************************************************************************* + * + * @macro: + * FT_SYNTHESIS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs artificial obliquing and emboldening. + */ +#define FT_SYNTHESIS_H <freetype/ftsynth.h> + + + /************************************************************************* + * + * @macro: + * FT_XFREE86_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions specific to the XFree86 and + * X.Org X11 servers. + */ +#define FT_XFREE86_H <freetype/ftxf86.h> + + + /************************************************************************* + * + * @macro: + * FT_TRIGONOMETRY_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs trigonometric computations (e.g., + * cosines and arc tangents). + */ +#define FT_TRIGONOMETRY_H <freetype/fttrigon.h> + + + /************************************************************************* + * + * @macro: + * FT_LCD_FILTER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_LCD_FILTER_H <freetype/ftlcdfil.h> + + + /************************************************************************* + * + * @macro: + * FT_UNPATENTED_HINTING_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h> + + + /************************************************************************* + * + * @macro: + * FT_INCREMENTAL_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_INCREMENTAL_H <freetype/ftincrem.h> + + + /************************************************************************* + * + * @macro: + * FT_GASP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns entries from the TrueType GASP table. + */ +#define FT_GASP_H <freetype/ftgasp.h> + + + /************************************************************************* + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ +#define FT_ADVANCES_H <freetype/ftadvanc.h> + + + /* */ + +#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> + + + /* The internals of the cache sub-system are no longer exposed. We */ + /* default to FT_CACHE_H at the moment just in case, but we know of */ + /* no rogue client that uses them. */ + /* */ +#define FT_CACHE_MANAGER_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h> + + +#define FT_INCREMENTAL_H <freetype/ftincrem.h> + +#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> + + + /* + * Include internal headers definitions from <freetype/internal/...> + * only when building the library. + */ +#ifdef FT2_BUILD_LIBRARY +#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> +#include FT_INTERNAL_INTERNAL_H +#endif /* FT2_BUILD_LIBRARY */ + + +#endif /* __FT2_BUILD_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/config/ftmodule.h b/lib/windows32/include/freetype/config/ftmodule.h new file mode 100644 index 0000000..b729977 --- /dev/null +++ b/lib/windows32/include/freetype/config/ftmodule.h @@ -0,0 +1,20 @@ +/* This is a generated file. */ +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +/* EOF */ diff --git a/lib/windows32/include/freetype/config/ftoption.h b/lib/windows32/include/freetype/config/ftoption.h new file mode 100644 index 0000000..2b46259 --- /dev/null +++ b/lib/windows32/include/freetype/config/ftoption.h @@ -0,0 +1,733 @@ +/***************************************************************************/ +/* */ +/* ftoption.h */ +/* */ +/* User-selectable configuration macros (specification only). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */ +/* 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOPTION_H__ +#define __FTOPTION_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* USER-SELECTABLE CONFIGURATION MACROS */ + /* */ + /* This file contains the default configuration macro definitions for */ + /* a standard build of the FreeType library. There are three ways to */ + /* use this file to build project-specific versions of the library: */ + /* */ + /* - You can modify this file by hand, but this is not recommended in */ + /* cases where you would like to build several versions of the */ + /* library from a single source directory. */ + /* */ + /* - You can put a copy of this file in your build directory, more */ + /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ + /* is the name of a directory that is included _before_ the FreeType */ + /* include path during compilation. */ + /* */ + /* The default FreeType Makefiles and Jamfiles use the build */ + /* directory `builds/<system>' by default, but you can easily change */ + /* that for your own projects. */ + /* */ + /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ + /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ + /* locate this file during the build. For example, */ + /* */ + /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ + /* #include <freetype/config/ftheader.h> */ + /* */ + /* will use `$BUILD/myftoptions.h' instead of this file for macro */ + /* definitions. */ + /* */ + /* Note also that you can similarly pre-define the macro */ + /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ + /* that are statically linked to the library at compile time. By */ + /* default, this file is <freetype/config/ftmodule.h>. */ + /* */ + /* We highly recommend using the third method whenever possible. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Uncomment the line below if you want to activate sub-pixel rendering */ + /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* */ + /* Note that this feature is covered by several Microsoft patents */ + /* and should not be activated in any default build of the library. */ + /* */ + /* This macro has no impact on the FreeType API, only on its */ + /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ + /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ + /* the original size in case this macro isn't defined; however, each */ + /* triplet of subpixels has R=G=B. */ + /* */ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + + /*************************************************************************/ + /* */ + /* Many compilers provide a non-ANSI 64-bit data type that can be used */ + /* by FreeType to speed up some computations. However, this will create */ + /* some problems when compiling the library in strict ANSI mode. */ + /* */ + /* For this reason, the use of 64-bit integers is normally disabled when */ + /* the __STDC__ macro is defined. You can however disable this by */ + /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ + /* */ + /* For most compilers, this will only create compilation warnings when */ + /* building the library. */ + /* */ + /* ObNote: The compiler-specific 64-bit integers are detected in the */ + /* file `ftconfig.h' either statically or through the */ + /* `configure' script on supported platforms. */ + /* */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /*************************************************************************/ + /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /*************************************************************************/ + /* */ + /* LZW-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `compress' program. This is mostly used to parse many of the PCF */ + /* files that come with various X11 distributions. The implementation */ + /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ + /* (see src/lzw/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_LZW + + + /*************************************************************************/ + /* */ + /* Gzip-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `gzip' program. This is mostly used to parse many of the PCF files */ + /* that come with XFree86. The implementation uses `zlib' to */ + /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. See also */ + /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ + /* */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /*************************************************************************/ + /* */ + /* ZLib library selection */ + /* */ + /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ + /* It allows FreeType's `ftgzip' component to link to the system's */ + /* installation of the ZLib library. This is useful on systems like */ + /* Unix or VMS where it generally is already available. */ + /* */ + /* If you let it undefined, the component will use its own copy */ + /* of the zlib sources instead. These have been modified to be */ + /* included directly within the component and *not* export external */ + /* function names. This allows you to link any program with FreeType */ + /* _and_ ZLib without linking conflicts. */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + + + /*************************************************************************/ + /* */ + /* DLL export compilation */ + /* */ + /* When compiling FreeType as a DLL, some systems/compilers need a */ + /* special keyword in front OR after the return type of function */ + /* declarations. */ + /* */ + /* Two macros are used within the FreeType source code to define */ + /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ + /* */ + /* FT_EXPORT( return_type ) */ + /* */ + /* is used in a function declaration, as in */ + /* */ + /* FT_EXPORT( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* */ + /* */ + /* FT_EXPORT_DEF( return_type ) */ + /* */ + /* is used in a function definition, as in */ + /* */ + /* FT_EXPORT_DEF( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ) */ + /* { */ + /* ... some code ... */ + /* return FT_Err_Ok; */ + /* } */ + /* */ + /* You can provide your own implementation of FT_EXPORT and */ + /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ + /* will be later automatically defined as `extern return_type' to */ + /* allow normal compilation. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_EXPORT(x) extern x */ +/* #define FT_EXPORT_DEF(x) x */ + + + /*************************************************************************/ + /* */ + /* Glyph Postscript Names handling */ + /* */ + /* By default, FreeType 2 is compiled with the `psnames' module. This */ + /* module is in charge of converting a glyph name string into a */ + /* Unicode value, or return a Macintosh standard glyph name for the */ + /* use with the TrueType `post' table. */ + /* */ + /* Undefine this macro if you do not want `psnames' compiled in your */ + /* build of FreeType. This has the following effects: */ + /* */ + /* - The TrueType driver will provide its own set of glyph names, */ + /* if you build it to support postscript names in the TrueType */ + /* `post' table. */ + /* */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ + /* charmap out of the glyphs found in the fonts. */ + /* */ + /* You would normally undefine this configuration macro when building */ + /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ + /* */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Postscript Names to Unicode Values support */ + /* */ + /* By default, FreeType 2 is built with the `PSNames' module compiled */ + /* in. Among other things, the module is used to convert a glyph name */ + /* into a Unicode value. This is especially useful in order to */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* through a big table named the `Adobe Glyph List' (AGL). */ + /* */ + /* Undefine this macro if you do not want the Adobe Glyph List */ + /* compiled in your `PSNames' module. The Type 1 driver will not be */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ + /* fonts. */ + /* */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /*************************************************************************/ + /* */ + /* Support for Mac fonts */ + /* */ + /* Define this macro if you want support for outline fonts in Mac */ + /* format (mac dfont, mac resource, macbinary containing a mac */ + /* resource) on non-Mac platforms. */ + /* */ + /* Note that the `FOND' resource isn't checked. */ + /* */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /*************************************************************************/ + /* */ + /* Guessing methods to access embedded resource forks */ + /* */ + /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ + /* GNU/Linux). */ + /* */ + /* Resource forks which include fonts data are stored sometimes in */ + /* locations which users or developers don't expected. In some cases, */ + /* resource forks start with some offset from the head of a file. In */ + /* other cases, the actual resource fork is stored in file different */ + /* from what the user specifies. If this option is activated, */ + /* FreeType tries to guess whether such offsets or different file */ + /* names must be used. */ + /* */ + /* Note that normal, direct access of resource forks is controlled via */ + /* the FT_CONFIG_OPTION_MAC_FONTS option. */ + /* */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /*************************************************************************/ + /* */ + /* Allow the use of FT_Incremental_Interface to load typefaces that */ + /* contain no glyph data, but supply it via a callback function. */ + /* This is required by clients supporting document formats which */ + /* supply font data incrementally as the document is parsed, such */ + /* as the Ghostscript interpreter for the PostScript language. */ + /* */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /*************************************************************************/ + /* */ + /* The size in bytes of the render pool used by the scan-line converter */ + /* to do all of its work. */ + /* */ + /* This must be greater than 4KByte if you use FreeType to rasterize */ + /* glyphs; otherwise, you may set it to zero to avoid unnecessary */ + /* allocation of the render pool. */ + /* */ +#define FT_RENDER_POOL_SIZE 16384L + + + /*************************************************************************/ + /* */ + /* FT_MAX_MODULES */ + /* */ + /* The maximum number of modules that can be registered in a single */ + /* FreeType library object. 32 is the default. */ + /* */ +#define FT_MAX_MODULES 32 + + + /*************************************************************************/ + /* */ + /* Debug level */ + /* */ + /* FreeType can be compiled in debug or trace mode. In debug mode, */ + /* errors are reported through the `ftdebug' component. In trace */ + /* mode, additional messages are sent to the standard output during */ + /* execution. */ + /* */ + /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ + /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ + /* */ + /* Don't define any of these macros to compile in `release' mode! */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_LEVEL_ERROR */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Memory Debugging */ + /* */ + /* FreeType now comes with an integrated memory debugger that is */ + /* capable of detecting simple errors like memory leaks or double */ + /* deletes. To compile it within your build of the library, you */ + /* should define FT_DEBUG_MEMORY here. */ + /* */ + /* Note that the memory debugger is only activated at runtime when */ + /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_DEBUG_MEMORY */ + + + /*************************************************************************/ + /* */ + /* Module errors */ + /* */ + /* If this macro is set (which is _not_ the default), the higher byte */ + /* of an error code gives the module in which the error has occurred, */ + /* while the lower byte is the real error code. */ + /* */ + /* Setting this macro makes sense for debugging purposes only, since */ + /* it would break source compatibility of certain programs that use */ + /* FreeType 2. */ + /* */ + /* More details can be found in the files ftmoderr.h and fterrors.h. */ + /* */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /*************************************************************************/ + /* */ + /* Position Independent Code */ + /* */ + /* If this macro is set (which is _not_ the default), FreeType2 will */ + /* avoid creating constants that require address fixups. Instead the */ + /* constants will be moved into a struct and additional intialization */ + /* code will be used. */ + /* */ + /* Setting this macro is needed for systems that prohibit address */ + /* fixups, such as BREW. */ + /* */ +/* #define FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ + /* embedded bitmaps in all formats using the SFNT module (namely */ + /* TrueType & OpenType). */ + /* */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ + /* load and enumerate the glyph Postscript names in a TrueType or */ + /* OpenType file. */ + /* */ + /* Note that when you do not compile the `PSNames' module by undefining */ + /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ + /* contain additional code used to read the PS Names table from a font. */ + /* */ + /* (By default, the module uses `PSNames' to extract glyph names.) */ + /* */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ + /* access the internal name table in a SFNT-based format like TrueType */ + /* or OpenType. The name table contains various strings used to */ + /* describe the font, like family name, copyright, version, etc. It */ + /* does not contain any glyph name though. */ + /* */ + /* Accessing SFNT names is done through the functions declared in */ + /* `freetype/ftsnames.h'. */ + /* */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /*************************************************************************/ + /* */ + /* TrueType CMap support */ + /* */ + /* Here you can fine-tune which TrueType CMap table format shall be */ + /* supported. */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ + /* a bytecode interpreter in the TrueType driver. */ + /* */ + /* By undefining this, you will only compile the code necessary to load */ + /* TrueType glyphs without hinting. */ + /* */ + /* Do not #undef this macro here, since the build system might */ + /* define it for certain configurations only. */ + /* */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /*************************************************************************/ + /* */ + /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ + /* of the TrueType bytecode interpreter is used that doesn't implement */ + /* any of the patented opcodes and algorithms. The patents related to */ + /* TrueType hinting have expired worldwide since May 2010; this option */ + /* is now deprecated. */ + /* */ + /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ + /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ + /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ + /* */ + /* This macro is only useful for a small number of font files (mostly */ + /* for Asian scripts) that require bytecode interpretation to properly */ + /* load glyphs. For all other fonts, this produces unpleasant results, */ + /* thus the unpatented interpreter is never used to load glyphs from */ + /* TrueType fonts unless one of the following two options is used. */ + /* */ + /* - The unpatented interpreter is explicitly activated by the user */ + /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ + /* when opening the FT_Face. */ + /* */ + /* - FreeType detects that the FT_Face corresponds to one of the */ + /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ + /* contains a hard-coded list of font names and other matching */ + /* parameters (see function `tt_face_init' in file */ + /* `src/truetype/ttobjs.c'). */ + /* */ + /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* */ + /* { */ + /* FT_Parameter parameter; */ + /* FT_Open_Args open_args; */ + /* */ + /* */ + /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ + /* */ + /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ + /* open_args.pathname = my_font_pathname; */ + /* open_args.num_params = 1; */ + /* open_args.params = ¶meter; */ + /* */ + /* error = FT_Open_Face( library, &open_args, index, &face ); */ + /* ... */ + /* } */ + /* */ +/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ + /* bytecode interpreter with a huge switch statement, rather than a call */ + /* table. This results in smaller and faster code for a number of */ + /* architectures. */ + /* */ + /* Note however that on some compiler/processor combinations, undefining */ + /* this macro will generate faster, though larger, code. */ + /* */ +#define TT_CONFIG_OPTION_INTERPRETER_SWITCH + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ + /* TrueType glyph loader to use Apple's definition of how to handle */ + /* component offsets in composite glyphs. */ + /* */ + /* Apple and MS disagree on the default behavior of component offsets */ + /* in composites. Apple says that they should be scaled by the scaling */ + /* factors in the transformation matrix (roughly, it's more complex) */ + /* while MS says they should not. OpenType defines two bits in the */ + /* composite flags array which can be used to disambiguate, but old */ + /* fonts will not have them. */ + /* */ + /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ + /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ + /* */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ + /* support for Apple's distortable font technology (fvar, gvar, cvar, */ + /* and avar tables). This has many similarities to Type 1 Multiple */ + /* Masters support. */ + /* */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ + /* an embedded `BDF ' table within SFNT-based bitmap formats. */ + /* */ +#define TT_CONFIG_OPTION_BDF + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ + /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ + /* required. */ + /* */ +#define T1_MAX_DICT_DEPTH 5 + + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 16 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ + /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ + /* files into an existing face. Note that if set, the T1 driver will be */ + /* unable to produce kerning distances. */ + /* */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of the Multiple Masters font support in the Type 1 */ + /* driver. */ + /* */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ + /* support. */ + /* */ +#define AF_CONFIG_OPTION_CJK + + /*************************************************************************/ + /* */ + /* Compile autofit module with Indic script support. */ + /* */ +#define AF_CONFIG_OPTION_INDIC + + /* */ + + + /* + * Define this variable if you want to keep the layout of internal + * structures that was used prior to FreeType 2.2. This also compiles in + * a few obsolete functions to avoid linking problems on typical Unix + * distributions. + * + * For embedded systems or building a new distribution from scratch, it + * is recommended to disable the macro since it reduces the library's code + * size and activates a few memory-saving optimizations as well. + */ +#define FT_CONFIG_OPTION_OLD_INTERNALS + + + /* + * To detect legacy cache-lookup call from a rogue client (<= 2.1.7), + * we restrict the number of charmaps in a font. The current API of + * FTC_CMapCache_Lookup() takes cmap_index & charcode, but old API + * takes charcode only. To determine the passed value is for cmap_index + * or charcode, the possible cmap_index is restricted not to exceed + * the minimum possible charcode by a rogue client. It is also very + * unlikely that a rogue client is interested in Unicode values 0 to 15. + * + * NOTE: The original threshold was 4 deduced from popular number of + * cmap subtables in UCS-4 TrueType fonts, but now it is not + * irregular for OpenType fonts to have more than 4 subtables, + * because variation selector subtables are available for Apple + * and Microsoft platforms. + */ + +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS +#define FT_MAX_CHARMAP_CACHEABLE 15 +#endif + + + /* + * This macro is defined if either unpatented or native TrueType + * hinting is requested by the definitions above. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING +#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING +#define TT_USE_BYTECODE_INTERPRETER +#endif + +FT_END_HEADER + + +#endif /* __FTOPTION_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/config/ftstdlib.h b/lib/windows32/include/freetype/config/ftstdlib.h new file mode 100644 index 0000000..30ec14e --- /dev/null +++ b/lib/windows32/include/freetype/config/ftstdlib.h @@ -0,0 +1,173 @@ +/***************************************************************************/ +/* */ +/* ftstdlib.h */ +/* */ +/* ANSI-specific library and header configuration file (specification */ +/* only). */ +/* */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to group all #includes to the ANSI C library that */ + /* FreeType normally requires. It also defines macros to rename the */ + /* standard functions within the FreeType source code. */ + /* */ + /* Load a file which defines __FTSTDLIB_H__ before this one to override */ + /* it. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSTDLIB_H__ +#define __FTSTDLIB_H__ + + +#include <stddef.h> + +#define ft_ptrdiff_t ptrdiff_t + + + /**********************************************************************/ + /* */ + /* integer limits */ + /* */ + /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ + /* of `int' and `long' in bytes at compile-time. So far, this works */ + /* for all platforms the library has been tested on. */ + /* */ + /* Note that on the extremely rare platforms that do not provide */ + /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ + /* old Crays where `int' is 36 bits), we do not make any guarantee */ + /* about the correct behaviour of FT2 with all fonts. */ + /* */ + /* In these case, `ftconfig.h' will refuse to compile anyway with a */ + /* message like `couldn't find 32-bit type' or something similar. */ + /* */ + /**********************************************************************/ + + +#include <limits.h> + +#define FT_CHAR_BIT CHAR_BIT +#define FT_INT_MAX INT_MAX +#define FT_INT_MIN INT_MIN +#define FT_UINT_MAX UINT_MAX +#define FT_ULONG_MAX ULONG_MAX + + + /**********************************************************************/ + /* */ + /* character and string processing */ + /* */ + /**********************************************************************/ + + +#include <string.h> + +#define ft_memchr memchr +#define ft_memcmp memcmp +#define ft_memcpy memcpy +#define ft_memmove memmove +#define ft_memset memset +#define ft_strcat strcat +#define ft_strcmp strcmp +#define ft_strcpy strcpy +#define ft_strlen strlen +#define ft_strncmp strncmp +#define ft_strncpy strncpy +#define ft_strrchr strrchr +#define ft_strstr strstr + + + /**********************************************************************/ + /* */ + /* file handling */ + /* */ + /**********************************************************************/ + + +#include <stdio.h> + +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell +#define ft_sprintf sprintf + + + /**********************************************************************/ + /* */ + /* sorting */ + /* */ + /**********************************************************************/ + + +#include <stdlib.h> + +#define ft_qsort qsort + + + /**********************************************************************/ + /* */ + /* memory allocation */ + /* */ + /**********************************************************************/ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /**********************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /**********************************************************************/ + + +#define ft_atol atol +#define ft_labs labs + + + /**********************************************************************/ + /* */ + /* execution control */ + /* */ + /**********************************************************************/ + + +#include <setjmp.h> + +#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ + /* jmp_buf is defined as a macro */ + /* on certain platforms */ + +#define ft_longjmp longjmp +#define ft_setjmp( b ) setjmp( *(jmp_buf*) &(b) ) /* same thing here */ + + + /* the following is only used for debugging purposes, i.e., if */ + /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ + +#include <stdarg.h> + + +#endif /* __FTSTDLIB_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/freetype.h b/lib/windows32/include/freetype/freetype.h new file mode 100644 index 0000000..7799b70 --- /dev/null +++ b/lib/windows32/include/freetype/freetype.h @@ -0,0 +1,3919 @@ +/***************************************************************************/ +/* */ +/* freetype.h */ +/* */ +/* FreeType high-level API and common types (specification only). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */ +/* 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef FT_FREETYPE_H +#error "`ft2build.h' hasn't been included yet!" +#error "Please always use macros to include FreeType header files." +#error "Example:" +#error " #include <ft2build.h>" +#error " #include FT_FREETYPE_H" +#endif + + +#ifndef __FREETYPE_H__ +#define __FREETYPE_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_ERRORS_H +#include FT_TYPES_H + + +FT_BEGIN_HEADER + + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* user_allocation */ + /* */ + /* <Title> */ + /* User allocation */ + /* */ + /* <Abstract> */ + /* How client applications should allocate FreeType data structures. */ + /* */ + /* <Description> */ + /* FreeType assumes that structures allocated by the user and passed */ + /* as arguments are zeroed out except for the actual data. In other */ + /* words, it is recommended to use `calloc' (or variants of it) */ + /* instead of `malloc' for allocation. */ + /* */ + /*************************************************************************/ + + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S I C T Y P E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /* <Title> */ + /* Base Interface */ + /* */ + /* <Abstract> */ + /* The FreeType~2 base font interface. */ + /* */ + /* <Description> */ + /* This section describes the public high-level API of FreeType~2. */ + /* */ + /* <Order> */ + /* FT_Library */ + /* FT_Face */ + /* FT_Size */ + /* FT_GlyphSlot */ + /* FT_CharMap */ + /* FT_Encoding */ + /* */ + /* FT_FaceRec */ + /* */ + /* FT_FACE_FLAG_SCALABLE */ + /* FT_FACE_FLAG_FIXED_SIZES */ + /* FT_FACE_FLAG_FIXED_WIDTH */ + /* FT_FACE_FLAG_HORIZONTAL */ + /* FT_FACE_FLAG_VERTICAL */ + /* FT_FACE_FLAG_SFNT */ + /* FT_FACE_FLAG_KERNING */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS */ + /* FT_FACE_FLAG_GLYPH_NAMES */ + /* FT_FACE_FLAG_EXTERNAL_STREAM */ + /* FT_FACE_FLAG_FAST_GLYPHS */ + /* FT_FACE_FLAG_HINTER */ + /* */ + /* FT_STYLE_FLAG_BOLD */ + /* FT_STYLE_FLAG_ITALIC */ + /* */ + /* FT_SizeRec */ + /* FT_Size_Metrics */ + /* */ + /* FT_GlyphSlotRec */ + /* FT_Glyph_Metrics */ + /* FT_SubGlyph */ + /* */ + /* FT_Bitmap_Size */ + /* */ + /* FT_Init_FreeType */ + /* FT_Done_FreeType */ + /* */ + /* FT_New_Face */ + /* FT_Done_Face */ + /* FT_New_Memory_Face */ + /* FT_Open_Face */ + /* FT_Open_Args */ + /* FT_Parameter */ + /* FT_Attach_File */ + /* FT_Attach_Stream */ + /* */ + /* FT_Set_Char_Size */ + /* FT_Set_Pixel_Sizes */ + /* FT_Request_Size */ + /* FT_Select_Size */ + /* FT_Size_Request_Type */ + /* FT_Size_Request */ + /* FT_Set_Transform */ + /* FT_Load_Glyph */ + /* FT_Get_Char_Index */ + /* FT_Get_Name_Index */ + /* FT_Load_Char */ + /* */ + /* FT_OPEN_MEMORY */ + /* FT_OPEN_STREAM */ + /* FT_OPEN_PATHNAME */ + /* FT_OPEN_DRIVER */ + /* FT_OPEN_PARAMS */ + /* */ + /* FT_LOAD_DEFAULT */ + /* FT_LOAD_RENDER */ + /* FT_LOAD_MONOCHROME */ + /* FT_LOAD_LINEAR_DESIGN */ + /* FT_LOAD_NO_SCALE */ + /* FT_LOAD_NO_HINTING */ + /* FT_LOAD_NO_BITMAP */ + /* FT_LOAD_CROP_BITMAP */ + /* */ + /* FT_LOAD_VERTICAL_LAYOUT */ + /* FT_LOAD_IGNORE_TRANSFORM */ + /* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ + /* FT_LOAD_FORCE_AUTOHINT */ + /* FT_LOAD_NO_RECURSE */ + /* FT_LOAD_PEDANTIC */ + /* */ + /* FT_LOAD_TARGET_NORMAL */ + /* FT_LOAD_TARGET_LIGHT */ + /* FT_LOAD_TARGET_MONO */ + /* FT_LOAD_TARGET_LCD */ + /* FT_LOAD_TARGET_LCD_V */ + /* */ + /* FT_Render_Glyph */ + /* FT_Render_Mode */ + /* FT_Get_Kerning */ + /* FT_Kerning_Mode */ + /* FT_Get_Track_Kerning */ + /* FT_Get_Glyph_Name */ + /* FT_Get_Postscript_Name */ + /* */ + /* FT_CharMapRec */ + /* FT_Select_Charmap */ + /* FT_Set_Charmap */ + /* FT_Get_Charmap_Index */ + /* */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */ + /* FT_FSTYPE_EDITABLE_EMBEDDING */ + /* FT_FSTYPE_NO_SUBSETTING */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */ + /* */ + /* FT_Get_FSType_Flags */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Glyph_Metrics */ + /* */ + /* <Description> */ + /* A structure used to model the metrics of a single glyph. The */ + /* values are expressed in 26.6 fractional pixel format; if the flag */ + /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ + /* are expressed in font units instead. */ + /* */ + /* <Fields> */ + /* width :: */ + /* The glyph's width. */ + /* */ + /* height :: */ + /* The glyph's height. */ + /* */ + /* horiBearingX :: */ + /* Left side bearing for horizontal layout. */ + /* */ + /* horiBearingY :: */ + /* Top side bearing for horizontal layout. */ + /* */ + /* horiAdvance :: */ + /* Advance width for horizontal layout. */ + /* */ + /* vertBearingX :: */ + /* Left side bearing for vertical layout. */ + /* */ + /* vertBearingY :: */ + /* Top side bearing for vertical layout. */ + /* */ + /* vertAdvance :: */ + /* Advance height for vertical layout. */ + /* */ + /* <Note> */ + /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ + /* dimensions of the hinted glyph (in case hinting is applicable). */ + /* */ + typedef struct FT_Glyph_Metrics_ + { + FT_Pos width; + FT_Pos height; + + FT_Pos horiBearingX; + FT_Pos horiBearingY; + FT_Pos horiAdvance; + + FT_Pos vertBearingX; + FT_Pos vertBearingY; + FT_Pos vertAdvance; + + } FT_Glyph_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap_Size */ + /* */ + /* <Description> */ + /* This structure models the metrics of a bitmap strike (i.e., a set */ + /* of glyphs for a given point size and resolution) in a bitmap font. */ + /* It is used for the `available_sizes' field of @FT_Face. */ + /* */ + /* <Fields> */ + /* height :: The vertical distance, in pixels, between two */ + /* consecutive baselines. It is always positive. */ + /* */ + /* width :: The average width, in pixels, of all glyphs in the */ + /* strike. */ + /* */ + /* size :: The nominal size of the strike in 26.6 fractional */ + /* points. This field is not very useful. */ + /* */ + /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ + /* pixels. */ + /* */ + /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ + /* pixels. */ + /* */ + /* <Note> */ + /* Windows FNT: */ + /* The nominal size given in a FNT font is not reliable. Thus when */ + /* the driver finds it incorrect, it sets `size' to some calculated */ + /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ + /* height given in the font, respectively. */ + /* */ + /* TrueType embedded bitmaps: */ + /* `size', `width', and `height' values are not contained in the */ + /* bitmap strike itself. They are computed from the global font */ + /* parameters. */ + /* */ + typedef struct FT_Bitmap_Size_ + { + FT_Short height; + FT_Short width; + + FT_Pos size; + + FT_Pos x_ppem; + FT_Pos y_ppem; + + } FT_Bitmap_Size; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Library */ + /* */ + /* <Description> */ + /* A handle to a FreeType library instance. Each `library' is */ + /* completely independent from the others; it is the `root' of a set */ + /* of objects like fonts, faces, sizes, etc. */ + /* */ + /* It also embeds a memory manager (see @FT_Memory), as well as a */ + /* scan-line converter object (see @FT_Raster). */ + /* */ + /* For multi-threading applications each thread should have its own */ + /* FT_Library object. */ + /* */ + /* <Note> */ + /* Library objects are normally created by @FT_Init_FreeType, and */ + /* destroyed with @FT_Done_FreeType. */ + /* */ + typedef struct FT_LibraryRec_ *FT_Library; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Module */ + /* */ + /* <Description> */ + /* A handle to a given FreeType module object. Each module can be a */ + /* font driver, a renderer, or anything else that provides services */ + /* to the formers. */ + /* */ + typedef struct FT_ModuleRec_* FT_Module; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Driver */ + /* */ + /* <Description> */ + /* A handle to a given FreeType font driver object. Each font driver */ + /* is a special module capable of creating faces from font files. */ + /* */ + typedef struct FT_DriverRec_* FT_Driver; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Renderer */ + /* */ + /* <Description> */ + /* A handle to a given FreeType renderer. A renderer is a special */ + /* module in charge of converting a glyph image to a bitmap, when */ + /* necessary. Each renderer supports a given glyph image format, and */ + /* one or more target surface depths. */ + /* */ + typedef struct FT_RendererRec_* FT_Renderer; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face */ + /* */ + /* <Description> */ + /* A handle to a given typographic face object. A face object models */ + /* a given typeface, in a given style. */ + /* */ + /* <Note> */ + /* Each face object also owns a single @FT_GlyphSlot object, as well */ + /* as one or more @FT_Size objects. */ + /* */ + /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ + /* a given filepathname or a custom input stream. */ + /* */ + /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ + /* */ + /* <Also> */ + /* See @FT_FaceRec for the publicly accessible fields of a given face */ + /* object. */ + /* */ + typedef struct FT_FaceRec_* FT_Face; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size */ + /* */ + /* <Description> */ + /* A handle to an object used to model a face scaled to a given */ + /* character size. */ + /* */ + /* <Note> */ + /* Each @FT_Face has an _active_ @FT_Size object that is used by */ + /* functions like @FT_Load_Glyph to determine the scaling */ + /* transformation which is used to load and hint glyphs and metrics. */ + /* */ + /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ + /* @FT_Request_Size or even @FT_Select_Size to change the content */ + /* (i.e., the scaling values) of the active @FT_Size. */ + /* */ + /* You can use @FT_New_Size to create additional size objects for a */ + /* given @FT_Face, but they won't be used by other functions until */ + /* you activate it through @FT_Activate_Size. Only one size can be */ + /* activated at any given time per face. */ + /* */ + /* <Also> */ + /* See @FT_SizeRec for the publicly accessible fields of a given size */ + /* object. */ + /* */ + typedef struct FT_SizeRec_* FT_Size; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_GlyphSlot */ + /* */ + /* <Description> */ + /* A handle to a given `glyph slot'. A slot is a container where it */ + /* is possible to load any of the glyphs contained in its parent */ + /* face. */ + /* */ + /* In other words, each time you call @FT_Load_Glyph or */ + /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ + /* i.e., the glyph's metrics, its image (bitmap or outline), and */ + /* other control information. */ + /* */ + /* <Also> */ + /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ + /* */ + typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_CharMap */ + /* */ + /* <Description> */ + /* A handle to a given character map. A charmap is used to translate */ + /* character codes in a given encoding into glyph indexes for its */ + /* parent's face. Some font formats may provide several charmaps per */ + /* font. */ + /* */ + /* Each face object owns zero or more charmaps, but only one of them */ + /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ + /* */ + /* The list of available charmaps in a face is available through the */ + /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ + /* */ + /* The currently active charmap is available as `face->charmap'. */ + /* You should call @FT_Set_Charmap to change it. */ + /* */ + /* <Note> */ + /* When a new face is created (either through @FT_New_Face or */ + /* @FT_Open_Face), the library looks for a Unicode charmap within */ + /* the list and automatically activates it. */ + /* */ + /* <Also> */ + /* See @FT_CharMapRec for the publicly accessible fields of a given */ + /* character map. */ + /* */ + typedef struct FT_CharMapRec_* FT_CharMap; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_ENC_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags into an unsigned long. It is */ + /* used to define `encoding' identifiers (see @FT_Encoding). */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_ENC_TAG( value, a, b, c, d ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) \ + value = ( ( (FT_UInt32)(a) << 24 ) | \ + ( (FT_UInt32)(b) << 16 ) | \ + ( (FT_UInt32)(c) << 8 ) | \ + (FT_UInt32)(d) ) + +#endif /* FT_ENC_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Encoding */ + /* */ + /* <Description> */ + /* An enumeration used to specify character sets supported by */ + /* charmaps. Used in the @FT_Select_Charmap API function. */ + /* */ + /* <Note> */ + /* Despite the name, this enumeration lists specific character */ + /* repertories (i.e., charsets), and not text encoding methods (e.g., */ + /* UTF-8, UTF-16, etc.). */ + /* */ + /* Other encodings might be defined in the future. */ + /* */ + /* <Values> */ + /* FT_ENCODING_NONE :: */ + /* The encoding value~0 is reserved. */ + /* */ + /* FT_ENCODING_UNICODE :: */ + /* Corresponds to the Unicode character set. This value covers */ + /* all versions of the Unicode repertoire, including ASCII and */ + /* Latin-1. Most fonts include a Unicode charmap, but not all */ + /* of them. */ + /* */ + /* For example, if you want to access Unicode value U+1F028 (and */ + /* the font contains it), use value 0x1F028 as the input value for */ + /* @FT_Get_Char_Index. */ + /* */ + /* FT_ENCODING_MS_SYMBOL :: */ + /* Corresponds to the Microsoft Symbol encoding, used to encode */ + /* mathematical symbols in the 32..255 character code range. For */ + /* more information, see `http://www.ceviz.net/symbol.htm'. */ + /* */ + /* FT_ENCODING_SJIS :: */ + /* Corresponds to Japanese SJIS encoding. More info at */ + /* at `http://langsupport.japanreference.com/encoding.shtml'. */ + /* See note on multi-byte encodings below. */ + /* */ + /* FT_ENCODING_GB2312 :: */ + /* Corresponds to an encoding system for Simplified Chinese as used */ + /* used in mainland China. */ + /* */ + /* FT_ENCODING_BIG5 :: */ + /* Corresponds to an encoding system for Traditional Chinese as */ + /* used in Taiwan and Hong Kong. */ + /* */ + /* FT_ENCODING_WANSUNG :: */ + /* Corresponds to the Korean encoding system known as Wansung. */ + /* For more information see */ + /* `http://www.microsoft.com/typography/unicode/949.txt'. */ + /* */ + /* FT_ENCODING_JOHAB :: */ + /* The Korean standard character set (KS~C 5601-1992), which */ + /* corresponds to MS Windows code page 1361. This character set */ + /* includes all possible Hangeul character combinations. */ + /* */ + /* FT_ENCODING_ADOBE_LATIN_1 :: */ + /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ + /* PostScript font. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_ADOBE_STANDARD :: */ + /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_EXPERT :: */ + /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_CUSTOM :: */ + /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ + /* OpenType/CFF fonts. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_APPLE_ROMAN :: */ + /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ + /* and OpenType fonts contain a charmap for this encoding, since */ + /* older versions of Mac OS are able to use it. */ + /* */ + /* FT_ENCODING_OLD_LATIN_2 :: */ + /* This value is deprecated and was never used nor reported by */ + /* FreeType. Don't use or test for it. */ + /* */ + /* FT_ENCODING_MS_SJIS :: */ + /* Same as FT_ENCODING_SJIS. Deprecated. */ + /* */ + /* FT_ENCODING_MS_GB2312 :: */ + /* Same as FT_ENCODING_GB2312. Deprecated. */ + /* */ + /* FT_ENCODING_MS_BIG5 :: */ + /* Same as FT_ENCODING_BIG5. Deprecated. */ + /* */ + /* FT_ENCODING_MS_WANSUNG :: */ + /* Same as FT_ENCODING_WANSUNG. Deprecated. */ + /* */ + /* FT_ENCODING_MS_JOHAB :: */ + /* Same as FT_ENCODING_JOHAB. Deprecated. */ + /* */ + /* <Note> */ + /* By default, FreeType automatically synthesizes a Unicode charmap */ + /* for PostScript fonts, using their glyph names dictionaries. */ + /* However, it also reports the encodings defined explicitly in the */ + /* font file, for the cases when they are needed, with the Adobe */ + /* values as well. */ + /* */ + /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ + /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ + /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ + /* which encoding is really present. If, for example, the */ + /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ + /* the font is encoded in KOI8-R. */ + /* */ + /* FT_ENCODING_NONE is always set (with a single exception) by the */ + /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ + /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ + /* which encoding is really present. For example, */ + /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ + /* Russian). */ + /* */ + /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ + /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ + /* FT_ENCODING_APPLE_ROMAN). */ + /* */ + /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ + /* @FT_Get_CMap_Language_ID to query the Mac language ID which may */ + /* be needed to be able to distinguish Apple encoding variants. See */ + /* */ + /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ + /* */ + /* to get an idea how to do that. Basically, if the language ID */ + /* is~0, don't use it, otherwise subtract 1 from the language ID. */ + /* Then examine `encoding_id'. If, for example, `encoding_id' is */ + /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ + /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ + /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ + /* variant the Arabic encoding. */ + /* */ + typedef enum FT_Encoding_ + { + FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), + + FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), + + FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), + FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), + + /* for backwards compatibility */ + FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, + FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, + FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, + FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, + FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, + + FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), + + FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), + + FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) + + } FT_Encoding; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* ft_encoding_xxx */ + /* */ + /* <Description> */ + /* These constants are deprecated; use the corresponding @FT_Encoding */ + /* values instead. */ + /* */ +#define ft_encoding_none FT_ENCODING_NONE +#define ft_encoding_unicode FT_ENCODING_UNICODE +#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL +#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 +#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 +#define ft_encoding_sjis FT_ENCODING_SJIS +#define ft_encoding_gb2312 FT_ENCODING_GB2312 +#define ft_encoding_big5 FT_ENCODING_BIG5 +#define ft_encoding_wansung FT_ENCODING_WANSUNG +#define ft_encoding_johab FT_ENCODING_JOHAB + +#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD +#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT +#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM +#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_CharMapRec */ + /* */ + /* <Description> */ + /* The base charmap structure. */ + /* */ + /* <Fields> */ + /* face :: A handle to the parent face object. */ + /* */ + /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ + /* this with @FT_Select_Charmap. */ + /* */ + /* platform_id :: An ID number describing the platform for the */ + /* following encoding ID. This comes directly from */ + /* the TrueType specification and should be emulated */ + /* for other formats. */ + /* */ + /* encoding_id :: A platform specific encoding number. This also */ + /* comes from the TrueType specification and should be */ + /* emulated similarly. */ + /* */ + typedef struct FT_CharMapRec_ + { + FT_Face face; + FT_Encoding encoding; + FT_UShort platform_id; + FT_UShort encoding_id; + + } FT_CharMapRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S E O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ + /* model private data of a given @FT_Face object. */ + /* */ + /* This structure might change between releases of FreeType~2 and is */ + /* not generally available to client applications. */ + /* */ + typedef struct FT_Face_InternalRec_* FT_Face_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_FaceRec */ + /* */ + /* <Description> */ + /* FreeType root face class structure. A face object models a */ + /* typeface in a font file. */ + /* */ + /* <Fields> */ + /* num_faces :: The number of faces in the font file. Some */ + /* font formats can have multiple faces in */ + /* a font file. */ + /* */ + /* face_index :: The index of the face in the font file. It */ + /* is set to~0 if there is only one face in */ + /* the font file. */ + /* */ + /* face_flags :: A set of bit flags that give important */ + /* information about the face; see */ + /* @FT_FACE_FLAG_XXX for the details. */ + /* */ + /* style_flags :: A set of bit flags indicating the style of */ + /* the face; see @FT_STYLE_FLAG_XXX for the */ + /* details. */ + /* */ + /* num_glyphs :: The number of glyphs in the face. If the */ + /* face is scalable and has sbits (see */ + /* `num_fixed_sizes'), it is set to the number */ + /* of outline glyphs. */ + /* */ + /* For CID-keyed fonts, this value gives the */ + /* highest CID used in the font. */ + /* */ + /* family_name :: The face's family name. This is an ASCII */ + /* string, usually in English, which describes */ + /* the typeface's family (like `Times New */ + /* Roman', `Bodoni', `Garamond', etc). This */ + /* is a least common denominator used to list */ + /* fonts. Some formats (TrueType & OpenType) */ + /* provide localized and Unicode versions of */ + /* this string. Applications should use the */ + /* format specific interface to access them. */ + /* Can be NULL (e.g., in fonts embedded in a */ + /* PDF file). */ + /* */ + /* style_name :: The face's style name. This is an ASCII */ + /* string, usually in English, which describes */ + /* the typeface's style (like `Italic', */ + /* `Bold', `Condensed', etc). Not all font */ + /* formats provide a style name, so this field */ + /* is optional, and can be set to NULL. As */ + /* for `family_name', some formats provide */ + /* localized and Unicode versions of this */ + /* string. Applications should use the format */ + /* specific interface to access them. */ + /* */ + /* num_fixed_sizes :: The number of bitmap strikes in the face. */ + /* Even if the face is scalable, there might */ + /* still be bitmap strikes, which are called */ + /* `sbits' in that case. */ + /* */ + /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ + /* strikes in the face. It is set to NULL if */ + /* there is no bitmap strike. */ + /* */ + /* num_charmaps :: The number of charmaps in the face. */ + /* */ + /* charmaps :: An array of the charmaps of the face. */ + /* */ + /* generic :: A field reserved for client uses. See the */ + /* @FT_Generic type description. */ + /* */ + /* bbox :: The font bounding box. Coordinates are */ + /* expressed in font units (see */ + /* `units_per_EM'). The box is large enough */ + /* to contain any glyph from the font. Thus, */ + /* `bbox.yMax' can be seen as the `maximal */ + /* ascender', and `bbox.yMin' as the `minimal */ + /* descender'. Only relevant for scalable */ + /* formats. */ + /* */ + /* Note that the bounding box might be off by */ + /* (at least) one pixel for hinted fonts. See */ + /* @FT_Size_Metrics for further discussion. */ + /* */ + /* units_per_EM :: The number of font units per EM square for */ + /* this face. This is typically 2048 for */ + /* TrueType fonts, and 1000 for Type~1 fonts. */ + /* Only relevant for scalable formats. */ + /* */ + /* ascender :: The typographic ascender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMax'. Only relevant for scalable */ + /* formats. */ + /* */ + /* descender :: The typographic descender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMin'. Note that this field is */ + /* usually negative. Only relevant for */ + /* scalable formats. */ + /* */ + /* height :: The height is the vertical distance */ + /* between two consecutive baselines, */ + /* expressed in font units. It is always */ + /* positive. Only relevant for scalable */ + /* formats. */ + /* */ + /* max_advance_width :: The maximal advance width, in font units, */ + /* for all glyphs in this face. This can be */ + /* used to make word wrapping computations */ + /* faster. Only relevant for scalable */ + /* formats. */ + /* */ + /* max_advance_height :: The maximal advance height, in font units, */ + /* for all glyphs in this face. This is only */ + /* relevant for vertical layouts, and is set */ + /* to `height' for fonts that do not provide */ + /* vertical metrics. Only relevant for */ + /* scalable formats. */ + /* */ + /* underline_position :: The position, in font units, of the */ + /* underline line for this face. It is the */ + /* center of the underlining stem. Only */ + /* relevant for scalable formats. */ + /* */ + /* underline_thickness :: The thickness, in font units, of the */ + /* underline for this face. Only relevant for */ + /* scalable formats. */ + /* */ + /* glyph :: The face's associated glyph slot(s). */ + /* */ + /* size :: The current active size for this face. */ + /* */ + /* charmap :: The current active charmap for this face. */ + /* */ + /* <Note> */ + /* Fields may be changed after a call to @FT_Attach_File or */ + /* @FT_Attach_Stream. */ + /* */ + typedef struct FT_FaceRec_ + { + FT_Long num_faces; + FT_Long face_index; + + FT_Long face_flags; + FT_Long style_flags; + + FT_Long num_glyphs; + + FT_String* family_name; + FT_String* style_name; + + FT_Int num_fixed_sizes; + FT_Bitmap_Size* available_sizes; + + FT_Int num_charmaps; + FT_CharMap* charmaps; + + FT_Generic generic; + + /*# The following member variables (down to `underline_thickness') */ + /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ + /*# for bitmap fonts. */ + FT_BBox bbox; + + FT_UShort units_per_EM; + FT_Short ascender; + FT_Short descender; + FT_Short height; + + FT_Short max_advance_width; + FT_Short max_advance_height; + + FT_Short underline_position; + FT_Short underline_thickness; + + FT_GlyphSlot glyph; + FT_Size size; + FT_CharMap charmap; + + /*@private begin */ + + FT_Driver driver; + FT_Memory memory; + FT_Stream stream; + + FT_ListRec sizes_list; + + FT_Generic autohint; + void* extensions; + + FT_Face_Internal internal; + + /*@private end */ + + } FT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FACE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `face_flags' field of the */ + /* @FT_FaceRec structure. They inform client applications of */ + /* properties of the corresponding face. */ + /* */ + /* <Values> */ + /* FT_FACE_FLAG_SCALABLE :: */ + /* Indicates that the face contains outline glyphs. This doesn't */ + /* prevent bitmap strikes, i.e., a face can have both this and */ + /* and @FT_FACE_FLAG_FIXED_SIZES set. */ + /* */ + /* FT_FACE_FLAG_FIXED_SIZES :: */ + /* Indicates that the face contains bitmap strikes. See also the */ + /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ + /* */ + /* FT_FACE_FLAG_FIXED_WIDTH :: */ + /* Indicates that the face contains fixed-width characters (like */ + /* Courier, Lucido, MonoType, etc.). */ + /* */ + /* FT_FACE_FLAG_SFNT :: */ + /* Indicates that the face uses the `sfnt' storage scheme. For */ + /* now, this means TrueType and OpenType. */ + /* */ + /* FT_FACE_FLAG_HORIZONTAL :: */ + /* Indicates that the face contains horizontal glyph metrics. This */ + /* should be set for all common formats. */ + /* */ + /* FT_FACE_FLAG_VERTICAL :: */ + /* Indicates that the face contains vertical glyph metrics. This */ + /* is only available in some formats, not all of them. */ + /* */ + /* FT_FACE_FLAG_KERNING :: */ + /* Indicates that the face contains kerning information. If set, */ + /* the kerning distance can be retrieved through the function */ + /* @FT_Get_Kerning. Otherwise the function always return the */ + /* vector (0,0). Note that FreeType doesn't handle kerning data */ + /* from the `GPOS' table (as present in some OpenType fonts). */ + /* */ + /* FT_FACE_FLAG_FAST_GLYPHS :: */ + /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ + /* */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ + /* Indicates that the font contains multiple masters and is capable */ + /* of interpolating between them. See the multiple-masters */ + /* specific API for details. */ + /* */ + /* FT_FACE_FLAG_GLYPH_NAMES :: */ + /* Indicates that the font contains glyph names that can be */ + /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ + /* fonts contain broken glyph name tables. Use the function */ + /* @FT_Has_PS_Glyph_Names when needed. */ + /* */ + /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ + /* Used internally by FreeType to indicate that a face's stream was */ + /* provided by the client application and should not be destroyed */ + /* when @FT_Done_Face is called. Don't read or test this flag. */ + /* */ + /* FT_FACE_FLAG_HINTER :: */ + /* Set if the font driver has a hinting machine of its own. For */ + /* example, with TrueType fonts, it makes sense to use data from */ + /* the SFNT `gasp' table only if the native TrueType hinting engine */ + /* (with the bytecode interpreter) is available and active. */ + /* */ + /* FT_FACE_FLAG_CID_KEYED :: */ + /* Set if the font is CID-keyed. In that case, the font is not */ + /* accessed by glyph indices but by CID values. For subsetted */ + /* CID-keyed fonts this has the consequence that not all index */ + /* values are a valid argument to FT_Load_Glyph. Only the CID */ + /* values for which corresponding glyphs in the subsetted font */ + /* exist make FT_Load_Glyph return successfully; in all other cases */ + /* you get an `FT_Err_Invalid_Argument' error. */ + /* */ + /* Note that CID-keyed fonts which are in an SFNT wrapper don't */ + /* have this flag set since the glyphs are accessed in the normal */ + /* way (using contiguous indices); the `CID-ness' isn't visible to */ + /* the application. */ + /* */ + /* FT_FACE_FLAG_TRICKY :: */ + /* Set if the font is `tricky', this is, it always needs the */ + /* font format's native hinting engine to get a reasonable result. */ + /* A typical example is the Chinese font `mingli.ttf' which uses */ + /* TrueType bytecode instructions to move and scale all of its */ + /* subglyphs. */ + /* */ + /* It is not possible to autohint such fonts using */ + /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ + /* @FT_LOAD_NO_HINTING. You have to set both FT_LOAD_NO_HINTING */ + /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ + /* probably never want this except for demonstration purposes. */ + /* */ + /* Currently, there are six TrueType fonts in the list of tricky */ + /* fonts; they are hard-coded in file `ttobjs.c'. */ + /* */ +#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) +#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) +#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) +#define FT_FACE_FLAG_SFNT ( 1L << 3 ) +#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) +#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) +#define FT_FACE_FLAG_KERNING ( 1L << 6 ) +#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) +#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) +#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) +#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) +#define FT_FACE_FLAG_HINTER ( 1L << 11 ) +#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_HORIZONTAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * horizontal metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ +#define FT_HAS_HORIZONTAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_VERTICAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains vertical + * metrics. + * + */ +#define FT_HAS_VERTICAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_KERNING( face ) + * + * @description: + * A macro that returns true whenever a face object contains kerning + * data that can be accessed with @FT_Get_Kerning. + * + */ +#define FT_HAS_KERNING( face ) \ + ( face->face_flags & FT_FACE_FLAG_KERNING ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SCALABLE( face ) + * + * @description: + * A macro that returns true whenever a face object contains a scalable + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, + * and PFR font formats. + * + */ +#define FT_IS_SCALABLE( face ) \ + ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SFNT( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font + * whose format is based on the SFNT storage scheme. This usually + * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded + * bitmap fonts. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ +#define FT_IS_SFNT( face ) \ + ( face->face_flags & FT_FACE_FLAG_SFNT ) + + + /************************************************************************* + * + * @macro: + * FT_IS_FIXED_WIDTH( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or `monospace', `fixed-pitch', etc.) + * glyphs. + * + */ +#define FT_IS_FIXED_WIDTH( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FIXED_SIZES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes' field of the + * @FT_FaceRec structure. + * + */ +#define FT_HAS_FIXED_SIZES( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FAST_GLYPHS( face ) + * + * @description: + * Deprecated. + * + */ +#define FT_HAS_FAST_GLYPHS( face ) 0 + + + /************************************************************************* + * + * @macro: + * FT_HAS_GLYPH_NAMES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ +#define FT_HAS_GLYPH_NAMES( face ) \ + ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ +#define FT_HAS_MULTIPLE_MASTERS( face ) \ + ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + + + /************************************************************************* + * + * @macro: + * FT_IS_CID_KEYED( face ) + * + * @description: + * A macro that returns true whenever a face object contains a CID-keyed + * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more + * details. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ +#define FT_IS_CID_KEYED( face ) \ + ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + + + /************************************************************************* + * + * @macro: + * FT_IS_TRICKY( face ) + * + * @description: + * A macro that returns true whenever a face represents a `tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( face->face_flags & FT_FACE_FLAG_TRICKY ) + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_STYLE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit-flags used to indicate the style of a given face. */ + /* These are used in the `style_flags' field of @FT_FaceRec. */ + /* */ + /* <Values> */ + /* FT_STYLE_FLAG_ITALIC :: */ + /* Indicates that a given face style is italic or oblique. */ + /* */ + /* FT_STYLE_FLAG_BOLD :: */ + /* Indicates that a given face is bold. */ + /* */ + /* <Note> */ + /* The style information as provided by FreeType is very basic. More */ + /* details are beyond the scope and should be done on a higher level */ + /* (for example, by analyzing various fields of the `OS/2' table in */ + /* SFNT based fonts). */ + /* */ +#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) +#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ + /* model private data of a given @FT_Size object. */ + /* */ + typedef struct FT_Size_InternalRec_* FT_Size_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Metrics */ + /* */ + /* <Description> */ + /* The size metrics structure gives the metrics of a size object. */ + /* */ + /* <Fields> */ + /* x_ppem :: The width of the scaled EM square in pixels, hence */ + /* the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal width'. */ + /* */ + /* y_ppem :: The height of the scaled EM square in pixels, */ + /* hence the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal height'. */ + /* */ + /* x_scale :: A 16.16 fractional scaling value used to convert */ + /* horizontal metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* y_scale :: A 16.16 fractional scaling value used to convert */ + /* vertical metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* ascender :: The ascender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* descender :: The descender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* height :: The height in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* max_advance :: The maximal advance width in 26.6 fractional */ + /* pixels. See @FT_FaceRec for the details. */ + /* */ + /* <Note> */ + /* The scaling values, if relevant, are determined first during a */ + /* size changing operation. The remaining fields are then set by the */ + /* driver. For scalable formats, they are usually set to scaled */ + /* values of the corresponding fields in @FT_FaceRec. */ + /* */ + /* Note that due to glyph hinting, these values might not be exact */ + /* for certain fonts. Thus they must be treated as unreliable */ + /* with an error margin of at least one pixel! */ + /* */ + /* Indeed, the only way to get the exact metrics is to render _all_ */ + /* glyphs. As this would be a definite performance hit, it is up to */ + /* client applications to perform such computations. */ + /* */ + /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ + /* */ + typedef struct FT_Size_Metrics_ + { + FT_UShort x_ppem; /* horizontal pixels per EM */ + FT_UShort y_ppem; /* vertical pixels per EM */ + + FT_Fixed x_scale; /* scaling values used to convert font */ + FT_Fixed y_scale; /* units to 26.6 fractional pixels */ + + FT_Pos ascender; /* ascender in 26.6 frac. pixels */ + FT_Pos descender; /* descender in 26.6 frac. pixels */ + FT_Pos height; /* text height in 26.6 frac. pixels */ + FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ + + } FT_Size_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SizeRec */ + /* */ + /* <Description> */ + /* FreeType root size class structure. A size object models a face */ + /* object at a given size. */ + /* */ + /* <Fields> */ + /* face :: Handle to the parent face object. */ + /* */ + /* generic :: A typeless pointer, which is unused by the FreeType */ + /* library or any of its drivers. It can be used by */ + /* client applications to link their own data to each size */ + /* object. */ + /* */ + /* metrics :: Metrics for this size object. This field is read-only. */ + /* */ + typedef struct FT_SizeRec_ + { + FT_Face face; /* parent face object */ + FT_Generic generic; /* generic pointer for client uses */ + FT_Size_Metrics metrics; /* size metrics */ + FT_Size_Internal internal; + + } FT_SizeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SubGlyph */ + /* */ + /* <Description> */ + /* The subglyph structure is an internal object used to describe */ + /* subglyphs (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The subglyph implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + /* You can however retrieve subglyph information with */ + /* @FT_Get_SubGlyph_Info. */ + /* */ + typedef struct FT_SubGlyphRec_* FT_SubGlyph; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Slot_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ + /* model private data of a given @FT_GlyphSlot object. */ + /* */ + typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphSlotRec */ + /* */ + /* <Description> */ + /* FreeType root glyph slot class structure. A glyph slot is a */ + /* container where individual glyphs can be loaded, be they in */ + /* outline or bitmap format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library instance */ + /* this slot belongs to. */ + /* */ + /* face :: A handle to the parent face object. */ + /* */ + /* next :: In some cases (like some font tools), several */ + /* glyph slots per face object can be a good */ + /* thing. As this is rare, the glyph slots are */ + /* listed through a direct, single-linked list */ + /* using its `next' field. */ + /* */ + /* generic :: A typeless pointer which is unused by the */ + /* FreeType library or any of its drivers. It */ + /* can be used by client applications to link */ + /* their own data to each glyph slot object. */ + /* */ + /* metrics :: The metrics of the last loaded glyph in the */ + /* slot. The returned values depend on the last */ + /* load flags (see the @FT_Load_Glyph API */ + /* function) and can be expressed either in 26.6 */ + /* fractional pixels or font units. */ + /* */ + /* Note that even when the glyph image is */ + /* transformed, the metrics are not. */ + /* */ + /* linearHoriAdvance :: The advance width of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* linearVertAdvance :: The advance height of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* advance :: This shorthand is, depending on */ + /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ + /* advance width for the glyph (in 26.6 */ + /* fractional pixel format). As specified with */ + /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ + /* `horiAdvance' or the `vertAdvance' value of */ + /* `metrics' field. */ + /* */ + /* format :: This field indicates the format of the image */ + /* contained in the glyph slot. Typically */ + /* @FT_GLYPH_FORMAT_BITMAP, */ + /* @FT_GLYPH_FORMAT_OUTLINE, or */ + /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ + /* possible. */ + /* */ + /* bitmap :: This field is used as a bitmap descriptor */ + /* when the slot format is */ + /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ + /* address and content of the bitmap buffer can */ + /* change between calls of @FT_Load_Glyph and a */ + /* few other functions. */ + /* */ + /* bitmap_left :: This is the bitmap's left bearing expressed */ + /* in integer pixels. Of course, this is only */ + /* valid if the format is */ + /* @FT_GLYPH_FORMAT_BITMAP. */ + /* */ + /* bitmap_top :: This is the bitmap's top bearing expressed in */ + /* integer pixels. Remember that this is the */ + /* distance from the baseline to the top-most */ + /* glyph scanline, upwards y~coordinates being */ + /* *positive*. */ + /* */ + /* outline :: The outline descriptor for the current glyph */ + /* image if its format is */ + /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ + /* loaded, `outline' can be transformed, */ + /* distorted, embolded, etc. However, it must */ + /* not be freed. */ + /* */ + /* num_subglyphs :: The number of subglyphs in a composite glyph. */ + /* This field is only valid for the composite */ + /* glyph format that should normally only be */ + /* loaded with the @FT_LOAD_NO_RECURSE flag. */ + /* For now this is internal to FreeType. */ + /* */ + /* subglyphs :: An array of subglyph descriptors for */ + /* composite glyphs. There are `num_subglyphs' */ + /* elements in there. Currently internal to */ + /* FreeType. */ + /* */ + /* control_data :: Certain font drivers can also return the */ + /* control data for a given glyph image (e.g. */ + /* TrueType bytecode, Type~1 charstrings, etc.). */ + /* This field is a pointer to such data. */ + /* */ + /* control_len :: This is the length in bytes of the control */ + /* data. */ + /* */ + /* other :: Really wicked formats can use this pointer to */ + /* present their own glyph image to client */ + /* applications. Note that the application */ + /* needs to know about the image format. */ + /* */ + /* lsb_delta :: The difference between hinted and unhinted */ + /* left side bearing while autohinting is */ + /* active. Zero otherwise. */ + /* */ + /* rsb_delta :: The difference between hinted and unhinted */ + /* right side bearing while autohinting is */ + /* active. Zero otherwise. */ + /* */ + /* <Note> */ + /* If @FT_Load_Glyph is called with default flags (see */ + /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ + /* its native format (e.g., an outline glyph for TrueType and Type~1 */ + /* formats). */ + /* */ + /* This image can later be converted into a bitmap by calling */ + /* @FT_Render_Glyph. This function finds the current renderer for */ + /* the native image's format, then invokes it. */ + /* */ + /* The renderer is in charge of transforming the native image through */ + /* the slot's face transformation fields, then converting it into a */ + /* bitmap that is returned in `slot->bitmap'. */ + /* */ + /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ + /* to specify the position of the bitmap relative to the current pen */ + /* position (e.g., coordinates (0,0) on the baseline). Of course, */ + /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ + /* */ + /* <Note> */ + /* Here a small pseudo code fragment which shows how to use */ + /* `lsb_delta' and `rsb_delta': */ + /* */ + /* { */ + /* FT_Pos origin_x = 0; */ + /* FT_Pos prev_rsb_delta = 0; */ + /* */ + /* */ + /* for all glyphs do */ + /* <compute kern between current and previous glyph and add it to */ + /* `origin_x'> */ + /* */ + /* <load glyph with `FT_Load_Glyph'> */ + /* */ + /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ + /* origin_x -= 64; */ + /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ + /* origin_x += 64; */ + /* */ + /* prev_rsb_delta = face->glyph->rsb_delta; */ + /* */ + /* <save glyph image, or render glyph, or ...> */ + /* */ + /* origin_x += face->glyph->advance.x; */ + /* endfor */ + /* } */ + /* */ + typedef struct FT_GlyphSlotRec_ + { + FT_Library library; + FT_Face face; + FT_GlyphSlot next; + FT_UInt reserved; /* retained for binary compatibility */ + FT_Generic generic; + + FT_Glyph_Metrics metrics; + FT_Fixed linearHoriAdvance; + FT_Fixed linearVertAdvance; + FT_Vector advance; + + FT_Glyph_Format format; + + FT_Bitmap bitmap; + FT_Int bitmap_left; + FT_Int bitmap_top; + + FT_Outline outline; + + FT_UInt num_subglyphs; + FT_SubGlyph subglyphs; + + void* control_data; + long control_len; + + FT_Pos lsb_delta; + FT_Pos rsb_delta; + + void* other; + + FT_Slot_Internal internal; + + } FT_GlyphSlotRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* F U N C T I O N S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Init_FreeType */ + /* */ + /* <Description> */ + /* Initialize a new FreeType library object. The set of modules */ + /* that are registered by this function is determined at build time. */ + /* */ + /* <Output> */ + /* alibrary :: A handle to a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case you want to provide your own memory allocating routines, */ + /* use @FT_New_Library instead, followed by a call to */ + /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_FreeType */ + /* */ + /* <Description> */ + /* Destroy a given FreeType library object and all of its children, */ + /* including resources, drivers, faces, sizes, etc. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_FreeType( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OPEN_XXX */ + /* */ + /* <Description> */ + /* A list of bit-field constants used within the `flags' field of the */ + /* @FT_Open_Args structure. */ + /* */ + /* <Values> */ + /* FT_OPEN_MEMORY :: This is a memory-based stream. */ + /* */ + /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ + /* */ + /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ + /* name. */ + /* */ + /* FT_OPEN_DRIVER :: Use the `driver' field. */ + /* */ + /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ + /* */ + /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ + /* */ + /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ + /* */ + /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ + /* */ + /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ + /* */ + /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ + /* */ + /* <Note> */ + /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ + /* flags are mutually exclusive. */ + /* */ +#define FT_OPEN_MEMORY 0x1 +#define FT_OPEN_STREAM 0x2 +#define FT_OPEN_PATHNAME 0x4 +#define FT_OPEN_DRIVER 0x8 +#define FT_OPEN_PARAMS 0x10 + +#define ft_open_memory FT_OPEN_MEMORY /* deprecated */ +#define ft_open_stream FT_OPEN_STREAM /* deprecated */ +#define ft_open_pathname FT_OPEN_PATHNAME /* deprecated */ +#define ft_open_driver FT_OPEN_DRIVER /* deprecated */ +#define ft_open_params FT_OPEN_PARAMS /* deprecated */ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Parameter */ + /* */ + /* <Description> */ + /* A simple structure used to pass more or less generic parameters to */ + /* @FT_Open_Face. */ + /* */ + /* <Fields> */ + /* tag :: A four-byte identification tag. */ + /* */ + /* data :: A pointer to the parameter data. */ + /* */ + /* <Note> */ + /* The ID and function of parameters are driver-specific. See the */ + /* various FT_PARAM_TAG_XXX flags for more information. */ + /* */ + typedef struct FT_Parameter_ + { + FT_ULong tag; + FT_Pointer data; + + } FT_Parameter; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Open_Args */ + /* */ + /* <Description> */ + /* A structure used to indicate how to open a new font file or */ + /* stream. A pointer to such a structure can be used as a parameter */ + /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ + /* */ + /* <Fields> */ + /* flags :: A set of bit flags indicating how to use the */ + /* structure. */ + /* */ + /* memory_base :: The first byte of the file in memory. */ + /* */ + /* memory_size :: The size in bytes of the file in memory. */ + /* */ + /* pathname :: A pointer to an 8-bit file pathname. */ + /* */ + /* stream :: A handle to a source stream object. */ + /* */ + /* driver :: This field is exclusively used by @FT_Open_Face; */ + /* it simply specifies the font driver to use to open */ + /* the face. If set to~0, FreeType tries to load the */ + /* face with each one of the drivers in its list. */ + /* */ + /* num_params :: The number of extra parameters. */ + /* */ + /* params :: Extra parameters passed to the font driver when */ + /* opening a new face. */ + /* */ + /* <Note> */ + /* The stream type is determined by the contents of `flags' which */ + /* are tested in the following order by @FT_Open_Face: */ + /* */ + /* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ + /* memory file of `memory_size' bytes, located at `memory_address'. */ + /* The data are are not copied, and the client is responsible for */ + /* releasing and destroying them _after_ the corresponding call to */ + /* @FT_Done_Face. */ + /* */ + /* Otherwise, if the `FT_OPEN_STREAM' bit is set, assume that a */ + /* custom input stream `stream' is used. */ + /* */ + /* Otherwise, if the `FT_OPEN_PATHNAME' bit is set, assume that this */ + /* is a normal file and use `pathname' to open it. */ + /* */ + /* If the `FT_OPEN_DRIVER' bit is set, @FT_Open_Face only tries to */ + /* open the file with the driver whose handler is in `driver'. */ + /* */ + /* If the `FT_OPEN_PARAMS' bit is set, the parameters given by */ + /* `num_params' and `params' is used. They are ignored otherwise. */ + /* */ + /* Ideally, both the `pathname' and `params' fields should be tagged */ + /* as `const'; this is missing for API backwards compatibility. In */ + /* other words, applications should treat them as read-only. */ + /* */ + typedef struct FT_Open_Args_ + { + FT_UInt flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; + + } FT_Open_Args; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font by its pathname. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* pathname :: A path to the font file. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See @FT_Open_Face for more details. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font which has been */ + /* loaded into memory. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* file_base :: A pointer to the beginning of the font data. */ + /* */ + /* file_size :: The size of the memory chunk used by the font data. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See @FT_Open_Face for more details. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You must not deallocate the memory before calling @FT_Done_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Open_Face */ + /* */ + /* <Description> */ + /* Create a face object from a given resource described by */ + /* @FT_Open_Args. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* args :: A pointer to an `FT_Open_Args' structure which must */ + /* be filled by the caller. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See note below. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Unlike FreeType 1.x, this function automatically creates a glyph */ + /* slot for the face object which can be accessed directly through */ + /* `face->glyph'. */ + /* */ + /* FT_Open_Face can be used to quickly check whether the font */ + /* format of a given font resource is supported by FreeType. If the */ + /* `face_index' field is negative, the function's return value is~0 */ + /* if the font format is recognized, or non-zero otherwise; */ + /* the function returns a more or less empty face handle in `*aface' */ + /* (if `aface' isn't NULL). The only useful field in this special */ + /* case is `face->num_faces' which gives the number of faces within */ + /* the font file. After examination, the returned @FT_Face structure */ + /* should be deallocated with a call to @FT_Done_Face. */ + /* */ + /* Each new face object created with this function also owns a */ + /* default @FT_Size object, accessible as `face->size'. */ + /* */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Open_Face( FT_Library library, + const FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_File */ + /* */ + /* <Description> */ + /* This function calls @FT_Attach_Stream to attach a file. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* filepathname :: The pathname. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_Stream */ + /* */ + /* <Description> */ + /* `Attach' data to a face object. Normally, this is used to read */ + /* additional information for the face object. For example, you can */ + /* attach an AFM file that comes with a Type~1 font to get the */ + /* kerning values and other metrics. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* parameters :: A pointer to @FT_Open_Args which must be filled by */ + /* the caller. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The meaning of the `attach' (i.e., what really happens when the */ + /* new file is read) is not fixed by FreeType itself. It really */ + /* depends on the font format (and thus the font driver). */ + /* */ + /* Client applications are expected to know what they are doing */ + /* when invoking this function. Most drivers simply do not implement */ + /* file attachments. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Face */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Face structure */ + /* is created. This function increments the counter. @FT_Done_Face */ + /* then only destroys a face if the counter is~1, otherwise it simply */ + /* decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures which */ + /* reference @FT_Face objects. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Face */ + /* */ + /* <Description> */ + /* Discard a given face object, as well as all of its child slots and */ + /* sizes. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Size */ + /* */ + /* <Description> */ + /* Select a bitmap strike. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* strike_index :: The index of the bitmap strike in the */ + /* `available_sizes' field of @FT_FaceRec structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Size_Request_Type */ + /* */ + /* <Description> */ + /* An enumeration type that lists the supported size request types. */ + /* */ + /* <Values> */ + /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ + /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ + /* used to determine both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ + /* The real dimension. The sum of the the `Ascender' and (minus */ + /* of) the `Descender' fields of @FT_FaceRec are used to determine */ + /* both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_BBOX :: */ + /* The font bounding box. The width and height of the `bbox' field */ + /* of @FT_FaceRec are used to determine the horizontal and vertical */ + /* scaling value, respectively. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_CELL :: */ + /* The `max_advance_width' field of @FT_FaceRec is used to */ + /* determine the horizontal scaling value; the vertical scaling */ + /* value is determined the same way as */ + /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ + /* values are set to the smaller one. This type is useful if you */ + /* want to specify the font size for, say, a window of a given */ + /* dimension and 80x24 cells. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_SCALES :: */ + /* Specify the scaling values directly. */ + /* */ + /* <Note> */ + /* The above descriptions only apply to scalable formats. For bitmap */ + /* formats, the behaviour is up to the driver. */ + /* */ + /* See the note section of @FT_Size_Metrics if you wonder how size */ + /* requesting relates to scaling values. */ + /* */ + typedef enum FT_Size_Request_Type_ + { + FT_SIZE_REQUEST_TYPE_NOMINAL, + FT_SIZE_REQUEST_TYPE_REAL_DIM, + FT_SIZE_REQUEST_TYPE_BBOX, + FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, + + FT_SIZE_REQUEST_TYPE_MAX + + } FT_Size_Request_Type; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_RequestRec */ + /* */ + /* <Description> */ + /* A structure used to model a size request. */ + /* */ + /* <Fields> */ + /* type :: See @FT_Size_Request_Type. */ + /* */ + /* width :: The desired width. */ + /* */ + /* height :: The desired height. */ + /* */ + /* horiResolution :: The horizontal resolution. If set to zero, */ + /* `width' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* vertResolution :: The vertical resolution. If set to zero, */ + /* `height' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* <Note> */ + /* If `width' is zero, then the horizontal scaling value is set equal */ + /* to the vertical scaling value, and vice versa. */ + /* */ + typedef struct FT_Size_RequestRec_ + { + FT_Size_Request_Type type; + FT_Long width; + FT_Long height; + FT_UInt horiResolution; + FT_UInt vertResolution; + + } FT_Size_RequestRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Request */ + /* */ + /* <Description> */ + /* A handle to a size request structure. */ + /* */ + typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Request_Size */ + /* */ + /* <Description> */ + /* Resize the scale of the active @FT_Size object in a face. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* req :: A pointer to a @FT_Size_RequestRec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Although drivers may select the bitmap strike matching the */ + /* request, you should not rely on this if you intend to select a */ + /* particular bitmap strike. Use @FT_Select_Size instead in that */ + /* case. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Char_Size */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in points). */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* char_width :: The nominal width, in 26.6 fractional points. */ + /* */ + /* char_height :: The nominal height, in 26.6 fractional points. */ + /* */ + /* horz_resolution :: The horizontal resolution in dpi. */ + /* */ + /* vert_resolution :: The vertical resolution in dpi. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If either the character width or height is zero, it is set equal */ + /* to the other value. */ + /* */ + /* If either the horizontal or vertical resolution is zero, it is set */ + /* equal to the other value. */ + /* */ + /* A character width or height smaller than 1pt is set to 1pt; if */ + /* both resolution values are zero, they are set to 72dpi. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Pixel_Sizes */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in pixels). */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Input> */ + /* pixel_width :: The nominal width, in pixels. */ + /* */ + /* pixel_height :: The nominal height, in pixels. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Glyph */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object. */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* glyph_index :: The index of the glyph in the font file. For */ + /* CID-keyed fonts (either in PS or in CFF format) */ + /* this argument specifies the CID value. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The loaded glyph may be transformed. See @FT_Set_Transform for */ + /* the details. */ + /* */ + /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ + /* returned for invalid CID values (this is, for CID values which */ + /* don't have a corresponding glyph in the font). See the discussion */ + /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Char */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object, according to its character code. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* char_code :: The glyph's character code, according to the */ + /* current charmap used in the face. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + + /************************************************************************* + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit-field constants used with @FT_Load_Glyph to indicate + * what kind of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. + * The bitmap data can be accessed from the glyph slot (see note + * below). + * + * 2. If no embedded bitmap is searched or found, FreeType looks for a + * scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then `hinted' to the pixel grid + * in order to optimize it. The outline data can be accessed from + * the glyph slot (see note below). + * + * Note that by default, the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the outline glyph loaded, but keep it in font units. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates `blurrier' bitmap glyph + * when the glyph is rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. _Don't_ use it as it is + * problematic currently. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Indicates that the auto-hinter is preferred over the font's native + * hinter. See also the note below. + * + * FT_LOAD_CROP_BITMAP :: + * Indicates that the font driver should crop the loaded bitmap glyph + * (i.e., remove all space around its black bits). Not all drivers + * implement this. + * + * FT_LOAD_PEDANTIC :: + * Indicates that the font driver should perform pedantic verifications + * during glyph loading. This is mostly used to detect broken glyphs + * in fonts. By default, FreeType tries to handle broken fonts also. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Indicates that the font driver should ignore the global advance + * width defined in the font. By default, that value is used as the + * advance width for all glyphs when the face has + * @FT_FACE_FLAG_FIXED_WIDTH set. + * + * This flag exists for historical reasons (to support buggy CJK + * fonts). + * + * FT_LOAD_NO_RECURSE :: + * This flag is only used internally. It merely indicates that the + * font driver should not load composite glyphs recursively. Instead, + * it should set the `num_subglyph' and `subglyphs' values of the + * glyph slot accordingly, and set `glyph->format' to + * @FT_GLYPH_FORMAT_COMPOSITE. + * + * The description of sub-glyphs is not available to client + * applications for now. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Indicates that the transform matrix set by @FT_Set_Transform should + * be ignored. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Indicates that the `linearHoriAdvance' and `linearVertAdvance' + * fields of @FT_GlyphSlotRec should be kept in font units. See + * @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable auto-hinter. See also the note below. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be + * used at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + */ +#define FT_LOAD_DEFAULT 0x0 +#define FT_LOAD_NO_SCALE 0x1 +#define FT_LOAD_NO_HINTING 0x2 +#define FT_LOAD_RENDER 0x4 +#define FT_LOAD_NO_BITMAP 0x8 +#define FT_LOAD_VERTICAL_LAYOUT 0x10 +#define FT_LOAD_FORCE_AUTOHINT 0x20 +#define FT_LOAD_CROP_BITMAP 0x40 +#define FT_LOAD_PEDANTIC 0x80 +#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH 0x200 +#define FT_LOAD_NO_RECURSE 0x400 +#define FT_LOAD_IGNORE_TRANSFORM 0x800 +#define FT_LOAD_MONOCHROME 0x1000 +#define FT_LOAD_LINEAR_DESIGN 0x2000 +#define FT_LOAD_NO_AUTOHINT 0x8000U + + /* */ + + /* used internally only by certain font drivers! */ +#define FT_LOAD_ADVANCE_ONLY 0x100 +#define FT_LOAD_SBITS_ONLY 0x4000 + + + /************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values that are used to select a specific hinting algorithm + * to use by the hinter. You should OR one of these values to your + * `load_flags' when calling @FT_Load_Glyph. + * + * Note that font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it + * always implies @FT_LOAD_FORCE_AUTOHINT. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * This corresponds to the default hinting algorithm, optimized for + * standard gray-level rendering. For monochrome output, use + * @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for non-monochrome modes. Many + * generated glyphs are more fuzzy but better resemble its original + * shape. A bit like rendering on Mac OS~X. + * + * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your + * `load_flags'. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode which matches the used algorithm + * best) unless @FT_LOAD_MONOCHROME is set. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the `light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * { + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * } + * + */ +#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) + +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) + + + /************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ +#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Transform */ + /* */ + /* <Description> */ + /* A function used to set the transformation that is applied to glyph */ + /* images when they are loaded into a glyph slot through */ + /* @FT_Load_Glyph. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ + /* the identity matrix. */ + /* delta :: A pointer to the translation vector. Use~0 for the null */ + /* vector. */ + /* */ + /* <Note> */ + /* The transformation is only applied to scalable image formats after */ + /* the glyph has been loaded. It means that hinting is unaltered by */ + /* the transformation and is performed on the character size given in */ + /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ + /* */ + /* Note that this also transforms the `face.glyph.advance' field, but */ + /* *not* the values in `face.glyph.metrics'. */ + /* */ + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Render_Mode */ + /* */ + /* <Description> */ + /* An enumeration type that lists the render modes supported by */ + /* FreeType~2. Each mode corresponds to a specific type of scanline */ + /* conversion performed on the outline. */ + /* */ + /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ + /* field in the @FT_GlyphSlotRec structure gives the format of the */ + /* returned bitmap. */ + /* */ + /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ + /* */ + /* <Values> */ + /* FT_RENDER_MODE_NORMAL :: */ + /* This is the default render mode; it corresponds to 8-bit */ + /* anti-aliased bitmaps. */ + /* */ + /* FT_RENDER_MODE_LIGHT :: */ + /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ + /* defined as a separate value because render modes are also used */ + /* indirectly to define hinting algorithm selectors. See */ + /* @FT_LOAD_TARGET_XXX for details. */ + /* */ + /* FT_RENDER_MODE_MONO :: */ + /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ + /* opacity). */ + /* */ + /* FT_RENDER_MODE_LCD :: */ + /* This mode corresponds to horizontal RGB and BGR sub-pixel */ + /* displays like LCD screens. It produces 8-bit bitmaps that are */ + /* 3~times the width of the original glyph outline in pixels, and */ + /* which use the @FT_PIXEL_MODE_LCD mode. */ + /* */ + /* FT_RENDER_MODE_LCD_V :: */ + /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ + /* (like PDA screens, rotated LCD displays, etc.). It produces */ + /* 8-bit bitmaps that are 3~times the height of the original */ + /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ + /* */ + /* <Note> */ + /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ + /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ + /* (not active in the default builds). It is up to the caller to */ + /* either call @FT_Library_SetLcdFilter (if available) or do the */ + /* filtering itself. */ + /* */ + /* The selected render mode only affects vector glyphs of a font. */ + /* Embedded bitmaps often have a different pixel mode like */ + /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ + /* them into 8-bit pixmaps. */ + /* */ + typedef enum FT_Render_Mode_ + { + FT_RENDER_MODE_NORMAL = 0, + FT_RENDER_MODE_LIGHT, + FT_RENDER_MODE_MONO, + FT_RENDER_MODE_LCD, + FT_RENDER_MODE_LCD_V, + + FT_RENDER_MODE_MAX + + } FT_Render_Mode; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* ft_render_mode_xxx */ + /* */ + /* <Description> */ + /* These constants are deprecated. Use the corresponding */ + /* @FT_Render_Mode values instead. */ + /* */ + /* <Values> */ + /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ + /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ + /* */ +#define ft_render_mode_normal FT_RENDER_MODE_NORMAL +#define ft_render_mode_mono FT_RENDER_MODE_MONO + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Render_Glyph */ + /* */ + /* <Description> */ + /* Convert a given glyph image to a bitmap. It does so by inspecting */ + /* the glyph image format, finding the relevant renderer, and */ + /* invoking it. */ + /* */ + /* <InOut> */ + /* slot :: A handle to the glyph slot containing the image to */ + /* convert. */ + /* */ + /* <Input> */ + /* render_mode :: This is the render mode used to render the glyph */ + /* image into a bitmap. See @FT_Render_Mode for a */ + /* list of possible values. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Kerning_Mode */ + /* */ + /* <Description> */ + /* An enumeration used to specify which kerning values to return in */ + /* @FT_Get_Kerning. */ + /* */ + /* <Values> */ + /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ + /* distances (value is~0). */ + /* */ + /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ + /* distances. */ + /* */ + /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ + /* units. */ + /* */ + typedef enum FT_Kerning_Mode_ + { + FT_KERNING_DEFAULT = 0, + FT_KERNING_UNFITTED, + FT_KERNING_UNSCALED + + } FT_Kerning_Mode; + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* ft_kerning_default */ + /* */ + /* <Description> */ + /* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ + /* instead. */ + /* */ +#define ft_kerning_default FT_KERNING_DEFAULT + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* ft_kerning_unfitted */ + /* */ + /* <Description> */ + /* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ + /* instead. */ + /* */ +#define ft_kerning_unfitted FT_KERNING_UNFITTED + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* ft_kerning_unscaled */ + /* */ + /* <Description> */ + /* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ + /* instead. */ + /* */ +#define ft_kerning_unscaled FT_KERNING_UNSCALED + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Kerning */ + /* */ + /* <Description> */ + /* Return the kerning vector between two glyphs of a same face. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* left_glyph :: The index of the left glyph in the kern pair. */ + /* */ + /* right_glyph :: The index of the right glyph in the kern pair. */ + /* */ + /* kern_mode :: See @FT_Kerning_Mode for more information. */ + /* Determines the scale and dimension of the returned */ + /* kerning vector. */ + /* */ + /* <Output> */ + /* akerning :: The kerning vector. This is either in font units */ + /* or in pixels (26.6 format) for scalable formats, */ + /* and in pixels for fixed-sizes formats. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Only horizontal layouts (left-to-right & right-to-left) are */ + /* supported by this method. Other layouts, or more sophisticated */ + /* kernings, are out of the scope of this API function -- they can be */ + /* implemented through format-specific interfaces. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Track_Kerning */ + /* */ + /* <Description> */ + /* Return the track kerning for a given face object at a given size. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* point_size :: The point size in 16.16 fractional points. */ + /* */ + /* degree :: The degree of tightness. */ + /* */ + /* <Output> */ + /* akerning :: The kerning in 16.16 fractional points. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII name of a given glyph in a face. This only */ + /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* buffer_max :: The maximal number of bytes available in the */ + /* buffer. */ + /* */ + /* <Output> */ + /* buffer :: A pointer to a target buffer where the name is */ + /* copied to. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error is returned if the face doesn't provide glyph names or if */ + /* the glyph index is invalid. In all cases of failure, the first */ + /* byte of `buffer' is set to~0 to indicate an empty name. */ + /* */ + /* The glyph name is truncated to fit within the buffer if it is too */ + /* long. The returned string is always zero-terminated. */ + /* */ + /* This function is not compiled within the library if the config */ + /* macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in */ + /* `include/freetype/config/ftoptions.h'. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Postscript_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII PostScript name of a given face, if available. */ + /* This only works with PostScript and TrueType fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to the face's PostScript name. NULL if unavailable. */ + /* */ + /* <Note> */ + /* The returned pointer is owned by the face and is destroyed with */ + /* it. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap by its encoding tag (as listed in */ + /* `freetype.h'). */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* encoding :: A handle to the selected encoding. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if no charmap in the face */ + /* corresponds to the encoding queried here. */ + /* */ + /* Because many fonts contain more than a single cmap for Unicode */ + /* encoding, this function has some special code to select the one */ + /* which covers Unicode best (`best' in the sense that a UCS-4 cmap */ + /* is preferred to a UCS-2 cmap). It is thus preferable to */ + /* @FT_Set_Charmap in this case. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap for character code to glyph index mapping. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* charmap :: A handle to the selected charmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if the charmap is not part of */ + /* the face (i.e., if it is not listed in the `face->charmaps' */ + /* table). */ + /* */ + /* It also fails if a type~14 charmap is selected. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); + + + /************************************************************************* + * + * @function: + * FT_Get_Charmap_Index + * + * @description: + * Retrieve index of a given charmap. + * + * @input: + * charmap :: + * A handle to a charmap. + * + * @return: + * The index into the array of character maps within the face to which + * `charmap' belongs. If an error occurs, -1 is returned. + * + */ + FT_EXPORT( FT_Int ) + FT_Get_Charmap_Index( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Char_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code. This function */ + /* uses a charmap object to do the mapping. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* charcode :: The character code. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within */ + /* the file. This is done to ensure that value~0 always corresponds */ + /* to the `missing glyph'. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_First_Char */ + /* */ + /* <Description> */ + /* This function is used to return the first character code in the */ + /* current charmap of a given face. It also returns the */ + /* corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of first character code. 0~if charmap is */ + /* empty. */ + /* */ + /* <Return> */ + /* The charmap's first character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_Next_Char to be able to */ + /* parse all character codes available in a given charmap. The code */ + /* should look like this: */ + /* */ + /* { */ + /* FT_ULong charcode; */ + /* FT_UInt gindex; */ + /* */ + /* */ + /* charcode = FT_Get_First_Char( face, &gindex ); */ + /* while ( gindex != 0 ) */ + /* { */ + /* ... do something with (charcode,gindex) pair ... */ + /* */ + /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ + /* } */ + /* } */ + /* */ + /* Note that `*agindex' is set to~0 if the charmap is empty. The */ + /* result itself can be~0 in two cases: if the charmap is empty or */ + /* if the value~0 is the first valid character code. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Next_Char */ + /* */ + /* <Description> */ + /* This function is used to return the next character code in the */ + /* current charmap of a given face following the value `char_code', */ + /* as well as the corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* char_code :: The starting character code. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of next character code. 0~if charmap */ + /* is empty. */ + /* */ + /* <Return> */ + /* The charmap's next character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_First_Char to walk */ + /* over all character codes available in a given charmap. See the */ + /* note for this function for a simple code example. */ + /* */ + /* Note that `*agindex' is set to~0 when there are no more codes in */ + /* the charmap. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Name_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given glyph name. This function uses */ + /* driver specific objects to do the translation. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ); + + + /************************************************************************* + * + * @macro: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants used to describe subglyphs. Please refer to the + * TrueType specification for the meaning of the various flags. + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 + + + /************************************************************************* + * + * @func: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be + * interpreted depending on the flags returned in `*p_flags'. See the + * TrueType specification for details. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FSTYPE_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `fsType' field of the OS/2 table */ + /* in a TrueType or OpenType font and the `FSType' entry in a */ + /* PostScript font. These bit flags are returned by */ + /* @FT_Get_FSType_Flags; they inform client applications of embedding */ + /* and subsetting restrictions associated with a font. */ + /* */ + /* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ + /* more details. */ + /* */ + /* <Values> */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ + /* Fonts with no fsType bit set may be embedded and permanently */ + /* installed on the remote system by an application. */ + /* */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ + /* Fonts that have only this bit set must not be modified, embedded */ + /* or exchanged in any manner without first obtaining permission of */ + /* the font software copyright owner. */ + /* */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ + /* If this bit is set, the font may be embedded and temporarily */ + /* loaded on the remote system. Documents containing Preview & */ + /* Print fonts must be opened `read-only'; no edits can be applied */ + /* to the document. */ + /* */ + /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ + /* If this bit is set, the font may be embedded but must only be */ + /* installed temporarily on other systems. In contrast to Preview */ + /* & Print fonts, documents containing editable fonts may be opened */ + /* for reading, editing is permitted, and changes may be saved. */ + /* */ + /* FT_FSTYPE_NO_SUBSETTING :: */ + /* If this bit is set, the font may not be subsetted prior to */ + /* embedding. */ + /* */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ + /* If this bit is set, only bitmaps contained in the font may be */ + /* embedded; no outline data may be embedded. If there are no */ + /* bitmaps available in the font, then the font is unembeddable. */ + /* */ + /* <Note> */ + /* While the fsType flags can indicate that a font may be embedded, a */ + /* license with the font vendor may be separately required to use the */ + /* font in this way. */ + /* */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_FSType_Flags */ + /* */ + /* <Description> */ + /* Return the fsType flags for a font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* The fsType flags, @FT_FSTYPE_XXX. */ + /* */ + /* <Note> */ + /* Use this function rather than directly reading the `fs_type' field */ + /* in the @PS_FontInfoRec structure which is only guaranteed to */ + /* return the correct results for Type~1 fonts. */ + /* */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_variants */ + /* */ + /* <Title> */ + /* Glyph Variants */ + /* */ + /* <Abstract> */ + /* The FreeType~2 interface to Unicode Ideographic Variation */ + /* Sequences (IVS), using the SFNT cmap format~14. */ + /* */ + /* <Description> */ + /* Many CJK characters have variant forms. They are a sort of grey */ + /* area somewhere between being totally irrelevant and semantically */ + /* distinct; for this reason, the Unicode consortium decided to */ + /* introduce Ideographic Variation Sequences (IVS), consisting of a */ + /* Unicode base character and one of 240 variant selectors */ + /* (U+E0100-U+E01EF), instead of further extending the already huge */ + /* code range for CJK characters. */ + /* */ + /* An IVS is registered and unique; for further details please refer */ + /* to Unicode Technical Report #37, the Ideographic Variation */ + /* Database. To date (October 2007), the character with the most */ + /* variants is U+908A, having 8~such IVS. */ + /* */ + /* Adobe and MS decided to support IVS with a new cmap subtable */ + /* (format~14). It is an odd subtable because it is not a mapping of */ + /* input code points to glyphs, but contains lists of all variants */ + /* supported by the font. */ + /* */ + /* A variant may be either `default' or `non-default'. A default */ + /* variant is the one you will get for that code point if you look it */ + /* up in the standard Unicode cmap. A non-default variant is a */ + /* different glyph. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIndex */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code as modified by */ + /* the variation selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character code point in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode code point of the variation selector. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means either `undefined character code', or */ + /* `undefined selector code', or `no variation selector cmap */ + /* subtable', or `current CharMap is not Unicode'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within */ + /* the file. This is done to ensure that value~0 always corresponds */ + /* to the `missing glyph'. */ + /* */ + /* This function is only meaningful if */ + /* a) the font has a variation selector cmap sub table, */ + /* and */ + /* b) the current charmap has a Unicode encoding. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIsDefault */ + /* */ + /* <Description> */ + /* Check whether this variant of this Unicode character is the one to */ + /* be found in the `cmap'. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode codepoint of the variation selector. */ + /* */ + /* <Return> */ + /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ + /* variation selector cmap, or -1 if it is not a variant. */ + /* */ + /* <Note> */ + /* This function is only meaningful if the font has a variation */ + /* selector cmap subtable. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_Int ) + FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantSelectors */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* in the font. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to an array of selector code points, or NULL if there is */ + /* no valid variant selector cmap subtable. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantSelectors( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantsOfChar */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* for the specified character code. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* <Return> */ + /* A pointer to an array of variant selector code points which are */ + /* active for the given character, or NULL if the corresponding list */ + /* is empty. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharsOfVariant */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode character codes found for */ + /* the specified variant selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* variantSelector :: */ + /* The variant selector code point in Unicode. */ + /* */ + /* <Return> */ + /* A list of all the code points which are specified by this selector */ + /* (both default and non-default codes are returned) or NULL if there */ + /* is no valid cmap or the variant selector is invalid. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /* <Title> */ + /* Computations */ + /* */ + /* <Abstract> */ + /* Crunching fixed numbers and vectors. */ + /* */ + /* <Description> */ + /* This section contains various functions used to perform */ + /* computations on 16.16 fixed-float numbers or 2d vectors. */ + /* */ + /* <Order> */ + /* FT_MulDiv */ + /* FT_MulFix */ + /* FT_DivFix */ + /* FT_RoundFix */ + /* FT_CeilFix */ + /* FT_FloorFix */ + /* FT_Vector_Transform */ + /* FT_Matrix_Multiply */ + /* FT_Matrix_Invert */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* with maximal accuracy (it uses a 64-bit intermediate integer */ + /* whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + + /* */ + + /* The following #if 0 ... #endif is for the documentation formatter, */ + /* hiding the internal `FT_MULFIX_INLINED' macro. */ + +#if 0 + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*b)/0x10000' with maximal accuracy. Most of the time this is */ + /* used to multiply a given value by a 16.16 fixed float factor. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. Use a 16.16 factor here whenever */ + /* possible (see note below). */ + /* */ + /* <Return> */ + /* The result of `(a*b)/0x10000'. */ + /* */ + /* <Note> */ + /* This function has been optimized for the case where the absolute */ + /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ + /* As this happens mainly when scaling from notional units to */ + /* fractional pixels in FreeType, it resulted in noticeable speed */ + /* improvements between versions 2.x and 1.x. */ + /* */ + /* As a conclusion, always try to place a 16.16 factor as the */ + /* _second_ argument of this function; this can make a great */ + /* difference. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); + + /* */ +#endif + +#ifdef FT_MULFIX_INLINED +#define FT_MulFix( a, b ) FT_MULFIX_INLINED( a, b ) +#else + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); +#endif + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_DivFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*0x10000)/b' with maximal accuracy. Most of the time, this is */ + /* used to divide a given value by a 16.16 fixed float factor. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. Use a 16.16 factor here whenever */ + /* possible (see note below). */ + /* */ + /* <Return> */ + /* The result of `(a*0x10000)/b'. */ + /* */ + /* <Note> */ + /* The optimization for FT_DivFix() is simple: If (a~<<~16) fits in */ + /* 32~bits, then the division is computed directly. Otherwise, we */ + /* use a specialized version of @FT_MulDiv. */ + /* */ + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_RoundFix */ + /* */ + /* <Description> */ + /* A very simple function used to round a 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number to be rounded. */ + /* */ + /* <Return> */ + /* The result of `(a + 0x8000) & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_CeilFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the ceiling function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the ceiling function is to be computed. */ + /* */ + /* <Return> */ + /* The result of `(a + 0x10000 - 1) & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_FloorFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the floor function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the floor function is to be computed. */ + /* */ + /* <Return> */ + /* The result of `a & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Vector_Transform */ + /* */ + /* <Description> */ + /* Transform a single vector through a 2x2 matrix. */ + /* */ + /* <InOut> */ + /* vector :: The target vector to transform. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the source 2x2 matrix. */ + /* */ + /* <Note> */ + /* The result is undefined if either `vector' or `matrix' is invalid. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vec, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* version */ + /* */ + /* <Title> */ + /* FreeType Version */ + /* */ + /* <Abstract> */ + /* Functions and macros related to FreeType versions. */ + /* */ + /* <Description> */ + /* Note that those functions and macros are of limited use because */ + /* even a new release of FreeType with only documentation changes */ + /* increases the version number. */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. + * Use @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: The major version number. + * FREETYPE_MINOR :: The minor version number. + * FREETYPE_PATCH :: The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library + * with the `libtool' package is _not_ controlled by these three + * macros. + * + */ +#define FREETYPE_MAJOR 2 +#define FREETYPE_MINOR 4 +#define FREETYPE_PATCH 2 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Library_Version */ + /* */ + /* <Description> */ + /* Return the version of the FreeType library being used. This is */ + /* useful when dynamically linking to the library, since one cannot */ + /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ + /* @FREETYPE_PATCH. */ + /* */ + /* <Input> */ + /* library :: A source library handle. */ + /* */ + /* <Output> */ + /* amajor :: The major version number. */ + /* */ + /* aminor :: The minor version number. */ + /* */ + /* apatch :: The patch version number. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' argument is because */ + /* certain programs implement library initialization in a custom way */ + /* that doesn't use @FT_Init_FreeType. */ + /* */ + /* In such cases, the library version might not be available before */ + /* the library object has been created. */ + /* */ + FT_EXPORT( void ) + FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_CheckTrueTypePatents */ + /* */ + /* <Description> */ + /* Parse all bytecode instructions of a TrueType font file to check */ + /* whether any of the patented opcodes are used. This is only useful */ + /* if you want to be able to use the unpatented hinter with */ + /* fonts that do *not* use these opcodes. */ + /* */ + /* Note that this function parses *all* glyph instructions in the */ + /* font file, which may be slow. */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* <Return> */ + /* 1~if this is a TrueType font that uses one of the patented */ + /* opcodes, 0~otherwise. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_CheckTrueTypePatents( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* <Description> */ + /* Enable or disable the unpatented hinter for a given face. */ + /* Only enable it if you have determined that the face doesn't */ + /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* value :: New boolean setting. */ + /* */ + /* <Return> */ + /* The old setting value. This will always be false if this is not */ + /* an SFNT font, or if the unpatented hinter is not compiled in this */ + /* instance of the library. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + + /* */ + + +FT_END_HEADER + +#endif /* __FREETYPE_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftadvanc.h b/lib/windows32/include/freetype/ftadvanc.h new file mode 100644 index 0000000..b2451be --- /dev/null +++ b/lib/windows32/include/freetype/ftadvanc.h @@ -0,0 +1,179 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.h */ +/* */ +/* Quick computation of advance widths (specification only). */ +/* */ +/* Copyright 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTADVANC_H__ +#define __FTADVANC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + */ + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_ADVANCE_FLAG_FAST_ONLY */ + /* */ + /* <Description> */ + /* A bit-flag to be OR-ed with the `flags' parameter of the */ + /* @FT_Get_Advance and @FT_Get_Advances functions. */ + /* */ + /* If set, it indicates that you want these functions to fail if the */ + /* corresponding hinting mode or font driver doesn't allow for very */ + /* quick advance computation. */ + /* */ + /* Typically, glyphs which are either unscaled, unhinted, bitmapped, */ + /* or light-hinted can have their advance width computed very */ + /* quickly. */ + /* */ + /* Normal and bytecode hinted modes, which require loading, scaling, */ + /* and hinting of the glyph outline, are extremely slow by */ + /* comparison. */ + /* */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advance */ + /* */ + /* <Description> */ + /* Retrieve the advance value of a given glyph outline in an */ + /* @FT_Face. By default, the unhinted advance is returned in font */ + /* units. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph, used to determine what kind */ + /* of advances you need. */ + /* <Output> */ + /* padvance :: The advance value, in either font units or 16.16 */ + /* format. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ + /* vertical advance corresponding to a vertical layout. */ + /* Otherwise, it is the horizontal advance in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* A scaled advance is returned in 16.16 format but isn't transformed */ + /* by the affine transformation specified by @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advances */ + /* */ + /* <Description> */ + /* Retrieve the advance values of several glyph outlines in an */ + /* @FT_Face. By default, the unhinted advances are returned in font */ + /* units. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* start :: The first glyph index. */ + /* */ + /* count :: The number of advance values you want to retrieve. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph. */ + /* */ + /* <Output> */ + /* padvance :: The advances, in either font units or 16.16 format. */ + /* This array must contain at least `count' elements. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ + /* vertical advances corresponding to a vertical layout. */ + /* Otherwise, they are the horizontal advances in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* Scaled advances are returned in 16.16 format but aren't */ + /* transformed by the affine transformation specified by */ + /* @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + +/* */ + + +FT_END_HEADER + +#endif /* __FTADVANC_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftbbox.h b/lib/windows32/include/freetype/ftbbox.h new file mode 100644 index 0000000..01fe3fb --- /dev/null +++ b/lib/windows32/include/freetype/ftbbox.h @@ -0,0 +1,94 @@ +/***************************************************************************/ +/* */ +/* ftbbox.h */ +/* */ +/* FreeType exact bbox computation (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2007 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This component has a _single_ role: to compute exact outline bounding */ + /* boxes. */ + /* */ + /* It is separated from the rest of the engine for various technical */ + /* reasons. It may well be integrated in `ftoutln' later. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTBBOX_H__ +#define __FTBBOX_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_BBox */ + /* */ + /* <Description> */ + /* Compute the exact bounding box of an outline. This is slower */ + /* than computing the control box. However, it uses an advanced */ + /* algorithm which returns _very_ quickly when the two boxes */ + /* coincide. Otherwise, the outline Bézier arcs are traversed to */ + /* extract their extrema. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline. */ + /* */ + /* <Output> */ + /* abbox :: The outline's exact bounding box. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTBBOX_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows32/include/freetype/ftbdf.h b/lib/windows32/include/freetype/ftbdf.h new file mode 100644 index 0000000..4f8baf8 --- /dev/null +++ b/lib/windows32/include/freetype/ftbdf.h @@ -0,0 +1,209 @@ +/***************************************************************************/ +/* */ +/* ftbdf.h */ +/* */ +/* FreeType API for accessing BDF-specific strings (specification). */ +/* */ +/* Copyright 2002, 2003, 2004, 2006, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBDF_H__ +#define __FTBDF_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bdf_fonts */ + /* */ + /* <Title> */ + /* BDF and PCF Files */ + /* */ + /* <Abstract> */ + /* BDF and PCF specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions specific to BDF */ + /* and PCF fonts. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * FT_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ + typedef enum BDF_PropertyType_ + { + BDF_PROPERTY_TYPE_NONE = 0, + BDF_PROPERTY_TYPE_ATOM = 1, + BDF_PROPERTY_TYPE_INTEGER = 2, + BDF_PROPERTY_TYPE_CARDINAL = 3 + + } BDF_PropertyType; + + + /********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ + typedef struct BDF_PropertyRec_* BDF_Property; + + + /********************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ + typedef struct BDF_PropertyRec_ + { + BDF_PropertyType type; + union { + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; + + } u; + + } BDF_PropertyRec; + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to + * the BDF specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Charset_ID( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: A handle to the input face. + * + * name :: The property name. + * + * @output: + * aproperty :: The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A `property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props' array within a `FontRec' structure of a PCF font. + * + * Integer properties are always stored as `signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type' is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + /* */ + +FT_END_HEADER + +#endif /* __FTBDF_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftbitmap.h b/lib/windows32/include/freetype/ftbitmap.h new file mode 100644 index 0000000..9274236 --- /dev/null +++ b/lib/windows32/include/freetype/ftbitmap.h @@ -0,0 +1,227 @@ +/***************************************************************************/ +/* */ +/* ftbitmap.h */ +/* */ +/* FreeType utility functions for bitmaps (specification). */ +/* */ +/* Copyright 2004, 2005, 2006, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBITMAP_H__ +#define __FTBITMAP_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bitmap_handling */ + /* */ + /* <Title> */ + /* Bitmap Handling */ + /* */ + /* <Abstract> */ + /* Handling FT_Bitmap objects. */ + /* */ + /* <Description> */ + /* This section contains functions for converting FT_Bitmap objects. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_New */ + /* */ + /* <Description> */ + /* Initialize a pointer to an @FT_Bitmap structure. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the bitmap structure. */ + /* */ + FT_EXPORT( void ) + FT_Bitmap_New( FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Copy */ + /* */ + /* <Description> */ + /* Copy a bitmap into another one. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: A handle to the source bitmap. */ + /* */ + /* <Output> */ + /* target :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Copy( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Embolden */ + /* */ + /* <Description> */ + /* Embolden a bitmap. The new bitmap will be about `xStrength' */ + /* pixels wider and `yStrength' pixels higher. The left and bottom */ + /* borders are kept unchanged. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* xStrength :: How strong the glyph is emboldened horizontally. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* yStrength :: How strong the glyph is emboldened vertically. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* <InOut> */ + /* bitmap :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The current implementation restricts `xStrength' to be less than */ + /* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ + /* */ + /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ + /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Embolden( FT_Library library, + FT_Bitmap* bitmap, + FT_Pos xStrength, + FT_Pos yStrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Convert */ + /* */ + /* <Description> */ + /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a */ + /* bitmap object with depth 8bpp, making the number of used bytes per */ + /* line (a.k.a. the `pitch') a multiple of `alignment'. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: The source bitmap. */ + /* */ + /* alignment :: The pitch of the bitmap is a multiple of this */ + /* parameter. Common values are 1, 2, or 4. */ + /* */ + /* <Output> */ + /* target :: The target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* It is possible to call @FT_Bitmap_Convert multiple times without */ + /* calling @FT_Bitmap_Done (the memory is simply reallocated). */ + /* */ + /* Use @FT_Bitmap_Done to finally remove the bitmap object. */ + /* */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Convert( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target, + FT_Int alignment ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GlyphSlot_Own_Bitmap */ + /* */ + /* <Description> */ + /* Make sure that a glyph slot owns `slot->bitmap'. */ + /* */ + /* <Input> */ + /* slot :: The glyph slot. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function is to be used in combination with */ + /* @FT_Bitmap_Embolden. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Done */ + /* */ + /* <Description> */ + /* Destroy a bitmap object created with @FT_Bitmap_New. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* bitmap :: The bitmap object to be freed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Done( FT_Library library, + FT_Bitmap *bitmap ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTBITMAP_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftcache.h b/lib/windows32/include/freetype/ftcache.h new file mode 100644 index 0000000..a9e1237 --- /dev/null +++ b/lib/windows32/include/freetype/ftcache.h @@ -0,0 +1,1125 @@ +/***************************************************************************/ +/* */ +/* ftcache.h */ +/* */ +/* FreeType Cache subsystem (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCACHE_H__ +#define __FTCACHE_H__ + + +#include <ft2build.h> +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************* + * + * <Section> + * cache_subsystem + * + * <Title> + * Cache Sub-System + * + * <Abstract> + * How to cache face, size, and glyph data with FreeType~2. + * + * <Description> + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_' prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert a @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * *persistent*, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may + * keep internally. Failure to do so will lead to incorrect behaviour + * or even crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then + * later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient + * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small + * bitmaps directly. (A small bitmap is one whose metrics and + * dimensions all fit into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * <Order> + * FTC_Manager + * FTC_FaceID + * FTC_Face_Requester + * + * FTC_Manager_New + * FTC_Manager_Reset + * FTC_Manager_Done + * FTC_Manager_LookupFace + * FTC_Manager_LookupSize + * FTC_Manager_RemoveFaceID + * + * FTC_Node + * FTC_Node_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC TYPE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined + * structure containing a font file path, and face index. + * + * @note: + * Never use NULL as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager, which calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even + * memory leaks and crashes. + */ + typedef FT_Pointer FTC_FaceID; + + + /************************************************************************ + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * <Input> + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * <Output> + * aface :: + * A new @FT_Face handle. + * + * <Return> + * FreeType error code. 0~means success. + * + * <Note> + * The third parameter `req_data' is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer request_data, + FT_Face* aface ); + + /* */ + +#define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) ) + +#define FTC_FACE_ID_HASH( i ) \ + ((FT_UInt32)(( FT_POINTER_TO_ULONG( i ) >> 3 ) ^ \ + ( FT_POINTER_TO_ULONG( i ) << 7 ) ) ) + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Manager */ + /* */ + /* <Description> */ + /* This object corresponds to one instance of the cache-subsystem. */ + /* It is used to cache one or more @FT_Face objects, along with */ + /* corresponding @FT_Size objects. */ + /* */ + /* The manager intentionally limits the total number of opened */ + /* @FT_Face and @FT_Size objects to control memory usage. See the */ + /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ + /* */ + /* The manager is also used to cache `nodes' of various types while */ + /* limiting their total memory usage. */ + /* */ + /* All limitations are enforced by keeping lists of managed objects */ + /* in most-recently-used order, and flushing old nodes to make room */ + /* for new ones. */ + /* */ + typedef struct FTC_ManagerRec_* FTC_Manager; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Node */ + /* */ + /* <Description> */ + /* An opaque handle to a cache node object. Each cache node is */ + /* reference-counted. A node with a count of~0 might be flushed */ + /* out of a full cache whenever a lookup request is performed. */ + /* */ + /* If you look up nodes, you have the ability to `acquire' them, */ + /* i.e., to increment their reference count. This will prevent the */ + /* node from being flushed out of the cache until you explicitly */ + /* `release' it (see @FTC_Node_Unref). */ + /* */ + /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ + /* */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_New */ + /* */ + /* <Description> */ + /* Create a new cache manager. */ + /* */ + /* <Input> */ + /* library :: The parent FreeType library handle to use. */ + /* */ + /* max_faces :: Maximum number of opened @FT_Face objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ + /* Use~0 for defaults. Note that this value does not */ + /* account for managed @FT_Face and @FT_Size objects. */ + /* */ + /* requester :: An application-provided callback used to translate */ + /* face IDs into real @FT_Face objects. */ + /* */ + /* req_data :: A generic pointer that is passed to the requester */ + /* each time it is called (see @FTC_Face_Requester). */ + /* */ + /* <Output> */ + /* amanager :: A handle to a new manager object. 0~in case of */ + /* failure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Reset */ + /* */ + /* <Description> */ + /* Empty a given cache manager. This simply gets rid of all the */ + /* currently cached @FT_Face and @FT_Size objects within the manager. */ + /* */ + /* <InOut> */ + /* manager :: A handle to the manager. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Done */ + /* */ + /* <Description> */ + /* Destroy a given manager after emptying it. */ + /* */ + /* <Input> */ + /* manager :: A handle to the target cache manager object. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupFace */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Face object that corresponds to a given face ID */ + /* through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* face_id :: The ID of the face object. */ + /* */ + /* <Output> */ + /* aface :: A handle to the face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Face object is always owned by the manager. You */ + /* should never try to discard it yourself. */ + /* */ + /* The @FT_Face object doesn't necessarily have a current size object */ + /* (i.e., face->size can be 0). If you need a specific `font size', */ + /* use @FTC_Manager_LookupSize instead. */ + /* */ + /* Never change the face's transformation matrix (i.e., never call */ + /* the @FT_Set_Transform function) on a returned face! If you need */ + /* to transform glyphs, do it yourself after glyph loading. */ + /* */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory was available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_ScalerRec */ + /* */ + /* <Description> */ + /* A structure used to describe a given character size in either */ + /* pixels or points to the cache manager. See */ + /* @FTC_Manager_LookupSize. */ + /* */ + /* <Fields> */ + /* face_id :: The source face ID. */ + /* */ + /* width :: The character width. */ + /* */ + /* height :: The character height. */ + /* */ + /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ + /* interpreted as integer pixel character sizes. */ + /* Otherwise, they are expressed as 1/64th of points. */ + /* */ + /* x_res :: Only used when `pixel' is value~0 to indicate the */ + /* horizontal resolution in dpi. */ + /* */ + /* y_res :: Only used when `pixel' is value~0 to indicate the */ + /* vertical resolution in dpi. */ + /* */ + /* <Note> */ + /* This type is mainly used to retrieve @FT_Size objects through the */ + /* cache manager. */ + /* */ + typedef struct FTC_ScalerRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int pixel; + FT_UInt x_res; + FT_UInt y_res; + + } FTC_ScalerRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_Scaler */ + /* */ + /* <Description> */ + /* A handle to an @FTC_ScalerRec structure. */ + /* */ + typedef struct FTC_ScalerRec_* FTC_Scaler; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupSize */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Size object that corresponds to a given */ + /* @FTC_ScalerRec pointer through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* scaler :: A scaler handle. */ + /* */ + /* <Output> */ + /* asize :: A handle to the size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Size object is always owned by the manager. You */ + /* should never try to discard it by yourself. */ + /* */ + /* You can access the parent @FT_Face object simply as `size->face' */ + /* if you need it. Note that this object is also owned by the */ + /* manager. */ + /* */ + /* <Note> */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory is available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Node_Unref */ + /* */ + /* <Description> */ + /* Decrement a cache node's internal reference count. When the count */ + /* reaches 0, it is not destroyed but becomes eligible for subsequent */ + /* cache flushes. */ + /* */ + /* <Input> */ + /* node :: The cache node handle. */ + /* */ + /* manager :: The cache manager handle. */ + /* */ + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + + /************************************************************************* + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that + * a given @FTC_FaceID is no longer valid, either because its + * content changed, or because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id', with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear + * in later lookups with the same `face_id' value, and to be immediately + * destroyed when released by all their users. + * + */ + FT_EXPORT( void ) + FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to + * hold character codes -> glyph indices mappings. + * + */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /************************************************************************* + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /************************************************************************ + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means `no glyph'. + * + */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** IMAGE CACHE OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ + typedef struct FTC_ImageTypeRec_ + { + FTC_FaceID face_id; + FT_Int width; + FT_Int height; + FT_Int32 flags; + + } FTC_ImageTypeRec; + + + /************************************************************************* + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ + typedef struct FTC_ImageTypeRec_* FTC_ImageType; + + + /* */ + + +#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ + ( (d1)->face_id == (d2)->face_id && \ + (d1)->width == (d2)->width && \ + (d1)->flags == (d2)->flags ) + +#define FTC_IMAGE_TYPE_HASH( d ) \ + (FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \ + ( (d)->width << 8 ) ^ (d)->height ^ \ + ( (d)->flags << 4 ) ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_ImageCache */ + /* */ + /* <Description> */ + /* A handle to an glyph image cache object. They are designed to */ + /* hold many distinct glyph images while not exceeding a certain */ + /* memory threshold. */ + /* */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_New */ + /* */ + /* <Description> */ + /* Create a new glyph image cache. */ + /* */ + /* <Input> */ + /* manager :: The parent manager for the image cache. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new glyph image cache object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_Lookup */ + /* */ + /* <Description> */ + /* Retrieve a given glyph image from a glyph image cache. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* type :: A pointer to a glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* scaler :: A pointer to a scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ + /* glyphs; you should always use the FreeType cache API instead. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBit */ + /* */ + /* <Description> */ + /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ + /* structure for details. */ + /* */ + typedef struct FTC_SBitRec_* FTC_SBit; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_SBitRec */ + /* */ + /* <Description> */ + /* A very compact structure used to describe a small glyph bitmap. */ + /* */ + /* <Fields> */ + /* width :: The bitmap width in pixels. */ + /* */ + /* height :: The bitmap height in pixels. */ + /* */ + /* left :: The horizontal distance from the pen position to the */ + /* left bitmap border (a.k.a. `left side bearing', or */ + /* `lsb'). */ + /* */ + /* top :: The vertical distance from the pen position (on the */ + /* baseline) to the upper bitmap border (a.k.a. `top */ + /* side bearing'). The distance is positive for upwards */ + /* y~coordinates. */ + /* */ + /* format :: The format of the glyph bitmap (monochrome or gray). */ + /* */ + /* max_grays :: Maximum gray level value (in the range 1 to~255). */ + /* */ + /* pitch :: The number of bytes per bitmap line. May be positive */ + /* or negative. */ + /* */ + /* xadvance :: The horizontal advance width in pixels. */ + /* */ + /* yadvance :: The vertical advance height in pixels. */ + /* */ + /* buffer :: A pointer to the bitmap pixels. */ + /* */ + typedef struct FTC_SBitRec_ + { + FT_Byte width; + FT_Byte height; + FT_Char left; + FT_Char top; + + FT_Byte format; + FT_Byte max_grays; + FT_Short pitch; + FT_Char xadvance; + FT_Char yadvance; + + FT_Byte* buffer; + + } FTC_SBitRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBitCache */ + /* */ + /* <Description> */ + /* A handle to a small bitmap cache. These are special cache objects */ + /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ + /* much more efficient way than the traditional glyph image cache */ + /* implemented by @FTC_ImageCache. */ + /* */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_New */ + /* */ + /* <Description> */ + /* Create a new cache to store small glyph bitmaps. */ + /* */ + /* <Input> */ + /* manager :: A handle to the source cache manager. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new sbit cache. NULL in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_Lookup */ + /* */ + /* <Description> */ + /* Look up a given small glyph bitmap in a given sbit cache and */ + /* `lock' it to prevent its flushing from the cache until needed. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* type :: A pointer to the glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* scaler :: A pointer to the scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /* */ + +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS + + /*@***********************************************************************/ + /* */ + /* <Struct> */ + /* FTC_FontRec */ + /* */ + /* <Description> */ + /* A simple structure used to describe a given `font' to the cache */ + /* manager. Note that a `font' is the combination of a given face */ + /* with a given character size. */ + /* */ + /* <Fields> */ + /* face_id :: The ID of the face to use. */ + /* */ + /* pix_width :: The character width in integer pixels. */ + /* */ + /* pix_height :: The character height in integer pixels. */ + /* */ + typedef struct FTC_FontRec_ + { + FTC_FaceID face_id; + FT_UShort pix_width; + FT_UShort pix_height; + + } FTC_FontRec; + + + /* */ + + +#define FTC_FONT_COMPARE( f1, f2 ) \ + ( (f1)->face_id == (f2)->face_id && \ + (f1)->pix_width == (f2)->pix_width && \ + (f1)->pix_height == (f2)->pix_height ) + +#define FTC_FONT_HASH( f ) \ + (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ + ((f)->pix_width << 8) ^ \ + ((f)->pix_height) ) + + typedef FTC_FontRec* FTC_Font; + + + FT_EXPORT( FT_Error ) + FTC_Manager_Lookup_Face( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + FT_EXPORT( FT_Error ) + FTC_Manager_Lookup_Size( FTC_Manager manager, + FTC_Font font, + FT_Face *aface, + FT_Size *asize ); + +#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* */ + +FT_END_HEADER + +#endif /* __FTCACHE_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftchapters.h b/lib/windows32/include/freetype/ftchapters.h new file mode 100644 index 0000000..7775a6b --- /dev/null +++ b/lib/windows32/include/freetype/ftchapters.h @@ -0,0 +1,103 @@ +/***************************************************************************/ +/* */ +/* This file defines the structure of the FreeType reference. */ +/* It is used by the python script which generates the HTML files. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* general_remarks */ +/* */ +/* <Title> */ +/* General Remarks */ +/* */ +/* <Sections> */ +/* user_allocation */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* core_api */ +/* */ +/* <Title> */ +/* Core API */ +/* */ +/* <Sections> */ +/* version */ +/* basic_types */ +/* base_interface */ +/* glyph_variants */ +/* glyph_management */ +/* mac_specific */ +/* sizes_management */ +/* header_file_macros */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* format_specific */ +/* */ +/* <Title> */ +/* Format-Specific API */ +/* */ +/* <Sections> */ +/* multiple_masters */ +/* truetype_tables */ +/* type1_tables */ +/* sfnt_names */ +/* bdf_fonts */ +/* cid_fonts */ +/* pfr_fonts */ +/* winfnt_fonts */ +/* font_formats */ +/* gasp_table */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* cache_subsystem */ +/* */ +/* <Title> */ +/* Cache Sub-System */ +/* */ +/* <Sections> */ +/* cache_subsystem */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* support_api */ +/* */ +/* <Title> */ +/* Support API */ +/* */ +/* <Sections> */ +/* computations */ +/* list_processing */ +/* outline_processing */ +/* quick_advance */ +/* bitmap_handling */ +/* raster */ +/* glyph_stroker */ +/* system_interface */ +/* module_management */ +/* gzip */ +/* lzw */ +/* lcd_filtering */ +/* */ +/***************************************************************************/ diff --git a/lib/windows32/include/freetype/ftcid.h b/lib/windows32/include/freetype/ftcid.h new file mode 100644 index 0000000..203a30c --- /dev/null +++ b/lib/windows32/include/freetype/ftcid.h @@ -0,0 +1,166 @@ +/***************************************************************************/ +/* */ +/* ftcid.h */ +/* */ +/* FreeType API for accessing CID font information (specification). */ +/* */ +/* Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCID_H__ +#define __FTCID_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cid_fonts */ + /* */ + /* <Title> */ + /* CID Fonts */ + /* */ + /* <Abstract> */ + /* CID-keyed font specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of CID-keyed font specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In + * constrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SNFT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + /* */ + +FT_END_HEADER + +#endif /* __FTCID_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/fterrdef.h b/lib/windows32/include/freetype/fterrdef.h new file mode 100644 index 0000000..bf52220 --- /dev/null +++ b/lib/windows32/include/freetype/fterrdef.h @@ -0,0 +1,244 @@ +/***************************************************************************/ +/* */ +/* fterrdef.h */ +/* */ +/* FreeType error codes (specification). */ +/* */ +/* Copyright 2002, 2004, 2006, 2007, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST OF ERROR CODES/MESSAGES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + + /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ + /* including this file. */ + + + /* generic errors */ + + FT_NOERRORDEF_( Ok, 0x00, \ + "no error" ) + + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ + "cannot open resource" ) + FT_ERRORDEF_( Unknown_File_Format, 0x02, \ + "unknown file format" ) + FT_ERRORDEF_( Invalid_File_Format, 0x03, \ + "broken file" ) + FT_ERRORDEF_( Invalid_Version, 0x04, \ + "invalid FreeType version" ) + FT_ERRORDEF_( Lower_Module_Version, 0x05, \ + "module version is too low" ) + FT_ERRORDEF_( Invalid_Argument, 0x06, \ + "invalid argument" ) + FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ + "unimplemented feature" ) + FT_ERRORDEF_( Invalid_Table, 0x08, \ + "broken table" ) + FT_ERRORDEF_( Invalid_Offset, 0x09, \ + "broken offset within table" ) + FT_ERRORDEF_( Array_Too_Large, 0x0A, \ + "array allocation size too large" ) + + /* glyph/character errors */ + + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ + "invalid glyph index" ) + FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ + "invalid character code" ) + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ + "unsupported glyph image format" ) + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ + "cannot render this glyph format" ) + FT_ERRORDEF_( Invalid_Outline, 0x14, \ + "invalid outline" ) + FT_ERRORDEF_( Invalid_Composite, 0x15, \ + "invalid composite glyph" ) + FT_ERRORDEF_( Too_Many_Hints, 0x16, \ + "too many hints" ) + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ + "invalid pixel size" ) + + /* handle errors */ + + FT_ERRORDEF_( Invalid_Handle, 0x20, \ + "invalid object handle" ) + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ + "invalid library handle" ) + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ + "invalid module handle" ) + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ + "invalid face handle" ) + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ + "invalid size handle" ) + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ + "invalid glyph slot handle" ) + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ + "invalid charmap handle" ) + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ + "invalid cache manager handle" ) + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ + "invalid stream handle" ) + + /* driver errors */ + + FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ + "too many modules" ) + FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ + "too many extensions" ) + + /* memory errors */ + + FT_ERRORDEF_( Out_Of_Memory, 0x40, \ + "out of memory" ) + FT_ERRORDEF_( Unlisted_Object, 0x41, \ + "unlisted object" ) + + /* stream errors */ + + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ + "cannot open stream" ) + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ + "invalid stream seek" ) + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ + "invalid stream skip" ) + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ + "invalid stream read" ) + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ + "invalid stream operation" ) + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ + "invalid frame operation" ) + FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ + "nested frame access" ) + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ + "invalid frame read" ) + + /* raster errors */ + + FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ + "raster uninitialized" ) + FT_ERRORDEF_( Raster_Corrupted, 0x61, \ + "raster corrupted" ) + FT_ERRORDEF_( Raster_Overflow, 0x62, \ + "raster overflow" ) + FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ + "negative height while rastering" ) + + /* cache errors */ + + FT_ERRORDEF_( Too_Many_Caches, 0x70, \ + "too many registered caches" ) + + /* TrueType and SFNT errors */ + + FT_ERRORDEF_( Invalid_Opcode, 0x80, \ + "invalid opcode" ) + FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ + "too few arguments" ) + FT_ERRORDEF_( Stack_Overflow, 0x82, \ + "stack overflow" ) + FT_ERRORDEF_( Code_Overflow, 0x83, \ + "code overflow" ) + FT_ERRORDEF_( Bad_Argument, 0x84, \ + "bad argument" ) + FT_ERRORDEF_( Divide_By_Zero, 0x85, \ + "division by zero" ) + FT_ERRORDEF_( Invalid_Reference, 0x86, \ + "invalid reference" ) + FT_ERRORDEF_( Debug_OpCode, 0x87, \ + "found debug opcode" ) + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ + "found ENDF opcode in execution stream" ) + FT_ERRORDEF_( Nested_DEFS, 0x89, \ + "nested DEFS" ) + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ + "invalid code range" ) + FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ + "execution context too long" ) + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ + "too many function definitions" ) + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ + "too many instruction definitions" ) + FT_ERRORDEF_( Table_Missing, 0x8E, \ + "SFNT font table missing" ) + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ + "horizontal header (hhea) table missing" ) + FT_ERRORDEF_( Locations_Missing, 0x90, \ + "locations (loca) table missing" ) + FT_ERRORDEF_( Name_Table_Missing, 0x91, \ + "name table missing" ) + FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ + "character map (cmap) table missing" ) + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ + "horizontal metrics (hmtx) table missing" ) + FT_ERRORDEF_( Post_Table_Missing, 0x94, \ + "PostScript (post) table missing" ) + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ + "invalid horizontal metrics" ) + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ + "invalid character map (cmap) format" ) + FT_ERRORDEF_( Invalid_PPem, 0x97, \ + "invalid ppem value" ) + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ + "invalid vertical metrics" ) + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ + "could not find context" ) + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ + "invalid PostScript (post) table format" ) + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ + "invalid PostScript (post) table" ) + + /* CFF, CID, and Type 1 errors */ + + FT_ERRORDEF_( Syntax_Error, 0xA0, \ + "opcode syntax error" ) + FT_ERRORDEF_( Stack_Underflow, 0xA1, \ + "argument stack underflow" ) + FT_ERRORDEF_( Ignore, 0xA2, \ + "ignore" ) + FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, \ + "no Unicode glyph name found" ) + + + /* BDF errors */ + + FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \ + "`STARTFONT' field missing" ) + FT_ERRORDEF_( Missing_Font_Field, 0xB1, \ + "`FONT' field missing" ) + FT_ERRORDEF_( Missing_Size_Field, 0xB2, \ + "`SIZE' field missing" ) + FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, \ + "`FONTBOUNDINGBOX' field missing" ) + FT_ERRORDEF_( Missing_Chars_Field, 0xB4, \ + "`CHARS' field missing" ) + FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, \ + "`STARTCHAR' field missing" ) + FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, \ + "`ENCODING' field missing" ) + FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, \ + "`BBX' field missing" ) + FT_ERRORDEF_( Bbx_Too_Big, 0xB8, \ + "`BBX' too big" ) + FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, \ + "Font header corrupted or missing fields" ) + FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, \ + "Font glyphs corrupted or missing fields" ) + + +/* END */ diff --git a/lib/windows32/include/freetype/fterrors.h b/lib/windows32/include/freetype/fterrors.h new file mode 100644 index 0000000..6600dad --- /dev/null +++ b/lib/windows32/include/freetype/fterrors.h @@ -0,0 +1,206 @@ +/***************************************************************************/ +/* */ +/* fterrors.h */ +/* */ +/* FreeType error code handling (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2004, 2007 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This special header file is used to define the handling of FT2 */ + /* enumeration constants. It can also be used to generate error message */ + /* strings with a small macro trick explained below. */ + /* */ + /* I - Error Formats */ + /* ----------------- */ + /* */ + /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ + /* defined in ftoption.h in order to make the higher byte indicate */ + /* the module where the error has happened (this is not compatible */ + /* with standard builds of FreeType 2). You can then use the macro */ + /* FT_ERROR_BASE macro to extract the generic error code from an */ + /* FT_Error value. */ + /* */ + /* */ + /* II - Error Message strings */ + /* -------------------------- */ + /* */ + /* The error definitions below are made through special macros that */ + /* allow client applications to build a table of error message strings */ + /* if they need it. The strings are not included in a normal build of */ + /* FreeType 2 to save space (most client applications do not use */ + /* them). */ + /* */ + /* To do so, you have to define the following macros before including */ + /* this file: */ + /* */ + /* FT_ERROR_START_LIST :: */ + /* This macro is called before anything else to define the start of */ + /* the error list. It is followed by several FT_ERROR_DEF calls */ + /* (see below). */ + /* */ + /* FT_ERROR_DEF( e, v, s ) :: */ + /* This macro is called to define one single error. */ + /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ + /* `v' is the error numerical value. */ + /* `s' is the corresponding error string. */ + /* */ + /* FT_ERROR_END_LIST :: */ + /* This macro ends the list. */ + /* */ + /* Additionally, you have to undefine __FTERRORS_H__ before #including */ + /* this file. */ + /* */ + /* Here is a simple example: */ + /* */ + /* { */ + /* #undef __FTERRORS_H__ */ + /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ + /* #define FT_ERROR_START_LIST { */ + /* #define FT_ERROR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int err_code; */ + /* const char* err_msg; */ + /* } ft_errors[] = */ + /* */ + /* #include FT_ERRORS_H */ + /* } */ + /* */ + /*************************************************************************/ + + +#ifndef __FTERRORS_H__ +#define __FTERRORS_H__ + + + /* include module base error codes */ +#include FT_MODULE_ERRORS_H + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#undef FT_ERR_XCAT +#undef FT_ERR_CAT + +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_'. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS + +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ +#ifndef FT_ERRORDEF + +#define FT_ERRORDEF( e, v, s ) e = v, +#define FT_ERROR_START_LIST enum { +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_ERRORDEF */ + + + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for <module>_Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + +#ifdef FT_ERROR_START_LIST + FT_ERROR_START_LIST +#endif + + + /* now include the error codes */ +#include FT_ERROR_DEFINITIONS_H + + +#ifdef FT_ERROR_END_LIST + FT_ERROR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST + +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_CONCAT +#undef FT_ERR_BASE + + /* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */ +#ifndef FT_KEEP_ERR_PREFIX +#undef FT_ERR_PREFIX +#endif + +#endif /* __FTERRORS_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftgasp.h b/lib/windows32/include/freetype/ftgasp.h new file mode 100644 index 0000000..91a769e --- /dev/null +++ b/lib/windows32/include/freetype/ftgasp.h @@ -0,0 +1,120 @@ +/***************************************************************************/ +/* */ +/* ftgasp.h */ +/* */ +/* Access of TrueType's `gasp' table (specification). */ +/* */ +/* Copyright 2007, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef _FT_GASP_H_ +#define _FT_GASP_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + + /*************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType `gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its `gasp' table, if any. This is + * mainly useful when implementing native TrueType hinting with the + * bytecode interpreter to duplicate the Windows text rendering results. + */ + + /************************************************************************* + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This *really* means TrueType bytecode interpretation. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * Smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * `ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ +#define FT_GASP_NO_TABLE -1 +#define FT_GASP_DO_GRIDFIT 0x01 +#define FT_GASP_DO_GRAY 0x02 +#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 +#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 + + + /************************************************************************* + * + * @func: + * FT_Get_Gasp + * + * @description: + * Read the `gasp' table from a TrueType or OpenType font file and + * return the entry corresponding to a given character pixel size. + * + * @input: + * face :: The source face handle. + * ppem :: The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * `gasp' table in the face. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Int ) + FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); + +/* */ + +#endif /* _FT_GASP_H_ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftglyph.h b/lib/windows32/include/freetype/ftglyph.h new file mode 100644 index 0000000..0b8f0c0 --- /dev/null +++ b/lib/windows32/include/freetype/ftglyph.h @@ -0,0 +1,613 @@ +/***************************************************************************/ +/* */ +/* ftglyph.h */ +/* */ +/* FreeType convenience functions to handle glyphs (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of several convenience functions */ + /* that can be used by client applications to easily retrieve glyph */ + /* bitmaps and outlines from a given face. */ + /* */ + /* These functions should be optional if you are writing a font server */ + /* or text layout engine on top of FreeType. However, they are pretty */ + /* handy for many other simple uses of the library. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTGLYPH_H__ +#define __FTGLYPH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_management */ + /* */ + /* <Title> */ + /* Glyph Management */ + /* */ + /* <Abstract> */ + /* Generic interface to manage individual glyph data. */ + /* */ + /* <Description> */ + /* This section contains definitions used to manage glyph data */ + /* through generic FT_Glyph objects. Each of them can contain a */ + /* bitmap, a vector outline, or even images in other formats. */ + /* */ + /*************************************************************************/ + + + /* forward declaration to a private type */ + typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Glyph */ + /* */ + /* <Description> */ + /* Handle to an object used to model generic glyph images. It is a */ + /* pointer to the @FT_GlyphRec structure and can contain a glyph */ + /* bitmap or pointer. */ + /* */ + /* <Note> */ + /* Glyph objects are not owned by the library. You must thus release */ + /* them manually (through @FT_Done_Glyph) _before_ calling */ + /* @FT_Done_FreeType. */ + /* */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphRec */ + /* */ + /* <Description> */ + /* The root glyph structure contains a given glyph image plus its */ + /* advance width in 16.16 fixed float format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library object. */ + /* */ + /* clazz :: A pointer to the glyph's class. Private. */ + /* */ + /* format :: The format of the glyph's image. */ + /* */ + /* advance :: A 16.16 vector that gives the glyph's advance width. */ + /* */ + typedef struct FT_GlyphRec_ + { + FT_Library library; + const FT_Glyph_Class* clazz; + FT_Glyph_Format format; + FT_Vector advance; + + } FT_GlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_BitmapGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model a bitmap glyph image. This is */ + /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ + /* */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BitmapGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for bitmap glyph images. This really is a */ + /* `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* left :: The left-side bearing, i.e., the horizontal distance */ + /* from the current pen position to the left border of the */ + /* glyph bitmap. */ + /* */ + /* top :: The top-side bearing, i.e., the vertical distance from */ + /* the current pen position to the top border of the glyph */ + /* bitmap. This distance is positive for upwards~y! */ + /* */ + /* bitmap :: A descriptor for the bitmap. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ + /* the bitmap's contents easily. */ + /* */ + /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ + /* and is thus created and destroyed with it. */ + /* */ + typedef struct FT_BitmapGlyphRec_ + { + FT_GlyphRec root; + FT_Int left; + FT_Int top; + FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_OutlineGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model an outline glyph image. This */ + /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ + /* */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_OutlineGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for outline (vectorial) glyph images. This */ + /* really is a `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* outline :: A descriptor for the outline. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ + /* the outline's content easily. */ + /* */ + /* As the outline is extracted from a glyph slot, its coordinates are */ + /* expressed normally in 26.6 pixels, unless the flag */ + /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ + /* */ + /* The outline's tables are always owned by the object and are */ + /* destroyed with it. */ + /* */ + typedef struct FT_OutlineGlyphRec_ + { + FT_GlyphRec root; + FT_Outline outline; + + } FT_OutlineGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph */ + /* */ + /* <Description> */ + /* A function used to extract a glyph image from a slot. Note that */ + /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* slot :: A handle to the source glyph slot. */ + /* */ + /* <Output> */ + /* aglyph :: A handle to the glyph object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Copy */ + /* */ + /* <Description> */ + /* A function used to copy a glyph image. Note that the created */ + /* @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* source :: A handle to the source glyph object. */ + /* */ + /* <Output> */ + /* target :: A handle to the target glyph object. 0~in case of */ + /* error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Transform */ + /* */ + /* <Description> */ + /* Transform a glyph image if its format is scalable. */ + /* */ + /* <InOut> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to a 2x2 matrix to apply. */ + /* */ + /* delta :: A pointer to a 2d vector to apply. Coordinates are */ + /* expressed in 1/64th of a pixel. */ + /* */ + /* <Return> */ + /* FreeType error code (if not 0, the glyph format is not scalable). */ + /* */ + /* <Note> */ + /* The 2x2 transformation matrix is also applied to the glyph's */ + /* advance vector. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_BBox_Mode */ + /* */ + /* <Description> */ + /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ + /* */ + /* <Values> */ + /* FT_GLYPH_BBOX_UNSCALED :: */ + /* Return unscaled font units. */ + /* */ + /* FT_GLYPH_BBOX_SUBPIXELS :: */ + /* Return unfitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_GRIDFIT :: */ + /* Return grid-fitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_TRUNCATE :: */ + /* Return coordinates in integer pixels. */ + /* */ + /* FT_GLYPH_BBOX_PIXELS :: */ + /* Return grid-fitted pixel coordinates. */ + /* */ + typedef enum FT_Glyph_BBox_Mode_ + { + FT_GLYPH_BBOX_UNSCALED = 0, + FT_GLYPH_BBOX_SUBPIXELS = 0, + FT_GLYPH_BBOX_GRIDFIT = 1, + FT_GLYPH_BBOX_TRUNCATE = 2, + FT_GLYPH_BBOX_PIXELS = 3 + + } FT_Glyph_BBox_Mode; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* ft_glyph_bbox_xxx */ + /* */ + /* <Description> */ + /* These constants are deprecated. Use the corresponding */ + /* @FT_Glyph_BBox_Mode values instead. */ + /* */ + /* <Values> */ + /* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */ + /* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */ + /* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */ + /* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */ + /* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */ + /* */ +#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED +#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS +#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT +#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE +#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Get_CBox */ + /* */ + /* <Description> */ + /* Return a glyph's `control box'. The control box encloses all the */ + /* outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* which contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the source glyph object. */ + /* */ + /* mode :: The mode which indicates how to interpret the returned */ + /* bounding box values. */ + /* */ + /* <Output> */ + /* acbox :: The glyph coordinate bounding box. Coordinates are */ + /* expressed in 1/64th of pixels if it is grid-fitted. */ + /* */ + /* <Note> */ + /* Coordinates are relative to the glyph origin, using the y~upwards */ + /* convention. */ + /* */ + /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ + /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ + /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ + /* is another name for this constant. */ + /* */ + /* Note that the maximum coordinates are exclusive, which means that */ + /* one can compute the width and height of the glyph image (be it in */ + /* integer or 26.6 pixels) as: */ + /* */ + /* { */ + /* width = bbox.xMax - bbox.xMin; */ + /* height = bbox.yMax - bbox.yMin; */ + /* } */ + /* */ + /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ + /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ + /* which corresponds to: */ + /* */ + /* { */ + /* bbox.xMin = FLOOR(bbox.xMin); */ + /* bbox.yMin = FLOOR(bbox.yMin); */ + /* bbox.xMax = CEILING(bbox.xMax); */ + /* bbox.yMax = CEILING(bbox.yMax); */ + /* } */ + /* */ + /* To get the bbox in pixel coordinates, set `bbox_mode' to */ + /* @FT_GLYPH_BBOX_TRUNCATE. */ + /* */ + /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ + /* to @FT_GLYPH_BBOX_PIXELS. */ + /* */ + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_To_Bitmap */ + /* */ + /* <Description> */ + /* Convert a given glyph object to a bitmap glyph object. */ + /* */ + /* <InOut> */ + /* the_glyph :: A pointer to a handle to the target glyph. */ + /* */ + /* <Input> */ + /* render_mode :: An enumeration that describes how the data is */ + /* rendered. */ + /* */ + /* origin :: A pointer to a vector used to translate the glyph */ + /* image before rendering. Can be~0 (if no */ + /* translation). The origin is expressed in */ + /* 26.6 pixels. */ + /* */ + /* destroy :: A boolean that indicates that the original glyph */ + /* image should be destroyed by this function. It is */ + /* never destroyed in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does nothing if the glyph format isn't scalable. */ + /* */ + /* The glyph image is translated with the `origin' vector before */ + /* rendering. */ + /* */ + /* The first parameter is a pointer to an @FT_Glyph handle, that will */ + /* be _replaced_ by this function (with newly allocated data). */ + /* Typically, you would use (omitting error handling): */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyph; */ + /* FT_BitmapGlyph glyph_bitmap; */ + /* */ + /* */ + /* // load glyph */ + /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ + /* */ + /* // extract glyph image */ + /* error = FT_Get_Glyph( face->glyph, &glyph ); */ + /* */ + /* // convert to a bitmap (default render mode + destroying old) */ + /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ + /* { */ + /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ + /* 0, 1 ); */ + /* if ( error ) // `glyph' unchanged */ + /* ... */ + /* } */ + /* */ + /* // access bitmap content by typecasting */ + /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ + /* */ + /* // do funny stuff with it, like blitting/drawing */ + /* ... */ + /* */ + /* // discard glyph image (bitmap or not) */ + /* FT_Done_Glyph( glyph ); */ + /* } */ + /* */ + /* */ + /* Here another example, again without error handling: */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyphs[MAX_GLYPHS] */ + /* */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ + /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* { */ + /* FT_Glyph bitmap = glyphs[idx]; */ + /* */ + /* */ + /* ... */ + /* */ + /* // after this call, `bitmap' no longer points into */ + /* // the `glyphs' array (and the old value isn't destroyed) */ + /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ + /* */ + /* ... */ + /* */ + /* FT_Done_Glyph( bitmap ); */ + /* } */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* FT_Done_Glyph( glyphs[idx] ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + FT_Vector* origin, + FT_Bool destroy ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Glyph */ + /* */ + /* <Description> */ + /* Destroy a given glyph. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); + + /* */ + + + /* other helpful functions */ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Multiply */ + /* */ + /* <Description> */ + /* Perform the matrix operation `b = a*b'. */ + /* */ + /* <Input> */ + /* a :: A pointer to matrix `a'. */ + /* */ + /* <InOut> */ + /* b :: A pointer to matrix `b'. */ + /* */ + /* <Note> */ + /* The result is undefined if either `a' or `b' is zero. */ + /* */ + FT_EXPORT( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Invert */ + /* */ + /* <Description> */ + /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ + /* */ + /* <InOut> */ + /* matrix :: A pointer to the target matrix. Remains untouched in */ + /* case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLYPH_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows32/include/freetype/ftgxval.h b/lib/windows32/include/freetype/ftgxval.h new file mode 100644 index 0000000..497015c --- /dev/null +++ b/lib/windows32/include/freetype/ftgxval.h @@ -0,0 +1,358 @@ +/***************************************************************************/ +/* */ +/* ftgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004, 2005, 2006 by */ +/* Masatake YAMATO, Redhat K.K, */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGXVAL_H__ +#define __FTGXVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gx_validation */ + /* */ + /* <Title> */ + /* TrueTypeGX/AAT Validation */ + /* */ + /* <Abstract> */ + /* An API to validate TrueTypeGX/AAT tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ + /* trak, prop, lcar). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* Warning: Use FT_VALIDATE_XXX to validate a table. */ + /* Following definitions are for gxvalid developers. */ + /* */ + /* */ + /*************************************************************************/ + +#define FT_VALIDATE_feat_INDEX 0 +#define FT_VALIDATE_mort_INDEX 1 +#define FT_VALIDATE_morx_INDEX 2 +#define FT_VALIDATE_bsln_INDEX 3 +#define FT_VALIDATE_just_INDEX 4 +#define FT_VALIDATE_kern_INDEX 5 +#define FT_VALIDATE_opbd_INDEX 6 +#define FT_VALIDATE_trak_INDEX 7 +#define FT_VALIDATE_prop_INDEX 8 +#define FT_VALIDATE_lcar_INDEX 9 +#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX + + + /************************************************************************* + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length' argument of function @FT_TrueTypeGX_Validate. + */ +#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) + + /* */ + + /* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate `feat' table. + * + * FT_VALIDATE_mort :: + * Validate `mort' table. + * + * FT_VALIDATE_morx :: + * Validate `morx' table. + * + * FT_VALIDATE_bsln :: + * Validate `bsln' table. + * + * FT_VALIDATE_just :: + * Validate `just' table. + * + * FT_VALIDATE_kern :: + * Validate `kern' table. + * + * FT_VALIDATE_opbd :: + * Validate `opbd' table. + * + * FT_VALIDATE_trak :: + * Validate `trak' table. + * + * FT_VALIDATE_prop :: + * Validate `prop' table. + * + * FT_VALIDATE_lcar :: + * Validate `lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ + +#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) +#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) +#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) +#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) +#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) +#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) +#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) +#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) +#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) +#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) + +#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ + FT_VALIDATE_mort | \ + FT_VALIDATE_morx | \ + FT_VALIDATE_bsln | \ + FT_VALIDATE_just | \ + FT_VALIDATE_kern | \ + FT_VALIDATE_opbd | \ + FT_VALIDATE_trak | \ + FT_VALIDATE_prop | \ + FT_VALIDATE_lcar ) + + + /* */ + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library which + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field which specifies the tables to be validated. See + * @FT_VALIDATE_GXXXX for possible values. + * + * table_length :: + * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. + * The array itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ + FT_EXPORT( FT_Error ) + FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + /* */ + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by + * @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ + FT_EXPORT( void ) + FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + + /* */ + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate + * to indicate the classic kern dialect or dialects. If the selected + * type doesn't fit, @FT_ClassicKern_Validate regards the table as + * invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the `kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the `kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the `kern' as either classic Apple or Microsoft kern table. + */ +#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) +#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) + +#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) + + + /* */ + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the offsets + * and indices are valid. The idea is that a higher-level library which + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field which specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value + * indicates that the table doesn't exist in the font. + */ + FT_EXPORT( FT_Error ) + FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + + /* */ + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ + FT_EXPORT( void ) + FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTGXVAL_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftgzip.h b/lib/windows32/include/freetype/ftgzip.h new file mode 100644 index 0000000..acbc4f0 --- /dev/null +++ b/lib/windows32/include/freetype/ftgzip.h @@ -0,0 +1,102 @@ +/***************************************************************************/ +/* */ +/* ftgzip.h */ +/* */ +/* Gzip-compressed stream support. */ +/* */ +/* Copyright 2002, 2003, 2004, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGZIP_H__ +#define __FTGZIP_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gzip */ + /* */ + /* <Title> */ + /* GZIP Streams */ + /* */ + /* <Abstract> */ + /* Using gzip-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Gzip-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is + * mainly used to support the compressed `*.pcf.gz' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from + * it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGZIP_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftimage.h b/lib/windows32/include/freetype/ftimage.h new file mode 100644 index 0000000..0272e92 --- /dev/null +++ b/lib/windows32/include/freetype/ftimage.h @@ -0,0 +1,1301 @@ +/***************************************************************************/ +/* */ +/* ftimage.h */ +/* */ +/* FreeType glyph image formats and default raster interface */ +/* (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */ +/* 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Note: A `raster' is simply a scan-line converter, used to render */ + /* FT_Outlines into FT_Bitmaps. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTIMAGE_H__ +#define __FTIMAGE_H__ + + + /* _STANDALONE_ is from ftgrays.c */ +#ifndef _STANDALONE_ +#include <ft2build.h> +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pos */ + /* */ + /* <Description> */ + /* The type FT_Pos is used to store vectorial coordinates. Depending */ + /* on the context, these can represent distances in integer font */ + /* units, or 16.16, or 26.6 fixed float pixel coordinates. */ + /* */ + typedef signed long FT_Pos; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Vector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector; coordinates are of */ + /* the FT_Pos type. */ + /* */ + /* <Fields> */ + /* x :: The horizontal coordinate. */ + /* y :: The vertical coordinate. */ + /* */ + typedef struct FT_Vector_ + { + FT_Pos x; + FT_Pos y; + + } FT_Vector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BBox */ + /* */ + /* <Description> */ + /* A structure used to hold an outline's bounding box, i.e., the */ + /* coordinates of its extrema in the horizontal and vertical */ + /* directions. */ + /* */ + /* <Fields> */ + /* xMin :: The horizontal minimum (left-most). */ + /* */ + /* yMin :: The vertical minimum (bottom-most). */ + /* */ + /* xMax :: The horizontal maximum (right-most). */ + /* */ + /* yMax :: The vertical maximum (top-most). */ + /* */ + /* <Note> */ + /* The bounding box is specified with the coordinates of the lower */ + /* left and the upper right corner. In PostScript, those values are */ + /* often called (llx,lly) and (urx,ury), respectively. */ + /* */ + /* If `yMin' is negative, this value gives the glyph's descender. */ + /* Otherwise, the glyph doesn't descend below the baseline. */ + /* Similarly, if `ymax' is positive, this value gives the glyph's */ + /* ascender. */ + /* */ + /* `xMin' gives the horizontal distance from the glyph's origin to */ + /* the left edge of the glyph's bounding box. If `xMin' is negative, */ + /* the glyph extends to the left of the origin. */ + /* */ + typedef struct FT_BBox_ + { + FT_Pos xMin, yMin; + FT_Pos xMax, yMax; + + } FT_BBox; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Pixel_Mode */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of pixels in a */ + /* given bitmap. Note that additional formats may be added in the */ + /* future. */ + /* */ + /* <Values> */ + /* FT_PIXEL_MODE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_PIXEL_MODE_MONO :: */ + /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ + /* are stored in most-significant order (MSB), which means that */ + /* the left-most pixel in a byte has value 128. */ + /* */ + /* FT_PIXEL_MODE_GRAY :: */ + /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ + /* images. Each pixel is stored in one byte. Note that the number */ + /* of `gray' levels is stored in the `num_grays' field of the */ + /* @FT_Bitmap structure (it generally is 256). */ + /* */ + /* FT_PIXEL_MODE_GRAY2 :: */ + /* A 2-bit per pixel bitmap, used to represent embedded */ + /* anti-aliased bitmaps in font files according to the OpenType */ + /* specification. We haven't found a single font using this */ + /* format, however. */ + /* */ + /* FT_PIXEL_MODE_GRAY4 :: */ + /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ + /* bitmaps in font files according to the OpenType specification. */ + /* We haven't found a single font using this format, however. */ + /* */ + /* FT_PIXEL_MODE_LCD :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on LCD displays; the bitmap is three times */ + /* wider than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD. */ + /* */ + /* FT_PIXEL_MODE_LCD_V :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on rotated LCD displays; the bitmap is three */ + /* times taller than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD_V. */ + /* */ + typedef enum FT_Pixel_Mode_ + { + FT_PIXEL_MODE_NONE = 0, + FT_PIXEL_MODE_MONO, + FT_PIXEL_MODE_GRAY, + FT_PIXEL_MODE_GRAY2, + FT_PIXEL_MODE_GRAY4, + FT_PIXEL_MODE_LCD, + FT_PIXEL_MODE_LCD_V, + + FT_PIXEL_MODE_MAX /* do not remove */ + + } FT_Pixel_Mode; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* ft_pixel_mode_xxx */ + /* */ + /* <Description> */ + /* A list of deprecated constants. Use the corresponding */ + /* @FT_Pixel_Mode values instead. */ + /* */ + /* <Values> */ + /* ft_pixel_mode_none :: See @FT_PIXEL_MODE_NONE. */ + /* ft_pixel_mode_mono :: See @FT_PIXEL_MODE_MONO. */ + /* ft_pixel_mode_grays :: See @FT_PIXEL_MODE_GRAY. */ + /* ft_pixel_mode_pal2 :: See @FT_PIXEL_MODE_GRAY2. */ + /* ft_pixel_mode_pal4 :: See @FT_PIXEL_MODE_GRAY4. */ + /* */ +#define ft_pixel_mode_none FT_PIXEL_MODE_NONE +#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO +#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY +#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 +#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 + + /* */ + +#if 0 + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Palette_Mode */ + /* */ + /* <Description> */ + /* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ + /* */ + /* An enumeration type to describe the format of a bitmap palette, */ + /* used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ + /* */ + /* <Values> */ + /* ft_palette_mode_rgb :: The palette is an array of 3-byte RGB */ + /* records. */ + /* */ + /* ft_palette_mode_rgba :: The palette is an array of 4-byte RGBA */ + /* records. */ + /* */ + /* <Note> */ + /* As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ + /* FreeType, these types are not handled by the library itself. */ + /* */ + typedef enum FT_Palette_Mode_ + { + ft_palette_mode_rgb = 0, + ft_palette_mode_rgba, + + ft_palette_mode_max /* do not remove */ + + } FT_Palette_Mode; + + /* */ + +#endif + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap */ + /* */ + /* <Description> */ + /* A structure used to describe a bitmap or pixmap to the raster. */ + /* Note that we now manage pixmaps of various depths through the */ + /* `pixel_mode' field. */ + /* */ + /* <Fields> */ + /* rows :: The number of bitmap rows. */ + /* */ + /* width :: The number of pixels in bitmap row. */ + /* */ + /* pitch :: The pitch's absolute value is the number of bytes */ + /* taken by one bitmap row, including padding. */ + /* However, the pitch is positive when the bitmap has */ + /* a `down' flow, and negative when it has an `up' */ + /* flow. In all cases, the pitch is an offset to add */ + /* to a bitmap pointer in order to go down one row. */ + /* */ + /* For the B/W rasterizer, `pitch' is always an even */ + /* number. */ + /* */ + /* buffer :: A typeless pointer to the bitmap buffer. This */ + /* value should be aligned on 32-bit boundaries in */ + /* most cases. */ + /* */ + /* num_grays :: This field is only used with */ + /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ + /* levels used in the bitmap. */ + /* */ + /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ + /* See @FT_Pixel_Mode for possible values. */ + /* */ + /* palette_mode :: This field is intended for paletted pixel modes; */ + /* it indicates how the palette is stored. Not */ + /* used currently. */ + /* */ + /* palette :: A typeless pointer to the bitmap palette; this */ + /* field is intended for paletted pixel modes. Not */ + /* used currently. */ + /* */ + /* <Note> */ + /* For now, the only pixel modes supported by FreeType are mono and */ + /* grays. However, drivers might be added in the future to support */ + /* more `colorful' options. */ + /* */ + typedef struct FT_Bitmap_ + { + int rows; + int width; + int pitch; + unsigned char* buffer; + short num_grays; + char pixel_mode; + char palette_mode; + void* palette; + + } FT_Bitmap; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline */ + /* */ + /* <Description> */ + /* This structure is used to describe an outline to the scan-line */ + /* converter. */ + /* */ + /* <Fields> */ + /* n_contours :: The number of contours in the outline. */ + /* */ + /* n_points :: The number of points in the outline. */ + /* */ + /* points :: A pointer to an array of `n_points' @FT_Vector */ + /* elements, giving the outline's point coordinates. */ + /* */ + /* tags :: A pointer to an array of `n_points' chars, giving */ + /* each outline point's type. */ + /* */ + /* If bit~0 is unset, the point is `off' the curve, */ + /* i.e., a Bézier control point, while it is `on' if */ + /* set. */ + /* */ + /* Bit~1 is meaningful for `off' points only. If set, */ + /* it indicates a third-order Bézier arc control point; */ + /* and a second-order control point if unset. */ + /* */ + /* If bit~2 is set, bits 5-7 contain the drop-out mode */ + /* (as defined in the OpenType specification; the value */ + /* is the same as the argument to the SCANMODE */ + /* instruction). */ + /* */ + /* Bits 3 and~4 are reserved for internal purposes. */ + /* */ + /* contours :: An array of `n_contours' shorts, giving the end */ + /* point of each contour within the outline. For */ + /* example, the first contour is defined by the points */ + /* `0' to `contours[0]', the second one is defined by */ + /* the points `contours[0]+1' to `contours[1]', etc. */ + /* */ + /* flags :: A set of bit flags used to characterize the outline */ + /* and give hints to the scan-converter and hinter on */ + /* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */ + /* */ + /* <Note> */ + /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ + /* first point of each contour. The drop-out mode as given with */ + /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ + /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ + /* */ + typedef struct FT_Outline_ + { + short n_contours; /* number of contours in glyph */ + short n_points; /* number of points in the glyph */ + + FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + short* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } FT_Outline; + + /* Following limits must be consistent with */ + /* FT_Outline.{n_contours,n_points} */ +#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX +#define FT_OUTLINE_POINTS_MAX SHRT_MAX + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OUTLINE_FLAGS */ + /* */ + /* <Description> */ + /* A list of bit-field constants use for the flags in an outline's */ + /* `flags' field. */ + /* */ + /* <Values> */ + /* FT_OUTLINE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_OUTLINE_OWNER :: */ + /* If set, this flag indicates that the outline's field arrays */ + /* (i.e., `points', `flags', and `contours') are `owned' by the */ + /* outline object, and should thus be freed when it is destroyed. */ + /* */ + /* FT_OUTLINE_EVEN_ODD_FILL :: */ + /* By default, outlines are filled using the non-zero winding rule. */ + /* If set to 1, the outline will be filled using the even-odd fill */ + /* rule (only works with the smooth rasterizer). */ + /* */ + /* FT_OUTLINE_REVERSE_FILL :: */ + /* By default, outside contours of an outline are oriented in */ + /* clock-wise direction, as defined in the TrueType specification. */ + /* This flag is set if the outline uses the opposite direction */ + /* (typically for Type~1 fonts). This flag is ignored by the scan */ + /* converter. */ + /* */ + /* FT_OUTLINE_IGNORE_DROPOUTS :: */ + /* By default, the scan converter will try to detect drop-outs in */ + /* an outline and correct the glyph bitmap to ensure consistent */ + /* shape continuity. If set, this flag hints the scan-line */ + /* converter to ignore such cases. See below for more information. */ + /* */ + /* FT_OUTLINE_SMART_DROPOUTS :: */ + /* Select smart dropout control. If unset, use simple dropout */ + /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ + /* below for more information. */ + /* */ + /* FT_OUTLINE_INCLUDE_STUBS :: */ + /* If set, turn pixels on for `stubs', otherwise exclude them. */ + /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ + /* more information. */ + /* */ + /* FT_OUTLINE_HIGH_PRECISION :: */ + /* This flag indicates that the scan-line converter should try to */ + /* convert this outline to bitmaps with the highest possible */ + /* quality. It is typically set for small character sizes. Note */ + /* that this is only a hint that might be completely ignored by a */ + /* given scan-converter. */ + /* */ + /* FT_OUTLINE_SINGLE_PASS :: */ + /* This flag is set to force a given scan-converter to only use a */ + /* single pass over the outline to render a bitmap glyph image. */ + /* Normally, it is set for very large character sizes. It is only */ + /* a hint that might be completely ignored by a given */ + /* scan-converter. */ + /* */ + /* <Note> */ + /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ + /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ + /* rasterizer. */ + /* */ + /* There exists a second mechanism to pass the drop-out mode to the */ + /* B/W rasterizer; see the `tags' field in @FT_Outline. */ + /* */ + /* Please refer to the description of the `SCANTYPE' instruction in */ + /* the OpenType specification (in file `ttinst1.doc') how simple */ + /* drop-outs, smart drop-outs, and stubs are defined. */ + /* */ +#define FT_OUTLINE_NONE 0x0 +#define FT_OUTLINE_OWNER 0x1 +#define FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define FT_OUTLINE_REVERSE_FILL 0x4 +#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 + +#define FT_OUTLINE_HIGH_PRECISION 0x100 +#define FT_OUTLINE_SINGLE_PASS 0x200 + + + /************************************************************************* + * + * @enum: + * ft_outline_flags + * + * @description: + * These constants are deprecated. Please use the corresponding + * @FT_OUTLINE_FLAGS values. + * + * @values: + * ft_outline_none :: See @FT_OUTLINE_NONE. + * ft_outline_owner :: See @FT_OUTLINE_OWNER. + * ft_outline_even_odd_fill :: See @FT_OUTLINE_EVEN_ODD_FILL. + * ft_outline_reverse_fill :: See @FT_OUTLINE_REVERSE_FILL. + * ft_outline_ignore_dropouts :: See @FT_OUTLINE_IGNORE_DROPOUTS. + * ft_outline_high_precision :: See @FT_OUTLINE_HIGH_PRECISION. + * ft_outline_single_pass :: See @FT_OUTLINE_SINGLE_PASS. + */ +#define ft_outline_none FT_OUTLINE_NONE +#define ft_outline_owner FT_OUTLINE_OWNER +#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL +#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL +#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS +#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION +#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS + + /* */ + +#define FT_CURVE_TAG( flag ) ( flag & 3 ) + +#define FT_CURVE_TAG_ON 1 +#define FT_CURVE_TAG_CONIC 0 +#define FT_CURVE_TAG_CUBIC 2 + +#define FT_CURVE_TAG_HAS_SCANMODE 4 + +#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ + +#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ + FT_CURVE_TAG_TOUCH_Y ) + +#define FT_Curve_Tag_On FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_MoveToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `move */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `move to' is emitted to start a new contour in an outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `move to'. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_LineToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `line */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `line to' is emitted to indicate a segment in the outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `line to'. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_ConicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `conic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `conic to' is emitted to indicate a second-order Bézier arc in */ + /* the outline. */ + /* */ + /* <Input> */ + /* control :: An intermediate control point between the last position */ + /* and the new target in `to'. */ + /* */ + /* to :: A pointer to the target end point of the conic arc. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); + +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_CubicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `cubic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ + /* */ + /* <Input> */ + /* control1 :: A pointer to the first Bézier control point. */ + /* */ + /* control2 :: A pointer to the second Bézier control point. */ + /* */ + /* to :: A pointer to the target end point. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); + +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline_Funcs */ + /* */ + /* <Description> */ + /* A structure to hold various function pointers used during outline */ + /* decomposition in order to emit segments, conic, and cubic Béziers. */ + /* */ + /* <Fields> */ + /* move_to :: The `move to' emitter. */ + /* */ + /* line_to :: The segment emitter. */ + /* */ + /* conic_to :: The second-order Bézier arc emitter. */ + /* */ + /* cubic_to :: The third-order Bézier arc emitter. */ + /* */ + /* shift :: The shift that is applied to coordinates before they */ + /* are sent to the emitter. */ + /* */ + /* delta :: The delta that is applied to coordinates before they */ + /* are sent to the emitter, but after the shift. */ + /* */ + /* <Note> */ + /* The point coordinates sent to the emitters are the transformed */ + /* version of the original coordinates (this is important for high */ + /* accuracy during scan-conversion). The transformation is simple: */ + /* */ + /* { */ + /* x' = (x << shift) - delta */ + /* y' = (x << shift) - delta */ + /* } */ + /* */ + /* Set the values of `shift' and `delta' to~0 to get the original */ + /* point coordinates. */ + /* */ + typedef struct FT_Outline_Funcs_ + { + FT_Outline_MoveToFunc move_to; + FT_Outline_LineToFunc line_to; + FT_Outline_ConicToFunc conic_to; + FT_Outline_CubicToFunc cubic_to; + + int shift; + FT_Pos delta; + + } FT_Outline_Funcs; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_IMAGE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags to an unsigned long type. */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_IMAGE_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_Format */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of a given glyph */ + /* image. Note that this version of FreeType only supports two image */ + /* formats, even though future font drivers will be able to register */ + /* their own format. */ + /* */ + /* <Values> */ + /* FT_GLYPH_FORMAT_NONE :: */ + /* The value~0 is reserved. */ + /* */ + /* FT_GLYPH_FORMAT_COMPOSITE :: */ + /* The glyph image is a composite of several other images. This */ + /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ + /* report compound glyphs (like accented characters). */ + /* */ + /* FT_GLYPH_FORMAT_BITMAP :: */ + /* The glyph image is a bitmap, and can be described as an */ + /* @FT_Bitmap. You generally need to access the `bitmap' field of */ + /* the @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_OUTLINE :: */ + /* The glyph image is a vectorial outline made of line segments */ + /* and Bézier arcs; it can be described as an @FT_Outline; you */ + /* generally want to access the `outline' field of the */ + /* @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_PLOTTER :: */ + /* The glyph image is a vectorial path with no inside and outside */ + /* contours. Some Type~1 fonts, like those in the Hershey family, */ + /* contain glyphs in this format. These are described as */ + /* @FT_Outline, but FreeType isn't currently capable of rendering */ + /* them correctly. */ + /* */ + typedef enum FT_Glyph_Format_ + { + FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) + + } FT_Glyph_Format; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* ft_glyph_format_xxx */ + /* */ + /* <Description> */ + /* A list of deprecated constants. Use the corresponding */ + /* @FT_Glyph_Format values instead. */ + /* */ + /* <Values> */ + /* ft_glyph_format_none :: See @FT_GLYPH_FORMAT_NONE. */ + /* ft_glyph_format_composite :: See @FT_GLYPH_FORMAT_COMPOSITE. */ + /* ft_glyph_format_bitmap :: See @FT_GLYPH_FORMAT_BITMAP. */ + /* ft_glyph_format_outline :: See @FT_GLYPH_FORMAT_OUTLINE. */ + /* ft_glyph_format_plotter :: See @FT_GLYPH_FORMAT_PLOTTER. */ + /* */ +#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE +#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE +#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP +#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE +#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* A raster is a scan converter, in charge of rendering an outline into */ + /* a a bitmap. This section contains the public API for rasters. */ + /* */ + /* Note that in FreeType 2, all rasters are now encapsulated within */ + /* specific modules called `renderers'. See `freetype/ftrender.h' for */ + /* more details on renderers. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* raster */ + /* */ + /* <Title> */ + /* Scanline Converter */ + /* */ + /* <Abstract> */ + /* How vectorial outlines are converted into bitmaps and pixmaps. */ + /* */ + /* <Description> */ + /* This section contains technical definitions. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Raster */ + /* */ + /* <Description> */ + /* A handle (pointer) to a raster object. Each object can be used */ + /* independently to convert an outline into a bitmap or pixmap. */ + /* */ + typedef struct FT_RasterRec_* FT_Raster; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Span */ + /* */ + /* <Description> */ + /* A structure used to model a single span of gray (or black) pixels */ + /* when rendering a monochrome or anti-aliased bitmap. */ + /* */ + /* <Fields> */ + /* x :: The span's horizontal start position. */ + /* */ + /* len :: The span's length in pixels. */ + /* */ + /* coverage :: The span color/coverage, ranging from 0 (background) */ + /* to 255 (foreground). Only used for anti-aliased */ + /* rendering. */ + /* */ + /* <Note> */ + /* This structure is used by the span drawing callback type named */ + /* @FT_SpanFunc which takes the y~coordinate of the span as a */ + /* a parameter. */ + /* */ + /* The coverage value is always between 0 and 255. If you want less */ + /* gray values, the callback function has to reduce them. */ + /* */ + typedef struct FT_Span_ + { + short x; + unsigned short len; + unsigned char coverage; + + } FT_Span; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_SpanFunc */ + /* */ + /* <Description> */ + /* A function used as a call-back by the anti-aliased renderer in */ + /* order to let client applications draw themselves the gray pixel */ + /* spans on each scan line. */ + /* */ + /* <Input> */ + /* y :: The scanline's y~coordinate. */ + /* */ + /* count :: The number of spans to draw on this scanline. */ + /* */ + /* spans :: A table of `count' spans to draw on the scanline. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Note> */ + /* This callback allows client applications to directly render the */ + /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ + /* */ + /* This can be used to write anti-aliased outlines directly to a */ + /* given background bitmap, and even perform translucency. */ + /* */ + /* Note that the `count' field cannot be greater than a fixed value */ + /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ + /* `ftoption.h'. By default, this value is set to~32, which means */ + /* that if there are more than 32~spans on a given scanline, the */ + /* callback is called several times with the same `y' parameter in */ + /* order to draw all callbacks. */ + /* */ + /* Otherwise, the callback is only called once per scan-line, and */ + /* only for those scanlines that do have `gray' pixels on them. */ + /* */ + typedef void + (*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); + +#define FT_Raster_Span_Func FT_SpanFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitTest_Func */ + /* */ + /* <Description> */ + /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ + /* */ + /* A function used as a call-back by the monochrome scan-converter */ + /* to test whether a given target pixel is already set to the drawing */ + /* `color'. These tests are crucial to implement drop-out control */ + /* per-se the TrueType spec. */ + /* */ + /* <Input> */ + /* y :: The pixel's y~coordinate. */ + /* */ + /* x :: The pixel's x~coordinate. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Return> */ + /* 1~if the pixel is `set', 0~otherwise. */ + /* */ + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitSet_Func */ + /* */ + /* <Description> */ + /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ + /* */ + /* A function used as a call-back by the monochrome scan-converter */ + /* to set an individual target pixel. This is crucial to implement */ + /* drop-out control according to the TrueType specification. */ + /* */ + /* <Input> */ + /* y :: The pixel's y~coordinate. */ + /* */ + /* x :: The pixel's x~coordinate. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Return> */ + /* 1~if the pixel is `set', 0~otherwise. */ + /* */ + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flag constants as used in the `flags' field of a */ + /* @FT_Raster_Params structure. */ + /* */ + /* <Values> */ + /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ + /* */ + /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ + /* anti-aliased glyph image should be */ + /* generated. Otherwise, it will be */ + /* monochrome (1-bit). */ + /* */ + /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ + /* rendering. In this mode, client */ + /* applications must provide their own span */ + /* callback. This lets them directly */ + /* draw or compose over an existing bitmap. */ + /* If this bit is not set, the target */ + /* pixmap's buffer _must_ be zeroed before */ + /* rendering. */ + /* */ + /* Note that for now, direct rendering is */ + /* only possible with anti-aliased glyphs. */ + /* */ + /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ + /* rendering mode. If set, the output will */ + /* be clipped to a box specified in the */ + /* `clip_box' field of the */ + /* @FT_Raster_Params structure. */ + /* */ + /* Note that by default, the glyph bitmap */ + /* is clipped to the target pixmap, except */ + /* in direct rendering mode where all spans */ + /* are generated if no clipping box is set. */ + /* */ +#define FT_RASTER_FLAG_DEFAULT 0x0 +#define FT_RASTER_FLAG_AA 0x1 +#define FT_RASTER_FLAG_DIRECT 0x2 +#define FT_RASTER_FLAG_CLIP 0x4 + + /* deprecated */ +#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT +#define ft_raster_flag_aa FT_RASTER_FLAG_AA +#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT +#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Params */ + /* */ + /* <Description> */ + /* A structure to hold the arguments used by a raster's render */ + /* function. */ + /* */ + /* <Fields> */ + /* target :: The target bitmap. */ + /* */ + /* source :: A pointer to the source glyph image (e.g., an */ + /* @FT_Outline). */ + /* */ + /* flags :: The rendering flags. */ + /* */ + /* gray_spans :: The gray span drawing callback. */ + /* */ + /* black_spans :: The black span drawing callback. UNIMPLEMENTED! */ + /* */ + /* bit_test :: The bit test callback. UNIMPLEMENTED! */ + /* */ + /* bit_set :: The bit set callback. UNIMPLEMENTED! */ + /* */ + /* user :: User-supplied data that is passed to each drawing */ + /* callback. */ + /* */ + /* clip_box :: An optional clipping box. It is only used in */ + /* direct rendering mode. Note that coordinates here */ + /* should be expressed in _integer_ pixels (and not in */ + /* 26.6 fixed-point units). */ + /* */ + /* <Note> */ + /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ + /* bit flag is set in the `flags' field, otherwise a monochrome */ + /* bitmap is generated. */ + /* */ + /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ + /* raster will call the `gray_spans' callback to draw gray pixel */ + /* spans, in the case of an aa glyph bitmap, it will call */ + /* `black_spans', and `bit_test' and `bit_set' in the case of a */ + /* monochrome bitmap. This allows direct composition over a */ + /* pre-existing bitmap through user-provided callbacks to perform the */ + /* span drawing/composition. */ + /* */ + /* Note that the `bit_test' and `bit_set' callbacks are required when */ + /* rendering a monochrome bitmap, as they are crucial to implement */ + /* correct drop-out control as defined in the TrueType specification. */ + /* */ + typedef struct FT_Raster_Params_ + { + const FT_Bitmap* target; + const void* source; + int flags; + FT_SpanFunc gray_spans; + FT_SpanFunc black_spans; /* doesn't work! */ + FT_Raster_BitTest_Func bit_test; /* doesn't work! */ + FT_Raster_BitSet_Func bit_set; /* doesn't work! */ + void* user; + FT_BBox clip_box; + + } FT_Raster_Params; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_NewFunc */ + /* */ + /* <Description> */ + /* A function used to create a new raster object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory allocator. */ + /* */ + /* <Output> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `memory' parameter is a typeless pointer in order to avoid */ + /* un-wanted dependencies on the rest of the FreeType code. In */ + /* practice, it is an @FT_Memory object, i.e., a handle to the */ + /* standard FreeType memory allocator. However, this field can be */ + /* completely ignored by a given raster implementation. */ + /* */ + typedef int + (*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); + +#define FT_Raster_New_Func FT_Raster_NewFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_DoneFunc */ + /* */ + /* <Description> */ + /* A function used to destroy a given raster object. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + typedef void + (*FT_Raster_DoneFunc)( FT_Raster raster ); + +#define FT_Raster_Done_Func FT_Raster_DoneFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_ResetFunc */ + /* */ + /* <Description> */ + /* FreeType provides an area of memory called the `render pool', */ + /* available to all registered rasters. This pool can be freely used */ + /* during a given scan-conversion but is shared by all rasters. Its */ + /* content is thus transient. */ + /* */ + /* This function is called each time the render pool changes, or just */ + /* after a new raster object is created. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* pool_base :: The address in memory of the render pool. */ + /* */ + /* pool_size :: The size in bytes of the render pool. */ + /* */ + /* <Note> */ + /* Rasters can ignore the render pool and rely on dynamic memory */ + /* allocation if they want to (a handle to the memory allocator is */ + /* passed to the raster constructor). However, this is not */ + /* recommended for efficiency purposes. */ + /* */ + typedef void + (*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_SetModeFunc */ + /* */ + /* <Description> */ + /* This function is a generic facility to change modes or attributes */ + /* in a given raster. This can be used for debugging purposes, or */ + /* simply to allow implementation-specific `features' in a given */ + /* raster module. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* mode :: A 4-byte tag used to name the mode or property. */ + /* */ + /* args :: A pointer to the new mode/property to use. */ + /* */ + typedef int + (*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); + +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_RenderFunc */ + /* */ + /* <Description> */ + /* Invoke a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* store the rendering parameters. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The exact format of the source image depends on the raster's glyph */ + /* format defined in its @FT_Raster_Funcs structure. It can be an */ + /* @FT_Outline or anything else in order to support a large array of */ + /* glyph formats. */ + /* */ + /* Note also that the render function can fail and return a */ + /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ + /* not support direct composition. */ + /* */ + /* XXX: For now, the standard raster doesn't support direct */ + /* composition but this should change for the final release (see */ + /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ + /* for examples of distinct implementations which support direct */ + /* composition). */ + /* */ + typedef int + (*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); + +#define FT_Raster_Render_Func FT_Raster_RenderFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Funcs */ + /* */ + /* <Description> */ + /* A structure used to describe a given raster class to the library. */ + /* */ + /* <Fields> */ + /* glyph_format :: The supported glyph format for this raster. */ + /* */ + /* raster_new :: The raster constructor. */ + /* */ + /* raster_reset :: Used to reset the render pool within the raster. */ + /* */ + /* raster_render :: A function to render a glyph into a given bitmap. */ + /* */ + /* raster_done :: The raster destructor. */ + /* */ + typedef struct FT_Raster_Funcs_ + { + FT_Glyph_Format glyph_format; + FT_Raster_NewFunc raster_new; + FT_Raster_ResetFunc raster_reset; + FT_Raster_SetModeFunc raster_set_mode; + FT_Raster_RenderFunc raster_render; + FT_Raster_DoneFunc raster_done; + + } FT_Raster_Funcs; + + + /* */ + + +FT_END_HEADER + +#endif /* __FTIMAGE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows32/include/freetype/ftincrem.h b/lib/windows32/include/freetype/ftincrem.h new file mode 100644 index 0000000..aaf689f --- /dev/null +++ b/lib/windows32/include/freetype/ftincrem.h @@ -0,0 +1,353 @@ +/***************************************************************************/ +/* */ +/* ftincrem.h */ +/* */ +/* FreeType incremental loading (specification). */ +/* */ +/* Copyright 2002, 2003, 2006, 2007, 2008, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTINCREM_H__ +#define __FTINCREM_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * `incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application, + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + + /*************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * `incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript interpreters), + * where the glyph data isn't in the font file, or must be overridden by + * different values. + * + * @note: + * It is up to client applications to create and implement @FT_Incremental + * objects, as long as they provide implementations for the methods + * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc + * and @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ + typedef struct FT_IncrementalRec_* FT_Incremental; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned + * by the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical' argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ + typedef struct FT_Incremental_MetricsRec_ + { + FT_Long bearing_x; + FT_Long bearing_y; + FT_Long advance; + FT_Long advance_v; /* since 2.3.12 */ + + } FT_Incremental_MetricsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ + typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the `glyf' table. For PostScript formats, it must correspond to the + * *unencrypted* charstring bytes, without any `lenIV' header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release + * the data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ + typedef void + (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This is necessary because, in certain + * formats like TrueType, the metrics are stored in a different place from + * the glyph images proper. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. + * The original glyph metrics, if any, in font units. If metrics are + * not available all the values must be set to zero. + * + * @output: + * ametrics :: + * The replacement glyph metrics in font units. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphMetricsFunc) + ( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + + /************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data + * incrementally. Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does + * not provide overriding glyph metrics. + * + */ + typedef struct FT_Incremental_FuncsRec_ + { + FT_Incremental_GetGlyphDataFunc get_glyph_data; + FT_Incremental_FreeGlyphDataFunc free_glyph_data; + FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; + + } FT_Incremental_FuncsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * { + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * } + * + */ + typedef struct FT_Incremental_InterfaceRec_ + { + const FT_Incremental_FuncsRec* funcs; + FT_Incremental object; + + } FT_Incremental_InterfaceRec; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ + typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * A constant used as the tag of @FT_Parameter structures to indicate + * an incremental loading object to be used by FreeType. + * + */ +#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) + + /* */ + +FT_END_HEADER + +#endif /* __FTINCREM_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftlcdfil.h b/lib/windows32/include/freetype/ftlcdfil.h new file mode 100644 index 0000000..0b55ebe --- /dev/null +++ b/lib/windows32/include/freetype/ftlcdfil.h @@ -0,0 +1,213 @@ +/***************************************************************************/ +/* */ +/* ftlcdfil.h */ +/* */ +/* FreeType API for color filtering of subpixel bitmap glyphs */ +/* (specification). */ +/* */ +/* Copyright 2006, 2007, 2008, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_LCD_FILTER_H__ +#define __FT_LCD_FILTER_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * lcd_filtering + * + * @title: + * LCD Filtering + * + * @abstract: + * Reduce color fringes of LCD-optimized bitmaps. + * + * @description: + * The @FT_Library_SetLcdFilter API can be used to specify a low-pass + * filter which is then applied to LCD-optimized bitmaps generated + * through @FT_Render_Glyph. This is useful to reduce color fringes + * which would occur with unfiltered rendering. + * + * Note that no filter is active by default, and that this function is + * *not* implemented in default builds of the library. You need to + * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file + * in order to activate it. + */ + + + /**************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * The default filter reduces color fringes considerably, at the cost + * of a slight blurriness in the output. + * + * FT_LCD_FILTER_LIGHT :: + * The light filter is a variant that produces less blurriness at the + * cost of slightly more color fringes than the default one. It might + * be better, depending on taste, your monitor, or your personal vision. + * + * FT_LCD_FILTER_LEGACY :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * In other words, it only works well if the TrueType bytecode + * interpreter is enabled *and* high-quality hinted fonts are used. + * + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. + * + * @since: + * 2.3.0 + */ + typedef enum FT_LcdFilter_ + { + FT_LCD_FILTER_NONE = 0, + FT_LCD_FILTER_DEFAULT = 1, + FT_LCD_FILTER_LIGHT = 2, + FT_LCD_FILTER_LEGACY = 16, + + FT_LCD_FILTER_MAX /* do not remove */ + + } FT_LcdFilter; + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work + * well on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This feature is always disabled by default. Clients must make an + * explicit call to this function with a `filter' value other than + * @FT_LCD_FILTER_NONE in order to enable it. + * + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, + * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. + * + * It does _not_ affect the output of @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * If this feature is activated, the dimensions of LCD glyph bitmaps are + * either larger or taller than the dimensions of the corresponding + * outline with regards to the pixel grid. For example, for + * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and + * up to 3~pixels to the right. + * + * The bitmap offset values are adjusted correctly, so clients shouldn't + * need to modify their layout and glyph positioning code when enabling + * the filter. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilterWeights + * + * @description: + * Use this function to override the filter weights selected by + * @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple + * (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10, + * 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and + * FT_LCD_FILTER_LEGACY. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * This function must be called after @FT_Library_SetLcdFilter to have + * any effect. + * + * @since: + * 2.4.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + + /* */ + + +FT_END_HEADER + +#endif /* __FT_LCD_FILTER_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftlist.h b/lib/windows32/include/freetype/ftlist.h new file mode 100644 index 0000000..bb6f7f1 --- /dev/null +++ b/lib/windows32/include/freetype/ftlist.h @@ -0,0 +1,277 @@ +/***************************************************************************/ +/* */ +/* ftlist.h */ +/* */ +/* Generic list support for FreeType (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2007, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file implements functions relative to list processing. Its */ + /* data structures are defined in `freetype.h'. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTLIST_H__ +#define __FTLIST_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /* <Title> */ + /* List Processing */ + /* */ + /* <Abstract> */ + /* Simple management of lists. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to list */ + /* processing using doubly-linked nodes. */ + /* */ + /* <Order> */ + /* FT_List */ + /* FT_ListNode */ + /* FT_ListRec */ + /* FT_ListNodeRec */ + /* */ + /* FT_List_Add */ + /* FT_List_Insert */ + /* FT_List_Find */ + /* FT_List_Remove */ + /* FT_List_Up */ + /* FT_List_Iterate */ + /* FT_List_Iterator */ + /* FT_List_Finalize */ + /* FT_List_Destructor */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Find */ + /* */ + /* <Description> */ + /* Find the list node for a given listed object. */ + /* */ + /* <Input> */ + /* list :: A pointer to the parent list. */ + /* data :: The address of the listed object. */ + /* */ + /* <Return> */ + /* List node. NULL if it wasn't found. */ + /* */ + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Add */ + /* */ + /* <Description> */ + /* Append an element to the end of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to append. */ + /* */ + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Insert */ + /* */ + /* <Description> */ + /* Insert an element at the head of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to parent list. */ + /* node :: The node to insert. */ + /* */ + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Remove */ + /* */ + /* <Description> */ + /* Remove a node from a list. This function doesn't check whether */ + /* the node is in the list! */ + /* */ + /* <Input> */ + /* node :: The node to remove. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* */ + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Up */ + /* */ + /* <Description> */ + /* Move a node to the head/top of a list. Used to maintain LRU */ + /* lists. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to move. */ + /* */ + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Iterator */ + /* */ + /* <Description> */ + /* An FT_List iterator function which is called during a list parse */ + /* by @FT_List_Iterate. */ + /* */ + /* <Input> */ + /* node :: The current iteration list node. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. */ + /* Can be used to point to the iteration's state. */ + /* */ + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Iterate */ + /* */ + /* <Description> */ + /* Parse a list and calls a given iterator function on each element. */ + /* Note that parsing is stopped as soon as one of the iterator calls */ + /* returns a non-zero value. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* iterator :: An iterator function, called on each node of the list. */ + /* user :: A user-supplied field which is passed as the second */ + /* argument to the iterator. */ + /* */ + /* <Return> */ + /* The result (a FreeType error code) of the last iterator call. */ + /* */ + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Destructor */ + /* */ + /* <Description> */ + /* An @FT_List iterator function which is called during a list */ + /* finalization by @FT_List_Finalize to destroy all elements in a */ + /* given list. */ + /* */ + /* <Input> */ + /* system :: The current system object. */ + /* */ + /* data :: The current object to destroy. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ + /* be used to point to the iteration's state. */ + /* */ + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Finalize */ + /* */ + /* <Description> */ + /* Destroy all elements in the list as well as the list itself. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* */ + /* destroy :: A list destructor that will be applied to each element */ + /* of the list. */ + /* */ + /* memory :: The current memory object which handles deallocation. */ + /* */ + /* user :: A user-supplied field which is passed as the last */ + /* argument to the destructor. */ + /* */ + /* <Note> */ + /* This function expects that all nodes added by @FT_List_Add or */ + /* @FT_List_Insert have been dynamically allocated. */ + /* */ + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTLIST_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftlzw.h b/lib/windows32/include/freetype/ftlzw.h new file mode 100644 index 0000000..00d4016 --- /dev/null +++ b/lib/windows32/include/freetype/ftlzw.h @@ -0,0 +1,99 @@ +/***************************************************************************/ +/* */ +/* ftlzw.h */ +/* */ +/* LZW-compressed stream support. */ +/* */ +/* Copyright 2004, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTLZW_H__ +#define __FTLZW_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* lzw */ + /* */ + /* <Title> */ + /* LZW Streams */ + /* */ + /* <Abstract> */ + /* Using LZW-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of LZW-specific functions. */ + /* */ + /*************************************************************************/ + + /************************************************************************ + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is + * mainly used to support the compressed `*.pcf.Z' fonts that come + * with XFree86. + * + * @input: + * stream :: The target embedding stream. + * + * source :: The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream + * + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it + * and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with LZW support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLZW_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftmac.h b/lib/windows32/include/freetype/ftmac.h new file mode 100644 index 0000000..ab5bab5 --- /dev/null +++ b/lib/windows32/include/freetype/ftmac.h @@ -0,0 +1,274 @@ +/***************************************************************************/ +/* */ +/* ftmac.h */ +/* */ +/* Additional Mac-specific API. */ +/* */ +/* Copyright 1996-2001, 2004, 2006, 2007 by */ +/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* NOTE: Include this file after <freetype/freetype.h> and after any */ +/* Mac-specific headers (because this header uses Mac types such as */ +/* Handle, FSSpec, FSRef, etc.) */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMAC_H__ +#define __FTMAC_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + +/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ +#ifndef FT_DEPRECATED_ATTRIBUTE +#if defined(__GNUC__) && \ + ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) +#else +#define FT_DEPRECATED_ATTRIBUTE +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* mac_specific */ + /* */ + /* <Title> */ + /* Mac Specific Interface */ + /* */ + /* <Abstract> */ + /* Only available on the Macintosh. */ + /* */ + /* <Description> */ + /* The following definitions are only available if FreeType is */ + /* compiled on a Macintosh. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FOND */ + /* */ + /* <Description> */ + /* Create a new face object from a FOND resource. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* fond :: A FOND resource. */ + /* */ + /* face_index :: Only supported for the -1 `sanity check' special */ + /* case. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Notes> */ + /* This function can be used to create @FT_Face objects from fonts */ + /* that are installed in the system as follows. */ + /* */ + /* { */ + /* fond = GetResource( 'FOND', fontName ); */ + /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font (e.g., Times New Roman */ + /* Bold). */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFilePath_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return a pathname of the disk file and face index for given font */ + /* name which is handled by ATS framework. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* path :: Buffer to store pathname of the file. For passing */ + /* to @FT_New_Face. The client must allocate this */ + /* buffer before calling this function. */ + /* */ + /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ + /* */ + /* face_index :: Index of the face. For passing to @FT_New_Face. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSSpec */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSSpec to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSSpec to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ + /* it accepts an FSSpec instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSRef */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSRef to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSRef to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ + /* it accepts an FSRef instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + /* */ + + +FT_END_HEADER + + +#endif /* __FTMAC_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftmm.h b/lib/windows32/include/freetype/ftmm.h new file mode 100644 index 0000000..3aefb9e --- /dev/null +++ b/lib/windows32/include/freetype/ftmm.h @@ -0,0 +1,378 @@ +/***************************************************************************/ +/* */ +/* ftmm.h */ +/* */ +/* FreeType Multiple Master font interface (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMM_H__ +#define __FTMM_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* multiple_masters */ + /* */ + /* <Title> */ + /* Multiple Masters */ + /* */ + /* <Abstract> */ + /* How to manage Multiple Masters fonts. */ + /* */ + /* <Description> */ + /* The following types and functions are used to manage Multiple */ + /* Master fonts, i.e., the selection of specific design instances by */ + /* setting design axis coordinates. */ + /* */ + /* George Williams has extended this interface to make it work with */ + /* both Type~1 Multiple Masters fonts and GX distortable (var) */ + /* fonts. Some of these routines only work with MM fonts, others */ + /* will work with both types. They are similar enough that a */ + /* consistent interface makes sense. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters fonts. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + typedef struct FT_MM_Axis_ + { + FT_String* name; + FT_Long minimum; + FT_Long maximum; + + } FT_MM_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Multi_Master */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* font. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* num_axis :: Number of axes. Cannot exceed~4. */ + /* */ + /* num_designs :: Number of designs; should be normally 2^num_axis */ + /* even though the Type~1 specification strangely */ + /* allows for intermediate designs to be present. This */ + /* number cannot exceed~16. */ + /* */ + /* axis :: A table of axis descriptors. */ + /* */ + typedef struct FT_Multi_Master_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_MM_Axis axis[T1_MAX_MM_AXIS]; + + } FT_Multi_Master; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters and GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* Not always meaningful for GX. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* def :: The axis's default design coordinate. */ + /* FreeType computes meaningful default values for MM; it */ + /* is then an integer value, not in 16.16 format. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + /* tag :: The axis's tag (the GX equivalent to `name'). */ + /* FreeType provides default values for MM if possible. */ + /* */ + /* strid :: The entry in `name' table (another GX version of */ + /* `name'). */ + /* Not meaningful for MM. */ + /* */ + typedef struct FT_Var_Axis_ + { + FT_String* name; + + FT_Fixed minimum; + FT_Fixed def; + FT_Fixed maximum; + + FT_ULong tag; + FT_UInt strid; + + } FT_Var_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Named_Style */ + /* */ + /* <Description> */ + /* A simple structure used to model a named style in a GX var font. */ + /* */ + /* This structure can't be used for MM fonts. */ + /* */ + /* <Fields> */ + /* coords :: The design coordinates for this style. */ + /* This is an array with one entry for each axis. */ + /* */ + /* strid :: The entry in `name' table identifying this style. */ + /* */ + typedef struct FT_Var_Named_Style_ + { + FT_Fixed* coords; + FT_UInt strid; + + } FT_Var_Named_Style; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Var */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* or GX var distortable font. */ + /* */ + /* Some fields are specific to one format and not to the other. */ + /* */ + /* <Fields> */ + /* num_axis :: The number of axes. The maximum value is~4 for */ + /* MM; no limit in GX. */ + /* */ + /* num_designs :: The number of designs; should be normally */ + /* 2^num_axis for MM fonts. Not meaningful for GX */ + /* (where every glyph could have a different */ + /* number of designs). */ + /* */ + /* num_namedstyles :: The number of named styles; only meaningful for */ + /* GX which allows certain design coordinates to */ + /* have a string ID (in the `name' table) */ + /* associated with them. The font can tell the */ + /* user that, for example, Weight=1.5 is `Bold'. */ + /* */ + /* axis :: A table of axis descriptors. */ + /* GX fonts contain slightly more data than MM. */ + /* */ + /* namedstyles :: A table of named styles. */ + /* Only meaningful with GX. */ + /* */ + typedef struct FT_MM_Var_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_UInt num_namedstyles; + FT_Var_Axis* axis; + FT_Var_Named_Style* namedstyle; + + } FT_MM_Var; + + + /* */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Multi_Master */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master descriptor of a given font. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_MM_Var */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master/GX var descriptor of a given font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters/GX var descriptor. */ + /* Allocates a data structure, which the user must free */ + /* (a single call to FT_FREE will do it). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Var( FT_Face face, + FT_MM_Var* *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters fonts, choose an interpolated font design */ + /* through design coordinates. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of design coordinates (must be equal to */ + /* the number of axes in the font). */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Master or GX Var fonts, choose an interpolated font */ + /* design through design coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of design coordinates (must be equal to */ + /* the number of axes in the font). */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Blend_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters and GX var fonts, choose an interpolated font */ + /* design through normalized blend coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of design coordinates (must be equal to */ + /* the number of axes in the font). */ + /* */ + /* coords :: The design coordinates array (each element must be */ + /* between 0 and 1.0). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Blend_Coordinates */ + /* */ + /* <Description> */ + /* This is another name of @FT_Set_MM_Blend_Coordinates. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTMM_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftmodapi.h b/lib/windows32/include/freetype/ftmodapi.h new file mode 100644 index 0000000..8f2e017 --- /dev/null +++ b/lib/windows32/include/freetype/ftmodapi.h @@ -0,0 +1,483 @@ +/***************************************************************************/ +/* */ +/* ftmodapi.h */ +/* */ +/* FreeType modules public interface (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMODAPI_H__ +#define __FTMODAPI_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /* <Title> */ + /* Module Management */ + /* */ + /* <Abstract> */ + /* How to add, upgrade, and remove modules from FreeType. */ + /* */ + /* <Description> */ + /* The definitions below are used to manage modules within FreeType. */ + /* Modules can be added, upgraded, and removed at runtime. */ + /* */ + /*************************************************************************/ + + + /* module bit flags */ +#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ +#define FT_MODULE_RENDERER 2 /* this module is a renderer */ +#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ +#define FT_MODULE_STYLER 8 /* this module is a styler */ + +#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ + /* scalable fonts */ +#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ + /* support vector outlines */ +#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ + /* own hinter */ + + + /* deprecated values */ +#define ft_module_font_driver FT_MODULE_FONT_DRIVER +#define ft_module_renderer FT_MODULE_RENDERER +#define ft_module_hinter FT_MODULE_HINTER +#define ft_module_styler FT_MODULE_STYLER + +#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE +#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES +#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER + + + typedef FT_Pointer FT_Module_Interface; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Constructor */ + /* */ + /* <Description> */ + /* A function used to initialize (not create) a new module object. */ + /* */ + /* <Input> */ + /* module :: The module to initialize. */ + /* */ + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destructor */ + /* */ + /* <Description> */ + /* A function used to finalize (not destroy) a given module object. */ + /* */ + /* <Input> */ + /* module :: The module to finalize. */ + /* */ + typedef void + (*FT_Module_Destructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Requester */ + /* */ + /* <Description> */ + /* A function used to query a given module for a specific interface. */ + /* */ + /* <Input> */ + /* module :: The module to finalize. */ + /* */ + /* name :: The name of the interface in the module. */ + /* */ + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Module_Class */ + /* */ + /* <Description> */ + /* The module class descriptor. */ + /* */ + /* <Fields> */ + /* module_flags :: Bit flags describing the module. */ + /* */ + /* module_size :: The size of one module object/instance in */ + /* bytes. */ + /* */ + /* module_name :: The name of the module. */ + /* */ + /* module_version :: The version, as a 16.16 fixed number */ + /* (major.minor). */ + /* */ + /* module_requires :: The version of FreeType this module requires, */ + /* as a 16.16 fixed number (major.minor). Starts */ + /* at version 2.0, i.e., 0x20000. */ + /* */ + /* module_init :: The initializing function. */ + /* */ + /* module_done :: The finalizing function. */ + /* */ + /* get_interface :: The interface requesting function. */ + /* */ + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Long module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Module */ + /* */ + /* <Description> */ + /* Add a new module to a given library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* clazz :: A pointer to class descriptor for the module. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module */ + /* */ + /* <Description> */ + /* Find a module by its name. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module handle. 0~if none was found. */ + /* */ + /* <Note> */ + /* FreeType's internal modules aren't documented very well, and you */ + /* should look up the source code for details. */ + /* */ + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Remove_Module */ + /* */ + /* <Description> */ + /* Remove a given module from a library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to a library object. */ + /* */ + /* <Input> */ + /* module :: A handle to a module object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The module object is destroyed by the function in case of success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Library */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Library */ + /* structure is created. This function increments the counter. */ + /* @FT_Done_Library then only destroys a library if the counter is~1, */ + /* otherwise it simply decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures which */ + /* reference @FT_Library objects. */ + /* */ + /* <Input> */ + /* library :: A handle to a target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Library( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Library */ + /* */ + /* <Description> */ + /* This function is used to create a new FreeType library instance */ + /* from a given memory object. It is thus possible to use libraries */ + /* with distinct memory allocators within the same program. */ + /* */ + /* Normally, you would call this function (followed by a call to */ + /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ + /* instead of @FT_Init_FreeType to initialize the FreeType library. */ + /* */ + /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ + /* library instance. */ + /* */ + /* <Input> */ + /* memory :: A handle to the original memory object. */ + /* */ + /* <Output> */ + /* alibrary :: A pointer to handle of a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Library */ + /* */ + /* <Description> */ + /* Discard a given library object. This closes all drivers and */ + /* discards all resource objects. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); + +/* */ + + typedef void + (*FT_DebugHook_Func)( void* arg ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Debug_Hook */ + /* */ + /* <Description> */ + /* Set a debug hook function for debugging the interpreter of a font */ + /* format. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* hook_index :: The index of the debug hook. You should use the */ + /* values defined in `ftobjs.h', e.g., */ + /* `FT_DEBUG_HOOK_TRUETYPE'. */ + /* */ + /* debug_hook :: The function used to debug the interpreter. */ + /* */ + /* <Note> */ + /* Currently, four debug hook slots are available, but only two (for */ + /* the TrueType and the Type~1 interpreter) are defined. */ + /* */ + /* Since the internal headers of FreeType are no longer installed, */ + /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ + /* This is a bug and will be fixed in a forthcoming release. */ + /* */ + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Default_Modules */ + /* */ + /* <Description> */ + /* Add the set of default drivers to a given library object. */ + /* This is only useful when you create a library object with */ + /* @FT_New_Library (usually to plug a custom memory manager). */ + /* */ + /* <InOut> */ + /* library :: A handle to a new library object. */ + /* */ + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); + + + + /************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode + * engine is implemented in a given FT_Library instance. It is used + * by the @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * The library implements a bytecode interpreter that doesn't + * support the patented operations of the TrueType virtual machine. + * + * Its main use is to load certain Asian fonts which position and + * scale glyph components with bytecode instructions. It produces + * bad output for most other fonts. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers + * the full instruction set of the TrueType virtual machine (this + * was governed by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ + typedef enum FT_TrueTypeEngineType_ + { + FT_TRUETYPE_ENGINE_TYPE_NONE = 0, + FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, + FT_TRUETYPE_ENGINE_TYPE_PATENTED + + } FT_TrueTypeEngineType; + + + /************************************************************************** + * + * @func: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of + * the TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ + FT_EXPORT( FT_TrueTypeEngineType ) + FT_Get_TrueType_Engine_Type( FT_Library library ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTMODAPI_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftmoderr.h b/lib/windows32/include/freetype/ftmoderr.h new file mode 100644 index 0000000..b0115dd --- /dev/null +++ b/lib/windows32/include/freetype/ftmoderr.h @@ -0,0 +1,155 @@ +/***************************************************************************/ +/* */ +/* ftmoderr.h */ +/* */ +/* FreeType module error offsets (specification). */ +/* */ +/* Copyright 2001, 2002, 2003, 2004, 2005 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the FreeType module error offsets. */ + /* */ + /* The lower byte gives the error code, the higher byte gives the */ + /* module. The base module has error offset 0. For example, the error */ + /* `FT_Err_Invalid_File_Format' has value 0x003, the error */ + /* `TT_Err_Invalid_File_Format' has value 0x1103, the error */ + /* `T1_Err_Invalid_File_Format' has value 0x1203, etc. */ + /* */ + /* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */ + /* to make the higher byte always zero (disabling the module error */ + /* mechanism). */ + /* */ + /* It can also be used to create a module error message table easily */ + /* with something like */ + /* */ + /* { */ + /* #undef __FTMODERR_H__ */ + /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ + /* #define FT_MODERR_START_LIST { */ + /* #define FT_MODERR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int mod_err_offset; */ + /* const char* mod_err_msg */ + /* } ft_mod_errors[] = */ + /* */ + /* #include FT_MODULE_ERRORS_H */ + /* } */ + /* */ + /* To use such a table, all errors must be ANDed with 0xFF00 to remove */ + /* the error code. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTMODERR_H__ +#define __FTMODERR_H__ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) + FT_MODERRDEF( BDF, 0x200, "BDF module" ) + FT_MODERRDEF( Cache, 0x300, "cache module" ) + FT_MODERRDEF( CFF, 0x400, "CFF module" ) + FT_MODERRDEF( CID, 0x500, "CID module" ) + FT_MODERRDEF( Gzip, 0x600, "Gzip module" ) + FT_MODERRDEF( LZW, 0x700, "LZW module" ) + FT_MODERRDEF( OTvalid, 0x800, "OpenType validation module" ) + FT_MODERRDEF( PCF, 0x900, "PCF module" ) + FT_MODERRDEF( PFR, 0xA00, "PFR module" ) + FT_MODERRDEF( PSaux, 0xB00, "PS auxiliary module" ) + FT_MODERRDEF( PShinter, 0xC00, "PS hinter module" ) + FT_MODERRDEF( PSnames, 0xD00, "PS names module" ) + FT_MODERRDEF( Raster, 0xE00, "raster module" ) + FT_MODERRDEF( SFNT, 0xF00, "SFNT module" ) + FT_MODERRDEF( Smooth, 0x1000, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0x1100, "TrueType module" ) + FT_MODERRDEF( Type1, 0x1200, "Type 1 module" ) + FT_MODERRDEF( Type42, 0x1300, "Type 42 module" ) + FT_MODERRDEF( Winfonts, 0x1400, "Windows FON/FNT module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* __FTMODERR_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftotval.h b/lib/windows32/include/freetype/ftotval.h new file mode 100644 index 0000000..027f2e8 --- /dev/null +++ b/lib/windows32/include/freetype/ftotval.h @@ -0,0 +1,203 @@ +/***************************************************************************/ +/* */ +/* ftotval.h */ +/* */ +/* FreeType API for validating OpenType tables (specification). */ +/* */ +/* Copyright 2004, 2005, 2006, 2007 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* */ +/* Warning: This module might be moved to a different library in the */ +/* future to avoid a tight dependency between FreeType and the */ +/* OpenType specification. */ +/* */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOTVAL_H__ +#define __FTOTVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* ot_validation */ + /* */ + /* <Title> */ + /* OpenType Validation */ + /* */ + /* <Abstract> */ + /* An API to validate OpenType tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @description: + * A list of bit-field constants used with @FT_OpenType_Validate to + * indicate which OpenType tables should be validated. + * + * @values: + * FT_VALIDATE_BASE :: + * Validate BASE table. + * + * FT_VALIDATE_GDEF :: + * Validate GDEF table. + * + * FT_VALIDATE_GPOS :: + * Validate GPOS table. + * + * FT_VALIDATE_GSUB :: + * Validate GSUB table. + * + * FT_VALIDATE_JSTF :: + * Validate JSTF table. + * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ +#define FT_VALIDATE_BASE 0x0100 +#define FT_VALIDATE_GDEF 0x0200 +#define FT_VALIDATE_GPOS 0x0400 +#define FT_VALIDATE_GSUB 0x0800 +#define FT_VALIDATE_JSTF 0x1000 +#define FT_VALIDATE_MATH 0x2000 + +#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH + + /* */ + + /********************************************************************** + * + * @function: + * FT_OpenType_Validate + * + * @description: + * Validate various OpenType tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library which + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field which specifies the tables to be validated. See + * @FT_VALIDATE_OTXXX for possible values. + * + * @output: + * BASE_table :: + * A pointer to the BASE table. + * + * GDEF_table :: + * A pointer to the GDEF table. + * + * GPOS_table :: + * A pointer to the GPOS table. + * + * GSUB_table :: + * A pointer to the GSUB table. + * + * JSTF_table :: + * A pointer to the JSTF table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with OpenType fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the five tables with + * @FT_OpenType_Free. A NULL value indicates that the table either + * doesn't exist in the font, or the application hasn't asked for + * validation. + */ + FT_EXPORT( FT_Error ) + FT_OpenType_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *BASE_table, + FT_Bytes *GDEF_table, + FT_Bytes *GPOS_table, + FT_Bytes *GSUB_table, + FT_Bytes *JSTF_table ); + + /* */ + + /********************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ + FT_EXPORT( void ) + FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTOTVAL_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftoutln.h b/lib/windows32/include/freetype/ftoutln.h new file mode 100644 index 0000000..2829a05 --- /dev/null +++ b/lib/windows32/include/freetype/ftoutln.h @@ -0,0 +1,537 @@ +/***************************************************************************/ +/* */ +/* ftoutln.h */ +/* */ +/* Support for the FT_Outline type used to store glyph shapes of */ +/* most scalable font formats (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOUTLN_H__ +#define __FTOUTLN_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /* <Title> */ + /* Outline Processing */ + /* */ + /* <Abstract> */ + /* Functions to create, transform, and render vectorial glyph images. */ + /* */ + /* <Description> */ + /* This section contains routines used to create and destroy scalable */ + /* glyph images known as `outlines'. These can also be measured, */ + /* transformed, and converted into bitmaps and pixmaps. */ + /* */ + /* <Order> */ + /* FT_Outline */ + /* FT_OUTLINE_FLAGS */ + /* FT_Outline_New */ + /* FT_Outline_Done */ + /* FT_Outline_Copy */ + /* FT_Outline_Translate */ + /* FT_Outline_Transform */ + /* FT_Outline_Embolden */ + /* FT_Outline_Reverse */ + /* FT_Outline_Check */ + /* */ + /* FT_Outline_Get_CBox */ + /* FT_Outline_Get_BBox */ + /* */ + /* FT_Outline_Get_Bitmap */ + /* FT_Outline_Render */ + /* */ + /* FT_Outline_Decompose */ + /* FT_Outline_Funcs */ + /* FT_Outline_MoveTo_Func */ + /* FT_Outline_LineTo_Func */ + /* FT_Outline_ConicTo_Func */ + /* FT_Outline_CubicTo_Func */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Decompose */ + /* */ + /* <Description> */ + /* Walk over an outline's structure to decompose it into individual */ + /* segments and Bézier arcs. This function also emits `move to' */ + /* operations to indicate the start of new contours in the outline. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source target. */ + /* */ + /* func_interface :: A table of `emitters', i.e., function pointers */ + /* called during decomposition to indicate path */ + /* operations. */ + /* */ + /* <InOut> */ + /* user :: A typeless pointer which is passed to each */ + /* emitter during the decomposition. It can be */ + /* used to store the state during the */ + /* decomposition. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_New */ + /* */ + /* <Description> */ + /* Create a new outline of a given size. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object from where the */ + /* outline is allocated. Note however that the new */ + /* outline will *not* necessarily be *freed*, when */ + /* destroying the library, by @FT_Done_FreeType. */ + /* */ + /* numPoints :: The maximal number of points within the outline. */ + /* */ + /* numContours :: The maximal number of contours within the outline. */ + /* */ + /* <Output> */ + /* anoutline :: A handle to the new outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' parameter is simply */ + /* to use the library's memory allocator. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_New_Internal( FT_Memory memory, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Done */ + /* */ + /* <Description> */ + /* Destroy an outline created with @FT_Outline_New. */ + /* */ + /* <Input> */ + /* library :: A handle of the library object used to allocate the */ + /* outline. */ + /* */ + /* outline :: A pointer to the outline object to be discarded. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the outline's `owner' field is not set, only the outline */ + /* descriptor will be released. */ + /* */ + /* The reason why this function takes an `library' parameter is */ + /* simply to use ft_mem_free(). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Check */ + /* */ + /* <Description> */ + /* Check the contents of an outline descriptor. */ + /* */ + /* <Input> */ + /* outline :: A handle to a source outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_CBox */ + /* */ + /* <Description> */ + /* Return an outline's `control box'. The control box encloses all */ + /* the outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* which contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <Output> */ + /* acbox :: The outline's control box. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Translate */ + /* */ + /* <Description> */ + /* Apply a simple translation to the points of an outline. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* xOffset :: The horizontal offset. */ + /* */ + /* yOffset :: The vertical offset. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Copy */ + /* */ + /* <Description> */ + /* Copy an outline into another one. Both objects must have the */ + /* same sizes (number of points & number of contours) when this */ + /* function is called. */ + /* */ + /* <Input> */ + /* source :: A handle to the source outline. */ + /* */ + /* <Output> */ + /* target :: A handle to the target outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Transform */ + /* */ + /* <Description> */ + /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ + /* for applying rotations, slanting, flipping, etc. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation matrix. */ + /* */ + /* <Note> */ + /* You can use @FT_Outline_Translate if you need to translate the */ + /* outline's points. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Embolden */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be at most 4~times */ + /* `strength' pixels wider and higher. You may think of the left and */ + /* bottom borders as unchanged. */ + /* */ + /* Negative `strength' values to reduce the outline thickness are */ + /* possible also. */ + /* */ + /* <InOut> */ + /* outline :: A handle to the target outline. */ + /* */ + /* <Input> */ + /* strength :: How strong the glyph is emboldened. Expressed in */ + /* 26.6 pixel format. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The used algorithm to increase or decrease the thickness of the */ + /* glyph doesn't change the number of points; this means that certain */ + /* situations like acute angles or intersections are sometimes */ + /* handled incorrectly. */ + /* */ + /* If you need `better' metrics values you should call */ + /* @FT_Outline_Get_CBox ot @FT_Outline_Get_BBox. */ + /* */ + /* Example call: */ + /* */ + /* { */ + /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ + /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ + /* FT_Outline_Embolden( &face->slot->outline, strength ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Reverse */ + /* */ + /* <Description> */ + /* Reverse the drawing direction of an outline. This is used to */ + /* ensure consistent fill conventions for mirrored glyphs. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Note> */ + /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ + /* the outline's `flags' field. */ + /* */ + /* It shouldn't be used by a normal client application, unless it */ + /* knows what it is doing. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_Bitmap */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap. The outline's image is simply */ + /* OR-ed to the target bitmap. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the target bitmap descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does NOT CREATE the bitmap, it only renders an */ + /* outline image within the one you pass to it! Consequently, the */ + /* various fields in `abitmap' should be set accordingly. */ + /* */ + /* It will use the raster corresponding to the default glyph format. */ + /* */ + /* The value of the `num_grays' field in `abitmap' is ignored. If */ + /* you select the gray-level rasterizer, and you want less than 256 */ + /* gray levels, you have to use @FT_Outline_Render directly. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Render */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap using the current scan-convert. */ + /* This function uses an @FT_Raster_Params structure as an argument, */ + /* allowing advanced features like direct composition, translucency, */ + /* etc. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* describe the rendering operation. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should know what you are doing and how @FT_Raster_Params works */ + /* to use this function. */ + /* */ + /* The field `params.source' will be set to `outline' before the scan */ + /* converter is called, which means that the value you give to it is */ + /* actually ignored. */ + /* */ + /* The gray-level rasterizer always uses 256 gray levels. If you */ + /* want less gray levels, you have to provide your own span callback. */ + /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ + /* @FT_Raster_Params structure for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + + /************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must + * be filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise contours + * must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ + typedef enum FT_Orientation_ + { + FT_ORIENTATION_TRUETYPE = 0, + FT_ORIENTATION_POSTSCRIPT = 1, + FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, + FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, + FT_ORIENTATION_NONE + + } FT_Orientation; + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its + * fill orientation (see @FT_Orientation). This is done by computing + * the direction of each global horizontal and/or vertical extrema + * within the outline. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ + FT_EXPORT( FT_Orientation ) + FT_Outline_Get_Orientation( FT_Outline* outline ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTOUTLN_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows32/include/freetype/ftpfr.h b/lib/windows32/include/freetype/ftpfr.h new file mode 100644 index 0000000..0b7b7d4 --- /dev/null +++ b/lib/windows32/include/freetype/ftpfr.h @@ -0,0 +1,172 @@ +/***************************************************************************/ +/* */ +/* ftpfr.h */ +/* */ +/* FreeType API for accessing PFR-specific data (specification only). */ +/* */ +/* Copyright 2002, 2003, 2004, 2006, 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTPFR_H__ +#define __FTPFR_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* pfr_fonts */ + /* */ + /* <Title> */ + /* PFR Fonts */ + /* */ + /* <Abstract> */ + /* PFR/TrueDoc specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of PFR-specific functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed + * in metrics units to device sub-pixels. This is equivalent to + * `face->size->x_scale', but for metrics only. Optional (parameter + * can be NULL). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale' but for the vertical direction. + * optional (parameter can be NULL). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: A handle to the input face. + * + * left :: Index of the left glyph. + * + * right :: Index of the right glyph. + * + * @output: + * avector :: A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics + * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED + * mode, which always returns distances converted to outline units. + * + * You can use the value of the `x_scale' and `y_scale' parameters + * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: A handle to the input face. + * + * gindex :: The glyph index. + * + * @output: + * aadvance :: The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics + * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTPFR_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftrender.h b/lib/windows32/include/freetype/ftrender.h new file mode 100644 index 0000000..e06a814 --- /dev/null +++ b/lib/windows32/include/freetype/ftrender.h @@ -0,0 +1,230 @@ +/***************************************************************************/ +/* */ +/* ftrender.h */ +/* */ +/* FreeType renderer modules public interface (specification). */ +/* */ +/* Copyright 1996-2001, 2005, 2006, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTRENDER_H__ +#define __FTRENDER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + + /* create a new glyph object */ + typedef FT_Error + (*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + + /* destroys a given glyph object */ + typedef void + (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); + + typedef void + (*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + typedef void + (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + +/* deprecated */ +#define FT_Glyph_Init_Func FT_Glyph_InitFunc +#define FT_Glyph_Done_Func FT_Glyph_DoneFunc +#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc +#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc +#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc +#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc + + + struct FT_Glyph_Class_ + { + FT_Long glyph_size; + FT_Glyph_Format glyph_format; + FT_Glyph_InitFunc glyph_init; + FT_Glyph_DoneFunc glyph_done; + FT_Glyph_CopyFunc glyph_copy; + FT_Glyph_TransformFunc glyph_transform; + FT_Glyph_GetBBoxFunc glyph_bbox; + FT_Glyph_PrepareFunc glyph_prepare; + }; + + + typedef FT_Error + (*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode, + const FT_Vector* origin ); + + typedef FT_Error + (*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + typedef void + (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + + typedef FT_Error + (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + +/* deprecated identifiers */ +#define FTRenderer_render FT_Renderer_RenderFunc +#define FTRenderer_transform FT_Renderer_TransformFunc +#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc +#define FTRenderer_setMode FT_Renderer_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Renderer_Class */ + /* */ + /* <Description> */ + /* The renderer module class descriptor. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Module_Class fields. */ + /* */ + /* glyph_format :: The glyph image format this renderer handles. */ + /* */ + /* render_glyph :: A method used to render the image that is in a */ + /* given glyph slot into a bitmap. */ + /* */ + /* transform_glyph :: A method used to transform the image that is in */ + /* a given glyph slot. */ + /* */ + /* get_glyph_cbox :: A method used to access the glyph's cbox. */ + /* */ + /* set_mode :: A method used to pass additional parameters. */ + /* */ + /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ + /* This is a pointer to its raster's class. */ + /* */ + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FT_Renderer_RenderFunc render_glyph; + FT_Renderer_TransformFunc transform_glyph; + FT_Renderer_GetCBoxFunc get_glyph_cbox; + FT_Renderer_SetModeFunc set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Renderer */ + /* */ + /* <Description> */ + /* Retrieve the current renderer for a given glyph format. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* format :: The glyph format. */ + /* */ + /* <Return> */ + /* A renderer handle. 0~if none found. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ + /* renderer by its name, use @FT_Get_Module. */ + /* */ + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Renderer */ + /* */ + /* <Description> */ + /* Set the current renderer to use, and set additional mode. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* renderer :: A handle to the renderer object. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* parameters :: Additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case of success, the renderer will be used to convert glyph */ + /* images in the renderer's known format into bitmaps. */ + /* */ + /* This doesn't change the current renderer for other formats. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTRENDER_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftsizes.h b/lib/windows32/include/freetype/ftsizes.h new file mode 100644 index 0000000..3e548cc --- /dev/null +++ b/lib/windows32/include/freetype/ftsizes.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftsizes.h */ +/* */ +/* FreeType size objects management (specification). */ +/* */ +/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Typical application would normally not need to use these functions. */ + /* However, they have been placed in a public API for the rare cases */ + /* where they are needed. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSIZES_H__ +#define __FTSIZES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sizes_management */ + /* */ + /* <Title> */ + /* Size Management */ + /* */ + /* <Abstract> */ + /* Managing multiple sizes per face. */ + /* */ + /* <Description> */ + /* When creating a new face object (e.g., with @FT_New_Face), an */ + /* @FT_Size object is automatically created and used to store all */ + /* pixel-size dependent information, available in the `face->size' */ + /* field. */ + /* */ + /* It is however possible to create more sizes for a given face, */ + /* mostly in order to manage several character pixel sizes of the */ + /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ + /* */ + /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ + /* modify the contents of the current `active' size; you thus need */ + /* to use @FT_Activate_Size to change it. */ + /* */ + /* 99% of applications won't need the functions provided here, */ + /* especially if they use the caching sub-system, so be cautious */ + /* when using these. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Size */ + /* */ + /* <Description> */ + /* Create a new size object from a given face object. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* asize :: A handle to a new size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You need to call @FT_Activate_Size in order to select the new size */ + /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ + /* @FT_Load_Glyph, @FT_Load_Char, etc. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Size */ + /* */ + /* <Description> */ + /* Discard a given size object. Note that @FT_Done_Face */ + /* automatically discards all size objects allocated with */ + /* @FT_New_Size. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Activate_Size */ + /* */ + /* <Description> */ + /* Even though it is possible to create several size objects for a */ + /* given face (see @FT_New_Size for details), functions like */ + /* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */ + /* activated last to determine the `current character pixel size'. */ + /* */ + /* This function can be used to `activate' a previously created size */ + /* object. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If `face' is the size's parent face object, this function changes */ + /* the value of `face->size' to the input size handle. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSIZES_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftsnames.h b/lib/windows32/include/freetype/ftsnames.h new file mode 100644 index 0000000..485e4e1 --- /dev/null +++ b/lib/windows32/include/freetype/ftsnames.h @@ -0,0 +1,200 @@ +/***************************************************************************/ +/* */ +/* ftsnames.h */ +/* */ +/* Simple interface to access SFNT name tables (which are used */ +/* to hold font names, copyright info, notices, etc.) (specification). */ +/* */ +/* This is _not_ used to retrieve glyph names! */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2006, 2009, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_SFNT_NAMES_H__ +#define __FT_SFNT_NAMES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sfnt_names */ + /* */ + /* <Title> */ + /* SFNT Names */ + /* */ + /* <Abstract> */ + /* Access the names embedded in TrueType and OpenType files. */ + /* */ + /* <Description> */ + /* The TrueType and OpenType specifications allow the inclusion of */ + /* a special `names table' in font files. This table contains */ + /* textual (and internationalized) information regarding the font, */ + /* like family name, copyright, version, etc. */ + /* */ + /* The definitions below are used to access them if available. */ + /* */ + /* Note that this has nothing to do with glyph names! */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SfntName */ + /* */ + /* <Description> */ + /* A structure used to model an SFNT `name' table entry. */ + /* */ + /* <Fields> */ + /* platform_id :: The platform ID for `string'. */ + /* */ + /* encoding_id :: The encoding ID for `string'. */ + /* */ + /* language_id :: The language ID for `string'. */ + /* */ + /* name_id :: An identifier for `string'. */ + /* */ + /* string :: The `name' string. Note that its format differs */ + /* depending on the (platform,encoding) pair. It can */ + /* be a Pascal String, a UTF-16 one, etc. */ + /* */ + /* Generally speaking, the string is not */ + /* zero-terminated. Please refer to the TrueType */ + /* specification for details. */ + /* */ + /* string_len :: The length of `string' in bytes. */ + /* */ + /* <Note> */ + /* Possible values for `platform_id', `encoding_id', `language_id', */ + /* and `name_id' are given in the file `ttnameid.h'. For details */ + /* please refer to the TrueType or OpenType specification. */ + /* */ + /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ + /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ + /* */ + typedef struct FT_SfntName_ + { + FT_UShort platform_id; + FT_UShort encoding_id; + FT_UShort language_id; + FT_UShort name_id; + + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntName; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name_Count */ + /* */ + /* <Description> */ + /* Retrieve the number of name strings in the SFNT `name' table. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Return> */ + /* The number of strings in the `name' table. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name */ + /* */ + /* <Description> */ + /* Retrieve a string of the SFNT `name' table for a given index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* idx :: The index of the `name' string. */ + /* */ + /* <Output> */ + /* aname :: The indexed @FT_SfntName structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `string' array returned in the `aname' structure is not */ + /* null-terminated. The application should deallocate it if it is no */ + /* longer in use. */ + /* */ + /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ + /* `name' table entries, then do a loop until you get the right */ + /* platform, encoding, and name ID. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred family subfamily names in `name' + * table since OpenType version 1.4. For backwards compatibility with + * legacy systems which has 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred subfamily names in `name' table since + * OpenType version 1.4. For backwards compatibility with legacy + * systems which has 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FT_SFNT_NAMES_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftstroke.h b/lib/windows32/include/freetype/ftstroke.h new file mode 100644 index 0000000..3afb87d --- /dev/null +++ b/lib/windows32/include/freetype/ftstroke.h @@ -0,0 +1,716 @@ +/***************************************************************************/ +/* */ +/* ftstroke.h */ +/* */ +/* FreeType path stroker (specification). */ +/* */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_STROKE_H__ +#define __FT_STROKE_H__ + +#include <ft2build.h> +#include FT_OUTLINE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************ + * + * @section: + * glyph_stroker + * + * @title: + * Glyph Stroker + * + * @abstract: + * Generating bordered and stroked glyphs. + * + * @description: + * This component generates stroked outlines of a given vectorial + * glyph. It also allows you to retrieve the `outside' and/or the + * `inside' borders of the stroke. + * + * This can be useful to generate `bordered' glyph, i.e., glyphs + * displayed with a coloured (and anti-aliased) border around their + * shape. + */ + + + /************************************************************** + * + * @type: + * FT_Stroker + * + * @description: + * Opaque handler to a path stroker object. + */ + typedef struct FT_StrokerRec_* FT_Stroker; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineJoin + * + * @description: + * These values determine how two joining lines are rendered + * in a stroker. + * + * @values: + * FT_STROKER_LINEJOIN_ROUND :: + * Used to render rounded line joins. Circular arcs are used + * to join two lines smoothly. + * + * FT_STROKER_LINEJOIN_BEVEL :: + * Used to render beveled line joins; i.e., the two joining lines + * are extended until they intersect. + * + * FT_STROKER_LINEJOIN_MITER :: + * Same as beveled rendering, except that an additional line + * break is added if the angle between the two joining lines + * is too closed (this is useful to avoid unpleasant spikes + * in beveled rendering). + */ + typedef enum FT_Stroker_LineJoin_ + { + FT_STROKER_LINEJOIN_ROUND = 0, + FT_STROKER_LINEJOIN_BEVEL, + FT_STROKER_LINEJOIN_MITER + + } FT_Stroker_LineJoin; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineCap + * + * @description: + * These values determine how the end of opened sub-paths are + * rendered in a stroke. + * + * @values: + * FT_STROKER_LINECAP_BUTT :: + * The end of lines is rendered as a full stop on the last + * point itself. + * + * FT_STROKER_LINECAP_ROUND :: + * The end of lines is rendered as a half-circle around the + * last point. + * + * FT_STROKER_LINECAP_SQUARE :: + * The end of lines is rendered as a square around the + * last point. + */ + typedef enum FT_Stroker_LineCap_ + { + FT_STROKER_LINECAP_BUTT = 0, + FT_STROKER_LINECAP_ROUND, + FT_STROKER_LINECAP_SQUARE + + } FT_Stroker_LineCap; + + + /************************************************************** + * + * @enum: + * FT_StrokerBorder + * + * @description: + * These values are used to select a given stroke border + * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * + * @values: + * FT_STROKER_BORDER_LEFT :: + * Select the left border, relative to the drawing direction. + * + * FT_STROKER_BORDER_RIGHT :: + * Select the right border, relative to the drawing direction. + * + * @note: + * Applications are generally interested in the `inside' and `outside' + * borders. However, there is no direct mapping between these and the + * `left' and `right' ones, since this really depends on the glyph's + * drawing orientation, which varies between font formats. + * + * You can however use @FT_Outline_GetInsideBorder and + * @FT_Outline_GetOutsideBorder to get these. + */ + typedef enum FT_StrokerBorder_ + { + FT_STROKER_BORDER_LEFT = 0, + FT_STROKER_BORDER_RIGHT + + } FT_StrokerBorder; + + + /************************************************************** + * + * @function: + * FT_Outline_GetInsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `inside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetInsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Outline_GetOutsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `outside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetOutsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_New + * + * @description: + * Create a new stroker object. + * + * @input: + * library :: + * FreeType library handle. + * + * @output: + * astroker :: + * A new stroker object handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_New( FT_Library library, + FT_Stroker *astroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Set + * + * @description: + * Reset a stroker object's attributes. + * + * @input: + * stroker :: + * The target stroker handle. + * + * radius :: + * The border radius. + * + * line_cap :: + * The line cap style. + * + * line_join :: + * The line join style. + * + * miter_limit :: + * The miter limit for the FT_STROKER_LINEJOIN_MITER style, + * expressed as 16.16 fixed point value. + * + * @note: + * The radius is expressed in the same units as the outline + * coordinates. + */ + FT_EXPORT( void ) + FT_Stroker_Set( FT_Stroker stroker, + FT_Fixed radius, + FT_Stroker_LineCap line_cap, + FT_Stroker_LineJoin line_join, + FT_Fixed miter_limit ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Rewind + * + * @description: + * Reset a stroker object without changing its attributes. + * You should call this function before beginning a new + * series of calls to @FT_Stroker_BeginSubPath or + * @FT_Stroker_EndSubPath. + * + * @input: + * stroker :: + * The target stroker handle. + */ + FT_EXPORT( void ) + FT_Stroker_Rewind( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ParseOutline + * + * @description: + * A convenience function used to parse a whole outline with + * the stroker. The resulting outline(s) can be retrieved + * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The source outline. + * + * opened :: + * A boolean. If~1, the outline is treated as an open path instead + * of a closed one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `opened' is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct `border' outlines. + * + * If `opened' is~1, the outline is processed as an open path, and the + * stroker generates a single `stroke' outline. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ParseOutline( FT_Stroker stroker, + FT_Outline* outline, + FT_Bool opened ); + + + /************************************************************** + * + * @function: + * FT_Stroker_BeginSubPath + * + * @description: + * Start a new sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the start vector. + * + * open :: + * A boolean. If~1, the sub-path is treated as an open one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is useful when you need to stroke a path that is + * not stored as an @FT_Outline object. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_BeginSubPath( FT_Stroker stroker, + FT_Vector* to, + FT_Bool open ); + + + /************************************************************** + * + * @function: + * FT_Stroker_EndSubPath + * + * @description: + * Close the current sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function after @FT_Stroker_BeginSubPath. + * If the subpath was not `opened', this function `draws' a + * single line segment to the start position when needed. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_EndSubPath( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_LineTo + * + * @description: + * `Draw' a single line segment in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_LineTo( FT_Stroker stroker, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ConicTo + * + * @description: + * `Draw' a single quadratic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control :: + * A pointer to a Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ConicTo( FT_Stroker stroker, + FT_Vector* control, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_CubicTo + * + * @description: + * `Draw' a single cubic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control1 :: + * A pointer to the first Bézier control point. + * + * control2 :: + * A pointer to second Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_CubicTo( FT_Stroker stroker, + FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetBorderCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export one of the `border' or `stroke' + * outlines generated by the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_GetCounts instead if you want to + * retrieve the counts associated to both borders. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetBorderCounts( FT_Stroker stroker, + FT_StrokerBorder border, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ExportBorder + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export the corresponding border to your own @FT_Outline + * structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * outline :: + * The target outline handle. + * + * @note: + * Always call this function after @FT_Stroker_GetBorderCounts to + * get sure that there is enough room in your @FT_Outline object to + * receive all new data. + * + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right' + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_Export instead if you want to + * retrieve all borders at once. + */ + FT_EXPORT( void ) + FT_Stroker_ExportBorder( FT_Stroker stroker, + FT_StrokerBorder border, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export all points/borders from the stroked + * outline/path. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetCounts( FT_Stroker stroker, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Export + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export all borders to your own @FT_Outline structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The target outline handle. + */ + FT_EXPORT( void ) + FT_Stroker_Export( FT_Stroker stroker, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Done + * + * @description: + * Destroy a stroker object. + * + * @input: + * stroker :: + * A stroker handle. Can be NULL. + */ + FT_EXPORT( void ) + FT_Stroker_Done( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Glyph_Stroke + * + * @description: + * Stroke a given outline glyph object with a given stroker. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Stroke( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool destroy ); + + + /************************************************************** + * + * @function: + * FT_Glyph_StrokeBorder + * + * @description: + * Stroke a given outline glyph object with a given stroker, but + * only return either its inside or outside border. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * inside :: + * A Boolean. If~1, return the inside border, otherwise + * the outside border. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_StrokeBorder( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool inside, + FT_Bool destroy ); + + /* */ + +FT_END_HEADER + +#endif /* __FT_STROKE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows32/include/freetype/ftsynth.h b/lib/windows32/include/freetype/ftsynth.h new file mode 100644 index 0000000..a068b79 --- /dev/null +++ b/lib/windows32/include/freetype/ftsynth.h @@ -0,0 +1,80 @@ +/***************************************************************************/ +/* */ +/* ftsynth.h */ +/* */ +/* FreeType synthesizing code for emboldening and slanting */ +/* (specification). */ +/* */ +/* Copyright 2000-2001, 2003, 2006, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /********* *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ + /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ + /********* FREETYPE DEVELOPMENT TEAM *********/ + /********* *********/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* Main reason for not lifting the functions in this module to a */ + /* `standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource which should be copied into the application and */ + /* adapted to the particular needs. */ + + +#ifndef __FTSYNTH_H__ +#define __FTSYNTH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the metrics are estimates only; if you need */ + /* precise values you should call @FT_Outline_Get_CBox. */ + FT_EXPORT( void ) + FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + + /* Slant an outline glyph to the right by about 12 degrees. */ + FT_EXPORT( void ) + FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + + /* */ + +FT_END_HEADER + +#endif /* __FTSYNTH_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftsystem.h b/lib/windows32/include/freetype/ftsystem.h new file mode 100644 index 0000000..e07460c --- /dev/null +++ b/lib/windows32/include/freetype/ftsystem.h @@ -0,0 +1,347 @@ +/***************************************************************************/ +/* */ +/* ftsystem.h */ +/* */ +/* FreeType low-level system interface definition (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2005, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSYSTEM_H__ +#define __FTSYSTEM_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* system_interface */ + /* */ + /* <Title> */ + /* System Interface */ + /* */ + /* <Abstract> */ + /* How FreeType manages memory and i/o. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to memory */ + /* management and i/o access. You need to understand this */ + /* information if you want to use a custom memory manager or you own */ + /* i/o streams. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* M E M O R Y M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Memory + * + * @description: + * A handle to a given memory manager object, defined with an + * @FT_MemoryRec structure. + * + */ + typedef struct FT_MemoryRec_* FT_Memory; + + + /************************************************************************* + * + * @functype: + * FT_Alloc_Func + * + * @description: + * A function used to allocate `size' bytes from `memory'. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * size :: + * The size in bytes to allocate. + * + * @return: + * Address of new memory block. 0~in case of failure. + * + */ + typedef void* + (*FT_Alloc_Func)( FT_Memory memory, + long size ); + + + /************************************************************************* + * + * @functype: + * FT_Free_Func + * + * @description: + * A function used to release a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * block :: + * The address of the target memory block. + * + */ + typedef void + (*FT_Free_Func)( FT_Memory memory, + void* block ); + + + /************************************************************************* + * + * @functype: + * FT_Realloc_Func + * + * @description: + * A function used to re-allocate a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * cur_size :: + * The block's current size in bytes. + * + * new_size :: + * The block's requested new size. + * + * block :: + * The block's current address. + * + * @return: + * New block address. 0~in case of memory shortage. + * + * @note: + * In case of error, the old block must still be available. + * + */ + typedef void* + (*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + + /************************************************************************* + * + * @struct: + * FT_MemoryRec + * + * @description: + * A structure used to describe a given memory manager to FreeType~2. + * + * @fields: + * user :: + * A generic typeless pointer for user data. + * + * alloc :: + * A pointer type to an allocation function. + * + * free :: + * A pointer type to an memory freeing function. + * + * realloc :: + * A pointer type to a reallocation function. + * + */ + struct FT_MemoryRec_ + { + void* user; + FT_Alloc_Func alloc; + FT_Free_Func free; + FT_Realloc_Func realloc; + }; + + + /*************************************************************************/ + /* */ + /* I / O M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Stream + * + * @description: + * A handle to an input stream. + * + */ + typedef struct FT_StreamRec_* FT_Stream; + + + /************************************************************************* + * + * @struct: + * FT_StreamDesc + * + * @description: + * A union type used to store either a long or a pointer. This is used + * to store a file descriptor or a `FILE*' in an input stream. + * + */ + typedef union FT_StreamDesc_ + { + long value; + void* pointer; + + } FT_StreamDesc; + + + /************************************************************************* + * + * @functype: + * FT_Stream_IoFunc + * + * @description: + * A function used to seek and read data from a given input stream. + * + * @input: + * stream :: + * A handle to the source stream. + * + * offset :: + * The offset of read in stream (always from start). + * + * buffer :: + * The address of the read buffer. + * + * count :: + * The number of bytes to read from the stream. + * + * @return: + * The number of bytes effectively read by the stream. + * + * @note: + * This function might be called to perform a seek or skip operation + * with a `count' of~0. A non-zero return value then indicates an + * error. + * + */ + typedef unsigned long + (*FT_Stream_IoFunc)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + + /************************************************************************* + * + * @functype: + * FT_Stream_CloseFunc + * + * @description: + * A function used to close a given input stream. + * + * @input: + * stream :: + * A handle to the target stream. + * + */ + typedef void + (*FT_Stream_CloseFunc)( FT_Stream stream ); + + + /************************************************************************* + * + * @struct: + * FT_StreamRec + * + * @description: + * A structure used to describe an input stream. + * + * @input: + * base :: + * For memory-based streams, this is the address of the first stream + * byte in memory. This field should always be set to NULL for + * disk-based streams. + * + * size :: + * The stream size in bytes. + * + * pos :: + * The current position within the stream. + * + * descriptor :: + * This field is a union that can hold an integer or a pointer. It is + * used by stream implementations to store file descriptors or `FILE*' + * pointers. + * + * pathname :: + * This field is completely ignored by FreeType. However, it is often + * useful during debugging to use it to store the stream's filename + * (where available). + * + * read :: + * The stream's input function. + * + * close :: + * The stream's close function. + * + * memory :: + * The memory manager to use to preload frames. This is set + * internally by FreeType and shouldn't be touched by stream + * implementations. + * + * cursor :: + * This field is set and used internally by FreeType when parsing + * frames. + * + * limit :: + * This field is set and used internally by FreeType when parsing + * frames. + * + */ + typedef struct FT_StreamRec_ + { + unsigned char* base; + unsigned long size; + unsigned long pos; + + FT_StreamDesc descriptor; + FT_StreamDesc pathname; + FT_Stream_IoFunc read; + FT_Stream_CloseFunc close; + + FT_Memory memory; + unsigned char* cursor; + unsigned char* limit; + + } FT_StreamRec; + + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYSTEM_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/fttrigon.h b/lib/windows32/include/freetype/fttrigon.h new file mode 100644 index 0000000..6b77d2e --- /dev/null +++ b/lib/windows32/include/freetype/fttrigon.h @@ -0,0 +1,350 @@ +/***************************************************************************/ +/* */ +/* fttrigon.h */ +/* */ +/* FreeType trigonometric functions (specification). */ +/* */ +/* Copyright 2001, 2003, 2005, 2007 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTRIGON_H__ +#define __FTTRIGON_H__ + +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Angle + * + * @description: + * This type is used to model angle values in FreeType. Note that the + * angle is a 16.16 fixed float value expressed in degrees. + * + */ + typedef FT_Fixed FT_Angle; + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI + * + * @description: + * The angle pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI ( 180L << 16 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_2PI + * + * @description: + * The angle 2*pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI2 + * + * @description: + * The angle pi/2 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI4 + * + * @description: + * The angle pi/4 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) + + + /************************************************************************* + * + * @function: + * FT_Sin + * + * @description: + * Return the sinus of a given angle in fixed point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The sinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Sin( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Cos + * + * @description: + * Return the cosinus of a given angle in fixed point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The cosinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Cos( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Tan + * + * @description: + * Return the tangent of a given angle in fixed point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The tangent value. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Tan( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Atan2 + * + * @description: + * Return the arc-tangent corresponding to a given vector (x,y) in + * the 2d plane. + * + * @input: + * x :: + * The horizontal vector coordinate. + * + * y :: + * The vertical vector coordinate. + * + * @return: + * The arc-tangent value (i.e. angle). + * + */ + FT_EXPORT( FT_Angle ) + FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + + /************************************************************************* + * + * @function: + * FT_Angle_Diff + * + * @description: + * Return the difference between two angles. The result is always + * constrained to the ]-PI..PI] interval. + * + * @input: + * angle1 :: + * First angle. + * + * angle2 :: + * Second angle. + * + * @return: + * Constrained value of `value2-value1'. + * + */ + FT_EXPORT( FT_Angle ) + FT_Angle_Diff( FT_Angle angle1, + FT_Angle angle2 ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Unit + * + * @description: + * Return the unit vector corresponding to a given angle. After the + * call, the value of `vec.x' will be `sin(angle)', and the value of + * `vec.y' will be `cos(angle)'. + * + * This function is useful to retrieve both the sinus and cosinus of a + * given angle quickly. + * + * @output: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The address of angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Rotate + * + * @description: + * Rotate a vector by a given angle. + * + * @inout: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The address of angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Length + * + * @description: + * Return the length of a given vector. + * + * @input: + * vec :: + * The address of target vector. + * + * @return: + * The vector length, expressed in the same units that the original + * vector coordinates. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Polarize + * + * @description: + * Compute both the length and angle of a given vector. + * + * @input: + * vec :: + * The address of source vector. + * + * @output: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_From_Polar + * + * @description: + * Compute vector coordinates from a length and angle. + * + * @output: + * vec :: + * The address of source vector. + * + * @input: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_From_Polar( FT_Vector* vec, + FT_Fixed length, + FT_Angle angle ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTTRIGON_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/fttypes.h b/lib/windows32/include/freetype/fttypes.h new file mode 100644 index 0000000..a57ffa6 --- /dev/null +++ b/lib/windows32/include/freetype/fttypes.h @@ -0,0 +1,588 @@ +/***************************************************************************/ +/* */ +/* fttypes.h */ +/* */ +/* FreeType simple types definitions (specification only). */ +/* */ +/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTYPES_H__ +#define __FTTYPES_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_SYSTEM_H +#include FT_IMAGE_H + +#include <stddef.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /* <Title> */ + /* Basic Data Types */ + /* */ + /* <Abstract> */ + /* The basic data types defined by the library. */ + /* */ + /* <Description> */ + /* This section contains the basic data types defined by FreeType~2, */ + /* ranging from simple scalar types to bitmap descriptors. More */ + /* font-specific structures are defined in a different section. */ + /* */ + /* <Order> */ + /* FT_Byte */ + /* FT_Bytes */ + /* FT_Char */ + /* FT_Int */ + /* FT_UInt */ + /* FT_Int16 */ + /* FT_UInt16 */ + /* FT_Int32 */ + /* FT_UInt32 */ + /* FT_Short */ + /* FT_UShort */ + /* FT_Long */ + /* FT_ULong */ + /* FT_Bool */ + /* FT_Offset */ + /* FT_PtrDist */ + /* FT_String */ + /* FT_Tag */ + /* FT_Error */ + /* FT_Fixed */ + /* FT_Pointer */ + /* FT_Pos */ + /* FT_Vector */ + /* FT_BBox */ + /* FT_Matrix */ + /* FT_FWord */ + /* FT_UFWord */ + /* FT_F2Dot14 */ + /* FT_UnitVector */ + /* FT_F26Dot6 */ + /* */ + /* */ + /* FT_Generic */ + /* FT_Generic_Finalizer */ + /* */ + /* FT_Bitmap */ + /* FT_Pixel_Mode */ + /* FT_Palette_Mode */ + /* FT_Glyph_Format */ + /* FT_IMAGE_TAG */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bool */ + /* */ + /* <Description> */ + /* A typedef of unsigned char, used for simple booleans. As usual, */ + /* values 1 and~0 represent true and false, respectively. */ + /* */ + typedef unsigned char FT_Bool; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_FWord */ + /* */ + /* <Description> */ + /* A signed 16-bit integer used to store a distance in original font */ + /* units. */ + /* */ + typedef signed short FT_FWord; /* distance in FUnits */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UFWord */ + /* */ + /* <Description> */ + /* An unsigned 16-bit integer used to store a distance in original */ + /* font units. */ + /* */ + typedef unsigned short FT_UFWord; /* unsigned distance */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Char */ + /* */ + /* <Description> */ + /* A simple typedef for the _signed_ char type. */ + /* */ + typedef signed char FT_Char; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Byte */ + /* */ + /* <Description> */ + /* A simple typedef for the _unsigned_ char type. */ + /* */ + typedef unsigned char FT_Byte; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bytes */ + /* */ + /* <Description> */ + /* A typedef for constant memory areas. */ + /* */ + typedef const FT_Byte* FT_Bytes; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Tag */ + /* */ + /* <Description> */ + /* A typedef for 32-bit tags (as used in the SFNT format). */ + /* */ + typedef FT_UInt32 FT_Tag; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_String */ + /* */ + /* <Description> */ + /* A simple typedef for the char type, usually used for strings. */ + /* */ + typedef char FT_String; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Short */ + /* */ + /* <Description> */ + /* A typedef for signed short. */ + /* */ + typedef signed short FT_Short; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UShort */ + /* */ + /* <Description> */ + /* A typedef for unsigned short. */ + /* */ + typedef unsigned short FT_UShort; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int */ + /* */ + /* <Description> */ + /* A typedef for the int type. */ + /* */ + typedef signed int FT_Int; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt */ + /* */ + /* <Description> */ + /* A typedef for the unsigned int type. */ + /* */ + typedef unsigned int FT_UInt; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Long */ + /* */ + /* <Description> */ + /* A typedef for signed long. */ + /* */ + typedef signed long FT_Long; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ULong */ + /* */ + /* <Description> */ + /* A typedef for unsigned long. */ + /* */ + typedef unsigned long FT_ULong; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F2Dot14 */ + /* */ + /* <Description> */ + /* A signed 2.14 fixed float type used for unit vectors. */ + /* */ + typedef signed short FT_F2Dot14; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F26Dot6 */ + /* */ + /* <Description> */ + /* A signed 26.6 fixed float type used for vectorial pixel */ + /* coordinates. */ + /* */ + typedef signed long FT_F26Dot6; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Fixed */ + /* */ + /* <Description> */ + /* This type is used to store 16.16 fixed float values, like scaling */ + /* values or matrix coefficients. */ + /* */ + typedef signed long FT_Fixed; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Error */ + /* */ + /* <Description> */ + /* The FreeType error code type. A value of~0 is always interpreted */ + /* as a successful operation. */ + /* */ + typedef int FT_Error; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pointer */ + /* */ + /* <Description> */ + /* A simple typedef for a typeless pointer. */ + /* */ + typedef void* FT_Pointer; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Offset */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ + /* _unsigned_ integer type used to express a file size or position, */ + /* or a memory block size. */ + /* */ + typedef size_t FT_Offset; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_PtrDist */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ + /* largest _signed_ integer type used to express the distance */ + /* between two pointers. */ + /* */ + typedef ft_ptrdiff_t FT_PtrDist; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_UnitVector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector unit vector. Uses */ + /* FT_F2Dot14 types. */ + /* */ + /* <Fields> */ + /* x :: Horizontal coordinate. */ + /* */ + /* y :: Vertical coordinate. */ + /* */ + typedef struct FT_UnitVector_ + { + FT_F2Dot14 x; + FT_F2Dot14 y; + + } FT_UnitVector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Matrix */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2x2 matrix. Coefficients are */ + /* in 16.16 fixed float format. The computation performed is: */ + /* */ + /* { */ + /* x' = x*xx + y*xy */ + /* y' = x*yx + y*yy */ + /* } */ + /* */ + /* <Fields> */ + /* xx :: Matrix coefficient. */ + /* */ + /* xy :: Matrix coefficient. */ + /* */ + /* yx :: Matrix coefficient. */ + /* */ + /* yy :: Matrix coefficient. */ + /* */ + typedef struct FT_Matrix_ + { + FT_Fixed xx, xy; + FT_Fixed yx, yy; + + } FT_Matrix; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Data */ + /* */ + /* <Description> */ + /* Read-only binary data represented as a pointer and a length. */ + /* */ + /* <Fields> */ + /* pointer :: The data. */ + /* */ + /* length :: The length of the data in bytes. */ + /* */ + typedef struct FT_Data_ + { + const FT_Byte* pointer; + FT_Int length; + + } FT_Data; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Generic_Finalizer */ + /* */ + /* <Description> */ + /* Describe a function used to destroy the `client' data of any */ + /* FreeType object. See the description of the @FT_Generic type for */ + /* details of usage. */ + /* */ + /* <Input> */ + /* The address of the FreeType object which is under finalization. */ + /* Its client data is accessed through its `generic' field. */ + /* */ + typedef void (*FT_Generic_Finalizer)(void* object); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Generic */ + /* */ + /* <Description> */ + /* Client applications often need to associate their own data to a */ + /* variety of FreeType core objects. For example, a text layout API */ + /* might want to associate a glyph cache to a given size object. */ + /* */ + /* Most FreeType object contains a `generic' field, of type */ + /* FT_Generic, which usage is left to client applications and font */ + /* servers. */ + /* */ + /* It can be used to store a pointer to client-specific data, as well */ + /* as the address of a `finalizer' function, which will be called by */ + /* FreeType when the object is destroyed (for example, the previous */ + /* client example would put the address of the glyph cache destructor */ + /* in the `finalizer' field). */ + /* */ + /* <Fields> */ + /* data :: A typeless pointer to any client-specified data. This */ + /* field is completely ignored by the FreeType library. */ + /* */ + /* finalizer :: A pointer to a `generic finalizer' function, which */ + /* will be called when the object is destroyed. If this */ + /* field is set to NULL, no code will be called. */ + /* */ + typedef struct FT_Generic_ + { + void* data; + FT_Generic_Finalizer finalizer; + + } FT_Generic; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_MAKE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags which are used to label */ + /* TrueType tables into an unsigned long to be used within FreeType. */ + /* */ + /* <Note> */ + /* The produced values *must* be 32-bit integers. Don't redefine */ + /* this macro. */ + /* */ +#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + (FT_Tag) \ + ( ( (FT_ULong)_x1 << 24 ) | \ + ( (FT_ULong)_x2 << 16 ) | \ + ( (FT_ULong)_x3 << 8 ) | \ + (FT_ULong)_x4 ) + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* L I S T M A N A G E M E N T */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ListNode */ + /* */ + /* <Description> */ + /* Many elements and objects in FreeType are listed through an */ + /* @FT_List record (see @FT_ListRec). As its name suggests, an */ + /* FT_ListNode is a handle to a single list element. */ + /* */ + typedef struct FT_ListNodeRec_* FT_ListNode; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_List */ + /* */ + /* <Description> */ + /* A handle to a list record (see @FT_ListRec). */ + /* */ + typedef struct FT_ListRec_* FT_List; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListNodeRec */ + /* */ + /* <Description> */ + /* A structure used to hold a single list element. */ + /* */ + /* <Fields> */ + /* prev :: The previous element in the list. NULL if first. */ + /* */ + /* next :: The next element in the list. NULL if last. */ + /* */ + /* data :: A typeless pointer to the listed object. */ + /* */ + typedef struct FT_ListNodeRec_ + { + FT_ListNode prev; + FT_ListNode next; + void* data; + + } FT_ListNodeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListRec */ + /* */ + /* <Description> */ + /* A structure used to hold a simple doubly-linked list. These are */ + /* used in many parts of FreeType. */ + /* */ + /* <Fields> */ + /* head :: The head (first element) of doubly-linked list. */ + /* */ + /* tail :: The tail (last element) of doubly-linked list. */ + /* */ + typedef struct FT_ListRec_ + { + FT_ListNode head; + FT_ListNode tail; + + } FT_ListRec; + + + /* */ + +#define FT_IS_EMPTY( list ) ( (list).head == 0 ) + + /* return base error code (without module-specific prefix) */ +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) + + /* return module error code */ +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_BOOL( x ) ( (FT_Bool)( x ) ) + +FT_END_HEADER + +#endif /* __FTTYPES_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ftwinfnt.h b/lib/windows32/include/freetype/ftwinfnt.h new file mode 100644 index 0000000..ea33353 --- /dev/null +++ b/lib/windows32/include/freetype/ftwinfnt.h @@ -0,0 +1,274 @@ +/***************************************************************************/ +/* */ +/* ftwinfnt.h */ +/* */ +/* FreeType API for accessing Windows fnt-specific data. */ +/* */ +/* Copyright 2003, 2004, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTWINFNT_H__ +#define __FTWINFNT_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* winfnt_fonts */ + /* */ + /* <Title> */ + /* Window FNT Files */ + /* */ + /* <Abstract> */ + /* Windows FNT specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Windows FNT specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset' byte in + * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX + * encodings (except for cp1361) can be found at ftp://ftp.unicode.org + * in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is + * roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a + * `don't care' value. Valid font files don't contain this value. + * When querying for information about the character set of the font + * that is currently selected into a specified device context, this + * return value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Pöttgen <michael@poettgen.de>: + * + * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM + * is used for the charset of vector fonts, like `modern.fon', + * `roman.fon', and `script.fon' on Windows. + * + * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value + * specifies a character set that is operating-system dependent. + * + * The `IFIMETRICS' documentation from the `Windows Driver + * Development Kit' says: This font supports an OEM-specific + * character set. The OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the + * second default codepage that most international versions of + * Windows have. It is one of the OEM codepages from + * + * http://www.microsoft.com/globaldev/reference/cphome.mspx, + * + * and is used for the `DOS boxes', to support legacy applications. + * A German Windows version for example usually uses ANSI codepage + * 1252 and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ + +#define FT_WinFNT_ID_CP1252 0 +#define FT_WinFNT_ID_DEFAULT 1 +#define FT_WinFNT_ID_SYMBOL 2 +#define FT_WinFNT_ID_MAC 77 +#define FT_WinFNT_ID_CP932 128 +#define FT_WinFNT_ID_CP949 129 +#define FT_WinFNT_ID_CP1361 130 +#define FT_WinFNT_ID_CP936 134 +#define FT_WinFNT_ID_CP950 136 +#define FT_WinFNT_ID_CP1253 161 +#define FT_WinFNT_ID_CP1254 162 +#define FT_WinFNT_ID_CP1258 163 +#define FT_WinFNT_ID_CP1255 177 +#define FT_WinFNT_ID_CP1256 178 +#define FT_WinFNT_ID_CP1257 186 +#define FT_WinFNT_ID_CP1251 204 +#define FT_WinFNT_ID_CP874 222 +#define FT_WinFNT_ID_CP1250 238 +#define FT_WinFNT_ID_OEM 255 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_HeaderRec */ + /* */ + /* <Description> */ + /* Windows FNT Header info. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_ + { + FT_UShort version; + FT_ULong file_size; + FT_Byte copyright[60]; + FT_UShort file_type; + FT_UShort nominal_point_size; + FT_UShort vertical_resolution; + FT_UShort horizontal_resolution; + FT_UShort ascent; + FT_UShort internal_leading; + FT_UShort external_leading; + FT_Byte italic; + FT_Byte underline; + FT_Byte strike_out; + FT_UShort weight; + FT_Byte charset; + FT_UShort pixel_width; + FT_UShort pixel_height; + FT_Byte pitch_and_family; + FT_UShort avg_width; + FT_UShort max_width; + FT_Byte first_char; + FT_Byte last_char; + FT_Byte default_char; + FT_Byte break_char; + FT_UShort bytes_per_row; + FT_ULong device_offset; + FT_ULong face_name_offset; + FT_ULong bits_pointer; + FT_ULong bits_offset; + FT_Byte reserved; + FT_ULong flags; + FT_UShort A_space; + FT_UShort B_space; + FT_UShort C_space; + FT_UShort color_table_offset; + FT_ULong reserved1[4]; + + } FT_WinFNT_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_Header */ + /* */ + /* <Description> */ + /* A handle to an @FT_WinFNT_HeaderRec structure. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; + + + /********************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: A handle to the input face. + * + * @output: + * aheader :: The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + + /* */ + +FT_END_HEADER + +#endif /* __FTWINFNT_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows32/include/freetype/ftxf86.h b/lib/windows32/include/freetype/ftxf86.h new file mode 100644 index 0000000..8c68afd --- /dev/null +++ b/lib/windows32/include/freetype/ftxf86.h @@ -0,0 +1,83 @@ +/***************************************************************************/ +/* */ +/* ftxf86.h */ +/* */ +/* Support functions for X11. */ +/* */ +/* Copyright 2002, 2003, 2004, 2006, 2007 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTXF86_H__ +#define __FTXF86_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* font_formats */ + /* */ + /* <Title> */ + /* Font Formats */ + /* */ + /* <Abstract> */ + /* Getting the font format. */ + /* */ + /* <Description> */ + /* The single function in this section can be used to get the font */ + /* format. Note that this information is not needed normally; */ + /* however, there are special cases (like in PDF devices) where it is */ + /* important to differentiate, in spite of FreeType's uniform API. */ + /* */ + /* This function is in the X11/xf86 namespace for historical reasons */ + /* and in no way depends on that windowing system. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_X11_Font_Format */ + /* */ + /* <Description> */ + /* Return a string describing the format of a given face, using values */ + /* which can be used as an X11 FONT_PROPERTY. Possible values are */ + /* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ + /* `PFR', and `Windows~FNT'. */ + /* */ + /* <Input> */ + /* face :: */ + /* Input face handle. */ + /* */ + /* <Return> */ + /* Font format string. NULL in case of error. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_X11_Font_Format( FT_Face face ); + + /* */ + +FT_END_HEADER + +#endif /* __FTXF86_H__ */ diff --git a/lib/windows32/include/freetype/t1tables.h b/lib/windows32/include/freetype/t1tables.h new file mode 100644 index 0000000..5e2a393 --- /dev/null +++ b/lib/windows32/include/freetype/t1tables.h @@ -0,0 +1,504 @@ +/***************************************************************************/ +/* */ +/* t1tables.h */ +/* */ +/* Basic Type 1/Type 2 tables definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TABLES_H__ +#define __T1TABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* type1_tables */ + /* */ + /* <Title> */ + /* Type 1 Tables */ + /* */ + /* <Abstract> */ + /* Type~1 (PostScript) specific font tables. */ + /* */ + /* <Description> */ + /* This section contains the definition of Type 1-specific tables, */ + /* including structures related to other PostScript font formats. */ + /* */ + /*************************************************************************/ + + + /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ + /* structures in order to support Multiple Master fonts. */ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfoRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* FontInfo dictionary. */ + /* */ + typedef struct PS_FontInfoRec_ + { + FT_String* version; + FT_String* notice; + FT_String* full_name; + FT_String* family_name; + FT_String* weight; + FT_Long italic_angle; + FT_Bool is_fixed_pitch; + FT_Short underline_position; + FT_UShort underline_thickness; + + } PS_FontInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfo */ + /* */ + /* <Description> */ + /* A handle to a @PS_FontInfoRec structure. */ + /* */ + typedef struct PS_FontInfoRec_* PS_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_FontInfo */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_FontInfoRec T1_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_PrivateRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 private dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* Private dictionary. */ + /* */ + typedef struct PS_PrivateRec_ + { + FT_Int unique_id; + FT_Int lenIV; + + FT_Byte num_blue_values; + FT_Byte num_other_blues; + FT_Byte num_family_blues; + FT_Byte num_family_other_blues; + + FT_Short blue_values[14]; + FT_Short other_blues[10]; + + FT_Short family_blues [14]; + FT_Short family_other_blues[10]; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_fuzz; + + FT_UShort standard_width[1]; + FT_UShort standard_height[1]; + + FT_Byte num_snap_widths; + FT_Byte num_snap_heights; + FT_Bool force_bold; + FT_Bool round_stem_up; + + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ + + FT_Fixed expansion_factor; + + FT_Long language_group; + FT_Long password; + + FT_Short min_feature[2]; + + } PS_PrivateRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Private */ + /* */ + /* <Description> */ + /* A handle to a @PS_PrivateRec structure. */ + /* */ + typedef struct PS_PrivateRec_* PS_Private; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_Private */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_PrivateRec T1_Private; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_Blend_Flags */ + /* */ + /* <Description> */ + /* A set of flags used to indicate which fields are present in a */ + /* given blend dictionary (font info or private). Used to support */ + /* Multiple Masters fonts. */ + /* */ + typedef enum T1_Blend_Flags_ + { + /*# required fields in a FontInfo blend dictionary */ + T1_BLEND_UNDERLINE_POSITION = 0, + T1_BLEND_UNDERLINE_THICKNESS, + T1_BLEND_ITALIC_ANGLE, + + /*# required fields in a Private blend dictionary */ + T1_BLEND_BLUE_VALUES, + T1_BLEND_OTHER_BLUES, + T1_BLEND_STANDARD_WIDTH, + T1_BLEND_STANDARD_HEIGHT, + T1_BLEND_STEM_SNAP_WIDTHS, + T1_BLEND_STEM_SNAP_HEIGHTS, + T1_BLEND_BLUE_SCALE, + T1_BLEND_BLUE_SHIFT, + T1_BLEND_FAMILY_BLUES, + T1_BLEND_FAMILY_OTHER_BLUES, + T1_BLEND_FORCE_BOLD, + + /*# never remove */ + T1_BLEND_MAX + + } T1_Blend_Flags; + + /* */ + + + /*# backwards compatible definitions */ +#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION +#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS +#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE +#define t1_blend_blue_values T1_BLEND_BLUE_VALUES +#define t1_blend_other_blues T1_BLEND_OTHER_BLUES +#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH +#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT +#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS +#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS +#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE +#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT +#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES +#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES +#define t1_blend_force_bold T1_BLEND_FORCE_BOLD +#define t1_blend_max T1_BLEND_MAX + + + /* maximum number of Multiple Masters designs, as defined in the spec */ +#define T1_MAX_MM_DESIGNS 16 + + /* maximum number of Multiple Masters axes, as defined in the spec */ +#define T1_MAX_MM_AXIS 4 + + /* maximum number of elements in a design map */ +#define T1_MAX_MM_MAP_POINTS 20 + + + /* this structure is used to store the BlendDesignMap entry for an axis */ + typedef struct PS_DesignMap_ + { + FT_Byte num_points; + FT_Long* design_points; + FT_Fixed* blend_points; + + } PS_DesignMapRec, *PS_DesignMap; + + /* backwards-compatible definition */ + typedef PS_DesignMapRec T1_DesignMap; + + + typedef struct PS_BlendRec_ + { + FT_UInt num_designs; + FT_UInt num_axis; + + FT_String* axis_names[T1_MAX_MM_AXIS]; + FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; + PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; + + FT_Fixed* weight_vector; + FT_Fixed* default_weight_vector; + + PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; + PS_Private privates [T1_MAX_MM_DESIGNS + 1]; + + FT_ULong blend_bitflags; + + FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; + + /* since 2.3.0 */ + + /* undocumented, optional: the default design instance; */ + /* corresponds to default_weight_vector -- */ + /* num_default_design_vector == 0 means it is not present */ + /* in the font and associated metrics files */ + FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; + FT_UInt num_default_design_vector; + + } PS_BlendRec, *PS_Blend; + + + /* backwards-compatible definition */ + typedef PS_BlendRec T1_Blend; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDictRec */ + /* */ + /* <Description> */ + /* A structure used to represent data in a CID top-level dictionary. */ + /* */ + typedef struct CID_FaceDictRec_ + { + PS_PrivateRec private_dict; + + FT_UInt len_buildchar; + FT_Fixed forcebold_threshold; + FT_Pos stroke_width; + FT_Fixed expansion_factor; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_UInt num_subrs; + FT_ULong subrmap_offset; + FT_Int sd_bytes; + + } CID_FaceDictRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDict */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceDictRec structure. */ + /* */ + typedef struct CID_FaceDictRec_* CID_FaceDict; + + /* */ + + + /* backwards-compatible definition */ + typedef CID_FaceDictRec CID_FontDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfoRec */ + /* */ + /* <Description> */ + /* A structure used to represent CID Face information. */ + /* */ + typedef struct CID_FaceInfoRec_ + { + FT_String* cid_font_name; + FT_Fixed cid_version; + FT_Int cid_font_type; + + FT_String* registry; + FT_String* ordering; + FT_Int supplement; + + PS_FontInfoRec font_info; + FT_BBox font_bbox; + FT_ULong uid_base; + + FT_Int num_xuid; + FT_ULong xuid[16]; + + FT_ULong cidmap_offset; + FT_Int fd_bytes; + FT_Int gd_bytes; + FT_ULong cid_count; + + FT_Int num_dicts; + CID_FaceDict font_dicts; + + FT_ULong data_offset; + + } CID_FaceInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfo */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceInfoRec structure. */ + /* */ + typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_Info */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceInfoRec CID_Info; + + + /************************************************************************ + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph + * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, + * except that certain fonts (mostly TrueType) contain incorrect + * glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ + FT_EXPORT( FT_Int ) + FT_Has_PS_Glyph_Names( FT_Face face ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * Output font info structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the font info structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function will + * return the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Info( FT_Face face, + PS_FontInfo afont_info ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Private + * + * @description: + * Retrieve the @PS_PrivateRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_private :: + * Output private dictionary structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the @PS_PrivateRec structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + /* */ + + +FT_END_HEADER + +#endif /* __T1TABLES_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ttnameid.h b/lib/windows32/include/freetype/ttnameid.h new file mode 100644 index 0000000..66aef04 --- /dev/null +++ b/lib/windows32/include/freetype/ttnameid.h @@ -0,0 +1,1247 @@ +/***************************************************************************/ +/* */ +/* ttnameid.h */ +/* */ +/* TrueType name ID definitions (specification only). */ +/* */ +/* Copyright 1996-2002, 2003, 2004, 2006, 2007, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTNAMEID_H__ +#define __TTNAMEID_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + + + /*************************************************************************/ + /* */ + /* Possible values for the `platform' identifier code in the name */ + /* records of the TTF `name' table. */ + /* */ + /*************************************************************************/ + + + /*********************************************************************** + * + * @enum: + * TT_PLATFORM_XXX + * + * @description: + * A list of valid values for the `platform_id' identifier code in + * @FT_CharMapRec and @FT_SfntName structures. + * + * @values: + * TT_PLATFORM_APPLE_UNICODE :: + * Used by Apple to indicate a Unicode character map and/or name entry. + * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note + * that name entries in this format are coded as big-endian UCS-2 + * character codes _only_. + * + * TT_PLATFORM_MACINTOSH :: + * Used by Apple to indicate a MacOS-specific charmap and/or name entry. + * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that + * most TrueType fonts contain an Apple roman charmap to be usable on + * MacOS systems (even if they contain a Microsoft charmap as well). + * + * TT_PLATFORM_ISO :: + * This value was used to specify ISO/IEC 10646 charmaps. It is however + * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding + * `encoding_id' values. + * + * TT_PLATFORM_MICROSOFT :: + * Used by Microsoft to indicate Windows-specific charmaps. See + * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. + * Note that most fonts contain a Unicode charmap using + * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). + * + * TT_PLATFORM_CUSTOM :: + * Used to indicate application-specific charmaps. + * + * TT_PLATFORM_ADOBE :: + * This value isn't part of any font format specification, but is used + * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec + * structure. See @TT_ADOBE_ID_XXX. + */ + +#define TT_PLATFORM_APPLE_UNICODE 0 +#define TT_PLATFORM_MACINTOSH 1 +#define TT_PLATFORM_ISO 2 /* deprecated */ +#define TT_PLATFORM_MICROSOFT 3 +#define TT_PLATFORM_CUSTOM 4 +#define TT_PLATFORM_ADOBE 7 /* artificial */ + + + /*********************************************************************** + * + * @enum: + * TT_APPLE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. + * + * @values: + * TT_APPLE_ID_DEFAULT :: + * Unicode version 1.0. + * + * TT_APPLE_ID_UNICODE_1_1 :: + * Unicode 1.1; specifies Hangul characters starting at U+34xx. + * + * TT_APPLE_ID_ISO_10646 :: + * Deprecated (identical to preceding). + * + * TT_APPLE_ID_UNICODE_2_0 :: + * Unicode 2.0 and beyond (UTF-16 BMP only). + * + * TT_APPLE_ID_UNICODE_32 :: + * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations + * on a real cmap. + */ + +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ +#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ + + + /*********************************************************************** + * + * @enum: + * TT_MAC_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MACINTOSH charmaps and name entries. + * + * @values: + * TT_MAC_ID_ROMAN :: + * TT_MAC_ID_JAPANESE :: + * TT_MAC_ID_TRADITIONAL_CHINESE :: + * TT_MAC_ID_KOREAN :: + * TT_MAC_ID_ARABIC :: + * TT_MAC_ID_HEBREW :: + * TT_MAC_ID_GREEK :: + * TT_MAC_ID_RUSSIAN :: + * TT_MAC_ID_RSYMBOL :: + * TT_MAC_ID_DEVANAGARI :: + * TT_MAC_ID_GURMUKHI :: + * TT_MAC_ID_GUJARATI :: + * TT_MAC_ID_ORIYA :: + * TT_MAC_ID_BENGALI :: + * TT_MAC_ID_TAMIL :: + * TT_MAC_ID_TELUGU :: + * TT_MAC_ID_KANNADA :: + * TT_MAC_ID_MALAYALAM :: + * TT_MAC_ID_SINHALESE :: + * TT_MAC_ID_BURMESE :: + * TT_MAC_ID_KHMER :: + * TT_MAC_ID_THAI :: + * TT_MAC_ID_LAOTIAN :: + * TT_MAC_ID_GEORGIAN :: + * TT_MAC_ID_ARMENIAN :: + * TT_MAC_ID_MALDIVIAN :: + * TT_MAC_ID_SIMPLIFIED_CHINESE :: + * TT_MAC_ID_TIBETAN :: + * TT_MAC_ID_MONGOLIAN :: + * TT_MAC_ID_GEEZ :: + * TT_MAC_ID_SLAVIC :: + * TT_MAC_ID_VIETNAMESE :: + * TT_MAC_ID_SINDHI :: + * TT_MAC_ID_UNINTERP :: + */ + +#define TT_MAC_ID_ROMAN 0 +#define TT_MAC_ID_JAPANESE 1 +#define TT_MAC_ID_TRADITIONAL_CHINESE 2 +#define TT_MAC_ID_KOREAN 3 +#define TT_MAC_ID_ARABIC 4 +#define TT_MAC_ID_HEBREW 5 +#define TT_MAC_ID_GREEK 6 +#define TT_MAC_ID_RUSSIAN 7 +#define TT_MAC_ID_RSYMBOL 8 +#define TT_MAC_ID_DEVANAGARI 9 +#define TT_MAC_ID_GURMUKHI 10 +#define TT_MAC_ID_GUJARATI 11 +#define TT_MAC_ID_ORIYA 12 +#define TT_MAC_ID_BENGALI 13 +#define TT_MAC_ID_TAMIL 14 +#define TT_MAC_ID_TELUGU 15 +#define TT_MAC_ID_KANNADA 16 +#define TT_MAC_ID_MALAYALAM 17 +#define TT_MAC_ID_SINHALESE 18 +#define TT_MAC_ID_BURMESE 19 +#define TT_MAC_ID_KHMER 20 +#define TT_MAC_ID_THAI 21 +#define TT_MAC_ID_LAOTIAN 22 +#define TT_MAC_ID_GEORGIAN 23 +#define TT_MAC_ID_ARMENIAN 24 +#define TT_MAC_ID_MALDIVIAN 25 +#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 +#define TT_MAC_ID_TIBETAN 26 +#define TT_MAC_ID_MONGOLIAN 27 +#define TT_MAC_ID_GEEZ 28 +#define TT_MAC_ID_SLAVIC 29 +#define TT_MAC_ID_VIETNAMESE 30 +#define TT_MAC_ID_SINDHI 31 +#define TT_MAC_ID_UNINTERP 32 + + + /*********************************************************************** + * + * @enum: + * TT_ISO_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ISO charmaps and name entries. + * + * Their use is now deprecated. + * + * @values: + * TT_ISO_ID_7BIT_ASCII :: + * ASCII. + * TT_ISO_ID_10646 :: + * ISO/10646. + * TT_ISO_ID_8859_1 :: + * Also known as Latin-1. + */ + +#define TT_ISO_ID_7BIT_ASCII 0 +#define TT_ISO_ID_10646 1 +#define TT_ISO_ID_8859_1 2 + + + /*********************************************************************** + * + * @enum: + * TT_MS_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MICROSOFT charmaps and name entries. + * + * @values: + * TT_MS_ID_SYMBOL_CS :: + * Corresponds to Microsoft symbol encoding. See + * @FT_ENCODING_MS_SYMBOL. + * + * TT_MS_ID_UNICODE_CS :: + * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See + * @FT_ENCODING_UNICODE. + * + * TT_MS_ID_SJIS :: + * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. + * + * TT_MS_ID_GB2312 :: + * Corresponds to Simplified Chinese as used in Mainland China. See + * @FT_ENCODING_GB2312. + * + * TT_MS_ID_BIG_5 :: + * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. + * See @FT_ENCODING_BIG5. + * + * TT_MS_ID_WANSUNG :: + * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. + * + * TT_MS_ID_JOHAB :: + * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. + * + * TT_MS_ID_UCS_4 :: + * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to + * the OpenType specification version 1.4 (mid-2001.) + */ + +#define TT_MS_ID_SYMBOL_CS 0 +#define TT_MS_ID_UNICODE_CS 1 +#define TT_MS_ID_SJIS 2 +#define TT_MS_ID_GB2312 3 +#define TT_MS_ID_BIG_5 4 +#define TT_MS_ID_WANSUNG 5 +#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_UCS_4 10 + + + /*********************************************************************** + * + * @enum: + * TT_ADOBE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! + * + * @values: + * TT_ADOBE_ID_STANDARD :: + * Adobe standard encoding. + * TT_ADOBE_ID_EXPERT :: + * Adobe expert encoding. + * TT_ADOBE_ID_CUSTOM :: + * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. + */ + +#define TT_ADOBE_ID_STANDARD 0 +#define TT_ADOBE_ID_EXPERT 1 +#define TT_ADOBE_ID_CUSTOM 2 +#define TT_ADOBE_ID_LATIN_1 3 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MACINTOSH. */ + /* */ + /* The canonical source for the Apple assigned Language ID's is at */ + /* */ + /* http://fonts.apple.com/TTRefMan/RM06/Chap6name.html */ + /* */ +#define TT_MAC_LANGID_ENGLISH 0 +#define TT_MAC_LANGID_FRENCH 1 +#define TT_MAC_LANGID_GERMAN 2 +#define TT_MAC_LANGID_ITALIAN 3 +#define TT_MAC_LANGID_DUTCH 4 +#define TT_MAC_LANGID_SWEDISH 5 +#define TT_MAC_LANGID_SPANISH 6 +#define TT_MAC_LANGID_DANISH 7 +#define TT_MAC_LANGID_PORTUGUESE 8 +#define TT_MAC_LANGID_NORWEGIAN 9 +#define TT_MAC_LANGID_HEBREW 10 +#define TT_MAC_LANGID_JAPANESE 11 +#define TT_MAC_LANGID_ARABIC 12 +#define TT_MAC_LANGID_FINNISH 13 +#define TT_MAC_LANGID_GREEK 14 +#define TT_MAC_LANGID_ICELANDIC 15 +#define TT_MAC_LANGID_MALTESE 16 +#define TT_MAC_LANGID_TURKISH 17 +#define TT_MAC_LANGID_CROATIAN 18 +#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 +#define TT_MAC_LANGID_URDU 20 +#define TT_MAC_LANGID_HINDI 21 +#define TT_MAC_LANGID_THAI 22 +#define TT_MAC_LANGID_KOREAN 23 +#define TT_MAC_LANGID_LITHUANIAN 24 +#define TT_MAC_LANGID_POLISH 25 +#define TT_MAC_LANGID_HUNGARIAN 26 +#define TT_MAC_LANGID_ESTONIAN 27 +#define TT_MAC_LANGID_LETTISH 28 +#define TT_MAC_LANGID_SAAMISK 29 +#define TT_MAC_LANGID_FAEROESE 30 +#define TT_MAC_LANGID_FARSI 31 +#define TT_MAC_LANGID_RUSSIAN 32 +#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 +#define TT_MAC_LANGID_FLEMISH 34 +#define TT_MAC_LANGID_IRISH 35 +#define TT_MAC_LANGID_ALBANIAN 36 +#define TT_MAC_LANGID_ROMANIAN 37 +#define TT_MAC_LANGID_CZECH 38 +#define TT_MAC_LANGID_SLOVAK 39 +#define TT_MAC_LANGID_SLOVENIAN 40 +#define TT_MAC_LANGID_YIDDISH 41 +#define TT_MAC_LANGID_SERBIAN 42 +#define TT_MAC_LANGID_MACEDONIAN 43 +#define TT_MAC_LANGID_BULGARIAN 44 +#define TT_MAC_LANGID_UKRAINIAN 45 +#define TT_MAC_LANGID_BYELORUSSIAN 46 +#define TT_MAC_LANGID_UZBEK 47 +#define TT_MAC_LANGID_KAZAKH 48 +#define TT_MAC_LANGID_AZERBAIJANI 49 +#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 +#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 +#define TT_MAC_LANGID_ARMENIAN 51 +#define TT_MAC_LANGID_GEORGIAN 52 +#define TT_MAC_LANGID_MOLDAVIAN 53 +#define TT_MAC_LANGID_KIRGHIZ 54 +#define TT_MAC_LANGID_TAJIKI 55 +#define TT_MAC_LANGID_TURKMEN 56 +#define TT_MAC_LANGID_MONGOLIAN 57 +#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 +#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 +#define TT_MAC_LANGID_PASHTO 59 +#define TT_MAC_LANGID_KURDISH 60 +#define TT_MAC_LANGID_KASHMIRI 61 +#define TT_MAC_LANGID_SINDHI 62 +#define TT_MAC_LANGID_TIBETAN 63 +#define TT_MAC_LANGID_NEPALI 64 +#define TT_MAC_LANGID_SANSKRIT 65 +#define TT_MAC_LANGID_MARATHI 66 +#define TT_MAC_LANGID_BENGALI 67 +#define TT_MAC_LANGID_ASSAMESE 68 +#define TT_MAC_LANGID_GUJARATI 69 +#define TT_MAC_LANGID_PUNJABI 70 +#define TT_MAC_LANGID_ORIYA 71 +#define TT_MAC_LANGID_MALAYALAM 72 +#define TT_MAC_LANGID_KANNADA 73 +#define TT_MAC_LANGID_TAMIL 74 +#define TT_MAC_LANGID_TELUGU 75 +#define TT_MAC_LANGID_SINHALESE 76 +#define TT_MAC_LANGID_BURMESE 77 +#define TT_MAC_LANGID_KHMER 78 +#define TT_MAC_LANGID_LAO 79 +#define TT_MAC_LANGID_VIETNAMESE 80 +#define TT_MAC_LANGID_INDONESIAN 81 +#define TT_MAC_LANGID_TAGALOG 82 +#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 +#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 +#define TT_MAC_LANGID_AMHARIC 85 +#define TT_MAC_LANGID_TIGRINYA 86 +#define TT_MAC_LANGID_GALLA 87 +#define TT_MAC_LANGID_SOMALI 88 +#define TT_MAC_LANGID_SWAHILI 89 +#define TT_MAC_LANGID_RUANDA 90 +#define TT_MAC_LANGID_RUNDI 91 +#define TT_MAC_LANGID_CHEWA 92 +#define TT_MAC_LANGID_MALAGASY 93 +#define TT_MAC_LANGID_ESPERANTO 94 +#define TT_MAC_LANGID_WELSH 128 +#define TT_MAC_LANGID_BASQUE 129 +#define TT_MAC_LANGID_CATALAN 130 +#define TT_MAC_LANGID_LATIN 131 +#define TT_MAC_LANGID_QUECHUA 132 +#define TT_MAC_LANGID_GUARANI 133 +#define TT_MAC_LANGID_AYMARA 134 +#define TT_MAC_LANGID_TATAR 135 +#define TT_MAC_LANGID_UIGHUR 136 +#define TT_MAC_LANGID_DZONGKHA 137 +#define TT_MAC_LANGID_JAVANESE 138 +#define TT_MAC_LANGID_SUNDANESE 139 + + +#if 0 /* these seem to be errors that have been dropped */ + +#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 +#define TT_MAC_LANGID_IRISH_GAELIC 141 + +#endif + + + /* The following codes are new as of 2000-03-10 */ +#define TT_MAC_LANGID_GALICIAN 140 +#define TT_MAC_LANGID_AFRIKAANS 141 +#define TT_MAC_LANGID_BRETON 142 +#define TT_MAC_LANGID_INUKTITUT 143 +#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 +#define TT_MAC_LANGID_MANX_GAELIC 145 +#define TT_MAC_LANGID_IRISH_GAELIC 146 +#define TT_MAC_LANGID_TONGAN 147 +#define TT_MAC_LANGID_GREEK_POLYTONIC 148 +#define TT_MAC_LANGID_GREELANDIC 149 +#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MICROSOFT. */ + /* */ + /* The canonical source for the MS assigned LCID's (seems to) be at */ + /* */ + /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ + /* */ + /* It used to be at various places, among them */ + /* */ + /* http://www.microsoft.com/typography/OTSPEC/lcid-cp.txt */ + /* http://www.microsoft.com/globaldev/reference/loclanghome.asp */ + /* http://support.microsoft.com/support/kb/articles/Q224/8/04.ASP */ + /* http://msdn.microsoft.com/library/en-us/passport25/ */ + /* NET_Passport_VBScript_Documentation/Single_Sign_In/ */ + /* Advanced_Single_Sign_In/Localization_and_LCIDs.asp */ + /* */ + /* Hopefully, it seems now that the Globaldev site prevails... */ + /* (updated by Antoine, 2004-02-17) */ + +#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 +#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 +#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 +#define TT_MS_LANGID_ARABIC_EGYPT 0x0c01 +#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 +#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 +#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 +#define TT_MS_LANGID_ARABIC_TUNISIA 0x1c01 +#define TT_MS_LANGID_ARABIC_OMAN 0x2001 +#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 +#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 +#define TT_MS_LANGID_ARABIC_JORDAN 0x2c01 +#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 +#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 +#define TT_MS_LANGID_ARABIC_UAE 0x3801 +#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3c01 +#define TT_MS_LANGID_ARABIC_QATAR 0x4001 +#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 +#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 +#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 +#define TT_MS_LANGID_CHINESE_PRC 0x0804 +#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0c04 +#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 + +#if 1 /* this looks like the correct value */ +#define TT_MS_LANGID_CHINESE_MACAU 0x1404 +#else /* but beware, Microsoft may change its mind... + the most recent Word reference has the following: */ +#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG +#endif + +#if 0 /* used only with .NET `cultures'; commented out */ +#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04 +#endif + +#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 +#define TT_MS_LANGID_DANISH_DENMARK 0x0406 +#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 +#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 +#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0c07 +#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 +#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 +#define TT_MS_LANGID_GREEK_GREECE 0x0408 + + /* don't ask what this one means... It is commented out currently. */ +#if 0 +#define TT_MS_LANGID_GREEK_GREECE2 0x2008 +#endif + +#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 +#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 +#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 +#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0c09 +#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 +#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 +#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 +#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1c09 +#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 +#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 +#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 +#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2c09 +#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 +#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 +#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 +#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09 +#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 +#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 +#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 +#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040a +#define TT_MS_LANGID_SPANISH_MEXICO 0x080a +#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0c0a +#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100a +#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140a +#define TT_MS_LANGID_SPANISH_PANAMA 0x180a +#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1c0a +#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200a +#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240a +#define TT_MS_LANGID_SPANISH_PERU 0x280a +#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2c0a +#define TT_MS_LANGID_SPANISH_ECUADOR 0x300a +#define TT_MS_LANGID_SPANISH_CHILE 0x340a +#define TT_MS_LANGID_SPANISH_URUGUAY 0x380a +#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3c0a +#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400a +#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440a +#define TT_MS_LANGID_SPANISH_HONDURAS 0x480a +#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4c0a +#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500a +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a + /* The following ID blatantly violate MS specs by using a */ + /* sublanguage > 0x1F. */ +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40aU +#define TT_MS_LANGID_FINNISH_FINLAND 0x040b +#define TT_MS_LANGID_FRENCH_FRANCE 0x040c +#define TT_MS_LANGID_FRENCH_BELGIUM 0x080c +#define TT_MS_LANGID_FRENCH_CANADA 0x0c0c +#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100c +#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140c +#define TT_MS_LANGID_FRENCH_MONACO 0x180c +#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c +#define TT_MS_LANGID_FRENCH_REUNION 0x200c +#define TT_MS_LANGID_FRENCH_CONGO 0x240c + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO +#define TT_MS_LANGID_FRENCH_SENEGAL 0x280c +#define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c +#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300c +#define TT_MS_LANGID_FRENCH_MALI 0x340c +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c +#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c + /* and another violation of the spec (see 0xE40aU) */ +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40cU +#define TT_MS_LANGID_HEBREW_ISRAEL 0x040d +#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040e +#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040f +#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 +#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 +#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 +#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 +#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 +#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 +#define TT_MS_LANGID_POLISH_POLAND 0x0415 +#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 +#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 +#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 +#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 +#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 +#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 +#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 +#define TT_MS_LANGID_CROATIAN_CROATIA 0x041a +#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081a +#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0c1a + +#if 0 /* this used to be this value, but it looks like we were wrong */ +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101a +#else /* current sources say */ +#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101a +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141a + /* and XPsp2 Platform SDK added (2004-07-26) */ + /* Names are shortened to be significant within 40 chars. */ +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181a +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181a +#endif + +#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041b +#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041c +#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041d +#define TT_MS_LANGID_SWEDISH_FINLAND 0x081d +#define TT_MS_LANGID_THAI_THAILAND 0x041e +#define TT_MS_LANGID_TURKISH_TURKEY 0x041f +#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 +#define TT_MS_LANGID_URDU_INDIA 0x0820 +#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 +#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 +#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 +#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 +#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 +#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 +#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 +#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 +#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 +#define TT_MS_LANGID_FARSI_IRAN 0x0429 +#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042a +#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042b +#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042c +#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082c +#define TT_MS_LANGID_BASQUE_SPAIN 0x042d +#define TT_MS_LANGID_SORBIAN_GERMANY 0x042e +#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042f +#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 +#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 +#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 +#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 +#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 +#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 +#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 +#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 +#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 +#define TT_MS_LANGID_HINDI_INDIA 0x0439 +#define TT_MS_LANGID_MALTESE_MALTA 0x043a + /* Added by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043b +#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083b +#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3b +#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103b +#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143b +#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183b +#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3b +#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203b +#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243b + /* ... and we also keep our old identifier... */ +#define TT_MS_LANGID_SAAMI_LAPONIA 0x043b + +#if 0 /* this seems to be a previous inversion */ +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c +#else +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c +#endif + +#define TT_MS_LANGID_YIDDISH_GERMANY 0x043d +#define TT_MS_LANGID_MALAY_MALAYSIA 0x043e +#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083e +#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043f +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ + TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN + +#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 +#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 +#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 +#define TT_MS_LANGID_BENGALI_INDIA 0x0445 +#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 +#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 +#define TT_MS_LANGID_ORIYA_INDIA 0x0448 +#define TT_MS_LANGID_TAMIL_INDIA 0x0449 +#define TT_MS_LANGID_TELUGU_INDIA 0x044a +#define TT_MS_LANGID_KANNADA_INDIA 0x044b +#define TT_MS_LANGID_MALAYALAM_INDIA 0x044c +#define TT_MS_LANGID_ASSAMESE_INDIA 0x044d +#define TT_MS_LANGID_MARATHI_INDIA 0x044e +#define TT_MS_LANGID_SANSKRIT_INDIA 0x044f +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 +#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 + /* Don't use the next constant! It has */ + /* (1) the wrong spelling (Dzonghka) */ + /* (2) Microsoft doesn't officially define it -- */ + /* at least it is not in the List of Local */ + /* ID Values. */ + /* (3) Dzongkha is not the same language as */ + /* Tibetan, so merging it is wrong anyway. */ + /* */ + /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 + +#if 0 + /* the following used to be defined */ +#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 + /* ... but it was changed; */ +#else + /* So we will continue to #define it, but with the correct value */ +#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN +#endif + +#define TT_MS_LANGID_WELSH_WALES 0x0452 +#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 +#define TT_MS_LANGID_LAO_LAOS 0x0454 +#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 +#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 +#define TT_MS_LANGID_KONKANI_INDIA 0x0457 +#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 +#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 +#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 + /* Missing a LCID for Sindhi in Devanagari script */ +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a +#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b +#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045c +#define TT_MS_LANGID_INUKTITUT_CANADA 0x045d +#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045f +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f + /* Missing a LCID for Tifinagh script */ +#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 + /* Spelled this way by XPsp2 Platform SDK (2004-07-26) */ + /* script is yet unclear... might be Arabic, Nagari or Sharada */ +#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 + /* ... and aliased (by MS) for compatibility reasons. */ +#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA +#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_NEPALI_INDIA 0x0861 +#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 +#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 +#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES +#define TT_MS_LANGID_EDO_NIGERIA 0x0466 +#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046a +#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046b +#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086b +#define TT_MS_LANGID_QUECHUA_PERU 0x0c6b +#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046c + /* Also spelled by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ + TT_MS_LANGID_SEPEDI_SOUTH_AFRICA + /* language codes 0x046d, 0x046e and 0x046f are (still) unknown. */ +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 +#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 +#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 +#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 + /* also spelled in the `Passport SDK' list as: */ +#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA +#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 +#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 +#define TT_MS_LANGID_LATIN 0x0476 +#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 + /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ + /* not written (but OTOH the peculiar writing system is worth */ + /* studying). */ +#define TT_MS_LANGID_YI_CHINA 0x0478 +#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 + /* language codes from 0x047a to 0x047f are (still) unknown. */ +#define TT_MS_LANGID_UIGHUR_CHINA 0x0480 +#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 + +#if 0 /* not deemed useful for fonts */ +#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04ff +#endif + + + /*************************************************************************/ + /* */ + /* Possible values of the `name' identifier field in the name records of */ + /* the TTF `name' table. These values are platform independent. */ + /* */ +#define TT_NAME_ID_COPYRIGHT 0 +#define TT_NAME_ID_FONT_FAMILY 1 +#define TT_NAME_ID_FONT_SUBFAMILY 2 +#define TT_NAME_ID_UNIQUE_ID 3 +#define TT_NAME_ID_FULL_NAME 4 +#define TT_NAME_ID_VERSION_STRING 5 +#define TT_NAME_ID_PS_NAME 6 +#define TT_NAME_ID_TRADEMARK 7 + + /* the following values are from the OpenType spec */ +#define TT_NAME_ID_MANUFACTURER 8 +#define TT_NAME_ID_DESIGNER 9 +#define TT_NAME_ID_DESCRIPTION 10 +#define TT_NAME_ID_VENDOR_URL 11 +#define TT_NAME_ID_DESIGNER_URL 12 +#define TT_NAME_ID_LICENSE 13 +#define TT_NAME_ID_LICENSE_URL 14 + /* number 15 is reserved */ +#define TT_NAME_ID_PREFERRED_FAMILY 16 +#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 +#define TT_NAME_ID_MAC_FULL_NAME 18 + + /* The following code is new as of 2000-01-21 */ +#define TT_NAME_ID_SAMPLE_TEXT 19 + + /* This is new in OpenType 1.3 */ +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + + + /*************************************************************************/ + /* */ + /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ + /* */ + /* Updated 08-Nov-2008. */ + /* */ + + /* Bit 0 Basic Latin */ +#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ + /* Bit 1 C1 Controls and Latin-1 Supplement */ +#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ + /* Bit 2 Latin Extended-A */ +#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ + /* Bit 3 Latin Extended-B */ +#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ +#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ + /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ +#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ +#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ + /* Bit 7 Greek and Coptic */ +#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ +#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ + /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ + /* Bit 10 Armenian */ +#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ + /* Bit 11 Hebrew */ +#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ +#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ + /* Bit 15 Devanagari */ +#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ + /* Bit 16 Bengali */ +#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ + /* Bit 17 Gurmukhi */ +#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ + /* Bit 18 Gujarati */ +#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ + /* Bit 19 Oriya */ +#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ + /* Bit 20 Tamil */ +#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ + /* Bit 21 Telugu */ +#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ + /* Bit 22 Kannada */ +#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ + /* Bit 23 Malayalam */ +#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ + /* Bit 24 Thai */ +#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ + /* Bit 25 Lao */ +#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ +#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ + /* Bit 28 Hangul Jamo */ +#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ + /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ +#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ + /* Bit 30 Greek Extended */ +#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ +#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ + /* Bit 32 Superscripts And Subscripts */ +#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ + /* Bit 33 Currency Symbols */ +#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ + /* Bit 34 Combining Diacritical Marks For Symbols */ +#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ + /* Bit 35 Letterlike Symbols */ +#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ + /* Bit 36 Number Forms */ +#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ +#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ + /* U+27F0-U+27FF */ + /* U+2900-U+297F */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ +#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ + /* U+2A00-U+2AFF */ + /* U+27C0-U+27EF */ + /* U+2980-U+29FF */ + /* Bit 39 Miscellaneous Technical */ +#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ + /* Bit 40 Control Pictures */ +#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ + /* Bit 41 Optical Character Recognition */ +#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ + /* Bit 42 Enclosed Alphanumerics */ +#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ + /* Bit 43 Box Drawing */ +#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ + /* Bit 44 Block Elements */ +#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ + /* Bit 45 Geometric Shapes */ +#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ + /* Bit 46 Miscellaneous Symbols */ +#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ + /* Bit 47 Dingbats */ +#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ + /* Bit 48 CJK Symbols and Punctuation */ +#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ + /* Bit 49 Hiragana */ +#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ +#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ + /* U+31F0-U+31FF */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ +#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ + /* U+31A0-U+31BF */ + /* Bit 52 Hangul Compatibility Jamo */ +#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA + /* Bit 54 Enclosed CJK Letters and Months */ +#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ + /* Bit 55 CJK Compatibility */ +#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ + /* Bit 56 Hangul Syllables */ +#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + /* */ + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000 */ +#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ + /* U+DB80-U+DBFF */ + /* U+DC00-U+DFFF */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ +#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ + /* U+2E80-U+2EFF */ + /* U+2F00-U+2FDF */ + /* U+2FF0-U+2FFF */ + /* U+3400-U+4DB5 */ + /*U+20000-U+2A6DF*/ + /* U+3190-U+319F */ + /* Bit 60 Private Use */ +#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ + /*U+2F800-U+2FA1F*/ + /* Bit 62 Alphabetic Presentation Forms */ +#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ + /* Bit 63 Arabic Presentation Forms-A */ +#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ + /* Bit 64 Combining Half Marks */ +#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ + /* Bit 66 Small Form Variants */ +#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ + /* Bit 67 Arabic Presentation Forms-B */ +#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ + /* Bit 68 Halfwidth and Fullwidth Forms */ +#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ + /* Bit 69 Specials */ +#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ + /* Bit 70 Tibetan */ +#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ + /* Bit 71 Syriac */ +#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ + /* Bit 72 Thaana */ +#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ + /* Bit 73 Sinhala */ +#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ + /* Bit 74 Myanmar */ +#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ +#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ + /* Bit 76 Cherokee */ +#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ + /* Bit 77 Unified Canadian Aboriginal Syllabics */ +#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ + /* Bit 78 Ogham */ +#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ + /* Bit 79 Runic */ +#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ +#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ + /* Bit 81 Mongolian */ +#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ + /* Bit 82 Braille Patterns */ +#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ +#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ + /* U+A490-U+A4CF */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ +#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ + /* U+1720-U+173F */ + /* U+1740-U+175F */ + /* U+1760-U+177F */ + /* Bit 85 Old Italic */ +#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ + /* Bit 86 Gothic */ +#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ + /* Bit 87 Deseret */ +#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ +#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ + /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ + /* Bit 89 Mathematical Alphanumeric Symbols */ +#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ +#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ + /*U+100000-U+10FFFD*/ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ +#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ + /* Bit 92 Tags */ +#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ + + + /*************************************************************************/ + /* */ + /* Some compilers have a very limited length of identifiers. */ + /* */ +#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) +#define HAVE_LIMIT_ON_IDENTS +#endif + + +#ifndef HAVE_LIMIT_ON_IDENTS + + + /*************************************************************************/ + /* */ + /* Here some alias #defines in order to be clearer. */ + /* */ + /* These are not always #defined to stay within the 31~character limit */ + /* which some compilers have. */ + /* */ + /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ + /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ + /* If you get a warning with such a compiler, use the -i40 switch. */ + /* */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ + TT_UCR_ARABIC_PRESENTATIONS_A +#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ + TT_UCR_ARABIC_PRESENTATIONS_B + +#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ + TT_UCR_COMBINING_DIACRITICS +#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ + TT_UCR_COMBINING_DIACRITICS_SYMB + + +#endif /* !HAVE_LIMIT_ON_IDENTS */ + + +FT_END_HEADER + +#endif /* __TTNAMEID_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/tttables.h b/lib/windows32/include/freetype/tttables.h new file mode 100644 index 0000000..4610e50 --- /dev/null +++ b/lib/windows32/include/freetype/tttables.h @@ -0,0 +1,759 @@ +/***************************************************************************/ +/* */ +/* tttables.h */ +/* */ +/* Basic SFNT/TrueType tables definitions and interface */ +/* (specification only). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTABLES_H__ +#define __TTTABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + /* <Title> */ + /* TrueType Tables */ + /* */ + /* <Abstract> */ + /* TrueType specific table types and functions. */ + /* */ + /* <Description> */ + /* This section contains the definition of TrueType-specific tables */ + /* as well as some routines used to access and process them. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Header */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType font header table. All */ + /* fields follow the TrueType specification. */ + /* */ + typedef struct TT_Header_ + { + FT_Fixed Table_Version; + FT_Fixed Font_Revision; + + FT_Long CheckSum_Adjust; + FT_Long Magic_Number; + + FT_UShort Flags; + FT_UShort Units_Per_EM; + + FT_Long Created [2]; + FT_Long Modified[2]; + + FT_Short xMin; + FT_Short yMin; + FT_Short xMax; + FT_Short yMax; + + FT_UShort Mac_Style; + FT_UShort Lowest_Rec_PPEM; + + FT_Short Font_Direction; + FT_Short Index_To_Loc_Format; + FT_Short Glyph_Data_Format; + + } TT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_HoriHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType horizontal header, the `hhea' */ + /* table, as well as the corresponding horizontal metrics table, */ + /* i.e., the `hmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of all */ + /* glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoAscender' field */ + /* of the OS/2 table instead if you want */ + /* the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the distance */ + /* from the baseline to the bottom-most of */ + /* all glyph points found in the font. It */ + /* is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Width_Max :: This field is the maximum of all advance */ + /* widths found in the font. It can be */ + /* used to compute the maximum width of an */ + /* arbitrary string of text. */ + /* */ + /* min_Left_Side_Bearing :: The minimum left side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Right_Side_Bearing :: The minimum right side bearing of all */ + /* glyphs within the font. */ + /* */ + /* xMax_Extent :: The maximum horizontal extent (i.e., the */ + /* `width' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ + /* table -- this value can be smaller than */ + /* the total number of glyphs in the font. */ + /* */ + /* long_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields which */ + /* are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_HoriHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Width_Max; /* advance width maximum */ + + FT_Short min_Left_Side_Bearing; /* minimum left-sb */ + FT_Short min_Right_Side_Bearing; /* minimum right-sb */ + FT_Short xMax_Extent; /* xmax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_HMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* `HMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_HoriHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_VertHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType vertical header, the `vhea' */ + /* table, as well as the corresponding vertical metrics table, i.e., */ + /* the `vmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of */ + /* all glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoAscender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the */ + /* distance from the baseline to the */ + /* bottom-most of all glyph points found */ + /* in the font. It is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Height_Max :: This field is the maximum of all */ + /* advance heights found in the font. It */ + /* can be used to compute the maximum */ + /* height of an arbitrary string of text. */ + /* */ + /* min_Top_Side_Bearing :: The minimum top side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ + /* glyphs within the font. */ + /* */ + /* yMax_Extent :: The maximum vertical extent (i.e., the */ + /* `height' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* caret_Offset :: The cursor's offset for slanted fonts. */ + /* This value is `reserved' in vmtx */ + /* version 1.0. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of VMetrics entries in the */ + /* `vmtx' table -- this value can be */ + /* smaller than the total number of glyphs */ + /* in the font. */ + /* */ + /* long_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields which */ + /* are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_VertHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Height_Max; /* advance height maximum */ + + FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ + FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ + FT_Short yMax_Extent; /* xmax or ymax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_VMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they're used to connect the metrics header to the relevant */ + /* `HMTX' or `VMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_VertHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_OS2 */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType OS/2 table. This is the long */ + /* table version. All fields comply to the TrueType specification. */ + /* */ + /* Note that we now support old Mac fonts which do not include an */ + /* OS/2 table. In this case, the `version' field is always set to */ + /* 0xFFFF. */ + /* */ + typedef struct TT_OS2_ + { + FT_UShort version; /* 0x0001 - more or 0xFFFF */ + FT_Short xAvgCharWidth; + FT_UShort usWeightClass; + FT_UShort usWidthClass; + FT_Short fsType; + FT_Short ySubscriptXSize; + FT_Short ySubscriptYSize; + FT_Short ySubscriptXOffset; + FT_Short ySubscriptYOffset; + FT_Short ySuperscriptXSize; + FT_Short ySuperscriptYSize; + FT_Short ySuperscriptXOffset; + FT_Short ySuperscriptYOffset; + FT_Short yStrikeoutSize; + FT_Short yStrikeoutPosition; + FT_Short sFamilyClass; + + FT_Byte panose[10]; + + FT_ULong ulUnicodeRange1; /* Bits 0-31 */ + FT_ULong ulUnicodeRange2; /* Bits 32-63 */ + FT_ULong ulUnicodeRange3; /* Bits 64-95 */ + FT_ULong ulUnicodeRange4; /* Bits 96-127 */ + + FT_Char achVendID[4]; + + FT_UShort fsSelection; + FT_UShort usFirstCharIndex; + FT_UShort usLastCharIndex; + FT_Short sTypoAscender; + FT_Short sTypoDescender; + FT_Short sTypoLineGap; + FT_UShort usWinAscent; + FT_UShort usWinDescent; + + /* only version 1 tables: */ + + FT_ULong ulCodePageRange1; /* Bits 0-31 */ + FT_ULong ulCodePageRange2; /* Bits 32-63 */ + + /* only version 2 tables: */ + + FT_Short sxHeight; + FT_Short sCapHeight; + FT_UShort usDefaultChar; + FT_UShort usBreakChar; + FT_UShort usMaxContext; + + } TT_OS2; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Postscript */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PostScript table. All fields */ + /* comply to the TrueType specification. This structure does not */ + /* reference the PostScript glyph names, which can be nevertheless */ + /* accessed with the `ttpost' module. */ + /* */ + typedef struct TT_Postscript_ + { + FT_Fixed FormatType; + FT_Fixed italicAngle; + FT_Short underlinePosition; + FT_Short underlineThickness; + FT_ULong isFixedPitch; + FT_ULong minMemType42; + FT_ULong maxMemType42; + FT_ULong minMemType1; + FT_ULong maxMemType1; + + /* Glyph names follow in the file, but we don't */ + /* load them by default. See the ttpost.c file. */ + + } TT_Postscript; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_PCLT */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PCLT table. All fields */ + /* comply to the TrueType specification. */ + /* */ + typedef struct TT_PCLT_ + { + FT_Fixed Version; + FT_ULong FontNumber; + FT_UShort Pitch; + FT_UShort xHeight; + FT_UShort Style; + FT_UShort TypeFamily; + FT_UShort CapHeight; + FT_UShort SymbolSet; + FT_Char TypeFace[16]; + FT_Char CharacterComplement[8]; + FT_Char FileName[6]; + FT_Char StrokeWeight; + FT_Char WidthType; + FT_Byte SerifStyle; + FT_Byte Reserved; + + } TT_PCLT; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_MaxProfile */ + /* */ + /* <Description> */ + /* The maximum profile is a table containing many max values which */ + /* can be used to pre-allocate arrays. This ensures that no memory */ + /* allocation occurs during a glyph load. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numGlyphs :: The number of glyphs in this TrueType */ + /* font. */ + /* */ + /* maxPoints :: The maximum number of points in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositePoints'. */ + /* */ + /* maxContours :: The maximum number of contours in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositeContours'. */ + /* */ + /* maxCompositePoints :: The maximum number of points in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxPoints'. */ + /* */ + /* maxCompositeContours :: The maximum number of contours in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxContours'. */ + /* */ + /* maxZones :: The maximum number of zones used for */ + /* glyph hinting. */ + /* */ + /* maxTwilightPoints :: The maximum number of points in the */ + /* twilight zone used for glyph hinting. */ + /* */ + /* maxStorage :: The maximum number of elements in the */ + /* storage area used for glyph hinting. */ + /* */ + /* maxFunctionDefs :: The maximum number of function */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxInstructionDefs :: The maximum number of instruction */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxStackElements :: The maximum number of stack elements used */ + /* during bytecode interpretation. */ + /* */ + /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ + /* used for glyph hinting. */ + /* */ + /* maxComponentElements :: The maximum number of simple (i.e., non- */ + /* composite) glyphs in a composite glyph. */ + /* */ + /* maxComponentDepth :: The maximum nesting depth of composite */ + /* glyphs. */ + /* */ + /* <Note> */ + /* This structure is only used during font loading. */ + /* */ + typedef struct TT_MaxProfile_ + { + FT_Fixed version; + FT_UShort numGlyphs; + FT_UShort maxPoints; + FT_UShort maxContours; + FT_UShort maxCompositePoints; + FT_UShort maxCompositeContours; + FT_UShort maxZones; + FT_UShort maxTwilightPoints; + FT_UShort maxStorage; + FT_UShort maxFunctionDefs; + FT_UShort maxInstructionDefs; + FT_UShort maxStackElements; + FT_UShort maxSizeOfInstructions; + FT_UShort maxComponentElements; + FT_UShort maxComponentDepth; + + } TT_MaxProfile; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Sfnt_Tag */ + /* */ + /* <Description> */ + /* An enumeration used to specify the index of an SFNT table. */ + /* Used in the @FT_Get_Sfnt_Table API function. */ + /* */ + typedef enum FT_Sfnt_Tag_ + { + ft_sfnt_head = 0, /* TT_Header */ + ft_sfnt_maxp = 1, /* TT_MaxProfile */ + ft_sfnt_os2 = 2, /* TT_OS2 */ + ft_sfnt_hhea = 3, /* TT_HoriHeader */ + ft_sfnt_vhea = 4, /* TT_VertHeader */ + ft_sfnt_post = 5, /* TT_Postscript */ + ft_sfnt_pclt = 6, /* TT_PCLT */ + + sfnt_max /* internal end mark */ + + } FT_Sfnt_Tag; + + /* */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Table */ + /* */ + /* <Description> */ + /* Return a pointer to a given SFNT table within a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the source. */ + /* */ + /* tag :: The index of the SFNT table. */ + /* */ + /* <Return> */ + /* A type-less pointer to the table. This will be~0 in case of */ + /* error, or if the corresponding table was not found *OR* loaded */ + /* from the file. */ + /* */ + /* Use a typecast according to `tag' to access the structure */ + /* elements. */ + /* */ + /* <Note> */ + /* The table is owned by the face object and disappears with it. */ + /* */ + /* This function is only useful to access SFNT tables that are loaded */ + /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ + /* a list. */ + /* */ + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + + /************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use the value~0 if you want + * to access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag == 0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length' parameter is NULL, then try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length' is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length' set to~0, as in the following example: + * + * { + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * } + */ + FT_EXPORT( FT_Error ) + FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + + /************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return information on an SFNT table. + * + * @input: + * face :: + * A handle to the source face. + * + * table_index :: + * The index of an SFNT table. The function returns + * FT_Err_Table_Missing for an invalid value. + * + * @output: + * tag :: + * The name tag of the SFNT table. + * + * length :: + * The length of the SFNT table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * SFNT tables with length zero are treated as missing. + * + */ + FT_EXPORT( FT_Error ) + FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Language_ID */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap language ID. Definitions of */ + /* language ID values are in `freetype/ttnameid.h'. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The language ID of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, just return~0 as the default value. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Format */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap format. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The format of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, return -1. */ + /* */ + FT_EXPORT( FT_Long ) + FT_Get_CMap_Format( FT_CharMap charmap ); + + /* */ + + +FT_END_HEADER + +#endif /* __TTTABLES_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/tttags.h b/lib/windows32/include/freetype/tttags.h new file mode 100644 index 0000000..307ce4b --- /dev/null +++ b/lib/windows32/include/freetype/tttags.h @@ -0,0 +1,107 @@ +/***************************************************************************/ +/* */ +/* tttags.h */ +/* */ +/* Tags for TrueType and OpenType tables (specification only). */ +/* */ +/* Copyright 1996-2001, 2004, 2005, 2007, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTAGS_H__ +#define __TTAGS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) +#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' ) +#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) +#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' ) +#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) +#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) +#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) +#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) +#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) +#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) +#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) +#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) +#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) +#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) +#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) +#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) +#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) +#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) +#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) +#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' ) +#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) +#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) +#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) +#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) +#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) +#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) +#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) +#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) +#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) +#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) +#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) +#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) +#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) +#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) +#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) +#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) +#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) +#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) +#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) +#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) +#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) +#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) +#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) +#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) +#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) +#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) +#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) +#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) +#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) +#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) +#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) +#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) +#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) +#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) +#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) +#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) + + +FT_END_HEADER + +#endif /* __TTAGS_H__ */ + + +/* END */ diff --git a/lib/windows32/include/freetype/ttunpat.h b/lib/windows32/include/freetype/ttunpat.h new file mode 100644 index 0000000..a016275 --- /dev/null +++ b/lib/windows32/include/freetype/ttunpat.h @@ -0,0 +1,59 @@ +/***************************************************************************/ +/* */ +/* ttunpat.h */ +/* */ +/* Definitions for the unpatented TrueType hinting system */ +/* */ +/* Copyright 2003, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* Written by Graham Asher <graham.asher@btinternet.com> */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTUNPAT_H__ +#define __TTUNPAT_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * A constant used as the tag of an @FT_Parameter structure to indicate + * that unpatented methods only should be used by the TrueType bytecode + * interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + /* */ + +FT_END_HEADER + + +#endif /* __TTUNPAT_H__ */ + + +/* END */ diff --git a/lib/windows32/include/ft2build.h b/lib/windows32/include/ft2build.h new file mode 100644 index 0000000..6a3b8d9 --- /dev/null +++ b/lib/windows32/include/ft2build.h @@ -0,0 +1,61 @@ +/***************************************************************************/ +/* */ +/* ft2build.h */ +/* */ +/* Build macros of the FreeType 2 library. */ +/* */ +/* Copyright 1996-2001, 2003, 2006 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This is a Unix-specific version of <ft2build.h> that should be used */ + /* exclusively *after* installation of the library. */ + /* */ + /* It assumes that `/usr/local/include/freetype2' (or whatever is */ + /* returned by the `freetype-config --cflags' or `pkg-config --cflags' */ + /* command) is in your compilation include path. */ + /* */ + /* We don't need to do anything special in this release. However, for */ + /* a future FreeType 2 release, the following installation changes will */ + /* be performed: */ + /* */ + /* - The contents of `freetype-2.x/include/freetype' will be installed */ + /* to `/usr/local/include/freetype2' instead of */ + /* `/usr/local/include/freetype2/freetype'. */ + /* */ + /* - This file will #include <freetype2/config/ftheader.h>, instead */ + /* of <freetype/config/ftheader.h>. */ + /* */ + /* - The contents of `ftheader.h' will be processed with `sed' to */ + /* replace all `<freetype/xxx>' with `<freetype2/xxx>'. */ + /* */ + /* - Adding `/usr/local/include/freetype2' to your compilation include */ + /* path will not be necessary anymore. */ + /* */ + /* These changes will be transparent to client applications which use */ + /* freetype-config (or pkg-config). No modifications will be necessary */ + /* to compile with the new scheme. */ + /* */ + /*************************************************************************/ + + +#ifndef __FT2_BUILD_UNIX_H__ +#define __FT2_BUILD_UNIX_H__ + + /* `<prefix>/include/freetype2' must be in your current inclusion path */ +#include <freetype/config/ftheader.h> + +#endif /* __FT2_BUILD_UNIX_H__ */ + + +/* END */ diff --git a/lib/windows32/include/jemalloc/jemalloc.h b/lib/windows32/include/jemalloc/jemalloc.h new file mode 100644 index 0000000..602a3f4 --- /dev/null +++ b/lib/windows32/include/jemalloc/jemalloc.h @@ -0,0 +1,377 @@ +#ifndef JEMALLOC_H_ +#define JEMALLOC_H_ +#ifdef __cplusplus +extern "C" { +#endif + +/* Defined if __attribute__((...)) syntax is supported. */ +/* #undef JEMALLOC_HAVE_ATTR */ + +/* Defined if alloc_size attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_ALLOC_SIZE */ + +/* Defined if format(gnu_printf, ...) attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF */ + +/* Defined if format(printf, ...) attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_FORMAT_PRINTF */ + +/* + * Define overrides for non-standard allocator-related functions if they are + * present on the system. + */ +/* #undef JEMALLOC_OVERRIDE_MEMALIGN */ +/* #undef JEMALLOC_OVERRIDE_VALLOC */ + +/* + * At least Linux omits the "const" in: + * + * size_t malloc_usable_size(const void *ptr); + * + * Match the operating system's prototype. + */ +#define JEMALLOC_USABLE_SIZE_CONST const + +/* + * If defined, specify throw() for the public function prototypes when compiling + * with C++. The only justification for this is to match the prototypes that + * glibc defines. + */ +/* #undef JEMALLOC_USE_CXX_THROW */ + +#ifdef _MSC_VER +# ifdef _WIN64 +# define LG_SIZEOF_PTR_WIN 3 +# else +# define LG_SIZEOF_PTR_WIN 2 +# endif +#endif + +/* sizeof(void *) == 2^LG_SIZEOF_PTR. */ +#define LG_SIZEOF_PTR LG_SIZEOF_PTR_WIN + +/* + * Name mangling for public symbols is controlled by --with-mangling and + * --with-jemalloc-prefix. With default settings the je_ prefix is stripped by + * these macro definitions. + */ +#ifndef JEMALLOC_NO_RENAME +# define je_malloc_conf je_malloc_conf +# define je_malloc_message je_malloc_message +# define je_malloc je_malloc +# define je_calloc je_calloc +# define je_posix_memalign je_posix_memalign +# define je_aligned_alloc je_aligned_alloc +# define je_realloc je_realloc +# define je_free je_free +# define je_mallocx je_mallocx +# define je_rallocx je_rallocx +# define je_xallocx je_xallocx +# define je_sallocx je_sallocx +# define je_dallocx je_dallocx +# define je_sdallocx je_sdallocx +# define je_nallocx je_nallocx +# define je_mallctl je_mallctl +# define je_mallctlnametomib je_mallctlnametomib +# define je_mallctlbymib je_mallctlbymib +# define je_malloc_stats_print je_malloc_stats_print +# define je_malloc_usable_size je_malloc_usable_size +#endif + +#include <stdlib.h> +#include <stdbool.h> +#include <stdint.h> +#include <limits.h> +#include <strings.h> + +#define JEMALLOC_VERSION "0.0.0-0-g0000000000000000000000000000000000000000" +#define JEMALLOC_VERSION_MAJOR 0 +#define JEMALLOC_VERSION_MINOR 0 +#define JEMALLOC_VERSION_BUGFIX 0 +#define JEMALLOC_VERSION_NREV 0 +#define JEMALLOC_VERSION_GID "0000000000000000000000000000000000000000" + +# define MALLOCX_LG_ALIGN(la) ((int)(la)) +# if LG_SIZEOF_PTR == 2 +# define MALLOCX_ALIGN(a) ((int)(ffs((int)(a))-1)) +# else +# define MALLOCX_ALIGN(a) \ + ((int)(((size_t)(a) < (size_t)INT_MAX) ? ffs((int)(a))-1 : \ + ffs((int)(((size_t)(a))>>32))+31)) +# endif +# define MALLOCX_ZERO ((int)0x40) +/* + * Bias tcache index bits so that 0 encodes "automatic tcache management", and 1 + * encodes MALLOCX_TCACHE_NONE. + */ +# define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8)) +# define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1) +/* + * Bias arena index bits so that 0 encodes "use an automatically chosen arena". + */ +# define MALLOCX_ARENA(a) ((((int)(a))+1) << 20) + +#if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW) +# define JEMALLOC_CXX_THROW throw() +#else +# define JEMALLOC_CXX_THROW +#endif + +#if _MSC_VER +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) __declspec(align(s)) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +// # ifndef JEMALLOC_EXPORT +// # ifdef DLLEXPORT +// # define JEMALLOC_EXPORT __declspec(dllexport) +// # else +// # define JEMALLOC_EXPORT __declspec(dllimport) +// # endif +// # endif +# define JEMALLOC_EXPORT +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE __declspec(noinline) +# ifdef __cplusplus +# define JEMALLOC_NOTHROW __declspec(nothrow) +# else +# define JEMALLOC_NOTHROW +# endif +# define JEMALLOC_SECTION(s) __declspec(allocate(s)) +# define JEMALLOC_RESTRICT_RETURN __declspec(restrict) +# if _MSC_VER >= 1900 && !defined(__EDG__) +# define JEMALLOC_ALLOCATOR __declspec(allocator) +# else +# define JEMALLOC_ALLOCATOR +# endif +#elif defined(JEMALLOC_HAVE_ATTR) +# define JEMALLOC_ATTR(s) __attribute__((s)) +# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s)) +# ifdef JEMALLOC_HAVE_ATTR_ALLOC_SIZE +# define JEMALLOC_ALLOC_SIZE(s) JEMALLOC_ATTR(alloc_size(s)) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) JEMALLOC_ATTR(alloc_size(s1, s2)) +# else +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# endif +# ifndef JEMALLOC_EXPORT +# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default")) +# endif +# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i)) +# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF) +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(printf, s, i)) +# else +# define JEMALLOC_FORMAT_PRINTF(s, i) +# endif +# define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline) +# define JEMALLOC_NOTHROW JEMALLOC_ATTR(nothrow) +# define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s)) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#else +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# define JEMALLOC_EXPORT +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE +# define JEMALLOC_NOTHROW +# define JEMALLOC_SECTION(s) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#endif + +/* + * The je_ prefix on the following public symbol declarations is an artifact + * of namespace management, and should be omitted in application code unless + * JEMALLOC_NO_DEMANGLE is defined (see jemalloc_mangle.h). + */ +extern JEMALLOC_EXPORT const char *je_malloc_conf; +extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque, + const char *s); + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_malloc(size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_calloc(size_t num, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_posix_memalign(void **memptr, + size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1)); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_aligned_alloc(size_t alignment, + size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) + JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_realloc(void *ptr, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr) + JEMALLOC_CXX_THROW; + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_mallocx(size_t size, int flags) + JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_rallocx(void *ptr, size_t size, + int flags) JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_xallocx(void *ptr, size_t size, + size_t extra, int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_sallocx(const void *ptr, + int flags) JEMALLOC_ATTR(pure); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_dallocx(void *ptr, int flags); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size, + int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_nallocx(size_t size, int flags) + JEMALLOC_ATTR(pure); + +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctl(const char *name, + void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlnametomib(const char *name, + size_t *mibp, size_t *miblenp); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_malloc_stats_print( + void (*write_cb)(void *, const char *), void *je_cbopaque, + const char *opts); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size( + JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW; + +#ifdef JEMALLOC_OVERRIDE_MEMALIGN +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_memalign(size_t alignment, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc); +#endif + +#ifdef JEMALLOC_OVERRIDE_VALLOC +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_valloc(size_t size) JEMALLOC_CXX_THROW + JEMALLOC_ATTR(malloc); +#endif + +/* + * void * + * chunk_alloc(void *new_addr, size_t size, size_t alignment, bool *zero, + * bool *commit, unsigned arena_ind); + */ +typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); + +/* + * bool + * chunk_dalloc(void *chunk, size_t size, bool committed, unsigned arena_ind); + */ +typedef bool (chunk_dalloc_t)(void *, size_t, bool, unsigned); + +/* + * bool + * chunk_commit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_commit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_decommit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_decommit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_purge(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_purge_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_split(void *chunk, size_t size, size_t size_a, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_split_t)(void *, size_t, size_t, size_t, bool, unsigned); + +/* + * bool + * chunk_merge(void *chunk_a, size_t size_a, void *chunk_b, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_merge_t)(void *, size_t, void *, size_t, bool, unsigned); + +typedef struct { + chunk_alloc_t *alloc; + chunk_dalloc_t *dalloc; + chunk_commit_t *commit; + chunk_decommit_t *decommit; + chunk_purge_t *purge; + chunk_split_t *split; + chunk_merge_t *merge; +} chunk_hooks_t; + +/* + * By default application code must explicitly refer to mangled symbol names, + * so that it is possible to use jemalloc in conjunction with another allocator + * in the same application. Define JEMALLOC_MANGLE in order to cause automatic + * name mangling that matches the API prefixing that happened as a result of + * --with-mangling and/or --with-jemalloc-prefix configuration settings. + */ +#ifdef JEMALLOC_MANGLE +# ifndef JEMALLOC_NO_DEMANGLE +# define JEMALLOC_NO_DEMANGLE +# endif +# define malloc_conf je_malloc_conf +# define malloc_message je_malloc_message +# define malloc je_malloc +# define calloc je_calloc +# define posix_memalign je_posix_memalign +# define aligned_alloc je_aligned_alloc +# define realloc je_realloc +# define free je_free +# define mallocx je_mallocx +# define rallocx je_rallocx +# define xallocx je_xallocx +# define sallocx je_sallocx +# define dallocx je_dallocx +# define sdallocx je_sdallocx +# define nallocx je_nallocx +# define mallctl je_mallctl +# define mallctlnametomib je_mallctlnametomib +# define mallctlbymib je_mallctlbymib +# define malloc_stats_print je_malloc_stats_print +# define malloc_usable_size je_malloc_usable_size +#endif + +/* + * The je_* macros can be used as stable alternative names for the + * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily + * meant for use in jemalloc itself, but it can be used by application code to + * provide isolation from the name mangling specified via --with-mangling + * and/or --with-jemalloc-prefix. + */ +#ifndef JEMALLOC_NO_DEMANGLE +# undef je_malloc_conf +# undef je_malloc_message +# undef je_malloc +# undef je_calloc +# undef je_posix_memalign +# undef je_aligned_alloc +# undef je_realloc +# undef je_free +# undef je_mallocx +# undef je_rallocx +# undef je_xallocx +# undef je_sallocx +# undef je_dallocx +# undef je_sdallocx +# undef je_nallocx +# undef je_mallctl +# undef je_mallctlnametomib +# undef je_mallctlbymib +# undef je_malloc_stats_print +# undef je_malloc_usable_size +#endif + +#ifdef __cplusplus +} +#endif +#endif /* JEMALLOC_H_ */ diff --git a/lib/windows32/include/ogg/config_types.h b/lib/windows32/include/ogg/config_types.h new file mode 100644 index 0000000..1e7d490 --- /dev/null +++ b/lib/windows32/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 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/lib/windows32/include/ogg/ogg.h b/lib/windows32/include/ogg/ogg.h new file mode 100644 index 0000000..cea4ebe --- /dev/null +++ b/lib/windows32/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/lib/windows32/include/ogg/os_types.h b/lib/windows32/include/ogg/os_types.h new file mode 100644 index 0000000..d6691b7 --- /dev/null +++ b/lib/windows32/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 17712 2010-12-03 17:10:02Z xiphmont $ + + ********************************************************************/ +#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/lib/windows32/include/png.h b/lib/windows32/include/png.h new file mode 100644 index 0000000..f2013cf --- /dev/null +++ b/lib/windows32/include/png.h @@ -0,0 +1,3265 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.6.18, July 23, 2015 + * + * Copyright (c) 1998-2015 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.6.18, July 23, 2015: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 12.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 12.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-7 13 10210 12.so.0.10[.0] + * 1.2.10rc1-2 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.4.0beta1-5 14 10400 14.so.0.0[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.4.0beta7-8 14 10400 14.so.0.0[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.4.0beta9-14 14 10400 14.so.0.0[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.4.0beta15-36 14 10400 14.so.0.0[.0] + * 1.4.0beta37-87 14 10400 14.so.14.0[.0] + * 1.4.0rc01 14 10400 14.so.14.0[.0] + * 1.4.0beta88-109 14 10400 14.so.14.0[.0] + * 1.4.0rc02-08 14 10400 14.so.14.0[.0] + * 1.4.0 14 10400 14.so.14.0[.0] + * 1.4.1beta01-03 14 10401 14.so.14.1[.0] + * 1.4.1rc01 14 10401 14.so.14.1[.0] + * 1.4.1beta04-12 14 10401 14.so.14.1[.0] + * 1.4.1 14 10401 14.so.14.1[.0] + * 1.4.2 14 10402 14.so.14.2[.0] + * 1.4.3 14 10403 14.so.14.3[.0] + * 1.4.4 14 10404 14.so.14.4[.0] + * 1.5.0beta01-58 15 10500 15.so.15.0[.0] + * 1.5.0rc01-07 15 10500 15.so.15.0[.0] + * 1.5.0 15 10500 15.so.15.0[.0] + * 1.5.1beta01-11 15 10501 15.so.15.1[.0] + * 1.5.1rc01-02 15 10501 15.so.15.1[.0] + * 1.5.1 15 10501 15.so.15.1[.0] + * 1.5.2beta01-03 15 10502 15.so.15.2[.0] + * 1.5.2rc01-03 15 10502 15.so.15.2[.0] + * 1.5.2 15 10502 15.so.15.2[.0] + * 1.5.3beta01-10 15 10503 15.so.15.3[.0] + * 1.5.3rc01-02 15 10503 15.so.15.3[.0] + * 1.5.3beta11 15 10503 15.so.15.3[.0] + * 1.5.3 [omitted] + * 1.5.4beta01-08 15 10504 15.so.15.4[.0] + * 1.5.4rc01 15 10504 15.so.15.4[.0] + * 1.5.4 15 10504 15.so.15.4[.0] + * 1.5.5beta01-08 15 10505 15.so.15.5[.0] + * 1.5.5rc01 15 10505 15.so.15.5[.0] + * 1.5.5 15 10505 15.so.15.5[.0] + * 1.5.6beta01-07 15 10506 15.so.15.6[.0] + * 1.5.6rc01-03 15 10506 15.so.15.6[.0] + * 1.5.6 15 10506 15.so.15.6[.0] + * 1.5.7beta01-05 15 10507 15.so.15.7[.0] + * 1.5.7rc01-03 15 10507 15.so.15.7[.0] + * 1.5.7 15 10507 15.so.15.7[.0] + * 1.6.0beta01-40 16 10600 16.so.16.0[.0] + * 1.6.0rc01-08 16 10600 16.so.16.0[.0] + * 1.6.0 16 10600 16.so.16.0[.0] + * 1.6.1beta01-09 16 10601 16.so.16.1[.0] + * 1.6.1rc01 16 10601 16.so.16.1[.0] + * 1.6.1 16 10601 16.so.16.1[.0] + * 1.6.2beta01 16 10602 16.so.16.2[.0] + * 1.6.2rc01-06 16 10602 16.so.16.2[.0] + * 1.6.2 16 10602 16.so.16.2[.0] + * 1.6.3beta01-11 16 10603 16.so.16.3[.0] + * 1.6.3rc01 16 10603 16.so.16.3[.0] + * 1.6.3 16 10603 16.so.16.3[.0] + * 1.6.4beta01-02 16 10604 16.so.16.4[.0] + * 1.6.4rc01 16 10604 16.so.16.4[.0] + * 1.6.4 16 10604 16.so.16.4[.0] + * 1.6.5 16 10605 16.so.16.5[.0] + * 1.6.6 16 10606 16.so.16.6[.0] + * 1.6.7beta01-04 16 10607 16.so.16.7[.0] + * 1.6.7rc01-03 16 10607 16.so.16.7[.0] + * 1.6.7 16 10607 16.so.16.7[.0] + * 1.6.8beta01-02 16 10608 16.so.16.8[.0] + * 1.6.8rc01-02 16 10608 16.so.16.8[.0] + * 1.6.8 16 10608 16.so.16.8[.0] + * 1.6.9beta01-04 16 10609 16.so.16.9[.0] + * 1.6.9rc01-02 16 10609 16.so.16.9[.0] + * 1.6.9 16 10609 16.so.16.9[.0] + * 1.6.10beta01-03 16 10610 16.so.16.10[.0] + * 1.6.10rc01-03 16 10610 16.so.16.10[.0] + * 1.6.10 16 10610 16.so.16.10[.0] + * 1.6.11beta01-06 16 10611 16.so.16.11[.0] + * 1.6.11rc01-02 16 10611 16.so.16.11[.0] + * 1.6.11 16 10611 16.so.16.11[.0] + * 1.6.12rc01-03 16 10612 16.so.16.12[.0] + * 1.6.12 16 10612 16.so.16.12[.0] + * 1.6.13beta01-04 16 10613 16.so.16.13[.0] + * 1.6.13rc01-02 16 10613 16.so.16.13[.0] + * 1.6.13 16 10613 16.so.16.13[.0] + * 1.6.14beta01-07 16 10614 16.so.16.14[.0] + * 1.6.14rc01-02 16 10614 16.so.16.14[.0] + * 1.6.14 16 10614 16.so.16.14[.0] + * 1.6.15beta01-08 16 10615 16.so.16.15[.0] + * 1.6.15rc01-03 16 10615 16.so.16.15[.0] + * 1.6.15 16 10615 16.so.16.15[.0] + * 1.6.16beta01-03 16 10616 16.so.16.16[.0] + * 1.6.16rc01-02 16 10616 16.so.16.16[.0] + * 1.6.16 16 10616 16.so.16.16[.0] + * 1.6.17beta01-06 16 10617 16.so.16.17[.0] + * 1.6.17rc01-06 16 10617 16.so.16.17[.0] + * 1.6.17 16 10617 16.so.16.17[.0] + * 1.6.18beta01-09 16 10618 16.so.16.18[.0] + * 1.6.18rc01-03 16 10618 16.so.16.18[.0] + * 1.6.18 16 10618 16.so.16.18[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcNN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng-manual.txt or libpng.3 for more information. The PNG + * specification is available as a W3C Recommendation and as an ISO + * Specification, <http://www.w3.org/TR/2003/REC-PNG-20031110/ + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + * + * If you modify libpng you may insert additional notices immediately following + * this sentence. + * + * This code is released under the libpng license. + * + * libpng versions 1.0.7, July 1, 2000, through 1.6.18, July 23, 2015, are + * Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.0.6 + * with the following individuals added to the list of Contributing Authors: + * + * Simon-Pierre Cadieux + * Mans Rullgard + * Cosmin Truta + * Gilles Vollant + * James Yu + * + * and with the following additions to the disclaimer: + * + * There is no warranty against interference with your enjoyment of the + * library or against infringement. There is no warranty that our + * efforts or the library will fulfill any of your particular purposes + * or needs. This library is provided with all faults, and the entire + * risk of satisfactory quality, performance, accuracy, and effort is with + * the user. + * + * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + * Copyright (c) 1998-2000 Glenn Randers-Pehrson, and are distributed according + * to the same disclaimer and license as libpng-0.96, with the following + * individuals added to the list of Contributing Authors: + * + * Tom Lane + * Glenn Randers-Pehrson + * Eric S. Raymond + * Willem van Schaik + * + * libpng versions 0.89, June 1996, through 0.96, May 1997, are + * Copyright (c) 1996-1997 Andreas Dilger, and are + * distributed according to the same disclaimer and license as libpng-0.88, + * with the following individuals added to the list of Contributing Authors: + * + * John Bowler + * Kevin Bracey + * Sam Bushell + * Magnus Holmgren + * Greg Roelofs + * Tom Tanner + * + * libpng versions 0.5, May 1995, through 0.88, January 1996, are + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + * + * For the purposes of this copyright and license, "Contributing Authors" + * is defined as the following set of individuals: + * + * Andreas Dilger + * Dave Martindale + * Guy Eric Schalnat + * Paul Schmidt + * Tim Wegner + * + * The PNG Reference Library is supplied "AS IS". The Contributing Authors + * and Group 42, Inc. disclaim all warranties, expressed or implied, + * including, without limitation, the warranties of merchantability and of + * fitness for any purpose. The Contributing Authors and Group 42, Inc. + * assume no liability for direct, indirect, incidental, special, exemplary, + * or consequential damages, which may result from the use of the PNG + * Reference Library, even if advised of the possibility of such damage. + * + * Permission is hereby granted to use, copy, modify, and distribute this + * source code, or portions hereof, for any purpose, without fee, subject + * to the following restrictions: + * + * 1. The origin of this source code must not be misrepresented. + * + * 2. Altered versions must be plainly marked as such and must not + * be misrepresented as being the original source. + * + * 3. This Copyright notice may not be removed or altered from any + * source or altered source distribution. + * + * The Contributing Authors and Group 42, Inc. specifically permit, without + * fee, and encourage the use of this source code as a component to + * supporting the PNG file format in commercial products. If you use this + * source code in a product, acknowledgment is not required but would be + * appreciated. + */ + +/* + * A "png_get_copyright" function is available, for convenient use in "about" + * boxes and the like: + * + * printf("%s", png_get_copyright(NULL)); + * + * Also, the PNG logo (in PNG format, of course) is supplied in the + * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + */ + +/* + * Libpng is OSI Certified Open Source Software. OSI Certified Open Source is + * a certification mark of the Open Source Initiative. OSI has not addressed + * the additional disclaimers inserted at version 1.0.7. + */ + +/* + * The contributing authors would like to thank all those who helped + * with testing, bug fixes, and patience. This wouldn't have been + * possible without all of you. + * + * Thanks to Frank J. T. Wojcik for helping with the documentation. + */ + +/* + * Y2K compliance in libpng: + * ========================= + * + * July 23, 2015 + * + * Since the PNG Development group is an ad-hoc body, we can't make + * an official declaration. + * + * This is your unofficial assurance that libpng from version 0.71 and + * upward through 1.6.18 are Y2K compliant. It is my belief that + * earlier versions were also Y2K compliant. + * + * Libpng only has two year fields. One is a 2-byte unsigned integer + * that will hold years up to 65535. The other, which is deprecated, + * holds the date in text format, and will hold years up to 9999. + * + * The integer is + * "png_uint_16 year" in png_time_struct. + * + * The string is + * "char time_buffer[29]" in png_struct. This is no longer used + * in libpng-1.6.x and will be removed from libpng-1.7.0. + * + * There are seven time-related functions: + * png.c: png_convert_to_rfc_1123_buffer() in png.c + * (formerly png_convert_to_rfc_1123() prior to libpng-1.5.x and + * png_convert_to_rfc_1152() in error prior to libpng-0.98) + * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c + * png_convert_from_time_t() in pngwrite.c + * png_get_tIME() in pngget.c + * png_handle_tIME() in pngrutil.c, called in pngread.c + * png_set_tIME() in pngset.c + * png_write_tIME() in pngwutil.c, called in pngwrite.c + * + * All handle dates properly in a Y2K environment. The + * png_convert_from_time_t() function calls gmtime() to convert from system + * clock time, which returns (year - 1900), which we properly convert to + * the full 4-digit year. There is a possibility that libpng applications + * are not passing 4-digit years into the png_convert_to_rfc_1123_buffer() + * function, or that they are incorrectly passing only a 2-digit year + * instead of "year - 1900" into the png_convert_from_struct_tm() function, + * but this is not under our control. The libpng documentation has always + * stated that it works with 4-digit years, and the APIs have been + * documented as such. + * + * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned + * integer to hold the year, and can hold years as large as 65535. + * + * zlib, upon which libpng depends, is also Y2K compliant. It contains + * no date-related code. + * + * Glenn Randers-Pehrson + * libpng maintainer + * PNG Development Group + */ + +#ifndef PNG_H +#define PNG_H + +/* This is not the place to learn how to use libpng. The file libpng-manual.txt + * describes how to use libpng, and the file example.c summarizes it + * with some code on which to build. This file is useful for looking + * at the actual function definitions and structure components. If that + * file has been stripped from your copy of libpng, you can find it at + * <http://www.libpng.org/pub/png/libpng-manual.txt> + * + * If you just need to read a PNG file and don't want to read the documentation + * skip to the end of this file and read the section entitled 'simplified API'. + */ + +/* Version information for png.h - this should match the version in png.c */ +#define PNG_LIBPNG_VER_STRING "1.6.18" +#define PNG_HEADER_VERSION_STRING \ + " libpng version 1.6.18 - July 23, 2015\n" + +#define PNG_LIBPNG_VER_SONUM 16 +#define PNG_LIBPNG_VER_DLLNUM 16 + +/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ +#define PNG_LIBPNG_VER_MAJOR 1 +#define PNG_LIBPNG_VER_MINOR 6 +#define PNG_LIBPNG_VER_RELEASE 18 + +/* This should match the numeric part of the final component of + * PNG_LIBPNG_VER_STRING, omitting any leading zero: + */ + +#define PNG_LIBPNG_VER_BUILD 0 + +/* Release Status */ +#define PNG_LIBPNG_BUILD_ALPHA 1 +#define PNG_LIBPNG_BUILD_BETA 2 +#define PNG_LIBPNG_BUILD_RC 3 +#define PNG_LIBPNG_BUILD_STABLE 4 +#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 + +/* Release-Specific Flags */ +#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with + PNG_LIBPNG_BUILD_STABLE only */ +#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_SPECIAL */ +#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_PRIVATE */ + +#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE + +/* Careful here. At one time, Guy wanted to use 082, but that would be octal. + * We must not include leading zeros. + * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only + * version 1.0.0 was mis-numbered 100 instead of 10000). From + * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release + */ +#define PNG_LIBPNG_VER 10618 /* 1.6.18 */ + +/* Library configuration: these options cannot be changed after + * the library has been built. + */ +#ifndef PNGLCONF_H + /* If pnglibconf.h is missing, you can + * copy scripts/pnglibconf.h.prebuilt to pnglibconf.h + */ +# include "pnglibconf.h" +#endif + +#ifndef PNG_VERSION_INFO_ONLY + /* Machine specific configuration. */ +# include "pngconf.h" +#endif + +/* + * Added at libpng-1.2.8 + * + * Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#define png_libpng_ver png_get_header_ver(NULL) + +/* This file is arranged in several sections: + * + * 1. Any configuration options that can be specified by for the application + * code when it is built. (Build time configuration is in pnglibconf.h) + * 2. Type definitions (base types are defined in pngconf.h), structure + * definitions. + * 3. Exported library functions. + * 4. Simplified API. + * + * The library source code has additional files (principally pngpriv.h) that + * allow configuration of the library. + */ +/* Section 1: run time configuration + * See pnglibconf.h for build time configuration + * + * Run time configuration allows the application to choose between + * implementations of certain arithmetic APIs. The default is set + * at build time and recorded in pnglibconf.h, but it is safe to + * override these (and only these) settings. Note that this won't + * change what the library does, only application code, and the + * settings can (and probably should) be made on a per-file basis + * by setting the #defines before including png.h + * + * Use macros to read integers from PNG data or use the exported + * functions? + * PNG_USE_READ_MACROS: use the macros (see below) Note that + * the macros evaluate their argument multiple times. + * PNG_NO_USE_READ_MACROS: call the relevant library function. + * + * Use the alternative algorithm for compositing alpha samples that + * does not use division? + * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' + * algorithm. + * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. + * + * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is + * false? + * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error + * APIs to png_warning. + * Otherwise the calls are mapped to png_error. + */ + +/* Section 2: type definitions, including structures and compile time + * constants. + * See pngconf.h for base types that vary by machine/system + */ + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef char* png_libpng_version_1_6_18; + +/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. + * + * png_struct is the cache of information used while reading or writing a single + * PNG file. One of these is always required, although the simplified API + * (below) hides the creation and destruction of it. + */ +typedef struct png_struct_def png_struct; +typedef const png_struct * png_const_structp; +typedef png_struct * png_structp; +typedef png_struct * * png_structpp; + +/* png_info contains information read from or to be written to a PNG file. One + * or more of these must exist while reading or creating a PNG file. The + * information is not used by libpng during read but is used to control what + * gets written when a PNG file is created. "png_get_" function calls read + * information during read and "png_set_" functions calls write information + * when creating a PNG. + * been moved into a separate header file that is not accessible to + * applications. Read libpng-manual.txt or libpng.3 for more info. + */ +typedef struct png_info_def png_info; +typedef png_info * png_infop; +typedef const png_info * png_const_infop; +typedef png_info * * png_infopp; + +/* Types with names ending 'p' are pointer types. The corresponding types with + * names ending 'rp' are identical pointer types except that the pointer is + * marked 'restrict', which means that it is the only pointer to the object + * passed to the function. Applications should not use the 'restrict' types; + * it is always valid to pass 'p' to a pointer with a function argument of the + * corresponding 'rp' type. Different compilers have different rules with + * regard to type matching in the presence of 'restrict'. For backward + * compatibility libpng callbacks never have 'restrict' in their parameters and, + * consequentially, writing portable application code is extremely difficult if + * an attempt is made to use 'restrict'. + */ +typedef png_struct * PNG_RESTRICT png_structrp; +typedef const png_struct * PNG_RESTRICT png_const_structrp; +typedef png_info * PNG_RESTRICT png_inforp; +typedef const png_info * PNG_RESTRICT png_const_inforp; + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color * png_colorp; +typedef const png_color * png_const_colorp; +typedef png_color * * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 * png_color_16p; +typedef const png_color_16 * png_const_color_16p; +typedef png_color_16 * * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 * png_color_8p; +typedef const png_color_8 * png_const_color_8p; +typedef png_color_8 * * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry * png_sPLT_entryp; +typedef const png_sPLT_entry * png_const_sPLT_entryp; +typedef png_sPLT_entry * * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t * png_sPLT_tp; +typedef const png_sPLT_t * png_const_sPLT_tp; +typedef png_sPLT_t * * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text" fields can be a + * regular C string, an empty string, or a NULL pointer. + * However, the structure returned by png_get_text() will always contain + * the "text" field as a regular zero-terminated C string (possibly + * empty), never a NULL pointer, so it can be safely used in printf() and + * other string-handling functions. Note that the "itxt_length", "lang", and + * "lang_key" members of the structure only exist when the library is built + * with iTXt chunk support. Prior to libpng-1.4.0 the library was built by + * default without iTXt support. Also note that when iTXt *is* supported, + * the "lang" and "lang_key" fields contain NULL pointers when the + * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or + * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the + * same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag" + * which is always 0 or 1, or its "compression method" which is always 0. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +} png_text; +typedef png_text * png_textp; +typedef const png_text * png_const_textp; +typedef png_text * * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time * png_timep; +typedef const png_time * png_const_timep; +typedef png_time * * png_timepp; + +#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) ||\ + defined(PNG_USER_CHUNKS_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + * + * The data in the structure is set by libpng on read and used on write. + */ +typedef struct png_unknown_chunk_t +{ + png_byte name[5]; /* Textual chunk name with '\0' terminator */ + png_byte *data; /* Data, should not be modified on read! */ + png_size_t size; + + /* On write 'location' must be set using the flag values listed below. + * Notice that on read it is set by libpng however the values stored have + * more bits set than are listed below. Always treat the value as a + * bitmask. On write set only one bit - setting multiple bits may cause the + * chunk to be written in multiple places. + */ + png_byte location; /* mode of operation at read time */ +} +png_unknown_chunk; + +typedef png_unknown_chunk * png_unknown_chunkp; +typedef const png_unknown_chunk * png_const_unknown_chunkp; +typedef png_unknown_chunk * * png_unknown_chunkpp; +#endif + +/* Flag values for the unknown chunk location byte. */ +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_AFTER_IDAT 0x08 + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) + +/* These are constants for fixed point values encoded in the + * PNG specification manner (x100000) + */ +#define PNG_FP_1 100000 +#define PNG_FP_HALF 50000 +#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL) +#define PNG_FP_MIN (-PNG_FP_MAX) + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_<chunk> defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000 /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info * png_row_infop; +typedef png_row_info * * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. Note that the 'write' function must not + * modify the buffer it is passed. The 'read' function, on the other hand, is + * expected to return the read data in the buffer. + */ +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); + +/* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +/* not used anywhere */ +/* typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); */ +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This must match the function definition in <setjmp.h>, and the application + * must include this before png.h to obtain the definition of jmp_buf. The + * function is required to be PNG_NORETURN, but this is not checked. If the + * function does return the application will crash via an abort() or similar + * system level call. + * + * If you get a warning here while building the library you may need to make + * changes to ensure that pnglibconf.h records the calling convention used by + * your compiler. This may be very difficult - try using a different compiler + * to build the library! + */ +PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.4.0 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ +/* Added to libpng-1.5.4 */ +#define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ +#define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +/* NOTE: prior to 1.5 these functions had no 'API' style declaration, + * this allowed the zlib default functions to be used on Windows + * platforms. In 1.5 the zlib default malloc (which just calls malloc and + * ignores the first argument) should be completely compatible with the + * following. + */ +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); + +/* Section 3: exported functions + * Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng-manual.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + * + * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in + * pngconf.h and in the *.dfn files in the scripts directory. + * + * PNG_EXPORT(ordinal, type, name, (args)); + * + * ordinal: ordinal that is used while building + * *.def files. The ordinal value is only + * relevant when preprocessing png.h with + * the *.dfn files for building symbol table + * entries, and are removed by pngconf.h. + * type: return type of the function + * name: function name + * args: function arguments, with types + * + * When we wish to append attributes to a function prototype we use + * the PNG_EXPORTA() macro instead. + * + * PNG_EXPORTA(ordinal, type, name, (args), attributes); + * + * ordinal, type, name, and args: same as in PNG_EXPORT(). + * attributes: function attributes + */ + +/* Returns the version number of the library */ +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); + +/* Tell lib we have already handled the first <num_bytes> magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +PNG_EXPORTA(4, png_structp, png_create_read_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +PNG_EXPORTA(5, png_structp, png_create_write_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); + +PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, + (png_const_structrp png_ptr)); + +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr, + png_size_t size)); + +/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp + * match up. + */ +#ifdef PNG_SETJMP_SUPPORTED +/* This function returns the jmp_buf built in to *png_ptr. It must be + * supplied with an appropriate 'longjmp' function to use on that jmp_buf + * unless the default error function is overridden in which case NULL is + * acceptable. The size of the jmp_buf is checked against the actual size + * allocated by the library - the call will return NULL on a mismatch + * indicating an ABI mismatch. + */ +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); +# define png_jmpbuf(png_ptr) \ + (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) +#endif +/* This function should be used by libpng applications in place of + * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it + * will use it; otherwise it will call PNG_ABORT(). This function was + * added in libpng-1.5.0. + */ +PNG_EXPORTA(9, void, png_longjmp, (png_const_structrp png_ptr, int val), + PNG_NORETURN); + +#ifdef PNG_READ_SUPPORTED +/* Reset the compression stream */ +PNG_EXPORTA(10, int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED); +#endif + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(11, png_structp, png_create_read_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +PNG_EXPORTA(12, png_structp, png_create_write_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +#endif + +/* Write the PNG file signature. */ +PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr)); + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr, + png_const_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr, + png_const_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr)); + +/* Allocate and initialize the info structure */ +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr), + PNG_ALLOCATED); + +/* DEPRECATED: this function allowed init structures to be created using the + * default allocation method (typically malloc). Use is deprecated in 1.6.0 and + * the API will be removed in the future. + */ +PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr, + png_size_t png_info_struct_size), PNG_DEPRECATED); + +/* Writes all the PNG information before the image. */ +PNG_EXPORT(20, void, png_write_info_before_PLTE, + (png_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(21, void, png_write_info, + (png_structrp png_ptr, png_const_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +PNG_EXPORT(22, void, png_read_info, + (png_structrp png_ptr, png_inforp info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED + /* Convert to a US string format: there is no localization support in this + * routine. The original implementation used a 29 character buffer in + * png_struct, this will be removed in future versions. + */ +#if PNG_LIBPNG_VER < 10700 +/* To do: remove this from libpng17 (and from libpng17/png.c and pngstruct.h) */ +PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr, + png_const_timep ptime),PNG_DEPRECATED); +#endif +PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, (char out[29], + png_const_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + const struct tm * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +PNG_EXPORT(25, void, png_convert_from_time_t, (png_timep ptime, time_t ttime)); +#endif /* CONVERT_tIME */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +PNG_EXPORT(26, void, png_set_expand, (png_structrp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structrp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +/* Expand to 16-bit channels, forces conversion of palette to RGB and expansion + * of a tRNS chunk if present. + */ +PNG_EXPORT(221, void, png_set_expand_16, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +PNG_EXPORT(30, void, png_set_bgr, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +#define PNG_ERROR_ACTION_NONE 1 +#define PNG_ERROR_ACTION_WARN 2 +#define PNG_ERROR_ACTION_ERROR 3 +#define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ + +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structrp png_ptr, + int error_action, double red, double green)) +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green)) + +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp + png_ptr)); +#endif + +#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); +#endif + +#ifdef PNG_READ_ALPHA_MODE_SUPPORTED +/* How the alpha channel is interpreted - this affects how the color channels + * of a PNG file are returned to the calling application when an alpha channel, + * or a tRNS chunk in a palette file, is present. + * + * This has no effect on the way pixels are written into a PNG output + * datastream. The color samples in a PNG datastream are never premultiplied + * with the alpha samples. + * + * The default is to return data according to the PNG specification: the alpha + * channel is a linear measure of the contribution of the pixel to the + * corresponding composited pixel, and the color channels are unassociated + * (not premultiplied). The gamma encoded color channels must be scaled + * according to the contribution and to do this it is necessary to undo + * the encoding, scale the color values, perform the composition and reencode + * the values. This is the 'PNG' mode. + * + * The alternative is to 'associate' the alpha with the color information by + * storing color channel values that have been scaled by the alpha. + * image. These are the 'STANDARD', 'ASSOCIATED' or 'PREMULTIPLIED' modes + * (the latter being the two common names for associated alpha color channels). + * + * For the 'OPTIMIZED' mode, a pixel is treated as opaque only if the alpha + * value is equal to the maximum value. + * + * The final choice is to gamma encode the alpha channel as well. This is + * broken because, in practice, no implementation that uses this choice + * correctly undoes the encoding before handling alpha composition. Use this + * choice only if other serious errors in the software or hardware you use + * mandate it; the typical serious error is for dark halos to appear around + * opaque areas of the composited PNG image because of arithmetic overflow. + * + * The API function png_set_alpha_mode specifies which of these choices to use + * with an enumerated 'mode' value and the gamma of the required output: + */ +#define PNG_ALPHA_PNG 0 /* according to the PNG standard */ +#define PNG_ALPHA_STANDARD 1 /* according to Porter/Duff */ +#define PNG_ALPHA_ASSOCIATED 1 /* as above; this is the normal practice */ +#define PNG_ALPHA_PREMULTIPLIED 1 /* as above */ +#define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ +#define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ + +PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structrp png_ptr, int mode, + double output_gamma)) +PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr, + int mode, png_fixed_point output_gamma)) +#endif + +#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) +/* The output_gamma value is a screen gamma in libpng terminology: it expresses + * how to decode the output values, not how they are encoded. + */ +#define PNG_DEFAULT_sRGB -1 /* sRGB gamma and color space */ +#define PNG_GAMMA_MAC_18 -2 /* Old Mac '1.8' gamma and color space */ +#define PNG_GAMMA_sRGB 220000 /* Television standards--matches sRGB gamma */ +#define PNG_GAMMA_LINEAR PNG_FP_1 /* Linear */ +#endif + +/* The following are examples of calls to png_set_alpha_mode to achieve the + * required overall gamma correction and, where necessary, alpha + * premultiplication. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * This is the default libpng handling of the alpha channel - it is not + * pre-multiplied into the color components. In addition the call states + * that the output is for a sRGB system and causes all PNG files without gAMA + * chunks to be assumed to be encoded using sRGB. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * In this case the output is assumed to be something like an sRGB conformant + * display preceeded by a power-law lookup table of power 1.45. This is how + * early Mac systems behaved. + * + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR); + * This is the classic Jim Blinn approach and will work in academic + * environments where everything is done by the book. It has the shortcoming + * of assuming that input PNG data with no gamma information is linear - this + * is unlikely to be correct unless the PNG files where generated locally. + * Most of the time the output precision will be so low as to show + * significant banding in dark areas of the image. + * + * png_set_expand_16(pp); + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_DEFAULT_sRGB); + * This is a somewhat more realistic Jim Blinn inspired approach. PNG files + * are assumed to have the sRGB encoding if not marked with a gamma value and + * the output is always 16 bits per component. This permits accurate scaling + * and processing of the data. If you know that your input PNG files were + * generated locally you might need to replace PNG_DEFAULT_sRGB with the + * correct value for your system. + * + * png_set_alpha_mode(pp, PNG_ALPHA_OPTIMIZED, PNG_DEFAULT_sRGB); + * If you just need to composite the PNG image onto an existing background + * and if you control the code that does this you can use the optimization + * setting. In this case you just copy completely opaque pixels to the + * output. For pixels that are not completely transparent (you just skip + * those) you do the composition math using png_composite or png_composite_16 + * below then encode the resultant 8-bit or 16-bit values to match the output + * encoding. + * + * Other cases + * If neither the PNG nor the standard linear encoding work for you because + * of the software or hardware you use then you have a big problem. The PNG + * case will probably result in halos around the image. The linear encoding + * will probably result in a washed out, too bright, image (it's actually too + * contrasty.) Try the ALPHA_OPTIMIZED mode above - this will probably + * substantially reduce the halos. Alternatively try: + * + * png_set_alpha_mode(pp, PNG_ALPHA_BROKEN, PNG_DEFAULT_sRGB); + * This option will also reduce the halos, but there will be slight dark + * halos round the opaque parts of the image where the background is light. + * In the OPTIMIZED mode the halos will be light halos where the background + * is dark. Take your pick - the halos are unavoidable unless you can get + * your hardware/software fixed! (The OPTIMIZED approach is slightly + * faster.) + * + * When the default gamma of PNG files doesn't match the output gamma. + * If you have PNG files with no gamma information png_set_alpha_mode allows + * you to provide a default gamma, but it also sets the ouput gamma to the + * matching value. If you know your PNG files have a gamma that doesn't + * match the output you can take advantage of the fact that + * png_set_alpha_mode always sets the output gamma but only sets the PNG + * default if it is not already set: + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * The first call sets both the default and the output gamma values, the + * second call overrides the output gamma without changing the default. This + * is easier than achieving the same effect with png_set_gamma. You must use + * PNG_ALPHA_PNG for the first call - internal checking in png_set_alpha will + * fire if more than one call to png_set_alpha_mode and png_set_background is + * made in the same read operation, however multiple calls with PNG_ALPHA_PNG + * are ignored. + */ + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(39, void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler, + int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +# define PNG_FILLER_BEFORE 0 +# define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, + png_uint_32 filler, int flags)); +#endif /* READ_FILLER || WRITE_FILLER */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +PNG_EXPORT(41, void, png_set_swap, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +PNG_EXPORT(42, void, png_set_packing, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ + defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +PNG_EXPORT(43, void, png_set_packswap, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +PNG_EXPORT(44, void, png_set_shift, (png_structrp png_ptr, png_const_color_8p + true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. + * MUST be called before png_read_update_info or png_start_read_image, + * otherwise it will not have the desired effect. Note that it is still + * necessary to call png_read_row or png_read_rows png_get_image_height + * times for each pass. +*/ +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +PNG_EXPORT(46, void, png_set_invert_mono, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. Prior to + * libpng-1.5.4 this API must not be called before the PNG file header has been + * read. Doing so will result in unexpected behavior and possible warnings or + * errors if the PNG file contains a bKGD chunk. + */ +PNG_FP_EXPORT(47, void, png_set_background, (png_structrp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)) +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structrp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, png_fixed_point background_gamma)) +#endif +#ifdef PNG_READ_BACKGROUND_SUPPORTED +# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +# define PNG_BACKGROUND_GAMMA_SCREEN 1 +# define PNG_BACKGROUND_GAMMA_FILE 2 +# define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED +/* Scale a 16-bit depth file down to 8-bit, accurately. */ +PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_16_TO_8 SUPPORTED /* Name prior to 1.5.4 */ +/* Strip the second byte of information from a 16-bit depth file. */ +PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* Turn on quantizing, and reduce the palette to the number of colors + * available. + */ +PNG_EXPORT(49, void, png_set_quantize, (png_structrp png_ptr, + png_colorp palette, int num_palette, int maximum_colors, + png_const_uint_16p histogram, int full_quantize)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* The threshold on gamma processing is configurable but hard-wired into the + * library. The following is the floating point variant. + */ +#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) + +/* Handle gamma correction. Screen_gamma=(display_exponent). + * NOTE: this API simply sets the screen and file gamma values. It will + * therefore override the value for gamma in a PNG file if it is called after + * the file header has been read - use with care - call before reading the PNG + * file for best results! + * + * These routines accept the same gamma values as png_set_alpha_mode (described + * above). The PNG_GAMMA_ defines and PNG_DEFAULT_sRGB can be passed to either + * API (floating point or fixed.) Notice, however, that the 'file_gamma' value + * is the inverse of a 'screen gamma' value. + */ +PNG_FP_EXPORT(50, void, png_set_gamma, (png_structrp png_ptr, + double screen_gamma, double override_file_gamma)) +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structrp png_ptr, + png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) +#endif + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +PNG_EXPORT(51, void, png_set_flush, (png_structrp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +PNG_EXPORT(52, void, png_write_flush, (png_structrp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +PNG_EXPORT(53, void, png_start_read_image, (png_structrp png_ptr)); + +/* Optional call to update the users info structure */ +PNG_EXPORT(54, void, png_read_update_info, (png_structrp png_ptr, + png_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +PNG_EXPORT(55, void, png_read_rows, (png_structrp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +PNG_EXPORT(56, void, png_read_row, (png_structrp png_ptr, png_bytep row, + png_bytep display_row)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +PNG_EXPORT(57, void, png_read_image, (png_structrp png_ptr, png_bytepp image)); +#endif + +/* Write a row of image data */ +PNG_EXPORT(58, void, png_write_row, (png_structrp png_ptr, + png_const_bytep row)); + +/* Write a few rows of image data: (*row) is not written; however, the type + * is declared as writeable to maintain compatibility with previous versions + * of libpng and to allow the 'display_row' array from read_rows to be passed + * unchanged to write_rows. + */ +PNG_EXPORT(59, void, png_write_rows, (png_structrp png_ptr, png_bytepp row, + png_uint_32 num_rows)); + +/* Write the image data */ +PNG_EXPORT(60, void, png_write_image, (png_structrp png_ptr, png_bytepp image)); + +/* Write the end of the PNG file. */ +PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr, + png_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +PNG_EXPORT(62, void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +PNG_EXPORT(63, void, png_destroy_info_struct, (png_const_structrp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, + int ancil_action)); + +/* Values for png_set_crc_action() say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +#ifdef PNG_WRITE_SUPPORTED +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, + int filters)); +#endif /* WRITE */ + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#ifdef PNG_WRITE_SUPPORTED +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, + png_const_doublep filter_costs)) +PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, + (png_structrp png_ptr, int heuristic_method, int num_weights, + png_const_fixed_point_p filter_weights, + png_const_fixed_point_p filter_costs)) +#endif /* WRITE_WEIGHTED_FILTER */ + +/* The following are no longer used and will be removed from libpng-1.7: */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED +PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, + int level)); + +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structrp png_ptr, + int mem_level)); + +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structrp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, + int window_bits)); + +PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, + int method)); +#endif /* WRITE_CUSTOMIZE_COMPRESSION */ + +#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +/* Also set zlib parameters for compressing non-IDAT chunks */ +PNG_EXPORT(222, void, png_set_text_compression_level, (png_structrp png_ptr, + int level)); + +PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structrp png_ptr, + int mem_level)); + +PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structrp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(225, void, png_set_text_compression_window_bits, + (png_structrp png_ptr, int window_bits)); + +PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, + int method)); +#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ +#endif /* WRITE */ + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng-manual.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +PNG_EXPORT(75, void, png_set_error_fn, (png_structrp png_ptr, + png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +PNG_EXPORT(77, void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +PNG_EXPORT(78, void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr)); + +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structrp png_ptr, + png_read_status_ptr read_row_fn)); + +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structrp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +PNG_EXPORT(82, void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr read_user_transform_fn)); +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr write_user_transform_fn)); +#endif + +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structrp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, + (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED +/* Return information about the row currently being processed. Note that these + * APIs do not fail but will return unexpected results if called outside a user + * transform callback. Also note that when transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); +#endif + +#ifdef PNG_READ_USER_CHUNKS_SUPPORTED +/* This callback is called only for *unknown* chunks. If + * PNG_HANDLE_AS_UNKNOWN_SUPPORTED is set then it is possible to set known + * chunks to be treated as unknown, however in this case the callback must do + * any processing required by the chunk (e.g. by calling the appropriate + * png_set_ APIs.) + * + * There is no write support - on write, by default, all the chunks in the + * 'unknown' list are written in the specified position. + * + * The integer return from the callback function is interpreted thus: + * + * negative: An error occurred; png_chunk_error will be called. + * zero: The chunk was not handled, the chunk will be saved. A critical + * chunk will cause an error at this point unless it is to be saved. + * positive: The chunk was handled, libpng will ignore/discard it. + * + * See "INTERACTION WTIH USER CHUNK CALLBACKS" below for important notes about + * how this behavior will change in libpng 1.7 + */ +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structrp png_ptr, + png_voidp progressive_ptr, png_progressive_info_ptr info_fn, + png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, + (png_const_structrp png_ptr)); + +/* Function to be called when data becomes available */ +PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr, + png_inforp info_ptr, png_bytep buffer, png_size_t buffer_size)); + +/* A function which may be called *only* within png_process_data to stop the + * processing of any more data. The function returns the number of bytes + * remaining, excluding any that libpng has cached internally. A subsequent + * call to png_process_data must supply these bytes again. If the argument + * 'save' is set to true the routine will first save all the pending data and + * will always return 0. + */ +PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structrp, int save)); + +/* A function which may be called *only* outside (after) a call to + * png_process_data. It returns the number of bytes of data to skip in the + * input. Normally it will return 0, but if it returns a non-zero value the + * application must skip than number of bytes of input data and pass the + * following data to the next call to png_process_data. + */ +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); + +/* Function that combines rows. 'new_row' is a flag that should come from + * the callback and be non-NULL if anything needs to be done; the library + * stores its own version of the new data internally and ignores the passed + * in value. + */ +PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, + png_bytep old_row, png_const_bytep new_row)); +#endif /* PROGRESSIVE_READ */ + +PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); +/* Added at libpng version 1.4.0 */ +PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Added at libpng version 1.2.4 */ +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Frees a pointer allocated by png_malloc() */ +PNG_EXPORT(97, void, png_free, (png_const_structrp png_ptr, png_voidp ptr)); + +/* Free data that was allocated internally */ +PNG_EXPORT(98, void, png_free_data, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 free_me, int num)); + +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application; this works on the png_info structure passed + * in, it does not change the state for other png_info structures. + * + * It is unlikely that this function works correctly as of 1.6.0 and using it + * may result either in memory leaks or double free of allocated data. + */ +PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, + png_inforp info_ptr, int freer, png_uint_32 mask)); + +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_FREE_UNKN 0x0200 +#endif +/* PNG_FREE_LIST 0x0400 removed in 1.6.0 because it is ignored */ +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED); +PNG_EXPORTA(101, void, png_free_default, (png_const_structrp png_ptr, + png_voidp ptr), PNG_DEPRECATED); +#endif + +#ifdef PNG_ERROR_TEXT_SUPPORTED +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(102, void, png_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +/* The same, but the chunk name is prepended to the error string. */ +PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +#else +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN); +# define png_error(s1,s2) png_err(s1) +# define png_chunk_error(s1,s2) png_err(s1) +#endif + +#ifdef PNG_WARNINGS_SUPPORTED +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +PNG_EXPORT(105, void, png_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); + +/* Non-fatal error in libpng, chunk name is prepended to message. */ +PNG_EXPORT(106, void, png_chunk_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); +#else +# define png_warning(s1,s2) ((void)(s1)) +# define png_chunk_warning(s1,s2) ((void)(s1)) +#endif + +#ifdef PNG_BENIGN_ERRORS_SUPPORTED +/* Benign error in libpng. Can continue, but may have a problem. + * User can choose whether to handle as a fatal error or as a warning. */ +PNG_EXPORT(107, void, png_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_READ_SUPPORTED +/* Same, chunk name is prepended to message (only during read) */ +PNG_EXPORT(108, void, png_chunk_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); +#endif + +PNG_EXPORT(109, void, png_set_benign_errors, + (png_structrp png_ptr, int allowed)); +#else +# ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +# else +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* The png_set_<chunk> functions are for storing values in the png_info_struct. + * Similarly, the png_get_<chunk> calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_<chunk> functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image height in pixels. */ +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image bit_depth. */ +PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image color_type. */ +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image filter_type. */ +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image interlace_type. */ +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image compression_type. */ +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +#endif /* EASY_ACCESS */ + +#ifdef PNG_READ_SUPPORTED +/* Returns pointer to signature string read from PNG header */ +PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(132, void, png_set_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)) +PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *red_X, double *red_Y, double *red_Z, + double *green_X, double *green_Y, double *green_Z, double *blue_X, + double *blue_Y, double *blue_Z)) +PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_white_x, png_fixed_point *int_white_y, + png_fixed_point *int_red_x, png_fixed_point *int_red_y, + png_fixed_point *int_green_x, png_fixed_point *int_green_y, + png_fixed_point *int_blue_x, png_fixed_point *int_blue_y)) +PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_red_X, png_fixed_point *int_red_Y, + png_fixed_point *int_red_Z, png_fixed_point *int_green_X, + png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, + png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, + png_fixed_point *int_blue_Z)) +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(135, void, png_set_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)) +PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_const_structrp png_ptr, + png_inforp info_ptr, double red_X, double red_Y, double red_Z, + double green_X, double green_Y, double green_Z, double blue_X, + double blue_Y, double blue_Z)) +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) +PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, + png_fixed_point int_red_Z, png_fixed_point int_green_X, + png_fixed_point int_green_Y, png_fixed_point int_green_Z, + png_fixed_point int_blue_X, png_fixed_point int_blue_Y, + png_fixed_point int_blue_Z)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *file_gamma)) +PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_file_gamma)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_const_structrp png_ptr, + png_inforp info_ptr, double file_gamma)) +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_file_gamma)) +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(142, void, png_set_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_uint_16p hist)); +#endif + +PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); + +PNG_EXPORT(144, void, png_set_IHDR, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(146, void, png_set_oFFs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charp *purpose, png_int_32 *X0, + png_int_32 *X1, int *type, int *nparams, png_charp *units, + png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(148, void, png_set_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1, + int type, int nparams, png_const_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(150, void, png_set_pHYs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr, + png_inforp info_ptr, png_colorp *palette, int *num_palette)); + +PNG_EXPORT(152, void, png_set_PLTE, (png_structrp png_ptr, + png_inforp info_ptr, png_const_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(154, void, png_set_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *file_srgb_intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(156, void, png_set_sRGB, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charpp name, int *compression_type, + png_bytepp profile, png_uint_32 *proflen)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(159, void, png_set_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp name, int compression_type, + png_const_bytep profile, png_uint_32 proflen)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(160, int, png_get_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(161, void, png_set_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +PNG_EXPORT(162, int, png_get_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_textp *text_ptr, int *num_text)); +#endif + +/* Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +PNG_EXPORT(163, void, png_set_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(165, void, png_set_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep *trans_alpha, int *num_trans, + png_color_16p *trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(167, void, png_set_tRNS, (png_structrp png_ptr, + png_inforp info_ptr, png_const_bytep trans_alpha, int num_trans, + png_const_color_16p trans_color)); +#endif + +#ifdef PNG_sCAL_SUPPORTED +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *unit, double *width, double *height)) +#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ + defined(PNG_FLOATING_POINT_SUPPORTED) +/* NOTE: this API is currently implemented using floating point arithmetic, + * consequently it can only be used on systems with floating point support. + * In any case the range of values supported by png_fixed_point is small and it + * is highly recommended that png_get_sCAL_s be used instead. + */ +PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_fixed_point *width, png_fixed_point *height)) +#endif +PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_charpp swidth, png_charpp sheight)); + +PNG_FP_EXPORT(170, void, png_set_sCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, double width, double height)) +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, png_fixed_point width, + png_fixed_point height)) +PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, + png_const_charp swidth, png_const_charp sheight)); +#endif /* sCAL */ + +#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +/* Provide the default handling for all unknown chunks or, optionally, for + * specific unknown chunks. + * + * NOTE: prior to 1.6.0 the handling specified for particular chunks on read was + * ignored and the default was used, the per-chunk setting only had an effect on + * write. If you wish to have chunk-specific handling on read in code that must + * work on earlier versions you must use a user chunk callback to specify the + * desired handling (keep or discard.) + * + * The 'keep' parameter is a PNG_HANDLE_CHUNK_ value as listed below. The + * parameter is interpreted as follows: + * + * READ: + * PNG_HANDLE_CHUNK_AS_DEFAULT: + * Known chunks: do normal libpng processing, do not keep the chunk (but + * see the comments below about PNG_HANDLE_AS_UNKNOWN_SUPPORTED) + * Unknown chunks: for a specific chunk use the global default, when used + * as the default discard the chunk data. + * PNG_HANDLE_CHUNK_NEVER: + * Discard the chunk data. + * PNG_HANDLE_CHUNK_IF_SAFE: + * Keep the chunk data if the chunk is not critical else raise a chunk + * error. + * PNG_HANDLE_CHUNK_ALWAYS: + * Keep the chunk data. + * + * If the chunk data is saved it can be retrieved using png_get_unknown_chunks, + * below. Notice that specifying "AS_DEFAULT" as a global default is equivalent + * to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks + * it simply resets the behavior to the libpng default. + * + * INTERACTION WTIH USER CHUNK CALLBACKS: + * The per-chunk handling is always used when there is a png_user_chunk_ptr + * callback and the callback returns 0; the chunk is then always stored *unless* + * it is critical and the per-chunk setting is other than ALWAYS. Notice that + * the global default is *not* used in this case. (In effect the per-chunk + * value is incremented to at least IF_SAFE.) + * + * IMPORTANT NOTE: this behavior will change in libpng 1.7 - the global and + * per-chunk defaults will be honored. If you want to preserve the current + * behavior when your callback returns 0 you must set PNG_HANDLE_CHUNK_IF_SAFE + * as the default - if you don't do this libpng 1.6 will issue a warning. + * + * If you want unhandled unknown chunks to be discarded in libpng 1.6 and + * earlier simply return '1' (handled). + * + * PNG_HANDLE_AS_UNKNOWN_SUPPORTED: + * If this is *not* set known chunks will always be handled by libpng and + * will never be stored in the unknown chunk list. Known chunks listed to + * png_set_keep_unknown_chunks will have no effect. If it is set then known + * chunks listed with a keep other than AS_DEFAULT will *never* be processed + * by libpng, in addition critical chunks must either be processed by the + * callback or saved. + * + * The IHDR and IEND chunks must not be listed. Because this turns off the + * default handling for chunks that would otherwise be recognized the + * behavior of libpng transformations may well become incorrect! + * + * WRITE: + * When writing chunks the options only apply to the chunks specified by + * png_set_unknown_chunks (below), libpng will *always* write known chunks + * required by png_set_ calls and will always write the core critical chunks + * (as required for PLTE). + * + * Each chunk in the png_set_unknown_chunks list is looked up in the + * png_set_keep_unknown_chunks list to find the keep setting, this is then + * interpreted as follows: + * + * PNG_HANDLE_CHUNK_AS_DEFAULT: + * Write safe-to-copy chunks and write other chunks if the global + * default is set to _ALWAYS, otherwise don't write this chunk. + * PNG_HANDLE_CHUNK_NEVER: + * Do not write the chunk. + * PNG_HANDLE_CHUNK_IF_SAFE: + * Write the chunk if it is safe-to-copy, otherwise do not write it. + * PNG_HANDLE_CHUNK_ALWAYS: + * Write the chunk. + * + * Note that the default behavior is effectively the opposite of the read case - + * in read unknown chunks are not stored by default, in write they are written + * by default. Also the behavior of PNG_HANDLE_CHUNK_IF_SAFE is very different + * - on write the safe-to-copy bit is checked, on read the critical bit is + * checked and on read if the chunk is critical an error will be raised. + * + * num_chunks: + * =========== + * If num_chunks is positive, then the "keep" parameter specifies the manner + * for handling only those chunks appearing in the chunk_list array, + * otherwise the chunk list array is ignored. + * + * If num_chunks is 0 the "keep" parameter specifies the default behavior for + * unknown chunks, as described above. + * + * If num_chunks is negative, then the "keep" parameter specifies the manner + * for handling all unknown chunks plus all chunks recognized by libpng + * except for the IHDR, PLTE, tRNS, IDAT, and IEND chunks (which continue to + * be processed by libpng. + */ +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, + int keep, png_const_bytep chunk_list, int num_chunks)); + +/* The "keep" PNG_HANDLE_CHUNK_ parameter for the specified chunk is returned; + * the result is therefore true (non-zero) if special handling is required, + * false for the default handling. + */ +PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, + png_const_bytep chunk_name)); +#endif + +#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); + /* NOTE: prior to 1.6.0 this routine set the 'location' field of the added + * unknowns to the location currently stored in the png_struct. This is + * invariably the wrong value on write. To fix this call the following API + * for each chunk in the list with the correct location. If you know your + * code won't be compiled on earlier versions you can rely on + * png_set_unknown_chunks(write-ptr, png_get_unknown_chunks(read-ptr)) doing + * the correct thing. + */ + +PNG_EXPORT(175, void, png_set_unknown_chunk_location, + (png_const_structrp png_ptr, png_inforp info_ptr, int chunk, int location)); + +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +PNG_EXPORT(177, void, png_set_invalid, (png_const_structrp png_ptr, + png_inforp info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +PNG_EXPORT(178, void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr, + int transforms, png_voidp params)); +#endif +#ifdef PNG_WRITE_SUPPORTED +PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr, + int transforms, png_voidp params)); +#endif +#endif + +PNG_EXPORT(180, png_const_charp, png_get_copyright, + (png_const_structrp png_ptr)); +PNG_EXPORT(181, png_const_charp, png_get_header_ver, + (png_const_structrp png_ptr)); +PNG_EXPORT(182, png_const_charp, png_get_header_version, + (png_const_structrp png_ptr)); +PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, + (png_const_structrp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr, + png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 +#define PNG_HANDLE_CHUNK_LAST 4 + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +PNG_EXPORT(185, void, png_set_strip_error_numbers, (png_structrp png_ptr, + png_uint_32 strip_mode)); +#endif + +/* Added in libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +PNG_EXPORT(186, void, png_set_user_limits, (png_structrp png_ptr, + png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(187, png_uint_32, png_get_user_width_max, + (png_const_structrp png_ptr)); +PNG_EXPORT(188, png_uint_32, png_get_user_height_max, + (png_const_structrp png_ptr)); +/* Added in libpng-1.4.0 */ +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structrp png_ptr, + png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, + (png_const_structrp png_ptr)); +/* Added in libpng-1.4.1 */ +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structrp png_ptr, + png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, + (png_const_structrp png_ptr)); +#endif + +#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) +PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_FP_EXPORT(196, float, png_get_x_offset_inches, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#endif + +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structrp png_ptr, + png_const_inforp info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#endif + +# ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +# endif /* pHYs */ +#endif /* INCH_CONVERSIONS */ + +/* Added in libpng-1.4.0 */ +#ifdef PNG_IO_STATE_SUPPORTED +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr)); + +/* Removed from libpng 1.6; use png_get_io_chunk_type. */ +PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr), + PNG_DEPRECATED) + +PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, + (png_const_structrp png_ptr)); + +/* The flags returned by png_get_io_state() are the following: */ +# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +# define PNG_IO_READING 0x0001 /* currently reading */ +# define PNG_IO_WRITING 0x0002 /* currently writing */ +# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +#endif /* IO_STATE */ + +/* Interlace support. The following macros are always defined so that if + * libpng interlace handling is turned off the macros may be used to handle + * interlaced images within the application. + */ +#define PNG_INTERLACE_ADAM7_PASSES 7 + +/* Two macros to return the first row and first column of the original, + * full, image which appears in a given pass. 'pass' is in the range 0 + * to 6 and the result is in the range 0 to 7. + */ +#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7) +#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7) + +/* A macro to return the offset between pixels in the output row for a pair of + * pixels in the input - effectively the inverse of the 'COL_SHIFT' macro that + * follows. Note that ROW_OFFSET is the offset from one row to the next whereas + * COL_OFFSET is from one column to the next, within a row. + */ +#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8) +#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1)) + +/* Two macros to help evaluate the number of rows or columns in each + * pass. This is expressed as a shift - effectively log2 of the number or + * rows or columns in each 8x8 tile of the original image. + */ +#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) +#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) + +/* Hence two macros to determine the number of rows or columns in a given + * pass of an image given its height or width. In fact these macros may + * return non-zero even though the sub-image is empty, because the other + * dimension may be empty for a small image. + */ +#define PNG_PASS_ROWS(height, pass) (((height)+(((1<<PNG_PASS_ROW_SHIFT(pass))\ + -1)-PNG_PASS_START_ROW(pass)))>>PNG_PASS_ROW_SHIFT(pass)) +#define PNG_PASS_COLS(width, pass) (((width)+(((1<<PNG_PASS_COL_SHIFT(pass))\ + -1)-PNG_PASS_START_COL(pass)))>>PNG_PASS_COL_SHIFT(pass)) + +/* For the reader row callbacks (both progressive and sequential) it is + * necessary to find the row in the output image given a row in an interlaced + * image, so two more macros: + */ +#define PNG_ROW_FROM_PASS_ROW(y_in, pass) \ + (((y_in)<<PNG_PASS_ROW_SHIFT(pass))+PNG_PASS_START_ROW(pass)) +#define PNG_COL_FROM_PASS_COL(x_in, pass) \ + (((x_in)<<PNG_PASS_COL_SHIFT(pass))+PNG_PASS_START_COL(pass)) + +/* Two macros which return a boolean (0 or 1) saying whether the given row + * or column is in a particular pass. These use a common utility macro that + * returns a mask for a given pass - the offset 'off' selects the row or + * column version. The mask has the appropriate bit set for each column in + * the tile. + */ +#define PNG_PASS_MASK(pass,off) ( \ + ((0x110145AF>>(((7-(off))-(pass))<<2)) & 0xF) | \ + ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0)) + +#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ + ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) +#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ + ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ + * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 \ + - (png_uint_16)(alpha)) + 128); \ + (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ + * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(65535 \ + - (png_uint_32)(alpha)) + 32768); \ + (composite) = (png_uint_16)(0xffff & ((temp + (temp >> 16)) >> 16)); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = \ + (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + 127) / 255)) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = \ + (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ + 32767) / 65535)) +#endif /* READ_COMPOSITE_NODIV */ + +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); +#endif + +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr, + png_const_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); +#endif +#ifdef PNG_SAVE_INT_32_SUPPORTED +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); +#endif + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif + +#ifdef PNG_USE_READ_MACROS +/* Inline macros to do direct reads of bytes from the input buffer. + * The png_get_int_32() routine assumes we are using two's complement + * format for negative values, which is almost certainly true. + */ +# define PNG_get_uint_32(buf) \ + (((png_uint_32)(*(buf)) << 24) + \ + ((png_uint_32)(*((buf) + 1)) << 16) + \ + ((png_uint_32)(*((buf) + 2)) << 8) + \ + ((png_uint_32)(*((buf) + 3)))) + + /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the + * function) incorrectly returned a value of type png_uint_32. + */ +# define PNG_get_uint_16(buf) \ + ((png_uint_16) \ + (((unsigned int)(*(buf)) << 8) + \ + ((unsigned int)(*((buf) + 1))))) + +# define PNG_get_int_32(buf) \ + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \ + : (png_int_32)png_get_uint_32(buf))) + + /* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, + * but defining a macro name prefixed with PNG_PREFIX. + */ +# ifndef PNG_PREFIX +# define png_get_uint_32(buf) PNG_get_uint_32(buf) +# define png_get_uint_16(buf) PNG_get_uint_16(buf) +# define png_get_int_32(buf) PNG_get_int_32(buf) +# endif +#else +# ifdef PNG_PREFIX + /* No macros; revert to the (redefined) function */ +# define PNG_get_uint_32 (png_get_uint_32) +# define PNG_get_uint_16 (png_get_uint_16) +# define PNG_get_int_32 (png_get_int_32) +# endif +#endif + +#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ + defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) +/******************************************************************************* + * SIMPLIFIED API + ******************************************************************************* + * + * Please read the documentation in libpng-manual.txt (TODO: write said + * documentation) if you don't understand what follows. + * + * The simplified API hides the details of both libpng and the PNG file format + * itself. It allows PNG files to be read into a very limited number of + * in-memory bitmap formats or to be written from the same formats. If these + * formats do not accomodate your needs then you can, and should, use the more + * sophisticated APIs above - these support a wide variety of in-memory formats + * and a wide variety of sophisticated transformations to those formats as well + * as a wide variety of APIs to manipulate ancillary information. + * + * To read a PNG file using the simplified API: + * + * 1) Declare a 'png_image' structure (see below) on the stack, set the + * version field to PNG_IMAGE_VERSION and the 'opaque' pointer to NULL + * (this is REQUIRED, your program may crash if you don't do it.) + * 2) Call the appropriate png_image_begin_read... function. + * 3) Set the png_image 'format' member to the required sample format. + * 4) Allocate a buffer for the image and, if required, the color-map. + * 5) Call png_image_finish_read to read the image and, if required, the + * color-map into your buffers. + * + * There are no restrictions on the format of the PNG input itself; all valid + * color types, bit depths, and interlace methods are acceptable, and the + * input image is transformed as necessary to the requested in-memory format + * during the png_image_finish_read() step. The only caveat is that if you + * request a color-mapped image from a PNG that is full-color or makes + * complex use of an alpha channel the transformation is extremely lossy and the + * result may look terrible. + * + * To write a PNG file using the simplified API: + * + * 1) Declare a 'png_image' structure on the stack and memset() it to all zero. + * 2) Initialize the members of the structure that describe the image, setting + * the 'format' member to the format of the image samples. + * 3) Call the appropriate png_image_write... function with a pointer to the + * image and, if necessary, the color-map to write the PNG data. + * + * png_image is a structure that describes the in-memory format of an image + * when it is being read or defines the in-memory format of an image that you + * need to write: + */ +#define PNG_IMAGE_VERSION 1 + +typedef struct png_control *png_controlp; +typedef struct +{ + png_controlp opaque; /* Initialize to NULL, free with png_image_free */ + png_uint_32 version; /* Set to PNG_IMAGE_VERSION */ + png_uint_32 width; /* Image width in pixels (columns) */ + png_uint_32 height; /* Image height in pixels (rows) */ + png_uint_32 format; /* Image format as defined below */ + png_uint_32 flags; /* A bit mask containing informational flags */ + png_uint_32 colormap_entries; + /* Number of entries in the color-map */ + + /* In the event of an error or warning the following field will be set to a + * non-zero value and the 'message' field will contain a '\0' terminated + * string with the libpng error or warning message. If both warnings and + * an error were encountered, only the error is recorded. If there + * are multiple warnings, only the first one is recorded. + * + * The upper 30 bits of this value are reserved, the low two bits contain + * a value as follows: + */ +# define PNG_IMAGE_WARNING 1 +# define PNG_IMAGE_ERROR 2 + /* + * The result is a two-bit code such that a value more than 1 indicates + * a failure in the API just called: + * + * 0 - no warning or error + * 1 - warning + * 2 - error + * 3 - error preceded by warning + */ +# define PNG_IMAGE_FAILED(png_cntrl) ((((png_cntrl).warning_or_error)&0x03)>1) + + png_uint_32 warning_or_error; + + char message[64]; +} png_image, *png_imagep; + +/* The samples of the image have one to four channels whose components have + * original values in the range 0 to 1.0: + * + * 1: A single gray or luminance channel (G). + * 2: A gray/luminance channel and an alpha channel (GA). + * 3: Three red, green, blue color channels (RGB). + * 4: Three color channels and an alpha channel (RGBA). + * + * The components are encoded in one of two ways: + * + * a) As a small integer, value 0..255, contained in a single byte. For the + * alpha channel the original value is simply value/255. For the color or + * luminance channels the value is encoded according to the sRGB specification + * and matches the 8-bit format expected by typical display devices. + * + * The color/gray channels are not scaled (pre-multiplied) by the alpha + * channel and are suitable for passing to color management software. + * + * b) As a value in the range 0..65535, contained in a 2-byte integer. All + * channels can be converted to the original value by dividing by 65535; all + * channels are linear. Color channels use the RGB encoding (RGB end-points) of + * the sRGB specification. This encoding is identified by the + * PNG_FORMAT_FLAG_LINEAR flag below. + * + * When the simplified API needs to convert between sRGB and linear colorspaces, + * the actual sRGB transfer curve defined in the sRGB specification (see the + * article at http://en.wikipedia.org/wiki/SRGB) is used, not the gamma=1/2.2 + * approximation used elsewhere in libpng. + * + * When an alpha channel is present it is expected to denote pixel coverage + * of the color or luminance channels and is returned as an associated alpha + * channel: the color/gray channels are scaled (pre-multiplied) by the alpha + * value. + * + * The samples are either contained directly in the image data, between 1 and 8 + * bytes per pixel according to the encoding, or are held in a color-map indexed + * by bytes in the image data. In the case of a color-map the color-map entries + * are individual samples, encoded as above, and the image data has one byte per + * pixel to select the relevant sample from the color-map. + */ + +/* PNG_FORMAT_* + * + * #defines to be used in png_image::format. Each #define identifies a + * particular layout of sample data and, if present, alpha values. There are + * separate defines for each of the two component encodings. + * + * A format is built up using single bit flag values. All combinations are + * valid. Formats can be built up from the flag values or you can use one of + * the predefined values below. When testing formats always use the FORMAT_FLAG + * macros to test for individual features - future versions of the library may + * add new flags. + * + * When reading or writing color-mapped images the format should be set to the + * format of the entries in the color-map then png_image_{read,write}_colormap + * called to read or write the color-map and set the format correctly for the + * image data. Do not set the PNG_FORMAT_FLAG_COLORMAP bit directly! + * + * NOTE: libpng can be built with particular features disabled, if you see + * compiler errors because the definition of one of the following flags has been + * compiled out it is because libpng does not have the required support. It is + * possible, however, for the libpng configuration to enable the format on just + * read or just write; in that case you may see an error at run time. You can + * guard against this by checking for the definition of the appropriate + * "_SUPPORTED" macro, one of: + * + * PNG_SIMPLIFIED_{READ,WRITE}_{BGR,AFIRST}_SUPPORTED + */ +#define PNG_FORMAT_FLAG_ALPHA 0x01U /* format with an alpha channel */ +#define PNG_FORMAT_FLAG_COLOR 0x02U /* color format: otherwise grayscale */ +#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2 byte channels else 1 byte */ +#define PNG_FORMAT_FLAG_COLORMAP 0x08U /* image data is color-mapped */ + +#ifdef PNG_FORMAT_BGR_SUPPORTED +# define PNG_FORMAT_FLAG_BGR 0x10U /* BGR colors, else order is RGB */ +#endif + +#ifdef PNG_FORMAT_AFIRST_SUPPORTED +# define PNG_FORMAT_FLAG_AFIRST 0x20U /* alpha channel comes first */ +#endif + +/* Commonly used formats have predefined macros. + * + * First the single byte (sRGB) formats: + */ +#define PNG_FORMAT_GRAY 0 +#define PNG_FORMAT_GA PNG_FORMAT_FLAG_ALPHA +#define PNG_FORMAT_AG (PNG_FORMAT_GA|PNG_FORMAT_FLAG_AFIRST) +#define PNG_FORMAT_RGB PNG_FORMAT_FLAG_COLOR +#define PNG_FORMAT_BGR (PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_BGR) +#define PNG_FORMAT_RGBA (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_ARGB (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_AFIRST) +#define PNG_FORMAT_BGRA (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_ABGR (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_AFIRST) + +/* Then the linear 2-byte formats. When naming these "Y" is used to + * indicate a luminance (gray) channel. + */ +#define PNG_FORMAT_LINEAR_Y PNG_FORMAT_FLAG_LINEAR +#define PNG_FORMAT_LINEAR_Y_ALPHA (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_LINEAR_RGB (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR) +#define PNG_FORMAT_LINEAR_RGB_ALPHA \ + (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA) + +/* With color-mapped formats the image data is one byte for each pixel, the byte + * is an index into the color-map which is formatted as above. To obtain a + * color-mapped format it is sufficient just to add the PNG_FOMAT_FLAG_COLORMAP + * to one of the above definitions, or you can use one of the definitions below. + */ +#define PNG_FORMAT_RGB_COLORMAP (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_BGR_COLORMAP (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_RGBA_COLORMAP (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_ARGB_COLORMAP (PNG_FORMAT_ARGB|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_BGRA_COLORMAP (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_ABGR_COLORMAP (PNG_FORMAT_ABGR|PNG_FORMAT_FLAG_COLORMAP) + +/* PNG_IMAGE macros + * + * These are convenience macros to derive information from a png_image + * structure. The PNG_IMAGE_SAMPLE_ macros return values appropriate to the + * actual image sample values - either the entries in the color-map or the + * pixels in the image. The PNG_IMAGE_PIXEL_ macros return corresponding values + * for the pixels and will always return 1 for color-mapped formats. The + * remaining macros return information about the rows in the image and the + * complete image. + * + * NOTE: All the macros that take a png_image::format parameter are compile time + * constants if the format parameter is, itself, a constant. Therefore these + * macros can be used in array declarations and case labels where required. + * Similarly the macros are also pre-processor constants (sizeof is not used) so + * they can be used in #if tests. + * + * First the information about the samples. + */ +#define PNG_IMAGE_SAMPLE_CHANNELS(fmt)\ + (((fmt)&(PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA))+1) + /* Return the total number of channels in a given format: 1..4 */ + +#define PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)\ + ((((fmt) & PNG_FORMAT_FLAG_LINEAR) >> 2)+1) + /* Return the size in bytes of a single component of a pixel or color-map + * entry (as appropriate) in the image: 1 or 2. + */ + +#define PNG_IMAGE_SAMPLE_SIZE(fmt)\ + (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)) + /* This is the size of the sample data for one sample. If the image is + * color-mapped it is the size of one color-map entry (and image pixels are + * one byte in size), otherwise it is the size of one image pixel. + */ + +#define PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(fmt)\ + (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * 256) + /* The maximum size of the color-map required by the format expressed in a + * count of components. This can be used to compile-time allocate a + * color-map: + * + * png_uint_16 colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(linear_fmt)]; + * + * png_byte colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(sRGB_fmt)]; + * + * Alternatively use the PNG_IMAGE_COLORMAP_SIZE macro below to use the + * information from one of the png_image_begin_read_ APIs and dynamically + * allocate the required memory. + */ + +/* Corresponding information about the pixels */ +#define PNG_IMAGE_PIXEL_(test,fmt)\ + (((fmt)&PNG_FORMAT_FLAG_COLORMAP)?1:test(fmt)) + +#define PNG_IMAGE_PIXEL_CHANNELS(fmt)\ + PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_CHANNELS,fmt) + /* The number of separate channels (components) in a pixel; 1 for a + * color-mapped image. + */ + +#define PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)\ + PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_COMPONENT_SIZE,fmt) + /* The size, in bytes, of each component in a pixel; 1 for a color-mapped + * image. + */ + +#define PNG_IMAGE_PIXEL_SIZE(fmt) PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_SIZE,fmt) + /* The size, in bytes, of a complete pixel; 1 for a color-mapped image. */ + +/* Information about the whole row, or whole image */ +#define PNG_IMAGE_ROW_STRIDE(image)\ + (PNG_IMAGE_PIXEL_CHANNELS((image).format) * (image).width) + /* Return the total number of components in a single row of the image; this + * is the minimum 'row stride', the minimum count of components between each + * row. For a color-mapped image this is the minimum number of bytes in a + * row. + */ + +#define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\ + (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride)) + /* Return the size, in bytes, of an image buffer given a png_image and a row + * stride - the number of components to leave space for in each row. + */ + +#define PNG_IMAGE_SIZE(image)\ + PNG_IMAGE_BUFFER_SIZE(image, PNG_IMAGE_ROW_STRIDE(image)) + /* Return the size, in bytes, of the image in memory given just a png_image; + * the row stride is the minimum stride required for the image. + */ + +#define PNG_IMAGE_COLORMAP_SIZE(image)\ + (PNG_IMAGE_SAMPLE_SIZE((image).format) * (image).colormap_entries) + /* Return the size, in bytes, of the color-map of this image. If the image + * format is not a color-map format this will return a size sufficient for + * 256 entries in the given format; check PNG_FORMAT_FLAG_COLORMAP if + * you don't want to allocate a color-map in this case. + */ + +/* PNG_IMAGE_FLAG_* + * + * Flags containing additional information about the image are held in the + * 'flags' field of png_image. + */ +#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01 + /* This indicates the the RGB values of the in-memory bitmap do not + * correspond to the red, green and blue end-points defined by sRGB. + */ + +#define PNG_IMAGE_FLAG_FAST 0x02 + /* On write emphasise speed over compression; the resultant PNG file will be + * larger but will be produced significantly faster, particular for large + * images. Do not use this option for images which will be distributed, only + * used it when producing intermediate files that will be read back in + * repeatedly. For a typical 24-bit image the option will double the read + * speed at the cost of increasing the image size by 25%, however for many + * more compressible images the PNG file can be 10 times larger with only a + * slight speed gain. + */ + +#define PNG_IMAGE_FLAG_16BIT_sRGB 0x04 + /* On read if the image is a 16-bit per component image and there is no gAMA + * or sRGB chunk assume that the components are sRGB encoded. Notice that + * images output by the simplified API always have gamma information; setting + * this flag only affects the interpretation of 16-bit images from an + * external source. It is recommended that the application expose this flag + * to the user; the user can normally easily recognize the difference between + * linear and sRGB encoding. This flag has no effect on write - the data + * passed to the write APIs must have the correct encoding (as defined + * above.) + * + * If the flag is not set (the default) input 16-bit per component data is + * assumed to be linear. + * + * NOTE: the flag can only be set after the png_image_begin_read_ call, + * because that call initializes the 'flags' field. + */ + +#ifdef PNG_SIMPLIFIED_READ_SUPPORTED +/* READ APIs + * --------- + * + * The png_image passed to the read APIs must have been initialized by setting + * the png_controlp field 'opaque' to NULL (or, safer, memset the whole thing.) + */ +#ifdef PNG_STDIO_SUPPORTED +PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, + const char *file_name)); + /* The named file is opened for read and the image header is filled in + * from the PNG header in the file. + */ + +PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, + FILE* file)); + /* The PNG header is read from the stdio FILE object. */ +#endif /* STDIO */ + +PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, + png_const_voidp memory, png_size_t size)); + /* The PNG header is read from the given memory buffer. */ + +PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image, + png_const_colorp background, void *buffer, png_int_32 row_stride, + void *colormap)); + /* Finish reading the image into the supplied buffer and clean up the + * png_image structure. + * + * row_stride is the step, in byte or 2-byte units as appropriate, + * between adjacent rows. A positive stride indicates that the top-most row + * is first in the buffer - the normal top-down arrangement. A negative + * stride indicates that the bottom-most row is first in the buffer. + * + * background need only be supplied if an alpha channel must be removed from + * a png_byte format and the removal is to be done by compositing on a solid + * color; otherwise it may be NULL and any composition will be done directly + * onto the buffer. The value is an sRGB color to use for the background, + * for grayscale output the green channel is used. + * + * background must be supplied when an alpha channel must be removed from a + * single byte color-mapped output format, in other words if: + * + * 1) The original format from png_image_begin_read_from_* had + * PNG_FORMAT_FLAG_ALPHA set. + * 2) The format set by the application does not. + * 3) The format set by the application has PNG_FORMAT_FLAG_COLORMAP set and + * PNG_FORMAT_FLAG_LINEAR *not* set. + * + * For linear output removing the alpha channel is always done by compositing + * on black and background is ignored. + * + * colormap must be supplied when PNG_FORMAT_FLAG_COLORMAP is set. It must + * be at least the size (in bytes) returned by PNG_IMAGE_COLORMAP_SIZE. + * image->colormap_entries will be updated to the actual number of entries + * written to the colormap; this may be less than the original value. + */ + +PNG_EXPORT(238, void, png_image_free, (png_imagep image)); + /* Free any data allocated by libpng in image->opaque, setting the pointer to + * NULL. May be called at any time after the structure is initialized. + */ +#endif /* SIMPLIFIED_READ */ + +#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED +#ifdef PNG_STDIO_SUPPORTED +/* WRITE APIS + * ---------- + * For write you must initialize a png_image structure to describe the image to + * be written. To do this use memset to set the whole structure to 0 then + * initialize fields describing your image. + * + * version: must be set to PNG_IMAGE_VERSION + * opaque: must be initialized to NULL + * width: image width in pixels + * height: image height in rows + * format: the format of the data (image and color-map) you wish to write + * flags: set to 0 unless one of the defined flags applies; set + * PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB for color format images where the RGB + * values do not correspond to the colors in sRGB. + * colormap_entries: set to the number of entries in the color-map (0 to 256) + */ +PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, + const char *file, int convert_to_8bit, const void *buffer, + png_int_32 row_stride, const void *colormap)); + /* Write the image to the named file. */ + +PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, + int convert_to_8_bit, const void *buffer, png_int_32 row_stride, + const void *colormap)); + /* Write the image to the given (FILE*). */ + +/* With both write APIs if image is in one of the linear formats with 16-bit + * data then setting convert_to_8_bit will cause the output to be an 8-bit PNG + * gamma encoded according to the sRGB specification, otherwise a 16-bit linear + * encoded PNG file is written. + * + * With color-mapped data formats the colormap parameter point to a color-map + * with at least image->colormap_entries encoded in the specified format. If + * the format is linear the written PNG color-map will be converted to sRGB + * regardless of the convert_to_8_bit flag. + * + * With all APIs row_stride is handled as in the read APIs - it is the spacing + * from one row to the next in component sized units (1 or 2 bytes) and if + * negative indicates a bottom-up row layout in the buffer. If row_stride is zero, + * libpng will calculate it for you from the image width and number of channels. + * + * Note that the write API does not support interlacing, sub-8-bit pixels, indexed + * PNG (color_type 3) or most ancillary chunks. + */ +#endif /* STDIO */ +#endif /* SIMPLIFIED_WRITE */ +/******************************************************************************* + * END OF SIMPLIFIED API + ******************************************************************************/ +#endif /* SIMPLIFIED_{READ|WRITE} */ + +#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +PNG_EXPORT(242, void, png_set_check_for_invalid_index, + (png_structrp png_ptr, int allowed)); +# ifdef PNG_GET_PALETTE_MAX_SUPPORTED +PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, + png_const_infop info_ptr)); +# endif +#endif /* CHECK_FOR_INVALID_INDEX */ + +/******************************************************************************* + * IMPLEMENTATION OPTIONS + ******************************************************************************* + * + * Support for arbitrary implementation-specific optimizations. The API allows + * particular options to be turned on or off. 'Option' is the number of the + * option and 'onoff' is 0 (off) or non-0 (on). The value returned is given + * by the PNG_OPTION_ defines below. + * + * HARDWARE: normally hardware capabilites, such as the Intel SSE instructions, + * are detected at run time, however sometimes it may be impossible + * to do this in user mode, in which case it is necessary to discover + * the capabilities in an OS specific way. Such capabilities are + * listed here when libpng has support for them and must be turned + * ON by the application if present. + * + * SOFTWARE: sometimes software optimizations actually result in performance + * decrease on some architectures or systems, or with some sets of + * PNG images. 'Software' options allow such optimizations to be + * selected at run time. + */ +#ifdef PNG_SET_OPTION_SUPPORTED +#ifdef PNG_ARM_NEON_API_SUPPORTED +# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ +#endif +#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ +#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ +#define PNG_OPTION_NEXT 6 /* Next option - numbers must be even */ + +/* Return values: NOTE: there are four values and 'off' is *not* zero */ +#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ +#define PNG_OPTION_INVALID 1 /* Option number out of range */ +#define PNG_OPTION_OFF 2 +#define PNG_OPTION_ON 3 + +PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, + int onoff)); +#endif /* SET_OPTION */ + +/******************************************************************************* + * END OF HARDWARE AND SOFTWARE OPTIONS + ******************************************************************************/ + +/* Maintainer: Put new public prototypes here ^, in libpng.3, in project + * defs, and in scripts/symbols.def. + */ + +/* The last ordinal number (this is the *last* one already used; the next + * one to use is one more than this.) + */ +#ifdef PNG_EXPORT_LAST_ORDINAL + PNG_EXPORT_LAST_ORDINAL(244); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff --git a/lib/windows32/include/pngconf.h b/lib/windows32/include/pngconf.h new file mode 100644 index 0000000..62e37cf --- /dev/null +++ b/lib/windows32/include/pngconf.h @@ -0,0 +1,622 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.6.18, July 23, 2015 + * + * Copyright (c) 1998-2015 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + * Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ + +/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C + * compiler for correct compilation. The following header files are required by + * the standard. If your compiler doesn't provide these header files, or they + * do not match the standard, you will need to provide/improve them. + */ +#include <limits.h> +#include <stddef.h> + +/* Library header files. These header files are all defined by ISOC90; libpng + * expects conformant implementations, however, an ISOC90 conformant system need + * not provide these header files if the functionality cannot be implemented. + * In this case it will be necessary to disable the relevant parts of libpng in + * the build of pnglibconf.h. + * + * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not + * include this unnecessary header file. + */ + +#ifdef PNG_STDIO_SUPPORTED + /* Required for the definition of FILE: */ +# include <stdio.h> +#endif + +#ifdef PNG_SETJMP_SUPPORTED + /* Required for the definition of jmp_buf and the declaration of longjmp: */ +# include <setjmp.h> +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED + /* Required for struct tm: */ +# include <time.h> +#endif + +#endif /* PNG_BUILDING_SYMBOL_TABLE */ + +/* Prior to 1.6.0 it was possible to turn off 'const' in declarations using + * PNG_NO_CONST; this is no longer supported except for data declarations which + * apparently still cause problems in 2011 on some compilers. + */ +#define PNG_CONST const /* backward compatibility only */ + +/* This controls optimization of the reading of 16 and 32 bit values + * from PNG files. It can be set on a per-app-file basis - it + * just changes whether a macro is used when the function is called. + * The library builder sets the default; if read functions are not + * built into the library the macro implementation is forced on. + */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# if PNG_DEFAULT_READ_MACROS +# define PNG_USE_READ_MACROS +# endif +#endif + +/* COMPILER SPECIFIC OPTIONS. + * + * These options are provided so that a variety of difficult compilers + * can be used. Some are fixed at build time (e.g. PNG_API_RULE + * below) but still have compiler specific implementations, others + * may be changed on a per-file basis when compiling against libpng. + */ + +/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect + * against legacy (pre ISOC90) compilers that did not understand function + * prototypes. It is not required for modern C compilers. + */ +#ifndef PNGARG +# define PNGARG(arglist) arglist +#endif + +/* Function calling conventions. + * ============================= + * Normally it is not necessary to specify to the compiler how to call + * a function - it just does it - however on x86 systems derived from + * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems + * and some others) there are multiple ways to call a function and the + * default can be changed on the compiler command line. For this reason + * libpng specifies the calling convention of every exported function and + * every function called via a user supplied function pointer. This is + * done in this file by defining the following macros: + * + * PNGAPI Calling convention for exported functions. + * PNGCBAPI Calling convention for user provided (callback) functions. + * PNGCAPI Calling convention used by the ANSI-C library (required + * for longjmp callbacks and sometimes used internally to + * specify the calling convention for zlib). + * + * These macros should never be overridden. If it is necessary to + * change calling convention in a private build this can be done + * by setting PNG_API_RULE (which defaults to 0) to one of the values + * below to select the correct 'API' variants. + * + * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. + * This is correct in every known environment. + * PNG_API_RULE=1 Use the operating system convention for PNGAPI and + * the 'C' calling convention (from PNGCAPI) for + * callbacks (PNGCBAPI). This is no longer required + * in any known environment - if it has to be used + * please post an explanation of the problem to the + * libpng mailing list. + * + * These cases only differ if the operating system does not use the C + * calling convention, at present this just means the above cases + * (x86 DOS/Windows sytems) and, even then, this does not apply to + * Cygwin running on those systems. + * + * Note that the value must be defined in pnglibconf.h so that what + * the application uses to call the library matches the conventions + * set when building the library. + */ + +/* Symbol export + * ============= + * When building a shared library it is almost always necessary to tell + * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' + * is used to mark the symbols. On some systems these symbols can be + * extracted at link time and need no special processing by the compiler, + * on other systems the symbols are flagged by the compiler and just + * the declaration requires a special tag applied (unfortunately) in a + * compiler dependent way. Some systems can do either. + * + * A small number of older systems also require a symbol from a DLL to + * be flagged to the program that calls it. This is a problem because + * we do not know in the header file included by application code that + * the symbol will come from a shared library, as opposed to a statically + * linked one. For this reason the application must tell us by setting + * the magic flag PNG_USE_DLL to turn on the special processing before + * it includes png.h. + * + * Four additional macros are used to make this happen: + * + * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from + * the build or imported if PNG_USE_DLL is set - compiler + * and system specific. + * + * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to + * 'type', compiler specific. + * + * PNG_DLL_EXPORT Set to the magic to use during a libpng build to + * make a symbol exported from the DLL. Not used in the + * public header files; see pngpriv.h for how it is used + * in the libpng build. + * + * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come + * from a DLL - used to define PNG_IMPEXP when + * PNG_USE_DLL is set. + */ + +/* System specific discovery. + * ========================== + * This code is used at build time to find PNG_IMPEXP, the API settings + * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL + * import processing is possible. On Windows systems it also sets + * compiler-specific macros to the values required to change the calling + * conventions of the various functions. + */ +#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ + defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) + /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or + * MinGW on any architecture currently supported by Windows. Also includes + * Watcom builds but these need special treatment because they are not + * compatible with GCC or Visual C because of different calling conventions. + */ +# if PNG_API_RULE == 2 + /* If this line results in an error, either because __watcall is not + * understood or because of a redefine just below you cannot use *this* + * build of the library with the compiler you are using. *This* build was + * build using Watcom and applications must also be built using Watcom! + */ +# define PNGCAPI __watcall +# endif + +# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) +# define PNGCAPI __cdecl +# if PNG_API_RULE == 1 + /* If this line results in an error __stdcall is not understood and + * PNG_API_RULE should not have been set to '1'. + */ +# define PNGAPI __stdcall +# endif +# else + /* An older compiler, or one not detected (erroneously) above, + * if necessary override on the command line to get the correct + * variants for the compiler. + */ +# ifndef PNGCAPI +# define PNGCAPI _cdecl +# endif +# if PNG_API_RULE == 1 && !defined(PNGAPI) +# define PNGAPI _stdcall +# endif +# endif /* compiler/api */ + + /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ + +# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) +# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" +# endif + +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ + +#else /* !Windows */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# define PNGAPI _System +# else /* !Windows/x86 && !OS/2 */ + /* Use the defaults, or define PNG*API on the command line (but + * this will have to be done for every compile!) + */ +# endif /* other system, !OS/2 */ +#endif /* !Windows/x86 */ + +/* Now do all the defaulting . */ +#ifndef PNGCAPI +# define PNGCAPI +#endif +#ifndef PNGCBAPI +# define PNGCBAPI PNGCAPI +#endif +#ifndef PNGAPI +# define PNGAPI PNGCAPI +#endif + +/* PNG_IMPEXP may be set on the compilation system command line or (if not set) + * then in an internal header file when building the library, otherwise (when + * using the library) it is set here. + */ +#ifndef PNG_IMPEXP +# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) + /* This forces use of a DLL, disallowing static linking */ +# define PNG_IMPEXP PNG_DLL_IMPORT +# endif + +# ifndef PNG_IMPEXP +# define PNG_IMPEXP +# endif +#endif + +/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat + * 'attributes' as a storage class - the attributes go at the start of the + * function definition, and attributes are always appended regardless of the + * compiler. This considerably simplifies these macros but may cause problems + * if any compilers both need function attributes and fail to handle them as + * a storage class (this is unlikely.) + */ +#ifndef PNG_FUNCTION +# define PNG_FUNCTION(type, name, args, attributes) attributes type name args +#endif + +#ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type +#endif + + /* The ordinal value is only relevant when preprocessing png.h for symbol + * table entries, so we discard it here. See the .dfn files in the + * scripts directory. + */ + +#ifndef PNG_EXPORTA +# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ + PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ + PNG_LINKAGE_API attributes) +#endif + +/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, + * so make something non-empty to satisfy the requirement: + */ +#define PNG_EMPTY /*empty list*/ + +#define PNG_EXPORT(ordinal, type, name, args) \ + PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) + +/* Use PNG_REMOVED to comment out a removed interface. */ +#ifndef PNG_REMOVED +# define PNG_REMOVED(ordinal, type, name, args, attributes) +#endif + +#ifndef PNG_CALLBACK +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +#endif + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. + * + * Added at libpng-1.2.41. + */ + +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED + /* Support for compiler specific function attributes. These are used + * so that where compiler support is available, incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. Disabling these removes the warnings but may also produce + * less efficient code. + */ +# if defined(__clang__) && defined(__has_attribute) + /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ +# if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# if !defined(PNG_PRIVATE) +# ifdef __has_extension +# if __has_extension(attribute_unavailable_with_message) +# define PNG_PRIVATE __attribute__((__unavailable__(\ + "This function is not exported by libpng."))) +# endif +# endif +# endif +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif + +# elif defined(__GNUC__) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if __GNUC__ >= 3 +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif +# if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif +# endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ +# endif /* __GNUC__ >= 3 */ + +# elif defined(_MSC_VER) && (_MSC_VER >= 1300) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* not supported */ +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __declspec(noreturn) +# endif +# ifndef PNG_ALLOCATED +# if (_MSC_VER >= 1400) +# define PNG_ALLOCATED __declspec(restrict) +# endif +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __declspec(deprecated) +# endif +# ifndef PNG_PRIVATE +# define PNG_PRIVATE __declspec(deprecated) +# endif +# ifndef PNG_RESTRICT +# if (_MSC_VER >= 1400) +# define PNG_RESTRICT __restrict +# endif +# endif + +# elif defined(__WATCOMC__) +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif +# endif +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif +#ifndef PNG_RESTRICT +# define PNG_RESTRICT /* The C99 "restrict" feature */ +#endif + +#ifndef PNG_FP_EXPORT /* A floating point API. */ +# ifdef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FP_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No floating point APIs */ +# define PNG_FP_EXPORT(ordinal, type, name, args) +# endif +#endif +#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ +# ifdef PNG_FIXED_POINT_SUPPORTED +# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No fixed point APIs */ +# define PNG_FIXED_EXPORT(ordinal, type, name, args) +# endif +#endif + +#ifndef PNG_BUILDING_SYMBOL_TABLE +/* Some typedefs to get us started. These should be safe on most of the common + * platforms. + * + * png_uint_32 and png_int_32 may, currently, be larger than required to hold a + * 32-bit value however this is not normally advisable. + * + * png_uint_16 and png_int_16 should always be two bytes in size - this is + * verified at library build time. + * + * png_byte must always be one byte in size. + * + * The checks below use constants from limits.h, as defined by the ISOC90 + * standard. + */ +#if CHAR_BIT == 8 && UCHAR_MAX == 255 + typedef unsigned char png_byte; +#else +# error "libpng requires 8 bit bytes" +#endif + +#if INT_MIN == -32768 && INT_MAX == 32767 + typedef int png_int_16; +#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 + typedef short png_int_16; +#else +# error "libpng requires a signed 16 bit type" +#endif + +#if UINT_MAX == 65535 + typedef unsigned int png_uint_16; +#elif USHRT_MAX == 65535 + typedef unsigned short png_uint_16; +#else +# error "libpng requires an unsigned 16 bit type" +#endif + +#if INT_MIN < -2147483646 && INT_MAX > 2147483646 + typedef int png_int_32; +#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 + typedef long int png_int_32; +#else +# error "libpng requires a signed 32 bit (or more) type" +#endif + +#if UINT_MAX > 4294967294 + typedef unsigned int png_uint_32; +#elif ULONG_MAX > 4294967294 + typedef unsigned long int png_uint_32; +#else +# error "libpng requires an unsigned 32 bit (or more) type" +#endif + +/* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, + * requires an ISOC90 compiler and relies on consistent behavior of sizeof. + */ +typedef size_t png_size_t; +typedef ptrdiff_t png_ptrdiff_t; + +/* libpng needs to know the maximum value of 'size_t' and this controls the + * definition of png_alloc_size_t, below. This maximum value of size_t limits + * but does not control the maximum allocations the library makes - there is + * direct application control of this through png_set_user_limits(). + */ +#ifndef PNG_SMALL_SIZE_T + /* Compiler specific tests for systems where size_t is known to be less than + * 32 bits (some of these systems may no longer work because of the lack of + * 'far' support; see above.) + */ +# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ + (defined(_MSC_VER) && defined(MAXSEG_64K)) +# define PNG_SMALL_SIZE_T +# endif +#endif + +/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no + * smaller than png_uint_32. Casts from png_size_t or png_uint_32 to + * png_alloc_size_t are not necessary; in fact, it is recommended not to use + * them at all so that the compiler can complain when something turns out to be + * problematic. + * + * Casts in the other direction (from png_alloc_size_t to png_size_t or + * png_uint_32) should be explicitly applied; however, we do not expect to + * encounter practical situations that require such conversions. + * + * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than + * 4294967295 - i.e. less than the maximum value of png_uint_32. + */ +#ifdef PNG_SMALL_SIZE_T + typedef png_uint_32 png_alloc_size_t; +#else + typedef png_size_t png_alloc_size_t; +#endif + +/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler + * implementations of Intel CPU specific support of user-mode segmented address + * spaces, where 16-bit pointers address more than 65536 bytes of memory using + * separate 'segment' registers. The implementation requires two different + * types of pointer (only one of which includes the segment value.) + * + * If required this support is available in version 1.2 of libpng and may be + * available in versions through 1.5, although the correctness of the code has + * not been verified recently. + */ + +/* Typedef for floating-point numbers that are converted to fixed-point with a + * multiple of 100,000, e.g., gamma + */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void * png_voidp; +typedef const void * png_const_voidp; +typedef png_byte * png_bytep; +typedef const png_byte * png_const_bytep; +typedef png_uint_32 * png_uint_32p; +typedef const png_uint_32 * png_const_uint_32p; +typedef png_int_32 * png_int_32p; +typedef const png_int_32 * png_const_int_32p; +typedef png_uint_16 * png_uint_16p; +typedef const png_uint_16 * png_const_uint_16p; +typedef png_int_16 * png_int_16p; +typedef const png_int_16 * png_const_int_16p; +typedef char * png_charp; +typedef const char * png_const_charp; +typedef png_fixed_point * png_fixed_point_p; +typedef const png_fixed_point * png_const_fixed_point_p; +typedef png_size_t * png_size_tp; +typedef const png_size_t * png_const_size_tp; + +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double * png_doublep; +typedef const double * png_const_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte * * png_bytepp; +typedef png_uint_32 * * png_uint_32pp; +typedef png_int_32 * * png_int_32pp; +typedef png_uint_16 * * png_uint_16pp; +typedef png_int_16 * * png_int_16pp; +typedef const char * * png_const_charpp; +typedef char * * png_charpp; +typedef png_fixed_point * * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double * * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char * * * png_charppp; + +#endif /* PNG_BUILDING_SYMBOL_TABLE */ + +#endif /* PNGCONF_H */ diff --git a/lib/windows32/include/pnglibconf.h b/lib/windows32/include/pnglibconf.h new file mode 100644 index 0000000..2719f00 --- /dev/null +++ b/lib/windows32/include/pnglibconf.h @@ -0,0 +1,216 @@ +/* libpng 1.6.18 STANDARD API DEFINITION */ + +/* pnglibconf.h - library build configuration */ + +/* Libpng version 1.6.18 - July 23, 2015 */ + +/* Copyright (c) 1998-2014 Glenn Randers-Pehrson */ + +/* This code is released under the libpng license. */ +/* For conditions of distribution and use, see the disclaimer */ +/* and license in png.h */ + +/* pnglibconf.h */ +/* Machine generated file: DO NOT EDIT */ +/* Derived from: scripts/pnglibconf.dfa */ +#ifndef PNGLCONF_H +#define PNGLCONF_H +/* options */ +#define PNG_16BIT_SUPPORTED +#define PNG_ALIGNED_MEMORY_SUPPORTED +/*#undef PNG_ARM_NEON_API_SUPPORTED*/ +/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ +#define PNG_BENIGN_ERRORS_SUPPORTED +#define PNG_BENIGN_READ_ERRORS_SUPPORTED +/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ +#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_COLORSPACE_SUPPORTED +#define PNG_CONSOLE_IO_SUPPORTED +#define PNG_CONVERT_tIME_SUPPORTED +#define PNG_EASY_ACCESS_SUPPORTED +/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ +#define PNG_ERROR_TEXT_SUPPORTED +#define PNG_FIXED_POINT_SUPPORTED +#define PNG_FLOATING_ARITHMETIC_SUPPORTED +#define PNG_FLOATING_POINT_SUPPORTED +#define PNG_FORMAT_AFIRST_SUPPORTED +#define PNG_FORMAT_BGR_SUPPORTED +#define PNG_GAMMA_SUPPORTED +#define PNG_GET_PALETTE_MAX_SUPPORTED +#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +#define PNG_INCH_CONVERSIONS_SUPPORTED +#define PNG_INFO_IMAGE_SUPPORTED +#define PNG_IO_STATE_SUPPORTED +#define PNG_MNG_FEATURES_SUPPORTED +#define PNG_POINTER_INDEXING_SUPPORTED +#define PNG_PROGRESSIVE_READ_SUPPORTED +#define PNG_READ_16BIT_SUPPORTED +#define PNG_READ_ALPHA_MODE_SUPPORTED +#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_BGR_SUPPORTED +#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_READ_COMPOSITE_NODIV_SUPPORTED +#define PNG_READ_COMPRESSED_TEXT_SUPPORTED +#define PNG_READ_EXPAND_16_SUPPORTED +#define PNG_READ_EXPAND_SUPPORTED +#define PNG_READ_FILLER_SUPPORTED +#define PNG_READ_GAMMA_SUPPORTED +#define PNG_READ_GET_PALETTE_MAX_SUPPORTED +#define PNG_READ_GRAY_TO_RGB_SUPPORTED +#define PNG_READ_INTERLACING_SUPPORTED +#define PNG_READ_INT_FUNCTIONS_SUPPORTED +#define PNG_READ_INVERT_ALPHA_SUPPORTED +#define PNG_READ_INVERT_SUPPORTED +#define PNG_READ_OPT_PLTE_SUPPORTED +#define PNG_READ_PACKSWAP_SUPPORTED +#define PNG_READ_PACK_SUPPORTED +#define PNG_READ_QUANTIZE_SUPPORTED +#define PNG_READ_RGB_TO_GRAY_SUPPORTED +#define PNG_READ_SCALE_16_TO_8_SUPPORTED +#define PNG_READ_SHIFT_SUPPORTED +#define PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_STRIP_ALPHA_SUPPORTED +#define PNG_READ_SUPPORTED +#define PNG_READ_SWAP_ALPHA_SUPPORTED +#define PNG_READ_SWAP_SUPPORTED +#define PNG_READ_TEXT_SUPPORTED +#define PNG_READ_TRANSFORMS_SUPPORTED +#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_READ_USER_CHUNKS_SUPPORTED +#define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_bKGD_SUPPORTED +#define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_gAMA_SUPPORTED +#define PNG_READ_hIST_SUPPORTED +#define PNG_READ_iCCP_SUPPORTED +#define PNG_READ_iTXt_SUPPORTED +#define PNG_READ_oFFs_SUPPORTED +#define PNG_READ_pCAL_SUPPORTED +#define PNG_READ_pHYs_SUPPORTED +#define PNG_READ_sBIT_SUPPORTED +#define PNG_READ_sCAL_SUPPORTED +#define PNG_READ_sPLT_SUPPORTED +#define PNG_READ_sRGB_SUPPORTED +#define PNG_READ_tEXt_SUPPORTED +#define PNG_READ_tIME_SUPPORTED +#define PNG_READ_tRNS_SUPPORTED +#define PNG_READ_zTXt_SUPPORTED +#define PNG_SAVE_INT_32_SUPPORTED +#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_SETJMP_SUPPORTED +#define PNG_SET_OPTION_SUPPORTED +#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_SET_USER_LIMITS_SUPPORTED +#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED +#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED +#define PNG_SIMPLIFIED_READ_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_SUPPORTED +#define PNG_STDIO_SUPPORTED +#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_TEXT_SUPPORTED +#define PNG_TIME_RFC1123_SUPPORTED +#define PNG_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_CHUNKS_SUPPORTED +#define PNG_USER_LIMITS_SUPPORTED +#define PNG_USER_MEM_SUPPORTED +#define PNG_USER_TRANSFORM_INFO_SUPPORTED +#define PNG_USER_TRANSFORM_PTR_SUPPORTED +#define PNG_WARNINGS_SUPPORTED +#define PNG_WRITE_16BIT_SUPPORTED +#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_BGR_SUPPORTED +#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED +#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED +#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +#define PNG_WRITE_FILLER_SUPPORTED +#define PNG_WRITE_FILTER_SUPPORTED +#define PNG_WRITE_FLUSH_SUPPORTED +#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED +#define PNG_WRITE_INTERLACING_SUPPORTED +#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED +#define PNG_WRITE_INVERT_ALPHA_SUPPORTED +#define PNG_WRITE_INVERT_SUPPORTED +#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED +#define PNG_WRITE_PACKSWAP_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED +#define PNG_WRITE_SHIFT_SUPPORTED +#define PNG_WRITE_SUPPORTED +#define PNG_WRITE_SWAP_ALPHA_SUPPORTED +#define PNG_WRITE_SWAP_SUPPORTED +#define PNG_WRITE_TEXT_SUPPORTED +#define PNG_WRITE_TRANSFORMS_SUPPORTED +#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_WRITE_USER_TRANSFORM_SUPPORTED +#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_WRITE_bKGD_SUPPORTED +#define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_gAMA_SUPPORTED +#define PNG_WRITE_hIST_SUPPORTED +#define PNG_WRITE_iCCP_SUPPORTED +#define PNG_WRITE_iTXt_SUPPORTED +#define PNG_WRITE_oFFs_SUPPORTED +#define PNG_WRITE_pCAL_SUPPORTED +#define PNG_WRITE_pHYs_SUPPORTED +#define PNG_WRITE_sBIT_SUPPORTED +#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_sPLT_SUPPORTED +#define PNG_WRITE_sRGB_SUPPORTED +#define PNG_WRITE_tEXt_SUPPORTED +#define PNG_WRITE_tIME_SUPPORTED +#define PNG_WRITE_tRNS_SUPPORTED +#define PNG_WRITE_zTXt_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_iTXt_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_tEXt_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_tRNS_SUPPORTED +#define PNG_zTXt_SUPPORTED +/* end of options */ +/* settings */ +#define PNG_API_RULE 0 +#define PNG_COST_SHIFT 3 +#define PNG_DEFAULT_READ_MACROS 1 +#define PNG_GAMMA_THRESHOLD_FIXED 5000 +#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE +#define PNG_INFLATE_BUF_SIZE 1024 +#define PNG_LINKAGE_API extern +#define PNG_LINKAGE_CALLBACK extern +#define PNG_LINKAGE_DATA extern +#define PNG_LINKAGE_FUNCTION extern +#define PNG_MAX_GAMMA_8 11 +#define PNG_QUANTIZE_BLUE_BITS 5 +#define PNG_QUANTIZE_GREEN_BITS 5 +#define PNG_QUANTIZE_RED_BITS 5 +#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) +#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 +#define PNG_USER_CHUNK_CACHE_MAX 1000 +#define PNG_USER_CHUNK_MALLOC_MAX 8000000 +#define PNG_USER_HEIGHT_MAX 1000000 +#define PNG_USER_WIDTH_MAX 1000000 +#define PNG_WEIGHT_SHIFT 8 +#define PNG_ZBUF_SIZE 8192 +#define PNG_ZLIB_VERNUM 0 /* unknown */ +#define PNG_Z_DEFAULT_COMPRESSION (-1) +#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 +#define PNG_Z_DEFAULT_STRATEGY 1 +#define PNG_sCAL_PRECISION 5 +#define PNG_sRGB_PROFILE_CHECKS 2 +/* end of settings */ +#endif /* PNGLCONF_H */ diff --git a/lib/windows32/include/steam/isteamapplist.h b/lib/windows32/include/steam/isteamapplist.h new file mode 100644 index 0000000..d678909 --- /dev/null +++ b/lib/windows32/include/steam/isteamapplist.h @@ -0,0 +1,63 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPLIST_H +#define ISTEAMAPPLIST_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamtypes.h" + +//----------------------------------------------------------------------------- +// Purpose: This is a restricted interface that can only be used by previously approved apps, +// contact your Steam Account Manager if you believe you need access to this API. +// This interface lets you detect installed apps for the local Steam client, useful for debugging tools +// to offer lists of apps to debug via Steam. +//----------------------------------------------------------------------------- +class ISteamAppList +{ +public: + virtual uint32 GetNumInstalledApps() = 0; + virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; + + virtual int GetAppName( AppId_t nAppID, OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found + virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found + + virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game +}; + +#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when a new app is installed +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when an app is uninstalled +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) +#endif // ISTEAMAPPLIST_H diff --git a/lib/windows32/include/steam/isteamapps.h b/lib/windows32/include/steam/isteamapps.h new file mode 100644 index 0000000..9a97b4a --- /dev/null +++ b/lib/windows32/include/steam/isteamapps.h @@ -0,0 +1,176 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPS_H +#define ISTEAMAPPS_H +#ifdef _WIN32 +#pragma once +#endif + +const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key + + +//----------------------------------------------------------------------------- +// Purpose: interface to app data +//----------------------------------------------------------------------------- +class ISteamApps +{ +public: + virtual bool BIsSubscribed() = 0; + virtual bool BIsLowViolence() = 0; + virtual bool BIsCybercafe() = 0; + virtual bool BIsVACBanned() = 0; + virtual const char *GetCurrentGameLanguage() = 0; + virtual const char *GetAvailableGameLanguages() = 0; + + // only use this member if you need to check ownership of another game related to yours, a demo for example + virtual bool BIsSubscribedApp( AppId_t appID ) = 0; + + // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed + virtual bool BIsDlcInstalled( AppId_t appID ) = 0; + + // returns the Unix time of the purchase of the app + virtual uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID ) = 0; + + // Checks if the user is subscribed to the current app through a free weekend + // This function will return false for users who have a retail or other type of license + // Before using, please ask your Valve technical contact how to package and secure your free weekened + virtual bool BIsSubscribedFromFreeWeekend() = 0; + + // Returns the number of DLC pieces for the running app + virtual int GetDLCCount() = 0; + + // Returns metadata for DLC by index, of range [0, GetDLCCount()] + virtual bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize ) = 0; + + // Install/Uninstall control for optional DLC + virtual void InstallDLC( AppId_t nAppID ) = 0; + virtual void UninstallDLC( AppId_t nAppID ) = 0; + + // Request legacy cd-key for yourself or owned DLC. If you are interested in this + // data then make sure you provide us with a list of valid keys to be distributed + // to users when they purchase the game, before the game ships. + // You'll receive an AppProofOfPurchaseKeyResponse_t callback when + // the key is available (which may be immediately). + virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0; + + virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch + virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing + virtual uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots ) = 0; // return installed depots in mount order + + // returns current app install folder for AppID, returns folder name length + virtual uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize ) = 0; + virtual bool BIsAppInstalled( AppId_t appID ) = 0; // returns true if that app is installed (not necessarily owned) + + virtual CSteamID GetAppOwner() = 0; // returns the SteamID of the original owner. If different from current user, it's borrowed + + // Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc. + // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. + // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + // but it is advised that you not param names beginning with an underscore for your own features. + virtual const char *GetLaunchQueryParam( const char *pchKey ) = 0; + + // get download progress for optional DLC + virtual bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // return the buildid of this app, may change at any time based on backend updates to the game + virtual int GetAppBuildId() = 0; + + // Request all proof of purchase keys for the calling appid and asociated DLC. + // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with + // appropriate appid values, ending with a final callback where the m_nAppId + // member is k_uAppIdInvalid (zero). + virtual void RequestAllProofOfPurchaseKeys() = 0; + + CALL_RESULT( FileDetailsResult_t ) + virtual SteamAPICall_t GetFileDetails( const char* pszFileName ) = 0; +}; + +#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: posted after the user gains ownership of DLC & that DLC is installed +//----------------------------------------------------------------------------- +struct DlcInstalled_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 5 }; + AppId_t m_nAppID; // AppID of the DLC +}; + + +//----------------------------------------------------------------------------- +// Purpose: possible results when registering an activation code +//----------------------------------------------------------------------------- +enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RegisterActivationCode() +//----------------------------------------------------------------------------- +struct RegisterActivationCodeResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; + ERegisterActivationCodeResult m_eResult; + uint32 m_unPackageRegistered; // package that was registered. Only set on success +}; + + +//--------------------------------------------------------------------------------- +// Purpose: posted after the user gains executes a steam url with query parameters +// such as steam://run/<appid>//?param1=value1;param2=value2;param3=value3; etc +// while the game is already running. The new params can be queried +// with GetLaunchQueryParam. +//--------------------------------------------------------------------------------- +struct NewLaunchQueryParameters_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys +// for supporting third-party CD keys, or other proof-of-purchase systems. +//----------------------------------------------------------------------------- +struct AppProofOfPurchaseKeyResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; + EResult m_eResult; + uint32 m_nAppID; + uint32 m_cchKeyLength; + char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to GetFileDetails +//----------------------------------------------------------------------------- +struct FileDetailsResult_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 23 }; + EResult m_eResult; + uint64 m_ulFileSize; // original file size in bytes + uint8 m_FileSHA[20]; // original file SHA1 hash + uint32 m_unFlags; // +}; + + +#pragma pack( pop ) +#endif // ISTEAMAPPS_H diff --git a/lib/windows32/include/steam/isteamappticket.h b/lib/windows32/include/steam/isteamappticket.h new file mode 100644 index 0000000..21fb9e1 --- /dev/null +++ b/lib/windows32/include/steam/isteamappticket.h @@ -0,0 +1,28 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: a private, but well versioned, interface to get at critical bits +// of a steam3 appticket - consumed by the simple drm wrapper to let it +// ask about ownership with greater confidence. +// +//============================================================================= + +#ifndef ISTEAMAPPTICKET_H +#define ISTEAMAPPTICKET_H +#pragma once + +//----------------------------------------------------------------------------- +// Purpose: hand out a reasonable "future proof" view of an app ownership ticket +// the raw (signed) buffer, and indices into that buffer where the appid and +// steamid are located. the sizes of the appid and steamid are implicit in +// (each version of) the interface - currently uin32 appid and uint64 steamid +//----------------------------------------------------------------------------- +class ISteamAppTicket +{ +public: + virtual uint32 GetAppOwnershipTicketData( uint32 nAppID, void *pvBuffer, uint32 cbBufferLength, uint32 *piAppId, uint32 *piSteamId, uint32 *piSignature, uint32 *pcbSignature ) = 0; +}; + +#define STEAMAPPTICKET_INTERFACE_VERSION "STEAMAPPTICKET_INTERFACE_VERSION001" + + +#endif // ISTEAMAPPTICKET_H diff --git a/lib/windows32/include/steam/isteamclient.h b/lib/windows32/include/steam/isteamclient.h new file mode 100644 index 0000000..45d707d --- /dev/null +++ b/lib/windows32/include/steam/isteamclient.h @@ -0,0 +1,520 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: Main interface for loading and accessing Steamworks API's from the +// Steam client. +// For most uses, this code is wrapped inside of SteamAPI_Init() +//============================================================================= + +#ifndef ISTEAMCLIENT_H +#define ISTEAMCLIENT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + +// Define compile time assert macros to let us validate the structure sizes. +#define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; + +#ifndef REFERENCE +#define REFERENCE(arg) ((void)arg) +#endif + +#if defined(STEAM_API_EXPORTS) && !defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) __VA_ARGS__ +#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) +#else +#define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: +#endif + +#if defined(__linux__) || defined(__APPLE__) +// The 32-bit version of gcc has the alignment requirement for uint64 and double set to +// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. +// The 64-bit version of gcc has the alignment requirement for these types set to +// 8 meaning that unless we use #pragma pack(4) our structures will get bigger. +// The 64-bit structure packing has to match the 32-bit structure packing for each platform. +#define VALVE_CALLBACK_PACK_SMALL +#else +#define VALVE_CALLBACK_PACK_LARGE +#endif + +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error ??? +#endif + +typedef struct ValvePackingSentinel_t +{ + uint32 m_u32; + uint64 m_u64; + uint16 m_u16; + double m_d; +} ValvePackingSentinel_t; + +#pragma pack( pop ) + + +#if defined(VALVE_CALLBACK_PACK_SMALL) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 ) +#elif defined(VALVE_CALLBACK_PACK_LARGE) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 ) +#else +#error ??? +#endif + + +// handle to a communication pipe to the Steam client +typedef int32 HSteamPipe; +// handle to single instance of a steam user +typedef int32 HSteamUser; +// function prototype +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); +extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); +#if defined( __SNC__ ) + #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor +#endif + +// interface predec +class ISteamUser; +class ISteamGameServer; +class ISteamFriends; +class ISteamUtils; +class ISteamMatchmaking; +class ISteamContentServer; +class ISteamMatchmakingServers; +class ISteamUserStats; +class ISteamApps; +class ISteamNetworking; +class ISteamRemoteStorage; +class ISteamScreenshots; +class ISteamMusic; +class ISteamMusicRemote; +class ISteamGameServerStats; +class ISteamPS3OverlayRender; +class ISteamHTTP; +class ISteamUnifiedMessages; +class ISteamController; +class ISteamUGC; +class ISteamAppList; +class ISteamHTMLSurface; +class ISteamInventory; +class ISteamVideo; + +//----------------------------------------------------------------------------- +// Purpose: Interface to creating a new steam instance, or to +// connect to an existing steam instance, whether it's in a +// different process or is local. +// +// For most scenarios this is all handled automatically via SteamAPI_Init(). +// You'll only need these APIs if you have a more complex versioning scheme, +// or if you want to implement a multiplexed gameserver where a single process +// is handling multiple games at once with independent gameserver SteamIDs. +//----------------------------------------------------------------------------- +class ISteamClient +{ +public: + // Creates a communication pipe to the Steam client. + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamPipe CreateSteamPipe() = 0; + + // Releases a previously created communications pipe + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; + + // connects to an existing global user, failing if none exists + // used by the game to coordinate with the steamUI + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; + + // used by game servers, create a steam user that won't be shared with anyone else + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0; + + // removes an allocated user + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0; + + // retrieves the ISteamUser interface associated with the handle + virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // retrieves the ISteamGameServer interface associated with the handle + virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // set the local IP and Port to bind to + // this must be set before CreateLocalUser() + virtual void SetLocalIPBinding( uint32 unIP, uint16 usPort ) = 0; + + // returns the ISteamFriends interface + virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUtils interface + virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmaking interface + virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmakingServers interface + virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the a generic interface + virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUserStats interface + virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamGameServerStats interface + virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns apps interface + virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // networking + virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // remote storage + virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // user screenshots + virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message. + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Trigger global shutdown for the DLL + virtual bool BShutdownIfAllPipesClosed() = 0; + + // Expose HTTP interface + virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUnifiedMessages interface + virtual ISteamUnifiedMessages *GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamController interface + virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUGC interface + virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns app list interface, only available on specially registered apps + virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player + virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player Remote + virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // html page display + virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // Helper functions for internal Steam usage + STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) + + // inventory + virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Video + virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; +}; + + +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient017" + +//----------------------------------------------------------------------------- +// Purpose: Base values for callback identifiers, each callback must +// have a unique ID. +//----------------------------------------------------------------------------- +enum { k_iSteamUserCallbacks = 100 }; +enum { k_iSteamGameServerCallbacks = 200 }; +enum { k_iSteamFriendsCallbacks = 300 }; +enum { k_iSteamBillingCallbacks = 400 }; +enum { k_iSteamMatchmakingCallbacks = 500 }; +enum { k_iSteamContentServerCallbacks = 600 }; +enum { k_iSteamUtilsCallbacks = 700 }; +enum { k_iClientFriendsCallbacks = 800 }; +enum { k_iClientUserCallbacks = 900 }; +enum { k_iSteamAppsCallbacks = 1000 }; +enum { k_iSteamUserStatsCallbacks = 1100 }; +enum { k_iSteamNetworkingCallbacks = 1200 }; +enum { k_iClientRemoteStorageCallbacks = 1300 }; +enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamGameServerItemsCallbacks = 1500 }; +enum { k_iClientUtilsCallbacks = 1600 }; +enum { k_iSteamGameCoordinatorCallbacks = 1700 }; +enum { k_iSteamGameServerStatsCallbacks = 1800 }; +enum { k_iSteam2AsyncCallbacks = 1900 }; +enum { k_iSteamGameStatsCallbacks = 2000 }; +enum { k_iClientHTTPCallbacks = 2100 }; +enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamScreenshotsCallbacks = 2300 }; +enum { k_iClientAudioCallbacks = 2400 }; +enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +enum { k_iSteamStreamLauncherCallbacks = 2600 }; +enum { k_iClientControllerCallbacks = 2700 }; +enum { k_iSteamControllerCallbacks = 2800 }; +enum { k_iClientParentalSettingsCallbacks = 2900 }; +enum { k_iClientDeviceAuthCallbacks = 3000 }; +enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; +enum { k_iClientMusicCallbacks = 3200 }; +enum { k_iClientRemoteClientManagerCallbacks = 3300 }; +enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamStreamClientCallbacks = 3500 }; +enum { k_IClientProductBuilderCallbacks = 3600 }; +enum { k_iClientShortcutsCallbacks = 3700 }; +enum { k_iClientRemoteControlManagerCallbacks = 3800 }; +enum { k_iSteamAppListCallbacks = 3900 }; +enum { k_iSteamMusicCallbacks = 4000 }; +enum { k_iSteamMusicRemoteCallbacks = 4100 }; +enum { k_iClientVRCallbacks = 4200 }; +enum { k_iClientGameNotificationCallbacks = 4300 }; +enum { k_iSteamGameNotificationCallbacks = 4400 }; +enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; +enum { k_iClientVideoCallbacks = 4600 }; +enum { k_iClientInventoryCallbacks = 4700 }; +enum { k_iClientBluetoothManagerCallbacks = 4800 }; + +//----------------------------------------------------------------------------- +// The CALLBACK macros are for client side callback logging enabled with +// log_callback <first callnbackID> <last callbackID> +// Do not change any of these. +//----------------------------------------------------------------------------- + +#ifdef STEAM_CALLBACK_INSPECTION_ENABLED + +#define DEFINE_CALLBACK( callbackname, callbackid ) \ +struct callbackname { \ + typedef callbackname SteamCallback_t; \ + enum { k_iCallback = callbackid }; \ + static callbackname *GetNullPointer() { return 0; } \ + static const char *GetCallbackName() { return #callbackname; } \ + static uint32 GetCallbackID() { return callbackname::k_iCallback; } + +#define CALLBACK_MEMBER( varidx, vartype, varname ) \ + public: vartype varname ; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname; \ + varSize = sizeof( vartype ); \ + varCount = 1; \ + *pszName = #varname; *pszType = #vartype; } + +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) \ + public: vartype varname [ varcount ]; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname[0]; \ + varSize = sizeof( vartype ); \ + varCount = varcount; \ + *pszName = #varname; *pszType = #vartype; } + + +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) \ + static uint32 GetNumMemberVariables() { return numvars; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + switch ( index ) { default : return false; + + +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) case varidx : GetMemberVar_##varidx( varOffset, varSize, varCount, pszName, pszType ); return true; + +#define END_CALLBACK_INTERNAL_END() }; } }; + +#define END_DEFINE_CALLBACK_0() \ + static uint32 GetNumMemberVariables() { return 0; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { REFERENCE( pszType ); REFERENCE( pszName ); REFERENCE( varCount ); REFERENCE( varSize ); REFERENCE( varOffset ); REFERENCE( index ); return false; } \ + }; + +#else + +#define DEFINE_CALLBACK( callbackname, callbackid ) struct callbackname { typedef callbackname SteamCallback_t; enum { k_iCallback = callbackid }; +#define CALLBACK_MEMBER( varidx, vartype, varname ) public: vartype varname ; +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) public: vartype varname [ varcount ]; +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) +#define END_CALLBACK_INTERNAL_END() }; +#define END_DEFINE_CALLBACK_0() }; + +#endif + +#define END_DEFINE_CALLBACK_1() \ + END_CALLBACK_INTERNAL_BEGIN( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_2() \ + END_CALLBACK_INTERNAL_BEGIN( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_3() \ + END_CALLBACK_INTERNAL_BEGIN( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_4() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_5() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_END() + + +#define END_DEFINE_CALLBACK_6() \ + END_CALLBACK_INTERNAL_BEGIN( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_7() \ + END_CALLBACK_INTERNAL_BEGIN( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_8() \ + END_CALLBACK_INTERNAL_BEGIN( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_9() \ + END_CALLBACK_INTERNAL_BEGIN( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_10() \ + END_CALLBACK_INTERNAL_BEGIN( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_11() \ + END_CALLBACK_INTERNAL_BEGIN( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_12() \ + END_CALLBACK_INTERNAL_BEGIN( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_13() \ + END_CALLBACK_INTERNAL_BEGIN( 13 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_14() \ + END_CALLBACK_INTERNAL_BEGIN( 14 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 13 ) \ + END_CALLBACK_INTERNAL_END() + +#endif // ISTEAMCLIENT_H diff --git a/lib/windows32/include/steam/isteamcontroller.h b/lib/windows32/include/steam/isteamcontroller.h new file mode 100644 index 0000000..68f7af6 --- /dev/null +++ b/lib/windows32/include/steam/isteamcontroller.h @@ -0,0 +1,251 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to valve controller +// +//============================================================================= + +#ifndef ISTEAMCONTROLLER_H +#define ISTEAMCONTROLLER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define STEAM_CONTROLLER_MAX_COUNT 16 + +#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 + +#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 + +#define STEAM_CONTROLLER_MAX_ORIGINS 8 + +// When sending an option to a specific controller handle, you can send to all controllers via this command +#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX + +#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f +#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f + +enum ESteamControllerPad +{ + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right +}; + +enum EControllerSource +{ + k_EControllerSource_None, + k_EControllerSource_LeftTrackpad, + k_EControllerSource_RightTrackpad, + k_EControllerSource_Joystick, + k_EControllerSource_ABXY, + k_EControllerSource_Switch, + k_EControllerSource_LeftTrigger, + k_EControllerSource_RightTrigger, + k_EControllerSource_Gyro, + k_EControllerSource_Count +}; + +enum EControllerSourceMode +{ + k_EControllerSourceMode_None, + k_EControllerSourceMode_Dpad, + k_EControllerSourceMode_Buttons, + k_EControllerSourceMode_FourButtons, + k_EControllerSourceMode_AbsoluteMouse, + k_EControllerSourceMode_RelativeMouse, + k_EControllerSourceMode_JoystickMove, + k_EControllerSourceMode_JoystickCamera, + k_EControllerSourceMode_ScrollWheel, + k_EControllerSourceMode_Trigger, + k_EControllerSourceMode_TouchMenu, + k_EControllerSourceMode_MouseJoystick, + k_EControllerSourceMode_MouseRegion, + k_EControllerSourceMode_RadialMenu, + k_EControllerSourceMode_Switches +}; + +enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None, + k_EControllerActionOrigin_A, + k_EControllerActionOrigin_B, + k_EControllerActionOrigin_X, + k_EControllerActionOrigin_Y, + k_EControllerActionOrigin_LeftBumper, + k_EControllerActionOrigin_RightBumper, + k_EControllerActionOrigin_LeftGrip, + k_EControllerActionOrigin_RightGrip, + k_EControllerActionOrigin_Start, + k_EControllerActionOrigin_Back, + k_EControllerActionOrigin_LeftPad_Touch, + k_EControllerActionOrigin_LeftPad_Swipe, + k_EControllerActionOrigin_LeftPad_Click, + k_EControllerActionOrigin_LeftPad_DPadNorth, + k_EControllerActionOrigin_LeftPad_DPadSouth, + k_EControllerActionOrigin_LeftPad_DPadWest, + k_EControllerActionOrigin_LeftPad_DPadEast, + k_EControllerActionOrigin_RightPad_Touch, + k_EControllerActionOrigin_RightPad_Swipe, + k_EControllerActionOrigin_RightPad_Click, + k_EControllerActionOrigin_RightPad_DPadNorth, + k_EControllerActionOrigin_RightPad_DPadSouth, + k_EControllerActionOrigin_RightPad_DPadWest, + k_EControllerActionOrigin_RightPad_DPadEast, + k_EControllerActionOrigin_LeftTrigger_Pull, + k_EControllerActionOrigin_LeftTrigger_Click, + k_EControllerActionOrigin_RightTrigger_Pull, + k_EControllerActionOrigin_RightTrigger_Click, + k_EControllerActionOrigin_LeftStick_Move, + k_EControllerActionOrigin_LeftStick_Click, + k_EControllerActionOrigin_LeftStick_DPadNorth, + k_EControllerActionOrigin_LeftStick_DPadSouth, + k_EControllerActionOrigin_LeftStick_DPadWest, + k_EControllerActionOrigin_LeftStick_DPadEast, + k_EControllerActionOrigin_Gyro_Move, + k_EControllerActionOrigin_Gyro_Pitch, + k_EControllerActionOrigin_Gyro_Yaw, + k_EControllerActionOrigin_Gyro_Roll, + + k_EControllerActionOrigin_Count +}; + +// ControllerHandle_t is used to refer to a specific controller. +// This handle will consistently identify a controller, even if it is disconnected and re-connected +typedef uint64 ControllerHandle_t; + + +// These handles are used to refer to a specific in-game action or action set +// All action handles should be queried during initialization for performance reasons +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; + +#pragma pack( push, 1 ) + +struct ControllerAnalogActionData_t +{ + // Type of data coming from this action, this will match what got specified in the action set + EControllerSourceMode eMode; + + // The current state of this action; will be delta updates for mouse actions + float x, y; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerDigitalActionData_t +{ + // The current state of this action; will be true if currently pressed + bool bState; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerMotionData_t +{ + // Sensor-fused absolute rotation; will drift in heading + float rotQuatX; + float rotQuatY; + float rotQuatZ; + float rotQuatW; + + // Positional acceleration + float posAccelX; + float posAccelY; + float posAccelZ; + + // Angular velocity + float rotVelX; + float rotVelY; + float rotVelZ; +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Native Steam controller support API +//----------------------------------------------------------------------------- +class ISteamController +{ +public: + + // Init and Shutdown must be called when starting/ending use of this interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. + virtual void RunFrame() = 0; + + // Enumerate currently connected controllers + // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetConnectedControllers( ControllerHandle_t *handlesOut ) = 0; + + // Invokes the Steam overlay and brings up the binding screen + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; + + // ACTION SETS + // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; + + // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') + // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in + // your state loops, instead of trying to place it in all of your state transitions. + virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0; + virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0; + + // ACTIONS + // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of the supplied digital game action + virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0; + + // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) = 0; + + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of these supplied analog game action + virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0; + + // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) = 0; + + virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0; + + // Trigger a haptic pulse on a controller + virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + + // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. + // nFlags is currently unused and reserved for future use. + virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + + // Returns the associated gamepad index for the specified controller, if emulating a gamepad + virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; + + // Returns the associated controller handle for the specified emulated gamepad + virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; + + // Returns raw motion data from the specified controller + virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0; + + // Attempt to display origins of given action in the controller HUD, for the currently active action set + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; + virtual bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; +}; + +#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController004" + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/windows32/include/steam/isteamfriends.h b/lib/windows32/include/steam/isteamfriends.h new file mode 100644 index 0000000..8013356 --- /dev/null +++ b/lib/windows32/include/steam/isteamfriends.h @@ -0,0 +1,636 @@ +//====== Copyright (C) 1996-2008, Valve Corporation, All rights reserved. ===== +// +// Purpose: interface to both friends list data and general information about users +// +//============================================================================= + +#ifndef ISTEAMFRIENDS_H +#define ISTEAMFRIENDS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamclientpublic.h" + + +//----------------------------------------------------------------------------- +// Purpose: set of relationships to other users +//----------------------------------------------------------------------------- +enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, // was used by the original implementation of the facebook linking feature, but now unused. + + // keep this updated + k_EFriendRelationshipMax = 8, +}; + +// maximum length of friend group name (not including terminating nul!) +const int k_cchMaxFriendsGroupName = 64; + +// maximum number of groups a single user is allowed +const int k_cFriendsGroupLimit = 100; + +// friends group identifier type +typedef int16 FriendsGroupID_t; + +// invalid friends group identifier constant +const FriendsGroupID_t k_FriendsGroupID_Invalid = -1; + +const int k_cEnumerateFollowersMax = 50; + + +//----------------------------------------------------------------------------- +// Purpose: list of states a friend can be in +//----------------------------------------------------------------------------- +enum EPersonaState +{ + k_EPersonaStateOffline = 0, // friend is not currently logged on + k_EPersonaStateOnline = 1, // friend is logged on + k_EPersonaStateBusy = 2, // user is on, but busy + k_EPersonaStateAway = 3, // auto-away feature + k_EPersonaStateSnooze = 4, // auto-away for a long time + k_EPersonaStateLookingToTrade = 5, // Online, trading + k_EPersonaStateLookingToPlay = 6, // Online, wanting to play + k_EPersonaStateMax, +}; + + +//----------------------------------------------------------------------------- +// Purpose: flags for enumerating friends list, or quickly checking a the relationship between users +//----------------------------------------------------------------------------- +enum EFriendFlags +{ + k_EFriendFlagNone = 0x00, + k_EFriendFlagBlocked = 0x01, + k_EFriendFlagFriendshipRequested = 0x02, + k_EFriendFlagImmediate = 0x04, // "regular" friend + k_EFriendFlagClanMember = 0x08, + k_EFriendFlagOnGameServer = 0x10, + // k_EFriendFlagHasPlayedWith = 0x20, // not currently used + // k_EFriendFlagFriendOfFriend = 0x40, // not currently used + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + k_EFriendFlagSuggested = 0x800, + k_EFriendFlagChatMember = 0x1000, + k_EFriendFlagAll = 0xFFFF, +}; + + +// friend game played information +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct FriendGameInfo_t +{ + CGameID m_gameID; + uint32 m_unGameIP; + uint16 m_usGamePort; + uint16 m_usQueryPort; + CSteamID m_steamIDLobby; +}; +#pragma pack( pop ) + +// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. +// The UTF-8 version has to be very generous to accomodate characters that get large when encoded +// in UTF-8. +enum +{ + k_cchPersonaNameMax = 128, + k_cwchPersonaNameMax = 32, +}; + +//----------------------------------------------------------------------------- +// Purpose: user restriction flags +//----------------------------------------------------------------------------- +enum EUserRestriction +{ + k_nUserRestrictionNone = 0, // no known chat/content restriction + k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) + k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat + k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat + k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat + k_nUserRestrictionRating = 16, // user is too young according to rating in current region + k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) + k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) +}; + +//----------------------------------------------------------------------------- +// Purpose: information about user sessions +//----------------------------------------------------------------------------- +struct FriendSessionStateInfo_t +{ + uint32 m_uiOnlineSessionInstances; + uint8 m_uiPublishedToFriendsSessionInstance; +}; + + + +// size limit on chat room or member metadata +const uint32 k_cubChatMetadataMax = 8192; + +// size limits on Rich Presence data +enum { k_cchMaxRichPresenceKeys = 20 }; +enum { k_cchMaxRichPresenceKeyLength = 64 }; +enum { k_cchMaxRichPresenceValueLength = 256 }; + +// These values are passed as parameters to the store +enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +}; + +//----------------------------------------------------------------------------- +// Purpose: interface to accessing information about individual users, +// that can be a friend, in a group, on a game server or in a lobby with the local user +//----------------------------------------------------------------------------- +class ISteamFriends +{ +public: + // returns the local players name - guaranteed to not be NULL. + // this is the same name as on the users community profile page + // this is stored in UTF-8 format + // like all the other interface functions that return a char *, it's important that this pointer is not saved + // off; it will eventually be free'd or re-allocated + virtual const char *GetPersonaName() = 0; + + // Sets the player name, stores it on the server and publishes the changes to all friends who are online. + // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. + // + // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. + // + // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted + // to change the name back, in addition to the SetPersonaNameResponse_t callback. + CALL_RESULT( SetPersonaNameResponse_t ) + virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0; + + // gets the status of the current user + virtual EPersonaState GetPersonaState() = 0; + + // friend iteration + // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria + // then GetFriendByIndex() can then be used to return the id's of each of those users + virtual int GetFriendCount( int iFriendFlags ) = 0; + + // returns the steamID of a user + // iFriend is a index of range [0, GetFriendCount()) + // iFriendsFlags must be the same value as used in GetFriendCount() + // the returned CSteamID can then be used by all the functions below to access details about the user + virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0; + + // returns a relationship to a user + virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0; + + // returns the current status of the specified user + // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user + virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0; + + // returns the name another user - guaranteed to not be NULL. + // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user + // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously + // + virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0; + + // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details + virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0; + // accesses old friends names - returns an empty string when their are no more items in the history + virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0; + // friends steam level + virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0; + + // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. + virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0; + + // friend grouping (tag) apis + // returns the number of friends groups + virtual int GetFriendsGroupCount() = 0; + // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) + virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0; + // returns the name for the given friends group (NULL in the case of invalid friends group IDs) + virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0; + // returns the number of members in a given friends group + virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0; + // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid + virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0; + + // returns true if the specified user meets any of the criteria specified in iFriendFlags + // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values + virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0; + + // clan (group) iteration and access functions + virtual int GetClanCount() = 0; + virtual CSteamID GetClanByIndex( int iClan ) = 0; + virtual const char *GetClanName( CSteamID steamIDClan ) = 0; + virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; + // returns the most recent information we have about what's happening in a clan + virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; + // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + virtual SteamAPICall_t DownloadClanActivityCounts( ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; + + // iterators for getting users in a chat room, lobby, game server or clan + // note that large clans that cannot be iterated by the local user + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + // steamIDSource can be the steamID of a group, game server, lobby or chat room + virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0; + virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0; + + // returns true if the local user can see that steamIDUser is a member or in steamIDSource + virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0; + + // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) + virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0; + + // activates the game overlay, with an optional dialog to open + // valid options are "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements" + virtual void ActivateGameOverlay( const char *pchDialog ) = 0; + + // activates game overlay to a specific place + // valid options are + // "steamid" - opens the overlay web browser to the specified user or groups profile + // "chat" - opens a chat window to the specified user, or joins the group chat + // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API + // "stats" - opens the overlay web browser to the specified user's stats + // "achievements" - opens the overlay web browser to the specified user's achievements + // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend + // "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend + // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite + // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite + virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0; + + // activates game overlay web browser directly to the specified URL + // full address with protocol type is required, e.g. http://www.steamgames.com/ + virtual void ActivateGameOverlayToWebPage( const char *pchURL ) = 0; + + // activates game overlay to store page for app + virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0; + + // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is + // in game + virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0; + + // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. + virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0; + + // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again + virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0; + + // requests information about a user - persona name & avatar + // if bRequireNameOnly is set, then the avatar of a user isn't downloaded + // - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them + // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved + // if returns false, it means that we already have all the details about that user, and functions can be called immediately + virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; + + // requests information about a clan officer list + // when complete, data is returned in ClanOfficerListResponse_t call result + // this makes available the calls below + // you can only ask about clans that a user is a member of + // note that this won't download avatars automatically; if you get an officer, + // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar + CALL_RESULT( ClanOfficerListResponse_t ) + virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0; + + // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed + + // returns the steamID of the clan owner + virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0; + // returns the number of officers in a clan (including the owner) + virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0; + // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) + virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0; + // if current user is chat restricted, he can't send or receive any text/voice chat messages. + // the user can't see custom avatars. But the user can be online and send/recv game invites. + // a chat restricted user can't add friends or join any groups. + virtual uint32 GetUserRestrictions() = 0; + + // Rich Presence data is automatically shared between friends who are in the same game + // Each user has a set of Key/Value pairs + // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength + // There are two magic keys: + // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list + // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + // GetFriendRichPresence() returns an empty string "" if no value is set + // SetRichPresence() to a NULL or an empty string deletes the key + // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() + // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) + virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0; + virtual void ClearRichPresence() = 0; + virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0; + virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0; + virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0; + // Requests rich presence for a specific user. + virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0; + + // rich invite support + // if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game + // if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string + // invites can only be sent to friends + virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; + + // recently-played-with friends iteration + // this iterates the entire list of users recently played with, across games + // GetFriendCoplayTime() returns as a unix time + virtual int GetCoplayFriendCount() = 0; + virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0; + virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0; + virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0; + + // chat interface for games + // this allows in-game access to group (clan) chats from in the game + // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay + // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat + CALL_RESULT( JoinClanChatRoomCompletionResult_t ) + virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0; + virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0; + virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0; + virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0; + virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0; + virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, OUT_STRUCT() CSteamID *psteamidChatter ) = 0; + virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0; + + // interact with the Steam (game overlay / desktop) + virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + + // peer-to-peer chat interception + // this is so you can show P2P chats inline in the game + virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0; + virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0; + virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // following apis + CALL_RESULT( FriendsGetFollowerCount_t ) + virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0; + CALL_RESULT( FriendsIsFollowing_t ) + virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0; + CALL_RESULT( FriendsEnumerateFollowingList_t ) + virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0; +}; + +#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends015" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a friends' status changes +//----------------------------------------------------------------------------- +struct PersonaStateChange_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 4 }; + + uint64 m_ulSteamID; // steamID of the friend who changed + int m_nChangeFlags; // what's changed +}; + + +// used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user +// these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend +enum EPersonaChange +{ + k_EPersonaChangeName = 0x0001, + k_EPersonaChangeStatus = 0x0002, + k_EPersonaChangeComeOnline = 0x0004, + k_EPersonaChangeGoneOffline = 0x0008, + k_EPersonaChangeGamePlayed = 0x0010, + k_EPersonaChangeGameServer = 0x0020, + k_EPersonaChangeAvatar = 0x0040, + k_EPersonaChangeJoinedSource= 0x0080, + k_EPersonaChangeLeftSource = 0x0100, + k_EPersonaChangeRelationshipChanged = 0x0200, + k_EPersonaChangeNameFirstSet = 0x0400, + k_EPersonaChangeFacebookInfo = 0x0800, + k_EPersonaChangeNickname = 0x1000, + k_EPersonaChangeSteamLevel = 0x2000, +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted when game overlay activates or deactivates +// the game can use this to be pause or resume single player games +//----------------------------------------------------------------------------- +struct GameOverlayActivated_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; + uint8 m_bActive; // true if it's just been activated, false otherwise +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a different game server from their friends list +// game client should attempt to connect to specified server when this is received +//----------------------------------------------------------------------------- +struct GameServerChangeRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 32 }; + char m_rgchServer[64]; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") + char m_rgchPassword[64]; // server password, if any +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a lobby from their friends list +// game client should attempt to connect to specified lobby when this is received +//----------------------------------------------------------------------------- +struct GameLobbyJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 33 }; + CSteamID m_steamIDLobby; + + // The friend they did the join via (will be invalid if not directly via a friend) + // + // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but + // the account type will be console user so you can tell at least that this was from a PSN friend + // rather than a Steam friend. + CSteamID m_steamIDFriend; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call +// if the image wasn't already available +//----------------------------------------------------------------------------- +struct AvatarImageLoaded_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 34 }; + CSteamID m_steamID; // steamid the avatar has been loaded for + int m_iImage; // the image index of the now loaded image + int m_iWide; // width of the loaded image + int m_iTall; // height of the loaded image +}; + + +//----------------------------------------------------------------------------- +// Purpose: marks the return of a request officer list call +//----------------------------------------------------------------------------- +struct ClanOfficerListResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 35 }; + CSteamID m_steamIDClan; + int m_cOfficers; + uint8 m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating updated data about friends rich presence information +//----------------------------------------------------------------------------- +struct FriendRichPresenceUpdate_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 36 }; + CSteamID m_steamIDFriend; // friend who's rich presence has changed + AppId_t m_nAppID; // the appID of the game (should always be the current game) +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a game from their friends list +// rich presence will have been set with the "connect" key which is set here +//----------------------------------------------------------------------------- +struct GameRichPresenceJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 37 }; + CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) + char m_rgchConnect[k_cchMaxRichPresenceValueLength]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received for a clan chat the game has joined +//----------------------------------------------------------------------------- +struct GameConnectedClanChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 38 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has joined a clan chat +//----------------------------------------------------------------------------- +struct GameConnectedChatJoin_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 39 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has left the chat we're in +//----------------------------------------------------------------------------- +struct GameConnectedChatLeave_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 40 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + bool m_bKicked; // true if admin kicked + bool m_bDropped; // true if Steam connection dropped +}; + + +//----------------------------------------------------------------------------- +// Purpose: a DownloadClanActivityCounts() call has finished +//----------------------------------------------------------------------------- +struct DownloadClanActivityCountsResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 41 }; + bool m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a JoinClanChatRoom() call has finished +//----------------------------------------------------------------------------- +struct JoinClanChatRoomCompletionResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 42 }; + CSteamID m_steamIDClanChat; + EChatRoomEnterResponse m_eChatRoomEnterResponse; +}; + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received from a user +//----------------------------------------------------------------------------- +struct GameConnectedFriendChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 43 }; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +struct FriendsGetFollowerCount_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 44 }; + EResult m_eResult; + CSteamID m_steamID; + int m_nCount; +}; + + +struct FriendsIsFollowing_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 45 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bIsFollowing; +}; + + +struct FriendsEnumerateFollowingList_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 46 }; + EResult m_eResult; + CSteamID m_rgSteamID[ k_cEnumerateFollowersMax ]; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; +}; + +//----------------------------------------------------------------------------- +// Purpose: reports the result of an attempt to change the user's persona name +//----------------------------------------------------------------------------- +struct SetPersonaNameResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 47 }; + + bool m_bSuccess; // true if name change succeeded completely. + bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) + EResult m_result; // detailed result code +}; + + +#pragma pack( pop ) + +#endif // ISTEAMFRIENDS_H diff --git a/lib/windows32/include/steam/isteamgamecoordinator.h b/lib/windows32/include/steam/isteamgamecoordinator.h new file mode 100644 index 0000000..5ab0637 --- /dev/null +++ b/lib/windows32/include/steam/isteamgamecoordinator.h @@ -0,0 +1,75 @@ +//====== Copyright ©, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to the game coordinator for this application +// +//============================================================================= + +#ifndef ISTEAMGAMECOORDINATOR +#define ISTEAMGAMECOORDINATOR +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible return values from the ISteamGameCoordinator API +enum EGCResults +{ + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for sending and receiving messages from the Game Coordinator +// for this application +//----------------------------------------------------------------------------- +class ISteamGameCoordinator +{ +public: + + // sends a message to the Game Coordinator + virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0; + + // returns true if there is a message waiting from the game coordinator + virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0; + + // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or + // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. + // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned + // and the message remains at the head of the queue. + virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + +}; +#define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - A new message is available for reading from the message queue +struct GCMessageAvailable_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 }; + uint32 m_nMessageSize; +}; + +// callback notification - A message failed to make it to the GC. It may be down temporarily +struct GCMessageFailed_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMGAMECOORDINATOR diff --git a/lib/windows32/include/steam/isteamgameserver.h b/lib/windows32/include/steam/isteamgameserver.h new file mode 100644 index 0000000..e19f1dd --- /dev/null +++ b/lib/windows32/include/steam/isteamgameserver.h @@ -0,0 +1,387 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam for game servers +// +//============================================================================= + +#ifndef ISTEAMGAMESERVER_H +#define ISTEAMGAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServer +{ +public: + +// +// Basic server data. These properties, if set, must be set before before calling LogOn. They +// may not be changed after logged in. +// + + /// This is called by SteamGameServer_Init, and you will usually not need to call it directly + virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; + + /// Game product identifier. This is currently used by the master server for version checking purposes. + /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. + virtual void SetProduct( const char *pszProduct ) = 0; + + /// Description of the game. This is a required field and is displayed in the steam server browser....for now. + /// This is a required field, but it will go away eventually, as the data should be determined from the AppID. + virtual void SetGameDescription( const char *pszGameDescription ) = 0; + + /// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning + /// this application is the original game, not a mod. + /// + /// @see k_cbMaxGameServerGameDir + virtual void SetModDir( const char *pszModDir ) = 0; + + /// Is this is a dedicated server? The default value is false. + virtual void SetDedicatedServer( bool bDedicated ) = 0; + +// +// Login +// + + /// Begin process to login to a persistent game server account + /// + /// You need to register for callbacks to determine the result of this operation. + /// @see SteamServersConnected_t + /// @see SteamServerConnectFailure_t + /// @see SteamServersDisconnected_t + virtual void LogOn( const char *pszToken ) = 0; + + /// Login to a generic, anonymous account. + /// + /// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, + /// but this is no longer the case. + virtual void LogOnAnonymous() = 0; + + /// Begin process of logging game server out of steam + virtual void LogOff() = 0; + + // status functions + virtual bool BLoggedOn() = 0; + virtual bool BSecure() = 0; + virtual CSteamID GetSteamID() = 0; + + /// Returns true if the master server has requested a restart. + /// Only returns true once per request. + virtual bool WasRestartRequested() = 0; + +// +// Server state. These properties may be changed at any time. +// + + /// Max player count that will be reported to server browser and client queries + virtual void SetMaxPlayerCount( int cPlayersMax ) = 0; + + /// Number of bots. Default value is zero + virtual void SetBotPlayerCount( int cBotplayers ) = 0; + + /// Set the name of server as it will appear in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetServerName( const char *pszServerName ) = 0; + + /// Set name of map to report in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetMapName( const char *pszMapName ) = 0; + + /// Let people know if your server will require a password + virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; + + /// Spectator server. The default value is zero, meaning the service + /// is not used. + virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; + + /// Name of the spectator server. (Only used if spectator port is nonzero.) + /// + /// @see k_cbMaxGameServerMapName + virtual void SetSpectatorServerName( const char *pszSpectatorServerName ) = 0; + + /// Call this to clear the whole list of key/values that are sent in rules queries. + virtual void ClearAllKeyValues() = 0; + + /// Call this to add/update a key/value pair. + virtual void SetKeyValue( const char *pKey, const char *pValue ) = 0; + + /// Sets a string defining the "gametags" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// + /// @see k_cbMaxGameServerTags + virtual void SetGameTags( const char *pchGameTags ) = 0; + + /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// don't set this unless it actually changes, its only uploaded to the master once (when + /// acknowledged) + /// + /// @see k_cbMaxGameServerGameData + virtual void SetGameData( const char *pchGameData ) = 0; + + /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region + virtual void SetRegion( const char *pszRegion ) = 0; + +// +// Player list management / authentication +// + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + + // New auth system APIs - do not mix with the old auth system APIs. + // ---------------------------------------------------------------- + + // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t + // returns false if we're not connected to the steam servers and thus cannot ask + virtual bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) = 0; + + + // these two functions s are deprecated, and will not return results + // they will be removed in a future version of the SDK + virtual void GetGameplayStats( ) = 0; + CALL_RESULT( GSReputation_t ) + virtual SteamAPICall_t GetServerReputation() = 0; + + // Returns the public IP of the server according to Steam, useful when the server is + // behind NAT and you want to advertise its IP in a lobby for other clients to directly + // connect to + virtual uint32 GetPublicIP() = 0; + +// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own +// socket to talk to the master server on, it lets the game use its socket to forward messages +// back and forth. This prevents us from requiring server ops to open up yet another port +// in their firewalls. +// +// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + + // These are used when you've elected to multiplex the game server's UDP socket + // rather than having the master server updater use its own sockets. + // + // Source games use this to simplify the job of the server admins, so they + // don't have to open up more ports on their firewalls. + + // Call this when a packet that starts with 0xFFFFFFFF comes in. That means + // it's for us. + virtual bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort ) = 0; + + // AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. + // This gets a packet that the master server updater needs to send out on UDP. + // It returns the length of the packet it wants to send, or 0 if there are no more packets to send. + // Call this each frame until it returns 0. + virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; + +// +// Control heartbeats / advertisement with master server +// + + // Call this as often as you like to tell the master server updater whether or not + // you want it to be active (default: off). + virtual void EnableHeartbeats( bool bActive ) = 0; + + // You usually don't need to modify this. + // Pass -1 to use the default value for iHeartbeatInterval. + // Some mods change this. + virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; + + // Force a heartbeat to steam at the next opportunity + virtual void ForceHeartbeat() = 0; + + // associate this game server with this clan for the purposes of computing player compat + CALL_RESULT( AssociateWithClanResult_t ) + virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; + + // ask if any of the current players dont want to play with this new player - or vice versa + CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) + virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + +}; + +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer012" + +// game server flags +const uint32 k_unServerFlagNone = 0x00; +const uint32 k_unServerFlagActive = 0x01; // server has users playing +const uint32 k_unServerFlagSecure = 0x02; // server wants to be secure +const uint32 k_unServerFlagDedicated = 0x04; // server is dedicated +const uint32 k_unServerFlagLinux = 0x08; // linux build +const uint32 k_unServerFlagPassworded = 0x10; // password protected +const uint32 k_unServerFlagPrivate = 0x20; // server shouldn't list on master server and + // won't enforce authentication of users that connect to the server. + // Useful when you run a server where the clients may not + // be connected to the internet but you want them to play (i.e LANs) + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// client has been approved to connect to this game server +struct GSClientApprove_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 1 }; + CSteamID m_SteamID; // SteamID of approved player + CSteamID m_OwnerSteamID; // SteamID of original owner for game license +}; + + +// client has been denied to connection to this game server +struct GSClientDeny_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 2 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; + char m_rgchOptionalText[128]; +}; + + +// request the game server should kick the user +struct GSClientKick_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 3 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; +}; + +// NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, +// do not reuse them here. + + +// client achievement info +struct GSClientAchievementStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 6 }; + uint64 m_SteamID; + char m_pchAchievement[128]; + bool m_bUnlocked; +}; + +// received when the game server requests to be displayed as secure (VAC protected) +// m_bSecure is true if the game server should display itself as secure to users, false otherwise +struct GSPolicyResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 15 }; + uint8 m_bSecure; +}; + +// GS gameplay stats info +struct GSGameplayStats_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 7 }; + EResult m_eResult; // Result of the call + int32 m_nRank; // Overall rank of the server (0-based) + uint32 m_unTotalConnects; // Total number of clients who have ever connected to the server + uint32 m_unTotalMinutesPlayed; // Total number of minutes ever played on the server +}; + +// send as a reply to RequestUserGroupStatus() +struct GSClientGroupStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 8 }; + CSteamID m_SteamIDUser; + CSteamID m_SteamIDGroup; + bool m_bMember; + bool m_bOfficer; +}; + +// Sent as a reply to GetServerReputation() +struct GSReputation_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 9 }; + EResult m_eResult; // Result of the call; + uint32 m_unReputationScore; // The reputation score for the game server + bool m_bBanned; // True if the server is banned from the Steam + // master servers + + // The following members are only filled out if m_bBanned is true. They will all + // be set to zero otherwise. Master server bans are by IP so it is possible to be + // banned even when the score is good high if there is a bad server on another port. + // This information can be used to determine which server is bad. + + uint32 m_unBannedIP; // The IP of the banned server + uint16 m_usBannedPort; // The port of the banned server + uint64 m_ulBannedGameID; // The game ID the banned server is serving + uint32 m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) +}; + +// Sent as a reply to AssociateWithClan() +struct AssociateWithClanResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 10 }; + EResult m_eResult; // Result of the call; +}; + +// Sent as a reply to ComputeNewPlayerCompatibility() +struct ComputeNewPlayerCompatibilityResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 11 }; + EResult m_eResult; // Result of the call; + int m_cPlayersThatDontLikeCandidate; + int m_cPlayersThatCandidateDoesntLike; + int m_cClanPlayersThatDontLikeCandidate; + CSteamID m_SteamIDCandidate; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMGAMESERVER_H diff --git a/lib/windows32/include/steam/isteamgameserverstats.h b/lib/windows32/include/steam/isteamgameserverstats.h new file mode 100644 index 0000000..e7922c9 --- /dev/null +++ b/lib/windows32/include/steam/isteamgameserverstats.h @@ -0,0 +1,101 @@ +//====== Copyright © Valve Corporation, All rights reserved. ======= +// +// Purpose: interface for game servers to steam stats and achievements +// +//============================================================================= + +#ifndef ISTEAMGAMESERVERSTATS_H +#define ISTEAMGAMESERVERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServerStats +{ +public: + // downloads stats for the user + // returns a GSStatsReceived_t callback when completed + // if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats will only be auto-updated for clients playing on the server. For other + // users you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( GSStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + + // Set / update stats and achievements. + // Note: These updates will work only on stats game servers are allowed to edit and only for + // game servers that have been declared as officially controlled by the game creators. + // Set the IP range of your official servers on the Steamworks page + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; + virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + + // Store the current data on the server, will get a GSStatsStored_t callback when set. + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + CALL_RESULT( GSStatsStored_t ) + virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; +}; + +#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct GSStatsReceived_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct GSStatsStored_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; + EResult m_eResult; // success / error + CSteamID m_steamIDUser; // The user for whom the stats were stored +}; + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct GSStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + +#pragma pack( pop ) + + +#endif // ISTEAMGAMESERVERSTATS_H diff --git a/lib/windows32/include/steam/isteamhtmlsurface.h b/lib/windows32/include/steam/isteamhtmlsurface.h new file mode 100644 index 0000000..ccfc6af --- /dev/null +++ b/lib/windows32/include/steam/isteamhtmlsurface.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to display html pages in a texture +// +//============================================================================= + +#ifndef ISTEAMHTMLSURFACE_H +#define ISTEAMHTMLSURFACE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +typedef uint32 HHTMLBrowser; +const uint32 INVALID_HTMLBROWSER = 0; + +//----------------------------------------------------------------------------- +// Purpose: Functions for displaying HTML pages and interacting with them +//----------------------------------------------------------------------------- +class ISteamHTMLSurface +{ +public: + virtual ~ISteamHTMLSurface() {} + + // Must call init and shutdown when starting/ending use of the interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Create a browser object for display of a html page, when creation is complete the call handle + // will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. + // The user agent string is a substring to be added to the general user agent string so you can + // identify your client on web servers. + // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if + // you do not require this functionality. + // + // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, + // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS + // section of this interface (AllowStartRequest, etc) for more details. If you do + // not implement these callback handlers, the browser may appear to hang instead of + // navigating to new pages or triggering javascript popups. + // + CALL_RESULT( HTML_BrowserReady_t ) + virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; + + // Call this when you are done with a html surface, this lets us free the resources being used by it + virtual void RemoveBrowser( HHTMLBrowser unBrowserHandle ) = 0; + + // Navigate to this URL, results in a HTML_StartRequest_t as the request commences + virtual void LoadURL( HHTMLBrowser unBrowserHandle, const char *pchURL, const char *pchPostData ) = 0; + + // Tells the surface the size in pixels to display the surface + virtual void SetSize( HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ) = 0; + + // Stop the load of the current html page + virtual void StopLoad( HHTMLBrowser unBrowserHandle ) = 0; + // Reload (most likely from local cache) the current page + virtual void Reload( HHTMLBrowser unBrowserHandle ) = 0; + // navigate back in the page history + virtual void GoBack( HHTMLBrowser unBrowserHandle ) = 0; + // navigate forward in the page history + virtual void GoForward( HHTMLBrowser unBrowserHandle ) = 0; + + // add this header to any url requests from this browser + virtual void AddHeader( HHTMLBrowser unBrowserHandle, const char *pchKey, const char *pchValue ) = 0; + // run this javascript script in the currently loaded page + virtual void ExecuteJavascript( HHTMLBrowser unBrowserHandle, const char *pchScript ) = 0; + + enum EHTMLMouseButton + { + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, + }; + + // Mouse click and mouse movement commands + virtual void MouseUp( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDown( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDoubleClick( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + // x and y are relative to the HTML bounds + virtual void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + // nDelta is pixels of scroll + virtual void MouseWheel( HHTMLBrowser unBrowserHandle, int32 nDelta ) = 0; + + enum EMouseCursor + { + dc_user = 0, + dc_none, + dc_arrow, + dc_ibeam, + dc_hourglass, + dc_waitarrow, + dc_crosshair, + dc_up, + dc_sizenw, + dc_sizese, + dc_sizene, + dc_sizesw, + dc_sizew, + dc_sizee, + dc_sizen, + dc_sizes, + dc_sizewe, + dc_sizens, + dc_sizeall, + dc_no, + dc_hand, + dc_blank, // don't show any custom cursor, just use your default + dc_middle_pan, + dc_north_pan, + dc_north_east_pan, + dc_east_pan, + dc_south_east_pan, + dc_south_pan, + dc_south_west_pan, + dc_west_pan, + dc_north_west_pan, + dc_alias, + dc_cell, + dc_colresize, + dc_copycur, + dc_verticaltext, + dc_rowresize, + dc_zoomin, + dc_zoomout, + dc_help, + dc_custom, + + dc_last, // custom cursors start from this value and up + }; + + enum EHTMLKeyModifiers + { + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1 << 0, + k_eHTMLKeyModifier_CtrlDown = 1 << 1, + k_eHTMLKeyModifier_ShiftDown = 1 << 2, + }; + + // keyboard interactions, native keycode is the virtual key code value from your OS + virtual void KeyDown( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + virtual void KeyUp( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + // cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) + virtual void KeyChar( HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + + // programmatically scroll this many pixels on the page + virtual void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + virtual void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + + // tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things + virtual void SetKeyFocus( HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ) = 0; + + // open the current pages html code in the local editor of choice, used for debugging + virtual void ViewSource( HHTMLBrowser unBrowserHandle ) = 0; + // copy the currently selected text on the html page to the local clipboard + virtual void CopyToClipboard( HHTMLBrowser unBrowserHandle ) = 0; + // paste from the local clipboard to the current html page + virtual void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) = 0; + + // find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element + virtual void Find( HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse ) = 0; + // cancel a currently running find + virtual void StopFind( HHTMLBrowser unBrowserHandle ) = 0; + + // return details about the link at position x,y on the current page + virtual void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + + // set a webcookie for the hostname in question + virtual void SetCookie( const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath = "/", RTime32 nExpires = 0, bool bSecure = false, bool bHTTPOnly = false ) = 0; + + // Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) + virtual void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) = 0; + + // Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are + // more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, + // all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". + // When background mode is disabled, any video or audio objects with that property will resume with ".play()". + virtual void SetBackgroundMode( HHTMLBrowser unBrowserHandle, bool bBackgroundMode ) = 0; + + // CALLBACKS + // + // These set of functions are used as responses to callback requests + // + + // You MUST call this in response to a HTML_StartRequest_t callback + // Set bAllowed to true to allow this navigation, false to cancel it and stay + // on the current page. You can use this feature to limit the valid pages + // allowed in your HTML surface. + virtual void AllowStartRequest( HHTMLBrowser unBrowserHandle, bool bAllowed ) = 0; + + // You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback + // Set bResult to true for the OK option of a confirm, use false otherwise + virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; + + // You MUST call this in response to a HTML_FileOpenDialog_t callback + IGNOREATTR() + virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; +}; + +#define STEAMHTMLSURFACE_INTERFACE_VERSION "STEAMHTMLSURFACE_INTERFACE_VERSION_003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//----------------------------------------------------------------------------- +// Purpose: The browser is ready for use +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_BrowserReady_t, k_iSteamHTMLSurfaceCallbacks + 1 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this browser is now fully created and ready to navigate to pages +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser has a pending paint +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_NeedsPaint_t, k_iSteamHTMLSurfaceCallbacks + 2) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint +CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called +CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture +CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture +CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update +CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update +CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update +CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update +CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered +CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages +END_DEFINE_CALLBACK_12() + + +//----------------------------------------------------------------------------- +// Purpose: The browser wanted to navigate to a new page +// NOTE - you MUST call AllowStartRequest in response to this callback +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_StartRequest_t, k_iSteamHTMLSurfaceCallbacks + 3) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface navigating +CALLBACK_MEMBER(1, const char *, pchURL) // the url they wish to navigate to +CALLBACK_MEMBER(2, const char *, pchTarget) // the html link target type (i.e _blank, _self, _parent, _top ) +CALLBACK_MEMBER(3, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER(4, bool, bIsRedirect) // true if this was a http/html redirect from the last load request +END_DEFINE_CALLBACK_5() + + +//----------------------------------------------------------------------------- +// Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_CloseBrowser_t, k_iSteamHTMLSurfaceCallbacks + 4) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser is navigating to a new url +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_URLChanged_t, k_iSteamHTMLSurfaceCallbacks + 5 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface navigating +CALLBACK_MEMBER( 1, const char *, pchURL ) // the url they wish to navigate to +CALLBACK_MEMBER( 2, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER( 3, bool, bIsRedirect ) // true if this was a http/html redirect from the last load request +CALLBACK_MEMBER( 4, const char *, pchPageTitle ) // the title of the page +CALLBACK_MEMBER( 5, bool, bNewNavigation ) // true if this was from a fresh tab and not a click on an existing page +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: A page is finished loading +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FinishedRequest_t, k_iSteamHTMLSurfaceCallbacks + 6 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +CALLBACK_MEMBER( 2, const char *, pchPageTitle ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a request to load this url in a new tab +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_OpenLinkInNewTab_t, k_iSteamHTMLSurfaceCallbacks + 7 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: the page has a new title now +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ChangedTitle_t, k_iSteamHTMLSurfaceCallbacks + 8 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: results from a search +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SearchResults_t, k_iSteamHTMLSurfaceCallbacks + 9 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unResults ) // +CALLBACK_MEMBER( 2, uint32, unCurrentMatch ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: page history status changed on the ability to go backwards and forward +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_CanGoBackAndForward_t, k_iSteamHTMLSurfaceCallbacks + 10 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, bool, bCanGoBack ) // +CALLBACK_MEMBER( 2, bool, bCanGoForward ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the horizontal scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HorizontalScroll_t, k_iSteamHTMLSurfaceCallbacks + 11 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool , bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the vertical scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_VerticalScroll_t, k_iSteamHTMLSurfaceCallbacks + 12 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool, bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: response to GetLinkAtPosition call +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_LinkAtPosition_t, k_iSteamHTMLSurfaceCallbacks + 13 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, x ) // NOTE - Not currently set +CALLBACK_MEMBER( 2, uint32, y ) // NOTE - Not currently set +CALLBACK_MEMBER( 3, const char *, pchURL ) // +CALLBACK_MEMBER( 4, bool, bInput ) // +CALLBACK_MEMBER( 5, bool, bLiveLink ) // +END_DEFINE_CALLBACK_6() + + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript alert dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSAlert_t, k_iSteamHTMLSurfaceCallbacks + 14 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript confirmation dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSConfirm_t, k_iSteamHTMLSurfaceCallbacks + 15 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: when received show a file open dialog +// then call FileLoadDialogResponse with the file(s) the user selected. +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FileOpenDialog_t, k_iSteamHTMLSurfaceCallbacks + 16 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +CALLBACK_MEMBER( 2, const char *, pchInitialFile ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a new html window has been created +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_NewWindow_t, k_iSteamHTMLSurfaceCallbacks + 21 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the current surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // the page to load +CALLBACK_MEMBER( 2, uint32, unX ) // the x pos into the page to display the popup +CALLBACK_MEMBER( 3, uint32, unY ) // the y pos into the page to display the popup +CALLBACK_MEMBER( 4, uint32, unWide ) // the total width of the pBGRA texture +CALLBACK_MEMBER( 5, uint32, unTall ) // the total height of the pBGRA texture +CALLBACK_MEMBER( 6, HHTMLBrowser, unNewWindow_BrowserHandle ) // the handle of the new window surface +END_DEFINE_CALLBACK_7() + + +//----------------------------------------------------------------------------- +// Purpose: change the cursor to display +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: informational message from the browser +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: update the text of an existing tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: hide the tooltip you are showing +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HideToolTip_t, k_iSteamHTMLSurfaceCallbacks + 26 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMHTMLSURFACE_H diff --git a/lib/windows32/include/steam/isteamhttp.h b/lib/windows32/include/steam/isteamhttp.h new file mode 100644 index 0000000..8fab537 --- /dev/null +++ b/lib/windows32/include/steam/isteamhttp.h @@ -0,0 +1,210 @@ +//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to http client +// +//============================================================================= + +#ifndef ISTEAMHTTP_H +#define ISTEAMHTTP_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamhttpenums.h" + +// Handle to a HTTP Request handle +typedef uint32 HTTPRequestHandle; +#define INVALID_HTTPREQUEST_HANDLE 0 + +typedef uint32 HTTPCookieContainerHandle; +#define INVALID_HTTPCOOKIE_HANDLE 0 + +//----------------------------------------------------------------------------- +// Purpose: interface to http client +//----------------------------------------------------------------------------- +class ISteamHTTP +{ +public: + + // Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + // the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + // so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + // or such. + virtual HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL ) = 0; + + // Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + // sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + virtual bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue ) = 0; + + // Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + // timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + // has already been sent. + virtual bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ) = 0; + + // Set a request header value for the request, must be called prior to sending the request. Will + // return false if the handle is invalid or the request is already sent. + virtual bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue ) = 0; + + // Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + // when creating the request. Must be called prior to sending the request. Will return false if the + // handle is invalid or the request is already sent. + virtual bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback. + // + // Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + // header and only do a local cache lookup rather than sending any actual remote request. + virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + // HTTPRequestDataReceived_t callbacks while streaming. + virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + // returns the size of the header value if present so the caller and allocate a correctly sized buffer for + // GetHTTPResponseHeaderValue. + virtual bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize ) = 0; + + // Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // header is not present or if your buffer is too small to contain it's value. You should first call + // BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + virtual bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize ) = 0; + + // Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid. + virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0; + + // Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + // the correct buffer size to use. + virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + // handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + // do not match the size and offset sent in HTTPRequestDataReceived_t. + virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + // callback and finishing using the response. + virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Gets progress on downloading the body for the request. This will be zero unless a response header has already been + // received which included a content-length field. For responses that contain no content-length it will report + // zero for the duration of the request as the size is unknown until the connection closes. + virtual bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut ) = 0; + + // Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + // have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + // parameter will set the content-type header for the request so the server may know how to interpret the body. + virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0; + + // Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + // than any response to your requests using this cookie container may add new cookies which may be transmitted with + // future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + // during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + // repeat executions of your process. + virtual HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify ) = 0; + + // Release a cookie container you are finished using, freeing it's memory + virtual bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Adds a cookie to the specified cookie container that will be used with future requests. + virtual bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie ) = 0; + + // Set the cookie container to use for a HTTP request + virtual bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + virtual bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo ) = 0; + + // Set that https request should require verified SSL certificate via machines certificate trust store + virtual bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ) = 0; + + // Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + // which can bump everytime we get more data + virtual bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds ) = 0; + + // Check if the reason the request failed was because we timed it out (rather than some harder failure) + virtual bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut ) = 0; +}; + +#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION002" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct HTTPRequestCompleted_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + + // Handle value for the request that has completed. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + // This will be true if we actually got any sort of response from the server (even an error). + // It will be false if we failed due to an internal error or client side network failure. + bool m_bRequestSuccessful; + + // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal + // OK response, if you get something else you probably need to treat it as a failure. + EHTTPStatusCode m_eStatusCode; + + uint32 m_unBodySize; // Same as GetHTTPResponseBodySize() +}; + + +struct HTTPRequestHeadersReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + + // Handle value for the request that has received headers. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; +}; + +struct HTTPRequestDataReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + + // Handle value for the request that has received data. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + + // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cOffset; + + // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cBytesReceived; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMHTTP_H \ No newline at end of file diff --git a/lib/windows32/include/steam/isteaminventory.h b/lib/windows32/include/steam/isteaminventory.h new file mode 100644 index 0000000..5d236a5 --- /dev/null +++ b/lib/windows32/include/steam/isteaminventory.h @@ -0,0 +1,357 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Inventory +// +//============================================================================= + +#ifndef ISTEAMINVENTORY_H +#define ISTEAMINVENTORY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// Every individual instance of an item has a globally-unique ItemInstanceID. +// This ID is unique to the combination of (player, specific item instance) +// and will not be transferred to another player or re-used for another item. +typedef uint64 SteamItemInstanceID_t; + +static const SteamItemInstanceID_t k_SteamItemInstanceIDInvalid = (SteamItemInstanceID_t)~0; + +// Types of items in your game are identified by a 32-bit "item definition number". +// Valid definition numbers are between 1 and 999999999; numbers less than or equal to +// zero are invalid, and numbers greater than or equal to one billion (1x10^9) are +// reserved for internal Steam use. +typedef int32 SteamItemDef_t; + + +enum ESteamItemFlags +{ + // Item status flags - these flags are permanently attached to specific item instances + k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. + + // Action confirmation flags - these flags are set one time only, as part of a result set + k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated + k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. + + // All other flag bits are currently reserved for internal Steam use at this time. + // Do not assume anything about the state of other flags which are not defined here. +}; + +struct SteamItemDetails_t +{ + SteamItemInstanceID_t m_itemId; + SteamItemDef_t m_iDefinition; + uint16 m_unQuantity; + uint16 m_unFlags; // see ESteamItemFlags +}; + +typedef int32 SteamInventoryResult_t; + +static const SteamInventoryResult_t k_SteamInventoryResultInvalid = -1; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Inventory query and manipulation API +//----------------------------------------------------------------------------- +class ISteamInventory +{ +public: + + // INVENTORY ASYNC RESULT MANAGEMENT + // + // Asynchronous inventory queries always output a result handle which can be used with + // GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + // be triggered when the asynchronous result becomes ready (or fails). + // + + // Find out the status of an asynchronous inventory result handle. Possible values: + // k_EResultPending - still in progress + // k_EResultOK - done, result ready + // k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + // k_EResultInvalidParam - ERROR: invalid API call parameters + // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + // k_EResultFail - ERROR: unknown / generic error + METHOD_DESC(Find out the status of an asynchronous inventory result handle.) + virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; + + // Copies the contents of a result set into a flat array. The specific + // contents of the result set depend on which query which was used. + METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) + virtual bool GetResultItems( SteamInventoryResult_t resultHandle, + OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, + uint32 *punOutItemsArraySize ) = 0; + + // Returns the server time at which the result was generated. Compare against + // the value of IClientUtils::GetServerRealTime() to determine age. + METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) + virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; + + // Returns true if the result belongs to the target steam ID, false if the + // result does not. This is important when using DeserializeResult, to verify + // that a remote player is not pretending to have a different user's inventory. + METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) + virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; + + // Destroys a result handle and frees all associated memory. + METHOD_DESC(Destroys a result handle and frees all associated memory.) + virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; + + + // INVENTORY ASYNC QUERY + // + + // Captures the entire state of the current user's Steam inventory. + // You must call DestroyResult on this handle when you are done with it. + // Returns false and sets *pResultHandle to zero if inventory is unavailable. + // Note: calls to this function are subject to rate limits and may return + // cached results if called too frequently. It is suggested that you call + // this function only when you are about to display the user's full inventory, + // or if you expect that the inventory may have changed. + METHOD_DESC(Captures the entire state of the current users Steam inventory.) + virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; + + + // Captures the state of a subset of the current user's Steam inventory, + // identified by an array of item instance IDs. The results from this call + // can be serialized and passed to other players to "prove" that the current + // user owns specific items, without exposing the user's entire inventory. + // For example, you could call GetItemsByID with the IDs of the user's + // currently equipped cosmetic items and serialize this to a buffer, and + // then transmit this buffer to other players upon joining a game. + METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) + virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; + + + // RESULT SERIALIZATION AND AUTHENTICATION + // + // Serialized result sets contain a short signature which can't be forged + // or replayed across different game sessions. A result set can be serialized + // on the local client, transmitted to other players via your game networking, + // and deserialized by the remote players. This is a secure way of preventing + // hackers from lying about posessing rare/high-value items. + + // Serializes a result set with signature bytes to an output buffer. Pass + // NULL as an output buffer to get the required size via punOutBufferSize. + // The size of a serialized result depends on the number items which are being + // serialized. When securely transmitting items to other players, it is + // recommended to use "GetItemsByID" first to create a minimal result set. + // Results have a built-in timestamp which will be considered "expired" after + // an hour has elapsed. See DeserializeResult for expiration handling. + virtual bool SerializeResult( SteamInventoryResult_t resultHandle, OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize ) = 0; + + // Deserializes a result set and verifies the signature bytes. Returns false + // if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + // Otherwise returns true and then delivers error codes via GetResultStatus. + // + // The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + // be set to true by your game at this time. + // + // DeserializeResult has a potential soft-failure mode where the handle status + // is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + // The "expired" result could indicate that the data may be out of date - not + // just due to timed expiration (one hour), but also because one of the items + // in the result set may have been traded or consumed since the result set was + // generated. You could compare the timestamp from GetResultTimestamp() to + // ISteamUtils::GetServerRealTime() to determine how old the data is. You could + // simply ignore the "expired" result code and continue as normal, or you + // could challenge the player with expired data to send an updated result set. + virtual bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false ) = 0; + + + // INVENTORY ASYNC MODIFICATION + // + + // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + // notification with a matching nCallbackContext parameter. This API is insecure, and could + // be abused by hacked clients. It is, however, very useful as a development cheat or as + // a means of prototyping item-related features for your game. The use of GenerateItems can + // be restricted to certain item definitions or fully blocked via the Steamworks website. + // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + // describe the quantity of each item to generate. + virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; + + // GrantPromoItems() checks the list of promotional items for which the user may be eligible + // and grants the items (one time only). On success, the result set will include items which + // were granted, if any. If no items were granted because the user isn't eligible for any + // promotions, this is still considered a success. + METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) + virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; + + // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + // scanning for all eligible promotional items, the check is restricted to a single item + // definition or set of item definitions. This can be useful if your game has custom UI for + // showing a specific promo item to the user. + virtual bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef ) = 0; + virtual bool AddPromoItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength ) = 0; + + // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + // Not for the faint of heart - if your game implements item removal at all, a high-friction + // UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity + // can be NULL or else an array of the same length as pArrayItems which describe the quantity + // of each item to destroy. ConsumeItem can be restricted to certain item definitions or + // fully blocked via the Steamworks website to minimize support/abuse issues such as the + // clasic "my brother borrowed my laptop and deleted all of my rare items". + METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) + virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; + + // ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be + // used to implement crafting recipes or transmutations, or items which unpack themselves + // into other items. Like GenerateItems, this is a flexible and dangerous API which is + // meant for rapid prototyping. You can configure restrictions on ExchangeItems via the + // Steamworks website, such as limiting it to a whitelist of input/output combinations + // corresponding to recipes. + // (Note: although GenerateItems may be hard or impossible to use securely in your game, + // ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.) + virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, + ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, + ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; + + + // TransferItemQuantity() is intended for use with items which are "stackable" (can have + // quantity greater than one). It can be used to split a stack into two, or to transfer + // quantity from one stack into another stack of identical items. To split one stack into + // two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + virtual bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ) = 0; + + + // TIMED DROPS AND PLAYTIME CREDIT + // + + // Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when + // active gameplay begins, and at least once every two minutes afterwards. The backend + // performs its own time calculations, so the precise timing of the heartbeat is not + // critical as long as you send at least one heartbeat every two minutes. Calling the + // function more often than that is not harmful, it will simply have no effect. Note: + // players may be able to spoof this message by hacking their client, so you should not + // attempt to use this as a mechanism to restrict playtime credits. It is simply meant + // to distinguish between being in any kind of gameplay situation vs the main menu or + // a pre-game launcher window. (If you are stingy with handing out playtime credit, it + // will only encourage players to run bots or use mouse/kb event simulators.) + // + // Playtime credit accumulation can be capped on a daily or weekly basis through your + // Steamworks configuration. + // + METHOD_DESC(Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.) + virtual void SendItemDropHeartbeat() = 0; + + // Playtime credit must be consumed and turned into item drops by your game. Only item + // definitions which are marked as "playtime item generators" can be spawned. The call + // will return an empty result set if there is not enough playtime credit for a drop. + // Your game should call TriggerItemDrop at an appropriate time for the user to receive + // new items, such as between rounds or while the player is dead. Note that players who + // hack their clients could modify the value of "dropListDefinition", so do not use it + // to directly control rarity. It is primarily useful during testing and development, + // where you may wish to perform experiments with different types of drops. + METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) + virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; + + + // IN-GAME TRADING + // + // TradeItems() implements limited in-game trading of items, if you prefer not to use + // the overlay or an in-game web browser to perform Steam Trading through the website. + // You should implement a UI where both players can see and agree to a trade, and then + // each client should call TradeItems simultaneously (+/- 5 seconds) with matching + // (but reversed) parameters. The result is the same as if both players performed a + // Steam Trading transaction through the web. Each player will get an inventory result + // confirming the removal or quantity changes of the items given away, and the new + // item instance id numbers and quantities of the received items. + // (Note: new item instance IDs are generated whenever an item changes ownership.) + virtual bool TradeItems( SteamInventoryResult_t *pResultHandle, CSteamID steamIDTradePartner, + ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength, + ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength ) = 0; + + + // ITEM DEFINITIONS + // + // Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + // to a set of string properties. Some of these properties are required to display items + // on the Steam community web site. Other properties can be defined by applications. + // Use of these functions is optional; there is no reason to call LoadItemDefinitions + // if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + // weapon mod = 55) and does not allow for adding new item types without a client patch. + // + + // LoadItemDefinitions triggers the automatic load and refresh of item definitions. + // Every time new item definitions are available (eg, from the dynamic addition of new + // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + // callback will be fired. + METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) + virtual bool LoadItemDefinitions() = 0; + + // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + // defined via Steamworks configuration, and not necessarily contiguous integers). + // If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + // contain the total size necessary for a subsequent call. Otherwise, the call will + // return false if and only if there is not enough space in the output array. + virtual bool GetItemDefinitionIDs( + OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, + DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; + + // GetItemDefinitionProperty returns a string property from a given item definition. + // Note that some properties (for example, "name") may be localized and will depend + // on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, + OUT_STRING_COUNT(punValueBufferSizeOut) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; +}; + +#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V001" + + +// SteamInventoryResultReady_t callbacks are fired whenever asynchronous +// results transition from "Pending" to "OK" or an error state. There will +// always be exactly one callback per handle. +struct SteamInventoryResultReady_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + SteamInventoryResult_t m_handle; + EResult m_result; +}; + + +// SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems +// successfully returns a result which is newer / fresher than the last +// known result. (It will not trigger if the inventory hasn't changed, +// or if results from two overlapping calls are reversed in flight and +// the earlier result is already known to be stale/out-of-date.) +// The normal ResultReady callback will still be triggered immediately +// afterwards; this is an additional notification for your convenience. +struct SteamInventoryFullUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + SteamInventoryResult_t m_handle; +}; + + +// A SteamInventoryDefinitionUpdate_t callback is triggered whenever +// item definitions have been updated, which could be in response to +// LoadItemDefinitions() or any other async request which required +// a definition update in order to process results from the server. +struct SteamInventoryDefinitionUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/windows32/include/steam/isteammasterserverupdater.h b/lib/windows32/include/steam/isteammasterserverupdater.h new file mode 100644 index 0000000..4be0ca5 --- /dev/null +++ b/lib/windows32/include/steam/isteammasterserverupdater.h @@ -0,0 +1 @@ +#error "This file isn't used any more" diff --git a/lib/windows32/include/steam/isteammatchmaking.h b/lib/windows32/include/steam/isteammatchmaking.h new file mode 100644 index 0000000..837d98b --- /dev/null +++ b/lib/windows32/include/steam/isteammatchmaking.h @@ -0,0 +1,751 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing game server/client match making +// +//============================================================================= + +#ifndef ISTEAMMATCHMAKING +#define ISTEAMMATCHMAKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" +#include "matchmakingtypes.h" +#include "isteamclient.h" +#include "isteamfriends.h" + +// lobby type description +enum ELobbyType +{ + k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else + k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list + k_ELobbyTypePublic = 2, // visible for friends and in lobby list + k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends + // useful if you want a user in two lobbies, for example matching groups together + // a user can be in only one regular lobby, and up to two invisible lobbies +}; + +// lobby search filter tools +enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +}; + +// lobby search distance. Lobby results are sorted from closest to farthest. +enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned + k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions + k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe + k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) +}; + +// maximum number of characters a lobby metadata key can be +#define k_nMaxLobbyKeyLength 255 + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to favorites +// and to operate on game lobbies. +//----------------------------------------------------------------------------- +class ISteamMatchmaking +{ +public: + // game server favorites storage + // saves basic details about a multiplayer game server locally + + // returns the number of favorites servers the user has stored + virtual int GetFavoriteGameCount() = 0; + + // returns the details of the game server + // iGame is of range [0,GetFavoriteGameCount()) + // *pnIP, *pnConnPort are filled in the with IP:port of the game server + // *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections + // *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added + virtual bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer ) = 0; + + // adds the game server to the local list; updates the time played of the server if it already exists in the list + virtual int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ) = 0; + + // removes the game server from the local storage; returns true if one was removed + virtual bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ) = 0; + + /////// + // Game lobby functions + + // Get a list of relevant lobbies + // this is an asynchronous request + // results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found + // this will never return lobbies that are full + // to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call + // use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. + /* + class CMyLobbyListManager + { + CCallResult<CMyLobbyListManager, LobbyMatchList_t> m_CallResultLobbyMatchList; + void FindLobbies() + { + // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() + SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); + m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); + } + + void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) + { + // lobby list has be retrieved from Steam back-end, use results + } + } + */ + // + CALL_RESULT( LobbyMatchList_t ) + virtual SteamAPICall_t RequestLobbyList() = 0; + // filters for lobbies + // this needs to be called before RequestLobbyList() to take effect + // these are cleared on each call to RequestLobbyList() + virtual void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType ) = 0; + // numerical comparison + virtual void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ) = 0; + // returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence + virtual void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo ) = 0; + // returns only lobbies with the specified number of slots available + virtual void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) = 0; + // sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) + virtual void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter ) = 0; + // sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client + virtual void AddRequestLobbyListResultCountFilter( int cMaxResults ) = 0; + + virtual void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby ) = 0; + + // returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call + // should only be called after a LobbyMatchList_t callback is received + // iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) + // the returned CSteamID::IsValid() will be false if iLobby is out of range + virtual CSteamID GetLobbyByIndex( int iLobby ) = 0; + + // Create a lobby on the Steam servers. + // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID + // of the lobby will need to be communicated via game channels or via InviteUserToLobby() + // this is an asynchronous request + // results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + CALL_RESULT( LobbyCreated_t ) + virtual SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers ) = 0; + + // Joins an existing lobby + // this is an asynchronous request + // results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful + // lobby metadata is available to use immediately on this call completing + CALL_RESULT( LobbyEnter_t ) + virtual SteamAPICall_t JoinLobby( CSteamID steamIDLobby ) = 0; + + // Leave a lobby; this will take effect immediately on the client side + // other users in the lobby will be notified by a LobbyChatUpdate_t callback + virtual void LeaveLobby( CSteamID steamIDLobby ) = 0; + + // Invite another user to the lobby + // the target user will receive a LobbyInvite_t callback + // will return true if the invite is successfully sent, whether or not the target responds + // returns false if the local user is not connected to the Steam servers + // if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, + // or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> + virtual bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee ) = 0; + + // Lobby iteration, for viewing details of users in a lobby + // only accessible if the lobby user is a member of the specified lobby + // persona information for other lobby members (name, avatar, etc.) will be asynchronously received + // and accessible via ISteamFriends interface + + // returns the number of users in the specified lobby + virtual int GetNumLobbyMembers( CSteamID steamIDLobby ) = 0; + // returns the CSteamID of a user in the lobby + // iMember is of range [0,GetNumLobbyMembers()) + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + virtual CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ) = 0; + + // Get data associated with this lobby + // takes a simple key, and returns the string associated with it + // "" will be returned if no value is set, or if steamIDLobby is invalid + virtual const char *GetLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + // Sets a key/value pair in the lobby metadata + // each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data + // this can be used to set lobby names, map, etc. + // to reset a key, just set it to "" + // other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback + virtual bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // returns the number of metadata keys set on the specified lobby + virtual int GetLobbyDataCount( CSteamID steamIDLobby ) = 0; + + // returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) + virtual bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize ) = 0; + + // removes a metadata key from the lobby + virtual bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + + // Gets per-user metadata for someone in this lobby + virtual const char *GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey ) = 0; + // Sets per-user metadata (for the local user implicitly) + virtual void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // Broadcasts a chat message to the all the users in the lobby + // users in the lobby (including the local user) will receive a LobbyChatMsg_t callback + // returns true if the message is successfully sent + // pvMsgBody can be binary or text data, up to 4k + // if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator + virtual bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody ) = 0; + // Get a chat message as specified in a LobbyChatMsg_t callback + // iChatID is the LobbyChatMsg_t::m_iChatID value in the callback + // *pSteamIDUser is filled in with the CSteamID of the member + // *pvData is filled in with the message itself + // return value is the number of bytes written into the buffer + virtual int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, OUT_STRUCT() CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // Refreshes metadata for a lobby you're not necessarily in right now + // you never do this for lobbies you're a member of, only if your + // this will send down all the metadata associated with a lobby + // this is an asynchronous call + // returns false if the local user is not connected to the Steam servers + // results will be returned by a LobbyDataUpdate_t callback + // if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + virtual bool RequestLobbyData( CSteamID steamIDLobby ) = 0; + + // sets the game server associated with the lobby + // usually at this point, the users will join the specified game server + // either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect + virtual void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer ) = 0; + // returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist + virtual bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, OUT_STRUCT() CSteamID *psteamIDGameServer ) = 0; + + // set the limit on the # of users who can join the lobby + virtual bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers ) = 0; + // returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined + virtual int GetLobbyMemberLimit( CSteamID steamIDLobby ) = 0; + + // updates which type of lobby it is + // only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls + virtual bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType ) = 0; + + // sets whether or not a lobby is joinable - defaults to true for a new lobby + // if set to false, no user can join, even if they are a friend or have been invited + virtual bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable ) = 0; + + // returns the current lobby owner + // you must be a member of the lobby to access this + // there always one lobby owner - if the current owner leaves, another user will become the owner + // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner + virtual CSteamID GetLobbyOwner( CSteamID steamIDLobby ) = 0; + + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner ) = 0; + + // link two lobbies for the purposes of checking player compatibility + // you must be the lobby owner of both lobbies + virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0; + +#ifdef _PS3 + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; +#endif + CALL_BACK( LobbyChatUpdate_t ) +}; +#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" + + +//----------------------------------------------------------------------------- +// Callback interfaces for server list functions (see ISteamMatchmakingServers below) +// +// The idea here is that your game code implements objects that implement these +// interfaces to receive callback notifications after calling asynchronous functions +// inside the ISteamMatchmakingServers() interface below. +// +// This is different than normal Steam callback handling due to the potentially +// large size of server lists. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when requesting server list. +//----------------------------------------------------------------------------- +typedef void* HServerListRequest; + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after a server list refresh +// or an individual server update. +// +// Since you get these callbacks after requesting full list refreshes you will +// usually implement this interface inside an object like CServerBrowser. If that +// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() +// to cancel any in-progress queries so you don't get a callback into the destructed +// object and crash. +//----------------------------------------------------------------------------- +class ISteamMatchmakingServerListResponse +{ +public: + // Server has responded ok with updated data + virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0; + + // Server has failed to respond + virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0; + + // A list refresh you had initiated is now 100% completed + virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after pinging an individual server +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PingServer() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPingResponse +{ +public: + // Server has responded successfully and has updated data + virtual void ServerResponded( gameserveritem_t &server ) = 0; + + // Server failed to respond to the ping request + virtual void ServerFailedToRespond() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting details on +// who is playing on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPlayersResponse +{ +public: + // Got data on a new player on the server -- you'll get this callback once per player + // on the server which you have requested player data on. + virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; + + // The server failed to respond to the request for player details + virtual void PlayersFailedToRespond() = 0; + + // The server has finished responding to the player details request + // (ie, you won't get anymore AddPlayerToList callbacks) + virtual void PlayersRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting rules +// details on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->ServerRules() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingRulesResponse +{ +public: + // Got data on a rule on the server -- you'll get one of these per rule defined on + // the server you are querying + virtual void RulesResponded( const char *pchRule, const char *pchValue ) = 0; + + // The server failed to respond to the request for rule details + virtual void RulesFailedToRespond() = 0; + + // The server has finished responding to the rule details request + // (ie, you won't get anymore RulesResponded callbacks) + virtual void RulesRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when querying details on an individual server. +//----------------------------------------------------------------------------- +typedef int HServerQuery; +const int HSERVERQUERY_INVALID = 0xffffffff; + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to game lists and details +//----------------------------------------------------------------------------- +class ISteamMatchmakingServers +{ +public: + // Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. + // Each call allocates a new asynchronous request object. + // Request object must be released by calling ReleaseRequest( hServerListRequest ) + virtual HServerListRequest RequestInternetServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + + // Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. + // RefreshComplete callback is not posted when request is released. + virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0; + + /* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: + + "map" + - Server passes the filter if the server is playing the specified map. + "gamedataand" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedataor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedatanor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsand" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsnor" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "and" (x1 && x2 && ... && xn) + "or" (x1 || x2 || ... || xn) + "nand" !(x1 && x2 && ... && xn) + "nor" !(x1 || x2 || ... || xn) + - Performs Boolean operation on the following filters. The operand to this filter specifies + the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue + pairs must immediately follow, i.e. this is a prefix logical operator notation.) + In the simplest case where Boolean expressions are not nested, this is simply + the number of operands. + + For example, to match servers on a particular map or with a particular tag, would would + use these filters. + + ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) + "or", "2" + "map", "cp_dustbowl" + "gametagsand", "payload" + + If logical inputs are nested, then the operand specifies the size of the entire + "length" of its operands, not the number of immediate children. + + ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) + "or", "4" + "map", "cp_dustbowl" + "and", "2" + "gametagsand", "payload" + "gametagsnor", "payloadrace" + + Unary NOT can be achieved using either "nand" or "nor" with a single operand. + + "addr" + - Server passes the filter if the server's query address matches the specified IP or IP:port. + "gameaddr" + - Server passes the filter if the server's game address matches the specified IP or IP:port. + + The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t + + "dedicated" + - Server passes the filter if it passed true to SetDedicatedServer. + "secure" + - Server passes the filter if the server is VAC-enabled. + "notfull" + - Server passes the filter if the player count is less than the reported max player count. + "hasplayers" + - Server passes the filter if the player count is greater than zero. + "noplayers" + - Server passes the filter if it doesn't have any players. + "linux" + - Server passes the filter if it's a linux server + */ + + // Get details on a given server in the list, you can get the valid range of index + // values by calling GetServerCount(). You will also receive index values in + // ISteamMatchmakingServerListResponse::ServerResponded() callbacks + virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0; + + // Cancel an request which is operation on the given list type. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above list request calls. Not doing so may result in a crash when a callback + // occurs on the destructed object. + // Canceling a query does not release the allocated request handle. + // The request handle must be released using ReleaseRequest( hRequest ) + virtual void CancelQuery( HServerListRequest hRequest ) = 0; + + // Ping every server in your list again but don't update the list of servers + // Query callback installed when the server list was requested will be used + // again to post notifications and RefreshComplete, so the callback must remain + // valid until another RefreshComplete is called on it or the request + // is released with ReleaseRequest( hRequest ) + virtual void RefreshQuery( HServerListRequest hRequest ) = 0; + + // Returns true if the list is currently refreshing its server list + virtual bool IsRefreshing( HServerListRequest hRequest ) = 0; + + // How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 + virtual int GetServerCount( HServerListRequest hRequest ) = 0; + + // Refresh a single server inside of a query (rather than all the servers ) + virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0; + + + //----------------------------------------------------------------------------- + // Queries to individual servers directly via IP/Port + //----------------------------------------------------------------------------- + + // Request updated ping time and other details from a single server + virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; + + // Request the list of players currently playing on a server + virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; + + // Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) + virtual HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse ) = 0; + + // Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above calls to avoid crashing when callbacks occur. + virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0; +}; +#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002" + +// game server flags +const uint32 k_unFavoriteFlagNone = 0x00; +const uint32 k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list +const uint32 k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list + + +//----------------------------------------------------------------------------- +// Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 +//----------------------------------------------------------------------------- +enum EChatMemberStateChange +{ + // Specific to joining / leaving the chatroom + k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room + k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room + k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first + k_EChatMemberStateChangeKicked = 0x0008, // User kicked + k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned +}; + +// returns true of the flags indicate that a user has been removed from the chat +#define BChatMemberStateChangeRemoved( rgfChatMemberStateChangeFlags ) ( rgfChatMemberStateChangeFlags & ( k_EChatMemberStateChangeDisconnected | k_EChatMemberStateChangeLeft | k_EChatMemberStateChangeKicked | k_EChatMemberStateChangeBanned ) ) + + +//----------------------------------------------------------------------------- +// Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: a server was added/removed from the favorites list, you should refresh now +//----------------------------------------------------------------------------- +struct FavoritesListChanged_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 2 }; + uint32 m_nIP; // an IP of 0 means reload the whole list, any other value means just one server + uint32 m_nQueryPort; + uint32 m_nConnPort; + uint32 m_nAppID; + uint32 m_nFlags; + bool m_bAdd; // true if this is adding the entry, otherwise it is a remove + AccountID_t m_unAccountId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Someone has invited you to join a Lobby +// normally you don't need to do anything with this, since +// the Steam UI will also display a '<user> has invited you to the lobby, join?' dialog +// +// if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", +// or with the callback GameLobbyJoinRequested_t if they're already in-game +//----------------------------------------------------------------------------- +struct LobbyInvite_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 3 }; + + uint64 m_ulSteamIDUser; // Steam ID of the person making the invite + uint64 m_ulSteamIDLobby; // Steam ID of the Lobby + uint64 m_ulGameID; // GameID of the Lobby +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent on entering a lobby, or on failing to enter +// m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, +// or a higher value on failure (see enum EChatRoomEnterResponse) +//----------------------------------------------------------------------------- +struct LobbyEnter_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 4 }; + + uint64 m_ulSteamIDLobby; // SteamID of the Lobby you have entered + uint32 m_rgfChatPermissions; // Permissions of the current user + bool m_bLocked; // If true, then only invited users may join + uint32 m_EChatRoomEnterResponse; // EChatRoomEnterResponse +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby metadata has changed +// if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details +// if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata +//----------------------------------------------------------------------------- +struct LobbyDataUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 5 }; + + uint64 m_ulSteamIDLobby; // steamID of the Lobby + uint64 m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself + uint8 m_bSuccess; // true if we lobby data was successfully changed; + // will only be false if RequestLobbyData() was called on a lobby that no longer exists +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby chat room state has changed +// this is usually sent when a user has joined or left the lobby +//----------------------------------------------------------------------------- +struct LobbyChatUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 6 }; + + uint64 m_ulSteamIDLobby; // Lobby ID + uint64 m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient + uint64 m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) + // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick + uint32 m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values +}; + + +//----------------------------------------------------------------------------- +// Purpose: A chat message for this lobby has been sent +// use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message +//----------------------------------------------------------------------------- +struct LobbyChatMsg_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 7 }; + + uint64 m_ulSteamIDLobby; // the lobby id this is in + uint64 m_ulSteamIDUser; // steamID of the user who has sent this message + uint8 m_eChatEntryType; // type of message + uint32 m_iChatID; // index of the chat entry to lookup +}; + + +//----------------------------------------------------------------------------- +// Purpose: A game created a game for all the members of the lobby to join, +// as triggered by a SetLobbyGameServer() +// it's up to the individual clients to take action on this; the usual +// game behavior is to leave the lobby and connect to the specified game server +//----------------------------------------------------------------------------- +struct LobbyGameCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 9 }; + + uint64 m_ulSteamIDLobby; // the lobby we were in + uint64 m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members + uint32 m_unIP; // IP & Port of the game server (if any) + uint16 m_usPort; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Number of matching lobbies found +// iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 +//----------------------------------------------------------------------------- +struct LobbyMatchList_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 10 }; + uint32 m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted if a user is forcefully removed from a lobby +// can occur if a user loses connection to Steam +//----------------------------------------------------------------------------- +struct LobbyKicked_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 }; + uint64 m_ulSteamIDLobby; // Lobby + uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself + uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct LobbyCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 13 }; + + EResult m_eResult; // k_EResultOK - the lobby was successfully created + // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end + // k_EResultTimeout - you the message to the Steam servers, but it didn't respond + // k_EResultFail - the server responded, but with an unknown internal error + // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game + // k_EResultLimitExceeded - your game client has created too many lobbies + + uint64 m_ulSteamIDLobby; // chat room, zero if failed +}; + +// used by now obsolete RequestFriendsLobbiesResponse_t +// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 }; + + +//----------------------------------------------------------------------------- +// Purpose: Result of CheckForPSNGameBootInvite +// m_eResult == k_EResultOK on success +// at this point, the local user may not have finishing joining this lobby; +// game code should wait until the subsequent LobbyEnter_t callback is received +//----------------------------------------------------------------------------- +struct PSNGameBootInviteResult_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 }; + + bool m_bGameBootInviteExists; + CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct FavoritesListAccountsUpdated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 16 }; + + EResult m_eResult; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMMATCHMAKING diff --git a/lib/windows32/include/steam/isteammusic.h b/lib/windows32/include/steam/isteammusic.h new file mode 100644 index 0000000..779a4c2 --- /dev/null +++ b/lib/windows32/include/steam/isteammusic.h @@ -0,0 +1,67 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSIC_H +#define ISTEAMMUSIC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3 +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions to control music playback in the steam client +//----------------------------------------------------------------------------- +class ISteamMusic +{ +public: + virtual bool BIsEnabled() = 0; + virtual bool BIsPlaying() = 0; + + virtual AudioPlayback_Status GetPlaybackStatus() = 0; + + virtual void Play() = 0; + virtual void Pause() = 0; + virtual void PlayPrevious() = 0; + virtual void PlayNext() = 0; + + // volume is between 0.0 and 1.0 + virtual void SetVolume( float flVolume ) = 0; + virtual float GetVolume() = 0; + +}; + +#define STEAMMUSIC_INTERFACE_VERSION "STEAMMUSIC_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( PlaybackStatusHasChanged_t, k_iSteamMusicCallbacks + 1 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( VolumeHasChanged_t, k_iSteamMusicCallbacks + 2 ) + CALLBACK_MEMBER( 0, float, m_flNewVolume ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + +#endif // #define ISTEAMMUSIC_H diff --git a/lib/windows32/include/steam/isteammusicremote.h b/lib/windows32/include/steam/isteammusicremote.h new file mode 100644 index 0000000..ea29a7d --- /dev/null +++ b/lib/windows32/include/steam/isteammusicremote.h @@ -0,0 +1,129 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSICREMOTE_H +#define ISTEAMMUSICREMOTE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteammusic.h" + +#define k_SteamMusicNameMaxLength 255 +#define k_SteamMusicPNGMaxLength 65535 + + +class ISteamMusicRemote +{ +public: + // Service Definition + virtual bool RegisterSteamMusicRemote( const char *pchName ) = 0; + virtual bool DeregisterSteamMusicRemote() = 0; + virtual bool BIsCurrentMusicRemote() = 0; + virtual bool BActivationSuccess( bool bValue ) = 0; + + virtual bool SetDisplayName( const char *pchDisplayName ) = 0; + virtual bool SetPNGIcon_64x64( void *pvBuffer, uint32 cbBufferLength ) = 0; + + // Abilities for the user interface + virtual bool EnablePlayPrevious(bool bValue) = 0; + virtual bool EnablePlayNext( bool bValue ) = 0; + virtual bool EnableShuffled( bool bValue ) = 0; + virtual bool EnableLooped( bool bValue ) = 0; + virtual bool EnableQueue( bool bValue ) = 0; + virtual bool EnablePlaylists( bool bValue ) = 0; + + // Status + virtual bool UpdatePlaybackStatus( AudioPlayback_Status nStatus ) = 0; + virtual bool UpdateShuffled( bool bValue ) = 0; + virtual bool UpdateLooped( bool bValue ) = 0; + virtual bool UpdateVolume( float flValue ) = 0; // volume is between 0.0 and 1.0 + + // Current Entry + virtual bool CurrentEntryWillChange() = 0; + virtual bool CurrentEntryIsAvailable( bool bAvailable ) = 0; + virtual bool UpdateCurrentEntryText( const char *pchText ) = 0; + virtual bool UpdateCurrentEntryElapsedSeconds( int nValue ) = 0; + virtual bool UpdateCurrentEntryCoverArt( void *pvBuffer, uint32 cbBufferLength ) = 0; + virtual bool CurrentEntryDidChange() = 0; + + // Queue + virtual bool QueueWillChange() = 0; + virtual bool ResetQueueEntries() = 0; + virtual bool SetQueueEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentQueueEntry( int nID ) = 0; + virtual bool QueueDidChange() = 0; + + // Playlist + virtual bool PlaylistWillChange() = 0; + virtual bool ResetPlaylistEntries() = 0; + virtual bool SetPlaylistEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentPlaylistEntry( int nID ) = 0; + virtual bool PlaylistDidChange() = 0; +}; + +#define STEAMMUSICREMOTE_INTERFACE_VERSION "STEAMMUSICREMOTE_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( MusicPlayerRemoteWillActivate_t, k_iSteamMusicRemoteCallbacks + 1) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteWillDeactivate_t, k_iSteamMusicRemoteCallbacks + 2 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteToFront_t, k_iSteamMusicRemoteCallbacks + 3 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWillQuit_t, k_iSteamMusicRemoteCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlay_t, k_iSteamMusicRemoteCallbacks + 5 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPause_t, k_iSteamMusicRemoteCallbacks + 6 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayPrevious_t, k_iSteamMusicRemoteCallbacks + 7 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayNext_t, k_iSteamMusicRemoteCallbacks + 8 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsShuffled_t, k_iSteamMusicRemoteCallbacks + 9 ) + CALLBACK_MEMBER( 0, bool, m_bShuffled ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsLooped_t, k_iSteamMusicRemoteCallbacks + 10 ) + CALLBACK_MEMBER(0, bool, m_bLooped ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsVolume_t, k_iSteamMusicCallbacks + 11 ) + CALLBACK_MEMBER(0, float, m_flNewVolume) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsQueueEntry_t, k_iSteamMusicCallbacks + 12 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsPlaylistEntry_t, k_iSteamMusicCallbacks + 13 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsPlayingRepeatStatus_t, k_iSteamMusicRemoteCallbacks + 14 ) + CALLBACK_MEMBER(0, int, m_nPlayingRepeatStatus ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + + +#endif // #define ISTEAMMUSICREMOTE_H diff --git a/lib/windows32/include/steam/isteamnetworking.h b/lib/windows32/include/steam/isteamnetworking.h new file mode 100644 index 0000000..8f70819 --- /dev/null +++ b/lib/windows32/include/steam/isteamnetworking.h @@ -0,0 +1,306 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing network connections between game clients & servers +// +//============================================================================= + +#ifndef ISTEAMNETWORKING +#define ISTEAMNETWORKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible errors returned by SendP2PPacket() API +// these will be posted in the P2PSessionConnectFail_t callback +enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, // target is not running the same game + k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running + k_EP2PSessionErrorDestinationNotLoggedIn = 3, // target user isn't connected to Steam + k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() + // corporate firewalls can also block this (NAT traversal is not firewall traversal) + // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + k_EP2PSessionErrorMax = 5 +}; + +// SendP2PPacket() send types +// Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets +enum EP2PSend +{ + // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). + // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or + // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. + k_EP2PSendUnreliable = 0, + + // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first + // packet sent to a remote host almost guarantees the packet will be dropped. + // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets + k_EP2PSendUnreliableNoDelay = 1, + + // Reliable message send. Can send up to 1MB of data in a single message. + // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. + k_EP2PSendReliable = 2, + + // As above, but applies the Nagle algorithm to the send - sends will accumulate + // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). + // Useful if you want to send a set of smaller messages but have the coalesced into a single packet + // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then + // do a normal k_EP2PSendReliable to force all the buffered data to be sent. + k_EP2PSendReliableWithBuffering = 3, + +}; + + +// connection state to a specified user, returned by GetP2PSessionState() +// this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct P2PSessionState_t +{ + uint8 m_bConnectionActive; // true if we've got an active open connection + uint8 m_bConnecting; // true if we're currently trying to establish a connection + uint8 m_eP2PSessionError; // last error recorded (see enum above) + uint8 m_bUsingRelay; // true if it's going through a relay server (TURN) + int32 m_nBytesQueuedForSend; + int32 m_nPacketsQueuedForSend; + uint32 m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. + uint16 m_nRemotePort; // Only exists for compatibility with older authentication api's +}; +#pragma pack( pop ) + + +// handle to a socket +typedef uint32 SNetSocket_t; // CreateP2PConnectionSocket() +typedef uint32 SNetListenSocket_t; // CreateListenSocket() + +// connection progress indicators, used by CreateP2PConnectionSocket() +enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + + // communication is valid + k_ESNetSocketStateConnected = 1, + + // states while establishing a connection + k_ESNetSocketStateInitiated = 10, // the connection state machine has started + + // p2p connections + k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info + k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info + + // direct connections + k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server + + // failure states + k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end + k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown + k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection + k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us + k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke + +}; + +// describes how the socket is currently connected +enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for making connections and sending data between clients, +// traversing NAT's where possible +//----------------------------------------------------------------------------- +class ISteamNetworking +{ +public: + //////////////////////////////////////////////////////////////////////////////////////////// + // Session-less connection functions + // automatically establishes NAT-traversing or Relay server connections + + // Sends a P2P packet to the specified user + // UDP-like, unreliable and a max packet size of 1200 bytes + // the first packet send may be delayed as the NAT-traversal code runs + // if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + // see EP2PSend enum above for the descriptions of the different ways of sending packets + // + // nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + // with the same channel number in order to retrieve the data on the other end + // using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + virtual bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 ) = 0; + + // returns true if any data is available for read, and the amount of data that will need to be read + virtual bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 ) = 0; + + // reads in a packet that has been sent from another user via SendP2PPacket() + // returns the size of the message and the steamID of the user who sent it in the last two parameters + // if the buffer passed in is too small, the message will be truncated + // this call is not blocking, and will return false if no data is available + virtual bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 ) = 0; + + // AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + // P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + // if you don't want to talk to the user, just ignore the request + // if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + // this may be called multiple times for a single user + // (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + virtual bool AcceptP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + // if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + virtual bool CloseP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + // open channels to a user have been closed, the open session to the user will be closed and new data from this + // user will trigger a P2PSessionRequest_t callback + virtual bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel ) = 0; + + // fills out P2PSessionState_t structure with details about the underlying connection to the user + // should only needed for debugging purposes + // returns false if no connection exists to the specified user + virtual bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState ) = 0; + + // Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + // or NAT-traversal cannot be established. Only applies to connections created after setting this value, + // or to existing connections that need to automatically reconnect after this value is set. + // + // P2P packet relay is allowed by default + virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; + + + //////////////////////////////////////////////////////////////////////////////////////////// + // LISTEN / CONNECT style interface functions + // + // This is an older set of functions designed around the Berkeley TCP sockets model + // it's preferential that you use the above P2P functions, they're more robust + // and these older functions will be removed eventually + // + //////////////////////////////////////////////////////////////////////////////////////////// + + + // creates a socket and listens others to connect + // will trigger a SocketStatusCallback_t callback on another client connecting + // nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + // this can usually just be 0 unless you want multiple sets of connections + // unIP is the local IP address to bind to + // pass in 0 if you just want the default local IP + // unPort is the port to use + // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; + + // creates a socket and begin connection to a remote destination + // can connect via a known steamID (client or game server), or directly to an IP + // on success will trigger a SocketStatusCallback_t callback + // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; + virtual SNetSocket_t CreateConnectionSocket( uint32 nIP, uint16 nPort, int nTimeoutSec ) = 0; + + // disconnects the connection to the socket, if any, and invalidates the handle + // any unread data on the socket will be thrown away + // if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + virtual bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + // destroying a listen socket will automatically kill all the regular sockets generated from it + virtual bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + + // sending data + // must be a handle to a connected socket + // data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + // use the reliable flag with caution; although the resend rate is pretty aggressive, + // it can still cause stalls in receiving data (like TCP) + virtual bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable ) = 0; + + // receiving data + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + virtual bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize ) = 0; + + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + virtual bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + + // checks for data from any socket that has been connected off this listen socket + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + // fills out *phSocket with the socket that data is available on + virtual bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // retrieves data from any socket that has been connected off this listen socket + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + // fills out *phSocket with the socket that data is available on + virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // returns information about the specified socket, filling out the contents of the pointers + virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, uint32 *punIPRemote, uint16 *punPortRemote ) = 0; + + // returns which local port the listen socket is bound to + // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, uint32 *pnIP, uint16 *pnPort ) = 0; + + // returns true to describe how the socket ended up connecting + virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; + + // max packet size, in bytes + virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; +}; +#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking005" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API +// in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them +struct P2PSessionRequest_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 2 }; + CSteamID m_steamIDRemote; // user who wants to talk to us +}; + + +// callback notification - packets can't get through to the specified user via the SendP2PPacket() API +// all packets queued packets unsent at this point will be dropped +// further attempts to send will retry making the connection (but will be dropped if we fail again) +struct P2PSessionConnectFail_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 3 }; + CSteamID m_steamIDRemote; // user we were sending packets to + uint8 m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble +}; + + +// callback notification - status of a socket has changed +// used as part of the CreateListenSocket() / CreateP2PConnectionSocket() +struct SocketStatusCallback_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 1 }; + SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host + SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection + CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one + int m_eSNetSocketState; // socket state, ESNetSocketState +}; + +#pragma pack( pop ) + +#endif // ISTEAMNETWORKING diff --git a/lib/windows32/include/steam/isteamps3overlayrenderer.h b/lib/windows32/include/steam/isteamps3overlayrenderer.h new file mode 100644 index 0000000..4e07d4a --- /dev/null +++ b/lib/windows32/include/steam/isteamps3overlayrenderer.h @@ -0,0 +1,91 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface the game must provide Steam with on PS3 in order for the +// Steam overlay to render. +// +//============================================================================= + +#ifndef ISTEAMPS3OVERLAYRENDERER_H +#define ISTEAMPS3OVERLAYRENDERER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cell/pad.h" + +//----------------------------------------------------------------------------- +// Purpose: Enum for supported gradient directions +//----------------------------------------------------------------------------- +enum EOverlayGradientDirection +{ + k_EOverlayGradientHorizontal = 1, + k_EOverlayGradientVertical = 2, + k_EOverlayGradientNone = 3, +}; + +// Helpers for fetching individual color components from ARGB packed DWORD colors Steam PS3 overlay renderer uses. +#define STEAM_COLOR_RED( color ) \ + (int)(((color)>>16)&0xff) + +#define STEAM_COLOR_GREEN( color ) \ + (int)(((color)>>8)&0xff) + +#define STEAM_COLOR_BLUE( color ) \ + (int)((color)&0xff) + +#define STEAM_COLOR_ALPHA( color ) \ + (int)(((color)>>24)&0xff) + + +//----------------------------------------------------------------------------- +// Purpose: Interface the game must expose to Steam for rendering +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRenderHost +{ +public: + + // Interface for game engine to implement which Steam requires to render. + + // Draw a textured rect. This may use only part of the texture and will pass texture coords, it will also possibly request a gradient and will specify colors for vertexes. + virtual void DrawTexturedRect( int x0, int y0, int x1, int y1, float u0, float v0, float u1, float v1, int32 iTextureID, DWORD colorStart, DWORD colorEnd, EOverlayGradientDirection eDirection ) = 0; + + // Load a RGBA texture for Steam, or update a previously loaded one. Updates may be partial. You must not evict or remove this texture once Steam has uploaded it. + virtual void LoadOrUpdateTexture( int32 iTextureID, bool bIsFullTexture, int x0, int y0, uint32 uWidth, uint32 uHeight, int32 iBytes, char *pData ) = 0; + + // Delete a texture Steam previously uploaded + virtual void DeleteTexture( int32 iTextureID ) = 0; + + // Delete all previously uploaded textures + virtual void DeleteAllTextures() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Interface Steam exposes for the game to tell it when to render, etc. +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRender +{ +public: + + // Call once at startup to initialize the Steam overlay and pass it your host interface ptr + virtual bool BHostInitialize( uint32 unScreenWidth, uint32 unScreenHeight, uint32 unRefreshRate, ISteamPS3OverlayRenderHost *pRenderHost, void *CellFontLib ) = 0; + + // Call this once a frame when you are ready for the Steam overlay to render (ie, right before flipping buffers, after all your rendering) + virtual void Render() = 0; + + // Call this everytime you read input on PS3. + // + // If this returns true, then the overlay is active and has consumed the input, your game + // should then ignore all the input until BHandleCellPadData once again returns false, which + // will mean the overlay is deactivated. + virtual bool BHandleCellPadData( const CellPadData &padData ) = 0; + + // Call this if you detect no controllers connected or that the XMB is intercepting input + // + // This is important to clear input state for the overlay, so keys left down during XMB activation + // are not continued to be processed. + virtual bool BResetInputState() = 0; +}; + + +#endif // ISTEAMPS3OVERLAYRENDERER_H \ No newline at end of file diff --git a/lib/windows32/include/steam/isteamremotestorage.h b/lib/windows32/include/steam/isteamremotestorage.h new file mode 100644 index 0000000..3ac2871 --- /dev/null +++ b/lib/windows32/include/steam/isteamremotestorage.h @@ -0,0 +1,681 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMREMOTESTORAGE_H +#define ISTEAMREMOTESTORAGE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +//----------------------------------------------------------------------------- +// Purpose: Defines the largest allowed file size. Cloud files cannot be written +// in a single chunk over 100MB (and cannot be over 200MB total.) +//----------------------------------------------------------------------------- +const uint32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + + +//----------------------------------------------------------------------------- +// Purpose: Structure that contains an array of const char * strings and the number of those strings +//----------------------------------------------------------------------------- +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct SteamParamStringArray_t +{ + const char ** m_ppStrings; + int32 m_nNumStrings; +}; +#pragma pack( pop ) + +// A handle to a piece of user generated content +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +const PublishedFileId_t k_PublishedFileIdInvalid = 0; +const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull; +const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull; + +// Handle for writing to Steam Cloud +typedef uint64 UGCFileWriteStreamHandle_t; +const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull; + +const uint32 k_cchPublishedDocumentTitleMax = 128 + 1; +const uint32 k_cchPublishedDocumentDescriptionMax = 8000; +const uint32 k_cchPublishedDocumentChangeDescriptionMax = 8000; +const uint32 k_unEnumeratePublishedFilesMaxResults = 50; +const uint32 k_cchTagListMax = 1024 + 1; +const uint32 k_cchFilenameMax = 260; +const uint32 k_cchPublishedFileURLMax = 256; + + +enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = (1 << 0), + k_ERemoteStoragePlatformOSX = (1 << 1), + k_ERemoteStoragePlatformPS3 = (1 << 2), + k_ERemoteStoragePlatformLinux = (1 << 3), + k_ERemoteStoragePlatformReserved2 = (1 << 4), + + k_ERemoteStoragePlatformAll = 0xffffffff +}; + +enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +}; + + +enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + + k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to + k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game + k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items + k_EWorkshopFileTypeArt = 3, // artwork + k_EWorkshopFileTypeVideo = 4, // external video + k_EWorkshopFileTypeScreenshot = 5, // screenshot + k_EWorkshopFileTypeGame = 6, // Greenlight game entry + k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry + k_EWorkshopFileTypeConcept = 8, // Greenlight concept + k_EWorkshopFileTypeWebGuide = 9, // Steam web guide + k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide + k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold + k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings + k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal + k_EWorkshopFileTypeSteamVideo = 14, // Steam video + k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + + // Update k_EWorkshopFileTypeMax if you add values. + k_EWorkshopFileTypeMax = 16 + +}; + +enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +}; + +enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +}; + +enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +}; + +enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1 +}; + + +enum EUGCReadAction +{ + // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. + // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. + // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. + k_EUGCRead_ContinueReadingUntilFinished = 0, + + // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. + // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. + k_EUGCRead_ContinueReading = 1, + + // Frees the file handle. Use this when you're done reading the content. + // To read the file from Steam again you will need to call UGCDownload again. + k_EUGCRead_Close = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing, reading and writing files stored remotely +// and cached locally +//----------------------------------------------------------------------------- +class ISteamRemoteStorage +{ + public: + // NOTE + // + // Filenames are case-insensitive, and will be converted to lowercase automatically. + // So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then + // iterate the files, the filename returned will be "foo.bar". + // + + // file operations + virtual bool FileWrite( const char *pchFile, const void *pvData, int32 cubData ) = 0; + virtual int32 FileRead( const char *pchFile, void *pvData, int32 cubDataToRead ) = 0; + + CALL_RESULT( RemoteStorageFileWriteAsyncComplete_t ) + virtual SteamAPICall_t FileWriteAsync( const char *pchFile, const void *pvData, uint32 cubData ) = 0; + + CALL_RESULT( RemoteStorageFileReadAsyncComplete_t ) + virtual SteamAPICall_t FileReadAsync( const char *pchFile, uint32 nOffset, uint32 cubToRead ) = 0; + virtual bool FileReadAsyncComplete( SteamAPICall_t hReadCall, void *pvBuffer, uint32 cubToRead ) = 0; + + virtual bool FileForget( const char *pchFile ) = 0; + virtual bool FileDelete( const char *pchFile ) = 0; + CALL_RESULT( RemoteStorageFileShareResult_t ) + virtual SteamAPICall_t FileShare( const char *pchFile ) = 0; + virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0; + + // file operations that cause network IO + virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0; + virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0; + virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0; + virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0; + + // file information + virtual bool FileExists( const char *pchFile ) = 0; + virtual bool FilePersisted( const char *pchFile ) = 0; + virtual int32 GetFileSize( const char *pchFile ) = 0; + virtual int64 GetFileTimestamp( const char *pchFile ) = 0; + virtual ERemoteStoragePlatform GetSyncPlatforms( const char *pchFile ) = 0; + + // iteration + virtual int32 GetFileCount() = 0; + virtual const char *GetFileNameAndSize( int iFile, int32 *pnFileSizeInBytes ) = 0; + + // configuration management + virtual bool GetQuota( uint64 *pnTotalBytes, uint64 *puAvailableBytes ) = 0; + virtual bool IsCloudEnabledForAccount() = 0; + virtual bool IsCloudEnabledForApp() = 0; + virtual void SetCloudEnabledForApp( bool bEnabled ) = 0; + + // user generated content + + // Downloads a UGC file. A priority value of 0 will download the file immediately, + // otherwise it will wait to download the file until all downloads with a lower priority + // value are completed. Downloads with equal priority will occur simultaneously. + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0; + + // Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false + // or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage + virtual bool GetUGCDownloadProgress( UGCHandle_t hContent, int32 *pnBytesDownloaded, int32 *pnBytesExpected ) = 0; + + // Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result + virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, OUT_STRING() char **ppchName, int32 *pnFileSizeInBytes, OUT_STRUCT() CSteamID *pSteamIDOwner ) = 0; + + // After download, gets the content of the file. + // Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. + // Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate + // enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail + // unless UGCDownload is called again. + // For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. + virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ) = 0; + + // Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() + virtual int32 GetCachedUGCCount() = 0; + virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; + + // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you + // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. + +#if defined(_PS3) || defined(_SERVER) + // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback + virtual void GetFileListFromServer() = 0; + // Indicate this file should be downloaded in the next sync + virtual bool FileFetch( const char *pchFile ) = 0; + // Indicate this file should be persisted in the next sync + virtual bool FilePersist( const char *pchFile ) = 0; + // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback + virtual bool SynchronizeToClient() = 0; + // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback + virtual bool SynchronizeToServer() = 0; + // Reset any fetch/persist/etc requests + virtual bool ResetFileRequestState() = 0; +#endif + + // publishing UGC + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; + virtual PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileFile( PublishedFileUpdateHandle_t updateHandle, const char *pchFile ) = 0; + virtual bool UpdatePublishedFilePreviewFile( PublishedFileUpdateHandle_t updateHandle, const char *pchPreviewFile ) = 0; + virtual bool UpdatePublishedFileTitle( PublishedFileUpdateHandle_t updateHandle, const char *pchTitle ) = 0; + virtual bool UpdatePublishedFileDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchDescription ) = 0; + virtual bool UpdatePublishedFileVisibility( PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; + virtual bool UpdatePublishedFileTags( PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageUpdatePublishedFileResult_t ) + virtual SteamAPICall_t CommitPublishedFileUpdate( PublishedFileUpdateHandle_t updateHandle ) = 0; + // Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, + // cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. + // A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. + CALL_RESULT( RemoteStorageGetPublishedFileDetailsResult_t ) + virtual SteamAPICall_t GetPublishedFileDetails( PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ) = 0; + CALL_RESULT( RemoteStorageDeletePublishedFileResult_t ) + virtual SteamAPICall_t DeletePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + // enumerate the files that the current user published with this app + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserPublishedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserSubscribedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSubscribedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileSetChangeDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchChangeDescription ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageUpdateUserPublishedItemVoteResult_t ) + virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0; + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageSetUserPublishedFileActionResult_t ) + virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0; + CALL_RESULT( RemoteStorageEnumeratePublishedFilesByUserActionResult_t ) + virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0; + // this method enumerates the public view of workshop files + CALL_RESULT( RemoteStorageEnumerateWorkshopFilesResult_t ) + virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0; + + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; +}; + +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: sent when the local file cache is fully synced with the server for an app +// That means that an application can be started and has all latest files +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedClient_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumDownloads; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent when the server is fully synced with the local file cache for an app +// That means that we can shutdown Steam and our data is stored on the server +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedServer_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumUploads; +}; + +//----------------------------------------------------------------------------- +// Purpose: Status of up and downloads during a sync session +// +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; + char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred + AppId_t m_nAppID; // App this info relates to + uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk + double m_dAppPercentComplete; // Percent complete that this app's transfers are + bool m_bUploading; // if false, downloading +}; + +// +// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h +// + + +//----------------------------------------------------------------------------- +// Purpose: Sent after we've determined the list of files that are out of sync +// with the server. +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncStatusCheck_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; + AppId_t m_nAppID; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to FileShare() +//----------------------------------------------------------------------------- +struct RemoteStorageFileShareResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + EResult m_eResult; // The result of the operation + UGCHandle_t m_hFile; // The handle that can be shared with users and features + char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared +}; + + +// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to PublishFile() +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to DeletePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageDeletePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateUserPublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageSubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateSubscribePublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +#if defined(VALVE_CALLBACK_PACK_SMALL) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 ); +#elif defined(VALVE_CALLBACK_PACK_LARGE) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 + 4 ); +#else +#warning You must first include isteamclient.h +#endif + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UnsubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageUnsubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to CommitPublishedFileUpdate() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdatePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UGCDownload() +//----------------------------------------------------------------------------- +struct RemoteStorageDownloadUGCResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + EResult m_eResult; // The result of the operation. + UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. + AppId_t m_nAppID; // ID of the app that created this file. + int32 m_nSizeInBytes; // The size of the file that was downloaded, in bytes. + char m_pchFileName[k_cchFilenameMax]; // The name of the file that was downloaded. + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetPublishedFileDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedFileDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + ERemoteStoragePublishedFileVisibility m_eVisibility; + bool m_bBanned; + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_pchFileName[k_cchFilenameMax]; // The name of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + EWorkshopFileType m_eFileType; // Type of the file + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop +}; + + +struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + EResult m_eResult; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ]; + AppId_t m_nAppId; + uint32 m_unStartIndex; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of GetPublishedItemVoteDetails +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + EResult m_eResult; + PublishedFileId_t m_unPublishedFileId; + int32 m_nVotesFor; + int32 m_nVotesAgainst; + int32 m_nReports; + float m_fScore; +}; + + +//----------------------------------------------------------------------------- +// Purpose: User subscribed to a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileSubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + +//----------------------------------------------------------------------------- +// Purpose: User unsubscribed from a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUnsubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Published file that a user owns was deleted (from within the app or the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileDeleted_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UpdateUserPublishedItemVote() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserPublishedItemVoteDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageUserVoteDetails_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopVote m_eVote; // what the user voted +}; + +struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +struct RemoteStorageSetUserPublishedFileActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopFileAction m_eAction; // the action that was attempted +}; + +struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + EResult m_eResult; // The result of the operation. + EWorkshopFileAction m_eAction; // the action that was filtered on + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called periodically while a PublishWorkshopFile is in progress +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + double m_dPercentFile; + bool m_bPreview; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called when the content for a published file is updated +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUpdated_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. + uint64 m_ulUnused; // not used anymore +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileWriteAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileWriteAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + EResult m_eResult; // result +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileReadAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileReadAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made + EResult m_eResult; // result + uint32 m_nOffset; // offset in the file this read was at + uint32 m_cubRead; // amount read - will the <= the amount requested +}; + +#pragma pack( pop ) + + +#endif // ISTEAMREMOTESTORAGE_H diff --git a/lib/windows32/include/steam/isteamscreenshots.h b/lib/windows32/include/steam/isteamscreenshots.h new file mode 100644 index 0000000..6095705 --- /dev/null +++ b/lib/windows32/include/steam/isteamscreenshots.h @@ -0,0 +1,116 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMSCREENSHOTS_H +#define ISTEAMSCREENSHOTS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +const uint32 k_nScreenshotMaxTaggedUsers = 32; +const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32; +const int k_cubUFSTagTypeMax = 255; +const int k_cubUFSTagValueMax = 255; + +// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail +// one will be generated. +const int k_ScreenshotThumbWidth = 200; + +// Handle is valid for the lifetime of your process and no longer +typedef uint32 ScreenshotHandle; +#define INVALID_SCREENSHOT_HANDLE 0 + +enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5 +}; + +//----------------------------------------------------------------------------- +// Purpose: Functions for adding screenshots to the user's screenshot library +//----------------------------------------------------------------------------- +class ISteamScreenshots +{ +public: + // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0; + + // Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio + // as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0; + + // Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. + virtual void TriggerScreenshot() = 0; + + // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, + // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary + // in response. + virtual void HookScreenshots( bool bHook ) = 0; + + // Sets metadata about a screenshot's location (for example, the name of the map) + virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0; + + // Tags a user as being visible in the screenshot + virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0; + + // Tags a published file as being visible in the screenshot + virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0; + + // Returns true if the app has hooked the screenshot + virtual bool IsScreenshotsHooked() = 0; + + // Adds a VR screenshot to the user's screenshot library from disk in the supported type. + // pchFilename should be the normal 2D image used in the library view + // pchVRFilename should contain the image that matches the correct type + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename ) = 0; +}; + +#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: Screenshot successfully written or otherwise added to the library +// and can now be tagged +//----------------------------------------------------------------------------- +struct ScreenshotReady_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 }; + ScreenshotHandle m_hLocal; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: Screenshot has been requested by the user. Only sent if +// HookScreenshots() has been called, in which case Steam will not take +// the screenshot itself. +//----------------------------------------------------------------------------- +struct ScreenshotRequested_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMSCREENSHOTS_H + diff --git a/lib/windows32/include/steam/isteamugc.h b/lib/windows32/include/steam/isteamugc.h new file mode 100644 index 0000000..1827fc6 --- /dev/null +++ b/lib/windows32/include/steam/isteamugc.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam ugc +// +//============================================================================= + +#ifndef ISTEAMUGC_H +#define ISTEAMUGC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; + + +const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; +const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; + + +// Matching UGC types for queries +enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) + k_EUGCMatchingUGCType_All = ~0, // return everything +}; + +// Different lists of published UGC for a user. +// If the current logged in user is different than the specified user, then some options may not be allowed. +enum EUserUGCList +{ + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, +}; + +// Sort order for user published UGC lists (defaults to creation order descending) +enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, +}; + +// Combination of sorting and filtering for queries across all UGC +enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +}; + +enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t + k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data + k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files + k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam + k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image + k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes +}; + +enum EItemState +{ + k_EItemStateNone = 0, // item not tracked on client + k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. + k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage + k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) + k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content + k_EItemStateDownloading = 16, // item update is currently downloading + k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired +}; + +enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +}; + +enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) + k_EItemPreviewType_YouTubeVideo = 1, // video id is stored + k_EItemPreviewType_Sketchfab = 2, // model id is stored + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout + // +---+---+-------+ + // | |Up | | + // +---+---+---+---+ + // | L | F | R | B | + // +---+---+---+---+ + // | |Dn | | + // +---+---+---+---+ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value +}; + +const uint32 kNumUGCResultsPerPage = 50; +const uint32 k_cchDeveloperMetadataMax = 5000; + +// Details for a single published file/UGC +struct SteamUGCDetails_t +{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; // The result of the operation. + EWorkshopFileType m_eFileType; // Type of the file + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + uint32 m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) + ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility + bool m_bBanned; // whether the file was banned + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + // file/url information + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + // voting information + uint32 m_unVotesUp; // number of votes up + uint32 m_unVotesDown; // number of votes down + float m_flScore; // calculated score + // collection details + uint32 m_unNumChildren; +}; + +//----------------------------------------------------------------------------- +// Purpose: Steam UGC support API +//----------------------------------------------------------------------------- +class ISteamUGC +{ +public: + + // Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + + // Send the query to Steam + CALL_RESULT( SteamUGCQueryCompleted_t ) + virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Retrieve an individual result after receiving the callback for querying UGC + virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; + virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; + virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; + virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; + virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0; + virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; + virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + + // Release the request to free up memory, after retrieving results + virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Options to set for querying UGC + virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; + virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; + virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0; + virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0; + virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; + virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; + virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; + virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; + virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; + + // Options only for querying user UGC + virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; + + // Options only for querying all UGC + virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; + virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; + virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; + + // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; + + // Steam Workshop Creator API + CALL_RESULT( CreateItemResult_t ) + virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet + + virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + + virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item + virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item + virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set + virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item + virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item + virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder + virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key + virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. + virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item + virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item + virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) + + CALL_RESULT( SubmitItemUpdateResult_t ) + virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() + virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0; + + // Steam Workshop Consumer API + CALL_RESULT( SetUserItemVoteResult_t ) + virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0; + CALL_RESULT( GetUserItemVoteResult_t ) + virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits + virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items + virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs + + // get EItemState flags about item on this client + virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0; + + // get info about currently installed content on disc for items that have k_EItemStateInstalled set + // if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0; + + // get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + // then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + // If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0; + + // game servers can set a specific workshop folder before issuing any UGC commands. + // This is helpful if you want to support multiple game servers running out of the same install folder + virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0; + + // SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends + virtual void SuspendDownloads( bool bSuspend ) = 0; + + // usage tracking + CALL_RESULT( StartPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; +}; + +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION009" + +//----------------------------------------------------------------------------- +// Purpose: Callback for querying UGC +//----------------------------------------------------------------------------- +struct SteamUGCQueryCompleted_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + UGCQueryHandle_t m_handle; + EResult m_eResult; + uint32 m_unNumResultsReturned; + uint32 m_unTotalMatchingResults; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback for requesting details on one piece of UGC +//----------------------------------------------------------------------------- +struct SteamUGCRequestUGCDetailsResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + SteamUGCDetails_t m_details; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::CreateItem() +//----------------------------------------------------------------------------- +struct CreateItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::SubmitItemUpdate() +//----------------------------------------------------------------------------- +struct SubmitItemUpdateResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + EResult m_eResult; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a Workshop item has been installed or updated +//----------------------------------------------------------------------------- +struct ItemInstalled_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of DownloadItem(), existing item files can be accessed again +//----------------------------------------------------------------------------- +struct DownloadItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() +//----------------------------------------------------------------------------- +struct UserFavoriteItemsListChanged_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bWasAddRequest; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SetUserItemVote() +//----------------------------------------------------------------------------- +struct SetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVoteUp; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserItemVote() +//----------------------------------------------------------------------------- +struct GetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVotedUp; + bool m_bVotedDown; + bool m_bVoteSkipped; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StartPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StartPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StopPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StopPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + EResult m_eResult; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMUGC_H diff --git a/lib/windows32/include/steam/isteamunifiedmessages.h b/lib/windows32/include/steam/isteamunifiedmessages.h new file mode 100644 index 0000000..684f4e8 --- /dev/null +++ b/lib/windows32/include/steam/isteamunifiedmessages.h @@ -0,0 +1,63 @@ +//====== Copyright � 1996-2007, Valve Corporation, All rights reserved. ======= +// +// Purpose: Interface to unified messages client +// +// You should not need to use this interface except if your product is using a language other than C++. +// Contact your Steam Tech contact for more details. +// +//============================================================================= + +#ifndef ISTEAMUNIFIEDMESSAGES_H +#define ISTEAMUNIFIEDMESSAGES_H +#ifdef _WIN32 +#pragma once +#endif + +typedef uint64 ClientUnifiedMessageHandle; + +class ISteamUnifiedMessages +{ +public: + static const ClientUnifiedMessageHandle k_InvalidUnifiedMessageHandle = 0; + + // Sends a service method (in binary serialized form) using the Steam Client. + // Returns a unified message handle (k_InvalidUnifiedMessageHandle if could not send the message). + virtual ClientUnifiedMessageHandle SendMethod( const char *pchServiceMethod, const void *pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext ) = 0; + + // Gets the size of the response and the EResult. Returns false if the response is not ready yet. + virtual bool GetMethodResponseInfo( ClientUnifiedMessageHandle hHandle, uint32 *punResponseSize, EResult *peResult ) = 0; + + // Gets a response in binary serialized form (and optionally release the corresponding allocated memory). + virtual bool GetMethodResponseData( ClientUnifiedMessageHandle hHandle, void *pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease ) = 0; + + // Releases the message and its corresponding allocated memory. + virtual bool ReleaseMethod( ClientUnifiedMessageHandle hHandle ) = 0; + + // Sends a service notification (in binary serialized form) using the Steam Client. + // Returns true if the notification was sent successfully. + virtual bool SendNotification( const char *pchServiceNotification, const void *pNotificationBuffer, uint32 unNotificationBufferSize ) = 0; +}; + +#define STEAMUNIFIEDMESSAGES_INTERFACE_VERSION "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct SteamUnifiedMessagesSendMethodResult_t +{ + enum { k_iCallback = k_iClientUnifiedMessagesCallbacks + 1 }; + ClientUnifiedMessageHandle m_hHandle; // The handle returned by SendMethod(). + uint64 m_unContext; // Context provided when calling SendMethod(). + EResult m_eResult; // The result of the method call. + uint32 m_unResponseSize; // The size of the response. +}; + +#pragma pack( pop ) + +#endif // ISTEAMUNIFIEDMESSAGES_H diff --git a/lib/windows32/include/steam/isteamuser.h b/lib/windows32/include/steam/isteamuser.h new file mode 100644 index 0000000..f97a057 --- /dev/null +++ b/lib/windows32/include/steam/isteamuser.h @@ -0,0 +1,355 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to user account information in Steam +// +//============================================================================= + +#ifndef ISTEAMUSER_H +#define ISTEAMUSER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// structure that contains client callback data +// see callbacks documentation for more details +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct CallbackMsg_t +{ + HSteamUser m_hSteamUser; + int m_iCallback; + uint8 *m_pubParam; + int m_cubParam; +}; +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing and manipulating a steam account +// associated with one client instance +//----------------------------------------------------------------------------- +class ISteamUser +{ +public: + // returns the HSteamUser this interface represents + // this is only used internally by the API, and by a few select interfaces that support multi-user + virtual HSteamUser GetHSteamUser() = 0; + + // returns true if the Steam client current has a live connection to the Steam servers. + // If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. + // The Steam client will automatically be trying to recreate the connection as often as possible. + virtual bool BLoggedOn() = 0; + + // returns the CSteamID of the account currently logged into the Steam client + // a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API + virtual CSteamID GetSteamID() = 0; + + // Multiplayer Authentication functions + + // InitiateGameConnection() starts the state machine for authenticating the game client with the game server + // It is the client portion of a three-way handshake between the client, the game server, and the steam servers + // + // Parameters: + // void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. + // int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> ) + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + // bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) + // + // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed + // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + + // notify of disconnect + // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + + // Legacy functions + + // used by only a few games to track usage events + virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; + + // get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. + // this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local" + virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0; + + // Starts voice recording. Once started, use GetVoice() to get the data + virtual void StartVoiceRecording( ) = 0; + + // Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for + // a little bit after this function is called. GetVoice() should continue to be called until it returns + // k_eVoiceResultNotRecording + virtual void StopVoiceRecording( ) = 0; + + // Determine the amount of captured audio data that is available in bytes. + // This provides both the compressed and uncompressed data. Please note that the uncompressed + // data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected. + // nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case) + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to + // DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format. + // Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected, and may have passed through denoising filters, etc. + // This function should be called as often as possible once recording has started; once per frame at least. + // nBytesWritten is set to the number of bytes written to pDestBuffer. + // nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer. + // You must grab both compressed and uncompressed here at the same time, if you want both. + // Matching data that is not read during this call will be thrown away. + // GetAvailableVoice() can be used to determine how much data is actually available. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Decompresses a chunk of compressed data produced by GetVoice(). + // nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall. + // In that case, nBytesWritten is set to the size of the buffer required to decompress the given + // data. The suggested buffer size for the destination buffer is 22 kilobytes. + // The output format of the data is 16-bit signed at the requested samples per second. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate + virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; + + // This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results + virtual uint32 GetVoiceOptimalSampleRate() = 0; + + // Retrieve ticket to be sent to the entity who wishes to authenticate you. + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to BeginAuthSession, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam + // (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. + virtual bool BIsBehindNAT() = 0; + + // set data to be replicated to friends so that they can join your game + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + virtual void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer ) = 0; + + // Requests a ticket encrypted with an app specific shared key + // pDataToInclude, cbDataToInclude will be encrypted into the ticket + // ( This is asynchronous, you must wait for the ticket to be completed by the server ) + CALL_RESULT( EncryptedAppTicketResponse_t ) + virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; + + // retrieve a finished ticket + virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Trading Card badges data access + // if you only have one set of cards, the series will be 1 + // the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) + virtual int GetGameBadgeLevel( int nSeries, bool bFoil ) = 0; + + // gets the Steam Level of the user, as shown on their profile + virtual int GetPlayerSteamLevel() = 0; + + // Requests a URL which authenticates an in-game browser for store check-out, + // and then redirects to the specified URL. As long as the in-game browser + // accepts and handles session cookies, Steam microtransaction checkout pages + // will automatically recognize the user instead of presenting a login page. + // The result of this API call will be a StoreAuthURLResponse_t callback. + // NOTE: The URL has a very short lifetime to prevent history-snooping attacks, + // so you should only call this API when you are about to launch the browser, + // or else immediately navigate to the result URL using a hidden browser window. + // NOTE 2: The resulting authorization cookie has an expiration time of one day, + // so it would be a good idea to request and visit a new auth URL every 12 hours. + CALL_RESULT( StoreAuthURLResponse_t ) + virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; + + // gets whether the users phone number is verified + virtual bool BIsPhoneVerified() = 0; + + // gets whether the user has two factor enabled on their account + virtual bool BIsTwoFactorEnabled() = 0; + + // gets whether the users phone number is identifying + virtual bool BIsPhoneIdentifying() = 0; + + // gets whether the users phone number is awaiting (re)verification + virtual bool BIsPhoneRequiringVerification() = 0; + +}; + +#define STEAMUSER_INTERFACE_VERSION "SteamUser019" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a connections to the Steam back-end has been established +// this means the Steam client now has a working connection to the Steam servers +// usually this will have occurred before the game has launched, and should +// only be seen if the user has dropped connection due to a networking issue +// or a Steam server update +//----------------------------------------------------------------------------- +struct SteamServersConnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 1 }; +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a connection attempt has failed +// this will occur periodically if the Steam client is not connected, +// and has failed in it's retry to establish a connection +//----------------------------------------------------------------------------- +struct SteamServerConnectFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 2 }; + EResult m_eResult; + bool m_bStillRetrying; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called if the client has lost connection to the Steam servers +// real-time services will be disabled until a matching SteamServersConnected_t has been posted +//----------------------------------------------------------------------------- +struct SteamServersDisconnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 3 }; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, +// which it may be in the process of or already connected to. +// The game client should immediately disconnect upon receiving this message. +// This can usually occur if the user doesn't have rights to play on the game server. +//----------------------------------------------------------------------------- +struct ClientGameServerDeny_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 13 }; + + uint32 m_uAppID; + uint32 m_unGameServerIP; + uint16 m_usGameServerPort; + uint16 m_bSecure; + uint32 m_uReason; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) +// When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. +// This usually occurs in the rare event the Steam client has some kind of fatal error. +//----------------------------------------------------------------------------- +struct IPCFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 17 }; + enum EFailureType + { + k_EFailureFlushedCallbackQueue, + k_EFailurePipeFail, + }; + uint8 m_eFailureType; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Signaled whenever licenses change +//----------------------------------------------------------------------------- +struct LicensesUpdated_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 25 }; +}; + + +//----------------------------------------------------------------------------- +// callback for BeginAuthSession +//----------------------------------------------------------------------------- +struct ValidateAuthTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 43 }; + CSteamID m_SteamID; + EAuthSessionResponse m_eAuthSessionResponse; + CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a user has responded to a microtransaction authorization request +//----------------------------------------------------------------------------- +struct MicroTxnAuthorizationResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 52 }; + + uint32 m_unAppID; // AppID for this microtransaction + uint64 m_ulOrderID; // OrderID provided for the microtransaction + uint8 m_bAuthorized; // if user authorized transaction +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result from RequestEncryptedAppTicket +//----------------------------------------------------------------------------- +struct EncryptedAppTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 54 }; + + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// callback for GetAuthSessionTicket +//----------------------------------------------------------------------------- +struct GetAuthSessionTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 63 }; + HAuthTicket m_hAuthTicket; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to a steam://gamewebcallback/ command +//----------------------------------------------------------------------------- +struct GameWebCallback_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 64 }; + char m_szURL[256]; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL +//----------------------------------------------------------------------------- +struct StoreAuthURLResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 65 }; + char m_szURL[512]; +}; + + + +#pragma pack( pop ) + +#endif // ISTEAMUSER_H diff --git a/lib/windows32/include/steam/isteamuserstats.h b/lib/windows32/include/steam/isteamuserstats.h new file mode 100644 index 0000000..29ae38b --- /dev/null +++ b/lib/windows32/include/steam/isteamuserstats.h @@ -0,0 +1,476 @@ +//====== Copyright � 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to stats, achievements, and leaderboards +// +//============================================================================= + +#ifndef ISTEAMUSERSTATS_H +#define ISTEAMUSERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamremotestorage.h" + +// size limit on stat or achievement name (UTF-8 encoded) +enum { k_cchStatNameMax = 128 }; + +// maximum number of bytes for a leaderboard name (UTF-8 encoded) +enum { k_cchLeaderboardNameMax = 128 }; + +// maximum number of details int32's storable for a single leaderboard entry +enum { k_cLeaderboardDetailsMax = 64 }; + +// handle to a single leaderboard +typedef uint64 SteamLeaderboard_t; + +// handle to a set of downloaded entries in a leaderboard +typedef uint64 SteamLeaderboardEntries_t; + +// type of data request, when downloading leaderboard entries +enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3 +}; + +// the sort order of a leaderboard +enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number + k_ELeaderboardSortMethodDescending = 2, // top-score is highest number +}; + +// the display type (used by the Steam Community web site) for a leaderboard +enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score + k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds +}; + +enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score + k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified +}; + +// a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct LeaderboardEntry_t +{ + CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info + int32 m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard + int32 m_nScore; // score as set in the leaderboard + int32 m_cDetails; // number of int32 details available for this entry + UGCHandle_t m_hUGC; // handle for UGC attached to the entry +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing stats, achievements, and leaderboard information +//----------------------------------------------------------------------------- +class ISteamUserStats +{ +public: + // Ask the server to send down this user's data and achievements for this game + CALL_BACK( UserStatsReceived_t ) + virtual bool RequestCurrentStats() = 0; + + // Data accessors + virtual bool GetStat( const char *pchName, int32 *pData ) = 0; + virtual bool GetStat( const char *pchName, float *pData ) = 0; + + // Set / update data + virtual bool SetStat( const char *pchName, int32 nData ) = 0; + virtual bool SetStat( const char *pchName, float fData ) = 0; + virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + // Achievement flag accessors + virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0; + virtual bool SetAchievement( const char *pchName ) = 0; + virtual bool ClearAchievement( const char *pchName ) = 0; + + // Get the achievement status, and the time it was unlocked if unlocked. + // If the return value is true, but the unlock time is zero, that means it was unlocked before Steam + // began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. + virtual bool GetAchievementAndUnlockTime( const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Store the current data on the server, will get a callback when set + // And one callback for every new achievement + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + virtual bool StoreStats() = 0; + + // Achievement / GroupAchievement metadata + + // Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. + // A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback + // which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the + // specified achievement. + virtual int GetAchievementIcon( const char *pchName ) = 0; + + // Get general attributes for an achievement. Accepts the following keys: + // - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) + // - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) + virtual const char *GetAchievementDisplayAttribute( const char *pchName, const char *pchKey ) = 0; + + // Achievement progress - triggers an AchievementProgress callback, that is all. + // Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. + virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0; + + // Used for iterating achievements. In general games should not need these functions because they should have a + // list of existing achievements compiled into them + virtual uint32 GetNumAchievements() = 0; + // Get achievement name iAchievement in [0,GetNumAchievements) + virtual const char *GetAchievementName( uint32 iAchievement ) = 0; + + // Friends stats & achievements + + // downloads stats for the user + // returns a UserStatsReceived_t received when completed + // if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( UserStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + // See notes for GetAchievementAndUnlockTime above + virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Reset stats + virtual bool ResetAllStats( bool bAchievementsToo ) = 0; + + // Leaderboard functions + + // asks the Steam back-end for a leaderboard by name, and will create it if it's not yet + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT(LeaderboardFindResult_t) + virtual SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) = 0; + + // as above, but won't create the leaderboard if it's not found + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT( LeaderboardFindResult_t ) + virtual SteamAPICall_t FindLeaderboard( const char *pchLeaderboardName ) = 0; + + // returns the name of a leaderboard + virtual const char *GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the total number of entries in a leaderboard, as of the last request + virtual int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the sort method of the leaderboard + virtual ELeaderboardSortMethod GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the display type of the leaderboard + virtual ELeaderboardDisplayType GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // Asks the Steam back-end for a set of rows in the leaderboard. + // This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t + // LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) + // You can ask for more entries than exist, and it will return as many as do exist. + // k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] + // k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate + // e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after + // k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) = 0; + // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers + // if a user doesn't have a leaderboard entry, they won't be included in the result + // a max of 100 users can be downloaded at a time, with only one outstanding call at a time + METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, + ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; + + // Returns data about a single leaderboard entry + // use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries + // e.g. + // void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) + // { + // for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) + // { + // LeaderboardEntry_t leaderboardEntry; + // int32 details[3]; // we know this is how many we've stored previously + // GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); + // assert( leaderboardEntry.m_cDetails == 3 ); + // ... + // } + // once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid + virtual bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) = 0; + + // Uploads a user score to the Steam back-end. + // This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t + // Details are extra game-defined information regarding how the user got that score + // pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list + CALL_RESULT( LeaderboardScoreUploaded_t ) + virtual SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 *pScoreDetails, int cScoreDetailsCount ) = 0; + + // Attaches a piece of user generated content the user's entry on a leaderboard. + // hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). + // This call is asynchronous, with the result returned in LeaderboardUGCSet_t. + CALL_RESULT( LeaderboardUGCSet_t ) + virtual SteamAPICall_t AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) = 0; + + // Retrieves the number of players currently playing your game (online + offline) + // This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t + CALL_RESULT( NumberOfCurrentPlayers_t ) + virtual SteamAPICall_t GetNumberOfCurrentPlayers() = 0; + + // Requests that Steam fetch data on the percentage of players who have received each achievement + // for the game globally. + // This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. + CALL_RESULT( GlobalAchievementPercentagesReady_t ) + virtual SteamAPICall_t RequestGlobalAchievementPercentages() = 0; + + // Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch + // the next most achieved afterwards. Will return -1 if there is no data on achievement + // percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). + virtual int GetMostAchievedAchievementInfo( char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another + // GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last + // achievement has been iterated. + virtual int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Returns the percentage of users who have achieved the specified achievement. + virtual bool GetAchievementAchievedPercent( const char *pchName, float *pflPercent ) = 0; + + // Requests global stats data, which is available for stats marked as "aggregated". + // This call is asynchronous, with the results returned in GlobalStatsReceived_t. + // nHistoryDays specifies how many days of day-by-day history to retrieve in addition + // to the overall totals. The limit is 60. + CALL_RESULT( GlobalStatsReceived_t ) + virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; + + // Gets the lifetime totals for an aggregated stat + virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; + virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; + + // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. + // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, + // etc. cubData is the size in bytes of the pubData buffer. Returns the number of + // elements actually set. + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; + +#ifdef _PS3 + // Call to kick off installation of the PS3 trophies. This call is asynchronous, and the results will be returned in a PS3TrophiesInstalled_t + // callback. + virtual bool InstallPS3Trophies() = 0; + + // Returns the amount of space required at boot to install trophies. This value can be used when comparing the amount of space needed + // by the game to the available space value passed to the game at boot. The value is set during InstallPS3Trophies(). + virtual uint64 GetTrophySpaceRequiredBeforeInstall() = 0; + + // On PS3, user stats & achievement progress through Steam must be stored with the user's saved game data. + // At startup, before calling RequestCurrentStats(), you must pass the user's stats data to Steam via this method. + // If you do not have any user data, call this function with pvData = NULL and cubData = 0 + virtual bool SetUserStatsData( const void *pvData, uint32 cubData ) = 0; + + // Call to get the user's current stats data. You should retrieve this data after receiving successful UserStatsReceived_t & UserStatsStored_t + // callbacks, and store the data with the user's save game data. You can call this method with pvData = NULL and cubData = 0 to get the required + // buffer size. + virtual bool GetUserStatsData( void *pvData, uint32 cubData, uint32 *pcubWritten ) = 0; +#endif +}; + +#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION011" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct UserStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 1 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct UserStatsStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 2 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // success / error +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the achievements for a game, or an +// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress +// are zero, that means the achievement has been fully unlocked. +//----------------------------------------------------------------------------- +struct UserAchievementStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 3 }; + + uint64 m_nGameID; // Game this is for + bool m_bGroupAchievement; // if this is a "group" achievement + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + uint32 m_nCurProgress; // current progress towards the achievement + uint32 m_nMaxProgress; // "out of" this many +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardFindResult_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 4 }; + SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found + uint8 m_bLeaderboardFound; // 0 if no leaderboard found +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoresDownloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 5 }; + SteamLeaderboard_t m_hSteamLeaderboard; + SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() + int m_cEntryCount; // the number of entries downloaded +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoreUploaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 6 }; + uint8 m_bSuccess; // 1 if the call was successful + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + int32 m_nScore; // the score that was attempted to set + uint8 m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better + int m_nGlobalRankNew; // the new global rank of the user in this leaderboard + int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard +}; + +struct NumberOfCurrentPlayers_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 7 }; + uint8 m_bSuccess; // 1 if the call was successful + int32 m_cPlayers; // Number of players currently playing +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct UserStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that an achievement icon has been fetched +//----------------------------------------------------------------------------- +struct UserAchievementIconFetched_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 9 }; + + CGameID m_nGameID; // Game this is for + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + bool m_bAchieved; // Is the icon for the achieved or not achieved version? + int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that global achievement percentages are fetched +//----------------------------------------------------------------------------- +struct GlobalAchievementPercentagesReady_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 10 }; + + uint64 m_nGameID; // Game this is for + EResult m_eResult; // Result of the operation +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() +//----------------------------------------------------------------------------- +struct LeaderboardUGCSet_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 11 }; + EResult m_eResult; // The result of the operation + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating that PS3 trophies have been installed +//----------------------------------------------------------------------------- +struct PS3TrophiesInstalled_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // The result of the operation + uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies + +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating global stats have been received. +// Returned as a result of RequestGlobalStats() +//----------------------------------------------------------------------------- +struct GlobalStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game global stats were requested for + EResult m_eResult; // The result of the request +}; + +#pragma pack( pop ) + + +#endif // ISTEAMUSER_H diff --git a/lib/windows32/include/steam/isteamutils.h b/lib/windows32/include/steam/isteamutils.h new file mode 100644 index 0000000..aaf839f --- /dev/null +++ b/lib/windows32/include/steam/isteamutils.h @@ -0,0 +1,254 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to utility functions in Steam +// +//============================================================================= + +#ifndef ISTEAMUTILS_H +#define ISTEAMUTILS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +// Steam API call failure results +enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, // no failure + k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away + k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken + // SteamServersDisconnected_t callback will be sent around the same time + // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again + k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists + k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call +}; + + +// Input modes for the Big Picture gamepad text entry +enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1 +}; + + +// Controls number of allowed lines for the Big Picture gamepad text entry +enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1 +}; + + +// function prototype for warning message hook +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); + +//----------------------------------------------------------------------------- +// Purpose: interface to user independent utility functions +//----------------------------------------------------------------------------- +class ISteamUtils +{ +public: + // return the number of seconds since the user + virtual uint32 GetSecondsSinceAppActive() = 0; + virtual uint32 GetSecondsSinceComputerActive() = 0; + + // the universe this client is connecting to + virtual EUniverse GetConnectedUniverse() = 0; + + // Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) + virtual uint32 GetServerRealTime() = 0; + + // returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + // e.g "US" or "UK". + virtual const char *GetIPCountry() = 0; + + // returns true if the image exists, and valid sizes were filled out + virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0; + + // returns true if the image exists, and the buffer was successfully filled out + // results are returned in RGBA format + // the destination buffer size should be 4 * height * width * sizeof(char) + virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; + + // returns the IP of the reporting server for valve - currently only used in Source engine games + virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; + + // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + virtual uint8 GetCurrentBatteryPower() = 0; + + // returns the appID of the current process + virtual uint32 GetAppID() = 0; + + // Sets the position where the overlay instance for the currently calling game should show notifications. + // This position is per-game and if this function is called from outside of a game context it will do nothing. + virtual void SetOverlayNotificationPosition( ENotificationPosition eNotificationPosition ) = 0; + + // API asynchronous call results + // can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + virtual bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, bool *pbFailed ) = 0; + virtual ESteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) = 0; + virtual bool GetAPICallResult( SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() instead. Game servers do not need to call this function. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + // start & hook the game process, so this function will initially return false while the overlay is loading. + virtual bool IsOverlayEnabled() = 0; + + // Normally this call is unneeded if your game has a constantly running frame loop that calls the + // D3D Present API, or OGL SwapBuffers API every frame. + // + // However, if you have a game that only refreshes the screen on an event driven basis then that can break + // the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + // need to Present() to the screen any time an even needing a notification happens or when the overlay is + // brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + // in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + // refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + virtual bool BOverlayNeedsPresent() = 0; + + // Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + // of the partner site, for example to refuse to load modified executable files. + // The result is returned in CheckFileSignature_t. + // k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + // k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + // k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + // k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + // k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + CALL_RESULT( CheckFileSignature_t ) + virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; + + // Activates the Big Picture text input dialog which only supports gamepad input + virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; + + // Returns previously entered text & length + virtual uint32 GetEnteredGamepadTextLength() = 0; + virtual bool GetEnteredGamepadTextInput( char *pchText, uint32 cchText ) = 0; + + // returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + virtual const char *GetSteamUILanguage() = 0; + + // returns true if Steam itself is running in VR mode + virtual bool IsSteamRunningInVR() = 0; + + // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; + + // returns true if Steam & the Steam Overlay are running in Big Picture mode + // Games much be launched through the Steam client to enable the Big Picture overlay. During development, + // a game can be added as a non-steam game to the developers library to test this feature + virtual bool IsSteamInBigPictureMode() = 0; + + // ask SteamUI to create and render its OpenVR dashboard + virtual void StartVRDashboard() = 0; +}; + +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils008" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: The country of the user changed +//----------------------------------------------------------------------------- +struct IPCountry_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 1 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute +//----------------------------------------------------------------------------- +struct LowBatteryPower_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 2 }; + uint8 m_nMinutesBatteryLeft; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a SteamAsyncCall_t has completed (or failed) +//----------------------------------------------------------------------------- +struct SteamAPICallCompleted_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; + SteamAPICall_t m_hAsyncCall; + int m_iCallback; + uint32 m_cubParam; +}; + + +//----------------------------------------------------------------------------- +// called when Steam wants to shutdown +//----------------------------------------------------------------------------- +struct SteamShutdown_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 4 }; +}; + +//----------------------------------------------------------------------------- +// results for CheckFileSignature +//----------------------------------------------------------------------------- +enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +}; + +//----------------------------------------------------------------------------- +// callback for CheckFileSignature +//----------------------------------------------------------------------------- +struct CheckFileSignature_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 5 }; + ECheckFileSignature m_eCheckFileSignature; +}; + + +// k_iSteamUtilsCallbacks + 13 is taken + + +//----------------------------------------------------------------------------- +// Big Picture gamepad text input has been closed +//----------------------------------------------------------------------------- +struct GamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; + bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input + uint32 m_unSubmittedText; +}; + +// k_iSteamUtilsCallbacks + 15 is taken + +#pragma pack( pop ) + +#endif // ISTEAMUTILS_H diff --git a/lib/windows32/include/steam/isteamvideo.h b/lib/windows32/include/steam/isteamvideo.h new file mode 100644 index 0000000..6893f0b --- /dev/null +++ b/lib/windows32/include/steam/isteamvideo.h @@ -0,0 +1,60 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Video +// +//============================================================================= + +#ifndef ISTEAMVIDEO_H +#define ISTEAMVIDEO_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + + + +//----------------------------------------------------------------------------- +// Purpose: Steam Video API +//----------------------------------------------------------------------------- +class ISteamVideo +{ +public: + + // Get a URL suitable for streaming the given Video app ID's video + virtual void GetVideoURL( AppId_t unVideoAppID ) = 0; + + // returns true if user is uploading a live broadcast + virtual bool IsBroadcasting( int *pnNumViewers ) = 0; +}; + +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V001" + +DEFINE_CALLBACK( BroadcastUploadStart_t, k_iClientVideoCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( BroadcastUploadStop_t, k_iClientVideoCallbacks + 5 ) + CALLBACK_MEMBER( 0, EBroadcastUploadResult, m_eResult ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) + CALLBACK_MEMBER( 0, EResult, m_eResult ) + CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) + CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMVIDEO_H diff --git a/lib/windows32/include/steam/matchmakingtypes.h b/lib/windows32/include/steam/matchmakingtypes.h new file mode 100644 index 0000000..e52cfc6 --- /dev/null +++ b/lib/windows32/include/steam/matchmakingtypes.h @@ -0,0 +1,251 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef MATCHMAKINGTYPES_H +#define MATCHMAKINGTYPES_H + +#ifdef _WIN32 +#pragma once +#endif + +#ifdef POSIX +#ifndef _snprintf +#define _snprintf snprintf +#endif +#endif + +#include <stdio.h> +#include <string.h> + +// +// Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. +// WARNING: These cannot be changed easily, without breaking clients using old interfaces. +// +const int k_cbMaxGameServerGameDir = 32; +const int k_cbMaxGameServerMapName = 32; +const int k_cbMaxGameServerGameDescription = 64; +const int k_cbMaxGameServerName = 64; +const int k_cbMaxGameServerTags = 128; +const int k_cbMaxGameServerGameData = 2048; + +/// Store key/value pair used in matchmaking queries. +/// +/// Actually, the name Key/Value is a bit misleading. The "key" is better +/// understood as "filter operation code" and the "value" is the operand to this +/// filter operation. The meaning of the operand depends upon the filter. +struct MatchMakingKeyValuePair_t +{ + MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; } + MatchMakingKeyValuePair_t( const char *pchKey, const char *pchValue ) + { + strncpy( m_szKey, pchKey, sizeof(m_szKey) ); // this is a public header, use basic c library string funcs only! + m_szKey[ sizeof( m_szKey ) - 1 ] = '\0'; + strncpy( m_szValue, pchValue, sizeof(m_szValue) ); + m_szValue[ sizeof( m_szValue ) - 1 ] = '\0'; + } + char m_szKey[ 256 ]; + char m_szValue[ 256 ]; +}; + + +enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match +}; + +// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, +// namely: its IP, its connection port, and its query port. +class servernetadr_t +{ +public: + + servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} + + void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +#ifdef NETADR_H + netadr_t GetIPAndQueryPort(); +#endif + + // Access the query port. + uint16 GetQueryPort() const; + void SetQueryPort( uint16 usPort ); + + // Access the connection port. + uint16 GetConnectionPort() const; + void SetConnectionPort( uint16 usPort ); + + // Access the IP + uint32 GetIP() const; + void SetIP( uint32 ); + + // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). + const char *GetConnectionAddressString() const; + const char *GetQueryAddressString() const; + + // Comparison operators and functions. + bool operator<(const servernetadr_t &netadr) const; + void operator=( const servernetadr_t &that ) + { + m_usConnectionPort = that.m_usConnectionPort; + m_usQueryPort = that.m_usQueryPort; + m_unIP = that.m_unIP; + } + + +private: + const char *ToString( uint32 unIP, uint16 usPort ) const; + uint16 m_usConnectionPort; // (in HOST byte order) + uint16 m_usQueryPort; + uint32 m_unIP; +}; + + +inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ) +{ + m_unIP = ip; + m_usQueryPort = usQueryPort; + m_usConnectionPort = usConnectionPort; +} + +#ifdef NETADR_H +inline netadr_t servernetadr_t::GetIPAndQueryPort() +{ + return netadr_t( m_unIP, m_usQueryPort ); +} +#endif + +inline uint16 servernetadr_t::GetQueryPort() const +{ + return m_usQueryPort; +} + +inline void servernetadr_t::SetQueryPort( uint16 usPort ) +{ + m_usQueryPort = usPort; +} + +inline uint16 servernetadr_t::GetConnectionPort() const +{ + return m_usConnectionPort; +} + +inline void servernetadr_t::SetConnectionPort( uint16 usPort ) +{ + m_usConnectionPort = usPort; +} + +inline uint32 servernetadr_t::GetIP() const +{ + return m_unIP; +} + +inline void servernetadr_t::SetIP( uint32 unIP ) +{ + m_unIP = unIP; +} + +inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const +{ + static char s[4][64]; + static int nBuf = 0; + unsigned char *ipByte = (unsigned char *)&unIP; +#ifdef VALVE_BIG_ENDIAN + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); +#else + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); +#endif + const char *pchRet = s[nBuf]; + ++nBuf; + nBuf %= ( (sizeof(s)/sizeof(s[0])) ); + return pchRet; +} + +inline const char* servernetadr_t::GetConnectionAddressString() const +{ + return ToString( m_unIP, m_usConnectionPort ); +} + +inline const char* servernetadr_t::GetQueryAddressString() const +{ + return ToString( m_unIP, m_usQueryPort ); +} + +inline bool servernetadr_t::operator<(const servernetadr_t &netadr) const +{ + return ( m_unIP < netadr.m_unIP ) || ( m_unIP == netadr.m_unIP && m_usQueryPort < netadr.m_usQueryPort ); +} + +//----------------------------------------------------------------------------- +// Purpose: Data describing a single server +//----------------------------------------------------------------------------- +class gameserveritem_t +{ +public: + gameserveritem_t(); + + const char* GetName() const; + void SetName( const char *pName ); + +public: + servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server + int m_nPing; ///< current ping time in milliseconds + bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past + bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed + char m_szGameDir[k_cbMaxGameServerGameDir]; ///< current game directory + char m_szMap[k_cbMaxGameServerMapName]; ///< current map + char m_szGameDescription[k_cbMaxGameServerGameDescription]; ///< game description + uint32 m_nAppID; ///< Steam App ID of this server + int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! + int m_nMaxPlayers; ///< Maximum players that can join this server + int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server + bool m_bPassword; ///< true if this server needs a password to join + bool m_bSecure; ///< Is this server protected by VAC + uint32 m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) + int m_nServerVersion; ///< server version as reported to Steam + +private: + + /// Game server name + char m_szServerName[k_cbMaxGameServerName]; + + // For data added after SteamMatchMaking001 add it here +public: + /// the tags this server exposes + char m_szGameTags[k_cbMaxGameServerTags]; + + /// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) + CSteamID m_steamID; +}; + + +inline gameserveritem_t::gameserveritem_t() +{ + m_szGameDir[0] = m_szMap[0] = m_szGameDescription[0] = m_szServerName[0] = 0; + m_bHadSuccessfulResponse = m_bDoNotRefresh = m_bPassword = m_bSecure = false; + m_nPing = m_nAppID = m_nPlayers = m_nMaxPlayers = m_nBotPlayers = m_ulTimeLastPlayed = m_nServerVersion = 0; + m_szGameTags[0] = 0; +} + +inline const char* gameserveritem_t::GetName() const +{ + // Use the IP address as the name if nothing is set yet. + if ( m_szServerName[0] == 0 ) + return m_NetAdr.GetConnectionAddressString(); + else + return m_szServerName; +} + +inline void gameserveritem_t::SetName( const char *pName ) +{ + strncpy( m_szServerName, pName, sizeof( m_szServerName ) ); + m_szServerName[ sizeof( m_szServerName ) - 1 ] = '\0'; +} + + +#endif // MATCHMAKINGTYPES_H diff --git a/lib/windows32/include/steam/steam_api.h b/lib/windows32/include/steam/steam_api.h new file mode 100644 index 0000000..e3a31ae --- /dev/null +++ b/lib/windows32/include/steam/steam_api.h @@ -0,0 +1,394 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_API_H +#define STEAM_API_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamuser.h" +#include "isteamfriends.h" +#include "isteamutils.h" +#include "isteammatchmaking.h" +#include "isteamuserstats.h" +#include "isteamapps.h" +#include "isteamnetworking.h" +#include "isteamremotestorage.h" +#include "isteamscreenshots.h" +#include "isteammusic.h" +#include "isteammusicremote.h" +#include "isteamhttp.h" +#include "isteamunifiedmessages.h" +#include "isteamcontroller.h" +#include "isteamugc.h" +#include "isteamapplist.h" +#include "isteamhtmlsurface.h" +#include "isteaminventory.h" +#include "isteamvideo.h" + + +// Steam API export macro +#if defined( _WIN32 ) && !defined( _X360 ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __declspec( dllexport ) + #elif defined( STEAM_API_NODLL ) + #define S_API extern "C" + #else + #define S_API extern "C" __declspec( dllimport ) + #endif // STEAM_API_EXPORTS +#elif defined( GNUC ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __attribute__ ((visibility("default"))) + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#else // !WIN32 + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Steam API setup & shutdown +// +// These functions manage loading, initializing and shutdown of the steamclient.dll +// +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + + +// SteamAPI_Init must be called before using any other API functions. If it fails, an +// error message will be output to the debugger (or stderr) with further information. +S_API bool S_CALLTYPE SteamAPI_Init(); + +// SteamAPI_Shutdown should be called during process shutdown if possible. +S_API void S_CALLTYPE SteamAPI_Shutdown(); + +// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. +// +// Returns true if the current process should terminate. Steam is now re-launching your application. +// +// Returns false if no action needs to be taken. This means that your executable was started through +// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). +// Your current process should continue if false is returned. +// +// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary +// since the DRM wrapper will ensure that your application was launched properly through Steam. +S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); + +// Many Steam API functions allocate a small amount of thread-local memory for parameter storage. +// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. +// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded +// program never needs to explicitly call this function. +S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); + + +// crash dump recording functions +S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); +S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Global accessors for Steamworks C++ APIs. See individual isteam*.h files for details. +// You should not cache the results of these accessors or pass the result pointers across +// modules! Different modules may be compiled against different SDK header versions, and +// the interface pointers could therefore be different across modules. Every line of code +// which calls into a Steamworks API should retrieve the interface from a global accessor. +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#if !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamClient(); +inline ISteamUser *SteamUser(); +inline ISteamFriends *SteamFriends(); +inline ISteamUtils *SteamUtils(); +inline ISteamMatchmaking *SteamMatchmaking(); +inline ISteamUserStats *SteamUserStats(); +inline ISteamApps *SteamApps(); +inline ISteamNetworking *SteamNetworking(); +inline ISteamMatchmakingServers *SteamMatchmakingServers(); +inline ISteamRemoteStorage *SteamRemoteStorage(); +inline ISteamScreenshots *SteamScreenshots(); +inline ISteamHTTP *SteamHTTP(); +inline ISteamUnifiedMessages *SteamUnifiedMessages(); +inline ISteamController *SteamController(); +inline ISteamUGC *SteamUGC(); +inline ISteamAppList *SteamAppList(); +inline ISteamMusic *SteamMusic(); +inline ISteamMusicRemote *SteamMusicRemote(); +inline ISteamHTMLSurface *SteamHTMLSurface(); +inline ISteamInventory *SteamInventory(); +inline ISteamVideo *SteamVideo(); +#endif // VERSION_SAFE_STEAM_API_INTERFACES + + +// CSteamAPIContext encapsulates the Steamworks API global accessors into +// a single object. This is DEPRECATED and only remains for compatibility. +class CSteamAPIContext +{ +public: + // DEPRECATED - there is no benefit to using this over the global accessors + CSteamAPIContext() { Clear(); } + void Clear(); + bool Init(); + ISteamClient* SteamClient() const { return m_pSteamClient; } + ISteamUser* SteamUser() const { return m_pSteamUser; } + ISteamFriends* SteamFriends() const { return m_pSteamFriends; } + ISteamUtils* SteamUtils() const { return m_pSteamUtils; } + ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } + ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } + ISteamApps* SteamApps() const { return m_pSteamApps; } + ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } + ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } + ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } + ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } + ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } + ISteamUnifiedMessages* SteamUnifiedMessages() const { return m_pSteamUnifiedMessages; } + ISteamController* SteamController() const { return m_pController; } + ISteamUGC* SteamUGC() const { return m_pSteamUGC; } + ISteamAppList* SteamAppList() const { return m_pSteamAppList; } + ISteamMusic* SteamMusic() const { return m_pSteamMusic; } + ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } + ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } + ISteamInventory* SteamInventory() const { return m_pSteamInventory; } + ISteamVideo* SteamVideo() const { return m_pSteamVideo; } + // DEPRECATED - there is no benefit to using this over the global accessors +private: + ISteamClient *m_pSteamClient; + ISteamUser *m_pSteamUser; + ISteamFriends *m_pSteamFriends; + ISteamUtils *m_pSteamUtils; + ISteamMatchmaking *m_pSteamMatchmaking; + ISteamUserStats *m_pSteamUserStats; + ISteamApps *m_pSteamApps; + ISteamMatchmakingServers *m_pSteamMatchmakingServers; + ISteamNetworking *m_pSteamNetworking; + ISteamRemoteStorage *m_pSteamRemoteStorage; + ISteamScreenshots *m_pSteamScreenshots; + ISteamHTTP *m_pSteamHTTP; + ISteamUnifiedMessages *m_pSteamUnifiedMessages; + ISteamController *m_pController; + ISteamUGC *m_pSteamUGC; + ISteamAppList *m_pSteamAppList; + ISteamMusic *m_pSteamMusic; + ISteamMusicRemote *m_pSteamMusicRemote; + ISteamHTMLSurface *m_pSteamHTMLSurface; + ISteamInventory *m_pSteamInventory; + ISteamVideo *m_pSteamVideo; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steam callback and call-result helpers +// +// The following macros and classes are used to register your application for +// callbacks and call-results, which are delivered in a predictable manner. +// +// STEAM_CALLBACK macros are meant for use inside of a C++ class definition. +// They map a Steam notification callback directly to a class member function +// which is automatically prototyped as "void func( callback_type *pParam )". +// +// CCallResult is used with specific Steam APIs that return "result handles". +// The handle can be passed to a CCallResult object's Set function, along with +// an object pointer and member-function pointer. The member function will +// be executed once the results of the Steam API call are available. +// +// CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK +// macros if you require finer control over registration and unregistration. +// +// Callbacks and call-results are queued automatically and are only +// delivered/executed when your application calls SteamAPI_RunCallbacks(). +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously, +// but if you choose to do this, callback code could be executed on any thread. +// One alternative is to call SteamAPI_RunCallbacks from the main thread only, +// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. +S_API void S_CALLTYPE SteamAPI_RunCallbacks(); + + +// Declares a callback member function plus a helper member variable which +// registers the callback on object creation and unregisters on destruction. +// The optional fourth 'var' param exists only for backwards-compatibility +// and can be ignored. +#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) ) + +// Declares a callback function and a named CCallbackManual variable which +// has Register and Unregister functions instead of automatic registration. +#define STEAM_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type > var; void func( callback_type *pParam ) + + +// Internal functions used by the utility CCallback objects to receive callbacks +S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); +// Internal functions used by the utility CCallResult objects to receive async call results +S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); + + +//----------------------------------------------------------------------------- +// Purpose: base for callbacks and call results - internal implementation detail +//----------------------------------------------------------------------------- +class CCallbackBase +{ +public: + CCallbackBase() { m_nCallbackFlags = 0; m_iCallback = 0; } + // don't add a virtual destructor because we export this binary interface across dll's + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) = 0; + int GetICallback() { return m_iCallback; } + virtual int GetCallbackSizeBytes() = 0; + +protected: + enum { k_ECallbackFlagsRegistered = 0x01, k_ECallbackFlagsGameServer = 0x02 }; + uint8 m_nCallbackFlags; + int m_iCallback; + friend class CCallbackMgr; + +private: + CCallbackBase( const CCallbackBase& ); + CCallbackBase& operator=( const CCallbackBase& ); +}; + +//----------------------------------------------------------------------------- +// Purpose: templated base for callbacks - internal implementation detail +//----------------------------------------------------------------------------- +template< int sizeof_P > +class CCallbackImpl : protected CCallbackBase +{ +public: + ~CCallbackImpl() { if ( m_nCallbackFlags & k_ECallbackFlagsRegistered ) SteamAPI_UnregisterCallback( this ); } + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } + +protected: + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } + virtual int GetCallbackSizeBytes() { return sizeof_P; } +}; + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +class CCallResult : private CCallbackBase +{ +public: + typedef void (T::*func_t)( P*, bool ); + + CCallResult(); + ~CCallResult(); + + void Set( SteamAPICall_t hAPICall, T *p, func_t func ); + bool IsActive() const; + void Cancel(); + + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } +private: + virtual void Run( void *pvParam ); + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); + virtual int GetCallbackSizeBytes() { return sizeof( P ); } + + SteamAPICall_t m_hAPICall; + T *m_pObj; + func_t m_Func; +}; + + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver = false > +class CCallback : public CCallbackImpl< sizeof( P ) > +{ +public: + typedef void (T::*func_t)(P*); + + // NOTE: If you can't provide the correct parameters at construction time, you should + // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. + CCallback( T *pObj, func_t func ); + + void Register( T *pObj, func_t func ); + void Unregister(); + +protected: + virtual void Run( void *pvParam ); + + T *m_pObj; + func_t m_Func; +}; + + +//----------------------------------------------------------------------------- +// Purpose: subclass of CCallback which allows default-construction in +// an unregistered state; you must call Register manually +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameServer = false > +class CCallbackManual : public CCallback< T, P, bGameServer > +{ +public: + CCallbackManual() : CCallback< T, P, bGameServer >( NULL, NULL ) {} + + // Inherits public Register and Unregister functions from base class +}; + + + +#ifdef _WIN32 +// disable this warning; this pattern need for steam callback registration +#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list +#endif + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_IsSteamRunning() returns true if Steam is currently running +S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); + +// Pumps out all the steam messages, calling registered callbacks. +// NOT THREADSAFE - do not call from multiple threads simultaneously. +S_API void Steam_RunCallbacks( HSteamPipe hSteamPipe, bool bGameServerCallbacks ); + +// register the callback funcs to use to interact with the steam dll +S_API void Steam_RegisterInterfaceFuncs( void *hModule ); + +// returns the HSteamUser of the last user to dispatch a callback +S_API HSteamUser Steam_GetHSteamUserCurrent(); + +// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. +// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs +S_API const char *SteamAPI_GetSteamInstallPath(); + +// returns the pipe we are communicating to Steam with +S_API HSteamPipe SteamAPI_GetHSteamPipe(); + +// sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks +S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); + +// backwards compat export, passes through to SteamAPI_ variants +S_API HSteamPipe GetHSteamPipe(); +S_API HSteamUser GetHSteamUser(); + + +#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) +// exists only for backwards compat with code written against older SDKs +S_API bool S_CALLTYPE SteamAPI_InitSafe(); +#endif + +#include "steam_api_internal.h" + +#endif // STEAM_API_H diff --git a/lib/windows32/include/steam/steam_api.json b/lib/windows32/include/steam/steam_api.json new file mode 100644 index 0000000..09adb0c --- /dev/null +++ b/lib/windows32/include/steam/steam_api.json @@ -0,0 +1,7576 @@ +{"typedefs":[{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "int8","type": "signed char"} +,{"typedef": "int16","type": "short"} +,{"typedef": "uint16","type": "unsigned short"} +,{"typedef": "int32","type": "int"} +,{"typedef": "uint32","type": "unsigned int"} +,{"typedef": "int64","type": "long long"} +,{"typedef": "uint64","type": "unsigned long long"} +,{"typedef": "lint64","type": "int64"} +,{"typedef": "ulint64","type": "uint64"} +,{"typedef": "intp","type": "long long"} +,{"typedef": "uintp","type": "unsigned long long"} +,{"typedef": "Salt_t","type": "uint8 [8]"} +,{"typedef": "GID_t","type": "uint64"} +,{"typedef": "JobID_t","type": "uint64"} +,{"typedef": "TxnID_t","type": "GID_t"} +,{"typedef": "PackageId_t","type": "uint32"} +,{"typedef": "BundleId_t","type": "uint32"} +,{"typedef": "AppId_t","type": "uint32"} +,{"typedef": "AssetClassId_t","type": "uint64"} +,{"typedef": "PhysicalItemId_t","type": "uint32"} +,{"typedef": "DepotId_t","type": "uint32"} +,{"typedef": "RTime32","type": "uint32"} +,{"typedef": "CellID_t","type": "uint32"} +,{"typedef": "SteamAPICall_t","type": "uint64"} +,{"typedef": "AccountID_t","type": "uint32"} +,{"typedef": "PartnerId_t","type": "uint32"} +,{"typedef": "ManifestId_t","type": "uint64"} +,{"typedef": "HAuthTicket","type": "uint32"} +,{"typedef": "PFNLegacyKeyRegistration","type": "void (*)(const char *, const char *)"} +,{"typedef": "PFNLegacyKeyInstalled","type": "_Bool (*)(void)"} +,{"typedef": "PFNPreMinidumpCallback","type": "void (*)(void *)"} +,{"typedef": "BREAKPAD_HANDLE","type": "void *"} +,{"typedef": "ValvePackingSentinel_t","type": "struct ValvePackingSentinel_t"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "HSteamPipe","type": "int32"} +,{"typedef": "HSteamUser","type": "int32"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "SteamAPI_CheckCallbackRegistered_t","type": "uint32 (*)(int)"} +,{"typedef": "FriendsGroupID_t","type": "int16"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "HServerListRequest","type": "void *"} +,{"typedef": "HServerQuery","type": "int"} +,{"typedef": "UGCHandle_t","type": "uint64"} +,{"typedef": "PublishedFileUpdateHandle_t","type": "uint64"} +,{"typedef": "PublishedFileId_t","type": "uint64"} +,{"typedef": "UGCFileWriteStreamHandle_t","type": "uint64"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "SteamLeaderboard_t","type": "uint64"} +,{"typedef": "SteamLeaderboardEntries_t","type": "uint64"} +,{"typedef": "SNetSocket_t","type": "uint32"} +,{"typedef": "SNetListenSocket_t","type": "uint32"} +,{"typedef": "ScreenshotHandle","type": "uint32"} +,{"typedef": "PlaybackStatusHasChanged_t::SteamCallback_t","type": "struct PlaybackStatusHasChanged_t"} +,{"typedef": "VolumeHasChanged_t::SteamCallback_t","type": "struct VolumeHasChanged_t"} +,{"typedef": "MusicPlayerRemoteWillActivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillActivate_t"} +,{"typedef": "MusicPlayerRemoteWillDeactivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillDeactivate_t"} +,{"typedef": "MusicPlayerRemoteToFront_t::SteamCallback_t","type": "struct MusicPlayerRemoteToFront_t"} +,{"typedef": "MusicPlayerWillQuit_t::SteamCallback_t","type": "struct MusicPlayerWillQuit_t"} +,{"typedef": "MusicPlayerWantsPlay_t::SteamCallback_t","type": "struct MusicPlayerWantsPlay_t"} +,{"typedef": "MusicPlayerWantsPause_t::SteamCallback_t","type": "struct MusicPlayerWantsPause_t"} +,{"typedef": "MusicPlayerWantsPlayPrevious_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayPrevious_t"} +,{"typedef": "MusicPlayerWantsPlayNext_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayNext_t"} +,{"typedef": "MusicPlayerWantsShuffled_t::SteamCallback_t","type": "struct MusicPlayerWantsShuffled_t"} +,{"typedef": "MusicPlayerWantsLooped_t::SteamCallback_t","type": "struct MusicPlayerWantsLooped_t"} +,{"typedef": "MusicPlayerWantsVolume_t::SteamCallback_t","type": "struct MusicPlayerWantsVolume_t"} +,{"typedef": "MusicPlayerSelectsQueueEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsQueueEntry_t"} +,{"typedef": "MusicPlayerSelectsPlaylistEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsPlaylistEntry_t"} +,{"typedef": "MusicPlayerWantsPlayingRepeatStatus_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayingRepeatStatus_t"} +,{"typedef": "HTTPRequestHandle","type": "uint32"} +,{"typedef": "HTTPCookieContainerHandle","type": "uint32"} +,{"typedef": "ClientUnifiedMessageHandle","type": "uint64"} +,{"typedef": "ControllerHandle_t","type": "uint64"} +,{"typedef": "ControllerActionSetHandle_t","type": "uint64"} +,{"typedef": "ControllerDigitalActionHandle_t","type": "uint64"} +,{"typedef": "ControllerAnalogActionHandle_t","type": "uint64"} +,{"typedef": "UGCQueryHandle_t","type": "uint64"} +,{"typedef": "UGCUpdateHandle_t","type": "uint64"} +,{"typedef": "SteamAppInstalled_t::SteamCallback_t","type": "struct SteamAppInstalled_t"} +,{"typedef": "SteamAppUninstalled_t::SteamCallback_t","type": "struct SteamAppUninstalled_t"} +,{"typedef": "HHTMLBrowser","type": "uint32"} +,{"typedef": "HTML_BrowserReady_t::SteamCallback_t","type": "struct HTML_BrowserReady_t"} +,{"typedef": "HTML_NeedsPaint_t::SteamCallback_t","type": "struct HTML_NeedsPaint_t"} +,{"typedef": "HTML_StartRequest_t::SteamCallback_t","type": "struct HTML_StartRequest_t"} +,{"typedef": "HTML_CloseBrowser_t::SteamCallback_t","type": "struct HTML_CloseBrowser_t"} +,{"typedef": "HTML_URLChanged_t::SteamCallback_t","type": "struct HTML_URLChanged_t"} +,{"typedef": "HTML_FinishedRequest_t::SteamCallback_t","type": "struct HTML_FinishedRequest_t"} +,{"typedef": "HTML_OpenLinkInNewTab_t::SteamCallback_t","type": "struct HTML_OpenLinkInNewTab_t"} +,{"typedef": "HTML_ChangedTitle_t::SteamCallback_t","type": "struct HTML_ChangedTitle_t"} +,{"typedef": "HTML_SearchResults_t::SteamCallback_t","type": "struct HTML_SearchResults_t"} +,{"typedef": "HTML_CanGoBackAndForward_t::SteamCallback_t","type": "struct HTML_CanGoBackAndForward_t"} +,{"typedef": "HTML_HorizontalScroll_t::SteamCallback_t","type": "struct HTML_HorizontalScroll_t"} +,{"typedef": "HTML_VerticalScroll_t::SteamCallback_t","type": "struct HTML_VerticalScroll_t"} +,{"typedef": "HTML_LinkAtPosition_t::SteamCallback_t","type": "struct HTML_LinkAtPosition_t"} +,{"typedef": "HTML_JSAlert_t::SteamCallback_t","type": "struct HTML_JSAlert_t"} +,{"typedef": "HTML_JSConfirm_t::SteamCallback_t","type": "struct HTML_JSConfirm_t"} +,{"typedef": "HTML_FileOpenDialog_t::SteamCallback_t","type": "struct HTML_FileOpenDialog_t"} +,{"typedef": "HTML_NewWindow_t::SteamCallback_t","type": "struct HTML_NewWindow_t"} +,{"typedef": "HTML_SetCursor_t::SteamCallback_t","type": "struct HTML_SetCursor_t"} +,{"typedef": "HTML_StatusText_t::SteamCallback_t","type": "struct HTML_StatusText_t"} +,{"typedef": "HTML_ShowToolTip_t::SteamCallback_t","type": "struct HTML_ShowToolTip_t"} +,{"typedef": "HTML_UpdateToolTip_t::SteamCallback_t","type": "struct HTML_UpdateToolTip_t"} +,{"typedef": "HTML_HideToolTip_t::SteamCallback_t","type": "struct HTML_HideToolTip_t"} +,{"typedef": "SteamItemInstanceID_t","type": "uint64"} +,{"typedef": "SteamItemDef_t","type": "int32"} +,{"typedef": "SteamInventoryResult_t","type": "int32"} +,{"typedef": "BroadcastUploadStart_t::SteamCallback_t","type": "struct BroadcastUploadStart_t"} +,{"typedef": "BroadcastUploadStop_t::SteamCallback_t","type": "struct BroadcastUploadStop_t"} +,{"typedef": "GetVideoURLResult_t::SteamCallback_t","type": "struct GetVideoURLResult_t"} +,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} +,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} +], +"enums":[ + {"enumname": "EUniverse","values": [ + {"name": "k_EUniverseInvalid","value": "0"} + ,{"name": "k_EUniversePublic","value": "1"} + ,{"name": "k_EUniverseBeta","value": "2"} + ,{"name": "k_EUniverseInternal","value": "3"} + ,{"name": "k_EUniverseDev","value": "4"} + ,{"name": "k_EUniverseMax","value": "5"} +]} +, {"enumname": "EResult","values": [ + {"name": "k_EResultOK","value": "1"} + ,{"name": "k_EResultFail","value": "2"} + ,{"name": "k_EResultNoConnection","value": "3"} + ,{"name": "k_EResultInvalidPassword","value": "5"} + ,{"name": "k_EResultLoggedInElsewhere","value": "6"} + ,{"name": "k_EResultInvalidProtocolVer","value": "7"} + ,{"name": "k_EResultInvalidParam","value": "8"} + ,{"name": "k_EResultFileNotFound","value": "9"} + ,{"name": "k_EResultBusy","value": "10"} + ,{"name": "k_EResultInvalidState","value": "11"} + ,{"name": "k_EResultInvalidName","value": "12"} + ,{"name": "k_EResultInvalidEmail","value": "13"} + ,{"name": "k_EResultDuplicateName","value": "14"} + ,{"name": "k_EResultAccessDenied","value": "15"} + ,{"name": "k_EResultTimeout","value": "16"} + ,{"name": "k_EResultBanned","value": "17"} + ,{"name": "k_EResultAccountNotFound","value": "18"} + ,{"name": "k_EResultInvalidSteamID","value": "19"} + ,{"name": "k_EResultServiceUnavailable","value": "20"} + ,{"name": "k_EResultNotLoggedOn","value": "21"} + ,{"name": "k_EResultPending","value": "22"} + ,{"name": "k_EResultEncryptionFailure","value": "23"} + ,{"name": "k_EResultInsufficientPrivilege","value": "24"} + ,{"name": "k_EResultLimitExceeded","value": "25"} + ,{"name": "k_EResultRevoked","value": "26"} + ,{"name": "k_EResultExpired","value": "27"} + ,{"name": "k_EResultAlreadyRedeemed","value": "28"} + ,{"name": "k_EResultDuplicateRequest","value": "29"} + ,{"name": "k_EResultAlreadyOwned","value": "30"} + ,{"name": "k_EResultIPNotFound","value": "31"} + ,{"name": "k_EResultPersistFailed","value": "32"} + ,{"name": "k_EResultLockingFailed","value": "33"} + ,{"name": "k_EResultLogonSessionReplaced","value": "34"} + ,{"name": "k_EResultConnectFailed","value": "35"} + ,{"name": "k_EResultHandshakeFailed","value": "36"} + ,{"name": "k_EResultIOFailure","value": "37"} + ,{"name": "k_EResultRemoteDisconnect","value": "38"} + ,{"name": "k_EResultShoppingCartNotFound","value": "39"} + ,{"name": "k_EResultBlocked","value": "40"} + ,{"name": "k_EResultIgnored","value": "41"} + ,{"name": "k_EResultNoMatch","value": "42"} + ,{"name": "k_EResultAccountDisabled","value": "43"} + ,{"name": "k_EResultServiceReadOnly","value": "44"} + ,{"name": "k_EResultAccountNotFeatured","value": "45"} + ,{"name": "k_EResultAdministratorOK","value": "46"} + ,{"name": "k_EResultContentVersion","value": "47"} + ,{"name": "k_EResultTryAnotherCM","value": "48"} + ,{"name": "k_EResultPasswordRequiredToKickSession","value": "49"} + ,{"name": "k_EResultAlreadyLoggedInElsewhere","value": "50"} + ,{"name": "k_EResultSuspended","value": "51"} + ,{"name": "k_EResultCancelled","value": "52"} + ,{"name": "k_EResultDataCorruption","value": "53"} + ,{"name": "k_EResultDiskFull","value": "54"} + ,{"name": "k_EResultRemoteCallFailed","value": "55"} + ,{"name": "k_EResultPasswordUnset","value": "56"} + ,{"name": "k_EResultExternalAccountUnlinked","value": "57"} + ,{"name": "k_EResultPSNTicketInvalid","value": "58"} + ,{"name": "k_EResultExternalAccountAlreadyLinked","value": "59"} + ,{"name": "k_EResultRemoteFileConflict","value": "60"} + ,{"name": "k_EResultIllegalPassword","value": "61"} + ,{"name": "k_EResultSameAsPreviousValue","value": "62"} + ,{"name": "k_EResultAccountLogonDenied","value": "63"} + ,{"name": "k_EResultCannotUseOldPassword","value": "64"} + ,{"name": "k_EResultInvalidLoginAuthCode","value": "65"} + ,{"name": "k_EResultAccountLogonDeniedNoMail","value": "66"} + ,{"name": "k_EResultHardwareNotCapableOfIPT","value": "67"} + ,{"name": "k_EResultIPTInitError","value": "68"} + ,{"name": "k_EResultParentalControlRestricted","value": "69"} + ,{"name": "k_EResultFacebookQueryError","value": "70"} + ,{"name": "k_EResultExpiredLoginAuthCode","value": "71"} + ,{"name": "k_EResultIPLoginRestrictionFailed","value": "72"} + ,{"name": "k_EResultAccountLockedDown","value": "73"} + ,{"name": "k_EResultAccountLogonDeniedVerifiedEmailRequired","value": "74"} + ,{"name": "k_EResultNoMatchingURL","value": "75"} + ,{"name": "k_EResultBadResponse","value": "76"} + ,{"name": "k_EResultRequirePasswordReEntry","value": "77"} + ,{"name": "k_EResultValueOutOfRange","value": "78"} + ,{"name": "k_EResultUnexpectedError","value": "79"} + ,{"name": "k_EResultDisabled","value": "80"} + ,{"name": "k_EResultInvalidCEGSubmission","value": "81"} + ,{"name": "k_EResultRestrictedDevice","value": "82"} + ,{"name": "k_EResultRegionLocked","value": "83"} + ,{"name": "k_EResultRateLimitExceeded","value": "84"} + ,{"name": "k_EResultAccountLoginDeniedNeedTwoFactor","value": "85"} + ,{"name": "k_EResultItemDeleted","value": "86"} + ,{"name": "k_EResultAccountLoginDeniedThrottle","value": "87"} + ,{"name": "k_EResultTwoFactorCodeMismatch","value": "88"} + ,{"name": "k_EResultTwoFactorActivationCodeMismatch","value": "89"} + ,{"name": "k_EResultAccountAssociatedToMultiplePartners","value": "90"} + ,{"name": "k_EResultNotModified","value": "91"} + ,{"name": "k_EResultNoMobileDevice","value": "92"} + ,{"name": "k_EResultTimeNotSynced","value": "93"} + ,{"name": "k_EResultSmsCodeFailed","value": "94"} + ,{"name": "k_EResultAccountLimitExceeded","value": "95"} + ,{"name": "k_EResultAccountActivityLimitExceeded","value": "96"} + ,{"name": "k_EResultPhoneActivityLimitExceeded","value": "97"} + ,{"name": "k_EResultRefundToWallet","value": "98"} + ,{"name": "k_EResultEmailSendFailure","value": "99"} + ,{"name": "k_EResultNotSettled","value": "100"} + ,{"name": "k_EResultNeedCaptcha","value": "101"} + ,{"name": "k_EResultGSLTDenied","value": "102"} + ,{"name": "k_EResultGSOwnerDenied","value": "103"} + ,{"name": "k_EResultInvalidItemType","value": "104"} + ,{"name": "k_EResultIPBanned","value": "105"} + ,{"name": "k_EResultGSLTExpired","value": "106"} +]} +, {"enumname": "EVoiceResult","values": [ + {"name": "k_EVoiceResultOK","value": "0"} + ,{"name": "k_EVoiceResultNotInitialized","value": "1"} + ,{"name": "k_EVoiceResultNotRecording","value": "2"} + ,{"name": "k_EVoiceResultNoData","value": "3"} + ,{"name": "k_EVoiceResultBufferTooSmall","value": "4"} + ,{"name": "k_EVoiceResultDataCorrupted","value": "5"} + ,{"name": "k_EVoiceResultRestricted","value": "6"} + ,{"name": "k_EVoiceResultUnsupportedCodec","value": "7"} + ,{"name": "k_EVoiceResultReceiverOutOfDate","value": "8"} + ,{"name": "k_EVoiceResultReceiverDidNotAnswer","value": "9"} +]} +, {"enumname": "EDenyReason","values": [ + {"name": "k_EDenyInvalid","value": "0"} + ,{"name": "k_EDenyInvalidVersion","value": "1"} + ,{"name": "k_EDenyGeneric","value": "2"} + ,{"name": "k_EDenyNotLoggedOn","value": "3"} + ,{"name": "k_EDenyNoLicense","value": "4"} + ,{"name": "k_EDenyCheater","value": "5"} + ,{"name": "k_EDenyLoggedInElseWhere","value": "6"} + ,{"name": "k_EDenyUnknownText","value": "7"} + ,{"name": "k_EDenyIncompatibleAnticheat","value": "8"} + ,{"name": "k_EDenyMemoryCorruption","value": "9"} + ,{"name": "k_EDenyIncompatibleSoftware","value": "10"} + ,{"name": "k_EDenySteamConnectionLost","value": "11"} + ,{"name": "k_EDenySteamConnectionError","value": "12"} + ,{"name": "k_EDenySteamResponseTimedOut","value": "13"} + ,{"name": "k_EDenySteamValidationStalled","value": "14"} + ,{"name": "k_EDenySteamOwnerLeftGuestUser","value": "15"} +]} +, {"enumname": "EBeginAuthSessionResult","values": [ + {"name": "k_EBeginAuthSessionResultOK","value": "0"} + ,{"name": "k_EBeginAuthSessionResultInvalidTicket","value": "1"} + ,{"name": "k_EBeginAuthSessionResultDuplicateRequest","value": "2"} + ,{"name": "k_EBeginAuthSessionResultInvalidVersion","value": "3"} + ,{"name": "k_EBeginAuthSessionResultGameMismatch","value": "4"} + ,{"name": "k_EBeginAuthSessionResultExpiredTicket","value": "5"} +]} +, {"enumname": "EAuthSessionResponse","values": [ + {"name": "k_EAuthSessionResponseOK","value": "0"} + ,{"name": "k_EAuthSessionResponseUserNotConnectedToSteam","value": "1"} + ,{"name": "k_EAuthSessionResponseNoLicenseOrExpired","value": "2"} + ,{"name": "k_EAuthSessionResponseVACBanned","value": "3"} + ,{"name": "k_EAuthSessionResponseLoggedInElseWhere","value": "4"} + ,{"name": "k_EAuthSessionResponseVACCheckTimedOut","value": "5"} + ,{"name": "k_EAuthSessionResponseAuthTicketCanceled","value": "6"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed","value": "7"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalid","value": "8"} + ,{"name": "k_EAuthSessionResponsePublisherIssuedBan","value": "9"} +]} +, {"enumname": "EUserHasLicenseForAppResult","values": [ + {"name": "k_EUserHasLicenseResultHasLicense","value": "0"} + ,{"name": "k_EUserHasLicenseResultDoesNotHaveLicense","value": "1"} + ,{"name": "k_EUserHasLicenseResultNoAuth","value": "2"} +]} +, {"enumname": "EAccountType","values": [ + {"name": "k_EAccountTypeInvalid","value": "0"} + ,{"name": "k_EAccountTypeIndividual","value": "1"} + ,{"name": "k_EAccountTypeMultiseat","value": "2"} + ,{"name": "k_EAccountTypeGameServer","value": "3"} + ,{"name": "k_EAccountTypeAnonGameServer","value": "4"} + ,{"name": "k_EAccountTypePending","value": "5"} + ,{"name": "k_EAccountTypeContentServer","value": "6"} + ,{"name": "k_EAccountTypeClan","value": "7"} + ,{"name": "k_EAccountTypeChat","value": "8"} + ,{"name": "k_EAccountTypeConsoleUser","value": "9"} + ,{"name": "k_EAccountTypeAnonUser","value": "10"} + ,{"name": "k_EAccountTypeMax","value": "11"} +]} +, {"enumname": "EAppReleaseState","values": [ + {"name": "k_EAppReleaseState_Unknown","value": "0"} + ,{"name": "k_EAppReleaseState_Unavailable","value": "1"} + ,{"name": "k_EAppReleaseState_Prerelease","value": "2"} + ,{"name": "k_EAppReleaseState_PreloadOnly","value": "3"} + ,{"name": "k_EAppReleaseState_Released","value": "4"} +]} +, {"enumname": "EAppOwnershipFlags","values": [ + {"name": "k_EAppOwnershipFlags_None","value": "0"} + ,{"name": "k_EAppOwnershipFlags_OwnsLicense","value": "1"} + ,{"name": "k_EAppOwnershipFlags_FreeLicense","value": "2"} + ,{"name": "k_EAppOwnershipFlags_RegionRestricted","value": "4"} + ,{"name": "k_EAppOwnershipFlags_LowViolence","value": "8"} + ,{"name": "k_EAppOwnershipFlags_InvalidPlatform","value": "16"} + ,{"name": "k_EAppOwnershipFlags_SharedLicense","value": "32"} + ,{"name": "k_EAppOwnershipFlags_FreeWeekend","value": "64"} + ,{"name": "k_EAppOwnershipFlags_RetailLicense","value": "128"} + ,{"name": "k_EAppOwnershipFlags_LicenseLocked","value": "256"} + ,{"name": "k_EAppOwnershipFlags_LicensePending","value": "512"} + ,{"name": "k_EAppOwnershipFlags_LicenseExpired","value": "1024"} + ,{"name": "k_EAppOwnershipFlags_LicensePermanent","value": "2048"} + ,{"name": "k_EAppOwnershipFlags_LicenseRecurring","value": "4096"} + ,{"name": "k_EAppOwnershipFlags_LicenseCanceled","value": "8192"} + ,{"name": "k_EAppOwnershipFlags_AutoGrant","value": "16384"} + ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} + ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} + ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} +]} +, {"enumname": "EAppType","values": [ + {"name": "k_EAppType_Invalid","value": "0"} + ,{"name": "k_EAppType_Game","value": "1"} + ,{"name": "k_EAppType_Application","value": "2"} + ,{"name": "k_EAppType_Tool","value": "4"} + ,{"name": "k_EAppType_Demo","value": "8"} + ,{"name": "k_EAppType_Media_DEPRECATED","value": "16"} + ,{"name": "k_EAppType_DLC","value": "32"} + ,{"name": "k_EAppType_Guide","value": "64"} + ,{"name": "k_EAppType_Driver","value": "128"} + ,{"name": "k_EAppType_Config","value": "256"} + ,{"name": "k_EAppType_Hardware","value": "512"} + ,{"name": "k_EAppType_Franchise","value": "1024"} + ,{"name": "k_EAppType_Video","value": "2048"} + ,{"name": "k_EAppType_Plugin","value": "4096"} + ,{"name": "k_EAppType_Music","value": "8192"} + ,{"name": "k_EAppType_Series","value": "16384"} + ,{"name": "k_EAppType_Shortcut","value": "1073741824"} + ,{"name": "k_EAppType_DepotOnly","value": "-2147483648"} +]} +, {"enumname": "ESteamUserStatType","values": [ + {"name": "k_ESteamUserStatTypeINVALID","value": "0"} + ,{"name": "k_ESteamUserStatTypeINT","value": "1"} + ,{"name": "k_ESteamUserStatTypeFLOAT","value": "2"} + ,{"name": "k_ESteamUserStatTypeAVGRATE","value": "3"} + ,{"name": "k_ESteamUserStatTypeACHIEVEMENTS","value": "4"} + ,{"name": "k_ESteamUserStatTypeGROUPACHIEVEMENTS","value": "5"} + ,{"name": "k_ESteamUserStatTypeMAX","value": "6"} +]} +, {"enumname": "EChatEntryType","values": [ + {"name": "k_EChatEntryTypeInvalid","value": "0"} + ,{"name": "k_EChatEntryTypeChatMsg","value": "1"} + ,{"name": "k_EChatEntryTypeTyping","value": "2"} + ,{"name": "k_EChatEntryTypeInviteGame","value": "3"} + ,{"name": "k_EChatEntryTypeEmote","value": "4"} + ,{"name": "k_EChatEntryTypeLeftConversation","value": "6"} + ,{"name": "k_EChatEntryTypeEntered","value": "7"} + ,{"name": "k_EChatEntryTypeWasKicked","value": "8"} + ,{"name": "k_EChatEntryTypeWasBanned","value": "9"} + ,{"name": "k_EChatEntryTypeDisconnected","value": "10"} + ,{"name": "k_EChatEntryTypeHistoricalChat","value": "11"} + ,{"name": "k_EChatEntryTypeLinkBlocked","value": "14"} +]} +, {"enumname": "EChatRoomEnterResponse","values": [ + {"name": "k_EChatRoomEnterResponseSuccess","value": "1"} + ,{"name": "k_EChatRoomEnterResponseDoesntExist","value": "2"} + ,{"name": "k_EChatRoomEnterResponseNotAllowed","value": "3"} + ,{"name": "k_EChatRoomEnterResponseFull","value": "4"} + ,{"name": "k_EChatRoomEnterResponseError","value": "5"} + ,{"name": "k_EChatRoomEnterResponseBanned","value": "6"} + ,{"name": "k_EChatRoomEnterResponseLimited","value": "7"} + ,{"name": "k_EChatRoomEnterResponseClanDisabled","value": "8"} + ,{"name": "k_EChatRoomEnterResponseCommunityBan","value": "9"} + ,{"name": "k_EChatRoomEnterResponseMemberBlockedYou","value": "10"} + ,{"name": "k_EChatRoomEnterResponseYouBlockedMember","value": "11"} +]} +, {"enumname": "EChatSteamIDInstanceFlags","values": [ + {"name": "k_EChatAccountInstanceMask","value": "4095"} + ,{"name": "k_EChatInstanceFlagClan","value": "524288"} + ,{"name": "k_EChatInstanceFlagLobby","value": "262144"} + ,{"name": "k_EChatInstanceFlagMMSLobby","value": "131072"} +]} +, {"enumname": "EMarketingMessageFlags","values": [ + {"name": "k_EMarketingMessageFlagsNone","value": "0"} + ,{"name": "k_EMarketingMessageFlagsHighPriority","value": "1"} + ,{"name": "k_EMarketingMessageFlagsPlatformWindows","value": "2"} + ,{"name": "k_EMarketingMessageFlagsPlatformMac","value": "4"} + ,{"name": "k_EMarketingMessageFlagsPlatformLinux","value": "8"} + ,{"name": "k_EMarketingMessageFlagsPlatformRestrictions","value": "14"} +]} +, {"enumname": "ENotificationPosition","values": [ + {"name": "k_EPositionTopLeft","value": "0"} + ,{"name": "k_EPositionTopRight","value": "1"} + ,{"name": "k_EPositionBottomLeft","value": "2"} + ,{"name": "k_EPositionBottomRight","value": "3"} +]} +, {"enumname": "EBroadcastUploadResult","values": [ + {"name": "k_EBroadcastUploadResultNone","value": "0"} + ,{"name": "k_EBroadcastUploadResultOK","value": "1"} + ,{"name": "k_EBroadcastUploadResultInitFailed","value": "2"} + ,{"name": "k_EBroadcastUploadResultFrameFailed","value": "3"} + ,{"name": "k_EBroadcastUploadResultTimeout","value": "4"} + ,{"name": "k_EBroadcastUploadResultBandwidthExceeded","value": "5"} + ,{"name": "k_EBroadcastUploadResultLowFPS","value": "6"} + ,{"name": "k_EBroadcastUploadResultMissingKeyFrames","value": "7"} + ,{"name": "k_EBroadcastUploadResultNoConnection","value": "8"} + ,{"name": "k_EBroadcastUploadResultRelayFailed","value": "9"} + ,{"name": "k_EBroadcastUploadResultSettingsChanged","value": "10"} + ,{"name": "k_EBroadcastUploadResultMissingAudio","value": "11"} + ,{"name": "k_EBroadcastUploadResultTooFarBehind","value": "12"} + ,{"name": "k_EBroadcastUploadResultTranscodeBehind","value": "13"} +]} +, {"enumname": "ELaunchOptionType","values": [ + {"name": "k_ELaunchOptionType_None","value": "0"} + ,{"name": "k_ELaunchOptionType_Default","value": "1"} + ,{"name": "k_ELaunchOptionType_SafeMode","value": "2"} + ,{"name": "k_ELaunchOptionType_Multiplayer","value": "3"} + ,{"name": "k_ELaunchOptionType_Config","value": "4"} + ,{"name": "k_ELaunchOptionType_OpenVR","value": "5"} + ,{"name": "k_ELaunchOptionType_Server","value": "6"} + ,{"name": "k_ELaunchOptionType_Editor","value": "7"} + ,{"name": "k_ELaunchOptionType_Manual","value": "8"} + ,{"name": "k_ELaunchOptionType_Benchmark","value": "9"} + ,{"name": "k_ELaunchOptionType_Option1","value": "10"} + ,{"name": "k_ELaunchOptionType_Option2","value": "11"} + ,{"name": "k_ELaunchOptionType_Option3","value": "12"} + ,{"name": "k_ELaunchOptionType_OculusVR","value": "13"} + ,{"name": "k_ELaunchOptionType_OpenVROverlay","value": "14"} + ,{"name": "k_ELaunchOptionType_OSVR","value": "15"} + ,{"name": "k_ELaunchOptionType_Dialog","value": "1000"} +]} +, {"enumname": "EVRHMDType","values": [ + {"name": "k_eEVRHMDType_None","value": "-1"} + ,{"name": "k_eEVRHMDType_Unknown","value": "0"} + ,{"name": "k_eEVRHMDType_HTC_Dev","value": "1"} + ,{"name": "k_eEVRHMDType_HTC_VivePre","value": "2"} + ,{"name": "k_eEVRHMDType_HTC_Vive","value": "3"} + ,{"name": "k_eEVRHMDType_HTC_Unknown","value": "20"} + ,{"name": "k_eEVRHMDType_Oculus_DK1","value": "21"} + ,{"name": "k_eEVRHMDType_Oculus_DK2","value": "22"} + ,{"name": "k_eEVRHMDType_Oculus_Rift","value": "23"} + ,{"name": "k_eEVRHMDType_Oculus_Unknown","value": "40"} +]} +, {"enumname": "EControllerType","values": [ + {"name": "k_eControllerType_None","value": "-1"} + ,{"name": "k_eControllerType_Unknown","value": "0"} + ,{"name": "k_eControllerType_UnknownSteamController","value": "1"} + ,{"name": "k_eControllerType_SteamController","value": "2"} + ,{"name": "k_eControllerType_UnknownNonSteamController","value": "30"} + ,{"name": "k_eControllerType_XBox360Controller","value": "31"} + ,{"name": "k_eControllerType_XBoxOneController","value": "32"} + ,{"name": "k_eControllerType_PS3Controller","value": "33"} + ,{"name": "k_eControllerType_PS4Controller","value": "34"} + ,{"name": "k_eControllerType_WiiController","value": "35"} + ,{"name": "k_eControllerType_AppleController","value": "36"} +]} +, {"enumname": "CGameID::EGameIDType","values": [ + {"name": "k_EGameIDTypeApp","value": "0"} + ,{"name": "k_EGameIDTypeGameMod","value": "1"} + ,{"name": "k_EGameIDTypeShortcut","value": "2"} + ,{"name": "k_EGameIDTypeP2P","value": "3"} +]} +, {"enumname": "IPCFailure_t::EFailureType","values": [ + {"name": "k_EFailureFlushedCallbackQueue","value": "0"} + ,{"name": "k_EFailurePipeFail","value": "1"} +]} +, {"enumname": "EFriendRelationship","values": [ + {"name": "k_EFriendRelationshipNone","value": "0"} + ,{"name": "k_EFriendRelationshipBlocked","value": "1"} + ,{"name": "k_EFriendRelationshipRequestRecipient","value": "2"} + ,{"name": "k_EFriendRelationshipFriend","value": "3"} + ,{"name": "k_EFriendRelationshipRequestInitiator","value": "4"} + ,{"name": "k_EFriendRelationshipIgnored","value": "5"} + ,{"name": "k_EFriendRelationshipIgnoredFriend","value": "6"} + ,{"name": "k_EFriendRelationshipSuggested_DEPRECATED","value": "7"} + ,{"name": "k_EFriendRelationshipMax","value": "8"} +]} +, {"enumname": "EPersonaState","values": [ + {"name": "k_EPersonaStateOffline","value": "0"} + ,{"name": "k_EPersonaStateOnline","value": "1"} + ,{"name": "k_EPersonaStateBusy","value": "2"} + ,{"name": "k_EPersonaStateAway","value": "3"} + ,{"name": "k_EPersonaStateSnooze","value": "4"} + ,{"name": "k_EPersonaStateLookingToTrade","value": "5"} + ,{"name": "k_EPersonaStateLookingToPlay","value": "6"} + ,{"name": "k_EPersonaStateMax","value": "7"} +]} +, {"enumname": "EFriendFlags","values": [ + {"name": "k_EFriendFlagNone","value": "0"} + ,{"name": "k_EFriendFlagBlocked","value": "1"} + ,{"name": "k_EFriendFlagFriendshipRequested","value": "2"} + ,{"name": "k_EFriendFlagImmediate","value": "4"} + ,{"name": "k_EFriendFlagClanMember","value": "8"} + ,{"name": "k_EFriendFlagOnGameServer","value": "16"} + ,{"name": "k_EFriendFlagRequestingFriendship","value": "128"} + ,{"name": "k_EFriendFlagRequestingInfo","value": "256"} + ,{"name": "k_EFriendFlagIgnored","value": "512"} + ,{"name": "k_EFriendFlagIgnoredFriend","value": "1024"} + ,{"name": "k_EFriendFlagSuggested","value": "2048"} + ,{"name": "k_EFriendFlagChatMember","value": "4096"} + ,{"name": "k_EFriendFlagAll","value": "65535"} +]} +, {"enumname": "EUserRestriction","values": [ + {"name": "k_nUserRestrictionNone","value": "0"} + ,{"name": "k_nUserRestrictionUnknown","value": "1"} + ,{"name": "k_nUserRestrictionAnyChat","value": "2"} + ,{"name": "k_nUserRestrictionVoiceChat","value": "4"} + ,{"name": "k_nUserRestrictionGroupChat","value": "8"} + ,{"name": "k_nUserRestrictionRating","value": "16"} + ,{"name": "k_nUserRestrictionGameInvites","value": "32"} + ,{"name": "k_nUserRestrictionTrading","value": "64"} +]} +, {"enumname": "EOverlayToStoreFlag","values": [ + {"name": "k_EOverlayToStoreFlag_None","value": "0"} + ,{"name": "k_EOverlayToStoreFlag_AddToCart","value": "1"} + ,{"name": "k_EOverlayToStoreFlag_AddToCartAndShow","value": "2"} +]} +, {"enumname": "EPersonaChange","values": [ + {"name": "k_EPersonaChangeName","value": "1"} + ,{"name": "k_EPersonaChangeStatus","value": "2"} + ,{"name": "k_EPersonaChangeComeOnline","value": "4"} + ,{"name": "k_EPersonaChangeGoneOffline","value": "8"} + ,{"name": "k_EPersonaChangeGamePlayed","value": "16"} + ,{"name": "k_EPersonaChangeGameServer","value": "32"} + ,{"name": "k_EPersonaChangeAvatar","value": "64"} + ,{"name": "k_EPersonaChangeJoinedSource","value": "128"} + ,{"name": "k_EPersonaChangeLeftSource","value": "256"} + ,{"name": "k_EPersonaChangeRelationshipChanged","value": "512"} + ,{"name": "k_EPersonaChangeNameFirstSet","value": "1024"} + ,{"name": "k_EPersonaChangeFacebookInfo","value": "2048"} + ,{"name": "k_EPersonaChangeNickname","value": "4096"} + ,{"name": "k_EPersonaChangeSteamLevel","value": "8192"} +]} +, {"enumname": "ESteamAPICallFailure","values": [ + {"name": "k_ESteamAPICallFailureNone","value": "-1"} + ,{"name": "k_ESteamAPICallFailureSteamGone","value": "0"} + ,{"name": "k_ESteamAPICallFailureNetworkFailure","value": "1"} + ,{"name": "k_ESteamAPICallFailureInvalidHandle","value": "2"} + ,{"name": "k_ESteamAPICallFailureMismatchedCallback","value": "3"} +]} +, {"enumname": "EGamepadTextInputMode","values": [ + {"name": "k_EGamepadTextInputModeNormal","value": "0"} + ,{"name": "k_EGamepadTextInputModePassword","value": "1"} +]} +, {"enumname": "EGamepadTextInputLineMode","values": [ + {"name": "k_EGamepadTextInputLineModeSingleLine","value": "0"} + ,{"name": "k_EGamepadTextInputLineModeMultipleLines","value": "1"} +]} +, {"enumname": "ECheckFileSignature","values": [ + {"name": "k_ECheckFileSignatureInvalidSignature","value": "0"} + ,{"name": "k_ECheckFileSignatureValidSignature","value": "1"} + ,{"name": "k_ECheckFileSignatureFileNotFound","value": "2"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisApp","value": "3"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisFile","value": "4"} +]} +, {"enumname": "EMatchMakingServerResponse","values": [ + {"name": "eServerResponded","value": "0"} + ,{"name": "eServerFailedToRespond","value": "1"} + ,{"name": "eNoServersListedOnMasterServer","value": "2"} +]} +, {"enumname": "ELobbyType","values": [ + {"name": "k_ELobbyTypePrivate","value": "0"} + ,{"name": "k_ELobbyTypeFriendsOnly","value": "1"} + ,{"name": "k_ELobbyTypePublic","value": "2"} + ,{"name": "k_ELobbyTypeInvisible","value": "3"} +]} +, {"enumname": "ELobbyComparison","values": [ + {"name": "k_ELobbyComparisonEqualToOrLessThan","value": "-2"} + ,{"name": "k_ELobbyComparisonLessThan","value": "-1"} + ,{"name": "k_ELobbyComparisonEqual","value": "0"} + ,{"name": "k_ELobbyComparisonGreaterThan","value": "1"} + ,{"name": "k_ELobbyComparisonEqualToOrGreaterThan","value": "2"} + ,{"name": "k_ELobbyComparisonNotEqual","value": "3"} +]} +, {"enumname": "ELobbyDistanceFilter","values": [ + {"name": "k_ELobbyDistanceFilterClose","value": "0"} + ,{"name": "k_ELobbyDistanceFilterDefault","value": "1"} + ,{"name": "k_ELobbyDistanceFilterFar","value": "2"} + ,{"name": "k_ELobbyDistanceFilterWorldwide","value": "3"} +]} +, {"enumname": "EChatMemberStateChange","values": [ + {"name": "k_EChatMemberStateChangeEntered","value": "1"} + ,{"name": "k_EChatMemberStateChangeLeft","value": "2"} + ,{"name": "k_EChatMemberStateChangeDisconnected","value": "4"} + ,{"name": "k_EChatMemberStateChangeKicked","value": "8"} + ,{"name": "k_EChatMemberStateChangeBanned","value": "16"} +]} +, {"enumname": "ERemoteStoragePlatform","values": [ + {"name": "k_ERemoteStoragePlatformNone","value": "0"} + ,{"name": "k_ERemoteStoragePlatformWindows","value": "1"} + ,{"name": "k_ERemoteStoragePlatformOSX","value": "2"} + ,{"name": "k_ERemoteStoragePlatformPS3","value": "4"} + ,{"name": "k_ERemoteStoragePlatformLinux","value": "8"} + ,{"name": "k_ERemoteStoragePlatformReserved2","value": "16"} + ,{"name": "k_ERemoteStoragePlatformAll","value": "-1"} +]} +, {"enumname": "ERemoteStoragePublishedFileVisibility","values": [ + {"name": "k_ERemoteStoragePublishedFileVisibilityPublic","value": "0"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityFriendsOnly","value": "1"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityPrivate","value": "2"} +]} +, {"enumname": "EWorkshopFileType","values": [ + {"name": "k_EWorkshopFileTypeFirst","value": "0"} + ,{"name": "k_EWorkshopFileTypeCommunity","value": "0"} + ,{"name": "k_EWorkshopFileTypeMicrotransaction","value": "1"} + ,{"name": "k_EWorkshopFileTypeCollection","value": "2"} + ,{"name": "k_EWorkshopFileTypeArt","value": "3"} + ,{"name": "k_EWorkshopFileTypeVideo","value": "4"} + ,{"name": "k_EWorkshopFileTypeScreenshot","value": "5"} + ,{"name": "k_EWorkshopFileTypeGame","value": "6"} + ,{"name": "k_EWorkshopFileTypeSoftware","value": "7"} + ,{"name": "k_EWorkshopFileTypeConcept","value": "8"} + ,{"name": "k_EWorkshopFileTypeWebGuide","value": "9"} + ,{"name": "k_EWorkshopFileTypeIntegratedGuide","value": "10"} + ,{"name": "k_EWorkshopFileTypeMerch","value": "11"} + ,{"name": "k_EWorkshopFileTypeControllerBinding","value": "12"} + ,{"name": "k_EWorkshopFileTypeSteamworksAccessInvite","value": "13"} + ,{"name": "k_EWorkshopFileTypeSteamVideo","value": "14"} + ,{"name": "k_EWorkshopFileTypeGameManagedItem","value": "15"} + ,{"name": "k_EWorkshopFileTypeMax","value": "16"} +]} +, {"enumname": "EWorkshopVote","values": [ + {"name": "k_EWorkshopVoteUnvoted","value": "0"} + ,{"name": "k_EWorkshopVoteFor","value": "1"} + ,{"name": "k_EWorkshopVoteAgainst","value": "2"} + ,{"name": "k_EWorkshopVoteLater","value": "3"} +]} +, {"enumname": "EWorkshopFileAction","values": [ + {"name": "k_EWorkshopFileActionPlayed","value": "0"} + ,{"name": "k_EWorkshopFileActionCompleted","value": "1"} +]} +, {"enumname": "EWorkshopEnumerationType","values": [ + {"name": "k_EWorkshopEnumerationTypeRankedByVote","value": "0"} + ,{"name": "k_EWorkshopEnumerationTypeRecent","value": "1"} + ,{"name": "k_EWorkshopEnumerationTypeTrending","value": "2"} + ,{"name": "k_EWorkshopEnumerationTypeFavoritesOfFriends","value": "3"} + ,{"name": "k_EWorkshopEnumerationTypeVotedByFriends","value": "4"} + ,{"name": "k_EWorkshopEnumerationTypeContentByFriends","value": "5"} + ,{"name": "k_EWorkshopEnumerationTypeRecentFromFollowedUsers","value": "6"} +]} +, {"enumname": "EWorkshopVideoProvider","values": [ + {"name": "k_EWorkshopVideoProviderNone","value": "0"} + ,{"name": "k_EWorkshopVideoProviderYoutube","value": "1"} +]} +, {"enumname": "EUGCReadAction","values": [ + {"name": "k_EUGCRead_ContinueReadingUntilFinished","value": "0"} + ,{"name": "k_EUGCRead_ContinueReading","value": "1"} + ,{"name": "k_EUGCRead_Close","value": "2"} +]} +, {"enumname": "ELeaderboardDataRequest","values": [ + {"name": "k_ELeaderboardDataRequestGlobal","value": "0"} + ,{"name": "k_ELeaderboardDataRequestGlobalAroundUser","value": "1"} + ,{"name": "k_ELeaderboardDataRequestFriends","value": "2"} + ,{"name": "k_ELeaderboardDataRequestUsers","value": "3"} +]} +, {"enumname": "ELeaderboardSortMethod","values": [ + {"name": "k_ELeaderboardSortMethodNone","value": "0"} + ,{"name": "k_ELeaderboardSortMethodAscending","value": "1"} + ,{"name": "k_ELeaderboardSortMethodDescending","value": "2"} +]} +, {"enumname": "ELeaderboardDisplayType","values": [ + {"name": "k_ELeaderboardDisplayTypeNone","value": "0"} + ,{"name": "k_ELeaderboardDisplayTypeNumeric","value": "1"} + ,{"name": "k_ELeaderboardDisplayTypeTimeSeconds","value": "2"} + ,{"name": "k_ELeaderboardDisplayTypeTimeMilliSeconds","value": "3"} +]} +, {"enumname": "ELeaderboardUploadScoreMethod","values": [ + {"name": "k_ELeaderboardUploadScoreMethodNone","value": "0"} + ,{"name": "k_ELeaderboardUploadScoreMethodKeepBest","value": "1"} + ,{"name": "k_ELeaderboardUploadScoreMethodForceUpdate","value": "2"} +]} +, {"enumname": "ERegisterActivationCodeResult","values": [ + {"name": "k_ERegisterActivationCodeResultOK","value": "0"} + ,{"name": "k_ERegisterActivationCodeResultFail","value": "1"} + ,{"name": "k_ERegisterActivationCodeResultAlreadyRegistered","value": "2"} + ,{"name": "k_ERegisterActivationCodeResultTimeout","value": "3"} + ,{"name": "k_ERegisterActivationCodeAlreadyOwned","value": "4"} +]} +, {"enumname": "EP2PSessionError","values": [ + {"name": "k_EP2PSessionErrorNone","value": "0"} + ,{"name": "k_EP2PSessionErrorNotRunningApp","value": "1"} + ,{"name": "k_EP2PSessionErrorNoRightsToApp","value": "2"} + ,{"name": "k_EP2PSessionErrorDestinationNotLoggedIn","value": "3"} + ,{"name": "k_EP2PSessionErrorTimeout","value": "4"} + ,{"name": "k_EP2PSessionErrorMax","value": "5"} +]} +, {"enumname": "EP2PSend","values": [ + {"name": "k_EP2PSendUnreliable","value": "0"} + ,{"name": "k_EP2PSendUnreliableNoDelay","value": "1"} + ,{"name": "k_EP2PSendReliable","value": "2"} + ,{"name": "k_EP2PSendReliableWithBuffering","value": "3"} +]} +, {"enumname": "ESNetSocketState","values": [ + {"name": "k_ESNetSocketStateInvalid","value": "0"} + ,{"name": "k_ESNetSocketStateConnected","value": "1"} + ,{"name": "k_ESNetSocketStateInitiated","value": "10"} + ,{"name": "k_ESNetSocketStateLocalCandidatesFound","value": "11"} + ,{"name": "k_ESNetSocketStateReceivedRemoteCandidates","value": "12"} + ,{"name": "k_ESNetSocketStateChallengeHandshake","value": "15"} + ,{"name": "k_ESNetSocketStateDisconnecting","value": "21"} + ,{"name": "k_ESNetSocketStateLocalDisconnect","value": "22"} + ,{"name": "k_ESNetSocketStateTimeoutDuringConnect","value": "23"} + ,{"name": "k_ESNetSocketStateRemoteEndDisconnected","value": "24"} + ,{"name": "k_ESNetSocketStateConnectionBroken","value": "25"} +]} +, {"enumname": "ESNetSocketConnectionType","values": [ + {"name": "k_ESNetSocketConnectionTypeNotConnected","value": "0"} + ,{"name": "k_ESNetSocketConnectionTypeUDP","value": "1"} + ,{"name": "k_ESNetSocketConnectionTypeUDPRelay","value": "2"} +]} +, {"enumname": "EVRScreenshotType","values": [ + {"name": "k_EVRScreenshotType_None","value": "0"} + ,{"name": "k_EVRScreenshotType_Mono","value": "1"} + ,{"name": "k_EVRScreenshotType_Stereo","value": "2"} + ,{"name": "k_EVRScreenshotType_MonoCubemap","value": "3"} + ,{"name": "k_EVRScreenshotType_MonoPanorama","value": "4"} + ,{"name": "k_EVRScreenshotType_StereoPanorama","value": "5"} +]} +, {"enumname": "AudioPlayback_Status","values": [ + {"name": "AudioPlayback_Undefined","value": "0"} + ,{"name": "AudioPlayback_Playing","value": "1"} + ,{"name": "AudioPlayback_Paused","value": "2"} + ,{"name": "AudioPlayback_Idle","value": "3"} +]} +, {"enumname": "EHTTPMethod","values": [ + {"name": "k_EHTTPMethodInvalid","value": "0"} + ,{"name": "k_EHTTPMethodGET","value": "1"} + ,{"name": "k_EHTTPMethodHEAD","value": "2"} + ,{"name": "k_EHTTPMethodPOST","value": "3"} + ,{"name": "k_EHTTPMethodPUT","value": "4"} + ,{"name": "k_EHTTPMethodDELETE","value": "5"} + ,{"name": "k_EHTTPMethodOPTIONS","value": "6"} + ,{"name": "k_EHTTPMethodPATCH","value": "7"} +]} +, {"enumname": "EHTTPStatusCode","values": [ + {"name": "k_EHTTPStatusCodeInvalid","value": "0"} + ,{"name": "k_EHTTPStatusCode100Continue","value": "100"} + ,{"name": "k_EHTTPStatusCode101SwitchingProtocols","value": "101"} + ,{"name": "k_EHTTPStatusCode200OK","value": "200"} + ,{"name": "k_EHTTPStatusCode201Created","value": "201"} + ,{"name": "k_EHTTPStatusCode202Accepted","value": "202"} + ,{"name": "k_EHTTPStatusCode203NonAuthoritative","value": "203"} + ,{"name": "k_EHTTPStatusCode204NoContent","value": "204"} + ,{"name": "k_EHTTPStatusCode205ResetContent","value": "205"} + ,{"name": "k_EHTTPStatusCode206PartialContent","value": "206"} + ,{"name": "k_EHTTPStatusCode300MultipleChoices","value": "300"} + ,{"name": "k_EHTTPStatusCode301MovedPermanently","value": "301"} + ,{"name": "k_EHTTPStatusCode302Found","value": "302"} + ,{"name": "k_EHTTPStatusCode303SeeOther","value": "303"} + ,{"name": "k_EHTTPStatusCode304NotModified","value": "304"} + ,{"name": "k_EHTTPStatusCode305UseProxy","value": "305"} + ,{"name": "k_EHTTPStatusCode307TemporaryRedirect","value": "307"} + ,{"name": "k_EHTTPStatusCode400BadRequest","value": "400"} + ,{"name": "k_EHTTPStatusCode401Unauthorized","value": "401"} + ,{"name": "k_EHTTPStatusCode402PaymentRequired","value": "402"} + ,{"name": "k_EHTTPStatusCode403Forbidden","value": "403"} + ,{"name": "k_EHTTPStatusCode404NotFound","value": "404"} + ,{"name": "k_EHTTPStatusCode405MethodNotAllowed","value": "405"} + ,{"name": "k_EHTTPStatusCode406NotAcceptable","value": "406"} + ,{"name": "k_EHTTPStatusCode407ProxyAuthRequired","value": "407"} + ,{"name": "k_EHTTPStatusCode408RequestTimeout","value": "408"} + ,{"name": "k_EHTTPStatusCode409Conflict","value": "409"} + ,{"name": "k_EHTTPStatusCode410Gone","value": "410"} + ,{"name": "k_EHTTPStatusCode411LengthRequired","value": "411"} + ,{"name": "k_EHTTPStatusCode412PreconditionFailed","value": "412"} + ,{"name": "k_EHTTPStatusCode413RequestEntityTooLarge","value": "413"} + ,{"name": "k_EHTTPStatusCode414RequestURITooLong","value": "414"} + ,{"name": "k_EHTTPStatusCode415UnsupportedMediaType","value": "415"} + ,{"name": "k_EHTTPStatusCode416RequestedRangeNotSatisfiable","value": "416"} + ,{"name": "k_EHTTPStatusCode417ExpectationFailed","value": "417"} + ,{"name": "k_EHTTPStatusCode4xxUnknown","value": "418"} + ,{"name": "k_EHTTPStatusCode429TooManyRequests","value": "429"} + ,{"name": "k_EHTTPStatusCode500InternalServerError","value": "500"} + ,{"name": "k_EHTTPStatusCode501NotImplemented","value": "501"} + ,{"name": "k_EHTTPStatusCode502BadGateway","value": "502"} + ,{"name": "k_EHTTPStatusCode503ServiceUnavailable","value": "503"} + ,{"name": "k_EHTTPStatusCode504GatewayTimeout","value": "504"} + ,{"name": "k_EHTTPStatusCode505HTTPVersionNotSupported","value": "505"} + ,{"name": "k_EHTTPStatusCode5xxUnknown","value": "599"} +]} +, {"enumname": "ESteamControllerPad","values": [ + {"name": "k_ESteamControllerPad_Left","value": "0"} + ,{"name": "k_ESteamControllerPad_Right","value": "1"} +]} +, {"enumname": "EControllerSource","values": [ + {"name": "k_EControllerSource_None","value": "0"} + ,{"name": "k_EControllerSource_LeftTrackpad","value": "1"} + ,{"name": "k_EControllerSource_RightTrackpad","value": "2"} + ,{"name": "k_EControllerSource_Joystick","value": "3"} + ,{"name": "k_EControllerSource_ABXY","value": "4"} + ,{"name": "k_EControllerSource_Switch","value": "5"} + ,{"name": "k_EControllerSource_LeftTrigger","value": "6"} + ,{"name": "k_EControllerSource_RightTrigger","value": "7"} + ,{"name": "k_EControllerSource_Gyro","value": "8"} + ,{"name": "k_EControllerSource_Count","value": "9"} +]} +, {"enumname": "EControllerSourceMode","values": [ + {"name": "k_EControllerSourceMode_None","value": "0"} + ,{"name": "k_EControllerSourceMode_Dpad","value": "1"} + ,{"name": "k_EControllerSourceMode_Buttons","value": "2"} + ,{"name": "k_EControllerSourceMode_FourButtons","value": "3"} + ,{"name": "k_EControllerSourceMode_AbsoluteMouse","value": "4"} + ,{"name": "k_EControllerSourceMode_RelativeMouse","value": "5"} + ,{"name": "k_EControllerSourceMode_JoystickMove","value": "6"} + ,{"name": "k_EControllerSourceMode_JoystickCamera","value": "7"} + ,{"name": "k_EControllerSourceMode_ScrollWheel","value": "8"} + ,{"name": "k_EControllerSourceMode_Trigger","value": "9"} + ,{"name": "k_EControllerSourceMode_TouchMenu","value": "10"} + ,{"name": "k_EControllerSourceMode_MouseJoystick","value": "11"} + ,{"name": "k_EControllerSourceMode_MouseRegion","value": "12"} + ,{"name": "k_EControllerSourceMode_RadialMenu","value": "13"} + ,{"name": "k_EControllerSourceMode_Switches","value": "14"} +]} +, {"enumname": "EControllerActionOrigin","values": [ + {"name": "k_EControllerActionOrigin_None","value": "0"} + ,{"name": "k_EControllerActionOrigin_A","value": "1"} + ,{"name": "k_EControllerActionOrigin_B","value": "2"} + ,{"name": "k_EControllerActionOrigin_X","value": "3"} + ,{"name": "k_EControllerActionOrigin_Y","value": "4"} + ,{"name": "k_EControllerActionOrigin_LeftBumper","value": "5"} + ,{"name": "k_EControllerActionOrigin_RightBumper","value": "6"} + ,{"name": "k_EControllerActionOrigin_LeftGrip","value": "7"} + ,{"name": "k_EControllerActionOrigin_RightGrip","value": "8"} + ,{"name": "k_EControllerActionOrigin_Start","value": "9"} + ,{"name": "k_EControllerActionOrigin_Back","value": "10"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Touch","value": "11"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Swipe","value": "12"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Click","value": "13"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadNorth","value": "14"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadSouth","value": "15"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadWest","value": "16"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadEast","value": "17"} + ,{"name": "k_EControllerActionOrigin_RightPad_Touch","value": "18"} + ,{"name": "k_EControllerActionOrigin_RightPad_Swipe","value": "19"} + ,{"name": "k_EControllerActionOrigin_RightPad_Click","value": "20"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadNorth","value": "21"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadSouth","value": "22"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadWest","value": "23"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadEast","value": "24"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Pull","value": "25"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Click","value": "26"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Pull","value": "27"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Click","value": "28"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Move","value": "29"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Click","value": "30"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadNorth","value": "31"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadSouth","value": "32"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadWest","value": "33"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadEast","value": "34"} + ,{"name": "k_EControllerActionOrigin_Gyro_Move","value": "35"} + ,{"name": "k_EControllerActionOrigin_Gyro_Pitch","value": "36"} + ,{"name": "k_EControllerActionOrigin_Gyro_Yaw","value": "37"} + ,{"name": "k_EControllerActionOrigin_Gyro_Roll","value": "38"} + ,{"name": "k_EControllerActionOrigin_Count","value": "39"} +]} +, {"enumname": "EControllerActivationType","values": [ + {"name": "k_EControllerActivationType_None","value": "0"} + ,{"name": "k_EControllerActivationType_FullPress","value": "1"} + ,{"name": "k_EControllerActivationType_SoftPress","value": "2"} + ,{"name": "k_EControllerActivationType_StartPress","value": "3"} + ,{"name": "k_EControllerActivationType_Release","value": "4"} + ,{"name": "k_EControllerActivationType_LongPress","value": "5"} + ,{"name": "k_EControllerActivationType_DoublePress","value": "6"} + ,{"name": "k_EControllerActivationType_Analog","value": "7"} +]} +, {"enumname": "EControllerPressureButton","values": [ + {"name": "k_EControllerPressureButton_LeftTrackPad","value": "0"} + ,{"name": "k_EControllerPressureButton_RightTrackPad","value": "1"} + ,{"name": "k_EControllerPressureButton_LeftBumper","value": "2"} + ,{"name": "k_EControllerPressureButton_RightBumper","value": "3"} + ,{"name": "k_EControllerPressureButton_LeftGripLower","value": "4"} + ,{"name": "k_EControllerPressureButton_RightGripLower","value": "5"} + ,{"name": "k_EControllerPressureButton_LeftGripUpper","value": "6"} + ,{"name": "k_EControllerPressureButton_RightGripUpper","value": "7"} + ,{"name": "k_EControllerPressureButton_Invalid","value": "8"} +]} +, {"enumname": "EControllerActivatorOutputAxis","values": [ + {"name": "k_EOutputAxisLeftTrigger","value": "0"} + ,{"name": "k_EOutputAxisRightTrigger","value": "1"} + ,{"name": "k_EOutputAxisLeftThumbXPos","value": "2"} + ,{"name": "k_EOutputAxisLeftThumbXNeg","value": "3"} + ,{"name": "k_EOutputAxisLeftThumbYPos","value": "4"} + ,{"name": "k_EOutputAxisLeftThumbYNeg","value": "5"} + ,{"name": "k_EOutputAxisRightThumbXPos","value": "6"} + ,{"name": "k_EOutputAxisRightThumbXNeg","value": "7"} + ,{"name": "k_EOutputAxisRightThumbYPos","value": "8"} + ,{"name": "k_EOutputAxisRightThumbYNeg","value": "9"} +]} +, {"enumname": "EControllerConfigFeature","values": [ + {"name": "k_EControllerConfigFeature_None","value": "0"} + ,{"name": "k_EControllerConfigFeature_Gamepad","value": "1"} + ,{"name": "k_EControllerConfigFeature_Keyboard","value": "2"} + ,{"name": "k_EControllerConfigFeature_Mouse","value": "3"} + ,{"name": "k_EControllerConfigFeature_Gyro","value": "4"} + ,{"name": "k_EControllerConfigFeature_TouchMenu","value": "5"} + ,{"name": "k_EControllerConfigFeature_ModeShift","value": "6"} + ,{"name": "k_EControllerConfigFeature_ActionSet","value": "7"} + ,{"name": "k_EControllerConfigFeature_Activator","value": "8"} +]} +, {"enumname": "EControllerPopupMenuActivationType","values": [ + {"name": "k_EMenuButtonPress","value": "0"} + ,{"name": "k_EMenuButtonRelease","value": "1"} + ,{"name": "k_EMenuTouchRelease","value": "2"} + ,{"name": "k_EMenuTouchAlways","value": "3"} +]} +, {"enumname": "EUGCMatchingUGCType","values": [ + {"name": "k_EUGCMatchingUGCType_Items","value": "0"} + ,{"name": "k_EUGCMatchingUGCType_Items_Mtx","value": "1"} + ,{"name": "k_EUGCMatchingUGCType_Items_ReadyToUse","value": "2"} + ,{"name": "k_EUGCMatchingUGCType_Collections","value": "3"} + ,{"name": "k_EUGCMatchingUGCType_Artwork","value": "4"} + ,{"name": "k_EUGCMatchingUGCType_Videos","value": "5"} + ,{"name": "k_EUGCMatchingUGCType_Screenshots","value": "6"} + ,{"name": "k_EUGCMatchingUGCType_AllGuides","value": "7"} + ,{"name": "k_EUGCMatchingUGCType_WebGuides","value": "8"} + ,{"name": "k_EUGCMatchingUGCType_IntegratedGuides","value": "9"} + ,{"name": "k_EUGCMatchingUGCType_UsableInGame","value": "10"} + ,{"name": "k_EUGCMatchingUGCType_ControllerBindings","value": "11"} + ,{"name": "k_EUGCMatchingUGCType_GameManagedItems","value": "12"} + ,{"name": "k_EUGCMatchingUGCType_All","value": "-1"} +]} +, {"enumname": "EUserUGCList","values": [ + {"name": "k_EUserUGCList_Published","value": "0"} + ,{"name": "k_EUserUGCList_VotedOn","value": "1"} + ,{"name": "k_EUserUGCList_VotedUp","value": "2"} + ,{"name": "k_EUserUGCList_VotedDown","value": "3"} + ,{"name": "k_EUserUGCList_WillVoteLater","value": "4"} + ,{"name": "k_EUserUGCList_Favorited","value": "5"} + ,{"name": "k_EUserUGCList_Subscribed","value": "6"} + ,{"name": "k_EUserUGCList_UsedOrPlayed","value": "7"} + ,{"name": "k_EUserUGCList_Followed","value": "8"} +]} +, {"enumname": "EUserUGCListSortOrder","values": [ + {"name": "k_EUserUGCListSortOrder_CreationOrderDesc","value": "0"} + ,{"name": "k_EUserUGCListSortOrder_CreationOrderAsc","value": "1"} + ,{"name": "k_EUserUGCListSortOrder_TitleAsc","value": "2"} + ,{"name": "k_EUserUGCListSortOrder_LastUpdatedDesc","value": "3"} + ,{"name": "k_EUserUGCListSortOrder_SubscriptionDateDesc","value": "4"} + ,{"name": "k_EUserUGCListSortOrder_VoteScoreDesc","value": "5"} + ,{"name": "k_EUserUGCListSortOrder_ForModeration","value": "6"} +]} +, {"enumname": "EUGCQuery","values": [ + {"name": "k_EUGCQuery_RankedByVote","value": "0"} + ,{"name": "k_EUGCQuery_RankedByPublicationDate","value": "1"} + ,{"name": "k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate","value": "2"} + ,{"name": "k_EUGCQuery_RankedByTrend","value": "3"} + ,{"name": "k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate","value": "4"} + ,{"name": "k_EUGCQuery_CreatedByFriendsRankedByPublicationDate","value": "5"} + ,{"name": "k_EUGCQuery_RankedByNumTimesReported","value": "6"} + ,{"name": "k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate","value": "7"} + ,{"name": "k_EUGCQuery_NotYetRated","value": "8"} + ,{"name": "k_EUGCQuery_RankedByTotalVotesAsc","value": "9"} + ,{"name": "k_EUGCQuery_RankedByVotesUp","value": "10"} + ,{"name": "k_EUGCQuery_RankedByTextSearch","value": "11"} + ,{"name": "k_EUGCQuery_RankedByTotalUniqueSubscriptions","value": "12"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeTrend","value": "13"} + ,{"name": "k_EUGCQuery_RankedByTotalPlaytime","value": "14"} + ,{"name": "k_EUGCQuery_RankedByAveragePlaytimeTrend","value": "15"} + ,{"name": "k_EUGCQuery_RankedByLifetimeAveragePlaytime","value": "16"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeSessionsTrend","value": "17"} + ,{"name": "k_EUGCQuery_RankedByLifetimePlaytimeSessions","value": "18"} +]} +, {"enumname": "EItemUpdateStatus","values": [ + {"name": "k_EItemUpdateStatusInvalid","value": "0"} + ,{"name": "k_EItemUpdateStatusPreparingConfig","value": "1"} + ,{"name": "k_EItemUpdateStatusPreparingContent","value": "2"} + ,{"name": "k_EItemUpdateStatusUploadingContent","value": "3"} + ,{"name": "k_EItemUpdateStatusUploadingPreviewFile","value": "4"} + ,{"name": "k_EItemUpdateStatusCommittingChanges","value": "5"} +]} +, {"enumname": "EItemState","values": [ + {"name": "k_EItemStateNone","value": "0"} + ,{"name": "k_EItemStateSubscribed","value": "1"} + ,{"name": "k_EItemStateLegacyItem","value": "2"} + ,{"name": "k_EItemStateInstalled","value": "4"} + ,{"name": "k_EItemStateNeedsUpdate","value": "8"} + ,{"name": "k_EItemStateDownloading","value": "16"} + ,{"name": "k_EItemStateDownloadPending","value": "32"} +]} +, {"enumname": "EItemStatistic","values": [ + {"name": "k_EItemStatistic_NumSubscriptions","value": "0"} + ,{"name": "k_EItemStatistic_NumFavorites","value": "1"} + ,{"name": "k_EItemStatistic_NumFollowers","value": "2"} + ,{"name": "k_EItemStatistic_NumUniqueSubscriptions","value": "3"} + ,{"name": "k_EItemStatistic_NumUniqueFavorites","value": "4"} + ,{"name": "k_EItemStatistic_NumUniqueFollowers","value": "5"} + ,{"name": "k_EItemStatistic_NumUniqueWebsiteViews","value": "6"} + ,{"name": "k_EItemStatistic_ReportScore","value": "7"} + ,{"name": "k_EItemStatistic_NumSecondsPlayed","value": "8"} + ,{"name": "k_EItemStatistic_NumPlaytimeSessions","value": "9"} + ,{"name": "k_EItemStatistic_NumComments","value": "10"} +]} +, {"enumname": "EItemPreviewType","values": [ + {"name": "k_EItemPreviewType_Image","value": "0"} + ,{"name": "k_EItemPreviewType_YouTubeVideo","value": "1"} + ,{"name": "k_EItemPreviewType_Sketchfab","value": "2"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_HorizontalCross","value": "3"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_LatLong","value": "4"} + ,{"name": "k_EItemPreviewType_ReservedMax","value": "255"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLMouseButton","values": [ + {"name": "eHTMLMouseButton_Left","value": "0"} + ,{"name": "eHTMLMouseButton_Right","value": "1"} + ,{"name": "eHTMLMouseButton_Middle","value": "2"} +]} +, {"enumname": "ISteamHTMLSurface::EMouseCursor","values": [ + {"name": "dc_user","value": "0"} + ,{"name": "dc_none","value": "1"} + ,{"name": "dc_arrow","value": "2"} + ,{"name": "dc_ibeam","value": "3"} + ,{"name": "dc_hourglass","value": "4"} + ,{"name": "dc_waitarrow","value": "5"} + ,{"name": "dc_crosshair","value": "6"} + ,{"name": "dc_up","value": "7"} + ,{"name": "dc_sizenw","value": "8"} + ,{"name": "dc_sizese","value": "9"} + ,{"name": "dc_sizene","value": "10"} + ,{"name": "dc_sizesw","value": "11"} + ,{"name": "dc_sizew","value": "12"} + ,{"name": "dc_sizee","value": "13"} + ,{"name": "dc_sizen","value": "14"} + ,{"name": "dc_sizes","value": "15"} + ,{"name": "dc_sizewe","value": "16"} + ,{"name": "dc_sizens","value": "17"} + ,{"name": "dc_sizeall","value": "18"} + ,{"name": "dc_no","value": "19"} + ,{"name": "dc_hand","value": "20"} + ,{"name": "dc_blank","value": "21"} + ,{"name": "dc_middle_pan","value": "22"} + ,{"name": "dc_north_pan","value": "23"} + ,{"name": "dc_north_east_pan","value": "24"} + ,{"name": "dc_east_pan","value": "25"} + ,{"name": "dc_south_east_pan","value": "26"} + ,{"name": "dc_south_pan","value": "27"} + ,{"name": "dc_south_west_pan","value": "28"} + ,{"name": "dc_west_pan","value": "29"} + ,{"name": "dc_north_west_pan","value": "30"} + ,{"name": "dc_alias","value": "31"} + ,{"name": "dc_cell","value": "32"} + ,{"name": "dc_colresize","value": "33"} + ,{"name": "dc_copycur","value": "34"} + ,{"name": "dc_verticaltext","value": "35"} + ,{"name": "dc_rowresize","value": "36"} + ,{"name": "dc_zoomin","value": "37"} + ,{"name": "dc_zoomout","value": "38"} + ,{"name": "dc_help","value": "39"} + ,{"name": "dc_custom","value": "40"} + ,{"name": "dc_last","value": "41"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLKeyModifiers","values": [ + {"name": "k_eHTMLKeyModifier_None","value": "0"} + ,{"name": "k_eHTMLKeyModifier_AltDown","value": "1"} + ,{"name": "k_eHTMLKeyModifier_CtrlDown","value": "2"} + ,{"name": "k_eHTMLKeyModifier_ShiftDown","value": "4"} +]} +, {"enumname": "ESteamItemFlags","values": [ + {"name": "k_ESteamItemNoTrade","value": "1"} + ,{"name": "k_ESteamItemRemoved","value": "256"} + ,{"name": "k_ESteamItemConsumed","value": "512"} +]} +], +"consts":[{ + "constname": "k_iSteamUserCallbacks","consttype": "int", "constval": "100"} +,{ + "constname": "k_iSteamGameServerCallbacks","consttype": "int", "constval": "200"} +,{ + "constname": "k_iSteamFriendsCallbacks","consttype": "int", "constval": "300"} +,{ + "constname": "k_iSteamBillingCallbacks","consttype": "int", "constval": "400"} +,{ + "constname": "k_iSteamMatchmakingCallbacks","consttype": "int", "constval": "500"} +,{ + "constname": "k_iSteamContentServerCallbacks","consttype": "int", "constval": "600"} +,{ + "constname": "k_iSteamUtilsCallbacks","consttype": "int", "constval": "700"} +,{ + "constname": "k_iClientFriendsCallbacks","consttype": "int", "constval": "800"} +,{ + "constname": "k_iClientUserCallbacks","consttype": "int", "constval": "900"} +,{ + "constname": "k_iSteamAppsCallbacks","consttype": "int", "constval": "1000"} +,{ + "constname": "k_iSteamUserStatsCallbacks","consttype": "int", "constval": "1100"} +,{ + "constname": "k_iSteamNetworkingCallbacks","consttype": "int", "constval": "1200"} +,{ + "constname": "k_iClientRemoteStorageCallbacks","consttype": "int", "constval": "1300"} +,{ + "constname": "k_iClientDepotBuilderCallbacks","consttype": "int", "constval": "1400"} +,{ + "constname": "k_iSteamGameServerItemsCallbacks","consttype": "int", "constval": "1500"} +,{ + "constname": "k_iClientUtilsCallbacks","consttype": "int", "constval": "1600"} +,{ + "constname": "k_iSteamGameCoordinatorCallbacks","consttype": "int", "constval": "1700"} +,{ + "constname": "k_iSteamGameServerStatsCallbacks","consttype": "int", "constval": "1800"} +,{ + "constname": "k_iSteam2AsyncCallbacks","consttype": "int", "constval": "1900"} +,{ + "constname": "k_iSteamGameStatsCallbacks","consttype": "int", "constval": "2000"} +,{ + "constname": "k_iClientHTTPCallbacks","consttype": "int", "constval": "2100"} +,{ + "constname": "k_iClientScreenshotsCallbacks","consttype": "int", "constval": "2200"} +,{ + "constname": "k_iSteamScreenshotsCallbacks","consttype": "int", "constval": "2300"} +,{ + "constname": "k_iClientAudioCallbacks","consttype": "int", "constval": "2400"} +,{ + "constname": "k_iClientUnifiedMessagesCallbacks","consttype": "int", "constval": "2500"} +,{ + "constname": "k_iSteamStreamLauncherCallbacks","consttype": "int", "constval": "2600"} +,{ + "constname": "k_iClientControllerCallbacks","consttype": "int", "constval": "2700"} +,{ + "constname": "k_iSteamControllerCallbacks","consttype": "int", "constval": "2800"} +,{ + "constname": "k_iClientParentalSettingsCallbacks","consttype": "int", "constval": "2900"} +,{ + "constname": "k_iClientDeviceAuthCallbacks","consttype": "int", "constval": "3000"} +,{ + "constname": "k_iClientNetworkDeviceManagerCallbacks","consttype": "int", "constval": "3100"} +,{ + "constname": "k_iClientMusicCallbacks","consttype": "int", "constval": "3200"} +,{ + "constname": "k_iClientRemoteClientManagerCallbacks","consttype": "int", "constval": "3300"} +,{ + "constname": "k_iClientUGCCallbacks","consttype": "int", "constval": "3400"} +,{ + "constname": "k_iSteamStreamClientCallbacks","consttype": "int", "constval": "3500"} +,{ + "constname": "k_IClientProductBuilderCallbacks","consttype": "int", "constval": "3600"} +,{ + "constname": "k_iClientShortcutsCallbacks","consttype": "int", "constval": "3700"} +,{ + "constname": "k_iClientRemoteControlManagerCallbacks","consttype": "int", "constval": "3800"} +,{ + "constname": "k_iSteamAppListCallbacks","consttype": "int", "constval": "3900"} +,{ + "constname": "k_iSteamMusicCallbacks","consttype": "int", "constval": "4000"} +,{ + "constname": "k_iSteamMusicRemoteCallbacks","consttype": "int", "constval": "4100"} +,{ + "constname": "k_iClientVRCallbacks","consttype": "int", "constval": "4200"} +,{ + "constname": "k_iClientGameNotificationCallbacks","consttype": "int", "constval": "4300"} +,{ + "constname": "k_iSteamGameNotificationCallbacks","consttype": "int", "constval": "4400"} +,{ + "constname": "k_iSteamHTMLSurfaceCallbacks","consttype": "int", "constval": "4500"} +,{ + "constname": "k_iClientVideoCallbacks","consttype": "int", "constval": "4600"} +,{ + "constname": "k_iClientInventoryCallbacks","consttype": "int", "constval": "4700"} +,{ + "constname": "k_iClientBluetoothManagerCallbacks","consttype": "int", "constval": "4800"} +,{ + "constname": "k_cchPersonaNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cwchPersonaNameMax","consttype": "int", "constval": "32"} +,{ + "constname": "k_cchMaxRichPresenceKeys","consttype": "int", "constval": "20"} +,{ + "constname": "k_cchMaxRichPresenceKeyLength","consttype": "int", "constval": "64"} +,{ + "constname": "k_cchMaxRichPresenceValueLength","consttype": "int", "constval": "256"} +,{ + "constname": "k_cchStatNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cchLeaderboardNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cLeaderboardDetailsMax","consttype": "int", "constval": "64"} +,{ + "constname": "k_InvalidUnifiedMessageHandle","consttype": "const ClientUnifiedMessageHandle", "constval": "0"} +,{ + "constname": "k_SteamItemInstanceIDInvalid","consttype": "const SteamItemInstanceID_t", "constval": "18446744073709551615"} +,{ + "constname": "k_SteamInventoryResultInvalid","consttype": "const SteamInventoryResult_t", "constval": "-1"} +], +"structs":[{"struct": "CSteamID","fields": [ +{ "fieldname": "m_steamid", "fieldtype": "union SteamID_t"}]} +,{"struct": "CSteamID::SteamID_t","fields": [ +{ "fieldname": "m_comp", "fieldtype": "struct SteamIDComponent_t"}, +{ "fieldname": "m_unAll64Bits", "fieldtype": "uint64"}]} +,{"struct": "CSteamID::SteamID_t::SteamIDComponent_t","fields": [ +{ "fieldname": "m_unAccountID", "fieldtype": "uint32"}, +{ "fieldname": "m_unAccountInstance", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EAccountType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EUniverse", "fieldtype": "enum EUniverse"}]} +,{"struct": "CGameID::GameID_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nModID", "fieldtype": "unsigned int"}]} +,{"struct": "CGameID::(anonymous)","fields": [ +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_gameID", "fieldtype": "struct CGameID::GameID_t"}]} +,{"struct": "ValvePackingSentinel_t","fields": [ +{ "fieldname": "m_u32", "fieldtype": "uint32"}, +{ "fieldname": "m_u64", "fieldtype": "uint64"}, +{ "fieldname": "m_u16", "fieldtype": "uint16"}, +{ "fieldname": "m_d", "fieldtype": "double"}]} +,{"struct": "CallbackMsg_t","fields": [ +{ "fieldname": "m_hSteamUser", "fieldtype": "HSteamUser"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_pubParam", "fieldtype": "uint8 *"}, +{ "fieldname": "m_cubParam", "fieldtype": "int"}]} +,{"struct": "SteamServerConnectFailure_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bStillRetrying", "fieldtype": "_Bool"}]} +,{"struct": "SteamServersDisconnected_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ClientGameServerDeny_t","fields": [ +{ "fieldname": "m_uAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_unGameServerIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGameServerPort", "fieldtype": "uint16"}, +{ "fieldname": "m_bSecure", "fieldtype": "uint16"}, +{ "fieldname": "m_uReason", "fieldtype": "uint32"}]} +,{"struct": "ValidateAuthTicketResponse_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eAuthSessionResponse", "fieldtype": "enum EAuthSessionResponse"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "MicroTxnAuthorizationResponse_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_ulOrderID", "fieldtype": "uint64"}, +{ "fieldname": "m_bAuthorized", "fieldtype": "uint8"}]} +,{"struct": "EncryptedAppTicketResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GetAuthSessionTicketResponse_t","fields": [ +{ "fieldname": "m_hAuthTicket", "fieldtype": "HAuthTicket"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GameWebCallback_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [256]"}]} +,{"struct": "StoreAuthURLResponse_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [512]"}]} +,{"struct": "FriendGameInfo_t","fields": [ +{ "fieldname": "m_gameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_unGameIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGamePort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FriendSessionStateInfo_t","fields": [ +{ "fieldname": "m_uiOnlineSessionInstances", "fieldtype": "uint32"}, +{ "fieldname": "m_uiPublishedToFriendsSessionInstance", "fieldtype": "uint8"}]} +,{"struct": "PersonaStateChange_t","fields": [ +{ "fieldname": "m_ulSteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_nChangeFlags", "fieldtype": "int"}]} +,{"struct": "GameOverlayActivated_t","fields": [ +{ "fieldname": "m_bActive", "fieldtype": "uint8"}]} +,{"struct": "GameServerChangeRequested_t","fields": [ +{ "fieldname": "m_rgchServer", "fieldtype": "char [64]"}, +{ "fieldname": "m_rgchPassword", "fieldtype": "char [64]"}]} +,{"struct": "GameLobbyJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}]} +,{"struct": "AvatarImageLoaded_t","fields": [ +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iImage", "fieldtype": "int"}, +{ "fieldname": "m_iWide", "fieldtype": "int"}, +{ "fieldname": "m_iTall", "fieldtype": "int"}]} +,{"struct": "ClanOfficerListResponse_t","fields": [ +{ "fieldname": "m_steamIDClan", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_cOfficers", "fieldtype": "int"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "FriendRichPresenceUpdate_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "GameRichPresenceJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_rgchConnect", "fieldtype": "char [256]"}]} +,{"struct": "GameConnectedClanChatMsg_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "GameConnectedChatJoin_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GameConnectedChatLeave_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bKicked", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDropped", "fieldtype": "_Bool"}]} +,{"struct": "DownloadClanActivityCountsResult_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}]} +,{"struct": "JoinClanChatRoomCompletionResult_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eChatRoomEnterResponse", "fieldtype": "enum EChatRoomEnterResponse"}]} +,{"struct": "GameConnectedFriendChatMsg_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "FriendsGetFollowerCount_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nCount", "fieldtype": "int"}]} +,{"struct": "FriendsIsFollowing_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bIsFollowing", "fieldtype": "_Bool"}]} +,{"struct": "FriendsEnumerateFollowingList_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_rgSteamID", "fieldtype": "class CSteamID [50]"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}]} +,{"struct": "SetPersonaNameResponse_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_bLocalSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "LowBatteryPower_t","fields": [ +{ "fieldname": "m_nMinutesBatteryLeft", "fieldtype": "uint8"}]} +,{"struct": "SteamAPICallCompleted_t","fields": [ +{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_cubParam", "fieldtype": "uint32"}]} +,{"struct": "CheckFileSignature_t","fields": [ +{ "fieldname": "m_eCheckFileSignature", "fieldtype": "enum ECheckFileSignature"}]} +,{"struct": "GamepadTextInputDismissed_t","fields": [ +{ "fieldname": "m_bSubmitted", "fieldtype": "_Bool"}, +{ "fieldname": "m_unSubmittedText", "fieldtype": "uint32"}]} +,{"struct": "MatchMakingKeyValuePair_t","fields": [ +{ "fieldname": "m_szKey", "fieldtype": "char [256]"}, +{ "fieldname": "m_szValue", "fieldtype": "char [256]"}]} +,{"struct": "servernetadr_t","fields": [ +{ "fieldname": "m_usConnectionPort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}]} +,{"struct": "gameserveritem_t","fields": [ +{ "fieldname": "m_NetAdr", "fieldtype": "class servernetadr_t"}, +{ "fieldname": "m_nPing", "fieldtype": "int"}, +{ "fieldname": "m_bHadSuccessfulResponse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDoNotRefresh", "fieldtype": "_Bool"}, +{ "fieldname": "m_szGameDir", "fieldtype": "char [32]"}, +{ "fieldname": "m_szMap", "fieldtype": "char [32]"}, +{ "fieldname": "m_szGameDescription", "fieldtype": "char [64]"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nMaxPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nBotPlayers", "fieldtype": "int"}, +{ "fieldname": "m_bPassword", "fieldtype": "_Bool"}, +{ "fieldname": "m_bSecure", "fieldtype": "_Bool"}, +{ "fieldname": "m_ulTimeLastPlayed", "fieldtype": "uint32"}, +{ "fieldname": "m_nServerVersion", "fieldtype": "int"}, +{ "fieldname": "m_szServerName", "fieldtype": "char [64]"}, +{ "fieldname": "m_szGameTags", "fieldtype": "char [128]"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListChanged_t","fields": [ +{ "fieldname": "m_nIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nQueryPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nConnPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nFlags", "fieldtype": "uint32"}, +{ "fieldname": "m_bAdd", "fieldtype": "_Bool"}, +{ "fieldname": "m_unAccountId", "fieldtype": "AccountID_t"}]} +,{"struct": "LobbyInvite_t","fields": [ +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}]} +,{"struct": "LobbyEnter_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatPermissions", "fieldtype": "uint32"}, +{ "fieldname": "m_bLocked", "fieldtype": "_Bool"}, +{ "fieldname": "m_EChatRoomEnterResponse", "fieldtype": "uint32"}]} +,{"struct": "LobbyDataUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMember", "fieldtype": "uint64"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "LobbyChatUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUserChanged", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMakingChange", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatMemberStateChange", "fieldtype": "uint32"}]} +,{"struct": "LobbyChatMsg_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_eChatEntryType", "fieldtype": "uint8"}, +{ "fieldname": "m_iChatID", "fieldtype": "uint32"}]} +,{"struct": "LobbyGameCreated_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDGameServer", "fieldtype": "uint64"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usPort", "fieldtype": "uint16"}]} +,{"struct": "LobbyMatchList_t","fields": [ +{ "fieldname": "m_nLobbiesMatching", "fieldtype": "uint32"}]} +,{"struct": "LobbyKicked_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDAdmin", "fieldtype": "uint64"}, +{ "fieldname": "m_bKickedDueToDisconnect", "fieldtype": "uint8"}]} +,{"struct": "LobbyCreated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}]} +,{"struct": "PSNGameBootInviteResult_t","fields": [ +{ "fieldname": "m_bGameBootInviteExists", "fieldtype": "_Bool"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListAccountsUpdated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamParamStringArray_t","fields": [ +{ "fieldname": "m_ppStrings", "fieldtype": "const char **"}, +{ "fieldname": "m_nNumStrings", "fieldtype": "int32"}]} +,{"struct": "RemoteStorageAppSyncedClient_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumDownloads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncedServer_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumUploads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncProgress_t","fields": [ +{ "fieldname": "m_rgchCurrentFile", "fieldtype": "char [260]"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_uBytesTransferredThisChunk", "fieldtype": "uint32"}, +{ "fieldname": "m_dAppPercentComplete", "fieldtype": "double"}, +{ "fieldname": "m_bUploading", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageAppSyncStatusCheck_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileShareResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_rgchFilename", "fieldtype": "char [260]"}]} +,{"struct": "RemoteStoragePublishFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDeletePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserPublishedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeSubscribed", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStorageUnsubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUpdatePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDownloadUGCResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nSizeInBytes", "fieldtype": "int32"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageGetPublishedFileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageEnumerateWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgScore", "fieldtype": "float [50]"}, +{ "fieldname": "m_nAppId", "fieldtype": "AppId_t"}, +{ "fieldname": "m_unStartIndex", "fieldtype": "uint32"}]} +,{"struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nVotesFor", "fieldtype": "int32"}, +{ "fieldname": "m_nVotesAgainst", "fieldtype": "int32"}, +{ "fieldname": "m_nReports", "fieldtype": "int32"}, +{ "fieldname": "m_fScore", "fieldtype": "float"}]} +,{"struct": "RemoteStoragePublishedFileSubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileUnsubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileDeleted_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUserVoteDetails_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eVote", "fieldtype": "enum EWorkshopVote"}]} +,{"struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSetUserPublishedFileActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}]} +,{"struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeUpdated", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStoragePublishFileProgress_t","fields": [ +{ "fieldname": "m_dPercentFile", "fieldtype": "double"}, +{ "fieldname": "m_bPreview", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStoragePublishedFileUpdated_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_ulUnused", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageFileWriteAsyncComplete_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileReadAsyncComplete_t","fields": [ +{ "fieldname": "m_hFileReadAsync", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cubRead", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardEntry_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nGlobalRank", "fieldtype": "int32"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_cDetails", "fieldtype": "int32"}, +{ "fieldname": "m_hUGC", "fieldtype": "UGCHandle_t"}]} +,{"struct": "UserStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserStatsStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserAchievementStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_bGroupAchievement", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_nCurProgress", "fieldtype": "uint32"}, +{ "fieldname": "m_nMaxProgress", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardFindResult_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_bLeaderboardFound", "fieldtype": "uint8"}]} +,{"struct": "LeaderboardScoresDownloaded_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_hSteamLeaderboardEntries", "fieldtype": "SteamLeaderboardEntries_t"}, +{ "fieldname": "m_cEntryCount", "fieldtype": "int"}]} +,{"struct": "LeaderboardScoreUploaded_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_bScoreChanged", "fieldtype": "uint8"}, +{ "fieldname": "m_nGlobalRankNew", "fieldtype": "int"}, +{ "fieldname": "m_nGlobalRankPrevious", "fieldtype": "int"}]} +,{"struct": "NumberOfCurrentPlayers_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_cPlayers", "fieldtype": "int32"}]} +,{"struct": "UserStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserAchievementIconFetched_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_bAchieved", "fieldtype": "_Bool"}, +{ "fieldname": "m_nIconHandle", "fieldtype": "int"}]} +,{"struct": "GlobalAchievementPercentagesReady_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "LeaderboardUGCSet_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}]} +,{"struct": "PS3TrophiesInstalled_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulRequiredDiskSpace", "fieldtype": "uint64"}]} +,{"struct": "GlobalStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "DlcInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RegisterActivationCodeResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum ERegisterActivationCodeResult"}, +{ "fieldname": "m_unPackageRegistered", "fieldtype": "uint32"}]} +,{"struct": "AppProofOfPurchaseKeyResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_cchKeyLength", "fieldtype": "uint32"}, +{ "fieldname": "m_rgchKey", "fieldtype": "char [240]"}]} +,{"struct": "FileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulFileSize", "fieldtype": "uint64"}, +{ "fieldname": "m_FileSHA", "fieldtype": "uint8 [20]"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint32"}]} +,{"struct": "P2PSessionState_t","fields": [ +{ "fieldname": "m_bConnectionActive", "fieldtype": "uint8"}, +{ "fieldname": "m_bConnecting", "fieldtype": "uint8"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}, +{ "fieldname": "m_bUsingRelay", "fieldtype": "uint8"}, +{ "fieldname": "m_nBytesQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nPacketsQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nRemoteIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nRemotePort", "fieldtype": "uint16"}]} +,{"struct": "P2PSessionRequest_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}]} +,{"struct": "P2PSessionConnectFail_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}]} +,{"struct": "SocketStatusCallback_t","fields": [ +{ "fieldname": "m_hSocket", "fieldtype": "SNetSocket_t"}, +{ "fieldname": "m_hListenSocket", "fieldtype": "SNetListenSocket_t"}, +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eSNetSocketState", "fieldtype": "int"}]} +,{"struct": "ScreenshotReady_t","fields": [ +{ "fieldname": "m_hLocal", "fieldtype": "ScreenshotHandle"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "VolumeHasChanged_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerWantsShuffled_t","fields": [ +{ "fieldname": "m_bShuffled", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsLooped_t","fields": [ +{ "fieldname": "m_bLooped", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsVolume_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerSelectsQueueEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerSelectsPlaylistEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerWantsPlayingRepeatStatus_t","fields": [ +{ "fieldname": "m_nPlayingRepeatStatus", "fieldtype": "int"}]} +,{"struct": "HTTPRequestCompleted_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_bRequestSuccessful", "fieldtype": "_Bool"}, +{ "fieldname": "m_eStatusCode", "fieldtype": "enum EHTTPStatusCode"}, +{ "fieldname": "m_unBodySize", "fieldtype": "uint32"}]} +,{"struct": "HTTPRequestHeadersReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}]} +,{"struct": "HTTPRequestDataReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_cOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cBytesReceived", "fieldtype": "uint32"}]} +,{"struct": "SteamUnifiedMessagesSendMethodResult_t","fields": [ +{ "fieldname": "m_hHandle", "fieldtype": "ClientUnifiedMessageHandle"}, +{ "fieldname": "m_unContext", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unResponseSize", "fieldtype": "uint32"}]} +,{"struct": "ControllerAnalogActionData_t","fields": [ +{ "fieldname": "eMode", "fieldtype": "enum EControllerSourceMode"}, +{ "fieldname": "x", "fieldtype": "float"}, +{ "fieldname": "y", "fieldtype": "float"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerDigitalActionData_t","fields": [ +{ "fieldname": "bState", "fieldtype": "_Bool"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerMotionData_t","fields": [ +{ "fieldname": "rotQuatX", "fieldtype": "float"}, +{ "fieldname": "rotQuatY", "fieldtype": "float"}, +{ "fieldname": "rotQuatZ", "fieldtype": "float"}, +{ "fieldname": "rotQuatW", "fieldtype": "float"}, +{ "fieldname": "posAccelX", "fieldtype": "float"}, +{ "fieldname": "posAccelY", "fieldtype": "float"}, +{ "fieldname": "posAccelZ", "fieldtype": "float"}, +{ "fieldname": "rotVelX", "fieldtype": "float"}, +{ "fieldname": "rotVelY", "fieldtype": "float"}, +{ "fieldname": "rotVelZ", "fieldtype": "float"}]} +,{"struct": "SteamUGCDetails_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeAddedToUserList", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_unVotesUp", "fieldtype": "uint32"}, +{ "fieldname": "m_unVotesDown", "fieldtype": "uint32"}, +{ "fieldname": "m_flScore", "fieldtype": "float"}, +{ "fieldname": "m_unNumChildren", "fieldtype": "uint32"}]} +,{"struct": "SteamUGCQueryCompleted_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "UGCQueryHandle_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumResultsReturned", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMatchingResults", "fieldtype": "uint32"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "SteamUGCRequestUGCDetailsResult_t","fields": [ +{ "fieldname": "m_details", "fieldtype": "struct SteamUGCDetails_t"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "CreateItemResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "SubmitItemUpdateResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "DownloadItemResult_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserFavoriteItemsListChanged_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bWasAddRequest", "fieldtype": "_Bool"}]} +,{"struct": "SetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVoteUp", "fieldtype": "_Bool"}]} +,{"struct": "GetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVotedUp", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVotedDown", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVoteSkipped", "fieldtype": "_Bool"}]} +,{"struct": "StartPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "StopPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamAppInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "SteamAppUninstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "HTML_BrowserReady_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_NeedsPaint_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pBGRA", "fieldtype": "const char *"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateX", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateY", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateWide", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateTall", "fieldtype": "uint32"}, +{ "fieldname": "unScrollX", "fieldtype": "uint32"}, +{ "fieldname": "unScrollY", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "unPageSerial", "fieldtype": "uint32"}]} +,{"struct": "HTML_StartRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchTarget", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}]} +,{"struct": "HTML_CloseBrowser_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_URLChanged_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}, +{ "fieldname": "bNewNavigation", "fieldtype": "_Bool"}]} +,{"struct": "HTML_FinishedRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_OpenLinkInNewTab_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}]} +,{"struct": "HTML_ChangedTitle_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_SearchResults_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unResults", "fieldtype": "uint32"}, +{ "fieldname": "unCurrentMatch", "fieldtype": "uint32"}]} +,{"struct": "HTML_CanGoBackAndForward_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "bCanGoBack", "fieldtype": "_Bool"}, +{ "fieldname": "bCanGoForward", "fieldtype": "_Bool"}]} +,{"struct": "HTML_HorizontalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_VerticalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_LinkAtPosition_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "x", "fieldtype": "uint32"}, +{ "fieldname": "y", "fieldtype": "uint32"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "bInput", "fieldtype": "_Bool"}, +{ "fieldname": "bLiveLink", "fieldtype": "_Bool"}]} +,{"struct": "HTML_JSAlert_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_JSConfirm_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_FileOpenDialog_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}, +{ "fieldname": "pchInitialFile", "fieldtype": "const char *"}]} +,{"struct": "HTML_NewWindow_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "unX", "fieldtype": "uint32"}, +{ "fieldname": "unY", "fieldtype": "uint32"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unNewWindow_BrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_SetCursor_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "eMouseCursor", "fieldtype": "uint32"}]} +,{"struct": "HTML_StatusText_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_ShowToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_UpdateToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_HideToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "SteamItemDetails_t","fields": [ +{ "fieldname": "m_itemId", "fieldtype": "SteamItemInstanceID_t"}, +{ "fieldname": "m_iDefinition", "fieldtype": "SteamItemDef_t"}, +{ "fieldname": "m_unQuantity", "fieldtype": "uint16"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint16"}]} +,{"struct": "SteamInventoryResultReady_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "SteamInventoryFullUpdate_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}]} +,{"struct": "BroadcastUploadStop_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EBroadcastUploadResult"}]} +,{"struct": "GetVideoURLResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} +,{"struct": "CSteamAPIContext","fields": [ +{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, +{ "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, +{ "fieldname": "m_pSteamFriends", "fieldtype": "class ISteamFriends *"}, +{ "fieldname": "m_pSteamUtils", "fieldtype": "class ISteamUtils *"}, +{ "fieldname": "m_pSteamMatchmaking", "fieldtype": "class ISteamMatchmaking *"}, +{ "fieldname": "m_pSteamUserStats", "fieldtype": "class ISteamUserStats *"}, +{ "fieldname": "m_pSteamApps", "fieldtype": "class ISteamApps *"}, +{ "fieldname": "m_pSteamMatchmakingServers", "fieldtype": "class ISteamMatchmakingServers *"}, +{ "fieldname": "m_pSteamNetworking", "fieldtype": "class ISteamNetworking *"}, +{ "fieldname": "m_pSteamRemoteStorage", "fieldtype": "class ISteamRemoteStorage *"}, +{ "fieldname": "m_pSteamScreenshots", "fieldtype": "class ISteamScreenshots *"}, +{ "fieldname": "m_pSteamHTTP", "fieldtype": "class ISteamHTTP *"}, +{ "fieldname": "m_pSteamUnifiedMessages", "fieldtype": "class ISteamUnifiedMessages *"}, +{ "fieldname": "m_pController", "fieldtype": "class ISteamController *"}, +{ "fieldname": "m_pSteamUGC", "fieldtype": "class ISteamUGC *"}, +{ "fieldname": "m_pSteamAppList", "fieldtype": "class ISteamAppList *"}, +{ "fieldname": "m_pSteamMusic", "fieldtype": "class ISteamMusic *"}, +{ "fieldname": "m_pSteamMusicRemote", "fieldtype": "class ISteamMusicRemote *"}, +{ "fieldname": "m_pSteamHTMLSurface", "fieldtype": "class ISteamHTMLSurface *"}, +{ "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, +{ "fieldname": "m_pSteamVideo", "fieldtype": "class ISteamVideo *"}]} +,{"struct": "CCallbackBase","fields": [ +{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}]} +,{"struct": "CCallResult","fields": [ +{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "CCallback","fields": [ +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "GSClientApprove_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "GSClientDeny_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}, +{ "fieldname": "m_rgchOptionalText", "fieldtype": "char [128]"}]} +,{"struct": "GSClientKick_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}]} +,{"struct": "GSClientAchievementStatus_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_pchAchievement", "fieldtype": "char [128]"}, +{ "fieldname": "m_bUnlocked", "fieldtype": "_Bool"}]} +,{"struct": "GSPolicyResponse_t","fields": [ +{ "fieldname": "m_bSecure", "fieldtype": "uint8"}]} +,{"struct": "GSGameplayStats_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nRank", "fieldtype": "int32"}, +{ "fieldname": "m_unTotalConnects", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMinutesPlayed", "fieldtype": "uint32"}]} +,{"struct": "GSClientGroupStatus_t","fields": [ +{ "fieldname": "m_SteamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_SteamIDGroup", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bMember", "fieldtype": "_Bool"}, +{ "fieldname": "m_bOfficer", "fieldtype": "_Bool"}]} +,{"struct": "GSReputation_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unReputationScore", "fieldtype": "uint32"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_unBannedIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usBannedPort", "fieldtype": "uint16"}, +{ "fieldname": "m_ulBannedGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_unBanExpires", "fieldtype": "uint32"}]} +,{"struct": "AssociateWithClanResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ComputeNewPlayerCompatibilityResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_cPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_cPlayersThatCandidateDoesntLike", "fieldtype": "int"}, +{ "fieldname": "m_cClanPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_SteamIDCandidate", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsReceived_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsStored_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +], +"methods":[{ + "classname": "ISteamClient", + "methodname": "CreateSteamPipe", + "returntype": "HSteamPipe" +} +,{ + "classname": "ISteamClient", + "methodname": "BReleaseSteamPipe", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ConnectToGlobalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "CreateLocalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "phSteamPipe" ,"paramtype": "HSteamPipe *"}, +{ "paramname": "eAccountType" ,"paramtype": "EAccountType"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ReleaseUser", + "returntype": "void", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "hUser" ,"paramtype": "HSteamUser"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUser", + "returntype": "class ISteamUser *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServer", + "returntype": "class ISteamGameServer *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "SetLocalIPBinding", + "returntype": "void", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamFriends", + "returntype": "class ISteamFriends *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUtils", + "returntype": "class ISteamUtils *", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmaking", + "returntype": "class ISteamMatchmaking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmakingServers", + "returntype": "class ISteamMatchmakingServers *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGenericInterface", + "returntype": "void *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUserStats", + "returntype": "class ISteamUserStats *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServerStats", + "returntype": "class ISteamGameServerStats *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamApps", + "returntype": "class ISteamApps *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamNetworking", + "returntype": "class ISteamNetworking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamRemoteStorage", + "returntype": "class ISteamRemoteStorage *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamScreenshots", + "returntype": "class ISteamScreenshots *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamClient", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "BShutdownIfAllPipesClosed", + "returntype": "bool" +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTTP", + "returntype": "class ISteamHTTP *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUnifiedMessages", + "returntype": "class ISteamUnifiedMessages *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamController", + "returntype": "class ISteamController *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUGC", + "returntype": "class ISteamUGC *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamAppList", + "returntype": "class ISteamAppList *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusic", + "returntype": "class ISteamMusic *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusicRemote", + "returntype": "class ISteamMusicRemote *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTMLSurface", + "returntype": "class ISteamHTMLSurface *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamInventory", + "returntype": "class ISteamInventory *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamVideo", + "returntype": "class ISteamVideo *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetHSteamUser", + "returntype": "HSteamUser" +} +,{ + "classname": "ISteamUser", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamUser", + "methodname": "InitiateGameConnection", + "returntype": "int", + "params": [ +{ "paramname": "pAuthBlob" ,"paramtype": "void *"}, +{ "paramname": "cbMaxAuthBlob" ,"paramtype": "int"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"}, +{ "paramname": "bSecure" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TerminateGameConnection", + "returntype": "void", + "params": [ +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TrackAppUsageEvent", + "returntype": "void", + "params": [ +{ "paramname": "gameID" ,"paramtype": "class CGameID"}, +{ "paramname": "eAppUsageEvent" ,"paramtype": "int"}, +{ "paramname": "pchExtraInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetUserDataFolder", + "returntype": "bool", + "params": [ +{ "paramname": "pchBuffer" ,"paramtype": "char *"}, +{ "paramname": "cubBuffer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "StartVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "StopVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAvailableVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pcbCompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "pcbUncompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "bWantCompressed" ,"paramtype": "bool"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "bWantUncompressed" ,"paramtype": "bool"}, +{ "paramname": "pUncompressedDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbUncompressedDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nUncompressBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "DecompressVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pCompressed" ,"paramtype": "const void *"}, +{ "paramname": "cbCompressed" ,"paramtype": "uint32"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoiceOptimalSampleRate", + "returntype": "uint32" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsBehindNAT", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "AdvertiseGame", + "returntype": "void", + "params": [ +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "RequestEncryptedAppTicket", "callresult": "EncryptedAppTicketResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pDataToInclude" ,"paramtype": "void *"}, +{ "paramname": "cbDataToInclude" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetEncryptedAppTicket", + "returntype": "bool", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetGameBadgeLevel", + "returntype": "int", + "params": [ +{ "paramname": "nSeries" ,"paramtype": "int"}, +{ "paramname": "bFoil" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetPlayerSteamLevel", + "returntype": "int" +} +,{ + "classname": "ISteamUser", + "methodname": "RequestStoreAuthURL", "callresult": "StoreAuthURLResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchRedirectURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneVerified", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsTwoFactorEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneIdentifying", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneRequiringVerification", + "returntype": "bool" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaName", + "returntype": "const char *" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPersonaName", "callresult": "SetPersonaNameResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchPersonaName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaState", + "returntype": "EPersonaState" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCount", + "returntype": "int", + "params": [ +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iFriend" ,"paramtype": "int"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRelationship", + "returntype": "EFriendRelationship", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaState", + "returntype": "EPersonaState", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendGamePlayed", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pFriendGameInfo" ,"out_struct": " " ,"paramtype": "struct FriendGameInfo_t *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaNameHistory", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iPersonaName" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendSteamLevel", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPlayerNickname", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupIDByIndex", + "returntype": "FriendsGroupID_t", + "params": [ +{ "paramname": "iFG" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupName", + "returntype": "const char *", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersCount", + "returntype": "int", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersList", + "returntype": "void", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"}, +{ "paramname": "pOutSteamIDMembers" ,"out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nMembersCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "HasFriend", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iClan" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanTag", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanActivityCounts", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "pnOnline" ,"paramtype": "int *"}, +{ "paramname": "pnInGame" ,"paramtype": "int *"}, +{ "paramname": "pnChatting" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "DownloadClanActivityCounts", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "psteamIDClans" ,"array_count": "cClansToRequest" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cClansToRequest" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCountFromSource", + "returntype": "int", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendFromSourceByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsUserInSource", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetInGameVoiceSpeaking", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bSpeaking" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlay", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToUser", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToWebPage", + "returntype": "void", + "params": [ +{ "paramname": "pchURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToStore", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "eFlag" ,"paramtype": "EOverlayToStoreFlag"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPlayedWith", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUserPlayedWith" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayInviteDialog", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetSmallFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetMediumFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetLargeFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestUserInformation", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bRequireNameOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestClanOfficerList", "callresult": "ClanOfficerListResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iOfficer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetUserRestrictions", + "returntype": "uint32" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetRichPresence", + "returntype": "bool", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ClearRichPresence", + "returntype": "void" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresence", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyByIndex", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iKey" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestFriendRichPresence", + "returntype": "void", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "InviteUserToGame", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchConnectString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriendCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriend", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iCoplayFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayTime", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayGame", + "returntype": "AppId_t", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "JoinClanChatRoom", "callresult": "JoinClanChatRoomCompletionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "LeaveClanChatRoom", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMemberCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetChatMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iUser" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SendClanChatMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessage" ,"paramtype": "int"}, +{ "paramname": "prgchText" ,"paramtype": "void *"}, +{ "paramname": "cchTextMax" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"}, +{ "paramname": "psteamidChatter" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatAdmin", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatWindowOpenInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "OpenClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "CloseClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetListenForFriendsMessages", + "returntype": "bool", + "params": [ +{ "paramname": "bInterceptEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ReplyToFriendMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchMsgToSend" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessageID" ,"paramtype": "int"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFollowerCount", "callresult": "FriendsGetFollowerCount_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsFollowing", "callresult": "FriendsIsFollowing_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "EnumerateFollowingList", "callresult": "FriendsEnumerateFollowingList_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceAppActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceComputerActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetConnectedUniverse", + "returntype": "EUniverse" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetServerRealTime", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCountry", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageSize", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32 *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageRGBA", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pubDest" ,"paramtype": "uint8 *"}, +{ "paramname": "nDestBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCSERIPPort", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32 *"}, +{ "paramname": "usPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCurrentBatteryPower", + "returntype": "uint8" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAppID", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationPosition", + "returntype": "void", + "params": [ +{ "paramname": "eNotificationPosition" ,"paramtype": "ENotificationPosition"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsAPICallCompleted", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallFailureReason", + "returntype": "ESteamAPICallFailure", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallResult", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pCallback" ,"paramtype": "void *"}, +{ "paramname": "cubCallback" ,"paramtype": "int"}, +{ "paramname": "iCallbackExpected" ,"paramtype": "int"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsOverlayEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "BOverlayNeedsPresent", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "CheckFileSignature", "callresult": "CheckFileSignature_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "szFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "ShowGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "eInputMode" ,"paramtype": "EGamepadTextInputMode"}, +{ "paramname": "eLineInputMode" ,"paramtype": "EGamepadTextInputLineMode"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "unCharMax" ,"paramtype": "uint32"}, +{ "paramname": "pchExistingText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextLength", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "char *"}, +{ "paramname": "cchText" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSteamUILanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamRunningInVR", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationInset", + "returntype": "void", + "params": [ +{ "paramname": "nHorizontalInset" ,"paramtype": "int"}, +{ "paramname": "nVerticalInset" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamInBigPictureMode", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "StartVRDashboard", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGameCount", + "returntype": "int" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "iGame" ,"paramtype": "int"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnConnPort" ,"paramtype": "uint16 *"}, +{ "paramname": "pnQueryPort" ,"paramtype": "uint16 *"}, +{ "paramname": "punFlags" ,"paramtype": "uint32 *"}, +{ "paramname": "pRTime32LastPlayedOnServer" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddFavoriteGame", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "rTime32LastPlayedOnServer" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RemoveFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyList", "callresult": "LobbyMatchList_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListStringFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "pchValueToMatch" ,"paramtype": "const char *"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNumericalFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToMatch" ,"paramtype": "int"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNearValueFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToBeCloseTo" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListFilterSlotsAvailable", + "returntype": "void", + "params": [ +{ "paramname": "nSlotsAvailable" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListDistanceFilter", + "returntype": "void", + "params": [ +{ "paramname": "eLobbyDistanceFilter" ,"paramtype": "ELobbyDistanceFilter"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListResultCountFilter", + "returntype": "void", + "params": [ +{ "paramname": "cMaxResults" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListCompatibleMembersFilter", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iLobby" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "CreateLobby", "callresult": "LobbyCreated_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "JoinLobby", "callresult": "LobbyEnter_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "LeaveLobby", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "InviteUserToLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDInvitee" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetNumLobbyMembers", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMember" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iLobbyData" ,"paramtype": "int"}, +{ "paramname": "pchKey" ,"paramtype": "char *"}, +{ "paramname": "cchKeyBufferSize" ,"paramtype": "int"}, +{ "paramname": "pchValue" ,"paramtype": "char *"}, +{ "paramname": "cchValueBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "DeleteLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberData", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SendLobbyChatMsg", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pvMsgBody" ,"paramtype": "const void *"}, +{ "paramname": "cubMsgBody" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyChatEntry", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iChatID" ,"paramtype": "int"}, +{ "paramname": "pSteamIDUser" ,"out_struct": " " ,"paramtype": "class CSteamID *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyGameServer", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "unGameServerIP" ,"paramtype": "uint32"}, +{ "paramname": "unGameServerPort" ,"paramtype": "uint16"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "punGameServerIP" ,"paramtype": "uint32 *"}, +{ "paramname": "punGameServerPort" ,"paramtype": "uint16 *"}, +{ "paramname": "psteamIDGameServer" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberLimit", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberLimit", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyType", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyJoinable", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "bLobbyJoinable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyOwner", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDNewOwner" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLinkedLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDLobbyDependent" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "RefreshComplete", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "response" ,"paramtype": "EMatchMakingServerResponse"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "server" ,"paramtype": "class gameserveritem_t &"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "AddPlayerToList", + "returntype": "void", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nScore" ,"paramtype": "int"}, +{ "paramname": "flTimePlayed" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesResponded", + "returntype": "void", + "params": [ +{ "paramname": "pchRule" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestInternetServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestLANServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFriendsServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFavoritesServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestHistoryServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestSpectatorServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ReleaseRequest", + "returntype": "void", + "params": [ +{ "paramname": "hServerListRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerDetails", + "returntype": "class gameserveritem_t *", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "IsRefreshing", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerCount", + "returntype": "int", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshServer", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PingServer", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPingResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PlayerDetails", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPlayersResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ServerRules", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingRulesResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelServerQuery", + "returntype": "void", + "params": [ +{ "paramname": "hServerQuery" ,"paramtype": "HServerQuery"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWrite", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileRead", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteAsync", "callresult": "RemoteStorageFileWriteAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsync", "callresult": "RemoteStorageFileReadAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "nOffset" ,"paramtype": "uint32"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsyncComplete", + "returntype": "bool", + "params": [ +{ "paramname": "hReadCall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileForget", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileDelete", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileShare", "callresult": "RemoteStorageFileShareResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetSyncPlatforms", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "eRemoteStoragePlatform" ,"paramtype": "ERemoteStoragePlatform"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamOpen", + "returntype": "UGCFileWriteStreamHandle_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamWriteChunk", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamClose", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamCancel", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileExists", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FilePersisted", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileSize", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileTimestamp", + "returntype": "int64", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetSyncPlatforms", + "returntype": "ERemoteStoragePlatform", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileNameAndSize", + "returntype": "const char *", + "params": [ +{ "paramname": "iFile" ,"paramtype": "int"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetQuota", + "returntype": "bool", + "params": [ +{ "paramname": "pnTotalBytes" ,"paramtype": "uint64 *"}, +{ "paramname": "puAvailableBytes" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForAccount", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForApp", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetCloudEnabledForApp", + "returntype": "void", + "params": [ +{ "paramname": "bEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownload", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnBytesDownloaded" ,"paramtype": "int32 *"}, +{ "paramname": "pnBytesExpected" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDetails", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "ppchName" ,"out_string": " " ,"paramtype": "char **"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"}, +{ "paramname": "pSteamIDOwner" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCRead", + "returntype": "int32", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "eAction" ,"paramtype": "EUGCReadAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCHandle", + "returntype": "UGCHandle_t", + "params": [ +{ "paramname": "iCachedContent" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishWorkshopFile", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "eWorkshopFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CreatePublishedFileUpdateRequest", + "returntype": "PublishedFileUpdateHandle_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFilePreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTitle", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CommitPublishedFileUpdate", "callresult": "RemoteStorageUpdatePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedFileDetails", "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxSecondsOld" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "DeletePublishedFile", "callresult": "RemoteStorageDeletePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserPublishedFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SubscribePublishedFile", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSubscribedFiles", "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UnsubscribePublishedFile", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileSetChangeDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchChangeDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdateUserPublishedItemVote", "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUserPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSharedWorkshopFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamId" ,"paramtype": "class CSteamID"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "pRequiredTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pExcludedTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishVideo", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eVideoProvider" ,"paramtype": "EWorkshopVideoProvider"}, +{ "paramname": "pchVideoAccount" ,"paramtype": "const char *"}, +{ "paramname": "pchVideoIdentifier" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetUserPublishedFileAction", "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedFilesByUserAction", "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedWorkshopFiles", "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eEnumerationType" ,"paramtype": "EWorkshopEnumerationType"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "unCount" ,"paramtype": "uint32"}, +{ "paramname": "unDays" ,"paramtype": "uint32"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pUserTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownloadToLocation", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestCurrentStats", "callback": "UserStatsReceived_t", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UpdateAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ClearAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "StoreStats", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementIcon", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementDisplayAttribute", + "returntype": "const char *", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "IndicateAchievementProgress", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nCurProgress" ,"paramtype": "uint32"}, +{ "paramname": "nMaxProgress" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumAchievements", + "returntype": "uint32" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementName", + "returntype": "const char *", + "params": [ +{ "paramname": "iAchievement" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestUserStats", "callresult": "UserStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ResetAllStats", + "returntype": "bool", + "params": [ +{ "paramname": "bAchievementsToo" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindOrCreateLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"}, +{ "paramname": "eLeaderboardSortMethod" ,"paramtype": "ELeaderboardSortMethod"}, +{ "paramname": "eLeaderboardDisplayType" ,"paramtype": "ELeaderboardDisplayType"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardName", + "returntype": "const char *", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardEntryCount", + "returntype": "int", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardSortMethod", + "returntype": "ELeaderboardSortMethod", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardDisplayType", + "returntype": "ELeaderboardDisplayType", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntries", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardDataRequest" ,"paramtype": "ELeaderboardDataRequest"}, +{ "paramname": "nRangeStart" ,"paramtype": "int"}, +{ "paramname": "nRangeEnd" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntriesForUsers", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "prgUsers" ,"array_count": "cUsers" ,"desc": "Array of users to retrieve" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cUsers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetDownloadedLeaderboardEntry", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamLeaderboardEntries" ,"paramtype": "SteamLeaderboardEntries_t"}, +{ "paramname": "index" ,"paramtype": "int"}, +{ "paramname": "pLeaderboardEntry" ,"paramtype": "struct LeaderboardEntry_t *"}, +{ "paramname": "pDetails" ,"paramtype": "int32 *"}, +{ "paramname": "cDetailsMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UploadLeaderboardScore", "callresult": "LeaderboardScoreUploaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardUploadScoreMethod" ,"paramtype": "ELeaderboardUploadScoreMethod"}, +{ "paramname": "nScore" ,"paramtype": "int32"}, +{ "paramname": "pScoreDetails" ,"paramtype": "const int32 *"}, +{ "paramname": "cScoreDetailsCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "AttachLeaderboardUGC", "callresult": "LeaderboardUGCSet_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "hUGC" ,"paramtype": "UGCHandle_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumberOfCurrentPlayers", "callresult": "NumberOfCurrentPlayers_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalAchievementPercentages", "callresult": "GlobalAchievementPercentagesReady_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNextMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "iIteratorPrevious" ,"paramtype": "int"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAchievedPercent", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalStats", "callresult": "GlobalStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nHistoryDays" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int64 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "double *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "int64 *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "double *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribed", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsLowViolence", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsCybercafe", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsVACBanned", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentGameLanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "GetAvailableGameLanguages", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedApp", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsDlcInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetEarliestPurchaseUnixTime", + "returntype": "uint32", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedFromFreeWeekend", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetDLCCount", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "BGetDLCDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "iDLC" ,"paramtype": "int"}, +{ "paramname": "pAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pbAvailable" ,"paramtype": "bool *"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "InstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "UninstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAppProofOfPurchaseKey", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentBetaName", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "MarkContentCorrupt", + "returntype": "bool", + "params": [ +{ "paramname": "bMissingFilesOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetInstalledDepots", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pvecDepots" ,"paramtype": "DepotId_t *"}, +{ "paramname": "cMaxDepots" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppInstallDir", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchFolder" ,"paramtype": "char *"}, +{ "paramname": "cchFolderBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsAppInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppOwner", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamApps", + "methodname": "GetLaunchQueryParam", + "returntype": "const char *", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetDlcDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppBuildId", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAllProofOfPurchaseKeys", + "returntype": "void" +} +,{ + "classname": "ISteamApps", + "methodname": "GetFileDetails", "callresult": "FileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pszFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pubData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "eP2PSendType" ,"paramtype": "EP2PSend"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsP2PPacketAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "ReadP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "psteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AcceptP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PChannelWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetP2PSessionState", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pConnectionState" ,"paramtype": "struct P2PSessionState_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AllowP2PPacketRelay", + "returntype": "bool", + "params": [ +{ "paramname": "bAllow" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateListenSocket", + "returntype": "SNetListenSocket_t", + "params": [ +{ "paramname": "nVirtualP2PPort" ,"paramtype": "int"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateP2PConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "steamIDTarget" ,"paramtype": "class CSteamID"}, +{ "paramname": "nVirtualPort" ,"paramtype": "int"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroySocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroyListenSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendDataOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "bReliable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailableOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveDataFromSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveData", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pSteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "peSocketStatus" ,"paramtype": "int *"}, +{ "paramname": "punIPRemote" ,"paramtype": "uint32 *"}, +{ "paramname": "punPortRemote" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetListenSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketConnectionType", + "returntype": "ESNetSocketConnectionType", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetMaxPacketSize", + "returntype": "int", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "WriteScreenshot", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pubRGB" ,"paramtype": "void *"}, +{ "paramname": "cubRGB" ,"paramtype": "uint32"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchThumbnailFilename" ,"paramtype": "const char *"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TriggerScreenshot", + "returntype": "void" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "HookScreenshots", + "returntype": "void", + "params": [ +{ "paramname": "bHook" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "SetLocation", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagUser", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagPublishedFile", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "unPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "IsScreenshotsHooked", + "returntype": "bool" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddVRScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "eType" ,"paramtype": "EVRScreenshotType"}, +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsPlaying", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "GetPlaybackStatus", + "returntype": "AudioPlayback_Status" +} +,{ + "classname": "ISteamMusic", + "methodname": "Play", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "Pause", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayPrevious", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayNext", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "SetVolume", + "returntype": "void", + "params": [ +{ "paramname": "flVolume" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "GetVolume", + "returntype": "float" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "RegisterSteamMusicRemote", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "DeregisterSteamMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BIsCurrentMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BActivationSuccess", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetDisplayName", + "returntype": "bool", + "params": [ +{ "paramname": "pchDisplayName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPNGIcon_64x64", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayPrevious", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayNext", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableQueue", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlaylists", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdatePlaybackStatus", + "returntype": "bool", + "params": [ +{ "paramname": "nStatus" ,"paramtype": "AudioPlayback_Status"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateVolume", + "returntype": "bool", + "params": [ +{ "paramname": "flValue" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryIsAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "bAvailable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryText", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryElapsedSeconds", + "returntype": "bool", + "params": [ +{ "paramname": "nValue" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryCoverArt", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetQueueEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetPlaylistEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateHTTPRequest", + "returntype": "HTTPRequestHandle", + "params": [ +{ "paramname": "eHTTPRequestMethod" ,"paramtype": "EHTTPMethod"}, +{ "paramname": "pchAbsoluteURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestContextValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "ulContextValue" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestNetworkActivityTimeout", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unTimeoutSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pchHeaderValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestGetOrPostParameter", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchParamName" ,"paramtype": "const char *"}, +{ "paramname": "pchParamValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequestAndStreamResponse", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "DeferHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "PrioritizeHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderSize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "unResponseHeaderSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pHeaderValueBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodySize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unBodySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPStreamingResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPDownloadProgressPct", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pflPercentOut" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRawPostBody", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchContentType" ,"paramtype": "const char *"}, +{ "paramname": "pubBody" ,"paramtype": "uint8 *"}, +{ "paramname": "unBodyLen" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateCookieContainer", + "returntype": "HTTPCookieContainerHandle", + "params": [ +{ "paramname": "bAllowResponsesToModify" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetCookie", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"}, +{ "paramname": "pchHost" ,"paramtype": "const char *"}, +{ "paramname": "pchUrl" ,"paramtype": "const char *"}, +{ "paramname": "pchCookie" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestUserAgentInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchUserAgentInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRequiresVerifiedCertificate", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "bRequireVerifiedCertificate" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestAbsoluteTimeoutMS", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unMilliseconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPRequestWasTimedOut", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pbWasTimedOut" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendMethod", + "returntype": "ClientUnifiedMessageHandle", + "params": [ +{ "paramname": "pchServiceMethod" ,"paramtype": "const char *"}, +{ "paramname": "pRequestBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unRequestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "unContext" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "punResponseSize" ,"paramtype": "uint32 *"}, +{ "paramname": "peResult" ,"paramtype": "EResult *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseData", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "pResponseBuffer" ,"paramtype": "void *"}, +{ "paramname": "unResponseBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bAutoRelease" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "ReleaseMethod", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendNotification", + "returntype": "bool", + "params": [ +{ "paramname": "pchServiceNotification" ,"paramtype": "const char *"}, +{ "paramname": "pNotificationBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unNotificationBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "RunFrame", + "returntype": "void" +} +,{ + "classname": "ISteamController", + "methodname": "GetConnectedControllers", + "returntype": "int", + "params": [ +{ "paramname": "handlesOut" ,"paramtype": "ControllerHandle_t *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowBindingPanel", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetActionSetHandle", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "pszActionSetName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ActivateActionSet", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetCurrentActionSet", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionHandle", + "returntype": "ControllerDigitalActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionData", + "returntype": "struct ControllerDigitalActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionHandle", + "returntype": "ControllerAnalogActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionData", + "returntype": "struct ControllerAnalogActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "StopAnalogActionMomentum", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eAction" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerRepeatedHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "usOffMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "unRepeat" ,"paramtype": "unsigned short"}, +{ "paramname": "nFlags" ,"paramtype": "unsigned int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetGamepadIndexForController", + "returntype": "int", + "params": [ +{ "paramname": "ulControllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetControllerForGamepadIndex", + "returntype": "ControllerHandle_t", + "params": [ +{ "paramname": "nIndex" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetMotionData", + "returntype": "struct ControllerMotionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowDigitalActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowAnalogActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUserUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "unAccountID" ,"paramtype": "AccountID_t"}, +{ "paramname": "eListType" ,"paramtype": "EUserUGCList"}, +{ "paramname": "eMatchingUGCType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "eSortOrder" ,"paramtype": "EUserUGCListSortOrder"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryAllUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "eQueryType" ,"paramtype": "EUGCQuery"}, +{ "paramname": "eMatchingeMatchingUGCTypeFileType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUGCDetailsRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SendQueryUGCRequest", "callresult": "SteamUGCQueryCompleted_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCResult", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pDetails" ,"paramtype": "struct SteamUGCDetails_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCPreviewURL", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchURL" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchMetadata" ,"out_string_count": "cchMetadatasize" ,"paramtype": "char *"}, +{ "paramname": "cchMetadatasize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCStatistic", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "eStatType" ,"paramtype": "EItemStatistic"}, +{ "paramname": "pStatValue" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumAdditionalPreviews", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCAdditionalPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "previewIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchURLOrVideoID" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"}, +{ "paramname": "pchOriginalFileName" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchOriginalFileNameSize" ,"paramtype": "uint32"}, +{ "paramname": "pPreviewType" ,"paramtype": "EItemPreviewType *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumKeyValueTags", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "keyValueTagIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchKey" ,"out_string_count": "cchKeySize" ,"paramtype": "char *"}, +{ "paramname": "cchKeySize" ,"paramtype": "uint32"}, +{ "paramname": "pchValue" ,"out_string_count": "cchValueSize" ,"paramtype": "char *"}, +{ "paramname": "cchValueSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "ReleaseQueryUGCRequest", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddExcludedTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnOnlyIDs", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnOnlyIDs" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnKeyValueTags" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnLongDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnLongDescription" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnMetadata" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnChildren" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnAdditionalPreviews", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnAdditionalPreviews" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnTotalOnly", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnTotalOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetAllowCachedResponse", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetCloudFileNameFilter", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pMatchCloudFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetMatchAnyTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bMatchAnyTag" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetSearchText", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pSearchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetRankedByTrendDays", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unDays" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RequestUGCDetails", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateItem", "callresult": "CreateItemResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "eFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartItemUpdate", + "returntype": "UGCUpdateHandle_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTitle", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemUpdateLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchMetaData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "const struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemContent", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszContentFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "type" ,"paramtype": "EItemPreviewType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubmitItemUpdate", "callresult": "SubmitItemUpdateResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchChangeNote" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemUpdateProgress", + "returntype": "EItemUpdateStatus", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "punBytesProcessed" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetUserItemVote", "callresult": "SetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetUserItemVote", "callresult": "GetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemToFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemFromFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubscribeItem", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UnsubscribeItem", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetNumSubscribedItems", + "returntype": "uint32" +} +,{ + "classname": "ISteamUGC", + "methodname": "GetSubscribedItems", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemState", + "returntype": "uint32", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemInstallInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punSizeOnDisk" ,"paramtype": "uint64 *"}, +{ "paramname": "pchFolder" ,"out_string_count": "cchFolderSize" ,"paramtype": "char *"}, +{ "paramname": "cchFolderSize" ,"paramtype": "uint32"}, +{ "paramname": "punTimeStamp" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemDownloadInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "DownloadItem", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bHighPriority" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "BInitWorkshopForGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unWorkshopDepotID" ,"paramtype": "DepotId_t"}, +{ "paramname": "pszFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SuspendDownloads", + "returntype": "void", + "params": [ +{ "paramname": "bSuspend" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTrackingForAllItems", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetNumInstalledApps", + "returntype": "uint32" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetInstalledApps", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "unMaxAppIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppName", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppInstallDir", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchDirectory" ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppBuildId", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "DestructISteamHTMLSurface", + "returntype": "void" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CreateBrowser", "callresult": "HTML_BrowserReady_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchUserAgent" ,"paramtype": "const char *"}, +{ "paramname": "pchUserCSS" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "RemoveBrowser", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "LoadURL", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchURL" ,"paramtype": "const char *"}, +{ "paramname": "pchPostData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetSize", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "unWidth" ,"paramtype": "uint32"}, +{ "paramname": "unHeight" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopLoad", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Reload", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoBack", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoForward", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AddHeader", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ExecuteJavascript", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchScript" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDoubleClick", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseMove", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseWheel", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nDelta" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyChar", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "cUnicodeChar" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetHorizontalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetVerticalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetKeyFocus", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bHasKeyFocus" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ViewSource", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CopyToClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "PasteFromClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Find", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchSearchStr" ,"paramtype": "const char *"}, +{ "paramname": "bCurrentlyInFind" ,"paramtype": "bool"}, +{ "paramname": "bReverse" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopFind", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GetLinkAtPosition", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetCookie", + "returntype": "void", + "params": [ +{ "paramname": "pchHostname" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"}, +{ "paramname": "pchPath" ,"paramtype": "const char *"}, +{ "paramname": "nExpires" ,"paramtype": "RTime32"}, +{ "paramname": "bSecure" ,"paramtype": "bool"}, +{ "paramname": "bHTTPOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetPageScaleFactor", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "flZoom" ,"paramtype": "float"}, +{ "paramname": "nPointX" ,"paramtype": "int"}, +{ "paramname": "nPointY" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetBackgroundMode", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bBackgroundMode" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AllowStartRequest", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bAllowed" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "JSDialogResponse", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bResult" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultStatus", "desc": "Find out the status of an asynchronous inventory result handle.", + "returntype": "EResult", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultItems", "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutItemsArray" ,"out_array_count": "punOutItemsArraySize" ,"desc": "Output array" ,"paramtype": "struct SteamItemDetails_t *"}, +{ "paramname": "punOutItemsArraySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultTimestamp", "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", + "returntype": "uint32", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "CheckResultSteamID", "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "steamIDExpected" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DestroyResult", "desc": "Destroys a result handle and frees all associated memory.", + "returntype": "void", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetAllItems", "desc": "Captures the entire state of the current users Steam inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemsByID", "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pInstanceIDs" ,"array_count": "unCountInstanceIDs" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "unCountInstanceIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SerializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutBuffer" ,"out_buffer_count": "punOutBufferSize" ,"paramtype": "void *"}, +{ "paramname": "punOutBufferSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DeserializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "pOutResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pBuffer" ,"buffer_count": "punOutBufferSize" ,"paramtype": "const void *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bRESERVED_MUST_BE_FALSE" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GenerateItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayQuantity" ,"array_count": "unArrayLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GrantPromoItems", "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItem", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemDef" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ConsumeItem", "desc": "ConsumeItem() removes items from the inventory permanently.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemConsume" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ExchangeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayGenerate" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayGenerateQuantity" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayGenerateLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayDestroy" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "punArrayDestroyQuantity" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayDestroyLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TransferItemQuantity", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemIdSource" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"}, +{ "paramname": "itemIdDest" ,"paramtype": "SteamItemInstanceID_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SendItemDropHeartbeat", "desc": "Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.", + "returntype": "void" +} +,{ + "classname": "ISteamInventory", + "methodname": "TriggerItemDrop", "desc": "Playtime credit must be consumed and turned into item drops by your game.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "dropListDefinition" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TradeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "steamIDTradePartner" ,"paramtype": "class CSteamID"}, +{ "paramname": "pArrayGive" ,"array_count": "nArrayGiveLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGiveQuantity" ,"array_count": "nArrayGiveLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGiveLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayGet" ,"array_count": "nArrayGetLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGetQuantity" ,"array_count": "nArrayGetLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGetLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "LoadItemDefinitions", "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", + "returntype": "bool" +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionIDs", + "returntype": "bool", + "params": [ +{ "paramname": "pItemDefIDs" ,"out_array_count": "punItemDefIDsArraySize" ,"desc": "List of item definition IDs" ,"paramtype": "SteamItemDef_t *"}, +{ "paramname": "punItemDefIDsArraySize" ,"desc": "Size of array is passed in and actual size used is returned in this param" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionProperty", + "returntype": "bool", + "params": [ +{ "paramname": "iDefinition" ,"paramtype": "SteamItemDef_t"}, +{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, +{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, +{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "GetVideoURL", + "returntype": "void", + "params": [ +{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "IsBroadcasting", + "returntype": "bool", + "params": [ +{ "paramname": "pnNumViewers" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "InitGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usGamePort" ,"paramtype": "uint16"}, +{ "paramname": "usQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "nGameAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchVersionString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetProduct", + "returntype": "void", + "params": [ +{ "paramname": "pszProduct" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameDescription", + "returntype": "void", + "params": [ +{ "paramname": "pszGameDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetModDir", + "returntype": "void", + "params": [ +{ "paramname": "pszModDir" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetDedicatedServer", + "returntype": "void", + "params": [ +{ "paramname": "bDedicated" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOn", + "returntype": "void", + "params": [ +{ "paramname": "pszToken" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOnAnonymous", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOff", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BSecure", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "WasRestartRequested", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMaxPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cPlayersMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetBotPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cBotplayers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMapName", + "returntype": "void", + "params": [ +{ "paramname": "pszMapName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetPasswordProtected", + "returntype": "void", + "params": [ +{ "paramname": "bPasswordProtected" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorPort", + "returntype": "void", + "params": [ +{ "paramname": "unSpectatorPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszSpectatorServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ClearAllKeyValues", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetKeyValue", + "returntype": "void", + "params": [ +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameTags", + "returntype": "void", + "params": [ +{ "paramname": "pchGameTags" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameData", + "returntype": "void", + "params": [ +{ "paramname": "pchGameData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetRegion", + "returntype": "void", + "params": [ +{ "paramname": "pszRegion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserConnectAndAuthenticate", + "returntype": "bool", + "params": [ +{ "paramname": "unIPClient" ,"paramtype": "uint32"}, +{ "paramname": "pvAuthBlob" ,"paramtype": "const void *"}, +{ "paramname": "cubAuthBlobSize" ,"paramtype": "uint32"}, +{ "paramname": "pSteamIDUser" ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CreateUnauthenticatedUserConnection", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserDisconnect", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BUpdateUserData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchPlayerName" ,"paramtype": "const char *"}, +{ "paramname": "uScore" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "RequestUserGroupStatus", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDGroup" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetGameplayStats", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetServerReputation", "callresult": "GSReputation_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetPublicIP", + "returntype": "uint32" +} +,{ + "classname": "ISteamGameServer", + "methodname": "HandleIncomingPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pData" ,"paramtype": "const void *"}, +{ "paramname": "cbData" ,"paramtype": "int"}, +{ "paramname": "srcIP" ,"paramtype": "uint32"}, +{ "paramname": "srcPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetNextOutgoingPacket", + "returntype": "int", + "params": [ +{ "paramname": "pOut" ,"paramtype": "void *"}, +{ "paramname": "cbMaxOut" ,"paramtype": "int"}, +{ "paramname": "pNetAdr" ,"paramtype": "uint32 *"}, +{ "paramname": "pPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EnableHeartbeats", + "returntype": "void", + "params": [ +{ "paramname": "bActive" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetHeartbeatInterval", + "returntype": "void", + "params": [ +{ "paramname": "iHeartbeatInterval" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ForceHeartbeat", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "AssociateWithClan", "callresult": "AssociateWithClanResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ComputeNewPlayerCompatibility", "callresult": "ComputeNewPlayerCompatibilityResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDNewPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "RequestUserStats", "callresult": "GSStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "UpdateUserAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "ClearUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "StoreUserStats", "callresult": "GSStatsStored_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +] +} \ No newline at end of file diff --git a/lib/windows32/include/steam/steam_api_flat.h b/lib/windows32/include/steam/steam_api_flat.h new file mode 100644 index 0000000..e77e4cb --- /dev/null +++ b/lib/windows32/include/steam/steam_api_flat.h @@ -0,0 +1,802 @@ +//====== Copyright (c) 1996-2014, Valve Corporation, All rights reserved. ======= +// +// Purpose: Header for flatted SteamAPI. Use this for binding to other languages. +// This file is auto-generated, do not edit it. +// +//============================================================================= + +#ifndef STEAMAPIFLAT_H +#define STEAMAPIFLAT_H +#ifdef _WIN32 +#pragma once +#endif + +#include <stdint.h> + + +typedef unsigned char uint8; +typedef unsigned char uint8; +typedef signed char int8; +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; +typedef int64 lint64; +typedef uint64 ulint64; +typedef uint8 Salt_t[8]; +typedef uint64 GID_t; +typedef uint64 JobID_t; +typedef GID_t TxnID_t; +typedef uint32 PackageId_t; +typedef uint32 BundleId_t; +typedef uint32 AppId_t; +typedef uint64 AssetClassId_t; +typedef uint32 PhysicalItemId_t; +typedef uint32 DepotId_t; +typedef uint32 RTime32; +typedef uint32 CellID_t; +typedef uint64 SteamAPICall_t; +typedef uint32 AccountID_t; +typedef uint32 PartnerId_t; +typedef uint64 ManifestId_t; +typedef uint32 HAuthTicket; +typedef void * BREAKPAD_HANDLE; +typedef char compile_time_assert_type[1]; +typedef int32 HSteamPipe; +typedef int32 HSteamUser; +typedef int16 FriendsGroupID_t; +typedef void * HServerListRequest; +typedef int HServerQuery; +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +typedef uint64 UGCFileWriteStreamHandle_t; +typedef char compile_time_assert_type[1]; +typedef uint64 SteamLeaderboard_t; +typedef uint64 SteamLeaderboardEntries_t; +typedef uint32 SNetSocket_t; +typedef uint32 SNetListenSocket_t; +typedef uint32 ScreenshotHandle; +typedef uint32 HTTPRequestHandle; +typedef uint32 HTTPCookieContainerHandle; +typedef uint64 ClientUnifiedMessageHandle; +typedef uint64 ControllerHandle_t; +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; +typedef uint32 HHTMLBrowser; +typedef uint64 SteamItemInstanceID_t; +typedef int32 SteamItemDef_t; +typedef int32 SteamInventoryResult_t; +// OpenVR Constants +int const_k_iSteamUserCallbacks = 100; +int const_k_iSteamGameServerCallbacks = 200; +int const_k_iSteamFriendsCallbacks = 300; +int const_k_iSteamBillingCallbacks = 400; +int const_k_iSteamMatchmakingCallbacks = 500; +int const_k_iSteamContentServerCallbacks = 600; +int const_k_iSteamUtilsCallbacks = 700; +int const_k_iClientFriendsCallbacks = 800; +int const_k_iClientUserCallbacks = 900; +int const_k_iSteamAppsCallbacks = 1000; +int const_k_iSteamUserStatsCallbacks = 1100; +int const_k_iSteamNetworkingCallbacks = 1200; +int const_k_iClientRemoteStorageCallbacks = 1300; +int const_k_iClientDepotBuilderCallbacks = 1400; +int const_k_iSteamGameServerItemsCallbacks = 1500; +int const_k_iClientUtilsCallbacks = 1600; +int const_k_iSteamGameCoordinatorCallbacks = 1700; +int const_k_iSteamGameServerStatsCallbacks = 1800; +int const_k_iSteam2AsyncCallbacks = 1900; +int const_k_iSteamGameStatsCallbacks = 2000; +int const_k_iClientHTTPCallbacks = 2100; +int const_k_iClientScreenshotsCallbacks = 2200; +int const_k_iSteamScreenshotsCallbacks = 2300; +int const_k_iClientAudioCallbacks = 2400; +int const_k_iClientUnifiedMessagesCallbacks = 2500; +int const_k_iSteamStreamLauncherCallbacks = 2600; +int const_k_iClientControllerCallbacks = 2700; +int const_k_iSteamControllerCallbacks = 2800; +int const_k_iClientParentalSettingsCallbacks = 2900; +int const_k_iClientDeviceAuthCallbacks = 3000; +int const_k_iClientNetworkDeviceManagerCallbacks = 3100; +int const_k_iClientMusicCallbacks = 3200; +int const_k_iClientRemoteClientManagerCallbacks = 3300; +int const_k_iClientUGCCallbacks = 3400; +int const_k_iSteamStreamClientCallbacks = 3500; +int const_k_IClientProductBuilderCallbacks = 3600; +int const_k_iClientShortcutsCallbacks = 3700; +int const_k_iClientRemoteControlManagerCallbacks = 3800; +int const_k_iSteamAppListCallbacks = 3900; +int const_k_iSteamMusicCallbacks = 4000; +int const_k_iSteamMusicRemoteCallbacks = 4100; +int const_k_iClientVRCallbacks = 4200; +int const_k_iClientGameNotificationCallbacks = 4300; +int const_k_iSteamGameNotificationCallbacks = 4400; +int const_k_iSteamHTMLSurfaceCallbacks = 4500; +int const_k_iClientVideoCallbacks = 4600; +int const_k_iClientInventoryCallbacks = 4700; +int const_k_iClientBluetoothManagerCallbacks = 4800; +int const_k_cchPersonaNameMax = 128; +int const_k_cwchPersonaNameMax = 32; +int const_k_cchMaxRichPresenceKeys = 20; +int const_k_cchMaxRichPresenceKeyLength = 64; +int const_k_cchMaxRichPresenceValueLength = 256; +int const_k_cchStatNameMax = 128; +int const_k_cchLeaderboardNameMax = 128; +int const_k_cLeaderboardDetailsMax = 64; +unsigned long const_k_InvalidUnifiedMessageHandle = 0; +unsigned long const_k_SteamItemInstanceIDInvalid = 0xffffffff; +int const_k_SteamInventoryResultInvalid = -1; + + + +// OpenVR Enums +// OpenVR Structs + + + +S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser(intptr_t instancePtr, HSteamPipe * phSteamPipe, EAccountType eAccountType); +S_API void SteamAPI_ISteamClient_ReleaseUser(intptr_t instancePtr, HSteamPipe hSteamPipe, HSteamUser hUser); +S_API class ISteamUser * SteamAPI_ISteamClient_GetISteamUser(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void SteamAPI_ISteamClient_SetLocalIPBinding(intptr_t instancePtr, uint32 unIP, uint16 usPort); +S_API class ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils(intptr_t instancePtr, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamApps * SteamAPI_ISteamClient_GetISteamApps(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamClient_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(intptr_t instancePtr); +S_API class ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUnifiedMessages * SteamAPI_ISteamClient_GetISteamUnifiedMessages(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamController * SteamAPI_ISteamClient_GetISteamController(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BLoggedOn(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamUser_GetSteamID(intptr_t instancePtr); +S_API int SteamAPI_ISteamUser_InitiateGameConnection(intptr_t instancePtr, void * pAuthBlob, int cbMaxAuthBlob, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure); +S_API void SteamAPI_ISteamUser_TerminateGameConnection(intptr_t instancePtr, uint32 unIPServer, uint16 usPortServer); +S_API void SteamAPI_ISteamUser_TrackAppUsageEvent(intptr_t instancePtr, class CGameID gameID, int eAppUsageEvent, const char * pchExtraInfo); +S_API bool SteamAPI_ISteamUser_GetUserDataFolder(intptr_t instancePtr, char * pchBuffer, int cubBuffer); +S_API void SteamAPI_ISteamUser_StartVoiceRecording(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_StopVoiceRecording(intptr_t instancePtr); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed, void * pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 * nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice(intptr_t instancePtr, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate); +S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(intptr_t instancePtr); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamUser_BIsBehindNAT(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_AdvertiseGame(intptr_t instancePtr, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket(intptr_t instancePtr, void * pDataToInclude, int cbDataToInclude); +S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API int SteamAPI_ISteamUser_GetGameBadgeLevel(intptr_t instancePtr, int nSeries, bool bFoil); +S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL(intptr_t instancePtr, const char * pchRedirectURL); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetPersonaName(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName(intptr_t instancePtr, const char * pchPersonaName); +S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState(intptr_t instancePtr); +S_API int SteamAPI_ISteamFriends_GetFriendCount(intptr_t instancePtr, int iFriendFlags); +S_API uint64 SteamAPI_ISteamFriends_GetFriendByIndex(intptr_t instancePtr, int iFriend, int iFriendFlags); +S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed(intptr_t instancePtr, class CSteamID steamIDFriend, struct FriendGameInfo_t * pFriendGameInfo); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(intptr_t instancePtr, class CSteamID steamIDFriend, int iPersonaName); +S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname(intptr_t instancePtr, class CSteamID steamIDPlayer); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount(intptr_t instancePtr); +S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(intptr_t instancePtr, int iFG); +S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(intptr_t instancePtr, FriendsGroupID_t friendsGroupID, class CSteamID * pOutSteamIDMembers, int nMembersCount); +S_API bool SteamAPI_ISteamFriends_HasFriend(intptr_t instancePtr, class CSteamID steamIDFriend, int iFriendFlags); +S_API int SteamAPI_ISteamFriends_GetClanCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetClanByIndex(intptr_t instancePtr, int iClan); +S_API const char * SteamAPI_ISteamFriends_GetClanName(intptr_t instancePtr, class CSteamID steamIDClan); +S_API const char * SteamAPI_ISteamFriends_GetClanTag(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts(intptr_t instancePtr, class CSteamID steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting); +S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts(intptr_t instancePtr, class CSteamID * psteamIDClans, int cClansToRequest); +S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource(intptr_t instancePtr, class CSteamID steamIDSource); +S_API uint64 SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(intptr_t instancePtr, class CSteamID steamIDSource, int iFriend); +S_API bool SteamAPI_ISteamFriends_IsUserInSource(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDSource); +S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(intptr_t instancePtr, class CSteamID steamIDUser, bool bSpeaking); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlay(intptr_t instancePtr, const char * pchDialog); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(intptr_t instancePtr, const char * pchDialog, class CSteamID steamID); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(intptr_t instancePtr, const char * pchURL); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(intptr_t instancePtr, AppId_t nAppID, EOverlayToStoreFlag eFlag); +S_API void SteamAPI_ISteamFriends_SetPlayedWith(intptr_t instancePtr, class CSteamID steamIDUserPlayedWith); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_RequestUserInformation(intptr_t instancePtr, class CSteamID steamIDUser, bool bRequireNameOnly); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOwner(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanOfficerCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOfficerByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iOfficer); +S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamFriends_SetRichPresence(intptr_t instancePtr, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamFriends_ClearRichPresence(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchKey); +S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(intptr_t instancePtr, class CSteamID steamIDFriend, int iKey); +S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_InviteUserToGame(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchConnectString); +S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetCoplayFriend(intptr_t instancePtr, int iCoplayFriend); +S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetChatMemberByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iUser); +S_API bool SteamAPI_ISteamFriends_SendClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, const char * pchText); +S_API int SteamAPI_ISteamFriends_GetClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, class CSteamID * psteamidChatter); +S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin(intptr_t instancePtr, class CSteamID steamIDClanChat, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(intptr_t instancePtr, bool bInterceptEnabled); +S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchMsgToSend); +S_API int SteamAPI_ISteamFriends_GetFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList(intptr_t instancePtr, uint32 unStartIndex); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(intptr_t instancePtr); +S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUtils_GetIPCountry(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetImageSize(intptr_t instancePtr, int iImage, uint32 * pnWidth, uint32 * pnHeight); +S_API bool SteamAPI_ISteamUtils_GetImageRGBA(intptr_t instancePtr, int iImage, uint8 * pubDest, int nDestBufferSize); +S_API bool SteamAPI_ISteamUtils_GetCSERIPPort(intptr_t instancePtr, uint32 * unIP, uint16 * usPort); +S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetAppID(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(intptr_t instancePtr, ENotificationPosition eNotificationPosition); +S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, bool * pbFailed); +S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason(intptr_t instancePtr, SteamAPICall_t hSteamAPICall); +S_API bool SteamAPI_ISteamUtils_GetAPICallResult(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed); +S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature(intptr_t instancePtr, const char * szFileName); +S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput(intptr_t instancePtr, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText); +S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(intptr_t instancePtr, char * pchText, uint32 cchText); +S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); +S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); +S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); +S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(intptr_t instancePtr, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToBeCloseTo); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(intptr_t instancePtr, int nSlotsAvailable); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(intptr_t instancePtr, ELobbyDistanceFilter eLobbyDistanceFilter); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(intptr_t instancePtr, int cMaxResults); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyByIndex(intptr_t instancePtr, int iLobby); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby(intptr_t instancePtr, ELobbyType eLobbyType, int cMaxMembers); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_LeaveLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDInvitee); +S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iMember); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize); +S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDUser, const char * pchKey); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(intptr_t instancePtr, class CSteamID steamIDLobby, const void * pvMsgBody, int cubMsgBody); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(intptr_t instancePtr, class CSteamID steamIDLobby, int iChatID, class CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, class CSteamID steamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, class CSteamID * psteamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby, int cMaxMembers); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType(intptr_t instancePtr, class CSteamID steamIDLobby, ELobbyType eLobbyType); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(intptr_t instancePtr, class CSteamID steamIDLobby, bool bLobbyJoinable); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDNewOwner); +S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDLobbyDependent); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(intptr_t instancePtr, HServerListRequest hRequest, EMatchMakingServerResponse response); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(intptr_t instancePtr, class gameserveritem_t & server); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(intptr_t instancePtr, const char * pchName, int nScore, float flTimePlayed); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(intptr_t instancePtr, const char * pchRule, const char * pchValue); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(intptr_t instancePtr); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList(intptr_t instancePtr, AppId_t iApp, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(intptr_t instancePtr, HServerListRequest hServerListRequest); +S_API class gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(intptr_t instancePtr, HServerListRequest hRequest); +S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPingResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPlayersResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingRulesResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(intptr_t instancePtr, HServerQuery hServerQuery); +S_API bool SteamAPI_ISteamRemoteStorage_FileWrite(intptr_t instancePtr, const char * pchFile, const void * pvData, int32 cubData); +S_API int32 SteamAPI_ISteamRemoteStorage_FileRead(intptr_t instancePtr, const char * pchFile, void * pvData, int32 cubDataToRead); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync(intptr_t instancePtr, const char * pchFile, const void * pvData, uint32 cubData); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync(intptr_t instancePtr, const char * pchFile, uint32 nOffset, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(intptr_t instancePtr, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileForget(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileDelete(intptr_t instancePtr, const char * pchFile); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(intptr_t instancePtr, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform); +S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileExists(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize(intptr_t instancePtr, const char * pchFile); +S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp(intptr_t instancePtr, const char * pchFile); +S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(intptr_t instancePtr, int iFile, int32 * pnFileSizeInBytes); +S_API bool SteamAPI_ISteamRemoteStorage_GetQuota(intptr_t instancePtr, uint64 * pnTotalBytes, uint64 * puAvailableBytes); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(intptr_t instancePtr); +S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(intptr_t instancePtr, bool bEnabled); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload(intptr_t instancePtr, UGCHandle_t hContent, uint32 unPriority); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(intptr_t instancePtr, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(intptr_t instancePtr, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, class CSteamID * pSteamIDOwner); +S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead(intptr_t instancePtr, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction); +S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(intptr_t instancePtr); +S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(intptr_t instancePtr, int32 iCachedContent); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(intptr_t instancePtr, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType); +S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(intptr_t instancePtr, class CSteamID steamId, uint32 unStartIndex, struct SteamParamStringArray_t * pRequiredTags, struct SteamParamStringArray_t * pExcludedTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo(intptr_t instancePtr, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(intptr_t instancePtr, EWorkshopFileAction eAction, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(intptr_t instancePtr, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, struct SteamParamStringArray_t * pTags, struct SteamParamStringArray_t * pUserTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(intptr_t instancePtr, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority); +S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUserStats_GetStat(intptr_t instancePtr, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetStat0(intptr_t instancePtr, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_SetStat(intptr_t instancePtr, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamUserStats_SetStat0(intptr_t instancePtr, const char * pchName, float fData); +S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(intptr_t instancePtr, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamUserStats_GetAchievement(intptr_t instancePtr, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_SetAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_ClearAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(intptr_t instancePtr, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_StoreStats(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetAchievementIcon(intptr_t instancePtr, const char * pchName); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(intptr_t instancePtr, const char * pchName, const char * pchKey); +S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(intptr_t instancePtr, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress); +S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementName(intptr_t instancePtr, uint32 iAchievement); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamUserStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_ResetAllStats(intptr_t instancePtr, bool bAchievementsToo); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName); +S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, class CSteamID * prgUsers, int cUsers); +S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(intptr_t instancePtr, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, struct LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(intptr_t instancePtr, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(intptr_t instancePtr, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(intptr_t instancePtr, const char * pchName, float * pflPercent); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats(intptr_t instancePtr, int nHistoryDays); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat(intptr_t instancePtr, const char * pchStatName, int64 * pData); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat0(intptr_t instancePtr, const char * pchStatName, double * pData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory(intptr_t instancePtr, const char * pchStatName, int64 * pData, uint32 cubData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory0(intptr_t instancePtr, const char * pchStatName, double * pData, uint32 cubData); +S_API bool SteamAPI_ISteamApps_BIsSubscribed(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsLowViolence(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsCybercafe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsVACBanned(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsSubscribedApp(intptr_t instancePtr, AppId_t appID); +S_API bool SteamAPI_ISteamApps_BIsDlcInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(intptr_t instancePtr); +S_API int SteamAPI_ISteamApps_GetDLCCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex(intptr_t instancePtr, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize); +S_API void SteamAPI_ISteamApps_InstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_UninstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_GetCurrentBetaName(intptr_t instancePtr, char * pchName, int cchNameBufferSize); +S_API bool SteamAPI_ISteamApps_MarkContentCorrupt(intptr_t instancePtr, bool bMissingFilesOnly); +S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots(intptr_t instancePtr, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots); +S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir(intptr_t instancePtr, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize); +S_API bool SteamAPI_ISteamApps_BIsAppInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint64 SteamAPI_ISteamApps_GetAppOwner(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam(intptr_t instancePtr, const char * pchKey); +S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress(intptr_t instancePtr, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API int SteamAPI_ISteamApps_GetAppBuildId(intptr_t instancePtr); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails(intptr_t instancePtr, const char * pszFileName); +S_API bool SteamAPI_ISteamNetworking_SendP2PPacket(intptr_t instancePtr, class CSteamID steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel); +S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(intptr_t instancePtr, uint32 * pcubMsgSize, int nChannel); +S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket(intptr_t instancePtr, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, class CSteamID * psteamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(intptr_t instancePtr, class CSteamID steamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState(intptr_t instancePtr, class CSteamID steamIDRemote, struct P2PSessionState_t * pConnectionState); +S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(intptr_t instancePtr, bool bAllow); +S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket(intptr_t instancePtr, int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(intptr_t instancePtr, class CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket(intptr_t instancePtr, uint32 nIP, uint16 nPort, int nTimeoutSec); +S_API bool SteamAPI_ISteamNetworking_DestroySocket(intptr_t instancePtr, SNetSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket(intptr_t instancePtr, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailable(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_RetrieveData(intptr_t instancePtr, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_GetSocketInfo(intptr_t instancePtr, SNetSocket_t hSocket, class CSteamID * pSteamIDRemote, int * peSocketStatus, uint32 * punIPRemote, uint16 * punPortRemote); +S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pnIP, uint16 * pnPort); +S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType(intptr_t instancePtr, SNetSocket_t hSocket); +S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize(intptr_t instancePtr, SNetSocket_t hSocket); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot(intptr_t instancePtr, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(intptr_t instancePtr, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight); +S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot(intptr_t instancePtr); +S_API void SteamAPI_ISteamScreenshots_HookScreenshots(intptr_t instancePtr, bool bHook); +S_API bool SteamAPI_ISteamScreenshots_SetLocation(intptr_t instancePtr, ScreenshotHandle hScreenshot, const char * pchLocation); +S_API bool SteamAPI_ISteamScreenshots_TagUser(intptr_t instancePtr, ScreenshotHandle hScreenshot, class CSteamID steamID); +S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile(intptr_t instancePtr, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID); +S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(intptr_t instancePtr); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(intptr_t instancePtr, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename); +S_API bool SteamAPI_ISteamMusic_BIsEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusic_BIsPlaying(intptr_t instancePtr); +S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Play(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Pause(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayPrevious(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayNext(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_SetVolume(intptr_t instancePtr, float flVolume); +S_API float SteamAPI_ISteamMusic_GetVolume(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName(intptr_t instancePtr, const char * pchDisplayName); +S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableQueue(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(intptr_t instancePtr, AudioPlayback_Status nStatus); +S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume(intptr_t instancePtr, float flValue); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(intptr_t instancePtr, bool bAvailable); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(intptr_t instancePtr, const char * pchText); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(intptr_t instancePtr, int nValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(intptr_t instancePtr); +S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest(intptr_t instancePtr, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(intptr_t instancePtr, HTTPRequestHandle hRequest, uint64 ulContextValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 * unBodySize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(intptr_t instancePtr, HTTPRequestHandle hRequest, float * pflPercentOut); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen); +S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer(intptr_t instancePtr, bool bAllowResponsesToModify); +S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetCookie(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(intptr_t instancePtr, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchUserAgentInfo); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(intptr_t instancePtr, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unMilliseconds); +S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(intptr_t instancePtr, HTTPRequestHandle hRequest, bool * pbWasTimedOut); +S_API ClientUnifiedMessageHandle SteamAPI_ISteamUnifiedMessages_SendMethod(intptr_t instancePtr, const char * pchServiceMethod, const void * pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, uint32 * punResponseSize, EResult * peResult); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, void * pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease); +S_API bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle); +S_API bool SteamAPI_ISteamUnifiedMessages_SendNotification(intptr_t instancePtr, const char * pchServiceNotification, const void * pNotificationBuffer, uint32 unNotificationBufferSize); +S_API bool SteamAPI_ISteamController_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamController_Shutdown(intptr_t instancePtr); +S_API void SteamAPI_ISteamController_RunFrame(intptr_t instancePtr); +S_API int SteamAPI_ISteamController_GetConnectedControllers(intptr_t instancePtr, ControllerHandle_t * handlesOut); +S_API bool SteamAPI_ISteamController_ShowBindingPanel(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle(intptr_t instancePtr, const char * pszActionSetName); +S_API void SteamAPI_ISteamController_ActivateActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle); +S_API int SteamAPI_ISteamController_GetDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut); +S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle); +S_API int SteamAPI_ISteamController_GetAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut); +S_API void SteamAPI_ISteamController_StopAnalogActionMomentum(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction); +S_API void SteamAPI_ISteamController_TriggerHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec); +S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags); +S_API int SteamAPI_ISteamController_GetGamepadIndexForController(intptr_t instancePtr, ControllerHandle_t ulControllerHandle); +S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex(intptr_t instancePtr, int nIndex); +S_API struct ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API bool SteamAPI_ISteamController_ShowDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition); +S_API bool SteamAPI_ISteamController_ShowAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(intptr_t instancePtr, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(intptr_t instancePtr, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, struct SteamUGCDetails_t * pDetails); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize); +S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_AddRequiredTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_AddExcludedTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnOnlyIDs); +S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnKeyValueTags); +S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnLongDescription); +S_API bool SteamAPI_ISteamUGC_SetReturnMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnMetadata); +S_API bool SteamAPI_ISteamUGC_SetReturnChildren(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnChildren); +S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews); +S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnTotalOnly); +S_API bool SteamAPI_ISteamUGC_SetLanguage(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds); +S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pMatchCloudFileName); +S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag(intptr_t instancePtr, UGCQueryHandle_t handle, bool bMatchAnyTag); +S_API bool SteamAPI_ISteamUGC_SetSearchText(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pSearchText); +S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); +S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pKey, const char * pValue); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds); +S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem(intptr_t instancePtr, AppId_t nConsumerAppId, EWorkshopFileType eFileType); +S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate(intptr_t instancePtr, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_SetItemTitle(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchTitle); +S_API bool SteamAPI_ISteamUGC_SetItemDescription(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchDescription); +S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetItemMetadata(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchMetaData); +S_API bool SteamAPI_ISteamUGC_SetItemVisibility(intptr_t instancePtr, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamUGC_SetItemTags(intptr_t instancePtr, UGCUpdateHandle_t updateHandle, const struct SteamParamStringArray_t * pTags); +S_API bool SteamAPI_ISteamUGC_SetItemContent(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszContentFolder); +S_API bool SteamAPI_ISteamUGC_SetItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey); +S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchChangeNote); +S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress(intptr_t instancePtr, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API uint32 SteamAPI_ISteamUGC_GetItemState(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp); +S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API bool SteamAPI_ISteamUGC_DownloadItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bHighPriority); +S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(intptr_t instancePtr, DepotId_t unWorkshopDepotID, const char * pszFolder); +S_API void SteamAPI_ISteamUGC_SuspendDownloads(intptr_t instancePtr, bool bSuspend); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps(intptr_t instancePtr, AppId_t * pvecAppID, uint32 unMaxAppIDs); +S_API int SteamAPI_ISteamAppList_GetAppName(intptr_t instancePtr, AppId_t nAppID, char * pchName, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppInstallDir(intptr_t instancePtr, AppId_t nAppID, char * pchDirectory, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppBuildId(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Shutdown(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser(intptr_t instancePtr, const char * pchUserAgent, const char * pchUserCSS); +S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_LoadURL(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData); +S_API void SteamAPI_ISteamHTMLSurface_SetSize(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight); +S_API void SteamAPI_ISteamHTMLSurface_StopLoad(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Reload(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoBack(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoForward(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_AddHeader(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchScript); +S_API void SteamAPI_ISteamHTMLSurface_MouseUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseMove(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_MouseWheel(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int32 nDelta); +S_API void SteamAPI_ISteamHTMLSurface_KeyDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyChar(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus); +S_API void SteamAPI_ISteamHTMLSurface_ViewSource(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Find(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse); +S_API void SteamAPI_ISteamHTMLSurface_StopFind(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_SetCookie(intptr_t instancePtr, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly); +S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY); +S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bBackgroundMode); +S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bAllowed); +S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bResult); +S_API EResult SteamAPI_ISteamInventory_GetResultStatus(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetResultItems(intptr_t instancePtr, SteamInventoryResult_t resultHandle, struct SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize); +S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_CheckResultSteamID(intptr_t instancePtr, SteamInventoryResult_t resultHandle, class CSteamID steamIDExpected); +S_API void SteamAPI_ISteamInventory_DestroyResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetAllItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_GetItemsByID(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs); +S_API bool SteamAPI_ISteamInventory_SerializeResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize); +S_API bool SteamAPI_ISteamInventory_DeserializeResult(intptr_t instancePtr, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE); +S_API bool SteamAPI_ISteamInventory_GenerateItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_GrantPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_AddPromoItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef); +S_API bool SteamAPI_ISteamInventory_AddPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_ConsumeItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity); +S_API bool SteamAPI_ISteamInventory_ExchangeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength); +S_API bool SteamAPI_ISteamInventory_TransferItemQuantity(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest); +S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_TriggerItemDrop(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition); +S_API bool SteamAPI_ISteamInventory_TradeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, class CSteamID steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength); +S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(intptr_t instancePtr, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(intptr_t instancePtr, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); +S_API void SteamAPI_ISteamVideo_GetVideoURL(intptr_t instancePtr, AppId_t unVideoAppID); +S_API bool SteamAPI_ISteamVideo_IsBroadcasting(intptr_t instancePtr, int * pnNumViewers); +S_API bool SteamAPI_ISteamGameServer_InitGameServer(intptr_t instancePtr, uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char * pchVersionString); +S_API void SteamAPI_ISteamGameServer_SetProduct(intptr_t instancePtr, const char * pszProduct); +S_API void SteamAPI_ISteamGameServer_SetGameDescription(intptr_t instancePtr, const char * pszGameDescription); +S_API void SteamAPI_ISteamGameServer_SetModDir(intptr_t instancePtr, const char * pszModDir); +S_API void SteamAPI_ISteamGameServer_SetDedicatedServer(intptr_t instancePtr, bool bDedicated); +S_API void SteamAPI_ISteamGameServer_LogOn(intptr_t instancePtr, const char * pszToken); +S_API void SteamAPI_ISteamGameServer_LogOnAnonymous(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_LogOff(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BLoggedOn(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BSecure(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamGameServer_GetSteamID(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_WasRestartRequested(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount(intptr_t instancePtr, int cPlayersMax); +S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount(intptr_t instancePtr, int cBotplayers); +S_API void SteamAPI_ISteamGameServer_SetServerName(intptr_t instancePtr, const char * pszServerName); +S_API void SteamAPI_ISteamGameServer_SetMapName(intptr_t instancePtr, const char * pszMapName); +S_API void SteamAPI_ISteamGameServer_SetPasswordProtected(intptr_t instancePtr, bool bPasswordProtected); +S_API void SteamAPI_ISteamGameServer_SetSpectatorPort(intptr_t instancePtr, uint16 unSpectatorPort); +S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName(intptr_t instancePtr, const char * pszSpectatorServerName); +S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetKeyValue(intptr_t instancePtr, const char * pKey, const char * pValue); +S_API void SteamAPI_ISteamGameServer_SetGameTags(intptr_t instancePtr, const char * pchGameTags); +S_API void SteamAPI_ISteamGameServer_SetGameData(intptr_t instancePtr, const char * pchGameData); +S_API void SteamAPI_ISteamGameServer_SetRegion(intptr_t instancePtr, const char * pszRegion); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(intptr_t instancePtr, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, class CSteamID * pSteamIDUser); +S_API uint64 SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchPlayerName, uint32 uScore); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDGroup); +S_API void SteamAPI_ISteamGameServer_GetGameplayStats(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket(intptr_t instancePtr, const void * pData, int cbData, uint32 srcIP, uint16 srcPort); +S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(intptr_t instancePtr, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort); +S_API void SteamAPI_ISteamGameServer_EnableHeartbeats(intptr_t instancePtr, bool bActive); +S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval(intptr_t instancePtr, int iHeartbeatInterval); +S_API void SteamAPI_ISteamGameServer_ForceHeartbeat(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan(intptr_t instancePtr, class CSteamID steamIDClan); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(intptr_t instancePtr, class CSteamID steamIDNewPlayer); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float fData); +S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +#endif // STEAMAPIFLAT_H + + diff --git a/lib/windows32/include/steam/steam_api_internal.h b/lib/windows32/include/steam/steam_api_internal.h new file mode 100644 index 0000000..ed0423b --- /dev/null +++ b/lib/windows32/include/steam/steam_api_internal.h @@ -0,0 +1,327 @@ +//====== Copyright 1996-2015, Valve Corporation, All rights reserved. ======= +// +// Purpose: Internal private Steamworks API declarations and definitions +// +//============================================================================= + +#ifndef STEAM_API_INTERNAL_H +#define STEAM_API_INTERNAL_H + +S_API HSteamUser SteamAPI_GetHSteamUser(); +S_API void * S_CALLTYPE SteamInternal_ContextInit( void *pContextInitData ); +S_API void * S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); + +#if !defined( STEAM_API_EXPORTS ) + +inline void S_CALLTYPE SteamInternal_OnContextInit( void* p ) +{ + ((CSteamAPIContext*)p)->Clear(); + if ( SteamAPI_GetHSteamPipe() ) + ((CSteamAPIContext*)p)->Init(); +} +inline CSteamAPIContext& SteamInternal_ModuleContext() +{ + // SteamInternal_ContextInit takes a base pointer for the equivalent of + // struct { void (*pFn)(void* pCtx); uintp counter; CSteamAPIContext ctx; } + // Do not change layout of 2 + sizeof... or add non-pointer aligned data! + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* s_CallbackCounterAndContext[ 2 + sizeof(CSteamAPIContext)/sizeof(void*) ] = { (void*)&SteamInternal_OnContextInit, 0 }; + return *(CSteamAPIContext*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); +} + +inline ISteamClient *SteamClient() { return SteamInternal_ModuleContext().SteamClient(); } +inline ISteamUser *SteamUser() { return SteamInternal_ModuleContext().SteamUser(); } +inline ISteamFriends *SteamFriends() { return SteamInternal_ModuleContext().SteamFriends(); } +inline ISteamUtils *SteamUtils() { return SteamInternal_ModuleContext().SteamUtils(); } +inline ISteamMatchmaking *SteamMatchmaking() { return SteamInternal_ModuleContext().SteamMatchmaking(); } +inline ISteamUserStats *SteamUserStats() { return SteamInternal_ModuleContext().SteamUserStats(); } +inline ISteamApps *SteamApps() { return SteamInternal_ModuleContext().SteamApps(); } +inline ISteamMatchmakingServers *SteamMatchmakingServers() { return SteamInternal_ModuleContext().SteamMatchmakingServers(); } +inline ISteamNetworking *SteamNetworking() { return SteamInternal_ModuleContext().SteamNetworking(); } +inline ISteamRemoteStorage *SteamRemoteStorage() { return SteamInternal_ModuleContext().SteamRemoteStorage(); } +inline ISteamScreenshots *SteamScreenshots() { return SteamInternal_ModuleContext().SteamScreenshots(); } +inline ISteamHTTP *SteamHTTP() { return SteamInternal_ModuleContext().SteamHTTP(); } +inline ISteamUnifiedMessages *SteamUnifiedMessages() { return SteamInternal_ModuleContext().SteamUnifiedMessages(); } +inline ISteamController *SteamController() { return SteamInternal_ModuleContext().SteamController(); } +inline ISteamUGC *SteamUGC() { return SteamInternal_ModuleContext().SteamUGC(); } +inline ISteamAppList *SteamAppList() { return SteamInternal_ModuleContext().SteamAppList(); } +inline ISteamMusic *SteamMusic() { return SteamInternal_ModuleContext().SteamMusic(); } +inline ISteamMusicRemote *SteamMusicRemote() { return SteamInternal_ModuleContext().SteamMusicRemote(); } +inline ISteamHTMLSurface *SteamHTMLSurface() { return SteamInternal_ModuleContext().SteamHTMLSurface(); } +inline ISteamInventory *SteamInventory() { return SteamInternal_ModuleContext().SteamInventory(); } +inline ISteamVideo *SteamVideo() { return SteamInternal_ModuleContext().SteamVideo(); } + +#endif // !defined( STEAM_API_EXPORTS ) + + +inline void CSteamAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamUser = NULL; + m_pSteamFriends = NULL; + m_pSteamUtils = NULL; + m_pSteamMatchmaking = NULL; + m_pSteamUserStats = NULL; + m_pSteamApps = NULL; + m_pSteamMatchmakingServers = NULL; + m_pSteamNetworking = NULL; + m_pSteamRemoteStorage = NULL; + m_pSteamHTTP = NULL; + m_pSteamScreenshots = NULL; + m_pSteamMusic = NULL; + m_pSteamUnifiedMessages = NULL; + m_pController = NULL; + m_pSteamUGC = NULL; + m_pSteamAppList = NULL; + m_pSteamMusic = NULL; + m_pSteamMusicRemote = NULL; + m_pSteamHTMLSurface = NULL; + m_pSteamInventory = NULL; +} + + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamAPIContext::Init() +{ + HSteamUser hSteamUser = SteamAPI_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamUser = m_pSteamClient->GetISteamUser( hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION ); + if ( !m_pSteamUser ) + return false; + + m_pSteamFriends = m_pSteamClient->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION ); + if ( !m_pSteamFriends ) + return false; + + m_pSteamUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamUtils ) + return false; + + m_pSteamMatchmaking = m_pSteamClient->GetISteamMatchmaking( hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION ); + if ( !m_pSteamMatchmaking ) + return false; + + m_pSteamMatchmakingServers = m_pSteamClient->GetISteamMatchmakingServers( hSteamUser, hSteamPipe, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); + if ( !m_pSteamMatchmakingServers ) + return false; + + m_pSteamUserStats = m_pSteamClient->GetISteamUserStats( hSteamUser, hSteamPipe, STEAMUSERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamUserStats ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + m_pSteamNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamNetworking ) + return false; + + m_pSteamRemoteStorage = m_pSteamClient->GetISteamRemoteStorage( hSteamUser, hSteamPipe, STEAMREMOTESTORAGE_INTERFACE_VERSION ); + if ( !m_pSteamRemoteStorage ) + return false; + + m_pSteamScreenshots = m_pSteamClient->GetISteamScreenshots( hSteamUser, hSteamPipe, STEAMSCREENSHOTS_INTERFACE_VERSION ); + if ( !m_pSteamScreenshots ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamUnifiedMessages = m_pSteamClient->GetISteamUnifiedMessages( hSteamUser, hSteamPipe, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION ); + if ( !m_pSteamUnifiedMessages ) + return false; + + m_pController = m_pSteamClient->GetISteamController( hSteamUser, hSteamPipe, STEAMCONTROLLER_INTERFACE_VERSION ); + if ( !m_pController ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamAppList = m_pSteamClient->GetISteamAppList( hSteamUser, hSteamPipe, STEAMAPPLIST_INTERFACE_VERSION ); + if ( !m_pSteamAppList ) + return false; + + m_pSteamMusic = m_pSteamClient->GetISteamMusic( hSteamUser, hSteamPipe, STEAMMUSIC_INTERFACE_VERSION ); + if ( !m_pSteamMusic ) + return false; + + m_pSteamMusicRemote = m_pSteamClient->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION ); + if ( !m_pSteamMusicRemote ) + return false; + + m_pSteamHTMLSurface = m_pSteamClient->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION ); + if ( !m_pSteamHTMLSurface ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamVideo = m_pSteamClient->GetISteamVideo( hSteamUser, hSteamPipe, STEAMVIDEO_INTERFACE_VERSION ); + if ( !m_pSteamVideo ) + return false; + + return true; +} + + +//----------------------------------------------------------------------------- +// The following macros are implementation details, not intended for public use +//----------------------------------------------------------------------------- +#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) +#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED +#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y +#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ + struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ + CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ + private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + pOuter->func( reinterpret_cast<param*>( pvParam ) ); \ + } \ + } m_steamcallback_ ## func ; void func( param *pParam ) +#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ + CCallback< thisclass, param > var; void func( param *pParam ) + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +inline CCallResult<T, P>::CCallResult() +{ + m_hAPICall = k_uAPICallInvalid; + m_pObj = NULL; + m_Func = NULL; + m_iCallback = P::k_iCallback; +} + +template< class T, class P > +inline void CCallResult<T, P>::Set( SteamAPICall_t hAPICall, T *p, func_t func ) +{ + if ( m_hAPICall ) + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + + m_hAPICall = hAPICall; + m_pObj = p; + m_Func = func; + + if ( hAPICall ) + SteamAPI_RegisterCallResult( this, hAPICall ); +} + +template< class T, class P > +inline bool CCallResult<T, P>::IsActive() const +{ + return (m_hAPICall != k_uAPICallInvalid); +} + +template< class T, class P > +inline void CCallResult<T, P>::Cancel() +{ + if ( m_hAPICall != k_uAPICallInvalid ) + { + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + m_hAPICall = k_uAPICallInvalid; + } + +} + +template< class T, class P > +inline CCallResult<T, P>::~CCallResult() +{ + Cancel(); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam ) +{ + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, false); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) +{ + if ( hSteamAPICall == m_hAPICall ) + { + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, bIOFailure); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver > +inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) + : m_pObj( NULL ), m_Func( NULL ) +{ + if ( bGameserver ) + { + this->SetGameserverFlag(); + } + Register( pObj, func ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) +{ + if ( !pObj || !func ) + return; + + if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) + Unregister(); + + m_pObj = pObj; + m_Func = func; + // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered + SteamAPI_RegisterCallback( this, P::k_iCallback ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Unregister() +{ + // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered + SteamAPI_UnregisterCallback( this ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) +{ + (m_pObj->*m_Func)((P *)pvParam); +} + + +#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) +// this should be called before the game initialized the steam APIs +// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) +// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) +// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder +// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback +// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. +S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); +S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#endif + + +#endif // STEAM_API_INTERNAL_H diff --git a/lib/windows32/include/steam/steam_api_interop.cs b/lib/windows32/include/steam/steam_api_interop.cs new file mode 100644 index 0000000..f7a6775 --- /dev/null +++ b/lib/windows32/include/steam/steam_api_interop.cs @@ -0,0 +1,10470 @@ +//====== Copyright 1996-2016, Valve Corporation, All rights reserved. ======= +// +// Purpose: This file contains C#/managed code bindings for the SteamAPI interfaces +// This file is auto-generated, do not edit it. +// +//============================================================================= + +using System; +using System.Runtime.InteropServices; +using Valve.Steamworks; +using Valve.Interop; + +namespace Valve.Interop +{ + +public class NativeEntrypoints +{ + + +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe")] +internal static extern uint SteamAPI_ISteamClient_CreateSteamPipe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BReleaseSteamPipe")] +internal static extern bool SteamAPI_ISteamClient_BReleaseSteamPipe(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ConnectToGlobalUser")] +internal static extern uint SteamAPI_ISteamClient_ConnectToGlobalUser(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateLocalUser")] +internal static extern uint SteamAPI_ISteamClient_CreateLocalUser(IntPtr instancePtr, ref uint phSteamPipe, uint eAccountType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ReleaseUser")] +internal static extern void SteamAPI_ISteamClient_ReleaseUser(IntPtr instancePtr, uint hSteamPipe, uint hUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUser")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUser(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServer")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServer(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetLocalIPBinding")] +internal static extern void SteamAPI_ISteamClient_SetLocalIPBinding(IntPtr instancePtr, uint unIP, char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamFriends")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamFriends(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUtils")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUtils(IntPtr instancePtr, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmaking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmaking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmakingServers")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmakingServers(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGenericInterface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGenericInterface(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUserStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUserStats(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServerStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServerStats(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamApps")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamApps(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamNetworking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamNetworking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamRemoteStorage")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamRemoteStorage(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamScreenshots(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamClient_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamClient_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed")] +internal static extern bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTTP")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTTP(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUnifiedMessages")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUnifiedMessages(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamController")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamController(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUGC")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUGC(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamAppList")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamAppList(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusic")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusic(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusicRemote")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusicRemote(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTMLSurface(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInventory(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamVideo(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser")] +internal static extern uint SteamAPI_ISteamUser_GetHSteamUser(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BLoggedOn")] +internal static extern bool SteamAPI_ISteamUser_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetSteamID")] +internal static extern ulong SteamAPI_ISteamUser_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection")] +internal static extern int SteamAPI_ISteamUser_InitiateGameConnection(IntPtr instancePtr, IntPtr pAuthBlob, int cbMaxAuthBlob, ulong steamIDGameServer, uint unIPServer, char usPortServer, bool bSecure); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection")] +internal static extern void SteamAPI_ISteamUser_TerminateGameConnection(IntPtr instancePtr, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent")] +internal static extern void SteamAPI_ISteamUser_TrackAppUsageEvent(IntPtr instancePtr, ulong gameID, int eAppUsageEvent, string pchExtraInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetUserDataFolder")] +internal static extern bool SteamAPI_ISteamUser_GetUserDataFolder(IntPtr instancePtr, string pchBuffer, int cubBuffer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StartVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StartVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StopVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice")] +internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoice")] +internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed, IntPtr pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, ref uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_DecompressVoice")] +internal static extern uint SteamAPI_ISteamUser_DecompressVoice(IntPtr instancePtr, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate")] +internal static extern uint SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamUser_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_EndAuthSession")] +internal static extern void SteamAPI_ISteamUser_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamUser_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamUser_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsBehindNAT")] +internal static extern bool SteamAPI_ISteamUser_BIsBehindNAT(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_AdvertiseGame")] +internal static extern void SteamAPI_ISteamUser_AdvertiseGame(IntPtr instancePtr, ulong steamIDGameServer, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestEncryptedAppTicket")] +internal static extern ulong SteamAPI_ISteamUser_RequestEncryptedAppTicket(IntPtr instancePtr, IntPtr pDataToInclude, int cbDataToInclude); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetEncryptedAppTicket")] +internal static extern bool SteamAPI_ISteamUser_GetEncryptedAppTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetGameBadgeLevel")] +internal static extern int SteamAPI_ISteamUser_GetGameBadgeLevel(IntPtr instancePtr, int nSeries, bool bFoil); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetPlayerSteamLevel")] +internal static extern int SteamAPI_ISteamUser_GetPlayerSteamLevel(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL")] +internal static extern ulong SteamAPI_ISteamUser_RequestStoreAuthURL(IntPtr instancePtr, string pchRedirectURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneVerified(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled")] +internal static extern bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneIdentifying")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneIdentifying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneRequiringVerification")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPersonaName(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName")] +internal static extern ulong SteamAPI_ISteamFriends_SetPersonaName(IntPtr instancePtr, string pchPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetPersonaState(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCount(IntPtr instancePtr, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendByIndex(IntPtr instancePtr, int iFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRelationship")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendRelationship(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendPersonaState(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaName(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendGamePlayed")] +internal static extern bool SteamAPI_ISteamFriends_GetFriendGamePlayed(IntPtr instancePtr, ulong steamIDFriend, ref FriendGameInfo_t pFriendGameInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(IntPtr instancePtr, ulong steamIDFriend, int iPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendSteamLevel")] +internal static extern int SteamAPI_ISteamFriends_GetFriendSteamLevel(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPlayerNickname")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPlayerNickname(IntPtr instancePtr, ulong steamIDPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex")] +internal static extern char SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(IntPtr instancePtr, int iFG); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendsGroupName(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersList")] +internal static extern void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(IntPtr instancePtr, char friendsGroupID, [In, Out] CSteamID[] pOutSteamIDMembers, int nMembersCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_HasFriend")] +internal static extern bool SteamAPI_ISteamFriends_HasFriend(IntPtr instancePtr, ulong steamIDFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanByIndex(IntPtr instancePtr, int iClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanName(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanTag")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanTag(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanActivityCounts")] +internal static extern bool SteamAPI_ISteamFriends_GetClanActivityCounts(IntPtr instancePtr, ulong steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_DownloadClanActivityCounts")] +internal static extern ulong SteamAPI_ISteamFriends_DownloadClanActivityCounts(IntPtr instancePtr, [In, Out] CSteamID[] psteamIDClans, int cClansToRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCountFromSource")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCountFromSource(IntPtr instancePtr, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(IntPtr instancePtr, ulong steamIDSource, int iFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsUserInSource")] +internal static extern bool SteamAPI_ISteamFriends_IsUserInSource(IntPtr instancePtr, ulong steamIDUser, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking")] +internal static extern void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(IntPtr instancePtr, ulong steamIDUser, bool bSpeaking); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlay")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlay(IntPtr instancePtr, string pchDialog); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToUser")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(IntPtr instancePtr, string pchDialog, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(IntPtr instancePtr, string pchURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToStore")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(IntPtr instancePtr, uint nAppID, char eFlag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPlayedWith")] +internal static extern void SteamAPI_ISteamFriends_SetPlayedWith(IntPtr instancePtr, ulong steamIDUserPlayedWith); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetSmallFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetSmallFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetMediumFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetMediumFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetLargeFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetLargeFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestUserInformation")] +internal static extern bool SteamAPI_ISteamFriends_RequestUserInformation(IntPtr instancePtr, ulong steamIDUser, bool bRequireNameOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestClanOfficerList")] +internal static extern ulong SteamAPI_ISteamFriends_RequestClanOfficerList(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOwner")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOwner(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanOfficerCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOfficerByIndex(IntPtr instancePtr, ulong steamIDClan, int iOfficer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetUserRestrictions")] +internal static extern uint SteamAPI_ISteamFriends_GetUserRestrictions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetRichPresence")] +internal static extern bool SteamAPI_ISteamFriends_SetRichPresence(IntPtr instancePtr, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ClearRichPresence")] +internal static extern void SteamAPI_ISteamFriends_ClearRichPresence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresence")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(IntPtr instancePtr, ulong steamIDFriend, int iKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestFriendRichPresence")] +internal static extern void SteamAPI_ISteamFriends_RequestFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_InviteUserToGame")] +internal static extern bool SteamAPI_ISteamFriends_InviteUserToGame(IntPtr instancePtr, ulong steamIDFriend, string pchConnectString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetCoplayFriendCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriend")] +internal static extern ulong SteamAPI_ISteamFriends_GetCoplayFriend(IntPtr instancePtr, int iCoplayFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayTime")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCoplayTime(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayGame")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendCoplayGame(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_JoinClanChatRoom")] +internal static extern ulong SteamAPI_ISteamFriends_JoinClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_LeaveClanChatRoom")] +internal static extern bool SteamAPI_ISteamFriends_LeaveClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMemberCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMemberCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetChatMemberByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetChatMemberByIndex(IntPtr instancePtr, ulong steamIDClan, int iUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SendClanChatMessage")] +internal static extern bool SteamAPI_ISteamFriends_SendClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMessage")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref uint peChatEntryType, ref CSteamID psteamidChatter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatAdmin")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatAdmin(IntPtr instancePtr, ulong steamIDClanChat, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetListenForFriendsMessages")] +internal static extern bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(IntPtr instancePtr, bool bInterceptEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ReplyToFriendMessage")] +internal static extern bool SteamAPI_ISteamFriends_ReplyToFriendMessage(IntPtr instancePtr, ulong steamIDFriend, string pchMsgToSend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendMessage")] +internal static extern int SteamAPI_ISteamFriends_GetFriendMessage(IntPtr instancePtr, ulong steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFollowerCount")] +internal static extern ulong SteamAPI_ISteamFriends_GetFollowerCount(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsFollowing")] +internal static extern ulong SteamAPI_ISteamFriends_IsFollowing(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_EnumerateFollowingList")] +internal static extern ulong SteamAPI_ISteamFriends_EnumerateFollowingList(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceAppActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceAppActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetConnectedUniverse")] +internal static extern int SteamAPI_ISteamUtils_GetConnectedUniverse(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetServerRealTime")] +internal static extern uint SteamAPI_ISteamUtils_GetServerRealTime(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCountry")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetIPCountry(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageSize")] +internal static extern bool SteamAPI_ISteamUtils_GetImageSize(IntPtr instancePtr, int iImage, ref uint pnWidth, ref uint pnHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageRGBA")] +internal static extern bool SteamAPI_ISteamUtils_GetImageRGBA(IntPtr instancePtr, int iImage, IntPtr pubDest, int nDestBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCSERIPPort")] +internal static extern bool SteamAPI_ISteamUtils_GetCSERIPPort(IntPtr instancePtr, ref uint unIP, ref char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCurrentBatteryPower")] +internal static extern byte SteamAPI_ISteamUtils_GetCurrentBatteryPower(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAppID")] +internal static extern uint SteamAPI_ISteamUtils_GetAppID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationPosition")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(IntPtr instancePtr, uint eNotificationPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsAPICallCompleted")] +internal static extern bool SteamAPI_ISteamUtils_IsAPICallCompleted(IntPtr instancePtr, ulong hSteamAPICall, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallFailureReason")] +internal static extern int SteamAPI_ISteamUtils_GetAPICallFailureReason(IntPtr instancePtr, ulong hSteamAPICall); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult")] +internal static extern bool SteamAPI_ISteamUtils_GetAPICallResult(IntPtr instancePtr, ulong hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamUtils_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamUtils_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsOverlayEnabled")] +internal static extern bool SteamAPI_ISteamUtils_IsOverlayEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_BOverlayNeedsPresent")] +internal static extern bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_CheckFileSignature")] +internal static extern ulong SteamAPI_ISteamUtils_CheckFileSignature(IntPtr instancePtr, string szFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_ShowGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_ShowGamepadTextInput(IntPtr instancePtr, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength")] +internal static extern uint SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(IntPtr instancePtr, string pchText, uint cchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSteamUILanguage")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetSteamUILanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningInVR")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamRunningInVR(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(IntPtr instancePtr, int nHorizontalInset, int nVerticalInset); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] +internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(IntPtr instancePtr, int iGame, ref uint pnAppID, ref uint pnIP, ref char pnConnPort, ref char pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddFavoriteGame")] +internal static extern int SteamAPI_ISteamMatchmaking_AddFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyList")] +internal static extern ulong SteamAPI_ISteamMatchmaking_RequestLobbyList(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(IntPtr instancePtr, string pchKeyToMatch, string pchValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToBeCloseTo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(IntPtr instancePtr, int nSlotsAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(IntPtr instancePtr, uint eLobbyDistanceFilter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(IntPtr instancePtr, int cMaxResults); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyByIndex(IntPtr instancePtr, int iLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_CreateLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_CreateLobby(IntPtr instancePtr, uint eLobbyType, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_JoinLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_JoinLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_LeaveLobby")] +internal static extern void SteamAPI_ISteamMatchmaking_LeaveLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_InviteUserToLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDInvitee); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers")] +internal static extern int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(IntPtr instancePtr, ulong steamIDLobby, int iMember); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(IntPtr instancePtr, ulong steamIDLobby, int iLobbyData, string pchKey, int cchKeyBufferSize, string pchValue, int cchValueBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_DeleteLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDUser, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberData")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg")] +internal static extern bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(IntPtr instancePtr, ulong steamIDLobby, IntPtr pvMsgBody, int cubMsgBody); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(IntPtr instancePtr, ulong steamIDLobby, int iChatID, ref CSteamID pSteamIDUser, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_RequestLobbyData(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyGameServer")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, uint unGameServerIP, char unGameServerPort, ulong steamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyGameServer")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, ref uint punGameServerIP, ref char punGameServerPort, ref CSteamID psteamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyType")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyType(IntPtr instancePtr, ulong steamIDLobby, uint eLobbyType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyJoinable")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(IntPtr instancePtr, ulong steamIDLobby, bool bLobbyJoinable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyOwner")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyOwner")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDNewOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLinkedLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDLobbyDependent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(IntPtr instancePtr, uint hRequest, uint response); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(IntPtr instancePtr, IntPtr server); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(IntPtr instancePtr, string pchName, int nScore, float flTimePlayed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(IntPtr instancePtr, string pchRule, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestLANServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestLANServerList(IntPtr instancePtr, uint iApp, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ReleaseRequest")] +internal static extern void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(IntPtr instancePtr, uint hServerListRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerDetails")] +internal static extern IntPtr SteamAPI_ISteamMatchmakingServers_GetServerDetails(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_IsRefreshing")] +internal static extern bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerCount")] +internal static extern int SteamAPI_ISteamMatchmakingServers_GetServerCount(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshServer")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshServer(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PingServer")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PingServer(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PlayerDetails")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PlayerDetails(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ServerRules")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_ServerRules(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelServerQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(IntPtr instancePtr, uint hServerQuery); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWrite")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWrite(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_FileRead(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubDataToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteAsync(IntPtr instancePtr, string pchFile, IntPtr pvData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileReadAsync(IntPtr instancePtr, string pchFile, uint nOffset, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(IntPtr instancePtr, ulong hReadCall, IntPtr pvBuffer, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileForget")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileForget(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileDelete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileDelete(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileShare")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileShare(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms")] +internal static extern bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(IntPtr instancePtr, string pchFile, uint eRemoteStoragePlatform); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(IntPtr instancePtr, ulong writeHandle, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileExists")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileExists(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersisted")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FilePersisted(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileSize")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileSize(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileTimestamp")] +internal static extern long SteamAPI_ISteamRemoteStorage_GetFileTimestamp(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms")] +internal static extern uint SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize")] +internal static extern IntPtr SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(IntPtr instancePtr, int iFile, ref int pnFileSizeInBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetQuota")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetQuota(IntPtr instancePtr, ref ulong pnTotalBytes, ref ulong puAvailableBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp")] +internal static extern void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(IntPtr instancePtr, bool bEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownload")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownload(IntPtr instancePtr, ulong hContent, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(IntPtr instancePtr, ulong hContent, ref int pnBytesDownloaded, ref int pnBytesExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDetails")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(IntPtr instancePtr, ulong hContent, ref uint pnAppID, System.Text.StringBuilder ppchName, ref int pnFileSizeInBytes, ref CSteamID pSteamIDOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_UGCRead(IntPtr instancePtr, ulong hContent, IntPtr pvData, int cubDataToRead, uint cOffset, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(IntPtr instancePtr, int iCachedContent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(IntPtr instancePtr, string pchFile, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags, uint eWorkshopFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(IntPtr instancePtr, ulong updateHandle, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(IntPtr instancePtr, ulong updateHandle, string pchPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(IntPtr instancePtr, ulong updateHandle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(IntPtr instancePtr, ulong updateHandle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(IntPtr instancePtr, ulong updateHandle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(IntPtr instancePtr, ulong updateHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(IntPtr instancePtr, ulong unPublishedFileId, uint unMaxSecondsOld); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_DeletePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_DeletePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(IntPtr instancePtr, ulong updateHandle, string pchChangeDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(IntPtr instancePtr, ulong unPublishedFileId, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(IntPtr instancePtr, ulong steamId, uint unStartIndex, ref SteamParamStringArray_t pRequiredTags, ref SteamParamStringArray_t pExcludedTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishVideo")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishVideo(IntPtr instancePtr, uint eVideoProvider, string pchVideoAccount, string pchVideoIdentifier, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(IntPtr instancePtr, ulong unPublishedFileId, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(IntPtr instancePtr, uint eAction, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(IntPtr instancePtr, uint eEnumerationType, uint unStartIndex, uint unCount, uint unDays, ref SteamParamStringArray_t pTags, ref SteamParamStringArray_t pUserTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(IntPtr instancePtr, ulong hContent, string pchLocation, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestCurrentStats")] +internal static extern bool SteamAPI_ISteamUserStats_RequestCurrentStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat(IntPtr instancePtr, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat0(IntPtr instancePtr, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat(IntPtr instancePtr, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat0(IntPtr instancePtr, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UpdateAvgRateStat")] +internal static extern bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(IntPtr instancePtr, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievement(IntPtr instancePtr, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_SetAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ClearAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_ClearAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(IntPtr instancePtr, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_StoreStats")] +internal static extern bool SteamAPI_ISteamUserStats_StoreStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementIcon")] +internal static extern int SteamAPI_ISteamUserStats_GetAchievementIcon(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(IntPtr instancePtr, string pchName, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_IndicateAchievementProgress")] +internal static extern bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(IntPtr instancePtr, string pchName, uint nCurProgress, uint nMaxProgress); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumAchievements")] +internal static extern uint SteamAPI_ISteamUserStats_GetNumAchievements(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementName(IntPtr instancePtr, uint iAchievement); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ResetAllStats")] +internal static extern bool SteamAPI_ISteamUserStats_ResetAllStats(IntPtr instancePtr, bool bAchievementsToo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(IntPtr instancePtr, string pchLeaderboardName, uint eLeaderboardSortMethod, uint eLeaderboardDisplayType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindLeaderboard(IntPtr instancePtr, string pchLeaderboardName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetLeaderboardName(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount")] +internal static extern int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(IntPtr instancePtr, ulong hSteamLeaderboard, [In, Out] CSteamID[] prgUsers, int cUsers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry")] +internal static extern bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(IntPtr instancePtr, ulong hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, ref int pDetails, int cDetailsMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UploadLeaderboardScore")] +internal static extern ulong SteamAPI_ISteamUserStats_UploadLeaderboardScore(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardUploadScoreMethod, int nScore, ref int pScoreDetails, int cScoreDetailsCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_AttachLeaderboardUGC")] +internal static extern ulong SteamAPI_ISteamUserStats_AttachLeaderboardUGC(IntPtr instancePtr, ulong hSteamLeaderboard, ulong hUGC); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers")] +internal static extern ulong SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(IntPtr instancePtr, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(IntPtr instancePtr, int iIteratorPrevious, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(IntPtr instancePtr, string pchName, ref float pflPercent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalStats(IntPtr instancePtr, int nHistoryDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat(IntPtr instancePtr, string pchStatName, ref long pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat0(IntPtr instancePtr, string pchStatName, ref double pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory(IntPtr instancePtr, string pchStatName, [In, Out] long[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory0")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory0(IntPtr instancePtr, string pchStatName, [In, Out] double[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribed")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsLowViolence")] +internal static extern bool SteamAPI_ISteamApps_BIsLowViolence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsCybercafe")] +internal static extern bool SteamAPI_ISteamApps_BIsCybercafe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsVACBanned")] +internal static extern bool SteamAPI_ISteamApps_BIsVACBanned(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentGameLanguage")] +internal static extern IntPtr SteamAPI_ISteamApps_GetCurrentGameLanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAvailableGameLanguages")] +internal static extern IntPtr SteamAPI_ISteamApps_GetAvailableGameLanguages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedApp")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedApp(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsDlcInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsDlcInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime")] +internal static extern uint SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDLCCount")] +internal static extern int SteamAPI_ISteamApps_GetDLCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BGetDLCDataByIndex")] +internal static extern bool SteamAPI_ISteamApps_BGetDLCDataByIndex(IntPtr instancePtr, int iDLC, ref uint pAppID, ref bool pbAvailable, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_InstallDLC")] +internal static extern void SteamAPI_ISteamApps_InstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_UninstallDLC")] +internal static extern void SteamAPI_ISteamApps_UninstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey")] +internal static extern void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentBetaName")] +internal static extern bool SteamAPI_ISteamApps_GetCurrentBetaName(IntPtr instancePtr, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_MarkContentCorrupt")] +internal static extern bool SteamAPI_ISteamApps_MarkContentCorrupt(IntPtr instancePtr, bool bMissingFilesOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetInstalledDepots")] +internal static extern uint SteamAPI_ISteamApps_GetInstalledDepots(IntPtr instancePtr, uint appID, ref uint pvecDepots, uint cMaxDepots); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppInstallDir")] +internal static extern uint SteamAPI_ISteamApps_GetAppInstallDir(IntPtr instancePtr, uint appID, string pchFolder, uint cchFolderBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsAppInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsAppInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppOwner")] +internal static extern ulong SteamAPI_ISteamApps_GetAppOwner(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetLaunchQueryParam")] +internal static extern IntPtr SteamAPI_ISteamApps_GetLaunchQueryParam(IntPtr instancePtr, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDlcDownloadProgress")] +internal static extern bool SteamAPI_ISteamApps_GetDlcDownloadProgress(IntPtr instancePtr, uint nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId")] +internal static extern int SteamAPI_ISteamApps_GetAppBuildId(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys")] +internal static extern void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetFileDetails")] +internal static extern ulong SteamAPI_ISteamApps_GetFileDetails(IntPtr instancePtr, string pszFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_SendP2PPacket(IntPtr instancePtr, ulong steamIDRemote, IntPtr pubData, uint cubData, uint eP2PSendType, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(IntPtr instancePtr, ref uint pcubMsgSize, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_ReadP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_ReadP2PPacket(IntPtr instancePtr, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref CSteamID psteamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(IntPtr instancePtr, ulong steamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetP2PSessionState")] +internal static extern bool SteamAPI_ISteamNetworking_GetP2PSessionState(IntPtr instancePtr, ulong steamIDRemote, ref P2PSessionState_t pConnectionState); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AllowP2PPacketRelay")] +internal static extern bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(IntPtr instancePtr, bool bAllow); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateListenSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateListenSocket(IntPtr instancePtr, int nVirtualP2PPort, uint nIP, char nPort, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(IntPtr instancePtr, ulong steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateConnectionSocket(IntPtr instancePtr, uint nIP, char nPort, int nTimeoutSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroySocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroySocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroyListenSocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroyListenSocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendDataOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_SendDataOnSocket(IntPtr instancePtr, uint hSocket, IntPtr pubData, uint cubData, bool bReliable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(IntPtr instancePtr, uint hSocket, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveDataFromSocket")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(IntPtr instancePtr, uint hSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailable(IntPtr instancePtr, uint hListenSocket, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveData")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveData(IntPtr instancePtr, uint hListenSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetSocketInfo(IntPtr instancePtr, uint hSocket, ref CSteamID pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref char punPortRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetListenSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetListenSocketInfo(IntPtr instancePtr, uint hListenSocket, ref uint pnIP, ref char pnPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketConnectionType")] +internal static extern uint SteamAPI_ISteamNetworking_GetSocketConnectionType(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetMaxPacketSize")] +internal static extern int SteamAPI_ISteamNetworking_GetMaxPacketSize(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot")] +internal static extern uint SteamAPI_ISteamScreenshots_WriteScreenshot(IntPtr instancePtr, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(IntPtr instancePtr, string pchFilename, string pchThumbnailFilename, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TriggerScreenshot")] +internal static extern void SteamAPI_ISteamScreenshots_TriggerScreenshot(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_HookScreenshots")] +internal static extern void SteamAPI_ISteamScreenshots_HookScreenshots(IntPtr instancePtr, bool bHook); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_SetLocation")] +internal static extern bool SteamAPI_ISteamScreenshots_SetLocation(IntPtr instancePtr, uint hScreenshot, string pchLocation); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagUser")] +internal static extern bool SteamAPI_ISteamScreenshots_TagUser(IntPtr instancePtr, uint hScreenshot, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagPublishedFile")] +internal static extern bool SteamAPI_ISteamScreenshots_TagPublishedFile(IntPtr instancePtr, uint hScreenshot, ulong unPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_IsScreenshotsHooked")] +internal static extern bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(IntPtr instancePtr, uint eType, string pchFilename, string pchVRFilename); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled")] +internal static extern bool SteamAPI_ISteamMusic_BIsEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying")] +internal static extern bool SteamAPI_ISteamMusic_BIsPlaying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus")] +internal static extern int SteamAPI_ISteamMusic_GetPlaybackStatus(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Play")] +internal static extern void SteamAPI_ISteamMusic_Play(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Pause")] +internal static extern void SteamAPI_ISteamMusic_Pause(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious")] +internal static extern void SteamAPI_ISteamMusic_PlayPrevious(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayNext")] +internal static extern void SteamAPI_ISteamMusic_PlayNext(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_SetVolume")] +internal static extern void SteamAPI_ISteamMusic_SetVolume(IntPtr instancePtr, float flVolume); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetVolume")] +internal static extern float SteamAPI_ISteamMusic_GetVolume(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BActivationSuccess")] +internal static extern bool SteamAPI_ISteamMusicRemote_BActivationSuccess(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetDisplayName")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetDisplayName(IntPtr instancePtr, string pchDisplayName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayPrevious")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayNext")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayNext(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableQueue")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableQueue(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlaylists")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlaylists(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(IntPtr instancePtr, int nStatus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateVolume")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateVolume(IntPtr instancePtr, float flValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(IntPtr instancePtr, bool bAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(IntPtr instancePtr, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(IntPtr instancePtr, int nValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetQueueEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetQueueEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateHTTPRequest")] +internal static extern uint SteamAPI_ISteamHTTP_CreateHTTPRequest(IntPtr instancePtr, uint eHTTPRequestMethod, string pchAbsoluteURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(IntPtr instancePtr, uint hRequest, ulong ulContextValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(IntPtr instancePtr, uint hRequest, uint unTimeoutSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, string pchHeaderValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(IntPtr instancePtr, uint hRequest, string pchParamName, string pchParamValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequest(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_DeferHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_DeferHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(IntPtr instancePtr, uint hRequest, string pchHeaderName, ref uint unResponseHeaderSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, IntPtr pHeaderValueBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(IntPtr instancePtr, uint hRequest, ref uint unBodySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(IntPtr instancePtr, uint hRequest, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(IntPtr instancePtr, uint hRequest, uint cOffset, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(IntPtr instancePtr, uint hRequest, ref float pflPercentOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(IntPtr instancePtr, uint hRequest, string pchContentType, IntPtr pubBody, uint unBodyLen); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateCookieContainer")] +internal static extern uint SteamAPI_ISteamHTTP_CreateCookieContainer(IntPtr instancePtr, bool bAllowResponsesToModify); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(IntPtr instancePtr, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetCookie")] +internal static extern bool SteamAPI_ISteamHTTP_SetCookie(IntPtr instancePtr, uint hCookieContainer, string pchHost, string pchUrl, string pchCookie); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(IntPtr instancePtr, uint hRequest, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(IntPtr instancePtr, uint hRequest, string pchUserAgentInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(IntPtr instancePtr, uint hRequest, bool bRequireVerifiedCertificate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(IntPtr instancePtr, uint hRequest, uint unMilliseconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(IntPtr instancePtr, uint hRequest, ref bool pbWasTimedOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendMethod")] +internal static extern ulong SteamAPI_ISteamUnifiedMessages_SendMethod(IntPtr instancePtr, string pchServiceMethod, IntPtr pRequestBuffer, uint unRequestBufferSize, ulong unContext); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(IntPtr instancePtr, ulong hHandle, ref uint punResponseSize, ref uint peResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseData")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(IntPtr instancePtr, ulong hHandle, IntPtr pResponseBuffer, uint unResponseBufferSize, bool bAutoRelease); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_ReleaseMethod")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(IntPtr instancePtr, ulong hHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendNotification")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_SendNotification(IntPtr instancePtr, string pchServiceNotification, IntPtr pNotificationBuffer, uint unNotificationBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Init")] +internal static extern bool SteamAPI_ISteamController_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Shutdown")] +internal static extern bool SteamAPI_ISteamController_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_RunFrame")] +internal static extern void SteamAPI_ISteamController_RunFrame(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetConnectedControllers")] +internal static extern int SteamAPI_ISteamController_GetConnectedControllers(IntPtr instancePtr, ref ulong handlesOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowBindingPanel")] +internal static extern bool SteamAPI_ISteamController_ShowBindingPanel(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActionSetHandle")] +internal static extern ulong SteamAPI_ISteamController_GetActionSetHandle(IntPtr instancePtr, string pszActionSetName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ActivateActionSet")] +internal static extern void SteamAPI_ISteamController_ActivateActionSet(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetCurrentActionSet")] +internal static extern ulong SteamAPI_ISteamController_GetCurrentActionSet(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetDigitalActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionData")] +internal static extern ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong digitalActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetAnalogActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionData")] +internal static extern ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong analogActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_StopAnalogActionMomentum")] +internal static extern void SteamAPI_ISteamController_StopAnalogActionMomentum(IntPtr instancePtr, ulong controllerHandle, ulong eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerRepeatedHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec, char usOffMicroSec, char unRepeat, uint nFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGamepadIndexForController")] +internal static extern int SteamAPI_ISteamController_GetGamepadIndexForController(IntPtr instancePtr, ulong ulControllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetControllerForGamepadIndex")] +internal static extern ulong SteamAPI_ISteamController_GetControllerForGamepadIndex(IntPtr instancePtr, int nIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetMotionData")] +internal static extern ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowDigitalActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowAnalogActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(IntPtr instancePtr, uint unAccountID, uint eListType, uint eMatchingUGCType, uint eSortOrder, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(IntPtr instancePtr, uint eQueryType, uint eMatchingeMatchingUGCTypeFileType, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SendQueryUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_SendQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCResult")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCResult(IntPtr instancePtr, ulong handle, uint index, ref SteamUGCDetails_t pDetails); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchURL, uint cchURLSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCMetadata")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchMetadata, uint cchMetadatasize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCChildren")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCChildren(IntPtr instancePtr, ulong handle, uint index, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCStatistic")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(IntPtr instancePtr, ulong handle, uint index, uint eStatType, ref ulong pStatValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, System.Text.StringBuilder pchOriginalFileName, uint cchOriginalFileNameSize, ref uint pPreviewType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(IntPtr instancePtr, ulong handle, uint index, uint keyValueTagIndex, System.Text.StringBuilder pchKey, uint cchKeySize, System.Text.StringBuilder pchValue, uint cchValueSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest")] +internal static extern bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddExcludedTag")] +internal static extern bool SteamAPI_ISteamUGC_AddExcludedTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnOnlyIDs")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(IntPtr instancePtr, ulong handle, bool bReturnOnlyIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(IntPtr instancePtr, ulong handle, bool bReturnKeyValueTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnLongDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnLongDescription(IntPtr instancePtr, ulong handle, bool bReturnLongDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnMetadata(IntPtr instancePtr, ulong handle, bool bReturnMetadata); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnChildren")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnChildren(IntPtr instancePtr, ulong handle, bool bReturnChildren); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(IntPtr instancePtr, ulong handle, bool bReturnAdditionalPreviews); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnTotalOnly(IntPtr instancePtr, ulong handle, bool bReturnTotalOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse")] +internal static extern bool SteamAPI_ISteamUGC_SetAllowCachedResponse(IntPtr instancePtr, ulong handle, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter")] +internal static extern bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(IntPtr instancePtr, ulong handle, string pMatchCloudFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetMatchAnyTag")] +internal static extern bool SteamAPI_ISteamUGC_SetMatchAnyTag(IntPtr instancePtr, ulong handle, bool bMatchAnyTag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetSearchText")] +internal static extern bool SteamAPI_ISteamUGC_SetSearchText(IntPtr instancePtr, ulong handle, string pSearchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetRankedByTrendDays")] +internal static extern bool SteamAPI_ISteamUGC_SetRankedByTrendDays(IntPtr instancePtr, ulong handle, uint unDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(IntPtr instancePtr, ulong handle, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RequestUGCDetails")] +internal static extern ulong SteamAPI_ISteamUGC_RequestUGCDetails(IntPtr instancePtr, ulong nPublishedFileID, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateItem")] +internal static extern ulong SteamAPI_ISteamUGC_CreateItem(IntPtr instancePtr, uint nConsumerAppId, uint eFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_StartItemUpdate(IntPtr instancePtr, uint nConsumerAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTitle")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTitle(IntPtr instancePtr, ulong handle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetItemDescription(IntPtr instancePtr, ulong handle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemUpdateLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetItemMetadata(IntPtr instancePtr, ulong handle, string pchMetaData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemVisibility")] +internal static extern bool SteamAPI_ISteamUGC_SetItemVisibility(IntPtr instancePtr, ulong handle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTags")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemContent")] +internal static extern bool SteamAPI_ISteamUGC_SetItemContent(IntPtr instancePtr, ulong handle, string pszContentFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_SetItemPreview(IntPtr instancePtr, ulong handle, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(IntPtr instancePtr, ulong handle, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddItemKeyValueTag(IntPtr instancePtr, ulong handle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewFile(IntPtr instancePtr, ulong handle, string pszPreviewFile, uint type); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewVideo(IntPtr instancePtr, ulong handle, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(IntPtr instancePtr, ulong handle, uint index, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(IntPtr instancePtr, ulong handle, uint index, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemPreview(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, ulong handle, string pchChangeNote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress")] +internal static extern uint SteamAPI_ISteamUGC_GetItemUpdateProgress(IntPtr instancePtr, ulong handle, ref ulong punBytesProcessed, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_SetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_GetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemToFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_AddItemToFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemFromFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_RemoveItemFromFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_SubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UnsubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_UnsubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetNumSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetNumSubscribedItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetSubscribedItems(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemState")] +internal static extern uint SteamAPI_ISteamUGC_GetItemState(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemInstallInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemInstallInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punSizeOnDisk, System.Text.StringBuilder pchFolder, uint cchFolderSize, ref uint punTimeStamp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemDownloadInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemDownloadInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_DownloadItem")] +internal static extern bool SteamAPI_ISteamUGC_DownloadItem(IntPtr instancePtr, ulong nPublishedFileID, bool bHighPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_BInitWorkshopForGameServer")] +internal static extern bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(IntPtr instancePtr, uint unWorkshopDepotID, string pszFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SuspendDownloads")] +internal static extern void SteamAPI_ISteamUGC_SuspendDownloads(IntPtr instancePtr, bool bSuspend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StartPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetNumInstalledApps(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetInstalledApps(IntPtr instancePtr, ref uint pvecAppID, uint unMaxAppIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppName")] +internal static extern int SteamAPI_ISteamAppList_GetAppName(IntPtr instancePtr, uint nAppID, System.Text.StringBuilder pchName, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppInstallDir")] +internal static extern int SteamAPI_ISteamAppList_GetAppInstallDir(IntPtr instancePtr, uint nAppID, string pchDirectory, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppBuildId")] +internal static extern int SteamAPI_ISteamAppList_GetAppBuildId(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface")] +internal static extern void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Init")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Shutdown")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CreateBrowser")] +internal static extern ulong SteamAPI_ISteamHTMLSurface_CreateBrowser(IntPtr instancePtr, string pchUserAgent, string pchUserCSS); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_RemoveBrowser")] +internal static extern void SteamAPI_ISteamHTMLSurface_RemoveBrowser(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_LoadURL")] +internal static extern void SteamAPI_ISteamHTMLSurface_LoadURL(IntPtr instancePtr, uint unBrowserHandle, string pchURL, string pchPostData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetSize")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetSize(IntPtr instancePtr, uint unBrowserHandle, uint unWidth, uint unHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopLoad")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopLoad(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Reload")] +internal static extern void SteamAPI_ISteamHTMLSurface_Reload(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoBack")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoBack(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoForward")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoForward(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AddHeader")] +internal static extern void SteamAPI_ISteamHTMLSurface_AddHeader(IntPtr instancePtr, uint unBrowserHandle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ExecuteJavascript")] +internal static extern void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(IntPtr instancePtr, uint unBrowserHandle, string pchScript); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseUp(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDown(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDoubleClick")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseMove")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseMove(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseWheel")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseWheel(IntPtr instancePtr, uint unBrowserHandle, int nDelta); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyDown(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyUp(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyChar")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyChar(IntPtr instancePtr, uint unBrowserHandle, uint cUnicodeChar, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetVerticalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetKeyFocus")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetKeyFocus(IntPtr instancePtr, uint unBrowserHandle, bool bHasKeyFocus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ViewSource")] +internal static extern void SteamAPI_ISteamHTMLSurface_ViewSource(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CopyToClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_CopyToClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_PasteFromClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Find")] +internal static extern void SteamAPI_ISteamHTMLSurface_Find(IntPtr instancePtr, uint unBrowserHandle, string pchSearchStr, bool bCurrentlyInFind, bool bReverse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopFind")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopFind(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition")] +internal static extern void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetCookie")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetCookie(IntPtr instancePtr, string pchHostname, string pchKey, string pchValue, string pchPath, ulong nExpires, bool bSecure, bool bHTTPOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(IntPtr instancePtr, uint unBrowserHandle, float flZoom, int nPointX, int nPointY); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetBackgroundMode")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(IntPtr instancePtr, uint unBrowserHandle, bool bBackgroundMode); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AllowStartRequest")] +internal static extern void SteamAPI_ISteamHTMLSurface_AllowStartRequest(IntPtr instancePtr, uint unBrowserHandle, bool bAllowed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_JSDialogResponse")] +internal static extern void SteamAPI_ISteamHTMLSurface_JSDialogResponse(IntPtr instancePtr, uint unBrowserHandle, bool bResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus")] +internal static extern uint SteamAPI_ISteamInventory_GetResultStatus(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItems")] +internal static extern bool SteamAPI_ISteamInventory_GetResultItems(IntPtr instancePtr, int resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp")] +internal static extern uint SteamAPI_ISteamInventory_GetResultTimestamp(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID")] +internal static extern bool SteamAPI_ISteamInventory_CheckResultSteamID(IntPtr instancePtr, int resultHandle, ulong steamIDExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DestroyResult")] +internal static extern void SteamAPI_ISteamInventory_DestroyResult(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetAllItems")] +internal static extern bool SteamAPI_ISteamInventory_GetAllItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemsByID")] +internal static extern bool SteamAPI_ISteamInventory_GetItemsByID(IntPtr instancePtr, ref int pResultHandle, [In, Out] ulong[] pInstanceIDs, uint unCountInstanceIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SerializeResult")] +internal static extern bool SteamAPI_ISteamInventory_SerializeResult(IntPtr instancePtr, int resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DeserializeResult")] +internal static extern bool SteamAPI_ISteamInventory_DeserializeResult(IntPtr instancePtr, ref int pOutResultHandle, IntPtr pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GenerateItems")] +internal static extern bool SteamAPI_ISteamInventory_GenerateItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GrantPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_GrantPromoItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItem")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItem(IntPtr instancePtr, ref int pResultHandle, int itemDef); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ConsumeItem")] +internal static extern bool SteamAPI_ISteamInventory_ConsumeItem(IntPtr instancePtr, ref int pResultHandle, ulong itemConsume, uint unQuantity); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ExchangeItems")] +internal static extern bool SteamAPI_ISteamInventory_ExchangeItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] ulong[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TransferItemQuantity")] +internal static extern bool SteamAPI_ISteamInventory_TransferItemQuantity(IntPtr instancePtr, ref int pResultHandle, ulong itemIdSource, uint unQuantity, ulong itemIdDest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SendItemDropHeartbeat")] +internal static extern void SteamAPI_ISteamInventory_SendItemDropHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TriggerItemDrop")] +internal static extern bool SteamAPI_ISteamInventory_TriggerItemDrop(IntPtr instancePtr, ref int pResultHandle, int dropListDefinition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TradeItems")] +internal static extern bool SteamAPI_ISteamInventory_TradeItems(IntPtr instancePtr, ref int pResultHandle, ulong steamIDTradePartner, [In, Out] ulong[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] ulong[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_LoadItemDefinitions")] +internal static extern bool SteamAPI_ISteamInventory_LoadItemDefinitions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionIDs")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(IntPtr instancePtr, [In, Out] int[] pItemDefIDs, ref uint punItemDefIDsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionProperty")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(IntPtr instancePtr, int iDefinition, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL")] +internal static extern void SteamAPI_ISteamVideo_GetVideoURL(IntPtr instancePtr, uint unVideoAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting")] +internal static extern bool SteamAPI_ISteamVideo_IsBroadcasting(IntPtr instancePtr, ref int pnNumViewers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_InitGameServer")] +internal static extern bool SteamAPI_ISteamGameServer_InitGameServer(IntPtr instancePtr, uint unIP, char usGamePort, char usQueryPort, uint unFlags, uint nGameAppId, string pchVersionString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetProduct")] +internal static extern void SteamAPI_ISteamGameServer_SetProduct(IntPtr instancePtr, string pszProduct); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameDescription")] +internal static extern void SteamAPI_ISteamGameServer_SetGameDescription(IntPtr instancePtr, string pszGameDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetModDir")] +internal static extern void SteamAPI_ISteamGameServer_SetModDir(IntPtr instancePtr, string pszModDir); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetDedicatedServer")] +internal static extern void SteamAPI_ISteamGameServer_SetDedicatedServer(IntPtr instancePtr, bool bDedicated); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOn")] +internal static extern void SteamAPI_ISteamGameServer_LogOn(IntPtr instancePtr, string pszToken); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOnAnonymous")] +internal static extern void SteamAPI_ISteamGameServer_LogOnAnonymous(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOff")] +internal static extern void SteamAPI_ISteamGameServer_LogOff(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BLoggedOn")] +internal static extern bool SteamAPI_ISteamGameServer_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BSecure")] +internal static extern bool SteamAPI_ISteamGameServer_BSecure(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetSteamID")] +internal static extern ulong SteamAPI_ISteamGameServer_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_WasRestartRequested")] +internal static extern bool SteamAPI_ISteamGameServer_WasRestartRequested(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMaxPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetMaxPlayerCount(IntPtr instancePtr, int cPlayersMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetBotPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetBotPlayerCount(IntPtr instancePtr, int cBotplayers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetServerName(IntPtr instancePtr, string pszServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMapName")] +internal static extern void SteamAPI_ISteamGameServer_SetMapName(IntPtr instancePtr, string pszMapName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetPasswordProtected")] +internal static extern void SteamAPI_ISteamGameServer_SetPasswordProtected(IntPtr instancePtr, bool bPasswordProtected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorPort")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorPort(IntPtr instancePtr, char unSpectatorPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorServerName(IntPtr instancePtr, string pszSpectatorServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ClearAllKeyValues")] +internal static extern void SteamAPI_ISteamGameServer_ClearAllKeyValues(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetKeyValue")] +internal static extern void SteamAPI_ISteamGameServer_SetKeyValue(IntPtr instancePtr, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameTags")] +internal static extern void SteamAPI_ISteamGameServer_SetGameTags(IntPtr instancePtr, string pchGameTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameData")] +internal static extern void SteamAPI_ISteamGameServer_SetGameData(IntPtr instancePtr, string pchGameData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetRegion")] +internal static extern void SteamAPI_ISteamGameServer_SetRegion(IntPtr instancePtr, string pszRegion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate")] +internal static extern bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(IntPtr instancePtr, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref CSteamID pSteamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection")] +internal static extern ulong SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect")] +internal static extern void SteamAPI_ISteamGameServer_SendUserDisconnect(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData")] +internal static extern bool SteamAPI_ISteamGameServer_BUpdateUserData(IntPtr instancePtr, ulong steamIDUser, string pchPlayerName, uint uScore); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamGameServer_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EndAuthSession")] +internal static extern void SteamAPI_ISteamGameServer_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamGameServer_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamGameServer_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_RequestUserGroupStatus")] +internal static extern bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(IntPtr instancePtr, ulong steamIDUser, ulong steamIDGroup); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetGameplayStats")] +internal static extern void SteamAPI_ISteamGameServer_GetGameplayStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetServerReputation")] +internal static extern ulong SteamAPI_ISteamGameServer_GetServerReputation(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetPublicIP")] +internal static extern uint SteamAPI_ISteamGameServer_GetPublicIP(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_HandleIncomingPacket")] +internal static extern bool SteamAPI_ISteamGameServer_HandleIncomingPacket(IntPtr instancePtr, IntPtr pData, int cbData, uint srcIP, char srcPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket")] +internal static extern int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(IntPtr instancePtr, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref char pPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EnableHeartbeats")] +internal static extern void SteamAPI_ISteamGameServer_EnableHeartbeats(IntPtr instancePtr, bool bActive); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetHeartbeatInterval")] +internal static extern void SteamAPI_ISteamGameServer_SetHeartbeatInterval(IntPtr instancePtr, int iHeartbeatInterval); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ForceHeartbeat")] +internal static extern void SteamAPI_ISteamGameServer_ForceHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan")] +internal static extern ulong SteamAPI_ISteamGameServer_AssociateWithClan(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility")] +internal static extern ulong SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(IntPtr instancePtr, ulong steamIDNewPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(IntPtr instancePtr, ulong steamIDUser, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_ClearUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_StoreUserStats(IntPtr instancePtr, ulong steamIDUser); +public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t pUserStatsReceived_t); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallback")] +public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallback")] +public static extern ulong CUserStatsReceived_t_RemoveCallback(ulong handle); +public delegate void SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult(RemoteStorageFileReadAsyncComplete_t pRemoteStorageFileReadAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult(RemoteStorageGetPublishedItemVoteDetailsResult_t pRemoteStorageGetPublishedItemVoteDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FileDetailsResult_t_CallResult(FileDetailsResult_t pFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_SetCallResult")] +public static extern ulong CFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_FileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsStored_t_CallResult(GSStatsStored_t pGSStatsStored_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_SetCallResult")] +public static extern ulong CGSStatsStored_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsStored_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_RemoveCallResult")] +public static extern ulong CGSStatsStored_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_HTML_BrowserReady_t_CallResult(HTML_BrowserReady_t pHTML_BrowserReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_SetCallResult")] +public static extern ulong CHTML_BrowserReady_t_SetCallResult(ulong hAPICall, SteamAPI_HTML_BrowserReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_RemoveCallResult")] +public static extern ulong CHTML_BrowserReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsGetFollowerCount_t_CallResult(FriendsGetFollowerCount_t pFriendsGetFollowerCount_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_SetCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsGetFollowerCount_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_RemoveCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsIsFollowing_t_CallResult(FriendsIsFollowing_t pFriendsIsFollowing_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_SetCallResult")] +public static extern ulong CFriendsIsFollowing_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsIsFollowing_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_RemoveCallResult")] +public static extern ulong CFriendsIsFollowing_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyMatchList_t_CallResult(LobbyMatchList_t pLobbyMatchList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_SetCallResult")] +public static extern ulong CLobbyMatchList_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyMatchList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_RemoveCallResult")] +public static extern ulong CLobbyMatchList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult(RemoteStorageUpdatePublishedFileResult_t pRemoteStorageUpdatePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_StoreAuthURLResponse_t_CallResult(StoreAuthURLResponse_t pStoreAuthURLResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_SetCallResult")] +public static extern ulong CStoreAuthURLResponse_t_SetCallResult(ulong hAPICall, SteamAPI_StoreAuthURLResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_RemoveCallResult")] +public static extern ulong CStoreAuthURLResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyCreated_t_CallResult(LobbyCreated_t pLobbyCreated_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_SetCallResult")] +public static extern ulong CLobbyCreated_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyCreated_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_RemoveCallResult")] +public static extern ulong CLobbyCreated_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult(RemoteStorageFileWriteAsyncComplete_t pRemoteStorageFileWriteAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult(RemoteStorageDeletePublishedFileResult_t pRemoteStorageDeletePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult(RemoteStorageGetPublishedFileDetailsResult_t pRemoteStorageGetPublishedFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult(RemoteStorageDownloadUGCResult_t pRemoteStorageDownloadUGCResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SteamUGCQueryCompleted_t_CallResult(SteamUGCQueryCompleted_t pSteamUGCQueryCompleted_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_SetCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_SetCallResult(ulong hAPICall, SteamAPI_SteamUGCQueryCompleted_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_RemoveCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileShareResult_t_CallResult(RemoteStorageFileShareResult_t pRemoteStorageFileShareResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_SetCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileShareResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyEnter_t_CallResult(LobbyEnter_t pLobbyEnter_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_SetCallResult")] +public static extern ulong CLobbyEnter_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyEnter_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_RemoveCallResult")] +public static extern ulong CLobbyEnter_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SubmitItemUpdateResult_t_CallResult(SubmitItemUpdateResult_t pSubmitItemUpdateResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_SetCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_SetCallResult(ulong hAPICall, SteamAPI_SubmitItemUpdateResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_RemoveCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_NumberOfCurrentPlayers_t_CallResult(NumberOfCurrentPlayers_t pNumberOfCurrentPlayers_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_SetCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_SetCallResult(ulong hAPICall, SteamAPI_NumberOfCurrentPlayers_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_RemoveCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsReceived_t_CallResult(GSStatsReceived_t pGSStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_SetCallResult")] +public static extern ulong CGSStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_RemoveCallResult")] +public static extern ulong CGSStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoresDownloaded_t_CallResult(LeaderboardScoresDownloaded_t pLeaderboardScoresDownloaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoresDownloaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult(RemoteStorageUpdateUserPublishedItemVoteResult_t pRemoteStorageUpdateUserPublishedItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult(RemoteStorageEnumerateUserSubscribedFilesResult_t pRemoteStorageEnumerateUserSubscribedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CreateItemResult_t_CallResult(CreateItemResult_t pCreateItemResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_SetCallResult")] +public static extern ulong CCreateItemResult_t_SetCallResult(ulong hAPICall, SteamAPI_CreateItemResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_RemoveCallResult")] +public static extern ulong CCreateItemResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetUserItemVoteResult_t_CallResult(SetUserItemVoteResult_t pSetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CSetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_SetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CSetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult(ComputeNewPlayerCompatibilityResult_t pComputeNewPlayerCompatibilityResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_SetCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_SetCallResult(ulong hAPICall, SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_RemoveCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoreUploaded_t_CallResult(LeaderboardScoreUploaded_t pLeaderboardScoreUploaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoreUploaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalAchievementPercentagesReady_t_CallResult(GlobalAchievementPercentagesReady_t pGlobalAchievementPercentagesReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_SetCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_RemoveCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalStatsReceived_t_CallResult(GlobalStatsReceived_t pGlobalStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_SetCallResult")] +public static extern ulong CGlobalStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_RemoveCallResult")] +public static extern ulong CGlobalStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult(RemoteStorageEnumeratePublishedFilesByUserActionResult_t pRemoteStorageEnumeratePublishedFilesByUserActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ClanOfficerListResponse_t_CallResult(ClanOfficerListResponse_t pClanOfficerListResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_SetCallResult")] +public static extern ulong CClanOfficerListResponse_t_SetCallResult(ulong hAPICall, SteamAPI_ClanOfficerListResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_RemoveCallResult")] +public static extern ulong CClanOfficerListResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStoragePublishFileProgress_t_CallResult(RemoteStoragePublishFileProgress_t pRemoteStoragePublishFileProgress_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_SetCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_RemoveCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult(RemoteStorageEnumerateWorkshopFilesResult_t pRemoteStorageEnumerateWorkshopFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSReputation_t_CallResult(GSReputation_t pGSReputation_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_SetCallResult")] +public static extern ulong CGSReputation_t_SetCallResult(ulong hAPICall, SteamAPI_GSReputation_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_RemoveCallResult")] +public static extern ulong CGSReputation_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserFavoriteItemsListChanged_t_CallResult(UserFavoriteItemsListChanged_t pUserFavoriteItemsListChanged_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_SetCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_SetCallResult(ulong hAPICall, SteamAPI_UserFavoriteItemsListChanged_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_RemoveCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_EncryptedAppTicketResponse_t_CallResult(EncryptedAppTicketResponse_t pEncryptedAppTicketResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_SetCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_SetCallResult(ulong hAPICall, SteamAPI_EncryptedAppTicketResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_RemoveCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult(RemoteStorageSetUserPublishedFileActionResult_t pRemoteStorageSetUserPublishedFileActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult(RemoteStorageEnumerateUserPublishedFilesResult_t pRemoteStorageEnumerateUserPublishedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsEnumerateFollowingList_t_CallResult(FriendsEnumerateFollowingList_t pFriendsEnumerateFollowingList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_SetCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsEnumerateFollowingList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_RemoveCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult(RemoteStorageSubscribePublishedFileResult_t pRemoteStorageSubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GetUserItemVoteResult_t_CallResult(GetUserItemVoteResult_t pGetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CGetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_GetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CGetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_AssociateWithClanResult_t_CallResult(AssociateWithClanResult_t pAssociateWithClanResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_SetCallResult")] +public static extern ulong CAssociateWithClanResult_t_SetCallResult(ulong hAPICall, SteamAPI_AssociateWithClanResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_RemoveCallResult")] +public static extern ulong CAssociateWithClanResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardUGCSet_t_CallResult(LeaderboardUGCSet_t pLeaderboardUGCSet_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_SetCallResult")] +public static extern ulong CLeaderboardUGCSet_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardUGCSet_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_RemoveCallResult")] +public static extern ulong CLeaderboardUGCSet_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CheckFileSignature_t_CallResult(CheckFileSignature_t pCheckFileSignature_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_SetCallResult")] +public static extern ulong CCheckFileSignature_t_SetCallResult(ulong hAPICall, SteamAPI_CheckFileSignature_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_RemoveCallResult")] +public static extern ulong CCheckFileSignature_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult(RemoteStorageUnsubscribePublishedFileResult_t pRemoteStorageUnsubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetPersonaNameResponse_t_CallResult(SetPersonaNameResponse_t pSetPersonaNameResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_SetCallResult")] +public static extern ulong CSetPersonaNameResponse_t_SetCallResult(ulong hAPICall, SteamAPI_SetPersonaNameResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_RemoveCallResult")] +public static extern ulong CSetPersonaNameResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserStatsReceived_t_CallResult(UserStatsReceived_t pUserStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallResult")] +public static extern ulong CUserStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_UserStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallResult")] +public static extern ulong CUserStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult(JoinClanChatRoomCompletionResult_t pJoinClanChatRoomCompletionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_SetCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_SetCallResult(ulong hAPICall, SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_RemoveCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardFindResult_t_CallResult(LeaderboardFindResult_t pLeaderboardFindResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_SetCallResult")] +public static extern ulong CLeaderboardFindResult_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardFindResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_RemoveCallResult")] +public static extern ulong CLeaderboardFindResult_t_RemoveCallResult(ulong handle); + +} + +} + +namespace Valve.Steamworks +{ + + public abstract class ISteamClient + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateSteamPipe(); + public abstract bool BReleaseSteamPipe(uint hSteamPipe); + public abstract uint ConnectToGlobalUser(uint hSteamPipe); + public abstract uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType); + public abstract void ReleaseUser(uint hSteamPipe,uint hUser); + public abstract ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract void SetLocalIPBinding(uint unIP,char usPort); + public abstract ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool BShutdownIfAllPipesClosed(); + public abstract ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion); + } + + + public abstract class ISteamUser + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetHSteamUser(); + public abstract bool BLoggedOn(); + public abstract ulong GetSteamID(); + public abstract int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure); + public abstract void TerminateGameConnection(uint unIPServer,char usPortServer); + public abstract void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo); + public abstract bool GetUserDataFolder(string pchBuffer,int cubBuffer); + public abstract void StartVoiceRecording(); + public abstract void StopVoiceRecording(); + public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate); + public abstract uint GetVoiceOptimalSampleRate(); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool BIsBehindNAT(); + public abstract void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer); + public abstract ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude); + public abstract bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract int GetGameBadgeLevel(int nSeries,bool bFoil); + public abstract int GetPlayerSteamLevel(); + public abstract ulong RequestStoreAuthURL(string pchRedirectURL); + public abstract bool BIsPhoneVerified(); + public abstract bool BIsTwoFactorEnabled(); + public abstract bool BIsPhoneIdentifying(); + public abstract bool BIsPhoneRequiringVerification(); + } + + + public abstract class ISteamFriends + { + public abstract IntPtr GetIntPtr(); + public abstract string GetPersonaName(); + public abstract ulong SetPersonaName(string pchPersonaName); + public abstract uint GetPersonaState(); + public abstract int GetFriendCount(int iFriendFlags); + public abstract ulong GetFriendByIndex(int iFriend,int iFriendFlags); + public abstract uint GetFriendRelationship(ulong steamIDFriend); + public abstract uint GetFriendPersonaState(ulong steamIDFriend); + public abstract string GetFriendPersonaName(ulong steamIDFriend); + public abstract bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo); + public abstract string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName); + public abstract int GetFriendSteamLevel(ulong steamIDFriend); + public abstract string GetPlayerNickname(ulong steamIDPlayer); + public abstract int GetFriendsGroupCount(); + public abstract char GetFriendsGroupIDByIndex(int iFG); + public abstract string GetFriendsGroupName(char friendsGroupID); + public abstract int GetFriendsGroupMembersCount(char friendsGroupID); + public abstract void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers); + public abstract bool HasFriend(ulong steamIDFriend,int iFriendFlags); + public abstract int GetClanCount(); + public abstract ulong GetClanByIndex(int iClan); + public abstract string GetClanName(ulong steamIDClan); + public abstract string GetClanTag(ulong steamIDClan); + public abstract bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting); + public abstract ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans); + public abstract int GetFriendCountFromSource(ulong steamIDSource); + public abstract ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend); + public abstract bool IsUserInSource(ulong steamIDUser,ulong steamIDSource); + public abstract void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking); + public abstract void ActivateGameOverlay(string pchDialog); + public abstract void ActivateGameOverlayToUser(string pchDialog,ulong steamID); + public abstract void ActivateGameOverlayToWebPage(string pchURL); + public abstract void ActivateGameOverlayToStore(uint nAppID,char eFlag); + public abstract void SetPlayedWith(ulong steamIDUserPlayedWith); + public abstract void ActivateGameOverlayInviteDialog(ulong steamIDLobby); + public abstract int GetSmallFriendAvatar(ulong steamIDFriend); + public abstract int GetMediumFriendAvatar(ulong steamIDFriend); + public abstract int GetLargeFriendAvatar(ulong steamIDFriend); + public abstract bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly); + public abstract ulong RequestClanOfficerList(ulong steamIDClan); + public abstract ulong GetClanOwner(ulong steamIDClan); + public abstract int GetClanOfficerCount(ulong steamIDClan); + public abstract ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer); + public abstract uint GetUserRestrictions(); + public abstract bool SetRichPresence(string pchKey,string pchValue); + public abstract void ClearRichPresence(); + public abstract string GetFriendRichPresence(ulong steamIDFriend,string pchKey); + public abstract int GetFriendRichPresenceKeyCount(ulong steamIDFriend); + public abstract string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey); + public abstract void RequestFriendRichPresence(ulong steamIDFriend); + public abstract bool InviteUserToGame(ulong steamIDFriend,string pchConnectString); + public abstract int GetCoplayFriendCount(); + public abstract ulong GetCoplayFriend(int iCoplayFriend); + public abstract int GetFriendCoplayTime(ulong steamIDFriend); + public abstract uint GetFriendCoplayGame(ulong steamIDFriend); + public abstract ulong JoinClanChatRoom(ulong steamIDClan); + public abstract bool LeaveClanChatRoom(ulong steamIDClan); + public abstract int GetClanChatMemberCount(ulong steamIDClan); + public abstract ulong GetChatMemberByIndex(ulong steamIDClan,int iUser); + public abstract bool SendClanChatMessage(ulong steamIDClanChat,string pchText); + public abstract int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter); + public abstract bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser); + public abstract bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat); + public abstract bool OpenClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool CloseClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool SetListenForFriendsMessages(bool bInterceptEnabled); + public abstract bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend); + public abstract int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract ulong GetFollowerCount(ulong steamID); + public abstract ulong IsFollowing(ulong steamID); + public abstract ulong EnumerateFollowingList(uint unStartIndex); + } + + + public abstract class ISteamUtils + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetSecondsSinceAppActive(); + public abstract uint GetSecondsSinceComputerActive(); + public abstract int GetConnectedUniverse(); + public abstract uint GetServerRealTime(); + public abstract string GetIPCountry(); + public abstract bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight); + public abstract bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize); + public abstract bool GetCSERIPPort(ref uint unIP,ref char usPort); + public abstract byte GetCurrentBatteryPower(); + public abstract uint GetAppID(); + public abstract void SetOverlayNotificationPosition(uint eNotificationPosition); + public abstract bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed); + public abstract int GetAPICallFailureReason(ulong hSteamAPICall); + public abstract bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool IsOverlayEnabled(); + public abstract bool BOverlayNeedsPresent(); + public abstract ulong CheckFileSignature(string szFileName); + public abstract bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText); + public abstract uint GetEnteredGamepadTextLength(); + public abstract bool GetEnteredGamepadTextInput(string pchText,uint cchText); + public abstract string GetSteamUILanguage(); + public abstract bool IsSteamRunningInVR(); + public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); + public abstract bool IsSteamInBigPictureMode(); + public abstract void StartVRDashboard(); + } + + + public abstract class ISteamMatchmaking + { + public abstract IntPtr GetIntPtr(); + public abstract int GetFavoriteGameCount(); + public abstract bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer); + public abstract int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer); + public abstract bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags); + public abstract ulong RequestLobbyList(); + public abstract void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo); + public abstract void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); + public abstract void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter); + public abstract void AddRequestLobbyListResultCountFilter(int cMaxResults); + public abstract void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby); + public abstract ulong GetLobbyByIndex(int iLobby); + public abstract ulong CreateLobby(uint eLobbyType,int cMaxMembers); + public abstract ulong JoinLobby(ulong steamIDLobby); + public abstract void LeaveLobby(ulong steamIDLobby); + public abstract bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee); + public abstract int GetNumLobbyMembers(ulong steamIDLobby); + public abstract ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember); + public abstract string GetLobbyData(ulong steamIDLobby,string pchKey); + public abstract bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract int GetLobbyDataCount(ulong steamIDLobby); + public abstract bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize); + public abstract bool DeleteLobbyData(ulong steamIDLobby,string pchKey); + public abstract string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey); + public abstract void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody); + public abstract int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract bool RequestLobbyData(ulong steamIDLobby); + public abstract void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer); + public abstract bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer); + public abstract bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers); + public abstract int GetLobbyMemberLimit(ulong steamIDLobby); + public abstract bool SetLobbyType(ulong steamIDLobby,uint eLobbyType); + public abstract bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable); + public abstract ulong GetLobbyOwner(ulong steamIDLobby); + public abstract bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner); + public abstract bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent); + } + + + public abstract class ISteamMatchmakingServerListResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(uint hRequest,int iServer); + public abstract void ServerFailedToRespond(uint hRequest,int iServer); + public abstract void RefreshComplete(uint hRequest,uint response); + } + + + public abstract class ISteamMatchmakingPingResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(IntPtr server); + public abstract void ServerFailedToRespond(); + } + + + public abstract class ISteamMatchmakingPlayersResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void AddPlayerToList(string pchName,int nScore,float flTimePlayed); + public abstract void PlayersFailedToRespond(); + public abstract void PlayersRefreshComplete(); + } + + + public abstract class ISteamMatchmakingRulesResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void RulesResponded(string pchRule,string pchValue); + public abstract void RulesFailedToRespond(); + public abstract void RulesRefreshComplete(); + } + + + public abstract class ISteamMatchmakingServers + { + public abstract IntPtr GetIntPtr(); + public abstract uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract void ReleaseRequest(uint hServerListRequest); + public abstract gameserveritem_t GetServerDetails(uint hRequest,int iServer); + public abstract void CancelQuery(uint hRequest); + public abstract void RefreshQuery(uint hRequest); + public abstract bool IsRefreshing(uint hRequest); + public abstract int GetServerCount(uint hRequest); + public abstract void RefreshServer(uint hRequest,int iServer); + public abstract uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse); + public abstract uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse); + public abstract uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse); + public abstract void CancelServerQuery(uint hServerQuery); + } + + + public abstract class ISteamRemoteStorage + { + public abstract IntPtr GetIntPtr(); + public abstract bool FileWrite(string pchFile,IntPtr pvData,int cubData); + public abstract int FileRead(string pchFile,IntPtr pvData,int cubDataToRead); + public abstract ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData); + public abstract ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead); + public abstract bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead); + public abstract bool FileForget(string pchFile); + public abstract bool FileDelete(string pchFile); + public abstract ulong FileShare(string pchFile); + public abstract bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform); + public abstract ulong FileWriteStreamOpen(string pchFile); + public abstract bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData); + public abstract bool FileWriteStreamClose(ulong writeHandle); + public abstract bool FileWriteStreamCancel(ulong writeHandle); + public abstract bool FileExists(string pchFile); + public abstract bool FilePersisted(string pchFile); + public abstract int GetFileSize(string pchFile); + public abstract long GetFileTimestamp(string pchFile); + public abstract uint GetSyncPlatforms(string pchFile); + public abstract int GetFileCount(); + public abstract string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes); + public abstract bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes); + public abstract bool IsCloudEnabledForAccount(); + public abstract bool IsCloudEnabledForApp(); + public abstract void SetCloudEnabledForApp(bool bEnabled); + public abstract ulong UGCDownload(ulong hContent,uint unPriority); + public abstract bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected); + public abstract bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner); + public abstract int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction); + public abstract int GetCachedUGCCount(); + public abstract ulong GetCachedUGCHandle(int iCachedContent); + public abstract ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType); + public abstract ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileFile(ulong updateHandle,string pchFile); + public abstract bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile); + public abstract bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle); + public abstract bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription); + public abstract bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility); + public abstract bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract ulong CommitPublishedFileUpdate(ulong updateHandle); + public abstract ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld); + public abstract ulong DeletePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserPublishedFiles(uint unStartIndex); + public abstract ulong SubscribePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserSubscribedFiles(uint unStartIndex); + public abstract ulong UnsubscribePublishedFile(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription); + public abstract ulong GetPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp); + public abstract ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags); + public abstract ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags); + public abstract ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction); + public abstract ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex); + public abstract ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags); + public abstract ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority); + } + + + public abstract class ISteamUserStats + { + public abstract IntPtr GetIntPtr(); + public abstract bool RequestCurrentStats(); + public abstract bool GetStat(string pchName,ref int pData); + public abstract bool GetStat0(string pchName,ref float pData); + public abstract bool SetStat(string pchName,int nData); + public abstract bool SetStat0(string pchName,float fData); + public abstract bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength); + public abstract bool GetAchievement(string pchName,ref bool pbAchieved); + public abstract bool SetAchievement(string pchName); + public abstract bool ClearAchievement(string pchName); + public abstract bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool StoreStats(); + public abstract int GetAchievementIcon(string pchName); + public abstract string GetAchievementDisplayAttribute(string pchName,string pchKey); + public abstract bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress); + public abstract uint GetNumAchievements(); + public abstract string GetAchievementName(uint iAchievement); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool ResetAllStats(bool bAchievementsToo); + public abstract ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType); + public abstract ulong FindLeaderboard(string pchLeaderboardName); + public abstract string GetLeaderboardName(ulong hSteamLeaderboard); + public abstract int GetLeaderboardEntryCount(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardSortMethod(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardDisplayType(ulong hSteamLeaderboard); + public abstract ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd); + public abstract ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers); + public abstract bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax); + public abstract ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount); + public abstract ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC); + public abstract ulong GetNumberOfCurrentPlayers(); + public abstract ulong RequestGlobalAchievementPercentages(); + public abstract int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract bool GetAchievementAchievedPercent(string pchName,ref float pflPercent); + public abstract ulong RequestGlobalStats(int nHistoryDays); + public abstract bool GetGlobalStat(string pchStatName,ref long pData); + public abstract bool GetGlobalStat0(string pchStatName,ref double pData); + public abstract int GetGlobalStatHistory(string pchStatName,long [] pData); + public abstract int GetGlobalStatHistory0(string pchStatName,double [] pData); + } + + + public abstract class ISteamApps + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsSubscribed(); + public abstract bool BIsLowViolence(); + public abstract bool BIsCybercafe(); + public abstract bool BIsVACBanned(); + public abstract string GetCurrentGameLanguage(); + public abstract string GetAvailableGameLanguages(); + public abstract bool BIsSubscribedApp(uint appID); + public abstract bool BIsDlcInstalled(uint appID); + public abstract uint GetEarliestPurchaseUnixTime(uint nAppID); + public abstract bool BIsSubscribedFromFreeWeekend(); + public abstract int GetDLCCount(); + public abstract bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize); + public abstract void InstallDLC(uint nAppID); + public abstract void UninstallDLC(uint nAppID); + public abstract void RequestAppProofOfPurchaseKey(uint nAppID); + public abstract bool GetCurrentBetaName(string pchName,int cchNameBufferSize); + public abstract bool MarkContentCorrupt(bool bMissingFilesOnly); + public abstract uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots); + public abstract uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize); + public abstract bool BIsAppInstalled(uint appID); + public abstract ulong GetAppOwner(); + public abstract string GetLaunchQueryParam(string pchKey); + public abstract bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract int GetAppBuildId(); + public abstract void RequestAllProofOfPurchaseKeys(); + public abstract ulong GetFileDetails(string pszFileName); + } + + + public abstract class ISteamNetworking + { + public abstract IntPtr GetIntPtr(); + public abstract bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel); + public abstract bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel); + public abstract bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel); + public abstract bool AcceptP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel); + public abstract bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState); + public abstract bool AllowP2PPacketRelay(bool bAllow); + public abstract uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay); + public abstract uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay); + public abstract uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec); + public abstract bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable); + public abstract bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize); + public abstract bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize); + public abstract bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote); + public abstract bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort); + public abstract uint GetSocketConnectionType(uint hSocket); + public abstract int GetMaxPacketSize(uint hSocket); + } + + + public abstract class ISteamScreenshots + { + public abstract IntPtr GetIntPtr(); + public abstract uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight); + public abstract uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight); + public abstract void TriggerScreenshot(); + public abstract void HookScreenshots(bool bHook); + public abstract bool SetLocation(uint hScreenshot,string pchLocation); + public abstract bool TagUser(uint hScreenshot,ulong steamID); + public abstract bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID); + public abstract bool IsScreenshotsHooked(); + public abstract uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename); + } + + + public abstract class ISteamMusic + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsEnabled(); + public abstract bool BIsPlaying(); + public abstract int GetPlaybackStatus(); + public abstract void Play(); + public abstract void Pause(); + public abstract void PlayPrevious(); + public abstract void PlayNext(); + public abstract void SetVolume(float flVolume); + public abstract float GetVolume(); + } + + + public abstract class ISteamMusicRemote + { + public abstract IntPtr GetIntPtr(); + public abstract bool RegisterSteamMusicRemote(string pchName); + public abstract bool DeregisterSteamMusicRemote(); + public abstract bool BIsCurrentMusicRemote(); + public abstract bool BActivationSuccess(bool bValue); + public abstract bool SetDisplayName(string pchDisplayName); + public abstract bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool EnablePlayPrevious(bool bValue); + public abstract bool EnablePlayNext(bool bValue); + public abstract bool EnableShuffled(bool bValue); + public abstract bool EnableLooped(bool bValue); + public abstract bool EnableQueue(bool bValue); + public abstract bool EnablePlaylists(bool bValue); + public abstract bool UpdatePlaybackStatus(int nStatus); + public abstract bool UpdateShuffled(bool bValue); + public abstract bool UpdateLooped(bool bValue); + public abstract bool UpdateVolume(float flValue); + public abstract bool CurrentEntryWillChange(); + public abstract bool CurrentEntryIsAvailable(bool bAvailable); + public abstract bool UpdateCurrentEntryText(string pchText); + public abstract bool UpdateCurrentEntryElapsedSeconds(int nValue); + public abstract bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool CurrentEntryDidChange(); + public abstract bool QueueWillChange(); + public abstract bool ResetQueueEntries(); + public abstract bool SetQueueEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentQueueEntry(int nID); + public abstract bool QueueDidChange(); + public abstract bool PlaylistWillChange(); + public abstract bool ResetPlaylistEntries(); + public abstract bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentPlaylistEntry(int nID); + public abstract bool PlaylistDidChange(); + } + + + public abstract class ISteamHTTP + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL); + public abstract bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue); + public abstract bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds); + public abstract bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue); + public abstract bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue); + public abstract bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle); + public abstract bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle); + public abstract bool DeferHTTPRequest(uint hRequest); + public abstract bool PrioritizeHTTPRequest(uint hRequest); + public abstract bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize); + public abstract bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize); + public abstract bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize); + public abstract bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool ReleaseHTTPRequest(uint hRequest); + public abstract bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut); + public abstract bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen); + public abstract uint CreateCookieContainer(bool bAllowResponsesToModify); + public abstract bool ReleaseCookieContainer(uint hCookieContainer); + public abstract bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie); + public abstract bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer); + public abstract bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo); + public abstract bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate); + public abstract bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds); + public abstract bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut); + } + + + public abstract class ISteamUnifiedMessages + { + public abstract IntPtr GetIntPtr(); + public abstract ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext); + public abstract bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult); + public abstract bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease); + public abstract bool ReleaseMethod(ulong hHandle); + public abstract bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize); + } + + + public abstract class ISteamController + { + public abstract IntPtr GetIntPtr(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract void RunFrame(); + public abstract int GetConnectedControllers(ref ulong handlesOut); + public abstract bool ShowBindingPanel(ulong controllerHandle); + public abstract ulong GetActionSetHandle(string pszActionSetName); + public abstract void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle); + public abstract ulong GetCurrentActionSet(ulong controllerHandle); + public abstract ulong GetDigitalActionHandle(string pszActionName); + public abstract ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle); + public abstract int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut); + public abstract ulong GetAnalogActionHandle(string pszActionName); + public abstract ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle); + public abstract int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut); + public abstract void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction); + public abstract void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec); + public abstract void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags); + public abstract int GetGamepadIndexForController(ulong ulControllerHandle); + public abstract ulong GetControllerForGamepadIndex(int nIndex); + public abstract ControllerMotionData_t GetMotionData(ulong controllerHandle); + public abstract bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition); + public abstract bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition); + } + + + public abstract class ISteamUGC + { + public abstract IntPtr GetIntPtr(); + public abstract ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong SendQueryUGCRequest(ulong handle); + public abstract bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails); + public abstract bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL); + public abstract bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata); + public abstract bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue); + public abstract uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index); + public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType); + public abstract uint GetQueryUGCNumKeyValueTags(ulong handle,uint index); + public abstract bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue); + public abstract bool ReleaseQueryUGCRequest(ulong handle); + public abstract bool AddRequiredTag(ulong handle,string pTagName); + public abstract bool AddExcludedTag(ulong handle,string pTagName); + public abstract bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs); + public abstract bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags); + public abstract bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription); + public abstract bool SetReturnMetadata(ulong handle,bool bReturnMetadata); + public abstract bool SetReturnChildren(ulong handle,bool bReturnChildren); + public abstract bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews); + public abstract bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly); + public abstract bool SetLanguage(ulong handle,string pchLanguage); + public abstract bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds); + public abstract bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName); + public abstract bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag); + public abstract bool SetSearchText(ulong handle,string pSearchText); + public abstract bool SetRankedByTrendDays(ulong handle,uint unDays); + public abstract bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue); + public abstract ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds); + public abstract ulong CreateItem(uint nConsumerAppId,uint eFileType); + public abstract ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID); + public abstract bool SetItemTitle(ulong handle,string pchTitle); + public abstract bool SetItemDescription(ulong handle,string pchDescription); + public abstract bool SetItemUpdateLanguage(ulong handle,string pchLanguage); + public abstract bool SetItemMetadata(ulong handle,string pchMetaData); + public abstract bool SetItemVisibility(ulong handle,uint eVisibility); + public abstract bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract bool SetItemContent(ulong handle,string pszContentFolder); + public abstract bool SetItemPreview(ulong handle,string pszPreviewFile); + public abstract bool RemoveItemKeyValueTags(ulong handle,string pchKey); + public abstract bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue); + public abstract bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type); + public abstract bool AddItemPreviewVideo(ulong handle,string pszVideoID); + public abstract bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile); + public abstract bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID); + public abstract bool RemoveItemPreview(ulong handle,uint index); + public abstract ulong SubmitItemUpdate(ulong handle,string pchChangeNote); + public abstract uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal); + public abstract ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp); + public abstract ulong GetUserItemVote(ulong nPublishedFileID); + public abstract ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong SubscribeItem(ulong nPublishedFileID); + public abstract ulong UnsubscribeItem(ulong nPublishedFileID); + public abstract uint GetNumSubscribedItems(); + public abstract uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract uint GetItemState(ulong nPublishedFileID); + public abstract bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp); + public abstract bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract bool DownloadItem(ulong nPublishedFileID,bool bHighPriority); + public abstract bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder); + public abstract void SuspendDownloads(bool bSuspend); + public abstract ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTrackingForAllItems(); + } + + + public abstract class ISteamAppList + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetNumInstalledApps(); + public abstract uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs); + public abstract int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax); + public abstract int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax); + public abstract int GetAppBuildId(uint nAppID); + } + + + public abstract class ISteamHTMLSurface + { + public abstract IntPtr GetIntPtr(); + public abstract void DestructISteamHTMLSurface(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract ulong CreateBrowser(string pchUserAgent,string pchUserCSS); + public abstract void RemoveBrowser(uint unBrowserHandle); + public abstract void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData); + public abstract void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight); + public abstract void StopLoad(uint unBrowserHandle); + public abstract void Reload(uint unBrowserHandle); + public abstract void GoBack(uint unBrowserHandle); + public abstract void GoForward(uint unBrowserHandle); + public abstract void AddHeader(uint unBrowserHandle,string pchKey,string pchValue); + public abstract void ExecuteJavascript(uint unBrowserHandle,string pchScript); + public abstract void MouseUp(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDown(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseMove(uint unBrowserHandle,int x,int y); + public abstract void MouseWheel(uint unBrowserHandle,int nDelta); + public abstract void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers); + public abstract void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus); + public abstract void ViewSource(uint unBrowserHandle); + public abstract void CopyToClipboard(uint unBrowserHandle); + public abstract void PasteFromClipboard(uint unBrowserHandle); + public abstract void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse); + public abstract void StopFind(uint unBrowserHandle); + public abstract void GetLinkAtPosition(uint unBrowserHandle,int x,int y); + public abstract void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly); + public abstract void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY); + public abstract void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode); + public abstract void AllowStartRequest(uint unBrowserHandle,bool bAllowed); + public abstract void JSDialogResponse(uint unBrowserHandle,bool bResult); + } + + + public abstract class ISteamInventory + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetResultStatus(int resultHandle); + public abstract bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray); + public abstract uint GetResultTimestamp(int resultHandle); + public abstract bool CheckResultSteamID(int resultHandle,ulong steamIDExpected); + public abstract void DestroyResult(int resultHandle); + public abstract bool GetAllItems(ref int pResultHandle); + public abstract bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs); + public abstract bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize); + public abstract bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE); + public abstract bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity); + public abstract bool GrantPromoItems(ref int pResultHandle); + public abstract bool AddPromoItem(ref int pResultHandle,int itemDef); + public abstract bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs); + public abstract bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity); + public abstract bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity); + public abstract bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest); + public abstract void SendItemDropHeartbeat(); + public abstract bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition); + public abstract bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity); + public abstract bool LoadItemDefinitions(); + public abstract bool GetItemDefinitionIDs(out int [] pItemDefIDs); + public abstract bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer); + } + + + public abstract class ISteamVideo + { + public abstract IntPtr GetIntPtr(); + public abstract void GetVideoURL(uint unVideoAppID); + public abstract bool IsBroadcasting(ref int pnNumViewers); + } + + + public abstract class ISteamGameServer + { + public abstract IntPtr GetIntPtr(); + public abstract bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString); + public abstract void SetProduct(string pszProduct); + public abstract void SetGameDescription(string pszGameDescription); + public abstract void SetModDir(string pszModDir); + public abstract void SetDedicatedServer(bool bDedicated); + public abstract void LogOn(string pszToken); + public abstract void LogOnAnonymous(); + public abstract void LogOff(); + public abstract bool BLoggedOn(); + public abstract bool BSecure(); + public abstract ulong GetSteamID(); + public abstract bool WasRestartRequested(); + public abstract void SetMaxPlayerCount(int cPlayersMax); + public abstract void SetBotPlayerCount(int cBotplayers); + public abstract void SetServerName(string pszServerName); + public abstract void SetMapName(string pszMapName); + public abstract void SetPasswordProtected(bool bPasswordProtected); + public abstract void SetSpectatorPort(char unSpectatorPort); + public abstract void SetSpectatorServerName(string pszSpectatorServerName); + public abstract void ClearAllKeyValues(); + public abstract void SetKeyValue(string pKey,string pValue); + public abstract void SetGameTags(string pchGameTags); + public abstract void SetGameData(string pchGameData); + public abstract void SetRegion(string pszRegion); + public abstract bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser); + public abstract ulong CreateUnauthenticatedUserConnection(); + public abstract void SendUserDisconnect(ulong steamIDUser); + public abstract bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup); + public abstract void GetGameplayStats(); + public abstract ulong GetServerReputation(); + public abstract uint GetPublicIP(); + public abstract bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort); + public abstract int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort); + public abstract void EnableHeartbeats(bool bActive); + public abstract void SetHeartbeatInterval(int iHeartbeatInterval); + public abstract void ForceHeartbeat(); + public abstract ulong AssociateWithClan(ulong steamIDClan); + public abstract ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer); + } + + + public abstract class ISteamGameServerStats + { + public abstract IntPtr GetIntPtr(); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool SetUserStat(ulong steamIDUser,string pchName,int nData); + public abstract bool SetUserStat0(ulong steamIDUser,string pchName,float fData); + public abstract bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength); + public abstract bool SetUserAchievement(ulong steamIDUser,string pchName); + public abstract bool ClearUserAchievement(ulong steamIDUser,string pchName); + public abstract ulong StoreUserStats(ulong steamIDUser); + } + + +public class CSteamClient : ISteamClient +{ +public CSteamClient(IntPtr SteamClient) +{ + m_pSteamClient = SteamClient; +} +IntPtr m_pSteamClient; + +public override IntPtr GetIntPtr() { return m_pSteamClient; } + +private void CheckIfUsable() +{ + if (m_pSteamClient == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateSteamPipe() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateSteamPipe(m_pSteamClient); + return result; +} +public override bool BReleaseSteamPipe(uint hSteamPipe) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BReleaseSteamPipe(m_pSteamClient,hSteamPipe); + return result; +} +public override uint ConnectToGlobalUser(uint hSteamPipe) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_ConnectToGlobalUser(m_pSteamClient,hSteamPipe); + return result; +} +public override uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType) +{ + CheckIfUsable(); + phSteamPipe = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateLocalUser(m_pSteamClient,ref phSteamPipe,eAccountType); + return result; +} +public override void ReleaseUser(uint hSteamPipe,uint hUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_ReleaseUser(m_pSteamClient,hSteamPipe,hUser); +} +public override ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUser(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUser) Marshal.PtrToStructure(result, typeof(ISteamUser)); +} +public override ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServer(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamGameServer) Marshal.PtrToStructure(result, typeof(ISteamGameServer)); +} +public override void SetLocalIPBinding(uint unIP,char usPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetLocalIPBinding(m_pSteamClient,unIP,usPort); +} +public override ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamFriends(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamFriends) Marshal.PtrToStructure(result, typeof(ISteamFriends)); +} +public override ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUtils(m_pSteamClient,hSteamPipe,pchVersion); + return (ISteamUtils) Marshal.PtrToStructure(result, typeof(ISteamUtils)); +} +public override ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmaking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmaking) Marshal.PtrToStructure(result, typeof(ISteamMatchmaking)); +} +public override ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmakingServers(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmakingServers) Marshal.PtrToStructure(result, typeof(ISteamMatchmakingServers)); +} +public override IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGenericInterface(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (IntPtr) Marshal.PtrToStructure(result, typeof(IntPtr)); +} +public override ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUserStats(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUserStats) Marshal.PtrToStructure(result, typeof(ISteamUserStats)); +} +public override ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServerStats(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamGameServerStats) Marshal.PtrToStructure(result, typeof(ISteamGameServerStats)); +} +public override ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamApps(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamApps) Marshal.PtrToStructure(result, typeof(ISteamApps)); +} +public override ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamNetworking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamNetworking) Marshal.PtrToStructure(result, typeof(ISteamNetworking)); +} +public override ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamRemoteStorage(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamRemoteStorage) Marshal.PtrToStructure(result, typeof(ISteamRemoteStorage)); +} +public override ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamScreenshots(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamScreenshots) Marshal.PtrToStructure(result, typeof(ISteamScreenshots)); +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_GetIPCCallCount(m_pSteamClient); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetWarningMessageHook(m_pSteamClient,pFunction); +} +public override bool BShutdownIfAllPipesClosed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(m_pSteamClient); + return result; +} +public override ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTTP(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTTP) Marshal.PtrToStructure(result, typeof(ISteamHTTP)); +} +public override ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUnifiedMessages(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamUnifiedMessages) Marshal.PtrToStructure(result, typeof(ISteamUnifiedMessages)); +} +public override ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamController(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamController) Marshal.PtrToStructure(result, typeof(ISteamController)); +} +public override ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUGC(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUGC) Marshal.PtrToStructure(result, typeof(ISteamUGC)); +} +public override ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamAppList(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamAppList) Marshal.PtrToStructure(result, typeof(ISteamAppList)); +} +public override ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusic(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusic) Marshal.PtrToStructure(result, typeof(ISteamMusic)); +} +public override ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusicRemote(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusicRemote) Marshal.PtrToStructure(result, typeof(ISteamMusicRemote)); +} +public override ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTMLSurface(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTMLSurface) Marshal.PtrToStructure(result, typeof(ISteamHTMLSurface)); +} +public override ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamInventory(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamInventory) Marshal.PtrToStructure(result, typeof(ISteamInventory)); +} +public override ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamVideo(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamVideo) Marshal.PtrToStructure(result, typeof(ISteamVideo)); +} +} + + +public class CSteamUser : ISteamUser +{ +public CSteamUser(IntPtr SteamUser) +{ + m_pSteamUser = SteamUser; +} +IntPtr m_pSteamUser; + +public override IntPtr GetIntPtr() { return m_pSteamUser; } + +private void CheckIfUsable() +{ + if (m_pSteamUser == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetHSteamUser() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetHSteamUser(m_pSteamUser); + return result; +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BLoggedOn(m_pSteamUser); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_GetSteamID(m_pSteamUser); + return result; +} +public override int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_InitiateGameConnection(m_pSteamUser,pAuthBlob,cbMaxAuthBlob,steamIDGameServer,unIPServer,usPortServer,bSecure); + return result; +} +public override void TerminateGameConnection(uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TerminateGameConnection(m_pSteamUser,unIPServer,usPortServer); +} +public override void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TrackAppUsageEvent(m_pSteamUser,gameID,eAppUsageEvent,pchExtraInfo); +} +public override bool GetUserDataFolder(string pchBuffer,int cubBuffer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetUserDataFolder(m_pSteamUser,pchBuffer,cubBuffer); + return result; +} +public override void StartVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StartVoiceRecording(m_pSteamUser); +} +public override void StopVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StopVoiceRecording(m_pSteamUser); +} +public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + pcbCompressed = 0; + pcbUncompressed = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + nUncompressBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed,pUncompressedDestBuffer,cbUncompressedDestBufferSize,ref nUncompressBytesWritten,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_DecompressVoice(m_pSteamUser,pCompressed,cbCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,nDesiredSampleRate); + return result; +} +public override uint GetVoiceOptimalSampleRate() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(m_pSteamUser); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAuthSessionTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_BeginAuthSession(m_pSteamUser,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_EndAuthSession(m_pSteamUser,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_CancelAuthTicket(m_pSteamUser,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_UserHasLicenseForApp(m_pSteamUser,steamID,appID); + return result; +} +public override bool BIsBehindNAT() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsBehindNAT(m_pSteamUser); + return result; +} +public override void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_AdvertiseGame(m_pSteamUser,steamIDGameServer,unIPServer,usPortServer); +} +public override ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestEncryptedAppTicket(m_pSteamUser,pDataToInclude,cbDataToInclude); + return result; +} +public override bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetEncryptedAppTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override int GetGameBadgeLevel(int nSeries,bool bFoil) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetGameBadgeLevel(m_pSteamUser,nSeries,bFoil); + return result; +} +public override int GetPlayerSteamLevel() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetPlayerSteamLevel(m_pSteamUser); + return result; +} +public override ulong RequestStoreAuthURL(string pchRedirectURL) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestStoreAuthURL(m_pSteamUser,pchRedirectURL); + return result; +} +public override bool BIsPhoneVerified() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneVerified(m_pSteamUser); + return result; +} +public override bool BIsTwoFactorEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsTwoFactorEnabled(m_pSteamUser); + return result; +} +public override bool BIsPhoneIdentifying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneIdentifying(m_pSteamUser); + return result; +} +public override bool BIsPhoneRequiringVerification() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneRequiringVerification(m_pSteamUser); + return result; +} +} + + +public class CSteamFriends : ISteamFriends +{ +public CSteamFriends(IntPtr SteamFriends) +{ + m_pSteamFriends = SteamFriends; +} +IntPtr m_pSteamFriends; + +public override IntPtr GetIntPtr() { return m_pSteamFriends; } + +private void CheckIfUsable() +{ + if (m_pSteamFriends == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override string GetPersonaName() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaName(m_pSteamFriends); + return Marshal.PtrToStringAnsi(result); +} +public override ulong SetPersonaName(string pchPersonaName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_SetPersonaName(m_pSteamFriends,pchPersonaName); + return result; +} +public override uint GetPersonaState() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaState(m_pSteamFriends); + return result; +} +public override int GetFriendCount(int iFriendFlags) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCount(m_pSteamFriends,iFriendFlags); + return result; +} +public override ulong GetFriendByIndex(int iFriend,int iFriendFlags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendByIndex(m_pSteamFriends,iFriend,iFriendFlags); + return result; +} +public override uint GetFriendRelationship(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRelationship(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendPersonaState(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaState(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendPersonaName(ulong steamIDFriend) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaName(m_pSteamFriends,steamIDFriend); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo) +{ + CheckIfUsable(); + pFriendGameInfo = new FriendGameInfo_t(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendGamePlayed(m_pSteamFriends,steamIDFriend,ref pFriendGameInfo); + return result; +} +public override string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(m_pSteamFriends,steamIDFriend,iPersonaName); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendSteamLevel(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendSteamLevel(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetPlayerNickname(ulong steamIDPlayer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPlayerNickname(m_pSteamFriends,steamIDPlayer); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupCount(m_pSteamFriends); + return result; +} +public override char GetFriendsGroupIDByIndex(int iFG) +{ + CheckIfUsable(); + char result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(m_pSteamFriends,iFG); + return result; +} +public override string GetFriendsGroupName(char friendsGroupID) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupName(m_pSteamFriends,friendsGroupID); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupMembersCount(char friendsGroupID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(m_pSteamFriends,friendsGroupID); + return result; +} +public override void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers) +{ + CheckIfUsable(); + int nMembersCount = GetFriendsGroupMembersCount (friendsGroupID); + pOutSteamIDMembers = new CSteamID[nMembersCount]; + NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersList(m_pSteamFriends,friendsGroupID,pOutSteamIDMembers,nMembersCount); +} +public override bool HasFriend(ulong steamIDFriend,int iFriendFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_HasFriend(m_pSteamFriends,steamIDFriend,iFriendFlags); + return result; +} +public override int GetClanCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanCount(m_pSteamFriends); + return result; +} +public override ulong GetClanByIndex(int iClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanByIndex(m_pSteamFriends,iClan); + return result; +} +public override string GetClanName(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanName(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override string GetClanTag(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanTag(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting) +{ + CheckIfUsable(); + pnOnline = 0; + pnInGame = 0; + pnChatting = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanActivityCounts(m_pSteamFriends,steamIDClan,ref pnOnline,ref pnInGame,ref pnChatting); + return result; +} +public override ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_DownloadClanActivityCounts(m_pSteamFriends,psteamIDClans,(int) psteamIDClans.Length); + return result; +} +public override int GetFriendCountFromSource(ulong steamIDSource) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCountFromSource(m_pSteamFriends,steamIDSource); + return result; +} +public override ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(m_pSteamFriends,steamIDSource,iFriend); + return result; +} +public override bool IsUserInSource(ulong steamIDUser,ulong steamIDSource) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsUserInSource(m_pSteamFriends,steamIDUser,steamIDSource); + return result; +} +public override void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(m_pSteamFriends,steamIDUser,bSpeaking); +} +public override void ActivateGameOverlay(string pchDialog) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlay(m_pSteamFriends,pchDialog); +} +public override void ActivateGameOverlayToUser(string pchDialog,ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToUser(m_pSteamFriends,pchDialog,steamID); +} +public override void ActivateGameOverlayToWebPage(string pchURL) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(m_pSteamFriends,pchURL); +} +public override void ActivateGameOverlayToStore(uint nAppID,char eFlag) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToStore(m_pSteamFriends,nAppID,eFlag); +} +public override void SetPlayedWith(ulong steamIDUserPlayedWith) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetPlayedWith(m_pSteamFriends,steamIDUserPlayedWith); +} +public override void ActivateGameOverlayInviteDialog(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(m_pSteamFriends,steamIDLobby); +} +public override int GetSmallFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetSmallFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetMediumFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetMediumFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetLargeFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetLargeFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestUserInformation(m_pSteamFriends,steamIDUser,bRequireNameOnly); + return result; +} +public override ulong RequestClanOfficerList(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestClanOfficerList(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOwner(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOwner(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanOfficerCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerByIndex(m_pSteamFriends,steamIDClan,iOfficer); + return result; +} +public override uint GetUserRestrictions() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetUserRestrictions(m_pSteamFriends); + return result; +} +public override bool SetRichPresence(string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetRichPresence(m_pSteamFriends,pchKey,pchValue); + return result; +} +public override void ClearRichPresence() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ClearRichPresence(m_pSteamFriends); +} +public override string GetFriendRichPresence(ulong steamIDFriend,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresence(m_pSteamFriends,steamIDFriend,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendRichPresenceKeyCount(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(m_pSteamFriends,steamIDFriend,iKey); + return Marshal.PtrToStringAnsi(result); +} +public override void RequestFriendRichPresence(ulong steamIDFriend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_RequestFriendRichPresence(m_pSteamFriends,steamIDFriend); +} +public override bool InviteUserToGame(ulong steamIDFriend,string pchConnectString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_InviteUserToGame(m_pSteamFriends,steamIDFriend,pchConnectString); + return result; +} +public override int GetCoplayFriendCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriendCount(m_pSteamFriends); + return result; +} +public override ulong GetCoplayFriend(int iCoplayFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriend(m_pSteamFriends,iCoplayFriend); + return result; +} +public override int GetFriendCoplayTime(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayTime(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendCoplayGame(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayGame(m_pSteamFriends,steamIDFriend); + return result; +} +public override ulong JoinClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_JoinClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override bool LeaveClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_LeaveClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanChatMemberCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMemberCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetChatMemberByIndex(ulong steamIDClan,int iUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetChatMemberByIndex(m_pSteamFriends,steamIDClan,iUser); + return result; +} +public override bool SendClanChatMessage(ulong steamIDClanChat,string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SendClanChatMessage(m_pSteamFriends,steamIDClanChat,pchText); + return result; +} +public override int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter) +{ + CheckIfUsable(); + peChatEntryType = 0; + psteamidChatter = new CSteamID(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMessage(m_pSteamFriends,steamIDClanChat,iMessage,prgchText,cchTextMax,ref peChatEntryType,ref psteamidChatter); + return result; +} +public override bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatAdmin(m_pSteamFriends,steamIDClanChat,steamIDUser); + return result; +} +public override bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool OpenClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool CloseClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool SetListenForFriendsMessages(bool bInterceptEnabled) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetListenForFriendsMessages(m_pSteamFriends,bInterceptEnabled); + return result; +} +public override bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_ReplyToFriendMessage(m_pSteamFriends,steamIDFriend,pchMsgToSend); + return result; +} +public override int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendMessage(m_pSteamFriends,steamIDFriend,iMessageID,pvData,cubData,ref peChatEntryType); + return result; +} +public override ulong GetFollowerCount(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFollowerCount(m_pSteamFriends,steamID); + return result; +} +public override ulong IsFollowing(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_IsFollowing(m_pSteamFriends,steamID); + return result; +} +public override ulong EnumerateFollowingList(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_EnumerateFollowingList(m_pSteamFriends,unStartIndex); + return result; +} +} + + +public class CSteamUtils : ISteamUtils +{ +public CSteamUtils(IntPtr SteamUtils) +{ + m_pSteamUtils = SteamUtils; +} +IntPtr m_pSteamUtils; + +public override IntPtr GetIntPtr() { return m_pSteamUtils; } + +private void CheckIfUsable() +{ + if (m_pSteamUtils == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetSecondsSinceAppActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceAppActive(m_pSteamUtils); + return result; +} +public override uint GetSecondsSinceComputerActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(m_pSteamUtils); + return result; +} +public override int GetConnectedUniverse() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetConnectedUniverse(m_pSteamUtils); + return result; +} +public override uint GetServerRealTime() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetServerRealTime(m_pSteamUtils); + return result; +} +public override string GetIPCountry() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCountry(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight) +{ + CheckIfUsable(); + pnWidth = 0; + pnHeight = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageSize(m_pSteamUtils,iImage,ref pnWidth,ref pnHeight); + return result; +} +public override bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageRGBA(m_pSteamUtils,iImage,pubDest,nDestBufferSize); + return result; +} +public override bool GetCSERIPPort(ref uint unIP,ref char usPort) +{ + CheckIfUsable(); + unIP = 0; + usPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCSERIPPort(m_pSteamUtils,ref unIP,ref usPort); + return result; +} +public override byte GetCurrentBatteryPower() +{ + CheckIfUsable(); + byte result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCurrentBatteryPower(m_pSteamUtils); + return result; +} +public override uint GetAppID() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAppID(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationPosition(uint eNotificationPosition) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationPosition(m_pSteamUtils,eNotificationPosition); +} +public override bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsAPICallCompleted(m_pSteamUtils,hSteamAPICall,ref pbFailed); + return result; +} +public override int GetAPICallFailureReason(ulong hSteamAPICall) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallFailureReason(m_pSteamUtils,hSteamAPICall); + return result; +} +public override bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallResult(m_pSteamUtils,hSteamAPICall,pCallback,cubCallback,iCallbackExpected,ref pbFailed); + return result; +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCCallCount(m_pSteamUtils); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetWarningMessageHook(m_pSteamUtils,pFunction); +} +public override bool IsOverlayEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsOverlayEnabled(m_pSteamUtils); + return result; +} +public override bool BOverlayNeedsPresent() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_BOverlayNeedsPresent(m_pSteamUtils); + return result; +} +public override ulong CheckFileSignature(string szFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUtils_CheckFileSignature(m_pSteamUtils,szFileName); + return result; +} +public override bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_ShowGamepadTextInput(m_pSteamUtils,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText); + return result; +} +public override uint GetEnteredGamepadTextLength() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(m_pSteamUtils); + return result; +} +public override bool GetEnteredGamepadTextInput(string pchText,uint cchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(m_pSteamUtils,pchText,cchText); + return result; +} +public override string GetSteamUILanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSteamUILanguage(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool IsSteamRunningInVR() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamRunningInVR(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationInset(m_pSteamUtils,nHorizontalInset,nVerticalInset); +} +public override bool IsSteamInBigPictureMode() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamInBigPictureMode(m_pSteamUtils); + return result; +} +public override void StartVRDashboard() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); +} +} + + +public class CSteamMatchmaking : ISteamMatchmaking +{ +public CSteamMatchmaking(IntPtr SteamMatchmaking) +{ + m_pSteamMatchmaking = SteamMatchmaking; +} +IntPtr m_pSteamMatchmaking; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmaking; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmaking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override int GetFavoriteGameCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(m_pSteamMatchmaking); + return result; +} +public override bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer) +{ + CheckIfUsable(); + pnAppID = 0; + pnIP = 0; + pnConnPort = (char) 0; + pnQueryPort = (char) 0; + punFlags = 0; + pRTime32LastPlayedOnServer = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGame(m_pSteamMatchmaking,iGame,ref pnAppID,ref pnIP,ref pnConnPort,ref pnQueryPort,ref punFlags,ref pRTime32LastPlayedOnServer); + return result; +} +public override int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags,rTime32LastPlayedOnServer); + return result; +} +public override bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags); + return result; +} +public override ulong RequestLobbyList() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyList(m_pSteamMatchmaking); + return result; +} +public override void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(m_pSteamMatchmaking,pchKeyToMatch,pchValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToBeCloseTo); +} +public override void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(m_pSteamMatchmaking,nSlotsAvailable); +} +public override void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(m_pSteamMatchmaking,eLobbyDistanceFilter); +} +public override void AddRequestLobbyListResultCountFilter(int cMaxResults) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(m_pSteamMatchmaking,cMaxResults); +} +public override void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(m_pSteamMatchmaking,steamIDLobby); +} +public override ulong GetLobbyByIndex(int iLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyByIndex(m_pSteamMatchmaking,iLobby); + return result; +} +public override ulong CreateLobby(uint eLobbyType,int cMaxMembers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_CreateLobby(m_pSteamMatchmaking,eLobbyType,cMaxMembers); + return result; +} +public override ulong JoinLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_JoinLobby(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void LeaveLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_LeaveLobby(m_pSteamMatchmaking,steamIDLobby); +} +public override bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_InviteUserToLobby(m_pSteamMatchmaking,steamIDLobby,steamIDInvitee); + return result; +} +public override int GetNumLobbyMembers(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(m_pSteamMatchmaking,steamIDLobby,iMember); + return result; +} +public override string GetLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); + return result; +} +public override int GetLobbyDataCount(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataCount(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(m_pSteamMatchmaking,steamIDLobby,iLobbyData,pchKey,cchKeyBufferSize,pchValue,cchValueBufferSize); + return result; +} +public override bool DeleteLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_DeleteLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return result; +} +public override string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,steamIDUser,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); +} +public override bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(m_pSteamMatchmaking,steamIDLobby,pvMsgBody,cubMsgBody); + return result; +} +public override int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + pSteamIDUser = new CSteamID(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(m_pSteamMatchmaking,steamIDLobby,iChatID,ref pSteamIDUser,pvData,cubData,ref peChatEntryType); + return result; +} +public override bool RequestLobbyData(ulong steamIDLobby) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyData(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,unGameServerIP,unGameServerPort,steamIDGameServer); +} +public override bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer) +{ + CheckIfUsable(); + punGameServerIP = 0; + punGameServerPort = (char) 0; + psteamIDGameServer = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,ref punGameServerIP,ref punGameServerPort,ref psteamIDGameServer); + return result; +} +public override bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby,cMaxMembers); + return result; +} +public override int GetLobbyMemberLimit(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyType(ulong steamIDLobby,uint eLobbyType) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyType(m_pSteamMatchmaking,steamIDLobby,eLobbyType); + return result; +} +public override bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyJoinable(m_pSteamMatchmaking,steamIDLobby,bLobbyJoinable); + return result; +} +public override ulong GetLobbyOwner(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyOwner(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyOwner(m_pSteamMatchmaking,steamIDLobby,steamIDNewOwner); + return result; +} +public override bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLinkedLobby(m_pSteamMatchmaking,steamIDLobby,steamIDLobbyDependent); + return result; +} +} + + +public class CSteamMatchmakingServerListResponse : ISteamMatchmakingServerListResponse +{ +public CSteamMatchmakingServerListResponse(IntPtr SteamMatchmakingServerListResponse) +{ + m_pSteamMatchmakingServerListResponse = SteamMatchmakingServerListResponse; +} +IntPtr m_pSteamMatchmakingServerListResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServerListResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServerListResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void ServerFailedToRespond(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void RefreshComplete(uint hRequest,uint response) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(m_pSteamMatchmakingServerListResponse,hRequest,response); +} +} + + +public class CSteamMatchmakingPingResponse : ISteamMatchmakingPingResponse +{ +public CSteamMatchmakingPingResponse(IntPtr SteamMatchmakingPingResponse) +{ + m_pSteamMatchmakingPingResponse = SteamMatchmakingPingResponse; +} +IntPtr m_pSteamMatchmakingPingResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPingResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPingResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(IntPtr server) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(m_pSteamMatchmakingPingResponse,server); +} +public override void ServerFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(m_pSteamMatchmakingPingResponse); +} +} + + +public class CSteamMatchmakingPlayersResponse : ISteamMatchmakingPlayersResponse +{ +public CSteamMatchmakingPlayersResponse(IntPtr SteamMatchmakingPlayersResponse) +{ + m_pSteamMatchmakingPlayersResponse = SteamMatchmakingPlayersResponse; +} +IntPtr m_pSteamMatchmakingPlayersResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPlayersResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPlayersResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void AddPlayerToList(string pchName,int nScore,float flTimePlayed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(m_pSteamMatchmakingPlayersResponse,pchName,nScore,flTimePlayed); +} +public override void PlayersFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(m_pSteamMatchmakingPlayersResponse); +} +public override void PlayersRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(m_pSteamMatchmakingPlayersResponse); +} +} + + +public class CSteamMatchmakingRulesResponse : ISteamMatchmakingRulesResponse +{ +public CSteamMatchmakingRulesResponse(IntPtr SteamMatchmakingRulesResponse) +{ + m_pSteamMatchmakingRulesResponse = SteamMatchmakingRulesResponse; +} +IntPtr m_pSteamMatchmakingRulesResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingRulesResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingRulesResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void RulesResponded(string pchRule,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(m_pSteamMatchmakingRulesResponse,pchRule,pchValue); +} +public override void RulesFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(m_pSteamMatchmakingRulesResponse); +} +public override void RulesRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(m_pSteamMatchmakingRulesResponse); +} +} + + +public class CSteamMatchmakingServers : ISteamMatchmakingServers +{ +public CSteamMatchmakingServers(IntPtr SteamMatchmakingServers) +{ + m_pSteamMatchmakingServers = SteamMatchmakingServers; +} +IntPtr m_pSteamMatchmakingServers; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServers; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServers == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestLANServerList(m_pSteamMatchmakingServers,iApp,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void ReleaseRequest(uint hServerListRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ReleaseRequest(m_pSteamMatchmakingServers,hServerListRequest); +} +public override gameserveritem_t GetServerDetails(uint hRequest,int iServer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerDetails(m_pSteamMatchmakingServers,hRequest,iServer); + return (gameserveritem_t) Marshal.PtrToStructure(result, typeof(gameserveritem_t)); +} +public override void CancelQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelQuery(m_pSteamMatchmakingServers,hRequest); +} +public override void RefreshQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshQuery(m_pSteamMatchmakingServers,hRequest); +} +public override bool IsRefreshing(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_IsRefreshing(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override int GetServerCount(uint hRequest) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerCount(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override void RefreshServer(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshServer(m_pSteamMatchmakingServers,hRequest,iServer); +} +public override uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PingServer(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PlayerDetails(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ServerRules(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void CancelServerQuery(uint hServerQuery) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelServerQuery(m_pSteamMatchmakingServers,hServerQuery); +} +} + + +public class CSteamRemoteStorage : ISteamRemoteStorage +{ +public CSteamRemoteStorage(IntPtr SteamRemoteStorage) +{ + m_pSteamRemoteStorage = SteamRemoteStorage; +} +IntPtr m_pSteamRemoteStorage; + +public override IntPtr GetIntPtr() { return m_pSteamRemoteStorage; } + +private void CheckIfUsable() +{ + if (m_pSteamRemoteStorage == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool FileWrite(string pchFile,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWrite(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override int FileRead(string pchFile,IntPtr pvData,int cubDataToRead) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileRead(m_pSteamRemoteStorage,pchFile,pvData,cubDataToRead); + return result; +} +public override ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteAsync(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsync(m_pSteamRemoteStorage,pchFile,nOffset,cubToRead); + return result; +} +public override bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(m_pSteamRemoteStorage,hReadCall,pvBuffer,cubToRead); + return result; +} +public override bool FileForget(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileForget(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileDelete(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileDelete(m_pSteamRemoteStorage,pchFile); + return result; +} +public override ulong FileShare(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileShare(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(m_pSteamRemoteStorage,pchFile,eRemoteStoragePlatform); + return result; +} +public override ulong FileWriteStreamOpen(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(m_pSteamRemoteStorage,writeHandle,pvData,cubData); + return result; +} +public override bool FileWriteStreamClose(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileWriteStreamCancel(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileExists(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileExists(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FilePersisted(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FilePersisted(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileSize(string pchFile) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileSize(m_pSteamRemoteStorage,pchFile); + return result; +} +public override long GetFileTimestamp(string pchFile) +{ + CheckIfUsable(); + long result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileTimestamp(m_pSteamRemoteStorage,pchFile); + return result; +} +public override uint GetSyncPlatforms(string pchFile) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileCount(m_pSteamRemoteStorage); + return result; +} +public override string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes) +{ + CheckIfUsable(); + pnFileSizeInBytes = 0; + IntPtr result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(m_pSteamRemoteStorage,iFile,ref pnFileSizeInBytes); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes) +{ + CheckIfUsable(); + pnTotalBytes = 0; + puAvailableBytes = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetQuota(m_pSteamRemoteStorage,ref pnTotalBytes,ref puAvailableBytes); + return result; +} +public override bool IsCloudEnabledForAccount() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(m_pSteamRemoteStorage); + return result; +} +public override bool IsCloudEnabledForApp() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(m_pSteamRemoteStorage); + return result; +} +public override void SetCloudEnabledForApp(bool bEnabled) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(m_pSteamRemoteStorage,bEnabled); +} +public override ulong UGCDownload(ulong hContent,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownload(m_pSteamRemoteStorage,hContent,unPriority); + return result; +} +public override bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected) +{ + CheckIfUsable(); + pnBytesDownloaded = 0; + pnBytesExpected = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(m_pSteamRemoteStorage,hContent,ref pnBytesDownloaded,ref pnBytesExpected); + return result; +} +public override bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner) +{ + CheckIfUsable(); + pnAppID = 0; + pnFileSizeInBytes = 0; + pSteamIDOwner = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDetails(m_pSteamRemoteStorage,hContent,ref pnAppID,ppchName,ref pnFileSizeInBytes,ref pSteamIDOwner); + return result; +} +public override int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCRead(m_pSteamRemoteStorage,hContent,pvData,cubDataToRead,cOffset,eAction); + return result; +} +public override int GetCachedUGCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(m_pSteamRemoteStorage); + return result; +} +public override ulong GetCachedUGCHandle(int iCachedContent) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(m_pSteamRemoteStorage,iCachedContent); + return result; +} +public override ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(m_pSteamRemoteStorage,pchFile,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags,eWorkshopFileType); + return result; +} +public override ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileFile(ulong updateHandle,string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(m_pSteamRemoteStorage,updateHandle,pchFile); + return result; +} +public override bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(m_pSteamRemoteStorage,updateHandle,pchPreviewFile); + return result; +} +public override bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(m_pSteamRemoteStorage,updateHandle,pchTitle); + return result; +} +public override bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(m_pSteamRemoteStorage,updateHandle,pchDescription); + return result; +} +public override bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(m_pSteamRemoteStorage,updateHandle,eVisibility); + return result; +} +public override bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(m_pSteamRemoteStorage,updateHandle,ref pTags); + return result; +} +public override ulong CommitPublishedFileUpdate(ulong updateHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(m_pSteamRemoteStorage,updateHandle); + return result; +} +public override ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(m_pSteamRemoteStorage,unPublishedFileId,unMaxSecondsOld); + return result; +} +public override ulong DeletePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_DeletePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserPublishedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong SubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSubscribedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong UnsubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(m_pSteamRemoteStorage,updateHandle,pchChangeDescription); + return result; +} +public override ulong GetPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(m_pSteamRemoteStorage,unPublishedFileId,bVoteUp); + return result; +} +public override ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(m_pSteamRemoteStorage,steamId,unStartIndex,ref pRequiredTags,ref pExcludedTags); + return result; +} +public override ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishVideo(m_pSteamRemoteStorage,eVideoProvider,pchVideoAccount,pchVideoIdentifier,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags); + return result; +} +public override ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(m_pSteamRemoteStorage,unPublishedFileId,eAction); + return result; +} +public override ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(m_pSteamRemoteStorage,eAction,unStartIndex); + return result; +} +public override ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(m_pSteamRemoteStorage,eEnumerationType,unStartIndex,unCount,unDays,ref pTags,ref pUserTags); + return result; +} +public override ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(m_pSteamRemoteStorage,hContent,pchLocation,unPriority); + return result; +} +} + + +public class CSteamUserStats : ISteamUserStats +{ +public CSteamUserStats(IntPtr SteamUserStats) +{ + m_pSteamUserStats = SteamUserStats; +} +IntPtr m_pSteamUserStats; + +public override IntPtr GetIntPtr() { return m_pSteamUserStats; } + +private void CheckIfUsable() +{ + if (m_pSteamUserStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RequestCurrentStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestCurrentStats(m_pSteamUserStats); + return result; +} +public override bool GetStat(string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool GetStat0(string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat0(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool SetStat(string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat(m_pSteamUserStats,pchName,nData); + return result; +} +public override bool SetStat0(string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat0(m_pSteamUserStats,pchName,fData); + return result; +} +public override bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_UpdateAvgRateStat(m_pSteamUserStats,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool GetAchievement(string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievement(m_pSteamUserStats,pchName,ref pbAchieved); + return result; +} +public override bool SetAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool ClearAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ClearAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(m_pSteamUserStats,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool StoreStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_StoreStats(m_pSteamUserStats); + return result; +} +public override int GetAchievementIcon(string pchName) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementIcon(m_pSteamUserStats,pchName); + return result; +} +public override string GetAchievementDisplayAttribute(string pchName,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(m_pSteamUserStats,pchName,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_IndicateAchievementProgress(m_pSteamUserStats,pchName,nCurProgress,nMaxProgress); + return result; +} +public override uint GetNumAchievements() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumAchievements(m_pSteamUserStats); + return result; +} +public override string GetAchievementName(uint iAchievement) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementName(m_pSteamUserStats,iAchievement); + return Marshal.PtrToStringAnsi(result); +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestUserStats(m_pSteamUserStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat0(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievement(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool ResetAllStats(bool bAchievementsToo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ResetAllStats(m_pSteamUserStats,bAchievementsToo); + return result; +} +public override ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(m_pSteamUserStats,pchLeaderboardName,eLeaderboardSortMethod,eLeaderboardDisplayType); + return result; +} +public override ulong FindLeaderboard(string pchLeaderboardName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindLeaderboard(m_pSteamUserStats,pchLeaderboardName); + return result; +} +public override string GetLeaderboardName(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardName(m_pSteamUserStats,hSteamLeaderboard); + return Marshal.PtrToStringAnsi(result); +} +public override int GetLeaderboardEntryCount(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardSortMethod(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardDisplayType(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardDataRequest,nRangeStart,nRangeEnd); + return result; +} +public override ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(m_pSteamUserStats,hSteamLeaderboard,prgUsers,(int) prgUsers.Length); + return result; +} +public override bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax) +{ + CheckIfUsable(); + pDetails = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(m_pSteamUserStats,hSteamLeaderboardEntries,index,ref pLeaderboardEntry,ref pDetails,cDetailsMax); + return result; +} +public override ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount) +{ + CheckIfUsable(); + pScoreDetails = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_UploadLeaderboardScore(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardUploadScoreMethod,nScore,ref pScoreDetails,cScoreDetailsCount); + return result; +} +public override ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_AttachLeaderboardUGC(m_pSteamUserStats,hSteamLeaderboard,hUGC); + return result; +} +public override ulong GetNumberOfCurrentPlayers() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(m_pSteamUserStats); + return result; +} +public override ulong RequestGlobalAchievementPercentages() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(m_pSteamUserStats); + return result; +} +public override int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(m_pSteamUserStats,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(m_pSteamUserStats,iIteratorPrevious,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override bool GetAchievementAchievedPercent(string pchName,ref float pflPercent) +{ + CheckIfUsable(); + pflPercent = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(m_pSteamUserStats,pchName,ref pflPercent); + return result; +} +public override ulong RequestGlobalStats(int nHistoryDays) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalStats(m_pSteamUserStats,nHistoryDays); + return result; +} +public override bool GetGlobalStat(string pchStatName,ref long pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override bool GetGlobalStat0(string pchStatName,ref double pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat0(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override int GetGlobalStatHistory(string pchStatName,long [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +public override int GetGlobalStatHistory0(string pchStatName,double [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory0(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +} + + +public class CSteamApps : ISteamApps +{ +public CSteamApps(IntPtr SteamApps) +{ + m_pSteamApps = SteamApps; +} +IntPtr m_pSteamApps; + +public override IntPtr GetIntPtr() { return m_pSteamApps; } + +private void CheckIfUsable() +{ + if (m_pSteamApps == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsSubscribed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribed(m_pSteamApps); + return result; +} +public override bool BIsLowViolence() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsLowViolence(m_pSteamApps); + return result; +} +public override bool BIsCybercafe() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsCybercafe(m_pSteamApps); + return result; +} +public override bool BIsVACBanned() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsVACBanned(m_pSteamApps); + return result; +} +public override string GetCurrentGameLanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentGameLanguage(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override string GetAvailableGameLanguages() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetAvailableGameLanguages(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override bool BIsSubscribedApp(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedApp(m_pSteamApps,appID); + return result; +} +public override bool BIsDlcInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsDlcInstalled(m_pSteamApps,appID); + return result; +} +public override uint GetEarliestPurchaseUnixTime(uint nAppID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(m_pSteamApps,nAppID); + return result; +} +public override bool BIsSubscribedFromFreeWeekend() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(m_pSteamApps); + return result; +} +public override int GetDLCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetDLCCount(m_pSteamApps); + return result; +} +public override bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + pAppID = 0; + pbAvailable = false; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BGetDLCDataByIndex(m_pSteamApps,iDLC,ref pAppID,ref pbAvailable,pchName,cchNameBufferSize); + return result; +} +public override void InstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_InstallDLC(m_pSteamApps,nAppID); +} +public override void UninstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_UninstallDLC(m_pSteamApps,nAppID); +} +public override void RequestAppProofOfPurchaseKey(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(m_pSteamApps,nAppID); +} +public override bool GetCurrentBetaName(string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentBetaName(m_pSteamApps,pchName,cchNameBufferSize); + return result; +} +public override bool MarkContentCorrupt(bool bMissingFilesOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_MarkContentCorrupt(m_pSteamApps,bMissingFilesOnly); + return result; +} +public override uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots) +{ + CheckIfUsable(); + pvecDepots = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetInstalledDepots(m_pSteamApps,appID,ref pvecDepots,cMaxDepots); + return result; +} +public override uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppInstallDir(m_pSteamApps,appID,pchFolder,cchFolderBufferSize); + return result; +} +public override bool BIsAppInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsAppInstalled(m_pSteamApps,appID); + return result; +} +public override ulong GetAppOwner() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppOwner(m_pSteamApps); + return result; +} +public override string GetLaunchQueryParam(string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetLaunchQueryParam(m_pSteamApps,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetDlcDownloadProgress(m_pSteamApps,nAppID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override int GetAppBuildId() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppBuildId(m_pSteamApps); + return result; +} +public override void RequestAllProofOfPurchaseKeys() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(m_pSteamApps); +} +public override ulong GetFileDetails(string pszFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetFileDetails(m_pSteamApps,pszFileName); + return result; +} +} + + +public class CSteamNetworking : ISteamNetworking +{ +public CSteamNetworking(IntPtr SteamNetworking) +{ + m_pSteamNetworking = SteamNetworking; +} +IntPtr m_pSteamNetworking; + +public override IntPtr GetIntPtr() { return m_pSteamNetworking; } + +private void CheckIfUsable() +{ + if (m_pSteamNetworking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendP2PPacket(m_pSteamNetworking,steamIDRemote,pubData,cubData,eP2PSendType,nChannel); + return result; +} +public override bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsP2PPacketAvailable(m_pSteamNetworking,ref pcubMsgSize,nChannel); + return result; +} +public override bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_ReadP2PPacket(m_pSteamNetworking,pubDest,cubDest,ref pcubMsgSize,ref psteamIDRemote,nChannel); + return result; +} +public override bool AcceptP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(m_pSteamNetworking,steamIDRemote,nChannel); + return result; +} +public override bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetP2PSessionState(m_pSteamNetworking,steamIDRemote,ref pConnectionState); + return result; +} +public override bool AllowP2PPacketRelay(bool bAllow) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AllowP2PPacketRelay(m_pSteamNetworking,bAllow); + return result; +} +public override uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateListenSocket(m_pSteamNetworking,nVirtualP2PPort,nIP,nPort,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(m_pSteamNetworking,steamIDTarget,nVirtualPort,nTimeoutSec,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateConnectionSocket(m_pSteamNetworking,nIP,nPort,nTimeoutSec); + return result; +} +public override bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroySocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroyListenSocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendDataOnSocket(m_pSteamNetworking,hSocket,pubData,cubData,bReliable); + return result; +} +public override bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(m_pSteamNetworking,hSocket,ref pcubMsgSize); + return result; +} +public override bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveDataFromSocket(m_pSteamNetworking,hSocket,pubDest,cubDest,ref pcubMsgSize); + return result; +} +public override bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailable(m_pSteamNetworking,hListenSocket,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveData(m_pSteamNetworking,hListenSocket,pubDest,cubDest,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote) +{ + CheckIfUsable(); + peSocketStatus = 0; + punIPRemote = 0; + punPortRemote = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketInfo(m_pSteamNetworking,hSocket,ref pSteamIDRemote,ref peSocketStatus,ref punIPRemote,ref punPortRemote); + return result; +} +public override bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort) +{ + CheckIfUsable(); + pnIP = 0; + pnPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetListenSocketInfo(m_pSteamNetworking,hListenSocket,ref pnIP,ref pnPort); + return result; +} +public override uint GetSocketConnectionType(uint hSocket) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketConnectionType(m_pSteamNetworking,hSocket); + return result; +} +public override int GetMaxPacketSize(uint hSocket) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetMaxPacketSize(m_pSteamNetworking,hSocket); + return result; +} +} + + +public class CSteamScreenshots : ISteamScreenshots +{ +public CSteamScreenshots(IntPtr SteamScreenshots) +{ + m_pSteamScreenshots = SteamScreenshots; +} +IntPtr m_pSteamScreenshots; + +public override IntPtr GetIntPtr() { return m_pSteamScreenshots; } + +private void CheckIfUsable() +{ + if (m_pSteamScreenshots == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_WriteScreenshot(m_pSteamScreenshots,pubRGB,cubRGB,nWidth,nHeight); + return result; +} +public override uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(m_pSteamScreenshots,pchFilename,pchThumbnailFilename,nWidth,nHeight); + return result; +} +public override void TriggerScreenshot() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_TriggerScreenshot(m_pSteamScreenshots); +} +public override void HookScreenshots(bool bHook) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_HookScreenshots(m_pSteamScreenshots,bHook); +} +public override bool SetLocation(uint hScreenshot,string pchLocation) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_SetLocation(m_pSteamScreenshots,hScreenshot,pchLocation); + return result; +} +public override bool TagUser(uint hScreenshot,ulong steamID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagUser(m_pSteamScreenshots,hScreenshot,steamID); + return result; +} +public override bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagPublishedFile(m_pSteamScreenshots,hScreenshot,unPublishedFileID); + return result; +} +public override bool IsScreenshotsHooked() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_IsScreenshotsHooked(m_pSteamScreenshots); + return result; +} +public override uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(m_pSteamScreenshots,eType,pchFilename,pchVRFilename); + return result; +} +} + + +public class CSteamMusic : ISteamMusic +{ +public CSteamMusic(IntPtr SteamMusic) +{ + m_pSteamMusic = SteamMusic; +} +IntPtr m_pSteamMusic; + +public override IntPtr GetIntPtr() { return m_pSteamMusic; } + +private void CheckIfUsable() +{ + if (m_pSteamMusic == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsEnabled(m_pSteamMusic); + return result; +} +public override bool BIsPlaying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsPlaying(m_pSteamMusic); + return result; +} +public override int GetPlaybackStatus() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMusic_GetPlaybackStatus(m_pSteamMusic); + return result; +} +public override void Play() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Play(m_pSteamMusic); +} +public override void Pause() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Pause(m_pSteamMusic); +} +public override void PlayPrevious() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayPrevious(m_pSteamMusic); +} +public override void PlayNext() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayNext(m_pSteamMusic); +} +public override void SetVolume(float flVolume) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_SetVolume(m_pSteamMusic,flVolume); +} +public override float GetVolume() +{ + CheckIfUsable(); + float result = NativeEntrypoints.SteamAPI_ISteamMusic_GetVolume(m_pSteamMusic); + return result; +} +} + + +public class CSteamMusicRemote : ISteamMusicRemote +{ +public CSteamMusicRemote(IntPtr SteamMusicRemote) +{ + m_pSteamMusicRemote = SteamMusicRemote; +} +IntPtr m_pSteamMusicRemote; + +public override IntPtr GetIntPtr() { return m_pSteamMusicRemote; } + +private void CheckIfUsable() +{ + if (m_pSteamMusicRemote == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RegisterSteamMusicRemote(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(m_pSteamMusicRemote,pchName); + return result; +} +public override bool DeregisterSteamMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BIsCurrentMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BActivationSuccess(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BActivationSuccess(m_pSteamMusicRemote,bValue); + return result; +} +public override bool SetDisplayName(string pchDisplayName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetDisplayName(m_pSteamMusicRemote,pchDisplayName); + return result; +} +public override bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool EnablePlayPrevious(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayPrevious(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlayNext(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayNext(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableQueue(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableQueue(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlaylists(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlaylists(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdatePlaybackStatus(int nStatus) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(m_pSteamMusicRemote,nStatus); + return result; +} +public override bool UpdateShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateVolume(float flValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateVolume(m_pSteamMusicRemote,flValue); + return result; +} +public override bool CurrentEntryWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(m_pSteamMusicRemote); + return result; +} +public override bool CurrentEntryIsAvailable(bool bAvailable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(m_pSteamMusicRemote,bAvailable); + return result; +} +public override bool UpdateCurrentEntryText(string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(m_pSteamMusicRemote,pchText); + return result; +} +public override bool UpdateCurrentEntryElapsedSeconds(int nValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(m_pSteamMusicRemote,nValue); + return result; +} +public override bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool CurrentEntryDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(m_pSteamMusicRemote); + return result; +} +public override bool QueueWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetQueueEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetQueueEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetQueueEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetQueueEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentQueueEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool QueueDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueDidChange(m_pSteamMusicRemote); + return result; +} +public override bool PlaylistWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetPlaylistEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPlaylistEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentPlaylistEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool PlaylistDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistDidChange(m_pSteamMusicRemote); + return result; +} +} + + +public class CSteamHTTP : ISteamHTTP +{ +public CSteamHTTP(IntPtr SteamHTTP) +{ + m_pSteamHTTP = SteamHTTP; +} +IntPtr m_pSteamHTTP; + +public override IntPtr GetIntPtr() { return m_pSteamHTTP; } + +private void CheckIfUsable() +{ + if (m_pSteamHTTP == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateHTTPRequest(m_pSteamHTTP,eHTTPRequestMethod,pchAbsoluteURL); + return result; +} +public override bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(m_pSteamHTTP,hRequest,ulContextValue); + return result; +} +public override bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(m_pSteamHTTP,hRequest,unTimeoutSeconds); + return result; +} +public override bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pchHeaderValue); + return result; +} +public override bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(m_pSteamHTTP,hRequest,pchParamName,pchParamValue); + return result; +} +public override bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequest(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool DeferHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_DeferHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool PrioritizeHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize) +{ + CheckIfUsable(); + unResponseHeaderSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(m_pSteamHTTP,hRequest,pchHeaderName,ref unResponseHeaderSize); + return result; +} +public override bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pHeaderValueBuffer,unBufferSize); + return result; +} +public override bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize) +{ + CheckIfUsable(); + unBodySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(m_pSteamHTTP,hRequest,ref unBodySize); + return result; +} +public override bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(m_pSteamHTTP,hRequest,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(m_pSteamHTTP,hRequest,cOffset,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool ReleaseHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut) +{ + CheckIfUsable(); + pflPercentOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(m_pSteamHTTP,hRequest,ref pflPercentOut); + return result; +} +public override bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(m_pSteamHTTP,hRequest,pchContentType,pubBody,unBodyLen); + return result; +} +public override uint CreateCookieContainer(bool bAllowResponsesToModify) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateCookieContainer(m_pSteamHTTP,bAllowResponsesToModify); + return result; +} +public override bool ReleaseCookieContainer(uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseCookieContainer(m_pSteamHTTP,hCookieContainer); + return result; +} +public override bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetCookie(m_pSteamHTTP,hCookieContainer,pchHost,pchUrl,pchCookie); + return result; +} +public override bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(m_pSteamHTTP,hRequest,hCookieContainer); + return result; +} +public override bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(m_pSteamHTTP,hRequest,pchUserAgentInfo); + return result; +} +public override bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(m_pSteamHTTP,hRequest,bRequireVerifiedCertificate); + return result; +} +public override bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(m_pSteamHTTP,hRequest,unMilliseconds); + return result; +} +public override bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut) +{ + CheckIfUsable(); + pbWasTimedOut = false; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(m_pSteamHTTP,hRequest,ref pbWasTimedOut); + return result; +} +} + + +public class CSteamUnifiedMessages : ISteamUnifiedMessages +{ +public CSteamUnifiedMessages(IntPtr SteamUnifiedMessages) +{ + m_pSteamUnifiedMessages = SteamUnifiedMessages; +} +IntPtr m_pSteamUnifiedMessages; + +public override IntPtr GetIntPtr() { return m_pSteamUnifiedMessages; } + +private void CheckIfUsable() +{ + if (m_pSteamUnifiedMessages == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendMethod(m_pSteamUnifiedMessages,pchServiceMethod,pRequestBuffer,unRequestBufferSize,unContext); + return result; +} +public override bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult) +{ + CheckIfUsable(); + punResponseSize = 0; + peResult = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(m_pSteamUnifiedMessages,hHandle,ref punResponseSize,ref peResult); + return result; +} +public override bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(m_pSteamUnifiedMessages,hHandle,pResponseBuffer,unResponseBufferSize,bAutoRelease); + return result; +} +public override bool ReleaseMethod(ulong hHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_ReleaseMethod(m_pSteamUnifiedMessages,hHandle); + return result; +} +public override bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendNotification(m_pSteamUnifiedMessages,pchServiceNotification,pNotificationBuffer,unNotificationBufferSize); + return result; +} +} + + +public class CSteamController : ISteamController +{ +public CSteamController(IntPtr SteamController) +{ + m_pSteamController = SteamController; +} +IntPtr m_pSteamController; + +public override IntPtr GetIntPtr() { return m_pSteamController; } + +private void CheckIfUsable() +{ + if (m_pSteamController == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Init(m_pSteamController); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Shutdown(m_pSteamController); + return result; +} +public override void RunFrame() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_RunFrame(m_pSteamController); +} +public override int GetConnectedControllers(ref ulong handlesOut) +{ + CheckIfUsable(); + handlesOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetConnectedControllers(m_pSteamController,ref handlesOut); + return result; +} +public override bool ShowBindingPanel(ulong controllerHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowBindingPanel(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetActionSetHandle(string pszActionSetName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetActionSetHandle(m_pSteamController,pszActionSetName); + return result; +} +public override void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_ActivateActionSet(m_pSteamController,controllerHandle,actionSetHandle); +} +public override ulong GetCurrentActionSet(ulong controllerHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetCurrentActionSet(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetDigitalActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle) +{ + CheckIfUsable(); + ControllerDigitalActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionData(m_pSteamController,controllerHandle,digitalActionHandle); + return result; +} +public override int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,digitalActionHandle,ref originsOut); + return result; +} +public override ulong GetAnalogActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle) +{ + CheckIfUsable(); + ControllerAnalogActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionData(m_pSteamController,controllerHandle,analogActionHandle); + return result; +} +public override int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,analogActionHandle,ref originsOut); + return result; +} +public override void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_StopAnalogActionMomentum(m_pSteamController,controllerHandle,eAction); +} +public override void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec); +} +public override void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerRepeatedHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec,usOffMicroSec,unRepeat,nFlags); +} +public override int GetGamepadIndexForController(ulong ulControllerHandle) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamController_GetGamepadIndexForController(m_pSteamController,ulControllerHandle); + return result; +} +public override ulong GetControllerForGamepadIndex(int nIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetControllerForGamepadIndex(m_pSteamController,nIndex); + return result; +} +public override ControllerMotionData_t GetMotionData(ulong controllerHandle) +{ + CheckIfUsable(); + ControllerMotionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetMotionData(m_pSteamController,controllerHandle); + return result; +} +public override bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowDigitalActionOrigins(m_pSteamController,controllerHandle,digitalActionHandle,flScale,flXPosition,flYPosition); + return result; +} +public override bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowAnalogActionOrigins(m_pSteamController,controllerHandle,analogActionHandle,flScale,flXPosition,flYPosition); + return result; +} +} + + +public class CSteamUGC : ISteamUGC +{ +public CSteamUGC(IntPtr SteamUGC) +{ + m_pSteamUGC = SteamUGC; +} +IntPtr m_pSteamUGC; + +public override IntPtr GetIntPtr() { return m_pSteamUGC; } + +private void CheckIfUsable() +{ + if (m_pSteamUGC == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(m_pSteamUGC,unAccountID,eListType,eMatchingUGCType,eSortOrder,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(m_pSteamUGC,eQueryType,eMatchingeMatchingUGCTypeFileType,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong SendQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SendQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCResult(m_pSteamUGC,handle,index,ref pDetails); + return result; +} +public override bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchURL = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCMetadata(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchMetadata = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCChildren(m_pSteamUGC,handle,index,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue) +{ + CheckIfUsable(); + pStatValue = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCStatistic(m_pSteamUGC,handle,index,eStatType,ref pStatValue); + return result; +} +public override uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType) +{ + CheckIfUsable(); + pPreviewType = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,pStrBuffer2,cchOriginalFileNameSize,ref pPreviewType); + pchURLOrVideoID = pStrBuffer1.ToString(); + pchOriginalFileName = pStrBuffer2.ToString(); + return result; +} +public override uint GetQueryUGCNumKeyValueTags(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(m_pSteamUGC,handle,index,keyValueTagIndex,pStrBuffer1,2048,pStrBuffer2,2048); + pchKey = pStrBuffer1.ToString(); + pchValue = pStrBuffer2.ToString(); + return result; +} +public override bool ReleaseQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool AddRequiredTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool AddExcludedTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddExcludedTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnOnlyIDs(m_pSteamUGC,handle,bReturnOnlyIDs); + return result; +} +public override bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnKeyValueTags(m_pSteamUGC,handle,bReturnKeyValueTags); + return result; +} +public override bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnLongDescription(m_pSteamUGC,handle,bReturnLongDescription); + return result; +} +public override bool SetReturnMetadata(ulong handle,bool bReturnMetadata) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnMetadata(m_pSteamUGC,handle,bReturnMetadata); + return result; +} +public override bool SetReturnChildren(ulong handle,bool bReturnChildren) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnChildren(m_pSteamUGC,handle,bReturnChildren); + return result; +} +public override bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(m_pSteamUGC,handle,bReturnAdditionalPreviews); + return result; +} +public override bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnTotalOnly(m_pSteamUGC,handle,bReturnTotalOnly); + return result; +} +public override bool SetLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetAllowCachedResponse(m_pSteamUGC,handle,unMaxAgeSeconds); + return result; +} +public override bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetCloudFileNameFilter(m_pSteamUGC,handle,pMatchCloudFileName); + return result; +} +public override bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetMatchAnyTag(m_pSteamUGC,handle,bMatchAnyTag); + return result; +} +public override bool SetSearchText(ulong handle,string pSearchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetSearchText(m_pSteamUGC,handle,pSearchText); + return result; +} +public override bool SetRankedByTrendDays(ulong handle,uint unDays) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetRankedByTrendDays(m_pSteamUGC,handle,unDays); + return result; +} +public override bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredKeyValueTag(m_pSteamUGC,handle,pKey,pValue); + return result; +} +public override ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RequestUGCDetails(m_pSteamUGC,nPublishedFileID,unMaxAgeSeconds); + return result; +} +public override ulong CreateItem(uint nConsumerAppId,uint eFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateItem(m_pSteamUGC,nConsumerAppId,eFileType); + return result; +} +public override ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartItemUpdate(m_pSteamUGC,nConsumerAppId,nPublishedFileID); + return result; +} +public override bool SetItemTitle(ulong handle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTitle(m_pSteamUGC,handle,pchTitle); + return result; +} +public override bool SetItemDescription(ulong handle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemDescription(m_pSteamUGC,handle,pchDescription); + return result; +} +public override bool SetItemUpdateLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemUpdateLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetItemMetadata(ulong handle,string pchMetaData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemMetadata(m_pSteamUGC,handle,pchMetaData); + return result; +} +public override bool SetItemVisibility(ulong handle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemVisibility(m_pSteamUGC,handle,eVisibility); + return result; +} +public override bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTags(m_pSteamUGC,updateHandle,ref pTags); + return result; +} +public override bool SetItemContent(ulong handle,string pszContentFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemContent(m_pSteamUGC,handle,pszContentFolder); + return result; +} +public override bool SetItemPreview(ulong handle,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemPreview(m_pSteamUGC,handle,pszPreviewFile); + return result; +} +public override bool RemoveItemKeyValueTags(ulong handle,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemKeyValueTags(m_pSteamUGC,handle,pchKey); + return result; +} +public override bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemKeyValueTag(m_pSteamUGC,handle,pchKey,pchValue); + return result; +} +public override bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewFile(m_pSteamUGC,handle,pszPreviewFile,type); + return result; +} +public override bool AddItemPreviewVideo(ulong handle,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewVideo(m_pSteamUGC,handle,pszVideoID); + return result; +} +public override bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewFile(m_pSteamUGC,handle,index,pszPreviewFile); + return result; +} +public override bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewVideo(m_pSteamUGC,handle,index,pszVideoID); + return result; +} +public override bool RemoveItemPreview(ulong handle,uint index) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemPreview(m_pSteamUGC,handle,index); + return result; +} +public override ulong SubmitItemUpdate(ulong handle,string pchChangeNote) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubmitItemUpdate(m_pSteamUGC,handle,pchChangeNote); + return result; +} +public override uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesProcessed = 0; + punBytesTotal = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemUpdateProgress(m_pSteamUGC,handle,ref punBytesProcessed,ref punBytesTotal); + return result; +} +public override ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SetUserItemVote(m_pSteamUGC,nPublishedFileID,bVoteUp); + return result; +} +public override ulong GetUserItemVote(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_GetUserItemVote(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemToFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemFromFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong SubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong UnsubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_UnsubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override uint GetNumSubscribedItems() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetNumSubscribedItems(m_pSteamUGC); + return result; +} +public override uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetSubscribedItems(m_pSteamUGC,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override uint GetItemState(ulong nPublishedFileID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemState(m_pSteamUGC,nPublishedFileID); + return result; +} +public override bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp) +{ + CheckIfUsable(); + punSizeOnDisk = 0; + punTimeStamp = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemInstallInfo(m_pSteamUGC,nPublishedFileID,ref punSizeOnDisk,pStrBuffer1,2048,ref punTimeStamp); + pchFolder = pStrBuffer1.ToString(); + return result; +} +public override bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemDownloadInfo(m_pSteamUGC,nPublishedFileID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override bool DownloadItem(ulong nPublishedFileID,bool bHighPriority) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_DownloadItem(m_pSteamUGC,nPublishedFileID,bHighPriority); + return result; +} +public override bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_BInitWorkshopForGameServer(m_pSteamUGC,unWorkshopDepotID,pszFolder); + return result; +} +public override void SuspendDownloads(bool bSuspend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUGC_SuspendDownloads(m_pSteamUGC,bSuspend); +} +public override ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTrackingForAllItems() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(m_pSteamUGC); + return result; +} +} + + +public class CSteamAppList : ISteamAppList +{ +public CSteamAppList(IntPtr SteamAppList) +{ + m_pSteamAppList = SteamAppList; +} +IntPtr m_pSteamAppList; + +public override IntPtr GetIntPtr() { return m_pSteamAppList; } + +private void CheckIfUsable() +{ + if (m_pSteamAppList == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetNumInstalledApps() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetNumInstalledApps(m_pSteamAppList); + return result; +} +public override uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs) +{ + CheckIfUsable(); + pvecAppID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetInstalledApps(m_pSteamAppList,ref pvecAppID,unMaxAppIDs); + return result; +} +public override int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppName(m_pSteamAppList,nAppID,pchName,cchNameMax); + return result; +} +public override int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppInstallDir(m_pSteamAppList,nAppID,pchDirectory,cchNameMax); + return result; +} +public override int GetAppBuildId(uint nAppID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppBuildId(m_pSteamAppList,nAppID); + return result; +} +} + + +public class CSteamHTMLSurface : ISteamHTMLSurface +{ +public CSteamHTMLSurface(IntPtr SteamHTMLSurface) +{ + m_pSteamHTMLSurface = SteamHTMLSurface; +} +IntPtr m_pSteamHTMLSurface; + +public override IntPtr GetIntPtr() { return m_pSteamHTMLSurface; } + +private void CheckIfUsable() +{ + if (m_pSteamHTMLSurface == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void DestructISteamHTMLSurface() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(m_pSteamHTMLSurface); +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Init(m_pSteamHTMLSurface); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Shutdown(m_pSteamHTMLSurface); + return result; +} +public override ulong CreateBrowser(string pchUserAgent,string pchUserCSS) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CreateBrowser(m_pSteamHTMLSurface,pchUserAgent,pchUserCSS); + return result; +} +public override void RemoveBrowser(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_RemoveBrowser(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_LoadURL(m_pSteamHTMLSurface,unBrowserHandle,pchURL,pchPostData); +} +public override void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetSize(m_pSteamHTMLSurface,unBrowserHandle,unWidth,unHeight); +} +public override void StopLoad(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopLoad(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Reload(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Reload(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoBack(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoBack(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoForward(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoForward(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void AddHeader(uint unBrowserHandle,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AddHeader(m_pSteamHTMLSurface,unBrowserHandle,pchKey,pchValue); +} +public override void ExecuteJavascript(uint unBrowserHandle,string pchScript) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ExecuteJavascript(m_pSteamHTMLSurface,unBrowserHandle,pchScript); +} +public override void MouseUp(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseUp(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDown(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDown(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDoubleClick(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseMove(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseMove(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void MouseWheel(uint unBrowserHandle,int nDelta) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseWheel(m_pSteamHTMLSurface,unBrowserHandle,nDelta); +} +public override void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyDown(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyUp(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyChar(m_pSteamHTMLSurface,unBrowserHandle,cUnicodeChar,eHTMLKeyModifiers); +} +public override void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetVerticalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetKeyFocus(m_pSteamHTMLSurface,unBrowserHandle,bHasKeyFocus); +} +public override void ViewSource(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ViewSource(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void CopyToClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CopyToClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void PasteFromClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_PasteFromClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Find(m_pSteamHTMLSurface,unBrowserHandle,pchSearchStr,bCurrentlyInFind,bReverse); +} +public override void StopFind(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopFind(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GetLinkAtPosition(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetCookie(m_pSteamHTMLSurface,pchHostname,pchKey,pchValue,pchPath,nExpires,bSecure,bHTTPOnly); +} +public override void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(m_pSteamHTMLSurface,unBrowserHandle,flZoom,nPointX,nPointY); +} +public override void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetBackgroundMode(m_pSteamHTMLSurface,unBrowserHandle,bBackgroundMode); +} +public override void AllowStartRequest(uint unBrowserHandle,bool bAllowed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AllowStartRequest(m_pSteamHTMLSurface,unBrowserHandle,bAllowed); +} +public override void JSDialogResponse(uint unBrowserHandle,bool bResult) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_JSDialogResponse(m_pSteamHTMLSurface,unBrowserHandle,bResult); +} +} + + +public class CSteamInventory : ISteamInventory +{ +public CSteamInventory(IntPtr SteamInventory) +{ + m_pSteamInventory = SteamInventory; +} +IntPtr m_pSteamInventory; + +public override IntPtr GetIntPtr() { return m_pSteamInventory; } + +private void CheckIfUsable() +{ + if (m_pSteamInventory == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetResultStatus(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultStatus(m_pSteamInventory,resultHandle); + return result; +} +public override bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray) +{ + CheckIfUsable(); + uint punOutItemsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,null,ref punOutItemsArraySize); + pOutItemsArray= new SteamItemDetails_t[punOutItemsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,pOutItemsArray,ref punOutItemsArraySize); + return result; +} +public override uint GetResultTimestamp(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultTimestamp(m_pSteamInventory,resultHandle); + return result; +} +public override bool CheckResultSteamID(int resultHandle,ulong steamIDExpected) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_CheckResultSteamID(m_pSteamInventory,resultHandle,steamIDExpected); + return result; +} +public override void DestroyResult(int resultHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_DestroyResult(m_pSteamInventory,resultHandle); +} +public override bool GetAllItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetAllItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsByID(m_pSteamInventory,ref pResultHandle,pInstanceIDs,(uint) pInstanceIDs.Length); + return result; +} +public override bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize) +{ + CheckIfUsable(); + punOutBufferSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SerializeResult(m_pSteamInventory,resultHandle,pOutBuffer,ref punOutBufferSize); + return result; +} +public override bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE) +{ + CheckIfUsable(); + pOutResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_DeserializeResult(m_pSteamInventory,ref pOutResultHandle,pBuffer,unBufferSize,bRESERVED_MUST_BE_FALSE); + return result; +} +public override bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GenerateItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,punArrayQuantity,(uint) punArrayQuantity.Length); + return result; +} +public override bool GrantPromoItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GrantPromoItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool AddPromoItem(ref int pResultHandle,int itemDef) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItem(m_pSteamInventory,ref pResultHandle,itemDef); + return result; +} +public override bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,(uint) pArrayItemDefs.Length); + return result; +} +public override bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ConsumeItem(m_pSteamInventory,ref pResultHandle,itemConsume,unQuantity); + return result; +} +public override bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ExchangeItems(m_pSteamInventory,ref pResultHandle,pArrayGenerate,punArrayGenerateQuantity,(uint) punArrayGenerateQuantity.Length,pArrayDestroy,punArrayDestroyQuantity,(uint) punArrayDestroyQuantity.Length); + return result; +} +public override bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TransferItemQuantity(m_pSteamInventory,ref pResultHandle,itemIdSource,unQuantity,itemIdDest); + return result; +} +public override void SendItemDropHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_SendItemDropHeartbeat(m_pSteamInventory); +} +public override bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TriggerItemDrop(m_pSteamInventory,ref pResultHandle,dropListDefinition); + return result; +} +public override bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TradeItems(m_pSteamInventory,ref pResultHandle,steamIDTradePartner,pArrayGive,pArrayGiveQuantity,(uint) pArrayGiveQuantity.Length,pArrayGet,pArrayGetQuantity,(uint) pArrayGetQuantity.Length); + return result; +} +public override bool LoadItemDefinitions() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_LoadItemDefinitions(m_pSteamInventory); + return result; +} +public override bool GetItemDefinitionIDs(out int [] pItemDefIDs) +{ + CheckIfUsable(); + uint punItemDefIDsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,null,ref punItemDefIDsArraySize); + pItemDefIDs= new int[punItemDefIDsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,pItemDefIDs,ref punItemDefIDsArraySize); + return result; +} +public override bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer) +{ + CheckIfUsable(); + uint punValueBufferSizeOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,null,ref punValueBufferSizeOut); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); + pchValueBuffer = pStrBuffer1.ToString(); + return result; +} +} + + +public class CSteamVideo : ISteamVideo +{ +public CSteamVideo(IntPtr SteamVideo) +{ + m_pSteamVideo = SteamVideo; +} +IntPtr m_pSteamVideo; + +public override IntPtr GetIntPtr() { return m_pSteamVideo; } + +private void CheckIfUsable() +{ + if (m_pSteamVideo == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void GetVideoURL(uint unVideoAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamVideo_GetVideoURL(m_pSteamVideo,unVideoAppID); +} +public override bool IsBroadcasting(ref int pnNumViewers) +{ + CheckIfUsable(); + pnNumViewers = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamVideo_IsBroadcasting(m_pSteamVideo,ref pnNumViewers); + return result; +} +} + + +public class CSteamGameServer : ISteamGameServer +{ +public CSteamGameServer(IntPtr SteamGameServer) +{ + m_pSteamGameServer = SteamGameServer; +} +IntPtr m_pSteamGameServer; + +public override IntPtr GetIntPtr() { return m_pSteamGameServer; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServer == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_InitGameServer(m_pSteamGameServer,unIP,usGamePort,usQueryPort,unFlags,nGameAppId,pchVersionString); + return result; +} +public override void SetProduct(string pszProduct) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetProduct(m_pSteamGameServer,pszProduct); +} +public override void SetGameDescription(string pszGameDescription) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameDescription(m_pSteamGameServer,pszGameDescription); +} +public override void SetModDir(string pszModDir) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetModDir(m_pSteamGameServer,pszModDir); +} +public override void SetDedicatedServer(bool bDedicated) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetDedicatedServer(m_pSteamGameServer,bDedicated); +} +public override void LogOn(string pszToken) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOn(m_pSteamGameServer,pszToken); +} +public override void LogOnAnonymous() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOnAnonymous(m_pSteamGameServer); +} +public override void LogOff() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOff(m_pSteamGameServer); +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BLoggedOn(m_pSteamGameServer); + return result; +} +public override bool BSecure() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BSecure(m_pSteamGameServer); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetSteamID(m_pSteamGameServer); + return result; +} +public override bool WasRestartRequested() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_WasRestartRequested(m_pSteamGameServer); + return result; +} +public override void SetMaxPlayerCount(int cPlayersMax) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMaxPlayerCount(m_pSteamGameServer,cPlayersMax); +} +public override void SetBotPlayerCount(int cBotplayers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetBotPlayerCount(m_pSteamGameServer,cBotplayers); +} +public override void SetServerName(string pszServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetServerName(m_pSteamGameServer,pszServerName); +} +public override void SetMapName(string pszMapName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMapName(m_pSteamGameServer,pszMapName); +} +public override void SetPasswordProtected(bool bPasswordProtected) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetPasswordProtected(m_pSteamGameServer,bPasswordProtected); +} +public override void SetSpectatorPort(char unSpectatorPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorPort(m_pSteamGameServer,unSpectatorPort); +} +public override void SetSpectatorServerName(string pszSpectatorServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorServerName(m_pSteamGameServer,pszSpectatorServerName); +} +public override void ClearAllKeyValues() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ClearAllKeyValues(m_pSteamGameServer); +} +public override void SetKeyValue(string pKey,string pValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetKeyValue(m_pSteamGameServer,pKey,pValue); +} +public override void SetGameTags(string pchGameTags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameTags(m_pSteamGameServer,pchGameTags); +} +public override void SetGameData(string pchGameData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameData(m_pSteamGameServer,pchGameData); +} +public override void SetRegion(string pszRegion) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetRegion(m_pSteamGameServer,pszRegion); +} +public override bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(m_pSteamGameServer,unIPClient,pvAuthBlob,cubAuthBlobSize,ref pSteamIDUser); + return result; +} +public override ulong CreateUnauthenticatedUserConnection() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(m_pSteamGameServer); + return result; +} +public override void SendUserDisconnect(ulong steamIDUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserDisconnect(m_pSteamGameServer,steamIDUser); +} +public override bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BUpdateUserData(m_pSteamGameServer,steamIDUser,pchPlayerName,uScore); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetAuthSessionTicket(m_pSteamGameServer,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_BeginAuthSession(m_pSteamGameServer,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EndAuthSession(m_pSteamGameServer,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_CancelAuthTicket(m_pSteamGameServer,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_UserHasLicenseForApp(m_pSteamGameServer,steamID,appID); + return result; +} +public override bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_RequestUserGroupStatus(m_pSteamGameServer,steamIDUser,steamIDGroup); + return result; +} +public override void GetGameplayStats() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_GetGameplayStats(m_pSteamGameServer); +} +public override ulong GetServerReputation() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetServerReputation(m_pSteamGameServer); + return result; +} +public override uint GetPublicIP() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetPublicIP(m_pSteamGameServer); + return result; +} +public override bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_HandleIncomingPacket(m_pSteamGameServer,pData,cbData,srcIP,srcPort); + return result; +} +public override int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort) +{ + CheckIfUsable(); + pNetAdr = 0; + pPort = (char) 0; + int result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetNextOutgoingPacket(m_pSteamGameServer,pOut,cbMaxOut,ref pNetAdr,ref pPort); + return result; +} +public override void EnableHeartbeats(bool bActive) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EnableHeartbeats(m_pSteamGameServer,bActive); +} +public override void SetHeartbeatInterval(int iHeartbeatInterval) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetHeartbeatInterval(m_pSteamGameServer,iHeartbeatInterval); +} +public override void ForceHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ForceHeartbeat(m_pSteamGameServer); +} +public override ulong AssociateWithClan(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_AssociateWithClan(m_pSteamGameServer,steamIDClan); + return result; +} +public override ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(m_pSteamGameServer,steamIDNewPlayer); + return result; +} +} + + +public class CSteamGameServerStats : ISteamGameServerStats +{ +public CSteamGameServerStats(IntPtr SteamGameServerStats) +{ + m_pSteamGameServerStats = SteamGameServerStats; +} +IntPtr m_pSteamGameServerStats; + +public override IntPtr GetIntPtr() { return m_pSteamGameServerStats; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServerStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_RequestUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool SetUserStat(ulong steamIDUser,string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,nData); + return result; +} +public override bool SetUserStat0(ulong steamIDUser,string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,fData); + return result; +} +public override bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(m_pSteamGameServerStats,steamIDUser,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool SetUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override bool ClearUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_ClearUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override ulong StoreUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_StoreUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +} + + +public class CUserStatsReceived_t_Callback +{ + public CUserStatsReceived_t_Callback() { } + ~CUserStatsReceived_t_Callback() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_Callback func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallback(func); + } +} +public class CRemoteStorageFileReadAsyncComplete_t_CallResult +{ + public CRemoteStorageFileReadAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileReadAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CFileDetailsResult_t_CallResult +{ + public CFileDetailsResult_t_CallResult() { } + ~CFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsStored_t_CallResult +{ + public CGSStatsStored_t_CallResult() { } + ~CGSStatsStored_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsStored_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsStored_t_SetCallResult(hAPICall, func); + } +} +public class CHTML_BrowserReady_t_CallResult +{ + public CHTML_BrowserReady_t_CallResult() { } + ~CHTML_BrowserReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_HTML_BrowserReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsGetFollowerCount_t_CallResult +{ + public CFriendsGetFollowerCount_t_CallResult() { } + ~CFriendsGetFollowerCount_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsGetFollowerCount_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsIsFollowing_t_CallResult +{ + public CFriendsIsFollowing_t_CallResult() { } + ~CFriendsIsFollowing_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsIsFollowing_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyMatchList_t_CallResult +{ + public CLobbyMatchList_t_CallResult() { } + ~CLobbyMatchList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyMatchList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdatePublishedFileResult_t_CallResult +{ + public CRemoteStorageUpdatePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUpdatePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CStoreAuthURLResponse_t_CallResult +{ + public CStoreAuthURLResponse_t_CallResult() { } + ~CStoreAuthURLResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StoreAuthURLResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyCreated_t_CallResult +{ + public CLobbyCreated_t_CallResult() { } + ~CLobbyCreated_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyCreated_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyCreated_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileWriteAsyncComplete_t_CallResult +{ + public CRemoteStorageFileWriteAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileWriteAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDeletePublishedFileResult_t_CallResult +{ + public CRemoteStorageDeletePublishedFileResult_t_CallResult() { } + ~CRemoteStorageDeletePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedFileDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDownloadUGCResult_t_CallResult +{ + public CRemoteStorageDownloadUGCResult_t_CallResult() { } + ~CRemoteStorageDownloadUGCResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_SetCallResult(hAPICall, func); + } +} +public class CSteamUGCQueryCompleted_t_CallResult +{ + public CSteamUGCQueryCompleted_t_CallResult() { } + ~CSteamUGCQueryCompleted_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamUGCQueryCompleted_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileShareResult_t_CallResult +{ + public CRemoteStorageFileShareResult_t_CallResult() { } + ~CRemoteStorageFileShareResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileShareResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyEnter_t_CallResult +{ + public CLobbyEnter_t_CallResult() { } + ~CLobbyEnter_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyEnter_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyEnter_t_SetCallResult(hAPICall, func); + } +} +public class CSubmitItemUpdateResult_t_CallResult +{ + public CSubmitItemUpdateResult_t_CallResult() { } + ~CSubmitItemUpdateResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SubmitItemUpdateResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_SetCallResult(hAPICall, func); + } +} +public class CNumberOfCurrentPlayers_t_CallResult +{ + public CNumberOfCurrentPlayers_t_CallResult() { } + ~CNumberOfCurrentPlayers_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_NumberOfCurrentPlayers_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsReceived_t_CallResult +{ + public CGSStatsReceived_t_CallResult() { } + ~CGSStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoresDownloaded_t_CallResult +{ + public CLeaderboardScoresDownloaded_t_CallResult() { } + ~CLeaderboardScoresDownloaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoresDownloaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult +{ + public CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() { } + ~CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CCreateItemResult_t_CallResult +{ + public CCreateItemResult_t_CallResult() { } + ~CCreateItemResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CreateItemResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCreateItemResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetUserItemVoteResult_t_CallResult +{ + public CSetUserItemVoteResult_t_CallResult() { } + ~CSetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CComputeNewPlayerCompatibilityResult_t_CallResult +{ + public CComputeNewPlayerCompatibilityResult_t_CallResult() { } + ~CComputeNewPlayerCompatibilityResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoreUploaded_t_CallResult +{ + public CLeaderboardScoreUploaded_t_CallResult() { } + ~CLeaderboardScoreUploaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoreUploaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalAchievementPercentagesReady_t_CallResult +{ + public CGlobalAchievementPercentagesReady_t_CallResult() { } + ~CGlobalAchievementPercentagesReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalStatsReceived_t_CallResult +{ + public CGlobalStatsReceived_t_CallResult() { } + ~CGlobalStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult +{ + public CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() { } + ~CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CClanOfficerListResponse_t_CallResult +{ + public CClanOfficerListResponse_t_CallResult() { } + ~CClanOfficerListResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ClanOfficerListResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStoragePublishFileProgress_t_CallResult +{ + public CRemoteStoragePublishFileProgress_t_CallResult() { } + ~CRemoteStoragePublishFileProgress_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSReputation_t_CallResult +{ + public CGSReputation_t_CallResult() { } + ~CGSReputation_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSReputation_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSReputation_t_SetCallResult(hAPICall, func); + } +} +public class CUserFavoriteItemsListChanged_t_CallResult +{ + public CUserFavoriteItemsListChanged_t_CallResult() { } + ~CUserFavoriteItemsListChanged_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserFavoriteItemsListChanged_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_SetCallResult(hAPICall, func); + } +} +public class CEncryptedAppTicketResponse_t_CallResult +{ + public CEncryptedAppTicketResponse_t_CallResult() { } + ~CEncryptedAppTicketResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_EncryptedAppTicketResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSetUserPublishedFileActionResult_t_CallResult +{ + public CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() { } + ~CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsEnumerateFollowingList_t_CallResult +{ + public CFriendsEnumerateFollowingList_t_CallResult() { } + ~CFriendsEnumerateFollowingList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsEnumerateFollowingList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageSubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageSubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CGetUserItemVoteResult_t_CallResult +{ + public CGetUserItemVoteResult_t_CallResult() { } + ~CGetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CAssociateWithClanResult_t_CallResult +{ + public CAssociateWithClanResult_t_CallResult() { } + ~CAssociateWithClanResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AssociateWithClanResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardUGCSet_t_CallResult +{ + public CLeaderboardUGCSet_t_CallResult() { } + ~CLeaderboardUGCSet_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardUGCSet_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_SetCallResult(hAPICall, func); + } +} +public class CCheckFileSignature_t_CallResult +{ + public CCheckFileSignature_t_CallResult() { } + ~CCheckFileSignature_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CheckFileSignature_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUnsubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetPersonaNameResponse_t_CallResult +{ + public CSetPersonaNameResponse_t_CallResult() { } + ~CSetPersonaNameResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetPersonaNameResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_SetCallResult(hAPICall, func); + } +} +public class CUserStatsReceived_t_CallResult +{ + public CUserStatsReceived_t_CallResult() { } + ~CUserStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CJoinClanChatRoomCompletionResult_t_CallResult +{ + public CJoinClanChatRoomCompletionResult_t_CallResult() { } + ~CJoinClanChatRoomCompletionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardFindResult_t_CallResult +{ + public CLeaderboardFindResult_t_CallResult() { } + ~CLeaderboardFindResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardFindResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_SetCallResult(hAPICall, func); + } +} +public class SteamAPIInterop +{ +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RestartAppIfNecessary")] +internal static extern void SteamAPI_RestartAppIfNecessary(uint unOwnAppID ); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_Init")] +internal static extern void SteamAPI_Init(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RunCallbacks")] +internal static extern void SteamAPI_RunCallbacks(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RegisterCallback")] +internal static extern void SteamAPI_RegisterCallback(IntPtr pCallback, int iCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_UnregisterCallback")] +internal static extern void SteamAPI_UnregisterCallback(IntPtr pCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamClient")] +internal static extern IntPtr SteamClient(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUser")] +internal static extern IntPtr SteamUser(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamFriends")] +internal static extern IntPtr SteamFriends(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUtils")] +internal static extern IntPtr SteamUtils(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmaking")] +internal static extern IntPtr SteamMatchmaking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServerListResponse")] +internal static extern IntPtr SteamMatchmakingServerListResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPingResponse")] +internal static extern IntPtr SteamMatchmakingPingResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPlayersResponse")] +internal static extern IntPtr SteamMatchmakingPlayersResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingRulesResponse")] +internal static extern IntPtr SteamMatchmakingRulesResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServers")] +internal static extern IntPtr SteamMatchmakingServers(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamRemoteStorage")] +internal static extern IntPtr SteamRemoteStorage(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUserStats")] +internal static extern IntPtr SteamUserStats(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamApps")] +internal static extern IntPtr SteamApps(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamNetworking")] +internal static extern IntPtr SteamNetworking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamScreenshots")] +internal static extern IntPtr SteamScreenshots(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusic")] +internal static extern IntPtr SteamMusic(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusicRemote")] +internal static extern IntPtr SteamMusicRemote(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTTP")] +internal static extern IntPtr SteamHTTP(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUnifiedMessages")] +internal static extern IntPtr SteamUnifiedMessages(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamController")] +internal static extern IntPtr SteamController(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUGC")] +internal static extern IntPtr SteamUGC(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAppList")] +internal static extern IntPtr SteamAppList(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTMLSurface")] +internal static extern IntPtr SteamHTMLSurface(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamInventory")] +internal static extern IntPtr SteamInventory(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamVideo")] +internal static extern IntPtr SteamVideo(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServer")] +internal static extern IntPtr SteamGameServer(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServerStats")] +internal static extern IntPtr SteamGameServerStats(); +} + + +public enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + k_EUniverseMax = 5, +} +public enum EResult +{ + k_EResultOK = 1, + k_EResultFail = 2, + k_EResultNoConnection = 3, + k_EResultInvalidPassword = 5, + k_EResultLoggedInElsewhere = 6, + k_EResultInvalidProtocolVer = 7, + k_EResultInvalidParam = 8, + k_EResultFileNotFound = 9, + k_EResultBusy = 10, + k_EResultInvalidState = 11, + k_EResultInvalidName = 12, + k_EResultInvalidEmail = 13, + k_EResultDuplicateName = 14, + k_EResultAccessDenied = 15, + k_EResultTimeout = 16, + k_EResultBanned = 17, + k_EResultAccountNotFound = 18, + k_EResultInvalidSteamID = 19, + k_EResultServiceUnavailable = 20, + k_EResultNotLoggedOn = 21, + k_EResultPending = 22, + k_EResultEncryptionFailure = 23, + k_EResultInsufficientPrivilege = 24, + k_EResultLimitExceeded = 25, + k_EResultRevoked = 26, + k_EResultExpired = 27, + k_EResultAlreadyRedeemed = 28, + k_EResultDuplicateRequest = 29, + k_EResultAlreadyOwned = 30, + k_EResultIPNotFound = 31, + k_EResultPersistFailed = 32, + k_EResultLockingFailed = 33, + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, + k_EResultBlocked = 40, + k_EResultIgnored = 41, + k_EResultNoMatch = 42, + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, + k_EResultAccountNotFeatured = 45, + k_EResultAdministratorOK = 46, + k_EResultContentVersion = 47, + k_EResultTryAnotherCM = 48, + k_EResultPasswordRequiredToKickSession = 49, + k_EResultAlreadyLoggedInElsewhere = 50, + k_EResultSuspended = 51, + k_EResultCancelled = 52, + k_EResultDataCorruption = 53, + k_EResultDiskFull = 54, + k_EResultRemoteCallFailed = 55, + k_EResultPasswordUnset = 56, + k_EResultExternalAccountUnlinked = 57, + k_EResultPSNTicketInvalid = 58, + k_EResultExternalAccountAlreadyLinked = 59, + k_EResultRemoteFileConflict = 60, + k_EResultIllegalPassword = 61, + k_EResultSameAsPreviousValue = 62, + k_EResultAccountLogonDenied = 63, + k_EResultCannotUseOldPassword = 64, + k_EResultInvalidLoginAuthCode = 65, + k_EResultAccountLogonDeniedNoMail = 66, + k_EResultHardwareNotCapableOfIPT = 67, + k_EResultIPTInitError = 68, + k_EResultParentalControlRestricted = 69, + k_EResultFacebookQueryError = 70, + k_EResultExpiredLoginAuthCode = 71, + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, + k_EResultRequirePasswordReEntry = 77, + k_EResultValueOutOfRange = 78, + k_EResultUnexpectedError = 79, + k_EResultDisabled = 80, + k_EResultInvalidCEGSubmission = 81, + k_EResultRestrictedDevice = 82, + k_EResultRegionLocked = 83, + k_EResultRateLimitExceeded = 84, + k_EResultAccountLoginDeniedNeedTwoFactor = 85, + k_EResultItemDeleted = 86, + k_EResultAccountLoginDeniedThrottle = 87, + k_EResultTwoFactorCodeMismatch = 88, + k_EResultTwoFactorActivationCodeMismatch = 89, + k_EResultAccountAssociatedToMultiplePartners = 90, + k_EResultNotModified = 91, + k_EResultNoMobileDevice = 92, + k_EResultTimeNotSynced = 93, + k_EResultSmsCodeFailed = 94, + k_EResultAccountLimitExceeded = 95, + k_EResultAccountActivityLimitExceeded = 96, + k_EResultPhoneActivityLimitExceeded = 97, + k_EResultRefundToWallet = 98, + k_EResultEmailSendFailure = 99, + k_EResultNotSettled = 100, + k_EResultNeedCaptcha = 101, + k_EResultGSLTDenied = 102, + k_EResultGSOwnerDenied = 103, + k_EResultInvalidItemType = 104, + k_EResultIPBanned = 105, + k_EResultGSLTExpired = 106, +} +public enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, +} +public enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +} +public enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, + k_EBeginAuthSessionResultInvalidTicket = 1, + k_EBeginAuthSessionResultDuplicateRequest = 2, + k_EBeginAuthSessionResultInvalidVersion = 3, + k_EBeginAuthSessionResultGameMismatch = 4, + k_EBeginAuthSessionResultExpiredTicket = 5, +} +public enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, + k_EAuthSessionResponseUserNotConnectedToSteam = 1, + k_EAuthSessionResponseNoLicenseOrExpired = 2, + k_EAuthSessionResponseVACBanned = 3, + k_EAuthSessionResponseLoggedInElseWhere = 4, + k_EAuthSessionResponseVACCheckTimedOut = 5, + k_EAuthSessionResponseAuthTicketCanceled = 6, + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, + k_EAuthSessionResponseAuthTicketInvalid = 8, + k_EAuthSessionResponsePublisherIssuedBan = 9, +} +public enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, + k_EUserHasLicenseResultDoesNotHaveLicense = 1, + k_EUserHasLicenseResultNoAuth = 2, +} +public enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, + k_EAccountTypeMultiseat = 2, + k_EAccountTypeGameServer = 3, + k_EAccountTypeAnonGameServer = 4, + k_EAccountTypePending = 5, + k_EAccountTypeContentServer = 6, + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, + k_EAccountTypeAnonUser = 10, + k_EAccountTypeMax = 11, +} +public enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, + k_EAppReleaseState_Unavailable = 1, + k_EAppReleaseState_Prerelease = 2, + k_EAppReleaseState_PreloadOnly = 3, + k_EAppReleaseState_Released = 4, +} +public enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0, + k_EAppOwnershipFlags_OwnsLicense = 1, + k_EAppOwnershipFlags_FreeLicense = 2, + k_EAppOwnershipFlags_RegionRestricted = 4, + k_EAppOwnershipFlags_LowViolence = 8, + k_EAppOwnershipFlags_InvalidPlatform = 16, + k_EAppOwnershipFlags_SharedLicense = 32, + k_EAppOwnershipFlags_FreeWeekend = 64, + k_EAppOwnershipFlags_RetailLicense = 128, + k_EAppOwnershipFlags_LicenseLocked = 256, + k_EAppOwnershipFlags_LicensePending = 512, + k_EAppOwnershipFlags_LicenseExpired = 1024, + k_EAppOwnershipFlags_LicensePermanent = 2048, + k_EAppOwnershipFlags_LicenseRecurring = 4096, + k_EAppOwnershipFlags_LicenseCanceled = 8192, + k_EAppOwnershipFlags_AutoGrant = 16384, + k_EAppOwnershipFlags_PendingGift = 32768, + k_EAppOwnershipFlags_RentalNotActivated = 65536, + k_EAppOwnershipFlags_Rental = 131072, +} +public enum EAppType +{ + k_EAppType_Invalid = 0, + k_EAppType_Game = 1, + k_EAppType_Application = 2, + k_EAppType_Tool = 4, + k_EAppType_Demo = 8, + k_EAppType_Media_DEPRECATED = 16, + k_EAppType_DLC = 32, + k_EAppType_Guide = 64, + k_EAppType_Driver = 128, + k_EAppType_Config = 256, + k_EAppType_Hardware = 512, + k_EAppType_Franchise = 1024, + k_EAppType_Video = 2048, + k_EAppType_Plugin = 4096, + k_EAppType_Music = 8192, + k_EAppType_Series = 16384, + k_EAppType_Shortcut = 1073741824, + k_EAppType_DepotOnly = -2147483648, +} +public enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + k_ESteamUserStatTypeMAX = 6, +} +public enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, + k_EChatEntryTypeTyping = 2, + k_EChatEntryTypeInviteGame = 3, + k_EChatEntryTypeEmote = 4, + k_EChatEntryTypeLeftConversation = 6, + k_EChatEntryTypeEntered = 7, + k_EChatEntryTypeWasKicked = 8, + k_EChatEntryTypeWasBanned = 9, + k_EChatEntryTypeDisconnected = 10, + k_EChatEntryTypeHistoricalChat = 11, + k_EChatEntryTypeLinkBlocked = 14, +} +public enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, + k_EChatRoomEnterResponseDoesntExist = 2, + k_EChatRoomEnterResponseNotAllowed = 3, + k_EChatRoomEnterResponseFull = 4, + k_EChatRoomEnterResponseError = 5, + k_EChatRoomEnterResponseBanned = 6, + k_EChatRoomEnterResponseLimited = 7, + k_EChatRoomEnterResponseClanDisabled = 8, + k_EChatRoomEnterResponseCommunityBan = 9, + k_EChatRoomEnterResponseMemberBlockedYou = 10, + k_EChatRoomEnterResponseYouBlockedMember = 11, +} +public enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 4095, + k_EChatInstanceFlagClan = 524288, + k_EChatInstanceFlagLobby = 262144, + k_EChatInstanceFlagMMSLobby = 131072, +} +public enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1, + k_EMarketingMessageFlagsPlatformWindows = 2, + k_EMarketingMessageFlagsPlatformMac = 4, + k_EMarketingMessageFlagsPlatformLinux = 8, + k_EMarketingMessageFlagsPlatformRestrictions = 14, +} +public enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +} +public enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, + k_EBroadcastUploadResultOK = 1, + k_EBroadcastUploadResultInitFailed = 2, + k_EBroadcastUploadResultFrameFailed = 3, + k_EBroadcastUploadResultTimeout = 4, + k_EBroadcastUploadResultBandwidthExceeded = 5, + k_EBroadcastUploadResultLowFPS = 6, + k_EBroadcastUploadResultMissingKeyFrames = 7, + k_EBroadcastUploadResultNoConnection = 8, + k_EBroadcastUploadResultRelayFailed = 9, + k_EBroadcastUploadResultSettingsChanged = 10, + k_EBroadcastUploadResultMissingAudio = 11, + k_EBroadcastUploadResultTooFarBehind = 12, + k_EBroadcastUploadResultTranscodeBehind = 13, +} +public enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, + k_ELaunchOptionType_Default = 1, + k_ELaunchOptionType_SafeMode = 2, + k_ELaunchOptionType_Multiplayer = 3, + k_ELaunchOptionType_Config = 4, + k_ELaunchOptionType_OpenVR = 5, + k_ELaunchOptionType_Server = 6, + k_ELaunchOptionType_Editor = 7, + k_ELaunchOptionType_Manual = 8, + k_ELaunchOptionType_Benchmark = 9, + k_ELaunchOptionType_Option1 = 10, + k_ELaunchOptionType_Option2 = 11, + k_ELaunchOptionType_Option3 = 12, + k_ELaunchOptionType_OculusVR = 13, + k_ELaunchOptionType_OpenVROverlay = 14, + k_ELaunchOptionType_OSVR = 15, + k_ELaunchOptionType_Dialog = 1000, +} +public enum EVRHMDType +{ + k_eEVRHMDType_None = -1, + k_eEVRHMDType_Unknown = 0, + k_eEVRHMDType_HTC_Dev = 1, + k_eEVRHMDType_HTC_VivePre = 2, + k_eEVRHMDType_HTC_Vive = 3, + k_eEVRHMDType_HTC_Unknown = 20, + k_eEVRHMDType_Oculus_DK1 = 21, + k_eEVRHMDType_Oculus_DK2 = 22, + k_eEVRHMDType_Oculus_Rift = 23, + k_eEVRHMDType_Oculus_Unknown = 40, +} +public enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36, +} +public enum EFailureType +{ + k_EFailureFlushedCallbackQueue = 0, + k_EFailurePipeFail = 1, +} +public enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, + k_EFriendRelationshipMax = 8, +} +public enum EPersonaState +{ + k_EPersonaStateOffline = 0, + k_EPersonaStateOnline = 1, + k_EPersonaStateBusy = 2, + k_EPersonaStateAway = 3, + k_EPersonaStateSnooze = 4, + k_EPersonaStateLookingToTrade = 5, + k_EPersonaStateLookingToPlay = 6, + k_EPersonaStateMax = 7, +} +public enum EFriendFlags +{ + k_EFriendFlagNone = 0, + k_EFriendFlagBlocked = 1, + k_EFriendFlagFriendshipRequested = 2, + k_EFriendFlagImmediate = 4, + k_EFriendFlagClanMember = 8, + k_EFriendFlagOnGameServer = 16, + k_EFriendFlagRequestingFriendship = 128, + k_EFriendFlagRequestingInfo = 256, + k_EFriendFlagIgnored = 512, + k_EFriendFlagIgnoredFriend = 1024, + k_EFriendFlagSuggested = 2048, + k_EFriendFlagChatMember = 4096, + k_EFriendFlagAll = 65535, +} +public enum EUserRestriction +{ + k_nUserRestrictionNone = 0, + k_nUserRestrictionUnknown = 1, + k_nUserRestrictionAnyChat = 2, + k_nUserRestrictionVoiceChat = 4, + k_nUserRestrictionGroupChat = 8, + k_nUserRestrictionRating = 16, + k_nUserRestrictionGameInvites = 32, + k_nUserRestrictionTrading = 64, +} +public enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +} +public enum EPersonaChange +{ + k_EPersonaChangeName = 1, + k_EPersonaChangeStatus = 2, + k_EPersonaChangeComeOnline = 4, + k_EPersonaChangeGoneOffline = 8, + k_EPersonaChangeGamePlayed = 16, + k_EPersonaChangeGameServer = 32, + k_EPersonaChangeAvatar = 64, + k_EPersonaChangeJoinedSource = 128, + k_EPersonaChangeLeftSource = 256, + k_EPersonaChangeRelationshipChanged = 512, + k_EPersonaChangeNameFirstSet = 1024, + k_EPersonaChangeFacebookInfo = 2048, + k_EPersonaChangeNickname = 4096, + k_EPersonaChangeSteamLevel = 8192, +} +public enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, + k_ESteamAPICallFailureSteamGone = 0, + k_ESteamAPICallFailureNetworkFailure = 1, + k_ESteamAPICallFailureInvalidHandle = 2, + k_ESteamAPICallFailureMismatchedCallback = 3, +} +public enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1, +} +public enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1, +} +public enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +} +public enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond = 1, + eNoServersListedOnMasterServer = 2, +} +public enum ELobbyType +{ + k_ELobbyTypePrivate = 0, + k_ELobbyTypeFriendsOnly = 1, + k_ELobbyTypePublic = 2, + k_ELobbyTypeInvisible = 3, +} +public enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +} +public enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose = 0, + k_ELobbyDistanceFilterDefault = 1, + k_ELobbyDistanceFilterFar = 2, + k_ELobbyDistanceFilterWorldwide = 3, +} +public enum EChatMemberStateChange +{ + k_EChatMemberStateChangeEntered = 1, + k_EChatMemberStateChangeLeft = 2, + k_EChatMemberStateChangeDisconnected = 4, + k_EChatMemberStateChangeKicked = 8, + k_EChatMemberStateChangeBanned = 16, +} +public enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = 1, + k_ERemoteStoragePlatformOSX = 2, + k_ERemoteStoragePlatformPS3 = 4, + k_ERemoteStoragePlatformLinux = 8, + k_ERemoteStoragePlatformReserved2 = 16, + k_ERemoteStoragePlatformAll = -1, +} +public enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +} +public enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + k_EWorkshopFileTypeCommunity = 0, + k_EWorkshopFileTypeMicrotransaction = 1, + k_EWorkshopFileTypeCollection = 2, + k_EWorkshopFileTypeArt = 3, + k_EWorkshopFileTypeVideo = 4, + k_EWorkshopFileTypeScreenshot = 5, + k_EWorkshopFileTypeGame = 6, + k_EWorkshopFileTypeSoftware = 7, + k_EWorkshopFileTypeConcept = 8, + k_EWorkshopFileTypeWebGuide = 9, + k_EWorkshopFileTypeIntegratedGuide = 10, + k_EWorkshopFileTypeMerch = 11, + k_EWorkshopFileTypeControllerBinding = 12, + k_EWorkshopFileTypeSteamworksAccessInvite = 13, + k_EWorkshopFileTypeSteamVideo = 14, + k_EWorkshopFileTypeGameManagedItem = 15, + k_EWorkshopFileTypeMax = 16, +} +public enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +} +public enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +} +public enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +} +public enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1, +} +public enum EUGCReadAction +{ + k_EUGCRead_ContinueReadingUntilFinished = 0, + k_EUGCRead_ContinueReading = 1, + k_EUGCRead_Close = 2, +} +public enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3, +} +public enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, + k_ELeaderboardSortMethodDescending = 2, +} +public enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, + k_ELeaderboardDisplayTypeTimeSeconds = 2, + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, +} +public enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, + k_ELeaderboardUploadScoreMethodForceUpdate = 2, +} +public enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +} +public enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, + k_EP2PSessionErrorNoRightsToApp = 2, + k_EP2PSessionErrorDestinationNotLoggedIn = 3, + k_EP2PSessionErrorTimeout = 4, + k_EP2PSessionErrorMax = 5, +} +public enum EP2PSend +{ + k_EP2PSendUnreliable = 0, + k_EP2PSendUnreliableNoDelay = 1, + k_EP2PSendReliable = 2, + k_EP2PSendReliableWithBuffering = 3, +} +public enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + k_ESNetSocketStateConnected = 1, + k_ESNetSocketStateInitiated = 10, + k_ESNetSocketStateLocalCandidatesFound = 11, + k_ESNetSocketStateReceivedRemoteCandidates = 12, + k_ESNetSocketStateChallengeHandshake = 15, + k_ESNetSocketStateDisconnecting = 21, + k_ESNetSocketStateLocalDisconnect = 22, + k_ESNetSocketStateTimeoutDuringConnect = 23, + k_ESNetSocketStateRemoteEndDisconnected = 24, + k_ESNetSocketStateConnectionBroken = 25, +} +public enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +} +public enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5, +} +public enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3, +} +public enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET = 1, + k_EHTTPMethodHEAD = 2, + k_EHTTPMethodPOST = 3, + k_EHTTPMethodPUT = 4, + k_EHTTPMethodDELETE = 5, + k_EHTTPMethodOPTIONS = 6, + k_EHTTPMethodPATCH = 7, +} +public enum EHTTPStatusCode +{ + k_EHTTPStatusCodeInvalid = 0, + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + k_EHTTPStatusCode307TemporaryRedirect = 307, + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, + k_EHTTPStatusCode402PaymentRequired = 402, + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, + k_EHTTPStatusCode429TooManyRequests = 429, + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +} +public enum ESteamControllerPad +{ + k_ESteamControllerPad_Left = 0, + k_ESteamControllerPad_Right = 1, +} +public enum EControllerSource +{ + k_EControllerSource_None = 0, + k_EControllerSource_LeftTrackpad = 1, + k_EControllerSource_RightTrackpad = 2, + k_EControllerSource_Joystick = 3, + k_EControllerSource_ABXY = 4, + k_EControllerSource_Switch = 5, + k_EControllerSource_LeftTrigger = 6, + k_EControllerSource_RightTrigger = 7, + k_EControllerSource_Gyro = 8, + k_EControllerSource_Count = 9, +} +public enum EControllerSourceMode +{ + k_EControllerSourceMode_None = 0, + k_EControllerSourceMode_Dpad = 1, + k_EControllerSourceMode_Buttons = 2, + k_EControllerSourceMode_FourButtons = 3, + k_EControllerSourceMode_AbsoluteMouse = 4, + k_EControllerSourceMode_RelativeMouse = 5, + k_EControllerSourceMode_JoystickMove = 6, + k_EControllerSourceMode_JoystickCamera = 7, + k_EControllerSourceMode_ScrollWheel = 8, + k_EControllerSourceMode_Trigger = 9, + k_EControllerSourceMode_TouchMenu = 10, + k_EControllerSourceMode_MouseJoystick = 11, + k_EControllerSourceMode_MouseRegion = 12, + k_EControllerSourceMode_RadialMenu = 13, + k_EControllerSourceMode_Switches = 14, +} +public enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None = 0, + k_EControllerActionOrigin_A = 1, + k_EControllerActionOrigin_B = 2, + k_EControllerActionOrigin_X = 3, + k_EControllerActionOrigin_Y = 4, + k_EControllerActionOrigin_LeftBumper = 5, + k_EControllerActionOrigin_RightBumper = 6, + k_EControllerActionOrigin_LeftGrip = 7, + k_EControllerActionOrigin_RightGrip = 8, + k_EControllerActionOrigin_Start = 9, + k_EControllerActionOrigin_Back = 10, + k_EControllerActionOrigin_LeftPad_Touch = 11, + k_EControllerActionOrigin_LeftPad_Swipe = 12, + k_EControllerActionOrigin_LeftPad_Click = 13, + k_EControllerActionOrigin_LeftPad_DPadNorth = 14, + k_EControllerActionOrigin_LeftPad_DPadSouth = 15, + k_EControllerActionOrigin_LeftPad_DPadWest = 16, + k_EControllerActionOrigin_LeftPad_DPadEast = 17, + k_EControllerActionOrigin_RightPad_Touch = 18, + k_EControllerActionOrigin_RightPad_Swipe = 19, + k_EControllerActionOrigin_RightPad_Click = 20, + k_EControllerActionOrigin_RightPad_DPadNorth = 21, + k_EControllerActionOrigin_RightPad_DPadSouth = 22, + k_EControllerActionOrigin_RightPad_DPadWest = 23, + k_EControllerActionOrigin_RightPad_DPadEast = 24, + k_EControllerActionOrigin_LeftTrigger_Pull = 25, + k_EControllerActionOrigin_LeftTrigger_Click = 26, + k_EControllerActionOrigin_RightTrigger_Pull = 27, + k_EControllerActionOrigin_RightTrigger_Click = 28, + k_EControllerActionOrigin_LeftStick_Move = 29, + k_EControllerActionOrigin_LeftStick_Click = 30, + k_EControllerActionOrigin_LeftStick_DPadNorth = 31, + k_EControllerActionOrigin_LeftStick_DPadSouth = 32, + k_EControllerActionOrigin_LeftStick_DPadWest = 33, + k_EControllerActionOrigin_LeftStick_DPadEast = 34, + k_EControllerActionOrigin_Gyro_Move = 35, + k_EControllerActionOrigin_Gyro_Pitch = 36, + k_EControllerActionOrigin_Gyro_Yaw = 37, + k_EControllerActionOrigin_Gyro_Roll = 38, + k_EControllerActionOrigin_Count = 39, +} +public enum EControllerActivationType +{ + k_EControllerActivationType_None = 0, + k_EControllerActivationType_FullPress = 1, + k_EControllerActivationType_SoftPress = 2, + k_EControllerActivationType_StartPress = 3, + k_EControllerActivationType_Release = 4, + k_EControllerActivationType_LongPress = 5, + k_EControllerActivationType_DoublePress = 6, + k_EControllerActivationType_Analog = 7, +} +public enum EControllerPressureButton +{ + k_EControllerPressureButton_LeftTrackPad = 0, + k_EControllerPressureButton_RightTrackPad = 1, + k_EControllerPressureButton_LeftBumper = 2, + k_EControllerPressureButton_RightBumper = 3, + k_EControllerPressureButton_LeftGripLower = 4, + k_EControllerPressureButton_RightGripLower = 5, + k_EControllerPressureButton_LeftGripUpper = 6, + k_EControllerPressureButton_RightGripUpper = 7, + k_EControllerPressureButton_Invalid = 8, +} +public enum EControllerActivatorOutputAxis +{ + k_EOutputAxisLeftTrigger = 0, + k_EOutputAxisRightTrigger = 1, + k_EOutputAxisLeftThumbXPos = 2, + k_EOutputAxisLeftThumbXNeg = 3, + k_EOutputAxisLeftThumbYPos = 4, + k_EOutputAxisLeftThumbYNeg = 5, + k_EOutputAxisRightThumbXPos = 6, + k_EOutputAxisRightThumbXNeg = 7, + k_EOutputAxisRightThumbYPos = 8, + k_EOutputAxisRightThumbYNeg = 9, +} +public enum EControllerConfigFeature +{ + k_EControllerConfigFeature_None = 0, + k_EControllerConfigFeature_Gamepad = 1, + k_EControllerConfigFeature_Keyboard = 2, + k_EControllerConfigFeature_Mouse = 3, + k_EControllerConfigFeature_Gyro = 4, + k_EControllerConfigFeature_TouchMenu = 5, + k_EControllerConfigFeature_ModeShift = 6, + k_EControllerConfigFeature_ActionSet = 7, + k_EControllerConfigFeature_Activator = 8, +} +public enum EControllerPopupMenuActivationType +{ + k_EMenuButtonPress = 0, + k_EMenuButtonRelease = 1, + k_EMenuTouchRelease = 2, + k_EMenuTouchAlways = 3, +} +public enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, + k_EUGCMatchingUGCType_All = -1, +} +public enum EUserUGCList +{ + k_EUserUGCList_Published = 0, + k_EUserUGCList_VotedOn = 1, + k_EUserUGCList_VotedUp = 2, + k_EUserUGCList_VotedDown = 3, + k_EUserUGCList_WillVoteLater = 4, + k_EUserUGCList_Favorited = 5, + k_EUserUGCList_Subscribed = 6, + k_EUserUGCList_UsedOrPlayed = 7, + k_EUserUGCList_Followed = 8, +} +public enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc = 0, + k_EUserUGCListSortOrder_CreationOrderAsc = 1, + k_EUserUGCListSortOrder_TitleAsc = 2, + k_EUserUGCListSortOrder_LastUpdatedDesc = 3, + k_EUserUGCListSortOrder_SubscriptionDateDesc = 4, + k_EUserUGCListSortOrder_VoteScoreDesc = 5, + k_EUserUGCListSortOrder_ForModeration = 6, +} +public enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +} +public enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, + k_EItemUpdateStatusPreparingConfig = 1, + k_EItemUpdateStatusPreparingContent = 2, + k_EItemUpdateStatusUploadingContent = 3, + k_EItemUpdateStatusUploadingPreviewFile = 4, + k_EItemUpdateStatusCommittingChanges = 5, +} +public enum EItemState +{ + k_EItemStateNone = 0, + k_EItemStateSubscribed = 1, + k_EItemStateLegacyItem = 2, + k_EItemStateInstalled = 4, + k_EItemStateNeedsUpdate = 8, + k_EItemStateDownloading = 16, + k_EItemStateDownloadPending = 32, +} +public enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +} +public enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, + k_EItemPreviewType_YouTubeVideo = 1, + k_EItemPreviewType_Sketchfab = 2, + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, + k_EItemPreviewType_EnvironmentMap_LatLong = 4, + k_EItemPreviewType_ReservedMax = 255, +} +public enum EHTMLMouseButton +{ + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, +} +public enum EMouseCursor +{ + dc_user = 0, + dc_none = 1, + dc_arrow = 2, + dc_ibeam = 3, + dc_hourglass = 4, + dc_waitarrow = 5, + dc_crosshair = 6, + dc_up = 7, + dc_sizenw = 8, + dc_sizese = 9, + dc_sizene = 10, + dc_sizesw = 11, + dc_sizew = 12, + dc_sizee = 13, + dc_sizen = 14, + dc_sizes = 15, + dc_sizewe = 16, + dc_sizens = 17, + dc_sizeall = 18, + dc_no = 19, + dc_hand = 20, + dc_blank = 21, + dc_middle_pan = 22, + dc_north_pan = 23, + dc_north_east_pan = 24, + dc_east_pan = 25, + dc_south_east_pan = 26, + dc_south_pan = 27, + dc_south_west_pan = 28, + dc_west_pan = 29, + dc_north_west_pan = 30, + dc_alias = 31, + dc_cell = 32, + dc_colresize = 33, + dc_copycur = 34, + dc_verticaltext = 35, + dc_rowresize = 36, + dc_zoomin = 37, + dc_zoomout = 38, + dc_help = 39, + dc_custom = 40, + dc_last = 41, +} +public enum EHTMLKeyModifiers +{ + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1, + k_eHTMLKeyModifier_CtrlDown = 2, + k_eHTMLKeyModifier_ShiftDown = 4, +} +public enum ESteamItemFlags +{ + k_ESteamItemNoTrade = 1, + k_ESteamItemRemoved = 256, + k_ESteamItemConsumed = 512, +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamID +{ + public SteamID_t m_steamid; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamID_t +{ + public SteamIDComponent_t m_comp; + public ulong m_unAll64Bits; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamIDComponent_t +{ + public uint m_unAccountID; + public uint m_unAccountInstance; + public uint m_EAccountType; + public EUniverse m_EUniverse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameID_t +{ + public uint m_nAppID; + public uint m_nType; + public uint m_nModID; +} +[StructLayout(LayoutKind.Sequential)] public struct ValvePackingSentinel_t +{ + public uint m_u32; + public ulong m_u64; + public char m_u16; + public double m_d; +} +[StructLayout(LayoutKind.Sequential)] public struct CallbackMsg_t +{ + public uint m_hSteamUser; + public int m_iCallback; + public IntPtr m_pubParam; // uint8 * + public int m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServerConnectFailure_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bStillRetrying; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServersDisconnected_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ClientGameServerDeny_t +{ + public uint m_uAppID; + public uint m_unGameServerIP; + public char m_usGameServerPort; + public char m_bSecure; + public uint m_uReason; +} +[StructLayout(LayoutKind.Sequential)] public struct ValidateAuthTicketResponse_t +{ + public ulong m_SteamID; + public EAuthSessionResponse m_eAuthSessionResponse; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct MicroTxnAuthorizationResponse_t +{ + public uint m_unAppID; + public ulong m_ulOrderID; + public byte m_bAuthorized; +} +[StructLayout(LayoutKind.Sequential)] public struct EncryptedAppTicketResponse_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GetAuthSessionTicketResponse_t +{ + public uint m_hAuthTicket; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GameWebCallback_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct StoreAuthURLResponse_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)] + public string m_szURL; //char[512] +} +[StructLayout(LayoutKind.Sequential)] public struct FriendGameInfo_t +{ + public ulong m_gameID; + public uint m_unGameIP; + public char m_usGamePort; + public char m_usQueryPort; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendSessionStateInfo_t +{ + public uint m_uiOnlineSessionInstances; + public byte m_uiPublishedToFriendsSessionInstance; +} +[StructLayout(LayoutKind.Sequential)] public struct PersonaStateChange_t +{ + public ulong m_ulSteamID; + public int m_nChangeFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct GameOverlayActivated_t +{ + public byte m_bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct GameServerChangeRequested_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchServer; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchPassword; //char[64] +} +[StructLayout(LayoutKind.Sequential)] public struct GameLobbyJoinRequested_t +{ + public ulong m_steamIDLobby; + public ulong m_steamIDFriend; +} +[StructLayout(LayoutKind.Sequential)] public struct AvatarImageLoaded_t +{ + public ulong m_steamID; + public int m_iImage; + public int m_iWide; + public int m_iTall; +} +[StructLayout(LayoutKind.Sequential)] public struct ClanOfficerListResponse_t +{ + public ulong m_steamIDClan; + public int m_cOfficers; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendRichPresenceUpdate_t +{ + public ulong m_steamIDFriend; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameRichPresenceJoinRequested_t +{ + public ulong m_steamIDFriend; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchConnect; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedClanChatMsg_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatJoin_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatLeave_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + [MarshalAs(UnmanagedType.I1)] + public bool m_bKicked; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDropped; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadClanActivityCountsResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct JoinClanChatRoomCompletionResult_t +{ + public ulong m_steamIDClanChat; + public EChatRoomEnterResponse m_eChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedFriendChatMsg_t +{ + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsGetFollowerCount_t +{ + public EResult m_eResult; + public ulong m_steamID; + public int m_nCount; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsIsFollowing_t +{ + public EResult m_eResult; + public ulong m_steamID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bIsFollowing; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsEnumerateFollowingList_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public CSteamID[] m_rgSteamID; //CSteamID[50] + public int m_nResultsReturned; + public int m_nTotalResultCount; +} +[StructLayout(LayoutKind.Sequential)] public struct SetPersonaNameResponse_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocalSuccess; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct LowBatteryPower_t +{ + public byte m_nMinutesBatteryLeft; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamAPICallCompleted_t +{ + public ulong m_hAsyncCall; + public int m_iCallback; + public uint m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct CheckFileSignature_t +{ + public ECheckFileSignature m_eCheckFileSignature; +} +[StructLayout(LayoutKind.Sequential)] public struct GamepadTextInputDismissed_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSubmitted; + public uint m_unSubmittedText; +} +[StructLayout(LayoutKind.Sequential)] public struct MatchMakingKeyValuePair_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szKey; //char[256] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szValue; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct servernetadr_t +{ + public char m_usConnectionPort; + public char m_usQueryPort; + public uint m_unIP; +} +[StructLayout(LayoutKind.Sequential)] public struct gameserveritem_t +{ + public servernetadr_t m_NetAdr; + public int m_nPing; + [MarshalAs(UnmanagedType.I1)] + public bool m_bHadSuccessfulResponse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDoNotRefresh; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szGameDir; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szMap; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szGameDescription; //char[64] + public uint m_nAppID; + public int m_nPlayers; + public int m_nMaxPlayers; + public int m_nBotPlayers; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPassword; + [MarshalAs(UnmanagedType.I1)] + public bool m_bSecure; + public uint m_ulTimeLastPlayed; + public int m_nServerVersion; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szServerName; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_szGameTags; //char[128] + public ulong m_steamID; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListChanged_t +{ + public uint m_nIP; + public uint m_nQueryPort; + public uint m_nConnPort; + public uint m_nAppID; + public uint m_nFlags; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAdd; + public uint m_unAccountId; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyInvite_t +{ + public ulong m_ulSteamIDUser; + public ulong m_ulSteamIDLobby; + public ulong m_ulGameID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyEnter_t +{ + public ulong m_ulSteamIDLobby; + public uint m_rgfChatPermissions; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocked; + public uint m_EChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyDataUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDMember; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUserChanged; + public ulong m_ulSteamIDMakingChange; + public uint m_rgfChatMemberStateChange; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatMsg_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUser; + public byte m_eChatEntryType; + public uint m_iChatID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyGameCreated_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDGameServer; + public uint m_unIP; + public char m_usPort; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyMatchList_t +{ + public uint m_nLobbiesMatching; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyKicked_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDAdmin; + public byte m_bKickedDueToDisconnect; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyCreated_t +{ + public EResult m_eResult; + public ulong m_ulSteamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct PSNGameBootInviteResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bGameBootInviteExists; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListAccountsUpdated_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamParamStringArray_t +{ + public IntPtr m_ppStrings; // const char ** + public int m_nNumStrings; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedClient_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumDownloads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedServer_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumUploads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncProgress_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchCurrentFile; //char[260] + public uint m_nAppID; + public uint m_uBytesTransferredThisChunk; + public double m_dAppPercentComplete; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUploading; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncStatusCheck_t +{ + public uint m_nAppID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileShareResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchFilename; //char[260] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDeletePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeSubscribed; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUnsubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdatePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDownloadUGCResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + public uint m_nAppID; + public int m_nSizeInBytes; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public ulong m_ulSteamIDOwner; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedFileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_hFile; + public ulong m_hPreviewFile; + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public EWorkshopFileType m_eFileType; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] + public float[] m_rgScore; //float[50] + public uint m_nAppId; + public uint m_unStartIndex; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + public EResult m_eResult; + public ulong m_unPublishedFileId; + public int m_nVotesFor; + public int m_nVotesAgainst; + public int m_nReports; + public float m_fScore; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileSubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUnsubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileDeleted_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUserVoteDetails_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopVote m_eVote; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSetUserPublishedFileActionResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopFileAction m_eAction; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + public EResult m_eResult; + public EWorkshopFileAction m_eAction; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeUpdated; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileProgress_t +{ + public double m_dPercentFile; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPreview; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUpdated_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; + public ulong m_ulUnused; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileWriteAsyncComplete_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileReadAsyncComplete_t +{ + public ulong m_hFileReadAsync; + public EResult m_eResult; + public uint m_nOffset; + public uint m_cubRead; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardEntry_t +{ + public ulong m_steamIDUser; + public int m_nGlobalRank; + public int m_nScore; + public int m_cDetails; + public ulong m_hUGC; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsStored_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementStored_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bGroupAchievement; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + public uint m_nCurProgress; + public uint m_nMaxProgress; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardFindResult_t +{ + public ulong m_hSteamLeaderboard; + public byte m_bLeaderboardFound; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoresDownloaded_t +{ + public ulong m_hSteamLeaderboard; + public ulong m_hSteamLeaderboardEntries; + public int m_cEntryCount; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoreUploaded_t +{ + public byte m_bSuccess; + public ulong m_hSteamLeaderboard; + public int m_nScore; + public byte m_bScoreChanged; + public int m_nGlobalRankNew; + public int m_nGlobalRankPrevious; +} +[StructLayout(LayoutKind.Sequential)] public struct NumberOfCurrentPlayers_t +{ + public byte m_bSuccess; + public int m_cPlayers; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsUnloaded_t +{ + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementIconFetched_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bAchieved; + public int m_nIconHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalAchievementPercentagesReady_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardUGCSet_t +{ + public EResult m_eResult; + public ulong m_hSteamLeaderboard; +} +[StructLayout(LayoutKind.Sequential)] public struct PS3TrophiesInstalled_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_ulRequiredDiskSpace; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct DlcInstalled_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RegisterActivationCodeResponse_t +{ + public ERegisterActivationCodeResult m_eResult; + public uint m_unPackageRegistered; +} +[StructLayout(LayoutKind.Sequential)] public struct AppProofOfPurchaseKeyResponse_t +{ + public EResult m_eResult; + public uint m_nAppID; + public uint m_cchKeyLength; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)] + public string m_rgchKey; //char[240] +} +[StructLayout(LayoutKind.Sequential)] public struct FileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_ulFileSize; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U1)] + public byte[] m_FileSHA; //byte[20] + public uint m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionState_t +{ + public byte m_bConnectionActive; + public byte m_bConnecting; + public byte m_eP2PSessionError; + public byte m_bUsingRelay; + public int m_nBytesQueuedForSend; + public int m_nPacketsQueuedForSend; + public uint m_nRemoteIP; + public char m_nRemotePort; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionRequest_t +{ + public ulong m_steamIDRemote; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionConnectFail_t +{ + public ulong m_steamIDRemote; + public byte m_eP2PSessionError; +} +[StructLayout(LayoutKind.Sequential)] public struct SocketStatusCallback_t +{ + public uint m_hSocket; + public uint m_hListenSocket; + public ulong m_steamIDRemote; + public int m_eSNetSocketState; +} +[StructLayout(LayoutKind.Sequential)] public struct ScreenshotReady_t +{ + public uint m_hLocal; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bShuffled; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bLooped; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int m_nPlayingRepeatStatus; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestCompleted_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + [MarshalAs(UnmanagedType.I1)] + public bool m_bRequestSuccessful; + public EHTTPStatusCode m_eStatusCode; + public uint m_unBodySize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestHeadersReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestDataReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + public uint m_cOffset; + public uint m_cBytesReceived; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUnifiedMessagesSendMethodResult_t +{ + public ulong m_hHandle; + public ulong m_unContext; + public EResult m_eResult; + public uint m_unResponseSize; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerAnalogActionData_t +{ + public EControllerSourceMode eMode; + public float x; + public float y; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerDigitalActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bState; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerMotionData_t +{ + public float rotQuatX; + public float rotQuatY; + public float rotQuatZ; + public float rotQuatW; + public float posAccelX; + public float posAccelY; + public float posAccelZ; + public float rotVelX; + public float rotVelY; + public float rotVelZ; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCDetails_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + public EWorkshopFileType m_eFileType; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public uint m_rtimeAddedToUserList; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + public ulong m_hFile; + public ulong m_hPreviewFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public uint m_unVotesUp; + public uint m_unVotesDown; + public float m_flScore; + public uint m_unNumChildren; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCQueryCompleted_t +{ + public ulong m_handle; + public EResult m_eResult; + public uint m_unNumResultsReturned; + public uint m_unTotalMatchingResults; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCRequestUGCDetailsResult_t +{ + public SteamUGCDetails_t m_details; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct CreateItemResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct SubmitItemUpdateResult_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadItemResult_t +{ + public uint m_unAppID; + public ulong m_nPublishedFileId; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserFavoriteItemsListChanged_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bWasAddRequest; +} +[StructLayout(LayoutKind.Sequential)] public struct SetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteUp; +} +[StructLayout(LayoutKind.Sequential)] public struct GetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedUp; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedDown; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteSkipped; +} +[StructLayout(LayoutKind.Sequential)] public struct StartPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct StopPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_BrowserReady_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NeedsPaint_t +{ + public uint unBrowserHandle; + public IntPtr pBGRA; // const char * + public uint unWide; + public uint unTall; + public uint unUpdateX; + public uint unUpdateY; + public uint unUpdateWide; + public uint unUpdateTall; + public uint unScrollX; + public uint unScrollY; + public float flPageScale; + public uint unPageSerial; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StartRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchTarget; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CloseBrowser_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_URLChanged_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; + public IntPtr pchPageTitle; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bNewNavigation; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FinishedRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPageTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_OpenLinkInNewTab_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ChangedTitle_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SearchResults_t +{ + public uint unBrowserHandle; + public uint unResults; + public uint unCurrentMatch; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CanGoBackAndForward_t +{ + public uint unBrowserHandle; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoBack; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoForward; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HorizontalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_VerticalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_LinkAtPosition_t +{ + public uint unBrowserHandle; + public uint x; + public uint y; + public IntPtr pchURL; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bInput; + [MarshalAs(UnmanagedType.I1)] + public bool bLiveLink; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSAlert_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSConfirm_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FileOpenDialog_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * + public IntPtr pchInitialFile; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NewWindow_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public uint unX; + public uint unY; + public uint unWide; + public uint unTall; + public uint unNewWindow_BrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SetCursor_t +{ + public uint unBrowserHandle; + public uint eMouseCursor; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StatusText_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ShowToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_UpdateToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HideToolTip_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamItemDetails_t +{ + public ulong m_itemId; + public int m_iDefinition; + public char m_unQuantity; + public char m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryResultReady_t +{ + public int m_handle; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryFullUpdate_t +{ + public int m_handle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EBroadcastUploadResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EResult m_eResult; + public uint m_unVideoAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext +{ + public IntPtr m_pSteamClient; // class ISteamClient * + public IntPtr m_pSteamUser; // class ISteamUser * + public IntPtr m_pSteamFriends; // class ISteamFriends * + public IntPtr m_pSteamUtils; // class ISteamUtils * + public IntPtr m_pSteamMatchmaking; // class ISteamMatchmaking * + public IntPtr m_pSteamUserStats; // class ISteamUserStats * + public IntPtr m_pSteamApps; // class ISteamApps * + public IntPtr m_pSteamMatchmakingServers; // class ISteamMatchmakingServers * + public IntPtr m_pSteamNetworking; // class ISteamNetworking * + public IntPtr m_pSteamRemoteStorage; // class ISteamRemoteStorage * + public IntPtr m_pSteamScreenshots; // class ISteamScreenshots * + public IntPtr m_pSteamHTTP; // class ISteamHTTP * + public IntPtr m_pSteamUnifiedMessages; // class ISteamUnifiedMessages * + public IntPtr m_pController; // class ISteamController * + public IntPtr m_pSteamUGC; // class ISteamUGC * + public IntPtr m_pSteamAppList; // class ISteamAppList * + public IntPtr m_pSteamMusic; // class ISteamMusic * + public IntPtr m_pSteamMusicRemote; // class ISteamMusicRemote * + public IntPtr m_pSteamHTMLSurface; // class ISteamHTMLSurface * + public IntPtr m_pSteamInventory; // class ISteamInventory * + public IntPtr m_pSteamVideo; // class ISteamVideo * +} +[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase +{ + public byte m_nCallbackFlags; + public int m_iCallback; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallResult +{ + public ulong m_hAPICall; + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallback +{ + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientApprove_t +{ + public ulong m_SteamID; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientDeny_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchOptionalText; //char[128] +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientKick_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientAchievementStatus_t +{ + public ulong m_SteamID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_pchAchievement; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bUnlocked; +} +[StructLayout(LayoutKind.Sequential)] public struct GSPolicyResponse_t +{ + public byte m_bSecure; +} +[StructLayout(LayoutKind.Sequential)] public struct GSGameplayStats_t +{ + public EResult m_eResult; + public int m_nRank; + public uint m_unTotalConnects; + public uint m_unTotalMinutesPlayed; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientGroupStatus_t +{ + public ulong m_SteamIDUser; + public ulong m_SteamIDGroup; + [MarshalAs(UnmanagedType.I1)] + public bool m_bMember; + [MarshalAs(UnmanagedType.I1)] + public bool m_bOfficer; +} +[StructLayout(LayoutKind.Sequential)] public struct GSReputation_t +{ + public EResult m_eResult; + public uint m_unReputationScore; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + public uint m_unBannedIP; + public char m_usBannedPort; + public ulong m_ulBannedGameID; + public uint m_unBanExpires; +} +[StructLayout(LayoutKind.Sequential)] public struct AssociateWithClanResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ComputeNewPlayerCompatibilityResult_t +{ + public EResult m_eResult; + public int m_cPlayersThatDontLikeCandidate; + public int m_cPlayersThatCandidateDoesntLike; + public int m_cClanPlayersThatDontLikeCandidate; + public ulong m_SteamIDCandidate; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsReceived_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsStored_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsUnloaded_t +{ + public ulong m_steamIDUser; +} + +public class SteamAPI +{ +public static void Init(uint appId) +{ +SteamAPIInterop.SteamAPI_RestartAppIfNecessary (appId); +SteamAPIInterop.SteamAPI_Init (); +} + +public static void RunCallbacks() +{ +SteamAPIInterop.SteamAPI_RunCallbacks (); +} + +public static void RegisterCallback(IntPtr pCallback, int iCallback) +{ +SteamAPIInterop.SteamAPI_RegisterCallback (pCallback, iCallback); +} + +public static void UnregisterCallback(IntPtr pCallback) +{ +SteamAPIInterop.SteamAPI_UnregisterCallback (pCallback); +} + +public const int k_iSteamUserCallbacks = 100; +public const int k_iSteamGameServerCallbacks = 200; +public const int k_iSteamFriendsCallbacks = 300; +public const int k_iSteamBillingCallbacks = 400; +public const int k_iSteamMatchmakingCallbacks = 500; +public const int k_iSteamContentServerCallbacks = 600; +public const int k_iSteamUtilsCallbacks = 700; +public const int k_iClientFriendsCallbacks = 800; +public const int k_iClientUserCallbacks = 900; +public const int k_iSteamAppsCallbacks = 1000; +public const int k_iSteamUserStatsCallbacks = 1100; +public const int k_iSteamNetworkingCallbacks = 1200; +public const int k_iClientRemoteStorageCallbacks = 1300; +public const int k_iClientDepotBuilderCallbacks = 1400; +public const int k_iSteamGameServerItemsCallbacks = 1500; +public const int k_iClientUtilsCallbacks = 1600; +public const int k_iSteamGameCoordinatorCallbacks = 1700; +public const int k_iSteamGameServerStatsCallbacks = 1800; +public const int k_iSteam2AsyncCallbacks = 1900; +public const int k_iSteamGameStatsCallbacks = 2000; +public const int k_iClientHTTPCallbacks = 2100; +public const int k_iClientScreenshotsCallbacks = 2200; +public const int k_iSteamScreenshotsCallbacks = 2300; +public const int k_iClientAudioCallbacks = 2400; +public const int k_iClientUnifiedMessagesCallbacks = 2500; +public const int k_iSteamStreamLauncherCallbacks = 2600; +public const int k_iClientControllerCallbacks = 2700; +public const int k_iSteamControllerCallbacks = 2800; +public const int k_iClientParentalSettingsCallbacks = 2900; +public const int k_iClientDeviceAuthCallbacks = 3000; +public const int k_iClientNetworkDeviceManagerCallbacks = 3100; +public const int k_iClientMusicCallbacks = 3200; +public const int k_iClientRemoteClientManagerCallbacks = 3300; +public const int k_iClientUGCCallbacks = 3400; +public const int k_iSteamStreamClientCallbacks = 3500; +public const int k_IClientProductBuilderCallbacks = 3600; +public const int k_iClientShortcutsCallbacks = 3700; +public const int k_iClientRemoteControlManagerCallbacks = 3800; +public const int k_iSteamAppListCallbacks = 3900; +public const int k_iSteamMusicCallbacks = 4000; +public const int k_iSteamMusicRemoteCallbacks = 4100; +public const int k_iClientVRCallbacks = 4200; +public const int k_iClientGameNotificationCallbacks = 4300; +public const int k_iSteamGameNotificationCallbacks = 4400; +public const int k_iSteamHTMLSurfaceCallbacks = 4500; +public const int k_iClientVideoCallbacks = 4600; +public const int k_iClientInventoryCallbacks = 4700; +public const int k_iClientBluetoothManagerCallbacks = 4800; +public const int k_cchPersonaNameMax = 128; +public const int k_cwchPersonaNameMax = 32; +public const int k_cchMaxRichPresenceKeys = 20; +public const int k_cchMaxRichPresenceKeyLength = 64; +public const int k_cchMaxRichPresenceValueLength = 256; +public const int k_cchStatNameMax = 128; +public const int k_cchLeaderboardNameMax = 128; +public const int k_cLeaderboardDetailsMax = 64; +public const ulong k_InvalidUnifiedMessageHandle = 0; +public const ulong k_SteamItemInstanceIDInvalid = 0xffffffffffffffff; +public const int k_SteamInventoryResultInvalid = -1; +public static ISteamClient SteamClient() +{ +return new CSteamClient(SteamAPIInterop.SteamClient()); +} + +public static ISteamUser SteamUser() +{ +return new CSteamUser(SteamAPIInterop.SteamUser()); +} + +public static ISteamFriends SteamFriends() +{ +return new CSteamFriends(SteamAPIInterop.SteamFriends()); +} + +public static ISteamUtils SteamUtils() +{ +return new CSteamUtils(SteamAPIInterop.SteamUtils()); +} + +public static ISteamMatchmaking SteamMatchmaking() +{ +return new CSteamMatchmaking(SteamAPIInterop.SteamMatchmaking()); +} + +public static ISteamMatchmakingServerListResponse SteamMatchmakingServerListResponse() +{ +return new CSteamMatchmakingServerListResponse(SteamAPIInterop.SteamMatchmakingServerListResponse()); +} + +public static ISteamMatchmakingPingResponse SteamMatchmakingPingResponse() +{ +return new CSteamMatchmakingPingResponse(SteamAPIInterop.SteamMatchmakingPingResponse()); +} + +public static ISteamMatchmakingPlayersResponse SteamMatchmakingPlayersResponse() +{ +return new CSteamMatchmakingPlayersResponse(SteamAPIInterop.SteamMatchmakingPlayersResponse()); +} + +public static ISteamMatchmakingRulesResponse SteamMatchmakingRulesResponse() +{ +return new CSteamMatchmakingRulesResponse(SteamAPIInterop.SteamMatchmakingRulesResponse()); +} + +public static ISteamMatchmakingServers SteamMatchmakingServers() +{ +return new CSteamMatchmakingServers(SteamAPIInterop.SteamMatchmakingServers()); +} + +public static ISteamRemoteStorage SteamRemoteStorage() +{ +return new CSteamRemoteStorage(SteamAPIInterop.SteamRemoteStorage()); +} + +public static ISteamUserStats SteamUserStats() +{ +return new CSteamUserStats(SteamAPIInterop.SteamUserStats()); +} + +public static ISteamApps SteamApps() +{ +return new CSteamApps(SteamAPIInterop.SteamApps()); +} + +public static ISteamNetworking SteamNetworking() +{ +return new CSteamNetworking(SteamAPIInterop.SteamNetworking()); +} + +public static ISteamScreenshots SteamScreenshots() +{ +return new CSteamScreenshots(SteamAPIInterop.SteamScreenshots()); +} + +public static ISteamMusic SteamMusic() +{ +return new CSteamMusic(SteamAPIInterop.SteamMusic()); +} + +public static ISteamMusicRemote SteamMusicRemote() +{ +return new CSteamMusicRemote(SteamAPIInterop.SteamMusicRemote()); +} + +public static ISteamHTTP SteamHTTP() +{ +return new CSteamHTTP(SteamAPIInterop.SteamHTTP()); +} + +public static ISteamUnifiedMessages SteamUnifiedMessages() +{ +return new CSteamUnifiedMessages(SteamAPIInterop.SteamUnifiedMessages()); +} + +public static ISteamController SteamController() +{ +return new CSteamController(SteamAPIInterop.SteamController()); +} + +public static ISteamUGC SteamUGC() +{ +return new CSteamUGC(SteamAPIInterop.SteamUGC()); +} + +public static ISteamAppList SteamAppList() +{ +return new CSteamAppList(SteamAPIInterop.SteamAppList()); +} + +public static ISteamHTMLSurface SteamHTMLSurface() +{ +return new CSteamHTMLSurface(SteamAPIInterop.SteamHTMLSurface()); +} + +public static ISteamInventory SteamInventory() +{ +return new CSteamInventory(SteamAPIInterop.SteamInventory()); +} + +public static ISteamVideo SteamVideo() +{ +return new CSteamVideo(SteamAPIInterop.SteamVideo()); +} + +public static ISteamGameServer SteamGameServer() +{ +return new CSteamGameServer(SteamAPIInterop.SteamGameServer()); +} + +public static ISteamGameServerStats SteamGameServerStats() +{ +return new CSteamGameServerStats(SteamAPIInterop.SteamGameServerStats()); +} + +} + + + +} + diff --git a/lib/windows32/include/steam/steam_gameserver.h b/lib/windows32/include/steam/steam_gameserver.h new file mode 100644 index 0000000..f2d2847 --- /dev/null +++ b/lib/windows32/include/steam/steam_gameserver.h @@ -0,0 +1,237 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_GAMESERVER_H +#define STEAM_GAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api.h" +#include "isteamgameserver.h" +#include "isteamgameserverstats.h" + +enum EServerMode +{ + eServerModeInvalid = 0, // DO NOT USE + eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list + eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect + eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients +}; + +// Initialize ISteamGameServer interface object, and set server properties which may not be changed. +// +// After calling this function, you should set any additional server parameters, and then +// call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() +// +// - usSteamPort is the local port used to communicate with the steam servers. +// - usGamePort is the port that clients will connect to for gameplay. +// - usQueryPort is the port that will manage server browser related duties and info +// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving +// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. +// - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the +// server is out of date. (Only servers with the latest version will be listed.) + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + +S_API void SteamGameServer_Shutdown(); +S_API void SteamGameServer_RunCallbacks(); + +// Most Steam API functions allocate some amount of thread-local memory for +// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() +// will free all API-related memory associated with the calling thread. +// This memory is released automatically by SteamGameServer_RunCallbacks(), +// so single-threaded servers do not need to explicitly call this function. +inline void SteamGameServer_ReleaseCurrentThreadMemory(); + +S_API bool SteamGameServer_BSecure(); +S_API uint64 SteamGameServer_GetSteamID(); + +// If your application contains modules which could be built against different Steamworks SDK +// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot +// use the version-less global accessors. Instead, create and use CSteamGameServerAPIContext +// objects to retrieve interface pointers which are appropriate for your Steamworks SDK headers. +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamGameServerClient(); +inline ISteamGameServer *SteamGameServer(); +inline ISteamUtils *SteamGameServerUtils(); +inline ISteamNetworking *SteamGameServerNetworking(); +inline ISteamGameServerStats *SteamGameServerStats(); +inline ISteamHTTP *SteamGameServerHTTP(); +inline ISteamInventory *SteamGameServerInventory(); +inline ISteamUGC *SteamGameServerUGC(); +inline ISteamApps *SteamGameServerApps(); +#endif + +class CSteamGameServerAPIContext +{ +public: + CSteamGameServerAPIContext() { Clear(); } + inline void Clear(); + inline bool Init(); + + ISteamClient *SteamClient() const { return m_pSteamClient; } + ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } + ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } + ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } + ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } + ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } + ISteamInventory *SteamInventory() const { return m_pSteamInventory; } + ISteamUGC *SteamUGC() const { return m_pSteamUGC; } + ISteamApps *SteamApps() const { return m_pSteamApps; } + +private: + ISteamClient *m_pSteamClient; + ISteamGameServer *m_pSteamGameServer; + ISteamUtils *m_pSteamGameServerUtils; + ISteamNetworking *m_pSteamGameServerNetworking; + ISteamGameServerStats *m_pSteamGameServerStats; + ISteamHTTP *m_pSteamHTTP; + ISteamInventory *m_pSteamInventory; + ISteamUGC *m_pSteamUGC; + ISteamApps *m_pSteamApps; +}; + + +// Older SDKs exported this global pointer, but it is no longer supported. +// You should use SteamGameServerClient() or CSteamGameServerAPIContext to +// safely access the ISteamClient APIs from your game server application. +//S_API ISteamClient *g_pSteamClientGameServer; + +// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and +// is no longer supported. Use SteamGameServer_Init instead. +//S_API void S_CALLTYPE SteamGameServer_InitSafe(); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// These macros are similar to the STEAM_CALLBACK_* macros in steam_api.h, but only trigger for gameserver callbacks +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_GAMESERVER_CALLBACK( thisclass, func, /*callback_type, [deprecated] var*/... ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, GS, 3 ), ( this->SetGameserverFlag();, thisclass, func, __VA_ARGS__ ) ) + +#define STEAM_GAMESERVER_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) + + +#define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ + CCallback< thisclass, param, true > var; void func( param *pParam ) + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + + +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline CSteamGameServerAPIContext& SteamGameServerInternal_ModuleContext() +{ + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* ctx[ sizeof(CSteamGameServerAPIContext)/sizeof(void*) ]; + return *(CSteamGameServerAPIContext*)ctx; +} +#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ + if ( !SteamGameServer_GetHSteamPipe() ) return 0; \ + CSteamGameServerAPIContext &ctx = SteamGameServerInternal_ModuleContext(); \ + if ( !ctx.AccessFunc() ) ctx.Init(); \ + return ctx.AccessFunc(); + +inline ISteamClient *SteamGameServerClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } +inline ISteamGameServer *SteamGameServer() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServer ) } +inline ISteamUtils *SteamGameServerUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerUtils ) } +inline ISteamNetworking *SteamGameServerNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerNetworking ) } +inline ISteamGameServerStats *SteamGameServerStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerStats ) } +inline ISteamHTTP *SteamGameServerHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } +inline ISteamInventory *SteamGameServerInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } +inline ISteamUGC *SteamGameServerUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } +inline ISteamApps *SteamGameServerApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } +#undef _STEAMINTERNAL_ACCESSOR_BODY +#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) + + +inline void CSteamGameServerAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamGameServer = NULL; + m_pSteamGameServerUtils = NULL; + m_pSteamGameServerNetworking = NULL; + m_pSteamGameServerStats = NULL; + m_pSteamHTTP = NULL; + m_pSteamInventory = NULL; + m_pSteamUGC = NULL; + m_pSteamApps = NULL; +} + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamGameServerAPIContext::Init() +{ + HSteamUser hSteamUser = SteamGameServer_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamGameServer_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamGameServer = m_pSteamClient->GetISteamGameServer( hSteamUser, hSteamPipe, STEAMGAMESERVER_INTERFACE_VERSION ); + if ( !m_pSteamGameServer ) + return false; + + m_pSteamGameServerUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerUtils ) + return false; + + m_pSteamGameServerNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamGameServerNetworking ) + return false; + + m_pSteamGameServerStats = m_pSteamClient->GetISteamGameServerStats( hSteamUser, hSteamPipe, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerStats ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + return true; +} + + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + if ( !SteamInternal_GameServer_Init( unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + return false; + + return true; +} + + +inline void SteamGameServer_ReleaseCurrentThreadMemory() +{ + SteamAPI_ReleaseCurrentThreadMemory(); +} + +#endif // STEAM_GAMESERVER_H diff --git a/lib/windows32/include/steam/steamclientpublic.h b/lib/windows32/include/steam/steamclientpublic.h new file mode 100644 index 0000000..8d89376 --- /dev/null +++ b/lib/windows32/include/steam/steamclientpublic.h @@ -0,0 +1,1255 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMCLIENTPUBLIC_H +#define STEAMCLIENTPUBLIC_H +#ifdef _WIN32 +#pragma once +#endif +//lint -save -e1931 -e1927 -e1924 -e613 -e726 + +// This header file defines the interface between the calling application and the code that +// knows how to communicate with the connection manager (CM) from the Steam service + +// This header file is intended to be portable; ideally this 1 header file plus a lib or dll +// is all you need to integrate the client library into some other tree. So please avoid +// including or requiring other header files if possible. This header should only describe the +// interface layer, no need to include anything about the implementation. + +#include "steamtypes.h" +#include "steamuniverse.h" + +// General result codes +enum EResult +{ + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection +// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha + k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned + k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) + k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid + k_EResultIPBanned = 105, // the ip address has been banned from taking this action + k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use +}; + +// Error codes for use with the voice functions +enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, + +}; + +// Result codes to GSHandleClientDeny/Kick +enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +}; + +// return type of GetAuthSessionTicket +typedef uint32 HAuthTicket; +const HAuthTicket k_HAuthTicketInvalid = 0; + +// results from BeginAuthSession +enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. + k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. + k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID + k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version + k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game + k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired +}; + +// Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession +enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. + k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam + k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. + k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. + k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. + k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user + k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. + k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. + k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC +}; + +// results from UserHasLicenseForApp +enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated +}; + + +// Steam account types +enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, // single user account + k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account + k_EAccountTypeGameServer = 3, // game server account + k_EAccountTypeAnonGameServer = 4, // anonymous game server account + k_EAccountTypePending = 5, // pending + k_EAccountTypeContentServer = 6, // content server + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. + k_EAccountTypeAnonUser = 10, + + // Max of 16 items in this field + k_EAccountTypeMax +}; + + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing + k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all + k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released + k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released. + k_EAppReleaseState_Released = 4, // owners can download and play app. +}; + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0x0000, // unknown + k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game + k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game + k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region + k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version + k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform + k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device + k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses + k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) + k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user + k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play + k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired + k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc + k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically + k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring + k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license + k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem + k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet + k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental +}; + + +//----------------------------------------------------------------------------- +// Purpose: designed as flags to allow filters masks +//----------------------------------------------------------------------------- +enum EAppType +{ + k_EAppType_Invalid = 0x000, // unknown / invalid + k_EAppType_Game = 0x001, // playable game, default type + k_EAppType_Application = 0x002, // software application + k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers + k_EAppType_Demo = 0x008, // game demo + k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web + k_EAppType_DLC = 0x020, // down loadable content + k_EAppType_Guide = 0x040, // game guide, PDF etc + k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) + k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) + k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) + k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games + k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) + k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps + k_EAppType_Music = 0x2000, // Music files + k_EAppType_Series = 0x4000, // Container app for video series + + k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only + k_EAppType_DepotOnly = 0x80000000, // placeholder since depots and apps share the same namespace +}; + + + +//----------------------------------------------------------------------------- +// types of user game stats fields +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE +//----------------------------------------------------------------------------- +enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + // Read as FLOAT, set with count / session length + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + + // max, for sanity checks + k_ESteamUserStatTypeMAX +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Entry Types (previously was only friend-to-friend message types) +//----------------------------------------------------------------------------- +enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, // Normal text message from another user + k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) + k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game + k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) + //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) + k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) + // Above are previous FriendMsgType entries, now merged into more generic chat entry types + k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) + k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) + k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) + k_EChatEntryTypeDisconnected = 10, // user disconnected + k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message + //k_EChatEntryTypeReserved1 = 12, // No longer used + //k_EChatEntryTypeReserved2 = 13, // No longer used + k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Room Enter Responses +//----------------------------------------------------------------------------- +enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, // Success + k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) + k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat + k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size + k_EChatRoomEnterResponseError = 5, // Unexpected Error + k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join + k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) + k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled + k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account + k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining + k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat + // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used + // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used + // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used +}; + + +typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); +typedef bool (*PFNLegacyKeyInstalled)(); + +const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; +const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; +// we allow 3 simultaneous user account instances right now, 1= desktop, 2 = console, 4 = web, 0 = all +const unsigned int k_unSteamUserDesktopInstance = 1; +const unsigned int k_unSteamUserConsoleInstance = 2; +const unsigned int k_unSteamUserWebInstance = 4; + +// Special flags for Chat accounts - they go in the top 8 bits +// of the steam ID's "instance", leaving 12 for the actual instances +enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags + + k_EChatInstanceFlagClan = ( k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit + k_EChatInstanceFlagLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc + k_EChatInstanceFlagMMSLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc + + // Max of 8 flags +}; + + +//----------------------------------------------------------------------------- +// Purpose: Marketing message flags that change how a client should handle them +//----------------------------------------------------------------------------- +enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1 << 0, + k_EMarketingMessageFlagsPlatformWindows = 1 << 1, + k_EMarketingMessageFlagsPlatformMac = 1 << 2, + k_EMarketingMessageFlagsPlatformLinux = 1 << 3, + + //aggregate flags + k_EMarketingMessageFlagsPlatformRestrictions = + k_EMarketingMessageFlagsPlatformWindows | + k_EMarketingMessageFlagsPlatformMac | + k_EMarketingMessageFlagsPlatformLinux, +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Possible positions to tell the overlay to show notifications in +//----------------------------------------------------------------------------- +enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Broadcast upload result details +//----------------------------------------------------------------------------- +enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, // broadcast state unknown + k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems + k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed + k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed + k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out + k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data + k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low + k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames + k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay + k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload + k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings + k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data + k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading + k_EBroadcastUploadResultTranscodeBehind = 13, // server failed to keep up with transcode +}; + + +//----------------------------------------------------------------------------- +// Purpose: codes for well defined launch options +//----------------------------------------------------------------------------- +enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, // unknown what launch option does + k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode + k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode + k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode + k_ELaunchOptionType_Config = 4, // runs config tool for this game + k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR + k_ELaunchOptionType_Server = 6, // runs dedicated server for this game + k_ELaunchOptionType_Editor = 7, // runs game editor + k_ELaunchOptionType_Manual = 8, // shows game manual + k_ELaunchOptionType_Benchmark = 9, // runs game benchmark + k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name + k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name + k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name + k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK + k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay + k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK + + + k_ELaunchOptionType_Dialog = 1000, // show launch options dialog +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_OpenVR + || eType == k_ELaunchOptionType_OpenVROverlay + || eType == k_ELaunchOptionType_OculusVR + || eType == k_ELaunchOptionType_OSVR; +} + + +//----------------------------------------------------------------------------- +// Purpose: code points for VR HMD vendors and models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EVRHMDType +{ + k_eEVRHMDType_None = -1, // unknown vendor and model + + k_eEVRHMDType_Unknown = 0, // unknown vendor and model + + k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits + k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre + k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release + + k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd + + k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 + k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 + k_eEVRHMDType_Oculus_Rift = 23, // Oculus rift + + k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD +}; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Controller models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + + // Steam Controllers + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + + // Other Controllers + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36 +}; + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Oculus HMD +//----------------------------------------------------------------------------- +static inline bool BIsOculusHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_Unknown; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Vive HMD +//----------------------------------------------------------------------------- +static inline bool BIsViveHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown; +} + + +#pragma pack( push, 1 ) + +#define CSTEAMID_DEFINED + +// Steam ID structure (64 bits total) +class CSteamID +{ +public: + + //----------------------------------------------------------------------------- + // Purpose: Constructor + //----------------------------------------------------------------------------- + CSteamID() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + Set( unAccountID, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // unAccountInstance - instance + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) + { +#if defined(_SERVER) && defined(Assert) + Assert( ! ( ( k_EAccountTypeIndividual == eAccountType ) && ( unAccountInstance > k_unSteamUserWebInstance ) ) ); // enforce that for individual accounts, instance is always 1 +#endif // _SERVER + InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : ulSteamID - 64-bit representation of a Steam ID + // Note: Will not accept a uint32 or int32 as input, as that is a probable mistake. + // See the stubbed out overloads in the private: section for more info. + //----------------------------------------------------------------------------- + CSteamID( uint64 ulSteamID ) + { + SetFromUint64( ulSteamID ); + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CSteamID( uint64_t ulSteamID ) + { + SetFromUint64( (uint64)ulSteamID ); + } +#endif + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void Set( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + + if ( eAccountType == k_EAccountTypeClan || eAccountType == k_EAccountTypeGameServer ) + { + m_steamid.m_comp.m_unAccountInstance = 0; + } + else + { + // by default we pick the desktop instance + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; + } + } + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void InstancedSet( uint32 unAccountID, uint32 unInstance, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + m_steamid.m_comp.m_unAccountInstance = unInstance; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 52 bit parts and universe/type + // Input : ulIdentifier - 52 bits of goodness + //----------------------------------------------------------------------------- + void FullSet( uint64 ulIdentifier, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = ( ulIdentifier & k_unSteamAccountIDMask ); // account ID is low 32 bits + m_steamid.m_comp.m_unAccountInstance = ( ( ulIdentifier >> 32 ) & k_unSteamAccountInstanceMask ); // account instance is next 20 bits + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 64-bit representation + // Input : ulSteamID - 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + void SetFromUint64( uint64 ulSteamID ) + { + m_steamid.m_unAll64Bits = ulSteamID; + } + + + //----------------------------------------------------------------------------- + // Purpose: Clear all fields, leaving an invalid ID. + //----------------------------------------------------------------------------- + void Clear() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to convert + // eUniverse - universe this ID belongs to + //----------------------------------------------------------------------------- + void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe + m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; // Steam2 only knew desktop instances + } + + //----------------------------------------------------------------------------- + // Purpose: Fills out a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to write to + //----------------------------------------------------------------------------- + void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const + { + // only individual accounts have any meaning in Steam 2, only they can be mapped + // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); + + pTSteamGlobalUserID->m_SteamInstanceID = 0; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; + } +#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) + + //----------------------------------------------------------------------------- + // Purpose: Converts steam ID to its 64-bit representation + // Output : 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + uint64 ConvertToUint64() const + { + return m_steamid.m_unAll64Bits; + } + + + //----------------------------------------------------------------------------- + // Purpose: Converts the static parts of a steam ID to a 64-bit representation. + // For multiseat accounts, all instances of that account will have the + // same static account key, so they can be grouped together by the static + // account key. + // Output : 64-bit static account key + //----------------------------------------------------------------------------- + uint64 GetStaticAccountKey() const + { + // note we do NOT include the account instance (which is a dynamic property) in the static account key + return (uint64) ( ( ( (uint64) m_steamid.m_comp.m_EUniverse ) << 56 ) + ((uint64) m_steamid.m_comp.m_EAccountType << 52 ) + m_steamid.m_comp.m_unAccountID ); + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonGameServer; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonUserLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonUser; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server login that will be filled in? + //----------------------------------------------------------------------------- + bool BBlankAnonAccount() const + { + return m_steamid.m_comp.m_unAccountID == 0 && BAnonAccount() && m_steamid.m_comp.m_unAccountInstance == 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a game server account id? (Either persistent or anonymous) + //----------------------------------------------------------------------------- + bool BGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a persistent (not anonymous) game server account id? + //----------------------------------------------------------------------------- + bool BPersistentGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server account id? + //----------------------------------------------------------------------------- + bool BAnonGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a content server account id? + //----------------------------------------------------------------------------- + bool BContentServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeContentServer; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a clan account id? + //----------------------------------------------------------------------------- + bool BClanAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool BChatAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool IsLobby() const + { + return ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat ) + && ( m_steamid.m_comp.m_unAccountInstance & k_EChatInstanceFlagLobby ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an individual user account id? + //----------------------------------------------------------------------------- + bool BIndividualAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual || m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous account? + //----------------------------------------------------------------------------- + bool BAnonAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) + //----------------------------------------------------------------------------- + bool BAnonUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a faked up Steam ID for a PSN friend account? + //----------------------------------------------------------------------------- + bool BConsoleUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + // simple accessors + void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } + void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } + void ClearIndividualInstance() { if ( BIndividualAccount() ) m_steamid.m_comp.m_unAccountInstance = 0; } + bool HasNoIndividualInstance() const { return BIndividualAccount() && (m_steamid.m_comp.m_unAccountInstance==0); } + AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } + uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } + EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } + EUniverse GetEUniverse() const { return m_steamid.m_comp.m_EUniverse; } + void SetEUniverse( EUniverse eUniverse ) { m_steamid.m_comp.m_EUniverse = eUniverse; } + bool IsValid() const; + + // this set of functions is hidden, will be moved out of class + explicit CSteamID( const char *pchSteamID, EUniverse eDefaultUniverse = k_EUniverseInvalid ); + const char * Render() const; // renders this steam ID to string + static const char * Render( uint64 ulSteamID ); // static method to render a uint64 representation of a steam ID to a string + + void SetFromString( const char *pchSteamID, EUniverse eDefaultUniverse ); + // SetFromString allows many partially-correct strings, constraining how + // we might be able to change things in the future. + // SetFromStringStrict requires the exact string forms that we support + // and is preferred when the caller knows it's safe to be strict. + // Returns whether the string parsed correctly. + bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); + bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); + + inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } + inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } + inline bool operator<( const CSteamID &val ) const { return m_steamid.m_unAll64Bits < val.m_steamid.m_unAll64Bits; } + inline bool operator>( const CSteamID &val ) const { return m_steamid.m_unAll64Bits > val.m_steamid.m_unAll64Bits; } + + // DEBUG function + bool BValidExternalSteamID() const; + +private: + // These are defined here to prevent accidental implicit conversion of a u32AccountID to a CSteamID. + // If you get a compiler error about an ambiguous constructor/function then it may be because you're + // passing a 32-bit int to a function that takes a CSteamID. You should explicitly create the SteamID + // using the correct Universe and account Type/Instance values. + CSteamID( uint32 ); + CSteamID( int32 ); + + // 64 bits total + union SteamID_t + { + struct SteamIDComponent_t + { +#ifdef VALVE_BIG_ENDIAN + EUniverse m_EUniverse : 8; // universe this account belongs to + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + unsigned int m_unAccountInstance : 20; // dynamic instance ID + uint32 m_unAccountID : 32; // unique account identifier +#else + uint32 m_unAccountID : 32; // unique account identifier + unsigned int m_unAccountInstance : 20; // dynamic instance ID + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + EUniverse m_EUniverse : 8; // universe this account belongs to +#endif + } m_comp; + + uint64 m_unAll64Bits; + } m_steamid; +}; + +inline bool CSteamID::IsValid() const +{ + if ( m_steamid.m_comp.m_EAccountType <= k_EAccountTypeInvalid || m_steamid.m_comp.m_EAccountType >= k_EAccountTypeMax ) + return false; + + if ( m_steamid.m_comp.m_EUniverse <= k_EUniverseInvalid || m_steamid.m_comp.m_EUniverse >= k_EUniverseMax ) + return false; + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance > k_unSteamUserWebInstance ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != 0 ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 ) + return false; + // Any limit on instances? We use them for local users and bots + } + return true; +} + +// generic invalid CSteamID +#define k_steamIDNil CSteamID() + +// This steamID comes from a user game connection to an out of date GS that hasnt implemented the protocol +// to provide its steamID +#define k_steamIDOutofDateGS CSteamID( 0, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID comes from a user game connection to an sv_lan GS +#define k_steamIDLanModeGS CSteamID( 0, 0, k_EUniversePublic, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that has just booted but hasnt yet even initialized +// its steam3 component and started logging on. +#define k_steamIDNotInitYetGS CSteamID( 1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that isn't using the steam authentication system but still +// wants to support the "Join Game" option in the friends list +#define k_steamIDNonSteamGS CSteamID( 2, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) + + +#ifdef STEAM +// Returns the matching chat steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeChat it will be returned with the same instance +CSteamID ChatIDFromSteamID( const CSteamID &steamID ); +// Returns the matching clan steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeClan it will be returned with the same instance +CSteamID ClanIDFromSteamID( const CSteamID &steamID ); +// Asserts steamID type before conversion +CSteamID ChatIDFromClanID( const CSteamID &steamIDClan ); +// Asserts steamID type before conversion +CSteamID ClanIDFromChatID( const CSteamID &steamIDChat ); + +#endif // _STEAM + + +//----------------------------------------------------------------------------- +// Purpose: encapsulates an appID/modID pair +//----------------------------------------------------------------------------- +class CGameID +{ +public: + + CGameID() + { + m_gameID.m_nType = k_EGameIDTypeApp; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nModID = 0; + } + + explicit CGameID( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CGameID( uint64_t ulGameID ) + { + m_ulGameID = (uint64)ulGameID; + } +#endif + + explicit CGameID( int32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + explicit CGameID( uint32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + CGameID( uint32 nAppID, uint32 nModID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nModID = nModID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + } + + // Hidden functions used only by Steam + explicit CGameID( const char *pchGameID ); + const char *Render() const; // render this Game ID to string + static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string + + // must include checksum_crc.h first to get this functionality +#if defined( CHECKSUM_CRC_H ) + CGameID( uint32 nAppID, const char *pchModPath ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + + char rgchModDir[MAX_PATH]; + V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); + CRC32_t crc32; + CRC32_Init( &crc32 ); + CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + + CGameID( const char *pchExePath, const char *pchAppName ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeShortcut; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + if ( pchExePath ) + CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); + if ( pchAppName ) + CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#if defined( VSTFILEID_H ) + + CGameID( VstFileID vstFileID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeP2P; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + const char *pchFileId = vstFileID.Render(); + CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#endif /* VSTFILEID_H */ + +#endif /* CHECKSUM_CRC_H */ + + + uint64 ToUint64() const + { + return m_ulGameID; + } + + uint64 *GetUint64Ptr() + { + return &m_ulGameID; + } + + void Set( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } + + bool IsMod() const + { + return ( m_gameID.m_nType == k_EGameIDTypeGameMod ); + } + + bool IsShortcut() const + { + return ( m_gameID.m_nType == k_EGameIDTypeShortcut ); + } + + bool IsP2PFile() const + { + return ( m_gameID.m_nType == k_EGameIDTypeP2P ); + } + + bool IsSteamApp() const + { + return ( m_gameID.m_nType == k_EGameIDTypeApp ); + } + + uint32 ModID() const + { + return m_gameID.m_nModID; + } + + uint32 AppID() const + { + return m_gameID.m_nAppID; + } + + bool operator == ( const CGameID &rhs ) const + { + return m_ulGameID == rhs.m_ulGameID; + } + + bool operator != ( const CGameID &rhs ) const + { + return !(*this == rhs); + } + + bool operator < ( const CGameID &rhs ) const + { + return ( m_ulGameID < rhs.m_ulGameID ); + } + + bool IsValid() const + { + // each type has it's own invalid fixed point: + switch( m_gameID.m_nType ) + { + case k_EGameIDTypeApp: + return m_gameID.m_nAppID != k_uAppIdInvalid; + + case k_EGameIDTypeGameMod: + return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + case k_EGameIDTypeShortcut: + return (m_gameID.m_nModID & 0x80000000) != 0; + + case k_EGameIDTypeP2P: + return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + default: +#if defined(Assert) + Assert(false); +#endif + return false; + } + + } + + void Reset() + { + m_ulGameID = 0; + } + + + +private: + + enum EGameIDType + { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + + struct GameID_t + { +#ifdef VALVE_BIG_ENDIAN + unsigned int m_nModID : 32; + unsigned int m_nType : 8; + unsigned int m_nAppID : 24; +#else + unsigned int m_nAppID : 24; + unsigned int m_nType : 8; + unsigned int m_nModID : 32; +#endif + }; + + union + { + uint64 m_ulGameID; + GameID_t m_gameID; + }; +}; + +#pragma pack( pop ) + +const int k_cchGameExtraInfoMax = 64; + + +//----------------------------------------------------------------------------- +// Constants used for query ports. +//----------------------------------------------------------------------------- + +#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. +#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. + + +//----------------------------------------------------------------------------- +// Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback +// just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) +//----------------------------------------------------------------------------- +typedef void (*PFNPreMinidumpCallback)(void *context); + +//----------------------------------------------------------------------------- +// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers +//----------------------------------------------------------------------------- +typedef void *BREAKPAD_HANDLE; +#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 + +#endif // STEAMCLIENTPUBLIC_H diff --git a/lib/windows32/include/steam/steamencryptedappticket.h b/lib/windows32/include/steam/steamencryptedappticket.h new file mode 100644 index 0000000..48c63b4 --- /dev/null +++ b/lib/windows32/include/steam/steamencryptedappticket.h @@ -0,0 +1,32 @@ +//========= Copyright © 1996-2010, Valve LLC, All rights reserved. ============ +// +// Purpose: utilities to decode/decrypt a ticket from the +// ISteamUser::RequestEncryptedAppTicket, ISteamUser::GetEncryptedAppTicket API +// +// To use: declare CSteamEncryptedAppTicket, then call BDecryptTicket +// if BDecryptTicket returns true, other accessors are valid +// +//============================================================================= + +#include "steam_api.h" + +static const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + + +S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, + uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, + const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey ); + +S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID ); + +S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); \ No newline at end of file diff --git a/lib/windows32/include/steam/steamhttpenums.h b/lib/windows32/include/steam/steamhttpenums.h new file mode 100644 index 0000000..d95f195 --- /dev/null +++ b/lib/windows32/include/steam/steamhttpenums.h @@ -0,0 +1,98 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: HTTP related enums, stuff that is shared by both clients and servers, and our +// UI projects goes here. +// +//============================================================================= + +#ifndef STEAMHTTPENUMS_H +#define STEAMHTTPENUMS_H +#ifdef _WIN32 +#pragma once +#endif + +// HTTP related types + +// This enum is used in client API methods, do not re-number existing values. +enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT +}; + + +// HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions +// of each of these. +enum EHTTPStatusCode +{ + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +}; + +#endif // STEAMHTTPENUMS_H \ No newline at end of file diff --git a/lib/windows32/include/steam/steamps3params.h b/lib/windows32/include/steam/steamps3params.h new file mode 100644 index 0000000..c0741b4 --- /dev/null +++ b/lib/windows32/include/steam/steamps3params.h @@ -0,0 +1,112 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMPS3PARAMS_H +#define STEAMPS3PARAMS_H +#ifdef _WIN32 +#pragma once +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 initialization parameters +// +// The following structure must be passed to when loading steam_api_ps3.prx +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_PS3_PATH_MAX 1055 +#define STEAM_PS3_SERVICE_ID_MAX 32 +#define STEAM_PS3_COMMUNICATION_ID_MAX 10 +#define STEAM_PS3_COMMUNICATION_SIG_MAX 160 +#define STEAM_PS3_LANGUAGE_MAX 64 +#define STEAM_PS3_REGION_CODE_MAX 16 +#define STEAM_PS3_CURRENT_PARAMS_VER 2 +struct SteamPS3Params_t +{ + uint32 m_unVersion; // set to STEAM_PS3_CURRENT_PARAMS_VER + + void *pReserved; + uint32 m_nAppId; // set to your game's appid + + char m_rgchInstallationPath[ STEAM_PS3_PATH_MAX ]; // directory containing latest steam prx's and sdata. Can be read only (BDVD) + char m_rgchSystemCache[ STEAM_PS3_PATH_MAX ]; // temp working cache, not persistent + char m_rgchGameData[ STEAM_PS3_PATH_MAX ]; // persistent game data path for storing user data + char m_rgchNpServiceID[ STEAM_PS3_SERVICE_ID_MAX ]; + char m_rgchNpCommunicationID[ STEAM_PS3_COMMUNICATION_ID_MAX ]; + char m_rgchNpCommunicationSig[ STEAM_PS3_COMMUNICATION_SIG_MAX ]; + + // Language should be one of the following. must be zero terminated + // danish + // dutch + // english + // finnish + // french + // german + // italian + // korean + // norwegian + // polish + // portuguese + // russian + // schinese + // spanish + // swedish + // tchinese + char m_rgchSteamLanguage[ STEAM_PS3_LANGUAGE_MAX ]; + + // region codes are "SCEA", "SCEE", "SCEJ". must be zero terminated + char m_rgchRegionCode[ STEAM_PS3_REGION_CODE_MAX ]; + + // Should be SYS_TTYP3 through SYS_TTYP10, if it's 0 then Steam won't spawn a + // thread to read console input at all. Using this let's you use Steam console commands + // like: profile_on, profile_off, profile_dump, mem_stats, mem_validate. + unsigned int m_cSteamInputTTY; + + struct Ps3netInit_t + { + bool m_bNeedInit; + void *m_pMemory; + int m_nMemorySize; + int m_flags; + } m_sysNetInitInfo; + + struct Ps3jpgInit_t + { + bool m_bNeedInit; + } m_sysJpgInitInfo; + + struct Ps3pngInit_t + { + bool m_bNeedInit; + } m_sysPngInitInfo; + + struct Ps3sysutilUserInfo_t + { + bool m_bNeedInit; + } m_sysSysUtilUserInfo; + + bool m_bIncludeNewsPage; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 memory structure +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAMPS3_MALLOC_INUSE 0x53D04A51 +#define STEAMPS3_MALLOC_SYSTEM 0x0D102C48 +#define STEAMPS3_MALLOC_OK 0xFFD04A51 +struct SteamPS3Memory_t +{ + bool m_bSingleAllocation; // If true, Steam will request one 6MB allocation and use the returned memory for all future allocations + // If false, Steam will make call malloc for each allocation + + // required function pointers + void* (*m_pfMalloc)(size_t); + void* (*m_pfRealloc)(void *, size_t); + void (*m_pfFree)(void *); + size_t (*m_pUsable_size)(void*); +}; + + +#endif // STEAMPS3PARAMS_H diff --git a/lib/windows32/include/steam/steamtypes.h b/lib/windows32/include/steam/steamtypes.h new file mode 100644 index 0000000..f74df1a --- /dev/null +++ b/lib/windows32/include/steam/steamtypes.h @@ -0,0 +1,181 @@ +//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMTYPES_H +#define STEAMTYPES_H +#ifdef _WIN32 +#pragma once +#endif + +#define S_CALLTYPE __cdecl + +// Steam-specific types. Defined here so this header file can be included in other code bases. +#ifndef WCHARTYPES_H +typedef unsigned char uint8; +#endif + +#if defined( __GNUC__ ) && !defined(POSIX) + #if __GNUC__ < 4 + #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" + #endif + #define POSIX 1 +#endif + +#if defined(__x86_64__) || defined(_WIN64) +#define X64BITS +#endif + +// Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. +#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) +#define VALVE_BIG_ENDIAN +#endif + +typedef unsigned char uint8; +typedef signed char int8; + +#if defined( _WIN32 ) + +typedef __int16 int16; +typedef unsigned __int16 uint16; +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; + +typedef int64 lint64; +typedef uint64 ulint64; + +#ifdef X64BITS +typedef __int64 intp; // intp is an integer that can accomodate a pointer +typedef unsigned __int64 uintp; // (ie, sizeof(intp) >= sizeof(int) && sizeof(intp) >= sizeof(void *) +#else +typedef __int32 intp; +typedef unsigned __int32 uintp; +#endif + +#else // _WIN32 + +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; + +// [u]int64 are actually defined as 'long long' and gcc 64-bit +// doesn't automatically consider them the same as 'long int'. +// Changing the types for [u]int64 is complicated by +// there being many definitions, so we just +// define a 'long int' here and use it in places that would +// otherwise confuse the compiler. +typedef long int lint64; +typedef unsigned long int ulint64; + +#ifdef X64BITS +typedef long long intp; +typedef unsigned long long uintp; +#else +typedef int intp; +typedef unsigned int uintp; +#endif + +#endif // else _WIN32 + +#ifdef API_GEN +# define CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define CLANG_ATTR(ATTR) +#endif + +#define METHOD_DESC(DESC) CLANG_ATTR( "desc:" #DESC ";" ) +#define IGNOREATTR() CLANG_ATTR( "ignore" ) +#define OUT_STRUCT() CLANG_ATTR( "out_struct: ;" ) +#define OUT_STRING() CLANG_ATTR( "out_string: ;" ) +#define OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define OUT_ARRAY_COUNT(COUNTER, DESC) CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define ARRAY_COUNT(COUNTER) CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define ARRAY_COUNT_D(COUNTER, DESC) CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define BUFFER_COUNT(COUNTER) CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define OUT_BUFFER_COUNT(COUNTER) CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define OUT_STRING_COUNT(COUNTER) CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define DESC(DESC) CLANG_ATTR("desc:" #DESC ";") +#define CALL_RESULT(RESULT_TYPE) CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define CALL_BACK(RESULT_TYPE) CLANG_ATTR("callback:" #RESULT_TYPE ";") + +const int k_cubSaltSize = 8; +typedef uint8 Salt_t[ k_cubSaltSize ]; + +//----------------------------------------------------------------------------- +// GID (GlobalID) stuff +// This is a globally unique identifier. It's guaranteed to be unique across all +// racks and servers for as long as a given universe persists. +//----------------------------------------------------------------------------- +// NOTE: for GID parsing/rendering and other utils, see gid.h +typedef uint64 GID_t; + +const GID_t k_GIDNil = 0xffffffffffffffffull; + +// For convenience, we define a number of types that are just new names for GIDs +typedef uint64 JobID_t; // Each Job has a unique ID +typedef GID_t TxnID_t; // Each financial transaction has a unique ID + +const GID_t k_TxnIDNil = k_GIDNil; +const GID_t k_TxnIDUnknown = 0; + +const JobID_t k_JobIDNil = 0xffffffffffffffffull; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 PackageId_t; +const PackageId_t k_uPackageIdFreeSub = 0x0; +const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; + +typedef uint32 BundleId_t; +const BundleId_t k_uBundleIdInvalid = 0; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 AppId_t; +const AppId_t k_uAppIdInvalid = 0x0; + +typedef uint64 AssetClassId_t; +const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; + +typedef uint32 PhysicalItemId_t; +const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; + + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. AppIds and DepotIDs also presently +// share the same namespace, but since we'd like to change that in the future +// I've defined it seperately here. +typedef uint32 DepotId_t; +const DepotId_t k_uDepotIdInvalid = 0x0; + +// RTime32 +// We use this 32 bit time representing real world time. +// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +typedef uint32 RTime32; + +typedef uint32 CellID_t; +const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; + +// handle to a Steam API call +typedef uint64 SteamAPICall_t; +const SteamAPICall_t k_uAPICallInvalid = 0x0; + +typedef uint32 AccountID_t; + +typedef uint32 PartnerId_t; +const PartnerId_t k_uPartnerIdInvalid = 0; + +// ID for a depot content manifest +typedef uint64 ManifestId_t; +const ManifestId_t k_uManifestIdInvalid = 0; + + + +#endif // STEAMTYPES_H diff --git a/lib/windows32/include/steam/steamuniverse.h b/lib/windows32/include/steam/steamuniverse.h new file mode 100644 index 0000000..dd384dc --- /dev/null +++ b/lib/windows32/include/steam/steamuniverse.h @@ -0,0 +1,27 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMUNIVERSE_H +#define STEAMUNIVERSE_H +#ifdef _WIN32 +#pragma once +#endif + + +// Steam universes. Each universe is a self-contained Steam instance. +enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + // k_EUniverseRC = 5, // no such universe anymore + k_EUniverseMax +}; + + +#endif // STEAMUNIVERSE_H diff --git a/lib/windows32/include/strings.h b/lib/windows32/include/strings.h new file mode 100644 index 0000000..a3ee250 --- /dev/null +++ b/lib/windows32/include/strings.h @@ -0,0 +1,59 @@ +#ifndef strings_h +#define strings_h + +/* MSVC doesn't define ffs/ffsl. This dummy strings.h header is provided + * for both */ +#ifdef _MSC_VER +# include <intrin.h> +# pragma intrinsic(_BitScanForward) +static __forceinline int ffsl(long x) +{ + unsigned long i; + + if (_BitScanForward(&i, x)) + return (i + 1); + return (0); +} + +static __forceinline int ffs(int x) +{ + + return (ffsl(x)); +} + +# ifdef _M_X64 +# pragma intrinsic(_BitScanForward64) +# endif + +static __forceinline int ffsll(unsigned __int64 x) +{ + unsigned long i; +#ifdef _M_X64 + if (_BitScanForward64(&i, x)) + return (i + 1); + return (0); +#else +// Fallback for 32-bit build where 64-bit version not available +// assuming little endian + union { + unsigned __int64 ll; + unsigned long l[2]; + } s; + + s.ll = x; + + if (_BitScanForward(&i, s.l[0])) + return (i + 1); + else if(_BitScanForward(&i, s.l[1])) + return (i + 33); + return (0); +#endif +} + +#else +# define ffsll(x) __builtin_ffsll(x) +# define ffsl(x) __builtin_ffsl(x) +# define ffs(x) __builtin_ffs(x) +#endif + +#endif /* strings_h */ diff --git a/lib/windows32/include/vorbis/codec.h b/lib/windows32/include/vorbis/codec.h new file mode 100644 index 0000000..999aa33 --- /dev/null +++ b/lib/windows32/include/vorbis/codec.h @@ -0,0 +1,243 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +#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/lib/windows32/include/vorbis/vorbisenc.h b/lib/windows32/include/vorbis/vorbisenc.h new file mode 100644 index 0000000..02332b5 --- /dev/null +++ b/lib/windows32/include/vorbis/vorbisenc.h @@ -0,0 +1,436 @@ +/******************************************************************** + * * + * 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: vorbis encode-engine setup + last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +/** \file + * Libvorbisenc is a convenient API for setting up an encoding + * environment using libvorbis. Libvorbisenc encapsulates the + * actions needed to set up the encoder properly. + */ + +#ifndef _OV_ENC_H_ +#define _OV_ENC_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include "codec.h" + +/** + * This is the primary function within libvorbisenc for setting up managed + * bitrate modes. + * + * Before this function is called, the \ref vorbis_info + * struct should be initialized by using vorbis_info_init() from the libvorbis + * API. After encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_init(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step bitrate-managed encode + * setup. It functions similarly to the one-step setup performed by \ref + * vorbis_encode_init but allows an application to make further encode setup + * tweaks using \ref vorbis_encode_ctl before finally calling \ref + * vorbis_encode_setup_init to complete the setup process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_setup_managed(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step variable bitrate + * (quality-based) encode setup. It functions similarly to the one-step setup + * performed by \ref vorbis_encode_init_vbr() but allows an application to + * make further encode setup tweaks using \ref vorbis_encode_ctl() before + * finally calling \ref vorbis_encode_setup_init to complete the setup + * process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using \ref vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_setup_vbr(vorbis_info *vi, + long channels, + long rate, + + float quality + ); + +/** + * This is the primary function within libvorbisenc for setting up variable + * bitrate ("quality" based) modes. + * + * + * Before this function is called, the vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * + * \return Zero for success, or a negative number for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_init_vbr(vorbis_info *vi, + long channels, + long rate, + + float base_quality + ); + +/** + * This function performs the last stage of three-step encoding setup, as + * described in the API overview under managed bitrate modes. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API, one of + * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to + * initialize the high-level encoding setup, and \ref vorbis_encode_ctl() + * called if necessary to make encoding setup changes. + * vorbis_encode_setup_init() finalizes the highlevel encoding structure into + * a complete encoding setup after which the application may make no further + * setup changes. + * + * After encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * + * \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first + * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to + * initialize the high-level encoding setup + * + */ +extern int vorbis_encode_setup_init(vorbis_info *vi); + +/** + * This function implements a generic interface to miscellaneous encoder + * settings similar to the classic UNIX 'ioctl()' system call. Applications + * may use vorbis_encode_ctl() to query or set bitrate management or quality + * mode details by using one of several \e request arguments detailed below. + * vorbis_encode_ctl() must be called after one of + * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used + * to modify settings, \ref vorbis_encode_ctl() must be called before \ref + * vorbis_encode_setup_init(). + * + * \param vi Pointer to an initialized vorbis_info struct. + * + * \param number Specifies the desired action; See \ref encctlcodes "the list + * of available requests". + * + * \param arg void * pointing to a data structure matching the request + * argument. + * + * \retval 0 Success. Any further return information (such as the result of a + * query) is placed into the storage pointed to by *arg. + * + * \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after + * calling vorbis_encode_setup_init(). + * + * \retval OV_EIMPL Unimplemented or unknown request + */ +extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); + +/** + * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl() + * with the \ref ovectl_ratemanage2_arg struct and \ref + * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code. + * + * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl() + * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref + * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. +*/ +struct ovectl_ratemanage_arg { + int management_active; /**< nonzero if bitrate management is active*/ +/** hard lower limit (in kilobits per second) below which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_min; +/** hard upper limit (in kilobits per second) above which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_max; +/** the window period (in seconds) used to regulate the hard bitrate minimum + and maximum*/ + double bitrate_hard_window; +/** soft lower limit (in kilobits per second) below which the average bitrate + tracker will start nudging the bitrate higher.*/ + long bitrate_av_lo; +/** soft upper limit (in kilobits per second) above which the average bitrate + tracker will start nudging the bitrate lower.*/ + long bitrate_av_hi; +/** the window period (in seconds) used to regulate the average bitrate + minimum and maximum.*/ + double bitrate_av_window; +/** Regulates the relative centering of the average and hard windows; in + libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but + followed the average window regulation. In libvorbis 1.1 a bit-reservoir + interface replaces the old windowing interface; the older windowing + interface is simulated and this field has no effect.*/ + double bitrate_av_window_center; +}; + +/** + * \name struct ovectl_ratemanage2_arg + * + * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and + * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. + * +*/ +struct ovectl_ratemanage2_arg { + int management_active; /**< nonzero if bitrate management is active */ +/** Lower allowed bitrate limit in kilobits per second */ + long bitrate_limit_min_kbps; +/** Upper allowed bitrate limit in kilobits per second */ + long bitrate_limit_max_kbps; + long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */ +/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0 + * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0 + * buffers against future sudden drops in instantaneous bitrate. Default is + * 0.1 + */ + double bitrate_limit_reservoir_bias; +/** Average bitrate setting in kilobits per second */ + long bitrate_average_kbps; +/** Slew rate limit setting for average bitrate adjustment; sets the minimum + * time in seconds the bitrate tracker may swing from one extreme to the + * other when boosting or damping average bitrate. + */ + double bitrate_average_damping; +}; + + +/** + * \name vorbis_encode_ctl() codes + * + * \anchor encctlcodes + * + * These values are passed as the \c number parameter of vorbis_encode_ctl(). + * The type of the referent of that function's \c arg pointer depends on these + * codes. + */ +/*@{*/ + +/** + * Query the current encoder bitrate management setting. + * + *Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to query the current encoder bitrate management setting. Also used to + * initialize fields of an ovectl_ratemanage2_arg structure for use with + * \ref OV_ECTL_RATEMANAGE2_SET. + */ +#define OV_ECTL_RATEMANAGE2_GET 0x14 + +/** + * Set the current encoder bitrate management settings. + * + * Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to set the current encoder bitrate management settings to the values + * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable + * bitrate management. +*/ +#define OV_ECTL_RATEMANAGE2_SET 0x15 + +/** + * Returns the current encoder hard-lowpass setting (kHz) in the double + * pointed to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_GET 0x20 + +/** + * Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid + * lowpass settings range from 2 to 99. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_SET 0x21 + +/** + * Returns the current encoder impulse block setting in the double pointed + * to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_IBLOCK_GET 0x30 + +/** + * Sets the impulse block bias to the the value pointed to by arg. + * + * Argument: <tt>double *</tt> + * + * Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will + * direct to encoder to use more bits when incoding short blocks that contain + * strong impulses, thus improving the accuracy of impulse encoding. + */ +#define OV_ECTL_IBLOCK_SET 0x31 + +/** + * Returns the current encoder coupling setting in the int pointed + * to by arg. + * + * Argument: <tt>int *</tt> +*/ +#define OV_ECTL_COUPLING_GET 0x40 + +/** + * Enables/disables channel coupling in multichannel encoding according to arg. + * + * Argument: <tt>int *</tt> + * + * Zero disables channel coupling for multichannel inputs, nonzer enables + * channel coupling. Setting has no effect on monophonic encoding or + * multichannel counts that do not offer coupling. At present, coupling is + * available for stereo and 5.1 encoding. + */ +#define OV_ECTL_COUPLING_SET 0x41 + + /* deprecated rate management supported only for compatibility */ + +/** + * Old interface to querying bitrate management settings. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_GET 0x10 +/** + * Old interface to modifying bitrate management settings. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_SET 0x11 +/** + * Old interface to setting average-bitrate encoding mode. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_AVG 0x12 +/** + * Old interface to setting bounded-bitrate encoding modes. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_HARD 0x13 + +/*@}*/ + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/lib/windows32/include/vorbis/vorbisfile.h b/lib/windows32/include/vorbis/vorbisfile.h new file mode 100644 index 0000000..9271331 --- /dev/null +++ b/lib/windows32/include/vorbis/vorbisfile.h @@ -0,0 +1,206 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ + +#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/lib/windows32/include/windows_extra.h b/lib/windows32/include/windows_extra.h new file mode 100644 index 0000000..3008faa --- /dev/null +++ b/lib/windows32/include/windows_extra.h @@ -0,0 +1,6 @@ +#ifndef MSVC_COMPAT_WINDOWS_EXTRA_H +#define MSVC_COMPAT_WINDOWS_EXTRA_H + +#include <errno.h> + +#endif /* MSVC_COMPAT_WINDOWS_EXTRA_H */ diff --git a/lib/windows32/include/zconf.h b/lib/windows32/include/zconf.h new file mode 100644 index 0000000..9987a77 --- /dev/null +++ b/lib/windows32/include/zconf.h @@ -0,0 +1,511 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2013 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzvprintf z_gzvprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateGetDictionary z_inflateGetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include <windows.h> + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include <limits.h> +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include <sys/types.h> /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include <stdarg.h> /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include <stddef.h> /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include <unixio.h> /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/lib/windows32/include/zlib.h b/lib/windows32/include/zlib.h new file mode 100644 index 0000000..3e0c767 --- /dev/null +++ b/lib/windows32/include/zlib.h @@ -0,0 +1,1768 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.8, April 28th, 2013 + + Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + + 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. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.8" +#define ZLIB_VERNUM 0x1280 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 8 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, + z_const unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, + const char *format, + va_list va)); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/lib/windows32/jemalloc.lib b/lib/windows32/jemalloc.lib new file mode 100644 index 0000000000000000000000000000000000000000..557b92f25cd2f030b64f00735b4edae92b45c9ed GIT binary patch literal 387688 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%0Al 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/libpng16.dll b/lib/windows32/libpng16.dll new file mode 100644 index 0000000000000000000000000000000000000000..0ea77b06079082f80f5650c96ee65a023c22328a GIT binary patch literal 322560 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 Ke%*iN&;I~}91!CG literal 0 HcmV?d00001 diff --git a/lib/windows32/libpng16.lib b/lib/windows32/libpng16.lib new file mode 100644 index 0000000000000000000000000000000000000000..da1f904818e6b6f439457e49ee77d09fe5df92b4 GIT binary patch literal 56118 zcmeHQX_Q^XaW25dgb+fogE7Wf#u#I4%SalH!EuNH86yyw2tf=XJZ5<_^I$gKywL(? z$AB@5*!O)gs}TEYcC(1pSgaw05S$R=B!qBsayT54uexvFuIk&j=RLid{K$#UDZT0H z>i&AWeY>lx`hMm6UG<)U?brRzH2rTzN5?kXZoAE_Su-?$n=CkE*6eNV-v_Qsw8n3V z4!VM9@CBmbb%-uK)Y5|=5iyPIZ|U0WiI^_l$kOOsBBtYpEgkzY5z~o-mX5+N)0m^T z@i*wYO)OoGv`i<QYH8^LBBn(vEM4|85!2$$EHw@wVp@eXOe@c^bTrD%bjLoHE?<s( zK@Vhf$W}y5_4O<ratXqqkyVyn+MI}K$uX9GPDD&6pqz$KrxQR&oSe}{_ywJPnWb}< z5iuRP$kN$cgAY0dWnwz(c1vfRL1bu4{4#xF=`{S!bm#?^PTGQqY1ycy(~!;(<WB?r z?Cy-_;}>-3bW6vg3{1=3v~=7%=oirGyIMNtRwAZjH?wqj2NBax9>{19{DKZc9~oL3 zzo66av~>72kO!Rv45ka_S~|B*#B{;Emd<?_VbDdW1Jn5nES)?^#B?G0h3ULEEM3@% zFzCEqOF#b|+Mfw|GM$X_FkN(!rSn%JKhTjMS~~tJBBo>JSUU1k;DZiBTBe`wnbBkT z1)Yj=8bZ6A3OW~cWI7S;#`NGcOH0u%OiSLgbOrDXVVqpSw6Ud8$S|F<pQT66B4WCF zrlqS8XJ{Avg06hk(xt#;x?~+o7oUXZ3UtYdmah4Li0M(Z1=C{W$#nINmaYLl(=S$L zbO3%qtI)Pg*P>0Ct~uV)_^w1uja8N&Jp%cH9z#Dc{R-tb^bCGM_ibwF&JH4`XD_jI z=T!)U9@)&&9gpL=1KqoQM%UvP^yvDQZdgIYbmQiho?b*`2z7rN^c4Do=_dSbXbFBn zx4&cQ%!7!Sjz?XX&f3}1nXiHmT5*P@o8Ct{&@IPjv;lrWzy8qD{cjO5-SUa0$LA6; zJ=SgM0o0M{N`#qyO&J}5U(k~SmYzkwGClLSrRO#zV!H1mOHa)~eLzpHvh?^0;DD}2 znCYR6o<KhvLOVafg!D`g0f*_qQ!QPOznShsnCYGaGeRHT1G@QpmX<$9#B?*-o@vE2 zOE+GCb_X4WK4v<4A4}(Kgn0|}VxOg7K0;(@5B!3jS!n47)P?D;%`M#zd8U<HTY7jo zks-)D40`%qOUrvv9?*+#S-KQ_rppen^xAPmOus=p8rl=Tpy$!nOfUSz((@l940_HH z;+_NDHfrg1l!fWG_blD|A(0`ZzZG=%B1?CDg7Pyhv$SMgJlCLC9<p>d(lNdEzNJ^E z6EVHMzokXn;=KeKM>{dq|1%?C)IqPHy_jCT$kJ=bo9U&KExkNU#PrffmR?4?FulIg z(sd`|y~y-mOqI&K-S_;_f`yg2KiF%h1@rb?_@f1t!CLp|aQ}=>s#Nyad;a{Q1Rd!_ ztiZxu_TFQ+%G@0m?tmn<q0veO>G4Nbf3?zAuU4rL_EKZjMrCBQQ5zYyQZnqNx_Wx5 zV`G&?)%qADE5qYM-PO8HP!i?S)~lT7p<|7DwQI<x30Pispli5yuv+OFtBemHJUp^E zD^!H-({zv5274?0^{%C3JzYpVivJpotkR{CK7Bt*H&E^Bt=3)rY$0R(vQ)7YvM)F< z+h>g7r6o`2-7_+}v|j5UXn0}4^0GZ6!^p8wX^d3reLXW~%$#Kt#Q3RHmG1GrK3BA2 z;yl{tG1j%HTB!{;Dzj!<NX77Swc%Q$QX8={dBDeW+tfxXqYcq6F6^av99Md~8eKLY z5%e+~Z3cXnlMH*Q+Hl_p%8f#0O{ExKuD6OIJF*m_kjJ0nJy~BwBYe6ZjPnM!Opq+b z_o>Ee{gs}f(X1t1K*Xb!Sf+bvqdJyJX_lAe7OmFnBX!-Vg5_oT*|ZUTVg~RWFF80e z+<%ZOVIJ`DoKwcG$h;)aOZN=m39oclhim=Awg9$LF@Bh8aaVn~Hry{0<g8HE)I>^V z3@=wKgXVb29E7LWJmBL6Rsn_kB%7HkLtRU3i3&`gSN2rc=4dP(&E~TRyO3tAf$`@7 z@GNB<EorkJ>KYsz>Cr_h#>7(gboC5WV+losPB%V=Id-7Rvzks<h=`<HT<dKNM3M=< zPSrCqG>R9Ed12Yf4G++vqG3t}bUvnVwn@|+74mhedVe?1$^2R}%|D(!wA_KQIGs9s z`&A6ANEz~Vs>Xsn_VWF1LxIG+-G3k?Oem13E)lPsh6!nju^s0v^m*8jme_OtLV;pK zT4HpUeMPNoNK1_Ew8Q+0ka6Lnlqd_*gl}DwuCKPF+N<R%8BgaoYI5Mm+dP_){6==( zS(M6#bRP3|nY+Ma*^rhPn75Z`K^xK%V`wy=hYe|o+D<#|=_PDPON=e};f`LyhO|Wg z4!dK;=xS?2MG4nZQqJ+Tbk8mec6TvOTJj>&Ki+r0XbQoPr}E`C2#^nZp7~lTl<3~= zhjYDz4QVvIafiDa<8?7>2$q)Z!76pQIw(em=V(bD@0H%sn#cAWExEKZ($~i?*4i*8 zTak4kLZ@3&maY(?(*@avT~iXR^9UfqJW8T<9!o2ucw`61Dx-K~aNT`VMWS@tCFN-& zQ95lYY9T_W%NxeZ$<k&W=puBwyfIv~du$33I$e%8RO_ja495mW9-~v{8Rzi@$UH`; zG)2VLY_!^gS6COejA7T7OH7oLZ?Iw>;Ztjy%8ZPmYQt?=%zW*~OctYY)zAsj#^Q8p zHF$#5u{fPtE;jUXt{9_JVvAL+4|erbD>_}s*QxqygGd%6QA{o0Gct(%f<}-$E!~aX zQ*U*&A)ZUY(y~?$VV8ZrpEWm@!Yu5<1Q}Dy*GCqMC%}dZ5@O?I)?g!xGme&A)HPTW zONA_`WrnIldS{h0yc|#3%$7SL7xq$i8(Zz`8XwG7U7DjMZDX*6d?vCLJnu)WfMWO@ zGIp;-3wfcm%ur%N(Slurjdg$fwB}i?kMx_>H<Scw**qFX_;lQ6G8!A{Ue$onNS|It z<EiSd4Oc4|4Yru2kt)4Wa~ZwC*uk}IH;$AcyCltM7d8bsoKKYT<Ee`BvZXUE9`qGs z0~Kx%D;{C{+-+ocwZArOl0YXiGQ^{Cq`p)pFO!%kCrl$*E#pWwexh8)8ojwz$fzpA z;$#9oA2S~Cy0UffAuqur$nbf`J3gicPssPFoI)p)C~A6CgimMK)#0p5d?=7GjU>vP zg##%+iJ6STS<Ep-K4xh9Tu^1`0gaqMEOLDcBRf8d;cnGcB5%bFQm|%Ah}xi+$@E+% zbE`J1WD3G~Oe&>?DW;Q8NZ#jisx|1$@VV!5X5-$dcMXsAjnwrFZCixZ6goc0#qaHH z0ZrDDSt>7=OhGCarPCS(0xNg>yFHd-YWeDtQRvVse0snOJH`+!Ez24LR#J2gjt*pc zRhAFfI!%_DDZz}&%t{Amux$aX5U+D_ny|29Az!Dm*dbQf$NgPHL!vfWQ0HWruEAY9 zDW;Y`WV~y*kt>h5kvvCBnzpPAjr3+SB+E)(nRHkfpT@=Llz6ggqhZe}W=viV3oC4n znesCuF0DO9QIh6dr6}3m)pKxvePrCtfSg+LbP0TntC4H?VvJ7NQ}3yC_2@Gy$@9{@ z@)+kc30Hi@&~ozVg2h}|OPSo<2}hnAGh%Wx?BMirV0bxhA8g}$4z6J00iIc0;<vY& z>4TF3Iv=T{&KAF>`GrCqY@Md4*L6KmjESWbid~&hMCf#8svWEi)f%FVimBzZHt~;m z&d_pl&s5OunpP}R{_1@EOP3Rc?_9&<HK-}EZKJ|VCWzDdA6%`Dx}!{`%;l`3kv=_C zA85DA5N7c{oG3vFm9=3s!l&b`m7W-<GCjOq7w0==@rhhy2imjQyh1va*IjZ+Lfs|v zyq?;JbRLadPi-UuJ+<NGdTJlid3X&eON1Iy=CMw+!fMY7zcRhPuq;mJ@Aa!rK78K1 zrrbyvy}8cAYsy(7)RZ&NYs!5{=MieS4Hj$93mR@0;~y_hTPQWB6}?^5yql7klx`ZZ zdUIVauPJBwP*cu4uPOH-orl+yvqY#VXP(z#`;gAVbg(!9aB}hX@!DipH_y@e>hWSj zMTv^gWQRE>N)VLSlp)%mUWd)~is`U>#_RPeUWub!u;7rE8~m1vM*3Pv5zLOI$z_~Q zZKg-Rm{zKQSe#GI^$8^W&Z9I^r^oAqjU$FehO-?Dr&G+Re6S$S5@cMRVr+3&aTz9f zTDq&ZH(av`mX^gXdeCV%x!5kOrMwo<7|G<v;<lnrbLiuA>al@ZU#58C1X)najAE6? zwe+)w=M*JX0a(y5w4Bb(hO|U?e`dnLr7{5>zqnq*o>jh!J;zI0?SzfNP9s!X1QDg_ z3W|z6VL?M-WAL2Y#u7oFJ6Fj@1f#oHorpjzpNO)<0*DBmj?Z-~auEf6_P|J{$lwB& z3QUmCVytE{Pe2(g-XMj{l+*+{Vw(c}M1Q8Zik8ibOpq5VU<a#<s)K$k7s@7NCdh4~ zoU(YGORCXhapkF1Bj&FbvF=p@<@xy5i)G?t%X1J-7Ry3Jm*){QrfiC6JK|yH^NoS( zc)d2(sP#bC=MVXLl#~kSG8Dx8(1=9E(uN7-ddg`Q-Q!qPE$SGbzvcH0j*n$$EQ;af zOjW&<2znWt6z^y`E16&@BNT@=Q9)Ok=aoI*GVF89G<G%;LkPBWff6u`N~X2tj$|s^ z+8HexWp|@Cg!8g2U1lPwA_Sg{&dS=z3{_R0BF?9_^~jaLA{ff}#fudR^`@Q+vp6US zs@Z;kAE~mq5X0<IWiMxps9Yr|wcX$vW?Y`nMGBc`Mw#&xM*Cb$lCi@yFs+cXCg^31 zd8tzFXiiMhDQ>(ZIIH1DwVm^$g5fw_aS$xl2Z`2!mG_~S5`FX_(f%W_-oKV;ql<~= z!eV_G7VjS)3vVk}dJi528Y6lew8?ddzZ@PZClD=I3d?<1t-pL3(PoQ@4rm~56|D7P zDgMIIMEl$U%X-Kze}HJKLx|R^!(#-$tAMrnOYnkOg2KRsX%po2G3aDi%Wnj_>}+@j zodYZOBZ;=g-!Gg3%lWgcSJIYe5PbsL@-%qy97?psN$_fcrTiHPe*(JuXGHTs(-F4} z<$n`#@1QQbo(?PfV^B`;Iu3^i1uWtB0KI(}(b}Lp5q}N%%aGq(cp=o!g?9*k-^K41 zu#{hLKH2~l^2;wIdgDBzPW<-b_jf3N9rQNh*z;#4<UT~XuR5M+4)8vOzw5|<&!573 z19b1HC<|z9<ohPtb{g9L0kq?LXp0Z8K%0Oz20eg2*bntS>k*=vS0j8C(Jr7@uSD8Q z(RY`?y9s@DB7Q%(2IY7Zvgm^wA-gfcD}RCh04+y<bfRC62XEJLv_1Oh2*|$i81nxW zJSRY#-iJ216Mge6%8lR6fcf|xMBCqsF#%d1@+)pYpWTQ)c^dejd!NGZP4G+ry>mM} z^Ueeg>bx`h=~euF#tNeM5qJD8L>quU{58>A_oI*S_uR*cx`E&E0De&)c40XJH1H(q ziZVR@4AF+qVO*kIbAYo7{1r&E>Uz*asPhvjGw37G0K%uD4F?c+D&!Bm2Xz8{?`C*k zEJykAI}K&I0A+vUD2z#r%Z)I$`d)-r&@V9tKnsC4hwFD2_$cGnE75Kbg9mySb?rqy zZ$bWDwEF><!CUP$l<_y{Q_vC5!yD}dj9>hIj4~eq8odqqpiSPx?}xV{9<=Cg)E)UR z1Feg`e&`j%f%iW0n*J)Dzt@SjU4$~BkN&fcG@yl$xd?IVLgwU`@JzmpI^*{({H}!j ziPsVR7wETZz&n!Gq_ycQ^m}v=ZAR1R%k&=o6Rl5wNS~*p=tz2({*gXM8_{C=JNhd1 z(Pybj-=kUd1NtkPOFPkyv;+N+wxX}o{`5`Sm;Qhrq=#q|`b+vVnnQm=zfbGZpV9$T zp>t_J`WkIWThe;eL)+1|)Iqz@7PL1lq#w~fbTECJy68ZfNuBgvnoZxQ?P+J)hQ32H z=o~tq&ZFt{E&2vMOj}bo?Mm}$FZy%ZgMLi&Xg69wd(!Uo7qkwIQJore2z`p4rx)mt z>5phrs?h-T(^WJ|BQ#7yw1k$@5j0MR(V=uWeTFum|DX@)PP&;Mr&H-PdVtQPv*<#4 zmhPi_>3;epT|gJpMRXbc4ZT6H(O=W+bT)mFPNL)KM0$eWqQ9j#>F?=ox(5@}$@EjY zi*BGN=~8-(9;GYkOVmqu(5LBkT0u|KO8OZM(kXN_Eut&v7&?}YqswVI-AcF6ZS)Je ziEgAb=qdUFoleW>8Tu7nN7vE`bUnRFuh1%bnO>r+=^DC(9--&xH}oQHOh2K`>0jx6 z`ZxM_`e%BZeoMcjf58Lt4*dgt@c%vhf4+y;!isQpJgUS=$%GC~^5{h_K%4M2D%#4} zMORst*^-QXIV6&0M?4TFUau+%w@UU)Cl}2Jv(B9;6&vvj%9iQ8yv^NaL>4$=hw4UH z2dIh_VtLz8NNtzHc0E2pv`!!Q2y(l$k|Mk4k}|vKvO*PHK|%vAYw~5**1o1?c3`ZL zjoFlkX9p}7(*~EC>4gexqxxlo?h?~#so3_#&QleX)g~r4kq%NAXQ1dQqD_YLD!6`l zPn96Kuw4veN_;@d#jFWr7@s@i1ragbdR(MjMQ#R&HImawGX+GfL=ze7>x{yK6K+)R z@+hAm9mBpeVQhGi#wo0#)tPu|>`V#E-aCb?GUve{L16D1#E#fw$IMi<5NQq=3S3r% zDx*m*b-D8;Ypfy}g=bitNqF*Qc*eU$7oyC<-&wpEpRgban=>ne>#zZf#?np;7RgB( z)0aj^?WU#aWTaUpc4xxaj~d&84>gi5Ow6GuJf`GEmdBn!4%q=_z%?#40nfO|1U&EZ zp(E^>bigwnR{<~LGnK0?w5T;MQ8pr6wcO?;kS;xTH;LG4%`OZgePm7&r0ZRfwKjPx z%b?WPE@~#7yBav>6^$80$4721RN|D7$6K#}a4;#meCtON7NY1*pe1rwi+C-9=y)x1 zp^{qU@$p(H--K8#ltAGTHiv)Osoq!7PS2s~E#5q8x{OO<nlu*06XjMoCbQY~Nu%a4 zk8qKcy++KrUw)PsCbCN~L>CcxHR_zcMKb4`?pYDfX1nr`V{0P2dE*@{6HH*UBTdXz zGHH6Av?8xqdv#wAIceiG#T&zW5woBT^u2~>8e5jba*f?@kR00Sf?#m8U=oK@y<wJG z8S^nleq)43EV*I8Yj*=1MZTdRGMRGj;ToEG;ToEGrN{H$KvUM=Bw=$}V**;74LCkr zmK&Zhr4;pL={%++x0J<S<mfzH=QFx7FA3K9k{?GdH%cira@19`Z>#9C-=LdaL44V7 z;>B5~G6D=xgjn<_QJyt6byn#P%gb@FHO&sK%Vko>v%=t2XJGdVY$*`%joEjcYm8xI z;?_G|T5)SByakK}N`Z@$*AS}7!_vrsZIHV?%hb$px5K?J&AI|<YXBZ$#>a8Onm*h( zF>ts6GQ51xQf6sWV#t~@ElSuaO<+38MT%d$!7)6>iz6u9+_0p(7)Uo|xaDC<Yo-{; z#jStJt%uCLJ?17Gc6JCd6K-SX-BGMTnMr<$xM7!C$k_LjUsD(1yo5Jzi%7NP7NYAM zzB9R@!|jpbm058XlrT=3?K?GA%uYAFGr**d*vtkwm3Rw8jmvPx>#np3axwl5!TX%+ zFZ~{ZB*sXs$a5BVIwsuCapl4*GaOGi$po1Mdp(mNw5^K1blR{xiobpe8J4|+3WA9j z(dyZW>ozi5Pv-*=iSkcRXc57!X_xfH=gMhYb2mSovyD#M&qXd-D!9=3TqD|c3u0C= z@^KREq;W*B@|MX;3?!l{G8-XLQnN`atl@3`VH<m{wmJ#33)cBIS+LO0nQC^i+}yUK z<amXxT=Xf3;iT?%bB8G`XqS@33@krW!F$2HGYzX*10Z)?A`{7jk~lv<A~Df;Ya}iQ z%ic-eOsweon6RU=#xoH!DVIhbe{gBs(S<trkP(IQxD;8Zid)e{8{54*=Od0bd{8=| zv*yaX0dUA}!dRL^-n`v}iq{U<?Ti!m8<~*fmVSyaOa?i7e_u;36&_6J2)Q@OW5i*E z=an2o#00`S81kcsTsU^<5JuwBELiJ{g9azAju;%%F1KYUY(4Ln!R;oG5?m_Jvxf+d z@4a$3rPb=VgM(bgxPyoHKZu(KP11bHts4y2lGum7z&2XV93#IK&2i*$faB!{0gmCF zTDT0sby0;&t%6H_?8TJ&4zr>P-#*1A`@#W0*bhQ^Y4w7xoFXFA2j($iA+1^@rp9-P zFq(?@XJi(jTvG4pWJ0-bkPC(7c0NTefA2G9Qs|qjyh7fId-pIF_wHmSWR_%3GFQAS z#;k&$CQg}ii9pSs^ZjN(wOc{8t`hjwO)-&Br@J)4^&`1@+bN%&To4hqZyud1oC^t^ zs@X?~F{1~Q(xL~$DOX*GB@80M66Vo`66P^s36+*xmrzBC5=K<tTwgow#FgIV@lM@c zE>Z9lQ7Ueq&c7gSN$lG+S8IF0JVNFyRoO<=DX}?_tFJlW6xaT5yz<3mGuivgUmX)w zQ*&yqpbk0kEyGh_A0a83DWx;<{5}|^j^;?S%rJ}FJd`b8eb^|U^C14Pa3-l)hvsnz zWmA)hR7z$m#2brTz0547Sk4)0^6*OL+^872__Yh?>DMkC5~^d9C9`tXur0k2%X#t{ z;TXU8F`--$?9&#N!wyL<g|pT$nMlVfzjop%y>^nEuv|t`teuSP#D48;#37WuuB7&D z9WJFzo<ei06ufy-A&_t&5lY=yO1Gbm#raKiELQEDa{-~ebv&=O%{iIER)_O@3%L3d zUA5uVvn~s}mh*!nqLS635oK&Hpj}G*ijWH?Rj)2V?ADEN+$cq>OX!!9oV8ybnoz#R z^J-O>E?1}u2K#!(eK)lSXjFab@{x*D$8#!E7xv3QE~ZnHx>&y~<k-N2+bKnJVKB5q zq%#TOt);y6MV{!HnT@p~E*r1>bew{SVF-n%5;UtA`zXq6?F_1|15~_JZ{`_#W;g`= z+{{hmmyITrFB@GbOf8p<M#k85IM|{?eyMYRuA<D-29B^^EtyN?3Q5fg#+&X+4uvDq zFJ8F{e(~x;LfPn$SY_wCx}d-droKXaWd4iDOyB@ooCyngM5n_t6{4$~iWhGxGa#MX zFc;P%(JHfCq+Kk@(do1lxsp(e8VJ8Y&r>?Zpph=91evS!M;66AJGPSqLtI%ex%pa0 zGBc&0$=|5(0;z&Cpjac>e0+QOuvY8&%<-2jZN7xEDgAS5!>qn5|LTO@I?w2w-a9zR z-c=KQnW|&EZL@Dw9k}lNHP)i1H+p;T_2GrF4w-*zOz*9BkN0n}mkkoUE8xN50@?2z z+F-}&HP&ctG1EnT4u8Ob1a|-S-&**YL)$!*$#rII_;uhP@SGe6=g_o=*2M2;;RC|| z){~X`I(>G7&w$Ap@;}btgMByLoo`<q8|iCI+iJl#rp=$X$8IJz_-{RgIU#2Nk0$fi z2KfKe<}V3@Qt)9kiu=L7Ypn6#|Lp)d4gcfvtx2xdbKnNUoB_u%^<$*99H)b2!0<A& zJ%{;U;s3IKoEJQQvJn5Q37-^#YI}7o>L+is%$)5$aK@u$O*2~HR%KcPKhe?BiwOBo zjFwrB&!goU7s!5jv`oz?Xr^bsgi@4#^krQ+Qkr?nW@cZ1n>NiqWpI5;wp-#Uo9&v4 zM<YLF@}GFhIvk(nUUY%%cXHdenKs=F$dfk~JKe|i(56KEgw9`sXRobH{noKFYW#>p zb|1+=Gkuvq0s-!qfx8CgO|uS^dp?CgEsvefnb`y#;B5`OHFLa@(-~PgRgPwA+A%wh z`~@Jd<&d+Z9|hEM9cO<xj`TGkeJV#Pey5~O)RGaz<Mh)S)gGxRI2mZBHD{Of<20bH zt<l_?MnbgQd!25o4#v$lfcKdkFMi;rfLrfPx1<P=w*>M!QRM76Pr=GSQ|+4=L%$cI zinBtAvl>rlM||Xd3w2$$9MzpfDsUNSx5mGpV`JYK9CJ#X)@z)4R@Vzqvwf~PL~Rpw zyLdZ)9qs%F<)}DrZ4);!me&t(v-P<>iB+&N&`i&!-fe%FKn<(gDsD$fEAwh-1BWY) zu4VqKF_IE(`$sui<lA2gRtB1B+t~@!4MWt@0o*cbNz3y1{cMO@K9E|Ti#tl@r;UO8 zIfpw5Z?}$F@#pjN!1-f`V-8zn%e6jcI!bzPQ{ZeQaqM<qfyqEqBc<dG$}7FkYpm=j zM<T37-AdkIUj*L94v!C3%~8kHVSPbjnS+$6!`eh*nNybbuu`k6FDk6ufJFhyKr>^c zBhhD@N<4GIBXe(ke57_BUkb5|vv8YuC3WLf`DQV^OiA1(YROE(`jIaeQ0>`Qn}~_$ ze40YU*@yYARGWAua~Q9WzoPN<L7jq?fo4YP?8F;r^CGG^1(ZmuF=`Y2`BjDM&9&M? z?Cgxci>9M}x6p`jV=x6T1MRl+*UHe1g_J~Ejdo7#FSpdV&W=q1%0M&qOz9=QuJ9s8 zauQ6f(3?Uod0u&EyHyMsDs*Ror+`~tO{Ly0-;l`OzE1(lKr=O+U9x)H95vlq;z{E{ z3DR=grru}Yl!)dWT0ynmnu(d=TOrn@yjxPW`?f?hN8wXfyXgum|Khdkt<{(T67TEp z#1V}}XnXZcwdpnz)fg1Chc&xIBl%T44>J^&v0KfoS=+=+JcBcfnATQSLCQcgPkm|^ zK1(55LtL5v<c^w-08M`Vu1(aEck~wM$=M2384)W`8ECg%I|EEM5taF`M!S~0rFi%F z-2jbEL8|TIC1%rYC7!KT1=q2+i<r=#ZzmDi>Y>n}vUQv4y^`6DcgNq8XvQK)=H7bW zrRKChkyysQXzH-Oudvvty*;ed4)RY!EMqd?CSGFh++N`cgM0-k1I>(*)TzgxDa3+B zf17RFSu#GqgYh{hjXWu9o0ML2hXTI1f=D*8YJ+ClJGHCau>{pxg)7+B*N%xj^iB#l zaI#RaGSEzIQ=@CHM2&cGNUYXpq|}r91BLATL)ybj&44=xc<s(gDXbq#EMufNb@kds zVX+Bhdswp*Z{&F))}+h<sg>id1;nZBx7`#P8;7>nmZ>o^UtzJwQhQjbUH<M0EBA*| zfHKg`tdgqR9um*ktIFJ4pGQ(yKT=qHpW4)6?WwTXsJ1<<*@?C2pGz#~NuuCnpqU;^ zp)Dw&!N*Mks6e}Ddlk`wBX0@a6k5qThPD0+6`J<WlQ^x9%am2Y-U?Ow{<VpkSVinp zKoytvDOee3riD|h2)-}e`#)+M>%tbQ^;J`%Z+~1s_D+$qhOPH)>dbauiE3Rg6_^Y( z)3&Kq@O~02_sh(@B_&YHPiSY!K8LM<{xX3Yd+E!9G*#ooxz7GkZ0F}Gky`K7R7?L= z6gTrCRj@M9Ol?z^F$ZYW(1}(;wcf)e+8jP}sFdPP^-kwNiJW`uPW6cHN}x{li0+PJ zPyLAQiQ-Q6i0;*>|7#<<T8cX<BRZk`?Q_UQfARL7-;$GqZ{zvxcbExhbOqk>dpD&U z8c3r<cgi=rwuxWT;(Q`rOXFL2cLgs4&CJ=eOVC-@e~?C(UiuP7)xR0c)K2)|0JC0g zTlbz=M-FN<Yuo287-*}GDc##p32LM}TOQ4+-Oq52EAB>UtCk%lqh}M0o)M1*bFSKm z8YU{x)R;*ijXETEt3!KrDw&Pgv*HkklwBF2fLiaXgbu2%k@5>E+C)t3#K!_ebKQl4 zlYwUXEVT-4IJDSZ8WO1Gk&@EJj_0W2#%P7G8f)#uzHLzqFS`arRkHQ5Q}R6UyuCPz zYHq$(pfb=*f2OR8mI%z~4JHyywRkhgDb3hYhivS@*%??twcN6)x6`2t%Q_afiB|G< zVw>s1G#X#+qQGRJ-B$dG!eXyynS1L`MXJXRS6J*)-6mF|4UY)10>!#SZl(=WRxU>> zEP0`hL}|S(Q#$XXJSN|a;I8XYfHKfj9TRVfqaB{S3rGT}zHADuWcSXt7{@5IsCu~N z=R5U&IJSs~Ym8L&TE<H~3CHDlQ|~$OQ;9VRo&%{-dA!8(7d)wkl!2zkNn*8hg2Kyh zifXgxQfv4V<A^a8%cPE&pGn-w@X1KD>PZUA->W5iZZ&4JgiiG5al}b!)znV+WQD6f z6`?9C1I>)t)c)ucg^3HtWacW+6jI45lr6AMl}J<U>vCF%HO0Oz%VKzwGhPx;#_0vr z$?$ba`9_?f5KC^6Yik6hc57#9^#3K#m$Qnfljix7YU{HVuDCo;-mceHTc=J+&M8B; z_gA%tn>Y(Qw+z?ci`5=>$vTfuY0fLhHur5Q;FjN~oh485H-UV98FGG+SDV-+`*has zUQmWDZwOQHGSJLhA!X%sp+fh!F-nZpc)OSMGOy+@l8E_TkL}^5cIy`_JbRO5duXXO z?<GYvzNb<F%0M&y*IA;A<dcz0BY5WONb#j2iPw5xrrP#0iJo1tIdy242Wb3drS{NL zGw>BfG;s&029~90sz(#^!Ieqe*rKLY^pv&7RSMl)Y$~%?)o!MyseSL&5^IXR)vgJ# zVh!2yJ0;bUzfg$gGh1!7WXjX<+5%RrdJ?{wzDprqrx5F1OWmiaB*>(Wmg^<rBzXU& zM&=C?YZAQTQubswDy-rqzN$f69-*m|z?(GkWY~6<ys6mxZ+U>`?;mcnh9#?6_Q1V4 zf@y9yR**8#%yW@C0a+mtV^=3ju$G^X)JpCai7f7AR)8&!pVZs`R*A^_16&H*CR##& zahpV&3=gsr4HVy`bi2YDZSbevr><sqNVF;TSG!YTO@hB#;*{Vng_Ygqt(s8=ntAe4 zTKl_0G;_POL}-2Oo3eSnN8_pQF}8=AnqTf!sKRr~oO^~3pe#qb?R%d@&Tmkc2&>V) ziP3Yv#G9PjmCP<|H~-55n!o(Ly*j4e{SOpS_0{riBA2|4dEfY899doP-5z>s_4trN z_c!3{Nmk-FGkR0Ixra*-Cu5zQT1h^laQR~^vR17>F)6G^CDs&s;ytFYrq&bhS0Prc z(<XIg^LPPqD*NpTg*LUGcuy*<_C4`Zv)fZ4R`7|5_MU{)T41F@b|0{44==UXe_G+0 z&toVs8E9rEOKBLNQCRu6Hzb6bW17NC=xd)<c<#d<3a;g6FZFJCu83zp8=@d(pqUz` z=FR67B7YcJ=HB`oo!X_n5MpItJZTRxRl8qH#3}YqeNkbx@1L4Ft^ZAk<-Y}^8dC<^ z9Vx36X8S&|Db4;%Ay$PycTum7@r_WG$T48cPhn@t4tNIEhc745OAZ5DFF`^N{>lU; zC>{y6+S8pS7K7WM{;wv{<Hv%n;(xbf*5!|Gyq3f-JsNDi2NHXP*JT;hr-$(6#GbB6 z(2At?*MD7#-tJl~_4au~p|W>x_E{y_x$6DU%$$<i(f>^W(Qm@cH;URqPOXyOl*rcW zB~&1^Jf2eaBY#`OE7@erDmT@>iFxF$B5LtlRuZt~-c8we{aucpeJHCfq?Fz9+c{GB z6)pwYa*w8J_xBESQoe_gI;(gmM>1dgvL6sr6_bHx#!RX$e;YxITvy(5Tc&27e~4ig z92r`!WyzDl9wPr3L$n`OlQ6A64<+wa_GWljW42$vga+}SG?x7&Tw66ujnMZrTEs0x zLN_x)Q)e H154LRuc1sh#}qifHOnd9r4$@0U_L>wnS61(y_w+*F$;#^%3jtb$8Q d%UC7rYd&H6w*pqXtD00RzOT{v1BJ3O^gmK@o>l+= literal 0 HcmV?d00001 diff --git a/lib/windows32/libpng16.pdb b/lib/windows32/libpng16.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0e7e5f428f945a25a70a3da2c5d65f641ebd934d GIT binary patch literal 5484544 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 K5zEuVd! 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 %%!>J73WzRHZ%}-DU3#aFol%YhpY+5x^mEUTg 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�5*PLM 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�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 v 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�XNpybe2=^1i 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 YszQ&6WG{)9# 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%0A+X@;`Fu+j*xZymc{JDTg#k;kdOGoRy$76^VOPv6 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%0DLR-@7W?h$&Y*%;{P7te?a{t{?juEGwpXD@Zb3G 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 bTsh#%0ap&Va=?`Xt{iaXfGY<c<iP&{REQ`k literal 0 HcmV?d00001 diff --git a/lib/windows32/ogg.lib b/lib/windows32/ogg.lib new file mode 100644 index 0000000000000000000000000000000000000000..559cec9d5b984bf7fd6fd99b5efa0a7114e2313d GIT binary patch literal 46146 zcmeI5O^h5z6@bfQJ9dn5{2#}0oONOwW1P**?#%iJW1P*8qR0~AFN#n^XFS`xJ9s>^ z%*>iNii7|OA;gbC5kg1^kRlX;5Q>C2MiwW;0U-{YI3kn-2Tl<u%zO3fzpG}uIHjky zr8hJE>P=5q_1CYeUcc!+ak)M0tX|pm<cz&E=9~3Ky>W5j!puya7n!d!GxM#BP=d>= zyBK447~At1#vb?~WBc}#99U)y<<Rd)j?@@KIr<XGv0pKUa{Rv}C$2Jv^7z+DPW_oN zlrwut&c4VP$~pKAl-a+MG)^;yGQUdFdYdtn^Y4*df-;oLZ;)L13u7oxog{hsb;eMh z1s%%sV2koXpXA!_8AJKhHj+<YV+`f9-y`|_-xx!A`3T7u;Cm>qz;{r-_#cw?CB{%X z@LMSPA4pcA{ZPL2GD+_(#!&kIB>D0jV<;o|4$3-w59PJpB(Dz{LwVy}lCRD%hVr#B z$v40j<(tPyz6E-eZ~uwpyT=(r`98EC$`8O6<;^`LKYEEVlpn*fLix%2BtKnb4CQCg z4k*9)JIPznb|}AueL{Krk0ig|$r#FSULpA{v<=ETu)TNQ&pNkP1}iIBJzMJavTnb9 zGiO=0nzxs%5|)9{TDx;2`^vC8&d0;`eh2KjH`g+6iDljGcgJ31DzI!jgSFdUTPm<^ zdwF~4H>MKXdNuFd@LN-fW!>&|SNdLSQDRwp4RxCh^HE-C0il%J8A6l$8cOR;%ZB@l zXa-8t#%H1}dV|4@!d8S*ZUtA}t&mPytmNbD`ug&6UN{bBiL}0cdz_El4GN{Q>5hvg zTqiBsOScL;PCCQF{S`1!bzclaY!`{`38m-gSS7Z#2V`Mwkt}r{l<gvC>mHb;y+yN7 z`f#?3?Cm?vCrphN^dY^N*-YcQ7izOW{jMO`@+oAfxu*5P&f!;$ee<EcnAvR8dSOcz z-HVwCv9n`lk*b3a@Wsp~9M+47OQqV92lB<tqMWZ5Dj+$}Mz{MN;CwJfe=hyBrG?+3 zb@y0WT4lA?UI90jn+|~tb%A9&ST|jsHsyL{>6}z#ruqe1UCKw};lS(`9KG6F$2pD2 zPH452bMgo)b>7f=!L8Y9zO^xscax~kM)|PY?)3*&bNdb4?}om@na-f{_$%1V(018! zx7YK0!7es_K@^0)Quvjw+3}e_j|JA2J2&$2n#+XTU0qoCj?0Gm70rjK4eS&ChO<}Q z!L7XGHCH9Z{uKD5A2kRh#d2?bv>IxAv(VT!S9{uB=ncz!VD@>k$+_0B@|_2?cdEp& zE}jcyYn}~4Q#c<iJ#G^r%5LSuQFma$Ve6Hp?_A)fx<J{Y-ac!%rBoYsc(AQ@5{5#r zELVo@{(3K8vm2Egn?=grX?<>}+Mcg<27SP6J%?UK`%<?=ZLfpvIa<F7F2Qnv^aZO> zedoGoXSt3nu!>pXh~j`;>6hxToS&N=h$&@gCb`gT^7-T30?jOOCV6ekR)z~qe;7=+ zVA;N9w!73Gw@)_tD!icnJ90(6*Y66umQ<nL9l4_3mEC!%+6y1vlq>4Jeph~^iOCc7 zS(uoh&fK3Zu)bAl_%GK?4gU?S5!H%nL~At$(?w>@ZN#jHw_m+py8Y(os2$Drdl$C7 z9RylSw%;6Ig_naM*nU3;!G-oswTo&$Ds^9#ojM+_1+DA$bIY-Xb}*Q{@*}x}Vf$k{ z?vU-s_jH4n<-cBRS^O4mA0iF>m0oJ>9DMN3COxxG;<r({{af=3oMUQ#YV|to$o>4s zq5a4CYhz<?U<%A&s?2uc&ccFkGpzoq;7W0cwEP2PzhTFiYJYW{(C$5uV}3hzoY3xH zAgBFy3sA%tY`K4n&-$%?_ueU7yJMYF&oOWd?sOci@ED-n2Ld$(*}*^IKA4}(w!z&} z=MrxP+=9~Z`qB|M&p_Owvf*{WBe0cSUC!I%**YEwcJCf)a6xNaP-}C7<)l$33fDXb zuWB}1F6Q8gS`bs^&*|2@=@W^mbFkAJF|`dV1`EDTVrq|JH;Jhue!BuwkNNEsQwL#x z$};t=%@iL2;gLc4;Pdn#>?JOmr#dP4YmGev?>0})$WNb5qM#T9<1{T?jPOwD()5f? z6OVaJGfkdw4@H?oL5QXc5j3US-#zWn#HaaiMpuU@IWE%vX`}wm9qnreB}+m~o!?~2 z@cr1&`o>U;4pV#*Jnc+5Gkt?8Q4(TmVUwv6Og&{YMN#)DXUcbJfx13f5@M=Vo~eeo z=*?plG%h~_W8aO&<$OR6?T^FcN#pWe{&93+u6NLHR~VNc_uHv)`Cizcvg7irHd7Vq z^A12QanXI=8B*}q8oLbd_L$rVuW8rhjUdoiytzq`(W0TA?vsijy3$jfQBxE_?qw`a zkW_|z(0qA<=88TjmDs=)gCKE5w?cmCusBDwADT7Jni^X){SaPD_JsxveTb#<vG-QO z{n;lhmKqh}DAF78gdBCbNO&Vsh6sv?em9EIfK*0Amo0*-6b0B{@I;WXr<NMK1fSK2 z2tAHFAQHL|KM|4cggwy56+e^{G^OJqUmBFmf(l(LX+=c06ZSxtEP|%i15q}d-GvEV zzyq~5<Jroc^AG;m<3+`fkwysi)$v48@ob}#I)8=_h^&$jQxWm(gnP9MiYdxBtqx03 z<7!`ut<10u_G%H)>x6r?^O_*cP_B?SiW*mY(ywJocE|(8M5@!Bmn|rMc%u5W^5aR( z7n%7%{}U6ZHnR%Ty3)}y`Ki=sXrCDL=?LRVp~1Hry8y3hUeEucVGpWF74kk2G3xnZ zj5?K^$fl%6{8@?qqgbV0>><I7rbt~_<P<$`P-Ioo9#lI;A*v#x)d^?X&O21`O9T99 z5LqAm%*dFTnn1^M{lhK^F%=QNPME1Vhbf*SIPFY%5+nsvlQSe+5i#wAd%uRult_`R zP88t(=>23Or2Km;hLj{!;-8=aPt}Zwb0<ty-K9z-NlrIao+L?0)#NP6W=!-u-I4l} z4plNua;mA4$&emjC5uA7DkA=E{U<T4|1ZrtRKb9%LJ=tZrxq@H?st|H{I$lez`Kkf z2xsKv254=FqlhSY!W=!JIilo2X!+`RrZ|pdcBJi;q&CD+L^M3%|5KhbITAUA)!``S z|CHwKe5|;pRS=>nA~v3|SNfPuQv<t&>d+MHm5Qm8>P}FhYb?!(D0#wJ0%vWGD#TDs zmcYdOgarwTh=?cbi9V_cq71_+_C&rEN_8i>AV(2V@Ps|l8JnZ2^+cW|N_F$W(3og5 z=8fYUz4)^zKcWdT@(8OmE{cnJ8<ljg_*z8)s^%kN-U;__r!`fSYX}%l>qy&|OsVcy z8tUKXBcj|1_iv{Rjxe3FIt;~)v_0vR@@}?4f+8Z?2@`Zu6U1{4r<EX2LZ!Udagd;h zSa!l0-H%%YRjD6~$>^SNC+r|U5i#t9$3l-GKXl(~x|R4;j)lw$>VdVb4UMTcqt|+t zhM)X1wG*17DZZvg#K@~>@|v2h4RI6^y-xU=+KlE1Z>G&3M^K$nQQ2#1M2xDS>ynIu z5KS?W>|!2LDtEPc)TRj^JW!!oTG_kWXqw!oF5nYF5GK-xSlWzcm+9e-YnFKSe0981 z+1WmE<oq?jQiceMh-N2zkF7^ELGp1PQ|pan1>LSq>jNy!ZN{+6c%x&QCCZV9FIC4Q zmCY6*=i~kfz}AL1iilw+JpX^#;7FwYPcKJK+P~mva>oB$L?nBzcxQlAM%qU;N8+(+ zRq{uNgv-^r+4x)=xzyNI_=vgLM9c=yjSEF2=OQB7t>QfbnsCSAjqZlL+qf(7q`M&> zHtaB><9osrKKW+GZ`YJ9gHL_IC*Pd)+o`)D9|N1RcSC-NNTLUn@lcC?@LqL#xJN}3 zX`-$Q4ZhXb=irry@>bLwHU$hq{a#GmJKe~@kpg8^@>k^}0|q?Cze(it2W2EP#8O1; zyH$J=PAVSjL6apBZlMQBR*9)cgn!Z=3-8`8ml}H!KAIlOs%X()ImIEuVxr>3(N!vU zJ~`|m43A88`opsKsF0pXM=kYL7V>4fB*auiY&_vBEr(pD;EB4`;i>$U7EO)!k->-) zF9^{T5gl*NCHuU}gEme0)LQ=7=;{#lu;}V^|A+VVl1q(UgO7Iqrz+{|{fxp8SrJk5 zW^r_tO5b;&NLIzJ;~f<cX|mMB7)omF1ut3dwLIy^5Uh#U^BNHm^n~wxvcJd`^aE8I zQ<eR1fgV#KJAqzM6$QLiBO;!j@SVT*nN)QLxAG2$szM{H*pa%dWU&*}B_XCZW9y=8 z5O4n6y1f=t{VpW2REVeYv32U<3i$_?Iz&=LY(3#o`U56O%f0o{D#fX$ca&~avgn|! z!Vp=T@$@o2YEOZzD*33`csd8i6Hk}=5K9s9^n`N~K5Vj-58yckRbr`pZVPp6Siz!e zB5jDH&8T@9pS0WLNG6_Dilx}GxU6K6CtVU^Dk5s0a1Q5(Or}KUU3ErJvHe^z^NxI$ z)Q4D#h?ytM(k_c7%D$UomI~Q-f~Cp%ca4ZBdBQB+&soBYS=p_8IO+}{lsSbgSrs&T zIY%GxOZAw@c=3u$D!H6HHA|y>*lqXvg9@=!`pPh8Mpe*-$tVcX6cG_mI5T*MrU_dd zSgMj|DjmJ#G>HnjEGcz}q?kB(x;dNonIz%$Du@hBYafRXy1)t+QIh%)OA(Rqgs=W? z*DS3J+x_)kzQzMh)#0i1)nD$Jj7qvlSw$hLBBJ04-;HORri#Zct3y-SyYcY9lV?uM zk`p#DVp)%fd?%beuvPQZ8T27lV?AHONN068Djl)p%;-wGPRT3@`J{*_c*56wYX(yo zY8kEHgg;b`E5uak%uHg+tYiTzyD&snL@Yev-foK~>pBjes^g{NdONI~3lix<{A|X* hvDeazKd*@iesD&UP4Bf7n#zd^S{xY_&piJc{vY+aGY9|x literal 0 HcmV?d00001 diff --git a/lib/windows32/steam_api.dll b/lib/windows32/steam_api.dll new file mode 100644 index 0000000000000000000000000000000000000000..8e5f5022d3e4c9c229a106c6fdaa32e03b26b313 GIT binary patch literal 217376 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/steam_api.lib b/lib/windows32/steam_api.lib new file mode 100644 index 0000000000000000000000000000000000000000..4afaa035381d3b71e923c50c212466da551e480c GIT binary patch literal 275458 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%0DheL8!!x<-rgRW4=J zDTPWsqosIj8f_U*8Fb4>qrTDdaBGZe%2<%H>Xb~Ks?lD`)0jcD&T~j=j=*SpO|>!i z)asSZHpL?+6<q3mO=4R@kZNHZO0lB0s=16FCF??eGniV7+aBgxmvZ_>%hLZ;5swI* z3Y<~jXc=i%n(Z*%W)7nV>2gm)Kc!?JXf9=6MPl?JEQO|H?$ga?TEWPTf|!a9^)_fD ztK;+6q;9ku$2C>O8a=b*O$QD*@pS0PGsxgLH5m@02Z`4xETq7lRnFnpXlATYNU>q3 z8BbS-8%M==ni_1;(ON)_C0Z+MEN5d{>`DbeEf<QZlUK2vjmhp+NM-U$wu{{}6LciK zlYa^gt*3}^cX6_eW4WiWuh=DuDRC_?5|$EFJ^<UrCo8Vy6(=io!kkyoa;IZ~A+a?$ z2C}%`wBtRlGe%vlMRC@hTLnvsYWdP$^y7qs4s%qhIPznA%{1mIyPMd)HHNbdI<%En z*V@H_)3lQu&z!iZT85I^Ma!tGwTMV!-$cTm?it=Tq*5{QC&&%Qtfu&LDq8+<7$nxV z=1pEf%Z-FayjI$jtP7*P%}h|5+Racb5i(b2Qz|x}6T%(07!*alzSc5UR-$#SRNNYl zjI@?@Db5~RT@UwHVURPZ8#nmIEuU7;XbBsnI<k<G*D@o|6N0X_DyQPeFZN)V25qBS zBG$4btRxj3Z4Ki9k(EJnvZfn+*4aubI@$^wX2XU6ow1ar)><^xkcmh+u(z=$)j8P1 zyb&eknb>VpXzim^Mt)=Ef4ktD_VA=4Y|_?RT{BH*SSQR4<H9NXGg_ynwS&ihp*Wea zgVzmfORHAW+CT*HG{#BttH;B)l5jz`)sR6`Yb|^f$_s}R?K5Vzaph1G3ytgr#)(7g z0lZ#WYeYThQo@J+>bUL_yHt@es+;Vt!ucacWlK+<0&b%)*-xZ3{BJ3YyGvf1w6#`K zdFA?06^A6qA`+@-`4N(~pi3%}(r&Cyy{0y;rQg&RG+zUfDsc)WH{U}W9VVfzm9c`; zsT!lWG^jm#tO>bFP{TD)+pxA=s~Aocj>uAy8n)h9v}DD?xUMmdxDs+2rnTL@Jq6s4 zuIm&;ObIy^6AEb9tkR}Q%b_}gQ>UR}kI$1x^6MJW$be2sWh0f}AaKrdA**5RtKjbI zMiZyBTLYXHRq-KWOA7T0Iyso=suw4*G9KsjZ8QunL~+oosqCa8L3cJR#dXZ<f?z!k zU3HF1PETbCDe4<AE?S6E&=yni^hl!AUUcO{M$oCGRjgso!L%vWNhuWzvPhNy3r|{3 z#S}hdkOqug)W%njN2LHqTbn#I>!~cY>t+uYwHRK4qU?!I2#lpwtSbxk^*AsRC#>R- z>UzC3ts5*9tSV_0D}0TsSYI%$zcW1YH7BiMg?yB^W!;%V5obnL#fVzfma?`6X;Bp) z(hVWg24nmzUK`tD8lHhdt6H2C3+o39b?uSC5no<h!;2;@dhf7|wMEoQ4GlYVdRpa5 zso&Tr$uPx&Dz2!0;D+^Fy)r&wEQ%^yaEE5T%=3y-G*XfowpBrM1J+1k8woaPS4)Ej z4G!W4W9|BOy||ti7fwd3@q<*;&Lrs7T6!zA!Y#IAr_YG%d9j)^m~MhOyfK$<d!gQ@ z-Gp9KZ%r)co{KT9qTLoP5~v0h_k=~Za*BFeD6j2Q(OZhH$C)SrDjmHAj6&8n#07wE zW7Iv&5+;;NdK=-8B&|Tll~QiiM5SZ1fMkRxB4b{=Geb&Mo4vUj%j@YaVG&BRUYm7I zO-9_xOM95zGbLnCE9q@e%SfHV)y|ob*U+=~H;6lK8r_X(74^1;0?d$Mij^$NYt-CI zu})8KDdU{Ixy&i(xs%@5iPO@0R<t*=bQ(ss5^YCD+{l|OXwK|;C8G`Ld%H>+2F+Ee z$SN9btt@Pm-2}r{jkJ-BMuvU3h*!fZ7HVV7hupmtf1$}=qlSSUM}V|d=@^i)dO^E; zx-Hol)hQZmjnvB%6Ija9Nm>*-1`Eq;we@X!T_-akF`CmbuwyBNWpz)IIVEji#ll}h z|0&5BOPbl@HB5$;=Na0Jih&=acX9SLD0tdeu7upEQp;ckg=_6lo1nvTsZq_?TiI%q zi!>Z*KH)qsrsJWB55so-$XqO@<e^R;c*gM3LEXZZt_(}J6w*poqSQ1Tl1K`ubqg)+ zg%zQ)lu&EKve?B?vm}K)XbWn&Xa>WY5-FtQK&@O`tKeK=BS}I^$%42$uq32ZEON~! z4%L{Tz8Y5eVPCHZsQkg?pjFjiuMY>#&)K3$*<cg3EF8+}EP)z5lO=JBi&%j<+`_A> zc1K&nk<lK7lEDT_M>w5s7{W{PXBEucgR7R&Vz1Fd4&Hdk!49PW>=_jUzijN%l}$OM zoAh6$<YdEETf=hP=GWKUl<4qeYkXWk_Mi8?tzh+gpjMmKKGgEek+_u?<A5z=tCLD$ zC~ak>oUEYzFg_<z%n1zxyIiSCvTl!}(1cpeYNwq&*0Lxqv=yw}Q3g3ON8(mq`vV{q zlStga8#a+*@yWV!r6PB$IJ5vdMMqm0L7&0lOs1nisq+#hCuuCDX|N_UEvZSDsW_xe zr`VCLC6&T-BPfOUip|MtmZBs3y|@{o-mSf6D%qyw)7w@y*i1&YuUwi_!Aa;DEQxlh zqr#cfFtCdikwSqgfqvOpGGq!Jg9SV+V}4_oI4tcMc{6jE4V@ZLs2S`C_C#h`+qJBM zfjfFObd<p=C4&u-Uy)9S*_=}|*r9Gw_;3_0szbfctC;!2jGKcQwWh&ZWTTUeSLkFc zEFT#e9PO<Kn17)Eh7)g^Na=)CoQPzC5MyagwD;l~6%)Bh%WfqcU=w|LYyhYA8#V1^ zT_Q1Qdpdo)<>g}KXoty5DcNn{WpZ^LxAir}R5A`p*3GynQl`>XTdbB6*=EkFjHm-2 z9c3d<uR;?b&cW`$fI?Sgu`d`8>W)ds%c>X$>t(w63fEUU(rOe`+{hP6D#Ia5gkcDo zgy}XeoszQ+Yf)7i3AG%o^wdhT9j2qL;>b@^Hl_lUNdoap6$8I4o*2Z7N@!b4`It>+ zh(T9nF+59EX5~9um<==~MkTFc4HKPR9x_-ovYWJ2R?_X}P+<eLOB5<o5)4Wz8}g~t zixK8B&e+1*?sC=K<Y^RC++j33AlGTA*pX1lY>7rBq~S=Ej1C-4M>(fxw?%Ui-4j6- ztG~4C*+sEWTgs@}?NDE%Tn`#+al_kqIVkl8_3&0&-5`m=s*%L*L-$w%W5LZJ>?*7r zw&YkMOBAXqdvPNqYWTWBgG`lHo4X|jrHl<MZlu^n_o<5|OXj^u1_cW@ypq&W+h`~t zS-&*8omw<B`Bsa{wm+*CR`ZTRn9;GMi55a6?_buGxU6G&wTvBVBI~#jKB$lOSG9NE z<fQa07-4IcY8!OhloL#CNj)2GZe5BMkh-d!U~5b2*-)IIQN{V`XgA`7>xMwv65=jz zrJ~*z-RIkb4VdT@3>L5~Op{>=BY6!yJ5nMK%b?b@U^xCQ!LQQMTL`B%!b3q|#-0F$ zik_eHLf&H@C&X?+sbsX#SDq+iy}z{4L8O#=?v@NKPC7?Yc9d<6L4GwBMqo9&Q`}O9 zVnt($x~qjsZKC7Qsnne9I0r6i#UXA<@i_I$zIi&{N<DpQaHhj_Qe|b04&i7`*|SKm zskas`a#>!$!Fk2ORz*ACo=B5Q$7*3Hn5MCw(p)Slb@die#c4|s?oG!r55Y!k#%()q zkD^)IXtiwyHj^$mSv6=It*)%mp+C;0J}Iu}r6-BHzS~N?UejzXS>~Oq7a3D3W^7^m zaX8qBA?dm}DGFbi2OTXsW(!!(+^K<#ikTne;f{mO5|LL^*r6_;jFU@@l+p@TRID~> zqgBy$2Pp0eSu<mJT<Myj0Zm=YuqNfr%;=F9O8Nnx3~yW7%-TDNeJ*wFN%|SqwzQd* z)@@-%zO1`DB14-HH}le|H>DDWB5Qb_hoRH;88S9Bs%CpRV{VzMP&3<sbJ%Go1{dWa zsLIAIpQ5yq*+xRvEfpyR1$X$?*RD(NGz{U9?>YqqHzF7gY?KfXgTGlpHP@1j#Yziz z!dbaef(kCYJYem3t6p7Qt<3iKnaW;X)Wnwvwi9Vu-o!jmt4?5ZgXK(O%AeTdoQjFR z-O^|aZA{#jH8HkZ89QTJ*2I{rkWMjHX_>5y;2MDn6%0dpjYE+TR&!c*x`!FomQu5b z?M(8V^k~q^?443U%`NT#pcU4%1`wb63AxZ&rGlDUT<z6eoi*23L^CC*<{AzP*wb!U zZWFqflv6Ve73hB4p4kyRF|qw;)>e%2;tJkG6PBpehFsDqD7eE;84_sT7fKOO$SN4+ z90MJmYw$2Bq~O5wzTPAXxz@)(l#^7kVVgF%OlQ4^8JrN)^EkJa#Fi4)bINqK>#C_; zYsaN6uV-$zs5Z{Fq@FE#^1F>MDXV9+bZ1b3MW%>T<Mk}`N{Yb;Q$dkLv7nwS>^9oD zVnGELEsdH9$n`{(HMIsh1qC;%cZS&Dt4dhU879fFD~4)H$e9wha+;2I&Xb1H3RYQF zC;%z@+R~_zcVV`<oTJuz-Ok>))M!0c$SS<W2|>8&fZ`zCFqDD3sDck~vTZWUnF*9% z8hHgX>M%`x5<4B}ZgMm$sbGU$N4A`#f-Nk{BekW`HMs`&RKg0*cK(TzXdH;O8VdIK zWGITK!P$(Qf+=xrfQ2h3sbE92@s=7}6-|_>!PCgAnLDD*39C6N%`~uJDv)q8A*SaE zPirwv_qMA{N?6YsEl_bIO-n0SV*zuqNsB3XdT8!6KKfk_9}kN=!3~Acq@=Jh+-l(R z#!}>qsTk!&ReaQ+q@|usEG-zRW8<KH6Qbw}s^yi;wdszCRpO4k7^}z27nMh2Krk(n z^(dv8v4#_0XxBKk=cvD7*$hf_5R4{6jT(CP4yiNZdS19=*khJ(HWoB;g?9T)2QNhd z17lL$$Qz#nq<rqD-Hc^3jLSz>4h*;I<Aq`{iZ_d9y;W@X3z@_(np{grm~;&m4T~m{ z<WkJQ(_Rdr3`LTwEo$JCFOxm>+6Mg@J4w=vyn$Ihm))5&@&@JsoNlY114w!sOB&eF z!!j-<ZI_x@(!_=qgseIgB$~;Uq6R(;>$<T;f(EW-wH~zI4xUAVMlQ6A8wz!ogf6Sa zvIa(U5aj}82L}_f2F4{DgCbVnttiYC<Or<;vqHyUVI_8*<Mu%Z-dNJcM$c_mJ}GNw z#NCWRZ>8*%_rlS>T0+IfzY;I&t{zKS8{@jkK)VnsS-pj?p|F7yqX>>sjU~-&PB{)P zk~1@5C!KzuMZ4tzmy|THp><kbtCvrpwagWqZGpvl4!NS#GF!olT1-B6W+SU(wt(a= ztrfKgIwXq#{BKJeSl8mF%;6f2Uv(*}NnrzLZ*6*Zq=t$$ZMrWZ>1|HKz&==LGy{4G z?!<sf$zX$SaBwIjQp~_Zk1|KDwy1#*{po>nb$xde3;)H0w1blh9fJjwn`nK!y(86@ zH8T$4fcRn5j9_V@*sQr!Y`BqAGTWd>_(UBSUYAzZN-l*NCbBvP3u1;!ObnQpoFq%N zLdRfX#c*Gl)(cu@%#sH3DjEL%>I_D(YxP-r69X~UozUonwgoZB+nG%-kqY8a+|El& z_Zx;A>lNGy6)k`7WKdim#RNyd^!I5hQ=4C<qU9IwQnguW!AhNx*0LfWE${1XcT=(^ zMv)agSXy9p6O;*IEholqP?oWG&oT8mc`Y;I)FHP*L(9G_z-A|m-nka#l(e3;UZ^%P z`aM;1<ju-!nbF^md98Vu7Ixy)jn=fwSdtXdT2{=FHE{Y91;FZPN><B=RWssNS+|&G zq_wOV$g4K6mz7wLY9ZhBS6a7&pjOh_pf!WU-&e0q<JGR-9K+&ZYg9B^S}Wl~<;akg zKPPWs#!XdjVMk<QQ7s?6><c%8@iNANvCht3?vy%O3t_W`oyVa8{VJ+<uBw&XZJ=gO z<CQ?SFvno1t(mbV<^t(iF8-q*>ru!lnfe<Thbokc=u+zkuO(SlG{Z*=zR`-~z!k9% zs{N;?+_eRA@_J_K71nDd3{cuxld?ue@&wNa%Tl$3zhKVk7%iYfsvr4H6Gx&(zP>=- z{fLuwDBw=9$m!@U4Adr8>xNnq-iBfpp6+U`Iy<F5gfL5(kT)}rkK5BtE|Q#{sRtqx z*cj@N-h`-u4~HGKw0DXn65A6A>bX$O#gE!<S%NMpt7pVMSair}9x8l^(Vn-KpjImB zZJ>708M~Ml3$XK~rCmRhu%J*e^7qulyjv&ySrsF{tX78kpS15uaU<`_f@xAIO&ZG@ z88NKUz_kg~32cg8nf5wC?P6ZbXk~aB+y%Tw4&us1Ckq)3H}+&4m17U-2*oy%dU{Lp z*5gVAqheyoyRM6oFrrY=^CPYiwNr@N!bVPV$FQ6&;Vm3!3tKr2JEroS%Kd?9F*;3E zd$+P$)Z`;>nr=}27MqQ622FRXIf;=Bapkc~c+L8H%W@iTO|_7)mvqG`jZP$bAE={G zsmEETMHvA16eo4`7JB6BE@4E!xhIipIR!m8o<x*c;VmU2m|W3reNGrqYw4}@ptw~N zcI*+#Yv|dR$O0Fp!OoqP*E9DPs>Pr}j=M%Cuc2qB3|(Gm43u#xXCt5m8rpl`60uin z>8(Udwqa};23)6&BZ>(-Iz7E5lnT<HMrVSII5gRL4I}%o=s;tKZ42~HbsGlqN=6&v zjQ3*ypuHG@yDhBel)LcztHs)sI2^&PhN-pmR^SXB3XCIDCTbm+(WvR|$TNuJVGxHr z&THt|@lcGZ`>~w6K2y-m{v}GPT1#&QHLV!LcI+9QmDe+OHyX8K86%Q(D^hQz;P9TJ zP|@@E)}~PQgH^$XsK-7vjhZl4uIR_T5`nU)Ywe2K9Pj-=L*iDwb!rwnD3jF2k+wB& zq=}S<JNx3!>7nArpSZ`jGb<@Yi!BuV4kMM)aA$XoRD#|fsdlfXduCz?m8OFn*XX*X zC>3JMtBWjPVY*U^7F*(NgmNdP<YY~)YO#k2>3R^A279v{rYoa_QwFB+YD!#~1Ewt? zbm3ihW42nPwxfdcG)J4X2eh|PsiY^1=A`PTB$w39)nr~fZ5542e6I@)Yt#OO__zX^ zf^|#r9B4ZCBcB#op#Fa_^-^}bCEP($$)<H*MVJ@vT{bL=ttjdxZMImXax8g6VNkO~ zdBI+q-X9GYhf-CU)q3S1sbtF=4ZTwl=7oEg;(YLGse$6T6icaU8^U2Yt)I^F2IjmQ zq0f5qyh_C1-;j=@S8H?HD5~bm+fBQgrp!zC4%EiRX2k|$u_9d8I@-kYJb7E8XF008 zWV$_&56ifblg+w&%hrLqyWPCcVe06I_z7e(ooDD34FkQcW2y~LCvkYPw#>K*>p1h) zL;p3jd3l-Ra_~vtn2F5R3S~L+R+43=O_P^P=NuIgaiQKEAN?-6ju!K-stStM;k<g< zZeKv1nmN~v4%FT4=6zNr*<?D;khY%etf-#74n4dMDLS*C_g@tOn+tiCv=`CdGHmyf zeOYZ=K}>O@<e+A^llM)PLY1k!CfX=0h(jvGF*{L5UEij-itBmvK7`(Dsq-4?7*Q!4 z#wzk~37T6@Se0xx@?NQOA#WzHCtKnrG-jpsU9{yIk+goEKlCd_k(cVlzSq=_a7(#% z71#6TeTYhe&Xc@GFE$;H1@+bAiR(UsdP5sWS8+XW-iOd@Ep=WadXE?iia~iM&{wzc zH9{|^V9J{d9n6#EMSBOtMH^x@|8Nn*0*$C0F?iXLj>SUWrKtEC9m}hw>u-C|Cw^W> zFYK0bPRw!pJqMc3{m7>!3_-`P<eAdmEU99lCar=MgFme?S{gMLl&I07<s;4m7<1v7 zgD3gqr~>2UOrEM&c5$gxSdwlRRB`1khR!SK^0K|*Frs6jb(Ge!<{b!~)e+|vdW|y% zwh)^pD|EV!7W1w~8R29!ubyks)=blm)eag=y@H85?@5@DY<rxb&+GIqtJKEm*zd`5 zFcZ)j%!2{uxUhw8f*JwSxYQgpovh`Z3=`&JFs~fi6ytyTCuz!rMOMR@H*F-%i)-4% z_>m<V<{ojZuRLp9R~16LWFdZb#qDC}baVGBpT=kETAs0&W=pa96Kf&rG?0d%n1^qi z<qgbvH^PMJ$@41dxQ6*cnT%C_6Ls9ItnJ4VSDdp>iY~VD9;$LnZ7#2ywip+``0$rG z_cELqI<lU3UX^f567nSIowrw<X!Fu6l;y}<30=+5<mGy)mlqvWMI8w&A8It^O{V%+ zkj|8BHu7GD-doJ%^?H|7i}l%Q9JP<7PjZQswc>Z8V&>2L6Q;vxBCnM$rD5+X)j)UN z(09(#u^0J-sOpP@BYC2<FL9Nl@{x+m++R@KXgc>JpB7b6TvC*0ie{i<?Ra9#ICT_G znz?FOt>hgGlV~%PS4_t@K6EXWIh}NGI%DX_dfs_e##$W6lk{Q`nu@jKJDsDnmNoA{ zm<k<nUZFR);>?mm&hiH4yc?n4dh)zV@;wTp-DsJ#kK@GKlTK2}mNy#usUpk^_lhm& zV!XIKQN_;vx_-Tki>R6}Z#Q&ONtu^U*PFz_j&rWJopN;OK|Tp#g6W622W@pCPeWx0 zZ^{i^6+!!ltbGqxaXoL|hcGEx>b!>NpIP2+Lsn{<ERssLyio&TUbuG!79rD16gsBO zp&AZ<k*mkBX4}%(bgt-PEAL^L90zlG-DJx_$HiEZlxR9k(puKM1EKRe;=F<~k5S@i zP2E`HFg3fJQlf3pN|qIkS2e<$k@{?Jp;?@ayvna)R13u%>eC6uJ&&<W`#3=vMa2*C zSIAh}eMv_=j<3QrPoq(&=l6$eq!KKZpwI}y$*qw|+#`>xNT+bjOKxRwc>9S`H0BeF zD^_A>d|zv7I!BTDHP%AtA{|sl8Y0Z8szhRaTsW!Em-LTq9c=q)U`8}j%vq#uXla31 zcTKgP`!SPaDv?+}Ni8d=(Rw5j>!-=1pN$?wLNP~wL;M%fsVevDXMPsKqv=>C3}$`_ zrNbbJ-4b*t=+aiTn65ZjxG$rem5~hSIW8Cfqi01}@=~Fq0}K=rLZ^GMpMDnq5060| zEHo!m`dXPJgETN$p3a{I6`Pm8X8x1`%6u9BNok6l$$Xi&o)p&o8m1J58n;W0V#i|> zyKZvrj)-(lAft<R07uu*iUG>E$V-b*>=&Hv0mFLS9N1egG$!SSp*XR2xmW_#K4PMl zE`O>}ULe+`ln)oi)812tw|@|_IQ%W!;-tTt7{$gktYVShw)d=r`z_jEj4B&&<?n(p z@r$-*X=Snu@i732YMD@uf6nTm=!vf~!A+<pB^274>X9Z$3TZiVg<QoUg`~?=K&dDv z<n-k|CzSQ0T`triZ2z9sM1=YWd+AY<Kc^sJHY;|(p6P!F9{k2PEM9!z>)&)p`uoM< zpNAfJ=;DLL|Bsvha-Xp?-_6;U_i*<3DV$yOQ_eR2gtN15<7_wlfBQDhw%x<ojdyU? z{0(PE;`5<jbJleiXPba+Kj&-=e-GmGpr3KJ|J|Hj1N8lhv%PQU>?!Cla6NG+WWaMZ zWNyW8m*KZPf63Wqpo-s4`~^N?>#^r`u@%qhVo&eb#TLAvi(UJ|F1B>%E_UMcyVzw5 zyV$|_``86tjPKONZkyl5PQvG%&+TG2L1zS?1NiP1$Zww4#TEhQg5!S3SHU|2&b`2K z#136-E3ntI!3o^|ET0|v0-qf}&u6zk$=M<Q1pdR>rB8Eq=D#^R;VI5`#s4>YK6?~0 zocnAO(9`9!J$#>C0c_gAXD2+y**)7idm5j+{R8R6|2IF%+0p;v>_K4hbA7h!PCmQp zVa~=MLA-%G{*2he_7V8p_-vmY4PR~nFMGbv?t7lk&V8J-1;ELFN6cZPXQ9u|_zP!S z;otqtXRCne9euXrb9}bw3C=En-Q`Hb7Np^7*gIl@&&K}7*$sb1eu48*{Qq3Y?mpjV zH{!R2@b41%v=+9ykk-q=aXEfF1oGGHj@ZAfi*4Msi`|9KgI?Oj4#9U<;q&nqBM)AJ z-|%_fE4tVNdvvk!UAowI;PTzN*nW!;^Oqw}Uev|50axSiJ@EY|=o|~#llSamJ3#L- z$Q=1f<W<9G=hc0-x#F|IcOfrM^w}fRh;0o%0@GEW-7$sq;=BFvc_rjef2Yrup5U{a zfoo@dwjc1sjL&Xr`fR~TKHJs;7qBCEPv79P%iry@$H99ze%}Tg=RoFo$RB>P&vx19 zv!VAOhLG8e|KE)7PWeBd9XaN+3k%3|;D%#-wh!?3|Ml5pz&XeIta6;s4j%Q{ZNT#5 zeRe;vbJ=GbCt(ktC#?6`gA*tpC7;~`uA9ewwrAk8r;EsIe1AFqe;B^o1?fH>-!1(z z%G8%o2JpEVpZi~iv|Q@5r@r8`>+%0B*ZS<lui(2YeD=`g-~dkjB7A|&-B%*7zvi=x zzYf{2`fLUM-W~sc=o>ye`5MFrx*M-UtgiOiV&Lp=Ll!)XA$!3$eYSNo((oPl30(1A zpIx>E{%i#Y{=Xl7dlcNqeGdQsJkt3s*n&^HKxX6h@Zl<--3!@Ouyq4|UkJVd$UF-9 zvo1k-hOI+b7pp(zv+cksKFUuQ%D}U_*mZyP*^|7BJ@g3DupM0Ze%@m~tNsoC{l{k` z|AMdh`ymfy?P>Uf@0$MxC;s1r-hR;E{3!D1pC~6!AlCTY_7D8_7oY8b@AvpS^kL^1 z@ZSrrt?*;dCw+De&<A_Rg7+%O9QHVV0|ud6y@9ibzlVCe74_~$&i42rXY+63>`{C_ ziSMtx8SUZsIr{>>-}YV3ZodU>+^zTxI1h4zKSrJV5ohy$z*z|#XW(-MWcGpHso=X4 zzxUwx&7Va%zX*By8K2ER&u7<t!e{#e`(21U!Qb1?N4fYU;)>5RFF?7$|96AVG0-{V zVzgJEM!m)73ViPTDWnN{7vuBJA0S`8hwt%u;SD~!`unICH=?Wq`{4ic@!dHeh0Zzn z1Qwo)`u8z>|8dyC|IftdZutAsGf)mr_1WYp$eZ`T&ky-*-X`S9X(-F@LtefgZ4y2! z_`DC_ZT|@J_H6i!&jsM$4Z5el*JpQ~1>3+SA4VMo*Ph_L^@GS8{QdBmXy-nFyaJBE zcV~nD?fCA*)A4&R>ek!f-zt=gl_*aG;OIw;Rv^#u+k)kY#Zr_F;I<{mPhjIR@Iz*w zKKKv4b9%rJxh>E+7W#LtMtct&4&JLF)AMK4`-f3({)E5rc?<r&{STa-{1Ec-LC#kF z4te-T&UXGSXQ$uG+06Z%o&9^13t-U$c;?-Q=O%vJf=~V@&dve$L>qq<e!CaCE5P*# z^lt~({<k76KSrJa$K8#z{2XZnW`5?g@!OHEJ5ks1|2uz*dUFS2gYT~W1=9W_$lnBC z??;;M^VvbaLwbO{@&EIFi?$r!?{u%v9suX`uaFk}f8h7{4!=ElGwSp&5r<n)jvfHl zHpKQGl$+n6&iopAjn8@b?n&sKiob8Y3wa4!lRre+1WtSivWU&m;HW<cTel%b;64<7 zHNo8n`N#47lYaz1{Js)tSPGfze}Xy%T#Gc%gY6moejDr`{Rh-TU<CE%mg^B8VC#1{ zI|5j75bV7HW#~xM#RH*#IP&;V*m*0;dpFAWo56E1$`G*6V$=`FFFFk6>`h2B<SxYL zX8b+>jYt=8`XR{6x4=K>A9n<v1t<%Lf_Go=9RGUw1<r@?xe785;P<VtcNut}f)9i1 zP-oVn?BcV26#N(l{|NE`-_3hFd>q2_9DkRNM&1n~uYji^cQ)h}z60g(e|&ZkJ~u)3 zVaP06gLW0T5zo7&dv&pE7NHH@55DgMTdzg=e>GzEN}nCM7l6-)c11h%5|oiw`0V@x z(5~)_*z66zUx(lE|2v?w9sfUZf7o~_;`|!Og6kacJOJLKUxmEb9d!nukAml+J@7o* z4fXhC$WO>G0Ow7xwejUh2W*_ZC*lI1I6em<vmf}zpmQwz*bO{gFG6{EA>?;Pox|te zyC6Nl%`b*c{C3kq)G7S`j?W`6flZg84gC`8&<8oY`3%&Hk8rjSxaVV>tp!f{5c-#A zqK~x+?If`LLi95~#o5JIa<&6-=rx>O@eS0!3(#l$B--FhIXmr(Xm>B-?Cwv47u;9k zy9+;qJ`%7GWG}oL?eG`S4g)K|bqjQte-m{RTtm>g2{z6?i?bbp!_G$^?-TInYxqAf z{yCJx&8VXv!1t%4&j+qeU*~KW{Qso)qfSHiob%8x`Y7r>aQiv10o-*lbb!ZC<Lr1~ z>zDC2u=x_C3pne;ob3c0cP(eP!IvWtiz{H`@yj_I0T#jL$)80VgIL^-SRHf)?0f}% zxw8>3;I30S8z3MCH^S!!-UlwA@>Qe{vh(2MiB}=r-$FYB8{5z2>{wt&_<HKc(SN-T zF~e`Cy{3!ZjB?ktZx_4Z)m>~?;L+E1vHAFZw|%<Ug?pnvhTj(9a|WN6z6vt0hwMT4 z4%oT{&#iBB_9XZw@i~CMFI(Kj_CBzSO@rqwa2yJq@%_5k8PGczzg=@c7rPyQ-?%^e z^{+!e9oP){Bk}!Ge0SJ9#vbB-<d5(_^E>#@_|5!>{6_wLzK#EypU*$R@8`ec7x7Q? zi}`2x-Taq)3;#C1fPa!d$p64^<v-@P@t^Pu`KS2f{O|k;{ttc&{}I2Qe}_MehWJwc zMSczc2H(s-%dg|#;+OL;^DFsR`R)9t{679$egpp=zl;BZpUXeSujXIpm+>$0EBIIV zdHm!2PX2R#FaHgHfd8I9%KySI;h*DM`FHtt{#Skz{{g>>e~o{Ef1Y2<zsc|6zv7Sa zC;8v_Kl$_g9sLFV^Zn=gujGsPEBK!L<@_k`f4t@1N^hCB)En?td;Q-3dPjS2_ul5M z@m6?)-Z9=PZ`51oy~7*w)_TW!Bi^w0EcOyMk3Abbl^3%;*bCY2Yyq3k7P6h#E7)#q z5!;bHpS_&z$#!NhV!N=Hv6r&vuotlBu~)Jk*mK#g>=y4w-tFE`y`OnM^zQP0?ES>M z)w|96h4)MEM(-x?SKiIu-QEwpJG`HJcY6QJ#@KP}ST@S0*vaf@b{ac@tz#o>mYv9k z*&22{E3-+qmNi*}oywN58P;Nb?0?wXSwDL(Th3OnWo#*{vT0UhZ(}R*PBO@jVyjue zO01jpvH@0P>)8;iv;Si!vG=ieunlY@dpA3UO|W;earQ2D40{jjVFgxUALX0)nfyci zgZym%VSW}rhkt~BfKTvAegZ#{pTz6@48D<{#{Z9>&fmq~!{5i>%TM8Dekvd3<GjQJ zelp*{XL*Ged5af#lfR!gc$Kf`W4y+X<1>7UPxE*3ck|=<0elI63x74=i!bJH<=y;s ze1HBbzLX!z58-d*ui>xf2l0dXf&2~p2)-ZRhxhRw{wDrr-plvphw;7nk^Hs%aQ;p2 z3*J|}Z+O>xS9xFazUp1+ecijlyVkqf`?7br_bu-`-WR>=yvw{Vd6#<Ecw4-0dqaGf zuiztmHGdml!w2~Qe+NH?ujI@5GTzUR;&12c_$vNCd@Vnk-@<;xe#~xVKVd&*x3k;W z&FqKlCiW}#JGPD8&3?`9Wxr+ju-~v>vOC$&*)Q17*d6RHb|2f!zRbSFE@fY2UtpK9 z&$F+vZ?ey_i`nJu+wAM?8ukr#J-dos%eJ!bv#+r$*%j=o>~m}jyM$fGe!#9~-(fef zZ?W&P8`<~R2fZ`APkEp4&htLteZ>2)x5@jcceZzy_j&KL-o@U9-s#?E@6+BT-e<fs zy$^Yx^Dgo(@IL9C@15(N<9*Egxc6@FWbZxR`@Q#ir+Dx4PW4Xnir$15cqQ+6Z_+D! z6>q)Q@LJxu*YxV%v{&^C-kA4JujWm8$9eNT-&^4A>b=B!p7$c}`QAh9uk4R(JNrHR z1ACDD32(s<ut(Wn*q_-WjCr2-IQs|t8+(jB*IVd4!T!#kX8&e8d;erlvRypx{fj-! zUhM7YJ;iqO{=;_ip6zvc&+=a2J;$5p?clx8+u)t#&3gamo#375z02F^&3J$E=J99q z9r#ZCpWZ{>Zv0=~uf1*FJ>E<BuKdM(7ydlHGk?JQo%f)3pZ9z358iLRd%gR;7xCxw zKYB0V&*IPJPkO)c9`pY0`TS`QFFl;|e|!J&JpMQDaqkK5uim5HpS?%CzjzOO+r58y zJMyQz-TBM-9((~`$Y07|$e+XK^Y3|Ey&Jsmdf)fn?7h-^qj#uxkawW>3hzj7FYndf z-rm06o4g*c*X#3^c!zigd$0H2;2q(;)q9P1xVO9aGH-wH0B=9<b>2SSOTD*v-QH`x z#oi)s5AWsPtGqqE!@M`*?d+}WNcI+X1bY=bh#kxhV6SHfve&UUvBTJ2?9FU%wlCYC zEoQG~hqA-jYuSEmANCsd26i6%1p6pEhn>YXu@A5hvkTZK*~i!i*@xJf?EUO?b_V+t zJDYu+UBoVApJpFn=d$zJXW0MpWBF5jXaCv$vwYwG4}ThiDlhas|6lyye4gLsqbuRR z$bX6dQh#^<<^FE|9{#TWi~XJa7x*vp=ljp`ckmI)|2{eX`{elVljFZnj{iP6{`=(U z;K{Lz@3Ya4R`MByF>^>0Hqpem>vA@=T#ih;W2C*vq-|L%oTHuV4zfAzm2=x=sFKS1 z-RYurqkNW}mNaJ1hEhaXC6=R-2NG$QGplGVDjE}*3e28)q$gJhYiO-U0)^|S({fod z`%aIHM4lkKuuqY={C05-O?;-7o+K8@QD~MxtEe=hIZB89j4FBuHMJ?1SPJs2V3yAD zST2=VmTGQ`6CJd&hB{bCs1r3%iX#Zj+gB5;S!o+_`fLM5naFad6%6$8!f`WcES969 zlfjH<E)Aq5lmtt{BSlnBkb3mHQaO1pnT{YSlO^foI1H_9mXsWc7i~Y2Q;bZyW}~>A zmUed|>tqK3`v?@_Njs|0F&c><aH&=G4du>XoAFM#+?=8nK556CBN01e;Ba>$-f@#T zvBEhd<b{sJ%?<TdRA&d&>PFMlPoi!4+2hr0Hg$SdW9g%nT+F03tOk@PzPZ>@DjLn9 zr<N+Y4*gPcByMtS`p(9qJzvkn0Ud|Yi7@$88WNk#ZP8Y184cmbTqV!!Wwlv#pfI}- zooJKFbLYk?ZW+|-M$>cIP?RcZRsys6=@J$QtNpe`-E?rKgV9u`M@7^*=5sk<2~Mdu zVkuIpmCdFMe^W|a5}*^!QR<G`Q~9Zr&6DDguKc;BN=l_<j<AEn*HA;8j*JsKe+(xN zD7>ZM8#J<BlX&*^O2eublRJ=<+mu}Fg)))_Pm1K4>iAD`G;t9?{Jq?uAQmo%n;xWk zUOrq}-M}696}e#|*6Nr4o1PY%!oiJ2`8}<2rPPl*&W%#x1`Kg|p;1uYm8KU7iNvW4 z*h``pM4#U(+ZgRZBKih;=~^n>T3js!8&#Z;>u=BogsO;2piHe0>Yc@Dfkm<FAn%%x z=&Ka%Gy}B_Ys<AtfGd8q{=|<Dy*F(UIPXBT6gLYmtp~xnAXtx+xwRT=yL)>IxKK+Y zVJ#R9+L+Uhr>0ayQmZ%Ma%8nHL^D$;R|;d5fEL;h6si*~I#^089_}LQ37TSCtxYaT zs+C0n3fKLs@|;Ror5GJ^7<G!YWJ?NlY)EOKA6YL>VsGA>YI!4FLatRv3~Xv;;u6;v zOxNi4BaNd21#Hop6lb*#7U~6Du&fdc*^q4Y?<))S^<w)`wb@&%*IU!r&!^%EuW{-| zJ5#UK##fI=X~vCq8XqH->FK<R+6dw&Ypu#%xus{cC*0g9oXoV8vdxPGqa8l|<K#8A zgf)6AwT7Z1gbLxkb0al*v{<IKO>xWNn1NccP_c_yJw>TYZ%N5yK<FQd$zNono{OPE zE}u17A<FzZj`UYl+pK6fAZ@kV-bT}bsCX3H<>{*SGFs($yPG9eG(bAs3b)2tWk&|B z9>f<oTP4Ma*i>P?*t2Odosb<Cx0Bg3Ze^=cF4~<SDeC<+^Q}@ge^&*~4Yj(Hzmk!L z^3j4@oft0SK~-%`s+zN`6Btah@}Zp=F9+EDjGfe~2S|=H-O)-_<+xT+MRqHMYntVX zJ%7Xn+Pb8KjhLzNKo?RpF#Ur)I2^!Gh#<JGP^YcIVL+DGYU}fc<9a?yuii6wCzP+? zP&Wx9KCztK9BPxsF2CA@)KOj`+HP?~*CHX_G5_j%88<>I@}iws_#ZaxL8)!oK_zSz zacdj3XV@RB?sB#{DK%l2C61USR()_EeRt<zrR1HWmC|qvS2DRseLI1c#H_5*Ws0^e zmzzGb&0#ygu)B6CdNYbfr7bf&S=-Q^C^ru2B9*Wn4Hl{at^?G&K(d|2E$VC-d7HKA zq}wZNbbdlB-*an+d~^gQe1h)xoNktjgRM%#7?@BR2MyAu@RCU@e3-|L0p<E?+$)b; zH*;w)$l`HW#zj|Us`H)bjnu?EaAzvY=F;HYNNrs(HmG_+MM~n1w4riwa<CpWl&^4Y zN%S3~vuM_#MXqh=uZl9HO+)k^L0VMB5vf`6@{w<SA}jHvNa{>Ctp#dva5N5%0l}-R z?xi^5CSi9^LTN|RwioKRtBem)Ts*yvX@k2?e9DoCjLq;=SjPl~(oWXZFTEM_xX#;{ z)EeD)D|KAutj?vDt(aJ)U5C&}!Cv7kwHS6%DXV-dPDCi;ZP9r$nU+~CM&lpDHN1E` z_|TShP9h~vT#lL_H_7=EcDwA3Cx)gw5?)?zpr@^Gmr+-xQ=tLs#yW%roltTAabvQa zA92d1(y5h<JxNMqh`>4S89jRu7i+pii5b9|<@x7&E*%YVeYGR86z=bH_FpQ<2D#CZ zkx++*Ywd+Ynz1!|1BE)S-xLwT&>PO6G7+x~O63-Y6zQHnyR>6bb}f+d9^zHFH@<3V zRfeZ9*6r#gbr>+;)U22B_^l~k6r$3B`_turwGomX9U{a4k;%t?3^U0S>$*$0s#{MO z%gNrv>gk|r>ro`u0vdS9Nidlk$L#tpEgu#>&BPraI)qOvNhyfZ?$$#>N3}9LQj?*# zHKXBpB3VeB@UHbH6qnq|X2qr<!#7^5PldO`Yo15Ls3=i#ZNB3ryT3}sW^D~e(+{J2 zt{i5GiX*-Iqa6sUc>fB&3oYooj?i(blq80pMo^-=#kHY;lrdzKlwmPYC5B8!=XBRF z9u^eq#B~!nf3kK$6*Ah1>|(2MSX#&*^&n8z6GW&}=R*}I=M%Da=f$g(yX)<V_0)~o znPT2f@M!LIT|+oWdj@KFV=b-Dw|oi4^buF$q%UDUDbjXRIi`>l#mRJ4n)n{Zh#=Z| zlY6}dOw?6KSRNE_l&u7XIwlX$fmvIqv=mcS2`7x}_KjA=32tku1^9&VfO3&u-6=OQ z3{VZkgUh78q)Ibt%i(Er3~&AU1|s3(5<J@7!i0vW*d{gEN0m%)+Jg#t@`zq{Y&DHW z)K=kOyw$Dd1WtmT7{nQ)iqXnM0-+#Qx)l5KBl&4D*?P6FWUwSrl+OM>law5f>#r7T zc<ej)N+V%ypG?fCQF!9nB#gzLD5~AnT6K1+)-slnL`x`o%9KfF4SEnJ%4@eQWKmHz zxgBZtl^aD_*v-<-o|=4mp>C*N72DyY+vWSvqZO4&=Cy^IbZrd{NQGEHx1(W1&fL_5 z(s=VX1{`8>?G+PSGll$XOgd#zgJen4%EGkr6(LQwvanHhzg=RwvQ|<p0Z20r78(uA zB$Y7l+e8DVm~zd?*K4I#(ey;8?4<KYtpS%=?T~8p!HOu^wfbPKZnGTAy0KGTzzf9y zdV1AHfR<FXq9YN3bp^V>f{q9d>z*QDiFwS??otT_rlgp$O-a!;?WnvlYp$>)r7=u{ zjyNXHrp0}aW?AvT3a_g-O7_va7jjn4xFzfvwU%rQimhg_qA*jC^~@+uhhZB9@Jtve zSJ!tp2WyS8vd$(P8(miG5hqz^dP8Xu<mrY&-E3Al(UGKCF)WA8k@w<`Dq|v0<1uKO ze}PXDLWYK%Z9Hr8gFQ)>0ou_pG+<;|iDyXAS8Ji;fg)4P&o(9rLt%?!LTY7gCO>YK z<FX_`Fs+*m6oWxYDl}3}436MXd8a~;!7>EK7!|q5(4}6WHKS5CQO8rPgeKLTXh`>B zO1Es4T3)M{Prx);p@JEAtm!a%3sw}ErM05s;hu~W<Y)?I7;9aErG+9|OdIWR`2?%0 zYlAxVbe$ZXY&9|4VlLNs1)8?D1SCYo+n9j0<zRzm>}2`K$l$14`y(@iCh7`h)snY_ zDE&8V*cFDs*cXiBfnk$EGe$Deq*AmvZBX&t6vjjO&@!GeGzMQnS6b~vEG`?Po?2;E z*&9l8w}myCj^t&S<)f=Zaq;?PbbPpprxJC%qvq6{g28$jm8FT2Y7Kn2R>LXBLs=^) zb$mM&LcdxjGD@L39;Vg;xq+V(hP%fawF;iKR5og@=E`9$XF`ceJ>JR;d6G8b6uGnt z%FJr?%&@eQmNo`h?d9T_ELzTfh3lQ7so5|FE{28*8^}2-Vou`0J6q*?&_JUn7B2Nt z<A*ycRkJh{=S(J1f3kZ5?^FHN@mkJaydaJGg=iI~YP3<oQ7r#r(xwyF0HLhm>Sx{C zZ$cQO>$pJLVjBHHgrHDCwUfjKH$~sEHfxnzvavXcrNqLtDLKn%=^!FbE}G?<81iwD zA`vv*WxU4Yy`;a-LYfvwMops><cm)`q^JYJ3(P(B8R7&n86yXmquf-!(Wfj+NvaZf zF`@fGGX3F%aJ_(gf}?V03IaWP(@`)<Qxhqq5vln7*x(1=%^XYCNF6UvwrD}9+Q4&} z<c?|~iCDa0upX|wi5$*JCKh-OCLU6#>2)l+S&DV>L20ChsN+>2-#;;Hhgyoa#-tt% z`q$}2Q(lNmjfMDXq^6v5G^k3wMkh{ZjE4+E!FWArOw!0{1#P@3XhSV|5506={MCVd zh4wSE?G$pEw-ntt>K#~BXm?y#v>YAy-x!rc=3=LTDT}1BNL>Eqtb|rfYN!XH5~VRR z6KjO~W?fwCNBI{;4pq=ao~o*}=Oiskc?a%<&Nv4tly~<i?2hW*J`_<6MWgL@4Qb2P zLPU8IY0HCl=A;|0b(xc{ye}szNgX;p(7kF-Ml*whu2!Wj(J-0H7Io^P%%CAdn{1c^ z;z$s3h1yn3V`HEuTwj7MNUGj+q9~BbEDZ+en>2AYH*KjkT*3PPcnesk30Z{+F441} zn+w=tNE=5AmAR>-y+k)yv`up(z?&P|5(nLAYZ1<5F@{K<S|ajU`JSH4P&Ad!Whf(S zZI0>nUU;EfB9(DO9#(@zt4px&$ehH8*(H5(AUbh_h}{#|9<euOOysqBQLZW~Qo}j5 zQhcC{ZP!i?sh6o{96>!1p$uCKBQf3q%FTe@PSJ;?LxhadwBX1tB~}~R#pF<{bD>T) zXV&;8g>9`l`tQ|}a91p8ZWwzN^jc3d5rNb&MvFu#q*iYuLC4Y=iBoRSx&bFA91CW| z?OHG+d3(W(Bu8fHV!zC*sMrW6H>8dBh`}7OZfm$zq^mZ~;#jQLs@E~Jk{~f^gyN#{ z>MNI!>lk`)*1*p6XbZHn&bl(LDzlsE3!;lIMR;7(BUg_M)G!*Mc<pR&9vqc|^x{S< zGK}80MX{@5rmR|TkZ>=-TtP3xoMDn09p;uf=u!@wa>mE;Vr}%6l0=5xax;>4%oX9O z8?z8~q>ZlP>?o_zhmmXlD7938v31=T8KEHDa*;+I4J$_!BT-3=7TP+o8O1{+Q3|1e zuIMzCLS<(-EjqYrSwGg5j2?3E#zPLaInt5Wj_%4OY{@pG7c-poZpDg&WR1wHEvXcy zv2}eoKypgvT+1tu*ea}4acBgjAVrE!Ho@Wo)yklJN}TGU<X(&E2-RB-Wh|ZSAuG0~ zMw0+Jr+m8?4CtJ>cu$>LqbGv}On|FP)F>G+{G@L_g{Ha5q%MTUvG(q5?CC28)6Kzy z2E+A`wA7cnX*sWwI<#B_Dsqh-1`ZU7NQjH06d+DdCTyp4u@I?r;8Zl%8m)sIt|=D) zCjAm?Q>fb(U<JIJG$kWmYH3#rCnj8NgyMEydT~hjt(@#hq!i+`a!V|URL-WRW!t5J zs%^gPrlqB~?Wia_UMdxv*ZmFZ(dv6a3C@h@YKQzp^^Z!hlZhcLqlz_5wPPrt$K{NA zfndVtq@3J!W-Eg90zn~hNgm1S-A$dzfIFq9@M4%c_D#01xnySaL<Lglg|9^xb;V(- z7L9nzYszNofYXi{QfFzpYEuiD_MsC^anNOH&W78^KVghW(JxD963NI&TU;c;B^%MI z<ogVHMyzU^P%N*`3(`IlYN_&%;k+zWF$X6}OdMm{iL7?wDDQ^I9tUo5j;O1gtHXj+ zuHBGxDXs=W9XhtCGZos3)tQFyv3Ign%`fIlM-$JT-a>H_TNIXQj?&W0FE3O}iZO?r z0u@{Jz?@Q)-UVoNjB4GPQo&tPKLeg4PPHAnSs=X@O&zbrdTD3Pqgu6Q!IH_ytl`;e z5na;eI5xD|S^<b7SDif|SuD(>g^|&6G`l~kX123L)7Hvbs}#Ni(8B6sQMnHw9p${5 z;)K1lN|=}GGklby$(G*|1bXYuq{HeEbUMjMh^OLA6^e$&6zk{HsfnLMsnTpoP@){T zOVXGzRzTTZ0=vUQM0ZH8&7u71xahEJcXy<N6}}E*8FaaU29bhH=-i}u=?gZ@O__?5 z7$1B_jw^SmSd%+aZq6mWYs-!DSh=EFQlm1ND#}rlk&80cJV&RD(G+I;Pg>zJRxc=K zo7yrBQdv9H{=!X(j@oML<eS&TZ=?N<#9ySS=szVS#B71Ch9u>XbLPsL5vFJwgBPx4 zYO5KgW#=Z2eNGnDmtu=$dX-iQi<}hapoAinv(e5bi<qgxB-lbRbu*rj!xr?y46O%N z^t?kcdi}u~&XR+Jk*F>WJ+w6>eqPA)#fHT?FlF%MAP5D=@G}M^>$6z52yb;SYLpPk zC4}*3_@H-HK)JEdN4){9v*=*ZZ?T+eK`Z$g%7v$wDhCx3V(Jl%gh1F(*J~4X)s#>u ziMh}C@h6rZ=Ie7P83hpKS}gu7;8ax1bOaleIfTSS3cZs!ff@5nHaS}<OHi)F@wg=n zAlN98x}3Y#1VSm{id8&}f@=FvCUSB?h0SNmSiEQ|&bbWf9P^8sJSun8zgF4|7fMCh zWU3MLfSM7@M`?h^+-|gGtx;@?nu=2B7*en6q*GvMoX909=sBRtsBMt%bI20)J~T-w z`>fPOq1P>Zs+JLjq7-Wk9%2kOKU0_xF?CoHV#X4VG>|n@&_WS3$Lazc{jTiGB>a%A z$Ut~*wXz(AREGXd$Y)~_%QCvFv$|&p3=I`%DM8Qd2-*`2Au5hx4sBsjvQ@7-R(>KD z^2Vkrma>-XSaP6Nop8u-Y223OQfhUzg0=D5OqD_-cuTI3q%OmTv9hc<shlJW188kN z&`#AwG1LsP3LcW7xuGT&)nj#eQF#K4l&nq9S&-g}b=wyNdFGx5byT9;QmATaBpMiE zDn$=+bsi+%$+Sc=Vu>oOd<i1YbCQ~FUHWif>PnzAP1dlcQMPZ&B{i8Nh4WhKK1jw^ z_!yD)@^Q;ZQ#0Lx=qjAADmD$NUYV(g($f;}G0i51=MvY|A$ECJVsUYDkLd`WHglBO z32xoO02d{cR1#AZo!B|r(V4JjNCru+uFLMNn+D2-Te8!Fp-u^7;Mm@;c)Z2VXY_DJ z21d$?>uE&MkdU-ixYz-CS}%`bpPsWKt$T15R<5OJXCYjQvK~v<#K{BVkO1}ij+CA} zN}md**_pOn{<I?vq3%#bv$%ymk-9MS%9+oUjf9Sfh<e~!r(%zNf`1riRp?rbWVu_3 z&52P#O%!r<8<te0#R+p)#v4X)lBP-NTw_zcMv20k1<tHpJ)T%IWNr(fV=qS}Vaa03 zh=iNwa+wjvB!g=uj`G{iZ}Yhyr@zxy(S+05(e}t{0~b-g69-mBOR~s@DMLbOSq+nh zWGkmUWj|-DU5On`#oC4d;fXEYP;B0#kD2h<KnOwNvP+oCkT`A4=928Jn9f&=1AvYV z&7dT!c@fuhDV@Yf8rF~DomgC<qZYv;sGeXF&%;&SBU*{U$yzn&FQJ~6$Cc})$UU*1 ziUg^6lxYKl+`+6Fwoj=@NyQLnBsH=DgKl)3gl<Wf6x5z3Cx5n`{3fKVXTAxkJ}j=A znyzDjNF36r4&4&-32K6f9^vg%)-)%g#gfs2V1rQ*=C4^-`v*~43EopEO$6!#aU;Xa z#o|%=OUpzrA=ItJ!3t(BA)?r&9ND5z>UQHmYSpntk(fCI;@8zUbqgoJ4r5O;?mks5 zWD;aF!dk|!6pQvMCUru?w$C-fp}1%TD4UgoT~v9{MAWfZ52rv4p=8ySS9l0#=~xmM zxsjlb11=m>CEhS`@YEW*B4x=8D!MxL<bn0DDskh<Xis=Qz^Wi9H89}PP?FN+D5K)+ z0D6-fE>FPYmZ~`uf>c)q`+EyG(-(W7A&05HhN|nDk;bC|8?y3Aip6jPT%Z2u-r*%f z{e#M*zhqkBS6FVa(4ksJqpMhg(H51P2zm-l42sPT);6drRpi<dy1XbTQPIS$A~f#M zU!7JQ%M!Ea6$XOpgyQtpSi^XoR8op&&lU4xZILOIo}pzu-TF}WlZbLbMa&W|TOKZB z2O)~2*rTC%zC{5_iqjGwy!W8ThWitYI<$`-g{Pu^zlyoVWt#o^;Wr_OeHyY*Mk|c+ zOPFNh`Ws=L&_2XMKG{N6d&(1oIExzPTzTqKL@K0l6AE4G(_dXXq=`PdGf|aHj16GY zM6rrXQmZwz2cyMG4i^lCvba0Nv1H5kaj37*m{gxRC&qWgQtWamsHxgnDS`e@9UZ75 z4)n^b{Kiut89MwqoVo9@kqmW0Hrio9EmN+oN&YCW_!KO3jBPjq6u#ArOxE$bjQvpQ z)B8b4&jz|xaeP%kyOh$C)5v+UOVr7pG%~LTeCyF_kZQ7d!%r)55J_KaY8pkBUcVA) z!H*;L+1^64IH{z~pRcv18f_+0ra%32CIWb%L|*pRk+*WqSF)2KW{e|uLqFw}UEv>8 zfQH3{=xF+&;KUDTpk)sxaR;F4XL`QnX`!uXBh&h_%0^L6{6?LNL^(?QqR6<!ubDf7 z<Zkss1xt0sc}heZdfNU8`HdrM=!r32h_AYce@>7mw5iIpdv{?`44F|tCorQ%2gHY* zOL2{4RLVxv2^j5PIk<XgWVCO|a4#O0Bddo-p<0+4Elii$=;*370|R*x{7{~n9v$t? zof<9c(P$Gs&=gv-XjxTIh86PpZib0nDXk$+A2JWm<-sEc-!tdZCsZ^h<dbbxut9dS z=}|*F^~JInd#J((qeWd~T9zt|?K{}X%c@E9{pUmov^j3nQX8UfWxR5MdV!`qR|#uq z<)Ibva`e;<OhywHMWZ=X)zmFL4u%veMiYrkBOKV%(rV&m!|ijkO_Uiq9hn$Q!8=lb z9$v}JmlZWqidQrj!dOs4Cl^!F92G4fu-6&n5IuHs3L5%KZH(>!j7LtxsRbHz8$$PC z))*28Ws})#K(!S$F}Rn=Dm677A37SIgKABIN?1*sy|N_ioMSr7o+S>tYNLr^Ihtd# zThb|5>4$05PmTqet3kp-R>#dqqdlEtDqC4QX*H`U%sWEH(LgM$p{27B<m{fYLd&BV z#3PI33}oV^+UOjajHC=iVx<Oc+_RD;CDnxLNf8sVRzq!os&_M>_71I!Vy~9Hcsnz= zI1p|gK<0O9SfS})Fn+kF7R;vhnsw+%CybpqNY9V7lXG><z|^Tj?bUYFt-`~}*855o zmN-=8k&dbpm*OR~&%_xuiGv#y0(!WKO<>`pC@@vkR4{bfj)ui{whrS@CewP3#>D&j z+>@zPcQB1!RH_Cz_xV$Swy|{RNYtl$=FaGt92^S6LKzy(1UnZzwXTCvh~%0QxuvMX za_B(h;!d<gEmcN3b;V5L;6`GJ+cR;*O5@^6ek)Ul;gFNo>U20ekSZimA)k{YW+t^m z_?C7j*Qy0tSOc@xaT~3M)&TkCo-oiT6*Tl>eqvd#SiT)SRg7I;F-(abR8B)@0B;%L zyrolk&{tH*YsfQ;OYPZ?egKXsplHg%7i*{uP$Z)z_oReNcCf}p?0z!_$)cw>=KOw4 z7WBe$j659WREfHK5K1N)@r;w>y>cvEnu)(8bJ3uzC@eHj5&xQ0$^WX;6_VlZoWTN3 zMM|SFgS_zv(-h*(2-fi5o)$L0^kXW`K{n(TcTG8n%T;tX!H_hd=@Sfj+r;s1<*3mZ z?LiXz26}0cLwo|IjvvyPV8jegwSlGS;(RirXzwgm$`!@Ll~Jy*Qgo#psBKtVu2lj| z$m-)D{A_pBoduCJXIZg_2KzSG1;KhOhqmag?e6WN^M;Iaj)kp3b)cOK#*!Avh9?#3 zbAc$M1wAx56U{RlN}J#gCuw@Hm&;s~lhR28rohRf87@mT`i>G54Gl#dOAGOmLcM}> z<j_;c9*Y0h+jW3Ra#ZJ)L=Ym0oQx5e9K@Y;k*G~~H`0dD&fcAk!_Yg^yVJhe?qS01 zEe_xSPB`a;vvJNifo+_#v5jq<aKaJioQ?li)jiYQ)Ag#}b}jlo>26n5U4OlL_3G8D z7lKg;Ux^#~1)d#<RM%+)6Wemi(JSEq`GYNR)&jg{_0&<QDu-~*(=TJ!a;?^b;WhO@ z7sDZBIGhadMrQ_`ItMNG5fGRpyPLZiT@WY3V$V7b2J;=c0YPsqMa<LCPpj>v^l4g& z=t`-tWp>s)d#!Bj(rltZNXZwFgU)~^?Up*tphmVbOjn*Cg>h1seFQr9T^l>j0Bm1; z<E>n_6gM^2hnGIG_*v##o0hfwVPYaG%2ja~7YH)_c3Sw^5y|W+SlmIWEv~(&ib{lY zX8I!SMAckDF~@<Z4vu5fX)O}R_PLbD@*XYam*BeSDi@;bAhYC^jy-0H#~eEpEF+G6 zW@!LiCymR9<F`vuSFXLP6x!-NL?T7P-pYx|5k?w*#_@kDa_xc*N<C#m={K57cw|yu zOx$<Tyvif1y317VATK1G=-^MH%{KUmX{NI-kVeziS@tH|Fw`dw`pKT|spIX0osKxx z<}gAja3iA@=9L~*VRt5(ojazI93gBZcj1tQAdT>b6FE~=Z%S3CPAixe?g~PJ7J3ON zTIeSsX`UFM&5W>4lU#=rV-mZui*|RiF%{gIE>QhA`|vIJE#{fldDhf1-LuUAnNZz^ zIvRyDmCRubxRmFov!0Mo-~_R}Hj<^uUoHi3wC^-0eR6wt>;tC|@>c8G`=+YRR3H)G zq@JvX(U=~(41untEAPFXDDRJ>bY#Rj19v;Q8tza<Rm+enFn25J^t7kF@uHp$rL=Q$ zLW4PMd=;lia?psCN^2P?yYW$95-=$0aHuYeCTW<BIDOD7xJp?@!{I;xb&UYtRFaKD zU8LC3KB56;xVXD=36<^y4_@nnrjP{RW=sJk6q~z<3=fB*>85=IcsTP%36RQLQ7Jd_ z4U+*PjPx%Y*e2K75p=<|&OU-h;!H%{9F@~C36fy01Lz)%l_W=^Yz)L{xPKmvb@E{t zWt>sXdI$+XQ&%pmCey&&bk@n^-DSV%p1B7dR~qEHOyk6D+*lZlE)CA4gPN}r8IF39 z$?`cz1A%0R;LzRkePB=$u2ZSE>lRYpt?C>}V*uUgIJ$`9<_Ja*Fs|;>SP{-kchd*T z=m-O*J?WvsmA&+kZsK_@KvreFelQIq?!!LFdf1I7`?5Ycj<*kxHg;rk?Vr98b*{xu zQm%yn&AtphsZx0QLzWAbq|~N)AYf5{-!j#Fg(?RLO^IT){<PRdq^0fS)7DzsqMXZa z8duK8+BybN2477aM0wfA)$(n)cOnQQo$ywYm@WsJ(xW!bFKaH*FL5pCA0oq|5+rV- zKedL_XsMRsushREdYrtlv(O>!rwP4_EXiq7T2{_c?w*VoZgYaUr4bVos!(54jSO@G zD9bQuO$gkk({)HkvuzO!=PnYcF~xd!sg8$*Txjb+T$*T0nM#%Ut*ve|MB<#EyJ4Vm zR~&z}IuZccP}Bn%ASzd;j4sDLYNn3eK*gg?D(xtkRIZ2Xq|}v|@JXhm9XQmiuJ2K3 zz7xjwT$q@Zg6*YQQV7c$&Ef~G4QKEf3)F1&+e>q)Cu~E^r=hU+=p#2Bp5L-8d!|jF zgT=;$*-5LP<1WVmG8@2Rq!Q0`X-!jWsmeWOgRO(1r$yTxP?ytc*hYXj?1a++?9+k_ zsYuCT8wI_HvUI<5+X&=RKq-_qC*wU7SlrXqd7R)Wue(me^yZaYVT_?A>nsS%X#}Oi zQ`E3++S*dwh&u_CAm=%dMRtbLJ_`0Q&UUwUCRJ=UUYkA_FUCoHxUUKh+9sKk+v=u5 z3p{b)R66)``vDoDh_SM*VxLadAL+$9y6BWkpYc+nPiX8z^NlJ;4ha1f+#)D%6spEi zZUm=c=nHP*4+E&i`DFPvnx}nqB36gS(+#eko395Z<9c!4nXq)4@Om&{u5rZ=Q@JhD zk_2mjEDvVKqT<(^!Dw`VG%@i17>6BIT*rY#Xx*K3?D`FbLQ&{9rB-qHtY#T!%1mpZ z>x?Qc0}L?70KTP?k!at|=c=)db~T_#6-u~}?s=mROU_GyQr3h0RJNkZ0Sav?i82Jp zbOZy9^L=0h#H9#MB7-#fg>@8tG^b&e4kIAh?sy2^&@bb;u^sxZ-UvHLyK--EJs7EC z7!G|XJkp^VjxQ>Lyf~g^9kEXRVzPu>7%m@ApcxzlLl+>-6Jm~7?R#7LX$d@(rpLCz zg#^O0fJx%!KaQ64{NgY(w7hIGF6O_uhD<0bRf-kmI?l;(B|-HPSOH+%aR8BaaRRK` zt|QNb>vx@|r@nf%7aAX0^R$3S9mDjN>`S&8jJY78188!lxsF^X$pOTYLwiVI;^IBn zMUnS6>ADaGeU?!vBywzf2{kNU3nvF8Nb8WVnHwsw)`g^FRDSXl1s;03Y{69})Y<#o zhS2$;tSpJoBX1zxIs_A#rmwMo9<Sn#QVKWV0c|CR>0LqH2i87Eu54-L4ZWD;7ZF5o zq%(ef+JX9}#}?OkCEUf)=++hjm|AAfzR)04Rg9)li%|H}UMUuwsq}u;#YKmMHSMHD z=Tg#53)&l&3e&FW!ZOc%7kz9WsneC9Pld&;=yY8^T#m9s!DVL6VTA2DMv*$lg-X50 z1U!@WaQr@9MUK{#itUXNWl#BI_(KuPW0zsNQ4Y%D&Iom&$06}pG8wP8xHZA|b6sg~ z;RbG9$#O3evQGQ5*b(fyIfNzyu}F?a@QQVZsu@*?H1+w+95qr3xevM(91vV$SV1RU z{AdK>j1=_nm?I&ra?!K9rAR8$-WT_9Q`TvyD>vEHm6!ByNT&USqPz@1s~el{@Uzw` z4-_~Tse^c%NUlo~k5HG~2@LdZkSXY6qw7Je@Rg>X96Gi}C9NK6kSH+r$zCLfZCC+R zw44<Q*cs+V=eE=kM^6OP4{nyK6o+M5F+i~s7I^?}GBM+93DTZO)?l<@6&h=5I!`6z z2gV9i@p;;QxLWR;H1k}SVGxg}9Bp4WQa*~5viBi@uKIwcQ`?Dk&09ilMP}KqBRipK zJc4FIpzfc50IK4jg+)>i#B3r4{5dE7X6_)yX+y>?N+ye1a|u=z=aWf`<G+#iHChYu zy_H#r%nUl*n1q-56;%;5x)m@V(7i|UX_SDZ-`NUxhvBG~#S_~}x;4@HJ@j<cPhu<; z-|&G$uq>JvXa%M#BSuj1jU%#{@k`<vA-{5f$j!crbF(j|9ysfye-d_u@YVe|^K*`$ zvmvMb_+Y<^o(=3K#kAPm?o%XDpvM;UQF}%VFoh>1WZFxLF;(pOn_vYM(+*k4{78@M zCX=!?%)X)19M<?k>WNq53p(*>#*0Uq#@gaW4FFR^_ffu~`zWz!=T1_9vt^@)0=FLN zTB$T>L>`j(lvK1Ire1CcyfxoZatuVnmp_Ilt1-!)I^WQJTYZG`P6MTnHnj~rjjOv; z9XJT_r*OugU*{u`-?&OB$ynzzxKTrTIe#GwoJE#82LkF`Z;CIN_q{v=Ky(ZFuhhfw zs341v!o|CNmY}H~<a@uW6WCYklvRD)XFnyD92gBEo&M}K&|x_<nz@8gR8c|q6VgI= zT8ogdMF5ct8Yn@-Zd621WtGDqxL-x%kSq&SPTp-Rkej4yTje9^+E_mb2sce$$U3e^ zzKh!#h+7c~>8Tu=6nisr(5T34NAGl~_~uAg>Of5$XOT4*@qN~b)-b@S=D;FZ7ZJ-B zJGrua*2|UUv-Y~iT(t<B1%<bll+jOlr?w^?DjQ&$e!df&nss#&6^pJTz#aOfos@W8 ziMkNAFgXePA<Ipc3`N-UYSiyL54nPJDmtmXGUv(WseRSf5?G;(W`Z0!b#uB_lb@Hv ztY#fliDI*FQVw=|)~OGj%Vn8$4_ro!?-%pmM>y&3t~vcsz5`8|ph!3&>myoAH3P{g zs)J~VtOCLjm<5`i_LL@C(AGfe8wVax-4sywK9CLR7R>0#YC1U<o%Ng!Y19yl-O`em zjN4D1CooQP<02IrZJ#-H<IE`sLQt2KlLWI7O+&l!=B3v%Ug?L6Lzm4u-+8qk43P9D zElK1s#raR@%F<Tpt~)vlBHf&*Ntxi_d}Q`s%rBbmCfND9!xcQoneU*)MU>M_3n5mF zs*-{L%~*BR*P!6K&yB7S4hWk89A3C3Y}1g|1~$R3zTzV6NyTDe&+@w<Qoa)o#?8B$ zEgbuJYoS05QhN<(^F7Hq4IQ;FG7L$^Ddsw<U~+V#GZ;w?+(*kgiec*OEM8z^I0j;Z zEtE<&CMd}xRmt8-4Gx8UXnNw|(x*DvcxflsDbeLFHy`G?G)D(?BL7s#0+`3}^k`=c z+G10FA_3yoN6%tLIYxOc!qXkyX44qaEyAWf=DuI*u<6VTjnQ;(2!^A?-_w3}Qg4N% zDqQDWt8;V7x7JbFZd-vac|<n%$x{#8GzvMRP^)Sm*Z)F_V0}Uuh*0XSHfu%i^h)dW zk&3bfPW`6oDhlHllK&s^JB1wbvTu+KFXEB+S4rKwH9^ese8K{0)M|^%NiFqiIDw|- zt2ZFoOgi)Y*Wt~(XFLVwn^VLiNludrGT(zXvNL#Utn%Q?dsv=c=Ygq3bsk6M*q61I zO+*c#eZKVDqinFWCnb<PN=FJkK1x4@dbu}=P0r0ly5mG#4mv$le7(5LnQzU#bm){5 zR18KNLNpF_pxYVw-<i+&Ie64f+TP~bGB-#;it(?h=Dy_gK{d97{qLV7<G_{bt;4tj zMSr}DP;WO$grx#U2r*F)xb~AXdFEp4im-4f9EBv5$RL??)B6~ND6S7o+*olv<~tkn zITt&o9Khv8tn83KxtvHu7LL;V93i5oeEHF-up+dbbS6GGw3S6BoVw<CNZOv>LlFIE z4)`iA1x9i{3Qff-+#t?ZslfF}#TYqbo&N+a$x(+_SM~6q&L@Z=m4V#DRG8?<(vr=S zVLKWhoeo!`QCfXeK*_?!$V8Q)e=d_OxfjfSBrmz0p{jvgX(pSs98t$BTeDwCx?Vyg z&8(+M^ygZ%8>8G$)ZM6A=Gv*3Gk)*oTVuToN2dev(1qyk(h~Vl_mIY+gB1JmsF#?G zptA;}wpR6QJs>b>E#QpYpLF4B8JOM_(}u(w2sBb28%~Yw+cNj%v@v(|<XR&cO>muJ zF^u<|v@u;vqhZ)}2A*}`XShV6htpF}=a6l2LD~dI8_0-^hIOAcg28-v2tRK8hQC;s zy5PrD$&qyfFFFmC=|h%DK;5Di)7J5B!b~}Boo4fA%u6)cv@vJx$~8-E>}h}$j{&|5 zvnw>gH_4au`)ZBwckChMJRhK9KzJRYWc)B$x8)vcsSJ&`qS7F4{0rh_pI=8IiY`n^ zZeTF?xoJ2~A6;|c96P0yGKaaArmr2e+~z{80TV*h;hT%rnuIm61l??y&!$eE*&5jQ zAn60wl`B4(30-8`tcN4jXC3V9nF0p!`KuDG4p|=ECkp)v;w(APw{t8f7j&jSuWtyX z)X{|*f12GM(+;#kFl*x-!E{RI8rl`TTw{mbgc;KKb|R+@almk!C2Pg#gE@R!&aJ`2 zV`5IrnQL#=6w|hDUsO(Di}4|UW@1KL0l6bB9d1MJ!O(3isFIEjGx}s0iv$x5qIx-q z*J)eFoiuH~mc)C`?4#khF_3P%8TSz(Wnm88bQ@NaKDB3r5@5IBY1`>B&)6x!9mO0Z z>`*Z~`*5JXNiFG3c8oA9#1eIwjCs0!GN{>{Y$bdEoEoT9wT`1-cKfI8&9)oC$l1-5 z9&Y_|_ixKbHHCA6g}LO?yyn`o3U#bvL9={>q+5YcdkNJ@SMr&01S}Q)nD5K!aiww7 zV^fc9qHw7X9Y5j@8>mm9f?myr3fcmsLExS`9>bKJE1?ehn!rsvsVs^142iQ*GIq(0 z!@C%{bj2Q^W=0mA!lhgaxsk2YqxPFaeUXv$17}HyQf!{~?BZ>x!yN6?NtJpd+ZSxO zooi$dw@$FwH+821Ck&$<M6(OKlV_E%3*)&pTX=xX*aptMD#wvZLBx4v6?*H^Uc}}u z@Mf(|*(VJj=M#7Hot%cs%{^Tz#+RWmUaqI28uy4}>gc*wxv^TwFcq;bgkMLPf5!Z| z?ZZjd{3akbr@EiOy|B|G#|NrDVwWf2Oxy=i>~eEA=lkd)iO|!PAE})ad(gt=;Jc8# z)CJFUGU1W&itAWzb7`QW6eR-8O~&#fmEjn*(>q<d95kMN8Ph&`<L3v}5*Swu;WtFX zPO)2wsN8a)?YVs(ig0c&){m3k>>?r4c6N?bIeFcnYBg@rnuT{tDky&RPMH@q9h7}$ zCJEawylP=737OzT`aU^)E`>du{2Png+y~LF*-PTE(S@vtb{P-R?6aylF<V4|b2>K( z`{Y&VsM{M2`dQoU0~m`tNL0u>x9aAWyu`YZTi#&R)-hwSYP%A45bQaGd#Fk<&XIam zCoN5VG`W_f&>+2O+HxCN;*8!n3Iw&!LO!f8(0DcO3=aoz*g+v)r>_&YEd|}ZkSj)! zLAj({{OKpl9O=?XiaRnIxqMeOG-e^mMyEgN3WOpw<}{L7V;5qnHk+u+h58CD<Q(aT zlx3Tn8oe__XhT$+d2Dh$QrRtAm$Z|TP{b~bVU{EUgxC;{&nQ^51)d!;<qj2fC>5J~ z>+Nueti_@^E6V~H@G=#pS-lSN!%>JZIVK@h)g;?Xn~;=Xu#GV6j$q&$F$0XFKJqm5 z!p=3iskfp%%w%E~#Hu;%xn^TIK+O$gJwa<c<d4i(hf*ILf(TwVO?cWE)yh|Fjh0)h zTa6}@0#?%lcvD`4qg5P%I7X+iSqB}$wiJwE#yxB%2j(rEL0+X2wPBZ7AN3i@dew*r z#&mVlk><Oth4G%TD#Em%L#g3>Tk^&k8trb`92)!J$gPV@i#F1$hK!5Xbm%mYr4=EL zA1tpT3XLKpgOTq<j*Pg=LNi9CIES8;jRy?b=kCwbaYz7PZrIGmsySi{HPdIFl_ob% zJ@v*Y-G!E8JpHzo@bOZ#*F;4c>?tN+XEuQ9gNl==$i3HyuWYev2DL8}3puM29x=`5 ztAbYD&yq@4BScr{qOoZY)V37uA1&FpR)SHF%WABwiYjO)>V}E=w9xIKKMtXsc96`q zGHM8C+&roA%T};k!Jni2GR^hNVgpH<8YE-B358x&e4`Hm9Hv*M?cNY376czB726#{ z&{>F$*x20&DWbQ^2?jhxcxbTsixXCL2_syCjHA!Y3u!c1M}oGM$v&!a?bAhk4l$Z+ z4-c1vai_-&WXiL8InKgw8LAZ<RniRyYc`YRAvj3;($1@H%0DHWQeiH-<a*&(#J(-% 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 ULVK@0Xwkh+ACt3HE>Zda0b-)z-2eap literal 0 HcmV?d00001 diff --git a/lib/windows32/vorbis.lib b/lib/windows32/vorbis.lib new file mode 100644 index 0000000000000000000000000000000000000000..16d9263ae813c463ffcf2f1460f0d39bf9a9e834 GIT binary patch literal 76138 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 Xj#wJx8Tgr$8mi&TaUe=k?1TRcrG04l literal 0 HcmV?d00001 diff --git a/lib/windows32/vorbisenc.lib b/lib/windows32/vorbisenc.lib new file mode 100644 index 0000000000000000000000000000000000000000..7db239a8f6064771056a1353159b8d2e115b5357 GIT binary patch literal 4902 zcmd^Dv2N5r5S{Z~xFm|A6N(^00XZm8AUJ$J-zA_ZN<oEEB1DDb+?nL0<Ps%E6#juC z1s_1kSD<_VRccBK3JNOPFtg)bukE$ZbeuBM&hF06+B-9Ech+8B4~~0#8?#UCB(>U} z({kKy>zQpkVo2w<?X|sV!uBix%mY;Z08}>tYTvljJpd{*U%1TO1fVj1#-(uy(75z_ zA9ha<k9P(q;jrhset&=89}I(o5PW|x4Ely~@OgrdGY<Qqe-e(~ANi*{$2ethaOCF? zo8}z^!(cb;7tK{Frul>6U{o}j$CEQjmcQV5G&{@uCeu55qkXe74fGwN)#hOo_Pl6! zJ&v-w%F(y&?b)qL6$1`{VTGD#O;wtMelQAFFxpHc|0p}Eb}k~ljuesJx$LM~>8(o9 z0yaL$j;fst+0;Sw#BCyo0Q5CgP_Zf{;_a3$5$_?Z*fO??dluY7xdDX{O4*Z6X-~G> zUA1qdC%@twrm&ztr6*m{MMjpBCqH8$;uR_nDNpifnkzjOnY0G?V^5~X$xn5dLrz|) zLjyT^vo5_URyxMN;_X@g(kyyD2p@|EG7Hv_7wmpL*ohN^W6>=gi%v(61xLWcMa_t% zU@S)A*+?!6>uD_CvCPrJk*Ko4*^ZE=&`O^Af#sH_2cTl1Vn%vD=^17{6*JQNh2@c1 zuZu&1mXQCB+HvJvTs@%Pd19kYLGo~k4^fT@#pQ;02w7bhEn0`(()~kAQ#(v}BC*4S z&5QtjU(yrREMW&lp$ePt!eG>N9D3^2l|(&h6Ooj0b650voF(g#genVOBhOC<W3okV z{$ZST%HyoNrtNvg*%}%#4rdKA6p5-LoZZp%ig31K*300mY1UIXvvECTaaJ?pOlH(c z!rC%gO++YWti2F@W){4~h7oJh*n-<htde)<Va$2uG1tjr?z)_9RU_uaB}qh%qWAxw zZFKJ-it)C=0>LeKgS8QFd>hO^+@kSfq_zJ6Y4Ml9R^@tSQ7eTsa;>=7V{8azlYun4 zHxR{0d(HyEEqH}>3Tetv<DsUF7Ng89k225A<WRaEjLV_ZS}rTfp*J<Xq8z$p*30D3 zhh{yMLl@DfWpil7fHDfr<RFZ!C5jQIK5$TK!4`4@!ptAArOvNbd1NKN$oTwvjL{p1 zteO_#B4o{LdPT@uH0x!Mb>FO~khOrmEQ>5iA&dSEOb)7UqoqVKsvH&wZox~eQ>ZHZ JE0X`s`4?+AGt2-0 literal 0 HcmV?d00001 diff --git a/lib/windows32/vorbisfile.lib b/lib/windows32/vorbisfile.lib new file mode 100644 index 0000000000000000000000000000000000000000..a8d90c33d7ee463725f245d948f8c0900ae6a976 GIT binary patch literal 23472 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/zlib.lib b/lib/windows32/zlib.lib new file mode 100644 index 0000000000000000000000000000000000000000..9872c6b39d155f9a86316aed6daa1f2370fc7cb2 GIT binary patch literal 15658 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 literal 0 HcmV?d00001 diff --git a/lib/windows32/zlib1.dll b/lib/windows32/zlib1.dll new file mode 100644 index 0000000000000000000000000000000000000000..720dee13a168caddc7326293bb365415fbe34f1b GIT binary patch literal 161280 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%0AY;ns{(2<+b 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%0DVKvf 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/SDL2.dll b/lib/windows64/SDL2.dll new file mode 100644 index 0000000000000000000000000000000000000000..d48b854b200e634ce940777fa92a18ccc6db638b GIT binary patch literal 2494976 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 f5UQ)qgipFDsP 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∾zfB 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%0DNbO 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 +kCIdGawTzjTv8 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%0AF( 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ⅈSfGJHlkuHJKK-+dGE5vs`NYYj>0F0ky3(04 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≫D`LySCEjLl$y$)=Y>aw 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/SDL2.lib b/lib/windows64/SDL2.lib new file mode 100644 index 0000000000000000000000000000000000000000..99c5321cab958bb4c2e43583c7866a69972923f7 GIT binary patch literal 183542 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 AVE_OC literal 0 HcmV?d00001 diff --git a/lib/windows64/discord_game_sdk.dll b/lib/windows64/discord_game_sdk.dll new file mode 100644 index 0000000000000000000000000000000000000000..db82aa7810a9938461c77efa69608283b2e3b7bb GIT binary patch literal 263680 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�qY|?LOE1}oAE9} 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৊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 NJ}+gOO*QbQ=<WF8l+Z3 z+f$566?H}3%n=W>#LM{fMa!c8Xazl8&8%sNhN6wpaI`5JiAJNbXn!;w9f&5PgV7}I zo{A3B_O4EMXHlo8v!v78SxQfo(N;r!Dc#>5)_h*&`50*d`Z(Cq&=P8CYzenCwM3aa z{Vj3kPoiazz8`LJSstLI)r%L1v_)yBe&)BU-EHQ$x4qPw=l=EzYpw^|8_axfY7cie zbw|3R-LdZe?s)e=ccOc+JJ~(do$4O$Rz0pBH{;aPQ_|z@DK&Gdq9<VHRj8-Ynp+Y2 zQ_rt~o`f~WQp_^7!?nY`qlghyvct<L@-e>kNUGiuWCn(IH0}s9;v<Z#7-K8W*iY;j z#G4H5Na0cJ+3D#mVTP76E6RHL<EC=aF5;U?Y4HkLyMdN&qLuq;;Xzt=IO?KZOK8)w z&I;z7_^&4XMn8UIuyd$$xYN~D)K$_|+Evz7!N_mGhctCX@gOn-h7S9X((bbEitg&} zhVDk%C`$Vb&^AM~i;FfXp*_m18QefCG?@`S*fT`UUDUdS8kaF|s;OxswTx230ctly z&0P4L5^7Y2&#dlk=xxORMDafZmiHX)by?%S6hBnaSKZgp*Vxz87wzlE8w~ah>G9#? zIg>fziWEgkBBhbCNJXSN(hzBkG)1D3{>VUN5YIataWxk;>$z2d_iAWvY;J0fHupCV zG!HfpH4ittT8dgq@MmQ$;z=49VKTn@8C!$+W<9b>7**n3s`1l}txc^_YmKpeUlHp} zDSoG-t-7s&b*72&*Uvm1#19R(xfp>ZjJ`5PUNxhxvAwB1+TPC$9>g;Zv)&Xje@mIW zRL0M<7=0ULq=&5)B5wJ%6u#EY3g>P0vBm{jgRP;~aBHMB#;TEEtxK`ix!XLfcD^=0 zYhAD{#A+wrB96C6vf3$Tf~Vcf91yP<WbBJ)jJ3z{BT36+yYVAle2Cxp$uNE+hR;ag zFH)8__uwUb)`}D~J~U=~IedYvQC@t2c={l7Kg_(3G3OJ^_Y`y8%{-SC!1jh=R<al? zSpx5y>Qr5BRx)pwugl*R=nAsZhFNK2tY`^V+Z2A&-R<f2;yeA_0oLA7cbGXFW4<Ps zt10HGn>p%be)^f4L2FHkFeBs4#-!!N-ONHSGtiG84>I$@%(@seF2QU|G1J`mbuTl_ z-y2}<3H641Bl!7vZ=yG8yuF8Y(bwl^WeoO(SREs*PVv43>r+bBrvT66fQq=S)zTO7 zM*@*xBoqlpA`#L<8EP7kq}OGAALy`stt9gN4!F6af&5;)cM~3a5HDR~{IdAs(Y$E7 P4{czk$N66Ce|z{p1z0zY literal 0 HcmV?d00001 diff --git a/lib/windows64/discord_game_sdk.lib b/lib/windows64/discord_game_sdk.lib new file mode 100644 index 0000000000000000000000000000000000000000..7563cc8990ca9ab29e975376f35e9211a1c564d8 GIT binary patch literal 2148 zcmcIl&u<bz6#iJ~4~bEtjTfWA*r+`S6xc=+W40|OVkvDXJx^D5EmUyHLP<=Tc;n>X z;@{AC?8#G)9zFD*!1s1%=z^<2Y6s@Wd-G=An{U21`{<SF*6Oe0>Evj6zB(!^DI*8j z%nLa>hyz#vv=bn92F#PZa3O1t`koNQ?cJS9RTSRrZB~lA)t!p48l9TsTH?@b*`i~8 zgb?NZQt3}id>J?O4XbbW%UhzbUR|f9jaFN@$DOXQ>!NMD9p{tTY;->(OjqzdZ@RYG zwdLAT-OO05UScsvV4P^cSqzBJ0~dr$k1G8!hX^!kWAuw+)aTVO@(~!{aTZi2qnsXt zWg<g{3_6HgW4E2MnoY#hicFG8lXlc|Y60!ok77XOVFXwtY`LT?`~C6Z@}4gN?`ZH< z39>hk*hn=jvuiGA)zlIV&Z!b<y%MF?K;~51tw}ZR(O{AMDLd91NS@Ml<34V%h^4Tj zKE>Sx6X1tu0^GuF9M$h^H)^iaaXxgD&nhd)Qn9=x=SRAmBymJsDZ{)`f?8%;6k+Zt zs+!YkQ}{>qNMtYwuBAobcr_>#48S`<U1_}Y`W~fCo^5CmhBo@8hV?7l$ilk=8&cv< zgGKGt7(N9*6*;D4Q&xXDe8H@~=CSF!7cIve&L%!bumsqYQ+j68HzmlP*~GY9A4{gW z@dp&aU!U2TvoV*+2k`T=@fUgU?>`*Be`KRBq4Ki%TnVx_V5n@&t0~U<pGpYWT_4WV zVElw4`TtzibqRHnzqXvwR-a$L$KJVPW8ad{H(}=cT?@S5L7$xK5qgKhzOCV&e*+Kt BzP$hd literal 0 HcmV?d00001 diff --git a/lib/windows64/freetype.lib b/lib/windows64/freetype.lib new file mode 100644 index 0000000000000000000000000000000000000000..84b636444402b8e766137de41e9124430624a404 GIT binary patch literal 1586820 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�)H)WS_ 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%0DWP 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%0AUR6sva6q# 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 QDJx4G=uU%_iGExE4^+!2+W-In literal 0 HcmV?d00001 diff --git a/lib/windows64/glew32.dll b/lib/windows64/glew32.dll new file mode 100644 index 0000000000000000000000000000000000000000..a6cc6fd17ff2caff244f40537a9ef061e209ce99 GIT binary patch literal 433152 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ℜQKr#k8m^msY`Rg*--r%u+Nw+~$kaqPJ!I2X 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�Pze1h7GieE*sl%!^zVr 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/glew32.lib b/lib/windows64/glew32.lib new file mode 100644 index 0000000000000000000000000000000000000000..9d1aadb1682dea21ffa12a31bf5bb977bf6d9418 GIT binary patch literal 597238 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%0APLOvILY8p;Gdi`dGV1<ENuhq(bI{yZYP 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/include/C99/stdbool.h b/lib/windows64/include/C99/stdbool.h new file mode 100644 index 0000000..d92160e --- /dev/null +++ b/lib/windows64/include/C99/stdbool.h @@ -0,0 +1,20 @@ +#ifndef stdbool_h +#define stdbool_h + +#include <wtypes.h> + +/* MSVC doesn't define _Bool or bool in C, but does have BOOL */ +/* Note this doesn't pass autoconf's test because (bool) 0.5 != true */ +/* Clang-cl uses MSVC headers, so needs msvc_compat, but has _Bool as + * a built-in type. */ +#ifndef __clang__ +typedef BOOL _Bool; +#endif + +#define bool _Bool +#define true 1 +#define false 0 + +#define __bool_true_false_are_defined 1 + +#endif /* stdbool_h */ diff --git a/lib/windows64/include/C99/stdint.h b/lib/windows64/include/C99/stdint.h new file mode 100644 index 0000000..d02608a --- /dev/null +++ b/lib/windows64/include/C99/stdint.h @@ -0,0 +1,247 @@ +// 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-2008 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. The name of the author 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 + +#include <limits.h> + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we should wrap <wchar.h> 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 <wchar.h> +#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 <wchar.h> +#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 +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/lib/windows64/include/GL/glew.h b/lib/windows64/include/GL/glew.h new file mode 100644 index 0000000..9afa5c6 --- /dev/null +++ b/lib/windows64/include/GL/glew.h @@ -0,0 +1,19367 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glew_h__ +#define __glew_h__ +#define __GLEW_H__ + +#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__X_GL_H) +#error gl.h included before glew.h +#endif +#if defined(__gl2_h_) +#error gl2.h included before glew.h +#endif +#if defined(__gltypes_h_) +#error gltypes.h included before glew.h +#endif +#if defined(__REGAL_H__) +#error Regal.h included before glew.h +#endif +#if defined(__glext_h_) || defined(__GLEXT_H_) +#error glext.h included before glew.h +#endif +#if defined(__gl_ATI_h_) +#error glATI.h included before glew.h +#endif + +#define __gl_h_ +#define __gl2_h_ +#define __GL_H__ +#define _GL_H +#define __gltypes_h_ +#define __REGAL_H__ +#define __X_GL_H +#define __glext_h_ +#define __GLEXT_H_ +#define __gl_ATI_h_ + +#if defined(_WIN32) + +/* + * GLEW does not include <windows.h> to avoid name space pollution. + * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t + * defined properly. + */ +/* <windef.h> and <gl.h>*/ +#ifdef APIENTRY +# ifndef GLAPIENTRY +# define GLAPIENTRY APIENTRY +# endif +# ifndef GLEWAPIENTRY +# define GLEWAPIENTRY APIENTRY +# endif +#else +#define GLEW_APIENTRY_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) || (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) +# define APIENTRY __stdcall +# ifndef GLAPIENTRY +# define GLAPIENTRY __stdcall +# endif +# ifndef GLEWAPIENTRY +# define GLEWAPIENTRY __stdcall +# endif +# else +# define APIENTRY +# endif +#endif +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# endif +#endif +/* <winnt.h> */ +#ifndef CALLBACK +#define GLEW_CALLBACK_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define CALLBACK __attribute__ ((__stdcall__)) +# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) +# define CALLBACK __stdcall +# else +# define CALLBACK +# endif +#endif +/* <wingdi.h> and <winnt.h> */ +#ifndef WINGDIAPI +#define GLEW_WINGDIAPI_DEFINED +#define WINGDIAPI __declspec(dllimport) +#endif +/* <ctype.h> */ +#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short wchar_t; +# define _WCHAR_T_DEFINED +#endif +/* <stddef.h> */ +#if !defined(_W64) +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif +#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) && !defined(__MINGW64__) +# ifdef _WIN64 +typedef __int64 ptrdiff_t; +# else +typedef _W64 int ptrdiff_t; +# endif +# define _PTRDIFF_T_DEFINED +# define _PTRDIFF_T_ +#endif + +#ifndef GLAPI +# if defined(__MINGW32__) || defined(__CYGWIN__) +# define GLAPI extern +# else +# define GLAPI WINGDIAPI +# endif +#endif + +/* + * GLEW_STATIC is defined for static library. + * GLEW_BUILD is defined for building the DLL library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#else /* _UNIX */ + +/* + * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO + * C. On my system, this amounts to _3 lines_ of included code, all of + * them pretty much harmless. If you know of a way of detecting 32 vs + * 64 _targets_ at compile time you are free to replace this with + * something that's portable. For now, _this_ is the portable solution. + * (mem, 2004-01-04) + */ + +#include <stddef.h> + +/* SGI MIPSPro doesn't like stdint.h in C++ mode */ +/* ID: 3376260 Solaris 9 has inttypes.h, but not stdint.h */ + +#if (defined(__sgi) || defined(__sun)) && !defined(__GNUC__) +#include <inttypes.h> +#else +#include <stdint.h> +#endif + +#define GLEW_APIENTRY_DEFINED +#define APIENTRY + +/* + * GLEW_STATIC is defined for static library. + */ + +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# if defined(__GNUC__) && __GNUC__>=4 +# define GLEWAPI extern __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# define GLEWAPI extern __global +# else +# define GLEWAPI extern +# endif +#endif + +/* <glu.h> */ +#ifndef GLAPI +#define GLAPI extern +#endif + +#endif /* _WIN32 */ + +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifndef GLEWAPIENTRY +#define GLEWAPIENTRY +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ + +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 + +typedef unsigned int GLenum; +typedef unsigned int GLbitfield; +typedef unsigned int GLuint; +typedef int GLint; +typedef int GLsizei; +typedef unsigned char GLboolean; +typedef signed char GLbyte; +typedef short GLshort; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; +typedef unsigned long GLulong; +typedef float GLfloat; +typedef float GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void GLvoid; +#if defined(_MSC_VER) && _MSC_VER < 1400 +typedef __int64 GLint64EXT; +typedef unsigned __int64 GLuint64EXT; +#elif defined(_MSC_VER) || defined(__BORLANDC__) +typedef signed long long GLint64EXT; +typedef unsigned long long GLuint64EXT; +#else +# if defined(__MINGW32__) || defined(__CYGWIN__) +#include <inttypes.h> +# endif +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif +typedef GLint64EXT GLint64; +typedef GLuint64EXT GLuint64; +typedef struct __GLsync *GLsync; + +typedef char GLchar; + +#define GL_ZERO 0 +#define GL_FALSE 0 +#define GL_LOGIC_OP 0x0BF1 +#define GL_NONE 0 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_NO_ERROR 0 +#define GL_POINTS 0x0000 +#define GL_CURRENT_BIT 0x00000001 +#define GL_TRUE 1 +#define GL_ONE 1 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_POINT_BIT 0x00000002 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_BIT 0x00000004 +#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_BIT 0x00000008 +#define GL_POLYGON 0x0009 +#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 0x0100 +#define GL_LOAD 0x0101 +#define GL_RETURN 0x0102 +#define GL_MULT 0x0103 +#define GL_ADD 0x0104 +#define GL_NEVER 0x0200 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#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_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_STENCIL_BUFFER_BIT 0x00000400 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#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 +#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_PASS_THROUGH_TOKEN 0x0700 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_EXP 0x0800 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_EXP2 0x0801 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LIST_MODE 0x0B30 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#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_LIGHTING 0x0B50 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_SHADE_MODEL 0x0B54 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_FOG 0x0B60 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#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_MATRIX_MODE 0x0BA0 +#define GL_NORMALIZE 0x0BA1 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_INDEX_MODE 0x0C30 +#define GL_RGBA_MODE 0x0C31 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_RENDER_MODE 0x0C40 +#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_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#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_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#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_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#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_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#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_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 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_INDEX_BITS 0x0D51 +#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_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_NAME_STACK_DEPTH 0x0D70 +#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_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#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_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#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 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_COLOR_INDEX 0x1900 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_BITMAP 0x1A00 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_RENDER 0x1C00 +#define GL_FEEDBACK 0x1C01 +#define GL_SELECT 0x1C02 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_S 0x2000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV 0x2300 +#define GL_EYE_LINEAR 0x2400 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_SPHERE_MAP 0x2402 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_PLANE 0x2502 +#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_CLAMP 0x2900 +#define GL_REPEAT 0x2901 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_R3_G3_B2 0x2A10 +#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 +#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 +#define GL_LIGHT0 0x4000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#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_HINT_BIT 0x00008000 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#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_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_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_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_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_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_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000fffff +#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff + +GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); +GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); +GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void GLAPIENTRY glArrayElement (GLint i); +GLAPI void GLAPIENTRY glBegin (GLenum mode); +GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); +GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); +GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GLAPI void GLAPIENTRY glCallList (GLuint list); +GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const void *lists); +GLAPI void GLAPIENTRY glClear (GLbitfield mask); +GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); +GLAPI void GLAPIENTRY glClearIndex (GLfloat c); +GLAPI void GLAPIENTRY glClearStencil (GLint s); +GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); +GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); +GLAPI void GLAPIENTRY glColor3iv (const GLint *v); +GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); +GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); +GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void GLAPIENTRY glColor4iv (const GLint *v); +GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); +GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); +GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); +GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); +GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); +GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); +GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); +GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +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); +GLAPI void GLAPIENTRY glCullFace (GLenum mode); +GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); +GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GLAPI void GLAPIENTRY glDepthFunc (GLenum func); +GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); +GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); +GLAPI void GLAPIENTRY glDisable (GLenum cap); +GLAPI void GLAPIENTRY glDisableClientState (GLenum array); +GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); +GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); +GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); +GLAPI void GLAPIENTRY glEnable (GLenum cap); +GLAPI void GLAPIENTRY glEnableClientState (GLenum array); +GLAPI void GLAPIENTRY glEnd (void); +GLAPI void GLAPIENTRY glEndList (void); +GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); +GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); +GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); +GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); +GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); +GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); +GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); +GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); +GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); +GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); +GLAPI void GLAPIENTRY glFinish (void); +GLAPI void GLAPIENTRY glFlush (void); +GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glFrontFace (GLenum mode); +GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); +GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); +GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); +GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); +GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); +GLAPI GLenum GLAPIENTRY glGetError (void); +GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, 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 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 glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); +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 glGetPointerv (GLenum pname, void* *params); +GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); +GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); +GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, 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 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +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 glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); +GLAPI void GLAPIENTRY glIndexMask (GLuint mask); +GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glIndexd (GLdouble c); +GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); +GLAPI void GLAPIENTRY glIndexf (GLfloat c); +GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); +GLAPI void GLAPIENTRY glIndexi (GLint c); +GLAPI void GLAPIENTRY glIndexiv (const GLint *c); +GLAPI void GLAPIENTRY glIndexs (GLshort c); +GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); +GLAPI void GLAPIENTRY glIndexub (GLubyte c); +GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); +GLAPI void GLAPIENTRY glInitNames (void); +GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const void *pointer); +GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); +GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); +GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); +GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); +GLAPI void GLAPIENTRY glLineWidth (GLfloat width); +GLAPI void GLAPIENTRY glListBase (GLuint base); +GLAPI void GLAPIENTRY glLoadIdentity (void); +GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glLoadName (GLuint name); +GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); +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 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 glMaterialf (GLenum face, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); +GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); +GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); +GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); +GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); +GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); +GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); +GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); +GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); +GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void GLAPIENTRY glPassThrough (GLfloat token); +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 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 glPixelZoom (GLfloat xfactor, GLfloat yfactor); +GLAPI void GLAPIENTRY glPointSize (GLfloat size); +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 glPopAttrib (void); +GLAPI void GLAPIENTRY glPopClientAttrib (void); +GLAPI void GLAPIENTRY glPopMatrix (void); +GLAPI void GLAPIENTRY glPopName (void); +GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); +GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); +GLAPI void GLAPIENTRY glPushMatrix (void); +GLAPI void GLAPIENTRY glPushName (GLuint name); +GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); +GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); +GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); +GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); +GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); +GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); +GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); +GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); +GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); +GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); +GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); +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 glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); +GLAPI void GLAPIENTRY glShadeModel (GLenum mode); +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 glTexCoord1d (GLdouble s); +GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); +GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord1i (GLint s); +GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); +GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); +GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); +GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); +GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); +GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); +GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); +GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); +GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); +GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); +GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); +GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); +GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); +GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); +GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); +GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); +GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); +GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); +GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); +GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); +GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); +GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); +GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); +GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); +GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) + +#endif /* GL_VERSION_1_1 */ + +/* ---------------------------------- GLU ---------------------------------- */ + +#ifndef GLEW_NO_GLU +# ifdef __APPLE__ +# include <Availability.h> +# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +# define GLEW_NO_GLU +# endif +# endif +#endif + +#ifndef GLEW_NO_GLU +/* this is where we can safely include GLU */ +# if defined(__APPLE__) && defined(__MACH__) +# include <OpenGL/glu.h> +# else +# include <GL/glu.h> +# endif +#endif + +/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 + +#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_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_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_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_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E + +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + +#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) +#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) +#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) +#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) + +#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) + +#endif /* GL_VERSION_1_2 */ + +/* ---------------------------- GL_VERSION_1_2_1 --------------------------- */ + +#ifndef GL_VERSION_1_2_1 +#define GL_VERSION_1_2_1 1 + +#define GLEW_VERSION_1_2_1 GLEW_GET_VAR(__GLEW_VERSION_1_2_1) + +#endif /* GL_VERSION_1_2_1 */ + +/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 + +#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_CLAMP_TO_BORDER 0x812D +#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_SUBTRACT 0x84E7 +#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_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_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#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_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_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_MULTISAMPLE_BIT 0x20000000 + +typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, void *img); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); + +#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) +#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) +#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) +#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) +#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) +#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) +#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) +#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) +#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) +#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) +#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) +#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) +#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) +#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) +#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) +#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) +#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) +#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) +#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) +#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) +#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) +#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) +#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) +#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) +#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) +#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) +#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) +#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) +#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) +#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) +#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) +#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) +#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) +#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) +#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) +#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) +#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) +#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) +#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) +#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) +#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) +#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) +#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) +#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) +#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) +#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) + +#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) + +#endif /* GL_VERSION_1_3 */ + +/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const* indices, GLsizei drawcount); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); + +#define glBlendColor GLEW_GET_FUN(__glewBlendColor) +#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) +#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) +#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) +#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) +#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) +#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) +#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) +#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) +#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) +#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) +#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) +#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) +#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) +#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) +#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) +#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) +#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) +#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) +#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) +#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) +#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) +#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) +#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) +#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) +#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) +#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) +#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) +#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) +#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) +#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) +#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) +#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) +#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) +#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) +#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) +#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) +#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) +#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) +#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) +#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) +#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) +#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) +#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) +#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) +#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) +#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) + +#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) + +#endif /* GL_VERSION_1_4 */ + +/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 + +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#define GL_SRC2_RGB GL_SOURCE2_RGB +#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 + +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void* data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void* data); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); +typedef void* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); + +#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) +#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) +#define glBufferData GLEW_GET_FUN(__glewBufferData) +#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) +#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) +#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) +#define glEndQuery GLEW_GET_FUN(__glewEndQuery) +#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) +#define glGenQueries GLEW_GET_FUN(__glewGenQueries) +#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) +#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) +#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) +#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) +#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) +#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) +#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) +#define glIsQuery GLEW_GET_FUN(__glewIsQuery) +#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) +#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) + +#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) + +#endif /* GL_VERSION_1_5 */ + +/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLuint obj, GLsizei maxLength, GLsizei* length, GLchar* source); +typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const* string, const GLint* length); +typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); + +#define glAttachShader GLEW_GET_FUN(__glewAttachShader) +#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) +#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) +#define glCompileShader GLEW_GET_FUN(__glewCompileShader) +#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) +#define glCreateShader GLEW_GET_FUN(__glewCreateShader) +#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) +#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) +#define glDetachShader GLEW_GET_FUN(__glewDetachShader) +#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) +#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) +#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) +#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) +#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) +#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) +#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) +#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) +#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) +#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) +#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) +#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) +#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) +#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) +#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) +#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) +#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) +#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) +#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) +#define glIsProgram GLEW_GET_FUN(__glewIsProgram) +#define glIsShader GLEW_GET_FUN(__glewIsShader) +#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) +#define glShaderSource GLEW_GET_FUN(__glewShaderSource) +#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) +#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) +#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) +#define glUniform1f GLEW_GET_FUN(__glewUniform1f) +#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) +#define glUniform1i GLEW_GET_FUN(__glewUniform1i) +#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) +#define glUniform2f GLEW_GET_FUN(__glewUniform2f) +#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) +#define glUniform2i GLEW_GET_FUN(__glewUniform2i) +#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) +#define glUniform3f GLEW_GET_FUN(__glewUniform3f) +#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) +#define glUniform3i GLEW_GET_FUN(__glewUniform3i) +#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) +#define glUniform4f GLEW_GET_FUN(__glewUniform4f) +#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) +#define glUniform4i GLEW_GET_FUN(__glewUniform4i) +#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) +#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) +#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) +#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) +#define glUseProgram GLEW_GET_FUN(__glewUseProgram) +#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) +#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) +#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) +#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) +#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) +#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) +#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) +#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) +#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) +#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) +#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) +#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) +#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) +#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) +#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) +#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) +#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) +#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) +#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) +#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) +#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) +#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) +#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) +#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) +#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) +#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) +#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) +#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) +#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) +#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) +#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) +#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) +#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) +#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) +#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) +#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) +#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) +#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) + +#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) + +#endif /* GL_VERSION_2_0 */ + +/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 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 + +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + +#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) +#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) +#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) +#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) +#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) +#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) + +#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) + +#endif /* GL_VERSION_2_1 */ + +/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 + +#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 +#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 +#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 +#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 +#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 +#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 +#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB +#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES +#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#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_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#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_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#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_ALPHA_INTEGER 0x8D97 +#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 + +typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint colorNumber, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawBuffer, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawBuffer, const GLint* value); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawBuffer, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum cap, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum cap, GLuint index); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum pname, GLuint index, GLboolean* data); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar* name); +typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum cap, GLuint index); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort* v0); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void*pointer); + +#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) +#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) +#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) +#define glClampColor GLEW_GET_FUN(__glewClampColor) +#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) +#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) +#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) +#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) +#define glColorMaski GLEW_GET_FUN(__glewColorMaski) +#define glDisablei GLEW_GET_FUN(__glewDisablei) +#define glEnablei GLEW_GET_FUN(__glewEnablei) +#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) +#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) +#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) +#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) +#define glGetStringi GLEW_GET_FUN(__glewGetStringi) +#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) +#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) +#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) +#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) +#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) +#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) +#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) +#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) +#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) +#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) +#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) +#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) +#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) +#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) +#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) +#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) +#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) +#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) +#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) +#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) +#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) +#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) +#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) +#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) +#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) +#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) +#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) +#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) +#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) +#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) +#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) +#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) +#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) +#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) +#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) +#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) +#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) +#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) +#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) + +#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) + +#endif /* GL_VERSION_3_0 */ + +/* ----------------------------- GL_VERSION_3_1 ---------------------------- */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 + +#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_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#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_BUFFER_FORMAT 0x8C2E +#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_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalFormat, GLuint buffer); + +#define glDrawArraysInstanced GLEW_GET_FUN(__glewDrawArraysInstanced) +#define glDrawElementsInstanced GLEW_GET_FUN(__glewDrawElementsInstanced) +#define glPrimitiveRestartIndex GLEW_GET_FUN(__glewPrimitiveRestartIndex) +#define glTexBuffer GLEW_GET_FUN(__glewTexBuffer) + +#define GLEW_VERSION_3_1 GLEW_GET_VAR(__GLEW_VERSION_3_1) + +#endif /* GL_VERSION_3_1 */ + +/* ----------------------------- GL_VERSION_3_2 ---------------------------- */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 + +#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_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#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_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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum value, GLint64 * data); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum pname, GLuint index, GLint64 * data); + +#define glFramebufferTexture GLEW_GET_FUN(__glewFramebufferTexture) +#define glGetBufferParameteri64v GLEW_GET_FUN(__glewGetBufferParameteri64v) +#define glGetInteger64i_v GLEW_GET_FUN(__glewGetInteger64i_v) + +#define GLEW_VERSION_3_2 GLEW_GET_VAR(__GLEW_VERSION_3_2) + +#endif /* GL_VERSION_3_2 */ + +/* ----------------------------- GL_VERSION_3_3 ---------------------------- */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_RGB10_A2UI 0x906F + +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); + +#define glVertexAttribDivisor GLEW_GET_FUN(__glewVertexAttribDivisor) + +#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3) + +#endif /* GL_VERSION_3_3 */ + +/* ----------------------------- GL_VERSION_4_0 ---------------------------- */ + +#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_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F +#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 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value); + +#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei) +#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi) +#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei) +#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci) +#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading) + +#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0) + +#endif /* GL_VERSION_4_0 */ + +/* ----------------------------- GL_VERSION_4_1 ---------------------------- */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 + +#define GLEW_VERSION_4_1 GLEW_GET_VAR(__GLEW_VERSION_4_1) + +#endif /* GL_VERSION_4_1 */ + +/* ----------------------------- GL_VERSION_4_2 ---------------------------- */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 + +#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_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 + +#define GLEW_VERSION_4_2 GLEW_GET_VAR(__GLEW_VERSION_4_2) + +#endif /* GL_VERSION_4_2 */ + +/* ----------------------------- GL_VERSION_4_3 ---------------------------- */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 + +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E + +#define GLEW_VERSION_4_3 GLEW_GET_VAR(__GLEW_VERSION_4_3) + +#endif /* GL_VERSION_4_3 */ + +/* ----------------------------- GL_VERSION_4_4 ---------------------------- */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 + +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A + +#define GLEW_VERSION_4_4 GLEW_GET_VAR(__GLEW_VERSION_4_4) + +#endif /* GL_VERSION_4_4 */ + +/* ----------------------------- GL_VERSION_4_5 ---------------------------- */ + +#ifndef GL_VERSION_4_5 +#define GL_VERSION_4_5 1 + +typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSPROC) (void); + +#define glGetGraphicsResetStatus GLEW_GET_FUN(__glewGetGraphicsResetStatus) + +#define GLEW_VERSION_4_5 GLEW_GET_VAR(__GLEW_VERSION_4_5) + +#endif /* GL_VERSION_4_5 */ + +/* -------------------------- GL_3DFX_multisample -------------------------- */ + +#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 + +#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) + +#endif /* GL_3DFX_multisample */ + +/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 + +typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); + +#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) + +#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) + +#endif /* GL_3DFX_tbuffer */ + +/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ + +#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 + +#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) + +#endif /* GL_3DFX_texture_compression_FXT1 */ + +/* ----------------------- GL_AMD_blend_minmax_factor ---------------------- */ + +#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 + +#define GLEW_AMD_blend_minmax_factor GLEW_GET_VAR(__GLEW_AMD_blend_minmax_factor) + +#endif /* GL_AMD_blend_minmax_factor */ + +/* ----------------------- GL_AMD_conservative_depth ----------------------- */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 + +#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth) + +#endif /* GL_AMD_conservative_depth */ + +/* -------------------------- GL_AMD_debug_output -------------------------- */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 + +#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 (GLAPIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum* categories, GLuint* severities, GLuint* ids, GLsizei* lengths, GLchar* message); + +#define glDebugMessageCallbackAMD GLEW_GET_FUN(__glewDebugMessageCallbackAMD) +#define glDebugMessageEnableAMD GLEW_GET_FUN(__glewDebugMessageEnableAMD) +#define glDebugMessageInsertAMD GLEW_GET_FUN(__glewDebugMessageInsertAMD) +#define glGetDebugMessageLogAMD GLEW_GET_FUN(__glewGetDebugMessageLogAMD) + +#define GLEW_AMD_debug_output GLEW_GET_VAR(__GLEW_AMD_debug_output) + +#endif /* GL_AMD_debug_output */ + +/* ---------------------- GL_AMD_depth_clamp_separate ---------------------- */ + +#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 + +#define GLEW_AMD_depth_clamp_separate GLEW_GET_VAR(__GLEW_AMD_depth_clamp_separate) + +#endif /* GL_AMD_depth_clamp_separate */ + +/* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + +#define glBlendEquationIndexedAMD GLEW_GET_FUN(__glewBlendEquationIndexedAMD) +#define glBlendEquationSeparateIndexedAMD GLEW_GET_FUN(__glewBlendEquationSeparateIndexedAMD) +#define glBlendFuncIndexedAMD GLEW_GET_FUN(__glewBlendFuncIndexedAMD) +#define glBlendFuncSeparateIndexedAMD GLEW_GET_FUN(__glewBlendFuncSeparateIndexedAMD) + +#define GLEW_AMD_draw_buffers_blend GLEW_GET_VAR(__GLEW_AMD_draw_buffers_blend) + +#endif /* GL_AMD_draw_buffers_blend */ + +/* --------------------------- GL_AMD_gcn_shader --------------------------- */ + +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 + +#define GLEW_AMD_gcn_shader GLEW_GET_VAR(__GLEW_AMD_gcn_shader) + +#endif /* GL_AMD_gcn_shader */ + +/* ------------------------ GL_AMD_gpu_shader_int64 ------------------------ */ + +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 + +#define GLEW_AMD_gpu_shader_int64 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int64) + +#endif /* GL_AMD_gpu_shader_int64 */ + +/* ---------------------- GL_AMD_interleaved_elements ---------------------- */ + +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 + +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RG8UI 0x8238 +#define GL_RG16UI 0x823A +#define GL_RGBA8UI 0x8D7C +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 + +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param); + +#define glVertexAttribParameteriAMD GLEW_GET_FUN(__glewVertexAttribParameteriAMD) + +#define GLEW_AMD_interleaved_elements GLEW_GET_VAR(__GLEW_AMD_interleaved_elements) + +#endif /* GL_AMD_interleaved_elements */ + +/* ----------------------- GL_AMD_multi_draw_indirect ---------------------- */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); + +#define glMultiDrawArraysIndirectAMD GLEW_GET_FUN(__glewMultiDrawArraysIndirectAMD) +#define glMultiDrawElementsIndirectAMD GLEW_GET_FUN(__glewMultiDrawElementsIndirectAMD) + +#define GLEW_AMD_multi_draw_indirect GLEW_GET_VAR(__GLEW_AMD_multi_draw_indirect) + +#endif /* GL_AMD_multi_draw_indirect */ + +/* ------------------------- GL_AMD_name_gen_delete ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint* names); +typedef void (GLAPIENTRY * PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint* names); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); + +#define glDeleteNamesAMD GLEW_GET_FUN(__glewDeleteNamesAMD) +#define glGenNamesAMD GLEW_GET_FUN(__glewGenNamesAMD) +#define glIsNameAMD GLEW_GET_FUN(__glewIsNameAMD) + +#define GLEW_AMD_name_gen_delete GLEW_GET_VAR(__GLEW_AMD_name_gen_delete) + +#endif /* GL_AMD_name_gen_delete */ + +/* ---------------------- GL_AMD_occlusion_query_event --------------------- */ + +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 + +#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_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param); + +#define glQueryObjectParameteruiAMD GLEW_GET_FUN(__glewQueryObjectParameteruiAMD) + +#define GLEW_AMD_occlusion_query_event GLEW_GET_VAR(__GLEW_AMD_occlusion_query_event) + +#endif /* GL_AMD_occlusion_query_event */ + +/* ----------------------- GL_AMD_performance_monitor ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GLAPIENTRY * PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint* monitors); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint *bytesWritten); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar *counterString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint* numCounters, GLint *maxActiveCounters, GLsizei countersSize, GLuint *counters); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei* length, GLchar *groupString); +typedef void (GLAPIENTRY * PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint* numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* counterList); + +#define glBeginPerfMonitorAMD GLEW_GET_FUN(__glewBeginPerfMonitorAMD) +#define glDeletePerfMonitorsAMD GLEW_GET_FUN(__glewDeletePerfMonitorsAMD) +#define glEndPerfMonitorAMD GLEW_GET_FUN(__glewEndPerfMonitorAMD) +#define glGenPerfMonitorsAMD GLEW_GET_FUN(__glewGenPerfMonitorsAMD) +#define glGetPerfMonitorCounterDataAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterDataAMD) +#define glGetPerfMonitorCounterInfoAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterInfoAMD) +#define glGetPerfMonitorCounterStringAMD GLEW_GET_FUN(__glewGetPerfMonitorCounterStringAMD) +#define glGetPerfMonitorCountersAMD GLEW_GET_FUN(__glewGetPerfMonitorCountersAMD) +#define glGetPerfMonitorGroupStringAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupStringAMD) +#define glGetPerfMonitorGroupsAMD GLEW_GET_FUN(__glewGetPerfMonitorGroupsAMD) +#define glSelectPerfMonitorCountersAMD GLEW_GET_FUN(__glewSelectPerfMonitorCountersAMD) + +#define GLEW_AMD_performance_monitor GLEW_GET_VAR(__GLEW_AMD_performance_monitor) + +#endif /* GL_AMD_performance_monitor */ + +/* -------------------------- GL_AMD_pinned_memory ------------------------- */ + +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 + +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 + +#define GLEW_AMD_pinned_memory GLEW_GET_VAR(__GLEW_AMD_pinned_memory) + +#endif /* GL_AMD_pinned_memory */ + +/* ----------------------- GL_AMD_query_buffer_object ---------------------- */ + +#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 + +#define GLEW_AMD_query_buffer_object GLEW_GET_VAR(__GLEW_AMD_query_buffer_object) + +#endif /* GL_AMD_query_buffer_object */ + +/* ------------------------ GL_AMD_sample_positions ------------------------ */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 + +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F + +typedef void (GLAPIENTRY * PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat* val); + +#define glSetMultisamplefvAMD GLEW_GET_FUN(__glewSetMultisamplefvAMD) + +#define GLEW_AMD_sample_positions GLEW_GET_VAR(__GLEW_AMD_sample_positions) + +#endif /* GL_AMD_sample_positions */ + +/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F + +#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture) + +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +/* -------------------- GL_AMD_shader_atomic_counter_ops ------------------- */ + +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 + +#define GLEW_AMD_shader_atomic_counter_ops GLEW_GET_VAR(__GLEW_AMD_shader_atomic_counter_ops) + +#endif /* GL_AMD_shader_atomic_counter_ops */ + +/* ---------------------- GL_AMD_shader_stencil_export --------------------- */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 + +#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export) + +#endif /* GL_AMD_shader_stencil_export */ + +/* ------------------- GL_AMD_shader_stencil_value_export ------------------ */ + +#ifndef GL_AMD_shader_stencil_value_export +#define GL_AMD_shader_stencil_value_export 1 + +#define GLEW_AMD_shader_stencil_value_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_value_export) + +#endif /* GL_AMD_shader_stencil_value_export */ + +/* ---------------------- GL_AMD_shader_trinary_minmax --------------------- */ + +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 + +#define GLEW_AMD_shader_trinary_minmax GLEW_GET_VAR(__GLEW_AMD_shader_trinary_minmax) + +#endif /* GL_AMD_shader_trinary_minmax */ + +/* ------------------------- GL_AMD_sparse_texture ------------------------- */ + +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 + +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#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 + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); + +#define glTexStorageSparseAMD GLEW_GET_FUN(__glewTexStorageSparseAMD) +#define glTextureStorageSparseAMD GLEW_GET_FUN(__glewTextureStorageSparseAMD) + +#define GLEW_AMD_sparse_texture GLEW_GET_VAR(__GLEW_AMD_sparse_texture) + +#endif /* GL_AMD_sparse_texture */ + +/* ------------------- GL_AMD_stencil_operation_extended ------------------- */ + +#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 (GLAPIENTRY * PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); + +#define glStencilOpValueAMD GLEW_GET_FUN(__glewStencilOpValueAMD) + +#define GLEW_AMD_stencil_operation_extended GLEW_GET_VAR(__GLEW_AMD_stencil_operation_extended) + +#endif /* GL_AMD_stencil_operation_extended */ + +/* ------------------------ GL_AMD_texture_texture4 ------------------------ */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 + +#define GLEW_AMD_texture_texture4 GLEW_GET_VAR(__GLEW_AMD_texture_texture4) + +#endif /* GL_AMD_texture_texture4 */ + +/* --------------- GL_AMD_transform_feedback3_lines_triangles -------------- */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 + +#define GLEW_AMD_transform_feedback3_lines_triangles GLEW_GET_VAR(__GLEW_AMD_transform_feedback3_lines_triangles) + +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +/* ----------------------- GL_AMD_transform_feedback4 ---------------------- */ + +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 + +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 + +#define GLEW_AMD_transform_feedback4 GLEW_GET_VAR(__GLEW_AMD_transform_feedback4) + +#endif /* GL_AMD_transform_feedback4 */ + +/* ----------------------- GL_AMD_vertex_shader_layer ---------------------- */ + +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 + +#define GLEW_AMD_vertex_shader_layer GLEW_GET_VAR(__GLEW_AMD_vertex_shader_layer) + +#endif /* GL_AMD_vertex_shader_layer */ + +/* -------------------- GL_AMD_vertex_shader_tessellator ------------------- */ + +#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 (GLAPIENTRY * PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); + +#define glTessellationFactorAMD GLEW_GET_FUN(__glewTessellationFactorAMD) +#define glTessellationModeAMD GLEW_GET_FUN(__glewTessellationModeAMD) + +#define GLEW_AMD_vertex_shader_tessellator GLEW_GET_VAR(__GLEW_AMD_vertex_shader_tessellator) + +#endif /* GL_AMD_vertex_shader_tessellator */ + +/* ------------------ GL_AMD_vertex_shader_viewport_index ------------------ */ + +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 + +#define GLEW_AMD_vertex_shader_viewport_index GLEW_GET_VAR(__GLEW_AMD_vertex_shader_viewport_index) + +#endif /* GL_AMD_vertex_shader_viewport_index */ + +/* ------------------------- GL_ANGLE_depth_texture ------------------------ */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 + +#define GLEW_ANGLE_depth_texture GLEW_GET_VAR(__GLEW_ANGLE_depth_texture) + +#endif /* GL_ANGLE_depth_texture */ + +/* ----------------------- GL_ANGLE_framebuffer_blit ----------------------- */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 + +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA + +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +#define glBlitFramebufferANGLE GLEW_GET_FUN(__glewBlitFramebufferANGLE) + +#define GLEW_ANGLE_framebuffer_blit GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_blit) + +#endif /* GL_ANGLE_framebuffer_blit */ + +/* -------------------- GL_ANGLE_framebuffer_multisample ------------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleANGLE GLEW_GET_FUN(__glewRenderbufferStorageMultisampleANGLE) + +#define GLEW_ANGLE_framebuffer_multisample GLEW_GET_VAR(__GLEW_ANGLE_framebuffer_multisample) + +#endif /* GL_ANGLE_framebuffer_multisample */ + +/* ----------------------- GL_ANGLE_instanced_arrays ----------------------- */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); + +#define glDrawArraysInstancedANGLE GLEW_GET_FUN(__glewDrawArraysInstancedANGLE) +#define glDrawElementsInstancedANGLE GLEW_GET_FUN(__glewDrawElementsInstancedANGLE) +#define glVertexAttribDivisorANGLE GLEW_GET_FUN(__glewVertexAttribDivisorANGLE) + +#define GLEW_ANGLE_instanced_arrays GLEW_GET_VAR(__GLEW_ANGLE_instanced_arrays) + +#endif /* GL_ANGLE_instanced_arrays */ + +/* -------------------- GL_ANGLE_pack_reverse_row_order -------------------- */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 + +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 + +#define GLEW_ANGLE_pack_reverse_row_order GLEW_GET_VAR(__GLEW_ANGLE_pack_reverse_row_order) + +#endif /* GL_ANGLE_pack_reverse_row_order */ + +/* ------------------------ GL_ANGLE_program_binary ------------------------ */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 + +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 + +#define GLEW_ANGLE_program_binary GLEW_GET_VAR(__GLEW_ANGLE_program_binary) + +#endif /* GL_ANGLE_program_binary */ + +/* ------------------- GL_ANGLE_texture_compression_dxt1 ------------------- */ + +#ifndef GL_ANGLE_texture_compression_dxt1 +#define GL_ANGLE_texture_compression_dxt1 1 + +#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 + +#define GLEW_ANGLE_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt1) + +#endif /* GL_ANGLE_texture_compression_dxt1 */ + +/* ------------------- GL_ANGLE_texture_compression_dxt3 ------------------- */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 + +#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 + +#define GLEW_ANGLE_texture_compression_dxt3 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt3) + +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +/* ------------------- GL_ANGLE_texture_compression_dxt5 ------------------- */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 + +#define GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 + +#define GLEW_ANGLE_texture_compression_dxt5 GLEW_GET_VAR(__GLEW_ANGLE_texture_compression_dxt5) + +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +/* ------------------------- GL_ANGLE_texture_usage ------------------------ */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 + +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 + +#define GLEW_ANGLE_texture_usage GLEW_GET_VAR(__GLEW_ANGLE_texture_usage) + +#endif /* GL_ANGLE_texture_usage */ + +/* -------------------------- GL_ANGLE_timer_query ------------------------- */ + +#ifndef GL_ANGLE_timer_query +#define GL_ANGLE_timer_query 1 + +#define GL_QUERY_COUNTER_BITS_ANGLE 0x8864 +#define GL_CURRENT_QUERY_ANGLE 0x8865 +#define GL_QUERY_RESULT_ANGLE 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ANGLE 0x8867 +#define GL_TIME_ELAPSED_ANGLE 0x88BF +#define GL_TIMESTAMP_ANGLE 0x8E28 + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYANGLEPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESANGLEPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYANGLEPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENQUERIESANGLEPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VANGLEPROC) (GLuint id, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVANGLEPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VANGLEPROC) (GLuint id, GLenum pname, GLuint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVANGLEPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVANGLEPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYANGLEPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERANGLEPROC) (GLuint id, GLenum target); + +#define glBeginQueryANGLE GLEW_GET_FUN(__glewBeginQueryANGLE) +#define glDeleteQueriesANGLE GLEW_GET_FUN(__glewDeleteQueriesANGLE) +#define glEndQueryANGLE GLEW_GET_FUN(__glewEndQueryANGLE) +#define glGenQueriesANGLE GLEW_GET_FUN(__glewGenQueriesANGLE) +#define glGetQueryObjecti64vANGLE GLEW_GET_FUN(__glewGetQueryObjecti64vANGLE) +#define glGetQueryObjectivANGLE GLEW_GET_FUN(__glewGetQueryObjectivANGLE) +#define glGetQueryObjectui64vANGLE GLEW_GET_FUN(__glewGetQueryObjectui64vANGLE) +#define glGetQueryObjectuivANGLE GLEW_GET_FUN(__glewGetQueryObjectuivANGLE) +#define glGetQueryivANGLE GLEW_GET_FUN(__glewGetQueryivANGLE) +#define glIsQueryANGLE GLEW_GET_FUN(__glewIsQueryANGLE) +#define glQueryCounterANGLE GLEW_GET_FUN(__glewQueryCounterANGLE) + +#define GLEW_ANGLE_timer_query GLEW_GET_VAR(__GLEW_ANGLE_timer_query) + +#endif /* GL_ANGLE_timer_query */ + +/* ------------------- GL_ANGLE_translated_shader_source ------------------- */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 + +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 + +typedef void (GLAPIENTRY * PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); + +#define glGetTranslatedShaderSourceANGLE GLEW_GET_FUN(__glewGetTranslatedShaderSourceANGLE) + +#define GLEW_ANGLE_translated_shader_source GLEW_GET_VAR(__GLEW_ANGLE_translated_shader_source) + +#endif /* GL_ANGLE_translated_shader_source */ + +/* ----------------------- GL_APPLE_aux_depth_stencil ---------------------- */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 + +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 + +#define GLEW_APPLE_aux_depth_stencil GLEW_GET_VAR(__GLEW_APPLE_aux_depth_stencil) + +#endif /* GL_APPLE_aux_depth_stencil */ + +/* ------------------------ GL_APPLE_client_storage ------------------------ */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 + +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 + +#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) + +#endif /* GL_APPLE_client_storage */ + +/* ------------------------- GL_APPLE_element_array ------------------------ */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); + +#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) +#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) +#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) +#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) +#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) + +#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) + +#endif /* GL_APPLE_element_array */ + +/* ----------------------------- GL_APPLE_fence ---------------------------- */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 + +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B + +typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); + +#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) +#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) +#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) +#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) +#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) +#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) +#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) +#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) + +#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) + +#endif /* GL_APPLE_fence */ + +/* ------------------------- GL_APPLE_float_pixels ------------------------- */ + +#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 + +#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) + +#endif /* GL_APPLE_float_pixels */ + +/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); + +#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) +#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) + +#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) + +#endif /* GL_APPLE_flush_buffer_range */ + +/* ----------------------- GL_APPLE_object_purgeable ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (GLAPIENTRY * PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); + +#define glGetObjectParameterivAPPLE GLEW_GET_FUN(__glewGetObjectParameterivAPPLE) +#define glObjectPurgeableAPPLE GLEW_GET_FUN(__glewObjectPurgeableAPPLE) +#define glObjectUnpurgeableAPPLE GLEW_GET_FUN(__glewObjectUnpurgeableAPPLE) + +#define GLEW_APPLE_object_purgeable GLEW_GET_VAR(__GLEW_APPLE_object_purgeable) + +#endif /* GL_APPLE_object_purgeable */ + +/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ + +#ifndef GL_APPLE_pixel_buffer +#define GL_APPLE_pixel_buffer 1 + +#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 + +#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) + +#endif /* GL_APPLE_pixel_buffer */ + +/* ---------------------------- GL_APPLE_rgb_422 --------------------------- */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 + +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_422_APPLE 0x8A1F +#define GL_RGB_RAW_422_APPLE 0x8A51 + +#define GLEW_APPLE_rgb_422 GLEW_GET_VAR(__GLEW_APPLE_rgb_422) + +#endif /* GL_APPLE_rgb_422 */ + +/* --------------------------- GL_APPLE_row_bytes -------------------------- */ + +#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 + +#define GLEW_APPLE_row_bytes GLEW_GET_VAR(__GLEW_APPLE_row_bytes) + +#endif /* GL_APPLE_row_bytes */ + +/* ------------------------ GL_APPLE_specular_vector ----------------------- */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 + +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 + +#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) + +#endif /* GL_APPLE_specular_vector */ + +/* ------------------------- GL_APPLE_texture_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params); +typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, void *pointer); + +#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) +#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) + +#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) + +#endif /* GL_APPLE_texture_range */ + +/* ------------------------ GL_APPLE_transform_hint ------------------------ */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 + +#define GL_TRANSFORM_HINT_APPLE 0x85B1 + +#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) + +#endif /* GL_APPLE_transform_hint */ + +/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); + +#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) +#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) +#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) +#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) + +#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) + +#endif /* GL_APPLE_vertex_array_object */ + +/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ + +#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_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF + +typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); + +#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) +#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) +#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) + +#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) + +#endif /* GL_APPLE_vertex_array_range */ + +/* ------------------- GL_APPLE_vertex_program_evaluators ------------------ */ + +#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 (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); +typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points); + +#define glDisableVertexAttribAPPLE GLEW_GET_FUN(__glewDisableVertexAttribAPPLE) +#define glEnableVertexAttribAPPLE GLEW_GET_FUN(__glewEnableVertexAttribAPPLE) +#define glIsVertexAttribEnabledAPPLE GLEW_GET_FUN(__glewIsVertexAttribEnabledAPPLE) +#define glMapVertexAttrib1dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1dAPPLE) +#define glMapVertexAttrib1fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib1fAPPLE) +#define glMapVertexAttrib2dAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2dAPPLE) +#define glMapVertexAttrib2fAPPLE GLEW_GET_FUN(__glewMapVertexAttrib2fAPPLE) + +#define GLEW_APPLE_vertex_program_evaluators GLEW_GET_VAR(__GLEW_APPLE_vertex_program_evaluators) + +#endif /* GL_APPLE_vertex_program_evaluators */ + +/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 + +#define GL_YCBCR_422_APPLE 0x85B9 + +#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) + +#endif /* GL_APPLE_ycbcr_422 */ + +/* ------------------------ GL_ARB_ES2_compatibility ----------------------- */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 + +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_RGB565 0x8D62 +#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_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD + +typedef int GLfixed; + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf d); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint *precision); +typedef void (GLAPIENTRY * PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GLAPIENTRY * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint* shaders, GLenum binaryformat, const void*binary, GLsizei length); + +#define glClearDepthf GLEW_GET_FUN(__glewClearDepthf) +#define glDepthRangef GLEW_GET_FUN(__glewDepthRangef) +#define glGetShaderPrecisionFormat GLEW_GET_FUN(__glewGetShaderPrecisionFormat) +#define glReleaseShaderCompiler GLEW_GET_FUN(__glewReleaseShaderCompiler) +#define glShaderBinary GLEW_GET_FUN(__glewShaderBinary) + +#define GLEW_ARB_ES2_compatibility GLEW_GET_VAR(__GLEW_ARB_ES2_compatibility) + +#endif /* GL_ARB_ES2_compatibility */ + +/* ----------------------- GL_ARB_ES3_1_compatibility ---------------------- */ + +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 + +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers); + +#define glMemoryBarrierByRegion GLEW_GET_FUN(__glewMemoryBarrierByRegion) + +#define GLEW_ARB_ES3_1_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_1_compatibility) + +#endif /* GL_ARB_ES3_1_compatibility */ + +/* ------------------------ GL_ARB_ES3_compatibility ----------------------- */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 + +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#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_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 GLEW_ARB_ES3_compatibility GLEW_GET_VAR(__GLEW_ARB_ES3_compatibility) + +#endif /* GL_ARB_ES3_compatibility */ + +/* ------------------------ GL_ARB_arrays_of_arrays ------------------------ */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 + +#define GLEW_ARB_arrays_of_arrays GLEW_GET_VAR(__GLEW_ARB_arrays_of_arrays) + +#endif /* GL_ARB_arrays_of_arrays */ + +/* -------------------------- GL_ARB_base_instance ------------------------- */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); + +#define glDrawArraysInstancedBaseInstance GLEW_GET_FUN(__glewDrawArraysInstancedBaseInstance) +#define glDrawElementsInstancedBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseInstance) +#define glDrawElementsInstancedBaseVertexBaseInstance GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertexBaseInstance) + +#define GLEW_ARB_base_instance GLEW_GET_VAR(__GLEW_ARB_base_instance) + +#endif /* GL_ARB_base_instance */ + +/* ------------------------ GL_ARB_bindless_texture ------------------------ */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 + +#define GL_UNSIGNED_INT64_ARB 0x140F + +typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT* params); +typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT* v); + +#define glGetImageHandleARB GLEW_GET_FUN(__glewGetImageHandleARB) +#define glGetTextureHandleARB GLEW_GET_FUN(__glewGetTextureHandleARB) +#define glGetTextureSamplerHandleARB GLEW_GET_FUN(__glewGetTextureSamplerHandleARB) +#define glGetVertexAttribLui64vARB GLEW_GET_FUN(__glewGetVertexAttribLui64vARB) +#define glIsImageHandleResidentARB GLEW_GET_FUN(__glewIsImageHandleResidentARB) +#define glIsTextureHandleResidentARB GLEW_GET_FUN(__glewIsTextureHandleResidentARB) +#define glMakeImageHandleNonResidentARB GLEW_GET_FUN(__glewMakeImageHandleNonResidentARB) +#define glMakeImageHandleResidentARB GLEW_GET_FUN(__glewMakeImageHandleResidentARB) +#define glMakeTextureHandleNonResidentARB GLEW_GET_FUN(__glewMakeTextureHandleNonResidentARB) +#define glMakeTextureHandleResidentARB GLEW_GET_FUN(__glewMakeTextureHandleResidentARB) +#define glProgramUniformHandleui64ARB GLEW_GET_FUN(__glewProgramUniformHandleui64ARB) +#define glProgramUniformHandleui64vARB GLEW_GET_FUN(__glewProgramUniformHandleui64vARB) +#define glUniformHandleui64ARB GLEW_GET_FUN(__glewUniformHandleui64ARB) +#define glUniformHandleui64vARB GLEW_GET_FUN(__glewUniformHandleui64vARB) +#define glVertexAttribL1ui64ARB GLEW_GET_FUN(__glewVertexAttribL1ui64ARB) +#define glVertexAttribL1ui64vARB GLEW_GET_FUN(__glewVertexAttribL1ui64vARB) + +#define GLEW_ARB_bindless_texture GLEW_GET_VAR(__GLEW_ARB_bindless_texture) + +#endif /* GL_ARB_bindless_texture */ + +/* ----------------------- GL_ARB_blend_func_extended ---------------------- */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar * name); + +#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed) +#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex) + +#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended) + +#endif /* GL_ARB_blend_func_extended */ + +/* ------------------------- GL_ARB_buffer_storage ------------------------- */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 + +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT 0x00000040 +#define GL_MAP_COHERENT_BIT 0x00000080 +#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 + +typedef void (GLAPIENTRY * PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); + +#define glBufferStorage GLEW_GET_FUN(__glewBufferStorage) +#define glNamedBufferStorageEXT GLEW_GET_FUN(__glewNamedBufferStorageEXT) + +#define GLEW_ARB_buffer_storage GLEW_GET_VAR(__GLEW_ARB_buffer_storage) + +#endif /* GL_ARB_buffer_storage */ + +/* ---------------------------- GL_ARB_cl_event ---------------------------- */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 + +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 + +typedef struct _cl_context *cl_context; +typedef struct _cl_event *cl_event; + +typedef GLsync (GLAPIENTRY * PFNGLCREATESYNCFROMCLEVENTARBPROC) (cl_context context, cl_event event, GLbitfield flags); + +#define glCreateSyncFromCLeventARB GLEW_GET_FUN(__glewCreateSyncFromCLeventARB) + +#define GLEW_ARB_cl_event GLEW_GET_VAR(__GLEW_ARB_cl_event) + +#endif /* GL_ARB_cl_event */ + +/* ----------------------- GL_ARB_clear_buffer_object ---------------------- */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 + +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + +#define glClearBufferData GLEW_GET_FUN(__glewClearBufferData) +#define glClearBufferSubData GLEW_GET_FUN(__glewClearBufferSubData) +#define glClearNamedBufferDataEXT GLEW_GET_FUN(__glewClearNamedBufferDataEXT) +#define glClearNamedBufferSubDataEXT GLEW_GET_FUN(__glewClearNamedBufferSubDataEXT) + +#define GLEW_ARB_clear_buffer_object GLEW_GET_VAR(__GLEW_ARB_clear_buffer_object) + +#endif /* GL_ARB_clear_buffer_object */ + +/* -------------------------- GL_ARB_clear_texture ------------------------- */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 + +#define GL_CLEAR_TEXTURE 0x9365 + +typedef void (GLAPIENTRY * PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + +#define glClearTexImage GLEW_GET_FUN(__glewClearTexImage) +#define glClearTexSubImage GLEW_GET_FUN(__glewClearTexSubImage) + +#define GLEW_ARB_clear_texture GLEW_GET_VAR(__GLEW_ARB_clear_texture) + +#endif /* GL_ARB_clear_texture */ + +/* -------------------------- GL_ARB_clip_control -------------------------- */ + +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 + +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F + +typedef void (GLAPIENTRY * PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth); + +#define glClipControl GLEW_GET_FUN(__glewClipControl) + +#define GLEW_ARB_clip_control GLEW_GET_VAR(__GLEW_ARB_clip_control) + +#endif /* GL_ARB_clip_control */ + +/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); + +#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) + +#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) + +#endif /* GL_ARB_color_buffer_float */ + +/* -------------------------- GL_ARB_compatibility ------------------------- */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 + +#define GLEW_ARB_compatibility GLEW_GET_VAR(__GLEW_ARB_compatibility) + +#endif /* GL_ARB_compatibility */ + +/* ---------------- GL_ARB_compressed_texture_pixel_storage ---------------- */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 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 GLEW_ARB_compressed_texture_pixel_storage GLEW_GET_VAR(__GLEW_ARB_compressed_texture_pixel_storage) + +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +/* ------------------------- GL_ARB_compute_shader ------------------------- */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 + +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#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_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#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 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_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF + +typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (GLAPIENTRY * PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); + +#define glDispatchCompute GLEW_GET_FUN(__glewDispatchCompute) +#define glDispatchComputeIndirect GLEW_GET_FUN(__glewDispatchComputeIndirect) + +#define GLEW_ARB_compute_shader GLEW_GET_VAR(__GLEW_ARB_compute_shader) + +#endif /* GL_ARB_compute_shader */ + +/* ------------------- GL_ARB_compute_variable_group_size ------------------ */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 + +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 + +typedef void (GLAPIENTRY * 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); + +#define glDispatchComputeGroupSizeARB GLEW_GET_FUN(__glewDispatchComputeGroupSizeARB) + +#define GLEW_ARB_compute_variable_group_size GLEW_GET_VAR(__GLEW_ARB_compute_variable_group_size) + +#endif /* GL_ARB_compute_variable_group_size */ + +/* ------------------- GL_ARB_conditional_render_inverted ------------------ */ + +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 + +#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 GLEW_ARB_conditional_render_inverted GLEW_GET_VAR(__GLEW_ARB_conditional_render_inverted) + +#endif /* GL_ARB_conditional_render_inverted */ + +/* ----------------------- GL_ARB_conservative_depth ----------------------- */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 + +#define GLEW_ARB_conservative_depth GLEW_GET_VAR(__GLEW_ARB_conservative_depth) + +#endif /* GL_ARB_conservative_depth */ + +/* --------------------------- GL_ARB_copy_buffer -------------------------- */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 + +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 + +typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); + +#define glCopyBufferSubData GLEW_GET_FUN(__glewCopyBufferSubData) + +#define GLEW_ARB_copy_buffer GLEW_GET_VAR(__GLEW_ARB_copy_buffer) + +#endif /* GL_ARB_copy_buffer */ + +/* --------------------------- GL_ARB_copy_image --------------------------- */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 + +typedef void (GLAPIENTRY * 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); + +#define glCopyImageSubData GLEW_GET_FUN(__glewCopyImageSubData) + +#define GLEW_ARB_copy_image GLEW_GET_VAR(__GLEW_ARB_copy_image) + +#endif /* GL_ARB_copy_image */ + +/* -------------------------- GL_ARB_cull_distance ------------------------- */ + +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 + +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA + +#define GLEW_ARB_cull_distance GLEW_GET_VAR(__GLEW_ARB_cull_distance) + +#endif /* GL_ARB_cull_distance */ + +/* -------------------------- GL_ARB_debug_output -------------------------- */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 + +#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 (GLAPIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog); + +#define glDebugMessageCallbackARB GLEW_GET_FUN(__glewDebugMessageCallbackARB) +#define glDebugMessageControlARB GLEW_GET_FUN(__glewDebugMessageControlARB) +#define glDebugMessageInsertARB GLEW_GET_FUN(__glewDebugMessageInsertARB) +#define glGetDebugMessageLogARB GLEW_GET_FUN(__glewGetDebugMessageLogARB) + +#define GLEW_ARB_debug_output GLEW_GET_VAR(__GLEW_ARB_debug_output) + +#endif /* GL_ARB_debug_output */ + +/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 + +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD + +#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) + +#endif /* GL_ARB_depth_buffer_float */ + +/* --------------------------- GL_ARB_depth_clamp -------------------------- */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 + +#define GL_DEPTH_CLAMP 0x864F + +#define GLEW_ARB_depth_clamp GLEW_GET_VAR(__GLEW_ARB_depth_clamp) + +#endif /* GL_ARB_depth_clamp */ + +/* -------------------------- GL_ARB_depth_texture ------------------------- */ + +#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 + +#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) + +#endif /* GL_ARB_depth_texture */ + +/* ----------------------- GL_ARB_derivative_control ----------------------- */ + +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 + +#define GLEW_ARB_derivative_control GLEW_GET_VAR(__GLEW_ARB_derivative_control) + +#endif /* GL_ARB_derivative_control */ + +/* ----------------------- GL_ARB_direct_state_access ---------------------- */ + +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 + +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_TEXTURE_BINDING 0x82EB + +typedef void (GLAPIENTRY * PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value); +typedef void (GLAPIENTRY * PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint* textures); +typedef void (GLAPIENTRY * PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id,GLuint buffer,GLenum pname,GLintptr offset); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64* param); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments); +typedef void (GLAPIENTRY * PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides); + +#define glBindTextureUnit GLEW_GET_FUN(__glewBindTextureUnit) +#define glBlitNamedFramebuffer GLEW_GET_FUN(__glewBlitNamedFramebuffer) +#define glCheckNamedFramebufferStatus GLEW_GET_FUN(__glewCheckNamedFramebufferStatus) +#define glClearNamedBufferData GLEW_GET_FUN(__glewClearNamedBufferData) +#define glClearNamedBufferSubData GLEW_GET_FUN(__glewClearNamedBufferSubData) +#define glClearNamedFramebufferfi GLEW_GET_FUN(__glewClearNamedFramebufferfi) +#define glClearNamedFramebufferfv GLEW_GET_FUN(__glewClearNamedFramebufferfv) +#define glClearNamedFramebufferiv GLEW_GET_FUN(__glewClearNamedFramebufferiv) +#define glClearNamedFramebufferuiv GLEW_GET_FUN(__glewClearNamedFramebufferuiv) +#define glCompressedTextureSubImage1D GLEW_GET_FUN(__glewCompressedTextureSubImage1D) +#define glCompressedTextureSubImage2D GLEW_GET_FUN(__glewCompressedTextureSubImage2D) +#define glCompressedTextureSubImage3D GLEW_GET_FUN(__glewCompressedTextureSubImage3D) +#define glCopyNamedBufferSubData GLEW_GET_FUN(__glewCopyNamedBufferSubData) +#define glCopyTextureSubImage1D GLEW_GET_FUN(__glewCopyTextureSubImage1D) +#define glCopyTextureSubImage2D GLEW_GET_FUN(__glewCopyTextureSubImage2D) +#define glCopyTextureSubImage3D GLEW_GET_FUN(__glewCopyTextureSubImage3D) +#define glCreateBuffers GLEW_GET_FUN(__glewCreateBuffers) +#define glCreateFramebuffers GLEW_GET_FUN(__glewCreateFramebuffers) +#define glCreateProgramPipelines GLEW_GET_FUN(__glewCreateProgramPipelines) +#define glCreateQueries GLEW_GET_FUN(__glewCreateQueries) +#define glCreateRenderbuffers GLEW_GET_FUN(__glewCreateRenderbuffers) +#define glCreateSamplers GLEW_GET_FUN(__glewCreateSamplers) +#define glCreateTextures GLEW_GET_FUN(__glewCreateTextures) +#define glCreateTransformFeedbacks GLEW_GET_FUN(__glewCreateTransformFeedbacks) +#define glCreateVertexArrays GLEW_GET_FUN(__glewCreateVertexArrays) +#define glDisableVertexArrayAttrib GLEW_GET_FUN(__glewDisableVertexArrayAttrib) +#define glEnableVertexArrayAttrib GLEW_GET_FUN(__glewEnableVertexArrayAttrib) +#define glFlushMappedNamedBufferRange GLEW_GET_FUN(__glewFlushMappedNamedBufferRange) +#define glGenerateTextureMipmap GLEW_GET_FUN(__glewGenerateTextureMipmap) +#define glGetCompressedTextureImage GLEW_GET_FUN(__glewGetCompressedTextureImage) +#define glGetNamedBufferParameteri64v GLEW_GET_FUN(__glewGetNamedBufferParameteri64v) +#define glGetNamedBufferParameteriv GLEW_GET_FUN(__glewGetNamedBufferParameteriv) +#define glGetNamedBufferPointerv GLEW_GET_FUN(__glewGetNamedBufferPointerv) +#define glGetNamedBufferSubData GLEW_GET_FUN(__glewGetNamedBufferSubData) +#define glGetNamedFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameteriv) +#define glGetNamedFramebufferParameteriv GLEW_GET_FUN(__glewGetNamedFramebufferParameteriv) +#define glGetNamedRenderbufferParameteriv GLEW_GET_FUN(__glewGetNamedRenderbufferParameteriv) +#define glGetQueryBufferObjecti64v GLEW_GET_FUN(__glewGetQueryBufferObjecti64v) +#define glGetQueryBufferObjectiv GLEW_GET_FUN(__glewGetQueryBufferObjectiv) +#define glGetQueryBufferObjectui64v GLEW_GET_FUN(__glewGetQueryBufferObjectui64v) +#define glGetQueryBufferObjectuiv GLEW_GET_FUN(__glewGetQueryBufferObjectuiv) +#define glGetTextureImage GLEW_GET_FUN(__glewGetTextureImage) +#define glGetTextureLevelParameterfv GLEW_GET_FUN(__glewGetTextureLevelParameterfv) +#define glGetTextureLevelParameteriv GLEW_GET_FUN(__glewGetTextureLevelParameteriv) +#define glGetTextureParameterIiv GLEW_GET_FUN(__glewGetTextureParameterIiv) +#define glGetTextureParameterIuiv GLEW_GET_FUN(__glewGetTextureParameterIuiv) +#define glGetTextureParameterfv GLEW_GET_FUN(__glewGetTextureParameterfv) +#define glGetTextureParameteriv GLEW_GET_FUN(__glewGetTextureParameteriv) +#define glGetTransformFeedbacki64_v GLEW_GET_FUN(__glewGetTransformFeedbacki64_v) +#define glGetTransformFeedbacki_v GLEW_GET_FUN(__glewGetTransformFeedbacki_v) +#define glGetTransformFeedbackiv GLEW_GET_FUN(__glewGetTransformFeedbackiv) +#define glGetVertexArrayIndexed64iv GLEW_GET_FUN(__glewGetVertexArrayIndexed64iv) +#define glGetVertexArrayIndexediv GLEW_GET_FUN(__glewGetVertexArrayIndexediv) +#define glGetVertexArrayiv GLEW_GET_FUN(__glewGetVertexArrayiv) +#define glInvalidateNamedFramebufferData GLEW_GET_FUN(__glewInvalidateNamedFramebufferData) +#define glInvalidateNamedFramebufferSubData GLEW_GET_FUN(__glewInvalidateNamedFramebufferSubData) +#define glMapNamedBuffer GLEW_GET_FUN(__glewMapNamedBuffer) +#define glMapNamedBufferRange GLEW_GET_FUN(__glewMapNamedBufferRange) +#define glNamedBufferData GLEW_GET_FUN(__glewNamedBufferData) +#define glNamedBufferStorage GLEW_GET_FUN(__glewNamedBufferStorage) +#define glNamedBufferSubData GLEW_GET_FUN(__glewNamedBufferSubData) +#define glNamedFramebufferDrawBuffer GLEW_GET_FUN(__glewNamedFramebufferDrawBuffer) +#define glNamedFramebufferDrawBuffers GLEW_GET_FUN(__glewNamedFramebufferDrawBuffers) +#define glNamedFramebufferParameteri GLEW_GET_FUN(__glewNamedFramebufferParameteri) +#define glNamedFramebufferReadBuffer GLEW_GET_FUN(__glewNamedFramebufferReadBuffer) +#define glNamedFramebufferRenderbuffer GLEW_GET_FUN(__glewNamedFramebufferRenderbuffer) +#define glNamedFramebufferTexture GLEW_GET_FUN(__glewNamedFramebufferTexture) +#define glNamedFramebufferTextureLayer GLEW_GET_FUN(__glewNamedFramebufferTextureLayer) +#define glNamedRenderbufferStorage GLEW_GET_FUN(__glewNamedRenderbufferStorage) +#define glNamedRenderbufferStorageMultisample GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisample) +#define glTextureBuffer GLEW_GET_FUN(__glewTextureBuffer) +#define glTextureBufferRange GLEW_GET_FUN(__glewTextureBufferRange) +#define glTextureParameterIiv GLEW_GET_FUN(__glewTextureParameterIiv) +#define glTextureParameterIuiv GLEW_GET_FUN(__glewTextureParameterIuiv) +#define glTextureParameterf GLEW_GET_FUN(__glewTextureParameterf) +#define glTextureParameterfv GLEW_GET_FUN(__glewTextureParameterfv) +#define glTextureParameteri GLEW_GET_FUN(__glewTextureParameteri) +#define glTextureParameteriv GLEW_GET_FUN(__glewTextureParameteriv) +#define glTextureStorage1D GLEW_GET_FUN(__glewTextureStorage1D) +#define glTextureStorage2D GLEW_GET_FUN(__glewTextureStorage2D) +#define glTextureStorage2DMultisample GLEW_GET_FUN(__glewTextureStorage2DMultisample) +#define glTextureStorage3D GLEW_GET_FUN(__glewTextureStorage3D) +#define glTextureStorage3DMultisample GLEW_GET_FUN(__glewTextureStorage3DMultisample) +#define glTextureSubImage1D GLEW_GET_FUN(__glewTextureSubImage1D) +#define glTextureSubImage2D GLEW_GET_FUN(__glewTextureSubImage2D) +#define glTextureSubImage3D GLEW_GET_FUN(__glewTextureSubImage3D) +#define glTransformFeedbackBufferBase GLEW_GET_FUN(__glewTransformFeedbackBufferBase) +#define glTransformFeedbackBufferRange GLEW_GET_FUN(__glewTransformFeedbackBufferRange) +#define glUnmapNamedBuffer GLEW_GET_FUN(__glewUnmapNamedBuffer) +#define glVertexArrayAttribBinding GLEW_GET_FUN(__glewVertexArrayAttribBinding) +#define glVertexArrayAttribFormat GLEW_GET_FUN(__glewVertexArrayAttribFormat) +#define glVertexArrayAttribIFormat GLEW_GET_FUN(__glewVertexArrayAttribIFormat) +#define glVertexArrayAttribLFormat GLEW_GET_FUN(__glewVertexArrayAttribLFormat) +#define glVertexArrayBindingDivisor GLEW_GET_FUN(__glewVertexArrayBindingDivisor) +#define glVertexArrayElementBuffer GLEW_GET_FUN(__glewVertexArrayElementBuffer) +#define glVertexArrayVertexBuffer GLEW_GET_FUN(__glewVertexArrayVertexBuffer) +#define glVertexArrayVertexBuffers GLEW_GET_FUN(__glewVertexArrayVertexBuffers) + +#define GLEW_ARB_direct_state_access GLEW_GET_VAR(__GLEW_ARB_direct_state_access) + +#endif /* GL_ARB_direct_state_access */ + +/* -------------------------- GL_ARB_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) + +#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) + +#endif /* GL_ARB_draw_buffers */ + +/* ----------------------- GL_ARB_draw_buffers_blend ----------------------- */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GLAPIENTRY * PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); + +#define glBlendEquationSeparateiARB GLEW_GET_FUN(__glewBlendEquationSeparateiARB) +#define glBlendEquationiARB GLEW_GET_FUN(__glewBlendEquationiARB) +#define glBlendFuncSeparateiARB GLEW_GET_FUN(__glewBlendFuncSeparateiARB) +#define glBlendFunciARB GLEW_GET_FUN(__glewBlendFunciARB) + +#define GLEW_ARB_draw_buffers_blend GLEW_GET_VAR(__GLEW_ARB_draw_buffers_blend) + +#endif /* GL_ARB_draw_buffers_blend */ + +/* -------------------- GL_ARB_draw_elements_base_vertex ------------------- */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 + +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount, const GLint *basevertex); + +#define glDrawElementsBaseVertex GLEW_GET_FUN(__glewDrawElementsBaseVertex) +#define glDrawElementsInstancedBaseVertex GLEW_GET_FUN(__glewDrawElementsInstancedBaseVertex) +#define glDrawRangeElementsBaseVertex GLEW_GET_FUN(__glewDrawRangeElementsBaseVertex) +#define glMultiDrawElementsBaseVertex GLEW_GET_FUN(__glewMultiDrawElementsBaseVertex) + +#define GLEW_ARB_draw_elements_base_vertex GLEW_GET_VAR(__GLEW_ARB_draw_elements_base_vertex) + +#endif /* GL_ARB_draw_elements_base_vertex */ + +/* -------------------------- GL_ARB_draw_indirect ------------------------- */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 + +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect); + +#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect) +#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect) + +#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect) + +#endif /* GL_ARB_draw_indirect */ + +/* ------------------------- GL_ARB_draw_instanced ------------------------- */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 + +#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) + +#endif /* GL_ARB_draw_instanced */ + +/* ------------------------ GL_ARB_enhanced_layouts ------------------------ */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 + +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C + +#define GLEW_ARB_enhanced_layouts GLEW_GET_VAR(__GLEW_ARB_enhanced_layouts) + +#endif /* GL_ARB_enhanced_layouts */ + +/* -------------------- GL_ARB_explicit_attrib_location -------------------- */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 + +#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location) + +#endif /* GL_ARB_explicit_attrib_location */ + +/* -------------------- GL_ARB_explicit_uniform_location ------------------- */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 + +#define GL_MAX_UNIFORM_LOCATIONS 0x826E + +#define GLEW_ARB_explicit_uniform_location GLEW_GET_VAR(__GLEW_ARB_explicit_uniform_location) + +#endif /* GL_ARB_explicit_uniform_location */ + +/* ------------------- GL_ARB_fragment_coord_conventions ------------------- */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 + +#define GLEW_ARB_fragment_coord_conventions GLEW_GET_VAR(__GLEW_ARB_fragment_coord_conventions) + +#endif /* GL_ARB_fragment_coord_conventions */ + +/* --------------------- GL_ARB_fragment_layer_viewport -------------------- */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 + +#define GLEW_ARB_fragment_layer_viewport GLEW_GET_VAR(__GLEW_ARB_fragment_layer_viewport) + +#endif /* GL_ARB_fragment_layer_viewport */ + +/* ------------------------ GL_ARB_fragment_program ------------------------ */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 + +#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 + +#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) + +#endif /* GL_ARB_fragment_program */ + +/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 + +#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) + +#endif /* GL_ARB_fragment_program_shadow */ + +/* ------------------------- GL_ARB_fragment_shader ------------------------ */ + +#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 + +#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) + +#endif /* GL_ARB_fragment_shader */ + +/* ------------------- GL_ARB_framebuffer_no_attachments ------------------- */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); + +#define glFramebufferParameteri GLEW_GET_FUN(__glewFramebufferParameteri) +#define glGetFramebufferParameteriv GLEW_GET_FUN(__glewGetFramebufferParameteriv) +#define glGetNamedFramebufferParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferParameterivEXT) +#define glNamedFramebufferParameteriEXT GLEW_GET_FUN(__glewNamedFramebufferParameteriEXT) + +#define GLEW_ARB_framebuffer_no_attachments GLEW_GET_VAR(__GLEW_ARB_framebuffer_no_attachments) + +#endif /* GL_ARB_framebuffer_no_attachments */ + +/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 + +#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_INDEX 0x8222 +#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_UNSIGNED_NORMALIZED 0x8C17 +#define GL_SRGB 0x8C40 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) +#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) +#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) +#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) +#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) +#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) +#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) +#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) +#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) +#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) +#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) +#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) +#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) +#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) +#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) +#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) +#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) +#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) +#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) +#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) + +#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) + +#endif /* GL_ARB_framebuffer_object */ + +/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB 0x8DB9 + +#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) + +#endif /* GL_ARB_framebuffer_sRGB */ + +/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_ARB 0xA +#define GL_LINE_STRIP_ADJACENCY_ARB 0xB +#define GL_TRIANGLES_ADJACENCY_ARB 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#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 (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) +#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) +#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) +#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) + +#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) + +#endif /* GL_ARB_geometry_shader4 */ + +/* ----------------------- GL_ARB_get_program_binary ----------------------- */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum *binaryFormat, void*binary); +typedef void (GLAPIENTRY * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); + +#define glGetProgramBinary GLEW_GET_FUN(__glewGetProgramBinary) +#define glProgramBinary GLEW_GET_FUN(__glewProgramBinary) +#define glProgramParameteri GLEW_GET_FUN(__glewProgramParameteri) + +#define GLEW_ARB_get_program_binary GLEW_GET_VAR(__GLEW_ARB_get_program_binary) + +#endif /* GL_ARB_get_program_binary */ + +/* ---------------------- GL_ARB_get_texture_sub_image --------------------- */ + +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 + +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +typedef void (GLAPIENTRY * 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); + +#define glGetCompressedTextureSubImage GLEW_GET_FUN(__glewGetCompressedTextureSubImage) +#define glGetTextureSubImage GLEW_GET_FUN(__glewGetTextureSubImage) + +#define GLEW_ARB_get_texture_sub_image GLEW_GET_VAR(__GLEW_ARB_get_texture_sub_image) + +#endif /* GL_ARB_get_texture_sub_image */ + +/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 + +#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 GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5) + +#endif /* GL_ARB_gpu_shader5 */ + +/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 + +#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_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + +#define glGetUniformdv GLEW_GET_FUN(__glewGetUniformdv) +#define glUniform1d GLEW_GET_FUN(__glewUniform1d) +#define glUniform1dv GLEW_GET_FUN(__glewUniform1dv) +#define glUniform2d GLEW_GET_FUN(__glewUniform2d) +#define glUniform2dv GLEW_GET_FUN(__glewUniform2dv) +#define glUniform3d GLEW_GET_FUN(__glewUniform3d) +#define glUniform3dv GLEW_GET_FUN(__glewUniform3dv) +#define glUniform4d GLEW_GET_FUN(__glewUniform4d) +#define glUniform4dv GLEW_GET_FUN(__glewUniform4dv) +#define glUniformMatrix2dv GLEW_GET_FUN(__glewUniformMatrix2dv) +#define glUniformMatrix2x3dv GLEW_GET_FUN(__glewUniformMatrix2x3dv) +#define glUniformMatrix2x4dv GLEW_GET_FUN(__glewUniformMatrix2x4dv) +#define glUniformMatrix3dv GLEW_GET_FUN(__glewUniformMatrix3dv) +#define glUniformMatrix3x2dv GLEW_GET_FUN(__glewUniformMatrix3x2dv) +#define glUniformMatrix3x4dv GLEW_GET_FUN(__glewUniformMatrix3x4dv) +#define glUniformMatrix4dv GLEW_GET_FUN(__glewUniformMatrix4dv) +#define glUniformMatrix4x2dv GLEW_GET_FUN(__glewUniformMatrix4x2dv) +#define glUniformMatrix4x3dv GLEW_GET_FUN(__glewUniformMatrix4x3dv) + +#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64) + +#endif /* GL_ARB_gpu_shader_fp64 */ + +/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 + +#define GL_HALF_FLOAT_ARB 0x140B + +#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) + +#endif /* GL_ARB_half_float_pixel */ + +/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 + +#define GL_HALF_FLOAT 0x140B + +#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) + +#endif /* GL_ARB_half_float_vertex */ + +/* ----------------------------- GL_ARB_imaging ---------------------------- */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 + +#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_IGNORE_BORDER 0x8150 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_WRAP_BORDER 0x8152 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, void *values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); + +#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) +#define glColorTable GLEW_GET_FUN(__glewColorTable) +#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) +#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) +#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) +#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) +#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) +#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) +#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) +#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) +#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) +#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) +#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) +#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) +#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) +#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) +#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) +#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) +#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) +#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) +#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) +#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) +#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) +#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) +#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) +#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) +#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) +#define glHistogram GLEW_GET_FUN(__glewHistogram) +#define glMinmax GLEW_GET_FUN(__glewMinmax) +#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) +#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) +#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) + +#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) + +#endif /* GL_ARB_imaging */ + +/* ----------------------- GL_ARB_indirect_parameters ---------------------- */ + +#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 (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); + +#define glMultiDrawArraysIndirectCountARB GLEW_GET_FUN(__glewMultiDrawArraysIndirectCountARB) +#define glMultiDrawElementsIndirectCountARB GLEW_GET_FUN(__glewMultiDrawElementsIndirectCountARB) + +#define GLEW_ARB_indirect_parameters GLEW_GET_VAR(__GLEW_ARB_indirect_parameters) + +#endif /* GL_ARB_indirect_parameters */ + +/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); + +#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) +#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) +#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) + +#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) + +#endif /* GL_ARB_instanced_arrays */ + +/* ---------------------- GL_ARB_internalformat_query ---------------------- */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 + +#define GL_NUM_SAMPLE_COUNTS 0x9380 + +typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); + +#define glGetInternalformativ GLEW_GET_FUN(__glewGetInternalformativ) + +#define GLEW_ARB_internalformat_query GLEW_GET_VAR(__GLEW_ARB_internalformat_query) + +#endif /* GL_ARB_internalformat_query */ + +/* ---------------------- GL_ARB_internalformat_query2 --------------------- */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 + +#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_SRGB_DECODE_ARB 0x8299 +#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 + +typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params); + +#define glGetInternalformati64v GLEW_GET_FUN(__glewGetInternalformati64v) + +#define GLEW_ARB_internalformat_query2 GLEW_GET_VAR(__GLEW_ARB_internalformat_query2) + +#endif /* GL_ARB_internalformat_query2 */ + +/* ----------------------- GL_ARB_invalidate_subdata ----------------------- */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 + +typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments); +typedef void (GLAPIENTRY * PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + +#define glInvalidateBufferData GLEW_GET_FUN(__glewInvalidateBufferData) +#define glInvalidateBufferSubData GLEW_GET_FUN(__glewInvalidateBufferSubData) +#define glInvalidateFramebuffer GLEW_GET_FUN(__glewInvalidateFramebuffer) +#define glInvalidateSubFramebuffer GLEW_GET_FUN(__glewInvalidateSubFramebuffer) +#define glInvalidateTexImage GLEW_GET_FUN(__glewInvalidateTexImage) +#define glInvalidateTexSubImage GLEW_GET_FUN(__glewInvalidateTexSubImage) + +#define GLEW_ARB_invalidate_subdata GLEW_GET_VAR(__GLEW_ARB_invalidate_subdata) + +#endif /* GL_ARB_invalidate_subdata */ + +/* ---------------------- GL_ARB_map_buffer_alignment ---------------------- */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 + +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC + +#define GLEW_ARB_map_buffer_alignment GLEW_GET_VAR(__GLEW_ARB_map_buffer_alignment) + +#endif /* GL_ARB_map_buffer_alignment */ + +/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + +#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) +#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) + +#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) + +#endif /* GL_ARB_map_buffer_range */ + +/* ------------------------- GL_ARB_matrix_palette ------------------------- */ + +#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 (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); +typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); + +#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) +#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) +#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) +#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) +#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) + +#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) + +#endif /* GL_ARB_matrix_palette */ + +/* --------------------------- GL_ARB_multi_bind --------------------------- */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr *offsets, const GLsizei *strides); + +#define glBindBuffersBase GLEW_GET_FUN(__glewBindBuffersBase) +#define glBindBuffersRange GLEW_GET_FUN(__glewBindBuffersRange) +#define glBindImageTextures GLEW_GET_FUN(__glewBindImageTextures) +#define glBindSamplers GLEW_GET_FUN(__glewBindSamplers) +#define glBindTextures GLEW_GET_FUN(__glewBindTextures) +#define glBindVertexBuffers GLEW_GET_FUN(__glewBindVertexBuffers) + +#define GLEW_ARB_multi_bind GLEW_GET_VAR(__GLEW_ARB_multi_bind) + +#endif /* GL_ARB_multi_bind */ + +/* ----------------------- GL_ARB_multi_draw_indirect ---------------------- */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); + +#define glMultiDrawArraysIndirect GLEW_GET_FUN(__glewMultiDrawArraysIndirect) +#define glMultiDrawElementsIndirect GLEW_GET_FUN(__glewMultiDrawElementsIndirect) + +#define GLEW_ARB_multi_draw_indirect GLEW_GET_VAR(__GLEW_ARB_multi_draw_indirect) + +#endif /* GL_ARB_multi_draw_indirect */ + +/* --------------------------- GL_ARB_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); + +#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) + +#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) + +#endif /* GL_ARB_multisample */ + +/* -------------------------- GL_ARB_multitexture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) +#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) +#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) +#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) +#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) +#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) +#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) +#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) +#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) +#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) +#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) +#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) +#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) +#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) +#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) +#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) +#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) +#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) +#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) +#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) +#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) +#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) +#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) +#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) +#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) +#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) +#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) +#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) +#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) +#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) +#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) +#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) +#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) +#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) + +#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) + +#endif /* GL_ARB_multitexture */ + +/* ------------------------- GL_ARB_occlusion_query ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); + +#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) +#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) +#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) +#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) +#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) +#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) +#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) +#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) + +#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) + +#endif /* GL_ARB_occlusion_query */ + +/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 + +#define GL_ANY_SAMPLES_PASSED 0x8C2F + +#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2) + +#endif /* GL_ARB_occlusion_query2 */ + +/* -------------------- GL_ARB_pipeline_statistics_query ------------------- */ + +#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 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F + +#define GLEW_ARB_pipeline_statistics_query GLEW_GET_VAR(__GLEW_ARB_pipeline_statistics_query) + +#endif /* GL_ARB_pipeline_statistics_query */ + +/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) + +#endif /* GL_ARB_pixel_buffer_object */ + +/* ------------------------ GL_ARB_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) +#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) + +#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) + +#endif /* GL_ARB_point_parameters */ + +/* -------------------------- GL_ARB_point_sprite -------------------------- */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 + +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 + +#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) + +#endif /* GL_ARB_point_sprite */ + +/* --------------------- GL_ARB_program_interface_query -------------------- */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 + +#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_IS_PER_PATCH 0x92E7 +#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 + +typedef void (GLAPIENTRY * PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params); +typedef GLuint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name); +typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar* name); +typedef GLint (GLAPIENTRY * PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params); + +#define glGetProgramInterfaceiv GLEW_GET_FUN(__glewGetProgramInterfaceiv) +#define glGetProgramResourceIndex GLEW_GET_FUN(__glewGetProgramResourceIndex) +#define glGetProgramResourceLocation GLEW_GET_FUN(__glewGetProgramResourceLocation) +#define glGetProgramResourceLocationIndex GLEW_GET_FUN(__glewGetProgramResourceLocationIndex) +#define glGetProgramResourceName GLEW_GET_FUN(__glewGetProgramResourceName) +#define glGetProgramResourceiv GLEW_GET_FUN(__glewGetProgramResourceiv) + +#define GLEW_ARB_program_interface_query GLEW_GET_VAR(__GLEW_ARB_program_interface_query) + +#endif /* GL_ARB_program_interface_query */ + +/* ------------------------ GL_ARB_provoking_vertex ------------------------ */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLPROVOKINGVERTEXPROC) (GLenum mode); + +#define glProvokingVertex GLEW_GET_FUN(__glewProvokingVertex) + +#define GLEW_ARB_provoking_vertex GLEW_GET_VAR(__GLEW_ARB_provoking_vertex) + +#endif /* GL_ARB_provoking_vertex */ + +/* ----------------------- GL_ARB_query_buffer_object ---------------------- */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 + +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 + +#define GLEW_ARB_query_buffer_object GLEW_GET_VAR(__GLEW_ARB_query_buffer_object) + +#endif /* GL_ARB_query_buffer_object */ + +/* ------------------ GL_ARB_robust_buffer_access_behavior ----------------- */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 + +#define GLEW_ARB_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_ARB_robust_buffer_access_behavior) + +#endif /* GL_ARB_robust_buffer_access_behavior */ + +/* --------------------------- GL_ARB_robustness --------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); +typedef void (GLAPIENTRY * PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); +typedef void (GLAPIENTRY * PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); +typedef void (GLAPIENTRY * PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint* v); +typedef void (GLAPIENTRY * PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint* values); +typedef void (GLAPIENTRY * PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort* values); +typedef void (GLAPIENTRY * PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte* pattern); +typedef void (GLAPIENTRY * PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void* row, GLsizei columnBufSize, void*column, void*span); +typedef void (GLAPIENTRY * PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); +typedef void (GLAPIENTRY * PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data); + +#define glGetGraphicsResetStatusARB GLEW_GET_FUN(__glewGetGraphicsResetStatusARB) +#define glGetnColorTableARB GLEW_GET_FUN(__glewGetnColorTableARB) +#define glGetnCompressedTexImageARB GLEW_GET_FUN(__glewGetnCompressedTexImageARB) +#define glGetnConvolutionFilterARB GLEW_GET_FUN(__glewGetnConvolutionFilterARB) +#define glGetnHistogramARB GLEW_GET_FUN(__glewGetnHistogramARB) +#define glGetnMapdvARB GLEW_GET_FUN(__glewGetnMapdvARB) +#define glGetnMapfvARB GLEW_GET_FUN(__glewGetnMapfvARB) +#define glGetnMapivARB GLEW_GET_FUN(__glewGetnMapivARB) +#define glGetnMinmaxARB GLEW_GET_FUN(__glewGetnMinmaxARB) +#define glGetnPixelMapfvARB GLEW_GET_FUN(__glewGetnPixelMapfvARB) +#define glGetnPixelMapuivARB GLEW_GET_FUN(__glewGetnPixelMapuivARB) +#define glGetnPixelMapusvARB GLEW_GET_FUN(__glewGetnPixelMapusvARB) +#define glGetnPolygonStippleARB GLEW_GET_FUN(__glewGetnPolygonStippleARB) +#define glGetnSeparableFilterARB GLEW_GET_FUN(__glewGetnSeparableFilterARB) +#define glGetnTexImageARB GLEW_GET_FUN(__glewGetnTexImageARB) +#define glGetnUniformdvARB GLEW_GET_FUN(__glewGetnUniformdvARB) +#define glGetnUniformfvARB GLEW_GET_FUN(__glewGetnUniformfvARB) +#define glGetnUniformivARB GLEW_GET_FUN(__glewGetnUniformivARB) +#define glGetnUniformuivARB GLEW_GET_FUN(__glewGetnUniformuivARB) +#define glReadnPixelsARB GLEW_GET_FUN(__glewReadnPixelsARB) + +#define GLEW_ARB_robustness GLEW_GET_VAR(__GLEW_ARB_robustness) + +#endif /* GL_ARB_robustness */ + +/* ---------------- GL_ARB_robustness_application_isolation ---------------- */ + +#ifndef GL_ARB_robustness_application_isolation +#define GL_ARB_robustness_application_isolation 1 + +#define GLEW_ARB_robustness_application_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_application_isolation) + +#endif /* GL_ARB_robustness_application_isolation */ + +/* ---------------- GL_ARB_robustness_share_group_isolation ---------------- */ + +#ifndef GL_ARB_robustness_share_group_isolation +#define GL_ARB_robustness_share_group_isolation 1 + +#define GLEW_ARB_robustness_share_group_isolation GLEW_GET_VAR(__GLEW_ARB_robustness_share_group_isolation) + +#endif /* GL_ARB_robustness_share_group_isolation */ + +/* ------------------------- GL_ARB_sample_shading ------------------------- */ + +#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 (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value); + +#define glMinSampleShadingARB GLEW_GET_FUN(__glewMinSampleShadingARB) + +#define GLEW_ARB_sample_shading GLEW_GET_VAR(__GLEW_ARB_sample_shading) + +#endif /* GL_ARB_sample_shading */ + +/* ------------------------- GL_ARB_sampler_objects ------------------------ */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 + +#define GL_SAMPLER_BINDING 0x8919 + +typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); +typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params); + +#define glBindSampler GLEW_GET_FUN(__glewBindSampler) +#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers) +#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers) +#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv) +#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv) +#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv) +#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv) +#define glIsSampler GLEW_GET_FUN(__glewIsSampler) +#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv) +#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv) +#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf) +#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv) +#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri) +#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv) + +#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects) + +#endif /* GL_ARB_sampler_objects */ + +/* ------------------------ GL_ARB_seamless_cube_map ----------------------- */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F + +#define GLEW_ARB_seamless_cube_map GLEW_GET_VAR(__GLEW_ARB_seamless_cube_map) + +#endif /* GL_ARB_seamless_cube_map */ + +/* ------------------ GL_ARB_seamless_cubemap_per_texture ------------------ */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 + +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F + +#define GLEW_ARB_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_ARB_seamless_cubemap_per_texture) + +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +/* --------------------- GL_ARB_separate_shader_objects -------------------- */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 + +#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_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_ALL_SHADER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar * const * strings); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar *infoLog); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); + +#define glActiveShaderProgram GLEW_GET_FUN(__glewActiveShaderProgram) +#define glBindProgramPipeline GLEW_GET_FUN(__glewBindProgramPipeline) +#define glCreateShaderProgramv GLEW_GET_FUN(__glewCreateShaderProgramv) +#define glDeleteProgramPipelines GLEW_GET_FUN(__glewDeleteProgramPipelines) +#define glGenProgramPipelines GLEW_GET_FUN(__glewGenProgramPipelines) +#define glGetProgramPipelineInfoLog GLEW_GET_FUN(__glewGetProgramPipelineInfoLog) +#define glGetProgramPipelineiv GLEW_GET_FUN(__glewGetProgramPipelineiv) +#define glIsProgramPipeline GLEW_GET_FUN(__glewIsProgramPipeline) +#define glProgramUniform1d GLEW_GET_FUN(__glewProgramUniform1d) +#define glProgramUniform1dv GLEW_GET_FUN(__glewProgramUniform1dv) +#define glProgramUniform1f GLEW_GET_FUN(__glewProgramUniform1f) +#define glProgramUniform1fv GLEW_GET_FUN(__glewProgramUniform1fv) +#define glProgramUniform1i GLEW_GET_FUN(__glewProgramUniform1i) +#define glProgramUniform1iv GLEW_GET_FUN(__glewProgramUniform1iv) +#define glProgramUniform1ui GLEW_GET_FUN(__glewProgramUniform1ui) +#define glProgramUniform1uiv GLEW_GET_FUN(__glewProgramUniform1uiv) +#define glProgramUniform2d GLEW_GET_FUN(__glewProgramUniform2d) +#define glProgramUniform2dv GLEW_GET_FUN(__glewProgramUniform2dv) +#define glProgramUniform2f GLEW_GET_FUN(__glewProgramUniform2f) +#define glProgramUniform2fv GLEW_GET_FUN(__glewProgramUniform2fv) +#define glProgramUniform2i GLEW_GET_FUN(__glewProgramUniform2i) +#define glProgramUniform2iv GLEW_GET_FUN(__glewProgramUniform2iv) +#define glProgramUniform2ui GLEW_GET_FUN(__glewProgramUniform2ui) +#define glProgramUniform2uiv GLEW_GET_FUN(__glewProgramUniform2uiv) +#define glProgramUniform3d GLEW_GET_FUN(__glewProgramUniform3d) +#define glProgramUniform3dv GLEW_GET_FUN(__glewProgramUniform3dv) +#define glProgramUniform3f GLEW_GET_FUN(__glewProgramUniform3f) +#define glProgramUniform3fv GLEW_GET_FUN(__glewProgramUniform3fv) +#define glProgramUniform3i GLEW_GET_FUN(__glewProgramUniform3i) +#define glProgramUniform3iv GLEW_GET_FUN(__glewProgramUniform3iv) +#define glProgramUniform3ui GLEW_GET_FUN(__glewProgramUniform3ui) +#define glProgramUniform3uiv GLEW_GET_FUN(__glewProgramUniform3uiv) +#define glProgramUniform4d GLEW_GET_FUN(__glewProgramUniform4d) +#define glProgramUniform4dv GLEW_GET_FUN(__glewProgramUniform4dv) +#define glProgramUniform4f GLEW_GET_FUN(__glewProgramUniform4f) +#define glProgramUniform4fv GLEW_GET_FUN(__glewProgramUniform4fv) +#define glProgramUniform4i GLEW_GET_FUN(__glewProgramUniform4i) +#define glProgramUniform4iv GLEW_GET_FUN(__glewProgramUniform4iv) +#define glProgramUniform4ui GLEW_GET_FUN(__glewProgramUniform4ui) +#define glProgramUniform4uiv GLEW_GET_FUN(__glewProgramUniform4uiv) +#define glProgramUniformMatrix2dv GLEW_GET_FUN(__glewProgramUniformMatrix2dv) +#define glProgramUniformMatrix2fv GLEW_GET_FUN(__glewProgramUniformMatrix2fv) +#define glProgramUniformMatrix2x3dv GLEW_GET_FUN(__glewProgramUniformMatrix2x3dv) +#define glProgramUniformMatrix2x3fv GLEW_GET_FUN(__glewProgramUniformMatrix2x3fv) +#define glProgramUniformMatrix2x4dv GLEW_GET_FUN(__glewProgramUniformMatrix2x4dv) +#define glProgramUniformMatrix2x4fv GLEW_GET_FUN(__glewProgramUniformMatrix2x4fv) +#define glProgramUniformMatrix3dv GLEW_GET_FUN(__glewProgramUniformMatrix3dv) +#define glProgramUniformMatrix3fv GLEW_GET_FUN(__glewProgramUniformMatrix3fv) +#define glProgramUniformMatrix3x2dv GLEW_GET_FUN(__glewProgramUniformMatrix3x2dv) +#define glProgramUniformMatrix3x2fv GLEW_GET_FUN(__glewProgramUniformMatrix3x2fv) +#define glProgramUniformMatrix3x4dv GLEW_GET_FUN(__glewProgramUniformMatrix3x4dv) +#define glProgramUniformMatrix3x4fv GLEW_GET_FUN(__glewProgramUniformMatrix3x4fv) +#define glProgramUniformMatrix4dv GLEW_GET_FUN(__glewProgramUniformMatrix4dv) +#define glProgramUniformMatrix4fv GLEW_GET_FUN(__glewProgramUniformMatrix4fv) +#define glProgramUniformMatrix4x2dv GLEW_GET_FUN(__glewProgramUniformMatrix4x2dv) +#define glProgramUniformMatrix4x2fv GLEW_GET_FUN(__glewProgramUniformMatrix4x2fv) +#define glProgramUniformMatrix4x3dv GLEW_GET_FUN(__glewProgramUniformMatrix4x3dv) +#define glProgramUniformMatrix4x3fv GLEW_GET_FUN(__glewProgramUniformMatrix4x3fv) +#define glUseProgramStages GLEW_GET_FUN(__glewUseProgramStages) +#define glValidateProgramPipeline GLEW_GET_FUN(__glewValidateProgramPipeline) + +#define GLEW_ARB_separate_shader_objects GLEW_GET_VAR(__GLEW_ARB_separate_shader_objects) + +#endif /* GL_ARB_separate_shader_objects */ + +/* --------------------- GL_ARB_shader_atomic_counters --------------------- */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 + +#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_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC + +typedef void (GLAPIENTRY * PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params); + +#define glGetActiveAtomicCounterBufferiv GLEW_GET_FUN(__glewGetActiveAtomicCounterBufferiv) + +#define GLEW_ARB_shader_atomic_counters GLEW_GET_VAR(__GLEW_ARB_shader_atomic_counters) + +#endif /* GL_ARB_shader_atomic_counters */ + +/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 + +#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding) + +#endif /* GL_ARB_shader_bit_encoding */ + +/* --------------------- GL_ARB_shader_draw_parameters --------------------- */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 + +#define GLEW_ARB_shader_draw_parameters GLEW_GET_VAR(__GLEW_ARB_shader_draw_parameters) + +#endif /* GL_ARB_shader_draw_parameters */ + +/* ------------------------ GL_ARB_shader_group_vote ----------------------- */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 + +#define GLEW_ARB_shader_group_vote GLEW_GET_VAR(__GLEW_ARB_shader_group_vote) + +#endif /* GL_ARB_shader_group_vote */ + +/* --------------------- GL_ARB_shader_image_load_store -------------------- */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); + +#define glBindImageTexture GLEW_GET_FUN(__glewBindImageTexture) +#define glMemoryBarrier GLEW_GET_FUN(__glewMemoryBarrier) + +#define GLEW_ARB_shader_image_load_store GLEW_GET_VAR(__GLEW_ARB_shader_image_load_store) + +#endif /* GL_ARB_shader_image_load_store */ + +/* ------------------------ GL_ARB_shader_image_size ----------------------- */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 + +#define GLEW_ARB_shader_image_size GLEW_GET_VAR(__GLEW_ARB_shader_image_size) + +#endif /* GL_ARB_shader_image_size */ + +/* ------------------------- GL_ARB_shader_objects ------------------------- */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 + +#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 char GLcharARB; +typedef unsigned int GLhandleARB; + +typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); +typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); +typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); +typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); + +#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) +#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) +#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) +#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) +#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) +#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) +#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) +#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) +#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) +#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) +#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) +#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) +#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) +#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) +#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) +#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) +#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) +#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) +#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) +#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) +#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) +#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) +#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) +#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) +#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) +#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) +#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) +#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) +#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) +#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) +#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) +#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) +#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) +#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) +#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) +#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) +#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) +#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) +#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) + +#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) + +#endif /* GL_ARB_shader_objects */ + +/* ------------------------ GL_ARB_shader_precision ------------------------ */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 + +#define GLEW_ARB_shader_precision GLEW_GET_VAR(__GLEW_ARB_shader_precision) + +#endif /* GL_ARB_shader_precision */ + +/* ---------------------- GL_ARB_shader_stencil_export --------------------- */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 + +#define GLEW_ARB_shader_stencil_export GLEW_GET_VAR(__GLEW_ARB_shader_stencil_export) + +#endif /* GL_ARB_shader_stencil_export */ + +/* ------------------ GL_ARB_shader_storage_buffer_object ------------------ */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 + +#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#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 + +typedef void (GLAPIENTRY * PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + +#define glShaderStorageBlockBinding GLEW_GET_FUN(__glewShaderStorageBlockBinding) + +#define GLEW_ARB_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_ARB_shader_storage_buffer_object) + +#endif /* GL_ARB_shader_storage_buffer_object */ + +/* ------------------------ GL_ARB_shader_subroutine ----------------------- */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 + +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B + +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values); +typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar* name); +typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params); +typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices); + +#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName) +#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName) +#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv) +#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv) +#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex) +#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation) +#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv) +#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv) + +#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine) + +#endif /* GL_ARB_shader_subroutine */ + +/* ------------------ GL_ARB_shader_texture_image_samples ------------------ */ + +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 + +#define GLEW_ARB_shader_texture_image_samples GLEW_GET_VAR(__GLEW_ARB_shader_texture_image_samples) + +#endif /* GL_ARB_shader_texture_image_samples */ + +/* ----------------------- GL_ARB_shader_texture_lod ----------------------- */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 + +#define GLEW_ARB_shader_texture_lod GLEW_GET_VAR(__GLEW_ARB_shader_texture_lod) + +#endif /* GL_ARB_shader_texture_lod */ + +/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 + +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C + +#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) + +#endif /* GL_ARB_shading_language_100 */ + +/* -------------------- GL_ARB_shading_language_420pack -------------------- */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 + +#define GLEW_ARB_shading_language_420pack GLEW_GET_VAR(__GLEW_ARB_shading_language_420pack) + +#endif /* GL_ARB_shading_language_420pack */ + +/* -------------------- GL_ARB_shading_language_include -------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* const *path, const GLint *length); +typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar* name, GLenum pname, GLint *params); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar* name); +typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar *string); + +#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB) +#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB) +#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB) +#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB) +#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB) +#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB) + +#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include) + +#endif /* GL_ARB_shading_language_include */ + +/* -------------------- GL_ARB_shading_language_packing -------------------- */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 + +#define GLEW_ARB_shading_language_packing GLEW_GET_VAR(__GLEW_ARB_shading_language_packing) + +#endif /* GL_ARB_shading_language_packing */ + +/* ----------------------------- GL_ARB_shadow ----------------------------- */ + +#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 + +#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) + +#endif /* GL_ARB_shadow */ + +/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 + +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF + +#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) + +#endif /* GL_ARB_shadow_ambient */ + +/* -------------------------- GL_ARB_sparse_buffer ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); + +#define glBufferPageCommitmentARB GLEW_GET_FUN(__glewBufferPageCommitmentARB) + +#define GLEW_ARB_sparse_buffer GLEW_GET_VAR(__GLEW_ARB_sparse_buffer) + +#endif /* GL_ARB_sparse_buffer */ + +/* ------------------------- GL_ARB_sparse_texture ------------------------- */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 + +#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_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA + +typedef void (GLAPIENTRY * PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +typedef void (GLAPIENTRY * PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); + +#define glTexPageCommitmentARB GLEW_GET_FUN(__glewTexPageCommitmentARB) +#define glTexturePageCommitmentEXT GLEW_GET_FUN(__glewTexturePageCommitmentEXT) + +#define GLEW_ARB_sparse_texture GLEW_GET_VAR(__GLEW_ARB_sparse_texture) + +#endif /* GL_ARB_sparse_texture */ + +/* ------------------------ GL_ARB_stencil_texturing ----------------------- */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 + +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA + +#define GLEW_ARB_stencil_texturing GLEW_GET_VAR(__GLEW_ARB_stencil_texturing) + +#endif /* GL_ARB_stencil_texturing */ + +/* ------------------------------ GL_ARB_sync ------------------------------ */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 + +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#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 0xFFFFFFFFFFFFFFFF + +typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); +typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); +typedef GLsync (GLAPIENTRY * PFNGLFENCESYNCPROC) (GLenum condition,GLbitfield flags); +typedef void (GLAPIENTRY * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETSYNCIVPROC) (GLsync GLsync,GLenum pname,GLsizei bufSize,GLsizei* length, GLint *values); +typedef GLboolean (GLAPIENTRY * PFNGLISSYNCPROC) (GLsync GLsync); +typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); + +#define glClientWaitSync GLEW_GET_FUN(__glewClientWaitSync) +#define glDeleteSync GLEW_GET_FUN(__glewDeleteSync) +#define glFenceSync GLEW_GET_FUN(__glewFenceSync) +#define glGetInteger64v GLEW_GET_FUN(__glewGetInteger64v) +#define glGetSynciv GLEW_GET_FUN(__glewGetSynciv) +#define glIsSync GLEW_GET_FUN(__glewIsSync) +#define glWaitSync GLEW_GET_FUN(__glewWaitSync) + +#define GLEW_ARB_sync GLEW_GET_VAR(__GLEW_ARB_sync) + +#endif /* GL_ARB_sync */ + +/* ----------------------- GL_ARB_tessellation_shader ---------------------- */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 + +#define GL_PATCHES 0xE +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#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_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_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A + +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values); +typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); + +#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv) +#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri) + +#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader) + +#endif /* GL_ARB_tessellation_shader */ + +/* ------------------------- GL_ARB_texture_barrier ------------------------ */ + +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 + +typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERPROC) (void); + +#define glTextureBarrier GLEW_GET_FUN(__glewTextureBarrier) + +#define GLEW_ARB_texture_barrier GLEW_GET_VAR(__GLEW_ARB_texture_barrier) + +#endif /* GL_ARB_texture_barrier */ + +/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_ARB 0x812D + +#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) + +#endif /* GL_ARB_texture_border_clamp */ + +/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) + +#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) + +#endif /* GL_ARB_texture_buffer_object */ + +/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 + +#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32) + +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +/* ---------------------- GL_ARB_texture_buffer_range ---------------------- */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 + +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F + +typedef void (GLAPIENTRY * PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + +#define glTexBufferRange GLEW_GET_FUN(__glewTexBufferRange) +#define glTextureBufferRangeEXT GLEW_GET_FUN(__glewTextureBufferRangeEXT) + +#define GLEW_ARB_texture_buffer_range GLEW_GET_VAR(__GLEW_ARB_texture_buffer_range) + +#endif /* GL_ARB_texture_buffer_range */ + +/* ----------------------- GL_ARB_texture_compression ---------------------- */ + +#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 (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void *img); + +#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) +#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) +#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) +#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) +#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) +#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) +#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) + +#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) + +#endif /* GL_ARB_texture_compression */ + +/* -------------------- GL_ARB_texture_compression_bptc -------------------- */ + +#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 + +#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc) + +#endif /* GL_ARB_texture_compression_bptc */ + +/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 + +#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 GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) + +#endif /* GL_ARB_texture_compression_rgtc */ + +/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) + +#endif /* GL_ARB_texture_cube_map */ + +/* --------------------- GL_ARB_texture_cube_map_array --------------------- */ + +#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 + +#define GLEW_ARB_texture_cube_map_array GLEW_GET_VAR(__GLEW_ARB_texture_cube_map_array) + +#endif /* GL_ARB_texture_cube_map_array */ + +/* ------------------------- GL_ARB_texture_env_add ------------------------ */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 + +#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) + +#endif /* GL_ARB_texture_env_add */ + +/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 + +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#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 GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) + +#endif /* GL_ARB_texture_env_combine */ + +/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 + +#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) + +#endif /* GL_ARB_texture_env_crossbar */ + +/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) + +#endif /* GL_ARB_texture_env_dot3 */ + +/* -------------------------- GL_ARB_texture_float ------------------------- */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 + +#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 +#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 GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) + +#endif /* GL_ARB_texture_float */ + +/* ------------------------- GL_ARB_texture_gather ------------------------- */ + +#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 + +#define GLEW_ARB_texture_gather GLEW_GET_VAR(__GLEW_ARB_texture_gather) + +#endif /* GL_ARB_texture_gather */ + +/* ------------------ GL_ARB_texture_mirror_clamp_to_edge ------------------ */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 + +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 + +#define GLEW_ARB_texture_mirror_clamp_to_edge GLEW_GET_VAR(__GLEW_ARB_texture_mirror_clamp_to_edge) + +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_ARB 0x8370 + +#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) + +#endif /* GL_ARB_texture_mirrored_repeat */ + +/* ----------------------- GL_ARB_texture_multisample ---------------------- */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + +#define glGetMultisamplefv GLEW_GET_FUN(__glewGetMultisamplefv) +#define glSampleMaski GLEW_GET_FUN(__glewSampleMaski) +#define glTexImage2DMultisample GLEW_GET_FUN(__glewTexImage2DMultisample) +#define glTexImage3DMultisample GLEW_GET_FUN(__glewTexImage3DMultisample) + +#define GLEW_ARB_texture_multisample GLEW_GET_VAR(__GLEW_ARB_texture_multisample) + +#endif /* GL_ARB_texture_multisample */ + +/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 + +#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) + +#endif /* GL_ARB_texture_non_power_of_two */ + +/* ---------------------- GL_ARB_texture_query_levels ---------------------- */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 + +#define GLEW_ARB_texture_query_levels GLEW_GET_VAR(__GLEW_ARB_texture_query_levels) + +#endif /* GL_ARB_texture_query_levels */ + +/* ------------------------ GL_ARB_texture_query_lod ----------------------- */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 + +#define GLEW_ARB_texture_query_lod GLEW_GET_VAR(__GLEW_ARB_texture_query_lod) + +#endif /* GL_ARB_texture_query_lod */ + +/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ + +#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 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 + +#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) + +#endif /* GL_ARB_texture_rectangle */ + +/* --------------------------- GL_ARB_texture_rg --------------------------- */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 + +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#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 GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) + +#endif /* GL_ARB_texture_rg */ + +/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 + +#define GL_RGB10_A2UI 0x906F + +#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui) + +#endif /* GL_ARB_texture_rgb10_a2ui */ + +/* ------------------------ GL_ARB_texture_stencil8 ------------------------ */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 + +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GLEW_ARB_texture_stencil8 GLEW_GET_VAR(__GLEW_ARB_texture_stencil8) + +#endif /* GL_ARB_texture_stencil8 */ + +/* ------------------------- GL_ARB_texture_storage ------------------------ */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 + +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + +#define glTexStorage1D GLEW_GET_FUN(__glewTexStorage1D) +#define glTexStorage2D GLEW_GET_FUN(__glewTexStorage2D) +#define glTexStorage3D GLEW_GET_FUN(__glewTexStorage3D) +#define glTextureStorage1DEXT GLEW_GET_FUN(__glewTextureStorage1DEXT) +#define glTextureStorage2DEXT GLEW_GET_FUN(__glewTextureStorage2DEXT) +#define glTextureStorage3DEXT GLEW_GET_FUN(__glewTextureStorage3DEXT) + +#define GLEW_ARB_texture_storage GLEW_GET_VAR(__GLEW_ARB_texture_storage) + +#endif /* GL_ARB_texture_storage */ + +/* ------------------- GL_ARB_texture_storage_multisample ------------------ */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 + +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (GLAPIENTRY * PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + +#define glTexStorage2DMultisample GLEW_GET_FUN(__glewTexStorage2DMultisample) +#define glTexStorage3DMultisample GLEW_GET_FUN(__glewTexStorage3DMultisample) +#define glTextureStorage2DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage2DMultisampleEXT) +#define glTextureStorage3DMultisampleEXT GLEW_GET_FUN(__glewTextureStorage3DMultisampleEXT) + +#define GLEW_ARB_texture_storage_multisample GLEW_GET_VAR(__GLEW_ARB_texture_storage_multisample) + +#endif /* GL_ARB_texture_storage_multisample */ + +/* ------------------------- GL_ARB_texture_swizzle ------------------------ */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 + +#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 GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle) + +#endif /* GL_ARB_texture_swizzle */ + +/* -------------------------- GL_ARB_texture_view -------------------------- */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + +#define glTextureView GLEW_GET_FUN(__glewTextureView) + +#define GLEW_ARB_texture_view GLEW_GET_VAR(__GLEW_ARB_texture_view) + +#endif /* GL_ARB_texture_view */ + +/* --------------------------- GL_ARB_timer_query -------------------------- */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 + +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params); +typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); + +#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v) +#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v) +#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter) + +#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query) + +#endif /* GL_ARB_timer_query */ + +/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); + +#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback) +#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks) +#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback) +#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks) +#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback) +#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback) +#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback) + +#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2) + +#endif /* GL_ARB_transform_feedback2 */ + +/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 + +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_VERTEX_STREAMS 0x8E71 + +typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); + +#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed) +#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream) +#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed) +#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv) + +#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3) + +#endif /* GL_ARB_transform_feedback3 */ + +/* ------------------ GL_ARB_transform_feedback_instanced ------------------ */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); + +#define glDrawTransformFeedbackInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackInstanced) +#define glDrawTransformFeedbackStreamInstanced GLEW_GET_FUN(__glewDrawTransformFeedbackStreamInstanced) + +#define GLEW_ARB_transform_feedback_instanced GLEW_GET_VAR(__GLEW_ARB_transform_feedback_instanced) + +#endif /* GL_ARB_transform_feedback_instanced */ + +/* ---------------- GL_ARB_transform_feedback_overflow_query --------------- */ + +#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 + +#define GLEW_ARB_transform_feedback_overflow_query GLEW_GET_VAR(__GLEW_ARB_transform_feedback_overflow_query) + +#endif /* GL_ARB_transform_feedback_overflow_query */ + +/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ + +#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 (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); +typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); + +#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) +#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) +#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) +#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) + +#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) + +#endif /* GL_ARB_transpose_matrix */ + +/* ---------------------- GL_ARB_uniform_buffer_object --------------------- */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 + +#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 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName); +typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint* data); +typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar* uniformBlockName); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint* uniformIndices); +typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + +#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) +#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) +#define glGetActiveUniformBlockName GLEW_GET_FUN(__glewGetActiveUniformBlockName) +#define glGetActiveUniformBlockiv GLEW_GET_FUN(__glewGetActiveUniformBlockiv) +#define glGetActiveUniformName GLEW_GET_FUN(__glewGetActiveUniformName) +#define glGetActiveUniformsiv GLEW_GET_FUN(__glewGetActiveUniformsiv) +#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) +#define glGetUniformBlockIndex GLEW_GET_FUN(__glewGetUniformBlockIndex) +#define glGetUniformIndices GLEW_GET_FUN(__glewGetUniformIndices) +#define glUniformBlockBinding GLEW_GET_FUN(__glewUniformBlockBinding) + +#define GLEW_ARB_uniform_buffer_object GLEW_GET_VAR(__GLEW_ARB_uniform_buffer_object) + +#endif /* GL_ARB_uniform_buffer_object */ + +/* ------------------------ GL_ARB_vertex_array_bgra ----------------------- */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_ARB_vertex_array_bgra GLEW_GET_VAR(__GLEW_ARB_vertex_array_bgra) + +#endif /* GL_ARB_vertex_array_bgra */ + +/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 + +#define GL_VERTEX_ARRAY_BINDING 0x85B5 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); +typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); +typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); + +#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) +#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) +#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) +#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) + +#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) + +#endif /* GL_ARB_vertex_array_object */ + +/* ----------------------- GL_ARB_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + +#define glGetVertexAttribLdv GLEW_GET_FUN(__glewGetVertexAttribLdv) +#define glVertexAttribL1d GLEW_GET_FUN(__glewVertexAttribL1d) +#define glVertexAttribL1dv GLEW_GET_FUN(__glewVertexAttribL1dv) +#define glVertexAttribL2d GLEW_GET_FUN(__glewVertexAttribL2d) +#define glVertexAttribL2dv GLEW_GET_FUN(__glewVertexAttribL2dv) +#define glVertexAttribL3d GLEW_GET_FUN(__glewVertexAttribL3d) +#define glVertexAttribL3dv GLEW_GET_FUN(__glewVertexAttribL3dv) +#define glVertexAttribL4d GLEW_GET_FUN(__glewVertexAttribL4d) +#define glVertexAttribL4dv GLEW_GET_FUN(__glewVertexAttribL4dv) +#define glVertexAttribLPointer GLEW_GET_FUN(__glewVertexAttribLPointer) + +#define GLEW_ARB_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_64bit) + +#endif /* GL_ARB_vertex_attrib_64bit */ + +/* ---------------------- GL_ARB_vertex_attrib_binding --------------------- */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (GLAPIENTRY * PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); + +#define glBindVertexBuffer GLEW_GET_FUN(__glewBindVertexBuffer) +#define glVertexArrayBindVertexBufferEXT GLEW_GET_FUN(__glewVertexArrayBindVertexBufferEXT) +#define glVertexArrayVertexAttribBindingEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribBindingEXT) +#define glVertexArrayVertexAttribFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribFormatEXT) +#define glVertexArrayVertexAttribIFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIFormatEXT) +#define glVertexArrayVertexAttribLFormatEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLFormatEXT) +#define glVertexArrayVertexBindingDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexBindingDivisorEXT) +#define glVertexAttribBinding GLEW_GET_FUN(__glewVertexAttribBinding) +#define glVertexAttribFormat GLEW_GET_FUN(__glewVertexAttribFormat) +#define glVertexAttribIFormat GLEW_GET_FUN(__glewVertexAttribIFormat) +#define glVertexAttribLFormat GLEW_GET_FUN(__glewVertexAttribLFormat) +#define glVertexBindingDivisor GLEW_GET_FUN(__glewVertexBindingDivisor) + +#define GLEW_ARB_vertex_attrib_binding GLEW_GET_VAR(__GLEW_ARB_vertex_attrib_binding) + +#endif /* GL_ARB_vertex_attrib_binding */ + +/* -------------------------- GL_ARB_vertex_blend -------------------------- */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 + +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#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_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 (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); +typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); +typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); + +#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) +#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) +#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) +#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) +#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) +#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) +#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) +#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) +#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) +#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) + +#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) + +#endif /* GL_ARB_vertex_blend */ + +/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 + +#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 ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; + +typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); + +#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) +#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) +#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) +#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) +#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) +#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) +#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) +#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) +#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) +#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) +#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) + +#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) + +#endif /* GL_ARB_vertex_buffer_object */ + +/* ------------------------- GL_ARB_vertex_program ------------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); + +#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) +#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) +#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) +#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) +#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) +#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) +#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) +#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) +#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) +#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) +#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) +#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) +#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) +#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) +#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) +#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) +#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) +#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) +#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) +#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) +#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) +#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) +#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) +#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) +#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) +#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) +#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) +#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) +#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) +#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) +#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) +#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) +#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) +#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) +#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) +#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) +#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) +#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) +#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) +#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) +#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) +#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) +#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) +#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) +#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) +#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) +#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) +#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) +#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) +#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) +#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) +#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) +#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) +#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) +#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) +#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) +#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) +#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) +#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) +#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) +#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) +#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) + +#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) + +#endif /* GL_ARB_vertex_program */ + +/* -------------------------- GL_ARB_vertex_shader ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); +typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); + +#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) +#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) +#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) + +#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) + +#endif /* GL_ARB_vertex_shader */ + +/* ------------------- GL_ARB_vertex_type_10f_11f_11f_rev ------------------ */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 + +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B + +#define GLEW_ARB_vertex_type_10f_11f_11f_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_10f_11f_11f_rev) + +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 + +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_INT_2_10_10_10_REV 0x8D9F + +typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value); + +#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui) +#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv) +#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui) +#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv) +#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui) +#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv) +#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui) +#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv) +#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui) +#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv) +#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui) +#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv) +#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui) +#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv) +#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui) +#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv) +#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui) +#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv) +#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui) +#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv) +#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui) +#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv) +#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui) +#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv) +#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui) +#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv) +#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui) +#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv) +#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui) +#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv) +#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui) +#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv) +#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui) +#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv) +#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui) +#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv) +#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui) +#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv) + +#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev) + +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +/* ------------------------- GL_ARB_viewport_array ------------------------- */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 + +#define GL_DEPTH_RANGE 0x0B70 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#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 +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F + +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd * v); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble* data); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GLAPIENTRY * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); + +#define glDepthRangeArrayv GLEW_GET_FUN(__glewDepthRangeArrayv) +#define glDepthRangeIndexed GLEW_GET_FUN(__glewDepthRangeIndexed) +#define glGetDoublei_v GLEW_GET_FUN(__glewGetDoublei_v) +#define glGetFloati_v GLEW_GET_FUN(__glewGetFloati_v) +#define glScissorArrayv GLEW_GET_FUN(__glewScissorArrayv) +#define glScissorIndexed GLEW_GET_FUN(__glewScissorIndexed) +#define glScissorIndexedv GLEW_GET_FUN(__glewScissorIndexedv) +#define glViewportArrayv GLEW_GET_FUN(__glewViewportArrayv) +#define glViewportIndexedf GLEW_GET_FUN(__glewViewportIndexedf) +#define glViewportIndexedfv GLEW_GET_FUN(__glewViewportIndexedfv) + +#define GLEW_ARB_viewport_array GLEW_GET_VAR(__GLEW_ARB_viewport_array) + +#endif /* GL_ARB_viewport_array */ + +/* --------------------------- GL_ARB_window_pos --------------------------- */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); + +#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) +#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) +#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) +#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) +#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) +#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) +#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) +#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) +#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) +#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) +#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) +#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) +#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) +#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) +#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) +#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) + +#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) + +#endif /* GL_ARB_window_pos */ + +/* ------------------------- GL_ATIX_point_sprites ------------------------- */ + +#ifndef GL_ATIX_point_sprites +#define GL_ATIX_point_sprites 1 + +#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 +#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 +#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 +#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 +#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 +#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 + +#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) + +#endif /* GL_ATIX_point_sprites */ + +/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ + +#ifndef GL_ATIX_texture_env_combine3 +#define GL_ATIX_texture_env_combine3 1 + +#define GL_MODULATE_ADD_ATIX 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 +#define GL_MODULATE_SUBTRACT_ATIX 0x8746 + +#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) + +#endif /* GL_ATIX_texture_env_combine3 */ + +/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ + +#ifndef GL_ATIX_texture_env_route +#define GL_ATIX_texture_env_route 1 + +#define GL_SECONDARY_COLOR_ATIX 0x8747 +#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 +#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 + +#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) + +#endif /* GL_ATIX_texture_env_route */ + +/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ + +#ifndef GL_ATIX_vertex_shader_output_point_size +#define GL_ATIX_vertex_shader_output_point_size 1 + +#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E + +#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) + +#endif /* GL_ATIX_vertex_shader_output_point_size */ + +/* -------------------------- GL_ATI_draw_buffers -------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); + +#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) + +#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) + +#endif /* GL_ATI_draw_buffers */ + +/* -------------------------- GL_ATI_element_array ------------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer); + +#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) +#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) +#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) + +#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) + +#endif /* GL_ATI_element_array */ + +/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); + +#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) +#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) +#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) +#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) + +#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) + +#endif /* GL_ATI_envmap_bumpmap */ + +/* ------------------------- GL_ATI_fragment_shader ------------------------ */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 + +#define GL_2X_BIT_ATI 0x00000001 +#define GL_RED_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#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_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_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_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 + +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); + +#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) +#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) +#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) +#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) +#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) +#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) +#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) +#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) +#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) +#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) +#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) +#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) +#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) +#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) + +#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) + +#endif /* GL_ATI_fragment_shader */ + +/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 + +typedef void * (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); + +#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) +#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) + +#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) + +#endif /* GL_ATI_map_object_buffer */ + +/* ----------------------------- GL_ATI_meminfo ---------------------------- */ + +#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 + +#define GLEW_ATI_meminfo GLEW_GET_VAR(__GLEW_ATI_meminfo) + +#endif /* GL_ATI_meminfo */ + +/* -------------------------- GL_ATI_pn_triangles -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); + +#define glPNTrianglesfATI GLEW_GET_FUN(__glewPNTrianglesfATI) +#define glPNTrianglesiATI GLEW_GET_FUN(__glewPNTrianglesiATI) + +#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) + +#endif /* GL_ATI_pn_triangles */ + +/* ------------------------ GL_ATI_separate_stencil ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + +#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) +#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) + +#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) + +#endif /* GL_ATI_separate_stencil */ + +/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ + +#ifndef GL_ATI_shader_texture_lod +#define GL_ATI_shader_texture_lod 1 + +#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) + +#endif /* GL_ATI_shader_texture_lod */ + +/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 + +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 + +#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) + +#endif /* GL_ATI_text_fragment_shader */ + +/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ + +#ifndef GL_ATI_texture_compression_3dc +#define GL_ATI_texture_compression_3dc 1 + +#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 + +#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) + +#endif /* GL_ATI_texture_compression_3dc */ + +/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ + +#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 + +#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) + +#endif /* GL_ATI_texture_env_combine3 */ + +/* -------------------------- GL_ATI_texture_float ------------------------- */ + +#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 + +#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) + +#endif /* GL_ATI_texture_float */ + +/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ + +#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 + +#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) + +#endif /* GL_ATI_texture_mirror_once */ + +/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ + +#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 void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage); +typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + +#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) +#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) +#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) +#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) +#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) +#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) +#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) +#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) +#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) +#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) +#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) +#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) + +#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) + +#endif /* GL_ATI_vertex_array_object */ + +/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); + +#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) +#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) +#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) + +#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) + +#endif /* GL_ATI_vertex_attrib_array_object */ + +/* ------------------------- GL_ATI_vertex_streams ------------------------- */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 + +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_SOURCE_ATI 0x876C +#define GL_VERTEX_STREAM0_ATI 0x876D +#define GL_VERTEX_STREAM1_ATI 0x876E +#define GL_VERTEX_STREAM2_ATI 0x876F +#define GL_VERTEX_STREAM3_ATI 0x8770 +#define GL_VERTEX_STREAM4_ATI 0x8771 +#define GL_VERTEX_STREAM5_ATI 0x8772 +#define GL_VERTEX_STREAM6_ATI 0x8773 +#define GL_VERTEX_STREAM7_ATI 0x8774 + +typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); + +#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) +#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) +#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) +#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) +#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) +#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) +#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) +#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) +#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) +#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) +#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) +#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) +#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) +#define glVertexStream1dATI GLEW_GET_FUN(__glewVertexStream1dATI) +#define glVertexStream1dvATI GLEW_GET_FUN(__glewVertexStream1dvATI) +#define glVertexStream1fATI GLEW_GET_FUN(__glewVertexStream1fATI) +#define glVertexStream1fvATI GLEW_GET_FUN(__glewVertexStream1fvATI) +#define glVertexStream1iATI GLEW_GET_FUN(__glewVertexStream1iATI) +#define glVertexStream1ivATI GLEW_GET_FUN(__glewVertexStream1ivATI) +#define glVertexStream1sATI GLEW_GET_FUN(__glewVertexStream1sATI) +#define glVertexStream1svATI GLEW_GET_FUN(__glewVertexStream1svATI) +#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) +#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) +#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) +#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) +#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) +#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) +#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) +#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) +#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) +#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) +#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) +#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) +#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) +#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) +#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) +#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) +#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) +#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) +#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) +#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) +#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) +#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) +#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) +#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) + +#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) + +#endif /* GL_ATI_vertex_streams */ + +/* --------------------------- GL_EXT_422_pixels --------------------------- */ + +#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 + +#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) + +#endif /* GL_EXT_422_pixels */ + +/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ + +#ifndef GL_EXT_Cg_shader +#define GL_EXT_Cg_shader 1 + +#define GL_CG_VERTEX_SHADER_EXT 0x890E +#define GL_CG_FRAGMENT_SHADER_EXT 0x890F + +#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) + +#endif /* GL_EXT_Cg_shader */ + +/* ------------------------------ GL_EXT_abgr ------------------------------ */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 + +#define GL_ABGR_EXT 0x8000 + +#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) + +#endif /* GL_EXT_abgr */ + +/* ------------------------------ GL_EXT_bgra ------------------------------ */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 + +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 + +#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) + +#endif /* GL_EXT_bgra */ + +/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ + +#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 GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); + +#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) +#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) +#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) + +#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) + +#endif /* GL_EXT_bindable_uniform */ + +/* --------------------------- GL_EXT_blend_color -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + +#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) + +#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) + +#endif /* GL_EXT_blend_color */ + +/* --------------------- GL_EXT_blend_equation_separate -------------------- */ + +#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 (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); + +#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) + +#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) + +#endif /* GL_EXT_blend_equation_separate */ + +/* ----------------------- GL_EXT_blend_func_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 (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) + +#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) + +#endif /* GL_EXT_blend_func_separate */ + +/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 + +#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) + +#endif /* GL_EXT_blend_logic_op */ + +/* -------------------------- GL_EXT_blend_minmax -------------------------- */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 + +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 + +typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); + +#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) + +#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) + +#endif /* GL_EXT_blend_minmax */ + +/* ------------------------- GL_EXT_blend_subtract ------------------------- */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 + +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B + +#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) + +#endif /* GL_EXT_blend_subtract */ + +/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 + +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 + +#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) + +#endif /* GL_EXT_clip_volume_hint */ + +/* ------------------------------ GL_EXT_cmyka ----------------------------- */ + +#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 + +#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) + +#endif /* GL_EXT_cmyka */ + +/* ------------------------- GL_EXT_color_subtable ------------------------- */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 + +typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + +#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) +#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) + +#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) + +#endif /* GL_EXT_color_subtable */ + +/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ + +#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 (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); + +#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) +#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) + +#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) + +#endif /* GL_EXT_compiled_vertex_array */ + +/* --------------------------- GL_EXT_convolution -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); + +#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) +#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) +#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) +#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) +#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) +#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) +#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) +#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) +#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) +#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) +#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) +#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) +#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) + +#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) + +#endif /* GL_EXT_convolution */ + +/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ + +#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 (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void *pointer); + +#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) +#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) + +#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) + +#endif /* GL_EXT_coordinate_frame */ + +/* -------------------------- GL_EXT_copy_texture -------------------------- */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 + +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) +#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) +#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) +#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) +#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) + +#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) + +#endif /* GL_EXT_copy_texture */ + +/* --------------------------- GL_EXT_cull_vertex -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); + +#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) +#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) + +#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) + +#endif /* GL_EXT_cull_vertex */ + +/* --------------------------- GL_EXT_debug_label -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar *label); +typedef void (GLAPIENTRY * PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar* label); + +#define glGetObjectLabelEXT GLEW_GET_FUN(__glewGetObjectLabelEXT) +#define glLabelObjectEXT GLEW_GET_FUN(__glewLabelObjectEXT) + +#define GLEW_EXT_debug_label GLEW_GET_VAR(__GLEW_EXT_debug_label) + +#endif /* GL_EXT_debug_label */ + +/* -------------------------- GL_EXT_debug_marker -------------------------- */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 + +typedef void (GLAPIENTRY * PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar* marker); +typedef void (GLAPIENTRY * PFNGLPOPGROUPMARKEREXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar* marker); + +#define glInsertEventMarkerEXT GLEW_GET_FUN(__glewInsertEventMarkerEXT) +#define glPopGroupMarkerEXT GLEW_GET_FUN(__glewPopGroupMarkerEXT) +#define glPushGroupMarkerEXT GLEW_GET_FUN(__glewPushGroupMarkerEXT) + +#define GLEW_EXT_debug_marker GLEW_GET_VAR(__GLEW_EXT_debug_marker) + +#endif /* GL_EXT_debug_marker */ + +/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ + +#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 (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); + +#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) + +#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) + +#endif /* GL_EXT_depth_bounds_test */ + +/* ----------------------- GL_EXT_direct_state_access ---------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GLAPIENTRY * 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 *data); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void *img); +typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void *img); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string); +typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void** params); +typedef void (GLAPIENTRY * PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void** params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint* param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void** param); +typedef void (GLAPIENTRY * PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void** param); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef void * (GLAPIENTRY * PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); +typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (GLAPIENTRY * PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); +typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * 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 GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + +#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) +#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) +#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) +#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) +#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) +#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) +#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) +#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) +#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) +#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) +#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) +#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) +#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) +#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) +#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) +#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) +#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) +#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) +#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) +#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) +#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) +#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) +#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) +#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) +#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) +#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) +#define glDisableClientStateiEXT GLEW_GET_FUN(__glewDisableClientStateiEXT) +#define glDisableVertexArrayAttribEXT GLEW_GET_FUN(__glewDisableVertexArrayAttribEXT) +#define glDisableVertexArrayEXT GLEW_GET_FUN(__glewDisableVertexArrayEXT) +#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) +#define glEnableClientStateiEXT GLEW_GET_FUN(__glewEnableClientStateiEXT) +#define glEnableVertexArrayAttribEXT GLEW_GET_FUN(__glewEnableVertexArrayAttribEXT) +#define glEnableVertexArrayEXT GLEW_GET_FUN(__glewEnableVertexArrayEXT) +#define glFlushMappedNamedBufferRangeEXT GLEW_GET_FUN(__glewFlushMappedNamedBufferRangeEXT) +#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) +#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) +#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) +#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) +#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) +#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) +#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) +#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) +#define glGetDoublei_vEXT GLEW_GET_FUN(__glewGetDoublei_vEXT) +#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) +#define glGetFloati_vEXT GLEW_GET_FUN(__glewGetFloati_vEXT) +#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) +#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) +#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) +#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) +#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) +#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) +#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) +#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) +#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) +#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) +#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) +#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) +#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) +#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) +#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) +#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) +#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) +#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) +#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) +#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) +#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) +#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) +#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) +#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) +#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) +#define glGetPointeri_vEXT GLEW_GET_FUN(__glewGetPointeri_vEXT) +#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) +#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) +#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) +#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) +#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) +#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) +#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) +#define glGetVertexArrayIntegeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayIntegeri_vEXT) +#define glGetVertexArrayIntegervEXT GLEW_GET_FUN(__glewGetVertexArrayIntegervEXT) +#define glGetVertexArrayPointeri_vEXT GLEW_GET_FUN(__glewGetVertexArrayPointeri_vEXT) +#define glGetVertexArrayPointervEXT GLEW_GET_FUN(__glewGetVertexArrayPointervEXT) +#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) +#define glMapNamedBufferRangeEXT GLEW_GET_FUN(__glewMapNamedBufferRangeEXT) +#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) +#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) +#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) +#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) +#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) +#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) +#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) +#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) +#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) +#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) +#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) +#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) +#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) +#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) +#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) +#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) +#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) +#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) +#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) +#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) +#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) +#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) +#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) +#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) +#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) +#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) +#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) +#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) +#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) +#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) +#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) +#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) +#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) +#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) +#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) +#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) +#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) +#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) +#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) +#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) +#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) +#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) +#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) +#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) +#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) +#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) +#define glNamedCopyBufferSubDataEXT GLEW_GET_FUN(__glewNamedCopyBufferSubDataEXT) +#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) +#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) +#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) +#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) +#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) +#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) +#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) +#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) +#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) +#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) +#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) +#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) +#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) +#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) +#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) +#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) +#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) +#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) +#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) +#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) +#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) +#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) +#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) +#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) +#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) +#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) +#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) +#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) +#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) +#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) +#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) +#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) +#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) +#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) +#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) +#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) +#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) +#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) +#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) +#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) +#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) +#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) +#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) +#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) +#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) +#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) +#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) +#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) +#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) +#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) +#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) +#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) +#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) +#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) +#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) +#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) +#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) +#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) +#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) +#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) +#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) +#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) +#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) +#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) +#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) +#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) +#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) +#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) +#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) +#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) +#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) +#define glVertexArrayColorOffsetEXT GLEW_GET_FUN(__glewVertexArrayColorOffsetEXT) +#define glVertexArrayEdgeFlagOffsetEXT GLEW_GET_FUN(__glewVertexArrayEdgeFlagOffsetEXT) +#define glVertexArrayFogCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayFogCoordOffsetEXT) +#define glVertexArrayIndexOffsetEXT GLEW_GET_FUN(__glewVertexArrayIndexOffsetEXT) +#define glVertexArrayMultiTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayMultiTexCoordOffsetEXT) +#define glVertexArrayNormalOffsetEXT GLEW_GET_FUN(__glewVertexArrayNormalOffsetEXT) +#define glVertexArraySecondaryColorOffsetEXT GLEW_GET_FUN(__glewVertexArraySecondaryColorOffsetEXT) +#define glVertexArrayTexCoordOffsetEXT GLEW_GET_FUN(__glewVertexArrayTexCoordOffsetEXT) +#define glVertexArrayVertexAttribDivisorEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribDivisorEXT) +#define glVertexArrayVertexAttribIOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribIOffsetEXT) +#define glVertexArrayVertexAttribOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribOffsetEXT) +#define glVertexArrayVertexOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexOffsetEXT) + +#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) + +#endif /* GL_EXT_direct_state_access */ + +/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 + +typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); +typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); +typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); + +#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) +#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) +#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) +#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) +#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) +#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) + +#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) + +#endif /* GL_EXT_draw_buffers2 */ + +/* ------------------------- GL_EXT_draw_instanced ------------------------- */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 + +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); + +#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) +#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) + +#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) + +#endif /* GL_EXT_draw_instanced */ + +/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ + +#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 (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + +#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) + +#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) + +#endif /* GL_EXT_draw_range_elements */ + +/* ---------------------------- GL_EXT_fog_coord --------------------------- */ + +#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 (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); + +#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) +#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) +#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) +#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) +#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) + +#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) + +#endif /* GL_EXT_fog_coord */ + +/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ + +#ifndef GL_EXT_fragment_lighting +#define GL_EXT_fragment_lighting 1 + +#define GL_FRAGMENT_LIGHTING_EXT 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 +#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 +#define GL_LIGHT_ENV_MODE_EXT 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B +#define GL_FRAGMENT_LIGHT0_EXT 0x840C +#define GL_FRAGMENT_LIGHT7_EXT 0x8413 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); + +#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) +#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) +#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) +#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) +#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) +#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) +#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) +#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) +#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) +#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) +#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) +#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) +#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) +#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) +#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) +#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) +#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) +#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) + +#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) + +#endif /* GL_EXT_fragment_lighting */ + +/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 + +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA + +typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) + +#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) + +#endif /* GL_EXT_framebuffer_blit */ + +/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) + +#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) + +#endif /* GL_EXT_framebuffer_multisample */ + +/* --------------- GL_EXT_framebuffer_multisample_blit_scaled -------------- */ + +#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 + +#define GLEW_EXT_framebuffer_multisample_blit_scaled GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample_blit_scaled) + +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ + +#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 void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); +typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + +#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) +#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) +#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) +#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) +#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) +#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) +#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) +#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) +#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) +#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) +#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) +#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) +#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) +#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) +#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) +#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) +#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) + +#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) + +#endif /* GL_EXT_framebuffer_object */ + +/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 + +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA + +#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) + +#endif /* GL_EXT_framebuffer_sRGB */ + +/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 + +#define GL_LINES_ADJACENCY_EXT 0xA +#define GL_LINE_STRIP_ADJACENCY_EXT 0xB +#define GL_TRIANGLES_ADJACENCY_EXT 0xC +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#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_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_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); + +#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) +#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) +#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) + +#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) + +#endif /* GL_EXT_geometry_shader4 */ + +/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 + +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); + +#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) +#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) + +#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) + +#endif /* GL_EXT_gpu_program_parameters */ + +/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + +#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) +#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) +#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) +#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) +#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) +#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) +#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) +#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) +#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) +#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) +#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) +#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) +#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) +#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) +#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) +#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) +#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) +#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) +#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) +#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) +#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) +#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) +#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) +#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) +#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) +#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) +#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) +#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) +#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) +#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) +#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) +#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) +#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) +#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) + +#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) + +#endif /* GL_EXT_gpu_shader4 */ + +/* ---------------------------- GL_EXT_histogram --------------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); + +#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) +#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) +#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) +#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) +#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) +#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) +#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) +#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) +#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) +#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) + +#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) + +#endif /* GL_EXT_histogram */ + +/* ----------------------- GL_EXT_index_array_formats ---------------------- */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 + +#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) + +#endif /* GL_EXT_index_array_formats */ + +/* --------------------------- GL_EXT_index_func --------------------------- */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 + +typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); + +#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) + +#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) + +#endif /* GL_EXT_index_func */ + +/* ------------------------- GL_EXT_index_material ------------------------- */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 + +typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) + +#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) + +#endif /* GL_EXT_index_material */ + +/* -------------------------- GL_EXT_index_texture ------------------------- */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 + +#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) + +#endif /* GL_EXT_index_texture */ + +/* -------------------------- GL_EXT_light_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 (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); + +#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) +#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) +#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) + +#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) + +#endif /* GL_EXT_light_texture */ + +/* ------------------------- GL_EXT_misc_attribute ------------------------- */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 + +#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) + +#endif /* GL_EXT_misc_attribute */ + +/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const void *const *indices, GLsizei primcount); + +#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) +#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) + +#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) + +#endif /* GL_EXT_multi_draw_arrays */ + +/* --------------------------- GL_EXT_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); + +#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) +#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) + +#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) + +#endif /* GL_EXT_multisample */ + +/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) + +#endif /* GL_EXT_packed_depth_stencil */ + +/* -------------------------- GL_EXT_packed_float -------------------------- */ + +#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 + +#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) + +#endif /* GL_EXT_packed_float */ + +/* -------------------------- GL_EXT_packed_pixels ------------------------- */ + +#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 + +#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) + +#endif /* GL_EXT_packed_pixels */ + +/* ------------------------ GL_EXT_paletted_texture ------------------------ */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 + +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 +#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF +#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 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B + +typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); + +#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) +#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) +#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) +#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) + +#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) + +#endif /* GL_EXT_paletted_texture */ + +/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ + +#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 + +#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) + +#endif /* GL_EXT_pixel_buffer_object */ + +/* ------------------------- GL_EXT_pixel_transform ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) +#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) +#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) +#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) +#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) +#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) + +#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) + +#endif /* GL_EXT_pixel_transform */ + +/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 + +#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) + +#endif /* GL_EXT_pixel_transform_color_table */ + +/* ------------------------ GL_EXT_point_parameters ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat* params); + +#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) +#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) + +#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) + +#endif /* GL_EXT_point_parameters */ + +/* ------------------------- GL_EXT_polygon_offset ------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); + +#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) + +#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) + +#endif /* GL_EXT_polygon_offset */ + +/* ---------------------- GL_EXT_polygon_offset_clamp ---------------------- */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 + +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B + +typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); + +#define glPolygonOffsetClampEXT GLEW_GET_FUN(__glewPolygonOffsetClampEXT) + +#define GLEW_EXT_polygon_offset_clamp GLEW_GET_VAR(__GLEW_EXT_polygon_offset_clamp) + +#endif /* GL_EXT_polygon_offset_clamp */ + +/* ----------------------- GL_EXT_post_depth_coverage ---------------------- */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 + +#define GLEW_EXT_post_depth_coverage GLEW_GET_VAR(__GLEW_EXT_post_depth_coverage) + +#endif /* GL_EXT_post_depth_coverage */ + +/* ------------------------ GL_EXT_provoking_vertex ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); + +#define glProvokingVertexEXT GLEW_GET_FUN(__glewProvokingVertexEXT) + +#define GLEW_EXT_provoking_vertex GLEW_GET_VAR(__GLEW_EXT_provoking_vertex) + +#endif /* GL_EXT_provoking_vertex */ + +/* ----------------------- GL_EXT_raster_multisample ----------------------- */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 + +#define GL_COLOR_SAMPLES_NV 0x8E20 +#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 +#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_TABLE_NV 0x9331 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 + +typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +typedef void (GLAPIENTRY * PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat* v); +typedef void (GLAPIENTRY * PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); + +#define glCoverageModulationNV GLEW_GET_FUN(__glewCoverageModulationNV) +#define glCoverageModulationTableNV GLEW_GET_FUN(__glewCoverageModulationTableNV) +#define glGetCoverageModulationTableNV GLEW_GET_FUN(__glewGetCoverageModulationTableNV) +#define glRasterSamplesEXT GLEW_GET_FUN(__glewRasterSamplesEXT) + +#define GLEW_EXT_raster_multisample GLEW_GET_VAR(__GLEW_EXT_raster_multisample) + +#endif /* GL_EXT_raster_multisample */ + +/* ------------------------- GL_EXT_rescale_normal ------------------------- */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 + +#define GL_RESCALE_NORMAL_EXT 0x803A + +#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) + +#endif /* GL_EXT_rescale_normal */ + +/* -------------------------- GL_EXT_scene_marker -------------------------- */ + +#ifndef GL_EXT_scene_marker +#define GL_EXT_scene_marker 1 + +typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); + +#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) +#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) + +#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) + +#endif /* GL_EXT_scene_marker */ + +/* ------------------------- GL_EXT_secondary_color ------------------------ */ + +#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 (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); + +#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) +#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) +#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) +#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) +#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) +#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) +#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) +#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) +#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) +#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) +#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) +#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) +#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) +#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) +#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) +#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) +#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) + +#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) + +#endif /* GL_EXT_secondary_color */ + +/* --------------------- GL_EXT_separate_shader_objects -------------------- */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 + +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D + +typedef void (GLAPIENTRY * PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar* string); +typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); + +#define glActiveProgramEXT GLEW_GET_FUN(__glewActiveProgramEXT) +#define glCreateShaderProgramEXT GLEW_GET_FUN(__glewCreateShaderProgramEXT) +#define glUseShaderProgramEXT GLEW_GET_FUN(__glewUseShaderProgramEXT) + +#define GLEW_EXT_separate_shader_objects GLEW_GET_VAR(__GLEW_EXT_separate_shader_objects) + +#endif /* GL_EXT_separate_shader_objects */ + +/* --------------------- GL_EXT_separate_specular_color -------------------- */ + +#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 + +#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) + +#endif /* GL_EXT_separate_specular_color */ + +/* ------------------- GL_EXT_shader_image_load_formatted ------------------ */ + +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 + +#define GLEW_EXT_shader_image_load_formatted GLEW_GET_VAR(__GLEW_EXT_shader_image_load_formatted) + +#endif /* GL_EXT_shader_image_load_formatted */ + +/* --------------------- GL_EXT_shader_image_load_store -------------------- */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 + +#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_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_ALL_BARRIER_BITS_EXT 0xFFFFFFFF + +typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); + +#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT) +#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT) + +#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store) + +#endif /* GL_EXT_shader_image_load_store */ + +/* ----------------------- GL_EXT_shader_integer_mix ----------------------- */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 + +#define GLEW_EXT_shader_integer_mix GLEW_GET_VAR(__GLEW_EXT_shader_integer_mix) + +#endif /* GL_EXT_shader_integer_mix */ + +/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 + +#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) + +#endif /* GL_EXT_shadow_funcs */ + +/* --------------------- GL_EXT_shared_texture_palette --------------------- */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 + +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB + +#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) + +#endif /* GL_EXT_shared_texture_palette */ + +/* ------------------------- GL_EXT_sparse_texture2 ------------------------ */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 + +#define GLEW_EXT_sparse_texture2 GLEW_GET_VAR(__GLEW_EXT_sparse_texture2) + +#endif /* GL_EXT_sparse_texture2 */ + +/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ + +#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 + +#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) + +#endif /* GL_EXT_stencil_clear_tag */ + +/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ + +#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 (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); + +#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) + +#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) + +#endif /* GL_EXT_stencil_two_side */ + +/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 + +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 + +#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) + +#endif /* GL_EXT_stencil_wrap */ + +/* --------------------------- GL_EXT_subtexture --------------------------- */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 + +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + +#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) +#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) +#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) + +#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) + +#endif /* GL_EXT_subtexture */ + +/* ----------------------------- GL_EXT_texture ---------------------------- */ + +#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 GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) + +#endif /* GL_EXT_texture */ + +/* ---------------------------- GL_EXT_texture3D --------------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + +#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) + +#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) + +#endif /* GL_EXT_texture3D */ + +/* -------------------------- GL_EXT_texture_array ------------------------- */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 + +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#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 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + +#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) + +#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) + +#endif /* GL_EXT_texture_array */ + +/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); + +#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) + +#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) + +#endif /* GL_EXT_texture_buffer_object */ + +/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 + +#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) + +#endif /* GL_EXT_texture_compression_dxt1 */ + +/* -------------------- GL_EXT_texture_compression_latc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) + +#endif /* GL_EXT_texture_compression_latc */ + +/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) + +#endif /* GL_EXT_texture_compression_rgtc */ + +/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ + +#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 + +#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) + +#endif /* GL_EXT_texture_compression_s3tc */ + +/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ + +#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 + +#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) + +#endif /* GL_EXT_texture_cube_map */ + +/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ + +#ifndef GL_EXT_texture_edge_clamp +#define GL_EXT_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_EXT 0x812F + +#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) + +#endif /* GL_EXT_texture_edge_clamp */ + +/* --------------------------- GL_EXT_texture_env -------------------------- */ + +#ifndef GL_EXT_texture_env +#define GL_EXT_texture_env 1 + +#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) + +#endif /* GL_EXT_texture_env */ + +/* ------------------------- GL_EXT_texture_env_add ------------------------ */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 + +#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) + +#endif /* GL_EXT_texture_env_add */ + +/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ + +#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 + +#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) + +#endif /* GL_EXT_texture_env_combine */ + +/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ + +#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 + +#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) + +#endif /* GL_EXT_texture_env_dot3 */ + +/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ + +#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 + +#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) + +#endif /* GL_EXT_texture_filter_anisotropic */ + +/* ---------------------- GL_EXT_texture_filter_minmax --------------------- */ + +#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 + +#define GLEW_EXT_texture_filter_minmax GLEW_GET_VAR(__GLEW_EXT_texture_filter_minmax) + +#endif /* GL_EXT_texture_filter_minmax */ + +/* ------------------------- GL_EXT_texture_integer ------------------------ */ + +#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 (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); + +#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) +#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) +#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) +#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) +#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) +#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) + +#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) + +#endif /* GL_EXT_texture_integer */ + +/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ + +#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 + +#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) + +#endif /* GL_EXT_texture_lod_bias */ + +/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ + +#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 + +#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) + +#endif /* GL_EXT_texture_mirror_clamp */ + +/* ------------------------- GL_EXT_texture_object ------------------------- */ + +#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 (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); +typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); +typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); + +#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) +#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) +#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) +#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) +#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) +#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) + +#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) + +#endif /* GL_EXT_texture_object */ + +/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); + +#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) + +#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) + +#endif /* GL_EXT_texture_perturb_normal */ + +/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ + +#ifndef GL_EXT_texture_rectangle +#define GL_EXT_texture_rectangle 1 + +#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 + +#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) + +#endif /* GL_EXT_texture_rectangle */ + +/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ + +#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 + +#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) + +#endif /* GL_EXT_texture_sRGB */ + +/* ----------------------- 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 + +#define GLEW_EXT_texture_sRGB_decode GLEW_GET_VAR(__GLEW_EXT_texture_sRGB_decode) + +#endif /* GL_EXT_texture_sRGB_decode */ + +/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ + +#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 + +#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) + +#endif /* GL_EXT_texture_shared_exponent */ + +/* -------------------------- GL_EXT_texture_snorm ------------------------- */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 + +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#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_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 GLEW_EXT_texture_snorm GLEW_GET_VAR(__GLEW_EXT_texture_snorm) + +#endif /* GL_EXT_texture_snorm */ + +/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ + +#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 + +#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) + +#endif /* GL_EXT_texture_swizzle */ + +/* --------------------------- GL_EXT_timer_query -------------------------- */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 + +#define GL_TIME_ELAPSED_EXT 0x88BF + +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); +typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); + +#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) +#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) + +#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) + +#endif /* GL_EXT_timer_query */ + +/* ----------------------- GL_EXT_transform_feedback ----------------------- */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 + +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#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_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F + +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar * const* varyings, GLenum bufferMode); + +#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) +#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) +#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) +#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) +#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) +#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) +#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) + +#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) + +#endif /* GL_EXT_transform_feedback */ + +/* -------------------------- GL_EXT_vertex_array -------------------------- */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 + +#define GL_DOUBLE_EXT 0x140A +#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 (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); + +#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) +#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) +#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) +#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) +#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) +#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) +#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) +#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) + +#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) + +#endif /* GL_EXT_vertex_array */ + +/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 + +#define GL_BGRA 0x80E1 + +#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) + +#endif /* GL_EXT_vertex_array_bgra */ + +/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 + +#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 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + +#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT) +#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT) +#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT) +#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT) +#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT) +#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT) +#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT) +#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT) +#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT) +#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT) +#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT) + +#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit) + +#endif /* GL_EXT_vertex_attrib_64bit */ + +/* -------------------------- GL_EXT_vertex_shader ------------------------- */ + +#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_INVARIANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_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 (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); +typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data); +typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, void *addr); +typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, void *addr); +typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, void *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); +typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); +typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + +#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) +#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) +#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) +#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) +#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) +#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) +#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) +#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) +#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) +#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) +#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) +#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) +#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) +#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) +#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) +#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) +#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) +#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) +#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) +#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) +#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) +#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) +#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) +#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) +#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) +#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) +#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) +#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) +#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) +#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) +#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) +#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) +#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) +#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) +#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) +#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) +#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) +#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) +#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) +#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) +#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) +#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) + +#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) + +#endif /* GL_EXT_vertex_shader */ + +/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 + +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#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 (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); + +#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) +#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) +#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) + +#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) + +#endif /* GL_EXT_vertex_weighting */ + +/* ------------------------- GL_EXT_x11_sync_object ------------------------ */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 + +#define GL_SYNC_X11_FENCE_EXT 0x90E1 + +typedef GLsync (GLAPIENTRY * PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); + +#define glImportSyncEXT GLEW_GET_FUN(__glewImportSyncEXT) + +#define GLEW_EXT_x11_sync_object GLEW_GET_VAR(__GLEW_EXT_x11_sync_object) + +#endif /* GL_EXT_x11_sync_object */ + +/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 + +typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); + +#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) + +#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) + +#endif /* GL_GREMEDY_frame_terminator */ + +/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 + +typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string); + +#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) + +#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) + +#endif /* GL_GREMEDY_string_marker */ + +/* --------------------- GL_HP_convolution_border_modes -------------------- */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 + +#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) + +#endif /* GL_HP_convolution_border_modes */ + +/* ------------------------- GL_HP_image_transform ------------------------- */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 + +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) +#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) +#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) +#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) +#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) +#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) + +#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) + +#endif /* GL_HP_image_transform */ + +/* -------------------------- GL_HP_occlusion_test ------------------------- */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 + +#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) + +#endif /* GL_HP_occlusion_test */ + +/* ------------------------- GL_HP_texture_lighting ------------------------ */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 + +#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) + +#endif /* GL_HP_texture_lighting */ + +/* --------------------------- GL_IBM_cull_vertex -------------------------- */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 + +#define GL_CULL_VERTEX_IBM 103050 + +#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) + +#endif /* GL_IBM_cull_vertex */ + +/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 + +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei primcount, GLint modestride); + +#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) +#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) + +#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) + +#endif /* GL_IBM_multimode_draw_arrays */ + +/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 + +#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 + +#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) + +#endif /* GL_IBM_rasterpos_clip */ + +/* --------------------------- GL_IBM_static_data -------------------------- */ + +#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 + +#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) + +#endif /* GL_IBM_static_data */ + +/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 + +#define GL_MIRRORED_REPEAT_IBM 0x8370 + +#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) + +#endif /* GL_IBM_texture_mirrored_repeat */ + +/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); + +#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) +#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) +#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) +#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) +#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) +#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) +#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) +#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) + +#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) + +#endif /* GL_IBM_vertex_array_lists */ + +/* -------------------------- GL_INGR_color_clamp -------------------------- */ + +#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 + +#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) + +#endif /* GL_INGR_color_clamp */ + +/* ------------------------- GL_INGR_interlace_read ------------------------ */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 + +#define GL_INTERLACE_READ_INGR 0x8568 + +#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) + +#endif /* GL_INGR_interlace_read */ + +/* ------------------- GL_INTEL_fragment_shader_ordering ------------------- */ + +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 + +#define GLEW_INTEL_fragment_shader_ordering GLEW_GET_VAR(__GLEW_INTEL_fragment_shader_ordering) + +#endif /* GL_INTEL_fragment_shader_ordering */ + +/* -------------------------- GL_INTEL_map_texture ------------------------- */ + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 + +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF + +typedef void * (GLAPIENTRY * PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum *layout); +typedef void (GLAPIENTRY * PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); +typedef void (GLAPIENTRY * PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); + +#define glMapTexture2DINTEL GLEW_GET_FUN(__glewMapTexture2DINTEL) +#define glSyncTextureINTEL GLEW_GET_FUN(__glewSyncTextureINTEL) +#define glUnmapTexture2DINTEL GLEW_GET_FUN(__glewUnmapTexture2DINTEL) + +#define GLEW_INTEL_map_texture GLEW_GET_VAR(__GLEW_INTEL_map_texture) + +#endif /* GL_INTEL_map_texture */ + +/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); + +#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) +#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) +#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) +#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) + +#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) + +#endif /* GL_INTEL_parallel_arrays */ + +/* ----------------------- GL_INTEL_performance_query ---------------------- */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 + +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x0000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x0001 +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#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 (GLAPIENTRY * PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GLAPIENTRY * PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint* queryHandle); +typedef void (GLAPIENTRY * PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GLAPIENTRY * PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GLAPIENTRY * PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint* queryId); +typedef void (GLAPIENTRY * PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint* nextQueryId); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GLAPIENTRY * PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar* queryName, GLuint *queryId); +typedef void (GLAPIENTRY * PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar* queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); + +#define glBeginPerfQueryINTEL GLEW_GET_FUN(__glewBeginPerfQueryINTEL) +#define glCreatePerfQueryINTEL GLEW_GET_FUN(__glewCreatePerfQueryINTEL) +#define glDeletePerfQueryINTEL GLEW_GET_FUN(__glewDeletePerfQueryINTEL) +#define glEndPerfQueryINTEL GLEW_GET_FUN(__glewEndPerfQueryINTEL) +#define glGetFirstPerfQueryIdINTEL GLEW_GET_FUN(__glewGetFirstPerfQueryIdINTEL) +#define glGetNextPerfQueryIdINTEL GLEW_GET_FUN(__glewGetNextPerfQueryIdINTEL) +#define glGetPerfCounterInfoINTEL GLEW_GET_FUN(__glewGetPerfCounterInfoINTEL) +#define glGetPerfQueryDataINTEL GLEW_GET_FUN(__glewGetPerfQueryDataINTEL) +#define glGetPerfQueryIdByNameINTEL GLEW_GET_FUN(__glewGetPerfQueryIdByNameINTEL) +#define glGetPerfQueryInfoINTEL GLEW_GET_FUN(__glewGetPerfQueryInfoINTEL) + +#define GLEW_INTEL_performance_query GLEW_GET_VAR(__GLEW_INTEL_performance_query) + +#endif /* GL_INTEL_performance_query */ + +/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ + +#ifndef GL_INTEL_texture_scissor +#define GL_INTEL_texture_scissor 1 + +typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); +typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); + +#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) +#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) + +#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) + +#endif /* GL_INTEL_texture_scissor */ + +/* --------------------- GL_KHR_blend_equation_advanced -------------------- */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 + +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#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 (GLAPIENTRY * PFNGLBLENDBARRIERKHRPROC) (void); + +#define glBlendBarrierKHR GLEW_GET_FUN(__glewBlendBarrierKHR) + +#define GLEW_KHR_blend_equation_advanced GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced) + +#endif /* GL_KHR_blend_equation_advanced */ + +/* ---------------- GL_KHR_blend_equation_advanced_coherent ---------------- */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 + +#define GLEW_KHR_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_KHR_blend_equation_advanced_coherent) + +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +/* ---------------------- GL_KHR_context_flush_control --------------------- */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 + +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC + +#define GLEW_KHR_context_flush_control GLEW_GET_VAR(__GLEW_KHR_context_flush_control) + +#endif /* GL_KHR_context_flush_control */ + +/* ------------------------------ GL_KHR_debug ----------------------------- */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 + +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#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_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_DISPLAY_LIST 0x82E7 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#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_OUTPUT 0x92E0 + +typedef void (GLAPIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); + +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); +typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); +typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog); +typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label); +typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei* length, GLchar *label); +typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label); +typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar* label); +typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message); + +#define glDebugMessageCallback GLEW_GET_FUN(__glewDebugMessageCallback) +#define glDebugMessageControl GLEW_GET_FUN(__glewDebugMessageControl) +#define glDebugMessageInsert GLEW_GET_FUN(__glewDebugMessageInsert) +#define glGetDebugMessageLog GLEW_GET_FUN(__glewGetDebugMessageLog) +#define glGetObjectLabel GLEW_GET_FUN(__glewGetObjectLabel) +#define glGetObjectPtrLabel GLEW_GET_FUN(__glewGetObjectPtrLabel) +#define glObjectLabel GLEW_GET_FUN(__glewObjectLabel) +#define glObjectPtrLabel GLEW_GET_FUN(__glewObjectPtrLabel) +#define glPopDebugGroup GLEW_GET_FUN(__glewPopDebugGroup) +#define glPushDebugGroup GLEW_GET_FUN(__glewPushDebugGroup) + +#define GLEW_KHR_debug GLEW_GET_VAR(__GLEW_KHR_debug) + +#endif /* GL_KHR_debug */ + +/* ------------------ GL_KHR_robust_buffer_access_behavior ----------------- */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 + +#define GLEW_KHR_robust_buffer_access_behavior GLEW_GET_VAR(__GLEW_KHR_robust_buffer_access_behavior) + +#endif /* GL_KHR_robust_buffer_access_behavior */ + +/* --------------------------- GL_KHR_robustness --------------------------- */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 + +#define GL_CONTEXT_LOST 0x0507 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#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_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 + +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint* params); +typedef void (GLAPIENTRY * PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + +#define glGetnUniformfv GLEW_GET_FUN(__glewGetnUniformfv) +#define glGetnUniformiv GLEW_GET_FUN(__glewGetnUniformiv) +#define glGetnUniformuiv GLEW_GET_FUN(__glewGetnUniformuiv) +#define glReadnPixels GLEW_GET_FUN(__glewReadnPixels) + +#define GLEW_KHR_robustness GLEW_GET_VAR(__GLEW_KHR_robustness) + +#endif /* GL_KHR_robustness */ + +/* ------------------ GL_KHR_texture_compression_astc_hdr ------------------ */ + +#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 + +#define GLEW_KHR_texture_compression_astc_hdr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_hdr) + +#endif /* GL_KHR_texture_compression_astc_hdr */ + +/* ------------------ GL_KHR_texture_compression_astc_ldr ------------------ */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 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 + +#define GLEW_KHR_texture_compression_astc_ldr GLEW_GET_VAR(__GLEW_KHR_texture_compression_astc_ldr) + +#endif /* GL_KHR_texture_compression_astc_ldr */ + +/* -------------------------- GL_KTX_buffer_region ------------------------- */ + +#ifndef GL_KTX_buffer_region +#define GL_KTX_buffer_region 1 + +#define GL_KTX_FRONT_REGION 0x0 +#define GL_KTX_BACK_REGION 0x1 +#define GL_KTX_Z_REGION 0x2 +#define GL_KTX_STENCIL_REGION 0x3 + +typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDPROC) (void); +typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); +typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONPROC) (GLenum region); +typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); + +#define glBufferRegionEnabled GLEW_GET_FUN(__glewBufferRegionEnabled) +#define glDeleteBufferRegion GLEW_GET_FUN(__glewDeleteBufferRegion) +#define glDrawBufferRegion GLEW_GET_FUN(__glewDrawBufferRegion) +#define glNewBufferRegion GLEW_GET_FUN(__glewNewBufferRegion) +#define glReadBufferRegion GLEW_GET_FUN(__glewReadBufferRegion) + +#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) + +#endif /* GL_KTX_buffer_region */ + +/* ------------------------- GL_MESAX_texture_stack ------------------------ */ + +#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 + +#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) + +#endif /* GL_MESAX_texture_stack */ + +/* -------------------------- GL_MESA_pack_invert -------------------------- */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 + +#define GL_PACK_INVERT_MESA 0x8758 + +#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) + +#endif /* GL_MESA_pack_invert */ + +/* ------------------------- GL_MESA_resize_buffers ------------------------ */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 + +typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); + +#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) + +#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) + +#endif /* GL_MESA_resize_buffers */ + +/* --------------------------- GL_MESA_window_pos -------------------------- */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 + +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); + +#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) +#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) +#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) +#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) +#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) +#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) +#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) +#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) +#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) +#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) +#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) +#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) +#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) +#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) +#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) +#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) +#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) +#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) +#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) +#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) +#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) +#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) +#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) +#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) + +#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) + +#endif /* GL_MESA_window_pos */ + +/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ + +#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 + +#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) + +#endif /* GL_MESA_ycbcr_texture */ + +/* ----------------------- GL_NVX_conditional_render ----------------------- */ + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 + +typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVXPROC) (void); + +#define glBeginConditionalRenderNVX GLEW_GET_FUN(__glewBeginConditionalRenderNVX) +#define glEndConditionalRenderNVX GLEW_GET_FUN(__glewEndConditionalRenderNVX) + +#define GLEW_NVX_conditional_render GLEW_GET_VAR(__GLEW_NVX_conditional_render) + +#endif /* GL_NVX_conditional_render */ + +/* ------------------------- GL_NVX_gpu_memory_info ------------------------ */ + +#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 + +#define GLEW_NVX_gpu_memory_info GLEW_GET_VAR(__GLEW_NVX_gpu_memory_info) + +#endif /* GL_NVX_gpu_memory_info */ + +/* ------------------- GL_NV_bindless_multi_draw_indirect ------------------ */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); + +#define glMultiDrawArraysIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessNV) +#define glMultiDrawElementsIndirectBindlessNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessNV) + +#define GLEW_NV_bindless_multi_draw_indirect GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect) + +#endif /* GL_NV_bindless_multi_draw_indirect */ + +/* ---------------- GL_NV_bindless_multi_draw_indirect_count --------------- */ + +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 + +typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); + +#define glMultiDrawArraysIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawArraysIndirectBindlessCountNV) +#define glMultiDrawElementsIndirectBindlessCountNV GLEW_GET_FUN(__glewMultiDrawElementsIndirectBindlessCountNV) + +#define GLEW_NV_bindless_multi_draw_indirect_count GLEW_GET_VAR(__GLEW_NV_bindless_multi_draw_indirect_count) + +#endif /* GL_NV_bindless_multi_draw_indirect_count */ + +/* ------------------------- GL_NV_bindless_texture ------------------------ */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 + +typedef GLuint64 (GLAPIENTRY * PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GLAPIENTRY * PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef GLboolean (GLAPIENTRY * PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64* values); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GLAPIENTRY * PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64* value); + +#define glGetImageHandleNV GLEW_GET_FUN(__glewGetImageHandleNV) +#define glGetTextureHandleNV GLEW_GET_FUN(__glewGetTextureHandleNV) +#define glGetTextureSamplerHandleNV GLEW_GET_FUN(__glewGetTextureSamplerHandleNV) +#define glIsImageHandleResidentNV GLEW_GET_FUN(__glewIsImageHandleResidentNV) +#define glIsTextureHandleResidentNV GLEW_GET_FUN(__glewIsTextureHandleResidentNV) +#define glMakeImageHandleNonResidentNV GLEW_GET_FUN(__glewMakeImageHandleNonResidentNV) +#define glMakeImageHandleResidentNV GLEW_GET_FUN(__glewMakeImageHandleResidentNV) +#define glMakeTextureHandleNonResidentNV GLEW_GET_FUN(__glewMakeTextureHandleNonResidentNV) +#define glMakeTextureHandleResidentNV GLEW_GET_FUN(__glewMakeTextureHandleResidentNV) +#define glProgramUniformHandleui64NV GLEW_GET_FUN(__glewProgramUniformHandleui64NV) +#define glProgramUniformHandleui64vNV GLEW_GET_FUN(__glewProgramUniformHandleui64vNV) +#define glUniformHandleui64NV GLEW_GET_FUN(__glewUniformHandleui64NV) +#define glUniformHandleui64vNV GLEW_GET_FUN(__glewUniformHandleui64vNV) + +#define GLEW_NV_bindless_texture GLEW_GET_VAR(__GLEW_NV_bindless_texture) + +#endif /* GL_NV_bindless_texture */ + +/* --------------------- GL_NV_blend_equation_advanced --------------------- */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 + +#define GL_XOR_NV 0x1506 +#define GL_RED_NV 0x1903 +#define GL_GREEN_NV 0x1904 +#define GL_BLUE_NV 0x1905 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_DISJOINT_NV 0x9283 +#define GL_CONJOINT_NV 0x9284 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#define GL_SRC_NV 0x9286 +#define GL_DST_NV 0x9287 +#define GL_SRC_OVER_NV 0x9288 +#define GL_DST_OVER_NV 0x9289 +#define GL_SRC_IN_NV 0x928A +#define GL_DST_IN_NV 0x928B +#define GL_SRC_OUT_NV 0x928C +#define GL_DST_OUT_NV 0x928D +#define GL_SRC_ATOP_NV 0x928E +#define GL_DST_ATOP_NV 0x928F +#define GL_PLUS_NV 0x9291 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_MULTIPLY_NV 0x9294 +#define GL_SCREEN_NV 0x9295 +#define GL_OVERLAY_NV 0x9296 +#define GL_DARKEN_NV 0x9297 +#define GL_LIGHTEN_NV 0x9298 +#define GL_COLORDODGE_NV 0x9299 +#define GL_COLORBURN_NV 0x929A +#define GL_HARDLIGHT_NV 0x929B +#define GL_SOFTLIGHT_NV 0x929C +#define GL_DIFFERENCE_NV 0x929E +#define GL_MINUS_NV 0x929F +#define GL_EXCLUSION_NV 0x92A0 +#define GL_CONTRAST_NV 0x92A1 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_INVERT_OVG_NV 0x92B4 + +typedef void (GLAPIENTRY * PFNGLBLENDBARRIERNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); + +#define glBlendBarrierNV GLEW_GET_FUN(__glewBlendBarrierNV) +#define glBlendParameteriNV GLEW_GET_FUN(__glewBlendParameteriNV) + +#define GLEW_NV_blend_equation_advanced GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced) + +#endif /* GL_NV_blend_equation_advanced */ + +/* ----------------- GL_NV_blend_equation_advanced_coherent ---------------- */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 + +#define GLEW_NV_blend_equation_advanced_coherent GLEW_GET_VAR(__GLEW_NV_blend_equation_advanced_coherent) + +#endif /* GL_NV_blend_equation_advanced_coherent */ + +/* --------------------------- GL_NV_blend_square -------------------------- */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 + +#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) + +#endif /* GL_NV_blend_square */ + +/* ------------------------- GL_NV_compute_program5 ------------------------ */ + +#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 + +#define GLEW_NV_compute_program5 GLEW_GET_VAR(__GLEW_NV_compute_program5) + +#endif /* GL_NV_compute_program5 */ + +/* ------------------------ GL_NV_conditional_render ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); + +#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) +#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) + +#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) + +#endif /* GL_NV_conditional_render */ + +/* ----------------------- GL_NV_conservative_raster ----------------------- */ + +#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 (GLAPIENTRY * PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); + +#define glSubpixelPrecisionBiasNV GLEW_GET_FUN(__glewSubpixelPrecisionBiasNV) + +#define GLEW_NV_conservative_raster GLEW_GET_VAR(__GLEW_NV_conservative_raster) + +#endif /* GL_NV_conservative_raster */ + +/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ + +#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 + +#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) + +#endif /* GL_NV_copy_depth_to_color */ + +/* ---------------------------- GL_NV_copy_image --------------------------- */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 + +typedef void (GLAPIENTRY * 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); + +#define glCopyImageSubDataNV GLEW_GET_FUN(__glewCopyImageSubDataNV) + +#define GLEW_NV_copy_image GLEW_GET_VAR(__GLEW_NV_copy_image) + +#endif /* GL_NV_copy_image */ + +/* -------------------------- GL_NV_deep_texture3D ------------------------- */ + +#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 + +#define GLEW_NV_deep_texture3D GLEW_GET_VAR(__GLEW_NV_deep_texture3D) + +#endif /* GL_NV_deep_texture3D */ + +/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ + +#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 (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); + +#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) +#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) +#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) + +#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) + +#endif /* GL_NV_depth_buffer_float */ + +/* --------------------------- GL_NV_depth_clamp --------------------------- */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 + +#define GL_DEPTH_CLAMP_NV 0x864F + +#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) + +#endif /* GL_NV_depth_clamp */ + +/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ + +#ifndef GL_NV_depth_range_unclamped +#define GL_NV_depth_range_unclamped 1 + +#define GL_SAMPLE_COUNT_BITS_NV 0x8864 +#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 +#define GL_QUERY_RESULT_NV 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 +#define GL_SAMPLE_COUNT_NV 0x8914 + +#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) + +#endif /* GL_NV_depth_range_unclamped */ + +/* --------------------------- GL_NV_draw_texture -------------------------- */ + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 + +typedef void (GLAPIENTRY * PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); + +#define glDrawTextureNV GLEW_GET_FUN(__glewDrawTextureNV) + +#define GLEW_NV_draw_texture GLEW_GET_VAR(__GLEW_NV_draw_texture) + +#endif /* GL_NV_draw_texture */ + +/* ---------------------------- GL_NV_evaluators --------------------------- */ + +#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 (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); + +#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) +#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) +#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) +#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) +#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) +#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) +#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) +#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) +#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) + +#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) + +#endif /* GL_NV_evaluators */ + +/* ----------------------- GL_NV_explicit_multisample ---------------------- */ + +#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 (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); +typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); + +#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) +#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) +#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) + +#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) + +#endif /* GL_NV_explicit_multisample */ + +/* ------------------------------ GL_NV_fence ------------------------------ */ + +#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 (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); +typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); +typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); +typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); + +#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) +#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) +#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) +#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) +#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) +#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) +#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) + +#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) + +#endif /* GL_NV_fence */ + +/* -------------------------- GL_NV_fill_rectangle ------------------------- */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 + +#define GL_FILL_RECTANGLE_NV 0x933C + +#define GLEW_NV_fill_rectangle GLEW_GET_VAR(__GLEW_NV_fill_rectangle) + +#endif /* GL_NV_fill_rectangle */ + +/* --------------------------- GL_NV_float_buffer -------------------------- */ + +#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 + +#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) + +#endif /* GL_NV_float_buffer */ + +/* --------------------------- GL_NV_fog_distance -------------------------- */ + +#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 + +#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) + +#endif /* GL_NV_fog_distance */ + +/* -------------------- GL_NV_fragment_coverage_to_color ------------------- */ + +#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 (GLAPIENTRY * PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); + +#define glFragmentCoverageColorNV GLEW_GET_FUN(__glewFragmentCoverageColorNV) + +#define GLEW_NV_fragment_coverage_to_color GLEW_GET_VAR(__GLEW_NV_fragment_coverage_to_color) + +#endif /* GL_NV_fragment_coverage_to_color */ + +/* ------------------------- GL_NV_fragment_program ------------------------ */ + +#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 (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); + +#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) +#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) +#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) +#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) +#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) +#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) + +#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) + +#endif /* GL_NV_fragment_program */ + +/* ------------------------ GL_NV_fragment_program2 ------------------------ */ + +#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 + +#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) + +#endif /* GL_NV_fragment_program2 */ + +/* ------------------------ GL_NV_fragment_program4 ------------------------ */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 + +#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) + +#endif /* GL_NV_fragment_program4 */ + +/* --------------------- GL_NV_fragment_program_option --------------------- */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 + +#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) + +#endif /* GL_NV_fragment_program_option */ + +/* -------------------- GL_NV_fragment_shader_interlock -------------------- */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 + +#define GLEW_NV_fragment_shader_interlock GLEW_GET_VAR(__GLEW_NV_fragment_shader_interlock) + +#endif /* GL_NV_fragment_shader_interlock */ + +/* -------------------- GL_NV_framebuffer_mixed_samples -------------------- */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 + +#define GL_COLOR_SAMPLES_NV 0x8E20 +#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 +#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_TABLE_NV 0x9331 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 + +#define GLEW_NV_framebuffer_mixed_samples GLEW_GET_VAR(__GLEW_NV_framebuffer_mixed_samples) + +#endif /* GL_NV_framebuffer_mixed_samples */ + +/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ + +#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 (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + +#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) + +#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) + +#endif /* GL_NV_framebuffer_multisample_coverage */ + +/* ------------------------ GL_NV_geometry_program4 ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); + +#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) + +#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) + +#endif /* GL_NV_geometry_program4 */ + +/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 + +#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) + +#endif /* GL_NV_geometry_shader4 */ + +/* ------------------- GL_NV_geometry_shader_passthrough ------------------- */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 + +#define GLEW_NV_geometry_shader_passthrough GLEW_GET_VAR(__GLEW_NV_geometry_shader_passthrough) + +#endif /* GL_NV_geometry_shader_passthrough */ + +/* --------------------------- GL_NV_gpu_program4 -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); + +#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) +#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) +#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) +#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) +#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) +#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) +#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) +#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) +#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) +#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) +#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) +#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) + +#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) + +#endif /* GL_NV_gpu_program4 */ + +/* --------------------------- GL_NV_gpu_program5 -------------------------- */ + +#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 GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5) + +#endif /* GL_NV_gpu_program5 */ + +/* -------------------- GL_NV_gpu_program5_mem_extended -------------------- */ + +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 + +#define GLEW_NV_gpu_program5_mem_extended GLEW_GET_VAR(__GLEW_NV_gpu_program5_mem_extended) + +#endif /* GL_NV_gpu_program5_mem_extended */ + +/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */ + +#ifndef GL_NV_gpu_program_fp64 +#define GL_NV_gpu_program_fp64 1 + +#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64) + +#endif /* GL_NV_gpu_program_fp64 */ + +/* --------------------------- GL_NV_gpu_shader5 --------------------------- */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 + +#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 (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV) +#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV) +#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV) +#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV) +#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV) +#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV) +#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV) +#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV) +#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV) +#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV) +#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV) +#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV) +#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV) +#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV) +#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV) +#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV) +#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV) +#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV) +#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV) +#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV) +#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV) +#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV) +#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV) +#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV) +#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV) +#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV) +#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV) +#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV) +#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV) +#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV) +#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV) +#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV) +#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV) +#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV) + +#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5) + +#endif /* GL_NV_gpu_shader5 */ + +/* ---------------------------- GL_NV_half_float --------------------------- */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 + +#define GL_HALF_FLOAT_NV 0x140B + +typedef unsigned short GLhalf; + +typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); +typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); +typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); +typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); +typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); +typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); +typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); + +#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) +#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) +#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) +#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) +#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) +#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) +#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) +#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) +#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) +#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) +#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) +#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) +#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) +#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) +#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) +#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) +#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) +#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) +#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) +#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) +#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) +#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) +#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) +#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) +#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) +#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) +#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) +#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) +#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) +#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) +#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) +#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) +#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) +#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) +#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) +#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) +#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) +#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) +#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) +#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) +#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) +#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) +#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) +#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) +#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) +#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) + +#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) + +#endif /* GL_NV_half_float */ + +/* ------------------- GL_NV_internalformat_sample_query ------------------- */ + +#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 (GLAPIENTRY * PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint* params); + +#define glGetInternalformatSampleivNV GLEW_GET_FUN(__glewGetInternalformatSampleivNV) + +#define GLEW_NV_internalformat_sample_query GLEW_GET_VAR(__GLEW_NV_internalformat_sample_query) + +#endif /* GL_NV_internalformat_sample_query */ + +/* ------------------------ GL_NV_light_max_exponent ----------------------- */ + +#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 + +#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) + +#endif /* GL_NV_light_max_exponent */ + +/* ----------------------- GL_NV_multisample_coverage ---------------------- */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 + +#define GL_COLOR_SAMPLES_NV 0x8E20 + +#define GLEW_NV_multisample_coverage GLEW_GET_VAR(__GLEW_NV_multisample_coverage) + +#endif /* GL_NV_multisample_coverage */ + +/* --------------------- GL_NV_multisample_filter_hint --------------------- */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 + +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 + +#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) + +#endif /* GL_NV_multisample_filter_hint */ + +/* ------------------------- GL_NV_occlusion_query ------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); + +#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) +#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) +#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) +#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) +#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) +#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) +#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) + +#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) + +#endif /* GL_NV_occlusion_query */ + +/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ + +#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 + +#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) + +#endif /* GL_NV_packed_depth_stencil */ + +/* --------------------- GL_NV_parameter_buffer_object --------------------- */ + +#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 (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); + +#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) +#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) +#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) + +#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) + +#endif /* GL_NV_parameter_buffer_object */ + +/* --------------------- GL_NV_parameter_buffer_object2 -------------------- */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 + +#define GLEW_NV_parameter_buffer_object2 GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object2) + +#endif /* GL_NV_parameter_buffer_object2 */ + +/* -------------------------- GL_NV_path_rendering ------------------------- */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 + +#define GL_CLOSE_PATH_NV 0x00 +#define GL_BOLD_BIT_NV 0x01 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#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_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#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_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#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_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#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_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_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_RELATIVE_RECT_NV 0xF7 +#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_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PRIMARY_COLOR 0x8577 +#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_PATH_STROKE_BOUND_NV 0x9086 +#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_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#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_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_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_FRAGMENT_INPUT_NV 0x936D +#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_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 + +typedef void (GLAPIENTRY * PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLuint (GLAPIENTRY * PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte* commands); +typedef void (GLAPIENTRY * PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat* coords); +typedef void (GLAPIENTRY * PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat* dashArray); +typedef GLfloat (GLAPIENTRY * PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat* metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat* value); +typedef void (GLAPIENTRY * PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint* value); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei *length, GLfloat *params); +typedef void (GLAPIENTRY * PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef GLboolean (GLAPIENTRY * PFNGLISPATHNVPROC) (GLuint path); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GLAPIENTRY * PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat* m); +typedef void (GLAPIENTRY * PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs); +typedef void (GLAPIENTRY * PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords); +typedef void (GLAPIENTRY * PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GLAPIENTRY * PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum zfunc); +typedef void (GLAPIENTRY * PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat* dashArray); +typedef void (GLAPIENTRY * PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GLAPIENTRY * PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void*charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GLAPIENTRY * PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat* value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GLAPIENTRY * PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint* value); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GLAPIENTRY * PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GLAPIENTRY * PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte* commands, GLsizei numCoords, GLenum coordType, const void*coords); +typedef void (GLAPIENTRY * PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GLAPIENTRY * PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs); +typedef GLboolean (GLAPIENTRY * PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat* x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GLAPIENTRY * PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat* coeffs); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GLAPIENTRY * PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GLAPIENTRY * PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues); +typedef void (GLAPIENTRY * PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint paths[], const GLfloat weights[]); + +#define glCopyPathNV GLEW_GET_FUN(__glewCopyPathNV) +#define glCoverFillPathInstancedNV GLEW_GET_FUN(__glewCoverFillPathInstancedNV) +#define glCoverFillPathNV GLEW_GET_FUN(__glewCoverFillPathNV) +#define glCoverStrokePathInstancedNV GLEW_GET_FUN(__glewCoverStrokePathInstancedNV) +#define glCoverStrokePathNV GLEW_GET_FUN(__glewCoverStrokePathNV) +#define glDeletePathsNV GLEW_GET_FUN(__glewDeletePathsNV) +#define glGenPathsNV GLEW_GET_FUN(__glewGenPathsNV) +#define glGetPathColorGenfvNV GLEW_GET_FUN(__glewGetPathColorGenfvNV) +#define glGetPathColorGenivNV GLEW_GET_FUN(__glewGetPathColorGenivNV) +#define glGetPathCommandsNV GLEW_GET_FUN(__glewGetPathCommandsNV) +#define glGetPathCoordsNV GLEW_GET_FUN(__glewGetPathCoordsNV) +#define glGetPathDashArrayNV GLEW_GET_FUN(__glewGetPathDashArrayNV) +#define glGetPathLengthNV GLEW_GET_FUN(__glewGetPathLengthNV) +#define glGetPathMetricRangeNV GLEW_GET_FUN(__glewGetPathMetricRangeNV) +#define glGetPathMetricsNV GLEW_GET_FUN(__glewGetPathMetricsNV) +#define glGetPathParameterfvNV GLEW_GET_FUN(__glewGetPathParameterfvNV) +#define glGetPathParameterivNV GLEW_GET_FUN(__glewGetPathParameterivNV) +#define glGetPathSpacingNV GLEW_GET_FUN(__glewGetPathSpacingNV) +#define glGetPathTexGenfvNV GLEW_GET_FUN(__glewGetPathTexGenfvNV) +#define glGetPathTexGenivNV GLEW_GET_FUN(__glewGetPathTexGenivNV) +#define glGetProgramResourcefvNV GLEW_GET_FUN(__glewGetProgramResourcefvNV) +#define glInterpolatePathsNV GLEW_GET_FUN(__glewInterpolatePathsNV) +#define glIsPathNV GLEW_GET_FUN(__glewIsPathNV) +#define glIsPointInFillPathNV GLEW_GET_FUN(__glewIsPointInFillPathNV) +#define glIsPointInStrokePathNV GLEW_GET_FUN(__glewIsPointInStrokePathNV) +#define glMatrixLoad3x2fNV GLEW_GET_FUN(__glewMatrixLoad3x2fNV) +#define glMatrixLoad3x3fNV GLEW_GET_FUN(__glewMatrixLoad3x3fNV) +#define glMatrixLoadTranspose3x3fNV GLEW_GET_FUN(__glewMatrixLoadTranspose3x3fNV) +#define glMatrixMult3x2fNV GLEW_GET_FUN(__glewMatrixMult3x2fNV) +#define glMatrixMult3x3fNV GLEW_GET_FUN(__glewMatrixMult3x3fNV) +#define glMatrixMultTranspose3x3fNV GLEW_GET_FUN(__glewMatrixMultTranspose3x3fNV) +#define glPathColorGenNV GLEW_GET_FUN(__glewPathColorGenNV) +#define glPathCommandsNV GLEW_GET_FUN(__glewPathCommandsNV) +#define glPathCoordsNV GLEW_GET_FUN(__glewPathCoordsNV) +#define glPathCoverDepthFuncNV GLEW_GET_FUN(__glewPathCoverDepthFuncNV) +#define glPathDashArrayNV GLEW_GET_FUN(__glewPathDashArrayNV) +#define glPathFogGenNV GLEW_GET_FUN(__glewPathFogGenNV) +#define glPathGlyphIndexArrayNV GLEW_GET_FUN(__glewPathGlyphIndexArrayNV) +#define glPathGlyphIndexRangeNV GLEW_GET_FUN(__glewPathGlyphIndexRangeNV) +#define glPathGlyphRangeNV GLEW_GET_FUN(__glewPathGlyphRangeNV) +#define glPathGlyphsNV GLEW_GET_FUN(__glewPathGlyphsNV) +#define glPathMemoryGlyphIndexArrayNV GLEW_GET_FUN(__glewPathMemoryGlyphIndexArrayNV) +#define glPathParameterfNV GLEW_GET_FUN(__glewPathParameterfNV) +#define glPathParameterfvNV GLEW_GET_FUN(__glewPathParameterfvNV) +#define glPathParameteriNV GLEW_GET_FUN(__glewPathParameteriNV) +#define glPathParameterivNV GLEW_GET_FUN(__glewPathParameterivNV) +#define glPathStencilDepthOffsetNV GLEW_GET_FUN(__glewPathStencilDepthOffsetNV) +#define glPathStencilFuncNV GLEW_GET_FUN(__glewPathStencilFuncNV) +#define glPathStringNV GLEW_GET_FUN(__glewPathStringNV) +#define glPathSubCommandsNV GLEW_GET_FUN(__glewPathSubCommandsNV) +#define glPathSubCoordsNV GLEW_GET_FUN(__glewPathSubCoordsNV) +#define glPathTexGenNV GLEW_GET_FUN(__glewPathTexGenNV) +#define glPointAlongPathNV GLEW_GET_FUN(__glewPointAlongPathNV) +#define glProgramPathFragmentInputGenNV GLEW_GET_FUN(__glewProgramPathFragmentInputGenNV) +#define glStencilFillPathInstancedNV GLEW_GET_FUN(__glewStencilFillPathInstancedNV) +#define glStencilFillPathNV GLEW_GET_FUN(__glewStencilFillPathNV) +#define glStencilStrokePathInstancedNV GLEW_GET_FUN(__glewStencilStrokePathInstancedNV) +#define glStencilStrokePathNV GLEW_GET_FUN(__glewStencilStrokePathNV) +#define glStencilThenCoverFillPathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverFillPathInstancedNV) +#define glStencilThenCoverFillPathNV GLEW_GET_FUN(__glewStencilThenCoverFillPathNV) +#define glStencilThenCoverStrokePathInstancedNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathInstancedNV) +#define glStencilThenCoverStrokePathNV GLEW_GET_FUN(__glewStencilThenCoverStrokePathNV) +#define glTransformPathNV GLEW_GET_FUN(__glewTransformPathNV) +#define glWeightPathsNV GLEW_GET_FUN(__glewWeightPathsNV) + +#define GLEW_NV_path_rendering GLEW_GET_VAR(__GLEW_NV_path_rendering) + +#endif /* GL_NV_path_rendering */ + +/* -------------------- GL_NV_path_rendering_shared_edge ------------------- */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 + +#define GL_SHARED_EDGE_NV 0xC0 + +#define GLEW_NV_path_rendering_shared_edge GLEW_GET_VAR(__GLEW_NV_path_rendering_shared_edge) + +#endif /* GL_NV_path_rendering_shared_edge */ + +/* ------------------------- GL_NV_pixel_data_range ------------------------ */ + +#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 (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void *pointer); + +#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) +#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) + +#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) + +#endif /* GL_NV_pixel_data_range */ + +/* --------------------------- GL_NV_point_sprite -------------------------- */ + +#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 (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); + +#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) +#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) + +#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) + +#endif /* GL_NV_point_sprite */ + +/* -------------------------- GL_NV_present_video -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); + +#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) +#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) +#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) +#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) +#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) +#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) + +#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) + +#endif /* GL_NV_present_video */ + +/* ------------------------ GL_NV_primitive_restart ------------------------ */ + +#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 (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); + +#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) +#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) + +#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) + +#endif /* GL_NV_primitive_restart */ + +/* ------------------------ GL_NV_register_combiners ----------------------- */ + +#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_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 + +typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); + +#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) +#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) +#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) +#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) +#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) +#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) +#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) +#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) +#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) +#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) +#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) +#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) +#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) + +#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) + +#endif /* GL_NV_register_combiners */ + +/* ----------------------- GL_NV_register_combiners2 ----------------------- */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 + +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 + +typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); + +#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) +#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) + +#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) + +#endif /* GL_NV_register_combiners2 */ + +/* ------------------------- GL_NV_sample_locations ------------------------ */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 + +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#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_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 + +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v); + +#define glFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewFramebufferSampleLocationsfvNV) +#define glNamedFramebufferSampleLocationsfvNV GLEW_GET_FUN(__glewNamedFramebufferSampleLocationsfvNV) + +#define GLEW_NV_sample_locations GLEW_GET_VAR(__GLEW_NV_sample_locations) + +#endif /* GL_NV_sample_locations */ + +/* ------------------ GL_NV_sample_mask_override_coverage ------------------ */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 + +#define GLEW_NV_sample_mask_override_coverage GLEW_GET_VAR(__GLEW_NV_sample_mask_override_coverage) + +#endif /* GL_NV_sample_mask_override_coverage */ + +/* ---------------------- GL_NV_shader_atomic_counters --------------------- */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 + +#define GLEW_NV_shader_atomic_counters GLEW_GET_VAR(__GLEW_NV_shader_atomic_counters) + +#endif /* GL_NV_shader_atomic_counters */ + +/* ----------------------- GL_NV_shader_atomic_float ----------------------- */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 + +#define GLEW_NV_shader_atomic_float GLEW_GET_VAR(__GLEW_NV_shader_atomic_float) + +#endif /* GL_NV_shader_atomic_float */ + +/* -------------------- GL_NV_shader_atomic_fp16_vector -------------------- */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 + +#define GLEW_NV_shader_atomic_fp16_vector GLEW_GET_VAR(__GLEW_NV_shader_atomic_fp16_vector) + +#endif /* GL_NV_shader_atomic_fp16_vector */ + +/* ----------------------- GL_NV_shader_atomic_int64 ----------------------- */ + +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 + +#define GLEW_NV_shader_atomic_int64 GLEW_GET_VAR(__GLEW_NV_shader_atomic_int64) + +#endif /* GL_NV_shader_atomic_int64 */ + +/* ------------------------ GL_NV_shader_buffer_load ----------------------- */ + +#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 (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result); +typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params); +typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef void (GLAPIENTRY * PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef void (GLAPIENTRY * PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value); + +#define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV) +#define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV) +#define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV) +#define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV) +#define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV) +#define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV) +#define glMakeBufferResidentNV GLEW_GET_FUN(__glewMakeBufferResidentNV) +#define glMakeNamedBufferNonResidentNV GLEW_GET_FUN(__glewMakeNamedBufferNonResidentNV) +#define glMakeNamedBufferResidentNV GLEW_GET_FUN(__glewMakeNamedBufferResidentNV) +#define glProgramUniformui64NV GLEW_GET_FUN(__glewProgramUniformui64NV) +#define glProgramUniformui64vNV GLEW_GET_FUN(__glewProgramUniformui64vNV) +#define glUniformui64NV GLEW_GET_FUN(__glewUniformui64NV) +#define glUniformui64vNV GLEW_GET_FUN(__glewUniformui64vNV) + +#define GLEW_NV_shader_buffer_load GLEW_GET_VAR(__GLEW_NV_shader_buffer_load) + +#endif /* GL_NV_shader_buffer_load */ + +/* ------------------- GL_NV_shader_storage_buffer_object ------------------ */ + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 + +#define GLEW_NV_shader_storage_buffer_object GLEW_GET_VAR(__GLEW_NV_shader_storage_buffer_object) + +#endif /* GL_NV_shader_storage_buffer_object */ + +/* ----------------------- GL_NV_shader_thread_group ----------------------- */ + +#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 + +#define GLEW_NV_shader_thread_group GLEW_GET_VAR(__GLEW_NV_shader_thread_group) + +#endif /* GL_NV_shader_thread_group */ + +/* ---------------------- GL_NV_shader_thread_shuffle ---------------------- */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 + +#define GLEW_NV_shader_thread_shuffle GLEW_GET_VAR(__GLEW_NV_shader_thread_shuffle) + +#endif /* GL_NV_shader_thread_shuffle */ + +/* ---------------------- GL_NV_tessellation_program5 ---------------------- */ + +#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 + +#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5) + +#endif /* GL_NV_tessellation_program5 */ + +/* -------------------------- GL_NV_texgen_emboss -------------------------- */ + +#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 + +#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) + +#endif /* GL_NV_texgen_emboss */ + +/* ------------------------ GL_NV_texgen_reflection ------------------------ */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 + +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 + +#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) + +#endif /* GL_NV_texgen_reflection */ + +/* ------------------------- GL_NV_texture_barrier ------------------------- */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 + +typedef void (GLAPIENTRY * PFNGLTEXTUREBARRIERNVPROC) (void); + +#define glTextureBarrierNV GLEW_GET_FUN(__glewTextureBarrierNV) + +#define GLEW_NV_texture_barrier GLEW_GET_VAR(__GLEW_NV_texture_barrier) + +#endif /* GL_NV_texture_barrier */ + +/* --------------------- GL_NV_texture_compression_vtc --------------------- */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 + +#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) + +#endif /* GL_NV_texture_compression_vtc */ + +/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ + +#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 + +#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) + +#endif /* GL_NV_texture_env_combine4 */ + +/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 + +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F + +#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) + +#endif /* GL_NV_texture_expand_normal */ + +/* ----------------------- GL_NV_texture_multisample ----------------------- */ + +#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 (GLAPIENTRY * PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + +#define glTexImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage2DMultisampleCoverageNV) +#define glTexImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTexImage3DMultisampleCoverageNV) +#define glTextureImage2DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage2DMultisampleCoverageNV) +#define glTextureImage2DMultisampleNV GLEW_GET_FUN(__glewTextureImage2DMultisampleNV) +#define glTextureImage3DMultisampleCoverageNV GLEW_GET_FUN(__glewTextureImage3DMultisampleCoverageNV) +#define glTextureImage3DMultisampleNV GLEW_GET_FUN(__glewTextureImage3DMultisampleNV) + +#define GLEW_NV_texture_multisample GLEW_GET_VAR(__GLEW_NV_texture_multisample) + +#endif /* GL_NV_texture_multisample */ + +/* ------------------------ GL_NV_texture_rectangle ------------------------ */ + +#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 + +#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) + +#endif /* GL_NV_texture_rectangle */ + +/* -------------------------- GL_NV_texture_shader ------------------------- */ + +#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_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_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 + +#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) + +#endif /* GL_NV_texture_shader */ + +/* ------------------------- GL_NV_texture_shader2 ------------------------- */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 + +#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_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#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 GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) + +#endif /* GL_NV_texture_shader2 */ + +/* ------------------------- GL_NV_texture_shader3 ------------------------- */ + +#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 + +#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) + +#endif /* GL_NV_texture_shader3 */ + +/* ------------------------ GL_NV_transform_feedback ----------------------- */ + +#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 + +typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); + +#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) +#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) +#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) +#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) +#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) +#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) +#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) +#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) +#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) +#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) +#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) + +#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) + +#endif /* GL_NV_transform_feedback */ + +/* ----------------------- GL_NV_transform_feedback2 ----------------------- */ + +#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 (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint* ids); +typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); + +#define glBindTransformFeedbackNV GLEW_GET_FUN(__glewBindTransformFeedbackNV) +#define glDeleteTransformFeedbacksNV GLEW_GET_FUN(__glewDeleteTransformFeedbacksNV) +#define glDrawTransformFeedbackNV GLEW_GET_FUN(__glewDrawTransformFeedbackNV) +#define glGenTransformFeedbacksNV GLEW_GET_FUN(__glewGenTransformFeedbacksNV) +#define glIsTransformFeedbackNV GLEW_GET_FUN(__glewIsTransformFeedbackNV) +#define glPauseTransformFeedbackNV GLEW_GET_FUN(__glewPauseTransformFeedbackNV) +#define glResumeTransformFeedbackNV GLEW_GET_FUN(__glewResumeTransformFeedbackNV) + +#define GLEW_NV_transform_feedback2 GLEW_GET_VAR(__GLEW_NV_transform_feedback2) + +#endif /* GL_NV_transform_feedback2 */ + +/* ------------------ GL_NV_uniform_buffer_unified_memory ------------------ */ + +#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 + +#define GLEW_NV_uniform_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_uniform_buffer_unified_memory) + +#endif /* GL_NV_uniform_buffer_unified_memory */ + +/* -------------------------- GL_NV_vdpau_interop -------------------------- */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 + +#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 GLintptr GLvdpauSurfaceNV; + +typedef void (GLAPIENTRY * PFNGLVDPAUFININVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei* length, GLint *values); +typedef void (GLAPIENTRY * PFNGLVDPAUINITNVPROC) (const void* vdpDevice, const void*getProcAddress); +typedef void (GLAPIENTRY * PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (GLAPIENTRY * PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (GLAPIENTRY * PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void* vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef void (GLAPIENTRY * PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (GLAPIENTRY * PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); +typedef void (GLAPIENTRY * PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); + +#define glVDPAUFiniNV GLEW_GET_FUN(__glewVDPAUFiniNV) +#define glVDPAUGetSurfaceivNV GLEW_GET_FUN(__glewVDPAUGetSurfaceivNV) +#define glVDPAUInitNV GLEW_GET_FUN(__glewVDPAUInitNV) +#define glVDPAUIsSurfaceNV GLEW_GET_FUN(__glewVDPAUIsSurfaceNV) +#define glVDPAUMapSurfacesNV GLEW_GET_FUN(__glewVDPAUMapSurfacesNV) +#define glVDPAURegisterOutputSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterOutputSurfaceNV) +#define glVDPAURegisterVideoSurfaceNV GLEW_GET_FUN(__glewVDPAURegisterVideoSurfaceNV) +#define glVDPAUSurfaceAccessNV GLEW_GET_FUN(__glewVDPAUSurfaceAccessNV) +#define glVDPAUUnmapSurfacesNV GLEW_GET_FUN(__glewVDPAUUnmapSurfacesNV) +#define glVDPAUUnregisterSurfaceNV GLEW_GET_FUN(__glewVDPAUUnregisterSurfaceNV) + +#define GLEW_NV_vdpau_interop GLEW_GET_VAR(__GLEW_NV_vdpau_interop) + +#endif /* GL_NV_vdpau_interop */ + +/* ------------------------ GL_NV_vertex_array_range ----------------------- */ + +#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 (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void *pointer); + +#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) +#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) + +#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) + +#endif /* GL_NV_vertex_array_range */ + +/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 + +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 + +#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) + +#endif /* GL_NV_vertex_array_range2 */ + +/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 + +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F + +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); + +#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV) +#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV) +#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV) +#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV) +#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV) +#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV) +#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV) +#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV) +#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV) +#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV) +#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV) +#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV) +#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV) +#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV) +#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV) +#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV) +#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV) +#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV) +#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV) + +#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit) + +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +/* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */ + +#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 (GLAPIENTRY * PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (GLAPIENTRY * PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (GLAPIENTRY * PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT result[]); +typedef void (GLAPIENTRY * PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (GLAPIENTRY * PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); + +#define glBufferAddressRangeNV GLEW_GET_FUN(__glewBufferAddressRangeNV) +#define glColorFormatNV GLEW_GET_FUN(__glewColorFormatNV) +#define glEdgeFlagFormatNV GLEW_GET_FUN(__glewEdgeFlagFormatNV) +#define glFogCoordFormatNV GLEW_GET_FUN(__glewFogCoordFormatNV) +#define glGetIntegerui64i_vNV GLEW_GET_FUN(__glewGetIntegerui64i_vNV) +#define glIndexFormatNV GLEW_GET_FUN(__glewIndexFormatNV) +#define glNormalFormatNV GLEW_GET_FUN(__glewNormalFormatNV) +#define glSecondaryColorFormatNV GLEW_GET_FUN(__glewSecondaryColorFormatNV) +#define glTexCoordFormatNV GLEW_GET_FUN(__glewTexCoordFormatNV) +#define glVertexAttribFormatNV GLEW_GET_FUN(__glewVertexAttribFormatNV) +#define glVertexAttribIFormatNV GLEW_GET_FUN(__glewVertexAttribIFormatNV) +#define glVertexFormatNV GLEW_GET_FUN(__glewVertexFormatNV) + +#define GLEW_NV_vertex_buffer_unified_memory GLEW_GET_VAR(__GLEW_NV_vertex_buffer_unified_memory) + +#endif /* GL_NV_vertex_buffer_unified_memory */ + +/* -------------------------- GL_NV_vertex_program ------------------------- */ + +#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 (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); +typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); +typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); +typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void** pointer); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); +typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei num, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); +typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); +typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); + +#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) +#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) +#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) +#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) +#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) +#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) +#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) +#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) +#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) +#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) +#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) +#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) +#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) +#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) +#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) +#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) +#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) +#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) +#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) +#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) +#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) +#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) +#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) +#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) +#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) +#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) +#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) +#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) +#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) +#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) +#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) +#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) +#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) +#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) +#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) +#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) +#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) +#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) +#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) +#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) +#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) +#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) +#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) +#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) +#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) +#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) +#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) +#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) +#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) +#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) +#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) +#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) +#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) +#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) +#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) +#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) +#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) +#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) +#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) +#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) +#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) +#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) +#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) +#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) + +#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) + +#endif /* GL_NV_vertex_program */ + +/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 + +#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) + +#endif /* GL_NV_vertex_program1_1 */ + +/* ------------------------- GL_NV_vertex_program2 ------------------------- */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 + +#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) + +#endif /* GL_NV_vertex_program2 */ + +/* ---------------------- GL_NV_vertex_program2_option --------------------- */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 + +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 + +#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) + +#endif /* GL_NV_vertex_program2_option */ + +/* ------------------------- GL_NV_vertex_program3 ------------------------- */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 + +#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C + +#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) + +#endif /* GL_NV_vertex_program3 */ + +/* ------------------------- GL_NV_vertex_program4 ------------------------- */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 + +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD + +#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) + +#endif /* GL_NV_vertex_program4 */ + +/* -------------------------- GL_NV_video_capture -------------------------- */ + +#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 (GLAPIENTRY * PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (GLAPIENTRY * PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (GLAPIENTRY * PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint* params); +typedef GLenum (GLAPIENTRY * PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT *capture_time); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params); + +#define glBeginVideoCaptureNV GLEW_GET_FUN(__glewBeginVideoCaptureNV) +#define glBindVideoCaptureStreamBufferNV GLEW_GET_FUN(__glewBindVideoCaptureStreamBufferNV) +#define glBindVideoCaptureStreamTextureNV GLEW_GET_FUN(__glewBindVideoCaptureStreamTextureNV) +#define glEndVideoCaptureNV GLEW_GET_FUN(__glewEndVideoCaptureNV) +#define glGetVideoCaptureStreamdvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamdvNV) +#define glGetVideoCaptureStreamfvNV GLEW_GET_FUN(__glewGetVideoCaptureStreamfvNV) +#define glGetVideoCaptureStreamivNV GLEW_GET_FUN(__glewGetVideoCaptureStreamivNV) +#define glGetVideoCaptureivNV GLEW_GET_FUN(__glewGetVideoCaptureivNV) +#define glVideoCaptureNV GLEW_GET_FUN(__glewVideoCaptureNV) +#define glVideoCaptureStreamParameterdvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterdvNV) +#define glVideoCaptureStreamParameterfvNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterfvNV) +#define glVideoCaptureStreamParameterivNV GLEW_GET_FUN(__glewVideoCaptureStreamParameterivNV) + +#define GLEW_NV_video_capture GLEW_GET_VAR(__GLEW_NV_video_capture) + +#endif /* GL_NV_video_capture */ + +/* ------------------------- GL_NV_viewport_array2 ------------------------- */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 + +#define GLEW_NV_viewport_array2 GLEW_GET_VAR(__GLEW_NV_viewport_array2) + +#endif /* GL_NV_viewport_array2 */ + +/* ------------------------ GL_OES_byte_coordinates ------------------------ */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 + +#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) + +#endif /* GL_OES_byte_coordinates */ + +/* ------------------- GL_OES_compressed_paletted_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 + +#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) + +#endif /* GL_OES_compressed_paletted_texture */ + +/* --------------------------- GL_OES_read_format -------------------------- */ + +#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 + +#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) + +#endif /* GL_OES_read_format */ + +/* ------------------------ GL_OES_single_precision ------------------------ */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 + +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); + +#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) +#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) +#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) +#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) +#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) +#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) + +#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) + +#endif /* GL_OES_single_precision */ + +/* ---------------------------- GL_OML_interlace --------------------------- */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 + +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 + +#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) + +#endif /* GL_OML_interlace */ + +/* ---------------------------- GL_OML_resample ---------------------------- */ + +#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 + +#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) + +#endif /* GL_OML_resample */ + +/* ---------------------------- GL_OML_subsample --------------------------- */ + +#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 + +#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) + +#endif /* GL_OML_subsample */ + +/* --------------------------- GL_PGI_misc_hints --------------------------- */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 + +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 +#define GL_CONSERVE_MEMORY_HINT_PGI 107005 +#define GL_RECLAIM_MEMORY_HINT_PGI 107006 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 +#define GL_ALWAYS_FAST_HINT_PGI 107020 +#define GL_ALWAYS_SOFT_HINT_PGI 107021 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 +#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 +#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 +#define GL_STRICT_LIGHTING_HINT_PGI 107031 +#define GL_STRICT_SCISSOR_HINT_PGI 107032 +#define GL_FULL_STIPPLE_HINT_PGI 107033 +#define GL_CLIP_NEAR_HINT_PGI 107040 +#define GL_CLIP_FAR_HINT_PGI 107041 +#define GL_WIDE_LINE_HINT_PGI 107042 +#define GL_BACK_NORMALS_HINT_PGI 107043 + +#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) + +#endif /* GL_PGI_misc_hints */ + +/* -------------------------- GL_PGI_vertex_hints -------------------------- */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 + +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#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_VERTEX_DATA_HINT_PGI 107050 +#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 +#define GL_MATERIAL_SIDE_HINT_PGI 107052 +#define GL_MAX_VERTEX_HINT_PGI 107053 +#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 GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) + +#endif /* GL_PGI_vertex_hints */ + +/* ---------------------- GL_REGAL_ES1_0_compatibility --------------------- */ + +#ifndef GL_REGAL_ES1_0_compatibility +#define GL_REGAL_ES1_0_compatibility 1 + +typedef int GLclampx; + +typedef void (GLAPIENTRY * PFNGLALPHAFUNCXPROC) (GLenum func, GLclampx ref); +typedef void (GLAPIENTRY * PFNGLCLEARCOLORXPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +typedef void (GLAPIENTRY * PFNGLCLEARDEPTHXPROC) (GLclampx depth); +typedef void (GLAPIENTRY * PFNGLCOLOR4XPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (GLAPIENTRY * PFNGLDEPTHRANGEXPROC) (GLclampx zNear, GLclampx zFar); +typedef void (GLAPIENTRY * PFNGLFOGXPROC) (GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLFOGXVPROC) (GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLFRUSTUMFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GLAPIENTRY * PFNGLFRUSTUMXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GLAPIENTRY * PFNGLLIGHTMODELXPROC) (GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLLIGHTMODELXVPROC) (GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLLIGHTXPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLLIGHTXVPROC) (GLenum light, GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLLINEWIDTHXPROC) (GLfixed width); +typedef void (GLAPIENTRY * PFNGLLOADMATRIXXPROC) (const GLfixed* m); +typedef void (GLAPIENTRY * PFNGLMATERIALXPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLMATERIALXVPROC) (GLenum face, GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLMULTMATRIXXPROC) (const GLfixed* m); +typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4XPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (GLAPIENTRY * PFNGLNORMAL3XPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (GLAPIENTRY * PFNGLORTHOFPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GLAPIENTRY * PFNGLORTHOXPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GLAPIENTRY * PFNGLPOINTSIZEXPROC) (GLfixed size); +typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETXPROC) (GLfixed factor, GLfixed units); +typedef void (GLAPIENTRY * PFNGLROTATEXPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEXPROC) (GLclampx value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSCALEXPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (GLAPIENTRY * PFNGLTEXENVXPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLTEXENVXVPROC) (GLenum target, GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLTRANSLATEXPROC) (GLfixed x, GLfixed y, GLfixed z); + +#define glAlphaFuncx GLEW_GET_FUN(__glewAlphaFuncx) +#define glClearColorx GLEW_GET_FUN(__glewClearColorx) +#define glClearDepthx GLEW_GET_FUN(__glewClearDepthx) +#define glColor4x GLEW_GET_FUN(__glewColor4x) +#define glDepthRangex GLEW_GET_FUN(__glewDepthRangex) +#define glFogx GLEW_GET_FUN(__glewFogx) +#define glFogxv GLEW_GET_FUN(__glewFogxv) +#define glFrustumf GLEW_GET_FUN(__glewFrustumf) +#define glFrustumx GLEW_GET_FUN(__glewFrustumx) +#define glLightModelx GLEW_GET_FUN(__glewLightModelx) +#define glLightModelxv GLEW_GET_FUN(__glewLightModelxv) +#define glLightx GLEW_GET_FUN(__glewLightx) +#define glLightxv GLEW_GET_FUN(__glewLightxv) +#define glLineWidthx GLEW_GET_FUN(__glewLineWidthx) +#define glLoadMatrixx GLEW_GET_FUN(__glewLoadMatrixx) +#define glMaterialx GLEW_GET_FUN(__glewMaterialx) +#define glMaterialxv GLEW_GET_FUN(__glewMaterialxv) +#define glMultMatrixx GLEW_GET_FUN(__glewMultMatrixx) +#define glMultiTexCoord4x GLEW_GET_FUN(__glewMultiTexCoord4x) +#define glNormal3x GLEW_GET_FUN(__glewNormal3x) +#define glOrthof GLEW_GET_FUN(__glewOrthof) +#define glOrthox GLEW_GET_FUN(__glewOrthox) +#define glPointSizex GLEW_GET_FUN(__glewPointSizex) +#define glPolygonOffsetx GLEW_GET_FUN(__glewPolygonOffsetx) +#define glRotatex GLEW_GET_FUN(__glewRotatex) +#define glSampleCoveragex GLEW_GET_FUN(__glewSampleCoveragex) +#define glScalex GLEW_GET_FUN(__glewScalex) +#define glTexEnvx GLEW_GET_FUN(__glewTexEnvx) +#define glTexEnvxv GLEW_GET_FUN(__glewTexEnvxv) +#define glTexParameterx GLEW_GET_FUN(__glewTexParameterx) +#define glTranslatex GLEW_GET_FUN(__glewTranslatex) + +#define GLEW_REGAL_ES1_0_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_0_compatibility) + +#endif /* GL_REGAL_ES1_0_compatibility */ + +/* ---------------------- GL_REGAL_ES1_1_compatibility --------------------- */ + +#ifndef GL_REGAL_ES1_1_compatibility +#define GL_REGAL_ES1_1_compatibility 1 + +typedef void (GLAPIENTRY * PFNGLCLIPPLANEFPROC) (GLenum plane, const GLfloat* equation); +typedef void (GLAPIENTRY * PFNGLCLIPPLANEXPROC) (GLenum plane, const GLfixed* equation); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFPROC) (GLenum pname, GLfloat eqn[4]); +typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEXPROC) (GLenum pname, GLfixed eqn[4]); +typedef void (GLAPIENTRY * PFNGLGETFIXEDVPROC) (GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETLIGHTXVPROC) (GLenum light, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETMATERIALXVPROC) (GLenum face, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETTEXENVXVPROC) (GLenum env, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERXVPROC) (GLenum target, GLenum pname, GLfixed* params); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXPROC) (GLenum pname, GLfixed param); +typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERXVPROC) (GLenum pname, const GLfixed* params); +typedef void (GLAPIENTRY * PFNGLPOINTSIZEPOINTEROESPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLTEXPARAMETERXVPROC) (GLenum target, GLenum pname, const GLfixed* params); + +#define glClipPlanef GLEW_GET_FUN(__glewClipPlanef) +#define glClipPlanex GLEW_GET_FUN(__glewClipPlanex) +#define glGetClipPlanef GLEW_GET_FUN(__glewGetClipPlanef) +#define glGetClipPlanex GLEW_GET_FUN(__glewGetClipPlanex) +#define glGetFixedv GLEW_GET_FUN(__glewGetFixedv) +#define glGetLightxv GLEW_GET_FUN(__glewGetLightxv) +#define glGetMaterialxv GLEW_GET_FUN(__glewGetMaterialxv) +#define glGetTexEnvxv GLEW_GET_FUN(__glewGetTexEnvxv) +#define glGetTexParameterxv GLEW_GET_FUN(__glewGetTexParameterxv) +#define glPointParameterx GLEW_GET_FUN(__glewPointParameterx) +#define glPointParameterxv GLEW_GET_FUN(__glewPointParameterxv) +#define glPointSizePointerOES GLEW_GET_FUN(__glewPointSizePointerOES) +#define glTexParameterxv GLEW_GET_FUN(__glewTexParameterxv) + +#define GLEW_REGAL_ES1_1_compatibility GLEW_GET_VAR(__GLEW_REGAL_ES1_1_compatibility) + +#endif /* GL_REGAL_ES1_1_compatibility */ + +/* ---------------------------- GL_REGAL_enable ---------------------------- */ + +#ifndef GL_REGAL_enable +#define GL_REGAL_enable 1 + +#define GL_ERROR_REGAL 0x9322 +#define GL_DEBUG_REGAL 0x9323 +#define GL_LOG_REGAL 0x9324 +#define GL_EMULATION_REGAL 0x9325 +#define GL_DRIVER_REGAL 0x9326 +#define GL_MISSING_REGAL 0x9360 +#define GL_TRACE_REGAL 0x9361 +#define GL_CACHE_REGAL 0x9362 +#define GL_CODE_REGAL 0x9363 +#define GL_STATISTICS_REGAL 0x9364 + +#define GLEW_REGAL_enable GLEW_GET_VAR(__GLEW_REGAL_enable) + +#endif /* GL_REGAL_enable */ + +/* ------------------------- GL_REGAL_error_string ------------------------- */ + +#ifndef GL_REGAL_error_string +#define GL_REGAL_error_string 1 + +typedef const GLchar* (GLAPIENTRY * PFNGLERRORSTRINGREGALPROC) (GLenum error); + +#define glErrorStringREGAL GLEW_GET_FUN(__glewErrorStringREGAL) + +#define GLEW_REGAL_error_string GLEW_GET_VAR(__GLEW_REGAL_error_string) + +#endif /* GL_REGAL_error_string */ + +/* ------------------------ GL_REGAL_extension_query ----------------------- */ + +#ifndef GL_REGAL_extension_query +#define GL_REGAL_extension_query 1 + +typedef GLboolean (GLAPIENTRY * PFNGLGETEXTENSIONREGALPROC) (const GLchar* ext); +typedef GLboolean (GLAPIENTRY * PFNGLISSUPPORTEDREGALPROC) (const GLchar* ext); + +#define glGetExtensionREGAL GLEW_GET_FUN(__glewGetExtensionREGAL) +#define glIsSupportedREGAL GLEW_GET_FUN(__glewIsSupportedREGAL) + +#define GLEW_REGAL_extension_query GLEW_GET_VAR(__GLEW_REGAL_extension_query) + +#endif /* GL_REGAL_extension_query */ + +/* ------------------------------ GL_REGAL_log ----------------------------- */ + +#ifndef GL_REGAL_log +#define GL_REGAL_log 1 + +#define GL_LOG_ERROR_REGAL 0x9319 +#define GL_LOG_WARNING_REGAL 0x931A +#define GL_LOG_INFO_REGAL 0x931B +#define GL_LOG_APP_REGAL 0x931C +#define GL_LOG_DRIVER_REGAL 0x931D +#define GL_LOG_INTERNAL_REGAL 0x931E +#define GL_LOG_DEBUG_REGAL 0x931F +#define GL_LOG_STATUS_REGAL 0x9320 +#define GL_LOG_HTTP_REGAL 0x9321 + +typedef void (APIENTRY *GLLOGPROCREGAL)(GLenum stream, GLsizei length, const GLchar *message, void *context); + +typedef void (GLAPIENTRY * PFNGLLOGMESSAGECALLBACKREGALPROC) (GLLOGPROCREGAL callback); + +#define glLogMessageCallbackREGAL GLEW_GET_FUN(__glewLogMessageCallbackREGAL) + +#define GLEW_REGAL_log GLEW_GET_VAR(__GLEW_REGAL_log) + +#endif /* GL_REGAL_log */ + +/* ------------------------- GL_REGAL_proc_address ------------------------- */ + +#ifndef GL_REGAL_proc_address +#define GL_REGAL_proc_address 1 + +typedef void * (GLAPIENTRY * PFNGLGETPROCADDRESSREGALPROC) (const GLchar *name); + +#define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL) + +#define GLEW_REGAL_proc_address GLEW_GET_VAR(__GLEW_REGAL_proc_address) + +#endif /* GL_REGAL_proc_address */ + +/* ----------------------- GL_REND_screen_coordinates ---------------------- */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 + +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 + +#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) + +#endif /* GL_REND_screen_coordinates */ + +/* ------------------------------- GL_S3_s3tc ------------------------------ */ + +#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 + +#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) + +#endif /* GL_S3_s3tc */ + +/* -------------------------- GL_SGIS_color_range -------------------------- */ + +#ifndef GL_SGIS_color_range +#define GL_SGIS_color_range 1 + +#define GL_EXTENDED_RANGE_SGIS 0x85A5 +#define GL_MIN_RED_SGIS 0x85A6 +#define GL_MAX_RED_SGIS 0x85A7 +#define GL_MIN_GREEN_SGIS 0x85A8 +#define GL_MAX_GREEN_SGIS 0x85A9 +#define GL_MIN_BLUE_SGIS 0x85AA +#define GL_MAX_BLUE_SGIS 0x85AB +#define GL_MIN_ALPHA_SGIS 0x85AC +#define GL_MAX_ALPHA_SGIS 0x85AD + +#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) + +#endif /* GL_SGIS_color_range */ + +/* ------------------------- GL_SGIS_detail_texture ------------------------ */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 + +typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); + +#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) +#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) + +#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) + +#endif /* GL_SGIS_detail_texture */ + +/* -------------------------- GL_SGIS_fog_function ------------------------- */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 + +typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); +typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); + +#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) +#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) + +#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) + +#endif /* GL_SGIS_fog_function */ + +/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 + +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 + +#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) + +#endif /* GL_SGIS_generate_mipmap */ + +/* -------------------------- GL_SGIS_multisample -------------------------- */ + +#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 (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); + +#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) +#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) + +#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) + +#endif /* GL_SGIS_multisample */ + +/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 + +#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) + +#endif /* GL_SGIS_pixel_texture */ + +/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ + +#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 + +#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) + +#endif /* GL_SGIS_point_line_texgen */ + +/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 + +typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); +typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); + +#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) +#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) + +#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) + +#endif /* GL_SGIS_sharpen_texture */ + +/* --------------------------- GL_SGIS_texture4D --------------------------- */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 + +typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void *pixels); + +#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) +#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) + +#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) + +#endif /* GL_SGIS_texture4D */ + +/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 + +#define GL_CLAMP_TO_BORDER_SGIS 0x812D + +#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) + +#endif /* GL_SGIS_texture_border_clamp */ + +/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 + +#define GL_CLAMP_TO_EDGE_SGIS 0x812F + +#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) + +#endif /* GL_SGIS_texture_edge_clamp */ + +/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 + +typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); +typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); + +#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) +#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) + +#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) + +#endif /* GL_SGIS_texture_filter4 */ + +/* -------------------------- GL_SGIS_texture_lod -------------------------- */ + +#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 + +#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) + +#endif /* GL_SGIS_texture_lod */ + +/* ------------------------- GL_SGIS_texture_select ------------------------ */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 + +#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) + +#endif /* GL_SGIS_texture_select */ + +/* ----------------------------- GL_SGIX_async ----------------------------- */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 + +#define GL_ASYNC_MARKER_SGIX 0x8329 + +typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); +typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); + +#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) +#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) +#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) +#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) +#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) +#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) + +#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) + +#endif /* GL_SGIX_async */ + +/* ------------------------ GL_SGIX_async_histogram ------------------------ */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 + +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D + +#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) + +#endif /* GL_SGIX_async_histogram */ + +/* -------------------------- GL_SGIX_async_pixel -------------------------- */ + +#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 + +#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) + +#endif /* GL_SGIX_async_pixel */ + +/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ + +#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 + +#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) + +#endif /* GL_SGIX_blend_alpha_minmax */ + +/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 + +#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) + +#endif /* GL_SGIX_clipmap */ + +/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 + +#define GL_CONVOLUTION_HINT_SGIX 0x8316 + +#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) + +#endif /* GL_SGIX_convolution_accuracy */ + +/* ------------------------- GL_SGIX_depth_texture ------------------------- */ + +#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 + +#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) + +#endif /* GL_SGIX_depth_texture */ + +/* -------------------------- GL_SGIX_flush_raster ------------------------- */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 + +typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); + +#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) + +#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) + +#endif /* GL_SGIX_flush_raster */ + +/* --------------------------- GL_SGIX_fog_offset -------------------------- */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 + +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 + +#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) + +#endif /* GL_SGIX_fog_offset */ + +/* -------------------------- GL_SGIX_fog_texture -------------------------- */ + +#ifndef GL_SGIX_fog_texture +#define GL_SGIX_fog_texture 1 + +#define GL_FOG_PATCHY_FACTOR_SGIX 0 +#define GL_FRAGMENT_FOG_SGIX 0 +#define GL_TEXTURE_FOG_SGIX 0 + +typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); + +#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) + +#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) + +#endif /* GL_SGIX_fog_texture */ + +/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ + +#ifndef GL_SGIX_fragment_specular_lighting +#define GL_SGIX_fragment_specular_lighting 1 + +typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); +typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); +typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); + +#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) +#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) +#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) +#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) +#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) +#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) +#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) +#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) +#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) +#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) +#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) +#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) +#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) +#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) +#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) +#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) +#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) + +#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) + +#endif /* GL_SGIX_fragment_specular_lighting */ + +/* --------------------------- GL_SGIX_framezoom --------------------------- */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 + +typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); + +#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) + +#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) + +#endif /* GL_SGIX_framezoom */ + +/* --------------------------- GL_SGIX_interlace --------------------------- */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 + +#define GL_INTERLACE_SGIX 0x8094 + +#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) + +#endif /* GL_SGIX_interlace */ + +/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 + +#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) + +#endif /* GL_SGIX_ir_instrument1 */ + +/* ------------------------- GL_SGIX_list_priority ------------------------- */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 + +#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) + +#endif /* GL_SGIX_list_priority */ + +/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 + +typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); + +#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) + +#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) + +#endif /* GL_SGIX_pixel_texture */ + +/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ + +#ifndef GL_SGIX_pixel_texture_bits +#define GL_SGIX_pixel_texture_bits 1 + +#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) + +#endif /* GL_SGIX_pixel_texture_bits */ + +/* ------------------------ GL_SGIX_reference_plane ------------------------ */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 + +typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); + +#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) + +#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) + +#endif /* GL_SGIX_reference_plane */ + +/* ---------------------------- GL_SGIX_resample --------------------------- */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 + +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 + +#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) + +#endif /* GL_SGIX_resample */ + +/* ----------------------------- GL_SGIX_shadow ---------------------------- */ + +#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 + +#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) + +#endif /* GL_SGIX_shadow */ + +/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 + +#define GL_SHADOW_AMBIENT_SGIX 0x80BF + +#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) + +#endif /* GL_SGIX_shadow_ambient */ + +/* ----------------------------- GL_SGIX_sprite ---------------------------- */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 + +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); + +#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) +#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) +#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) +#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) + +#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) + +#endif /* GL_SGIX_sprite */ + +/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 + +typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); + +#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) + +#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) + +#endif /* GL_SGIX_tag_sample_buffer */ + +/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 + +#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) + +#endif /* GL_SGIX_texture_add_env */ + +/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ + +#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 + +#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) + +#endif /* GL_SGIX_texture_coordinate_clamp */ + +/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 + +#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) + +#endif /* GL_SGIX_texture_lod_bias */ + +/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 + +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E + +#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) + +#endif /* GL_SGIX_texture_multi_buffer */ + +/* ------------------------- GL_SGIX_texture_range ------------------------- */ + +#ifndef GL_SGIX_texture_range +#define GL_SGIX_texture_range 1 + +#define GL_RGB_SIGNED_SGIX 0x85E0 +#define GL_RGBA_SIGNED_SGIX 0x85E1 +#define GL_ALPHA_SIGNED_SGIX 0x85E2 +#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 +#define GL_INTENSITY_SIGNED_SGIX 0x85E4 +#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 +#define GL_RGB16_SIGNED_SGIX 0x85E6 +#define GL_RGBA16_SIGNED_SGIX 0x85E7 +#define GL_ALPHA16_SIGNED_SGIX 0x85E8 +#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 +#define GL_INTENSITY16_SIGNED_SGIX 0x85EA +#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB +#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC +#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED +#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE +#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF +#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 +#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 +#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 +#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 +#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 +#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 +#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 +#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 +#define GL_MIN_LUMINANCE_SGIS 0x85F8 +#define GL_MAX_LUMINANCE_SGIS 0x85F9 +#define GL_MIN_INTENSITY_SGIS 0x85FA +#define GL_MAX_INTENSITY_SGIS 0x85FB + +#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) + +#endif /* GL_SGIX_texture_range */ + +/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ + +#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 + +#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) + +#endif /* GL_SGIX_texture_scale_bias */ + +/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) + +#endif /* GL_SGIX_vertex_preclip */ + +/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ + +#ifndef GL_SGIX_vertex_preclip_hint +#define GL_SGIX_vertex_preclip_hint 1 + +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF + +#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) + +#endif /* GL_SGIX_vertex_preclip_hint */ + +/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 + +#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) + +#endif /* GL_SGIX_ycrcb */ + +/* -------------------------- GL_SGI_color_matrix -------------------------- */ + +#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 + +#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) + +#endif /* GL_SGI_color_matrix */ + +/* --------------------------- GL_SGI_color_table -------------------------- */ + +#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 (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); +typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); +typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table); + +#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) +#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) +#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) +#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) +#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) +#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) +#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) + +#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) + +#endif /* GL_SGI_color_table */ + +/* ----------------------- GL_SGI_texture_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 + +#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) + +#endif /* GL_SGI_texture_color_table */ + +/* ------------------------- GL_SUNX_constant_data ------------------------- */ + +#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 (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); + +#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) + +#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) + +#endif /* GL_SUNX_constant_data */ + +/* -------------------- GL_SUN_convolution_border_modes -------------------- */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 + +#define GL_WRAP_BORDER_SUN 0x81D4 + +#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) + +#endif /* GL_SUN_convolution_border_modes */ + +/* -------------------------- GL_SUN_global_alpha -------------------------- */ + +#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 (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); + +#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) +#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) +#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) +#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) +#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) +#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) +#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) +#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) + +#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) + +#endif /* GL_SUN_global_alpha */ + +/* --------------------------- GL_SUN_mesh_array --------------------------- */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 + +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 + +#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) + +#endif /* GL_SUN_mesh_array */ + +/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ + +#ifndef GL_SUN_read_video_pixels +#define GL_SUN_read_video_pixels 1 + +typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels); + +#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) + +#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) + +#endif /* GL_SUN_read_video_pixels */ + +/* --------------------------- GL_SUN_slice_accum -------------------------- */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 + +#define GL_SLICE_ACCUM_SUN 0x85CC + +#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) + +#endif /* GL_SUN_slice_accum */ + +/* -------------------------- GL_SUN_triangle_list ------------------------- */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 + +#define GL_RESTART_SUN 0x01 +#define GL_REPLACE_MIDDLE_SUN 0x02 +#define GL_REPLACE_OLDEST_SUN 0x03 +#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 (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); + +#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) +#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) +#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) +#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) +#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) +#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) +#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) + +#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) + +#endif /* GL_SUN_triangle_list */ + +/* ----------------------------- GL_SUN_vertex ----------------------------- */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 + +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); +typedef void (GLAPIENTRY * 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 (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); + +#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) +#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) +#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) +#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) +#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) +#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) +#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) +#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) +#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) +#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) +#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) +#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) +#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) +#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) +#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) +#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) +#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) +#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) +#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) +#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) +#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) +#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) +#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) +#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) +#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) +#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) +#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) +#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) +#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) +#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) +#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) +#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) + +#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) + +#endif /* GL_SUN_vertex */ + +/* -------------------------- GL_WIN_phong_shading ------------------------- */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 + +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB + +#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) + +#endif /* GL_WIN_phong_shading */ + +/* -------------------------- GL_WIN_specular_fog -------------------------- */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 + +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC + +#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) + +#endif /* GL_WIN_specular_fog */ + +/* ---------------------------- GL_WIN_swap_hint --------------------------- */ + +#ifndef GL_WIN_swap_hint +#define GL_WIN_swap_hint 1 + +typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); + +#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) + +#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) + +#endif /* GL_WIN_swap_hint */ + +/* ------------------------------------------------------------------------- */ + +#if defined(GLEW_MX) && defined(_WIN32) +#define GLEW_FUN_EXPORT +#else +#define GLEW_FUN_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) +#define GLEW_VAR_EXPORT +#else +#define GLEW_VAR_EXPORT GLEWAPI +#endif /* GLEW_MX */ + +#if defined(GLEW_MX) && defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; + +GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; +GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; +GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; +GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; +GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; +GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; +GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; +GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; +GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; +GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; +GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; +GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; + +GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; +GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; +GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; +GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; +GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; +GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; +GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; +GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; +GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; +GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; +GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; +GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; +GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; +GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; +GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; +GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; + +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; +GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; +GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; +GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; +GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; +GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; +GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; +GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex; +GLEW_FUN_EXPORT PFNGLTEXBUFFERPROC __glewTexBuffer; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v; +GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v; + +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci; +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading; + +GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus; + +GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD; + +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD; + +GLEW_FUN_EXPORT PFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD; +GLEW_FUN_EXPORT PFNGLGENNAMESAMDPROC __glewGenNamesAMD; +GLEW_FUN_EXPORT PFNGLISNAMEAMDPROC __glewIsNameAMD; + +GLEW_FUN_EXPORT PFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD; + +GLEW_FUN_EXPORT PFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD; +GLEW_FUN_EXPORT PFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD; +GLEW_FUN_EXPORT PFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD; +GLEW_FUN_EXPORT PFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD; + +GLEW_FUN_EXPORT PFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD; + +GLEW_FUN_EXPORT PFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD; + +GLEW_FUN_EXPORT PFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD; +GLEW_FUN_EXPORT PFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD; + +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE; +GLEW_FUN_EXPORT PFNGLENDQUERYANGLEPROC __glewEndQueryANGLE; +GLEW_FUN_EXPORT PFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE; +GLEW_FUN_EXPORT PFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE; +GLEW_FUN_EXPORT PFNGLISQUERYANGLEPROC __glewIsQueryANGLE; +GLEW_FUN_EXPORT PFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE; + +GLEW_FUN_EXPORT PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; +GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; +GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; +GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; +GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; +GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; +GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; + +GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE; +GLEW_FUN_EXPORT PFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE; + +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; +GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; + +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE; +GLEW_FUN_EXPORT PFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE; +GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFPROC __glewClearDepthf; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFPROC __glewDepthRangef; +GLEW_FUN_EXPORT PFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat; +GLEW_FUN_EXPORT PFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler; +GLEW_FUN_EXPORT PFNGLSHADERBINARYPROC __glewShaderBinary; + +GLEW_FUN_EXPORT PFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance; + +GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB; +GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB; +GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB; +GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB; +GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed; +GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex; + +GLEW_FUN_EXPORT PFNGLBUFFERSTORAGEPROC __glewBufferStorage; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT; + +GLEW_FUN_EXPORT PFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB; + +GLEW_FUN_EXPORT PFNGLCLEARBUFFERDATAPROC __glewClearBufferData; +GLEW_FUN_EXPORT PFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT; + +GLEW_FUN_EXPORT PFNGLCLEARTEXIMAGEPROC __glewClearTexImage; +GLEW_FUN_EXPORT PFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage; + +GLEW_FUN_EXPORT PFNGLCLIPCONTROLPROC __glewClipControl; + +GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; + +GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute; +GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect; + +GLEW_FUN_EXPORT PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB; + +GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData; + +GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB; + +GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit; +GLEW_FUN_EXPORT PFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer; +GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv; +GLEW_FUN_EXPORT PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D; +GLEW_FUN_EXPORT PFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D; +GLEW_FUN_EXPORT PFNGLCREATEBUFFERSPROC __glewCreateBuffers; +GLEW_FUN_EXPORT PFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines; +GLEW_FUN_EXPORT PFNGLCREATEQUERIESPROC __glewCreateQueries; +GLEW_FUN_EXPORT PFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers; +GLEW_FUN_EXPORT PFNGLCREATESAMPLERSPROC __glewCreateSamplers; +GLEW_FUN_EXPORT PFNGLCREATETEXTURESPROC __glewCreateTextures; +GLEW_FUN_EXPORT PFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange; +GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v; +GLEW_FUN_EXPORT PFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv; +GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData; +GLEW_FUN_EXPORT PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERPROC __glewTextureBuffer; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange; +GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB; +GLEW_FUN_EXPORT PFNGLBLENDFUNCIARBPROC __glewBlendFunciARB; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMBINARYPROC __glewProgramBinary; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri; + +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage; +GLEW_FUN_EXPORT PFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMDVPROC __glewGetUniformdv; +GLEW_FUN_EXPORT PFNGLUNIFORM1DPROC __glewUniform1d; +GLEW_FUN_EXPORT PFNGLUNIFORM1DVPROC __glewUniform1dv; +GLEW_FUN_EXPORT PFNGLUNIFORM2DPROC __glewUniform2d; +GLEW_FUN_EXPORT PFNGLUNIFORM2DVPROC __glewUniform2dv; +GLEW_FUN_EXPORT PFNGLUNIFORM3DPROC __glewUniform3d; +GLEW_FUN_EXPORT PFNGLUNIFORM3DVPROC __glewUniform3dv; +GLEW_FUN_EXPORT PFNGLUNIFORM4DPROC __glewUniform4d; +GLEW_FUN_EXPORT PFNGLUNIFORM4DVPROC __glewUniform4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; +GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; +GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; +GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v; + +GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData; +GLEW_FUN_EXPORT PFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData; +GLEW_FUN_EXPORT PFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer; +GLEW_FUN_EXPORT PFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer; +GLEW_FUN_EXPORT PFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage; +GLEW_FUN_EXPORT PFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage; + +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; +GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; + +GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; +GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase; +GLEW_FUN_EXPORT PFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange; +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures; +GLEW_FUN_EXPORT PFNGLBINDSAMPLERSPROC __glewBindSamplers; +GLEW_FUN_EXPORT PFNGLBINDTEXTURESPROC __glewBindTextures; +GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect; + +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; + +GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; +GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; +GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; +GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; +GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; +GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; +GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex; + +GLEW_FUN_EXPORT PFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB; +GLEW_FUN_EXPORT PFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB; +GLEW_FUN_EXPORT PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB; +GLEW_FUN_EXPORT PFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB; +GLEW_FUN_EXPORT PFNGLGETNMAPDVARBPROC __glewGetnMapdvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPFVARBPROC __glewGetnMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNMAPIVARBPROC __glewGetnMapivARB; +GLEW_FUN_EXPORT PFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB; +GLEW_FUN_EXPORT PFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB; +GLEW_FUN_EXPORT PFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB; +GLEW_FUN_EXPORT PFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB; +GLEW_FUN_EXPORT PFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB; +GLEW_FUN_EXPORT PFNGLREADNPIXELSARBPROC __glewReadnPixelsARB; + +GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB; + +GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler; +GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers; +GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv; +GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri; +GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv; + +GLEW_FUN_EXPORT PFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines; +GLEW_FUN_EXPORT PFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv; +GLEW_FUN_EXPORT PFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline; + +GLEW_FUN_EXPORT PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIERPROC __glewMemoryBarrier; + +GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; +GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; +GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; +GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; +GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; +GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; +GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; +GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; +GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; +GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; +GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; +GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; +GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; +GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; +GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; +GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; +GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; + +GLEW_FUN_EXPORT PFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding; + +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex; +GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation; +GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv; +GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv; + +GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB; +GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB; +GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB; +GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB; +GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB; + +GLEW_FUN_EXPORT PFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB; + +GLEW_FUN_EXPORT PFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB; +GLEW_FUN_EXPORT PFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT; + +GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync; +GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync; +GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync; +GLEW_FUN_EXPORT PFNGLGETINTEGER64VPROC __glewGetInteger64v; +GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv; +GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync; +GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync; + +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv; +GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri; + +GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERPROC __glewTextureBarrier; + +GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; + +GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT; + +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski; +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGE1DPROC __glewTexStorage1D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DPROC __glewTexStorage2D; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DPROC __glewTexStorage3D; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT; + +GLEW_FUN_EXPORT PFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample; +GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT; + +GLEW_FUN_EXPORT PFNGLTEXTUREVIEWPROC __glewTextureView; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v; +GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback; + +GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream; +GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed; +GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv; + +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced; + +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; +GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName; +GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv; +GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; +GLEW_FUN_EXPORT PFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex; +GLEW_FUN_EXPORT PFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices; +GLEW_FUN_EXPORT PFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; +GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; +GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer; + +GLEW_FUN_EXPORT PFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat; +GLEW_FUN_EXPORT PFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor; + +GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; +GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; +GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; +GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; + +GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; +GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; +GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; +GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; +GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; +GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; +GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; +GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; + +GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; +GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; +GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; + +GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; +GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; +GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; + +GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui; +GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv; +GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui; +GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui; +GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui; +GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui; +GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui; +GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui; +GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv; + +GLEW_FUN_EXPORT PFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VPROC __glewGetDoublei_v; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VPROC __glewGetFloati_v; +GLEW_FUN_EXPORT PFNGLSCISSORARRAYVPROC __glewScissorArrayv; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDPROC __glewScissorIndexed; +GLEW_FUN_EXPORT PFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv; +GLEW_FUN_EXPORT PFNGLVIEWPORTARRAYVPROC __glewViewportArrayv; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf; +GLEW_FUN_EXPORT PFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; + +GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; + +GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; +GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; + +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; +GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; + +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; +GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; +GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; +GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; +GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; +GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; +GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; + +GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; + +GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI; +GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI; + +GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; +GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; + +GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; +GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; +GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; +GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; +GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; +GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; + +GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; +GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; +GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; +GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; +GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; + +GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; + +GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; + +GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; +GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; + +GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; +GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; + +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; +GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; +GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; + +GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; + +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; +GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT; +GLEW_FUN_EXPORT PFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT; + +GLEW_FUN_EXPORT PFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT; +GLEW_FUN_EXPORT PFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT; +GLEW_FUN_EXPORT PFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT; + +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; + +GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; +GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT; +GLEW_FUN_EXPORT PFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT; +GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; +GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; +GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; +GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; +GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; +GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; +GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; +GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; +GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; +GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; +GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; +GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; +GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; +GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT; + +GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; +GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; +GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; +GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; +GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; +GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; +GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; + +GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; + +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; +GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; +GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; + +GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; +GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; +GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; +GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; +GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; +GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; +GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; +GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; +GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; + +GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; +GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; +GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; +GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; +GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; +GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; + +GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; + +GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; + +GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; +GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; +GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; + +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; +GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; + +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; + +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT; + +GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT; + +GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV; +GLEW_FUN_EXPORT PFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV; +GLEW_FUN_EXPORT PFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV; +GLEW_FUN_EXPORT PFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT; + +GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; +GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; + +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; + +GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT; +GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT; +GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT; + +GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT; +GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT; + +GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; + +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; + +GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; + +GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; +GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; + +GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; +GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; +GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; +GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; +GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; + +GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; + +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; +GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; + +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; + +GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; +GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; +GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; +GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; +GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT; + +GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; +GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; +GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; +GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; +GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; +GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; +GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; +GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; +GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; +GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; +GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; +GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; +GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; +GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; +GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; +GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; +GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; +GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; + +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; + +GLEW_FUN_EXPORT PFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT; + +GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; + +GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; + +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; +GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; + +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; +GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; +GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; + +GLEW_FUN_EXPORT PFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL; +GLEW_FUN_EXPORT PFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL; +GLEW_FUN_EXPORT PFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL; + +GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; +GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; +GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; +GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; + +GLEW_FUN_EXPORT PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL; +GLEW_FUN_EXPORT PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL; +GLEW_FUN_EXPORT PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL; +GLEW_FUN_EXPORT PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL; + +GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; +GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; + +GLEW_FUN_EXPORT PFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR; + +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl; +GLEW_FUN_EXPORT PFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert; +GLEW_FUN_EXPORT PFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog; +GLEW_FUN_EXPORT PFNGLGETOBJECTLABELPROC __glewGetObjectLabel; +GLEW_FUN_EXPORT PFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel; +GLEW_FUN_EXPORT PFNGLOBJECTLABELPROC __glewObjectLabel; +GLEW_FUN_EXPORT PFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel; +GLEW_FUN_EXPORT PFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup; +GLEW_FUN_EXPORT PFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup; + +GLEW_FUN_EXPORT PFNGLGETNUNIFORMFVPROC __glewGetnUniformfv; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMIVPROC __glewGetnUniformiv; +GLEW_FUN_EXPORT PFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv; +GLEW_FUN_EXPORT PFNGLREADNPIXELSPROC __glewReadnPixels; + +GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled; +GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion; +GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion; +GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion; +GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONPROC __glewReadBufferRegion; + +GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; + +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; +GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV; + +GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV; +GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV; + +GLEW_FUN_EXPORT PFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV; +GLEW_FUN_EXPORT PFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV; +GLEW_FUN_EXPORT PFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV; +GLEW_FUN_EXPORT PFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV; +GLEW_FUN_EXPORT PFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV; + +GLEW_FUN_EXPORT PFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV; +GLEW_FUN_EXPORT PFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV; + +GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; +GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; + +GLEW_FUN_EXPORT PFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV; + +GLEW_FUN_EXPORT PFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; +GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; + +GLEW_FUN_EXPORT PFNGLDRAWTEXTURENVPROC __glewDrawTextureNV; + +GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; +GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; +GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; +GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; +GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; +GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; + +GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; +GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; +GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; +GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; +GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; +GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; +GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV; + +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; + +GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; + +GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV; +GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV; + +GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; +GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; +GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; +GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; +GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; +GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; +GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; +GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; +GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; + +GLEW_FUN_EXPORT PFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV; + +GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; +GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; +GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; +GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; + +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; +GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; + +GLEW_FUN_EXPORT PFNGLCOPYPATHNVPROC __glewCopyPathNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV; +GLEW_FUN_EXPORT PFNGLDELETEPATHSNVPROC __glewDeletePathsNV; +GLEW_FUN_EXPORT PFNGLGENPATHSNVPROC __glewGenPathsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV; +GLEW_FUN_EXPORT PFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV; +GLEW_FUN_EXPORT PFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV; +GLEW_FUN_EXPORT PFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV; +GLEW_FUN_EXPORT PFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV; +GLEW_FUN_EXPORT PFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV; +GLEW_FUN_EXPORT PFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV; +GLEW_FUN_EXPORT PFNGLISPATHNVPROC __glewIsPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV; +GLEW_FUN_EXPORT PFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV; +GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV; +GLEW_FUN_EXPORT PFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV; +GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV; +GLEW_FUN_EXPORT PFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV; +GLEW_FUN_EXPORT PFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV; +GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV; +GLEW_FUN_EXPORT PFNGLPATHCOLORGENNVPROC __glewPathColorGenNV; +GLEW_FUN_EXPORT PFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHCOORDSNVPROC __glewPathCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV; +GLEW_FUN_EXPORT PFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV; +GLEW_FUN_EXPORT PFNGLPATHFOGGENNVPROC __glewPathFogGenNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV; +GLEW_FUN_EXPORT PFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV; +GLEW_FUN_EXPORT PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERINVPROC __glewPathParameteriNV; +GLEW_FUN_EXPORT PFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV; +GLEW_FUN_EXPORT PFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV; +GLEW_FUN_EXPORT PFNGLPATHSTRINGNVPROC __glewPathStringNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV; +GLEW_FUN_EXPORT PFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV; +GLEW_FUN_EXPORT PFNGLPATHTEXGENNVPROC __glewPathTexGenNV; +GLEW_FUN_EXPORT PFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV; +GLEW_FUN_EXPORT PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMPATHNVPROC __glewTransformPathNV; +GLEW_FUN_EXPORT PFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV; + +GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; +GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; + +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; + +GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; +GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; + +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; +GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; +GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; +GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; +GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; + +GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; + +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV; +GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV; + +GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV; +GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV; +GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV; +GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV; +GLEW_FUN_EXPORT PFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV; +GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64NVPROC __glewUniformui64NV; +GLEW_FUN_EXPORT PFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV; + +GLEW_FUN_EXPORT PFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV; +GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV; + +GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; +GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; +GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; +GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; +GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; +GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; + +GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV; +GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV; +GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV; + +GLEW_FUN_EXPORT PFNGLVDPAUFININVPROC __glewVDPAUFiniNV; +GLEW_FUN_EXPORT PFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV; +GLEW_FUN_EXPORT PFNGLVDPAUINITNVPROC __glewVDPAUInitNV; +GLEW_FUN_EXPORT PFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV; +GLEW_FUN_EXPORT PFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV; +GLEW_FUN_EXPORT PFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV; + +GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; +GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; + +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV; + +GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV; +GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV; +GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV; +GLEW_FUN_EXPORT PFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV; +GLEW_FUN_EXPORT PFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV; +GLEW_FUN_EXPORT PFNGLINDEXFORMATNVPROC __glewIndexFormatNV; +GLEW_FUN_EXPORT PFNGLNORMALFORMATNVPROC __glewNormalFormatNV; +GLEW_FUN_EXPORT PFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV; +GLEW_FUN_EXPORT PFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV; +GLEW_FUN_EXPORT PFNGLVERTEXFORMATNVPROC __glewVertexFormatNV; + +GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; +GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; +GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; +GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; +GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; +GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; +GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; +GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; +GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; +GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; +GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; +GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; +GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; +GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; + +GLEW_FUN_EXPORT PFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV; +GLEW_FUN_EXPORT PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV; +GLEW_FUN_EXPORT PFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV; +GLEW_FUN_EXPORT PFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV; +GLEW_FUN_EXPORT PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV; + +GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; +GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; +GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; +GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; + +GLEW_FUN_EXPORT PFNGLALPHAFUNCXPROC __glewAlphaFuncx; +GLEW_FUN_EXPORT PFNGLCLEARCOLORXPROC __glewClearColorx; +GLEW_FUN_EXPORT PFNGLCLEARDEPTHXPROC __glewClearDepthx; +GLEW_FUN_EXPORT PFNGLCOLOR4XPROC __glewColor4x; +GLEW_FUN_EXPORT PFNGLDEPTHRANGEXPROC __glewDepthRangex; +GLEW_FUN_EXPORT PFNGLFOGXPROC __glewFogx; +GLEW_FUN_EXPORT PFNGLFOGXVPROC __glewFogxv; +GLEW_FUN_EXPORT PFNGLFRUSTUMFPROC __glewFrustumf; +GLEW_FUN_EXPORT PFNGLFRUSTUMXPROC __glewFrustumx; +GLEW_FUN_EXPORT PFNGLLIGHTMODELXPROC __glewLightModelx; +GLEW_FUN_EXPORT PFNGLLIGHTMODELXVPROC __glewLightModelxv; +GLEW_FUN_EXPORT PFNGLLIGHTXPROC __glewLightx; +GLEW_FUN_EXPORT PFNGLLIGHTXVPROC __glewLightxv; +GLEW_FUN_EXPORT PFNGLLINEWIDTHXPROC __glewLineWidthx; +GLEW_FUN_EXPORT PFNGLLOADMATRIXXPROC __glewLoadMatrixx; +GLEW_FUN_EXPORT PFNGLMATERIALXPROC __glewMaterialx; +GLEW_FUN_EXPORT PFNGLMATERIALXVPROC __glewMaterialxv; +GLEW_FUN_EXPORT PFNGLMULTMATRIXXPROC __glewMultMatrixx; +GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x; +GLEW_FUN_EXPORT PFNGLNORMAL3XPROC __glewNormal3x; +GLEW_FUN_EXPORT PFNGLORTHOFPROC __glewOrthof; +GLEW_FUN_EXPORT PFNGLORTHOXPROC __glewOrthox; +GLEW_FUN_EXPORT PFNGLPOINTSIZEXPROC __glewPointSizex; +GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx; +GLEW_FUN_EXPORT PFNGLROTATEXPROC __glewRotatex; +GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex; +GLEW_FUN_EXPORT PFNGLSCALEXPROC __glewScalex; +GLEW_FUN_EXPORT PFNGLTEXENVXPROC __glewTexEnvx; +GLEW_FUN_EXPORT PFNGLTEXENVXVPROC __glewTexEnvxv; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERXPROC __glewTexParameterx; +GLEW_FUN_EXPORT PFNGLTRANSLATEXPROC __glewTranslatex; + +GLEW_FUN_EXPORT PFNGLCLIPPLANEFPROC __glewClipPlanef; +GLEW_FUN_EXPORT PFNGLCLIPPLANEXPROC __glewClipPlanex; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFPROC __glewGetClipPlanef; +GLEW_FUN_EXPORT PFNGLGETCLIPPLANEXPROC __glewGetClipPlanex; +GLEW_FUN_EXPORT PFNGLGETFIXEDVPROC __glewGetFixedv; +GLEW_FUN_EXPORT PFNGLGETLIGHTXVPROC __glewGetLightxv; +GLEW_FUN_EXPORT PFNGLGETMATERIALXVPROC __glewGetMaterialxv; +GLEW_FUN_EXPORT PFNGLGETTEXENVXVPROC __glewGetTexEnvxv; +GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXPROC __glewPointParameterx; +GLEW_FUN_EXPORT PFNGLPOINTPARAMETERXVPROC __glewPointParameterxv; +GLEW_FUN_EXPORT PFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES; +GLEW_FUN_EXPORT PFNGLTEXPARAMETERXVPROC __glewTexParameterxv; + +GLEW_FUN_EXPORT PFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL; + +GLEW_FUN_EXPORT PFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL; +GLEW_FUN_EXPORT PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL; + +GLEW_FUN_EXPORT PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL; + +GLEW_FUN_EXPORT PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL; + +GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; +GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; + +GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; +GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; + +GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; +GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; + +GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; +GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; + +GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; +GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; + +GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; +GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; +GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; +GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; + +GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; + +GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; + +GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; +GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; +GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; + +GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; + +GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; + +GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; + +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; +GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; + +GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; + +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; +GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; +GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; + +GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; + +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; +GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; + +GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; + +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; + +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; +GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; +GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; + +GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; + +#if defined(GLEW_MX) && !defined(_WIN32) +struct GLEWContextStruct +{ +#endif /* GLEW_MX */ + +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_1; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_2; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_3; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_4; +GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_5; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; +GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_blend_minmax_factor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gcn_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int64; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_interleaved_elements; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_occlusion_query_event; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_pinned_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_query_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sample_positions; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_atomic_counter_ops; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_value_export; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_trinary_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sparse_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_stencil_operation_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback4; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_layer; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator; +GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_viewport_index; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_blit; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_framebuffer_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_instanced_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_pack_reverse_row_order; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_program_binary; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt1; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt3; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_compression_dxt5; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_texture_usage; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ANGLE_translated_shader_source; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_object_purgeable; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_rgb_422; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_row_bytes; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES2_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_1_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_ES3_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_arrays_of_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_base_instance; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_bindless_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_buffer_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cl_event; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clear_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_clip_control; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compressed_texture_pixel_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compute_variable_group_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conditional_render_inverted; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_conservative_depth; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_image; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_cull_distance; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_debug_output; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_derivative_control; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_direct_state_access; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_enhanced_layouts; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_uniform_location; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_layer_viewport; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_no_attachments; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_program_binary; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_get_texture_sub_image; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_indirect_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_internalformat_query2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_invalidate_subdata; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_alignment; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_bind; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pipeline_statistics_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_program_interface_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_query_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robust_buffer_access_behavior; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_application_isolation; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_robustness_share_group_isolation; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cubemap_per_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_atomic_counters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_draw_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_group_vote; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_image_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_stencil_export; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_storage_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_image_samples; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_420pack; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_packing; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sparse_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_stencil_texturing; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_barrier; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_range; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_gather; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirror_clamp_to_edge; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_levels; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_stencil8; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_storage_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_view; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback_overflow_query; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_attrib_binding; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_viewport_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; +GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_meminfo; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; +GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_label; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_debug_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_post_depth_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_provoking_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_raster_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_formatted; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_integer_mix; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_sparse_texture2; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB_decode; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_snorm; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; +GLEW_VAR_EXPORT GLboolean __GLEW_EXT_x11_sync_object; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; +GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; +GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; +GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_fragment_shader_ordering; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_map_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_performance_query; +GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_blend_equation_advanced_coherent; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_context_flush_control; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_debug; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robust_buffer_access_behavior; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_robustness; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_hdr; +GLEW_VAR_EXPORT GLboolean __GLEW_KHR_texture_compression_astc_ldr; +GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; +GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; +GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NVX_conditional_render; +GLEW_VAR_EXPORT GLboolean __GLEW_NVX_gpu_memory_info; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_multi_draw_indirect_count; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_bindless_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_equation_advanced_coherent; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_compute_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_conservative_raster; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_image; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_deep_texture3D; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_draw_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fill_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_coverage_to_color; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_shader_interlock; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_mixed_samples; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader_passthrough; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5_mem_extended; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_internalformat_sample_query; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_path_rendering_shared_edge; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_locations; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_sample_mask_override_coverage; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_counters; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_fp16_vector; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_int64; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_storage_buffer_object; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_group; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_shuffle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_uniform_buffer_unified_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vdpau_interop; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_video_capture; +GLEW_VAR_EXPORT GLboolean __GLEW_NV_viewport_array2; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; +GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_0_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_ES1_1_compatibility; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_enable; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_error_string; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_extension_query; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_log; +GLEW_VAR_EXPORT GLboolean __GLEW_REGAL_proc_address; +GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; +GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; +GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; +GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; +GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; +GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; + +#ifdef GLEW_MX +}; /* GLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +/* error codes */ +#define GLEW_OK 0 +#define GLEW_NO_ERROR 0 +#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ +#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* Need at least OpenGL 1.1 */ +#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* Need at least GLX 1.2 */ + +/* string codes */ +#define GLEW_VERSION 1 +#define GLEW_VERSION_MAJOR 2 +#define GLEW_VERSION_MINOR 3 +#define GLEW_VERSION_MICRO 4 + +/* API */ +#ifdef GLEW_MX + +typedef struct GLEWContextStruct GLEWContext; +GLEWAPI GLenum GLEWAPIENTRY glewContextInit (GLEWContext *ctx); +GLEWAPI GLboolean GLEWAPIENTRY glewContextIsSupported (const GLEWContext *ctx, const char *name); + +#define glewInit() glewContextInit(glewGetContext()) +#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) +#ifdef _WIN32 +# define GLEW_GET_FUN(x) glewGetContext()->x +#else +# define GLEW_GET_FUN(x) x +#endif + +#else /* GLEW_MX */ + +GLEWAPI GLenum GLEWAPIENTRY glewInit (void); +GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name); +#define glewIsExtensionSupported(x) glewIsSupported(x) + +#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLEW_GET_FUN(x) x + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean glewExperimental; +GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name); +GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error); +GLEWAPI const GLubyte * GLEWAPIENTRY glewGetString (GLenum name); + +#ifdef __cplusplus +} +#endif + +#ifdef GLEW_APIENTRY_DEFINED +#undef GLEW_APIENTRY_DEFINED +#undef APIENTRY +#endif + +#ifdef GLEW_CALLBACK_DEFINED +#undef GLEW_CALLBACK_DEFINED +#undef CALLBACK +#endif + +#ifdef GLEW_WINGDIAPI_DEFINED +#undef GLEW_WINGDIAPI_DEFINED +#undef WINGDIAPI +#endif + +#undef GLAPI +/* #undef GLEWAPI */ + +#endif /* __glew_h__ */ diff --git a/lib/windows64/include/GL/glxew.h b/lib/windows64/include/GL/glxew.h new file mode 100644 index 0000000..ca6cf8f --- /dev/null +++ b/lib/windows64/include/GL/glxew.h @@ -0,0 +1,1771 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* + * Mesa 3-D graphics library + * Version: 7.0 + * + * Copyright (C) 1999-2007 Brian Paul 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 + * BRIAN PAUL 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. + */ + +/* +** 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. +*/ + +#ifndef __glxew_h__ +#define __glxew_h__ +#define __GLXEW_H__ + +#ifdef __glxext_h_ +#error glxext.h included before glxew.h +#endif + +#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__) +#error glx.h included before glxew.h +#endif + +#define __glxext_h_ + +#define GLX_H +#define __GLX_glx_h__ +#define __glx_h__ + +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xmd.h> +#include <GL/glew.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* ---------------------------- GLX_VERSION_1_0 --------------------------- */ + +#ifndef GLX_VERSION_1_0 +#define GLX_VERSION_1_0 1 + +#define GLX_USE_GL 1 +#define GLX_BUFFER_SIZE 2 +#define GLX_LEVEL 3 +#define GLX_RGBA 4 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_NO_EXTENSION 3 +#define GLX_BAD_VISUAL 4 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_ENUM 7 + +typedef XID GLXDrawable; +typedef XID GLXPixmap; +#ifdef __sun +typedef struct __glXContextRec *GLXContext; +#else +typedef struct __GLXcontextRec *GLXContext; +#endif + +typedef unsigned int GLXVideoDeviceNV; + +extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase); +extern Bool glXQueryVersion (Display *dpy, int *major, int *minor); +extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value); +extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList); +extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap); +extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix); +extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct); +extern void glXDestroyContext (Display *dpy, GLXContext ctx); +extern Bool glXIsDirect (Display *dpy, GLXContext ctx); +extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask); +extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx); +extern GLXContext glXGetCurrentContext (void); +extern GLXDrawable glXGetCurrentDrawable (void); +extern void glXWaitGL (void); +extern void glXWaitX (void); +extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable); +extern void glXUseXFont (Font font, int first, int count, int listBase); + +#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0) + +#endif /* GLX_VERSION_1_0 */ + +/* ---------------------------- GLX_VERSION_1_1 --------------------------- */ + +#ifndef GLX_VERSION_1_1 +#define GLX_VERSION_1_1 + +#define GLX_VENDOR 0x1 +#define GLX_VERSION 0x2 +#define GLX_EXTENSIONS 0x3 + +extern const char* glXQueryExtensionsString (Display *dpy, int screen); +extern const char* glXGetClientString (Display *dpy, int name); +extern const char* glXQueryServerString (Display *dpy, int screen, int name); + +#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1) + +#endif /* GLX_VERSION_1_1 */ + +/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */ + +#ifndef GLX_VERSION_1_2 +#define GLX_VERSION_1_2 1 + +typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void); + +#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay) + +#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2) + +#endif /* GLX_VERSION_1_2 */ + +/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */ + +#ifndef GLX_VERSION_1_3 +#define GLX_VERSION_1_3 1 + +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_DONT_CARE 0xFFFFFFFF + +typedef XID GLXFBConfigID; +typedef XID GLXPbuffer; +typedef XID GLXWindow; +typedef struct __GLXFBConfigRec *GLXFBConfig; + +typedef struct { + int event_type; + int draw_type; + unsigned long serial; + Bool send_event; + Display *display; + GLXDrawable drawable; + unsigned int buffer_mask; + unsigned int aux_buffer; + int x, y; + int width, height; + int count; +} GLXPbufferClobberEvent; +typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + long pad[24]; +} GLXEvent; + +typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); +typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx); +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); + +#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig) +#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext) +#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer) +#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap) +#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow) +#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer) +#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap) +#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow) +#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable) +#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib) +#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs) +#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent) +#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig) +#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent) +#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext) +#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable) +#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent) + +#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3) + +#endif /* GLX_VERSION_1_3 */ + +/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */ + +#ifndef GLX_VERSION_1_4 +#define GLX_VERSION_1_4 1 + +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLES 100001 + +extern void ( * glXGetProcAddress (const GLubyte *procName)) (void); + +#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4) + +#endif /* GLX_VERSION_1_4 */ + +/* -------------------------- GLX_3DFX_multisample ------------------------- */ + +#ifndef GLX_3DFX_multisample +#define GLX_3DFX_multisample 1 + +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 +#define GLX_SAMPLES_3DFX 0x8051 + +#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample) + +#endif /* GLX_3DFX_multisample */ + +/* ------------------------ GLX_AMD_gpu_association ------------------------ */ + +#ifndef GLX_AMD_gpu_association +#define GLX_AMD_gpu_association 1 + +#define GLX_GPU_VENDOR_AMD 0x1F00 +#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 +#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define GLX_GPU_RAM_AMD 0x21A3 +#define GLX_GPU_CLOCK_AMD 0x21A4 +#define GLX_GPU_NUM_PIPES_AMD 0x21A5 +#define GLX_GPU_NUM_SIMD_AMD 0x21A6 +#define GLX_GPU_NUM_RB_AMD 0x21A7 +#define GLX_GPU_NUM_SPI_AMD 0x21A8 + +typedef void ( * PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC) (GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC) (unsigned int id, GLXContext share_list); +typedef GLXContext ( * PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (unsigned int id, GLXContext share_context, const int* attribList); +typedef Bool ( * PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC) (GLXContext ctx); +typedef unsigned int ( * PFNGLXGETCONTEXTGPUIDAMDPROC) (GLXContext ctx); +typedef GLXContext ( * PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef unsigned int ( * PFNGLXGETGPUIDSAMDPROC) (unsigned int maxCount, unsigned int* ids); +typedef int ( * PFNGLXGETGPUINFOAMDPROC) (unsigned int id, int property, GLenum dataType, unsigned int size, void* data); +typedef Bool ( * PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (GLXContext ctx); + +#define glXBlitContextFramebufferAMD GLXEW_GET_FUN(__glewXBlitContextFramebufferAMD) +#define glXCreateAssociatedContextAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAMD) +#define glXCreateAssociatedContextAttribsAMD GLXEW_GET_FUN(__glewXCreateAssociatedContextAttribsAMD) +#define glXDeleteAssociatedContextAMD GLXEW_GET_FUN(__glewXDeleteAssociatedContextAMD) +#define glXGetContextGPUIDAMD GLXEW_GET_FUN(__glewXGetContextGPUIDAMD) +#define glXGetCurrentAssociatedContextAMD GLXEW_GET_FUN(__glewXGetCurrentAssociatedContextAMD) +#define glXGetGPUIDsAMD GLXEW_GET_FUN(__glewXGetGPUIDsAMD) +#define glXGetGPUInfoAMD GLXEW_GET_FUN(__glewXGetGPUInfoAMD) +#define glXMakeAssociatedContextCurrentAMD GLXEW_GET_FUN(__glewXMakeAssociatedContextCurrentAMD) + +#define GLXEW_AMD_gpu_association GLXEW_GET_VAR(__GLXEW_AMD_gpu_association) + +#endif /* GLX_AMD_gpu_association */ + +/* --------------------- GLX_ARB_context_flush_control --------------------- */ + +#ifndef GLX_ARB_context_flush_control +#define GLX_ARB_context_flush_control 1 + +#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0x0000 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 + +#define GLXEW_ARB_context_flush_control GLXEW_GET_VAR(__GLXEW_ARB_context_flush_control) + +#endif /* GLX_ARB_context_flush_control */ + +/* ------------------------- GLX_ARB_create_context ------------------------ */ + +#ifndef GLX_ARB_create_context +#define GLX_ARB_create_context 1 + +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 + +typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); + +#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB) + +#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context) + +#endif /* GLX_ARB_create_context */ + +/* --------------------- GLX_ARB_create_context_profile -------------------- */ + +#ifndef GLX_ARB_create_context_profile +#define GLX_ARB_create_context_profile 1 + +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define GLXEW_ARB_create_context_profile GLXEW_GET_VAR(__GLXEW_ARB_create_context_profile) + +#endif /* GLX_ARB_create_context_profile */ + +/* ------------------- GLX_ARB_create_context_robustness ------------------- */ + +#ifndef GLX_ARB_create_context_robustness +#define GLX_ARB_create_context_robustness 1 + +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define GLXEW_ARB_create_context_robustness GLXEW_GET_VAR(__GLXEW_ARB_create_context_robustness) + +#endif /* GLX_ARB_create_context_robustness */ + +/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */ + +#ifndef GLX_ARB_fbconfig_float +#define GLX_ARB_fbconfig_float 1 + +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#define GLX_RGBA_FLOAT_TYPE 0x20B9 + +#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float) + +#endif /* GLX_ARB_fbconfig_float */ + +/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_ARB_framebuffer_sRGB +#define GLX_ARB_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 + +#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB) + +#endif /* GLX_ARB_framebuffer_sRGB */ + +/* ------------------------ GLX_ARB_get_proc_address ----------------------- */ + +#ifndef GLX_ARB_get_proc_address +#define GLX_ARB_get_proc_address 1 + +extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void); + +#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address) + +#endif /* GLX_ARB_get_proc_address */ + +/* -------------------------- GLX_ARB_multisample -------------------------- */ + +#ifndef GLX_ARB_multisample +#define GLX_ARB_multisample 1 + +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAMPLES_ARB 100001 + +#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample) + +#endif /* GLX_ARB_multisample */ + +/* ---------------- GLX_ARB_robustness_application_isolation --------------- */ + +#ifndef GLX_ARB_robustness_application_isolation +#define GLX_ARB_robustness_application_isolation 1 + +#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define GLXEW_ARB_robustness_application_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_application_isolation) + +#endif /* GLX_ARB_robustness_application_isolation */ + +/* ---------------- GLX_ARB_robustness_share_group_isolation --------------- */ + +#ifndef GLX_ARB_robustness_share_group_isolation +#define GLX_ARB_robustness_share_group_isolation 1 + +#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define GLXEW_ARB_robustness_share_group_isolation GLXEW_GET_VAR(__GLXEW_ARB_robustness_share_group_isolation) + +#endif /* GLX_ARB_robustness_share_group_isolation */ + +/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */ + +#ifndef GLX_ARB_vertex_buffer_object +#define GLX_ARB_vertex_buffer_object 1 + +#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095 + +#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object) + +#endif /* GLX_ARB_vertex_buffer_object */ + +/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */ + +#ifndef GLX_ATI_pixel_format_float +#define GLX_ATI_pixel_format_float 1 + +#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100 + +#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float) + +#endif /* GLX_ATI_pixel_format_float */ + +/* ------------------------- GLX_ATI_render_texture ------------------------ */ + +#ifndef GLX_ATI_render_texture +#define GLX_ATI_render_texture 1 + +#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800 +#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801 +#define GLX_TEXTURE_FORMAT_ATI 0x9802 +#define GLX_TEXTURE_TARGET_ATI 0x9803 +#define GLX_MIPMAP_TEXTURE_ATI 0x9804 +#define GLX_TEXTURE_RGB_ATI 0x9805 +#define GLX_TEXTURE_RGBA_ATI 0x9806 +#define GLX_NO_TEXTURE_ATI 0x9807 +#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808 +#define GLX_TEXTURE_1D_ATI 0x9809 +#define GLX_TEXTURE_2D_ATI 0x980A +#define GLX_MIPMAP_LEVEL_ATI 0x980B +#define GLX_CUBE_MAP_FACE_ATI 0x980C +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810 +#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811 +#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812 +#define GLX_FRONT_LEFT_ATI 0x9813 +#define GLX_FRONT_RIGHT_ATI 0x9814 +#define GLX_BACK_LEFT_ATI 0x9815 +#define GLX_BACK_RIGHT_ATI 0x9816 +#define GLX_AUX0_ATI 0x9817 +#define GLX_AUX1_ATI 0x9818 +#define GLX_AUX2_ATI 0x9819 +#define GLX_AUX3_ATI 0x981A +#define GLX_AUX4_ATI 0x981B +#define GLX_AUX5_ATI 0x981C +#define GLX_AUX6_ATI 0x981D +#define GLX_AUX7_ATI 0x981E +#define GLX_AUX8_ATI 0x981F +#define GLX_AUX9_ATI 0x9820 +#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821 +#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822 + +typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); +typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); + +#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI) +#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI) +#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI) + +#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture) + +#endif /* GLX_ATI_render_texture */ + +/* --------------------------- GLX_EXT_buffer_age -------------------------- */ + +#ifndef GLX_EXT_buffer_age +#define GLX_EXT_buffer_age 1 + +#define GLX_BACK_BUFFER_AGE_EXT 0x20F4 + +#define GLXEW_EXT_buffer_age GLXEW_GET_VAR(__GLXEW_EXT_buffer_age) + +#endif /* GLX_EXT_buffer_age */ + +/* ------------------- GLX_EXT_create_context_es2_profile ------------------ */ + +#ifndef GLX_EXT_create_context_es2_profile +#define GLX_EXT_create_context_es2_profile 1 + +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define GLXEW_EXT_create_context_es2_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es2_profile) + +#endif /* GLX_EXT_create_context_es2_profile */ + +/* ------------------- GLX_EXT_create_context_es_profile ------------------- */ + +#ifndef GLX_EXT_create_context_es_profile +#define GLX_EXT_create_context_es_profile 1 + +#define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 + +#define GLXEW_EXT_create_context_es_profile GLXEW_GET_VAR(__GLXEW_EXT_create_context_es_profile) + +#endif /* GLX_EXT_create_context_es_profile */ + +/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */ + +#ifndef GLX_EXT_fbconfig_packed_float +#define GLX_EXT_fbconfig_packed_float 1 + +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 + +#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float) + +#endif /* GLX_EXT_fbconfig_packed_float */ + +/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef GLX_EXT_framebuffer_sRGB +#define GLX_EXT_framebuffer_sRGB 1 + +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 + +#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB) + +#endif /* GLX_EXT_framebuffer_sRGB */ + +/* ------------------------- GLX_EXT_import_context ------------------------ */ + +#ifndef GLX_EXT_import_context +#define GLX_EXT_import_context 1 + +#define GLX_SHARE_CONTEXT_EXT 0x800A +#define GLX_VISUAL_ID_EXT 0x800B +#define GLX_SCREEN_EXT 0x800C + +typedef XID GLXContextID; + +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context); +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID); +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute,int *value); + +#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT) +#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT) +#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT) +#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT) + +#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context) + +#endif /* GLX_EXT_import_context */ + +/* -------------------------- GLX_EXT_scene_marker ------------------------- */ + +#ifndef GLX_EXT_scene_marker +#define GLX_EXT_scene_marker 1 + +#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker) + +#endif /* GLX_EXT_scene_marker */ + +/* -------------------------- GLX_EXT_stereo_tree -------------------------- */ + +#ifndef GLX_EXT_stereo_tree +#define GLX_EXT_stereo_tree 1 + +#define GLX_STEREO_NOTIFY_EXT 0x00000000 +#define GLX_STEREO_NOTIFY_MASK_EXT 0x00000001 +#define GLX_STEREO_TREE_EXT 0x20F5 + +#define GLXEW_EXT_stereo_tree GLXEW_GET_VAR(__GLXEW_EXT_stereo_tree) + +#endif /* GLX_EXT_stereo_tree */ + +/* -------------------------- GLX_EXT_swap_control ------------------------- */ + +#ifndef GLX_EXT_swap_control +#define GLX_EXT_swap_control 1 + +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 + +typedef void ( * PFNGLXSWAPINTERVALEXTPROC) (Display* dpy, GLXDrawable drawable, int interval); + +#define glXSwapIntervalEXT GLXEW_GET_FUN(__glewXSwapIntervalEXT) + +#define GLXEW_EXT_swap_control GLXEW_GET_VAR(__GLXEW_EXT_swap_control) + +#endif /* GLX_EXT_swap_control */ + +/* ----------------------- GLX_EXT_swap_control_tear ----------------------- */ + +#ifndef GLX_EXT_swap_control_tear +#define GLX_EXT_swap_control_tear 1 + +#define GLX_LATE_SWAPS_TEAR_EXT 0x20F3 + +#define GLXEW_EXT_swap_control_tear GLXEW_GET_VAR(__GLXEW_EXT_swap_control_tear) + +#endif /* GLX_EXT_swap_control_tear */ + +/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */ + +#ifndef GLX_EXT_texture_from_pixmap +#define GLX_EXT_texture_from_pixmap 1 + +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB + +typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer, const int *attrib_list); +typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer); + +#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT) +#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT) + +#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap) + +#endif /* GLX_EXT_texture_from_pixmap */ + +/* -------------------------- GLX_EXT_visual_info -------------------------- */ + +#ifndef GLX_EXT_visual_info +#define GLX_EXT_visual_info 1 + +#define GLX_X_VISUAL_TYPE_EXT 0x22 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 +#define GLX_NONE_EXT 0x8000 +#define GLX_TRUE_COLOR_EXT 0x8002 +#define GLX_DIRECT_COLOR_EXT 0x8003 +#define GLX_PSEUDO_COLOR_EXT 0x8004 +#define GLX_STATIC_COLOR_EXT 0x8005 +#define GLX_GRAY_SCALE_EXT 0x8006 +#define GLX_STATIC_GRAY_EXT 0x8007 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 + +#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info) + +#endif /* GLX_EXT_visual_info */ + +/* ------------------------- GLX_EXT_visual_rating ------------------------- */ + +#ifndef GLX_EXT_visual_rating +#define GLX_EXT_visual_rating 1 + +#define GLX_VISUAL_CAVEAT_EXT 0x20 +#define GLX_SLOW_VISUAL_EXT 0x8001 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D + +#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating) + +#endif /* GLX_EXT_visual_rating */ + +/* -------------------------- GLX_INTEL_swap_event ------------------------- */ + +#ifndef GLX_INTEL_swap_event +#define GLX_INTEL_swap_event 1 + +#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180 +#define GLX_COPY_COMPLETE_INTEL 0x8181 +#define GLX_FLIP_COMPLETE_INTEL 0x8182 +#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000 + +#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event) + +#endif /* GLX_INTEL_swap_event */ + +/* -------------------------- GLX_MESA_agp_offset -------------------------- */ + +#ifndef GLX_MESA_agp_offset +#define GLX_MESA_agp_offset 1 + +typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer); + +#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA) + +#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset) + +#endif /* GLX_MESA_agp_offset */ + +/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */ + +#ifndef GLX_MESA_copy_sub_buffer +#define GLX_MESA_copy_sub_buffer 1 + +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height); + +#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA) + +#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer) + +#endif /* GLX_MESA_copy_sub_buffer */ + +/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */ + +#ifndef GLX_MESA_pixmap_colormap +#define GLX_MESA_pixmap_colormap 1 + +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); + +#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA) + +#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap) + +#endif /* GLX_MESA_pixmap_colormap */ + +/* ------------------------ GLX_MESA_query_renderer ------------------------ */ + +#ifndef GLX_MESA_query_renderer +#define GLX_MESA_query_renderer 1 + +#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 +#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 +#define GLX_RENDERER_VERSION_MESA 0x8185 +#define GLX_RENDERER_ACCELERATED_MESA 0x8186 +#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187 +#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188 +#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189 +#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A +#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B +#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C +#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D +#define GLX_RENDERER_ID_MESA 0x818E + +typedef Bool ( * PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int* value); +typedef const char* ( * PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute); +typedef Bool ( * PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display* dpy, int screen, int renderer, int attribute, unsigned int *value); +typedef const char* ( * PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute); + +#define glXQueryCurrentRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererIntegerMESA) +#define glXQueryCurrentRendererStringMESA GLXEW_GET_FUN(__glewXQueryCurrentRendererStringMESA) +#define glXQueryRendererIntegerMESA GLXEW_GET_FUN(__glewXQueryRendererIntegerMESA) +#define glXQueryRendererStringMESA GLXEW_GET_FUN(__glewXQueryRendererStringMESA) + +#define GLXEW_MESA_query_renderer GLXEW_GET_VAR(__GLXEW_MESA_query_renderer) + +#endif /* GLX_MESA_query_renderer */ + +/* ------------------------ GLX_MESA_release_buffers ----------------------- */ + +#ifndef GLX_MESA_release_buffers +#define GLX_MESA_release_buffers 1 + +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable d); + +#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA) + +#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers) + +#endif /* GLX_MESA_release_buffers */ + +/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */ + +#ifndef GLX_MESA_set_3dfx_mode +#define GLX_MESA_set_3dfx_mode 1 + +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 + +typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode); + +#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA) + +#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode) + +#endif /* GLX_MESA_set_3dfx_mode */ + +/* ------------------------- GLX_MESA_swap_control ------------------------- */ + +#ifndef GLX_MESA_swap_control +#define GLX_MESA_swap_control 1 + +typedef int ( * PFNGLXGETSWAPINTERVALMESAPROC) (void); +typedef int ( * PFNGLXSWAPINTERVALMESAPROC) (unsigned int interval); + +#define glXGetSwapIntervalMESA GLXEW_GET_FUN(__glewXGetSwapIntervalMESA) +#define glXSwapIntervalMESA GLXEW_GET_FUN(__glewXSwapIntervalMESA) + +#define GLXEW_MESA_swap_control GLXEW_GET_VAR(__GLXEW_MESA_swap_control) + +#endif /* GLX_MESA_swap_control */ + +/* --------------------------- GLX_NV_copy_buffer -------------------------- */ + +#ifndef GLX_NV_copy_buffer +#define GLX_NV_copy_buffer 1 + +typedef void ( * PFNGLXCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void ( * PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display* dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + +#define glXCopyBufferSubDataNV GLXEW_GET_FUN(__glewXCopyBufferSubDataNV) +#define glXNamedCopyBufferSubDataNV GLXEW_GET_FUN(__glewXNamedCopyBufferSubDataNV) + +#define GLXEW_NV_copy_buffer GLXEW_GET_VAR(__GLXEW_NV_copy_buffer) + +#endif /* GLX_NV_copy_buffer */ + +/* --------------------------- GLX_NV_copy_image --------------------------- */ + +#ifndef GLX_NV_copy_image +#define GLX_NV_copy_image 1 + +typedef void ( * PFNGLXCOPYIMAGESUBDATANVPROC) (Display *dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define glXCopyImageSubDataNV GLXEW_GET_FUN(__glewXCopyImageSubDataNV) + +#define GLXEW_NV_copy_image GLXEW_GET_VAR(__GLXEW_NV_copy_image) + +#endif /* GLX_NV_copy_image */ + +/* ------------------------ GLX_NV_delay_before_swap ----------------------- */ + +#ifndef GLX_NV_delay_before_swap +#define GLX_NV_delay_before_swap 1 + +typedef Bool ( * PFNGLXDELAYBEFORESWAPNVPROC) (Display* dpy, GLXDrawable drawable, GLfloat seconds); + +#define glXDelayBeforeSwapNV GLXEW_GET_FUN(__glewXDelayBeforeSwapNV) + +#define GLXEW_NV_delay_before_swap GLXEW_GET_VAR(__GLXEW_NV_delay_before_swap) + +#endif /* GLX_NV_delay_before_swap */ + +/* -------------------------- GLX_NV_float_buffer -------------------------- */ + +#ifndef GLX_NV_float_buffer +#define GLX_NV_float_buffer 1 + +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 + +#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer) + +#endif /* GLX_NV_float_buffer */ + +/* ---------------------- GLX_NV_multisample_coverage ---------------------- */ + +#ifndef GLX_NV_multisample_coverage +#define GLX_NV_multisample_coverage 1 + +#define GLX_COLOR_SAMPLES_NV 0x20B3 +#define GLX_COVERAGE_SAMPLES_NV 100001 + +#define GLXEW_NV_multisample_coverage GLXEW_GET_VAR(__GLXEW_NV_multisample_coverage) + +#endif /* GLX_NV_multisample_coverage */ + +/* -------------------------- GLX_NV_present_video ------------------------- */ + +#ifndef GLX_NV_present_video +#define GLX_NV_present_video 1 + +#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 + +typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); +typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements); + +#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV) +#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV) + +#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video) + +#endif /* GLX_NV_present_video */ + +/* --------------------------- GLX_NV_swap_group --------------------------- */ + +#ifndef GLX_NV_swap_group +#define GLX_NV_swap_group 1 + +typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier); +typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group); +typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint *count); +typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); +typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); +typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen); + +#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV) +#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV) +#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV) +#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV) +#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV) +#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV) + +#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group) + +#endif /* GLX_NV_swap_group */ + +/* ----------------------- GLX_NV_vertex_array_range ----------------------- */ + +#ifndef GLX_NV_vertex_array_range +#define GLX_NV_vertex_array_range 1 + +typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer); + +#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV) +#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV) + +#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range) + +#endif /* GLX_NV_vertex_array_range */ + +/* -------------------------- GLX_NV_video_capture ------------------------- */ + +#ifndef GLX_NV_video_capture +#define GLX_NV_video_capture 1 + +#define GLX_DEVICE_ID_NV 0x20CD +#define GLX_UNIQUE_ID_NV 0x20CE +#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +typedef XID GLXVideoCaptureDeviceNV; + +typedef int ( * PFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); +typedef GLXVideoCaptureDeviceNV * ( * PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display* dpy, int screen, int *nelements); +typedef void ( * PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); +typedef int ( * PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); +typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoCaptureDeviceNV device); + +#define glXBindVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXBindVideoCaptureDeviceNV) +#define glXEnumerateVideoCaptureDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoCaptureDevicesNV) +#define glXLockVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXLockVideoCaptureDeviceNV) +#define glXQueryVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXQueryVideoCaptureDeviceNV) +#define glXReleaseVideoCaptureDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoCaptureDeviceNV) + +#define GLXEW_NV_video_capture GLXEW_GET_VAR(__GLXEW_NV_video_capture) + +#endif /* GLX_NV_video_capture */ + +/* ---------------------------- GLX_NV_video_out --------------------------- */ + +#ifndef GLX_NV_video_out +#define GLX_NV_video_out 1 + +#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 +#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 +#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 +#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 +#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 +#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA +#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB +#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC + +typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); +typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); +typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice); +typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf); +typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); + +#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV) +#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV) +#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV) +#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV) +#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV) +#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV) + +#define GLXEW_NV_video_out GLXEW_GET_VAR(__GLXEW_NV_video_out) + +#endif /* GLX_NV_video_out */ + +/* -------------------------- GLX_OML_swap_method -------------------------- */ + +#ifndef GLX_OML_swap_method +#define GLX_OML_swap_method 1 + +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 + +#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method) + +#endif /* GLX_OML_swap_method */ + +/* -------------------------- GLX_OML_sync_control ------------------------- */ + +#ifndef GLX_OML_sync_control +#define GLX_OML_sync_control 1 + +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator); +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc); +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc); + +#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML) +#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML) +#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML) +#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML) +#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML) + +#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control) + +#endif /* GLX_OML_sync_control */ + +/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */ + +#ifndef GLX_SGIS_blended_overlay +#define GLX_SGIS_blended_overlay 1 + +#define GLX_BLENDED_RGBA_SGIS 0x8025 + +#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay) + +#endif /* GLX_SGIS_blended_overlay */ + +/* -------------------------- GLX_SGIS_color_range ------------------------- */ + +#ifndef GLX_SGIS_color_range +#define GLX_SGIS_color_range 1 + +#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range) + +#endif /* GLX_SGIS_color_range */ + +/* -------------------------- GLX_SGIS_multisample ------------------------- */ + +#ifndef GLX_SGIS_multisample +#define GLX_SGIS_multisample 1 + +#define GLX_SAMPLE_BUFFERS_SGIS 100000 +#define GLX_SAMPLES_SGIS 100001 + +#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample) + +#endif /* GLX_SGIS_multisample */ + +/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */ + +#ifndef GLX_SGIS_shared_multisample +#define GLX_SGIS_shared_multisample 1 + +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 + +#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample) + +#endif /* GLX_SGIS_shared_multisample */ + +/* --------------------------- GLX_SGIX_fbconfig --------------------------- */ + +#ifndef GLX_SGIX_fbconfig +#define GLX_SGIX_fbconfig 1 + +#define GLX_RGBA_BIT_SGIX 0x00000001 +#define GLX_WINDOW_BIT_SGIX 0x00000001 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 +#define GLX_SCREEN_EXT 0x800C +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 +#define GLX_RENDER_TYPE_SGIX 0x8011 +#define GLX_X_RENDERABLE_SGIX 0x8012 +#define GLX_FBCONFIG_ID_SGIX 0x8013 +#define GLX_RGBA_TYPE_SGIX 0x8014 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 + +typedef XID GLXFBConfigIDSGIX; +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; + +typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, Pixmap pixmap); +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int *value); +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo *vis); +typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfig config); + +#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX) +#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX) +#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX) +#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX) +#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX) +#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX) + +#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig) + +#endif /* GLX_SGIX_fbconfig */ + +/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */ + +#ifndef GLX_SGIX_hyperpipe +#define GLX_SGIX_hyperpipe 1 + +#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 +#define GLX_PIPE_RECT_SGIX 0x00000001 +#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 +#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 +#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 +#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 +#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 +#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 +#define GLX_BAD_HYPERPIPE_SGIX 92 +#define GLX_HYPERPIPE_ID_SGIX 0x8030 + +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int networkId; +} GLXHyperpipeNetworkSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int XOrigin; + int YOrigin; + int maxHeight; + int maxWidth; +} GLXPipeRectLimits; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int channel; + unsigned int participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; +typedef struct { + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int srcXOrigin; + int srcYOrigin; + int srcWidth; + int srcHeight; + int destXOrigin; + int destYOrigin; + int destWidth; + int destHeight; +} GLXPipeRect; + +typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); +typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); +typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); +typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); +typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); +typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); + +#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX) +#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX) +#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX) +#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX) +#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX) +#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX) +#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX) +#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX) + +#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe) + +#endif /* GLX_SGIX_hyperpipe */ + +/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */ + +#ifndef GLX_SGIX_pbuffer +#define GLX_SGIX_pbuffer 1 + +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 +#define GLX_PBUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B +#define GLX_LARGEST_PBUFFER_SGIX 0x801C +#define GLX_WIDTH_SGIX 0x801D +#define GLX_HEIGHT_SGIX 0x801E +#define GLX_EVENT_MASK_SGIX 0x801F +#define GLX_DAMAGED_SGIX 0x8020 +#define GLX_SAVED_SGIX 0x8021 +#define GLX_WINDOW_SGIX 0x8022 +#define GLX_PBUFFER_SGIX 0x8023 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 + +typedef XID GLXPbufferSGIX; +typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX; + +typedef GLXPbuffer ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfig config, unsigned int width, unsigned int height, int *attrib_list); +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf); +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long *mask); +typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf, int attribute, unsigned int *value); +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask); + +#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX) +#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX) +#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX) +#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX) +#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX) + +#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer) + +#endif /* GLX_SGIX_pbuffer */ + +/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */ + +#ifndef GLX_SGIX_swap_barrier +#define GLX_SGIX_swap_barrier 1 + +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); + +#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX) +#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX) + +#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier) + +#endif /* GLX_SGIX_swap_barrier */ + +/* -------------------------- GLX_SGIX_swap_group -------------------------- */ + +#ifndef GLX_SGIX_swap_group +#define GLX_SGIX_swap_group 1 + +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); + +#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX) + +#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group) + +#endif /* GLX_SGIX_swap_group */ + +/* ------------------------- GLX_SGIX_video_resize ------------------------- */ + +#ifndef GLX_SGIX_video_resize +#define GLX_SGIX_video_resize 1 + +#define GLX_SYNC_FRAME_SGIX 0x00000000 +#define GLX_SYNC_SWAP_SGIX 0x00000001 + +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window); +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h); +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype); +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int *x, int *y, int *w, int *h); +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); + +#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX) +#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX) +#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX) +#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX) +#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX) + +#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize) + +#endif /* GLX_SGIX_video_resize */ + +/* ---------------------- GLX_SGIX_visual_select_group --------------------- */ + +#ifndef GLX_SGIX_visual_select_group +#define GLX_SGIX_visual_select_group 1 + +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 + +#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group) + +#endif /* GLX_SGIX_visual_select_group */ + +/* ---------------------------- GLX_SGI_cushion ---------------------------- */ + +#ifndef GLX_SGI_cushion +#define GLX_SGI_cushion 1 + +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion); + +#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI) + +#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion) + +#endif /* GLX_SGI_cushion */ + +/* ----------------------- GLX_SGI_make_current_read ----------------------- */ + +#ifndef GLX_SGI_make_current_read +#define GLX_SGI_make_current_read 1 + +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); + +#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI) +#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI) + +#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read) + +#endif /* GLX_SGI_make_current_read */ + +/* -------------------------- GLX_SGI_swap_control ------------------------- */ + +#ifndef GLX_SGI_swap_control +#define GLX_SGI_swap_control 1 + +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); + +#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI) + +#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control) + +#endif /* GLX_SGI_swap_control */ + +/* --------------------------- GLX_SGI_video_sync -------------------------- */ + +#ifndef GLX_SGI_video_sync +#define GLX_SGI_video_sync 1 + +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int* count); +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count); + +#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI) +#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI) + +#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync) + +#endif /* GLX_SGI_video_sync */ + +/* --------------------- GLX_SUN_get_transparent_index --------------------- */ + +#ifndef GLX_SUN_get_transparent_index +#define GLX_SUN_get_transparent_index 1 + +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long *pTransparentIndex); + +#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN) + +#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index) + +#endif /* GLX_SUN_get_transparent_index */ + +/* -------------------------- GLX_SUN_video_resize ------------------------- */ + +#ifndef GLX_SUN_video_resize +#define GLX_SUN_video_resize 1 + +#define GLX_VIDEO_RESIZE_SUN 0x8171 +#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD + +typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor); +typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor); + +#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN) +#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN) + +#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize) + +#endif /* GLX_SUN_video_resize */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT +#define GLXEW_VAR_EXPORT +#else +#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT +#define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT +#endif /* GLEW_MX */ + +GLXEW_FUN_EXPORT PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay; + +GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig; +GLXEW_FUN_EXPORT PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext; +GLXEW_FUN_EXPORT PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer; +GLXEW_FUN_EXPORT PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap; +GLXEW_FUN_EXPORT PFNGLXCREATEWINDOWPROC __glewXCreateWindow; +GLXEW_FUN_EXPORT PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer; +GLXEW_FUN_EXPORT PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap; +GLXEW_FUN_EXPORT PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow; +GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs; +GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent; +GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig; +GLXEW_FUN_EXPORT PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent; +GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTPROC __glewXQueryContext; +GLXEW_FUN_EXPORT PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable; +GLXEW_FUN_EXPORT PFNGLXSELECTEVENTPROC __glewXSelectEvent; + +GLXEW_FUN_EXPORT PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD; +GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD; +GLXEW_FUN_EXPORT PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD; +GLXEW_FUN_EXPORT PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD; +GLXEW_FUN_EXPORT PFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD; +GLXEW_FUN_EXPORT PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD; +GLXEW_FUN_EXPORT PFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD; +GLXEW_FUN_EXPORT PFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD; +GLXEW_FUN_EXPORT PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD; + +GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB; + +GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI; +GLXEW_FUN_EXPORT PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI; +GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI; + +GLXEW_FUN_EXPORT PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT; +GLXEW_FUN_EXPORT PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT; +GLXEW_FUN_EXPORT PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT; +GLXEW_FUN_EXPORT PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT; + +GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT; + +GLXEW_FUN_EXPORT PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT; +GLXEW_FUN_EXPORT PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT; + +GLXEW_FUN_EXPORT PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA; + +GLXEW_FUN_EXPORT PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA; + +GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA; + +GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA; +GLXEW_FUN_EXPORT PFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA; + +GLXEW_FUN_EXPORT PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA; + +GLXEW_FUN_EXPORT PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA; + +GLXEW_FUN_EXPORT PFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA; +GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA; + +GLXEW_FUN_EXPORT PFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV; +GLXEW_FUN_EXPORT PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV; + +GLXEW_FUN_EXPORT PFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV; + +GLXEW_FUN_EXPORT PFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV; + +GLXEW_FUN_EXPORT PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV; +GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV; + +GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV; +GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV; +GLXEW_FUN_EXPORT PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV; +GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV; +GLXEW_FUN_EXPORT PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV; +GLXEW_FUN_EXPORT PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV; + +GLXEW_FUN_EXPORT PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV; +GLXEW_FUN_EXPORT PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV; + +GLXEW_FUN_EXPORT PFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV; +GLXEW_FUN_EXPORT PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV; +GLXEW_FUN_EXPORT PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV; +GLXEW_FUN_EXPORT PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV; +GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV; + +GLXEW_FUN_EXPORT PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV; +GLXEW_FUN_EXPORT PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV; +GLXEW_FUN_EXPORT PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV; +GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV; +GLXEW_FUN_EXPORT PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV; +GLXEW_FUN_EXPORT PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV; + +GLXEW_FUN_EXPORT PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML; +GLXEW_FUN_EXPORT PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML; +GLXEW_FUN_EXPORT PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML; +GLXEW_FUN_EXPORT PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML; +GLXEW_FUN_EXPORT PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML; + +GLXEW_FUN_EXPORT PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX; +GLXEW_FUN_EXPORT PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX; + +GLXEW_FUN_EXPORT PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX; +GLXEW_FUN_EXPORT PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX; + +GLXEW_FUN_EXPORT PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX; +GLXEW_FUN_EXPORT PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX; +GLXEW_FUN_EXPORT PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX; +GLXEW_FUN_EXPORT PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX; + +GLXEW_FUN_EXPORT PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX; + +GLXEW_FUN_EXPORT PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX; + +GLXEW_FUN_EXPORT PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX; +GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX; +GLXEW_FUN_EXPORT PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX; +GLXEW_FUN_EXPORT PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX; + +GLXEW_FUN_EXPORT PFNGLXCUSHIONSGIPROC __glewXCushionSGI; + +GLXEW_FUN_EXPORT PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI; +GLXEW_FUN_EXPORT PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI; + +GLXEW_FUN_EXPORT PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI; + +GLXEW_FUN_EXPORT PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI; +GLXEW_FUN_EXPORT PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI; + +GLXEW_FUN_EXPORT PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN; + +GLXEW_FUN_EXPORT PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN; +GLXEW_FUN_EXPORT PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN; + +#if defined(GLEW_MX) +struct GLXEWContextStruct +{ +#endif /* GLEW_MX */ + +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_0; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_1; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_3; +GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_4; +GLXEW_VAR_EXPORT GLboolean __GLXEW_3DFX_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_AMD_gpu_association; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_context_flush_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_profile; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_create_context_robustness; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_fbconfig_float; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_get_proc_address; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_application_isolation; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_robustness_share_group_isolation; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_pixel_format_float; +GLXEW_VAR_EXPORT GLboolean __GLXEW_ATI_render_texture; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_buffer_age; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es2_profile; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_create_context_es_profile; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_import_context; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_scene_marker; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_stereo_tree; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control_tear; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_info; +GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_visual_rating; +GLXEW_VAR_EXPORT GLboolean __GLXEW_INTEL_swap_event; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_agp_offset; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_query_renderer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_release_buffers; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode; +GLXEW_VAR_EXPORT GLboolean __GLXEW_MESA_swap_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_buffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_copy_image; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_delay_before_swap; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_float_buffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_multisample_coverage; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_swap_group; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_vertex_array_range; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_capture; +GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_out; +GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_swap_method; +GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_sync_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_blended_overlay; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_color_range; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_shared_multisample; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_fbconfig; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_hyperpipe; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_pbuffer; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_barrier; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_swap_group; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_video_resize; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIX_visual_select_group; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_cushion; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_make_current_read; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_swap_control; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SGI_video_sync; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_get_transparent_index; +GLXEW_VAR_EXPORT GLboolean __GLXEW_SUN_video_resize; + +#ifdef GLEW_MX +}; /* GLXEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------ */ + +#ifdef GLEW_MX + +typedef struct GLXEWContextStruct GLXEWContext; +GLEWAPI GLenum GLEWAPIENTRY glxewContextInit (GLXEWContext *ctx); +GLEWAPI GLboolean GLEWAPIENTRY glxewContextIsSupported (const GLXEWContext *ctx, const char *name); + +#define glxewInit() glxewContextInit(glxewGetContext()) +#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x) + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&(glxewGetContext()->x)) +#define GLXEW_GET_FUN(x) x + +#else /* GLEW_MX */ + +#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) +#define GLXEW_GET_FUN(x) x + +GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name); + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name); + +#ifdef __cplusplus +} +#endif + +#endif /* __glxew_h__ */ diff --git a/lib/windows64/include/GL/wglew.h b/lib/windows64/include/GL/wglew.h new file mode 100644 index 0000000..650b34c --- /dev/null +++ b/lib/windows64/include/GL/wglew.h @@ -0,0 +1,1452 @@ +/* +** The OpenGL Extension Wrangler Library +** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> +** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +** Copyright (C) 2002, Lev Povalahev +** 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. +** * The name of the author 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 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. +*/ + +/* +** 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. +*/ + +#ifndef __wglew_h__ +#define __wglew_h__ +#define __WGLEW_H__ + +#ifdef __wglext_h_ +#error wglext.h included before wglew.h +#endif + +#define __wglext_h_ + +#if !defined(WINAPI) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN 1 +# endif +#include <windows.h> +# undef WIN32_LEAN_AND_MEAN +#endif + +/* + * GLEW_STATIC needs to be set when using the static version. + * GLEW_BUILD is set when building the DLL version. + */ +#ifdef GLEW_STATIC +# define GLEWAPI extern +#else +# ifdef GLEW_BUILD +# define GLEWAPI extern __declspec(dllexport) +# else +# define GLEWAPI extern __declspec(dllimport) +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* -------------------------- WGL_3DFX_multisample ------------------------- */ + +#ifndef WGL_3DFX_multisample +#define WGL_3DFX_multisample 1 + +#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 +#define WGL_SAMPLES_3DFX 0x2061 + +#define WGLEW_3DFX_multisample WGLEW_GET_VAR(__WGLEW_3DFX_multisample) + +#endif /* WGL_3DFX_multisample */ + +/* ------------------------- WGL_3DL_stereo_control ------------------------ */ + +#ifndef WGL_3DL_stereo_control +#define WGL_3DL_stereo_control 1 + +#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 + +typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState); + +#define wglSetStereoEmitterState3DL WGLEW_GET_FUN(__wglewSetStereoEmitterState3DL) + +#define WGLEW_3DL_stereo_control WGLEW_GET_VAR(__WGLEW_3DL_stereo_control) + +#endif /* WGL_3DL_stereo_control */ + +/* ------------------------ WGL_AMD_gpu_association ------------------------ */ + +#ifndef WGL_AMD_gpu_association +#define WGL_AMD_gpu_association 1 + +#define WGL_GPU_VENDOR_AMD 0x1F00 +#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_RAM_AMD 0x21A3 +#define WGL_GPU_CLOCK_AMD 0x21A4 +#define WGL_GPU_NUM_PIPES_AMD 0x21A5 +#define WGL_GPU_NUM_SIMD_AMD 0x21A6 +#define WGL_GPU_NUM_RB_AMD 0x21A7 +#define WGL_GPU_NUM_SPI_AMD 0x21A8 + +typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id); +typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int* attribList); +typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc); +typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc); +typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void); +typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids); +typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data); +typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc); + +#define wglBlitContextFramebufferAMD WGLEW_GET_FUN(__wglewBlitContextFramebufferAMD) +#define wglCreateAssociatedContextAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAMD) +#define wglCreateAssociatedContextAttribsAMD WGLEW_GET_FUN(__wglewCreateAssociatedContextAttribsAMD) +#define wglDeleteAssociatedContextAMD WGLEW_GET_FUN(__wglewDeleteAssociatedContextAMD) +#define wglGetContextGPUIDAMD WGLEW_GET_FUN(__wglewGetContextGPUIDAMD) +#define wglGetCurrentAssociatedContextAMD WGLEW_GET_FUN(__wglewGetCurrentAssociatedContextAMD) +#define wglGetGPUIDsAMD WGLEW_GET_FUN(__wglewGetGPUIDsAMD) +#define wglGetGPUInfoAMD WGLEW_GET_FUN(__wglewGetGPUInfoAMD) +#define wglMakeAssociatedContextCurrentAMD WGLEW_GET_FUN(__wglewMakeAssociatedContextCurrentAMD) + +#define WGLEW_AMD_gpu_association WGLEW_GET_VAR(__WGLEW_AMD_gpu_association) + +#endif /* WGL_AMD_gpu_association */ + +/* ------------------------- WGL_ARB_buffer_region ------------------------- */ + +#ifndef WGL_ARB_buffer_region +#define WGL_ARB_buffer_region 1 + +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 +#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 +#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 + +typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType); +typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion); +typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); +typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height); + +#define wglCreateBufferRegionARB WGLEW_GET_FUN(__wglewCreateBufferRegionARB) +#define wglDeleteBufferRegionARB WGLEW_GET_FUN(__wglewDeleteBufferRegionARB) +#define wglRestoreBufferRegionARB WGLEW_GET_FUN(__wglewRestoreBufferRegionARB) +#define wglSaveBufferRegionARB WGLEW_GET_FUN(__wglewSaveBufferRegionARB) + +#define WGLEW_ARB_buffer_region WGLEW_GET_VAR(__WGLEW_ARB_buffer_region) + +#endif /* WGL_ARB_buffer_region */ + +/* --------------------- WGL_ARB_context_flush_control --------------------- */ + +#ifndef WGL_ARB_context_flush_control +#define WGL_ARB_context_flush_control 1 + +#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0x0000 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 + +#define WGLEW_ARB_context_flush_control WGLEW_GET_VAR(__WGLEW_ARB_context_flush_control) + +#endif /* WGL_ARB_context_flush_control */ + +/* ------------------------- WGL_ARB_create_context ------------------------ */ + +#ifndef WGL_ARB_create_context +#define WGL_ARB_create_context 1 + +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 + +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int* attribList); + +#define wglCreateContextAttribsARB WGLEW_GET_FUN(__wglewCreateContextAttribsARB) + +#define WGLEW_ARB_create_context WGLEW_GET_VAR(__WGLEW_ARB_create_context) + +#endif /* WGL_ARB_create_context */ + +/* --------------------- WGL_ARB_create_context_profile -------------------- */ + +#ifndef WGL_ARB_create_context_profile +#define WGL_ARB_create_context_profile 1 + +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 + +#define WGLEW_ARB_create_context_profile WGLEW_GET_VAR(__WGLEW_ARB_create_context_profile) + +#endif /* WGL_ARB_create_context_profile */ + +/* ------------------- WGL_ARB_create_context_robustness ------------------- */ + +#ifndef WGL_ARB_create_context_robustness +#define WGL_ARB_create_context_robustness 1 + +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 + +#define WGLEW_ARB_create_context_robustness WGLEW_GET_VAR(__WGLEW_ARB_create_context_robustness) + +#endif /* WGL_ARB_create_context_robustness */ + +/* ----------------------- WGL_ARB_extensions_string ----------------------- */ + +#ifndef WGL_ARB_extensions_string +#define WGL_ARB_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); + +#define wglGetExtensionsStringARB WGLEW_GET_FUN(__wglewGetExtensionsStringARB) + +#define WGLEW_ARB_extensions_string WGLEW_GET_VAR(__WGLEW_ARB_extensions_string) + +#endif /* WGL_ARB_extensions_string */ + +/* ------------------------ WGL_ARB_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_ARB_framebuffer_sRGB +#define WGL_ARB_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 + +#define WGLEW_ARB_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_ARB_framebuffer_sRGB) + +#endif /* WGL_ARB_framebuffer_sRGB */ + +/* ----------------------- WGL_ARB_make_current_read ----------------------- */ + +#ifndef WGL_ARB_make_current_read +#define WGL_ARB_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCARB WGLEW_GET_FUN(__wglewGetCurrentReadDCARB) +#define wglMakeContextCurrentARB WGLEW_GET_FUN(__wglewMakeContextCurrentARB) + +#define WGLEW_ARB_make_current_read WGLEW_GET_VAR(__WGLEW_ARB_make_current_read) + +#endif /* WGL_ARB_make_current_read */ + +/* -------------------------- WGL_ARB_multisample -------------------------- */ + +#ifndef WGL_ARB_multisample +#define WGL_ARB_multisample 1 + +#define WGL_SAMPLE_BUFFERS_ARB 0x2041 +#define WGL_SAMPLES_ARB 0x2042 + +#define WGLEW_ARB_multisample WGLEW_GET_VAR(__WGLEW_ARB_multisample) + +#endif /* WGL_ARB_multisample */ + +/* ---------------------------- WGL_ARB_pbuffer ---------------------------- */ + +#ifndef WGL_ARB_pbuffer +#define WGL_ARB_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_ARB 0x202D +#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 +#define WGL_PBUFFER_LARGEST_ARB 0x2033 +#define WGL_PBUFFER_WIDTH_ARB 0x2034 +#define WGL_PBUFFER_HEIGHT_ARB 0x2035 +#define WGL_PBUFFER_LOST_ARB 0x2036 + +DECLARE_HANDLE(HPBUFFERARB); + +typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC); + +#define wglCreatePbufferARB WGLEW_GET_FUN(__wglewCreatePbufferARB) +#define wglDestroyPbufferARB WGLEW_GET_FUN(__wglewDestroyPbufferARB) +#define wglGetPbufferDCARB WGLEW_GET_FUN(__wglewGetPbufferDCARB) +#define wglQueryPbufferARB WGLEW_GET_FUN(__wglewQueryPbufferARB) +#define wglReleasePbufferDCARB WGLEW_GET_FUN(__wglewReleasePbufferDCARB) + +#define WGLEW_ARB_pbuffer WGLEW_GET_VAR(__WGLEW_ARB_pbuffer) + +#endif /* WGL_ARB_pbuffer */ + +/* -------------------------- WGL_ARB_pixel_format ------------------------- */ + +#ifndef WGL_ARB_pixel_format +#define WGL_ARB_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_DRAW_TO_BITMAP_ARB 0x2002 +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_NEED_PALETTE_ARB 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 +#define WGL_SWAP_METHOD_ARB 0x2007 +#define WGL_NUMBER_OVERLAYS_ARB 0x2008 +#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 +#define WGL_TRANSPARENT_ARB 0x200A +#define WGL_SHARE_DEPTH_ARB 0x200C +#define WGL_SHARE_STENCIL_ARB 0x200D +#define WGL_SHARE_ACCUM_ARB 0x200E +#define WGL_SUPPORT_GDI_ARB 0x200F +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_STEREO_ARB 0x2012 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201A +#define WGL_ALPHA_BITS_ARB 0x201B +#define WGL_ALPHA_SHIFT_ARB 0x201C +#define WGL_ACCUM_BITS_ARB 0x201D +#define WGL_ACCUM_RED_BITS_ARB 0x201E +#define WGL_ACCUM_GREEN_BITS_ARB 0x201F +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_GENERIC_ACCELERATION_ARB 0x2026 +#define WGL_FULL_ACCELERATION_ARB 0x2027 +#define WGL_SWAP_EXCHANGE_ARB 0x2028 +#define WGL_SWAP_COPY_ARB 0x2029 +#define WGL_SWAP_UNDEFINED_ARB 0x202A +#define WGL_TYPE_RGBA_ARB 0x202B +#define WGL_TYPE_COLORINDEX_ARB 0x202C +#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int *piValues); + +#define wglChoosePixelFormatARB WGLEW_GET_FUN(__wglewChoosePixelFormatARB) +#define wglGetPixelFormatAttribfvARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvARB) +#define wglGetPixelFormatAttribivARB WGLEW_GET_FUN(__wglewGetPixelFormatAttribivARB) + +#define WGLEW_ARB_pixel_format WGLEW_GET_VAR(__WGLEW_ARB_pixel_format) + +#endif /* WGL_ARB_pixel_format */ + +/* ----------------------- WGL_ARB_pixel_format_float ---------------------- */ + +#ifndef WGL_ARB_pixel_format_float +#define WGL_ARB_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 + +#define WGLEW_ARB_pixel_format_float WGLEW_GET_VAR(__WGLEW_ARB_pixel_format_float) + +#endif /* WGL_ARB_pixel_format_float */ + +/* ------------------------- WGL_ARB_render_texture ------------------------ */ + +#ifndef WGL_ARB_render_texture +#define WGL_ARB_render_texture 1 + +#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 +#define WGL_TEXTURE_FORMAT_ARB 0x2072 +#define WGL_TEXTURE_TARGET_ARB 0x2073 +#define WGL_MIPMAP_TEXTURE_ARB 0x2074 +#define WGL_TEXTURE_RGB_ARB 0x2075 +#define WGL_TEXTURE_RGBA_ARB 0x2076 +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 +#define WGL_TEXTURE_1D_ARB 0x2079 +#define WGL_TEXTURE_2D_ARB 0x207A +#define WGL_MIPMAP_LEVEL_ARB 0x207B +#define WGL_CUBE_MAP_FACE_ARB 0x207C +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_FRONT_LEFT_ARB 0x2083 +#define WGL_FRONT_RIGHT_ARB 0x2084 +#define WGL_BACK_LEFT_ARB 0x2085 +#define WGL_BACK_RIGHT_ARB 0x2086 +#define WGL_AUX0_ARB 0x2087 +#define WGL_AUX1_ARB 0x2088 +#define WGL_AUX2_ARB 0x2089 +#define WGL_AUX3_ARB 0x208A +#define WGL_AUX4_ARB 0x208B +#define WGL_AUX5_ARB 0x208C +#define WGL_AUX6_ARB 0x208D +#define WGL_AUX7_ARB 0x208E +#define WGL_AUX8_ARB 0x208F +#define WGL_AUX9_ARB 0x2090 + +typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int* piAttribList); + +#define wglBindTexImageARB WGLEW_GET_FUN(__wglewBindTexImageARB) +#define wglReleaseTexImageARB WGLEW_GET_FUN(__wglewReleaseTexImageARB) +#define wglSetPbufferAttribARB WGLEW_GET_FUN(__wglewSetPbufferAttribARB) + +#define WGLEW_ARB_render_texture WGLEW_GET_VAR(__WGLEW_ARB_render_texture) + +#endif /* WGL_ARB_render_texture */ + +/* ---------------- WGL_ARB_robustness_application_isolation --------------- */ + +#ifndef WGL_ARB_robustness_application_isolation +#define WGL_ARB_robustness_application_isolation 1 + +#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define WGLEW_ARB_robustness_application_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_application_isolation) + +#endif /* WGL_ARB_robustness_application_isolation */ + +/* ---------------- WGL_ARB_robustness_share_group_isolation --------------- */ + +#ifndef WGL_ARB_robustness_share_group_isolation +#define WGL_ARB_robustness_share_group_isolation 1 + +#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 + +#define WGLEW_ARB_robustness_share_group_isolation WGLEW_GET_VAR(__WGLEW_ARB_robustness_share_group_isolation) + +#endif /* WGL_ARB_robustness_share_group_isolation */ + +/* ----------------------- WGL_ATI_pixel_format_float ---------------------- */ + +#ifndef WGL_ATI_pixel_format_float +#define WGL_ATI_pixel_format_float 1 + +#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 + +#define WGLEW_ATI_pixel_format_float WGLEW_GET_VAR(__WGLEW_ATI_pixel_format_float) + +#endif /* WGL_ATI_pixel_format_float */ + +/* -------------------- WGL_ATI_render_texture_rectangle ------------------- */ + +#ifndef WGL_ATI_render_texture_rectangle +#define WGL_ATI_render_texture_rectangle 1 + +#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 + +#define WGLEW_ATI_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_ATI_render_texture_rectangle) + +#endif /* WGL_ATI_render_texture_rectangle */ + +/* ------------------- WGL_EXT_create_context_es2_profile ------------------ */ + +#ifndef WGL_EXT_create_context_es2_profile +#define WGL_EXT_create_context_es2_profile 1 + +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 + +#define WGLEW_EXT_create_context_es2_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es2_profile) + +#endif /* WGL_EXT_create_context_es2_profile */ + +/* ------------------- WGL_EXT_create_context_es_profile ------------------- */ + +#ifndef WGL_EXT_create_context_es_profile +#define WGL_EXT_create_context_es_profile 1 + +#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 + +#define WGLEW_EXT_create_context_es_profile WGLEW_GET_VAR(__WGLEW_EXT_create_context_es_profile) + +#endif /* WGL_EXT_create_context_es_profile */ + +/* -------------------------- WGL_EXT_depth_float -------------------------- */ + +#ifndef WGL_EXT_depth_float +#define WGL_EXT_depth_float 1 + +#define WGL_DEPTH_FLOAT_EXT 0x2040 + +#define WGLEW_EXT_depth_float WGLEW_GET_VAR(__WGLEW_EXT_depth_float) + +#endif /* WGL_EXT_depth_float */ + +/* ---------------------- WGL_EXT_display_color_table ---------------------- */ + +#ifndef WGL_EXT_display_color_table +#define WGL_EXT_display_color_table 1 + +typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef void (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id); +typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (GLushort* table, GLuint length); + +#define wglBindDisplayColorTableEXT WGLEW_GET_FUN(__wglewBindDisplayColorTableEXT) +#define wglCreateDisplayColorTableEXT WGLEW_GET_FUN(__wglewCreateDisplayColorTableEXT) +#define wglDestroyDisplayColorTableEXT WGLEW_GET_FUN(__wglewDestroyDisplayColorTableEXT) +#define wglLoadDisplayColorTableEXT WGLEW_GET_FUN(__wglewLoadDisplayColorTableEXT) + +#define WGLEW_EXT_display_color_table WGLEW_GET_VAR(__WGLEW_EXT_display_color_table) + +#endif /* WGL_EXT_display_color_table */ + +/* ----------------------- WGL_EXT_extensions_string ----------------------- */ + +#ifndef WGL_EXT_extensions_string +#define WGL_EXT_extensions_string 1 + +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void); + +#define wglGetExtensionsStringEXT WGLEW_GET_FUN(__wglewGetExtensionsStringEXT) + +#define WGLEW_EXT_extensions_string WGLEW_GET_VAR(__WGLEW_EXT_extensions_string) + +#endif /* WGL_EXT_extensions_string */ + +/* ------------------------ WGL_EXT_framebuffer_sRGB ----------------------- */ + +#ifndef WGL_EXT_framebuffer_sRGB +#define WGL_EXT_framebuffer_sRGB 1 + +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 + +#define WGLEW_EXT_framebuffer_sRGB WGLEW_GET_VAR(__WGLEW_EXT_framebuffer_sRGB) + +#endif /* WGL_EXT_framebuffer_sRGB */ + +/* ----------------------- WGL_EXT_make_current_read ----------------------- */ + +#ifndef WGL_EXT_make_current_read +#define WGL_EXT_make_current_read 1 + +#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 + +typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); + +#define wglGetCurrentReadDCEXT WGLEW_GET_FUN(__wglewGetCurrentReadDCEXT) +#define wglMakeContextCurrentEXT WGLEW_GET_FUN(__wglewMakeContextCurrentEXT) + +#define WGLEW_EXT_make_current_read WGLEW_GET_VAR(__WGLEW_EXT_make_current_read) + +#endif /* WGL_EXT_make_current_read */ + +/* -------------------------- WGL_EXT_multisample -------------------------- */ + +#ifndef WGL_EXT_multisample +#define WGL_EXT_multisample 1 + +#define WGL_SAMPLE_BUFFERS_EXT 0x2041 +#define WGL_SAMPLES_EXT 0x2042 + +#define WGLEW_EXT_multisample WGLEW_GET_VAR(__WGLEW_EXT_multisample) + +#endif /* WGL_EXT_multisample */ + +/* ---------------------------- WGL_EXT_pbuffer ---------------------------- */ + +#ifndef WGL_EXT_pbuffer +#define WGL_EXT_pbuffer 1 + +#define WGL_DRAW_TO_PBUFFER_EXT 0x202D +#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E +#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F +#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_PBUFFER_LARGEST_EXT 0x2033 +#define WGL_PBUFFER_WIDTH_EXT 0x2034 +#define WGL_PBUFFER_HEIGHT_EXT 0x2035 + +DECLARE_HANDLE(HPBUFFEREXT); + +typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList); +typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer); +typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer); +typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue); +typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC); + +#define wglCreatePbufferEXT WGLEW_GET_FUN(__wglewCreatePbufferEXT) +#define wglDestroyPbufferEXT WGLEW_GET_FUN(__wglewDestroyPbufferEXT) +#define wglGetPbufferDCEXT WGLEW_GET_FUN(__wglewGetPbufferDCEXT) +#define wglQueryPbufferEXT WGLEW_GET_FUN(__wglewQueryPbufferEXT) +#define wglReleasePbufferDCEXT WGLEW_GET_FUN(__wglewReleasePbufferDCEXT) + +#define WGLEW_EXT_pbuffer WGLEW_GET_VAR(__WGLEW_EXT_pbuffer) + +#endif /* WGL_EXT_pbuffer */ + +/* -------------------------- WGL_EXT_pixel_format ------------------------- */ + +#ifndef WGL_EXT_pixel_format +#define WGL_EXT_pixel_format 1 + +#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 +#define WGL_DRAW_TO_WINDOW_EXT 0x2001 +#define WGL_DRAW_TO_BITMAP_EXT 0x2002 +#define WGL_ACCELERATION_EXT 0x2003 +#define WGL_NEED_PALETTE_EXT 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 +#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 +#define WGL_SWAP_METHOD_EXT 0x2007 +#define WGL_NUMBER_OVERLAYS_EXT 0x2008 +#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 +#define WGL_TRANSPARENT_EXT 0x200A +#define WGL_TRANSPARENT_VALUE_EXT 0x200B +#define WGL_SHARE_DEPTH_EXT 0x200C +#define WGL_SHARE_STENCIL_EXT 0x200D +#define WGL_SHARE_ACCUM_EXT 0x200E +#define WGL_SUPPORT_GDI_EXT 0x200F +#define WGL_SUPPORT_OPENGL_EXT 0x2010 +#define WGL_DOUBLE_BUFFER_EXT 0x2011 +#define WGL_STEREO_EXT 0x2012 +#define WGL_PIXEL_TYPE_EXT 0x2013 +#define WGL_COLOR_BITS_EXT 0x2014 +#define WGL_RED_BITS_EXT 0x2015 +#define WGL_RED_SHIFT_EXT 0x2016 +#define WGL_GREEN_BITS_EXT 0x2017 +#define WGL_GREEN_SHIFT_EXT 0x2018 +#define WGL_BLUE_BITS_EXT 0x2019 +#define WGL_BLUE_SHIFT_EXT 0x201A +#define WGL_ALPHA_BITS_EXT 0x201B +#define WGL_ALPHA_SHIFT_EXT 0x201C +#define WGL_ACCUM_BITS_EXT 0x201D +#define WGL_ACCUM_RED_BITS_EXT 0x201E +#define WGL_ACCUM_GREEN_BITS_EXT 0x201F +#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 +#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 +#define WGL_DEPTH_BITS_EXT 0x2022 +#define WGL_STENCIL_BITS_EXT 0x2023 +#define WGL_AUX_BUFFERS_EXT 0x2024 +#define WGL_NO_ACCELERATION_EXT 0x2025 +#define WGL_GENERIC_ACCELERATION_EXT 0x2026 +#define WGL_FULL_ACCELERATION_EXT 0x2027 +#define WGL_SWAP_EXCHANGE_EXT 0x2028 +#define WGL_SWAP_COPY_EXT 0x2029 +#define WGL_SWAP_UNDEFINED_EXT 0x202A +#define WGL_TYPE_RGBA_EXT 0x202B +#define WGL_TYPE_COLORINDEX_EXT 0x202C + +typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int* piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT *pfValues); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int *piValues); + +#define wglChoosePixelFormatEXT WGLEW_GET_FUN(__wglewChoosePixelFormatEXT) +#define wglGetPixelFormatAttribfvEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribfvEXT) +#define wglGetPixelFormatAttribivEXT WGLEW_GET_FUN(__wglewGetPixelFormatAttribivEXT) + +#define WGLEW_EXT_pixel_format WGLEW_GET_VAR(__WGLEW_EXT_pixel_format) + +#endif /* WGL_EXT_pixel_format */ + +/* ------------------- WGL_EXT_pixel_format_packed_float ------------------- */ + +#ifndef WGL_EXT_pixel_format_packed_float +#define WGL_EXT_pixel_format_packed_float 1 + +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 + +#define WGLEW_EXT_pixel_format_packed_float WGLEW_GET_VAR(__WGLEW_EXT_pixel_format_packed_float) + +#endif /* WGL_EXT_pixel_format_packed_float */ + +/* -------------------------- WGL_EXT_swap_control ------------------------- */ + +#ifndef WGL_EXT_swap_control +#define WGL_EXT_swap_control 1 + +typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void); +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval); + +#define wglGetSwapIntervalEXT WGLEW_GET_FUN(__wglewGetSwapIntervalEXT) +#define wglSwapIntervalEXT WGLEW_GET_FUN(__wglewSwapIntervalEXT) + +#define WGLEW_EXT_swap_control WGLEW_GET_VAR(__WGLEW_EXT_swap_control) + +#endif /* WGL_EXT_swap_control */ + +/* ----------------------- WGL_EXT_swap_control_tear ----------------------- */ + +#ifndef WGL_EXT_swap_control_tear +#define WGL_EXT_swap_control_tear 1 + +#define WGLEW_EXT_swap_control_tear WGLEW_GET_VAR(__WGLEW_EXT_swap_control_tear) + +#endif /* WGL_EXT_swap_control_tear */ + +/* --------------------- WGL_I3D_digital_video_control --------------------- */ + +#ifndef WGL_I3D_digital_video_control +#define WGL_I3D_digital_video_control 1 + +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 + +typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewGetDigitalVideoParametersI3D) +#define wglSetDigitalVideoParametersI3D WGLEW_GET_FUN(__wglewSetDigitalVideoParametersI3D) + +#define WGLEW_I3D_digital_video_control WGLEW_GET_VAR(__WGLEW_I3D_digital_video_control) + +#endif /* WGL_I3D_digital_video_control */ + +/* ----------------------------- WGL_I3D_gamma ----------------------------- */ + +#ifndef WGL_I3D_gamma +#define WGL_I3D_gamma 1 + +#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F + +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT* puRed, USHORT *puGreen, USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT* puRed, const USHORT *puGreen, const USHORT *puBlue); +typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int* piValue); + +#define wglGetGammaTableI3D WGLEW_GET_FUN(__wglewGetGammaTableI3D) +#define wglGetGammaTableParametersI3D WGLEW_GET_FUN(__wglewGetGammaTableParametersI3D) +#define wglSetGammaTableI3D WGLEW_GET_FUN(__wglewSetGammaTableI3D) +#define wglSetGammaTableParametersI3D WGLEW_GET_FUN(__wglewSetGammaTableParametersI3D) + +#define WGLEW_I3D_gamma WGLEW_GET_VAR(__WGLEW_I3D_gamma) + +#endif /* WGL_I3D_gamma */ + +/* ---------------------------- WGL_I3D_genlock ---------------------------- */ + +#ifndef WGL_I3D_genlock +#define WGL_I3D_genlock 1 + +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C + +typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC); +typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge); +typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT* uRate); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT* uDelay); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT* uEdge); +typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT* uSource); +typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT* uMaxLineDelay, UINT *uMaxPixelDelay); + +#define wglDisableGenlockI3D WGLEW_GET_FUN(__wglewDisableGenlockI3D) +#define wglEnableGenlockI3D WGLEW_GET_FUN(__wglewEnableGenlockI3D) +#define wglGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGenlockSampleRateI3D) +#define wglGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGenlockSourceDelayI3D) +#define wglGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGenlockSourceEdgeI3D) +#define wglGenlockSourceI3D WGLEW_GET_FUN(__wglewGenlockSourceI3D) +#define wglGetGenlockSampleRateI3D WGLEW_GET_FUN(__wglewGetGenlockSampleRateI3D) +#define wglGetGenlockSourceDelayI3D WGLEW_GET_FUN(__wglewGetGenlockSourceDelayI3D) +#define wglGetGenlockSourceEdgeI3D WGLEW_GET_FUN(__wglewGetGenlockSourceEdgeI3D) +#define wglGetGenlockSourceI3D WGLEW_GET_FUN(__wglewGetGenlockSourceI3D) +#define wglIsEnabledGenlockI3D WGLEW_GET_FUN(__wglewIsEnabledGenlockI3D) +#define wglQueryGenlockMaxSourceDelayI3D WGLEW_GET_FUN(__wglewQueryGenlockMaxSourceDelayI3D) + +#define WGLEW_I3D_genlock WGLEW_GET_VAR(__WGLEW_I3D_genlock) + +#endif /* WGL_I3D_genlock */ + +/* -------------------------- WGL_I3D_image_buffer ------------------------- */ + +#ifndef WGL_I3D_image_buffer +#define WGL_I3D_image_buffer 1 + +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 + +typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, HANDLE* pEvent, LPVOID *pAddress, DWORD *pSize, UINT count); +typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags); +typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress); +typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hdc, LPVOID* pAddress, UINT count); + +#define wglAssociateImageBufferEventsI3D WGLEW_GET_FUN(__wglewAssociateImageBufferEventsI3D) +#define wglCreateImageBufferI3D WGLEW_GET_FUN(__wglewCreateImageBufferI3D) +#define wglDestroyImageBufferI3D WGLEW_GET_FUN(__wglewDestroyImageBufferI3D) +#define wglReleaseImageBufferEventsI3D WGLEW_GET_FUN(__wglewReleaseImageBufferEventsI3D) + +#define WGLEW_I3D_image_buffer WGLEW_GET_VAR(__WGLEW_I3D_image_buffer) + +#endif /* WGL_I3D_image_buffer */ + +/* ------------------------ WGL_I3D_swap_frame_lock ------------------------ */ + +#ifndef WGL_I3D_swap_frame_lock +#define WGL_I3D_swap_frame_lock 1 + +typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (VOID); +typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL* pFlag); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL* pFlag); + +#define wglDisableFrameLockI3D WGLEW_GET_FUN(__wglewDisableFrameLockI3D) +#define wglEnableFrameLockI3D WGLEW_GET_FUN(__wglewEnableFrameLockI3D) +#define wglIsEnabledFrameLockI3D WGLEW_GET_FUN(__wglewIsEnabledFrameLockI3D) +#define wglQueryFrameLockMasterI3D WGLEW_GET_FUN(__wglewQueryFrameLockMasterI3D) + +#define WGLEW_I3D_swap_frame_lock WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_lock) + +#endif /* WGL_I3D_swap_frame_lock */ + +/* ------------------------ WGL_I3D_swap_frame_usage ----------------------- */ + +#ifndef WGL_I3D_swap_frame_usage +#define WGL_I3D_swap_frame_usage 1 + +typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void); +typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float* pUsage); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD* pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage); + +#define wglBeginFrameTrackingI3D WGLEW_GET_FUN(__wglewBeginFrameTrackingI3D) +#define wglEndFrameTrackingI3D WGLEW_GET_FUN(__wglewEndFrameTrackingI3D) +#define wglGetFrameUsageI3D WGLEW_GET_FUN(__wglewGetFrameUsageI3D) +#define wglQueryFrameTrackingI3D WGLEW_GET_FUN(__wglewQueryFrameTrackingI3D) + +#define WGLEW_I3D_swap_frame_usage WGLEW_GET_VAR(__WGLEW_I3D_swap_frame_usage) + +#endif /* WGL_I3D_swap_frame_usage */ + +/* --------------------------- WGL_NV_DX_interop --------------------------- */ + +#ifndef WGL_NV_DX_interop +#define WGL_NV_DX_interop 1 + +#define WGL_ACCESS_READ_ONLY_NV 0x0000 +#define WGL_ACCESS_READ_WRITE_NV 0x0001 +#define WGL_ACCESS_WRITE_DISCARD_NV 0x0002 + +typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice); +typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access); +typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice); +typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access); +typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void* dxObject, HANDLE shareHandle); +typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE* hObjects); +typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject); + +#define wglDXCloseDeviceNV WGLEW_GET_FUN(__wglewDXCloseDeviceNV) +#define wglDXLockObjectsNV WGLEW_GET_FUN(__wglewDXLockObjectsNV) +#define wglDXObjectAccessNV WGLEW_GET_FUN(__wglewDXObjectAccessNV) +#define wglDXOpenDeviceNV WGLEW_GET_FUN(__wglewDXOpenDeviceNV) +#define wglDXRegisterObjectNV WGLEW_GET_FUN(__wglewDXRegisterObjectNV) +#define wglDXSetResourceShareHandleNV WGLEW_GET_FUN(__wglewDXSetResourceShareHandleNV) +#define wglDXUnlockObjectsNV WGLEW_GET_FUN(__wglewDXUnlockObjectsNV) +#define wglDXUnregisterObjectNV WGLEW_GET_FUN(__wglewDXUnregisterObjectNV) + +#define WGLEW_NV_DX_interop WGLEW_GET_VAR(__WGLEW_NV_DX_interop) + +#endif /* WGL_NV_DX_interop */ + +/* --------------------------- WGL_NV_DX_interop2 -------------------------- */ + +#ifndef WGL_NV_DX_interop2 +#define WGL_NV_DX_interop2 1 + +#define WGLEW_NV_DX_interop2 WGLEW_GET_VAR(__WGLEW_NV_DX_interop2) + +#endif /* WGL_NV_DX_interop2 */ + +/* --------------------------- WGL_NV_copy_image --------------------------- */ + +#ifndef WGL_NV_copy_image +#define WGL_NV_copy_image 1 + +typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +#define wglCopyImageSubDataNV WGLEW_GET_FUN(__wglewCopyImageSubDataNV) + +#define WGLEW_NV_copy_image WGLEW_GET_VAR(__WGLEW_NV_copy_image) + +#endif /* WGL_NV_copy_image */ + +/* ------------------------ WGL_NV_delay_before_swap ----------------------- */ + +#ifndef WGL_NV_delay_before_swap +#define WGL_NV_delay_before_swap 1 + +typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds); + +#define wglDelayBeforeSwapNV WGLEW_GET_FUN(__wglewDelayBeforeSwapNV) + +#define WGLEW_NV_delay_before_swap WGLEW_GET_VAR(__WGLEW_NV_delay_before_swap) + +#endif /* WGL_NV_delay_before_swap */ + +/* -------------------------- WGL_NV_float_buffer -------------------------- */ + +#ifndef WGL_NV_float_buffer +#define WGL_NV_float_buffer 1 + +#define WGL_FLOAT_COMPONENTS_NV 0x20B0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 +#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 +#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 +#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 + +#define WGLEW_NV_float_buffer WGLEW_GET_VAR(__WGLEW_NV_float_buffer) + +#endif /* WGL_NV_float_buffer */ + +/* -------------------------- WGL_NV_gpu_affinity -------------------------- */ + +#ifndef WGL_NV_gpu_affinity +#define WGL_NV_gpu_affinity 1 + +#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 + +DECLARE_HANDLE(HGPUNV); +typedef struct _GPU_DEVICE { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD Flags; + RECT rcVirtualScreen; +} GPU_DEVICE, *PGPU_DEVICE; + +typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList); +typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc); +typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); +typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu); +typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu); + +#define wglCreateAffinityDCNV WGLEW_GET_FUN(__wglewCreateAffinityDCNV) +#define wglDeleteDCNV WGLEW_GET_FUN(__wglewDeleteDCNV) +#define wglEnumGpuDevicesNV WGLEW_GET_FUN(__wglewEnumGpuDevicesNV) +#define wglEnumGpusFromAffinityDCNV WGLEW_GET_FUN(__wglewEnumGpusFromAffinityDCNV) +#define wglEnumGpusNV WGLEW_GET_FUN(__wglewEnumGpusNV) + +#define WGLEW_NV_gpu_affinity WGLEW_GET_VAR(__WGLEW_NV_gpu_affinity) + +#endif /* WGL_NV_gpu_affinity */ + +/* ---------------------- WGL_NV_multisample_coverage ---------------------- */ + +#ifndef WGL_NV_multisample_coverage +#define WGL_NV_multisample_coverage 1 + +#define WGL_COVERAGE_SAMPLES_NV 0x2042 +#define WGL_COLOR_SAMPLES_NV 0x20B9 + +#define WGLEW_NV_multisample_coverage WGLEW_GET_VAR(__WGLEW_NV_multisample_coverage) + +#endif /* WGL_NV_multisample_coverage */ + +/* -------------------------- WGL_NV_present_video ------------------------- */ + +#ifndef WGL_NV_present_video +#define WGL_NV_present_video 1 + +#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 + +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int* piAttribList); +typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int* piValue); + +#define wglBindVideoDeviceNV WGLEW_GET_FUN(__wglewBindVideoDeviceNV) +#define wglEnumerateVideoDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoDevicesNV) +#define wglQueryCurrentContextNV WGLEW_GET_FUN(__wglewQueryCurrentContextNV) + +#define WGLEW_NV_present_video WGLEW_GET_VAR(__WGLEW_NV_present_video) + +#endif /* WGL_NV_present_video */ + +/* ---------------------- WGL_NV_render_depth_texture ---------------------- */ + +#ifndef WGL_NV_render_depth_texture +#define WGL_NV_render_depth_texture 1 + +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_DEPTH_COMPONENT_NV 0x20A7 + +#define WGLEW_NV_render_depth_texture WGLEW_GET_VAR(__WGLEW_NV_render_depth_texture) + +#endif /* WGL_NV_render_depth_texture */ + +/* -------------------- WGL_NV_render_texture_rectangle -------------------- */ + +#ifndef WGL_NV_render_texture_rectangle +#define WGL_NV_render_texture_rectangle 1 + +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 + +#define WGLEW_NV_render_texture_rectangle WGLEW_GET_VAR(__WGLEW_NV_render_texture_rectangle) + +#endif /* WGL_NV_render_texture_rectangle */ + +/* --------------------------- WGL_NV_swap_group --------------------------- */ + +#ifndef WGL_NV_swap_group +#define WGL_NV_swap_group 1 + +typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier); +typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group); +typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint* count); +typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint* maxGroups, GLuint *maxBarriers); +typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint* group, GLuint *barrier); +typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC); + +#define wglBindSwapBarrierNV WGLEW_GET_FUN(__wglewBindSwapBarrierNV) +#define wglJoinSwapGroupNV WGLEW_GET_FUN(__wglewJoinSwapGroupNV) +#define wglQueryFrameCountNV WGLEW_GET_FUN(__wglewQueryFrameCountNV) +#define wglQueryMaxSwapGroupsNV WGLEW_GET_FUN(__wglewQueryMaxSwapGroupsNV) +#define wglQuerySwapGroupNV WGLEW_GET_FUN(__wglewQuerySwapGroupNV) +#define wglResetFrameCountNV WGLEW_GET_FUN(__wglewResetFrameCountNV) + +#define WGLEW_NV_swap_group WGLEW_GET_VAR(__WGLEW_NV_swap_group) + +#endif /* WGL_NV_swap_group */ + +/* ----------------------- WGL_NV_vertex_array_range ----------------------- */ + +#ifndef WGL_NV_vertex_array_range +#define WGL_NV_vertex_array_range 1 + +typedef void * (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); +typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer); + +#define wglAllocateMemoryNV WGLEW_GET_FUN(__wglewAllocateMemoryNV) +#define wglFreeMemoryNV WGLEW_GET_FUN(__wglewFreeMemoryNV) + +#define WGLEW_NV_vertex_array_range WGLEW_GET_VAR(__WGLEW_NV_vertex_array_range) + +#endif /* WGL_NV_vertex_array_range */ + +/* -------------------------- WGL_NV_video_capture ------------------------- */ + +#ifndef WGL_NV_video_capture +#define WGL_NV_video_capture 1 + +#define WGL_UNIQUE_ID_NV 0x20CE +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF + +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice); +typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList); +typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); +typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice); + +#define wglBindVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewBindVideoCaptureDeviceNV) +#define wglEnumerateVideoCaptureDevicesNV WGLEW_GET_FUN(__wglewEnumerateVideoCaptureDevicesNV) +#define wglLockVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewLockVideoCaptureDeviceNV) +#define wglQueryVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewQueryVideoCaptureDeviceNV) +#define wglReleaseVideoCaptureDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoCaptureDeviceNV) + +#define WGLEW_NV_video_capture WGLEW_GET_VAR(__WGLEW_NV_video_capture) + +#endif /* WGL_NV_video_capture */ + +/* -------------------------- WGL_NV_video_output -------------------------- */ + +#ifndef WGL_NV_video_output +#define WGL_NV_video_output 1 + +#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 +#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 +#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 +#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_FRAME 0x20C8 +#define WGL_VIDEO_OUT_FIELD_1 0x20C9 +#define WGL_VIDEO_OUT_FIELD_2 0x20CA +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC + +DECLARE_HANDLE(HPVIDEODEV); + +typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice); +typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice); +typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long* pulCounterPbuffer, BOOL bBlock); + +#define wglBindVideoImageNV WGLEW_GET_FUN(__wglewBindVideoImageNV) +#define wglGetVideoDeviceNV WGLEW_GET_FUN(__wglewGetVideoDeviceNV) +#define wglGetVideoInfoNV WGLEW_GET_FUN(__wglewGetVideoInfoNV) +#define wglReleaseVideoDeviceNV WGLEW_GET_FUN(__wglewReleaseVideoDeviceNV) +#define wglReleaseVideoImageNV WGLEW_GET_FUN(__wglewReleaseVideoImageNV) +#define wglSendPbufferToVideoNV WGLEW_GET_FUN(__wglewSendPbufferToVideoNV) + +#define WGLEW_NV_video_output WGLEW_GET_VAR(__WGLEW_NV_video_output) + +#endif /* WGL_NV_video_output */ + +/* -------------------------- WGL_OML_sync_control ------------------------- */ + +#ifndef WGL_OML_sync_control +#define WGL_OML_sync_control 1 + +typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32* numerator, INT32 *denominator); +typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64* ust, INT64 *msc, INT64 *sbc); +typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); +typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64 *msc, INT64 *sbc); +typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64* ust, INT64 *msc, INT64 *sbc); + +#define wglGetMscRateOML WGLEW_GET_FUN(__wglewGetMscRateOML) +#define wglGetSyncValuesOML WGLEW_GET_FUN(__wglewGetSyncValuesOML) +#define wglSwapBuffersMscOML WGLEW_GET_FUN(__wglewSwapBuffersMscOML) +#define wglSwapLayerBuffersMscOML WGLEW_GET_FUN(__wglewSwapLayerBuffersMscOML) +#define wglWaitForMscOML WGLEW_GET_FUN(__wglewWaitForMscOML) +#define wglWaitForSbcOML WGLEW_GET_FUN(__wglewWaitForSbcOML) + +#define WGLEW_OML_sync_control WGLEW_GET_VAR(__WGLEW_OML_sync_control) + +#endif /* WGL_OML_sync_control */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX +#define WGLEW_FUN_EXPORT +#define WGLEW_VAR_EXPORT +#else +#define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT +#define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT +#endif /* GLEW_MX */ + +#ifdef GLEW_MX +struct WGLEWContextStruct +{ +#endif /* GLEW_MX */ + +WGLEW_FUN_EXPORT PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL; + +WGLEW_FUN_EXPORT PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD; +WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD; +WGLEW_FUN_EXPORT PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD; +WGLEW_FUN_EXPORT PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD; +WGLEW_FUN_EXPORT PFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD; +WGLEW_FUN_EXPORT PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD; +WGLEW_FUN_EXPORT PFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD; +WGLEW_FUN_EXPORT PFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD; +WGLEW_FUN_EXPORT PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD; + +WGLEW_FUN_EXPORT PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB; +WGLEW_FUN_EXPORT PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB; +WGLEW_FUN_EXPORT PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB; +WGLEW_FUN_EXPORT PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB; + +WGLEW_FUN_EXPORT PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB; + +WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB; + +WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB; +WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB; + +WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB; +WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB; +WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB; +WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB; +WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB; + +WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB; + +WGLEW_FUN_EXPORT PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB; +WGLEW_FUN_EXPORT PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB; +WGLEW_FUN_EXPORT PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB; + +WGLEW_FUN_EXPORT PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT; +WGLEW_FUN_EXPORT PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT; +WGLEW_FUN_EXPORT PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT; +WGLEW_FUN_EXPORT PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT; + +WGLEW_FUN_EXPORT PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT; + +WGLEW_FUN_EXPORT PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT; +WGLEW_FUN_EXPORT PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT; + +WGLEW_FUN_EXPORT PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT; +WGLEW_FUN_EXPORT PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT; +WGLEW_FUN_EXPORT PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT; +WGLEW_FUN_EXPORT PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT; +WGLEW_FUN_EXPORT PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT; + +WGLEW_FUN_EXPORT PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT; +WGLEW_FUN_EXPORT PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT; + +WGLEW_FUN_EXPORT PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT; +WGLEW_FUN_EXPORT PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT; + +WGLEW_FUN_EXPORT PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D; +WGLEW_FUN_EXPORT PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D; + +WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D; +WGLEW_FUN_EXPORT PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D; +WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D; +WGLEW_FUN_EXPORT PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D; + +WGLEW_FUN_EXPORT PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D; +WGLEW_FUN_EXPORT PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D; +WGLEW_FUN_EXPORT PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D; +WGLEW_FUN_EXPORT PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D; +WGLEW_FUN_EXPORT PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D; +WGLEW_FUN_EXPORT PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D; + +WGLEW_FUN_EXPORT PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D; +WGLEW_FUN_EXPORT PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D; +WGLEW_FUN_EXPORT PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D; +WGLEW_FUN_EXPORT PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D; + +WGLEW_FUN_EXPORT PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D; +WGLEW_FUN_EXPORT PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D; +WGLEW_FUN_EXPORT PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D; +WGLEW_FUN_EXPORT PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D; + +WGLEW_FUN_EXPORT PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D; +WGLEW_FUN_EXPORT PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D; +WGLEW_FUN_EXPORT PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D; +WGLEW_FUN_EXPORT PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D; + +WGLEW_FUN_EXPORT PFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV; +WGLEW_FUN_EXPORT PFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV; +WGLEW_FUN_EXPORT PFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV; +WGLEW_FUN_EXPORT PFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV; +WGLEW_FUN_EXPORT PFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV; +WGLEW_FUN_EXPORT PFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV; +WGLEW_FUN_EXPORT PFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV; +WGLEW_FUN_EXPORT PFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV; + +WGLEW_FUN_EXPORT PFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV; + +WGLEW_FUN_EXPORT PFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV; + +WGLEW_FUN_EXPORT PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV; +WGLEW_FUN_EXPORT PFNWGLDELETEDCNVPROC __wglewDeleteDCNV; +WGLEW_FUN_EXPORT PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV; +WGLEW_FUN_EXPORT PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV; +WGLEW_FUN_EXPORT PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV; + +WGLEW_FUN_EXPORT PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV; +WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV; +WGLEW_FUN_EXPORT PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV; + +WGLEW_FUN_EXPORT PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV; +WGLEW_FUN_EXPORT PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV; +WGLEW_FUN_EXPORT PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV; +WGLEW_FUN_EXPORT PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV; +WGLEW_FUN_EXPORT PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV; +WGLEW_FUN_EXPORT PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV; + +WGLEW_FUN_EXPORT PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV; +WGLEW_FUN_EXPORT PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV; + +WGLEW_FUN_EXPORT PFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV; +WGLEW_FUN_EXPORT PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV; +WGLEW_FUN_EXPORT PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV; +WGLEW_FUN_EXPORT PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV; +WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV; + +WGLEW_FUN_EXPORT PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV; +WGLEW_FUN_EXPORT PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV; +WGLEW_FUN_EXPORT PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV; +WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV; +WGLEW_FUN_EXPORT PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV; +WGLEW_FUN_EXPORT PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV; + +WGLEW_FUN_EXPORT PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML; +WGLEW_FUN_EXPORT PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML; +WGLEW_FUN_EXPORT PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML; +WGLEW_FUN_EXPORT PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML; +WGLEW_FUN_EXPORT PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML; +WGLEW_FUN_EXPORT PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML; +WGLEW_VAR_EXPORT GLboolean __WGLEW_3DFX_multisample; +WGLEW_VAR_EXPORT GLboolean __WGLEW_3DL_stereo_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_AMD_gpu_association; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_buffer_region; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_context_flush_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_profile; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_create_context_robustness; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_extensions_string; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_framebuffer_sRGB; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_make_current_read; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_multisample; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pbuffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_pixel_format_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_render_texture; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_application_isolation; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ARB_robustness_share_group_isolation; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_pixel_format_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_ATI_render_texture_rectangle; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es2_profile; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_create_context_es_profile; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_depth_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_display_color_table; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_extensions_string; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_framebuffer_sRGB; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_make_current_read; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_multisample; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pbuffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_pixel_format_packed_float; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_EXT_swap_control_tear; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_digital_video_control; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_gamma; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_genlock; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_image_buffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_lock; +WGLEW_VAR_EXPORT GLboolean __WGLEW_I3D_swap_frame_usage; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_DX_interop2; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_copy_image; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_delay_before_swap; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_float_buffer; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_gpu_affinity; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_multisample_coverage; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_present_video; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_depth_texture; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_render_texture_rectangle; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_swap_group; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_vertex_array_range; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_capture; +WGLEW_VAR_EXPORT GLboolean __WGLEW_NV_video_output; +WGLEW_VAR_EXPORT GLboolean __WGLEW_OML_sync_control; + +#ifdef GLEW_MX +}; /* WGLEWContextStruct */ +#endif /* GLEW_MX */ + +/* ------------------------------------------------------------------------- */ + +#ifdef GLEW_MX + +typedef struct WGLEWContextStruct WGLEWContext; +GLEWAPI GLenum GLEWAPIENTRY wglewContextInit (WGLEWContext *ctx); +GLEWAPI GLboolean GLEWAPIENTRY wglewContextIsSupported (const WGLEWContext *ctx, const char *name); + +#define wglewInit() wglewContextInit(wglewGetContext()) +#define wglewIsSupported(x) wglewContextIsSupported(wglewGetContext(), x) + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&(wglewGetContext()->x)) +#define WGLEW_GET_FUN(x) wglewGetContext()->x + +#else /* GLEW_MX */ + +#define WGLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define WGLEW_GET_FUN(x) x + +GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name); + +#endif /* GLEW_MX */ + +GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name); + +#ifdef __cplusplus +} +#endif + +#undef GLEWAPI + +#endif /* __wglew_h__ */ diff --git a/lib/windows64/include/SDL.h b/lib/windows64/include/SDL.h new file mode 100644 index 0000000..9ba8f68 --- /dev/null +++ b/lib/windows64/include/SDL.h @@ -0,0 +1,233 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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 + +/* 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/lib/windows64/include/SDL_assert.h b/lib/windows64/include/SDL_assert.h new file mode 100644 index 0000000..87d5c1b --- /dev/null +++ b/lib/windows64/include/SDL_assert.h @@ -0,0 +1,320 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_atomic.h b/lib/windows64/include/SDL_atomic.h new file mode 100644 index 0000000..8273287 --- /dev/null +++ b/lib/windows64/include/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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__) || defined(__ARM_ARCH_5TE__) +#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 + +/* "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__) && __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 + + +/** + * \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/lib/windows64/include/SDL_audio.h b/lib/windows64/include/SDL_audio.h new file mode 100644 index 0000000..ccd3598 --- /dev/null +++ b/lib/windows64/include/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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); + +/** + * \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 + * \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 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_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); + +#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/lib/windows64/include/SDL_bits.h b/lib/windows64/include/SDL_bits.h new file mode 100644 index 0000000..81161ae --- /dev/null +++ b/lib/windows64/include/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_blendmode.h b/lib/windows64/include/SDL_blendmode.h new file mode 100644 index 0000000..4ecbe50 --- /dev/null +++ b/lib/windows64/include/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 = dstA */ + 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/lib/windows64/include/SDL_clipboard.h b/lib/windows64/include/SDL_clipboard.h new file mode 100644 index 0000000..7c351fb --- /dev/null +++ b/lib/windows64/include/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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); + +/** + * 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/lib/windows64/include/SDL_config.h b/lib/windows64/include/SDL_config.h new file mode 100644 index 0000000..01322c1 --- /dev/null +++ b/lib/windows64/include/SDL_config.h @@ -0,0 +1,331 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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(<winsdkver.h>) +#define HAVE_WINSDKVER_H 1 +#endif +#endif + +#ifdef HAVE_WINSDKVER_H +#include <winsdkver.h> +#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(<sdkddkver.h>) +#define HAVE_SDKDDKVER_H 1 +#endif +#endif + +#ifdef HAVE_SDKDDKVER_H +#include <sdkddkver.h> +#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(WDK_NTDDI_VERSION) && WDK_NTDDI_VERSION > 0x0A000008 /* 10.0.19041.0 */ +#define HAVE_D3D12_H 1 +#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(<immintrin.h>) +# 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/lib/windows64/include/SDL_cpuinfo.h b/lib/windows64/include/SDL_cpuinfo.h new file mode 100644 index 0000000..ed5e979 --- /dev/null +++ b/lib/windows64/include/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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__) || 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 <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(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include <lsxintrin.h> +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include <lasxintrin.h> +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#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); + +/** + * 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/lib/windows64/include/SDL_egl.h b/lib/windows64/include/SDL_egl.h new file mode 100644 index 0000000..6f51c08 --- /dev/null +++ b/lib/windows64/include/SDL_egl.h @@ -0,0 +1,2352 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_egl.h + * + * 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 <psp2/types.h> +#endif + +#include <EGL/egl.h> +#include <EGL/eglext.h> + +#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 <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; + */ + +#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 <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 +/* + * 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 <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 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 <KHR/khrplatform.h>*/ + +/* 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 <windows.h> + +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 <X11/Xlib.h> +#include <X11/Xutil.h> + +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 <kernel/image.h> + +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<type>(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 <EGL/eglplatform.h>*/ + +#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 <KHR/khrplatform.h>*/ +/*#include <EGL/eglplatform.h>*/ +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 <EGL/eglplatform.h>*/ + +#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/lib/windows64/include/SDL_endian.h b/lib/windows64/include/SDL_endian.h new file mode 100644 index 0000000..71bc067 --- /dev/null +++ b/lib/windows64/include/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__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__) +#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 +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 +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 +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/lib/windows64/include/SDL_error.h b/lib/windows64/include/SDL_error.h new file mode 100644 index 0000000..31c2261 --- /dev/null +++ b/lib/windows64/include/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_events.h b/lib/windows64/include/SDL_events.h new file mode 100644 index 0000000..9d09703 --- /dev/null +++ b/lib/windows64/include/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ + 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 */ + + /* 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; + +/** + * \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) */ + 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; + +/** + * \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 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; + +/** + * \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 */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} 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() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} 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_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_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/lib/windows64/include/SDL_filesystem.h b/lib/windows64/include/SDL_filesystem.h new file mode 100644 index 0000000..4cad657 --- /dev/null +++ b/lib/windows64/include/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/` + * + * **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/lib/windows64/include/SDL_gamecontroller.h b/lib/windows64/include/SDL_gamecontroller.h new file mode 100644 index 0000000..140054d --- /dev/null +++ b/lib/windows64/include/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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_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 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); + +/** + * 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 (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/lib/windows64/include/SDL_gesture.h b/lib/windows64/include/SDL_gesture.h new file mode 100644 index 0000000..db70b4d --- /dev/null +++ b/lib/windows64/include/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_guid.h b/lib/windows64/include/SDL_guid.h new file mode 100644 index 0000000..d964223 --- /dev/null +++ b/lib/windows64/include/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#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 for an input device that + * identifies that device 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 { + 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/lib/windows64/include/SDL_haptic.h b/lib/windows64/include/SDL_haptic.h new file mode 100644 index 0000000..2462a1e --- /dev/null +++ b/lib/windows64/include/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_hidapi.h b/lib/windows64/include/SDL_hidapi.h new file mode 100644 index 0000000..0575100 --- /dev/null +++ b/lib/windows64/include/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_hints.h b/lib/windows64/include/SDL_hints.h new file mode 100644 index 0000000..ad3b403 --- /dev/null +++ b/lib/windows64/include/SDL_hints.h @@ -0,0 +1,2604 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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. + * + * 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \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 noticeable 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" + * + * 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" + +/** + * \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" + * "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" + +/** + * \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 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" + +/** + * \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". 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 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" + +/** + * \brief 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" + +/** +* \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 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" + +/** + * \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 use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + +/** + * \brief 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" + +/** + * \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 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" + +/** + * \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 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" + + +/** + * \brief 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" + + +/** + * \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); + +/** + * 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/lib/windows64/include/SDL_joystick.h b/lib/windows64/include/SDL_joystick.h new file mode 100644 index 0000000..b9b4f62 --- /dev/null +++ b/lib/windows64/include/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 "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 */ +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; + +/** + * \brief 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. + * + * \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/lib/windows64/include/SDL_keyboard.h b/lib/windows64/include/SDL_keyboard.h new file mode 100644 index 0000000..86a37ad --- /dev/null +++ b/lib/windows64/include/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 + * \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. + * + * \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. + * + * 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/lib/windows64/include/SDL_keycode.h b/lib/windows64/include/SDL_keycode.h new file mode 100644 index 0000000..7106223 --- /dev/null +++ b/lib/windows64/include/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 + * 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 +{ + 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; + +/** + * \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/lib/windows64/include/SDL_loadso.h b/lib/windows64/include/SDL_loadso.h new file mode 100644 index 0000000..ca59b68 --- /dev/null +++ b/lib/windows64/include/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_locale.h b/lib/windows64/include/SDL_locale.h new file mode 100644 index 0000000..482dbef --- /dev/null +++ b/lib/windows64/include/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_log.h b/lib/windows64/include/SDL_log.h new file mode 100644 index 0000000..da733c4 --- /dev/null +++ b/lib/windows64/include/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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 + +/** + * \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, + const char *fmt, va_list ap); + +/** + * 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/lib/windows64/include/SDL_main.h b/lib/windows64/include/SDL_main.h new file mode 100644 index 0000000..5cc8e59 --- /dev/null +++ b/lib/windows64/include/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__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: + * \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); + +#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/lib/windows64/include/SDL_messagebox.h b/lib/windows64/include/SDL_messagebox.h new file mode 100644 index 0000000..7896fd1 --- /dev/null +++ b/lib/windows64/include/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_metal.h b/lib/windows64/include/SDL_metal.h new file mode 100644 index 0000000..f36e348 --- /dev/null +++ b/lib/windows64/include/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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/lib/windows64/include/SDL_misc.h b/lib/windows64/include/SDL_misc.h new file mode 100644 index 0000000..13ed9c7 --- /dev/null +++ b/lib/windows64/include/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_mouse.h b/lib/windows64/include/SDL_mouse.h new file mode 100644 index 0000000..aa07575 --- /dev/null +++ b/lib/windows64/include/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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/lib/windows64/include/SDL_mutex.h b/lib/windows64/include/SDL_mutex.h new file mode 100644 index 0000000..e679d38 --- /dev/null +++ b/lib/windows64/include/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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" + +/******************************************************************************/ +/* 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/lib/windows64/include/SDL_name.h b/lib/windows64/include/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/lib/windows64/include/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_opengl.h b/lib/windows64/include/SDL_opengl.h new file mode 100644 index 0000000..0ba8912 --- /dev/null +++ b/lib/windows64/include/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ + + + +/********************************************************************** + * 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/lib/windows64/include/SDL_opengl_glext.h b/lib/windows64/include/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/lib/windows64/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 <windows.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include <KHR/khrplatform.h>*/ +#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 <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; + */ + +#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 <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 +/* + * 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 <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 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/lib/windows64/include/SDL_opengles.h b/lib/windows64/include/SDL_opengles.h new file mode 100644 index 0000000..f4465ea --- /dev/null +++ b/lib/windows64/include/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_opengles2.h b/lib/windows64/include/SDL_opengles2.h new file mode 100644 index 0000000..5e3b717 --- /dev/null +++ b/lib/windows64/include/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_opengles2_gl2.h b/lib/windows64/include/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/lib/windows64/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 <GLES2/gl2platform.h>*/ + +#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 <KHR/khrplatform.h>*/ +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/lib/windows64/include/SDL_opengles2_gl2ext.h b/lib/windows64/include/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/lib/windows64/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/lib/windows64/include/SDL_opengles2_gl2platform.h b/lib/windows64/include/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/lib/windows64/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 <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/lib/windows64/include/SDL_opengles2_khrplatform.h b/lib/windows64/include/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/lib/windows64/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 <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; + */ + +#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 <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 +/* + * 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 <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 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/lib/windows64/include/SDL_pixels.h b/lib/windows64/include/SDL_pixels.h new file mode 100644 index 0000000..9abd57b --- /dev/null +++ b/lib/windows64/include/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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, +#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, +#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/lib/windows64/include/SDL_platform.h b/lib/windows64/include/SDL_platform.h new file mode 100644 index 0000000..d2a7e05 --- /dev/null +++ b/lib/windows64/include/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include <AvailabilityMacros.h> +#include <TargetConditionals.h> + +/* 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(<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 +#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__) +#undef __PSP__ +#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/lib/windows64/include/SDL_power.h b/lib/windows64/include/SDL_power.h new file mode 100644 index 0000000..1d75704 --- /dev/null +++ b/lib/windows64/include/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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/lib/windows64/include/SDL_quit.h b/lib/windows64/include/SDL_quit.h new file mode 100644 index 0000000..d8ceb89 --- /dev/null +++ b/lib/windows64/include/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_rect.h b/lib/windows64/include/SDL_rect.h new file mode 100644 index 0000000..9611a31 --- /dev/null +++ b/lib/windows64/include/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_render.h b/lib/windows64/include/SDL_render.h new file mode 100644 index 0000000..d62715a --- /dev/null +++ b/lib/windows64/include/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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. + * + * 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_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<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/lib/windows64/include/SDL_revision.h b/lib/windows64/include/SDL_revision.h new file mode 100644 index 0000000..dd26edf --- /dev/null +++ b/lib/windows64/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.28.0-0-gffa78e6be (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.0-0-gffa78e6be" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/lib/windows64/include/SDL_rwops.h b/lib/windows64/include/SDL_rwops.h new file mode 100644 index 0000000..8615cb5 --- /dev/null +++ b/lib/windows64/include/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ + +/** + * 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__) || 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); + +#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/lib/windows64/include/SDL_scancode.h b/lib/windows64/include/SDL_scancode.h new file mode 100644 index 0000000..a960a79 --- /dev/null +++ b/lib/windows64/include/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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, /**< 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/lib/windows64/include/SDL_sensor.h b/lib/windows64/include/SDL_sensor.h new file mode 100644 index 0000000..9ecce44 --- /dev/null +++ b/lib/windows64/include/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_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; + +/** + * 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, 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 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); + +/** + * 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/lib/windows64/include/SDL_shape.h b/lib/windows64/include/SDL_shape.h new file mode 100644 index 0000000..f66babc --- /dev/null +++ b/lib/windows64/include/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_stdinc.h b/lib/windows64/include/SDL_stdinc.h new file mode 100644 index 0000000..182ed86 --- /dev/null +++ b/lib/windows64/include/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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(_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 <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 +char *alloca(); +# 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. #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 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#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_SCANF_VARARG_FUNC( 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_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#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(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: 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); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const 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 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); + +#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, const char *fmt, va_list ap); +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, const char *fmt, va_list ap); +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, const char *fmt, va_list ap); + +#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-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "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 + +/* 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> +#include <stdio.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); +} + +/** + * 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/lib/windows64/include/SDL_surface.h b/lib/windows64/include/SDL_surface.h new file mode 100644 index 0000000..d6ee615 --- /dev/null +++ b/lib/windows64/include/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_system.h b/lib/windows64/include/SDL_system.h new file mode 100644 index 0000000..4b7eadd --- /dev/null +++ b/lib/windows64/include/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 */ +#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__ + +#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: + * 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, 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 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; + +/** + * 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); + +#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/lib/windows64/include/SDL_syswm.h b/lib/windows64/include/SDL_syswm.h new file mode 100644 index 0000000..b35734d --- /dev/null +++ b/lib/windows64/include/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_test.h b/lib/windows64/include/SDL_test.h new file mode 100644 index 0000000..80daaaf --- /dev/null +++ b/lib/windows64/include/SDL_test.h @@ -0,0 +1,69 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_h_ +#define SDL_test_h_ + +#include "SDL.h" +#include "SDL_test_assert.h" +#include "SDL_test_common.h" +#include "SDL_test_compare.h" +#include "SDL_test_crc32.h" +#include "SDL_test_font.h" +#include "SDL_test_fuzzer.h" +#include "SDL_test_harness.h" +#include "SDL_test_images.h" +#include "SDL_test_log.h" +#include "SDL_test_md5.h" +#include "SDL_test_memory.h" +#include "SDL_test_random.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Global definitions */ + +/* + * Note: Maximum size of SDLTest log message is less than SDL's limit + * to ensure we can fit additional information such as the timestamp. + */ +#define SDLTEST_MAX_LOGMESSAGE_LENGTH 3584 + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_assert.h b/lib/windows64/include/SDL_test_assert.h new file mode 100644 index 0000000..341e490 --- /dev/null +++ b/lib/windows64/include/SDL_test_assert.h @@ -0,0 +1,105 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_assert.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + * + * Assert API for test code and test cases + * + */ + +#ifndef SDL_test_assert_h_ +#define SDL_test_assert_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Fails the assert. + */ +#define ASSERT_FAIL 0 + +/** + * \brief Passes the assert. + */ +#define ASSERT_PASS 1 + +/** + * \brief Assert that logs and break execution flow on failures. + * + * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0). + * \param assertDescription Message to log with the assert describing it. + */ +void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters. + * + * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0). + * \param assertDescription Message to log with the assert describing it. + * + * \returns the assertCondition so it can be used to externally to break execution flow if desired. + */ +int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Explicitly pass without checking an assertion condition. Updates assertion counter. + * + * \param assertDescription Message to log with the assert describing it. + */ +void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * \brief Resets the assert summary counters to zero. + */ +void SDLTest_ResetAssertSummary(void); + +/** + * \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR. + */ +void SDLTest_LogAssertSummary(void); + + +/** + * \brief Converts the current assert summary state to a test result. + * + * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT + */ +int SDLTest_AssertSummaryToTestResult(void); + +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_common.h b/lib/windows64/include/SDL_test_common.h new file mode 100644 index 0000000..6de63ca --- /dev/null +++ b/lib/windows64/include/SDL_test_common.h @@ -0,0 +1,236 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_common.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* Ported from original test\common.h file. */ + +#ifndef SDL_test_common_h_ +#define SDL_test_common_h_ + +#include "SDL.h" + +#if defined(__PSP__) +#define DEFAULT_WINDOW_WIDTH 480 +#define DEFAULT_WINDOW_HEIGHT 272 +#elif defined(__VITA__) +#define DEFAULT_WINDOW_WIDTH 960 +#define DEFAULT_WINDOW_HEIGHT 544 +#else +#define DEFAULT_WINDOW_WIDTH 640 +#define DEFAULT_WINDOW_HEIGHT 480 +#endif + +#define VERBOSE_VIDEO 0x00000001 +#define VERBOSE_MODES 0x00000002 +#define VERBOSE_RENDER 0x00000004 +#define VERBOSE_EVENT 0x00000008 +#define VERBOSE_AUDIO 0x00000010 +#define VERBOSE_MOTION 0x00000020 + +typedef struct +{ + /* SDL init flags */ + char **argv; + Uint32 flags; + Uint32 verbose; + + /* Video info */ + const char *videodriver; + int display; + const char *window_title; + const char *window_icon; + Uint32 window_flags; + SDL_bool flash_on_focus_loss; + int window_x; + int window_y; + int window_w; + int window_h; + int window_minW; + int window_minH; + int window_maxW; + int window_maxH; + int logical_w; + int logical_h; + float scale; + int depth; + int refresh_rate; + int num_windows; + SDL_Window **windows; + + /* Renderer info */ + const char *renderdriver; + Uint32 render_flags; + SDL_bool skip_renderer; + SDL_Renderer **renderers; + SDL_Texture **targets; + + /* Audio info */ + const char *audiodriver; + SDL_AudioSpec audiospec; + + /* GL settings */ + int gl_red_size; + int gl_green_size; + int gl_blue_size; + int gl_alpha_size; + int gl_buffer_size; + int gl_depth_size; + int gl_stencil_size; + int gl_double_buffer; + int gl_accum_red_size; + int gl_accum_green_size; + int gl_accum_blue_size; + int gl_accum_alpha_size; + int gl_stereo; + int gl_multisamplebuffers; + int gl_multisamplesamples; + int gl_retained_backing; + int gl_accelerated; + int gl_major_version; + int gl_minor_version; + int gl_debug; + int gl_profile_mask; + + /* Additional fields added in 2.0.18 */ + SDL_Rect confine; + +} SDLTest_CommonState; + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * \brief Parse command line parameters and create common state. + * + * \param argv Array of command line parameters + * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO) + * + * \returns a newly allocated common state object. + */ +SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags); + +/** + * \brief Process one common argument. + * + * \param state The common state describing the test window to create. + * \param index The index of the argument to process in argv[]. + * + * \returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error. + */ +int SDLTest_CommonArg(SDLTest_CommonState * state, int index); + + +/** + * \brief Logs command line usage info. + * + * This logs the appropriate command line options for the subsystems in use + * plus other common options, and then any application-specific options. + * This uses the SDL_Log() function and splits up output to be friendly to + * 80-character-wide terminals. + * + * \param state The common state describing the test window for the app. + * \param argv0 argv[0], as passed to main/SDL_main. + * \param options an array of strings for application specific options. The last element of the array should be NULL. + */ +void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options); + +/** + * \brief Returns common usage information + * + * You should (probably) be using SDLTest_CommonLogUsage() instead, but this + * function remains for binary compatibility. Strings returned from this + * function are valid until SDLTest_CommonQuit() is called, in which case + * those strings' memory is freed and can no longer be used. + * + * \param state The common state describing the test window to create. + * \returns a string with usage information + */ +const char *SDLTest_CommonUsage(SDLTest_CommonState * state); + +/** + * \brief Open test window. + * + * \param state The common state describing the test window to create. + * + * \returns SDL_TRUE if initialization succeeded, false otherwise + */ +SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state); + +/** + * \brief Easy argument handling when test app doesn't need any custom args. + * + * \param state The common state describing the test window to create. + * \param argc argc, as supplied to SDL_main + * \param argv argv, as supplied to SDL_main + * + * \returns SDL_FALSE if app should quit, true otherwise. + */ +SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv); + +/** + * \brief Common event handler for test windows. + * + * \param state The common state used to create test window. + * \param event The event to handle. + * \param done Flag indicating we are done. + * + */ +void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done); + +/** + * \brief Close test window. + * + * \param state The common state used to create test window. + * + */ +void SDLTest_CommonQuit(SDLTest_CommonState * state); + +/** + * \brief Draws various window information (position, size, etc.) to the renderer. + * + * \param renderer The renderer to draw to. + * \param window The window whose information should be displayed. + * \param usedHeight Returns the height used, so the caller can draw more below. + * + */ +void SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_common_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_compare.h b/lib/windows64/include/SDL_test_compare.h new file mode 100644 index 0000000..5fce25c --- /dev/null +++ b/lib/windows64/include/SDL_test_compare.h @@ -0,0 +1,69 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_compare.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Defines comparison functions (i.e. for surfaces). + +*/ + +#ifndef SDL_test_compare_h_ +#define SDL_test_compare_h_ + +#include "SDL.h" + +#include "SDL_test_images.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Compares a surface and with reference image data for equality + * + * \param surface Surface used in comparison + * \param referenceSurface Test Surface used in comparison + * \param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy. + * + * \returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ. + */ +int SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_compare_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_crc32.h b/lib/windows64/include/SDL_test_crc32.h new file mode 100644 index 0000000..bf34782 --- /dev/null +++ b/lib/windows64/include/SDL_test_crc32.h @@ -0,0 +1,124 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_crc32.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Implements CRC32 calculations (default output is Perl String::CRC32 compatible). + +*/ + +#ifndef SDL_test_crc32_h_ +#define SDL_test_crc32_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* ------------ Definitions --------- */ + +/* Definition shared by all CRC routines */ + +#ifndef CrcUint32 + #define CrcUint32 unsigned int +#endif +#ifndef CrcUint8 + #define CrcUint8 unsigned char +#endif + +#ifdef ORIGINAL_METHOD + #define CRC32_POLY 0x04c11db7 /* AUTODIN II, Ethernet, & FDDI */ +#else + #define CRC32_POLY 0xEDB88320 /* Perl String::CRC32 compatible */ +#endif + +/** + * Data structure for CRC32 (checksum) computation + */ + typedef struct { + CrcUint32 crc32_table[256]; /* CRC table */ + } SDLTest_Crc32Context; + +/* ---------- Function Prototypes ------------- */ + +/** + * \brief Initialize the CRC context + * + * Note: The function initializes the crc table required for all crc calculations. + * + * \param crcContext pointer to context variable + * + * \returns 0 for OK, -1 on error + * + */ + int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext); + + +/** + * \brief calculate a crc32 from a data block + * + * \param crcContext pointer to context variable + * \param inBuf input buffer to checksum + * \param inLen length of input buffer + * \param crc32 pointer to Uint32 to store the final CRC into + * + * \returns 0 for OK, -1 on error + * + */ +int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32); + +/* Same routine broken down into three steps */ +int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32); +int SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32); +int SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32); + + +/** + * \brief clean up CRC context + * + * \param crcContext pointer to context variable + * + * \returns 0 for OK, -1 on error + * +*/ + +int SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_crc32_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_font.h b/lib/windows64/include/SDL_test_font.h new file mode 100644 index 0000000..18a82ff --- /dev/null +++ b/lib/windows64/include/SDL_test_font.h @@ -0,0 +1,168 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_font.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_font_h_ +#define SDL_test_font_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +#define FONT_CHARACTER_SIZE 8 +#define FONT_LINE_HEIGHT (FONT_CHARACTER_SIZE + 2) + +/** + * \brief Draw a string in the currently set font. + * + * \param renderer The renderer to draw on. + * \param x The X coordinate of the upper left corner of the character. + * \param y The Y coordinate of the upper left corner of the character. + * \param c The character to draw. + * + * \returns 0 on success, -1 on failure. + */ +int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, Uint32 c); + +/** + * \brief Draw a UTF-8 string in the currently set font. + * + * The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets. + * + * \param renderer The renderer to draw on. + * \param x The X coordinate of the upper left corner of the string. + * \param y The Y coordinate of the upper left corner of the string. + * \param s The string to draw. + * + * \returns 0 on success, -1 on failure. + */ +int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s); + +/** + * \brief Data used for multi-line text output + */ +typedef struct SDLTest_TextWindow +{ + SDL_Rect rect; + int current; + int numlines; + char **lines; +} SDLTest_TextWindow; + +/** + * \brief Create a multi-line text output window + * + * \param x The X coordinate of the upper left corner of the window. + * \param y The Y coordinate of the upper left corner of the window. + * \param w The width of the window (currently ignored) + * \param h The height of the window (currently ignored) + * + * \returns the new window, or NULL on failure. + * + * \since This function is available since SDL 2.24.0 + */ +SDLTest_TextWindow *SDLTest_TextWindowCreate(int x, int y, int w, int h); + +/** + * \brief Display a multi-line text output window + * + * This function should be called every frame to display the text + * + * \param textwin The text output window + * \param renderer The renderer to use for display + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer); + +/** + * \brief Add text to a multi-line text output window + * + * Adds UTF-8 text to the end of the current text. The newline character starts a + * new line of text. The backspace character deletes the last character or, if the + * line is empty, deletes the line and goes to the end of the previous line. + * + * \param textwin The text output window + * \param fmt A printf() style format string + * \param ... additional parameters matching % tokens in the `fmt` string, if any + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * \brief Add text to a multi-line text output window + * + * Adds UTF-8 text to the end of the current text. The newline character starts a + * new line of text. The backspace character deletes the last character or, if the + * line is empty, deletes the line and goes to the end of the previous line. + * + * \param textwin The text output window + * \param text The text to add to the window + * \param len The length, in bytes, of the text to add to the window + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len); + +/** + * \brief Clear the text in a multi-line text output window + * + * \param textwin The text output window + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowClear(SDLTest_TextWindow *textwin); + +/** + * \brief Free the storage associated with a multi-line text output window + * + * \param textwin The text output window + * + * \since This function is available since SDL 2.24.0 + */ +void SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin); + +/** + * \brief Cleanup textures used by font drawing functions. + */ +void SDLTest_CleanupTextDrawing(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_font_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_fuzzer.h b/lib/windows64/include/SDL_test_fuzzer.h new file mode 100644 index 0000000..cfe6a14 --- /dev/null +++ b/lib/windows64/include/SDL_test_fuzzer.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_fuzzer.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Data generators for fuzzing test data in a reproducible way. + +*/ + +#ifndef SDL_test_fuzzer_h_ +#define SDL_test_fuzzer_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* + Based on GSOC code by Markus Kauppila <markus.kauppila@gmail.com> +*/ + + +/** + * \file + * Note: The fuzzer implementation uses a static instance of random context + * internally which makes it thread-UNsafe. + */ + +/** + * Initializes the fuzzer for a test + * + * \param execKey Execution "Key" that initializes the random number generator uniquely for the test. + * + */ +void SDLTest_FuzzerInit(Uint64 execKey); + + +/** + * Returns a random Uint8 + * + * \returns a generated integer + */ +Uint8 SDLTest_RandomUint8(void); + +/** + * Returns a random Sint8 + * + * \returns a generated signed integer + */ +Sint8 SDLTest_RandomSint8(void); + + +/** + * Returns a random Uint16 + * + * \returns a generated integer + */ +Uint16 SDLTest_RandomUint16(void); + +/** + * Returns a random Sint16 + * + * \returns a generated signed integer + */ +Sint16 SDLTest_RandomSint16(void); + + +/** + * Returns a random integer + * + * \returns a generated integer + */ +Sint32 SDLTest_RandomSint32(void); + + +/** + * Returns a random positive integer + * + * \returns a generated integer + */ +Uint32 SDLTest_RandomUint32(void); + +/** + * Returns random Uint64. + * + * \returns a generated integer + */ +Uint64 SDLTest_RandomUint64(void); + + +/** + * Returns random Sint64. + * + * \returns a generated signed integer + */ +Sint64 SDLTest_RandomSint64(void); + +/** + * \returns a random float in range [0.0 - 1.0] + */ +float SDLTest_RandomUnitFloat(void); + +/** + * \returns a random double in range [0.0 - 1.0] + */ +double SDLTest_RandomUnitDouble(void); + +/** + * \returns a random float. + * + */ +float SDLTest_RandomFloat(void); + +/** + * \returns a random double. + * + */ +double SDLTest_RandomDouble(void); + +/** + * Returns a random boundary value for Uint8 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Uint16 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Uint32 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Uint64 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 + * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21 + * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100 + * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or 0 with error set + */ +Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Sint8 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100 + * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT8_MIN with error set + */ +Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain); + + +/** + * Returns a random boundary value for Sint16 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100 + * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT16_MIN with error set + */ +Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Sint32 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100 + * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value) + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT32_MIN with error set + */ +Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain); + +/** + * Returns a random boundary value for Sint64 within the given boundaries. + * Boundaries are inclusive, see the usage examples below. If validDomain + * is true, the function will only return valid boundaries, otherwise non-valid + * boundaries are also possible. + * If boundary1 > boundary2, the values are swapped + * + * Usage examples: + * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20 + * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9 + * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100 + * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set + * + * \param boundary1 Lower boundary limit + * \param boundary2 Upper boundary limit + * \param validDomain Should the generated boundary be valid (=within the bounds) or not? + * + * \returns a random boundary value for the given range and domain or SINT64_MIN with error set + */ +Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain); + + +/** + * Returns integer in range [min, max] (inclusive). + * Min and max values can be negative values. + * If Max in smaller than min, then the values are swapped. + * Min and max are the same value, that value will be returned. + * + * \param min Minimum inclusive value of returned random number + * \param max Maximum inclusive value of returned random number + * + * \returns a generated random integer in range + */ +Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max); + + +/** + * Generates random null-terminated string. The minimum length for + * the string is 1 character, maximum length for the string is 255 + * characters and it can contain ASCII characters from 32 to 126. + * + * Note: Returned string needs to be deallocated. + * + * \returns a newly allocated random string; or NULL if length was invalid or string could not be allocated. + */ +char * SDLTest_RandomAsciiString(void); + + +/** + * Generates random null-terminated string. The maximum length for + * the string is defined by the maxLength parameter. + * String can contain ASCII characters from 32 to 126. + * + * Note: Returned string needs to be deallocated. + * + * \param maxLength The maximum length of the generated string. + * + * \returns a newly allocated random string; or NULL if maxLength was invalid or string could not be allocated. + */ +char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength); + + +/** + * Generates random null-terminated string. The length for + * the string is defined by the size parameter. + * String can contain ASCII characters from 32 to 126. + * + * Note: Returned string needs to be deallocated. + * + * \param size The length of the generated string + * + * \returns a newly allocated random string; or NULL if size was invalid or string could not be allocated. + */ +char * SDLTest_RandomAsciiStringOfSize(int size); + +/** + * Get the invocation count for the fuzzer since last ...FuzzerInit. + * + * \returns the invocation count. + */ +int SDLTest_GetFuzzerInvocationCount(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_fuzzer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_harness.h b/lib/windows64/include/SDL_test_harness.h new file mode 100644 index 0000000..26231dc --- /dev/null +++ b/lib/windows64/include/SDL_test_harness.h @@ -0,0 +1,134 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_harness.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + Defines types for test case definitions and the test execution harness API. + + Based on original GSOC code by Markus Kauppila <markus.kauppila@gmail.com> +*/ + +#ifndef SDL_test_h_arness_h +#define SDL_test_h_arness_h + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* ! Definitions for test case structures */ +#define TEST_ENABLED 1 +#define TEST_DISABLED 0 + +/* ! Definition of all the possible test return values of the test case method */ +#define TEST_ABORTED -1 +#define TEST_STARTED 0 +#define TEST_COMPLETED 1 +#define TEST_SKIPPED 2 + +/* ! Definition of all the possible test results for the harness */ +#define TEST_RESULT_PASSED 0 +#define TEST_RESULT_FAILED 1 +#define TEST_RESULT_NO_ASSERT 2 +#define TEST_RESULT_SKIPPED 3 +#define TEST_RESULT_SETUP_FAILURE 4 + +/* !< Function pointer to a test case setup function (run before every test) */ +typedef void (*SDLTest_TestCaseSetUpFp)(void *arg); + +/* !< Function pointer to a test case function */ +typedef int (*SDLTest_TestCaseFp)(void *arg); + +/* !< Function pointer to a test case teardown function (run after every test) */ +typedef void (*SDLTest_TestCaseTearDownFp)(void *arg); + +/** + * Holds information about a single test case. + */ +typedef struct SDLTest_TestCaseReference { + /* !< Func2Stress */ + SDLTest_TestCaseFp testCase; + /* !< Short name (or function name) "Func2Stress" */ + const char *name; + /* !< Long name or full description "This test pushes func2() to the limit." */ + const char *description; + /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */ + int enabled; +} SDLTest_TestCaseReference; + +/** + * Holds information about a test suite (multiple test cases). + */ +typedef struct SDLTest_TestSuiteReference { + /* !< "PlatformSuite" */ + const char *name; + /* !< The function that is run before each test. NULL skips. */ + SDLTest_TestCaseSetUpFp testSetUp; + /* !< The test cases that are run as part of the suite. Last item should be NULL. */ + const SDLTest_TestCaseReference **testCases; + /* !< The function that is run after each test. NULL skips. */ + SDLTest_TestCaseTearDownFp testTearDown; +} SDLTest_TestSuiteReference; + + +/** + * \brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z). + * + * Note: The returned string needs to be deallocated by the caller. + * + * \param length The length of the seed string to generate + * + * \returns the generated seed string + */ +char *SDLTest_GenerateRunSeed(const int length); + +/** + * \brief Execute a test suite using the given run seed and execution key. + * + * \param testSuites Suites containing the test case. + * \param userRunSeed Custom run seed provided by user, or NULL to autogenerate one. + * \param userExecKey Custom execution key provided by user, or 0 to autogenerate one. + * \param filter Filter specification. NULL disables. Case sensitive. + * \param testIterations Number of iterations to run each test case. + * + * \returns the test run result: 0 when all tests passed, 1 if any tests failed. + */ +int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_h_arness_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_images.h b/lib/windows64/include/SDL_test_images.h new file mode 100644 index 0000000..1211371 --- /dev/null +++ b/lib/windows64/include/SDL_test_images.h @@ -0,0 +1,78 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_images.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + Defines some images for tests. + +*/ + +#ifndef SDL_test_images_h_ +#define SDL_test_images_h_ + +#include "SDL.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + *Type for test images. + */ +typedef struct SDLTest_SurfaceImage_s { + int width; + int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + const char *pixel_data; +} SDLTest_SurfaceImage_t; + +/* Test images */ +SDL_Surface *SDLTest_ImageBlit(void); +SDL_Surface *SDLTest_ImageBlitColor(void); +SDL_Surface *SDLTest_ImageBlitAlpha(void); +SDL_Surface *SDLTest_ImageBlitBlendAdd(void); +SDL_Surface *SDLTest_ImageBlitBlend(void); +SDL_Surface *SDLTest_ImageBlitBlendMod(void); +SDL_Surface *SDLTest_ImageBlitBlendNone(void); +SDL_Surface *SDLTest_ImageBlitBlendAll(void); +SDL_Surface *SDLTest_ImageFace(void); +SDL_Surface *SDLTest_ImagePrimitives(void); +SDL_Surface *SDLTest_ImagePrimitivesBlend(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_images_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_log.h b/lib/windows64/include/SDL_test_log.h new file mode 100644 index 0000000..a27ffc2 --- /dev/null +++ b/lib/windows64/include/SDL_test_log.h @@ -0,0 +1,67 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_log.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + * + * Wrapper to log in the TEST category + * + */ + +#ifndef SDL_test_log_h_ +#define SDL_test_log_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Prints given message with a timestamp in the TEST category and INFO priority. + * + * \param fmt Message to be logged + */ +void SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * \brief Prints given message with a timestamp in the TEST category and the ERROR priority. + * + * \param fmt Message to be logged + */ +void SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_md5.h b/lib/windows64/include/SDL_test_md5.h new file mode 100644 index 0000000..538c7ae --- /dev/null +++ b/lib/windows64/include/SDL_test_md5.h @@ -0,0 +1,129 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_md5.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + *********************************************************************** + ** Header file for implementation of MD5 ** + ** RSA Data Security, Inc. MD5 Message-Digest Algorithm ** + ** Created: 2/17/90 RLR ** + ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version ** + ** Revised (for MD5): RLR 4/27/91 ** + ** -- G modified to have y&~z instead of y&z ** + ** -- FF, GG, HH modified to add in last register done ** + ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 ** + ** -- distinct additive constant for each step ** + ** -- round 4 added, working mod 7 ** + *********************************************************************** +*/ + +/* + *********************************************************************** + ** Message-digest routines: ** + ** To form the message digest for a message M ** + ** (1) Initialize a context buffer mdContext using MD5Init ** + ** (2) Call MD5Update on mdContext and M ** + ** (3) Call MD5Final on mdContext ** + ** The message digest is now in mdContext->digest[0...15] ** + *********************************************************************** +*/ + +#ifndef SDL_test_md5_h_ +#define SDL_test_md5_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------ Definitions --------- */ + +/* typedef a 32-bit type */ + typedef unsigned long int MD5UINT4; + +/* Data structure for MD5 (Message-Digest) computation */ + typedef struct { + MD5UINT4 i[2]; /* number of _bits_ handled mod 2^64 */ + MD5UINT4 buf[4]; /* scratch buffer */ + unsigned char in[64]; /* input buffer */ + unsigned char digest[16]; /* actual digest after Md5Final call */ + } SDLTest_Md5Context; + +/* ---------- Function Prototypes ------------- */ + +/** + * \brief initialize the context + * + * \param mdContext pointer to context variable + * + * Note: The function initializes the message-digest context + * mdContext. Call before each new use of the context - + * all fields are set to zero. + */ + void SDLTest_Md5Init(SDLTest_Md5Context * mdContext); + + +/** + * \brief update digest from variable length data + * + * \param mdContext pointer to context variable + * \param inBuf pointer to data array/string + * \param inLen length of data array/string + * + * Note: The function updates the message-digest context to account + * for the presence of each of the characters inBuf[0..inLen-1] + * in the message whose digest is being computed. +*/ + + void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf, + unsigned int inLen); + + +/** + * \brief complete digest computation + * + * \param mdContext pointer to context variable + * + * Note: The function terminates the message-digest computation and + * ends with the desired message digest in mdContext.digest[0..15]. + * Always call before using the digest[] variable. +*/ + + void SDLTest_Md5Final(SDLTest_Md5Context * mdContext); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_md5_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_memory.h b/lib/windows64/include/SDL_test_memory.h new file mode 100644 index 0000000..f959177 --- /dev/null +++ b/lib/windows64/include/SDL_test_memory.h @@ -0,0 +1,63 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_memory.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_memory_h_ +#define SDL_test_memory_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief Start tracking SDL memory allocations + * + * \note This should be called before any other SDL functions for complete tracking coverage + */ +int SDLTest_TrackAllocations(void); + +/** + * \brief Print a log of any outstanding allocations + * + * \note This can be called after SDL_Quit() + */ +void SDLTest_LogAllocations(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_memory_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_test_random.h b/lib/windows64/include/SDL_test_random.h new file mode 100644 index 0000000..0035a80 --- /dev/null +++ b/lib/windows64/include/SDL_test_random.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_test_random.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +/* + + A "32-bit Multiply with carry random number generator. Very fast. + Includes a list of recommended multipliers. + + multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32. + period: (a*2^31)-1 + +*/ + +#ifndef SDL_test_random_h_ +#define SDL_test_random_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* --- Definitions */ + +/* + * Macros that return a random number in a specific format. + */ +#define SDLTest_RandomInt(c) ((int)SDLTest_Random(c)) + +/* + * Context structure for the random number generator state. + */ + typedef struct { + unsigned int a; + unsigned int x; + unsigned int c; + unsigned int ah; + unsigned int al; + } SDLTest_RandomContext; + + +/* --- Function prototypes */ + +/** + * \brief Initialize random number generator with two integers. + * + * Note: The random sequence of numbers returned by ...Random() is the + * same for the same two integers and has a period of 2^31. + * + * \param rndContext pointer to context structure + * \param xi integer that defines the random sequence + * \param ci integer that defines the random sequence + * + */ + void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi, + unsigned int ci); + +/** + * \brief Initialize random number generator based on current system time. + * + * \param rndContext pointer to context structure + * + */ + void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext); + + +/** + * \brief Initialize random number generator based on current system time. + * + * Note: ...RandomInit() or ...RandomInitTime() must have been called + * before using this function. + * + * \param rndContext pointer to context structure + * + * \returns a random number (32bit unsigned integer) + * + */ + unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_random_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/lib/windows64/include/SDL_thread.h b/lib/windows64/include/SDL_thread.h new file mode 100644 index 0000000..b829bba --- /dev/null +++ b/lib/windows64/include/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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(__GDK__)) && !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(__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); + +/** + * 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/lib/windows64/include/SDL_timer.h b/lib/windows64/include/SDL_timer.h new file mode 100644 index 0000000..98f9ad1 --- /dev/null +++ b/lib/windows64/include/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_touch.h b/lib/windows64/include/SDL_touch.h new file mode 100644 index 0000000..c12d4a1 --- /dev/null +++ b/lib/windows64/include/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_types.h b/lib/windows64/include/SDL_types.h new file mode 100644 index 0000000..b5d7192 --- /dev/null +++ b/lib/windows64/include/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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/lib/windows64/include/SDL_version.h b/lib/windows64/include/SDL_version.h new file mode 100644 index 0000000..782a7ff --- /dev/null +++ b/lib/windows64/include/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 28 +#define SDL_PATCHLEVEL 0 + +/** + * 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: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * 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/lib/windows64/include/SDL_video.h b/lib/windows64/include/SDL_video.h new file mode 100644 index 0000000..c8b2d7a --- /dev/null +++ b/lib/windows64/include/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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_DISPLAYEVENT_MOVED /**< Display has changed position */ +} 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_GL_FLOATBUFFERS +} 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. + * + * **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 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. + * + * \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. + * + * 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(). + * + * \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_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/lib/windows64/include/SDL_vulkan.h b/lib/windows64/include/SDL_vulkan.h new file mode 100644 index 0000000..ab86a0b --- /dev/null +++ b/lib/windows64/include/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + 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) + +#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/lib/windows64/include/begin_code.h b/lib/windows64/include/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/lib/windows64/include/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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)) +# 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) +#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/lib/windows64/include/close_code.h b/lib/windows64/include/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/lib/windows64/include/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 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 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/lib/windows64/include/discord_game_sdk.h b/lib/windows64/include/discord_game_sdk.h new file mode 100644 index 0000000..f7a7927 --- /dev/null +++ b/lib/windows64/include/discord_game_sdk.h @@ -0,0 +1,429 @@ +#ifndef _DISCORD_GAME_SDK_H_ +#define _DISCORD_GAME_SDK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define DISCORD_VERSION 1 +#define DISCORD_APPLICATION_VERSION 1 +#define DISCORD_USERS_VERSION 1 +#define DISCORD_IMAGES_VERSION 1 +#define DISCORD_ACTIVITIES_VERSION 1 +#define DISCORD_RELATIONSHIPS_VERSION 1 +#define DISCORD_LOBBIES_VERSION 1 +#define DISCORD_NETWORK_VERSION 1 +#define DISCORD_OVERLAY_VERSION 1 +#define DISCORD_STORAGE_VERSION 1 + +enum EDiscordResult { + DiscordResult_Ok, + DiscordResult_ServiceUnavailable, + DiscordResult_InvalidVersion, + DiscordResult_LockFailed, + DiscordResult_InternalError, + DiscordResult_InvalidPaylaod, + DiscordResult_InvalidCommand, + DiscordResult_InvalidPermissions, + DiscordResult_NotFetched, + DiscordResult_NotFound, + DiscordResult_Conflict, + DiscordResult_InvalidSecret, + DiscordResult_InvalidJoinSecret, + DiscordResult_NoEligibleActivity, + DiscordResult_InvalidInvite, + DiscordResult_NotAuthenticated, + DiscordResult_InvalidAccessToken, + DiscordResult_ApplicationMismatch, + DiscordResult_InvalidDataUrl, + DiscordResult_InvalidBase64, + DiscordResult_NotFiltered, + DiscordResult_LobbyFull, + DiscordResult_InvalidLobbySecret, + DiscordResult_InvalidFilename, + DiscordResult_InvalidFileSize, + DiscordResult_InvalidEntitlement, + DiscordResult_NotInstalled, + DiscordResult_NotRunning, +}; + +enum EDiscordCreateFlags { + DiscordCreateFlags_Default = 0, + DiscordCreateFlags_NoRequireDiscord = 1, +}; + +enum EDiscordLogLevel { + DiscordLogLevel_Error = 1, + DiscordLogLevel_Warn, + DiscordLogLevel_Info, + DiscordLogLevel_Debug, +}; + +enum EDiscordImageType { + DiscordImageType_User, +}; + +enum EDiscordActivityType { + DiscordActivityType_Playing, + DiscordActivityType_Streaming, + DiscordActivityType_Listening, + DiscordActivityType_Watching, +}; + +enum EDiscordActivityActionType { + DiscordActivityActionType_Join = 1, + DiscordActivityActionType_Spectate, +}; + +enum EDiscordActivityJoinRequestReply { + DiscordActivityJoinRequestReply_No, + DiscordActivityJoinRequestReply_Yes, + DiscordActivityJoinRequestReply_Ignore, +}; + +enum EDiscordStatus { + DiscordStatus_Offline = 0, + DiscordStatus_Online = 1, + DiscordStatus_Idle = 2, + DiscordStatus_DoNotDisturb = 4, +}; + +enum EDiscordRelationshipType { + DiscordRelationshipType_None, + DiscordRelationshipType_Friend, + DiscordRelationshipType_Blocked, + DiscordRelationshipType_PendingIncoming, + DiscordRelationshipType_PendingOutgoing, + DiscordRelationshipType_Implicit, +}; + +enum EDiscordLobbyType { + DiscordLobbyType_Private = 1, + DiscordLobbyType_Public, +}; + +enum EDiscordLobbySearchComparison { + DiscordLobbySearchComparison_LessThanOrEqual = -2, + DiscordLobbySearchComparison_LessThan, + DiscordLobbySearchComparison_Equal, + DiscordLobbySearchComparison_GreaterThan, + DiscordLobbySearchComparison_GreaterThanOrEqual, + DiscordLobbySearchComparison_NotEqual, +}; + +enum EDiscordLobbySearchCast { + DiscordLobbySearchCast_String = 1, + DiscordLobbySearchCast_Number, +}; + +typedef int64_t DiscordClientId; +typedef int32_t DiscordVersion; +typedef int64_t DiscordSnowflake; +typedef int64_t DiscordTimestamp; +typedef DiscordSnowflake DiscordUserId; +typedef char DiscordUserName[256]; +typedef char DiscordUserAvatar[128]; +typedef char DiscordUserDiscriminator[8]; +typedef char DiscordAccessToken[128]; +typedef char DiscordOAuth2Scopes[1024]; +typedef char DiscordLocale[128]; +typedef char DiscordBranch[4096]; +typedef uint8_t* DiscordImageData; +typedef char DiscordImageId[128]; +typedef char DiscordImageCaption[128]; +typedef char DiscordPartyId[128]; +typedef int32_t DiscordPartyMemberCount; +typedef char DiscordSecret[128]; +typedef DiscordSnowflake DiscordLobbyId; +typedef char DiscordLobbySecret[128]; +typedef char DiscordMetadataKey[256]; +typedef char DiscordMetadataValue[4096]; +typedef uint8_t* DiscordLobbyData; +typedef uint64_t DiscordNetworkSessionId; +typedef uint8_t DiscordNetworkChannelId; +typedef uint8_t* DiscordNetworkData; +typedef char DiscordStorageFileName[260]; +typedef uint8_t* DiscordStorageData; + +struct DiscordUser { + DiscordUserId id; + DiscordUserName username; + DiscordUserDiscriminator discriminator; + DiscordUserAvatar avatar; + int bot; +}; + +struct DiscordOAuth2Token { + DiscordAccessToken access_token; + DiscordOAuth2Scopes scopes; + DiscordTimestamp expires; +}; + +struct DiscordImageHandle { + enum EDiscordImageType type; + int64_t id; + uint32_t size; +}; + +struct DiscordImageDimensions { + uint32_t width; + uint32_t height; +}; + +struct DiscordActivityTimestamps { + DiscordTimestamp start; + DiscordTimestamp end; +}; + +struct DiscordActivityAssets { + DiscordImageId large_image; + DiscordImageCaption large_text; + DiscordImageId small_image; + DiscordImageCaption small_text; +}; + +struct DiscordPartySize { + DiscordPartyMemberCount current_size; + DiscordPartyMemberCount max_size; +}; + +struct DiscordActivityParty { + DiscordPartyId id; + struct DiscordPartySize size; +}; + +struct DiscordActivitySecrets { + DiscordSecret match; + DiscordSecret join; + DiscordSecret spectate; +}; + +struct DiscordActivity { + enum EDiscordActivityType type; + char name[128]; + char state[128]; + char details[128]; + struct DiscordActivityTimestamps timestamps; + struct DiscordActivityAssets assets; + struct DiscordActivityParty party; + struct DiscordActivitySecrets secrets; + int instance; +}; + +struct DiscordPresence { + enum EDiscordStatus status; + struct DiscordActivity activity; +}; + +struct DiscordRelationship { + enum EDiscordRelationshipType type; + struct DiscordUser user; + struct DiscordPresence presence; +}; + +struct DiscordLobby { + DiscordLobbyId id; + enum EDiscordLobbyType type; + DiscordSnowflake owner_id; + DiscordLobbySecret secret; + uint32_t capacity; +}; + +struct DiscordFileStat { + DiscordStorageFileName filename; + uint64_t size; + uint64_t last_modified; +}; + +struct IDiscordLobbyTransaction { + enum EDiscordResult (*set_type)(struct IDiscordLobbyTransaction* lobby_transaction, enum EDiscordLobbyType type); + enum EDiscordResult (*set_owner)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordSnowflake owner_id); + enum EDiscordResult (*set_capacity)(struct IDiscordLobbyTransaction* lobby_transaction, uint32_t capacity); + enum EDiscordResult (*set_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key, DiscordMetadataValue value); + enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key); +}; + +struct IDiscordLobbyMemberTransaction { + enum EDiscordResult (*set_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key, DiscordMetadataValue value); + enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key); +}; + +struct IDiscordLobbySearch { + enum EDiscordResult (*filter)(struct IDiscordLobbySearch* lobby_search, DiscordMetadataKey key, enum EDiscordLobbySearchComparison comparison, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value); + enum EDiscordResult (*sort)(struct IDiscordLobbySearch* lobby_search, DiscordMetadataKey key, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value); + enum EDiscordResult (*limit)(struct IDiscordLobbySearch* lobby_search, uint32_t limit); +}; + +typedef void IDiscordApplicationEvents; + +struct IDiscordApplication { + enum EDiscordResult (*destroy)(struct IDiscordApplication* application); + enum EDiscordResult (*validate_or_exit)(struct IDiscordApplication* application, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_current_locale)(struct IDiscordApplication* application, DiscordLocale* locale); + enum EDiscordResult (*get_current_branch)(struct IDiscordApplication* application, DiscordBranch* branch); + enum EDiscordResult (*get_oauth2_token)(struct IDiscordApplication* application, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordOAuth2Token* oauth2_token)); +}; + +struct IDiscordUsersEvents { + void (*on_current_user_update)(void* event_data); +}; + +struct IDiscordUsers { + enum EDiscordResult (*destroy)(struct IDiscordUsers* users); + enum EDiscordResult (*get_current_user)(struct IDiscordUsers* users, struct DiscordUser* current_user); + enum EDiscordResult (*fetch)(struct IDiscordUsers* users, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordUser* user)); +}; + +typedef void IDiscordImagesEvents; + +struct IDiscordImages { + enum EDiscordResult (*destroy)(struct IDiscordImages* images); + enum EDiscordResult (*fetch)(struct IDiscordImages* images, struct DiscordImageHandle handle, int refresh, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordImageHandle handle_result)); + enum EDiscordResult (*get_dimensions)(struct IDiscordImages* images, struct DiscordImageHandle handle, struct DiscordImageDimensions* dimensions); + enum EDiscordResult (*get_data)(struct IDiscordImages* images, struct DiscordImageHandle handle, DiscordImageData data, uint32_t data_length); +}; + +struct IDiscordActivitiesEvents { + void (*on_activity_join)(void* event_data, DiscordSecret secret); + void (*on_activity_spectate)(void* event_data, DiscordSecret secret); + void (*on_activity_join_request)(void* event_data, struct DiscordUser* user); + void (*on_activity_invite)(void* event_data, enum EDiscordActivityActionType type, struct DiscordUser* user, struct DiscordActivity* activity); +}; + +struct IDiscordActivities { + enum EDiscordResult (*destroy)(struct IDiscordActivities* activities); + enum EDiscordResult (*register_)(struct IDiscordActivities* activities, const char* command); + enum EDiscordResult (*register_steam)(struct IDiscordActivities* activities, uint32_t steam_id); + enum EDiscordResult (*update_activity)(struct IDiscordActivities* activities, struct DiscordActivity* activity, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*clear_activity)(struct IDiscordActivities* activities, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*respond)(struct IDiscordActivities* activities, DiscordUserId user_id, enum EDiscordActivityJoinRequestReply reply, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*invite_user)(struct IDiscordActivities* activities, DiscordUserId user_id, enum EDiscordActivityActionType type, const char* content, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*accept_invite)(struct IDiscordActivities* activities, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +struct IDiscordRelationshipsEvents { + void (*on_relationships_update)(void* event_data); + void (*on_relationship_update)(void* event_data, struct DiscordRelationship* relationship); +}; + +struct IDiscordRelationships { + enum EDiscordResult (*destroy)(struct IDiscordRelationships* relationships); + enum EDiscordResult (*filter)(struct IDiscordRelationships* relationships, void* filter_data, int (*filter)(void* filter_data, struct DiscordRelationship* relationship)); + enum EDiscordResult (*count)(struct IDiscordRelationships* relationships, int32_t* count); + enum EDiscordResult (*get)(struct IDiscordRelationships* relationships, DiscordUserId user_id, struct DiscordRelationship* relationship); + enum EDiscordResult (*at)(struct IDiscordRelationships* relationships, uint32_t index, struct DiscordRelationship* relationship); +}; + +struct IDiscordLobbiesEvents { + void (*on_lobby_update)(void* event_data, int64_t lobby_id); + void (*on_lobby_delete)(void* event_data, int64_t lobby_id, uint32_t reason); + void (*on_lobby_member_connect)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_member_update)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_member_disconnect)(void* event_data, int64_t lobby_id, int64_t user_id); + void (*on_lobby_message)(void* event_data, int64_t lobby_id, int64_t user_id, DiscordLobbyData data, uint32_t data_length); + void (*on_lobby_speaking)(void* event_data, int64_t lobby_id, int64_t user_id, int speaking); +}; + +struct IDiscordLobbies { + enum EDiscordResult (*destroy)(struct IDiscordLobbies* lobbies); + enum EDiscordResult (*create_lobby_transaction)(struct IDiscordLobbies* lobbies, struct IDiscordLobbyTransaction** transaction); + enum EDiscordResult (*get_lobby_transaction)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction** transaction); + enum EDiscordResult (*get_member_transaction)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction** transaction); + enum EDiscordResult (*create_lobby)(struct IDiscordLobbies* lobbies, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby)); + enum EDiscordResult (*update_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*delete_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*connect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordLobbySecret lobby_secret, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby)); + enum EDiscordResult (*disconnect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_lobby)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, struct DiscordLobby* lobby); + enum EDiscordResult (*get_lobby_metadata)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordMetadataKey key, DiscordMetadataValue* value); + enum EDiscordResult (*get_member_count)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, int32_t* count); + enum EDiscordResult (*get_member_user_id)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, int32_t index, DiscordUserId* user_id); + enum EDiscordResult (*get_member_user)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct DiscordUser* user); + enum EDiscordResult (*get_member_metadata)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, DiscordMetadataKey key, DiscordMetadataValue* value); + enum EDiscordResult (*update_member)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*send)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, DiscordLobbyData data, uint32_t data_length); + enum EDiscordResult (*create_lobby_search)(struct IDiscordLobbies* lobbies, struct IDiscordLobbySearch** lobby_search); + enum EDiscordResult (*search)(struct IDiscordLobbies* lobbies, struct IDiscordLobbySearch* query, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*get_lobby_count)(struct IDiscordLobbies* lobbies, int32_t* count); + enum EDiscordResult (*get_lobby_id)(struct IDiscordLobbies* lobbies, int32_t index, DiscordLobbyId* lobby_id); + enum EDiscordResult (*voice_connect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*voice_disconnect)(struct IDiscordLobbies* lobbies, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +struct IDiscordNetworkEvents { + void (*on_message)(void* event_data, DiscordNetworkSessionId from, DiscordNetworkChannelId channel, DiscordNetworkData data, uint32_t data_length); +}; + +struct IDiscordNetwork { + enum EDiscordResult (*destroy)(struct IDiscordNetwork* network); + enum EDiscordResult (*get_session_id)(struct IDiscordNetwork* network, DiscordNetworkSessionId* session_id); + enum EDiscordResult (*flush)(struct IDiscordNetwork* network); + enum EDiscordResult (*open_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); + enum EDiscordResult (*open_reliable_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); + enum EDiscordResult (*send)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel, DiscordNetworkData data, uint32_t data_length); + enum EDiscordResult (*close_channel)(struct IDiscordNetwork* network, DiscordNetworkSessionId remote, DiscordNetworkChannelId channel); +}; + +struct IDiscordOverlayEvents { + void (*on_overlay_locked)(void* event_data, int locked); +}; + +struct IDiscordOverlay { + enum EDiscordResult (*destroy)(struct IDiscordOverlay* overlay); + enum EDiscordResult (*is_enabled)(struct IDiscordOverlay* overlay, int* enabled); + enum EDiscordResult (*is_locked)(struct IDiscordOverlay* overlay, int* locked); + enum EDiscordResult (*set_locked)(struct IDiscordOverlay* overlay, int locked); + enum EDiscordResult (*open_activity_invite)(struct IDiscordOverlay* overlay, enum EDiscordActivityActionType type, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); +}; + +typedef void IDiscordStorageEvents; + +struct IDiscordStorage { + enum EDiscordResult (*destroy)(struct IDiscordStorage* storage); + enum EDiscordResult (*read)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length, uint32_t* read); + enum EDiscordResult (*read_async)(struct IDiscordStorage* storage, DiscordStorageFileName name, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, DiscordStorageData data, uint32_t data_length)); + enum EDiscordResult (*read_async_partial)(struct IDiscordStorage* storage, DiscordStorageFileName name, uint64_t offset, uint64_t length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, DiscordStorageData data, uint32_t data_length)); + enum EDiscordResult (*write)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length); + enum EDiscordResult (*write_async)(struct IDiscordStorage* storage, DiscordStorageFileName name, DiscordStorageData data, uint32_t data_length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result)); + enum EDiscordResult (*delete_)(struct IDiscordStorage* storage, DiscordStorageFileName name); + enum EDiscordResult (*exists)(struct IDiscordStorage* storage, DiscordStorageFileName name, int* exists); + enum EDiscordResult (*count)(struct IDiscordStorage* storage, int32_t* count); + enum EDiscordResult (*stat)(struct IDiscordStorage* storage, DiscordStorageFileName name, struct DiscordFileStat* stat); + enum EDiscordResult (*stat_index)(struct IDiscordStorage* storage, int32_t index, struct DiscordFileStat* stat); +}; + +struct IDiscordCoreEvents { + void (*on_ready)(void* event_data); +}; + +struct IDiscordCore { + enum EDiscordResult (*destroy)(struct IDiscordCore* core); + enum EDiscordResult (*run_callbacks)(struct IDiscordCore* core); + enum EDiscordResult (*set_log_hook)(struct IDiscordCore* core, enum EDiscordLogLevel min_level, void* hook_data, void (*hook)(void* hook_data, enum EDiscordLogLevel level, const char* message)); + enum EDiscordResult (*create_application)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordApplicationEvents* events, void* event_data, struct IDiscordApplication** result); + enum EDiscordResult (*create_users)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordUsersEvents* events, void* event_data, struct IDiscordUsers** result); + enum EDiscordResult (*create_images)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordImagesEvents* events, void* event_data, struct IDiscordImages** result); + enum EDiscordResult (*create_activities)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordActivitiesEvents* events, void* event_data, struct IDiscordActivities** result); + enum EDiscordResult (*create_relationships)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordRelationshipsEvents* events, void* event_data, struct IDiscordRelationships** result); + enum EDiscordResult (*create_lobbies)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordLobbiesEvents* events, void* event_data, struct IDiscordLobbies** result); + enum EDiscordResult (*create_network)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordNetworkEvents* events, void* event_data, struct IDiscordNetwork** result); + enum EDiscordResult (*create_overlay)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordOverlayEvents* events, void* event_data, struct IDiscordOverlay** result); + enum EDiscordResult (*create_storage)(struct IDiscordCore* core, DiscordVersion version, struct IDiscordStorageEvents* events, void* event_data, struct IDiscordStorage** result); +}; + +struct DiscordCreateParams { + DiscordClientId client_id; + uint64_t flags; + struct IDiscordCoreEvents* events; + void* event_data; +}; + +enum EDiscordResult DiscordCreate(DiscordVersion version, struct DiscordCreateParams* params, struct IDiscordCore** result); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/lib/windows64/include/freetype/config/ftconfig.h b/lib/windows64/include/freetype/config/ftconfig.h new file mode 100644 index 0000000..086db76 --- /dev/null +++ b/lib/windows64/include/freetype/config/ftconfig.h @@ -0,0 +1,467 @@ +/***************************************************************************/ +/* */ +/* ftconfig.h */ +/* */ +/* ANSI-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This header file contains a number of macro definitions that are used */ + /* by the rest of the engine. Most of the macros here are automatically */ + /* determined at compile time, and you should not need to change it to */ + /* port FreeType, except to compile the library with a non-ANSI */ + /* compiler. */ + /* */ + /* Note however that if some specific modifications are needed, we */ + /* advise you to place a modified copy in your build directory. */ + /* */ + /* The build directory is usually `builds/<system>', and contains */ + /* system-specific files that are always included first when building */ + /* the library. */ + /* */ + /* This ANSI version should stay in `include/config/'. */ + /* */ + /*************************************************************************/ + +#ifndef __FTCONFIG_H__ +#define __FTCONFIG_H__ + +#include <ft2build.h> +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ + /* */ + /* These macros can be toggled to suit a specific system. The current */ + /* ones are defaults used to compile FreeType in an ANSI C environment */ + /* (16bit compilers are also supported). Copy this file to your own */ + /* `builds/<system>' directory, and edit it to port the engine. */ + /* */ + /*************************************************************************/ + + + /* There are systems (like the Texas Instruments 'C54x) where a `char' */ + /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ + /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ + /* `char' type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + + /* The size of an `int' type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `int' type!" +#endif + + /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `long' type!" +#endif + + + /* FT_UNUSED is a macro used to indicate that a given parameter is not */ + /* used -- this is only used to get rid of unpleasant compiler warnings */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + + /*************************************************************************/ + /* */ + /* AUTOMATIC CONFIGURATION MACROS */ + /* */ + /* These macros are computed from the ones defined above. Don't touch */ + /* their definition, unless you know precisely what you are doing. No */ + /* porter should need to mess with them. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Mac support */ + /* */ + /* This is the only necessary change, so it is defined here instead */ + /* providing a new configuration file. */ + /* */ +#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* no Carbon frameworks for 64bit 10.4.x */ + /* AvailabilityMacros.h is available since Mac OS X 10.2, */ + /* so guess the system version by maximum errno before inclusion */ +#include <errno.h> +#ifdef ECANCELED /* defined since 10.2 */ +#include "AvailabilityMacros.h" +#endif +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#undef FT_MACINTOSH +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int16 */ + /* */ + /* <Description> */ + /* A typedef for a 16bit signed integer type. */ + /* */ + typedef signed short FT_Int16; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt16 */ + /* */ + /* <Description> */ + /* A typedef for a 16bit unsigned integer type. */ + /* */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int32 */ + /* */ + /* <Description> */ + /* A typedef for a 32bit signed integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef signed XXX FT_Int32; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt32 */ + /* */ + /* A typedef for a 32bit unsigned integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef unsigned XXX FT_UInt32; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int64 */ + /* */ + /* A typedef for a 64bit signed integer type. The size depends on */ + /* the configuration. Only defined if there is real 64bit support; */ + /* otherwise, it gets emulated with a structure (if necessary). */ + /* */ + typedef signed XXX FT_Int64; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt64 */ + /* */ + /* A typedef for a 64bit unsigned integer type. The size depends on */ + /* the configuration. Only defined if there is real 64bit support; */ + /* otherwise, it gets emulated with a structure (if necessary). */ + /* */ + typedef unsigned XXX FT_UInt64; + + /* */ + +#endif + +#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT) + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT) + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32 bits */ +#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT) + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit int type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) + + /* FT_LONG64 must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long +#define FT_UINT64 unsigned long + + /*************************************************************************/ + /* */ + /* A 64-bit data type may create compilation problems if you compile */ + /* in strict ANSI mode. To avoid them, we disable other 64-bit data */ + /* types if __STDC__ is defined. You can however ignore this rule */ + /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* */ +#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of __BORLANDC__ in order */ + /* to test the compiler version. */ + + /* this compiler provides the __int64 type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long' type */ +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#endif /* _MSC_VER */ + +#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ + +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#endif + + + /*************************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /*************************************************************************/ + + +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + + /* typeof condition taken from gnulib's `intprops.h' header file */ +#if ( __GNUC__ >= 2 || \ + defined( __IBM__TYPEOF__ ) || \ + ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define TYPEOF( type ) (__typeof__ (type)) +#else +#define TYPEOF( type ) /* empty */ +#endif + + +#ifdef FT_MAKE_OPTION_SINGLE_OBJECT + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#ifdef __cplusplus +#define FT_LOCAL( x ) extern "C" x +#define FT_LOCAL_DEF( x ) extern "C" x +#else +#define FT_LOCAL( x ) extern x +#define FT_LOCAL_DEF( x ) x +#endif + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + +#define FT_LOCAL_ARRAY( x ) extern const x +#define FT_LOCAL_ARRAY_DEF( x ) const x + + +#ifndef FT_BASE + +#ifdef __cplusplus +#define FT_BASE( x ) extern "C" x +#else +#define FT_BASE( x ) extern x +#endif + +#endif /* !FT_BASE */ + + +#ifndef FT_BASE_DEF + +#ifdef __cplusplus +#define FT_BASE_DEF( x ) x +#else +#define FT_BASE_DEF( x ) x +#endif + +#endif /* !FT_BASE_DEF */ + + +#ifndef FT_EXPORT + +#ifdef __cplusplus +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif + +#endif /* !FT_EXPORT */ + + +#ifndef FT_EXPORT_DEF + +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) extern "C" x +#else +#define FT_EXPORT_DEF( x ) extern x +#endif + +#endif /* !FT_EXPORT_DEF */ + + +#ifndef FT_EXPORT_VAR + +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif + +#endif /* !FT_EXPORT_VAR */ + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"' for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + + +FT_END_HEADER + + +#endif /* __FTCONFIG_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/config/ftheader.h b/lib/windows64/include/freetype/config/ftheader.h new file mode 100644 index 0000000..55f833d --- /dev/null +++ b/lib/windows64/include/freetype/config/ftheader.h @@ -0,0 +1,834 @@ +/***************************************************************************/ +/* */ +/* ftheader.h */ +/* */ +/* Build macros of the FreeType 2 library. */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __FT_HEADER_H__ +#define __FT_HEADER_H__ + + + /*@***********************************************************************/ + /* */ + /* <Macro> */ + /* FT_BEGIN_HEADER */ + /* */ + /* <Description> */ + /* This macro is used in association with @FT_END_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_BEGIN_HEADER extern "C" { +#else +#define FT_BEGIN_HEADER /* nothing */ +#endif + + + /*@***********************************************************************/ + /* */ + /* <Macro> */ + /* FT_END_HEADER */ + /* */ + /* <Description> */ + /* This macro is used in association with @FT_BEGIN_HEADER in header */ + /* files to ensure that the declarations within are properly */ + /* encapsulated in an `extern "C" { .. }' block when included from a */ + /* C++ compiler. */ + /* */ +#ifdef __cplusplus +#define FT_END_HEADER } +#else +#define FT_END_HEADER /* nothing */ +#endif + + + /*************************************************************************/ + /* */ + /* Aliases for the FreeType 2 public and configuration files. */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* header_file_macros */ + /* */ + /* <Title> */ + /* Header File Macros */ + /* */ + /* <Abstract> */ + /* Macro definitions used to #include specific header files. */ + /* */ + /* <Description> */ + /* The following macros are defined to the name of specific */ + /* FreeType~2 header files. They can be used directly in #include */ + /* statements as in: */ + /* */ + /* { */ + /* #include FT_FREETYPE_H */ + /* #include FT_MULTIPLE_MASTERS_H */ + /* #include FT_GLYPH_H */ + /* } */ + /* */ + /* There are several reasons why we are now using macros to name */ + /* public header files. The first one is that such macros are not */ + /* limited to the infamous 8.3~naming rule required by DOS (and */ + /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ + /* */ + /* The second reason is that it allows for more flexibility in the */ + /* way FreeType~2 is installed on a given system. */ + /* */ + /*************************************************************************/ + + + /* configuration files */ + + /************************************************************************* + * + * @macro: + * FT_CONFIG_CONFIG_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 configuration data. + * + */ +#ifndef FT_CONFIG_CONFIG_H +#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_STANDARD_LIBRARY_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 interface to the standard C library functions. + * + */ +#ifndef FT_CONFIG_STANDARD_LIBRARY_H +#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_OPTIONS_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 project-specific configuration options. + * + */ +#ifndef FT_CONFIG_OPTIONS_H +#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> +#endif + + + /************************************************************************* + * + * @macro: + * FT_CONFIG_MODULES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 modules that are statically linked to new library + * instances in @FT_Init_FreeType. + * + */ +#ifndef FT_CONFIG_MODULES_H +#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> +#endif + + /* */ + + /* public headers */ + + /************************************************************************* + * + * @macro: + * FT_FREETYPE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * base FreeType~2 API. + * + */ +#define FT_FREETYPE_H <freetype/freetype.h> + + + /************************************************************************* + * + * @macro: + * FT_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 error codes (and messages). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_ERRORS_H <freetype/fterrors.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). + * + */ +#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> + + + /************************************************************************* + * + * @macro: + * FT_SYSTEM_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management + * and stream i/o). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_SYSTEM_H <freetype/ftsystem.h> + + + /************************************************************************* + * + * @macro: + * FT_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing type + * definitions related to glyph images (i.e., bitmaps, outlines, + * scan-converter parameters). + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_IMAGE_H <freetype/ftimage.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * basic data types defined by FreeType~2. + * + * It is included by @FT_FREETYPE_H. + * + */ +#define FT_TYPES_H <freetype/fttypes.h> + + + /************************************************************************* + * + * @macro: + * FT_LIST_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list management API of FreeType~2. + * + * (Most applications will never need to include this file.) + * + */ +#define FT_LIST_H <freetype/ftlist.h> + + + /************************************************************************* + * + * @macro: + * FT_OUTLINE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * scalable outline management API of FreeType~2. + * + */ +#define FT_OUTLINE_H <freetype/ftoutln.h> + + + /************************************************************************* + * + * @macro: + * FT_SIZES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API which manages multiple @FT_Size objects per face. + * + */ +#define FT_SIZES_H <freetype/ftsizes.h> + + + /************************************************************************* + * + * @macro: + * FT_MODULE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * module management API of FreeType~2. + * + */ +#define FT_MODULE_H <freetype/ftmodapi.h> + + + /************************************************************************* + * + * @macro: + * FT_RENDER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * renderer module management API of FreeType~2. + * + */ +#define FT_RENDER_H <freetype/ftrender.h> + + + /************************************************************************* + * + * @macro: + * FT_AUTOHINTER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the auto-hinting module. + * + */ +#define FT_AUTOHINTER_H <freetype/ftautoh.h> + + + /************************************************************************* + * + * @macro: + * FT_CFF_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the CFF driver module. + * + */ +#define FT_CFF_DRIVER_H <freetype/ftcffdrv.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the TrueType driver module. + * + */ +#define FT_TRUETYPE_DRIVER_H <freetype/ftttdrv.h> + + + /************************************************************************* + * + * @macro: + * FT_TYPE1_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the Type~1 format. + * + */ +#define FT_TYPE1_TABLES_H <freetype/t1tables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_IDS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * enumeration values which identify name strings, languages, encodings, + * etc. This file really contains a _large_ set of constant macro + * definitions, taken from the TrueType and OpenType specifications. + * + */ +#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the TrueType (as well as OpenType) format. + * + */ +#define FT_TRUETYPE_TABLES_H <freetype/tttables.h> + + + /************************************************************************* + * + * @macro: + * FT_TRUETYPE_TAGS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of TrueType four-byte `tags' which identify blocks in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_TRUETYPE_TAGS_H <freetype/tttags.h> + + + /************************************************************************* + * + * @macro: + * FT_BDF_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which accesses BDF-specific strings from a + * face. + * + */ +#define FT_BDF_H <freetype/ftbdf.h> + + + /************************************************************************* + * + * @macro: + * FT_CID_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which access CID font information from a + * face. + * + */ +#define FT_CID_H <freetype/ftcid.h> + + + /************************************************************************* + * + * @macro: + * FT_GZIP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports gzip-compressed files. + * + */ +#define FT_GZIP_H <freetype/ftgzip.h> + + + /************************************************************************* + * + * @macro: + * FT_LZW_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports LZW-compressed files. + * + */ +#define FT_LZW_H <freetype/ftlzw.h> + + + /************************************************************************* + * + * @macro: + * FT_BZIP2_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports bzip2-compressed files. + * + */ +#define FT_BZIP2_H <freetype/ftbzip2.h> + + + /************************************************************************* + * + * @macro: + * FT_WINFONTS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports Windows FNT files. + * + */ +#define FT_WINFONTS_H <freetype/ftwinfnt.h> + + + /************************************************************************* + * + * @macro: + * FT_GLYPH_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional glyph management component. + * + */ +#define FT_GLYPH_H <freetype/ftglyph.h> + + + /************************************************************************* + * + * @macro: + * FT_BITMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional bitmap conversion component. + * + */ +#define FT_BITMAP_H <freetype/ftbitmap.h> + + + /************************************************************************* + * + * @macro: + * FT_BBOX_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional exact bounding box computation routines. + * + */ +#define FT_BBOX_H <freetype/ftbbox.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. + * + */ +#define FT_CACHE_H <freetype/ftcache.h> + + + /************************************************************************* + * + * @macro: + * FT_CACHE_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `glyph image' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for @FT_Glyph elements. You can also + * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to + * store small glyph bitmaps, as it will use less memory. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * glyph image-related cache declarations. + * + */ +#define FT_CACHE_IMAGE_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_SMALL_BITMAPS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `small bitmaps' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for small glyph bitmaps in a relatively + * memory-efficient way. You can also use the API defined in + * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, + * including scalable outlines. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * small bitmaps-related cache declarations. + * + */ +#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_CACHE_CHARMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `charmap' API of the FreeType~2 cache sub-system. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * charmap-based cache declarations. + * + */ +#define FT_CACHE_CHARMAP_H FT_CACHE_H + + + /************************************************************************* + * + * @macro: + * FT_MAC_H + * + * @description: + * A macro used in #include statements to name the file containing the + * Macintosh-specific FreeType~2 API. The latter is used to access + * fonts embedded in resource forks. + * + * This header file must be explicitly included by client applications + * compiled on the Mac (note that the base API still works though). + * + */ +#define FT_MAC_H <freetype/ftmac.h> + + + /************************************************************************* + * + * @macro: + * FT_MULTIPLE_MASTERS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional multiple-masters management API of FreeType~2. + * + */ +#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> + + + /************************************************************************* + * + * @macro: + * FT_SFNT_NAMES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which accesses embedded `name' strings in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ +#define FT_SFNT_NAMES_H <freetype/ftsnames.h> + + + /************************************************************************* + * + * @macro: + * FT_OPENTYPE_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, + * GPOS, GSUB, JSTF). + * + */ +#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h> + + + /************************************************************************* + * + * @macro: + * FT_GX_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, + * mort, morx, bsln, just, kern, opbd, trak, prop). + * + */ +#define FT_GX_VALIDATE_H <freetype/ftgxval.h> + + + /************************************************************************* + * + * @macro: + * FT_PFR_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which accesses PFR-specific data. + * + */ +#define FT_PFR_H <freetype/ftpfr.h> + + + /************************************************************************* + * + * @macro: + * FT_STROKER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions to stroke outline paths. + */ +#define FT_STROKER_H <freetype/ftstroke.h> + + + /************************************************************************* + * + * @macro: + * FT_SYNTHESIS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs artificial obliquing and emboldening. + */ +#define FT_SYNTHESIS_H <freetype/ftsynth.h> + + + /************************************************************************* + * + * @macro: + * FT_FONT_FORMATS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions specific to font formats. + */ +#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h> + + /* deprecated */ +#define FT_XFREE86_H FT_FONT_FORMATS_H + + + /************************************************************************* + * + * @macro: + * FT_TRIGONOMETRY_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs trigonometric computations (e.g., + * cosines and arc tangents). + */ +#define FT_TRIGONOMETRY_H <freetype/fttrigon.h> + + + /************************************************************************* + * + * @macro: + * FT_LCD_FILTER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_LCD_FILTER_H <freetype/ftlcdfil.h> + + + /************************************************************************* + * + * @macro: + * FT_UNPATENTED_HINTING_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h> + + + /************************************************************************* + * + * @macro: + * FT_INCREMENTAL_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ +#define FT_INCREMENTAL_H <freetype/ftincrem.h> + + + /************************************************************************* + * + * @macro: + * FT_GASP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns entries from the TrueType GASP table. + */ +#define FT_GASP_H <freetype/ftgasp.h> + + + /************************************************************************* + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ +#define FT_ADVANCES_H <freetype/ftadvanc.h> + + + /* */ + +#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> + + + /* The internals of the cache sub-system are no longer exposed. We */ + /* default to FT_CACHE_H at the moment just in case, but we know of */ + /* no rogue client that uses them. */ + /* */ +#define FT_CACHE_MANAGER_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h> +#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h> + + +#define FT_INCREMENTAL_H <freetype/ftincrem.h> + +#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> + + + /* + * Include internal headers definitions from <internal/...> + * only when building the library. + */ +#ifdef FT2_BUILD_LIBRARY +#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> +#include FT_INTERNAL_INTERNAL_H +#endif /* FT2_BUILD_LIBRARY */ + + +#endif /* __FT2_BUILD_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/config/ftmodule.h b/lib/windows64/include/freetype/config/ftmodule.h new file mode 100644 index 0000000..76d271a --- /dev/null +++ b/lib/windows64/include/freetype/config/ftmodule.h @@ -0,0 +1,32 @@ +/* + * This file registers the FreeType modules compiled into the library. + * + * If you use GNU make, this file IS NOT USED! Instead, it is created in + * the objects directory (normally `<topdir>/objs/') based on information + * from `<topdir>/modules.cfg'. + * + * Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile + * FreeType without GNU make. + * + */ + +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) + +/* EOF */ diff --git a/lib/windows64/include/freetype/config/ftoption.h b/lib/windows64/include/freetype/config/ftoption.h new file mode 100644 index 0000000..1536c72 --- /dev/null +++ b/lib/windows64/include/freetype/config/ftoption.h @@ -0,0 +1,886 @@ +/***************************************************************************/ +/* */ +/* ftoption.h */ +/* */ +/* User-selectable configuration macros (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOPTION_H__ +#define __FTOPTION_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* USER-SELECTABLE CONFIGURATION MACROS */ + /* */ + /* This file contains the default configuration macro definitions for */ + /* a standard build of the FreeType library. There are three ways to */ + /* use this file to build project-specific versions of the library: */ + /* */ + /* - You can modify this file by hand, but this is not recommended in */ + /* cases where you would like to build several versions of the */ + /* library from a single source directory. */ + /* */ + /* - You can put a copy of this file in your build directory, more */ + /* precisely in `$BUILD/config/ftoption.h', where `$BUILD' is the */ + /* name of a directory that is included _before_ the FreeType include */ + /* path during compilation. */ + /* */ + /* The default FreeType Makefiles and Jamfiles use the build */ + /* directory `builds/<system>' by default, but you can easily change */ + /* that for your own projects. */ + /* */ + /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ + /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ + /* locate this file during the build. For example, */ + /* */ + /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ + /* #include <config/ftheader.h> */ + /* */ + /* will use `$BUILD/myftoptions.h' instead of this file for macro */ + /* definitions. */ + /* */ + /* Note also that you can similarly pre-define the macro */ + /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ + /* that are statically linked to the library at compile time. By */ + /* default, this file is <config/ftmodule.h>. */ + /* */ + /* We highly recommend using the third method whenever possible. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Uncomment the line below if you want to activate sub-pixel rendering */ + /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* */ + /* Note that this feature is covered by several Microsoft patents */ + /* and should not be activated in any default build of the library. */ + /* */ + /* This macro has no impact on the FreeType API, only on its */ + /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ + /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ + /* the original size in case this macro isn't defined; however, each */ + /* triplet of subpixels has R=G=B. */ + /* */ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + + /*************************************************************************/ + /* */ + /* Many compilers provide a non-ANSI 64-bit data type that can be used */ + /* by FreeType to speed up some computations. However, this will create */ + /* some problems when compiling the library in strict ANSI mode. */ + /* */ + /* For this reason, the use of 64-bit integers is normally disabled when */ + /* the __STDC__ macro is defined. You can however disable this by */ + /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ + /* */ + /* For most compilers, this will only create compilation warnings when */ + /* building the library. */ + /* */ + /* ObNote: The compiler-specific 64-bit integers are detected in the */ + /* file `ftconfig.h' either statically or through the */ + /* `configure' script on supported platforms. */ + /* */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /*************************************************************************/ + /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /*************************************************************************/ + /* */ + /* LZW-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `compress' program. This is mostly used to parse many of the PCF */ + /* files that come with various X11 distributions. The implementation */ + /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ + /* (see src/lzw/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_LZW + + + /*************************************************************************/ + /* */ + /* Gzip-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `gzip' program. This is mostly used to parse many of the PCF files */ + /* that come with XFree86. The implementation uses `zlib' to */ + /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. See also */ + /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ + /* */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /*************************************************************************/ + /* */ + /* ZLib library selection */ + /* */ + /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ + /* It allows FreeType's `ftgzip' component to link to the system's */ + /* installation of the ZLib library. This is useful on systems like */ + /* Unix or VMS where it generally is already available. */ + /* */ + /* If you let it undefined, the component will use its own copy */ + /* of the zlib sources instead. These have been modified to be */ + /* included directly within the component and *not* export external */ + /* function names. This allows you to link any program with FreeType */ + /* _and_ ZLib without linking conflicts. */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + + + /*************************************************************************/ + /* */ + /* Bzip2-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `bzip2' program. This is mostly used to parse many of the PCF */ + /* files that come with XFree86. The implementation uses `libbz2' to */ + /* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */ + /* Contrary to gzip, bzip2 currently is not included and need to use */ + /* the system available bzip2 implementation. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_BZIP2 */ + + + /*************************************************************************/ + /* */ + /* Define to disable the use of file stream functions and types, FILE, */ + /* fopen() etc. Enables the use of smaller system libraries on embedded */ + /* systems that have multiple system libraries, some with or without */ + /* file stream support, in the cases where file stream support is not */ + /* necessary such as memory loading of font files. */ + /* */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /*************************************************************************/ + /* */ + /* PNG bitmap support. */ + /* */ + /* FreeType now handles loading color bitmap glyphs in the PNG format. */ + /* This requires help from the external libpng library. Uncompressed */ + /* color bitmaps do not need any external libraries and will be */ + /* supported regardless of this configuration. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_PNG */ + + + /*************************************************************************/ + /* */ + /* HarfBuzz support. */ + /* */ + /* FreeType uses the HarfBuzz library to improve auto-hinting of */ + /* OpenType fonts. If available, many glyphs not directly addressable */ + /* by a font's character map will be hinted also. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */ + + + /*************************************************************************/ + /* */ + /* DLL export compilation */ + /* */ + /* When compiling FreeType as a DLL, some systems/compilers need a */ + /* special keyword in front OR after the return type of function */ + /* declarations. */ + /* */ + /* Two macros are used within the FreeType source code to define */ + /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ + /* */ + /* FT_EXPORT( return_type ) */ + /* */ + /* is used in a function declaration, as in */ + /* */ + /* FT_EXPORT( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* */ + /* */ + /* FT_EXPORT_DEF( return_type ) */ + /* */ + /* is used in a function definition, as in */ + /* */ + /* FT_EXPORT_DEF( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ) */ + /* { */ + /* ... some code ... */ + /* return FT_Err_Ok; */ + /* } */ + /* */ + /* You can provide your own implementation of FT_EXPORT and */ + /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ + /* will be later automatically defined as `extern return_type' to */ + /* allow normal compilation. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_EXPORT(x) extern x */ +/* #define FT_EXPORT_DEF(x) x */ + + + /*************************************************************************/ + /* */ + /* Glyph Postscript Names handling */ + /* */ + /* By default, FreeType 2 is compiled with the `psnames' module. This */ + /* module is in charge of converting a glyph name string into a */ + /* Unicode value, or return a Macintosh standard glyph name for the */ + /* use with the TrueType `post' table. */ + /* */ + /* Undefine this macro if you do not want `psnames' compiled in your */ + /* build of FreeType. This has the following effects: */ + /* */ + /* - The TrueType driver will provide its own set of glyph names, */ + /* if you build it to support postscript names in the TrueType */ + /* `post' table. */ + /* */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ + /* charmap out of the glyphs found in the fonts. */ + /* */ + /* You would normally undefine this configuration macro when building */ + /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ + /* */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Postscript Names to Unicode Values support */ + /* */ + /* By default, FreeType 2 is built with the `PSNames' module compiled */ + /* in. Among other things, the module is used to convert a glyph name */ + /* into a Unicode value. This is especially useful in order to */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* through a big table named the `Adobe Glyph List' (AGL). */ + /* */ + /* Undefine this macro if you do not want the Adobe Glyph List */ + /* compiled in your `PSNames' module. The Type 1 driver will not be */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ + /* fonts. */ + /* */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /*************************************************************************/ + /* */ + /* Support for Mac fonts */ + /* */ + /* Define this macro if you want support for outline fonts in Mac */ + /* format (mac dfont, mac resource, macbinary containing a mac */ + /* resource) on non-Mac platforms. */ + /* */ + /* Note that the `FOND' resource isn't checked. */ + /* */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /*************************************************************************/ + /* */ + /* Guessing methods to access embedded resource forks */ + /* */ + /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ + /* GNU/Linux). */ + /* */ + /* Resource forks which include fonts data are stored sometimes in */ + /* locations which users or developers don't expected. In some cases, */ + /* resource forks start with some offset from the head of a file. In */ + /* other cases, the actual resource fork is stored in file different */ + /* from what the user specifies. If this option is activated, */ + /* FreeType tries to guess whether such offsets or different file */ + /* names must be used. */ + /* */ + /* Note that normal, direct access of resource forks is controlled via */ + /* the FT_CONFIG_OPTION_MAC_FONTS option. */ + /* */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /*************************************************************************/ + /* */ + /* Allow the use of FT_Incremental_Interface to load typefaces that */ + /* contain no glyph data, but supply it via a callback function. */ + /* This is required by clients supporting document formats which */ + /* supply font data incrementally as the document is parsed, such */ + /* as the Ghostscript interpreter for the PostScript language. */ + /* */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /*************************************************************************/ + /* */ + /* The size in bytes of the render pool used by the scan-line converter */ + /* to do all of its work. */ + /* */ +#define FT_RENDER_POOL_SIZE 16384L + + + /*************************************************************************/ + /* */ + /* FT_MAX_MODULES */ + /* */ + /* The maximum number of modules that can be registered in a single */ + /* FreeType library object. 32 is the default. */ + /* */ +#define FT_MAX_MODULES 32 + + + /*************************************************************************/ + /* */ + /* Debug level */ + /* */ + /* FreeType can be compiled in debug or trace mode. In debug mode, */ + /* errors are reported through the `ftdebug' component. In trace */ + /* mode, additional messages are sent to the standard output during */ + /* execution. */ + /* */ + /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ + /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ + /* */ + /* Don't define any of these macros to compile in `release' mode! */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_LEVEL_ERROR */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Autofitter debugging */ + /* */ + /* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */ + /* control the autofitter behaviour for debugging purposes with global */ + /* boolean variables (consequently, you should *never* enable this */ + /* while compiling in `release' mode): */ + /* */ + /* _af_debug_disable_horz_hints */ + /* _af_debug_disable_vert_hints */ + /* _af_debug_disable_blue_hints */ + /* */ + /* Additionally, the following functions provide dumps of various */ + /* internal autofit structures to stdout (using `printf'): */ + /* */ + /* af_glyph_hints_dump_points */ + /* af_glyph_hints_dump_segments */ + /* af_glyph_hints_dump_edges */ + /* af_glyph_hints_get_num_segments */ + /* af_glyph_hints_get_segment_offset */ + /* */ + /* As an argument, they use another global variable: */ + /* */ + /* _af_debug_hints */ + /* */ + /* Please have a look at the `ftgrid' demo program to see how those */ + /* variables and macros should be used. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_DEBUG_AUTOFIT */ + + + /*************************************************************************/ + /* */ + /* Memory Debugging */ + /* */ + /* FreeType now comes with an integrated memory debugger that is */ + /* capable of detecting simple errors like memory leaks or double */ + /* deletes. To compile it within your build of the library, you */ + /* should define FT_DEBUG_MEMORY here. */ + /* */ + /* Note that the memory debugger is only activated at runtime when */ + /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_DEBUG_MEMORY */ + + + /*************************************************************************/ + /* */ + /* Module errors */ + /* */ + /* If this macro is set (which is _not_ the default), the higher byte */ + /* of an error code gives the module in which the error has occurred, */ + /* while the lower byte is the real error code. */ + /* */ + /* Setting this macro makes sense for debugging purposes only, since */ + /* it would break source compatibility of certain programs that use */ + /* FreeType 2. */ + /* */ + /* More details can be found in the files ftmoderr.h and fterrors.h. */ + /* */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /*************************************************************************/ + /* */ + /* Position Independent Code */ + /* */ + /* If this macro is set (which is _not_ the default), FreeType2 will */ + /* avoid creating constants that require address fixups. Instead the */ + /* constants will be moved into a struct and additional intialization */ + /* code will be used. */ + /* */ + /* Setting this macro is needed for systems that prohibit address */ + /* fixups, such as BREW. */ + /* */ +/* #define FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ + /* embedded bitmaps in all formats using the SFNT module (namely */ + /* TrueType & OpenType). */ + /* */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ + /* load and enumerate the glyph Postscript names in a TrueType or */ + /* OpenType file. */ + /* */ + /* Note that when you do not compile the `PSNames' module by undefining */ + /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ + /* contain additional code used to read the PS Names table from a font. */ + /* */ + /* (By default, the module uses `PSNames' to extract glyph names.) */ + /* */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ + /* access the internal name table in a SFNT-based format like TrueType */ + /* or OpenType. The name table contains various strings used to */ + /* describe the font, like family name, copyright, version, etc. It */ + /* does not contain any glyph name though. */ + /* */ + /* Accessing SFNT names is done through the functions declared in */ + /* `ftsnames.h'. */ + /* */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /*************************************************************************/ + /* */ + /* TrueType CMap support */ + /* */ + /* Here you can fine-tune which TrueType CMap table format shall be */ + /* supported. */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ + /* a bytecode interpreter in the TrueType driver. */ + /* */ + /* By undefining this, you will only compile the code necessary to load */ + /* TrueType glyphs without hinting. */ + /* */ + /* Do not #undef this macro here, since the build system might */ + /* define it for certain configurations only. */ + /* */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ + /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ + /* replaces the native TrueType hinting mechanism when anything but */ + /* FT_RENDER_MODE_MONO is requested. */ + /* */ + /* Enabling this causes the TrueType driver to ignore instructions under */ + /* certain conditions. This is done in accordance with the guide here, */ + /* with some minor differences: */ + /* */ + /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ + /* By undefining this, you only compile the code necessary to hint */ + /* TrueType glyphs with native TT hinting. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + + + /*************************************************************************/ + /* */ + /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ + /* of the TrueType bytecode interpreter is used that doesn't implement */ + /* any of the patented opcodes and algorithms. The patents related to */ + /* TrueType hinting have expired worldwide since May 2010; this option */ + /* is now deprecated. */ + /* */ + /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ + /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ + /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ + /* */ + /* This macro is only useful for a small number of font files (mostly */ + /* for Asian scripts) that require bytecode interpretation to properly */ + /* load glyphs. For all other fonts, this produces unpleasant results, */ + /* thus the unpatented interpreter is never used to load glyphs from */ + /* TrueType fonts unless one of the following two options is used. */ + /* */ + /* - The unpatented interpreter is explicitly activated by the user */ + /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ + /* when opening the FT_Face. */ + /* */ + /* - FreeType detects that the FT_Face corresponds to one of the */ + /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ + /* contains a hard-coded list of font names and other matching */ + /* parameters (see function `tt_face_init' in file */ + /* `src/truetype/ttobjs.c'). */ + /* */ + /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* */ + /* { */ + /* FT_Parameter parameter; */ + /* FT_Open_Args open_args; */ + /* */ + /* */ + /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ + /* */ + /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ + /* open_args.pathname = my_font_pathname; */ + /* open_args.num_params = 1; */ + /* open_args.params = ¶meter; */ + /* */ + /* error = FT_Open_Face( library, &open_args, index, &face ); */ + /* ... */ + /* } */ + /* */ +/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ + /* TrueType glyph loader to use Apple's definition of how to handle */ + /* component offsets in composite glyphs. */ + /* */ + /* Apple and MS disagree on the default behavior of component offsets */ + /* in composites. Apple says that they should be scaled by the scaling */ + /* factors in the transformation matrix (roughly, it's more complex) */ + /* while MS says they should not. OpenType defines two bits in the */ + /* composite flags array which can be used to disambiguate, but old */ + /* fonts will not have them. */ + /* */ + /* http://www.microsoft.com/typography/otspec/glyf.htm */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */ + /* */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ + /* support for Apple's distortable font technology (fvar, gvar, cvar, */ + /* and avar tables). This has many similarities to Type 1 Multiple */ + /* Masters support. */ + /* */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ + /* an embedded `BDF ' table within SFNT-based bitmap formats. */ + /* */ +#define TT_CONFIG_OPTION_BDF + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */ + /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ + /* required. */ + /* */ +#define T1_MAX_DICT_DEPTH 5 + + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 16 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ + /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ + /* files into an existing face. Note that if set, the T1 driver will be */ + /* unable to produce kerning distances. */ + /* */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of the Multiple Masters font support in the Type 1 */ + /* driver. */ + /* */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */ + /* possible to set up the default values of the four control points that */ + /* define the stem darkening behaviour of the (new) CFF engine. For */ + /* more details please read the documentation of the */ + /* `darkening-parameters' property of the cff driver module (file */ + /* `ftcffdrv.h'), which allows the control at run-time. */ + /* */ + /* Do *not* undefine these macros! */ + /* */ +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0 + + + /*************************************************************************/ + /* */ + /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */ + /* engine gets compiled into FreeType. If defined, it is possible to */ + /* switch between the two engines using the `hinting-engine' property of */ + /* the cff driver module. */ + /* */ +/* #define CFF_CONFIG_OPTION_OLD_ENGINE */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ + /* support. */ + /* */ +#define AF_CONFIG_OPTION_CJK + + /*************************************************************************/ + /* */ + /* Compile autofit module with Indic script support. */ + /* */ +#define AF_CONFIG_OPTION_INDIC + + /*************************************************************************/ + /* */ + /* Compile autofit module with warp hinting. The idea of the warping */ + /* code is to slightly scale and shift a glyph within a single dimension */ + /* so that as much of its segments are aligned (more or less) on the */ + /* grid. To find out the optimal scaling and shifting value, various */ + /* parameter combinations are tried and scored. */ + /* */ + /* This experimental option is active only if the rendering mode is */ + /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */ + /* `warping' property of the auto-hinter (see file `ftautoh.h' for more */ + /* information; by default it is switched off). */ + /* */ +#define AF_CONFIG_OPTION_USE_WARPER + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType + * version 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * This macro is defined if either unpatented or native TrueType + * hinting is requested by the definitions above. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING +#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING +#define TT_USE_BYTECODE_INTERPRETER +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set' in file `cffdrivr.c'. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + +FT_END_HEADER + + +#endif /* __FTOPTION_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/config/ftstdlib.h b/lib/windows64/include/freetype/config/ftstdlib.h new file mode 100644 index 0000000..8ef43c0 --- /dev/null +++ b/lib/windows64/include/freetype/config/ftstdlib.h @@ -0,0 +1,173 @@ +/***************************************************************************/ +/* */ +/* ftstdlib.h */ +/* */ +/* ANSI-specific library and header configuration file (specification */ +/* only). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to group all #includes to the ANSI C library that */ + /* FreeType normally requires. It also defines macros to rename the */ + /* standard functions within the FreeType source code. */ + /* */ + /* Load a file which defines __FTSTDLIB_H__ before this one to override */ + /* it. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSTDLIB_H__ +#define __FTSTDLIB_H__ + + +#include <stddef.h> + +#define ft_ptrdiff_t ptrdiff_t + + + /**********************************************************************/ + /* */ + /* integer limits */ + /* */ + /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ + /* of `int' and `long' in bytes at compile-time. So far, this works */ + /* for all platforms the library has been tested on. */ + /* */ + /* Note that on the extremely rare platforms that do not provide */ + /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ + /* old Crays where `int' is 36 bits), we do not make any guarantee */ + /* about the correct behaviour of FT2 with all fonts. */ + /* */ + /* In these case, `ftconfig.h' will refuse to compile anyway with a */ + /* message like `couldn't find 32-bit type' or something similar. */ + /* */ + /**********************************************************************/ + + +#include <limits.h> + +#define FT_CHAR_BIT CHAR_BIT +#define FT_USHORT_MAX USHRT_MAX +#define FT_INT_MAX INT_MAX +#define FT_INT_MIN INT_MIN +#define FT_UINT_MAX UINT_MAX +#define FT_ULONG_MAX ULONG_MAX + + + /**********************************************************************/ + /* */ + /* character and string processing */ + /* */ + /**********************************************************************/ + + +#include <string.h> + +#define ft_memchr memchr +#define ft_memcmp memcmp +#define ft_memcpy memcpy +#define ft_memmove memmove +#define ft_memset memset +#define ft_strcat strcat +#define ft_strcmp strcmp +#define ft_strcpy strcpy +#define ft_strlen strlen +#define ft_strncmp strncmp +#define ft_strncpy strncpy +#define ft_strrchr strrchr +#define ft_strstr strstr + + + /**********************************************************************/ + /* */ + /* file handling */ + /* */ + /**********************************************************************/ + + +#include <stdio.h> + +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell +#define ft_sprintf sprintf + + + /**********************************************************************/ + /* */ + /* sorting */ + /* */ + /**********************************************************************/ + + +#include <stdlib.h> + +#define ft_qsort qsort + + + /**********************************************************************/ + /* */ + /* memory allocation */ + /* */ + /**********************************************************************/ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /**********************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /**********************************************************************/ + + +#define ft_atol atol + + + /**********************************************************************/ + /* */ + /* execution control */ + /* */ + /**********************************************************************/ + + +#include <setjmp.h> + +#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ + /* jmp_buf is defined as a macro */ + /* on certain platforms */ + +#define ft_longjmp longjmp +#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ + + + /* the following is only used for debugging purposes, i.e., if */ + /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ + +#include <stdarg.h> + + +#endif /* __FTSTDLIB_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/freetype.h b/lib/windows64/include/freetype/freetype.h new file mode 100644 index 0000000..bca93e5 --- /dev/null +++ b/lib/windows64/include/freetype/freetype.h @@ -0,0 +1,4069 @@ +/***************************************************************************/ +/* */ +/* freetype.h */ +/* */ +/* FreeType high-level API and common types (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FREETYPE_H__ +#define __FREETYPE_H__ + + +#ifndef FT_FREETYPE_H +#error "`ft2build.h' hasn't been included yet!" +#error "Please always use macros to include FreeType header files." +#error "Example:" +#error " #include <ft2build.h>" +#error " #include FT_FREETYPE_H" +#endif + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H +#include FT_ERRORS_H + + +FT_BEGIN_HEADER + + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* header_inclusion */ + /* */ + /* <Title> */ + /* FreeType's header inclusion scheme */ + /* */ + /* <Abstract> */ + /* How client applications should include FreeType header files. */ + /* */ + /* <Description> */ + /* To be as flexible as possible (and for historical reasons), */ + /* FreeType uses a very special inclusion scheme to load header */ + /* files, for example */ + /* */ + /* { */ + /* #include <ft2build.h> */ + /* */ + /* #include FT_FREETYPE_H */ + /* #include FT_OUTLINE_H */ + /* } */ + /* */ + /* A compiler and its preprocessor only needs an include path to find */ + /* the file `ft2build.h'; the exact locations and names of the other */ + /* FreeType header files are hidden by preprocessor macro names, */ + /* loaded by `ft2build.h'. The API documentation always gives the */ + /* header macro name needed for a particular function. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* user_allocation */ + /* */ + /* <Title> */ + /* User allocation */ + /* */ + /* <Abstract> */ + /* How client applications should allocate FreeType data structures. */ + /* */ + /* <Description> */ + /* FreeType assumes that structures allocated by the user and passed */ + /* as arguments are zeroed out except for the actual data. In other */ + /* words, it is recommended to use `calloc' (or variants of it) */ + /* instead of `malloc' for allocation. */ + /* */ + /*************************************************************************/ + + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S I C T Y P E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /* <Title> */ + /* Base Interface */ + /* */ + /* <Abstract> */ + /* The FreeType~2 base font interface. */ + /* */ + /* <Description> */ + /* This section describes the most important public high-level API */ + /* functions of FreeType~2. */ + /* */ + /* <Order> */ + /* FT_Library */ + /* FT_Face */ + /* FT_Size */ + /* FT_GlyphSlot */ + /* FT_CharMap */ + /* FT_Encoding */ + /* FT_ENC_TAG */ + /* */ + /* FT_FaceRec */ + /* */ + /* FT_FACE_FLAG_SCALABLE */ + /* FT_FACE_FLAG_FIXED_SIZES */ + /* FT_FACE_FLAG_FIXED_WIDTH */ + /* FT_FACE_FLAG_HORIZONTAL */ + /* FT_FACE_FLAG_VERTICAL */ + /* FT_FACE_FLAG_COLOR */ + /* FT_FACE_FLAG_SFNT */ + /* FT_FACE_FLAG_CID_KEYED */ + /* FT_FACE_FLAG_TRICKY */ + /* FT_FACE_FLAG_KERNING */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS */ + /* FT_FACE_FLAG_GLYPH_NAMES */ + /* FT_FACE_FLAG_EXTERNAL_STREAM */ + /* FT_FACE_FLAG_HINTER */ + /* FT_FACE_FLAG_TRICKY */ + /* */ + /* FT_HAS_HORIZONTAL */ + /* FT_HAS_VERTICAL */ + /* FT_HAS_KERNING */ + /* FT_HAS_FIXED_SIZES */ + /* FT_HAS_GLYPH_NAMES */ + /* FT_HAS_MULTIPLE_MASTERS */ + /* FT_HAS_COLOR */ + /* */ + /* FT_IS_SFNT */ + /* FT_IS_SCALABLE */ + /* FT_IS_FIXED_WIDTH */ + /* FT_IS_CID_KEYED */ + /* FT_IS_TRICKY */ + /* */ + /* FT_STYLE_FLAG_BOLD */ + /* FT_STYLE_FLAG_ITALIC */ + /* */ + /* FT_SizeRec */ + /* FT_Size_Metrics */ + /* */ + /* FT_GlyphSlotRec */ + /* FT_Glyph_Metrics */ + /* FT_SubGlyph */ + /* */ + /* FT_Bitmap_Size */ + /* */ + /* FT_Init_FreeType */ + /* FT_Done_FreeType */ + /* */ + /* FT_New_Face */ + /* FT_Done_Face */ + /* FT_Reference_Face */ + /* FT_New_Memory_Face */ + /* FT_Open_Face */ + /* FT_Open_Args */ + /* FT_Parameter */ + /* FT_Attach_File */ + /* FT_Attach_Stream */ + /* */ + /* FT_Set_Char_Size */ + /* FT_Set_Pixel_Sizes */ + /* FT_Request_Size */ + /* FT_Select_Size */ + /* FT_Size_Request_Type */ + /* FT_Size_RequestRec */ + /* FT_Size_Request */ + /* FT_Set_Transform */ + /* FT_Load_Glyph */ + /* FT_Get_Char_Index */ + /* FT_Get_First_Char */ + /* FT_Get_Next_Char */ + /* FT_Get_Name_Index */ + /* FT_Load_Char */ + /* */ + /* FT_OPEN_MEMORY */ + /* FT_OPEN_STREAM */ + /* FT_OPEN_PATHNAME */ + /* FT_OPEN_DRIVER */ + /* FT_OPEN_PARAMS */ + /* */ + /* FT_LOAD_DEFAULT */ + /* FT_LOAD_RENDER */ + /* FT_LOAD_MONOCHROME */ + /* FT_LOAD_LINEAR_DESIGN */ + /* FT_LOAD_NO_SCALE */ + /* FT_LOAD_NO_HINTING */ + /* FT_LOAD_NO_BITMAP */ + /* FT_LOAD_NO_AUTOHINT */ + /* FT_LOAD_COLOR */ + /* */ + /* FT_LOAD_VERTICAL_LAYOUT */ + /* FT_LOAD_IGNORE_TRANSFORM */ + /* FT_LOAD_FORCE_AUTOHINT */ + /* FT_LOAD_NO_RECURSE */ + /* FT_LOAD_PEDANTIC */ + /* */ + /* FT_LOAD_TARGET_NORMAL */ + /* FT_LOAD_TARGET_LIGHT */ + /* FT_LOAD_TARGET_MONO */ + /* FT_LOAD_TARGET_LCD */ + /* FT_LOAD_TARGET_LCD_V */ + /* */ + /* FT_LOAD_TARGET_MODE */ + /* */ + /* FT_Render_Glyph */ + /* FT_Render_Mode */ + /* FT_Get_Kerning */ + /* FT_Kerning_Mode */ + /* FT_Get_Track_Kerning */ + /* FT_Get_Glyph_Name */ + /* FT_Get_Postscript_Name */ + /* */ + /* FT_CharMapRec */ + /* FT_Select_Charmap */ + /* FT_Set_Charmap */ + /* FT_Get_Charmap_Index */ + /* */ + /* FT_Get_FSType_Flags */ + /* FT_Get_SubGlyph_Info */ + /* */ + /* FT_Face_Internal */ + /* FT_Size_Internal */ + /* FT_Slot_Internal */ + /* */ + /* FT_FACE_FLAG_XXX */ + /* FT_STYLE_FLAG_XXX */ + /* FT_OPEN_XXX */ + /* FT_LOAD_XXX */ + /* FT_LOAD_TARGET_XXX */ + /* FT_SUBGLYPH_FLAG_XXX */ + /* FT_FSTYPE_XXX */ + /* */ + /* FT_HAS_FAST_GLYPHS */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Glyph_Metrics */ + /* */ + /* <Description> */ + /* A structure used to model the metrics of a single glyph. The */ + /* values are expressed in 26.6 fractional pixel format; if the flag */ + /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ + /* are expressed in font units instead. */ + /* */ + /* <Fields> */ + /* width :: */ + /* The glyph's width. */ + /* */ + /* height :: */ + /* The glyph's height. */ + /* */ + /* horiBearingX :: */ + /* Left side bearing for horizontal layout. */ + /* */ + /* horiBearingY :: */ + /* Top side bearing for horizontal layout. */ + /* */ + /* horiAdvance :: */ + /* Advance width for horizontal layout. */ + /* */ + /* vertBearingX :: */ + /* Left side bearing for vertical layout. */ + /* */ + /* vertBearingY :: */ + /* Top side bearing for vertical layout. Larger positive values */ + /* mean further below the vertical glyph origin. */ + /* */ + /* vertAdvance :: */ + /* Advance height for vertical layout. Positive values mean the */ + /* glyph has a positive advance downward. */ + /* */ + /* <Note> */ + /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ + /* dimensions of the hinted glyph (in case hinting is applicable). */ + /* */ + /* Stroking a glyph with an outside border does not increase */ + /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ + /* values to account for the added width and height. */ + /* */ + typedef struct FT_Glyph_Metrics_ + { + FT_Pos width; + FT_Pos height; + + FT_Pos horiBearingX; + FT_Pos horiBearingY; + FT_Pos horiAdvance; + + FT_Pos vertBearingX; + FT_Pos vertBearingY; + FT_Pos vertAdvance; + + } FT_Glyph_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap_Size */ + /* */ + /* <Description> */ + /* This structure models the metrics of a bitmap strike (i.e., a set */ + /* of glyphs for a given point size and resolution) in a bitmap font. */ + /* It is used for the `available_sizes' field of @FT_Face. */ + /* */ + /* <Fields> */ + /* height :: The vertical distance, in pixels, between two */ + /* consecutive baselines. It is always positive. */ + /* */ + /* width :: The average width, in pixels, of all glyphs in the */ + /* strike. */ + /* */ + /* size :: The nominal size of the strike in 26.6 fractional */ + /* points. This field is not very useful. */ + /* */ + /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ + /* pixels. */ + /* */ + /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ + /* pixels. */ + /* */ + /* <Note> */ + /* Windows FNT: */ + /* The nominal size given in a FNT font is not reliable. Thus when */ + /* the driver finds it incorrect, it sets `size' to some calculated */ + /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ + /* height given in the font, respectively. */ + /* */ + /* TrueType embedded bitmaps: */ + /* `size', `width', and `height' values are not contained in the */ + /* bitmap strike itself. They are computed from the global font */ + /* parameters. */ + /* */ + typedef struct FT_Bitmap_Size_ + { + FT_Short height; + FT_Short width; + + FT_Pos size; + + FT_Pos x_ppem; + FT_Pos y_ppem; + + } FT_Bitmap_Size; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Library */ + /* */ + /* <Description> */ + /* A handle to a FreeType library instance. Each `library' is */ + /* completely independent from the others; it is the `root' of a set */ + /* of objects like fonts, faces, sizes, etc. */ + /* */ + /* It also embeds a memory manager (see @FT_Memory), as well as a */ + /* scan-line converter object (see @FT_Raster). */ + /* */ + /* In multi-threaded applications it is easiest to use one */ + /* `FT_Library' object per thread. In case this is too cumbersome, */ + /* a single `FT_Library' object across threads is possible also */ + /* (since FreeType version 2.5.6), as long as a mutex lock is used */ + /* around @FT_New_Face and @FT_Done_Face. */ + /* */ + /* <Note> */ + /* Library objects are normally created by @FT_Init_FreeType, and */ + /* destroyed with @FT_Done_FreeType. If you need reference-counting */ + /* (cf. @FT_Reference_Library), use @FT_New_Library and */ + /* @FT_Done_Library. */ + /* */ + typedef struct FT_LibraryRec_ *FT_Library; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Module */ + /* */ + /* <Description> */ + /* A handle to a given FreeType module object. Each module can be a */ + /* font driver, a renderer, or anything else that provides services */ + /* to the formers. */ + /* */ + typedef struct FT_ModuleRec_* FT_Module; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Driver */ + /* */ + /* <Description> */ + /* A handle to a given FreeType font driver object. Each font driver */ + /* is a special module capable of creating faces from font files. */ + /* */ + typedef struct FT_DriverRec_* FT_Driver; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Renderer */ + /* */ + /* <Description> */ + /* A handle to a given FreeType renderer. A renderer is a special */ + /* module in charge of converting a glyph image to a bitmap, when */ + /* necessary. Each renderer supports a given glyph image format, and */ + /* one or more target surface depths. */ + /* */ + typedef struct FT_RendererRec_* FT_Renderer; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* base_interface */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face */ + /* */ + /* <Description> */ + /* A handle to a given typographic face object. A face object models */ + /* a given typeface, in a given style. */ + /* */ + /* <Note> */ + /* Each face object also owns a single @FT_GlyphSlot object, as well */ + /* as one or more @FT_Size objects. */ + /* */ + /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ + /* a given filepathname or a custom input stream. */ + /* */ + /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ + /* */ + /* An `FT_Face' object can only be safely used from one thread at a */ + /* time. Similarly, creation and destruction of `FT_Face' with the */ + /* same @FT_Library object can only be done from one thread at a */ + /* time. On the other hand, functions like @FT_Load_Glyph and its */ + /* siblings are thread-safe and do not need the lock to be held as */ + /* long as the same `FT_Face' object is not used from multiple */ + /* threads at the same time. */ + /* */ + /* <Also> */ + /* See @FT_FaceRec for the publicly accessible fields of a given face */ + /* object. */ + /* */ + typedef struct FT_FaceRec_* FT_Face; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size */ + /* */ + /* <Description> */ + /* A handle to an object used to model a face scaled to a given */ + /* character size. */ + /* */ + /* <Note> */ + /* Each @FT_Face has an _active_ @FT_Size object that is used by */ + /* functions like @FT_Load_Glyph to determine the scaling */ + /* transformation that in turn is used to load and hint glyphs and */ + /* metrics. */ + /* */ + /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ + /* @FT_Request_Size or even @FT_Select_Size to change the content */ + /* (i.e., the scaling values) of the active @FT_Size. */ + /* */ + /* You can use @FT_New_Size to create additional size objects for a */ + /* given @FT_Face, but they won't be used by other functions until */ + /* you activate it through @FT_Activate_Size. Only one size can be */ + /* activated at any given time per face. */ + /* */ + /* <Also> */ + /* See @FT_SizeRec for the publicly accessible fields of a given size */ + /* object. */ + /* */ + typedef struct FT_SizeRec_* FT_Size; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_GlyphSlot */ + /* */ + /* <Description> */ + /* A handle to a given `glyph slot'. A slot is a container where it */ + /* is possible to load any of the glyphs contained in its parent */ + /* face. */ + /* */ + /* In other words, each time you call @FT_Load_Glyph or */ + /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ + /* i.e., the glyph's metrics, its image (bitmap or outline), and */ + /* other control information. */ + /* */ + /* <Also> */ + /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ + /* */ + typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_CharMap */ + /* */ + /* <Description> */ + /* A handle to a given character map. A charmap is used to translate */ + /* character codes in a given encoding into glyph indexes for its */ + /* parent's face. Some font formats may provide several charmaps per */ + /* font. */ + /* */ + /* Each face object owns zero or more charmaps, but only one of them */ + /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ + /* */ + /* The list of available charmaps in a face is available through the */ + /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ + /* */ + /* The currently active charmap is available as `face->charmap'. */ + /* You should call @FT_Set_Charmap to change it. */ + /* */ + /* <Note> */ + /* When a new face is created (either through @FT_New_Face or */ + /* @FT_Open_Face), the library looks for a Unicode charmap within */ + /* the list and automatically activates it. */ + /* */ + /* <Also> */ + /* See @FT_CharMapRec for the publicly accessible fields of a given */ + /* character map. */ + /* */ + typedef struct FT_CharMapRec_* FT_CharMap; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_ENC_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags into an unsigned long. It is */ + /* used to define `encoding' identifiers (see @FT_Encoding). */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_ENC_TAG( value, a, b, c, d ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) \ + value = ( ( (FT_UInt32)(a) << 24 ) | \ + ( (FT_UInt32)(b) << 16 ) | \ + ( (FT_UInt32)(c) << 8 ) | \ + (FT_UInt32)(d) ) + +#endif /* FT_ENC_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Encoding */ + /* */ + /* <Description> */ + /* An enumeration used to specify character sets supported by */ + /* charmaps. Used in the @FT_Select_Charmap API function. */ + /* */ + /* <Note> */ + /* Despite the name, this enumeration lists specific character */ + /* repertories (i.e., charsets), and not text encoding methods (e.g., */ + /* UTF-8, UTF-16, etc.). */ + /* */ + /* Other encodings might be defined in the future. */ + /* */ + /* <Values> */ + /* FT_ENCODING_NONE :: */ + /* The encoding value~0 is reserved. */ + /* */ + /* FT_ENCODING_UNICODE :: */ + /* Corresponds to the Unicode character set. This value covers */ + /* all versions of the Unicode repertoire, including ASCII and */ + /* Latin-1. Most fonts include a Unicode charmap, but not all */ + /* of them. */ + /* */ + /* For example, if you want to access Unicode value U+1F028 (and */ + /* the font contains it), use value 0x1F028 as the input value for */ + /* @FT_Get_Char_Index. */ + /* */ + /* FT_ENCODING_MS_SYMBOL :: */ + /* Corresponds to the Microsoft Symbol encoding, used to encode */ + /* mathematical symbols and wingdings. For more information, see */ + /* `http://www.microsoft.com/typography/otspec/recom.htm', */ + /* `http://www.kostis.net/charsets/symbol.htm', and */ + /* `http://www.kostis.net/charsets/wingding.htm'. */ + /* */ + /* This encoding uses character codes from the PUA (Private Unicode */ + /* Area) in the range U+F020-U+F0FF. */ + /* */ + /* FT_ENCODING_SJIS :: */ + /* Corresponds to Japanese SJIS encoding. More info at */ + /* at `http://en.wikipedia.org/wiki/Shift_JIS'. */ + /* See note on multi-byte encodings below. */ + /* */ + /* FT_ENCODING_GB2312 :: */ + /* Corresponds to an encoding system for Simplified Chinese as used */ + /* used in mainland China. */ + /* */ + /* FT_ENCODING_BIG5 :: */ + /* Corresponds to an encoding system for Traditional Chinese as */ + /* used in Taiwan and Hong Kong. */ + /* */ + /* FT_ENCODING_WANSUNG :: */ + /* Corresponds to the Korean encoding system known as Wansung. */ + /* For more information see */ + /* `https://msdn.microsoft.com/en-US/goglobal/cc305154'. */ + /* */ + /* FT_ENCODING_JOHAB :: */ + /* The Korean standard character set (KS~C 5601-1992), which */ + /* corresponds to MS Windows code page 1361. This character set */ + /* includes all possible Hangeul character combinations. */ + /* */ + /* FT_ENCODING_ADOBE_LATIN_1 :: */ + /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ + /* PostScript font. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_ADOBE_STANDARD :: */ + /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_EXPERT :: */ + /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ + /* */ + /* FT_ENCODING_ADOBE_CUSTOM :: */ + /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ + /* OpenType/CFF fonts. It is limited to 256 character codes. */ + /* */ + /* FT_ENCODING_APPLE_ROMAN :: */ + /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ + /* and OpenType fonts contain a charmap for this encoding, since */ + /* older versions of Mac OS are able to use it. */ + /* */ + /* FT_ENCODING_OLD_LATIN_2 :: */ + /* This value is deprecated and was never used nor reported by */ + /* FreeType. Don't use or test for it. */ + /* */ + /* FT_ENCODING_MS_SJIS :: */ + /* Same as FT_ENCODING_SJIS. Deprecated. */ + /* */ + /* FT_ENCODING_MS_GB2312 :: */ + /* Same as FT_ENCODING_GB2312. Deprecated. */ + /* */ + /* FT_ENCODING_MS_BIG5 :: */ + /* Same as FT_ENCODING_BIG5. Deprecated. */ + /* */ + /* FT_ENCODING_MS_WANSUNG :: */ + /* Same as FT_ENCODING_WANSUNG. Deprecated. */ + /* */ + /* FT_ENCODING_MS_JOHAB :: */ + /* Same as FT_ENCODING_JOHAB. Deprecated. */ + /* */ + /* <Note> */ + /* By default, FreeType automatically synthesizes a Unicode charmap */ + /* for PostScript fonts, using their glyph names dictionaries. */ + /* However, it also reports the encodings defined explicitly in the */ + /* font file, for the cases when they are needed, with the Adobe */ + /* values as well. */ + /* */ + /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ + /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ + /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ + /* which encoding is really present. If, for example, the */ + /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ + /* the font is encoded in KOI8-R. */ + /* */ + /* FT_ENCODING_NONE is always set (with a single exception) by the */ + /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ + /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ + /* which encoding is really present. For example, */ + /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ + /* Russian). */ + /* */ + /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ + /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ + /* FT_ENCODING_APPLE_ROMAN). */ + /* */ + /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ + /* @FT_Get_CMap_Language_ID to query the Mac language ID that may */ + /* be needed to be able to distinguish Apple encoding variants. See */ + /* */ + /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt */ + /* */ + /* to get an idea how to do that. Basically, if the language ID */ + /* is~0, don't use it, otherwise subtract 1 from the language ID. */ + /* Then examine `encoding_id'. If, for example, `encoding_id' is */ + /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ + /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ + /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ + /* variant the Arabic encoding. */ + /* */ + typedef enum FT_Encoding_ + { + FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), + + FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), + FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), + + FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), + FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), + FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), + FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), + FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), + + /* for backwards compatibility */ + FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, + FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, + FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, + FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, + FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, + + FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), + FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), + + FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), + + FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) + + } FT_Encoding; + + + /* these constants are deprecated; use the corresponding `FT_Encoding' */ + /* values instead */ +#define ft_encoding_none FT_ENCODING_NONE +#define ft_encoding_unicode FT_ENCODING_UNICODE +#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL +#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 +#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 +#define ft_encoding_sjis FT_ENCODING_SJIS +#define ft_encoding_gb2312 FT_ENCODING_GB2312 +#define ft_encoding_big5 FT_ENCODING_BIG5 +#define ft_encoding_wansung FT_ENCODING_WANSUNG +#define ft_encoding_johab FT_ENCODING_JOHAB + +#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD +#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT +#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM +#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_CharMapRec */ + /* */ + /* <Description> */ + /* The base charmap structure. */ + /* */ + /* <Fields> */ + /* face :: A handle to the parent face object. */ + /* */ + /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ + /* this with @FT_Select_Charmap. */ + /* */ + /* platform_id :: An ID number describing the platform for the */ + /* following encoding ID. This comes directly from */ + /* the TrueType specification and should be emulated */ + /* for other formats. */ + /* */ + /* encoding_id :: A platform specific encoding number. This also */ + /* comes from the TrueType specification and should be */ + /* emulated similarly. */ + /* */ + typedef struct FT_CharMapRec_ + { + FT_Face face; + FT_Encoding encoding; + FT_UShort platform_id; + FT_UShort encoding_id; + + } FT_CharMapRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* B A S E O B J E C T C L A S S E S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Face_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ + /* model private data of a given @FT_Face object. */ + /* */ + /* This structure might change between releases of FreeType~2 and is */ + /* not generally available to client applications. */ + /* */ + typedef struct FT_Face_InternalRec_* FT_Face_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_FaceRec */ + /* */ + /* <Description> */ + /* FreeType root face class structure. A face object models a */ + /* typeface in a font file. */ + /* */ + /* <Fields> */ + /* num_faces :: The number of faces in the font file. Some */ + /* font formats can have multiple faces in */ + /* a font file. */ + /* */ + /* face_index :: The index of the face in the font file. It */ + /* is set to~0 if there is only one face in */ + /* the font file. */ + /* */ + /* face_flags :: A set of bit flags that give important */ + /* information about the face; see */ + /* @FT_FACE_FLAG_XXX for the details. */ + /* */ + /* style_flags :: A set of bit flags indicating the style of */ + /* the face; see @FT_STYLE_FLAG_XXX for the */ + /* details. */ + /* */ + /* num_glyphs :: The number of glyphs in the face. If the */ + /* face is scalable and has sbits (see */ + /* `num_fixed_sizes'), it is set to the number */ + /* of outline glyphs. */ + /* */ + /* For CID-keyed fonts, this value gives the */ + /* highest CID used in the font. */ + /* */ + /* family_name :: The face's family name. This is an ASCII */ + /* string, usually in English, that describes */ + /* the typeface's family (like `Times New */ + /* Roman', `Bodoni', `Garamond', etc). This */ + /* is a least common denominator used to list */ + /* fonts. Some formats (TrueType & OpenType) */ + /* provide localized and Unicode versions of */ + /* this string. Applications should use the */ + /* format specific interface to access them. */ + /* Can be NULL (e.g., in fonts embedded in a */ + /* PDF file). */ + /* */ + /* In case the font doesn't provide a specific */ + /* family name entry, FreeType tries to */ + /* synthesize one, deriving it from other name */ + /* entries. */ + /* */ + /* style_name :: The face's style name. This is an ASCII */ + /* string, usually in English, that describes */ + /* the typeface's style (like `Italic', */ + /* `Bold', `Condensed', etc). Not all font */ + /* formats provide a style name, so this field */ + /* is optional, and can be set to NULL. As */ + /* for `family_name', some formats provide */ + /* localized and Unicode versions of this */ + /* string. Applications should use the format */ + /* specific interface to access them. */ + /* */ + /* num_fixed_sizes :: The number of bitmap strikes in the face. */ + /* Even if the face is scalable, there might */ + /* still be bitmap strikes, which are called */ + /* `sbits' in that case. */ + /* */ + /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ + /* strikes in the face. It is set to NULL if */ + /* there is no bitmap strike. */ + /* */ + /* num_charmaps :: The number of charmaps in the face. */ + /* */ + /* charmaps :: An array of the charmaps of the face. */ + /* */ + /* generic :: A field reserved for client uses. See the */ + /* @FT_Generic type description. */ + /* */ + /* bbox :: The font bounding box. Coordinates are */ + /* expressed in font units (see */ + /* `units_per_EM'). The box is large enough */ + /* to contain any glyph from the font. Thus, */ + /* `bbox.yMax' can be seen as the `maximum */ + /* ascender', and `bbox.yMin' as the `minimum */ + /* descender'. Only relevant for scalable */ + /* formats. */ + /* */ + /* Note that the bounding box might be off by */ + /* (at least) one pixel for hinted fonts. See */ + /* @FT_Size_Metrics for further discussion. */ + /* */ + /* units_per_EM :: The number of font units per EM square for */ + /* this face. This is typically 2048 for */ + /* TrueType fonts, and 1000 for Type~1 fonts. */ + /* Only relevant for scalable formats. */ + /* */ + /* ascender :: The typographic ascender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMax'. Only relevant for scalable */ + /* formats. */ + /* */ + /* descender :: The typographic descender of the face, */ + /* expressed in font units. For font formats */ + /* not having this information, it is set to */ + /* `bbox.yMin'. Note that this field is */ + /* usually negative. Only relevant for */ + /* scalable formats. */ + /* */ + /* height :: This value is the vertical distance */ + /* between two consecutive baselines, */ + /* expressed in font units. It is always */ + /* positive. Only relevant for scalable */ + /* formats. */ + /* */ + /* If you want the global glyph height, use */ + /* `ascender - descender'. */ + /* */ + /* max_advance_width :: The maximum advance width, in font units, */ + /* for all glyphs in this face. This can be */ + /* used to make word wrapping computations */ + /* faster. Only relevant for scalable */ + /* formats. */ + /* */ + /* max_advance_height :: The maximum advance height, in font units, */ + /* for all glyphs in this face. This is only */ + /* relevant for vertical layouts, and is set */ + /* to `height' for fonts that do not provide */ + /* vertical metrics. Only relevant for */ + /* scalable formats. */ + /* */ + /* underline_position :: The position, in font units, of the */ + /* underline line for this face. It is the */ + /* center of the underlining stem. Only */ + /* relevant for scalable formats. */ + /* */ + /* underline_thickness :: The thickness, in font units, of the */ + /* underline for this face. Only relevant for */ + /* scalable formats. */ + /* */ + /* glyph :: The face's associated glyph slot(s). */ + /* */ + /* size :: The current active size for this face. */ + /* */ + /* charmap :: The current active charmap for this face. */ + /* */ + /* <Note> */ + /* Fields may be changed after a call to @FT_Attach_File or */ + /* @FT_Attach_Stream. */ + /* */ + typedef struct FT_FaceRec_ + { + FT_Long num_faces; + FT_Long face_index; + + FT_Long face_flags; + FT_Long style_flags; + + FT_Long num_glyphs; + + FT_String* family_name; + FT_String* style_name; + + FT_Int num_fixed_sizes; + FT_Bitmap_Size* available_sizes; + + FT_Int num_charmaps; + FT_CharMap* charmaps; + + FT_Generic generic; + + /*# The following member variables (down to `underline_thickness') */ + /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ + /*# for bitmap fonts. */ + FT_BBox bbox; + + FT_UShort units_per_EM; + FT_Short ascender; + FT_Short descender; + FT_Short height; + + FT_Short max_advance_width; + FT_Short max_advance_height; + + FT_Short underline_position; + FT_Short underline_thickness; + + FT_GlyphSlot glyph; + FT_Size size; + FT_CharMap charmap; + + /*@private begin */ + + FT_Driver driver; + FT_Memory memory; + FT_Stream stream; + + FT_ListRec sizes_list; + + FT_Generic autohint; /* face-specific auto-hinter data */ + void* extensions; /* unused */ + + FT_Face_Internal internal; + + /*@private end */ + + } FT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FACE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `face_flags' field of the */ + /* @FT_FaceRec structure. They inform client applications of */ + /* properties of the corresponding face. */ + /* */ + /* <Values> */ + /* FT_FACE_FLAG_SCALABLE :: */ + /* Indicates that the face contains outline glyphs. This doesn't */ + /* prevent bitmap strikes, i.e., a face can have both this and */ + /* and @FT_FACE_FLAG_FIXED_SIZES set. */ + /* */ + /* FT_FACE_FLAG_FIXED_SIZES :: */ + /* Indicates that the face contains bitmap strikes. See also the */ + /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ + /* */ + /* FT_FACE_FLAG_FIXED_WIDTH :: */ + /* Indicates that the face contains fixed-width characters (like */ + /* Courier, Lucido, MonoType, etc.). */ + /* */ + /* FT_FACE_FLAG_SFNT :: */ + /* Indicates that the face uses the `sfnt' storage scheme. For */ + /* now, this means TrueType and OpenType. */ + /* */ + /* FT_FACE_FLAG_HORIZONTAL :: */ + /* Indicates that the face contains horizontal glyph metrics. This */ + /* should be set for all common formats. */ + /* */ + /* FT_FACE_FLAG_VERTICAL :: */ + /* Indicates that the face contains vertical glyph metrics. This */ + /* is only available in some formats, not all of them. */ + /* */ + /* FT_FACE_FLAG_KERNING :: */ + /* Indicates that the face contains kerning information. If set, */ + /* the kerning distance can be retrieved through the function */ + /* @FT_Get_Kerning. Otherwise the function always return the */ + /* vector (0,0). Note that FreeType doesn't handle kerning data */ + /* from the `GPOS' table (as present in some OpenType fonts). */ + /* */ + /* FT_FACE_FLAG_FAST_GLYPHS :: */ + /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ + /* */ + /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ + /* Indicates that the font contains multiple masters and is capable */ + /* of interpolating between them. See the multiple-masters */ + /* specific API for details. */ + /* */ + /* FT_FACE_FLAG_GLYPH_NAMES :: */ + /* Indicates that the font contains glyph names that can be */ + /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ + /* fonts contain broken glyph name tables. Use the function */ + /* @FT_Has_PS_Glyph_Names when needed. */ + /* */ + /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ + /* Used internally by FreeType to indicate that a face's stream was */ + /* provided by the client application and should not be destroyed */ + /* when @FT_Done_Face is called. Don't read or test this flag. */ + /* */ + /* FT_FACE_FLAG_HINTER :: */ + /* Set if the font driver has a hinting machine of its own. For */ + /* example, with TrueType fonts, it makes sense to use data from */ + /* the SFNT `gasp' table only if the native TrueType hinting engine */ + /* (with the bytecode interpreter) is available and active. */ + /* */ + /* FT_FACE_FLAG_CID_KEYED :: */ + /* Set if the font is CID-keyed. In that case, the font is not */ + /* accessed by glyph indices but by CID values. For subsetted */ + /* CID-keyed fonts this has the consequence that not all index */ + /* values are a valid argument to FT_Load_Glyph. Only the CID */ + /* values for which corresponding glyphs in the subsetted font */ + /* exist make FT_Load_Glyph return successfully; in all other cases */ + /* you get an `FT_Err_Invalid_Argument' error. */ + /* */ + /* Note that CID-keyed fonts that are in an SFNT wrapper don't */ + /* have this flag set since the glyphs are accessed in the normal */ + /* way (using contiguous indices); the `CID-ness' isn't visible to */ + /* the application. */ + /* */ + /* FT_FACE_FLAG_TRICKY :: */ + /* Set if the font is `tricky', this is, it always needs the */ + /* font format's native hinting engine to get a reasonable result. */ + /* A typical example is the Chinese font `mingli.ttf' that uses */ + /* TrueType bytecode instructions to move and scale all of its */ + /* subglyphs. */ + /* */ + /* It is not possible to auto-hint such fonts using */ + /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ + /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ + /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ + /* probably never want this except for demonstration purposes. */ + /* */ + /* Currently, there are about a dozen TrueType fonts in the list of */ + /* tricky fonts; they are hard-coded in file `ttobjs.c'. */ + /* */ + /* FT_FACE_FLAG_COLOR :: */ + /* Set if the font has color glyph tables. To access color glyphs */ + /* use @FT_LOAD_COLOR. */ + /* */ +#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) +#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) +#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) +#define FT_FACE_FLAG_SFNT ( 1L << 3 ) +#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) +#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) +#define FT_FACE_FLAG_KERNING ( 1L << 6 ) +#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) +#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) +#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) +#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) +#define FT_FACE_FLAG_HINTER ( 1L << 11 ) +#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) +#define FT_FACE_FLAG_COLOR ( 1L << 14 ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_HORIZONTAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * horizontal metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ +#define FT_HAS_HORIZONTAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_VERTICAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains real + * vertical metrics (and not only synthesized ones). + * + */ +#define FT_HAS_VERTICAL( face ) \ + ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_KERNING( face ) + * + * @description: + * A macro that returns true whenever a face object contains kerning + * data that can be accessed with @FT_Get_Kerning. + * + */ +#define FT_HAS_KERNING( face ) \ + ( face->face_flags & FT_FACE_FLAG_KERNING ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SCALABLE( face ) + * + * @description: + * A macro that returns true whenever a face object contains a scalable + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, + * and PFR font formats. + * + */ +#define FT_IS_SCALABLE( face ) \ + ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + + + /************************************************************************* + * + * @macro: + * FT_IS_SFNT( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font + * whose format is based on the SFNT storage scheme. This usually + * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded + * bitmap fonts. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ +#define FT_IS_SFNT( face ) \ + ( face->face_flags & FT_FACE_FLAG_SFNT ) + + + /************************************************************************* + * + * @macro: + * FT_IS_FIXED_WIDTH( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or `monospace', `fixed-pitch', etc.) + * glyphs. + * + */ +#define FT_IS_FIXED_WIDTH( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FIXED_SIZES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes' field of the + * @FT_FaceRec structure. + * + */ +#define FT_HAS_FIXED_SIZES( face ) \ + ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_FAST_GLYPHS( face ) + * + * @description: + * Deprecated. + * + */ +#define FT_HAS_FAST_GLYPHS( face ) 0 + + + /************************************************************************* + * + * @macro: + * FT_HAS_GLYPH_NAMES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ +#define FT_HAS_GLYPH_NAMES( face ) \ + ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ +#define FT_HAS_MULTIPLE_MASTERS( face ) \ + ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + + + /************************************************************************* + * + * @macro: + * FT_IS_CID_KEYED( face ) + * + * @description: + * A macro that returns true whenever a face object contains a CID-keyed + * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more + * details. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ +#define FT_IS_CID_KEYED( face ) \ + ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + + + /************************************************************************* + * + * @macro: + * FT_IS_TRICKY( face ) + * + * @description: + * A macro that returns true whenever a face represents a `tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( face->face_flags & FT_FACE_FLAG_TRICKY ) + + + /************************************************************************* + * + * @macro: + * FT_HAS_COLOR( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * tables for color glyphs. + * + */ +#define FT_HAS_COLOR( face ) \ + ( face->face_flags & FT_FACE_FLAG_COLOR ) + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_STYLE_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit-flags used to indicate the style of a given face. */ + /* These are used in the `style_flags' field of @FT_FaceRec. */ + /* */ + /* <Values> */ + /* FT_STYLE_FLAG_ITALIC :: */ + /* Indicates that a given face style is italic or oblique. */ + /* */ + /* FT_STYLE_FLAG_BOLD :: */ + /* Indicates that a given face is bold. */ + /* */ + /* <Note> */ + /* The style information as provided by FreeType is very basic. More */ + /* details are beyond the scope and should be done on a higher level */ + /* (for example, by analyzing various fields of the `OS/2' table in */ + /* SFNT based fonts). */ + /* */ +#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) +#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Size_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ + /* model private data of a given @FT_Size object. */ + /* */ + typedef struct FT_Size_InternalRec_* FT_Size_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Metrics */ + /* */ + /* <Description> */ + /* The size metrics structure gives the metrics of a size object. */ + /* */ + /* <Fields> */ + /* x_ppem :: The width of the scaled EM square in pixels, hence */ + /* the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal width'. */ + /* */ + /* y_ppem :: The height of the scaled EM square in pixels, */ + /* hence the term `ppem' (pixels per EM). It is also */ + /* referred to as `nominal height'. */ + /* */ + /* x_scale :: A 16.16 fractional scaling value used to convert */ + /* horizontal metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* y_scale :: A 16.16 fractional scaling value used to convert */ + /* vertical metrics from font units to 26.6 */ + /* fractional pixels. Only relevant for scalable */ + /* font formats. */ + /* */ + /* ascender :: The ascender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* descender :: The descender in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* height :: The height in 26.6 fractional pixels. See */ + /* @FT_FaceRec for the details. */ + /* */ + /* max_advance :: The maximum advance width in 26.6 fractional */ + /* pixels. See @FT_FaceRec for the details. */ + /* */ + /* <Note> */ + /* The scaling values, if relevant, are determined first during a */ + /* size changing operation. The remaining fields are then set by the */ + /* driver. For scalable formats, they are usually set to scaled */ + /* values of the corresponding fields in @FT_FaceRec. */ + /* */ + /* Note that due to glyph hinting, these values might not be exact */ + /* for certain fonts. Thus they must be treated as unreliable */ + /* with an error margin of at least one pixel! */ + /* */ + /* Indeed, the only way to get the exact metrics is to render _all_ */ + /* glyphs. As this would be a definite performance hit, it is up to */ + /* client applications to perform such computations. */ + /* */ + /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ + /* */ + typedef struct FT_Size_Metrics_ + { + FT_UShort x_ppem; /* horizontal pixels per EM */ + FT_UShort y_ppem; /* vertical pixels per EM */ + + FT_Fixed x_scale; /* scaling values used to convert font */ + FT_Fixed y_scale; /* units to 26.6 fractional pixels */ + + FT_Pos ascender; /* ascender in 26.6 frac. pixels */ + FT_Pos descender; /* descender in 26.6 frac. pixels */ + FT_Pos height; /* text height in 26.6 frac. pixels */ + FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ + + } FT_Size_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SizeRec */ + /* */ + /* <Description> */ + /* FreeType root size class structure. A size object models a face */ + /* object at a given size. */ + /* */ + /* <Fields> */ + /* face :: Handle to the parent face object. */ + /* */ + /* generic :: A typeless pointer, unused by the FreeType library or */ + /* any of its drivers. It can be used by client */ + /* applications to link their own data to each size */ + /* object. */ + /* */ + /* metrics :: Metrics for this size object. This field is read-only. */ + /* */ + typedef struct FT_SizeRec_ + { + FT_Face face; /* parent face object */ + FT_Generic generic; /* generic pointer for client uses */ + FT_Size_Metrics metrics; /* size metrics */ + FT_Size_Internal internal; + + } FT_SizeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SubGlyph */ + /* */ + /* <Description> */ + /* The subglyph structure is an internal object used to describe */ + /* subglyphs (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The subglyph implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + /* You can however retrieve subglyph information with */ + /* @FT_Get_SubGlyph_Info. */ + /* */ + typedef struct FT_SubGlyphRec_* FT_SubGlyph; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Slot_Internal */ + /* */ + /* <Description> */ + /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ + /* model private data of a given @FT_GlyphSlot object. */ + /* */ + typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphSlotRec */ + /* */ + /* <Description> */ + /* FreeType root glyph slot class structure. A glyph slot is a */ + /* container where individual glyphs can be loaded, be they in */ + /* outline or bitmap format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library instance */ + /* this slot belongs to. */ + /* */ + /* face :: A handle to the parent face object. */ + /* */ + /* next :: In some cases (like some font tools), several */ + /* glyph slots per face object can be a good */ + /* thing. As this is rare, the glyph slots are */ + /* listed through a direct, single-linked list */ + /* using its `next' field. */ + /* */ + /* generic :: A typeless pointer unused by the FreeType */ + /* library or any of its drivers. It can be */ + /* used by client applications to link their own */ + /* data to each glyph slot object. */ + /* */ + /* metrics :: The metrics of the last loaded glyph in the */ + /* slot. The returned values depend on the last */ + /* load flags (see the @FT_Load_Glyph API */ + /* function) and can be expressed either in 26.6 */ + /* fractional pixels or font units. */ + /* */ + /* Note that even when the glyph image is */ + /* transformed, the metrics are not. */ + /* */ + /* linearHoriAdvance :: The advance width of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* linearVertAdvance :: The advance height of the unhinted glyph. */ + /* Its value is expressed in 16.16 fractional */ + /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ + /* when loading the glyph. This field can be */ + /* important to perform correct WYSIWYG layout. */ + /* Only relevant for outline glyphs. */ + /* */ + /* advance :: This shorthand is, depending on */ + /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ + /* (hinted) advance width for the glyph, in 26.6 */ + /* fractional pixel format. As specified with */ + /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ + /* `horiAdvance' or the `vertAdvance' value of */ + /* `metrics' field. */ + /* */ + /* format :: This field indicates the format of the image */ + /* contained in the glyph slot. Typically */ + /* @FT_GLYPH_FORMAT_BITMAP, */ + /* @FT_GLYPH_FORMAT_OUTLINE, or */ + /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ + /* possible. */ + /* */ + /* bitmap :: This field is used as a bitmap descriptor */ + /* when the slot format is */ + /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ + /* address and content of the bitmap buffer can */ + /* change between calls of @FT_Load_Glyph and a */ + /* few other functions. */ + /* */ + /* bitmap_left :: The bitmap's left bearing expressed in */ + /* integer pixels. Only valid if the format is */ + /* @FT_GLYPH_FORMAT_BITMAP, this is, if the */ + /* glyph slot contains a bitmap. */ + /* */ + /* bitmap_top :: The bitmap's top bearing expressed in integer */ + /* pixels. Remember that this is the distance */ + /* from the baseline to the top-most glyph */ + /* scanline, upwards y~coordinates being */ + /* *positive*. */ + /* */ + /* outline :: The outline descriptor for the current glyph */ + /* image if its format is */ + /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ + /* loaded, `outline' can be transformed, */ + /* distorted, embolded, etc. However, it must */ + /* not be freed. */ + /* */ + /* num_subglyphs :: The number of subglyphs in a composite glyph. */ + /* This field is only valid for the composite */ + /* glyph format that should normally only be */ + /* loaded with the @FT_LOAD_NO_RECURSE flag. */ + /* */ + /* subglyphs :: An array of subglyph descriptors for */ + /* composite glyphs. There are `num_subglyphs' */ + /* elements in there. Currently internal to */ + /* FreeType. */ + /* */ + /* control_data :: Certain font drivers can also return the */ + /* control data for a given glyph image (e.g. */ + /* TrueType bytecode, Type~1 charstrings, etc.). */ + /* This field is a pointer to such data. */ + /* */ + /* control_len :: This is the length in bytes of the control */ + /* data. */ + /* */ + /* other :: Really wicked formats can use this pointer to */ + /* present their own glyph image to client */ + /* applications. Note that the application */ + /* needs to know about the image format. */ + /* */ + /* lsb_delta :: The difference between hinted and unhinted */ + /* left side bearing while auto-hinting is */ + /* active. Zero otherwise. */ + /* */ + /* rsb_delta :: The difference between hinted and unhinted */ + /* right side bearing while auto-hinting is */ + /* active. Zero otherwise. */ + /* */ + /* <Note> */ + /* If @FT_Load_Glyph is called with default flags (see */ + /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ + /* its native format (e.g., an outline glyph for TrueType and Type~1 */ + /* formats). */ + /* */ + /* This image can later be converted into a bitmap by calling */ + /* @FT_Render_Glyph. This function finds the current renderer for */ + /* the native image's format, then invokes it. */ + /* */ + /* The renderer is in charge of transforming the native image through */ + /* the slot's face transformation fields, then converting it into a */ + /* bitmap that is returned in `slot->bitmap'. */ + /* */ + /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ + /* to specify the position of the bitmap relative to the current pen */ + /* position (e.g., coordinates (0,0) on the baseline). Of course, */ + /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ + /* */ + /* <Note> */ + /* Here is a small pseudo code fragment that shows how to use */ + /* `lsb_delta' and `rsb_delta': */ + /* */ + /* { */ + /* FT_Pos origin_x = 0; */ + /* FT_Pos prev_rsb_delta = 0; */ + /* */ + /* */ + /* for all glyphs do */ + /* <compute kern between current and previous glyph and add it to */ + /* `origin_x'> */ + /* */ + /* <load glyph with `FT_Load_Glyph'> */ + /* */ + /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ + /* origin_x -= 64; */ + /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ + /* origin_x += 64; */ + /* */ + /* prev_rsb_delta = face->glyph->rsb_delta; */ + /* */ + /* <save glyph image, or render glyph, or ...> */ + /* */ + /* origin_x += face->glyph->advance.x; */ + /* endfor */ + /* } */ + /* */ + typedef struct FT_GlyphSlotRec_ + { + FT_Library library; + FT_Face face; + FT_GlyphSlot next; + FT_UInt reserved; /* retained for binary compatibility */ + FT_Generic generic; + + FT_Glyph_Metrics metrics; + FT_Fixed linearHoriAdvance; + FT_Fixed linearVertAdvance; + FT_Vector advance; + + FT_Glyph_Format format; + + FT_Bitmap bitmap; + FT_Int bitmap_left; + FT_Int bitmap_top; + + FT_Outline outline; + + FT_UInt num_subglyphs; + FT_SubGlyph subglyphs; + + void* control_data; + long control_len; + + FT_Pos lsb_delta; + FT_Pos rsb_delta; + + void* other; + + FT_Slot_Internal internal; + + } FT_GlyphSlotRec; + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* F U N C T I O N S */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Init_FreeType */ + /* */ + /* <Description> */ + /* Initialize a new FreeType library object. The set of modules */ + /* that are registered by this function is determined at build time. */ + /* */ + /* <Output> */ + /* alibrary :: A handle to a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case you want to provide your own memory allocating routines, */ + /* use @FT_New_Library instead, followed by a call to */ + /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ + /* */ + /* See the documentation of @FT_Library and @FT_Face for */ + /* multi-threading issues. */ + /* */ + /* If you need reference-counting (cf. @FT_Reference_Library), use */ + /* @FT_New_Library and @FT_Done_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Init_FreeType( FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_FreeType */ + /* */ + /* <Description> */ + /* Destroy a given FreeType library object and all of its children, */ + /* including resources, drivers, faces, sizes, etc. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_FreeType( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OPEN_XXX */ + /* */ + /* <Description> */ + /* A list of bit-field constants used within the `flags' field of the */ + /* @FT_Open_Args structure. */ + /* */ + /* <Values> */ + /* FT_OPEN_MEMORY :: This is a memory-based stream. */ + /* */ + /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ + /* */ + /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ + /* name. */ + /* */ + /* FT_OPEN_DRIVER :: Use the `driver' field. */ + /* */ + /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ + /* */ + /* <Note> */ + /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ + /* flags are mutually exclusive. */ + /* */ +#define FT_OPEN_MEMORY 0x1 +#define FT_OPEN_STREAM 0x2 +#define FT_OPEN_PATHNAME 0x4 +#define FT_OPEN_DRIVER 0x8 +#define FT_OPEN_PARAMS 0x10 + + + /* these constants are deprecated; use the corresponding `FT_OPEN_XXX' */ + /* values instead */ +#define ft_open_memory FT_OPEN_MEMORY +#define ft_open_stream FT_OPEN_STREAM +#define ft_open_pathname FT_OPEN_PATHNAME +#define ft_open_driver FT_OPEN_DRIVER +#define ft_open_params FT_OPEN_PARAMS + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Parameter */ + /* */ + /* <Description> */ + /* A simple structure used to pass more or less generic parameters to */ + /* @FT_Open_Face. */ + /* */ + /* <Fields> */ + /* tag :: A four-byte identification tag. */ + /* */ + /* data :: A pointer to the parameter data. */ + /* */ + /* <Note> */ + /* The ID and function of parameters are driver-specific. See the */ + /* various FT_PARAM_TAG_XXX flags for more information. */ + /* */ + typedef struct FT_Parameter_ + { + FT_ULong tag; + FT_Pointer data; + + } FT_Parameter; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Open_Args */ + /* */ + /* <Description> */ + /* A structure used to indicate how to open a new font file or */ + /* stream. A pointer to such a structure can be used as a parameter */ + /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ + /* */ + /* <Fields> */ + /* flags :: A set of bit flags indicating how to use the */ + /* structure. */ + /* */ + /* memory_base :: The first byte of the file in memory. */ + /* */ + /* memory_size :: The size in bytes of the file in memory. */ + /* */ + /* pathname :: A pointer to an 8-bit file pathname. */ + /* */ + /* stream :: A handle to a source stream object. */ + /* */ + /* driver :: This field is exclusively used by @FT_Open_Face; */ + /* it simply specifies the font driver to use to open */ + /* the face. If set to~0, FreeType tries to load the */ + /* face with each one of the drivers in its list. */ + /* */ + /* num_params :: The number of extra parameters. */ + /* */ + /* params :: Extra parameters passed to the font driver when */ + /* opening a new face. */ + /* */ + /* <Note> */ + /* The stream type is determined by the contents of `flags' that */ + /* are tested in the following order by @FT_Open_Face: */ + /* */ + /* If the @FT_OPEN_MEMORY bit is set, assume that this is a */ + /* memory file of `memory_size' bytes, located at `memory_address'. */ + /* The data are are not copied, and the client is responsible for */ + /* releasing and destroying them _after_ the corresponding call to */ + /* @FT_Done_Face. */ + /* */ + /* Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a */ + /* custom input stream `stream' is used. */ + /* */ + /* Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this */ + /* is a normal file and use `pathname' to open it. */ + /* */ + /* If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to */ + /* open the file with the driver whose handler is in `driver'. */ + /* */ + /* If the @FT_OPEN_PARAMS bit is set, the parameters given by */ + /* `num_params' and `params' is used. They are ignored otherwise. */ + /* */ + /* Ideally, both the `pathname' and `params' fields should be tagged */ + /* as `const'; this is missing for API backwards compatibility. In */ + /* other words, applications should treat them as read-only. */ + /* */ + typedef struct FT_Open_Args_ + { + FT_UInt flags; + const FT_Byte* memory_base; + FT_Long memory_size; + FT_String* pathname; + FT_Stream stream; + FT_Module driver; + FT_Int num_params; + FT_Parameter* params; + + } FT_Open_Args; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font by its pathname. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* pathname :: A path to the font file. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See @FT_Open_Face for more details. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Use @FT_Done_Face to destroy the created @FT_Face object (along */ + /* with its slot and sizes). */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory_Face */ + /* */ + /* <Description> */ + /* This function calls @FT_Open_Face to open a font that has been */ + /* loaded into memory. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* file_base :: A pointer to the beginning of the font data. */ + /* */ + /* file_size :: The size of the memory chunk used by the font data. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See @FT_Open_Face for more details. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You must not deallocate the memory before calling @FT_Done_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Open_Face */ + /* */ + /* <Description> */ + /* Create a face object from a given resource described by */ + /* @FT_Open_Args. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* args :: A pointer to an `FT_Open_Args' structure that must */ + /* be filled by the caller. */ + /* */ + /* face_index :: The index of the face within the font. The first */ + /* face has index~0. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. If `face_index' is */ + /* greater than or equal to zero, it must be non-NULL. */ + /* See note below. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Unlike FreeType 1.x, this function automatically creates a glyph */ + /* slot for the face object that can be accessed directly through */ + /* `face->glyph'. */ + /* */ + /* FT_Open_Face can be used to quickly check whether the font */ + /* format of a given font resource is supported by FreeType. If the */ + /* `face_index' field is negative, the function's return value is~0 */ + /* if the font format is recognized, or non-zero otherwise; */ + /* the function returns a more or less empty face handle in `*aface' */ + /* (if `aface' isn't NULL). The only useful field in this special */ + /* case is `face->num_faces' that gives the number of faces within */ + /* the font file. After examination, the returned @FT_Face structure */ + /* should be deallocated with a call to @FT_Done_Face. */ + /* */ + /* Each new face object created with this function also owns a */ + /* default @FT_Size object, accessible as `face->size'. */ + /* */ + /* One @FT_Library instance can have multiple face objects, this is, */ + /* @FT_Open_Face and its siblings can be called multiple times using */ + /* the same `library' argument. */ + /* */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Open_Face( FT_Library library, + const FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_File */ + /* */ + /* <Description> */ + /* This function calls @FT_Attach_Stream to attach a file. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* filepathname :: The pathname. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_File( FT_Face face, + const char* filepathname ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Attach_Stream */ + /* */ + /* <Description> */ + /* `Attach' data to a face object. Normally, this is used to read */ + /* additional information for the face object. For example, you can */ + /* attach an AFM file that comes with a Type~1 font to get the */ + /* kerning values and other metrics. */ + /* */ + /* <InOut> */ + /* face :: The target face object. */ + /* */ + /* <Input> */ + /* parameters :: A pointer to @FT_Open_Args that must be filled by */ + /* the caller. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The meaning of the `attach' (i.e., what really happens when the */ + /* new file is read) is not fixed by FreeType itself. It really */ + /* depends on the font format (and thus the font driver). */ + /* */ + /* Client applications are expected to know what they are doing */ + /* when invoking this function. Most drivers simply do not implement */ + /* file attachments. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Face */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Face structure */ + /* is created. This function increments the counter. @FT_Done_Face */ + /* then only destroys a face if the counter is~1, otherwise it simply */ + /* decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures that */ + /* reference @FT_Face objects. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Face */ + /* */ + /* <Description> */ + /* Discard a given face object, as well as all of its child slots and */ + /* sizes. */ + /* */ + /* <Input> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Face. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Face( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Size */ + /* */ + /* <Description> */ + /* Select a bitmap strike. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* strike_index :: The index of the bitmap strike in the */ + /* `available_sizes' field of @FT_FaceRec structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Size_Request_Type */ + /* */ + /* <Description> */ + /* An enumeration type that lists the supported size request types. */ + /* */ + /* <Values> */ + /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ + /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ + /* used to determine both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ + /* The real dimension. The sum of the the `ascender' and (minus */ + /* of) the `descender' fields of @FT_FaceRec are used to determine */ + /* both scaling values. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_BBOX :: */ + /* The font bounding box. The width and height of the `bbox' field */ + /* of @FT_FaceRec are used to determine the horizontal and vertical */ + /* scaling value, respectively. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_CELL :: */ + /* The `max_advance_width' field of @FT_FaceRec is used to */ + /* determine the horizontal scaling value; the vertical scaling */ + /* value is determined the same way as */ + /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ + /* values are set to the smaller one. This type is useful if you */ + /* want to specify the font size for, say, a window of a given */ + /* dimension and 80x24 cells. */ + /* */ + /* FT_SIZE_REQUEST_TYPE_SCALES :: */ + /* Specify the scaling values directly. */ + /* */ + /* <Note> */ + /* The above descriptions only apply to scalable formats. For bitmap */ + /* formats, the behaviour is up to the driver. */ + /* */ + /* See the note section of @FT_Size_Metrics if you wonder how size */ + /* requesting relates to scaling values. */ + /* */ + typedef enum FT_Size_Request_Type_ + { + FT_SIZE_REQUEST_TYPE_NOMINAL, + FT_SIZE_REQUEST_TYPE_REAL_DIM, + FT_SIZE_REQUEST_TYPE_BBOX, + FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, + + FT_SIZE_REQUEST_TYPE_MAX + + } FT_Size_Request_Type; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_RequestRec */ + /* */ + /* <Description> */ + /* A structure used to model a size request. */ + /* */ + /* <Fields> */ + /* type :: See @FT_Size_Request_Type. */ + /* */ + /* width :: The desired width. */ + /* */ + /* height :: The desired height. */ + /* */ + /* horiResolution :: The horizontal resolution. If set to zero, */ + /* `width' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* vertResolution :: The vertical resolution. If set to zero, */ + /* `height' is treated as a 26.6 fractional pixel */ + /* value. */ + /* */ + /* <Note> */ + /* If `width' is zero, then the horizontal scaling value is set equal */ + /* to the vertical scaling value, and vice versa. */ + /* */ + typedef struct FT_Size_RequestRec_ + { + FT_Size_Request_Type type; + FT_Long width; + FT_Long height; + FT_UInt horiResolution; + FT_UInt vertResolution; + + } FT_Size_RequestRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_Request */ + /* */ + /* <Description> */ + /* A handle to a size request structure. */ + /* */ + typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Request_Size */ + /* */ + /* <Description> */ + /* Resize the scale of the active @FT_Size object in a face. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* req :: A pointer to a @FT_Size_RequestRec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Although drivers may select the bitmap strike matching the */ + /* request, you should not rely on this if you intend to select a */ + /* particular bitmap strike. Use @FT_Select_Size instead in that */ + /* case. */ + /* */ + /* The relation between the requested size and the resulting glyph */ + /* size is dependent entirely on how the size is defined in the */ + /* source face. The font designer chooses the final size of each */ + /* glyph relative to this size. For more information refer to */ + /* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Char_Size */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in points). */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object. */ + /* */ + /* <Input> */ + /* char_width :: The nominal width, in 26.6 fractional points. */ + /* */ + /* char_height :: The nominal height, in 26.6 fractional points. */ + /* */ + /* horz_resolution :: The horizontal resolution in dpi. */ + /* */ + /* vert_resolution :: The vertical resolution in dpi. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If either the character width or height is zero, it is set equal */ + /* to the other value. */ + /* */ + /* If either the horizontal or vertical resolution is zero, it is set */ + /* equal to the other value. */ + /* */ + /* A character width or height smaller than 1pt is set to 1pt; if */ + /* both resolution values are zero, they are set to 72dpi. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Pixel_Sizes */ + /* */ + /* <Description> */ + /* This function calls @FT_Request_Size to request the nominal size */ + /* (in pixels). */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Input> */ + /* pixel_width :: The nominal width, in pixels. */ + /* */ + /* pixel_height :: The nominal height, in pixels. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should not rely on the resulting glyphs matching, or being */ + /* constrained, to this pixel size. Refer to @FT_Request_Size to */ + /* understand how requested sizes relate to actual sizes. */ + /* */ + /* Don't use this function if you are using the FreeType cache API. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Glyph */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object. */ + /* */ + /* <InOut> */ + /* face :: A handle to the target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* glyph_index :: The index of the glyph in the font file. For */ + /* CID-keyed fonts (either in PS or in CFF format) */ + /* this argument specifies the CID value. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The loaded glyph may be transformed. See @FT_Set_Transform for */ + /* the details. */ + /* */ + /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ + /* returned for invalid CID values (this is, for CID values that */ + /* don't have a corresponding glyph in the font). See the discussion */ + /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Load_Char */ + /* */ + /* <Description> */ + /* A function used to load a single glyph into the glyph slot of a */ + /* face object, according to its character code. */ + /* */ + /* <InOut> */ + /* face :: A handle to a target face object where the glyph */ + /* is loaded. */ + /* */ + /* <Input> */ + /* char_code :: The glyph's character code, according to the */ + /* current charmap used in the face. */ + /* */ + /* load_flags :: A flag indicating what to load for this glyph. The */ + /* @FT_LOAD_XXX constants can be used to control the */ + /* glyph loading process (e.g., whether the outline */ + /* should be scaled, whether to load bitmaps or not, */ + /* whether to hint the outline, etc). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + + /************************************************************************* + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit-field constants used with @FT_Load_Glyph to indicate + * what kind of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. + * The bitmap data can be accessed from the glyph slot (see note + * below). + * + * 2. If no embedded bitmap is searched or found, FreeType looks for a + * scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then `hinted' to the pixel grid + * in order to optimize it. The outline data can be accessed from + * the glyph slot (see note below). + * + * Note that by default, the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the loaded outline glyph but keep it in font units. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using + * FT_LOAD_NO_SCALE usually yields meaningless outlines because the + * subglyphs must be scaled and positioned with hinting instructions. + * This can be solved by loading the font without FT_LOAD_NO_SCALE and + * setting the character size to `font->units_per_EM'. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates `blurrier' bitmap glyphs + * when the glyph are rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. In particular, the + * `advance' value in the @FT_GlyphSlotRec structure is set to the + * `vertAdvance' value of the `metrics' field. + * + * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use + * this flag currently. Reason is that in this case vertical metrics + * get synthesized, and those values are not always consistent across + * various font formats. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Indicates that the auto-hinter is preferred over the font's native + * hinter. See also the note below. + * + * FT_LOAD_PEDANTIC :: + * Indicates that the font driver should perform pedantic verifications + * during glyph loading. This is mostly used to detect broken glyphs + * in fonts. By default, FreeType tries to handle broken fonts also. + * + * In particular, errors from the TrueType bytecode engine are not + * passed to the application if this flag is not set; this might + * result in partially hinted or distorted glyphs in case a glyph's + * bytecode is buggy. + * + * FT_LOAD_NO_RECURSE :: + * Indicate that the font driver should not load composite glyphs + * recursively. Instead, it should set the `num_subglyph' and + * `subglyphs' values of the glyph slot accordingly, and set + * `glyph->format' to @FT_GLYPH_FORMAT_COMPOSITE. The description of + * subglyphs can then be accessed with @FT_Get_SubGlyph_Info. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Indicates that the transform matrix set by @FT_Set_Transform should + * be ignored. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Indicates that the `linearHoriAdvance' and `linearVertAdvance' + * fields of @FT_GlyphSlotRec should be kept in font units. See + * @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable auto-hinter. See also the note below. + * + * FT_LOAD_COLOR :: + * This flag is used to request loading of color embedded-bitmap + * images. The resulting color bitmaps, if available, will have the + * @FT_PIXEL_MODE_BGRA format. When the flag is not used and color + * bitmaps are found, they will be converted to 256-level gray + * bitmaps transparently. Those bitmaps will be in the + * @FT_PIXEL_MODE_GRAY format. + * + * FT_LOAD_CROP_BITMAP :: + * Ignored. Deprecated. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Ignored. Deprecated. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be + * used at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + * Note that the auto-hinter needs a valid Unicode cmap (either a native + * one or synthesized by FreeType) for producing correct results. If a + * font provides an incorrect mapping (for example, assigning the + * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a + * mathematical integral sign), the auto-hinter might produce useless + * results. + * + */ +#define FT_LOAD_DEFAULT 0x0 +#define FT_LOAD_NO_SCALE ( 1L << 0 ) +#define FT_LOAD_NO_HINTING ( 1L << 1 ) +#define FT_LOAD_RENDER ( 1L << 2 ) +#define FT_LOAD_NO_BITMAP ( 1L << 3 ) +#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) +#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) +#define FT_LOAD_CROP_BITMAP ( 1L << 6 ) +#define FT_LOAD_PEDANTIC ( 1L << 7 ) +#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) +#define FT_LOAD_NO_RECURSE ( 1L << 10 ) +#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) +#define FT_LOAD_MONOCHROME ( 1L << 12 ) +#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) +#define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) + /* Bits 16..19 are used by `FT_LOAD_TARGET_' */ +#define FT_LOAD_COLOR ( 1L << 20 ) + + /* */ + + /* used internally only by certain font drivers! */ +#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) +#define FT_LOAD_SBITS_ONLY ( 1L << 14 ) + + + /************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values that are used to select a specific hinting algorithm + * to use by the hinter. You should OR one of these values to your + * `load_flags' when calling @FT_Load_Glyph. + * + * Note that font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it + * always implies @FT_LOAD_FORCE_AUTOHINT. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * This corresponds to the default hinting algorithm, optimized for + * standard gray-level rendering. For monochrome output, use + * @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for non-monochrome modes. Many + * generated glyphs are more fuzzy but better resemble its original + * shape. A bit like rendering on Mac OS~X. + * + * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your + * `load_flags'. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode that matches the used algorithm + * best). An exeption is FT_LOAD_TARGET_MONO since it implies + * @FT_LOAD_MONOCHROME. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the `light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * { + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * } + * + */ +#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) + +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) + + + /************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ +#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Transform */ + /* */ + /* <Description> */ + /* A function used to set the transformation that is applied to glyph */ + /* images when they are loaded into a glyph slot through */ + /* @FT_Load_Glyph. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ + /* the identity matrix. */ + /* delta :: A pointer to the translation vector. Use~0 for the null */ + /* vector. */ + /* */ + /* <Note> */ + /* The transformation is only applied to scalable image formats after */ + /* the glyph has been loaded. It means that hinting is unaltered by */ + /* the transformation and is performed on the character size given in */ + /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ + /* */ + /* Note that this also transforms the `face.glyph.advance' field, but */ + /* *not* the values in `face.glyph.metrics'. */ + /* */ + FT_EXPORT( void ) + FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Render_Mode */ + /* */ + /* <Description> */ + /* An enumeration type that lists the render modes supported by */ + /* FreeType~2. Each mode corresponds to a specific type of scanline */ + /* conversion performed on the outline. */ + /* */ + /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ + /* field in the @FT_GlyphSlotRec structure gives the format of the */ + /* returned bitmap. */ + /* */ + /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ + /* */ + /* <Values> */ + /* FT_RENDER_MODE_NORMAL :: */ + /* This is the default render mode; it corresponds to 8-bit */ + /* anti-aliased bitmaps. */ + /* */ + /* FT_RENDER_MODE_LIGHT :: */ + /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ + /* defined as a separate value because render modes are also used */ + /* indirectly to define hinting algorithm selectors. See */ + /* @FT_LOAD_TARGET_XXX for details. */ + /* */ + /* FT_RENDER_MODE_MONO :: */ + /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ + /* opacity). */ + /* */ + /* FT_RENDER_MODE_LCD :: */ + /* This mode corresponds to horizontal RGB and BGR sub-pixel */ + /* displays like LCD screens. It produces 8-bit bitmaps that are */ + /* 3~times the width of the original glyph outline in pixels, and */ + /* which use the @FT_PIXEL_MODE_LCD mode. */ + /* */ + /* FT_RENDER_MODE_LCD_V :: */ + /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ + /* (like PDA screens, rotated LCD displays, etc.). It produces */ + /* 8-bit bitmaps that are 3~times the height of the original */ + /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ + /* */ + /* <Note> */ + /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ + /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ + /* (not active in the default builds). It is up to the caller to */ + /* either call @FT_Library_SetLcdFilter (if available) or do the */ + /* filtering itself. */ + /* */ + /* The selected render mode only affects vector glyphs of a font. */ + /* Embedded bitmaps often have a different pixel mode like */ + /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ + /* them into 8-bit pixmaps. */ + /* */ + typedef enum FT_Render_Mode_ + { + FT_RENDER_MODE_NORMAL = 0, + FT_RENDER_MODE_LIGHT, + FT_RENDER_MODE_MONO, + FT_RENDER_MODE_LCD, + FT_RENDER_MODE_LCD_V, + + FT_RENDER_MODE_MAX + + } FT_Render_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Render_Mode' values instead */ +#define ft_render_mode_normal FT_RENDER_MODE_NORMAL +#define ft_render_mode_mono FT_RENDER_MODE_MONO + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Render_Glyph */ + /* */ + /* <Description> */ + /* Convert a given glyph image to a bitmap. It does so by inspecting */ + /* the glyph image format, finding the relevant renderer, and */ + /* invoking it. */ + /* */ + /* <InOut> */ + /* slot :: A handle to the glyph slot containing the image to */ + /* convert. */ + /* */ + /* <Input> */ + /* render_mode :: This is the render mode used to render the glyph */ + /* image into a bitmap. See @FT_Render_Mode for a */ + /* list of possible values. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Kerning_Mode */ + /* */ + /* <Description> */ + /* An enumeration used to specify which kerning values to return in */ + /* @FT_Get_Kerning. */ + /* */ + /* <Values> */ + /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ + /* distances (value is~0). */ + /* */ + /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ + /* distances. */ + /* */ + /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ + /* units. */ + /* */ + typedef enum FT_Kerning_Mode_ + { + FT_KERNING_DEFAULT = 0, + FT_KERNING_UNFITTED, + FT_KERNING_UNSCALED + + } FT_Kerning_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Kerning_Mode' values instead */ +#define ft_kerning_default FT_KERNING_DEFAULT +#define ft_kerning_unfitted FT_KERNING_UNFITTED +#define ft_kerning_unscaled FT_KERNING_UNSCALED + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Kerning */ + /* */ + /* <Description> */ + /* Return the kerning vector between two glyphs of a same face. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* left_glyph :: The index of the left glyph in the kern pair. */ + /* */ + /* right_glyph :: The index of the right glyph in the kern pair. */ + /* */ + /* kern_mode :: See @FT_Kerning_Mode for more information. */ + /* Determines the scale and dimension of the returned */ + /* kerning vector. */ + /* */ + /* <Output> */ + /* akerning :: The kerning vector. This is either in font units */ + /* or in pixels (26.6 format) for scalable formats, */ + /* and in pixels for fixed-sizes formats. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Only horizontal layouts (left-to-right & right-to-left) are */ + /* supported by this method. Other layouts, or more sophisticated */ + /* kernings, are out of the scope of this API function -- they can be */ + /* implemented through format-specific interfaces. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Track_Kerning */ + /* */ + /* <Description> */ + /* Return the track kerning for a given face object at a given size. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* point_size :: The point size in 16.16 fractional points. */ + /* */ + /* degree :: The degree of tightness. Increasingly negative */ + /* values represent tighter track kerning, while */ + /* increasingly positive values represent looser track */ + /* kerning. Value zero means no track kerning. */ + /* */ + /* <Output> */ + /* akerning :: The kerning in 16.16 fractional points, to be */ + /* uniformly applied between all glyphs. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* Currently, only the Type~1 font driver supports track kerning, */ + /* using data from AFM files (if attached with @FT_Attach_File or */ + /* @FT_Attach_Stream). */ + /* */ + /* Only very few AFM files come with track kerning data; please refer */ + /* to the Adobe's AFM specification for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII name of a given glyph in a face. This only */ + /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ + /* */ + /* <Input> */ + /* face :: A handle to a source face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* buffer_max :: The maximum number of bytes available in the */ + /* buffer. */ + /* */ + /* <Output> */ + /* buffer :: A pointer to a target buffer where the name is */ + /* copied to. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error is returned if the face doesn't provide glyph names or if */ + /* the glyph index is invalid. In all cases of failure, the first */ + /* byte of `buffer' is set to~0 to indicate an empty name. */ + /* */ + /* The glyph name is truncated to fit within the buffer if it is too */ + /* long. The returned string is always zero-terminated. */ + /* */ + /* Be aware that FreeType reorders glyph indices internally so that */ + /* glyph index~0 always corresponds to the `missing glyph' (called */ + /* `.notdef'). */ + /* */ + /* This function always returns an error if the config macro */ + /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoptions.h'. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Postscript_Name */ + /* */ + /* <Description> */ + /* Retrieve the ASCII PostScript name of a given face, if available. */ + /* This only works with PostScript and TrueType fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to the face's PostScript name. NULL if unavailable. */ + /* */ + /* <Note> */ + /* The returned pointer is owned by the face and is destroyed with */ + /* it. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Postscript_Name( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Select_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap by its encoding tag (as listed in */ + /* `freetype.h'). */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* encoding :: A handle to the selected encoding. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if no charmap in the face */ + /* corresponds to the encoding queried here. */ + /* */ + /* Because many fonts contain more than a single cmap for Unicode */ + /* encoding, this function has some special code to select the one */ + /* that covers Unicode best (`best' in the sense that a UCS-4 cmap is */ + /* preferred to a UCS-2 cmap). It is thus preferable to */ + /* @FT_Set_Charmap in this case. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Charmap */ + /* */ + /* <Description> */ + /* Select a given charmap for character code to glyph index mapping. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Input> */ + /* charmap :: A handle to the selected charmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function returns an error if the charmap is not part of */ + /* the face (i.e., if it is not listed in the `face->charmaps' */ + /* table). */ + /* */ + /* It also fails if a type~14 charmap is selected. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Charmap( FT_Face face, + FT_CharMap charmap ); + + + /************************************************************************* + * + * @function: + * FT_Get_Charmap_Index + * + * @description: + * Retrieve index of a given charmap. + * + * @input: + * charmap :: + * A handle to a charmap. + * + * @return: + * The index into the array of character maps within the face to which + * `charmap' belongs. If an error occurs, -1 is returned. + * + */ + FT_EXPORT( FT_Int ) + FT_Get_Charmap_Index( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Char_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code. This function */ + /* uses a charmap object to do the mapping. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* charcode :: The character code. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within the */ + /* file. This is done to ensure that value~0 always corresponds to */ + /* the `missing glyph'. If the first glyph is not named `.notdef', */ + /* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ + /* the glyph ID~0 position, and whatever was there will be moved to */ + /* the position `.notdef' had. For Type~1 fonts, if there is no */ + /* `.notdef' glyph at all, then one will be created at index~0 and */ + /* whatever was there will be moved to the last index -- Type~42 */ + /* fonts are considered invalid under this condition. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_First_Char */ + /* */ + /* <Description> */ + /* This function is used to return the first character code in the */ + /* current charmap of a given face. It also returns the */ + /* corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of first character code. 0~if charmap is */ + /* empty. */ + /* */ + /* <Return> */ + /* The charmap's first character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_Next_Char to be able to */ + /* parse all character codes available in a given charmap. The code */ + /* should look like this: */ + /* */ + /* { */ + /* FT_ULong charcode; */ + /* FT_UInt gindex; */ + /* */ + /* */ + /* charcode = FT_Get_First_Char( face, &gindex ); */ + /* while ( gindex != 0 ) */ + /* { */ + /* ... do something with (charcode,gindex) pair ... */ + /* */ + /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ + /* } */ + /* } */ + /* */ + /* Note that `*agindex' is set to~0 if the charmap is empty. The */ + /* result itself can be~0 in two cases: if the charmap is empty or */ + /* if the value~0 is the first valid character code. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Next_Char */ + /* */ + /* <Description> */ + /* This function is used to return the next character code in the */ + /* current charmap of a given face following the value `char_code', */ + /* as well as the corresponding glyph index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* char_code :: The starting character code. */ + /* */ + /* <Output> */ + /* agindex :: Glyph index of next character code. 0~if charmap */ + /* is empty. */ + /* */ + /* <Return> */ + /* The charmap's next character code. */ + /* */ + /* <Note> */ + /* You should use this function with @FT_Get_First_Char to walk */ + /* over all character codes available in a given charmap. See the */ + /* note for this function for a simple code example. */ + /* */ + /* Note that `*agindex' is set to~0 when there are no more codes in */ + /* the charmap. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Name_Index */ + /* */ + /* <Description> */ + /* Return the glyph index of a given glyph name. This function uses */ + /* driver specific objects to do the translation. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* glyph_name :: The glyph name. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means `undefined character code'. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ); + + + /************************************************************************* + * + * @macro: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants used to describe subglyphs. Please refer to the + * TrueType specification for the meaning of the various flags. + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 + + + /************************************************************************* + * + * @func: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be + * interpreted depending on the flags returned in `*p_flags'. See the + * TrueType specification for details. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_FSTYPE_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `fsType' field of the OS/2 table */ + /* in a TrueType or OpenType font and the `FSType' entry in a */ + /* PostScript font. These bit flags are returned by */ + /* @FT_Get_FSType_Flags; they inform client applications of embedding */ + /* and subsetting restrictions associated with a font. */ + /* */ + /* See */ + /* http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf */ + /* for more details. */ + /* */ + /* <Values> */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ + /* Fonts with no fsType bit set may be embedded and permanently */ + /* installed on the remote system by an application. */ + /* */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ + /* Fonts that have only this bit set must not be modified, embedded */ + /* or exchanged in any manner without first obtaining permission of */ + /* the font software copyright owner. */ + /* */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ + /* If this bit is set, the font may be embedded and temporarily */ + /* loaded on the remote system. Documents containing Preview & */ + /* Print fonts must be opened `read-only'; no edits can be applied */ + /* to the document. */ + /* */ + /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ + /* If this bit is set, the font may be embedded but must only be */ + /* installed temporarily on other systems. In contrast to Preview */ + /* & Print fonts, documents containing editable fonts may be opened */ + /* for reading, editing is permitted, and changes may be saved. */ + /* */ + /* FT_FSTYPE_NO_SUBSETTING :: */ + /* If this bit is set, the font may not be subsetted prior to */ + /* embedding. */ + /* */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ + /* If this bit is set, only bitmaps contained in the font may be */ + /* embedded; no outline data may be embedded. If there are no */ + /* bitmaps available in the font, then the font is unembeddable. */ + /* */ + /* <Note> */ + /* While the fsType flags can indicate that a font may be embedded, a */ + /* license with the font vendor may be separately required to use the */ + /* font in this way. */ + /* */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_FSType_Flags */ + /* */ + /* <Description> */ + /* Return the fsType flags for a font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* The fsType flags, @FT_FSTYPE_XXX. */ + /* */ + /* <Note> */ + /* Use this function rather than directly reading the `fs_type' field */ + /* in the @PS_FontInfoRec structure, which is only guaranteed to */ + /* return the correct results for Type~1 fonts. */ + /* */ + /* <Since> */ + /* 2.3.8 */ + /* */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_variants */ + /* */ + /* <Title> */ + /* Glyph Variants */ + /* */ + /* <Abstract> */ + /* The FreeType~2 interface to Unicode Ideographic Variation */ + /* Sequences (IVS), using the SFNT cmap format~14. */ + /* */ + /* <Description> */ + /* Many CJK characters have variant forms. They are a sort of grey */ + /* area somewhere between being totally irrelevant and semantically */ + /* distinct; for this reason, the Unicode consortium decided to */ + /* introduce Ideographic Variation Sequences (IVS), consisting of a */ + /* Unicode base character and one of 240 variant selectors */ + /* (U+E0100-U+E01EF), instead of further extending the already huge */ + /* code range for CJK characters. */ + /* */ + /* An IVS is registered and unique; for further details please refer */ + /* to Unicode Technical Standard #37, the Ideographic Variation */ + /* Database: */ + /* */ + /* http://www.unicode.org/reports/tr37/ */ + /* */ + /* To date (November 2014), the character with the most variants is */ + /* U+9089, having 32 such IVS. */ + /* */ + /* Adobe and MS decided to support IVS with a new cmap subtable */ + /* (format~14). It is an odd subtable because it is not a mapping of */ + /* input code points to glyphs, but contains lists of all variants */ + /* supported by the font. */ + /* */ + /* A variant may be either `default' or `non-default'. A default */ + /* variant is the one you will get for that code point if you look it */ + /* up in the standard Unicode cmap. A non-default variant is a */ + /* different glyph. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIndex */ + /* */ + /* <Description> */ + /* Return the glyph index of a given character code as modified by */ + /* the variation selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character code point in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode code point of the variation selector. */ + /* */ + /* <Return> */ + /* The glyph index. 0~means either `undefined character code', or */ + /* `undefined selector code', or `no variation selector cmap */ + /* subtable', or `current CharMap is not Unicode'. */ + /* */ + /* <Note> */ + /* If you use FreeType to manipulate the contents of font files */ + /* directly, be aware that the glyph index returned by this function */ + /* doesn't always correspond to the internal indices used within */ + /* the file. This is done to ensure that value~0 always corresponds */ + /* to the `missing glyph'. */ + /* */ + /* This function is only meaningful if */ + /* a) the font has a variation selector cmap sub table, */ + /* and */ + /* b) the current charmap has a Unicode encoding. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharVariantIsDefault */ + /* */ + /* <Description> */ + /* Check whether this variant of this Unicode character is the one to */ + /* be found in the `cmap'. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* variantSelector :: */ + /* The Unicode codepoint of the variation selector. */ + /* */ + /* <Return> */ + /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ + /* variation selector cmap, or -1 if it is not a variant. */ + /* */ + /* <Note> */ + /* This function is only meaningful if the font has a variation */ + /* selector cmap subtable. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_Int ) + FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantSelectors */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* in the font. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* <Return> */ + /* A pointer to an array of selector code points, or NULL if there is */ + /* no valid variant selector cmap subtable. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantSelectors( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetVariantsOfChar */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode variant selectors found */ + /* for the specified character code. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* charcode :: */ + /* The character codepoint in Unicode. */ + /* */ + /* <Return> */ + /* A pointer to an array of variant selector code points that are */ + /* active for the given character, or NULL if the corresponding list */ + /* is empty. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_GetCharsOfVariant */ + /* */ + /* <Description> */ + /* Return a zero-terminated list of Unicode character codes found for */ + /* the specified variant selector. */ + /* */ + /* <Input> */ + /* face :: */ + /* A handle to the source face object. */ + /* */ + /* variantSelector :: */ + /* The variant selector code point in Unicode. */ + /* */ + /* <Return> */ + /* A list of all the code points that are specified by this selector */ + /* (both default and non-default codes are returned) or NULL if there */ + /* is no valid cmap or the variant selector is invalid. */ + /* */ + /* <Note> */ + /* The last item in the array is~0; the array is owned by the */ + /* @FT_Face object but can be overwritten or released on the next */ + /* call to a FreeType function. */ + /* */ + /* <Since> */ + /* 2.3.6 */ + /* */ + FT_EXPORT( FT_UInt32* ) + FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /* <Title> */ + /* Computations */ + /* */ + /* <Abstract> */ + /* Crunching fixed numbers and vectors. */ + /* */ + /* <Description> */ + /* This section contains various functions used to perform */ + /* computations on 16.16 fixed-float numbers or 2d vectors. */ + /* */ + /* <Order> */ + /* FT_MulDiv */ + /* FT_MulFix */ + /* FT_DivFix */ + /* FT_RoundFix */ + /* FT_CeilFix */ + /* FT_FloorFix */ + /* FT_Vector_Transform */ + /* FT_Matrix_Multiply */ + /* FT_Matrix_Invert */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* with maximum accuracy (it uses a 64-bit intermediate integer */ + /* whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ + /* used to multiply a given value by a 16.16 fixed-point factor. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. Use a 16.16 factor here whenever */ + /* possible (see note below). */ + /* */ + /* <Return> */ + /* The result of `(a*b)/0x10000'. */ + /* */ + /* <Note> */ + /* This function has been optimized for the case where the absolute */ + /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ + /* As this happens mainly when scaling from notional units to */ + /* fractional pixels in FreeType, it resulted in noticeable speed */ + /* improvements between versions 2.x and 1.x. */ + /* */ + /* As a conclusion, always try to place a 16.16 factor as the */ + /* _second_ argument of this function; this can make a great */ + /* difference. */ + /* */ + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_DivFix */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation */ + /* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ + /* used to divide a given value by a 16.16 fixed-point factor. */ + /* */ + /* <Input> */ + /* a :: The numerator. */ + /* b :: The denominator. Use a 16.16 factor here. */ + /* */ + /* <Return> */ + /* The result of `(a*0x10000)/b'. */ + /* */ + FT_EXPORT( FT_Long ) + FT_DivFix( FT_Long a, + FT_Long b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_RoundFix */ + /* */ + /* <Description> */ + /* A very simple function used to round a 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number to be rounded. */ + /* */ + /* <Return> */ + /* The result of `(a + 0x8000) & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_RoundFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_CeilFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the ceiling function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the ceiling function is to be computed. */ + /* */ + /* <Return> */ + /* The result of `(a + 0x10000 - 1) & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_CeilFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_FloorFix */ + /* */ + /* <Description> */ + /* A very simple function used to compute the floor function of a */ + /* 16.16 fixed number. */ + /* */ + /* <Input> */ + /* a :: The number for which the floor function is to be computed. */ + /* */ + /* <Return> */ + /* The result of `a & -0x10000'. */ + /* */ + FT_EXPORT( FT_Fixed ) + FT_FloorFix( FT_Fixed a ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Vector_Transform */ + /* */ + /* <Description> */ + /* Transform a single vector through a 2x2 matrix. */ + /* */ + /* <InOut> */ + /* vector :: The target vector to transform. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the source 2x2 matrix. */ + /* */ + /* <Note> */ + /* The result is undefined if either `vector' or `matrix' is invalid. */ + /* */ + FT_EXPORT( void ) + FT_Vector_Transform( FT_Vector* vec, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* version */ + /* */ + /* <Title> */ + /* FreeType Version */ + /* */ + /* <Abstract> */ + /* Functions and macros related to FreeType versions. */ + /* */ + /* <Description> */ + /* Note that those functions and macros are of limited use because */ + /* even a new release of FreeType with only documentation changes */ + /* increases the version number. */ + /* */ + /* <Order> */ + /* FT_Library_Version */ + /* */ + /* FREETYPE_MAJOR */ + /* FREETYPE_MINOR */ + /* FREETYPE_PATCH */ + /* */ + /* FT_Face_CheckTrueTypePatents */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* FREETYPE_XXX */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. + * Use @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: The major version number. + * FREETYPE_MINOR :: The minor version number. + * FREETYPE_PATCH :: The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library + * with the `libtool' package is _not_ controlled by these three + * macros. + * + */ +#define FREETYPE_MAJOR 2 +#define FREETYPE_MINOR 6 +#define FREETYPE_PATCH 0 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Library_Version */ + /* */ + /* <Description> */ + /* Return the version of the FreeType library being used. This is */ + /* useful when dynamically linking to the library, since one cannot */ + /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ + /* @FREETYPE_PATCH. */ + /* */ + /* <Input> */ + /* library :: A source library handle. */ + /* */ + /* <Output> */ + /* amajor :: The major version number. */ + /* */ + /* aminor :: The minor version number. */ + /* */ + /* apatch :: The patch version number. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' argument is because */ + /* certain programs implement library initialization in a custom way */ + /* that doesn't use @FT_Init_FreeType. */ + /* */ + /* In such cases, the library version might not be available before */ + /* the library object has been created. */ + /* */ + FT_EXPORT( void ) + FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_CheckTrueTypePatents */ + /* */ + /* <Description> */ + /* Parse all bytecode instructions of a TrueType font file to check */ + /* whether any of the patented opcodes are used. This is only useful */ + /* if you want to be able to use the unpatented hinter with */ + /* fonts that do *not* use these opcodes. */ + /* */ + /* Note that this function parses *all* glyph instructions in the */ + /* font file, which may be slow. */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* <Return> */ + /* 1~if this is a TrueType font that uses one of the patented */ + /* opcodes, 0~otherwise. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_CheckTrueTypePatents( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Face_SetUnpatentedHinting */ + /* */ + /* <Description> */ + /* Enable or disable the unpatented hinter for a given face. */ + /* Only enable it if you have determined that the face doesn't */ + /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ + /* */ + /* <Input> */ + /* face :: A face handle. */ + /* */ + /* value :: New boolean setting. */ + /* */ + /* <Return> */ + /* The old setting value. This will always be false if this is not */ + /* an SFNT font, or if the unpatented hinter is not compiled in this */ + /* instance of the library. */ + /* */ + /* <Note> */ + /* Since May 2010, TrueType hinting is no longer patented. */ + /* */ + /* <Since> */ + /* 2.3.5 */ + /* */ + FT_EXPORT( FT_Bool ) + FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + + /* */ + + +FT_END_HEADER + +#endif /* __FREETYPE_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftadvanc.h b/lib/windows64/include/freetype/ftadvanc.h new file mode 100644 index 0000000..b4d2aed --- /dev/null +++ b/lib/windows64/include/freetype/ftadvanc.h @@ -0,0 +1,187 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.h */ +/* */ +/* Quick computation of advance widths (specification only). */ +/* */ +/* Copyright 2008-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTADVANC_H__ +#define __FTADVANC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + * + * @order: + * FT_Get_Advance + * FT_Get_Advances + * + */ + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_ADVANCE_FLAG_FAST_ONLY */ + /* */ + /* <Description> */ + /* A bit-flag to be OR-ed with the `flags' parameter of the */ + /* @FT_Get_Advance and @FT_Get_Advances functions. */ + /* */ + /* If set, it indicates that you want these functions to fail if the */ + /* corresponding hinting mode or font driver doesn't allow for very */ + /* quick advance computation. */ + /* */ + /* Typically, glyphs that are either unscaled, unhinted, bitmapped, */ + /* or light-hinted can have their advance width computed very */ + /* quickly. */ + /* */ + /* Normal and bytecode hinted modes that require loading, scaling, */ + /* and hinting of the glyph outline, are extremely slow by */ + /* comparison. */ + /* */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advance */ + /* */ + /* <Description> */ + /* Retrieve the advance value of a given glyph outline in an */ + /* @FT_Face. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph, used to determine what kind */ + /* of advances you need. */ + /* <Output> */ + /* padvance :: The advance value. If scaling is performed (based on */ + /* the value of `load_flags'), the advance value is in */ + /* 16.16 format. Otherwise, it is in font units. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ + /* vertical advance corresponding to a vertical layout. */ + /* Otherwise, it is the horizontal advance in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* A scaled advance is returned in 16.16 format but isn't transformed */ + /* by the affine transformation specified by @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advances */ + /* */ + /* <Description> */ + /* Retrieve the advance values of several glyph outlines in an */ + /* @FT_Face. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* start :: The first glyph index. */ + /* */ + /* count :: The number of advance values you want to retrieve. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph. */ + /* */ + /* <Output> */ + /* padvance :: The advance values. This array, to be provided by the */ + /* caller, must contain at least `count' elements. */ + /* */ + /* If scaling is performed (based on the value of */ + /* `load_flags'), the advance values are in 16.16 format. */ + /* Otherwise, they are in font units. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ + /* vertical advances corresponding to a vertical layout. */ + /* Otherwise, they are the horizontal advances in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* Scaled advances are returned in 16.16 format but aren't */ + /* transformed by the affine transformation specified by */ + /* @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTADVANC_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftautoh.h b/lib/windows64/include/freetype/ftautoh.h new file mode 100644 index 0000000..cf7b76f --- /dev/null +++ b/lib/windows64/include/freetype/ftautoh.h @@ -0,0 +1,450 @@ +/***************************************************************************/ +/* */ +/* ftautoh.h */ +/* */ +/* FreeType API for controlling the auto-hinter (specification only). */ +/* */ +/* Copyright 2012-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTAUTOH_H__ +#define __FTAUTOH_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * auto_hinter + * + * @title: + * The auto-hinter + * + * @abstract: + * Controlling the auto-hinting module. + * + * @description: + * While FreeType's auto-hinter doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * Note that the auto-hinter's module name is `autofitter' for + * historical reasons. + * + */ + + + /************************************************************************** + * + * @property: + * glyph-to-script-map + * + * @description: + * *Experimental* *only* + * + * The auto-hinter provides various script modules to hint glyphs. + * Examples of supported scripts are Latin or CJK. Before a glyph is + * auto-hinted, the Unicode character map of the font gets examined, and + * the script is then determined based on Unicode character ranges, see + * below. + * + * OpenType fonts, however, often provide much more glyphs than + * character codes (small caps, superscripts, ligatures, swashes, etc.), + * to be controlled by so-called `features'. Handling OpenType features + * can be quite complicated and thus needs a separate library on top of + * FreeType. + * + * The mapping between glyph indices and scripts (in the auto-hinter + * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an + * array with `num_glyphs' elements, as found in the font's @FT_Face + * structure. The `glyph-to-script-map' property returns a pointer to + * this array, which can be modified as needed. Note that the + * modification should happen before the first glyph gets processed by + * the auto-hinter so that the global analysis of the font shapes + * actually uses the modified mapping. + * + * The following example code demonstrates how to access it (omitting + * the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_GlyphToScriptMap prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * + * prop.face = face; + * + * FT_Property_Get( library, "autofitter", + * "glyph-to-script-map", &prop ); + * + * // adjust `prop.map' as needed right here + * + * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); + * } + * + */ + + + /************************************************************************** + * + * @enum: + * FT_AUTOHINTER_SCRIPT_XXX + * + * @description: + * *Experimental* *only* + * + * A list of constants used for the @glyph-to-script-map property to + * specify the script submodule the auto-hinter should use for hinting a + * particular glyph. + * + * @values: + * FT_AUTOHINTER_SCRIPT_NONE :: + * Don't auto-hint this glyph. + * + * FT_AUTOHINTER_SCRIPT_LATIN :: + * Apply the latin auto-hinter. For the auto-hinter, `latin' is a + * very broad term, including Cyrillic and Greek also since characters + * from those scripts share the same design constraints. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0020 - U+007F // Basic Latin (no control characters) + * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) + * U+0100 - U+017F // Latin Extended-A + * U+0180 - U+024F // Latin Extended-B + * U+0250 - U+02AF // IPA Extensions + * U+02B0 - U+02FF // Spacing Modifier Letters + * U+0300 - U+036F // Combining Diacritical Marks + * U+0370 - U+03FF // Greek and Coptic + * U+0400 - U+04FF // Cyrillic + * U+0500 - U+052F // Cyrillic Supplement + * U+1D00 - U+1D7F // Phonetic Extensions + * U+1D80 - U+1DBF // Phonetic Extensions Supplement + * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement + * U+1E00 - U+1EFF // Latin Extended Additional + * U+1F00 - U+1FFF // Greek Extended + * U+2000 - U+206F // General Punctuation + * U+2070 - U+209F // Superscripts and Subscripts + * U+20A0 - U+20CF // Currency Symbols + * U+2150 - U+218F // Number Forms + * U+2460 - U+24FF // Enclosed Alphanumerics + * U+2C60 - U+2C7F // Latin Extended-C + * U+2DE0 - U+2DFF // Cyrillic Extended-A + * U+2E00 - U+2E7F // Supplemental Punctuation + * U+A640 - U+A69F // Cyrillic Extended-B + * U+A720 - U+A7FF // Latin Extended-D + * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) + * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols + * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_CJK :: + * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old + * Vietnamese, and some other scripts. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+1100 - U+11FF // Hangul Jamo + * U+2E80 - U+2EFF // CJK Radicals Supplement + * U+2F00 - U+2FDF // Kangxi Radicals + * U+2FF0 - U+2FFF // Ideographic Description Characters + * U+3000 - U+303F // CJK Symbols and Punctuation + * U+3040 - U+309F // Hiragana + * U+30A0 - U+30FF // Katakana + * U+3100 - U+312F // Bopomofo + * U+3130 - U+318F // Hangul Compatibility Jamo + * U+3190 - U+319F // Kanbun + * U+31A0 - U+31BF // Bopomofo Extended + * U+31C0 - U+31EF // CJK Strokes + * U+31F0 - U+31FF // Katakana Phonetic Extensions + * U+3200 - U+32FF // Enclosed CJK Letters and Months + * U+3300 - U+33FF // CJK Compatibility + * U+3400 - U+4DBF // CJK Unified Ideographs Extension A + * U+4DC0 - U+4DFF // Yijing Hexagram Symbols + * U+4E00 - U+9FFF // CJK Unified Ideographs + * U+A960 - U+A97F // Hangul Jamo Extended-A + * U+AC00 - U+D7AF // Hangul Syllables + * U+D7B0 - U+D7FF // Hangul Jamo Extended-B + * U+F900 - U+FAFF // CJK Compatibility Ideographs + * U+FE10 - U+FE1F // Vertical forms + * U+FE30 - U+FE4F // CJK Compatibility Forms + * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms + * U+1B000 - U+1B0FF // Kana Supplement + * U+1D300 - U+1D35F // Tai Xuan Hing Symbols + * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement + * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B + * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C + * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D + * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_INDIC :: + * Apply the indic auto-hinter, covering all major scripts from the + * Indian sub-continent and some other related scripts like Thai, Lao, + * or Tibetan. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0900 - U+0DFF // Indic Range + * U+0F00 - U+0FFF // Tibetan + * U+1900 - U+194F // Limbu + * U+1B80 - U+1BBF // Sundanese + * U+1C80 - U+1CDF // Meetei Mayak + * U+A800 - U+A82F // Syloti Nagri + * U+11800 - U+118DF // Sharada + * } + * + * Note that currently Indic support is rudimentary only, missing blue + * zone support. + * + */ +#define FT_AUTOHINTER_SCRIPT_NONE 0 +#define FT_AUTOHINTER_SCRIPT_LATIN 1 +#define FT_AUTOHINTER_SCRIPT_CJK 2 +#define FT_AUTOHINTER_SCRIPT_INDIC 3 + + + /************************************************************************** + * + * @struct: + * FT_Prop_GlyphToScriptMap + * + * @description: + * *Experimental* *only* + * + * The data exchange structure for the @glyph-to-script-map property. + * + */ + typedef struct FT_Prop_GlyphToScriptMap_ + { + FT_Face face; + FT_Byte* map; + + } FT_Prop_GlyphToScriptMap; + + + /************************************************************************** + * + * @property: + * fallback-script + * + * @description: + * *Experimental* *only* + * + * If no auto-hinter script module can be assigned to a glyph, a + * fallback script gets assigned to it (see also the + * @glyph-to-script-map property). By default, this is + * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property, + * this fallback value can be changed. + * + * { + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * fallback script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback script will affect this face. + * + */ + + + /************************************************************************** + * + * @property: + * default-script + * + * @description: + * *Experimental* *only* + * + * If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make + * the HarfBuzz library access OpenType features for getting better + * glyph coverages, this property sets the (auto-fitter) script to be + * used for the default (OpenType) script data of a font's GSUB table. + * Features for the default script are intended for all scripts not + * explicitly handled in GSUB; an example is a `dlig' feature, + * containing the combination of the characters `T', `E', and `L' to + * form a `TEL' ligature. + * + * By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the + * `default-script' property, this default value can be changed. + * + * { + * FT_Library library; + * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "default-script", &default_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map that eventually uses the + * default script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the default script will affect this face. + * + */ + + + /************************************************************************** + * + * @property: + * increase-x-height + * + * @description: + * For ppem values in the range 6~<= ppem <= `increase-x-height', round + * up the font's x~height much more often than normally. If the value + * is set to~0, which is the default, this feature is switched off. Use + * this property to improve the legibility of small font sizes if + * necessary. + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_IncreaseXHeight prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); + * + * prop.face = face; + * prop.limit = 14; + * + * FT_Property_Set( library, "autofitter", + * "increase-x-height", &prop ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + */ + + + /************************************************************************** + * + * @struct: + * FT_Prop_IncreaseXHeight + * + * @description: + * The data exchange structure for the @increase-x-height property. + * + */ + typedef struct FT_Prop_IncreaseXHeight_ + { + FT_Face face; + FT_UInt limit; + + } FT_Prop_IncreaseXHeight; + + + /************************************************************************** + * + * @property: + * warping + * + * @description: + * *Experimental* *only* + * + * If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to + * activate the warp hinting code in the auto-hinter, this property + * switches warping on and off. + * + * Warping only works in `light' auto-hinting mode. The idea of the + * code is to slightly scale and shift a glyph along the non-hinted + * dimension (which is usually the horizontal axis) so that as much of + * its segments are aligned (more or less) to the grid. To find out a + * glyph's optimal scaling and shifting value, various parameter + * combinations are tried and scored. + * + * By default, warping is off. The example below shows how to switch on + * warping (omitting the error handling). + * + * { + * FT_Library library; + * FT_Bool warping = 1; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "warping", &warping ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * The warping code can also change advance widths. Have a look at the + * `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure + * for details on improving inter-glyph distances while rendering. + * + * Since warping is a global property of the auto-hinter it is best to + * change its value before rendering any face. Otherwise, you should + * reload all faces that get auto-hinted in `light' hinting mode. + * + */ + + + /* */ + + +FT_END_HEADER + +#endif /* __FTAUTOH_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftbbox.h b/lib/windows64/include/freetype/ftbbox.h new file mode 100644 index 0000000..9d9d040 --- /dev/null +++ b/lib/windows64/include/freetype/ftbbox.h @@ -0,0 +1,101 @@ +/***************************************************************************/ +/* */ +/* ftbbox.h */ +/* */ +/* FreeType exact bbox computation (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This component has a _single_ role: to compute exact outline bounding */ + /* boxes. */ + /* */ + /* It is separated from the rest of the engine for various technical */ + /* reasons. It may well be integrated in `ftoutln' later. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTBBOX_H__ +#define __FTBBOX_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_BBox */ + /* */ + /* <Description> */ + /* Compute the exact bounding box of an outline. This is slower */ + /* than computing the control box. However, it uses an advanced */ + /* algorithm that returns _very_ quickly when the two boxes */ + /* coincide. Otherwise, the outline Bézier arcs are traversed to */ + /* extract their extrema. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline. */ + /* */ + /* <Output> */ + /* abbox :: The outline's exact bounding box. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the font is tricky and the glyph has been loaded with */ + /* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */ + /* reasonable values for the BBox it is necessary to load the glyph */ + /* at a large ppem value (so that the hinting instructions can */ + /* properly shift and scale the subglyphs), then extracting the BBox, */ + /* which can be eventually converted back to font units. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTBBOX_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows64/include/freetype/ftbdf.h b/lib/windows64/include/freetype/ftbdf.h new file mode 100644 index 0000000..0bdabf4 --- /dev/null +++ b/lib/windows64/include/freetype/ftbdf.h @@ -0,0 +1,210 @@ +/***************************************************************************/ +/* */ +/* ftbdf.h */ +/* */ +/* FreeType API for accessing BDF-specific strings (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBDF_H__ +#define __FTBDF_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bdf_fonts */ + /* */ + /* <Title> */ + /* BDF and PCF Files */ + /* */ + /* <Abstract> */ + /* BDF and PCF specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions specific to BDF */ + /* and PCF fonts. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * BDF_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ + typedef enum BDF_PropertyType_ + { + BDF_PROPERTY_TYPE_NONE = 0, + BDF_PROPERTY_TYPE_ATOM = 1, + BDF_PROPERTY_TYPE_INTEGER = 2, + BDF_PROPERTY_TYPE_CARDINAL = 3 + + } BDF_PropertyType; + + + /********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ + typedef struct BDF_PropertyRec_* BDF_Property; + + + /********************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be + * NULL, indicating an empty string. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ + typedef struct BDF_PropertyRec_ + { + BDF_PropertyType type; + union { + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; + + } u; + + } BDF_PropertyRec; + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to + * the BDF specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Charset_ID( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + + /********************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: A handle to the input face. + * + * name :: The property name. + * + * @output: + * aproperty :: The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A `property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props' array within a `FontRec' structure of a PCF font. + * + * Integer properties are always stored as `signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type' is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ + FT_EXPORT( FT_Error ) + FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + /* */ + +FT_END_HEADER + +#endif /* __FTBDF_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftbitmap.h b/lib/windows64/include/freetype/ftbitmap.h new file mode 100644 index 0000000..46cc47b --- /dev/null +++ b/lib/windows64/include/freetype/ftbitmap.h @@ -0,0 +1,240 @@ +/***************************************************************************/ +/* */ +/* ftbitmap.h */ +/* */ +/* FreeType utility functions for bitmaps (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBITMAP_H__ +#define __FTBITMAP_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bitmap_handling */ + /* */ + /* <Title> */ + /* Bitmap Handling */ + /* */ + /* <Abstract> */ + /* Handling FT_Bitmap objects. */ + /* */ + /* <Description> */ + /* This section contains functions for handling @FT_Bitmap objects. */ + /* Note that none of the functions changes the bitmap's `flow' (as */ + /* indicated by the sign of the `pitch' field in `FT_Bitmap'). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Init */ + /* */ + /* <Description> */ + /* Initialize a pointer to an @FT_Bitmap structure. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the bitmap structure. */ + /* */ + /* <Note> */ + /* A deprecated name for the same function is `FT_Bitmap_New'. */ + /* */ + FT_EXPORT( void ) + FT_Bitmap_Init( FT_Bitmap *abitmap ); + + + /* deprecated */ + FT_EXPORT( void ) + FT_Bitmap_New( FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Copy */ + /* */ + /* <Description> */ + /* Copy a bitmap into another one. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: A handle to the source bitmap. */ + /* */ + /* <Output> */ + /* target :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Copy( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Embolden */ + /* */ + /* <Description> */ + /* Embolden a bitmap. The new bitmap will be about `xStrength' */ + /* pixels wider and `yStrength' pixels higher. The left and bottom */ + /* borders are kept unchanged. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* xStrength :: How strong the glyph is emboldened horizontally. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* yStrength :: How strong the glyph is emboldened vertically. */ + /* Expressed in 26.6 pixel format. */ + /* */ + /* <InOut> */ + /* bitmap :: A handle to the target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The current implementation restricts `xStrength' to be less than */ + /* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ + /* */ + /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ + /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ + /* */ + /* Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format */ + /* are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Embolden( FT_Library library, + FT_Bitmap* bitmap, + FT_Pos xStrength, + FT_Pos yStrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Convert */ + /* */ + /* <Description> */ + /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */ + /* to a bitmap object with depth 8bpp, making the number of used */ + /* bytes line (a.k.a. the `pitch') a multiple of `alignment'. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* source :: The source bitmap. */ + /* */ + /* alignment :: The pitch of the bitmap is a multiple of this */ + /* parameter. Common values are 1, 2, or 4. */ + /* */ + /* <Output> */ + /* target :: The target bitmap. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* It is possible to call @FT_Bitmap_Convert multiple times without */ + /* calling @FT_Bitmap_Done (the memory is simply reallocated). */ + /* */ + /* Use @FT_Bitmap_Done to finally remove the bitmap object. */ + /* */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Convert( FT_Library library, + const FT_Bitmap *source, + FT_Bitmap *target, + FT_Int alignment ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GlyphSlot_Own_Bitmap */ + /* */ + /* <Description> */ + /* Make sure that a glyph slot owns `slot->bitmap'. */ + /* */ + /* <Input> */ + /* slot :: The glyph slot. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function is to be used in combination with */ + /* @FT_Bitmap_Embolden. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Bitmap_Done */ + /* */ + /* <Description> */ + /* Destroy a bitmap object initialized with @FT_Bitmap_Init. */ + /* */ + /* <Input> */ + /* library :: A handle to a library object. */ + /* */ + /* bitmap :: The bitmap object to be freed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `library' argument is taken to have access to FreeType's */ + /* memory handling functions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Bitmap_Done( FT_Library library, + FT_Bitmap *bitmap ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTBITMAP_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftbzip2.h b/lib/windows64/include/freetype/ftbzip2.h new file mode 100644 index 0000000..c25f946 --- /dev/null +++ b/lib/windows64/include/freetype/ftbzip2.h @@ -0,0 +1,102 @@ +/***************************************************************************/ +/* */ +/* ftbzip2.h */ +/* */ +/* Bzip2-compressed stream support. */ +/* */ +/* Copyright 2010-2015 by */ +/* Joel Klinghed. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBZIP2_H__ +#define __FTBZIP2_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* bzip2 */ + /* */ + /* <Title> */ + /* BZIP2 Streams */ + /* */ + /* <Abstract> */ + /* Using bzip2-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Bzip2-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenBzip2 + * + * @description: + * Open a new stream to parse bzip2-compressed font files. This is + * mainly used to support the compressed `*.pcf.bz2' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed stream + * from it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with bzip2 support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTBZIP2_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftcache.h b/lib/windows64/include/freetype/ftcache.h new file mode 100644 index 0000000..68525bb --- /dev/null +++ b/lib/windows64/include/freetype/ftcache.h @@ -0,0 +1,1057 @@ +/***************************************************************************/ +/* */ +/* ftcache.h */ +/* */ +/* FreeType Cache subsystem (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCACHE_H__ +#define __FTCACHE_H__ + + +#include <ft2build.h> +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************* + * + * <Section> + * cache_subsystem + * + * <Title> + * Cache Sub-System + * + * <Abstract> + * How to cache face, size, and glyph data with FreeType~2. + * + * <Description> + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_' prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert an @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. To monitor termination of face objects, the + * finalizer callback in the `generic' field of the @FT_Face object can + * be used, which might also be used to store the @FTC_FaceID of the + * face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * *persistent*, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may + * keep internally. Failure to do so will lead to incorrect behaviour + * or even crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then + * later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient + * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small + * bitmaps directly. (A small bitmap is one whose metrics and + * dimensions all fit into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * <Order> + * FTC_Manager + * FTC_FaceID + * FTC_Face_Requester + * + * FTC_Manager_New + * FTC_Manager_Reset + * FTC_Manager_Done + * FTC_Manager_LookupFace + * FTC_Manager_LookupSize + * FTC_Manager_RemoveFaceID + * + * FTC_Node + * FTC_Node_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** BASIC TYPE DEFINITIONS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined + * structure containing a font file path, and face index. + * + * @note: + * Never use NULL as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager that calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even + * memory leaks and crashes. + */ + typedef FT_Pointer FTC_FaceID; + + + /************************************************************************ + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * <Input> + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * <Output> + * aface :: + * A new @FT_Face handle. + * + * <Return> + * FreeType error code. 0~means success. + * + * <Note> + * The third parameter `req_data' is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ + typedef FT_Error + (*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer req_data, + FT_Face* aface ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** CACHE MANAGER OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Manager */ + /* */ + /* <Description> */ + /* This object corresponds to one instance of the cache-subsystem. */ + /* It is used to cache one or more @FT_Face objects, along with */ + /* corresponding @FT_Size objects. */ + /* */ + /* The manager intentionally limits the total number of opened */ + /* @FT_Face and @FT_Size objects to control memory usage. See the */ + /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ + /* */ + /* The manager is also used to cache `nodes' of various types while */ + /* limiting their total memory usage. */ + /* */ + /* All limitations are enforced by keeping lists of managed objects */ + /* in most-recently-used order, and flushing old nodes to make room */ + /* for new ones. */ + /* */ + typedef struct FTC_ManagerRec_* FTC_Manager; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_Node */ + /* */ + /* <Description> */ + /* An opaque handle to a cache node object. Each cache node is */ + /* reference-counted. A node with a count of~0 might be flushed */ + /* out of a full cache whenever a lookup request is performed. */ + /* */ + /* If you look up nodes, you have the ability to `acquire' them, */ + /* i.e., to increment their reference count. This will prevent the */ + /* node from being flushed out of the cache until you explicitly */ + /* `release' it (see @FTC_Node_Unref). */ + /* */ + /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ + /* */ + typedef struct FTC_NodeRec_* FTC_Node; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_New */ + /* */ + /* <Description> */ + /* Create a new cache manager. */ + /* */ + /* <Input> */ + /* library :: The parent FreeType library handle to use. */ + /* */ + /* max_faces :: Maximum number of opened @FT_Face objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ + /* this cache instance. Use~0 for defaults. */ + /* */ + /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ + /* Use~0 for defaults. Note that this value does not */ + /* account for managed @FT_Face and @FT_Size objects. */ + /* */ + /* requester :: An application-provided callback used to translate */ + /* face IDs into real @FT_Face objects. */ + /* */ + /* req_data :: A generic pointer that is passed to the requester */ + /* each time it is called (see @FTC_Face_Requester). */ + /* */ + /* <Output> */ + /* amanager :: A handle to a new manager object. 0~in case of */ + /* failure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Reset */ + /* */ + /* <Description> */ + /* Empty a given cache manager. This simply gets rid of all the */ + /* currently cached @FT_Face and @FT_Size objects within the manager. */ + /* */ + /* <InOut> */ + /* manager :: A handle to the manager. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Reset( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_Done */ + /* */ + /* <Description> */ + /* Destroy a given manager after emptying it. */ + /* */ + /* <Input> */ + /* manager :: A handle to the target cache manager object. */ + /* */ + FT_EXPORT( void ) + FTC_Manager_Done( FTC_Manager manager ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupFace */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Face object that corresponds to a given face ID */ + /* through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* face_id :: The ID of the face object. */ + /* */ + /* <Output> */ + /* aface :: A handle to the face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Face object is always owned by the manager. You */ + /* should never try to discard it yourself. */ + /* */ + /* The @FT_Face object doesn't necessarily have a current size object */ + /* (i.e., face->size can be~0). If you need a specific `font size', */ + /* use @FTC_Manager_LookupSize instead. */ + /* */ + /* Never change the face's transformation matrix (i.e., never call */ + /* the @FT_Set_Transform function) on a returned face! If you need */ + /* to transform glyphs, do it yourself after glyph loading. */ + /* */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory was available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_ScalerRec */ + /* */ + /* <Description> */ + /* A structure used to describe a given character size in either */ + /* pixels or points to the cache manager. See */ + /* @FTC_Manager_LookupSize. */ + /* */ + /* <Fields> */ + /* face_id :: The source face ID. */ + /* */ + /* width :: The character width. */ + /* */ + /* height :: The character height. */ + /* */ + /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ + /* interpreted as integer pixel character sizes. */ + /* Otherwise, they are expressed as 1/64th of points. */ + /* */ + /* x_res :: Only used when `pixel' is value~0 to indicate the */ + /* horizontal resolution in dpi. */ + /* */ + /* y_res :: Only used when `pixel' is value~0 to indicate the */ + /* vertical resolution in dpi. */ + /* */ + /* <Note> */ + /* This type is mainly used to retrieve @FT_Size objects through the */ + /* cache manager. */ + /* */ + typedef struct FTC_ScalerRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int pixel; + FT_UInt x_res; + FT_UInt y_res; + + } FTC_ScalerRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_Scaler */ + /* */ + /* <Description> */ + /* A handle to an @FTC_ScalerRec structure. */ + /* */ + typedef struct FTC_ScalerRec_* FTC_Scaler; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Manager_LookupSize */ + /* */ + /* <Description> */ + /* Retrieve the @FT_Size object that corresponds to a given */ + /* @FTC_ScalerRec pointer through a cache manager. */ + /* */ + /* <Input> */ + /* manager :: A handle to the cache manager. */ + /* */ + /* scaler :: A scaler handle. */ + /* */ + /* <Output> */ + /* asize :: A handle to the size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned @FT_Size object is always owned by the manager. You */ + /* should never try to discard it by yourself. */ + /* */ + /* You can access the parent @FT_Face object simply as `size->face' */ + /* if you need it. Note that this object is also owned by the */ + /* manager. */ + /* */ + /* <Note> */ + /* When you perform a lookup, out-of-memory errors are detected */ + /* _within_ the lookup and force incremental flushes of the cache */ + /* until enough memory is released for the lookup to succeed. */ + /* */ + /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ + /* already been completely flushed, and still no memory is available */ + /* for the operation. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_Node_Unref */ + /* */ + /* <Description> */ + /* Decrement a cache node's internal reference count. When the count */ + /* reaches 0, it is not destroyed but becomes eligible for subsequent */ + /* cache flushes. */ + /* */ + /* <Input> */ + /* node :: The cache node handle. */ + /* */ + /* manager :: The cache manager handle. */ + /* */ + FT_EXPORT( void ) + FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + + /************************************************************************* + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that + * a given @FTC_FaceID is no longer valid, either because its + * content changed, or because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id', with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear + * in later lookups with the same `face_id' value, and to be immediately + * destroyed when released by all their users. + * + */ + FT_EXPORT( void ) + FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to + * hold character codes -> glyph indices mappings. + * + */ + typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + + /************************************************************************* + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ + FT_EXPORT( FT_Error ) + FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + + /************************************************************************ + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means `no glyph'. + * + */ + FT_EXPORT( FT_UInt ) + FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cache_subsystem */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** IMAGE CACHE OBJECT *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /************************************************************************* + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ + typedef struct FTC_ImageTypeRec_ + { + FTC_FaceID face_id; + FT_UInt width; + FT_UInt height; + FT_Int32 flags; + + } FTC_ImageTypeRec; + + + /************************************************************************* + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ + typedef struct FTC_ImageTypeRec_* FTC_ImageType; + + + /* */ + + +#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ + ( (d1)->face_id == (d2)->face_id && \ + (d1)->width == (d2)->width && \ + (d1)->flags == (d2)->flags ) + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_ImageCache */ + /* */ + /* <Description> */ + /* A handle to a glyph image cache object. They are designed to */ + /* hold many distinct glyph images while not exceeding a certain */ + /* memory threshold. */ + /* */ + typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_New */ + /* */ + /* <Description> */ + /* Create a new glyph image cache. */ + /* */ + /* <Input> */ + /* manager :: The parent manager for the image cache. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new glyph image cache object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_Lookup */ + /* */ + /* <Description> */ + /* Retrieve a given glyph image from a glyph image cache. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* type :: A pointer to a glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_ImageCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source glyph image cache. */ + /* */ + /* scaler :: A pointer to a scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index to retrieve. */ + /* */ + /* <Output> */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ + /* failure. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The returned glyph is owned and managed by the glyph image cache. */ + /* Never try to transform or discard it manually! You can however */ + /* create a copy with @FT_Glyph_Copy and modify the new one. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the glyph image, after increasing its reference */ + /* count. This ensures that the node (as well as the @FT_Glyph) will */ + /* always be kept in the cache until you call @FTC_Node_Unref to */ + /* `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the @FT_Glyph could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ + /* glyphs; you should always use the FreeType cache API instead. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBit */ + /* */ + /* <Description> */ + /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ + /* structure for details. */ + /* */ + typedef struct FTC_SBitRec_* FTC_SBit; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FTC_SBitRec */ + /* */ + /* <Description> */ + /* A very compact structure used to describe a small glyph bitmap. */ + /* */ + /* <Fields> */ + /* width :: The bitmap width in pixels. */ + /* */ + /* height :: The bitmap height in pixels. */ + /* */ + /* left :: The horizontal distance from the pen position to the */ + /* left bitmap border (a.k.a. `left side bearing', or */ + /* `lsb'). */ + /* */ + /* top :: The vertical distance from the pen position (on the */ + /* baseline) to the upper bitmap border (a.k.a. `top */ + /* side bearing'). The distance is positive for upwards */ + /* y~coordinates. */ + /* */ + /* format :: The format of the glyph bitmap (monochrome or gray). */ + /* */ + /* max_grays :: Maximum gray level value (in the range 1 to~255). */ + /* */ + /* pitch :: The number of bytes per bitmap line. May be positive */ + /* or negative. */ + /* */ + /* xadvance :: The horizontal advance width in pixels. */ + /* */ + /* yadvance :: The vertical advance height in pixels. */ + /* */ + /* buffer :: A pointer to the bitmap pixels. */ + /* */ + typedef struct FTC_SBitRec_ + { + FT_Byte width; + FT_Byte height; + FT_Char left; + FT_Char top; + + FT_Byte format; + FT_Byte max_grays; + FT_Short pitch; + FT_Char xadvance; + FT_Char yadvance; + + FT_Byte* buffer; + + } FTC_SBitRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FTC_SBitCache */ + /* */ + /* <Description> */ + /* A handle to a small bitmap cache. These are special cache objects */ + /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ + /* much more efficient way than the traditional glyph image cache */ + /* implemented by @FTC_ImageCache. */ + /* */ + typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_New */ + /* */ + /* <Description> */ + /* Create a new cache to store small glyph bitmaps. */ + /* */ + /* <Input> */ + /* manager :: A handle to the source cache manager. */ + /* */ + /* <Output> */ + /* acache :: A handle to the new sbit cache. NULL in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_Lookup */ + /* */ + /* <Description> */ + /* Look up a given small glyph bitmap in a given sbit cache and */ + /* `lock' it to prevent its flushing from the cache until needed. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* type :: A pointer to the glyph image type descriptor. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding cache */ + /* node after incrementing its reference count (see note */ + /* below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FTC_SBitCache_LookupScaler */ + /* */ + /* <Description> */ + /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ + /* to specify the face ID and its size. */ + /* */ + /* <Input> */ + /* cache :: A handle to the source sbit cache. */ + /* */ + /* scaler :: A pointer to the scaler descriptor. */ + /* */ + /* load_flags :: The corresponding load flags. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* sbit :: A handle to a small bitmap descriptor. */ + /* */ + /* anode :: Used to return the address of of the corresponding */ + /* cache node after incrementing its reference count */ + /* (see note below). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The small bitmap descriptor and its bit buffer are owned by the */ + /* cache and should never be freed by the application. They might */ + /* as well disappear from memory on the next cache lookup, so don't */ + /* treat them as persistent data. */ + /* */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ + /* glyph bitmap. */ + /* */ + /* If `anode' is _not_ NULL, it receives the address of the cache */ + /* node containing the bitmap, after increasing its reference count. */ + /* This ensures that the node (as well as the image) will always be */ + /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ + /* */ + /* If `anode' is NULL, the cache node is left unchanged, which means */ + /* that the bitmap could be flushed out of the cache on the next */ + /* call to one of the caching sub-system APIs. Don't assume that it */ + /* is persistent! */ + /* */ + FT_EXPORT( FT_Error ) + FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTCACHE_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftcffdrv.h b/lib/windows64/include/freetype/ftcffdrv.h new file mode 100644 index 0000000..6c8e416 --- /dev/null +++ b/lib/windows64/include/freetype/ftcffdrv.h @@ -0,0 +1,262 @@ +/***************************************************************************/ +/* */ +/* ftcffdrv.h */ +/* */ +/* FreeType API for controlling the CFF driver (specification only). */ +/* */ +/* Copyright 2013-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCFFDRV_H__ +#define __FTCFFDRV_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * cff_driver + * + * @title: + * The CFF driver + * + * @abstract: + * Controlling the CFF driver module. + * + * @description: + * While FreeType's CFF driver doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The list below gives the available properties + * together with the necessary macros and structures. + * + * The CFF driver's module name is `cff'. + * + * *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine* + * + * The rasterizer is positioning horizontal features (e.g., ascender + * height & x-height, or crossbars) on the pixel grid and minimizing the + * amount of antialiasing applied to them, while placing vertical + * features (vertical stems) on the pixel grid without hinting, thus + * representing the stem position and weight accurately. Sometimes the + * vertical stems may be only partially black. In this context, + * `antialiasing' means that stems are not positioned exactly on pixel + * borders, causing a fuzzy appearance. + * + * There are two principles behind this approach. + * + * 1) No hinting in the horizontal direction: Unlike `superhinted' + * TrueType, which changes glyph widths to accommodate regular + * inter-glyph spacing, Adobe's approach is `faithful to the design' in + * representing both the glyph width and the inter-glyph spacing + * designed for the font. This makes the screen display as close as it + * can be to the result one would get with infinite resolution, while + * preserving what is considered the key characteristics of each glyph. + * Note that the distances between unhinted and grid-fitted positions at + * small sizes are comparable to kerning values and thus would be + * noticeable (and distracting) while reading if hinting were applied. + * + * One of the reasons to not hint horizontally is antialiasing for LCD + * screens: The pixel geometry of modern displays supplies three + * vertical sub-pixels as the eye moves horizontally across each visible + * pixel. On devices where we can be certain this characteristic is + * present a rasterizer can take advantage of the sub-pixels to add + * increments of weight. In Western writing systems this turns out to + * be the more critical direction anyway; the weights and spacing of + * vertical stems (see above) are central to Armenian, Cyrillic, Greek, + * and Latin type designs. Even when the rasterizer uses greyscale + * antialiasing instead of color (a necessary compromise when one + * doesn't know the screen characteristics), the unhinted vertical + * features preserve the design's weight and spacing much better than + * aliased type would. + * + * 2) Aligment in the vertical direction: Weights and spacing along the + * y~axis are less critical; what is much more important is the visual + * alignment of related features (like cap-height and x-height). The + * sense of alignment for these is enhanced by the sharpness of grid-fit + * edges, while the cruder vertical resolution (full pixels instead of + * 1/3 pixels) is less of a problem. + * + * On the technical side, horizontal alignment zones for ascender, + * x-height, and other important height values (traditionally called + * `blue zones') as defined in the font are positioned independently, + * each being rounded to the nearest pixel edge, taking care of + * overshoot suppression at small sizes, stem darkening, and scaling. + * + * Hstems (this is, hint values defined in the font to help align + * horizontal features) that fall within a blue zone are said to be + * `captured' and are aligned to that zone. Uncaptured stems are moved + * in one of four ways, top edge up or down, bottom edge up or down. + * Unless there are conflicting hstems, the smallest movement is taken + * to minimize distortion. + * + * @order: + * hinting-engine + * no-stem-darkening + * darkening-parameters + * + */ + + + /************************************************************************** + * + * @property: + * hinting-engine + * + * @description: + * Thanks to Adobe, which contributed a new hinting (and parsing) + * engine, an application can select between `freetype' and `adobe' if + * compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration + * macro isn't defined, `hinting-engine' does nothing. + * + * The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is + * defined, and `adobe' otherwise. + * + * The following example code demonstrates how to select Adobe's hinting + * engine (omitting the error handling). + * + * { + * FT_Library library; + * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_CFF_HINTING_XXX + * + * @description: + * A list of constants used for the @hinting-engine property to select + * the hinting engine for CFF fonts. + * + * @values: + * FT_CFF_HINTING_FREETYPE :: + * Use the old FreeType hinting engine. + * + * FT_CFF_HINTING_ADOBE :: + * Use the hinting engine contributed by Adobe. + * + */ +#define FT_CFF_HINTING_FREETYPE 0 +#define FT_CFF_HINTING_ADOBE 1 + + + /************************************************************************** + * + * @property: + * no-stem-darkening + * + * @description: + * By default, the Adobe CFF engine darkens stems at smaller sizes, + * regardless of hinting, to enhance contrast. This feature requires + * a rendering system with proper gamma correction. Setting this + * property, stem darkening gets switched off. + * + * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. + * + * { + * FT_Library library; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @property: + * darkening-parameters + * + * @description: + * By default, the Adobe CFF engine darkens stems as follows (if the + * `no-stem-darkening' property isn't set): + * + * { + * stem width <= 0.5px: darkening amount = 0.4px + * stem width = 1px: darkening amount = 0.275px + * stem width = 1.667px: darkening amount = 0.275px + * stem width >= 2.333px: darkening amount = 0px + * } + * + * and piecewise linear in-between. At configuration time, these four + * control points can be set with the macro + * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control + * points can be changed using the `darkening-parameters' property, as + * the following example demonstrates. + * + * { + * FT_Library library; + * FT_Int darken_params[8] = { 500, 300, // x1, y1 + * 1000, 200, // x2, y2 + * 1500, 100, // x3, y3 + * 2000, 0 }; // x4, y4 + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "darkening-parameters", darken_params ); + * } + * + * The x~values give the stem width, and the y~values the darkening + * amount. The unit is 1000th of pixels. All coordinate values must be + * positive; the x~values must be monotonically increasing; the + * y~values must be monotonically decreasing and smaller than or + * equal to 500 (corresponding to half a pixel); the slope of each + * linear piece must be shallower than -1 (e.g., -.4). + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + /* */ + + +FT_END_HEADER + + +#endif /* __FTCFFDRV_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftchapters.h b/lib/windows64/include/freetype/ftchapters.h new file mode 100644 index 0000000..d333761 --- /dev/null +++ b/lib/windows64/include/freetype/ftchapters.h @@ -0,0 +1,121 @@ +/***************************************************************************/ +/* */ +/* This file defines the structure of the FreeType reference. */ +/* It is used by the python script that generates the HTML files. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* general_remarks */ +/* */ +/* <Title> */ +/* General Remarks */ +/* */ +/* <Sections> */ +/* header_inclusion */ +/* user_allocation */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* core_api */ +/* */ +/* <Title> */ +/* Core API */ +/* */ +/* <Sections> */ +/* version */ +/* basic_types */ +/* base_interface */ +/* glyph_variants */ +/* glyph_management */ +/* mac_specific */ +/* sizes_management */ +/* header_file_macros */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* format_specific */ +/* */ +/* <Title> */ +/* Format-Specific API */ +/* */ +/* <Sections> */ +/* multiple_masters */ +/* truetype_tables */ +/* type1_tables */ +/* sfnt_names */ +/* bdf_fonts */ +/* cid_fonts */ +/* pfr_fonts */ +/* winfnt_fonts */ +/* font_formats */ +/* gasp_table */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* module_specific */ +/* */ +/* <Title> */ +/* Controlling FreeType Modules */ +/* */ +/* <Sections> */ +/* auto_hinter */ +/* cff_driver */ +/* tt_driver */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* cache_subsystem */ +/* */ +/* <Title> */ +/* Cache Sub-System */ +/* */ +/* <Sections> */ +/* cache_subsystem */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* <Chapter> */ +/* support_api */ +/* */ +/* <Title> */ +/* Support API */ +/* */ +/* <Sections> */ +/* computations */ +/* list_processing */ +/* outline_processing */ +/* quick_advance */ +/* bitmap_handling */ +/* raster */ +/* glyph_stroker */ +/* system_interface */ +/* module_management */ +/* gzip */ +/* lzw */ +/* bzip2 */ +/* lcd_filtering */ +/* */ +/***************************************************************************/ diff --git a/lib/windows64/include/freetype/ftcid.h b/lib/windows64/include/freetype/ftcid.h new file mode 100644 index 0000000..05741c8 --- /dev/null +++ b/lib/windows64/include/freetype/ftcid.h @@ -0,0 +1,168 @@ +/***************************************************************************/ +/* */ +/* ftcid.h */ +/* */ +/* FreeType API for accessing CID font information (specification). */ +/* */ +/* Copyright 2007-2015 by */ +/* Dereg Clegg and Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCID_H__ +#define __FTCID_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* cid_fonts */ + /* */ + /* <Title> */ + /* CID Fonts */ + /* */ + /* <Abstract> */ + /* CID-keyed font specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of CID-keyed font specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In + * constrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SNFT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTCID_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/fterrdef.h b/lib/windows64/include/freetype/fterrdef.h new file mode 100644 index 0000000..1bf0751 --- /dev/null +++ b/lib/windows64/include/freetype/fterrdef.h @@ -0,0 +1,249 @@ +/***************************************************************************/ +/* */ +/* fterrdef.h */ +/* */ +/* FreeType error codes (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST OF ERROR CODES/MESSAGES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + + /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ + /* including this file. */ + + + /* generic errors */ + + FT_NOERRORDEF_( Ok, 0x00, + "no error" ) + + FT_ERRORDEF_( Cannot_Open_Resource, 0x01, + "cannot open resource" ) + FT_ERRORDEF_( Unknown_File_Format, 0x02, + "unknown file format" ) + FT_ERRORDEF_( Invalid_File_Format, 0x03, + "broken file" ) + FT_ERRORDEF_( Invalid_Version, 0x04, + "invalid FreeType version" ) + FT_ERRORDEF_( Lower_Module_Version, 0x05, + "module version is too low" ) + FT_ERRORDEF_( Invalid_Argument, 0x06, + "invalid argument" ) + FT_ERRORDEF_( Unimplemented_Feature, 0x07, + "unimplemented feature" ) + FT_ERRORDEF_( Invalid_Table, 0x08, + "broken table" ) + FT_ERRORDEF_( Invalid_Offset, 0x09, + "broken offset within table" ) + FT_ERRORDEF_( Array_Too_Large, 0x0A, + "array allocation size too large" ) + FT_ERRORDEF_( Missing_Module, 0x0B, + "missing module" ) + FT_ERRORDEF_( Missing_Property, 0x0C, + "missing property" ) + + /* glyph/character errors */ + + FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, + "invalid glyph index" ) + FT_ERRORDEF_( Invalid_Character_Code, 0x11, + "invalid character code" ) + FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, + "unsupported glyph image format" ) + FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, + "cannot render this glyph format" ) + FT_ERRORDEF_( Invalid_Outline, 0x14, + "invalid outline" ) + FT_ERRORDEF_( Invalid_Composite, 0x15, + "invalid composite glyph" ) + FT_ERRORDEF_( Too_Many_Hints, 0x16, + "too many hints" ) + FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, + "invalid pixel size" ) + + /* handle errors */ + + FT_ERRORDEF_( Invalid_Handle, 0x20, + "invalid object handle" ) + FT_ERRORDEF_( Invalid_Library_Handle, 0x21, + "invalid library handle" ) + FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, + "invalid module handle" ) + FT_ERRORDEF_( Invalid_Face_Handle, 0x23, + "invalid face handle" ) + FT_ERRORDEF_( Invalid_Size_Handle, 0x24, + "invalid size handle" ) + FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, + "invalid glyph slot handle" ) + FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, + "invalid charmap handle" ) + FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, + "invalid cache manager handle" ) + FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, + "invalid stream handle" ) + + /* driver errors */ + + FT_ERRORDEF_( Too_Many_Drivers, 0x30, + "too many modules" ) + FT_ERRORDEF_( Too_Many_Extensions, 0x31, + "too many extensions" ) + + /* memory errors */ + + FT_ERRORDEF_( Out_Of_Memory, 0x40, + "out of memory" ) + FT_ERRORDEF_( Unlisted_Object, 0x41, + "unlisted object" ) + + /* stream errors */ + + FT_ERRORDEF_( Cannot_Open_Stream, 0x51, + "cannot open stream" ) + FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, + "invalid stream seek" ) + FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, + "invalid stream skip" ) + FT_ERRORDEF_( Invalid_Stream_Read, 0x54, + "invalid stream read" ) + FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, + "invalid stream operation" ) + FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, + "invalid frame operation" ) + FT_ERRORDEF_( Nested_Frame_Access, 0x57, + "nested frame access" ) + FT_ERRORDEF_( Invalid_Frame_Read, 0x58, + "invalid frame read" ) + + /* raster errors */ + + FT_ERRORDEF_( Raster_Uninitialized, 0x60, + "raster uninitialized" ) + FT_ERRORDEF_( Raster_Corrupted, 0x61, + "raster corrupted" ) + FT_ERRORDEF_( Raster_Overflow, 0x62, + "raster overflow" ) + FT_ERRORDEF_( Raster_Negative_Height, 0x63, + "negative height while rastering" ) + + /* cache errors */ + + FT_ERRORDEF_( Too_Many_Caches, 0x70, + "too many registered caches" ) + + /* TrueType and SFNT errors */ + + FT_ERRORDEF_( Invalid_Opcode, 0x80, + "invalid opcode" ) + FT_ERRORDEF_( Too_Few_Arguments, 0x81, + "too few arguments" ) + FT_ERRORDEF_( Stack_Overflow, 0x82, + "stack overflow" ) + FT_ERRORDEF_( Code_Overflow, 0x83, + "code overflow" ) + FT_ERRORDEF_( Bad_Argument, 0x84, + "bad argument" ) + FT_ERRORDEF_( Divide_By_Zero, 0x85, + "division by zero" ) + FT_ERRORDEF_( Invalid_Reference, 0x86, + "invalid reference" ) + FT_ERRORDEF_( Debug_OpCode, 0x87, + "found debug opcode" ) + FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, + "found ENDF opcode in execution stream" ) + FT_ERRORDEF_( Nested_DEFS, 0x89, + "nested DEFS" ) + FT_ERRORDEF_( Invalid_CodeRange, 0x8A, + "invalid code range" ) + FT_ERRORDEF_( Execution_Too_Long, 0x8B, + "execution context too long" ) + FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, + "too many function definitions" ) + FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, + "too many instruction definitions" ) + FT_ERRORDEF_( Table_Missing, 0x8E, + "SFNT font table missing" ) + FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, + "horizontal header (hhea) table missing" ) + FT_ERRORDEF_( Locations_Missing, 0x90, + "locations (loca) table missing" ) + FT_ERRORDEF_( Name_Table_Missing, 0x91, + "name table missing" ) + FT_ERRORDEF_( CMap_Table_Missing, 0x92, + "character map (cmap) table missing" ) + FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, + "horizontal metrics (hmtx) table missing" ) + FT_ERRORDEF_( Post_Table_Missing, 0x94, + "PostScript (post) table missing" ) + FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, + "invalid horizontal metrics" ) + FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, + "invalid character map (cmap) format" ) + FT_ERRORDEF_( Invalid_PPem, 0x97, + "invalid ppem value" ) + FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, + "invalid vertical metrics" ) + FT_ERRORDEF_( Could_Not_Find_Context, 0x99, + "could not find context" ) + FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, + "invalid PostScript (post) table format" ) + FT_ERRORDEF_( Invalid_Post_Table, 0x9B, + "invalid PostScript (post) table" ) + + /* CFF, CID, and Type 1 errors */ + + FT_ERRORDEF_( Syntax_Error, 0xA0, + "opcode syntax error" ) + FT_ERRORDEF_( Stack_Underflow, 0xA1, + "argument stack underflow" ) + FT_ERRORDEF_( Ignore, 0xA2, + "ignore" ) + FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, + "no Unicode glyph name found" ) + FT_ERRORDEF_( Glyph_Too_Big, 0xA4, + "glyph to big for hinting" ) + + /* BDF errors */ + + FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, + "`STARTFONT' field missing" ) + FT_ERRORDEF_( Missing_Font_Field, 0xB1, + "`FONT' field missing" ) + FT_ERRORDEF_( Missing_Size_Field, 0xB2, + "`SIZE' field missing" ) + FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, + "`FONTBOUNDINGBOX' field missing" ) + FT_ERRORDEF_( Missing_Chars_Field, 0xB4, + "`CHARS' field missing" ) + FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, + "`STARTCHAR' field missing" ) + FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, + "`ENCODING' field missing" ) + FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, + "`BBX' field missing" ) + FT_ERRORDEF_( Bbx_Too_Big, 0xB8, + "`BBX' too big" ) + FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, + "Font header corrupted or missing fields" ) + FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, + "Font glyphs corrupted or missing fields" ) + + +/* END */ diff --git a/lib/windows64/include/freetype/fterrors.h b/lib/windows64/include/freetype/fterrors.h new file mode 100644 index 0000000..376bee6 --- /dev/null +++ b/lib/windows64/include/freetype/fterrors.h @@ -0,0 +1,198 @@ +/***************************************************************************/ +/* */ +/* fterrors.h */ +/* */ +/* FreeType error code handling (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This special header file is used to define the handling of FT2 */ + /* enumeration constants. It can also be used to generate error message */ + /* strings with a small macro trick explained below. */ + /* */ + /* I - Error Formats */ + /* ----------------- */ + /* */ + /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ + /* defined in ftoption.h in order to make the higher byte indicate */ + /* the module where the error has happened (this is not compatible */ + /* with standard builds of FreeType 2). See the file `ftmoderr.h' for */ + /* more details. */ + /* */ + /* */ + /* II - Error Message strings */ + /* -------------------------- */ + /* */ + /* The error definitions below are made through special macros that */ + /* allow client applications to build a table of error message strings */ + /* if they need it. The strings are not included in a normal build of */ + /* FreeType 2 to save space (most client applications do not use */ + /* them). */ + /* */ + /* To do so, you have to define the following macros before including */ + /* this file: */ + /* */ + /* FT_ERROR_START_LIST :: */ + /* This macro is called before anything else to define the start of */ + /* the error list. It is followed by several FT_ERROR_DEF calls */ + /* (see below). */ + /* */ + /* FT_ERROR_DEF( e, v, s ) :: */ + /* This macro is called to define one single error. */ + /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ + /* `v' is the error numerical value. */ + /* `s' is the corresponding error string. */ + /* */ + /* FT_ERROR_END_LIST :: */ + /* This macro ends the list. */ + /* */ + /* Additionally, you have to undefine __FTERRORS_H__ before #including */ + /* this file. */ + /* */ + /* Here is a simple example: */ + /* */ + /* { */ + /* #undef __FTERRORS_H__ */ + /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ + /* #define FT_ERROR_START_LIST { */ + /* #define FT_ERROR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int err_code; */ + /* const char* err_msg; */ + /* } ft_errors[] = */ + /* */ + /* #include FT_ERRORS_H */ + /* } */ + /* */ + /*************************************************************************/ + + +#ifndef __FTERRORS_H__ +#define __FTERRORS_H__ + + + /* include module base error codes */ +#include FT_MODULE_ERRORS_H + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + + + /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ + /* By default, we use `FT_Err_'. */ + /* */ +#ifndef FT_ERR_PREFIX +#define FT_ERR_PREFIX FT_Err_ +#endif + + + /* FT_ERR_BASE is used as the base for module-specific errors. */ + /* */ +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS + +#ifndef FT_ERR_BASE +#define FT_ERR_BASE FT_Mod_Err_Base +#endif + +#else + +#undef FT_ERR_BASE +#define FT_ERR_BASE 0 + +#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ + + + /* If FT_ERRORDEF is not defined, we need to define a simple */ + /* enumeration type. */ + /* */ +#ifndef FT_ERRORDEF + +#define FT_ERRORDEF( e, v, s ) e = v, +#define FT_ERROR_START_LIST enum { +#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_ERRORDEF */ + + + /* this macro is used to define an error */ +#define FT_ERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) + + /* this is only used for <module>_Err_Ok, which must be 0! */ +#define FT_NOERRORDEF_( e, v, s ) \ + FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) + + +#ifdef FT_ERROR_START_LIST + FT_ERROR_START_LIST +#endif + + + /* now include the error codes */ +#include FT_ERROR_DEFINITIONS_H + + +#ifdef FT_ERROR_END_LIST + FT_ERROR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SIMPLE CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_ERROR_START_LIST +#undef FT_ERROR_END_LIST + +#undef FT_ERRORDEF +#undef FT_ERRORDEF_ +#undef FT_NOERRORDEF_ + +#undef FT_NEED_EXTERN_C +#undef FT_ERR_BASE + + /* FT_ERR_PREFIX is needed internally */ +#ifndef FT2_BUILD_LIBRARY +#undef FT_ERR_PREFIX +#endif + +#endif /* __FTERRORS_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftfntfmt.h b/lib/windows64/include/freetype/ftfntfmt.h new file mode 100644 index 0000000..1f8ff28 --- /dev/null +++ b/lib/windows64/include/freetype/ftfntfmt.h @@ -0,0 +1,92 @@ +/***************************************************************************/ +/* */ +/* ftfntfmt.h */ +/* */ +/* Support functions for font formats. */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTFNTFMT_H__ +#define __FTFNTFMT_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* font_formats */ + /* */ + /* <Title> */ + /* Font Formats */ + /* */ + /* <Abstract> */ + /* Getting the font format. */ + /* */ + /* <Description> */ + /* The single function in this section can be used to get the font */ + /* format. Note that this information is not needed normally; */ + /* however, there are special cases (like in PDF devices) where it is */ + /* important to differentiate, in spite of FreeType's uniform API. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Font_Format */ + /* */ + /* <Description> */ + /* Return a string describing the format of a given face. Possible */ + /* values are `TrueType', `Type~1', `BDF', `PCF', `Type~42', */ + /* `CID~Type~1', `CFF', `PFR', and `Windows~FNT'. */ + /* */ + /* The return value is suitable to be used as an X11 FONT_PROPERTY. */ + /* */ + /* <Input> */ + /* face :: */ + /* Input face handle. */ + /* */ + /* <Return> */ + /* Font format string. NULL in case of error. */ + /* */ + /* <Note> */ + /* A deprecated name for the same function is */ + /* `FT_Get_X11_Font_Format'. */ + /* */ + FT_EXPORT( const char* ) + FT_Get_Font_Format( FT_Face face ); + + + /* deprecated */ + FT_EXPORT( const char* ) + FT_Get_X11_Font_Format( FT_Face face ); + + + /* */ + + +FT_END_HEADER + +#endif /* __FTFNTFMT_H__ */ diff --git a/lib/windows64/include/freetype/ftgasp.h b/lib/windows64/include/freetype/ftgasp.h new file mode 100644 index 0000000..9a9b632 --- /dev/null +++ b/lib/windows64/include/freetype/ftgasp.h @@ -0,0 +1,129 @@ +/***************************************************************************/ +/* */ +/* ftgasp.h */ +/* */ +/* Access of TrueType's `gasp' table (specification). */ +/* */ +/* Copyright 2007-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef _FT_GASP_H_ +#define _FT_GASP_H_ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + + /*************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType `gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its `gasp' table, if any. This is + * mainly useful when implementing native TrueType hinting with the + * bytecode interpreter to duplicate the Windows text rendering results. + */ + + /************************************************************************* + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This *really* means TrueType bytecode interpretation. If this bit + * is not set, no hinting gets applied. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * If not set, do monochrome rendering. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * If set, smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be + * used for standard font rasterization only. Independently of that, + * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to + * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and + * `FT_GASP_DO_GRAY' are consequently ignored). + * + * `ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ +#define FT_GASP_NO_TABLE -1 +#define FT_GASP_DO_GRIDFIT 0x01 +#define FT_GASP_DO_GRAY 0x02 +#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 +#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 + + + /************************************************************************* + * + * @func: + * FT_Get_Gasp + * + * @description: + * Read the `gasp' table from a TrueType or OpenType font file and + * return the entry corresponding to a given character pixel size. + * + * @input: + * face :: The source face handle. + * ppem :: The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * `gasp' table in the face. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Int ) + FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); + + /* */ + + +#endif /* _FT_GASP_H_ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftglyph.h b/lib/windows64/include/freetype/ftglyph.h new file mode 100644 index 0000000..803ad39 --- /dev/null +++ b/lib/windows64/include/freetype/ftglyph.h @@ -0,0 +1,605 @@ +/***************************************************************************/ +/* */ +/* ftglyph.h */ +/* */ +/* FreeType convenience functions to handle glyphs (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of several convenience functions */ + /* that can be used by client applications to easily retrieve glyph */ + /* bitmaps and outlines from a given face. */ + /* */ + /* These functions should be optional if you are writing a font server */ + /* or text layout engine on top of FreeType. However, they are pretty */ + /* handy for many other simple uses of the library. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTGLYPH_H__ +#define __FTGLYPH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* glyph_management */ + /* */ + /* <Title> */ + /* Glyph Management */ + /* */ + /* <Abstract> */ + /* Generic interface to manage individual glyph data. */ + /* */ + /* <Description> */ + /* This section contains definitions used to manage glyph data */ + /* through generic FT_Glyph objects. Each of them can contain a */ + /* bitmap, a vector outline, or even images in other formats. */ + /* */ + /*************************************************************************/ + + + /* forward declaration to a private type */ + typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Glyph */ + /* */ + /* <Description> */ + /* Handle to an object used to model generic glyph images. It is a */ + /* pointer to the @FT_GlyphRec structure and can contain a glyph */ + /* bitmap or pointer. */ + /* */ + /* <Note> */ + /* Glyph objects are not owned by the library. You must thus release */ + /* them manually (through @FT_Done_Glyph) _before_ calling */ + /* @FT_Done_FreeType. */ + /* */ + typedef struct FT_GlyphRec_* FT_Glyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphRec */ + /* */ + /* <Description> */ + /* The root glyph structure contains a given glyph image plus its */ + /* advance width in 16.16 fixed-point format. */ + /* */ + /* <Fields> */ + /* library :: A handle to the FreeType library object. */ + /* */ + /* clazz :: A pointer to the glyph's class. Private. */ + /* */ + /* format :: The format of the glyph's image. */ + /* */ + /* advance :: A 16.16 vector that gives the glyph's advance width. */ + /* */ + typedef struct FT_GlyphRec_ + { + FT_Library library; + const FT_Glyph_Class* clazz; + FT_Glyph_Format format; + FT_Vector advance; + + } FT_GlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_BitmapGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model a bitmap glyph image. This is */ + /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ + /* */ + typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BitmapGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for bitmap glyph images. This really is a */ + /* `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* left :: The left-side bearing, i.e., the horizontal distance */ + /* from the current pen position to the left border of the */ + /* glyph bitmap. */ + /* */ + /* top :: The top-side bearing, i.e., the vertical distance from */ + /* the current pen position to the top border of the glyph */ + /* bitmap. This distance is positive for upwards~y! */ + /* */ + /* bitmap :: A descriptor for the bitmap. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ + /* the bitmap's contents easily. */ + /* */ + /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ + /* and is thus created and destroyed with it. */ + /* */ + typedef struct FT_BitmapGlyphRec_ + { + FT_GlyphRec root; + FT_Int left; + FT_Int top; + FT_Bitmap bitmap; + + } FT_BitmapGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_OutlineGlyph */ + /* */ + /* <Description> */ + /* A handle to an object used to model an outline glyph image. This */ + /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ + /* */ + typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_OutlineGlyphRec */ + /* */ + /* <Description> */ + /* A structure used for outline (vectorial) glyph images. This */ + /* really is a `sub-class' of @FT_GlyphRec. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Glyph fields. */ + /* */ + /* outline :: A descriptor for the outline. */ + /* */ + /* <Note> */ + /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ + /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ + /* the outline's content easily. */ + /* */ + /* As the outline is extracted from a glyph slot, its coordinates are */ + /* expressed normally in 26.6 pixels, unless the flag */ + /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ + /* */ + /* The outline's tables are always owned by the object and are */ + /* destroyed with it. */ + /* */ + typedef struct FT_OutlineGlyphRec_ + { + FT_GlyphRec root; + FT_Outline outline; + + } FT_OutlineGlyphRec; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Glyph */ + /* */ + /* <Description> */ + /* A function used to extract a glyph image from a slot. Note that */ + /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* slot :: A handle to the source glyph slot. */ + /* */ + /* <Output> */ + /* aglyph :: A handle to the glyph object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Copy */ + /* */ + /* <Description> */ + /* A function used to copy a glyph image. Note that the created */ + /* @FT_Glyph object must be released with @FT_Done_Glyph. */ + /* */ + /* <Input> */ + /* source :: A handle to the source glyph object. */ + /* */ + /* <Output> */ + /* target :: A handle to the target glyph object. 0~in case of */ + /* error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Transform */ + /* */ + /* <Description> */ + /* Transform a glyph image if its format is scalable. */ + /* */ + /* <InOut> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to a 2x2 matrix to apply. */ + /* */ + /* delta :: A pointer to a 2d vector to apply. Coordinates are */ + /* expressed in 1/64th of a pixel. */ + /* */ + /* <Return> */ + /* FreeType error code (if not 0, the glyph format is not scalable). */ + /* */ + /* <Note> */ + /* The 2x2 transformation matrix is also applied to the glyph's */ + /* advance vector. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_BBox_Mode */ + /* */ + /* <Description> */ + /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ + /* */ + /* <Values> */ + /* FT_GLYPH_BBOX_UNSCALED :: */ + /* Return unscaled font units. */ + /* */ + /* FT_GLYPH_BBOX_SUBPIXELS :: */ + /* Return unfitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_GRIDFIT :: */ + /* Return grid-fitted 26.6 coordinates. */ + /* */ + /* FT_GLYPH_BBOX_TRUNCATE :: */ + /* Return coordinates in integer pixels. */ + /* */ + /* FT_GLYPH_BBOX_PIXELS :: */ + /* Return grid-fitted pixel coordinates. */ + /* */ + typedef enum FT_Glyph_BBox_Mode_ + { + FT_GLYPH_BBOX_UNSCALED = 0, + FT_GLYPH_BBOX_SUBPIXELS = 0, + FT_GLYPH_BBOX_GRIDFIT = 1, + FT_GLYPH_BBOX_TRUNCATE = 2, + FT_GLYPH_BBOX_PIXELS = 3 + + } FT_Glyph_BBox_Mode; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_BBox_Mode' values instead */ +#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED +#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS +#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT +#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE +#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_Get_CBox */ + /* */ + /* <Description> */ + /* Return a glyph's `control box'. The control box encloses all the */ + /* outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* that contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component, which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the source glyph object. */ + /* */ + /* mode :: The mode that indicates how to interpret the returned */ + /* bounding box values. */ + /* */ + /* <Output> */ + /* acbox :: The glyph coordinate bounding box. Coordinates are */ + /* expressed in 1/64th of pixels if it is grid-fitted. */ + /* */ + /* <Note> */ + /* Coordinates are relative to the glyph origin, using the y~upwards */ + /* convention. */ + /* */ + /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ + /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ + /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ + /* is another name for this constant. */ + /* */ + /* If the font is tricky and the glyph has been loaded with */ + /* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */ + /* reasonable values for the CBox it is necessary to load the glyph */ + /* at a large ppem value (so that the hinting instructions can */ + /* properly shift and scale the subglyphs), then extracting the CBox, */ + /* which can be eventually converted back to font units. */ + /* */ + /* Note that the maximum coordinates are exclusive, which means that */ + /* one can compute the width and height of the glyph image (be it in */ + /* integer or 26.6 pixels) as: */ + /* */ + /* { */ + /* width = bbox.xMax - bbox.xMin; */ + /* height = bbox.yMax - bbox.yMin; */ + /* } */ + /* */ + /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ + /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ + /* which corresponds to: */ + /* */ + /* { */ + /* bbox.xMin = FLOOR(bbox.xMin); */ + /* bbox.yMin = FLOOR(bbox.yMin); */ + /* bbox.xMax = CEILING(bbox.xMax); */ + /* bbox.yMax = CEILING(bbox.yMax); */ + /* } */ + /* */ + /* To get the bbox in pixel coordinates, set `bbox_mode' to */ + /* @FT_GLYPH_BBOX_TRUNCATE. */ + /* */ + /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ + /* to @FT_GLYPH_BBOX_PIXELS. */ + /* */ + FT_EXPORT( void ) + FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Glyph_To_Bitmap */ + /* */ + /* <Description> */ + /* Convert a given glyph object to a bitmap glyph object. */ + /* */ + /* <InOut> */ + /* the_glyph :: A pointer to a handle to the target glyph. */ + /* */ + /* <Input> */ + /* render_mode :: An enumeration that describes how the data is */ + /* rendered. */ + /* */ + /* origin :: A pointer to a vector used to translate the glyph */ + /* image before rendering. Can be~0 (if no */ + /* translation). The origin is expressed in */ + /* 26.6 pixels. */ + /* */ + /* destroy :: A boolean that indicates that the original glyph */ + /* image should be destroyed by this function. It is */ + /* never destroyed in case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does nothing if the glyph format isn't scalable. */ + /* */ + /* The glyph image is translated with the `origin' vector before */ + /* rendering. */ + /* */ + /* The first parameter is a pointer to an @FT_Glyph handle, that will */ + /* be _replaced_ by this function (with newly allocated data). */ + /* Typically, you would use (omitting error handling): */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyph; */ + /* FT_BitmapGlyph glyph_bitmap; */ + /* */ + /* */ + /* // load glyph */ + /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ + /* */ + /* // extract glyph image */ + /* error = FT_Get_Glyph( face->glyph, &glyph ); */ + /* */ + /* // convert to a bitmap (default render mode + destroying old) */ + /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ + /* { */ + /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ + /* 0, 1 ); */ + /* if ( error ) // `glyph' unchanged */ + /* ... */ + /* } */ + /* */ + /* // access bitmap content by typecasting */ + /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ + /* */ + /* // do funny stuff with it, like blitting/drawing */ + /* ... */ + /* */ + /* // discard glyph image (bitmap or not) */ + /* FT_Done_Glyph( glyph ); */ + /* } */ + /* */ + /* */ + /* Here another example, again without error handling: */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyphs[MAX_GLYPHS] */ + /* */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ + /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* { */ + /* FT_Glyph bitmap = glyphs[idx]; */ + /* */ + /* */ + /* ... */ + /* */ + /* // after this call, `bitmap' no longer points into */ + /* // the `glyphs' array (and the old value isn't destroyed) */ + /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ + /* */ + /* ... */ + /* */ + /* FT_Done_Glyph( bitmap ); */ + /* } */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* FT_Done_Glyph( glyphs[idx] ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + FT_Vector* origin, + FT_Bool destroy ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Glyph */ + /* */ + /* <Description> */ + /* Destroy a given glyph. */ + /* */ + /* <Input> */ + /* glyph :: A handle to the target glyph object. */ + /* */ + FT_EXPORT( void ) + FT_Done_Glyph( FT_Glyph glyph ); + + /* */ + + + /* other helpful functions */ + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Multiply */ + /* */ + /* <Description> */ + /* Perform the matrix operation `b = a*b'. */ + /* */ + /* <Input> */ + /* a :: A pointer to matrix `a'. */ + /* */ + /* <InOut> */ + /* b :: A pointer to matrix `b'. */ + /* */ + /* <Note> */ + /* The result is undefined if either `a' or `b' is zero. */ + /* */ + FT_EXPORT( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Matrix_Invert */ + /* */ + /* <Description> */ + /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ + /* */ + /* <InOut> */ + /* matrix :: A pointer to the target matrix. Remains untouched in */ + /* case of error. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLYPH_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows64/include/freetype/ftgxval.h b/lib/windows64/include/freetype/ftgxval.h new file mode 100644 index 0000000..0e9ac1d --- /dev/null +++ b/lib/windows64/include/freetype/ftgxval.h @@ -0,0 +1,357 @@ +/***************************************************************************/ +/* */ +/* ftgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* Masatake YAMATO, Redhat K.K, */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGXVAL_H__ +#define __FTGXVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gx_validation */ + /* */ + /* <Title> */ + /* TrueTypeGX/AAT Validation */ + /* */ + /* <Abstract> */ + /* An API to validate TrueTypeGX/AAT tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ + /* trak, prop, lcar). */ + /* */ + /* <Order> */ + /* FT_TrueTypeGX_Validate */ + /* FT_TrueTypeGX_Free */ + /* */ + /* FT_ClassicKern_Validate */ + /* FT_ClassicKern_Free */ + /* */ + /* FT_VALIDATE_GX_LENGTH */ + /* FT_VALIDATE_GXXXX */ + /* FT_VALIDATE_CKERNXXX */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* */ + /* Warning: Use FT_VALIDATE_XXX to validate a table. */ + /* Following definitions are for gxvalid developers. */ + /* */ + /* */ + /*************************************************************************/ + +#define FT_VALIDATE_feat_INDEX 0 +#define FT_VALIDATE_mort_INDEX 1 +#define FT_VALIDATE_morx_INDEX 2 +#define FT_VALIDATE_bsln_INDEX 3 +#define FT_VALIDATE_just_INDEX 4 +#define FT_VALIDATE_kern_INDEX 5 +#define FT_VALIDATE_opbd_INDEX 6 +#define FT_VALIDATE_trak_INDEX 7 +#define FT_VALIDATE_prop_INDEX 8 +#define FT_VALIDATE_lcar_INDEX 9 +#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX + + + /************************************************************************* + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length' argument of function @FT_TrueTypeGX_Validate. + */ +#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) + + /* */ + + /* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ +#define FT_VALIDATE_GX_START 0x4000 +#define FT_VALIDATE_GX_BITFIELD( tag ) \ + ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate `feat' table. + * + * FT_VALIDATE_mort :: + * Validate `mort' table. + * + * FT_VALIDATE_morx :: + * Validate `morx' table. + * + * FT_VALIDATE_bsln :: + * Validate `bsln' table. + * + * FT_VALIDATE_just :: + * Validate `just' table. + * + * FT_VALIDATE_kern :: + * Validate `kern' table. + * + * FT_VALIDATE_opbd :: + * Validate `opbd' table. + * + * FT_VALIDATE_trak :: + * Validate `trak' table. + * + * FT_VALIDATE_prop :: + * Validate `prop' table. + * + * FT_VALIDATE_lcar :: + * Validate `lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ + +#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) +#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) +#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) +#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) +#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) +#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) +#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) +#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) +#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) +#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) + +#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ + FT_VALIDATE_mort | \ + FT_VALIDATE_morx | \ + FT_VALIDATE_bsln | \ + FT_VALIDATE_just | \ + FT_VALIDATE_kern | \ + FT_VALIDATE_opbd | \ + FT_VALIDATE_trak | \ + FT_VALIDATE_prop | \ + FT_VALIDATE_lcar ) + + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_GXXXX for possible values. + * + * table_length :: + * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. + * The array itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ + FT_EXPORT( FT_Error ) + FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + /********************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by + * @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ + FT_EXPORT( void ) + FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate + * to indicate the classic kern dialect or dialects. If the selected + * type doesn't fit, @FT_ClassicKern_Validate regards the table as + * invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the `kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the `kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the `kern' as either classic Apple or Microsoft kern table. + */ +#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) +#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) + +#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) + + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the offsets + * and indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without error + * checking (which can be quite time consuming). + * + * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value + * indicates that the table doesn't exist in the font. + */ + FT_EXPORT( FT_Error ) + FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + + /********************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ + FT_EXPORT( void ) + FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGXVAL_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftgzip.h b/lib/windows64/include/freetype/ftgzip.h new file mode 100644 index 0000000..b3a532d --- /dev/null +++ b/lib/windows64/include/freetype/ftgzip.h @@ -0,0 +1,148 @@ +/***************************************************************************/ +/* */ +/* ftgzip.h */ +/* */ +/* Gzip-compressed stream support. */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGZIP_H__ +#define __FTGZIP_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* gzip */ + /* */ + /* <Title> */ + /* GZIP Streams */ + /* */ + /* <Abstract> */ + /* Using gzip-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Gzip-specific functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************ + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is + * mainly used to support the compressed `*.pcf.gz' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from + * it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); + + + /************************************************************************ + * + * @function: + * FT_Gzip_Uncompress + * + * @description: + * Decompress a zipped input buffer into an output buffer. This function + * is modeled after zlib's `uncompress' function. + * + * @input: + * memory :: + * A FreeType memory handle. + * + * input :: + * The input buffer. + * + * input_len :: + * The length of the input buffer. + * + * @output: + * output:: + * The output buffer. + * + * @inout: + * output_len :: + * Before calling the function, this is the the total size of the + * output buffer, which must be large enough to hold the entire + * uncompressed data (so the size of the uncompressed data must be + * known in advance). After calling the function, `output_len' is the + * size of the used data in `output'. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ + FT_EXPORT( FT_Error ) + FT_Gzip_Uncompress( FT_Memory memory, + FT_Byte* output, + FT_ULong* output_len, + const FT_Byte* input, + FT_ULong input_len ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGZIP_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftimage.h b/lib/windows64/include/freetype/ftimage.h new file mode 100644 index 0000000..82f284c --- /dev/null +++ b/lib/windows64/include/freetype/ftimage.h @@ -0,0 +1,1214 @@ +/***************************************************************************/ +/* */ +/* ftimage.h */ +/* */ +/* FreeType glyph image formats and default raster interface */ +/* (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Note: A `raster' is simply a scan-line converter, used to render */ + /* FT_Outlines into FT_Bitmaps. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTIMAGE_H__ +#define __FTIMAGE_H__ + + + /* _STANDALONE_ is from ftgrays.c */ +#ifndef _STANDALONE_ +#include <ft2build.h> +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pos */ + /* */ + /* <Description> */ + /* The type FT_Pos is used to store vectorial coordinates. Depending */ + /* on the context, these can represent distances in integer font */ + /* units, or 16.16, or 26.6 fixed-point pixel coordinates. */ + /* */ + typedef signed long FT_Pos; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Vector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector; coordinates are of */ + /* the FT_Pos type. */ + /* */ + /* <Fields> */ + /* x :: The horizontal coordinate. */ + /* y :: The vertical coordinate. */ + /* */ + typedef struct FT_Vector_ + { + FT_Pos x; + FT_Pos y; + + } FT_Vector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_BBox */ + /* */ + /* <Description> */ + /* A structure used to hold an outline's bounding box, i.e., the */ + /* coordinates of its extrema in the horizontal and vertical */ + /* directions. */ + /* */ + /* <Fields> */ + /* xMin :: The horizontal minimum (left-most). */ + /* */ + /* yMin :: The vertical minimum (bottom-most). */ + /* */ + /* xMax :: The horizontal maximum (right-most). */ + /* */ + /* yMax :: The vertical maximum (top-most). */ + /* */ + /* <Note> */ + /* The bounding box is specified with the coordinates of the lower */ + /* left and the upper right corner. In PostScript, those values are */ + /* often called (llx,lly) and (urx,ury), respectively. */ + /* */ + /* If `yMin' is negative, this value gives the glyph's descender. */ + /* Otherwise, the glyph doesn't descend below the baseline. */ + /* Similarly, if `ymax' is positive, this value gives the glyph's */ + /* ascender. */ + /* */ + /* `xMin' gives the horizontal distance from the glyph's origin to */ + /* the left edge of the glyph's bounding box. If `xMin' is negative, */ + /* the glyph extends to the left of the origin. */ + /* */ + typedef struct FT_BBox_ + { + FT_Pos xMin, yMin; + FT_Pos xMax, yMax; + + } FT_BBox; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Pixel_Mode */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of pixels in a */ + /* given bitmap. Note that additional formats may be added in the */ + /* future. */ + /* */ + /* <Values> */ + /* FT_PIXEL_MODE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_PIXEL_MODE_MONO :: */ + /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ + /* are stored in most-significant order (MSB), which means that */ + /* the left-most pixel in a byte has value 128. */ + /* */ + /* FT_PIXEL_MODE_GRAY :: */ + /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ + /* images. Each pixel is stored in one byte. Note that the number */ + /* of `gray' levels is stored in the `num_grays' field of the */ + /* @FT_Bitmap structure (it generally is 256). */ + /* */ + /* FT_PIXEL_MODE_GRAY2 :: */ + /* A 2-bit per pixel bitmap, used to represent embedded */ + /* anti-aliased bitmaps in font files according to the OpenType */ + /* specification. We haven't found a single font using this */ + /* format, however. */ + /* */ + /* FT_PIXEL_MODE_GRAY4 :: */ + /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ + /* bitmaps in font files according to the OpenType specification. */ + /* We haven't found a single font using this format, however. */ + /* */ + /* FT_PIXEL_MODE_LCD :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on LCD displays; the bitmap is three times */ + /* wider than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD. */ + /* */ + /* FT_PIXEL_MODE_LCD_V :: */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on rotated LCD displays; the bitmap is three */ + /* times taller than the original glyph image. See also */ + /* @FT_RENDER_MODE_LCD_V. */ + /* */ + /* FT_PIXEL_MODE_BGRA :: */ + /* An image with four 8-bit channels per pixel, representing a */ + /* color image (such as emoticons) with alpha channel. For each */ + /* pixel, the format is BGRA, which means, the blue channel comes */ + /* first in memory. The color channels are pre-multiplied and in */ + /* the sRGB colorspace. For example, full red at half-translucent */ + /* opacity will be represented as `00,00,80,80', not `00,00,FF,80'. */ + /* See also @FT_LOAD_COLOR. */ + /* */ + typedef enum FT_Pixel_Mode_ + { + FT_PIXEL_MODE_NONE = 0, + FT_PIXEL_MODE_MONO, + FT_PIXEL_MODE_GRAY, + FT_PIXEL_MODE_GRAY2, + FT_PIXEL_MODE_GRAY4, + FT_PIXEL_MODE_LCD, + FT_PIXEL_MODE_LCD_V, + FT_PIXEL_MODE_BGRA, + + FT_PIXEL_MODE_MAX /* do not remove */ + + } FT_Pixel_Mode; + + + /* these constants are deprecated; use the corresponding `FT_Pixel_Mode' */ + /* values instead. */ +#define ft_pixel_mode_none FT_PIXEL_MODE_NONE +#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO +#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY +#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 +#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Bitmap */ + /* */ + /* <Description> */ + /* A structure used to describe a bitmap or pixmap to the raster. */ + /* Note that we now manage pixmaps of various depths through the */ + /* `pixel_mode' field. */ + /* */ + /* <Fields> */ + /* rows :: The number of bitmap rows. */ + /* */ + /* width :: The number of pixels in bitmap row. */ + /* */ + /* pitch :: The pitch's absolute value is the number of bytes */ + /* taken by one bitmap row, including padding. */ + /* However, the pitch is positive when the bitmap has */ + /* a `down' flow, and negative when it has an `up' */ + /* flow. In all cases, the pitch is an offset to add */ + /* to a bitmap pointer in order to go down one row. */ + /* */ + /* Note that `padding' means the alignment of a */ + /* bitmap to a byte border, and FreeType functions */ + /* normally align to the smallest possible integer */ + /* value. */ + /* */ + /* For the B/W rasterizer, `pitch' is always an even */ + /* number. */ + /* */ + /* To change the pitch of a bitmap (say, to make it a */ + /* multiple of 4), use @FT_Bitmap_Convert. */ + /* Alternatively, you might use callback functions to */ + /* directly render to the application's surface; see */ + /* the file `example2.cpp' in the tutorial for a */ + /* demonstration. */ + /* */ + /* buffer :: A typeless pointer to the bitmap buffer. This */ + /* value should be aligned on 32-bit boundaries in */ + /* most cases. */ + /* */ + /* num_grays :: This field is only used with */ + /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ + /* levels used in the bitmap. */ + /* */ + /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ + /* See @FT_Pixel_Mode for possible values. */ + /* */ + /* palette_mode :: This field is intended for paletted pixel modes; */ + /* it indicates how the palette is stored. Not */ + /* used currently. */ + /* */ + /* palette :: A typeless pointer to the bitmap palette; this */ + /* field is intended for paletted pixel modes. Not */ + /* used currently. */ + /* */ + typedef struct FT_Bitmap_ + { + unsigned int rows; + unsigned int width; + int pitch; + unsigned char* buffer; + unsigned short num_grays; + unsigned char pixel_mode; + unsigned char palette_mode; + void* palette; + + } FT_Bitmap; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline */ + /* */ + /* <Description> */ + /* This structure is used to describe an outline to the scan-line */ + /* converter. */ + /* */ + /* <Fields> */ + /* n_contours :: The number of contours in the outline. */ + /* */ + /* n_points :: The number of points in the outline. */ + /* */ + /* points :: A pointer to an array of `n_points' @FT_Vector */ + /* elements, giving the outline's point coordinates. */ + /* */ + /* tags :: A pointer to an array of `n_points' chars, giving */ + /* each outline point's type. */ + /* */ + /* If bit~0 is unset, the point is `off' the curve, */ + /* i.e., a Bézier control point, while it is `on' if */ + /* set. */ + /* */ + /* Bit~1 is meaningful for `off' points only. If set, */ + /* it indicates a third-order Bézier arc control point; */ + /* and a second-order control point if unset. */ + /* */ + /* If bit~2 is set, bits 5-7 contain the drop-out mode */ + /* (as defined in the OpenType specification; the value */ + /* is the same as the argument to the SCANMODE */ + /* instruction). */ + /* */ + /* Bits 3 and~4 are reserved for internal purposes. */ + /* */ + /* contours :: An array of `n_contours' shorts, giving the end */ + /* point of each contour within the outline. For */ + /* example, the first contour is defined by the points */ + /* `0' to `contours[0]', the second one is defined by */ + /* the points `contours[0]+1' to `contours[1]', etc. */ + /* */ + /* flags :: A set of bit flags used to characterize the outline */ + /* and give hints to the scan-converter and hinter on */ + /* how to convert/grid-fit it. See @FT_OUTLINE_XXX. */ + /* */ + /* <Note> */ + /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ + /* first point of each contour. The drop-out mode as given with */ + /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ + /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ + /* */ + typedef struct FT_Outline_ + { + short n_contours; /* number of contours in glyph */ + short n_points; /* number of points in the glyph */ + + FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + short* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } FT_Outline; + + /* */ + + /* Following limits must be consistent with */ + /* FT_Outline.{n_contours,n_points} */ +#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX +#define FT_OUTLINE_POINTS_MAX SHRT_MAX + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_OUTLINE_XXX */ + /* */ + /* <Description> */ + /* A list of bit-field constants use for the flags in an outline's */ + /* `flags' field. */ + /* */ + /* <Values> */ + /* FT_OUTLINE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_OUTLINE_OWNER :: */ + /* If set, this flag indicates that the outline's field arrays */ + /* (i.e., `points', `flags', and `contours') are `owned' by the */ + /* outline object, and should thus be freed when it is destroyed. */ + /* */ + /* FT_OUTLINE_EVEN_ODD_FILL :: */ + /* By default, outlines are filled using the non-zero winding rule. */ + /* If set to 1, the outline will be filled using the even-odd fill */ + /* rule (only works with the smooth rasterizer). */ + /* */ + /* FT_OUTLINE_REVERSE_FILL :: */ + /* By default, outside contours of an outline are oriented in */ + /* clock-wise direction, as defined in the TrueType specification. */ + /* This flag is set if the outline uses the opposite direction */ + /* (typically for Type~1 fonts). This flag is ignored by the scan */ + /* converter. */ + /* */ + /* FT_OUTLINE_IGNORE_DROPOUTS :: */ + /* By default, the scan converter will try to detect drop-outs in */ + /* an outline and correct the glyph bitmap to ensure consistent */ + /* shape continuity. If set, this flag hints the scan-line */ + /* converter to ignore such cases. See below for more information. */ + /* */ + /* FT_OUTLINE_SMART_DROPOUTS :: */ + /* Select smart dropout control. If unset, use simple dropout */ + /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ + /* below for more information. */ + /* */ + /* FT_OUTLINE_INCLUDE_STUBS :: */ + /* If set, turn pixels on for `stubs', otherwise exclude them. */ + /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ + /* more information. */ + /* */ + /* FT_OUTLINE_HIGH_PRECISION :: */ + /* This flag indicates that the scan-line converter should try to */ + /* convert this outline to bitmaps with the highest possible */ + /* quality. It is typically set for small character sizes. Note */ + /* that this is only a hint that might be completely ignored by a */ + /* given scan-converter. */ + /* */ + /* FT_OUTLINE_SINGLE_PASS :: */ + /* This flag is set to force a given scan-converter to only use a */ + /* single pass over the outline to render a bitmap glyph image. */ + /* Normally, it is set for very large character sizes. It is only */ + /* a hint that might be completely ignored by a given */ + /* scan-converter. */ + /* */ + /* <Note> */ + /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ + /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ + /* rasterizer. */ + /* */ + /* There exists a second mechanism to pass the drop-out mode to the */ + /* B/W rasterizer; see the `tags' field in @FT_Outline. */ + /* */ + /* Please refer to the description of the `SCANTYPE' instruction in */ + /* the OpenType specification (in file `ttinst1.doc') how simple */ + /* drop-outs, smart drop-outs, and stubs are defined. */ + /* */ +#define FT_OUTLINE_NONE 0x0 +#define FT_OUTLINE_OWNER 0x1 +#define FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define FT_OUTLINE_REVERSE_FILL 0x4 +#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 + +#define FT_OUTLINE_HIGH_PRECISION 0x100 +#define FT_OUTLINE_SINGLE_PASS 0x200 + + + /* these constants are deprecated; use the corresponding */ + /* `FT_OUTLINE_XXX' values instead */ +#define ft_outline_none FT_OUTLINE_NONE +#define ft_outline_owner FT_OUTLINE_OWNER +#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL +#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL +#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS +#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION +#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS + + /* */ + +#define FT_CURVE_TAG( flag ) ( flag & 3 ) + +#define FT_CURVE_TAG_ON 1 +#define FT_CURVE_TAG_CONIC 0 +#define FT_CURVE_TAG_CUBIC 2 + +#define FT_CURVE_TAG_HAS_SCANMODE 4 + +#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ + +#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ + FT_CURVE_TAG_TOUCH_Y ) + +#define FT_Curve_Tag_On FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_MoveToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `move */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `move to' is emitted to start a new contour in an outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `move to'. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_LineToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `line */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `line to' is emitted to indicate a segment in the outline. */ + /* */ + /* <Input> */ + /* to :: A pointer to the target point of the `line to'. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); + +#define FT_Outline_LineTo_Func FT_Outline_LineToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_ConicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `conic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `conic to' is emitted to indicate a second-order Bézier arc in */ + /* the outline. */ + /* */ + /* <Input> */ + /* control :: An intermediate control point between the last position */ + /* and the new target in `to'. */ + /* */ + /* to :: A pointer to the target end point of the conic arc. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); + +#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Outline_CubicToFunc */ + /* */ + /* <Description> */ + /* A function pointer type used to describe the signature of a `cubic */ + /* to' function during outline walking or decomposition. */ + /* */ + /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ + /* */ + /* <Input> */ + /* control1 :: A pointer to the first Bézier control point. */ + /* */ + /* control2 :: A pointer to the second Bézier control point. */ + /* */ + /* to :: A pointer to the target end point. */ + /* */ + /* user :: A typeless pointer, which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + typedef int + (*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); + +#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Outline_Funcs */ + /* */ + /* <Description> */ + /* A structure to hold various function pointers used during outline */ + /* decomposition in order to emit segments, conic, and cubic Béziers. */ + /* */ + /* <Fields> */ + /* move_to :: The `move to' emitter. */ + /* */ + /* line_to :: The segment emitter. */ + /* */ + /* conic_to :: The second-order Bézier arc emitter. */ + /* */ + /* cubic_to :: The third-order Bézier arc emitter. */ + /* */ + /* shift :: The shift that is applied to coordinates before they */ + /* are sent to the emitter. */ + /* */ + /* delta :: The delta that is applied to coordinates before they */ + /* are sent to the emitter, but after the shift. */ + /* */ + /* <Note> */ + /* The point coordinates sent to the emitters are the transformed */ + /* version of the original coordinates (this is important for high */ + /* accuracy during scan-conversion). The transformation is simple: */ + /* */ + /* { */ + /* x' = (x << shift) - delta */ + /* y' = (x << shift) - delta */ + /* } */ + /* */ + /* Set the values of `shift' and `delta' to~0 to get the original */ + /* point coordinates. */ + /* */ + typedef struct FT_Outline_Funcs_ + { + FT_Outline_MoveToFunc move_to; + FT_Outline_LineToFunc line_to; + FT_Outline_ConicToFunc conic_to; + FT_Outline_CubicToFunc cubic_to; + + int shift; + FT_Pos delta; + + } FT_Outline_Funcs; + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_IMAGE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags to an unsigned long type. */ + /* */ + /* <Note> */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* { */ + /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ + /* } */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* FT_IMAGE_TAG */ + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Glyph_Format */ + /* */ + /* <Description> */ + /* An enumeration type used to describe the format of a given glyph */ + /* image. Note that this version of FreeType only supports two image */ + /* formats, even though future font drivers will be able to register */ + /* their own format. */ + /* */ + /* <Values> */ + /* FT_GLYPH_FORMAT_NONE :: */ + /* The value~0 is reserved. */ + /* */ + /* FT_GLYPH_FORMAT_COMPOSITE :: */ + /* The glyph image is a composite of several other images. This */ + /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ + /* report compound glyphs (like accented characters). */ + /* */ + /* FT_GLYPH_FORMAT_BITMAP :: */ + /* The glyph image is a bitmap, and can be described as an */ + /* @FT_Bitmap. You generally need to access the `bitmap' field of */ + /* the @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_OUTLINE :: */ + /* The glyph image is a vectorial outline made of line segments */ + /* and Bézier arcs; it can be described as an @FT_Outline; you */ + /* generally want to access the `outline' field of the */ + /* @FT_GlyphSlotRec structure to read it. */ + /* */ + /* FT_GLYPH_FORMAT_PLOTTER :: */ + /* The glyph image is a vectorial path with no inside and outside */ + /* contours. Some Type~1 fonts, like those in the Hershey family, */ + /* contain glyphs in this format. These are described as */ + /* @FT_Outline, but FreeType isn't currently capable of rendering */ + /* them correctly. */ + /* */ + typedef enum FT_Glyph_Format_ + { + FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) + + } FT_Glyph_Format; + + + /* these constants are deprecated; use the corresponding */ + /* `FT_Glyph_Format' values instead. */ +#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE +#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE +#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP +#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE +#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* A raster is a scan converter, in charge of rendering an outline into */ + /* a a bitmap. This section contains the public API for rasters. */ + /* */ + /* Note that in FreeType 2, all rasters are now encapsulated within */ + /* specific modules called `renderers'. See `ftrender.h' for more */ + /* details on renderers. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* raster */ + /* */ + /* <Title> */ + /* Scanline Converter */ + /* */ + /* <Abstract> */ + /* How vectorial outlines are converted into bitmaps and pixmaps. */ + /* */ + /* <Description> */ + /* This section contains technical definitions. */ + /* */ + /* <Order> */ + /* FT_Raster */ + /* FT_Span */ + /* FT_SpanFunc */ + /* */ + /* FT_Raster_Params */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* FT_Raster_NewFunc */ + /* FT_Raster_DoneFunc */ + /* FT_Raster_ResetFunc */ + /* FT_Raster_SetModeFunc */ + /* FT_Raster_RenderFunc */ + /* FT_Raster_Funcs */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Raster */ + /* */ + /* <Description> */ + /* An opaque handle (pointer) to a raster object. Each object can be */ + /* used independently to convert an outline into a bitmap or pixmap. */ + /* */ + typedef struct FT_RasterRec_* FT_Raster; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Span */ + /* */ + /* <Description> */ + /* A structure used to model a single span of gray pixels when */ + /* rendering an anti-aliased bitmap. */ + /* */ + /* <Fields> */ + /* x :: The span's horizontal start position. */ + /* */ + /* len :: The span's length in pixels. */ + /* */ + /* coverage :: The span color/coverage, ranging from 0 (background) */ + /* to 255 (foreground). */ + /* */ + /* <Note> */ + /* This structure is used by the span drawing callback type named */ + /* @FT_SpanFunc that takes the y~coordinate of the span as a */ + /* parameter. */ + /* */ + /* The coverage value is always between 0 and 255. If you want less */ + /* gray values, the callback function has to reduce them. */ + /* */ + typedef struct FT_Span_ + { + short x; + unsigned short len; + unsigned char coverage; + + } FT_Span; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_SpanFunc */ + /* */ + /* <Description> */ + /* A function used as a call-back by the anti-aliased renderer in */ + /* order to let client applications draw themselves the gray pixel */ + /* spans on each scan line. */ + /* */ + /* <Input> */ + /* y :: The scanline's y~coordinate. */ + /* */ + /* count :: The number of spans to draw on this scanline. */ + /* */ + /* spans :: A table of `count' spans to draw on the scanline. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Note> */ + /* This callback allows client applications to directly render the */ + /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ + /* */ + /* This can be used to write anti-aliased outlines directly to a */ + /* given background bitmap, and even perform translucency. */ + /* */ + /* Note that the `count' field cannot be greater than a fixed value */ + /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ + /* `ftoption.h'. By default, this value is set to~32, which means */ + /* that if there are more than 32~spans on a given scanline, the */ + /* callback is called several times with the same `y' parameter in */ + /* order to draw all callbacks. */ + /* */ + /* Otherwise, the callback is only called once per scan-line, and */ + /* only for those scanlines that do have `gray' pixels on them. */ + /* */ + typedef void + (*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); + +#define FT_Raster_Span_Func FT_SpanFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitTest_Func */ + /* */ + /* <Description> */ + /* Deprecated, unimplemented. */ + /* */ + typedef int + (*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_BitSet_Func */ + /* */ + /* <Description> */ + /* Deprecated, unimplemented. */ + /* */ + typedef void + (*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_RASTER_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flag constants as used in the `flags' field of a */ + /* @FT_Raster_Params structure. */ + /* */ + /* <Values> */ + /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ + /* */ + /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ + /* anti-aliased glyph image should be */ + /* generated. Otherwise, it will be */ + /* monochrome (1-bit). */ + /* */ + /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ + /* rendering. In this mode, client */ + /* applications must provide their own span */ + /* callback. This lets them directly */ + /* draw or compose over an existing bitmap. */ + /* If this bit is not set, the target */ + /* pixmap's buffer _must_ be zeroed before */ + /* rendering. */ + /* */ + /* Direct rendering is only possible with */ + /* anti-aliased glyphs. */ + /* */ + /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ + /* rendering mode. If set, the output will */ + /* be clipped to a box specified in the */ + /* `clip_box' field of the */ + /* @FT_Raster_Params structure. */ + /* */ + /* Note that by default, the glyph bitmap */ + /* is clipped to the target pixmap, except */ + /* in direct rendering mode where all spans */ + /* are generated if no clipping box is set. */ + /* */ +#define FT_RASTER_FLAG_DEFAULT 0x0 +#define FT_RASTER_FLAG_AA 0x1 +#define FT_RASTER_FLAG_DIRECT 0x2 +#define FT_RASTER_FLAG_CLIP 0x4 + + /* these constants are deprecated; use the corresponding */ + /* `FT_RASTER_FLAG_XXX' values instead */ +#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT +#define ft_raster_flag_aa FT_RASTER_FLAG_AA +#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT +#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Params */ + /* */ + /* <Description> */ + /* A structure to hold the arguments used by a raster's render */ + /* function. */ + /* */ + /* <Fields> */ + /* target :: The target bitmap. */ + /* */ + /* source :: A pointer to the source glyph image (e.g., an */ + /* @FT_Outline). */ + /* */ + /* flags :: The rendering flags. */ + /* */ + /* gray_spans :: The gray span drawing callback. */ + /* */ + /* black_spans :: Unused. */ + /* */ + /* bit_test :: Unused. */ + /* */ + /* bit_set :: Unused. */ + /* */ + /* user :: User-supplied data that is passed to each drawing */ + /* callback. */ + /* */ + /* clip_box :: An optional clipping box. It is only used in */ + /* direct rendering mode. Note that coordinates here */ + /* should be expressed in _integer_ pixels (and not in */ + /* 26.6 fixed-point units). */ + /* */ + /* <Note> */ + /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ + /* bit flag is set in the `flags' field, otherwise a monochrome */ + /* bitmap is generated. */ + /* */ + /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ + /* raster will call the `gray_spans' callback to draw gray pixel */ + /* spans. This allows direct composition over a pre-existing bitmap */ + /* through user-provided callbacks to perform the span drawing and */ + /* composition. Not supported by the monochrome rasterizer. */ + /* */ + typedef struct FT_Raster_Params_ + { + const FT_Bitmap* target; + const void* source; + int flags; + FT_SpanFunc gray_spans; + FT_SpanFunc black_spans; /* unused */ + FT_Raster_BitTest_Func bit_test; /* unused */ + FT_Raster_BitSet_Func bit_set; /* unused */ + void* user; + FT_BBox clip_box; + + } FT_Raster_Params; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_NewFunc */ + /* */ + /* <Description> */ + /* A function used to create a new raster object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory allocator. */ + /* */ + /* <Output> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `memory' parameter is a typeless pointer in order to avoid */ + /* un-wanted dependencies on the rest of the FreeType code. In */ + /* practice, it is an @FT_Memory object, i.e., a handle to the */ + /* standard FreeType memory allocator. However, this field can be */ + /* completely ignored by a given raster implementation. */ + /* */ + typedef int + (*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); + +#define FT_Raster_New_Func FT_Raster_NewFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_DoneFunc */ + /* */ + /* <Description> */ + /* A function used to destroy a given raster object. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + typedef void + (*FT_Raster_DoneFunc)( FT_Raster raster ); + +#define FT_Raster_Done_Func FT_Raster_DoneFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_ResetFunc */ + /* */ + /* <Description> */ + /* FreeType used to provide an area of memory called the `render */ + /* pool' available to all registered rasters. This was not thread */ + /* safe however and now FreeType never allocates this pool. NULL */ + /* is always passed in as pool_base. */ + /* */ + /* This function is called each time the render pool changes, or just */ + /* after a new raster object is created. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* pool_base :: The address in memory of the render pool. */ + /* */ + /* pool_size :: The size in bytes of the render pool. */ + /* */ + /* <Note> */ + /* Rasters should ignore the render pool and rely on dynamic or stack */ + /* allocation if they want to (a handle to the memory allocator is */ + /* passed to the raster constructor). */ + /* */ + typedef void + (*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define FT_Raster_Reset_Func FT_Raster_ResetFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_SetModeFunc */ + /* */ + /* <Description> */ + /* This function is a generic facility to change modes or attributes */ + /* in a given raster. This can be used for debugging purposes, or */ + /* simply to allow implementation-specific `features' in a given */ + /* raster module. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* mode :: A 4-byte tag used to name the mode or property. */ + /* */ + /* args :: A pointer to the new mode/property to use. */ + /* */ + typedef int + (*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); + +#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Raster_RenderFunc */ + /* */ + /* <Description> */ + /* Invoke a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* store the rendering parameters. */ + /* */ + /* <Return> */ + /* Error code. 0~means success. */ + /* */ + /* <Note> */ + /* The exact format of the source image depends on the raster's glyph */ + /* format defined in its @FT_Raster_Funcs structure. It can be an */ + /* @FT_Outline or anything else in order to support a large array of */ + /* glyph formats. */ + /* */ + /* Note also that the render function can fail and return a */ + /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ + /* not support direct composition. */ + /* */ + /* XXX: For now, the standard raster doesn't support direct */ + /* composition but this should change for the final release (see */ + /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ + /* for examples of distinct implementations that support direct */ + /* composition). */ + /* */ + typedef int + (*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); + +#define FT_Raster_Render_Func FT_Raster_RenderFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Raster_Funcs */ + /* */ + /* <Description> */ + /* A structure used to describe a given raster class to the library. */ + /* */ + /* <Fields> */ + /* glyph_format :: The supported glyph format for this raster. */ + /* */ + /* raster_new :: The raster constructor. */ + /* */ + /* raster_reset :: Used to reset the render pool within the raster. */ + /* */ + /* raster_render :: A function to render a glyph into a given bitmap. */ + /* */ + /* raster_done :: The raster destructor. */ + /* */ + typedef struct FT_Raster_Funcs_ + { + FT_Glyph_Format glyph_format; + FT_Raster_NewFunc raster_new; + FT_Raster_ResetFunc raster_reset; + FT_Raster_SetModeFunc raster_set_mode; + FT_Raster_RenderFunc raster_render; + FT_Raster_DoneFunc raster_done; + + } FT_Raster_Funcs; + + /* */ + + +FT_END_HEADER + +#endif /* __FTIMAGE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows64/include/freetype/ftincrem.h b/lib/windows64/include/freetype/ftincrem.h new file mode 100644 index 0000000..840af25 --- /dev/null +++ b/lib/windows64/include/freetype/ftincrem.h @@ -0,0 +1,354 @@ +/***************************************************************************/ +/* */ +/* ftincrem.h */ +/* */ +/* FreeType incremental loading (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTINCREM_H__ +#define __FTINCREM_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * `incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application. + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + + /*************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * `incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript interpreters), + * where the glyph data isn't in the font file, or must be overridden by + * different values. + * + * @note: + * It is up to client applications to create and implement @FT_Incremental + * objects, as long as they provide implementations for the methods + * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc + * and @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ + typedef struct FT_IncrementalRec_* FT_Incremental; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned + * by the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical' argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ + typedef struct FT_Incremental_MetricsRec_ + { + FT_Long bearing_x; + FT_Long bearing_y; + FT_Long advance; + FT_Long advance_v; /* since 2.3.12 */ + + } FT_Incremental_MetricsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ + typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the `glyf' table. For PostScript formats, it must correspond to the + * *unencrypted* charstring bytes, without any `lenIV' header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release + * the data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ + typedef void + (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + + /*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This is necessary because, in certain + * formats like TrueType, the metrics are stored in a different place from + * the glyph images proper. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. + * The original glyph metrics, if any, in font units. If metrics are + * not available all the values must be set to zero. + * + * @output: + * ametrics :: + * The replacement glyph metrics in font units. + * + */ + typedef FT_Error + (*FT_Incremental_GetGlyphMetricsFunc) + ( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + + /************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data + * incrementally. Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does + * not provide overriding glyph metrics. + * + */ + typedef struct FT_Incremental_FuncsRec_ + { + FT_Incremental_GetGlyphDataFunc get_glyph_data; + FT_Incremental_FreeGlyphDataFunc free_glyph_data; + FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; + + } FT_Incremental_FuncsRec; + + + /*************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * { + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * } + * + */ + typedef struct FT_Incremental_InterfaceRec_ + { + const FT_Incremental_FuncsRec* funcs; + FT_Incremental object; + + } FT_Incremental_InterfaceRec; + + + /*************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ + typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * A constant used as the tag of @FT_Parameter structures to indicate + * an incremental loading object to be used by FreeType. + * + */ +#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FTINCREM_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftlcdfil.h b/lib/windows64/include/freetype/ftlcdfil.h new file mode 100644 index 0000000..4cd999a --- /dev/null +++ b/lib/windows64/include/freetype/ftlcdfil.h @@ -0,0 +1,251 @@ +/***************************************************************************/ +/* */ +/* ftlcdfil.h */ +/* */ +/* FreeType API for color filtering of subpixel bitmap glyphs */ +/* (specification). */ +/* */ +/* Copyright 2006-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_LCD_FILTER_H__ +#define __FT_LCD_FILTER_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************** + * + * @section: + * lcd_filtering + * + * @title: + * LCD Filtering + * + * @abstract: + * Reduce color fringes of LCD-optimized bitmaps. + * + * @description: + * The @FT_Library_SetLcdFilter API can be used to specify a low-pass + * filter, which is then applied to LCD-optimized bitmaps generated + * through @FT_Render_Glyph. This is useful to reduce color fringes + * that would occur with unfiltered rendering. + * + * Note that no filter is active by default, and that this function is + * *not* implemented in default builds of the library. You need to + * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file + * in order to activate it. + * + * FreeType generates alpha coverage maps, which are linear by nature. + * For instance, the value 0x80 in bitmap representation means that + * (within numerical precision) 0x80/0xFF fraction of that pixel is + * covered by the glyph's outline. The blending function for placing + * text over a background is + * + * { + * dst = alpha * src + (1 - alpha) * dst , + * } + * + * which is known as OVER. However, when calculating the output of the + * OVER operator, the source colors should first be transformed to a + * linear color space, then alpha blended in that space, and transformed + * back to the output color space. + * + * When linear light blending is used, the default FIR5 filtering + * weights (as given by FT_LCD_FILTER_DEFAULT) are no longer optimal, as + * they have been designed for black on white rendering while lacking + * gamma correction. To preserve color neutrality, weights for a FIR5 + * filter should be chosen according to two free parameters `a' and `c', + * and the FIR weights should be + * + * { + * [a - c, a + c, 2 * a, a + c, a - c] . + * } + * + * This formula generates equal weights for all the color primaries + * across the filter kernel, which makes it colorless. One suggested + * set of weights is + * + * { + * [0x10, 0x50, 0x60, 0x50, 0x10] , + * } + * + * where `a' has value 0x30 and `b' value 0x20. The weights in filter + * may have a sum larger than 0x100, which increases coloration slightly + * but also improves contrast. + */ + + + /**************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * The default filter reduces color fringes considerably, at the cost + * of a slight blurriness in the output. + * + * FT_LCD_FILTER_LIGHT :: + * The light filter is a variant that produces less blurriness at the + * cost of slightly more color fringes than the default one. It might + * be better, depending on taste, your monitor, or your personal vision. + * + * FT_LCD_FILTER_LEGACY :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * In other words, it only works well if the TrueType bytecode + * interpreter is enabled *and* high-quality hinted fonts are used. + * + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. + * + * @since: + * 2.3.0 + */ + typedef enum FT_LcdFilter_ + { + FT_LCD_FILTER_NONE = 0, + FT_LCD_FILTER_DEFAULT = 1, + FT_LCD_FILTER_LIGHT = 2, + FT_LCD_FILTER_LEGACY = 16, + + FT_LCD_FILTER_MAX /* do not remove */ + + } FT_LcdFilter; + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work + * well on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This feature is always disabled by default. Clients must make an + * explicit call to this function with a `filter' value other than + * @FT_LCD_FILTER_NONE in order to enable it. + * + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, + * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. + * + * It does _not_ affect the output of @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * If this feature is activated, the dimensions of LCD glyph bitmaps are + * either larger or taller than the dimensions of the corresponding + * outline with regards to the pixel grid. For example, for + * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and + * up to 3~pixels to the right. + * + * The bitmap offset values are adjusted correctly, so clients shouldn't + * need to modify their layout and glyph positioning code when enabling + * the filter. + * + * @since: + * 2.3.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + + /************************************************************************** + * + * @func: + * FT_Library_SetLcdFilterWeights + * + * @description: + * Use this function to override the filter weights selected by + * @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple + * (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10, + * 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and + * FT_LCD_FILTER_LEGACY. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * This function must be called after @FT_Library_SetLcdFilter to have + * any effect. + * + * @since: + * 2.4.0 + */ + FT_EXPORT( FT_Error ) + FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + + /* */ + + +FT_END_HEADER + +#endif /* __FT_LCD_FILTER_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftlist.h b/lib/windows64/include/freetype/ftlist.h new file mode 100644 index 0000000..12b48c7 --- /dev/null +++ b/lib/windows64/include/freetype/ftlist.h @@ -0,0 +1,276 @@ +/***************************************************************************/ +/* */ +/* ftlist.h */ +/* */ +/* Generic list support for FreeType (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file implements functions relative to list processing. Its */ + /* data structures are defined in `freetype.h'. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTLIST_H__ +#define __FTLIST_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /* <Title> */ + /* List Processing */ + /* */ + /* <Abstract> */ + /* Simple management of lists. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to list */ + /* processing using doubly-linked nodes. */ + /* */ + /* <Order> */ + /* FT_List */ + /* FT_ListNode */ + /* FT_ListRec */ + /* FT_ListNodeRec */ + /* */ + /* FT_List_Add */ + /* FT_List_Insert */ + /* FT_List_Find */ + /* FT_List_Remove */ + /* FT_List_Up */ + /* FT_List_Iterate */ + /* FT_List_Iterator */ + /* FT_List_Finalize */ + /* FT_List_Destructor */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Find */ + /* */ + /* <Description> */ + /* Find the list node for a given listed object. */ + /* */ + /* <Input> */ + /* list :: A pointer to the parent list. */ + /* data :: The address of the listed object. */ + /* */ + /* <Return> */ + /* List node. NULL if it wasn't found. */ + /* */ + FT_EXPORT( FT_ListNode ) + FT_List_Find( FT_List list, + void* data ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Add */ + /* */ + /* <Description> */ + /* Append an element to the end of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to append. */ + /* */ + FT_EXPORT( void ) + FT_List_Add( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Insert */ + /* */ + /* <Description> */ + /* Insert an element at the head of a list. */ + /* */ + /* <InOut> */ + /* list :: A pointer to parent list. */ + /* node :: The node to insert. */ + /* */ + FT_EXPORT( void ) + FT_List_Insert( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Remove */ + /* */ + /* <Description> */ + /* Remove a node from a list. This function doesn't check whether */ + /* the node is in the list! */ + /* */ + /* <Input> */ + /* node :: The node to remove. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* */ + FT_EXPORT( void ) + FT_List_Remove( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Up */ + /* */ + /* <Description> */ + /* Move a node to the head/top of a list. Used to maintain LRU */ + /* lists. */ + /* */ + /* <InOut> */ + /* list :: A pointer to the parent list. */ + /* node :: The node to move. */ + /* */ + FT_EXPORT( void ) + FT_List_Up( FT_List list, + FT_ListNode node ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Iterator */ + /* */ + /* <Description> */ + /* An FT_List iterator function that is called during a list parse */ + /* by @FT_List_Iterate. */ + /* */ + /* <Input> */ + /* node :: The current iteration list node. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. */ + /* Can be used to point to the iteration's state. */ + /* */ + typedef FT_Error + (*FT_List_Iterator)( FT_ListNode node, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Iterate */ + /* */ + /* <Description> */ + /* Parse a list and calls a given iterator function on each element. */ + /* Note that parsing is stopped as soon as one of the iterator calls */ + /* returns a non-zero value. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* iterator :: An iterator function, called on each node of the list. */ + /* user :: A user-supplied field that is passed as the second */ + /* argument to the iterator. */ + /* */ + /* <Return> */ + /* The result (a FreeType error code) of the last iterator call. */ + /* */ + FT_EXPORT( FT_Error ) + FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_List_Destructor */ + /* */ + /* <Description> */ + /* An @FT_List iterator function that is called during a list */ + /* finalization by @FT_List_Finalize to destroy all elements in a */ + /* given list. */ + /* */ + /* <Input> */ + /* system :: The current system object. */ + /* */ + /* data :: The current object to destroy. */ + /* */ + /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ + /* be used to point to the iteration's state. */ + /* */ + typedef void + (*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_List_Finalize */ + /* */ + /* <Description> */ + /* Destroy all elements in the list as well as the list itself. */ + /* */ + /* <Input> */ + /* list :: A handle to the list. */ + /* */ + /* destroy :: A list destructor that will be applied to each element */ + /* of the list. Set this to NULL if not needed. */ + /* */ + /* memory :: The current memory object that handles deallocation. */ + /* */ + /* user :: A user-supplied field that is passed as the last */ + /* argument to the destructor. */ + /* */ + /* <Note> */ + /* This function expects that all nodes added by @FT_List_Add or */ + /* @FT_List_Insert have been dynamically allocated. */ + /* */ + FT_EXPORT( void ) + FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLIST_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftlzw.h b/lib/windows64/include/freetype/ftlzw.h new file mode 100644 index 0000000..d3ec28e --- /dev/null +++ b/lib/windows64/include/freetype/ftlzw.h @@ -0,0 +1,99 @@ +/***************************************************************************/ +/* */ +/* ftlzw.h */ +/* */ +/* LZW-compressed stream support. */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTLZW_H__ +#define __FTLZW_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* lzw */ + /* */ + /* <Title> */ + /* LZW Streams */ + /* */ + /* <Abstract> */ + /* Using LZW-compressed font files. */ + /* */ + /* <Description> */ + /* This section contains the declaration of LZW-specific functions. */ + /* */ + /*************************************************************************/ + + /************************************************************************ + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is + * mainly used to support the compressed `*.pcf.Z' fonts that come + * with XFree86. + * + * @input: + * stream :: The target embedding stream. + * + * source :: The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream + * + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it + * and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with LZW support. + */ + FT_EXPORT( FT_Error ) + FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTLZW_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftmac.h b/lib/windows64/include/freetype/ftmac.h new file mode 100644 index 0000000..14c55cf --- /dev/null +++ b/lib/windows64/include/freetype/ftmac.h @@ -0,0 +1,274 @@ +/***************************************************************************/ +/* */ +/* ftmac.h */ +/* */ +/* Additional Mac-specific API. */ +/* */ +/* Copyright 1996-2015 by */ +/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* NOTE: Include this file after FT_FREETYPE_H and after any */ +/* Mac-specific headers (because this header uses Mac types such as */ +/* Handle, FSSpec, FSRef, etc.) */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMAC_H__ +#define __FTMAC_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + +/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ +#ifndef FT_DEPRECATED_ATTRIBUTE +#if defined(__GNUC__) && \ + ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) +#else +#define FT_DEPRECATED_ATTRIBUTE +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* mac_specific */ + /* */ + /* <Title> */ + /* Mac Specific Interface */ + /* */ + /* <Abstract> */ + /* Only available on the Macintosh. */ + /* */ + /* <Description> */ + /* The following definitions are only available if FreeType is */ + /* compiled on a Macintosh. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FOND */ + /* */ + /* <Description> */ + /* Create a new face object from a FOND resource. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* fond :: A FOND resource. */ + /* */ + /* face_index :: Only supported for the -1 `sanity check' special */ + /* case. */ + /* */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Notes> */ + /* This function can be used to create @FT_Face objects from fonts */ + /* that are installed in the system as follows. */ + /* */ + /* { */ + /* fond = GetResource( 'FOND', fontName ); */ + /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ + /* } */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font (e.g., Times New Roman */ + /* Bold). */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFile_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return an FSSpec for the disk file containing the named font. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* pathSpec :: FSSpec to the file. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* face_index :: Index of the face. For passing to */ + /* @FT_New_Face_From_FSSpec. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_GetFilePath_From_Mac_ATS_Name */ + /* */ + /* <Description> */ + /* Return a pathname of the disk file and face index for given font */ + /* name that is handled by ATS framework. */ + /* */ + /* <Input> */ + /* fontName :: Mac OS name of the font in ATS framework. */ + /* */ + /* <Output> */ + /* path :: Buffer to store pathname of the file. For passing */ + /* to @FT_New_Face. The client must allocate this */ + /* buffer before calling this function. */ + /* */ + /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ + /* */ + /* face_index :: Index of the face. For passing to @FT_New_Face. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSSpec */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSSpec to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSSpec to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ + /* it accepts an FSSpec instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Face_From_FSRef */ + /* */ + /* <Description> */ + /* Create a new face object from a given resource and typeface index */ + /* using an FSRef to the font file. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library resource. */ + /* */ + /* <Input> */ + /* spec :: FSRef to the font file. */ + /* */ + /* face_index :: The index of the face within the resource. The */ + /* first face has index~0. */ + /* <Output> */ + /* aface :: A handle to a new face object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ + /* it accepts an FSRef instead of a path. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) + FT_DEPRECATED_ATTRIBUTE; + + /* */ + + +FT_END_HEADER + + +#endif /* __FTMAC_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftmm.h b/lib/windows64/include/freetype/ftmm.h new file mode 100644 index 0000000..6ef4798 --- /dev/null +++ b/lib/windows64/include/freetype/ftmm.h @@ -0,0 +1,379 @@ +/***************************************************************************/ +/* */ +/* ftmm.h */ +/* */ +/* FreeType Multiple Master font interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMM_H__ +#define __FTMM_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* multiple_masters */ + /* */ + /* <Title> */ + /* Multiple Masters */ + /* */ + /* <Abstract> */ + /* How to manage Multiple Masters fonts. */ + /* */ + /* <Description> */ + /* The following types and functions are used to manage Multiple */ + /* Master fonts, i.e., the selection of specific design instances by */ + /* setting design axis coordinates. */ + /* */ + /* George Williams has extended this interface to make it work with */ + /* both Type~1 Multiple Masters fonts and GX distortable (var) */ + /* fonts. Some of these routines only work with MM fonts, others */ + /* will work with both types. They are similar enough that a */ + /* consistent interface makes sense. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters fonts. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + typedef struct FT_MM_Axis_ + { + FT_String* name; + FT_Long minimum; + FT_Long maximum; + + } FT_MM_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Multi_Master */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* font. */ + /* */ + /* This structure can't be used for GX var fonts. */ + /* */ + /* <Fields> */ + /* num_axis :: Number of axes. Cannot exceed~4. */ + /* */ + /* num_designs :: Number of designs; should be normally 2^num_axis */ + /* even though the Type~1 specification strangely */ + /* allows for intermediate designs to be present. */ + /* This number cannot exceed~16. */ + /* */ + /* axis :: A table of axis descriptors. */ + /* */ + typedef struct FT_Multi_Master_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_MM_Axis axis[T1_MAX_MM_AXIS]; + + } FT_Multi_Master; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Axis */ + /* */ + /* <Description> */ + /* A simple structure used to model a given axis in design space for */ + /* Multiple Masters and GX var fonts. */ + /* */ + /* <Fields> */ + /* name :: The axis's name. */ + /* Not always meaningful for GX. */ + /* */ + /* minimum :: The axis's minimum design coordinate. */ + /* */ + /* def :: The axis's default design coordinate. */ + /* FreeType computes meaningful default values for MM; it */ + /* is then an integer value, not in 16.16 format. */ + /* */ + /* maximum :: The axis's maximum design coordinate. */ + /* */ + /* tag :: The axis's tag (the GX equivalent to `name'). */ + /* FreeType provides default values for MM if possible. */ + /* */ + /* strid :: The entry in `name' table (another GX version of */ + /* `name'). */ + /* Not meaningful for MM. */ + /* */ + typedef struct FT_Var_Axis_ + { + FT_String* name; + + FT_Fixed minimum; + FT_Fixed def; + FT_Fixed maximum; + + FT_ULong tag; + FT_UInt strid; + + } FT_Var_Axis; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Var_Named_Style */ + /* */ + /* <Description> */ + /* A simple structure used to model a named style in a GX var font. */ + /* */ + /* This structure can't be used for MM fonts. */ + /* */ + /* <Fields> */ + /* coords :: The design coordinates for this style. */ + /* This is an array with one entry for each axis. */ + /* */ + /* strid :: The entry in `name' table identifying this style. */ + /* */ + typedef struct FT_Var_Named_Style_ + { + FT_Fixed* coords; + FT_UInt strid; + + } FT_Var_Named_Style; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_MM_Var */ + /* */ + /* <Description> */ + /* A structure used to model the axes and space of a Multiple Masters */ + /* or GX var distortable font. */ + /* */ + /* Some fields are specific to one format and not to the other. */ + /* */ + /* <Fields> */ + /* num_axis :: The number of axes. The maximum value is~4 for */ + /* MM; no limit in GX. */ + /* */ + /* num_designs :: The number of designs; should be normally */ + /* 2^num_axis for MM fonts. Not meaningful for GX */ + /* (where every glyph could have a different */ + /* number of designs). */ + /* */ + /* num_namedstyles :: The number of named styles; only meaningful for */ + /* GX that allows certain design coordinates to */ + /* have a string ID (in the `name' table) */ + /* associated with them. The font can tell the */ + /* user that, for example, Weight=1.5 is `Bold'. */ + /* */ + /* axis :: An axis descriptor table. */ + /* GX fonts contain slightly more data than MM. */ + /* */ + /* namedstyle :: A named style table. */ + /* Only meaningful with GX. */ + /* */ + typedef struct FT_MM_Var_ + { + FT_UInt num_axis; + FT_UInt num_designs; + FT_UInt num_namedstyles; + FT_Var_Axis* axis; + FT_Var_Named_Style* namedstyle; + + } FT_MM_Var; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Multi_Master */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master descriptor of a given font. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_MM_Var */ + /* */ + /* <Description> */ + /* Retrieve the Multiple Master/GX var descriptor of a given font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Output> */ + /* amaster :: The Multiple Masters/GX var descriptor. */ + /* Allocates a data structure, which the user must free. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_MM_Var( FT_Face face, + FT_MM_Var* *amaster ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters fonts, choose an interpolated font design */ + /* through design coordinates. */ + /* */ + /* This function can't be used with GX fonts. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of available design coordinates. If it */ + /* is larger than the number of axes, ignore the excess */ + /* values. If it is smaller than the number of axes, */ + /* use default values for the remaining axes. */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Design_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Master or GX Var fonts, choose an interpolated font */ + /* design through design coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of available design coordinates. If it */ + /* is larger than the number of axes, ignore the excess */ + /* values. If it is smaller than the number of axes, */ + /* use default values for the remaining axes. */ + /* */ + /* coords :: An array of design coordinates. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_MM_Blend_Coordinates */ + /* */ + /* <Description> */ + /* For Multiple Masters and GX var fonts, choose an interpolated font */ + /* design through normalized blend coordinates. */ + /* */ + /* <InOut> */ + /* face :: A handle to the source face. */ + /* */ + /* <Input> */ + /* num_coords :: The number of available design coordinates. If it */ + /* is larger than the number of axes, ignore the excess */ + /* values. If it is smaller than the number of axes, */ + /* use default values for the remaining axes. */ + /* */ + /* coords :: The design coordinates array (each element must be */ + /* between 0 and 1.0). */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Var_Blend_Coordinates */ + /* */ + /* <Description> */ + /* This is another name of @FT_Set_MM_Blend_Coordinates. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Var_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTMM_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftmodapi.h b/lib/windows64/include/freetype/ftmodapi.h new file mode 100644 index 0000000..2ef3f46 --- /dev/null +++ b/lib/windows64/include/freetype/ftmodapi.h @@ -0,0 +1,669 @@ +/***************************************************************************/ +/* */ +/* ftmodapi.h */ +/* */ +/* FreeType modules public interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMODAPI_H__ +#define __FTMODAPI_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /* <Title> */ + /* Module Management */ + /* */ + /* <Abstract> */ + /* How to add, upgrade, remove, and control modules from FreeType. */ + /* */ + /* <Description> */ + /* The definitions below are used to manage modules within FreeType. */ + /* Modules can be added, upgraded, and removed at runtime. */ + /* Additionally, some module properties can be controlled also. */ + /* */ + /* Here is a list of possible values of the `module_name' field in */ + /* the @FT_Module_Class structure. */ + /* */ + /* { */ + /* autofitter */ + /* bdf */ + /* cff */ + /* gxvalid */ + /* otvalid */ + /* pcf */ + /* pfr */ + /* psaux */ + /* pshinter */ + /* psnames */ + /* raster1, raster5 */ + /* sfnt */ + /* smooth, smooth-lcd, smooth-lcdv */ + /* truetype */ + /* type1 */ + /* type42 */ + /* t1cid */ + /* winfonts */ + /* } */ + /* */ + /* Note that the FreeType Cache sub-system is not a FreeType module. */ + /* */ + /* <Order> */ + /* FT_Module */ + /* FT_Module_Constructor */ + /* FT_Module_Destructor */ + /* FT_Module_Requester */ + /* FT_Module_Class */ + /* */ + /* FT_Add_Module */ + /* FT_Get_Module */ + /* FT_Remove_Module */ + /* FT_Add_Default_Modules */ + /* */ + /* FT_Property_Set */ + /* FT_Property_Get */ + /* */ + /* FT_New_Library */ + /* FT_Done_Library */ + /* FT_Reference_Library */ + /* */ + /* FT_Renderer */ + /* FT_Renderer_Class */ + /* */ + /* FT_Get_Renderer */ + /* FT_Set_Renderer */ + /* */ + /* FT_Set_Debug_Hook */ + /* */ + /*************************************************************************/ + + + /* module bit flags */ +#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ +#define FT_MODULE_RENDERER 2 /* this module is a renderer */ +#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ +#define FT_MODULE_STYLER 8 /* this module is a styler */ + +#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ + /* scalable fonts */ +#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ + /* support vector outlines */ +#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ + /* own hinter */ + + + /* deprecated values */ +#define ft_module_font_driver FT_MODULE_FONT_DRIVER +#define ft_module_renderer FT_MODULE_RENDERER +#define ft_module_hinter FT_MODULE_HINTER +#define ft_module_styler FT_MODULE_STYLER + +#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE +#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES +#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER + + + typedef FT_Pointer FT_Module_Interface; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Constructor */ + /* */ + /* <Description> */ + /* A function used to initialize (not create) a new module object. */ + /* */ + /* <Input> */ + /* module :: The module to initialize. */ + /* */ + typedef FT_Error + (*FT_Module_Constructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destructor */ + /* */ + /* <Description> */ + /* A function used to finalize (not destroy) a given module object. */ + /* */ + /* <Input> */ + /* module :: The module to finalize. */ + /* */ + typedef void + (*FT_Module_Destructor)( FT_Module module ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Requester */ + /* */ + /* <Description> */ + /* A function used to query a given module for a specific interface. */ + /* */ + /* <Input> */ + /* module :: The module to be searched. */ + /* */ + /* name :: The name of the interface in the module. */ + /* */ + typedef FT_Module_Interface + (*FT_Module_Requester)( FT_Module module, + const char* name ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Module_Class */ + /* */ + /* <Description> */ + /* The module class descriptor. */ + /* */ + /* <Fields> */ + /* module_flags :: Bit flags describing the module. */ + /* */ + /* module_size :: The size of one module object/instance in */ + /* bytes. */ + /* */ + /* module_name :: The name of the module. */ + /* */ + /* module_version :: The version, as a 16.16 fixed number */ + /* (major.minor). */ + /* */ + /* module_requires :: The version of FreeType this module requires, */ + /* as a 16.16 fixed number (major.minor). Starts */ + /* at version 2.0, i.e., 0x20000. */ + /* */ + /* module_init :: The initializing function. */ + /* */ + /* module_done :: The finalizing function. */ + /* */ + /* get_interface :: The interface requesting function. */ + /* */ + typedef struct FT_Module_Class_ + { + FT_ULong module_flags; + FT_Long module_size; + const FT_String* module_name; + FT_Fixed module_version; + FT_Fixed module_requires; + + const void* module_interface; + + FT_Module_Constructor module_init; + FT_Module_Destructor module_done; + FT_Module_Requester get_interface; + + } FT_Module_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Module */ + /* */ + /* <Description> */ + /* Add a new module to a given library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* clazz :: A pointer to class descriptor for the module. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module */ + /* */ + /* <Description> */ + /* Find a module by its name. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module handle. 0~if none was found. */ + /* */ + /* <Note> */ + /* FreeType's internal modules aren't documented very well, and you */ + /* should look up the source code for details. */ + /* */ + FT_EXPORT( FT_Module ) + FT_Get_Module( FT_Library library, + const char* module_name ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Remove_Module */ + /* */ + /* <Description> */ + /* Remove a given module from a library instance. */ + /* */ + /* <InOut> */ + /* library :: A handle to a library object. */ + /* */ + /* <Input> */ + /* module :: A handle to a module object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The module object is destroyed by the function in case of success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Remove_Module( FT_Library library, + FT_Module module ); + + + /********************************************************************** + * + * @function: + * FT_Property_Set + * + * @description: + * Set a property for a given module. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * Note that only a few modules have properties. + * + * value :: + * A generic pointer to a variable or structure that gives the new + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example sets property `bar' (a simple integer) in + * module `foo' to value~1. + * + * { + * FT_UInt bar; + * + * + * bar = 1; + * FT_Property_Set( library, "foo", "bar", &bar ); + * } + * + * Note that the FreeType Cache sub-system doesn't recognize module + * property changes. To avoid glyph lookup confusion within the cache + * you should call @FTC_Manager_Reset to completely flush the cache if + * a module property gets changed after @FTC_Manager_New has been + * called. + * + * It is not possible to set properties of the FreeType Cache + * sub-system itself with FT_Property_Set; use @FTC_Property_Set + * instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Set( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + const void* value ); + + + /********************************************************************** + * + * @function: + * FT_Property_Get + * + * @description: + * Get a module's property value. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * @inout: + * value :: + * A generic pointer to a variable or structure that gives the + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example gets property `baz' (a range) in module `foo'. + * + * { + * typedef range_ + * { + * FT_Int32 min; + * FT_Int32 max; + * + * } range; + * + * range baz; + * + * + * FT_Property_Get( library, "foo", "baz", &baz ); + * } + * + * It is not possible to retrieve properties of the FreeType Cache + * sub-system with FT_Property_Get; use @FTC_Property_Get instead. + * + * @since: + * 2.4.11 + * + */ + FT_EXPORT( FT_Error ) + FT_Property_Get( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + void* value ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Reference_Library */ + /* */ + /* <Description> */ + /* A counter gets initialized to~1 at the time an @FT_Library */ + /* structure is created. This function increments the counter. */ + /* @FT_Done_Library then only destroys a library if the counter is~1, */ + /* otherwise it simply decrements the counter. */ + /* */ + /* This function helps in managing life-cycles of structures that */ + /* reference @FT_Library objects. */ + /* */ + /* <Input> */ + /* library :: A handle to a target library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Since> */ + /* 2.4.2 */ + /* */ + FT_EXPORT( FT_Error ) + FT_Reference_Library( FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Library */ + /* */ + /* <Description> */ + /* This function is used to create a new FreeType library instance */ + /* from a given memory object. It is thus possible to use libraries */ + /* with distinct memory allocators within the same program. Note, */ + /* however, that the used @FT_Memory structure is expected to remain */ + /* valid for the life of the @FT_Library object. */ + /* */ + /* Normally, you would call this function (followed by a call to */ + /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ + /* instead of @FT_Init_FreeType to initialize the FreeType library. */ + /* */ + /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ + /* library instance. */ + /* */ + /* <Input> */ + /* memory :: A handle to the original memory object. */ + /* */ + /* <Output> */ + /* alibrary :: A pointer to handle of a new library object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Library */ + /* */ + /* <Description> */ + /* Discard a given library object. This closes all drivers and */ + /* discards all resource objects. */ + /* */ + /* <Input> */ + /* library :: A handle to the target library. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* See the discussion of reference counters in the description of */ + /* @FT_Reference_Library. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Library( FT_Library library ); + + /* */ + + typedef void + (*FT_DebugHook_Func)( void* arg ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Debug_Hook */ + /* */ + /* <Description> */ + /* Set a debug hook function for debugging the interpreter of a font */ + /* format. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* hook_index :: The index of the debug hook. You should use the */ + /* values defined in `ftobjs.h', e.g., */ + /* `FT_DEBUG_HOOK_TRUETYPE'. */ + /* */ + /* debug_hook :: The function used to debug the interpreter. */ + /* */ + /* <Note> */ + /* Currently, four debug hook slots are available, but only two (for */ + /* the TrueType and the Type~1 interpreter) are defined. */ + /* */ + /* Since the internal headers of FreeType are no longer installed, */ + /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ + /* This is a bug and will be fixed in a forthcoming release. */ + /* */ + FT_EXPORT( void ) + FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Add_Default_Modules */ + /* */ + /* <Description> */ + /* Add the set of default drivers to a given library object. */ + /* This is only useful when you create a library object with */ + /* @FT_New_Library (usually to plug a custom memory manager). */ + /* */ + /* <InOut> */ + /* library :: A handle to a new library object. */ + /* */ + FT_EXPORT( void ) + FT_Add_Default_Modules( FT_Library library ); + + + + /************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + + /************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode + * engine is implemented in a given FT_Library instance. It is used + * by the @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * The library implements a bytecode interpreter that doesn't + * support the patented operations of the TrueType virtual machine. + * + * Its main use is to load certain Asian fonts that position and + * scale glyph components with bytecode instructions. It produces + * bad output for most other fonts. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers + * the full instruction set of the TrueType virtual machine (this + * was governed by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ + typedef enum FT_TrueTypeEngineType_ + { + FT_TRUETYPE_ENGINE_TYPE_NONE = 0, + FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, + FT_TRUETYPE_ENGINE_TYPE_PATENTED + + } FT_TrueTypeEngineType; + + + /************************************************************************** + * + * @func: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of + * the TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ + FT_EXPORT( FT_TrueTypeEngineType ) + FT_Get_TrueType_Engine_Type( FT_Library library ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTMODAPI_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftmoderr.h b/lib/windows64/include/freetype/ftmoderr.h new file mode 100644 index 0000000..9d7f981 --- /dev/null +++ b/lib/windows64/include/freetype/ftmoderr.h @@ -0,0 +1,194 @@ +/***************************************************************************/ +/* */ +/* ftmoderr.h */ +/* */ +/* FreeType module error offsets (specification). */ +/* */ +/* Copyright 2001-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is used to define the FreeType module error codes. */ + /* */ + /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is */ + /* set, the lower byte of an error value identifies the error code as */ + /* usual. In addition, the higher byte identifies the module. For */ + /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */ + /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error */ + /* `T1_Err_Invalid_File_Format' has value 0x1403, etc. */ + /* */ + /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero, */ + /* including the high byte. */ + /* */ + /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of */ + /* an error value is set to zero. */ + /* */ + /* To hide the various `XXX_Err_' prefixes in the source code, FreeType */ + /* provides some macros in `fttypes.h'. */ + /* */ + /* FT_ERR( err ) */ + /* Add current error module prefix (as defined with the */ + /* `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module */ + /* the line */ + /* */ + /* error = FT_ERR( Invalid_Outline ); */ + /* */ + /* expands to */ + /* */ + /* error = BDF_Err_Invalid_Outline; */ + /* */ + /* For simplicity, you can always use `FT_Err_Ok' directly instead */ + /* of `FT_ERR( Ok )'. */ + /* */ + /* FT_ERR_EQ( errcode, err ) */ + /* FT_ERR_NEQ( errcode, err ) */ + /* Compare error code `errcode' with the error `err' for equality */ + /* and inequality, respectively. Example: */ + /* */ + /* if ( FT_ERR_EQ( error, Invalid_Outline ) ) */ + /* ... */ + /* */ + /* Using this macro you don't have to think about error prefixes. */ + /* Of course, if module errors are not active, the above example is */ + /* the same as */ + /* */ + /* if ( error == FT_Err_Invalid_Outline ) */ + /* ... */ + /* */ + /* FT_ERROR_BASE( errcode ) */ + /* FT_ERROR_MODULE( errcode ) */ + /* Get base error and module error code, respectively. */ + /* */ + /* */ + /* It can also be used to create a module error message table easily */ + /* with something like */ + /* */ + /* { */ + /* #undef __FTMODERR_H__ */ + /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ + /* #define FT_MODERR_START_LIST { */ + /* #define FT_MODERR_END_LIST { 0, 0 } }; */ + /* */ + /* const struct */ + /* { */ + /* int mod_err_offset; */ + /* const char* mod_err_msg */ + /* } ft_mod_errors[] = */ + /* */ + /* #include FT_MODULE_ERRORS_H */ + /* } */ + /* */ + /*************************************************************************/ + + +#ifndef __FTMODERR_H__ +#define __FTMODERR_H__ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** SETUP MACROS *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#undef FT_NEED_EXTERN_C + +#ifndef FT_MODERRDEF + +#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, +#else +#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, +#endif + +#define FT_MODERR_START_LIST enum { +#define FT_MODERR_END_LIST FT_Mod_Err_Max }; + +#ifdef __cplusplus +#define FT_NEED_EXTERN_C + extern "C" { +#endif + +#endif /* !FT_MODERRDEF */ + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** LIST MODULE ERROR BASES *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_MODERR_START_LIST + FT_MODERR_START_LIST +#endif + + + FT_MODERRDEF( Base, 0x000, "base module" ) + FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) + FT_MODERRDEF( BDF, 0x200, "BDF module" ) + FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) + FT_MODERRDEF( Cache, 0x400, "cache module" ) + FT_MODERRDEF( CFF, 0x500, "CFF module" ) + FT_MODERRDEF( CID, 0x600, "CID module" ) + FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) + FT_MODERRDEF( LZW, 0x800, "LZW module" ) + FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) + FT_MODERRDEF( PCF, 0xA00, "PCF module" ) + FT_MODERRDEF( PFR, 0xB00, "PFR module" ) + FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) + FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) + FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) + FT_MODERRDEF( Raster, 0xF00, "raster module" ) + FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) + FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) + FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) + FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) + FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) + FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) + FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) + + +#ifdef FT_MODERR_END_LIST + FT_MODERR_END_LIST +#endif + + + /*******************************************************************/ + /*******************************************************************/ + /***** *****/ + /***** CLEANUP *****/ + /***** *****/ + /*******************************************************************/ + /*******************************************************************/ + + +#ifdef FT_NEED_EXTERN_C + } +#endif + +#undef FT_MODERR_START_LIST +#undef FT_MODERR_END_LIST +#undef FT_MODERRDEF +#undef FT_NEED_EXTERN_C + + +#endif /* __FTMODERR_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftotval.h b/lib/windows64/include/freetype/ftotval.h new file mode 100644 index 0000000..e744b71 --- /dev/null +++ b/lib/windows64/include/freetype/ftotval.h @@ -0,0 +1,204 @@ +/***************************************************************************/ +/* */ +/* ftotval.h */ +/* */ +/* FreeType API for validating OpenType tables (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +/***************************************************************************/ +/* */ +/* */ +/* Warning: This module might be moved to a different library in the */ +/* future to avoid a tight dependency between FreeType and the */ +/* OpenType specification. */ +/* */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOTVAL_H__ +#define __FTOTVAL_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* ot_validation */ + /* */ + /* <Title> */ + /* OpenType Validation */ + /* */ + /* <Abstract> */ + /* An API to validate OpenType tables. */ + /* */ + /* <Description> */ + /* This section contains the declaration of functions to validate */ + /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */ + /* */ + /* <Order> */ + /* FT_OpenType_Validate */ + /* FT_OpenType_Free */ + /* */ + /* FT_VALIDATE_OTXXX */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @description: + * A list of bit-field constants used with @FT_OpenType_Validate to + * indicate which OpenType tables should be validated. + * + * @values: + * FT_VALIDATE_BASE :: + * Validate BASE table. + * + * FT_VALIDATE_GDEF :: + * Validate GDEF table. + * + * FT_VALIDATE_GPOS :: + * Validate GPOS table. + * + * FT_VALIDATE_GSUB :: + * Validate GSUB table. + * + * FT_VALIDATE_JSTF :: + * Validate JSTF table. + * + * FT_VALIDATE_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ +#define FT_VALIDATE_BASE 0x0100 +#define FT_VALIDATE_GDEF 0x0200 +#define FT_VALIDATE_GPOS 0x0400 +#define FT_VALIDATE_GSUB 0x0800 +#define FT_VALIDATE_JSTF 0x1000 +#define FT_VALIDATE_MATH 0x2000 + +#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH + + /********************************************************************** + * + * @function: + * FT_OpenType_Validate + * + * @description: + * Validate various OpenType tables to assure that all offsets and + * indices are valid. The idea is that a higher-level library that + * actually does the text layout can access those tables without + * error checking (which can be quite time consuming). + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field that specifies the tables to be validated. See + * @FT_VALIDATE_OTXXX for possible values. + * + * @output: + * BASE_table :: + * A pointer to the BASE table. + * + * GDEF_table :: + * A pointer to the GDEF table. + * + * GPOS_table :: + * A pointer to the GPOS table. + * + * GSUB_table :: + * A pointer to the GSUB table. + * + * JSTF_table :: + * A pointer to the JSTF table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with OpenType fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the five tables with + * @FT_OpenType_Free. A NULL value indicates that the table either + * doesn't exist in the font, or the application hasn't asked for + * validation. + */ + FT_EXPORT( FT_Error ) + FT_OpenType_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *BASE_table, + FT_Bytes *GDEF_table, + FT_Bytes *GPOS_table, + FT_Bytes *GSUB_table, + FT_Bytes *JSTF_table ); + + /********************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ + FT_EXPORT( void ) + FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTOTVAL_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftoutln.h b/lib/windows64/include/freetype/ftoutln.h new file mode 100644 index 0000000..106cfde --- /dev/null +++ b/lib/windows64/include/freetype/ftoutln.h @@ -0,0 +1,574 @@ +/***************************************************************************/ +/* */ +/* ftoutln.h */ +/* */ +/* Support for the FT_Outline type used to store glyph shapes of */ +/* most scalable font formats (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOUTLN_H__ +#define __FTOUTLN_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* outline_processing */ + /* */ + /* <Title> */ + /* Outline Processing */ + /* */ + /* <Abstract> */ + /* Functions to create, transform, and render vectorial glyph images. */ + /* */ + /* <Description> */ + /* This section contains routines used to create and destroy scalable */ + /* glyph images known as `outlines'. These can also be measured, */ + /* transformed, and converted into bitmaps and pixmaps. */ + /* */ + /* <Order> */ + /* FT_Outline */ + /* FT_Outline_New */ + /* FT_Outline_Done */ + /* FT_Outline_Copy */ + /* FT_Outline_Translate */ + /* FT_Outline_Transform */ + /* FT_Outline_Embolden */ + /* FT_Outline_EmboldenXY */ + /* FT_Outline_Reverse */ + /* FT_Outline_Check */ + /* */ + /* FT_Outline_Get_CBox */ + /* FT_Outline_Get_BBox */ + /* */ + /* FT_Outline_Get_Bitmap */ + /* FT_Outline_Render */ + /* FT_Outline_Decompose */ + /* FT_Outline_Funcs */ + /* FT_Outline_MoveToFunc */ + /* FT_Outline_LineToFunc */ + /* FT_Outline_ConicToFunc */ + /* FT_Outline_CubicToFunc */ + /* */ + /* FT_Orientation */ + /* FT_Outline_Get_Orientation */ + /* */ + /* FT_OUTLINE_XXX */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Decompose */ + /* */ + /* <Description> */ + /* Walk over an outline's structure to decompose it into individual */ + /* segments and Bézier arcs. This function also emits `move to' */ + /* operations to indicate the start of new contours in the outline. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source target. */ + /* */ + /* func_interface :: A table of `emitters', i.e., function pointers */ + /* called during decomposition to indicate path */ + /* operations. */ + /* */ + /* <InOut> */ + /* user :: A typeless pointer that is passed to each */ + /* emitter during the decomposition. It can be */ + /* used to store the state during the */ + /* decomposition. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* A contour that contains a single point only is represented by a */ + /* `move to' operation followed by `line to' to the same point. In */ + /* most cases, it is best to filter this out before using the */ + /* outline for stroking purposes (otherwise it would result in a */ + /* visible dot when round caps are used). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_New */ + /* */ + /* <Description> */ + /* Create a new outline of a given size. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object from where the */ + /* outline is allocated. Note however that the new */ + /* outline will *not* necessarily be *freed*, when */ + /* destroying the library, by @FT_Done_FreeType. */ + /* */ + /* numPoints :: The maximum number of points within the outline. */ + /* Must be smaller than or equal to 0xFFFF (65535). */ + /* */ + /* numContours :: The maximum number of contours within the outline. */ + /* This value must be in the range 0 to `numPoints'. */ + /* */ + /* <Output> */ + /* anoutline :: A handle to the new outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The reason why this function takes a `library' parameter is simply */ + /* to use the library's memory allocator. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_New_Internal( FT_Memory memory, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Done */ + /* */ + /* <Description> */ + /* Destroy an outline created with @FT_Outline_New. */ + /* */ + /* <Input> */ + /* library :: A handle of the library object used to allocate the */ + /* outline. */ + /* */ + /* outline :: A pointer to the outline object to be discarded. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If the outline's `owner' field is not set, only the outline */ + /* descriptor will be released. */ + /* */ + /* The reason why this function takes an `library' parameter is */ + /* simply to use ft_mem_free(). */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + + FT_EXPORT( FT_Error ) + FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Check */ + /* */ + /* <Description> */ + /* Check the contents of an outline descriptor. */ + /* */ + /* <Input> */ + /* outline :: A handle to a source outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Check( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_CBox */ + /* */ + /* <Description> */ + /* Return an outline's `control box'. The control box encloses all */ + /* the outline's points, including Bézier control points. Though it */ + /* coincides with the exact bounding box for most glyphs, it can be */ + /* slightly larger in some situations (like when rotating an outline */ + /* that contains Bézier outside arcs). */ + /* */ + /* Computing the control box is very fast, while getting the bounding */ + /* box can take much more time as it needs to walk over all segments */ + /* and arcs in the outline. To get the latter, you can use the */ + /* `ftbbox' component, which is dedicated to this single task. */ + /* */ + /* <Input> */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <Output> */ + /* acbox :: The outline's control box. */ + /* */ + /* <Note> */ + /* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Translate */ + /* */ + /* <Description> */ + /* Apply a simple translation to the points of an outline. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* xOffset :: The horizontal offset. */ + /* */ + /* yOffset :: The vertical offset. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Copy */ + /* */ + /* <Description> */ + /* Copy an outline into another one. Both objects must have the */ + /* same sizes (number of points & number of contours) when this */ + /* function is called. */ + /* */ + /* <Input> */ + /* source :: A handle to the source outline. */ + /* */ + /* <Output> */ + /* target :: A handle to the target outline. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Transform */ + /* */ + /* <Description> */ + /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ + /* for applying rotations, slanting, flipping, etc. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Input> */ + /* matrix :: A pointer to the transformation matrix. */ + /* */ + /* <Note> */ + /* You can use @FT_Outline_Translate if you need to translate the */ + /* outline's points. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Embolden */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be at most 4~times */ + /* `strength' pixels wider and higher. You may think of the left and */ + /* bottom borders as unchanged. */ + /* */ + /* Negative `strength' values to reduce the outline thickness are */ + /* possible also. */ + /* */ + /* <InOut> */ + /* outline :: A handle to the target outline. */ + /* */ + /* <Input> */ + /* strength :: How strong the glyph is emboldened. Expressed in */ + /* 26.6 pixel format. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The used algorithm to increase or decrease the thickness of the */ + /* glyph doesn't change the number of points; this means that certain */ + /* situations like acute angles or intersections are sometimes */ + /* handled incorrectly. */ + /* */ + /* If you need `better' metrics values you should call */ + /* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */ + /* */ + /* Example call: */ + /* */ + /* { */ + /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ + /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ + /* FT_Outline_Embolden( &face->slot->outline, strength ); */ + /* } */ + /* */ + /* To get meaningful results, font scaling values must be set with */ + /* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_EmboldenXY */ + /* */ + /* <Description> */ + /* Embolden an outline. The new outline will be `xstrength' pixels */ + /* wider and `ystrength' pixels higher. Otherwise, it is similar to */ + /* @FT_Outline_Embolden, which uses the same strength in both */ + /* directions. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_EmboldenXY( FT_Outline* outline, + FT_Pos xstrength, + FT_Pos ystrength ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Reverse */ + /* */ + /* <Description> */ + /* Reverse the drawing direction of an outline. This is used to */ + /* ensure consistent fill conventions for mirrored glyphs. */ + /* */ + /* <InOut> */ + /* outline :: A pointer to the target outline descriptor. */ + /* */ + /* <Note> */ + /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ + /* the outline's `flags' field. */ + /* */ + /* It shouldn't be used by a normal client application, unless it */ + /* knows what it is doing. */ + /* */ + FT_EXPORT( void ) + FT_Outline_Reverse( FT_Outline* outline ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Get_Bitmap */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap. The outline's image is simply */ + /* OR-ed to the target bitmap. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* abitmap :: A pointer to the target bitmap descriptor. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function does NOT CREATE the bitmap, it only renders an */ + /* outline image within the one you pass to it! Consequently, the */ + /* various fields in `abitmap' should be set accordingly. */ + /* */ + /* It will use the raster corresponding to the default glyph format. */ + /* */ + /* The value of the `num_grays' field in `abitmap' is ignored. If */ + /* you select the gray-level rasterizer, and you want less than 256 */ + /* gray levels, you have to use @FT_Outline_Render directly. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Outline_Render */ + /* */ + /* <Description> */ + /* Render an outline within a bitmap using the current scan-convert. */ + /* This function uses an @FT_Raster_Params structure as an argument, */ + /* allowing advanced features like direct composition, translucency, */ + /* etc. */ + /* */ + /* <Input> */ + /* library :: A handle to a FreeType library object. */ + /* */ + /* outline :: A pointer to the source outline descriptor. */ + /* */ + /* <InOut> */ + /* params :: A pointer to an @FT_Raster_Params structure used to */ + /* describe the rendering operation. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You should know what you are doing and how @FT_Raster_Params works */ + /* to use this function. */ + /* */ + /* The field `params.source' will be set to `outline' before the scan */ + /* converter is called, which means that the value you give to it is */ + /* actually ignored. */ + /* */ + /* The gray-level rasterizer always uses 256 gray levels. If you */ + /* want less gray levels, you have to provide your own span callback. */ + /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ + /* @FT_Raster_Params structure for more details. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + + /************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must + * be filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise contours + * must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ + typedef enum FT_Orientation_ + { + FT_ORIENTATION_TRUETYPE = 0, + FT_ORIENTATION_POSTSCRIPT = 1, + FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, + FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, + FT_ORIENTATION_NONE + + } FT_Orientation; + + + /************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its + * fill orientation (see @FT_Orientation). This is done by integrating + * the total area covered by the outline. The positive integral + * corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT + * is returned. The negative integral corresponds to the counter-clockwise + * orientation and @FT_ORIENTATION_TRUETYPE is returned. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ + FT_EXPORT( FT_Orientation ) + FT_Outline_Get_Orientation( FT_Outline* outline ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTOUTLN_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows64/include/freetype/ftpfr.h b/lib/windows64/include/freetype/ftpfr.h new file mode 100644 index 0000000..a1c02a2 --- /dev/null +++ b/lib/windows64/include/freetype/ftpfr.h @@ -0,0 +1,172 @@ +/***************************************************************************/ +/* */ +/* ftpfr.h */ +/* */ +/* FreeType API for accessing PFR-specific data (specification only). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTPFR_H__ +#define __FTPFR_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* pfr_fonts */ + /* */ + /* <Title> */ + /* PFR Fonts */ + /* */ + /* <Abstract> */ + /* PFR/TrueDoc specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of PFR-specific functions. */ + /* */ + /*************************************************************************/ + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed + * in metrics units to device sub-pixels. This is equivalent to + * `face->size->x_scale', but for metrics only. Optional (parameter + * can be NULL). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale' but for the vertical direction. + * optional (parameter can be NULL). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: A handle to the input face. + * + * left :: Index of the left glyph. + * + * right :: Index of the right glyph. + * + * @output: + * avector :: A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics + * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED + * mode, which always returns distances converted to outline units. + * + * You can use the value of the `x_scale' and `y_scale' parameters + * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + + /********************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: A handle to the input face. + * + * gindex :: The glyph index. + * + * @output: + * aadvance :: The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics + * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). + */ + FT_EXPORT( FT_Error ) + FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTPFR_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftrender.h b/lib/windows64/include/freetype/ftrender.h new file mode 100644 index 0000000..ec8da70 --- /dev/null +++ b/lib/windows64/include/freetype/ftrender.h @@ -0,0 +1,232 @@ +/***************************************************************************/ +/* */ +/* ftrender.h */ +/* */ +/* FreeType renderer modules public interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTRENDER_H__ +#define __FTRENDER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* module_management */ + /* */ + /*************************************************************************/ + + + /* create a new glyph object */ + typedef FT_Error + (*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + + /* destroys a given glyph object */ + typedef void + (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); + + typedef void + (*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + typedef void + (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); + + typedef FT_Error + (*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); + + typedef FT_Error + (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); + +/* deprecated */ +#define FT_Glyph_Init_Func FT_Glyph_InitFunc +#define FT_Glyph_Done_Func FT_Glyph_DoneFunc +#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc +#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc +#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc +#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc + + + struct FT_Glyph_Class_ + { + FT_Long glyph_size; + FT_Glyph_Format glyph_format; + FT_Glyph_InitFunc glyph_init; + FT_Glyph_DoneFunc glyph_done; + FT_Glyph_CopyFunc glyph_copy; + FT_Glyph_TransformFunc glyph_transform; + FT_Glyph_GetBBoxFunc glyph_bbox; + FT_Glyph_PrepareFunc glyph_prepare; + }; + + + typedef FT_Error + (*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode, + const FT_Vector* origin ); + + typedef FT_Error + (*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); + + + typedef void + (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); + + + typedef FT_Error + (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); + +/* deprecated identifiers */ +#define FTRenderer_render FT_Renderer_RenderFunc +#define FTRenderer_transform FT_Renderer_TransformFunc +#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc +#define FTRenderer_setMode FT_Renderer_SetModeFunc + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Renderer_Class */ + /* */ + /* <Description> */ + /* The renderer module class descriptor. */ + /* */ + /* <Fields> */ + /* root :: The root @FT_Module_Class fields. */ + /* */ + /* glyph_format :: The glyph image format this renderer handles. */ + /* */ + /* render_glyph :: A method used to render the image that is in a */ + /* given glyph slot into a bitmap. */ + /* */ + /* transform_glyph :: A method used to transform the image that is in */ + /* a given glyph slot. */ + /* */ + /* get_glyph_cbox :: A method used to access the glyph's cbox. */ + /* */ + /* set_mode :: A method used to pass additional parameters. */ + /* */ + /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ + /* This is a pointer to its raster's class. */ + /* */ + typedef struct FT_Renderer_Class_ + { + FT_Module_Class root; + + FT_Glyph_Format glyph_format; + + FT_Renderer_RenderFunc render_glyph; + FT_Renderer_TransformFunc transform_glyph; + FT_Renderer_GetCBoxFunc get_glyph_cbox; + FT_Renderer_SetModeFunc set_mode; + + FT_Raster_Funcs* raster_class; + + } FT_Renderer_Class; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Renderer */ + /* */ + /* <Description> */ + /* Retrieve the current renderer for a given glyph format. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* format :: The glyph format. */ + /* */ + /* <Return> */ + /* A renderer handle. 0~if none found. */ + /* */ + /* <Note> */ + /* An error will be returned if a module already exists by that name, */ + /* or if the module requires a version of FreeType that is too great. */ + /* */ + /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ + /* renderer by its name, use @FT_Get_Module. */ + /* */ + FT_EXPORT( FT_Renderer ) + FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Set_Renderer */ + /* */ + /* <Description> */ + /* Set the current renderer to use, and set additional mode. */ + /* */ + /* <InOut> */ + /* library :: A handle to the library object. */ + /* */ + /* <Input> */ + /* renderer :: A handle to the renderer object. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* parameters :: Additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* In case of success, the renderer will be used to convert glyph */ + /* images in the renderer's known format into bitmaps. */ + /* */ + /* This doesn't change the current renderer for other formats. */ + /* */ + /* Currently, no FreeType renderer module uses `parameters'; you */ + /* should thus always pass NULL as the value. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTRENDER_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftsizes.h b/lib/windows64/include/freetype/ftsizes.h new file mode 100644 index 0000000..bef8424 --- /dev/null +++ b/lib/windows64/include/freetype/ftsizes.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftsizes.h */ +/* */ +/* FreeType size objects management (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Typical application would normally not need to use these functions. */ + /* However, they have been placed in a public API for the rare cases */ + /* where they are needed. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSIZES_H__ +#define __FTSIZES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sizes_management */ + /* */ + /* <Title> */ + /* Size Management */ + /* */ + /* <Abstract> */ + /* Managing multiple sizes per face. */ + /* */ + /* <Description> */ + /* When creating a new face object (e.g., with @FT_New_Face), an */ + /* @FT_Size object is automatically created and used to store all */ + /* pixel-size dependent information, available in the `face->size' */ + /* field. */ + /* */ + /* It is however possible to create more sizes for a given face, */ + /* mostly in order to manage several character pixel sizes of the */ + /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ + /* */ + /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ + /* modify the contents of the current `active' size; you thus need */ + /* to use @FT_Activate_Size to change it. */ + /* */ + /* 99% of applications won't need the functions provided here, */ + /* especially if they use the caching sub-system, so be cautious */ + /* when using these. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Size */ + /* */ + /* <Description> */ + /* Create a new size object from a given face object. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* asize :: A handle to a new size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* You need to call @FT_Activate_Size in order to select the new size */ + /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ + /* @FT_Load_Glyph, @FT_Load_Char, etc. */ + /* */ + FT_EXPORT( FT_Error ) + FT_New_Size( FT_Face face, + FT_Size* size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Size */ + /* */ + /* <Description> */ + /* Discard a given size object. Note that @FT_Done_Face */ + /* automatically discards all size objects allocated with */ + /* @FT_New_Size. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Done_Size( FT_Size size ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Activate_Size */ + /* */ + /* <Description> */ + /* Even though it is possible to create several size objects for a */ + /* given face (see @FT_New_Size for details), functions like */ + /* @FT_Load_Glyph or @FT_Load_Char only use the one that has been */ + /* activated last to determine the `current character pixel size'. */ + /* */ + /* This function can be used to `activate' a previously created size */ + /* object. */ + /* */ + /* <Input> */ + /* size :: A handle to a target size object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* If `face' is the size's parent face object, this function changes */ + /* the value of `face->size' to the input size handle. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Activate_Size( FT_Size size ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSIZES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftsnames.h b/lib/windows64/include/freetype/ftsnames.h new file mode 100644 index 0000000..0f7fbe1 --- /dev/null +++ b/lib/windows64/include/freetype/ftsnames.h @@ -0,0 +1,200 @@ +/***************************************************************************/ +/* */ +/* ftsnames.h */ +/* */ +/* Simple interface to access SFNT name tables (which are used */ +/* to hold font names, copyright info, notices, etc.) (specification). */ +/* */ +/* This is _not_ used to retrieve glyph names! */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_SFNT_NAMES_H__ +#define __FT_SFNT_NAMES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* sfnt_names */ + /* */ + /* <Title> */ + /* SFNT Names */ + /* */ + /* <Abstract> */ + /* Access the names embedded in TrueType and OpenType files. */ + /* */ + /* <Description> */ + /* The TrueType and OpenType specifications allow the inclusion of */ + /* a special `names table' in font files. This table contains */ + /* textual (and internationalized) information regarding the font, */ + /* like family name, copyright, version, etc. */ + /* */ + /* The definitions below are used to access them if available. */ + /* */ + /* Note that this has nothing to do with glyph names! */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_SfntName */ + /* */ + /* <Description> */ + /* A structure used to model an SFNT `name' table entry. */ + /* */ + /* <Fields> */ + /* platform_id :: The platform ID for `string'. */ + /* */ + /* encoding_id :: The encoding ID for `string'. */ + /* */ + /* language_id :: The language ID for `string'. */ + /* */ + /* name_id :: An identifier for `string'. */ + /* */ + /* string :: The `name' string. Note that its format differs */ + /* depending on the (platform,encoding) pair. It can */ + /* be a Pascal String, a UTF-16 one, etc. */ + /* */ + /* Generally speaking, the string is not */ + /* zero-terminated. Please refer to the TrueType */ + /* specification for details. */ + /* */ + /* string_len :: The length of `string' in bytes. */ + /* */ + /* <Note> */ + /* Possible values for `platform_id', `encoding_id', `language_id', */ + /* and `name_id' are given in the file `ttnameid.h'. For details */ + /* please refer to the TrueType or OpenType specification. */ + /* */ + /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ + /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ + /* */ + typedef struct FT_SfntName_ + { + FT_UShort platform_id; + FT_UShort encoding_id; + FT_UShort language_id; + FT_UShort name_id; + + FT_Byte* string; /* this string is *not* null-terminated! */ + FT_UInt string_len; /* in bytes */ + + } FT_SfntName; + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name_Count */ + /* */ + /* <Description> */ + /* Retrieve the number of name strings in the SFNT `name' table. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* <Return> */ + /* The number of strings in the `name' table. */ + /* */ + FT_EXPORT( FT_UInt ) + FT_Get_Sfnt_Name_Count( FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Name */ + /* */ + /* <Description> */ + /* Retrieve a string of the SFNT `name' table for a given index. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face. */ + /* */ + /* idx :: The index of the `name' string. */ + /* */ + /* <Output> */ + /* aname :: The indexed @FT_SfntName structure. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* The `string' array returned in the `aname' structure is not */ + /* null-terminated. The application should deallocate it if it is no */ + /* longer in use. */ + /* */ + /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ + /* `name' table entries, then do a loop until you get the right */ + /* platform, encoding, and name ID. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred family subfamily names in `name' + * table since OpenType version 1.4. For backwards compatibility with + * legacy systems that have a 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred subfamily names in `name' table since + * OpenType version 1.4. For backwards compatibility with legacy + * systems that have a 4-face-per-family restriction. + * + */ +#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' ) + + /* */ + + +FT_END_HEADER + +#endif /* __FT_SFNT_NAMES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftstroke.h b/lib/windows64/include/freetype/ftstroke.h new file mode 100644 index 0000000..7ebb1e7 --- /dev/null +++ b/lib/windows64/include/freetype/ftstroke.h @@ -0,0 +1,785 @@ +/***************************************************************************/ +/* */ +/* ftstroke.h */ +/* */ +/* FreeType path stroker (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FT_STROKE_H__ +#define __FT_STROKE_H__ + +#include <ft2build.h> +#include FT_OUTLINE_H +#include FT_GLYPH_H + + +FT_BEGIN_HEADER + + + /************************************************************************ + * + * @section: + * glyph_stroker + * + * @title: + * Glyph Stroker + * + * @abstract: + * Generating bordered and stroked glyphs. + * + * @description: + * This component generates stroked outlines of a given vectorial + * glyph. It also allows you to retrieve the `outside' and/or the + * `inside' borders of the stroke. + * + * This can be useful to generate `bordered' glyph, i.e., glyphs + * displayed with a coloured (and anti-aliased) border around their + * shape. + * + * @order: + * FT_Stroker + * + * FT_Stroker_LineJoin + * FT_Stroker_LineCap + * FT_StrokerBorder + * + * FT_Outline_GetInsideBorder + * FT_Outline_GetOutsideBorder + * + * FT_Glyph_Stroke + * FT_Glyph_StrokeBorder + * + * FT_Stroker_New + * FT_Stroker_Set + * FT_Stroker_Rewind + * FT_Stroker_ParseOutline + * FT_Stroker_Done + * + * FT_Stroker_BeginSubPath + * FT_Stroker_EndSubPath + * + * FT_Stroker_LineTo + * FT_Stroker_ConicTo + * FT_Stroker_CubicTo + * + * FT_Stroker_GetBorderCounts + * FT_Stroker_ExportBorder + * FT_Stroker_GetCounts + * FT_Stroker_Export + * + */ + + + /************************************************************** + * + * @type: + * FT_Stroker + * + * @description: + * Opaque handle to a path stroker object. + */ + typedef struct FT_StrokerRec_* FT_Stroker; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineJoin + * + * @description: + * These values determine how two joining lines are rendered + * in a stroker. + * + * @values: + * FT_STROKER_LINEJOIN_ROUND :: + * Used to render rounded line joins. Circular arcs are used + * to join two lines smoothly. + * + * FT_STROKER_LINEJOIN_BEVEL :: + * Used to render beveled line joins. The outer corner of + * the joined lines is filled by enclosing the triangular + * region of the corner with a straight line between the + * outer corners of each stroke. + * + * FT_STROKER_LINEJOIN_MITER_FIXED :: + * Used to render mitered line joins, with fixed bevels if the + * miter limit is exceeded. The outer edges of the strokes + * for the two segments are extended until they meet at an + * angle. If the segments meet at too sharp an angle (such + * that the miter would extend from the intersection of the + * segments a distance greater than the product of the miter + * limit value and the border radius), then a bevel join (see + * above) is used instead. This prevents long spikes being + * created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter + * line join as used in PostScript and PDF. + * + * FT_STROKER_LINEJOIN_MITER_VARIABLE :: + * FT_STROKER_LINEJOIN_MITER :: + * Used to render mitered line joins, with variable bevels if + * the miter limit is exceeded. The intersection of the + * strokes is clipped at a line perpendicular to the bisector + * of the angle between the strokes, at the distance from the + * intersection of the segments equal to the product of the + * miter limit value and the border radius. This prevents + * long spikes being created. + * FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line + * join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias + * for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for + * backwards compatibility. + */ + typedef enum FT_Stroker_LineJoin_ + { + FT_STROKER_LINEJOIN_ROUND = 0, + FT_STROKER_LINEJOIN_BEVEL = 1, + FT_STROKER_LINEJOIN_MITER_VARIABLE = 2, + FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE, + FT_STROKER_LINEJOIN_MITER_FIXED = 3 + + } FT_Stroker_LineJoin; + + + /************************************************************** + * + * @enum: + * FT_Stroker_LineCap + * + * @description: + * These values determine how the end of opened sub-paths are + * rendered in a stroke. + * + * @values: + * FT_STROKER_LINECAP_BUTT :: + * The end of lines is rendered as a full stop on the last + * point itself. + * + * FT_STROKER_LINECAP_ROUND :: + * The end of lines is rendered as a half-circle around the + * last point. + * + * FT_STROKER_LINECAP_SQUARE :: + * The end of lines is rendered as a square around the + * last point. + */ + typedef enum FT_Stroker_LineCap_ + { + FT_STROKER_LINECAP_BUTT = 0, + FT_STROKER_LINECAP_ROUND, + FT_STROKER_LINECAP_SQUARE + + } FT_Stroker_LineCap; + + + /************************************************************** + * + * @enum: + * FT_StrokerBorder + * + * @description: + * These values are used to select a given stroke border + * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * + * @values: + * FT_STROKER_BORDER_LEFT :: + * Select the left border, relative to the drawing direction. + * + * FT_STROKER_BORDER_RIGHT :: + * Select the right border, relative to the drawing direction. + * + * @note: + * Applications are generally interested in the `inside' and `outside' + * borders. However, there is no direct mapping between these and the + * `left' and `right' ones, since this really depends on the glyph's + * drawing orientation, which varies between font formats. + * + * You can however use @FT_Outline_GetInsideBorder and + * @FT_Outline_GetOutsideBorder to get these. + */ + typedef enum FT_StrokerBorder_ + { + FT_STROKER_BORDER_LEFT = 0, + FT_STROKER_BORDER_RIGHT + + } FT_StrokerBorder; + + + /************************************************************** + * + * @function: + * FT_Outline_GetInsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `inside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetInsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Outline_GetOutsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `outside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * outlines. + */ + FT_EXPORT( FT_StrokerBorder ) + FT_Outline_GetOutsideBorder( FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_New + * + * @description: + * Create a new stroker object. + * + * @input: + * library :: + * FreeType library handle. + * + * @output: + * astroker :: + * A new stroker object handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_New( FT_Library library, + FT_Stroker *astroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Set + * + * @description: + * Reset a stroker object's attributes. + * + * @input: + * stroker :: + * The target stroker handle. + * + * radius :: + * The border radius. + * + * line_cap :: + * The line cap style. + * + * line_join :: + * The line join style. + * + * miter_limit :: + * The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and + * FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles, + * expressed as 16.16 fixed-point value. + * + * @note: + * The radius is expressed in the same units as the outline + * coordinates. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( void ) + FT_Stroker_Set( FT_Stroker stroker, + FT_Fixed radius, + FT_Stroker_LineCap line_cap, + FT_Stroker_LineJoin line_join, + FT_Fixed miter_limit ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Rewind + * + * @description: + * Reset a stroker object without changing its attributes. + * You should call this function before beginning a new + * series of calls to @FT_Stroker_BeginSubPath or + * @FT_Stroker_EndSubPath. + * + * @input: + * stroker :: + * The target stroker handle. + */ + FT_EXPORT( void ) + FT_Stroker_Rewind( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ParseOutline + * + * @description: + * A convenience function used to parse a whole outline with + * the stroker. The resulting outline(s) can be retrieved + * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The source outline. + * + * opened :: + * A boolean. If~1, the outline is treated as an open path instead + * of a closed one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `opened' is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct `border' outlines. + * + * If `opened' is~1, the outline is processed as an open path, and the + * stroker generates a single `stroke' outline. + * + * This function calls @FT_Stroker_Rewind automatically. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ParseOutline( FT_Stroker stroker, + FT_Outline* outline, + FT_Bool opened ); + + + /************************************************************** + * + * @function: + * FT_Stroker_BeginSubPath + * + * @description: + * Start a new sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the start vector. + * + * open :: + * A boolean. If~1, the sub-path is treated as an open one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is useful when you need to stroke a path that is + * not stored as an @FT_Outline object. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_BeginSubPath( FT_Stroker stroker, + FT_Vector* to, + FT_Bool open ); + + + /************************************************************** + * + * @function: + * FT_Stroker_EndSubPath + * + * @description: + * Close the current sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function after @FT_Stroker_BeginSubPath. + * If the subpath was not `opened', this function `draws' a + * single line segment to the start position when needed. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_EndSubPath( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Stroker_LineTo + * + * @description: + * `Draw' a single line segment in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_LineTo( FT_Stroker stroker, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ConicTo + * + * @description: + * `Draw' a single quadratic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control :: + * A pointer to a Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_ConicTo( FT_Stroker stroker, + FT_Vector* control, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_CubicTo + * + * @description: + * `Draw' a single cubic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control1 :: + * A pointer to the first Bézier control point. + * + * control2 :: + * A pointer to second Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_CubicTo( FT_Stroker stroker, + FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetBorderCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export one of the `border' or `stroke' + * outlines generated by the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_GetCounts instead if you want to + * retrieve the counts associated to both borders. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetBorderCounts( FT_Stroker stroker, + FT_StrokerBorder border, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_ExportBorder + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export the corresponding border to your own @FT_Outline + * structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * outline :: + * The target outline handle. + * + * @note: + * Always call this function after @FT_Stroker_GetBorderCounts to + * get sure that there is enough room in your @FT_Outline object to + * receive all new data. + * + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_Export instead if you want to + * retrieve all borders at once. + */ + FT_EXPORT( void ) + FT_Stroker_ExportBorder( FT_Stroker stroker, + FT_StrokerBorder border, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_GetCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export all points/borders from the stroked + * outline/path. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + */ + FT_EXPORT( FT_Error ) + FT_Stroker_GetCounts( FT_Stroker stroker, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Export + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export all borders to your own @FT_Outline structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The target outline handle. + */ + FT_EXPORT( void ) + FT_Stroker_Export( FT_Stroker stroker, + FT_Outline* outline ); + + + /************************************************************** + * + * @function: + * FT_Stroker_Done + * + * @description: + * Destroy a stroker object. + * + * @input: + * stroker :: + * A stroker handle. Can be NULL. + */ + FT_EXPORT( void ) + FT_Stroker_Done( FT_Stroker stroker ); + + + /************************************************************** + * + * @function: + * FT_Glyph_Stroke + * + * @description: + * Stroke a given outline glyph object with a given stroker. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_Stroke( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool destroy ); + + + /************************************************************** + * + * @function: + * FT_Glyph_StrokeBorder + * + * @description: + * Stroke a given outline glyph object with a given stroker, but + * only return either its inside or outside border. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * inside :: + * A Boolean. If~1, return the inside border, otherwise + * the outside border. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ + FT_EXPORT( FT_Error ) + FT_Glyph_StrokeBorder( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool inside, + FT_Bool destroy ); + + /* */ + +FT_END_HEADER + +#endif /* __FT_STROKE_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows64/include/freetype/ftsynth.h b/lib/windows64/include/freetype/ftsynth.h new file mode 100644 index 0000000..fbcbad8 --- /dev/null +++ b/lib/windows64/include/freetype/ftsynth.h @@ -0,0 +1,84 @@ +/***************************************************************************/ +/* */ +/* ftsynth.h */ +/* */ +/* FreeType synthesizing code for emboldening and slanting */ +/* (specification). */ +/* */ +/* Copyright 2000-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /********* *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ + /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ + /********* FREETYPE DEVELOPMENT TEAM *********/ + /********* *********/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* Main reason for not lifting the functions in this module to a */ + /* `standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource that should be copied into the application and */ + /* adapted to the particular needs. */ + + +#ifndef __FTSYNTH_H__ +#define __FTSYNTH_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the height, width, and advance metrics are */ + /* increased by the strength of the emboldening -- this even affects */ + /* mono-width fonts! */ + /* */ + /* You can also call @FT_Outline_Get_CBox to get precise values. */ + FT_EXPORT( void ) + FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + + /* Slant an outline glyph to the right by about 12 degrees. */ + FT_EXPORT( void ) + FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYNTH_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftsystem.h b/lib/windows64/include/freetype/ftsystem.h new file mode 100644 index 0000000..2bc9999 --- /dev/null +++ b/lib/windows64/include/freetype/ftsystem.h @@ -0,0 +1,355 @@ +/***************************************************************************/ +/* */ +/* ftsystem.h */ +/* */ +/* FreeType low-level system interface definition (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSYSTEM_H__ +#define __FTSYSTEM_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* system_interface */ + /* */ + /* <Title> */ + /* System Interface */ + /* */ + /* <Abstract> */ + /* How FreeType manages memory and i/o. */ + /* */ + /* <Description> */ + /* This section contains various definitions related to memory */ + /* management and i/o access. You need to understand this */ + /* information if you want to use a custom memory manager or you own */ + /* i/o streams. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* M E M O R Y M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Memory + * + * @description: + * A handle to a given memory manager object, defined with an + * @FT_MemoryRec structure. + * + */ + typedef struct FT_MemoryRec_* FT_Memory; + + + /************************************************************************* + * + * @functype: + * FT_Alloc_Func + * + * @description: + * A function used to allocate `size' bytes from `memory'. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * size :: + * The size in bytes to allocate. + * + * @return: + * Address of new memory block. 0~in case of failure. + * + */ + typedef void* + (*FT_Alloc_Func)( FT_Memory memory, + long size ); + + + /************************************************************************* + * + * @functype: + * FT_Free_Func + * + * @description: + * A function used to release a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * block :: + * The address of the target memory block. + * + */ + typedef void + (*FT_Free_Func)( FT_Memory memory, + void* block ); + + + /************************************************************************* + * + * @functype: + * FT_Realloc_Func + * + * @description: + * A function used to re-allocate a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * cur_size :: + * The block's current size in bytes. + * + * new_size :: + * The block's requested new size. + * + * block :: + * The block's current address. + * + * @return: + * New block address. 0~in case of memory shortage. + * + * @note: + * In case of error, the old block must still be available. + * + */ + typedef void* + (*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + + /************************************************************************* + * + * @struct: + * FT_MemoryRec + * + * @description: + * A structure used to describe a given memory manager to FreeType~2. + * + * @fields: + * user :: + * A generic typeless pointer for user data. + * + * alloc :: + * A pointer type to an allocation function. + * + * free :: + * A pointer type to an memory freeing function. + * + * realloc :: + * A pointer type to a reallocation function. + * + */ + struct FT_MemoryRec_ + { + void* user; + FT_Alloc_Func alloc; + FT_Free_Func free; + FT_Realloc_Func realloc; + }; + + + /*************************************************************************/ + /* */ + /* I / O M A N A G E M E N T */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Stream + * + * @description: + * A handle to an input stream. + * + * @also: + * See @FT_StreamRec for the publicly accessible fields of a given + * stream object. + * + */ + typedef struct FT_StreamRec_* FT_Stream; + + + /************************************************************************* + * + * @struct: + * FT_StreamDesc + * + * @description: + * A union type used to store either a long or a pointer. This is used + * to store a file descriptor or a `FILE*' in an input stream. + * + */ + typedef union FT_StreamDesc_ + { + long value; + void* pointer; + + } FT_StreamDesc; + + + /************************************************************************* + * + * @functype: + * FT_Stream_IoFunc + * + * @description: + * A function used to seek and read data from a given input stream. + * + * @input: + * stream :: + * A handle to the source stream. + * + * offset :: + * The offset of read in stream (always from start). + * + * buffer :: + * The address of the read buffer. + * + * count :: + * The number of bytes to read from the stream. + * + * @return: + * The number of bytes effectively read by the stream. + * + * @note: + * This function might be called to perform a seek or skip operation + * with a `count' of~0. A non-zero return value then indicates an + * error. + * + */ + typedef unsigned long + (*FT_Stream_IoFunc)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + + /************************************************************************* + * + * @functype: + * FT_Stream_CloseFunc + * + * @description: + * A function used to close a given input stream. + * + * @input: + * stream :: + * A handle to the target stream. + * + */ + typedef void + (*FT_Stream_CloseFunc)( FT_Stream stream ); + + + /************************************************************************* + * + * @struct: + * FT_StreamRec + * + * @description: + * A structure used to describe an input stream. + * + * @input: + * base :: + * For memory-based streams, this is the address of the first stream + * byte in memory. This field should always be set to NULL for + * disk-based streams. + * + * size :: + * The stream size in bytes. + * + * In case of compressed streams where the size is unknown before + * actually doing the decompression, the value is set to 0x7FFFFFFF. + * (Note that this size value can occur for normal streams also; it is + * thus just a hint.) + * + * pos :: + * The current position within the stream. + * + * descriptor :: + * This field is a union that can hold an integer or a pointer. It is + * used by stream implementations to store file descriptors or `FILE*' + * pointers. + * + * pathname :: + * This field is completely ignored by FreeType. However, it is often + * useful during debugging to use it to store the stream's filename + * (where available). + * + * read :: + * The stream's input function. + * + * close :: + * The stream's close function. + * + * memory :: + * The memory manager to use to preload frames. This is set + * internally by FreeType and shouldn't be touched by stream + * implementations. + * + * cursor :: + * This field is set and used internally by FreeType when parsing + * frames. + * + * limit :: + * This field is set and used internally by FreeType when parsing + * frames. + * + */ + typedef struct FT_StreamRec_ + { + unsigned char* base; + unsigned long size; + unsigned long pos; + + FT_StreamDesc descriptor; + FT_StreamDesc pathname; + FT_Stream_IoFunc read; + FT_Stream_CloseFunc close; + + FT_Memory memory; + unsigned char* cursor; + unsigned char* limit; + + } FT_StreamRec; + + /* */ + + +FT_END_HEADER + +#endif /* __FTSYSTEM_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/fttrigon.h b/lib/windows64/include/freetype/fttrigon.h new file mode 100644 index 0000000..3d821ba --- /dev/null +++ b/lib/windows64/include/freetype/fttrigon.h @@ -0,0 +1,350 @@ +/***************************************************************************/ +/* */ +/* fttrigon.h */ +/* */ +/* FreeType trigonometric functions (specification). */ +/* */ +/* Copyright 2001-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTRIGON_H__ +#define __FTTRIGON_H__ + +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* computations */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @type: + * FT_Angle + * + * @description: + * This type is used to model angle values in FreeType. Note that the + * angle is a 16.16 fixed-point value expressed in degrees. + * + */ + typedef FT_Fixed FT_Angle; + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI + * + * @description: + * The angle pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI ( 180L << 16 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_2PI + * + * @description: + * The angle 2*pi expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI2 + * + * @description: + * The angle pi/2 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) + + + /************************************************************************* + * + * @macro: + * FT_ANGLE_PI4 + * + * @description: + * The angle pi/4 expressed in @FT_Angle units. + * + */ +#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) + + + /************************************************************************* + * + * @function: + * FT_Sin + * + * @description: + * Return the sinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The sinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Sin( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Cos + * + * @description: + * Return the cosinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The cosinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Cos( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Tan + * + * @description: + * Return the tangent of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The tangent value. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Tan( FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Atan2 + * + * @description: + * Return the arc-tangent corresponding to a given vector (x,y) in + * the 2d plane. + * + * @input: + * x :: + * The horizontal vector coordinate. + * + * y :: + * The vertical vector coordinate. + * + * @return: + * The arc-tangent value (i.e. angle). + * + */ + FT_EXPORT( FT_Angle ) + FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + + /************************************************************************* + * + * @function: + * FT_Angle_Diff + * + * @description: + * Return the difference between two angles. The result is always + * constrained to the ]-PI..PI] interval. + * + * @input: + * angle1 :: + * First angle. + * + * angle2 :: + * Second angle. + * + * @return: + * Constrained value of `value2-value1'. + * + */ + FT_EXPORT( FT_Angle ) + FT_Angle_Diff( FT_Angle angle1, + FT_Angle angle2 ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Unit + * + * @description: + * Return the unit vector corresponding to a given angle. After the + * call, the value of `vec.x' will be `sin(angle)', and the value of + * `vec.y' will be `cos(angle)'. + * + * This function is useful to retrieve both the sinus and cosinus of a + * given angle quickly. + * + * @output: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Rotate + * + * @description: + * Rotate a vector by a given angle. + * + * @inout: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The input angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Rotate( FT_Vector* vec, + FT_Angle angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Length + * + * @description: + * Return the length of a given vector. + * + * @input: + * vec :: + * The address of target vector. + * + * @return: + * The vector length, expressed in the same units that the original + * vector coordinates. + * + */ + FT_EXPORT( FT_Fixed ) + FT_Vector_Length( FT_Vector* vec ); + + + /************************************************************************* + * + * @function: + * FT_Vector_Polarize + * + * @description: + * Compute both the length and angle of a given vector. + * + * @input: + * vec :: + * The address of source vector. + * + * @output: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + + + /************************************************************************* + * + * @function: + * FT_Vector_From_Polar + * + * @description: + * Compute vector coordinates from a length and angle. + * + * @output: + * vec :: + * The address of source vector. + * + * @input: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ + FT_EXPORT( void ) + FT_Vector_From_Polar( FT_Vector* vec, + FT_Fixed length, + FT_Angle angle ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTTRIGON_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftttdrv.h b/lib/windows64/include/freetype/ftttdrv.h new file mode 100644 index 0000000..f56040b --- /dev/null +++ b/lib/windows64/include/freetype/ftttdrv.h @@ -0,0 +1,233 @@ +/***************************************************************************/ +/* */ +/* ftttdrv.h */ +/* */ +/* FreeType API for controlling the TrueType driver */ +/* (specification only). */ +/* */ +/* Copyright 2013-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTTDRV_H__ +#define __FTTTDRV_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * tt_driver + * + * @title: + * The TrueType driver + * + * @abstract: + * Controlling the TrueType driver module. + * + * @description: + * While FreeType's TrueType driver doesn't expose API functions by + * itself, it is possible to control its behaviour with @FT_Property_Set + * and @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * The TrueType driver's module name is `truetype'. + * + */ + + + /************************************************************************** + * + * @property: + * interpreter-version + * + * @description: + * Currently, two versions are available, representing the bytecode + * interpreter with and without subpixel hinting support, + * respectively. The default is subpixel support if + * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel + * support otherwise (since it isn't available then). + * + * If subpixel hinting is on, many TrueType bytecode instructions behave + * differently compared to B/W or grayscale rendering (except if `native + * ClearType' is selected by the font). The main idea is to render at a + * much increased horizontal resolution, then sampling down the created + * output to subpixel precision. However, many older fonts are not + * suited to this and must be specially taken care of by applying + * (hardcoded) font-specific tweaks. + * + * Details on subpixel hinting and some of the necessary tweaks can be + * found in Greg Hitchcock's whitepaper at + * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * + * The following example code demonstrates how to activate subpixel + * hinting (omitting the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "truetype", + * "interpreter-version", + * &interpreter_version ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + + /************************************************************************** + * + * @enum: + * TT_INTERPRETER_VERSION_XXX + * + * @description: + * A list of constants used for the @interpreter-version property to + * select the hinting engine for Truetype fonts. + * + * The numeric value in the constant names represents the version + * number as returned by the `GETINFO' bytecode instruction. + * + * @values: + * TT_INTERPRETER_VERSION_35 :: + * Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in + * Windows~98; only grayscale and B/W rasterizing is supported. + * + * TT_INTERPRETER_VERSION_38 :: + * Version~38 corresponds to MS rasterizer v.1.9; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as + * can be found, for example, in the Internet Explorer~9 running on + * Windows~7). + * + * @note: + * This property controls the behaviour of the bytecode interpreter + * and thus how outlines get hinted. It does *not* control how glyph + * get rasterized! In particular, it does not control subpixel color + * filtering. + * + * If FreeType has not been compiled with configuration option + * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an + * `FT_Err_Unimplemented_Feature' error. + * + * Depending on the graphics framework, Microsoft uses different + * bytecode and rendering engines. As a consequence, the version + * numbers returned by a call to the `GETINFO' bytecode instruction are + * more convoluted than desired. + * + * Here are two tables that try to shed some light on the possible + * values for the MS rasterizer engine, together with the additional + * features introduced by it. + * + * { + * GETINFO framework version feature + * ------------------------------------------------------------------- + * 3 GDI (Win 3.1), v1.0 16-bit, first version + * TrueImage + * 33 GDI (Win NT 3.1), v1.5 32-bit + * HP Laserjet + * 34 GDI (Win 95) v1.6 font smoothing, + * new SCANTYPE opcode + * 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET + * bits in composite glyphs + * 36 MGDI (Win CE 2) v1.6+ classic ClearType + * 37 GDI (XP and later), v1.8 ClearType + * GDI+ old (before Vista) + * 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType, + * WPF Y-direction ClearType, + * additional error checking + * 39 DWrite (before Win 8) v2.0 subpixel ClearType flags + * in GETINFO opcode, + * bug fixes + * 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag + * DWrite (Win 8) in GETINFO opcode, + * Gray ClearType + * } + * + * The `version' field gives a rough orientation only, since some + * applications provided certain features much earlier (as an example, + * Microsoft Reader used subpixel and Y-direction ClearType already in + * Windows 2000). Similarly, updates to a given framework might include + * improved hinting support. + * + * { + * version sampling rendering comment + * x y x y + * -------------------------------------------------------------- + * v1.0 normal normal B/W B/W bi-level + * v1.6 high high gray gray grayscale + * v1.8 high normal color-filter B/W (GDI) ClearType + * v1.9 high high color-filter gray Color ClearType + * v2.1 high normal gray B/W Gray ClearType + * v2.1 high high gray gray Gray ClearType + * } + * + * Color and Gray ClearType are the two available variants of + * `Y-direction ClearType', meaning grayscale rasterization along the + * Y-direction; the name used in the TrueType specification for this + * feature is `symmetric smoothing'. `Classic ClearType' is the + * original algorithm used before introducing a modified version in + * Win~XP. Another name for v1.6's grayscale rendering is `font + * smoothing', and `Color ClearType' is sometimes also called `DWrite + * ClearType'. To differentiate between today's Color ClearType and the + * earlier ClearType variant with B/W rendering along the vertical axis, + * the latter is sometimes called `GDI ClearType'. + * + * `Normal' and `high' sampling describe the (virtual) resolution to + * access the rasterized outline after the hinting process. `Normal' + * means 1 sample per grid line (i.e., B/W). In the current Microsoft + * implementation, `high' means an extra virtual resolution of 16x16 (or + * 16x1) grid lines per pixel for bytecode instructions like `MIRP'. + * After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid + * lines for color filtering if Color ClearType is activated. + * + * Note that `Gray ClearType' is essentially the same as v1.6's + * grayscale rendering. However, the GETINFO instruction handles it + * differently: v1.6 returns bit~12 (hinting for grayscale), while v2.1 + * returns bits~13 (hinting for ClearType), 18 (symmetrical smoothing), + * and~19 (Gray ClearType). Also, this mode respects bits 2 and~3 for + * the version~1 gasp table exclusively (like Color ClearType), while + * v1.6 only respects the values of version~0 (bits 0 and~1). + * + * FreeType doesn't provide all capabilities of the most recent + * ClearType incarnation, thus we identify our subpixel support as + * version~38. + * + */ +#define TT_INTERPRETER_VERSION_35 35 +#define TT_INTERPRETER_VERSION_38 38 + + /* */ + + +FT_END_HEADER + + +#endif /* __FTTTDRV_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/fttypes.h b/lib/windows64/include/freetype/fttypes.h new file mode 100644 index 0000000..706a1be --- /dev/null +++ b/lib/windows64/include/freetype/fttypes.h @@ -0,0 +1,602 @@ +/***************************************************************************/ +/* */ +/* fttypes.h */ +/* */ +/* FreeType simple types definitions (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTTYPES_H__ +#define __FTTYPES_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_SYSTEM_H +#include FT_IMAGE_H + +#include <stddef.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* basic_types */ + /* */ + /* <Title> */ + /* Basic Data Types */ + /* */ + /* <Abstract> */ + /* The basic data types defined by the library. */ + /* */ + /* <Description> */ + /* This section contains the basic data types defined by FreeType~2, */ + /* ranging from simple scalar types to bitmap descriptors. More */ + /* font-specific structures are defined in a different section. */ + /* */ + /* <Order> */ + /* FT_Byte */ + /* FT_Bytes */ + /* FT_Char */ + /* FT_Int */ + /* FT_UInt */ + /* FT_Int16 */ + /* FT_UInt16 */ + /* FT_Int32 */ + /* FT_UInt32 */ + /* FT_Int64 */ + /* FT_UInt64 */ + /* FT_Short */ + /* FT_UShort */ + /* FT_Long */ + /* FT_ULong */ + /* FT_Bool */ + /* FT_Offset */ + /* FT_PtrDist */ + /* FT_String */ + /* FT_Tag */ + /* FT_Error */ + /* FT_Fixed */ + /* FT_Pointer */ + /* FT_Pos */ + /* FT_Vector */ + /* FT_BBox */ + /* FT_Matrix */ + /* FT_FWord */ + /* FT_UFWord */ + /* FT_F2Dot14 */ + /* FT_UnitVector */ + /* FT_F26Dot6 */ + /* FT_Data */ + /* */ + /* FT_MAKE_TAG */ + /* */ + /* FT_Generic */ + /* FT_Generic_Finalizer */ + /* */ + /* FT_Bitmap */ + /* FT_Pixel_Mode */ + /* FT_Palette_Mode */ + /* FT_Glyph_Format */ + /* FT_IMAGE_TAG */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bool */ + /* */ + /* <Description> */ + /* A typedef of unsigned char, used for simple booleans. As usual, */ + /* values 1 and~0 represent true and false, respectively. */ + /* */ + typedef unsigned char FT_Bool; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_FWord */ + /* */ + /* <Description> */ + /* A signed 16-bit integer used to store a distance in original font */ + /* units. */ + /* */ + typedef signed short FT_FWord; /* distance in FUnits */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UFWord */ + /* */ + /* <Description> */ + /* An unsigned 16-bit integer used to store a distance in original */ + /* font units. */ + /* */ + typedef unsigned short FT_UFWord; /* unsigned distance */ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Char */ + /* */ + /* <Description> */ + /* A simple typedef for the _signed_ char type. */ + /* */ + typedef signed char FT_Char; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Byte */ + /* */ + /* <Description> */ + /* A simple typedef for the _unsigned_ char type. */ + /* */ + typedef unsigned char FT_Byte; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Bytes */ + /* */ + /* <Description> */ + /* A typedef for constant memory areas. */ + /* */ + typedef const FT_Byte* FT_Bytes; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Tag */ + /* */ + /* <Description> */ + /* A typedef for 32-bit tags (as used in the SFNT format). */ + /* */ + typedef FT_UInt32 FT_Tag; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_String */ + /* */ + /* <Description> */ + /* A simple typedef for the char type, usually used for strings. */ + /* */ + typedef char FT_String; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Short */ + /* */ + /* <Description> */ + /* A typedef for signed short. */ + /* */ + typedef signed short FT_Short; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UShort */ + /* */ + /* <Description> */ + /* A typedef for unsigned short. */ + /* */ + typedef unsigned short FT_UShort; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Int */ + /* */ + /* <Description> */ + /* A typedef for the int type. */ + /* */ + typedef signed int FT_Int; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_UInt */ + /* */ + /* <Description> */ + /* A typedef for the unsigned int type. */ + /* */ + typedef unsigned int FT_UInt; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Long */ + /* */ + /* <Description> */ + /* A typedef for signed long. */ + /* */ + typedef signed long FT_Long; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ULong */ + /* */ + /* <Description> */ + /* A typedef for unsigned long. */ + /* */ + typedef unsigned long FT_ULong; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F2Dot14 */ + /* */ + /* <Description> */ + /* A signed 2.14 fixed-point type used for unit vectors. */ + /* */ + typedef signed short FT_F2Dot14; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_F26Dot6 */ + /* */ + /* <Description> */ + /* A signed 26.6 fixed-point type used for vectorial pixel */ + /* coordinates. */ + /* */ + typedef signed long FT_F26Dot6; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Fixed */ + /* */ + /* <Description> */ + /* This type is used to store 16.16 fixed-point values, like scaling */ + /* values or matrix coefficients. */ + /* */ + typedef signed long FT_Fixed; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Error */ + /* */ + /* <Description> */ + /* The FreeType error code type. A value of~0 is always interpreted */ + /* as a successful operation. */ + /* */ + typedef int FT_Error; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Pointer */ + /* */ + /* <Description> */ + /* A simple typedef for a typeless pointer. */ + /* */ + typedef void* FT_Pointer; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_Offset */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ + /* _unsigned_ integer type used to express a file size or position, */ + /* or a memory block size. */ + /* */ + typedef size_t FT_Offset; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_PtrDist */ + /* */ + /* <Description> */ + /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ + /* largest _signed_ integer type used to express the distance */ + /* between two pointers. */ + /* */ + typedef ft_ptrdiff_t FT_PtrDist; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_UnitVector */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2D vector unit vector. Uses */ + /* FT_F2Dot14 types. */ + /* */ + /* <Fields> */ + /* x :: Horizontal coordinate. */ + /* */ + /* y :: Vertical coordinate. */ + /* */ + typedef struct FT_UnitVector_ + { + FT_F2Dot14 x; + FT_F2Dot14 y; + + } FT_UnitVector; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Matrix */ + /* */ + /* <Description> */ + /* A simple structure used to store a 2x2 matrix. Coefficients are */ + /* in 16.16 fixed-point format. The computation performed is: */ + /* */ + /* { */ + /* x' = x*xx + y*xy */ + /* y' = x*yx + y*yy */ + /* } */ + /* */ + /* <Fields> */ + /* xx :: Matrix coefficient. */ + /* */ + /* xy :: Matrix coefficient. */ + /* */ + /* yx :: Matrix coefficient. */ + /* */ + /* yy :: Matrix coefficient. */ + /* */ + typedef struct FT_Matrix_ + { + FT_Fixed xx, xy; + FT_Fixed yx, yy; + + } FT_Matrix; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Data */ + /* */ + /* <Description> */ + /* Read-only binary data represented as a pointer and a length. */ + /* */ + /* <Fields> */ + /* pointer :: The data. */ + /* */ + /* length :: The length of the data in bytes. */ + /* */ + typedef struct FT_Data_ + { + const FT_Byte* pointer; + FT_Int length; + + } FT_Data; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Generic_Finalizer */ + /* */ + /* <Description> */ + /* Describe a function used to destroy the `client' data of any */ + /* FreeType object. See the description of the @FT_Generic type for */ + /* details of usage. */ + /* */ + /* <Input> */ + /* The address of the FreeType object that is under finalization. */ + /* Its client data is accessed through its `generic' field. */ + /* */ + typedef void (*FT_Generic_Finalizer)(void* object); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Generic */ + /* */ + /* <Description> */ + /* Client applications often need to associate their own data to a */ + /* variety of FreeType core objects. For example, a text layout API */ + /* might want to associate a glyph cache to a given size object. */ + /* */ + /* Some FreeType object contains a `generic' field, of type */ + /* FT_Generic, which usage is left to client applications and font */ + /* servers. */ + /* */ + /* It can be used to store a pointer to client-specific data, as well */ + /* as the address of a `finalizer' function, which will be called by */ + /* FreeType when the object is destroyed (for example, the previous */ + /* client example would put the address of the glyph cache destructor */ + /* in the `finalizer' field). */ + /* */ + /* <Fields> */ + /* data :: A typeless pointer to any client-specified data. This */ + /* field is completely ignored by the FreeType library. */ + /* */ + /* finalizer :: A pointer to a `generic finalizer' function, which */ + /* will be called when the object is destroyed. If this */ + /* field is set to NULL, no code will be called. */ + /* */ + typedef struct FT_Generic_ + { + void* data; + FT_Generic_Finalizer finalizer; + + } FT_Generic; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_MAKE_TAG */ + /* */ + /* <Description> */ + /* This macro converts four-letter tags that are used to label */ + /* TrueType tables into an unsigned long, to be used within FreeType. */ + /* */ + /* <Note> */ + /* The produced values *must* be 32-bit integers. Don't redefine */ + /* this macro. */ + /* */ +#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + (FT_Tag) \ + ( ( (FT_ULong)_x1 << 24 ) | \ + ( (FT_ULong)_x2 << 16 ) | \ + ( (FT_ULong)_x3 << 8 ) | \ + (FT_ULong)_x4 ) + + + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* L I S T M A N A G E M E N T */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* list_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_ListNode */ + /* */ + /* <Description> */ + /* Many elements and objects in FreeType are listed through an */ + /* @FT_List record (see @FT_ListRec). As its name suggests, an */ + /* FT_ListNode is a handle to a single list element. */ + /* */ + typedef struct FT_ListNodeRec_* FT_ListNode; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* FT_List */ + /* */ + /* <Description> */ + /* A handle to a list record (see @FT_ListRec). */ + /* */ + typedef struct FT_ListRec_* FT_List; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListNodeRec */ + /* */ + /* <Description> */ + /* A structure used to hold a single list element. */ + /* */ + /* <Fields> */ + /* prev :: The previous element in the list. NULL if first. */ + /* */ + /* next :: The next element in the list. NULL if last. */ + /* */ + /* data :: A typeless pointer to the listed object. */ + /* */ + typedef struct FT_ListNodeRec_ + { + FT_ListNode prev; + FT_ListNode next; + void* data; + + } FT_ListNodeRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ListRec */ + /* */ + /* <Description> */ + /* A structure used to hold a simple doubly-linked list. These are */ + /* used in many parts of FreeType. */ + /* */ + /* <Fields> */ + /* head :: The head (first element) of doubly-linked list. */ + /* */ + /* tail :: The tail (last element) of doubly-linked list. */ + /* */ + typedef struct FT_ListRec_ + { + FT_ListNode head; + FT_ListNode tail; + + } FT_ListRec; + + /* */ + + +#define FT_IS_EMPTY( list ) ( (list).head == 0 ) +#define FT_BOOL( x ) ( (FT_Bool)( x ) ) + + /* concatenate C tokens */ +#define FT_ERR_XCAT( x, y ) x ## y +#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) + + /* see `ftmoderr.h' for descriptions of the following macros */ + +#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) +#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) + +#define FT_ERR_EQ( x, e ) \ + ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) +#define FT_ERR_NEQ( x, e ) \ + ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) + + +FT_END_HEADER + +#endif /* __FTTYPES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ftwinfnt.h b/lib/windows64/include/freetype/ftwinfnt.h new file mode 100644 index 0000000..caedaa1 --- /dev/null +++ b/lib/windows64/include/freetype/ftwinfnt.h @@ -0,0 +1,275 @@ +/***************************************************************************/ +/* */ +/* ftwinfnt.h */ +/* */ +/* FreeType API for accessing Windows fnt-specific data. */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTWINFNT_H__ +#define __FTWINFNT_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* winfnt_fonts */ + /* */ + /* <Title> */ + /* Window FNT Files */ + /* */ + /* <Abstract> */ + /* Windows FNT specific API. */ + /* */ + /* <Description> */ + /* This section contains the declaration of Windows FNT specific */ + /* functions. */ + /* */ + /*************************************************************************/ + + + /************************************************************************* + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset' byte in + * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX + * encodings (except for cp1361) can be found at + * ftp://ftp.unicode.org/Public in the MAPPINGS/VENDORS/MICSFT/WINDOWS + * subdirectory. cp1361 is roughly a superset of + * MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a + * `don't care' value. Valid font files don't contain this value. + * When querying for information about the character set of the font + * that is currently selected into a specified device context, this + * return value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Pöttgen <michael@poettgen.de>: + * + * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM + * is used for the charset of vector fonts, like `modern.fon', + * `roman.fon', and `script.fon' on Windows. + * + * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value + * specifies a character set that is operating-system dependent. + * + * The `IFIMETRICS' documentation from the `Windows Driver + * Development Kit' says: This font supports an OEM-specific + * character set. The OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the + * second default codepage that most international versions of + * Windows have. It is one of the OEM codepages from + * + * https://msdn.microsoft.com/en-us/goglobal/bb964655, + * + * and is used for the `DOS boxes', to support legacy applications. + * A German Windows version for example usually uses ANSI codepage + * 1252 and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ + +#define FT_WinFNT_ID_CP1252 0 +#define FT_WinFNT_ID_DEFAULT 1 +#define FT_WinFNT_ID_SYMBOL 2 +#define FT_WinFNT_ID_MAC 77 +#define FT_WinFNT_ID_CP932 128 +#define FT_WinFNT_ID_CP949 129 +#define FT_WinFNT_ID_CP1361 130 +#define FT_WinFNT_ID_CP936 134 +#define FT_WinFNT_ID_CP950 136 +#define FT_WinFNT_ID_CP1253 161 +#define FT_WinFNT_ID_CP1254 162 +#define FT_WinFNT_ID_CP1258 163 +#define FT_WinFNT_ID_CP1255 177 +#define FT_WinFNT_ID_CP1256 178 +#define FT_WinFNT_ID_CP1257 186 +#define FT_WinFNT_ID_CP1251 204 +#define FT_WinFNT_ID_CP874 222 +#define FT_WinFNT_ID_CP1250 238 +#define FT_WinFNT_ID_OEM 255 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_HeaderRec */ + /* */ + /* <Description> */ + /* Windows FNT Header info. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_ + { + FT_UShort version; + FT_ULong file_size; + FT_Byte copyright[60]; + FT_UShort file_type; + FT_UShort nominal_point_size; + FT_UShort vertical_resolution; + FT_UShort horizontal_resolution; + FT_UShort ascent; + FT_UShort internal_leading; + FT_UShort external_leading; + FT_Byte italic; + FT_Byte underline; + FT_Byte strike_out; + FT_UShort weight; + FT_Byte charset; + FT_UShort pixel_width; + FT_UShort pixel_height; + FT_Byte pitch_and_family; + FT_UShort avg_width; + FT_UShort max_width; + FT_Byte first_char; + FT_Byte last_char; + FT_Byte default_char; + FT_Byte break_char; + FT_UShort bytes_per_row; + FT_ULong device_offset; + FT_ULong face_name_offset; + FT_ULong bits_pointer; + FT_ULong bits_offset; + FT_Byte reserved; + FT_ULong flags; + FT_UShort A_space; + FT_UShort B_space; + FT_UShort C_space; + FT_UShort color_table_offset; + FT_ULong reserved1[4]; + + } FT_WinFNT_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_WinFNT_Header */ + /* */ + /* <Description> */ + /* A handle to an @FT_WinFNT_HeaderRec structure. */ + /* */ + typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; + + + /********************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: A handle to the input face. + * + * @output: + * aheader :: The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ + FT_EXPORT( FT_Error ) + FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTWINFNT_H__ */ + + +/* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/lib/windows64/include/freetype/internal/autohint.h b/lib/windows64/include/freetype/internal/autohint.h new file mode 100644 index 0000000..8d5a977 --- /dev/null +++ b/lib/windows64/include/freetype/internal/autohint.h @@ -0,0 +1,244 @@ +/***************************************************************************/ +/* */ +/* autohint.h */ +/* */ +/* High-level `autohint' module-specific interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* The auto-hinter is used to load and automatically hint glyphs if a */ + /* format-specific hinter isn't available. */ + /* */ + /*************************************************************************/ + + +#ifndef __AUTOHINT_H__ +#define __AUTOHINT_H__ + + + /*************************************************************************/ + /* */ + /* A small technical note regarding automatic hinting in order to */ + /* clarify this module interface. */ + /* */ + /* An automatic hinter might compute two kinds of data for a given face: */ + /* */ + /* - global hints: Usually some metrics that describe global properties */ + /* of the face. It is computed by scanning more or less */ + /* aggressively the glyphs in the face, and thus can be */ + /* very slow to compute (even if the size of global */ + /* hints is really small). */ + /* */ + /* - glyph hints: These describe some important features of the glyph */ + /* outline, as well as how to align them. They are */ + /* generally much faster to compute than global hints. */ + /* */ + /* The current FreeType auto-hinter does a pretty good job while */ + /* performing fast computations for both global and glyph hints. */ + /* However, we might be interested in introducing more complex and */ + /* powerful algorithms in the future, like the one described in the John */ + /* D. Hobby paper, which unfortunately requires a lot more horsepower. */ + /* */ + /* Because a sufficiently sophisticated font management system would */ + /* typically implement an LRU cache of opened face objects to reduce */ + /* memory usage, it is a good idea to be able to avoid recomputing */ + /* global hints every time the same face is re-opened. */ + /* */ + /* We thus provide the ability to cache global hints outside of the face */ + /* object, in order to speed up font re-opening time. Of course, this */ + /* feature is purely optional, so most client programs won't even notice */ + /* it. */ + /* */ + /* I initially thought that it would be a good idea to cache the glyph */ + /* hints too. However, my general idea now is that if you really need */ + /* to cache these too, you are simply in need of a new font format, */ + /* where all this information could be stored within the font file and */ + /* decoded on the fly. */ + /* */ + /*************************************************************************/ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + typedef struct FT_AutoHinterRec_ *FT_AutoHinter; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalGetFunc */ + /* */ + /* <Description> */ + /* Retrieve the global hints computed for a given face object. The */ + /* resulting data is dissociated from the face and will survive a */ + /* call to FT_Done_Face(). It must be discarded through the API */ + /* FT_AutoHinter_GlobalDoneFunc(). */ + /* */ + /* <Input> */ + /* hinter :: A handle to the source auto-hinter. */ + /* */ + /* face :: A handle to the source face object. */ + /* */ + /* <Output> */ + /* global_hints :: A typeless pointer to the global hints. */ + /* */ + /* global_len :: The size in bytes of the global hints. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter hinter, + FT_Face face, + void** global_hints, + long* global_len ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalDoneFunc */ + /* */ + /* <Description> */ + /* Discard the global hints retrieved through */ + /* FT_AutoHinter_GlobalGetFunc(). This is the only way these hints */ + /* are freed from memory. */ + /* */ + /* <Input> */ + /* hinter :: A handle to the auto-hinter module. */ + /* */ + /* global :: A pointer to retrieved global hints to discard. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter hinter, + void* global ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlobalResetFunc */ + /* */ + /* <Description> */ + /* This function is used to recompute the global metrics in a given */ + /* font. This is useful when global font data changes (e.g. Multiple */ + /* Masters fonts where blend coordinates change). */ + /* */ + /* <Input> */ + /* hinter :: A handle to the source auto-hinter. */ + /* */ + /* face :: A handle to the face. */ + /* */ + typedef void + (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter hinter, + FT_Face face ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_AutoHinter_GlyphLoadFunc */ + /* */ + /* <Description> */ + /* This function is used to load, scale, and automatically hint a */ + /* glyph from a given face. */ + /* */ + /* <Input> */ + /* face :: A handle to the face. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* load_flags :: The load flags. */ + /* */ + /* <Note> */ + /* This function is capable of loading composite glyphs by hinting */ + /* each sub-glyph independently (which improves quality). */ + /* */ + /* It will call the font driver with @FT_Load_Glyph, with */ + /* @FT_LOAD_NO_SCALE set. */ + /* */ + typedef FT_Error + (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter hinter, + FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_AutoHinter_InterfaceRec */ + /* */ + /* <Description> */ + /* The auto-hinter module's interface. */ + /* */ + typedef struct FT_AutoHinter_InterfaceRec_ + { + FT_AutoHinter_GlobalResetFunc reset_face; + FT_AutoHinter_GlobalGetFunc get_global_hints; + FT_AutoHinter_GlobalDoneFunc done_global_hints; + FT_AutoHinter_GlyphLoadFunc load_glyph; + + } FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_AUTOHINTER_INTERFACE( \ + class_, \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_AutoHinter_InterfaceRec class_ = \ + { \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_AUTOHINTER_INTERFACE( \ + class_, \ + reset_face_, \ + get_global_hints_, \ + done_global_hints_, \ + load_glyph_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_AutoHinter_InterfaceRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->reset_face = reset_face_; \ + clazz->get_global_hints = get_global_hints_; \ + clazz->done_global_hints = done_global_hints_; \ + clazz->load_glyph = load_glyph_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __AUTOHINT_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftcalc.h b/lib/windows64/include/freetype/internal/ftcalc.h new file mode 100644 index 0000000..75752c3 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftcalc.h @@ -0,0 +1,406 @@ +/***************************************************************************/ +/* */ +/* ftcalc.h */ +/* */ +/* Arithmetic computations (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTCALC_H__ +#define __FTCALC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* FT_MulDiv() and FT_MulFix() are declared in freetype.h. */ + /* */ + /*************************************************************************/ + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER + /* Provide assembler fragments for performance-critical functions. */ + /* These must be defined `static __inline__' with GCC. */ + +#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */ + +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + __asm + { + smull t2, t, b, a /* (lo=t2,hi=t) = a*b */ + mov a, t, asr #31 /* a = (hi >> 31) */ + add a, a, #0x8000 /* a += 0x8000 */ + adds t2, t2, a /* t2 += a */ + adc t, t, #0 /* t += carry */ + mov a, t2, lsr #16 /* a = t2 >> 16 */ + orr a, a, t, lsl #16 /* a |= t << 16 */ + } + return a; + } + +#endif /* __CC_ARM || __ARMCC__ */ + + +#ifdef __GNUC__ + +#if defined( __arm__ ) && \ + ( !defined( __thumb__ ) || defined( __thumb2__ ) ) && \ + !( defined( __CC_ARM ) || defined( __ARMCC__ ) ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + __asm__ __volatile__ ( + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ +#if defined( __clang__ ) && defined( __thumb2__ ) + "add.w %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ +#else + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ +#endif + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) + : "cc" ); + return a; + } + +#endif /* __arm__ && */ + /* ( __thumb2__ || !__thumb__ ) && */ + /* !( __CC_ARM || __ARMCC__ ) */ + + +#if defined( __i386__ ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + + __asm__ __volatile__ ( + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "=d"(b) + : "a"(a), "d"(b) + : "%ecx", "cc" ); + return result; + } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + + +#ifdef _MSC_VER /* Visual C++ */ + +#ifdef _M_IX86 + +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + __asm + { + mov eax, a + mov edx, b + imul edx + mov ecx, edx + sar ecx, 31 + add ecx, 8000h + add eax, ecx + adc edx, 0 + shr eax, 16 + shl edx, 16 + add eax, edx + mov result, eax + } + return result; + } + +#endif /* _M_IX86 */ + +#endif /* _MSC_VER */ + + +#if defined( __GNUC__ ) && defined( __x86_64__ ) + +#define FT_MULFIX_ASSEMBLER FT_MulFix_x86_64 + + static __inline__ FT_Int32 + FT_MulFix_x86_64( FT_Int32 a, + FT_Int32 b ) + { + /* Temporarily disable the warning that C90 doesn't support */ + /* `long long'. */ +#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wlong-long" +#endif + +#if 1 + /* Technically not an assembly fragment, but GCC does a really good */ + /* job at inlining it and generating good machine code for it. */ + long long ret, tmp; + + + ret = (long long)a * b; + tmp = ret >> 63; + ret += 0x8000 + tmp; + + return (FT_Int32)( ret >> 16 ); +#else + + /* For some reason, GCC 4.6 on Ubuntu 12.04 generates invalid machine */ + /* code from the lines below. The main issue is that `wide_a' is not */ + /* properly initialized by sign-extending `a'. Instead, the generated */ + /* machine code assumes that the register that contains `a' on input */ + /* can be used directly as a 64-bit value, which is wrong most of the */ + /* time. */ + long long wide_a = (long long)a; + long long wide_b = (long long)b; + long long result; + + + __asm__ __volatile__ ( + "imul %2, %1\n" + "mov %1, %0\n" + "sar $63, %0\n" + "lea 0x8000(%1, %0), %0\n" + "sar $16, %0\n" + : "=&r"(result), "=&r"(wide_a) + : "r"(wide_b) + : "cc" ); + + return (FT_Int32)result; +#endif + +#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 ) +#pragma GCC diagnostic pop +#endif + } + +#endif /* __GNUC__ && __x86_64__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MulFix( a, b ) FT_MULFIX_ASSEMBLER( (FT_Int32)(a), (FT_Int32)(b) ) +#endif +#endif + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_MulDiv_No_Round */ + /* */ + /* <Description> */ + /* A very simple function used to perform the computation `(a*b)/c' */ + /* (without rounding) with maximum accuracy (it uses a 64-bit */ + /* intermediate integer whenever necessary). */ + /* */ + /* This function isn't necessarily as fast as some processor specific */ + /* operations, but is at least completely portable. */ + /* */ + /* <Input> */ + /* a :: The first multiplier. */ + /* b :: The second multiplier. */ + /* c :: The divisor. */ + /* */ + /* <Return> */ + /* The result of `(a*b)/c'. This function never traps when trying to */ + /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ + /* on the signs of `a' and `b'. */ + /* */ + FT_BASE( FT_Long ) + FT_MulDiv_No_Round( FT_Long a, + FT_Long b, + FT_Long c ); + + + /* + * A variant of FT_Matrix_Multiply which scales its result afterwards. + * The idea is that both `a' and `b' are scaled by factors of 10 so that + * the values are as precise as possible to get a correct result during + * the 64bit multiplication. Let `sa' and `sb' be the scaling factors of + * `a' and `b', respectively, then the scaling factor of the result is + * `sa*sb'. + */ + FT_BASE( void ) + FT_Matrix_Multiply_Scaled( const FT_Matrix* a, + FT_Matrix *b, + FT_Long scaling ); + + + /* + * A variant of FT_Vector_Transform. See comments for + * FT_Matrix_Multiply_Scaled. + */ + FT_BASE( void ) + FT_Vector_Transform_Scaled( FT_Vector* vector, + const FT_Matrix* matrix, + FT_Long scaling ); + + + /* + * Return -1, 0, or +1, depending on the orientation of a given corner. + * We use the Cartesian coordinate system, with positive vertical values + * going upwards. The function returns +1 if the corner turns to the + * left, -1 to the right, and 0 for undecidable cases. + */ + FT_BASE( FT_Int ) + ft_corner_orientation( FT_Pos in_x, + FT_Pos in_y, + FT_Pos out_x, + FT_Pos out_y ); + + + /* + * Return TRUE if a corner is flat or nearly flat. This is equivalent to + * saying that the corner point is close to its neighbors, or inside an + * ellipse defined by the neighbor focal points to be more precise. + */ + FT_BASE( FT_Int ) + ft_corner_is_flat( FT_Pos in_x, + FT_Pos in_y, + FT_Pos out_x, + FT_Pos out_y ); + + + /* + * Return the most significant bit index. + */ + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER +#if defined( __GNUC__ ) && \ + ( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) ) + +#if FT_SIZEOF_INT == 4 + +#define FT_MSB( x ) ( 31 - __builtin_clz( x ) ) + +#elif FT_SIZEOF_LONG == 4 + +#define FT_MSB( x ) ( 31 - __builtin_clzl( x ) ) + +#endif + +#endif /* __GNUC__ */ +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + +#ifndef FT_MSB + + FT_BASE( FT_Int ) + FT_MSB( FT_UInt32 z ); + +#endif + + + /* + * Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses + * two fixed-point arguments instead. + */ + FT_BASE( FT_Fixed ) + FT_Hypot( FT_Fixed x, + FT_Fixed y ); + + +#if 0 + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_SqrtFixed */ + /* */ + /* <Description> */ + /* Computes the square root of a 16.16 fixed-point value. */ + /* */ + /* <Input> */ + /* x :: The value to compute the root for. */ + /* */ + /* <Return> */ + /* The result of `sqrt(x)'. */ + /* */ + /* <Note> */ + /* This function is not very fast. */ + /* */ + FT_BASE( FT_Int32 ) + FT_SqrtFixed( FT_Int32 x ); + +#endif /* 0 */ + + +#define INT_TO_F26DOT6( x ) ( (FT_Long)(x) << 6 ) +#define INT_TO_F2DOT14( x ) ( (FT_Long)(x) << 14 ) +#define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 ) +#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 ) +#define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) ) +#define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 ) + +#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \ + : ( -( ( 32 - (x) ) & -64 ) ) ) + + +FT_END_HEADER + +#endif /* __FTCALC_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftdebug.h b/lib/windows64/include/freetype/internal/ftdebug.h new file mode 100644 index 0000000..216c730 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftdebug.h @@ -0,0 +1,255 @@ +/***************************************************************************/ +/* */ +/* ftdebug.h */ +/* */ +/* Debugging and logging component (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/* */ +/* IMPORTANT: A description of FreeType's debugging support can be */ +/* found in `docs/DEBUG.TXT'. Read it if you need to use or */ +/* understand this code. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTDEBUG_H__ +#define __FTDEBUG_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */ + /* is already defined; this simplifies the following #ifdefs */ + /* */ +#ifdef FT_DEBUG_LEVEL_TRACE +#undef FT_DEBUG_LEVEL_ERROR +#define FT_DEBUG_LEVEL_ERROR +#endif + + + /*************************************************************************/ + /* */ + /* Define the trace enums as well as the trace levels array when they */ + /* are needed. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_TRACE + +#define FT_TRACE_DEF( x ) trace_ ## x , + + /* defining the enumeration */ + typedef enum FT_Trace_ + { +#include FT_INTERNAL_TRACE_H + trace_count + + } FT_Trace; + + + /* defining the array of trace levels, provided by `src/base/ftdebug.c' */ + extern int ft_trace_levels[trace_count]; + +#undef FT_TRACE_DEF + +#endif /* FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* Define the FT_TRACE macro */ + /* */ + /* IMPORTANT! */ + /* */ + /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */ + /* value before using any TRACE macro. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_TRACE + +#define FT_TRACE( level, varformat ) \ + do \ + { \ + if ( ft_trace_levels[FT_COMPONENT] >= level ) \ + FT_Message varformat; \ + } while ( 0 ) + +#else /* !FT_DEBUG_LEVEL_TRACE */ + +#define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Trace_Get_Count */ + /* */ + /* <Description> */ + /* Return the number of available trace components. */ + /* */ + /* <Return> */ + /* The number of trace components. 0 if FreeType 2 is not built with */ + /* FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* <Note> */ + /* This function may be useful if you want to access elements of */ + /* the internal `ft_trace_levels' array by an index. */ + /* */ + FT_BASE( FT_Int ) + FT_Trace_Get_Count( void ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Trace_Get_Name */ + /* */ + /* <Description> */ + /* Return the name of a trace component. */ + /* */ + /* <Input> */ + /* The index of the trace component. */ + /* */ + /* <Return> */ + /* The name of the trace component. This is a statically allocated */ + /* C string, so do not free it after use. NULL if FreeType 2 is not */ + /* built with FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* <Note> */ + /* Use @FT_Trace_Get_Count to get the number of available trace */ + /* components. */ + /* */ + /* This function may be useful if you want to control FreeType 2's */ + /* debug level in your application. */ + /* */ + FT_BASE( const char* ) + FT_Trace_Get_Name( FT_Int idx ); + + + /*************************************************************************/ + /* */ + /* You need two opening and closing parentheses! */ + /* */ + /* Example: FT_TRACE0(( "Value is %i", foo )) */ + /* */ + /* Output of the FT_TRACEX macros is sent to stderr. */ + /* */ + /*************************************************************************/ + +#define FT_TRACE0( varformat ) FT_TRACE( 0, varformat ) +#define FT_TRACE1( varformat ) FT_TRACE( 1, varformat ) +#define FT_TRACE2( varformat ) FT_TRACE( 2, varformat ) +#define FT_TRACE3( varformat ) FT_TRACE( 3, varformat ) +#define FT_TRACE4( varformat ) FT_TRACE( 4, varformat ) +#define FT_TRACE5( varformat ) FT_TRACE( 5, varformat ) +#define FT_TRACE6( varformat ) FT_TRACE( 6, varformat ) +#define FT_TRACE7( varformat ) FT_TRACE( 7, varformat ) + + + /*************************************************************************/ + /* */ + /* Define the FT_ERROR macro. */ + /* */ + /* Output of this macro is sent to stderr. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define FT_ERROR( varformat ) FT_Message varformat + +#else /* !FT_DEBUG_LEVEL_ERROR */ + +#define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_ERROR */ + + + /*************************************************************************/ + /* */ + /* Define the FT_ASSERT and FT_THROW macros. The call to `FT_Throw' */ + /* makes it possible to easily set a breakpoint at this function. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#define FT_ASSERT( condition ) \ + do \ + { \ + if ( !( condition ) ) \ + FT_Panic( "assertion failed on line %d of file %s\n", \ + __LINE__, __FILE__ ); \ + } while ( 0 ) + +#define FT_THROW( e ) \ + ( FT_Throw( FT_ERR_CAT( FT_ERR_PREFIX, e ), \ + __LINE__, \ + __FILE__ ) | \ + FT_ERR_CAT( FT_ERR_PREFIX, e ) ) + +#else /* !FT_DEBUG_LEVEL_ERROR */ + +#define FT_ASSERT( condition ) do { } while ( 0 ) + +#define FT_THROW( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) + +#endif /* !FT_DEBUG_LEVEL_ERROR */ + + + /*************************************************************************/ + /* */ + /* Define `FT_Message' and `FT_Panic' when needed. */ + /* */ + /*************************************************************************/ + +#ifdef FT_DEBUG_LEVEL_ERROR + +#include "stdio.h" /* for vfprintf() */ + + /* print a message */ + FT_BASE( void ) + FT_Message( const char* fmt, + ... ); + + /* print a message and exit */ + FT_BASE( void ) + FT_Panic( const char* fmt, + ... ); + + /* report file name and line number of an error */ + FT_BASE( int ) + FT_Throw( FT_Error error, + int line, + const char* file ); + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + + FT_BASE( void ) + ft_debug_init( void ); + +FT_END_HEADER + +#endif /* __FTDEBUG_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftdriver.h b/lib/windows64/include/freetype/internal/ftdriver.h new file mode 100644 index 0000000..16856d3 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftdriver.h @@ -0,0 +1,409 @@ +/***************************************************************************/ +/* */ +/* ftdriver.h */ +/* */ +/* FreeType font driver interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTDRIVER_H__ +#define __FTDRIVER_H__ + + +#include <ft2build.h> +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + typedef FT_Error + (*FT_Face_InitFunc)( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ); + + typedef void + (*FT_Face_DoneFunc)( FT_Face face ); + + + typedef FT_Error + (*FT_Size_InitFunc)( FT_Size size ); + + typedef void + (*FT_Size_DoneFunc)( FT_Size size ); + + + typedef FT_Error + (*FT_Slot_InitFunc)( FT_GlyphSlot slot ); + + typedef void + (*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); + + + typedef FT_Error + (*FT_Size_RequestFunc)( FT_Size size, + FT_Size_Request req ); + + typedef FT_Error + (*FT_Size_SelectFunc)( FT_Size size, + FT_ULong size_index ); + + typedef FT_Error + (*FT_Slot_LoadFunc)( FT_GlyphSlot slot, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + + typedef FT_UInt + (*FT_CharMap_CharIndexFunc)( FT_CharMap charmap, + FT_Long charcode ); + + typedef FT_Long + (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, + FT_Long charcode ); + + + typedef FT_Error + (*FT_Face_GetKerningFunc)( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ); + + + typedef FT_Error + (*FT_Face_AttachFunc)( FT_Face face, + FT_Stream stream ); + + + typedef FT_Error + (*FT_Face_GetAdvancesFunc)( FT_Face face, + FT_UInt first, + FT_UInt count, + FT_Int32 flags, + FT_Fixed* advances ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Driver_ClassRec */ + /* */ + /* <Description> */ + /* The font driver class. This structure mostly contains pointers to */ + /* driver methods. */ + /* */ + /* <Fields> */ + /* root :: The parent module. */ + /* */ + /* face_object_size :: The size of a face object in bytes. */ + /* */ + /* size_object_size :: The size of a size object in bytes. */ + /* */ + /* slot_object_size :: The size of a glyph object in bytes. */ + /* */ + /* init_face :: The format-specific face constructor. */ + /* */ + /* done_face :: The format-specific face destructor. */ + /* */ + /* init_size :: The format-specific size constructor. */ + /* */ + /* done_size :: The format-specific size destructor. */ + /* */ + /* init_slot :: The format-specific slot constructor. */ + /* */ + /* done_slot :: The format-specific slot destructor. */ + /* */ + /* */ + /* load_glyph :: A function handle to load a glyph to a slot. */ + /* This field is mandatory! */ + /* */ + /* get_kerning :: A function handle to return the unscaled */ + /* kerning for a given pair of glyphs. Can be */ + /* set to 0 if the format doesn't support */ + /* kerning. */ + /* */ + /* attach_file :: This function handle is used to read */ + /* additional data for a face from another */ + /* file/stream. For example, this can be used to */ + /* add data from AFM or PFM files on a Type 1 */ + /* face, or a CIDMap on a CID-keyed face. */ + /* */ + /* get_advances :: A function handle used to return advance */ + /* widths of `count' glyphs (in font units), */ + /* starting at `first'. The `vertical' flag must */ + /* be set to get vertical advance heights. The */ + /* `advances' buffer is caller-allocated. */ + /* The idea of this function is to be able to */ + /* perform device-independent text layout without */ + /* loading a single glyph image. */ + /* */ + /* request_size :: A handle to a function used to request the new */ + /* character size. Can be set to 0 if the */ + /* scaling done in the base layer suffices. */ + /* */ + /* select_size :: A handle to a function used to select a new */ + /* fixed size. It is used only if */ + /* @FT_FACE_FLAG_FIXED_SIZES is set. Can be set */ + /* to 0 if the scaling done in the base layer */ + /* suffices. */ + /* <Note> */ + /* Most function pointers, with the exception of `load_glyph', can be */ + /* set to 0 to indicate a default behaviour. */ + /* */ + typedef struct FT_Driver_ClassRec_ + { + FT_Module_Class root; + + FT_Long face_object_size; + FT_Long size_object_size; + FT_Long slot_object_size; + + FT_Face_InitFunc init_face; + FT_Face_DoneFunc done_face; + + FT_Size_InitFunc init_size; + FT_Size_DoneFunc done_size; + + FT_Slot_InitFunc init_slot; + FT_Slot_DoneFunc done_slot; + + FT_Slot_LoadFunc load_glyph; + + FT_Face_GetKerningFunc get_kerning; + FT_Face_AttachFunc attach_file; + FT_Face_GetAdvancesFunc get_advances; + + /* since version 2.2 */ + FT_Size_RequestFunc request_size; + FT_Size_SelectFunc select_size; + + } FT_Driver_ClassRec, *FT_Driver_Class; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_DRIVER */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of an FT_Driver_ClassRec */ + /* struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_DRIVER */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Driver_ClassRec struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function has to be */ + /* called with a pointer where the allocated structure is returned. */ + /* And when it is no longer needed a `destroy' function needs to be */ + /* called to release that allocation. */ + /* */ + /* `fcinit.c' (ft_create_default_module_classes) already contains a */ + /* mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by driver definition calling `FT_DEFINE_DRIVER' in following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro is */ + /* used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_DRIVER( class_ ) \ + FT_CALLBACK_TABLE \ + const FT_Driver_ClassRec class_; + +#define FT_DEFINE_DRIVER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + init_face_, \ + done_face_, \ + init_size_, \ + done_size_, \ + init_slot_, \ + done_slot_, \ + load_glyph_, \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + request_size_, \ + select_size_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Driver_ClassRec class_ = \ + { \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + \ + init_face_, \ + done_face_, \ + \ + init_size_, \ + done_size_, \ + \ + init_slot_, \ + done_slot_, \ + \ + load_glyph_, \ + \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + \ + request_size_, \ + select_size_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_DRIVER( class_ ) FT_DECLARE_MODULE( class_ ) + +#define FT_DEFINE_DRIVER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + face_object_size_, \ + size_object_size_, \ + slot_object_size_, \ + init_face_, \ + done_face_, \ + init_size_, \ + done_size_, \ + init_slot_, \ + done_slot_, \ + load_glyph_, \ + get_kerning_, \ + attach_file_, \ + get_advances_, \ + request_size_, \ + select_size_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + FT_Driver_Class dclazz = (FT_Driver_Class)clazz; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( dclazz ) \ + FT_FREE( dclazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Driver_Class clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + clazz->face_object_size = face_object_size_; \ + clazz->size_object_size = size_object_size_; \ + clazz->slot_object_size = slot_object_size_; \ + \ + clazz->init_face = init_face_; \ + clazz->done_face = done_face_; \ + \ + clazz->init_size = init_size_; \ + clazz->done_size = done_size_; \ + \ + clazz->init_slot = init_slot_; \ + clazz->done_slot = done_slot_; \ + \ + clazz->load_glyph = load_glyph_; \ + \ + clazz->get_kerning = get_kerning_; \ + clazz->attach_file = attach_file_; \ + clazz->get_advances = get_advances_; \ + \ + clazz->request_size = request_size_; \ + clazz->select_size = select_size_; \ + \ + *output_class = (FT_Module_Class*)clazz; \ + \ + return FT_Err_Ok; \ + } + + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __FTDRIVER_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftgloadr.h b/lib/windows64/include/freetype/internal/ftgloadr.h new file mode 100644 index 0000000..970dd70 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftgloadr.h @@ -0,0 +1,172 @@ +/***************************************************************************/ +/* */ +/* ftgloadr.h */ +/* */ +/* The FreeType glyph loader (specification). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTGLOADR_H__ +#define __FTGLOADR_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_GlyphLoader */ + /* */ + /* <Description> */ + /* The glyph loader is an internal object used to load several glyphs */ + /* together (for example, in the case of composites). */ + /* */ + /* <Note> */ + /* The glyph loader implementation is not part of the high-level API, */ + /* hence the forward structure declaration. */ + /* */ + typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ; + + +#if 0 /* moved to freetype.h in version 2.2 */ +#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 +#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 +#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 +#define FT_SUBGLYPH_FLAG_SCALE 8 +#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 +#define FT_SUBGLYPH_FLAG_2X2 0x80 +#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 +#endif + + + typedef struct FT_SubGlyphRec_ + { + FT_Int index; + FT_UShort flags; + FT_Int arg1; + FT_Int arg2; + FT_Matrix transform; + + } FT_SubGlyphRec; + + + typedef struct FT_GlyphLoadRec_ + { + FT_Outline outline; /* outline */ + FT_Vector* extra_points; /* extra points table */ + FT_Vector* extra_points2; /* second extra points table */ + FT_UInt num_subglyphs; /* number of subglyphs */ + FT_SubGlyph subglyphs; /* subglyphs */ + + } FT_GlyphLoadRec, *FT_GlyphLoad; + + + typedef struct FT_GlyphLoaderRec_ + { + FT_Memory memory; + FT_UInt max_points; + FT_UInt max_contours; + FT_UInt max_subglyphs; + FT_Bool use_extra; + + FT_GlyphLoadRec base; + FT_GlyphLoadRec current; + + void* other; /* for possible future extension? */ + + } FT_GlyphLoaderRec; + + + /* create new empty glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_New( FT_Memory memory, + FT_GlyphLoader *aloader ); + + /* add an extra points table to a glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CreateExtra( FT_GlyphLoader loader ); + + /* destroy a glyph loader */ + FT_BASE( void ) + FT_GlyphLoader_Done( FT_GlyphLoader loader ); + + /* reset a glyph loader (frees everything int it) */ + FT_BASE( void ) + FT_GlyphLoader_Reset( FT_GlyphLoader loader ); + + /* rewind a glyph loader */ + FT_BASE( void ) + FT_GlyphLoader_Rewind( FT_GlyphLoader loader ); + + /* check that there is enough space to add `n_points' and `n_contours' */ + /* to the glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CheckPoints( FT_GlyphLoader loader, + FT_UInt n_points, + FT_UInt n_contours ); + + +#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \ + ( (_count) == 0 || \ + ( (FT_UInt)(_loader)->base.outline.n_points + \ + (FT_UInt)(_loader)->current.outline.n_points + \ + (FT_UInt)(_count) ) <= (_loader)->max_points ) + +#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \ + ( (_count) == 0 || \ + ( (FT_UInt)(_loader)->base.outline.n_contours + \ + (FT_UInt)(_loader)->current.outline.n_contours + \ + (FT_UInt)(_count) ) <= (_loader)->max_contours ) + +#define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points, _contours ) \ + ( ( FT_GLYPHLOADER_CHECK_P( _loader, _points ) && \ + FT_GLYPHLOADER_CHECK_C( _loader, _contours ) ) \ + ? 0 \ + : FT_GlyphLoader_CheckPoints( (_loader), \ + (FT_UInt)(_points), \ + (FT_UInt)(_contours) ) ) + + + /* check that there is enough space to add `n_subs' sub-glyphs to */ + /* a glyph loader */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader loader, + FT_UInt n_subs ); + + /* prepare a glyph loader, i.e. empty the current glyph */ + FT_BASE( void ) + FT_GlyphLoader_Prepare( FT_GlyphLoader loader ); + + /* add the current glyph to the base glyph */ + FT_BASE( void ) + FT_GlyphLoader_Add( FT_GlyphLoader loader ); + + /* copy points from one glyph loader to another */ + FT_BASE( FT_Error ) + FT_GlyphLoader_CopyPoints( FT_GlyphLoader target, + FT_GlyphLoader source ); + + /* */ + + +FT_END_HEADER + +#endif /* __FTGLOADR_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftmemory.h b/lib/windows64/include/freetype/internal/ftmemory.h new file mode 100644 index 0000000..c0c553b --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftmemory.h @@ -0,0 +1,386 @@ +/***************************************************************************/ +/* */ +/* ftmemory.h */ +/* */ +/* The FreeType memory management macros (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTMEMORY_H__ +#define __FTMEMORY_H__ + + +#include <ft2build.h> +#include FT_CONFIG_CONFIG_H +#include FT_TYPES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_SET_ERROR */ + /* */ + /* <Description> */ + /* This macro is used to set an implicit `error' variable to a given */ + /* expression's value (usually a function call), and convert it to a */ + /* boolean which is set whenever the value is != 0. */ + /* */ +#undef FT_SET_ERROR +#define FT_SET_ERROR( expression ) \ + ( ( error = (expression) ) != 0 ) + + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** M E M O R Y ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* + * C++ refuses to handle statements like p = (void*)anything, with `p' a + * typed pointer. Since we don't have a `typeof' operator in standard + * C++, we have to use a template to emulate it. + */ + +#ifdef __cplusplus + + extern "C++" + template <typename T> inline T* + cplusplus_typeof( T*, + void *v ) + { + return static_cast <T*> ( v ); + } + +#define FT_ASSIGNP( p, val ) (p) = cplusplus_typeof( (p), (val) ) + +#else + +#define FT_ASSIGNP( p, val ) (p) = (val) + +#endif + + + +#ifdef FT_DEBUG_MEMORY + + FT_BASE( const char* ) _ft_debug_file; + FT_BASE( long ) _ft_debug_lineno; + +#define FT_DEBUG_INNER( exp ) ( _ft_debug_file = __FILE__, \ + _ft_debug_lineno = __LINE__, \ + (exp) ) + +#define FT_ASSIGNP_INNER( p, exp ) ( _ft_debug_file = __FILE__, \ + _ft_debug_lineno = __LINE__, \ + FT_ASSIGNP( p, exp ) ) + +#else /* !FT_DEBUG_MEMORY */ + +#define FT_DEBUG_INNER( exp ) (exp) +#define FT_ASSIGNP_INNER( p, exp ) FT_ASSIGNP( p, exp ) + +#endif /* !FT_DEBUG_MEMORY */ + + + /* + * The allocation functions return a pointer, and the error code + * is written to through the `p_error' parameter. See below for + * for documentation. + */ + + FT_BASE( FT_Pointer ) + ft_mem_alloc( FT_Memory memory, + FT_Long size, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_qalloc( FT_Memory memory, + FT_Long size, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_realloc( FT_Memory memory, + FT_Long item_size, + FT_Long cur_count, + FT_Long new_count, + void* block, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_qrealloc( FT_Memory memory, + FT_Long item_size, + FT_Long cur_count, + FT_Long new_count, + void* block, + FT_Error *p_error ); + + FT_BASE( void ) + ft_mem_free( FT_Memory memory, + const void* P ); + + +#define FT_MEM_ALLOC( ptr, size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_alloc( memory, \ + (FT_Long)(size), \ + &error ) ) + +#define FT_MEM_FREE( ptr ) \ + FT_BEGIN_STMNT \ + ft_mem_free( memory, (ptr) ); \ + (ptr) = NULL; \ + FT_END_STMNT + +#define FT_MEM_NEW( ptr ) \ + FT_MEM_ALLOC( ptr, sizeof ( *(ptr) ) ) + +#define FT_MEM_REALLOC( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + 1, \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QALLOC( ptr, size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qalloc( memory, \ + (FT_Long)(size), \ + &error ) ) + +#define FT_MEM_QNEW( ptr ) \ + FT_MEM_QALLOC( ptr, sizeof ( *(ptr) ) ) + +#define FT_MEM_QREALLOC( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + 1, \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_ALLOC_MULT( ptr, count, item_size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + (FT_Long)(item_size), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + (FT_Long)(itmsz), \ + (FT_Long)(oldcnt), \ + (FT_Long)(newcnt), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QALLOC_MULT( ptr, count, item_size ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + (FT_Long)(item_size), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + (FT_Long)(itmsz), \ + (FT_Long)(oldcnt), \ + (FT_Long)(newcnt), \ + (ptr), \ + &error ) ) + + +#define FT_MEM_SET_ERROR( cond ) ( (cond), error != 0 ) + + +#define FT_MEM_SET( dest, byte, count ) \ + ft_memset( dest, byte, (FT_Offset)(count) ) + +#define FT_MEM_COPY( dest, source, count ) \ + ft_memcpy( dest, source, (FT_Offset)(count) ) + +#define FT_MEM_MOVE( dest, source, count ) \ + ft_memmove( dest, source, (FT_Offset)(count) ) + + +#define FT_MEM_ZERO( dest, count ) FT_MEM_SET( dest, 0, count ) + +#define FT_ZERO( p ) FT_MEM_ZERO( p, sizeof ( *(p) ) ) + + +#define FT_ARRAY_ZERO( dest, count ) \ + FT_MEM_ZERO( dest, \ + (FT_Offset)(count) * sizeof ( *(dest) ) ) + +#define FT_ARRAY_COPY( dest, source, count ) \ + FT_MEM_COPY( dest, \ + source, \ + (FT_Offset)(count) * sizeof ( *(dest) ) ) + +#define FT_ARRAY_MOVE( dest, source, count ) \ + FT_MEM_MOVE( dest, \ + source, \ + (FT_Offset)(count) * sizeof ( *(dest) ) ) + + + /* + * Return the maximum number of addressable elements in an array. + * We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid + * any problems. + */ +#define FT_ARRAY_MAX( ptr ) ( FT_INT_MAX / sizeof ( *(ptr) ) ) + +#define FT_ARRAY_CHECK( ptr, count ) ( (count) <= FT_ARRAY_MAX( ptr ) ) + + + /*************************************************************************/ + /* */ + /* The following functions macros expect that their pointer argument is */ + /* _typed_ in order to automatically compute array element sizes. */ + /* */ + +#define FT_MEM_NEW_ARRAY( ptr, count ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + sizeof ( *(ptr) ), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_RENEW_ARRAY( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory, \ + sizeof ( *(ptr) ), \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_MEM_QNEW_ARRAY( ptr, count ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + sizeof ( *(ptr) ), \ + 0, \ + (FT_Long)(count), \ + NULL, \ + &error ) ) + +#define FT_MEM_QRENEW_ARRAY( ptr, cursz, newsz ) \ + FT_ASSIGNP_INNER( ptr, ft_mem_qrealloc( memory, \ + sizeof ( *(ptr) ), \ + (FT_Long)(cursz), \ + (FT_Long)(newsz), \ + (ptr), \ + &error ) ) + +#define FT_ALLOC( ptr, size ) \ + FT_MEM_SET_ERROR( FT_MEM_ALLOC( ptr, size ) ) + +#define FT_REALLOC( ptr, cursz, newsz ) \ + FT_MEM_SET_ERROR( FT_MEM_REALLOC( ptr, cursz, newsz ) ) + +#define FT_ALLOC_MULT( ptr, count, item_size ) \ + FT_MEM_SET_ERROR( FT_MEM_ALLOC_MULT( ptr, count, item_size ) ) + +#define FT_REALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_MEM_SET_ERROR( FT_MEM_REALLOC_MULT( ptr, oldcnt, \ + newcnt, itmsz ) ) + +#define FT_QALLOC( ptr, size ) \ + FT_MEM_SET_ERROR( FT_MEM_QALLOC( ptr, size ) ) + +#define FT_QREALLOC( ptr, cursz, newsz ) \ + FT_MEM_SET_ERROR( FT_MEM_QREALLOC( ptr, cursz, newsz ) ) + +#define FT_QALLOC_MULT( ptr, count, item_size ) \ + FT_MEM_SET_ERROR( FT_MEM_QALLOC_MULT( ptr, count, item_size ) ) + +#define FT_QREALLOC_MULT( ptr, oldcnt, newcnt, itmsz ) \ + FT_MEM_SET_ERROR( FT_MEM_QREALLOC_MULT( ptr, oldcnt, \ + newcnt, itmsz ) ) + +#define FT_FREE( ptr ) FT_MEM_FREE( ptr ) + +#define FT_NEW( ptr ) FT_MEM_SET_ERROR( FT_MEM_NEW( ptr ) ) + +#define FT_NEW_ARRAY( ptr, count ) \ + FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) ) + +#define FT_RENEW_ARRAY( ptr, curcnt, newcnt ) \ + FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) ) + +#define FT_QNEW( ptr ) \ + FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) ) + +#define FT_QNEW_ARRAY( ptr, count ) \ + FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) ) + +#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \ + FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) ) + + + FT_BASE( FT_Pointer ) + ft_mem_strdup( FT_Memory memory, + const char* str, + FT_Error *p_error ); + + FT_BASE( FT_Pointer ) + ft_mem_dup( FT_Memory memory, + const void* address, + FT_ULong size, + FT_Error *p_error ); + + +#define FT_MEM_STRDUP( dst, str ) \ + (dst) = (char*)ft_mem_strdup( memory, (const char*)(str), &error ) + +#define FT_STRDUP( dst, str ) \ + FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) ) + +#define FT_MEM_DUP( dst, address, size ) \ + (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), &error ) + +#define FT_DUP( dst, address, size ) \ + FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) ) + + + /* Return >= 1 if a truncation occurs. */ + /* Return 0 if the source string fits the buffer. */ + /* This is *not* the same as strlcpy(). */ + FT_BASE( FT_Int ) + ft_mem_strcpyn( char* dst, + const char* src, + FT_ULong size ); + +#define FT_STRCPYN( dst, src, size ) \ + ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) ) + + /* */ + + +FT_END_HEADER + +#endif /* __FTMEMORY_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftobjs.h b/lib/windows64/include/freetype/internal/ftobjs.h new file mode 100644 index 0000000..37317a4 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftobjs.h @@ -0,0 +1,1571 @@ +/***************************************************************************/ +/* */ +/* ftobjs.h */ +/* */ +/* The FreeType private base classes (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file contains the definition of all internal FreeType classes. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTOBJS_H__ +#define __FTOBJS_H__ + +#include <ft2build.h> +#include FT_RENDER_H +#include FT_SIZES_H +#include FT_LCD_FILTER_H +#include FT_INTERNAL_MEMORY_H +#include FT_INTERNAL_GLYPH_LOADER_H +#include FT_INTERNAL_DRIVER_H +#include FT_INTERNAL_AUTOHINT_H +#include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_PIC_H + +#ifdef FT_CONFIG_OPTION_INCREMENTAL +#include FT_INCREMENTAL_H +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* Some generic definitions. */ + /* */ +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef NULL +#define NULL (void*)0 +#endif + + + /*************************************************************************/ + /* */ + /* The min and max functions missing in C. As usual, be careful not to */ + /* write things like FT_MIN( a++, b++ ) to avoid side effects. */ + /* */ +#define FT_MIN( a, b ) ( (a) < (b) ? (a) : (b) ) +#define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) ) + +#define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) ) + + /* + * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min' + * algorithm. We use alpha = 1, beta = 3/8, giving us results with a + * largest error less than 7% compared to the exact value. + */ +#define FT_HYPOT( x, y ) \ + ( x = FT_ABS( x ), \ + y = FT_ABS( y ), \ + x > y ? x + ( 3 * y >> 3 ) \ + : y + ( 3 * x >> 3 ) ) + + /* we use the TYPEOF macro to suppress signedness compilation warnings */ +#define FT_PAD_FLOOR( x, n ) ( (x) & ~TYPEOF( x )( (n)-1 ) ) +#define FT_PAD_ROUND( x, n ) FT_PAD_FLOOR( (x) + ((n)/2), n ) +#define FT_PAD_CEIL( x, n ) FT_PAD_FLOOR( (x) + ((n)-1), n ) + +#define FT_PIX_FLOOR( x ) ( (x) & ~TYPEOF( x )63 ) +#define FT_PIX_ROUND( x ) FT_PIX_FLOOR( (x) + 32 ) +#define FT_PIX_CEIL( x ) FT_PIX_FLOOR( (x) + 63 ) + + + /* + * character classification functions -- since these are used to parse + * font files, we must not use those in <ctypes.h> which are + * locale-dependent + */ +#define ft_isdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U ) + +#define ft_isxdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U || \ + ( (unsigned)(x) - 'a' ) < 6U || \ + ( (unsigned)(x) - 'A' ) < 6U ) + + /* the next two macros assume ASCII representation */ +#define ft_isupper( x ) ( ( (unsigned)(x) - 'A' ) < 26U ) +#define ft_islower( x ) ( ( (unsigned)(x) - 'a' ) < 26U ) + +#define ft_isalpha( x ) ( ft_isupper( x ) || ft_islower( x ) ) +#define ft_isalnum( x ) ( ft_isdigit( x ) || ft_isalpha( x ) ) + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** C H A R M A P S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to internal charmap object */ + typedef struct FT_CMapRec_* FT_CMap; + + /* handle to charmap class structure */ + typedef const struct FT_CMap_ClassRec_* FT_CMap_Class; + + /* internal charmap object structure */ + typedef struct FT_CMapRec_ + { + FT_CharMapRec charmap; + FT_CMap_Class clazz; + + } FT_CMapRec; + + /* typecase any pointer to a charmap handle */ +#define FT_CMAP( x ) ((FT_CMap)( x )) + + /* obvious macros */ +#define FT_CMAP_PLATFORM_ID( x ) FT_CMAP( x )->charmap.platform_id +#define FT_CMAP_ENCODING_ID( x ) FT_CMAP( x )->charmap.encoding_id +#define FT_CMAP_ENCODING( x ) FT_CMAP( x )->charmap.encoding +#define FT_CMAP_FACE( x ) FT_CMAP( x )->charmap.face + + + /* class method definitions */ + typedef FT_Error + (*FT_CMap_InitFunc)( FT_CMap cmap, + FT_Pointer init_data ); + + typedef void + (*FT_CMap_DoneFunc)( FT_CMap cmap ); + + typedef FT_UInt + (*FT_CMap_CharIndexFunc)( FT_CMap cmap, + FT_UInt32 char_code ); + + typedef FT_UInt + (*FT_CMap_CharNextFunc)( FT_CMap cmap, + FT_UInt32 *achar_code ); + + typedef FT_UInt + (*FT_CMap_CharVarIndexFunc)( FT_CMap cmap, + FT_CMap unicode_cmap, + FT_UInt32 char_code, + FT_UInt32 variant_selector ); + + typedef FT_Bool + (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap cmap, + FT_UInt32 char_code, + FT_UInt32 variant_selector ); + + typedef FT_UInt32 * + (*FT_CMap_VariantListFunc)( FT_CMap cmap, + FT_Memory mem ); + + typedef FT_UInt32 * + (*FT_CMap_CharVariantListFunc)( FT_CMap cmap, + FT_Memory mem, + FT_UInt32 char_code ); + + typedef FT_UInt32 * + (*FT_CMap_VariantCharListFunc)( FT_CMap cmap, + FT_Memory mem, + FT_UInt32 variant_selector ); + + + typedef struct FT_CMap_ClassRec_ + { + FT_ULong size; + FT_CMap_InitFunc init; + FT_CMap_DoneFunc done; + FT_CMap_CharIndexFunc char_index; + FT_CMap_CharNextFunc char_next; + + /* Subsequent entries are special ones for format 14 -- the variant */ + /* selector subtable which behaves like no other */ + + FT_CMap_CharVarIndexFunc char_var_index; + FT_CMap_CharVarIsDefaultFunc char_var_default; + FT_CMap_VariantListFunc variant_list; + FT_CMap_CharVariantListFunc charvariant_list; + FT_CMap_VariantCharListFunc variantchar_list; + + } FT_CMap_ClassRec; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + FT_CALLBACK_TABLE const FT_CMap_ClassRec class_; + +#define FT_DEFINE_CMAP_CLASS( \ + class_, \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_CMap_ClassRec class_ = \ + { \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_CMap_ClassRec* clazz ); + +#define FT_DEFINE_CMAP_CLASS( \ + class_, \ + size_, \ + init_, \ + done_, \ + char_index_, \ + char_next_, \ + char_var_index_, \ + char_var_default_, \ + variant_list_, \ + charvariant_list_, \ + variantchar_list_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_CMap_ClassRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->size = size_; \ + clazz->init = init_; \ + clazz->done = done_; \ + clazz->char_index = char_index_; \ + clazz->char_next = char_next_; \ + clazz->char_var_index = char_var_index_; \ + clazz->char_var_default = char_var_default_; \ + clazz->variant_list = variant_list_; \ + clazz->charvariant_list = charvariant_list_; \ + clazz->variantchar_list = variantchar_list_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* create a new charmap and add it to charmap->face */ + FT_BASE( FT_Error ) + FT_CMap_New( FT_CMap_Class clazz, + FT_Pointer init_data, + FT_CharMap charmap, + FT_CMap *acmap ); + + /* destroy a charmap and remove it from face's list */ + FT_BASE( void ) + FT_CMap_Done( FT_CMap cmap ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Face_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_Face */ + /* object. These fields may change between different releases of */ + /* FreeType. */ + /* */ + /* <Fields> */ + /* max_points :: */ + /* The maximum number of points used to store the vectorial outline */ + /* of any glyph in this face. If this value cannot be known in */ + /* advance, or if the face isn't scalable, this should be set to 0. */ + /* Only relevant for scalable formats. */ + /* */ + /* max_contours :: */ + /* The maximum number of contours used to store the vectorial */ + /* outline of any glyph in this face. If this value cannot be */ + /* known in advance, or if the face isn't scalable, this should be */ + /* set to 0. Only relevant for scalable formats. */ + /* */ + /* transform_matrix :: */ + /* A 2x2 matrix of 16.16 coefficients used to transform glyph */ + /* outlines after they are loaded from the font. Only used by the */ + /* convenience functions. */ + /* */ + /* transform_delta :: */ + /* A translation vector used to transform glyph outlines after they */ + /* are loaded from the font. Only used by the convenience */ + /* functions. */ + /* */ + /* transform_flags :: */ + /* Some flags used to classify the transform. Only used by the */ + /* convenience functions. */ + /* */ + /* services :: */ + /* A cache for frequently used services. It should be only */ + /* accessed with the macro `FT_FACE_LOOKUP_SERVICE'. */ + /* */ + /* incremental_interface :: */ + /* If non-null, the interface through which glyph data and metrics */ + /* are loaded incrementally for faces that do not provide all of */ + /* this data when first opened. This field exists only if */ + /* @FT_CONFIG_OPTION_INCREMENTAL is defined. */ + /* */ + /* ignore_unpatented_hinter :: */ + /* This boolean flag instructs the glyph loader to ignore the */ + /* native font hinter, if one is found. This is exclusively used */ + /* in the case when the unpatented hinter is compiled within the */ + /* library. */ + /* */ + /* refcount :: */ + /* A counter initialized to~1 at the time an @FT_Face structure is */ + /* created. @FT_Reference_Face increments this counter, and */ + /* @FT_Done_Face only destroys a face if the counter is~1, */ + /* otherwise it simply decrements it. */ + /* */ + typedef struct FT_Face_InternalRec_ + { + FT_Matrix transform_matrix; + FT_Vector transform_delta; + FT_Int transform_flags; + + FT_ServiceCacheRec services; + +#ifdef FT_CONFIG_OPTION_INCREMENTAL + FT_Incremental_InterfaceRec* incremental_interface; +#endif + + FT_Bool ignore_unpatented_hinter; + FT_Int refcount; + + } FT_Face_InternalRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Slot_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_GlyphSlot */ + /* object. These fields may change between different releases of */ + /* FreeType. */ + /* */ + /* <Fields> */ + /* loader :: The glyph loader object used to load outlines */ + /* into the glyph slot. */ + /* */ + /* flags :: Possible values are zero or */ + /* FT_GLYPH_OWN_BITMAP. The latter indicates */ + /* that the FT_GlyphSlot structure owns the */ + /* bitmap buffer. */ + /* */ + /* glyph_transformed :: Boolean. Set to TRUE when the loaded glyph */ + /* must be transformed through a specific */ + /* font transformation. This is _not_ the same */ + /* as the face transform set through */ + /* FT_Set_Transform(). */ + /* */ + /* glyph_matrix :: The 2x2 matrix corresponding to the glyph */ + /* transformation, if necessary. */ + /* */ + /* glyph_delta :: The 2d translation vector corresponding to */ + /* the glyph transformation, if necessary. */ + /* */ + /* glyph_hints :: Format-specific glyph hints management. */ + /* */ + +#define FT_GLYPH_OWN_BITMAP 0x1U + + typedef struct FT_Slot_InternalRec_ + { + FT_GlyphLoader loader; + FT_UInt flags; + FT_Bool glyph_transformed; + FT_Matrix glyph_matrix; + FT_Vector glyph_delta; + void* glyph_hints; + + } FT_GlyphSlot_InternalRec; + + +#if 0 + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_Size_InternalRec */ + /* */ + /* <Description> */ + /* This structure contains the internal fields of each FT_Size */ + /* object. Currently, it's empty. */ + /* */ + /*************************************************************************/ + + typedef struct FT_Size_InternalRec_ + { + /* empty */ + + } FT_Size_InternalRec; + +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** M O D U L E S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_ModuleRec */ + /* */ + /* <Description> */ + /* A module object instance. */ + /* */ + /* <Fields> */ + /* clazz :: A pointer to the module's class. */ + /* */ + /* library :: A handle to the parent library object. */ + /* */ + /* memory :: A handle to the memory manager. */ + /* */ + typedef struct FT_ModuleRec_ + { + FT_Module_Class* clazz; + FT_Library library; + FT_Memory memory; + + } FT_ModuleRec; + + + /* typecast an object to an FT_Module */ +#define FT_MODULE( x ) ((FT_Module)( x )) +#define FT_MODULE_CLASS( x ) FT_MODULE( x )->clazz +#define FT_MODULE_LIBRARY( x ) FT_MODULE( x )->library +#define FT_MODULE_MEMORY( x ) FT_MODULE( x )->memory + + +#define FT_MODULE_IS_DRIVER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_FONT_DRIVER ) + +#define FT_MODULE_IS_RENDERER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_RENDERER ) + +#define FT_MODULE_IS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_HINTER ) + +#define FT_MODULE_IS_STYLER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_STYLER ) + +#define FT_DRIVER_IS_SCALABLE( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_SCALABLE ) + +#define FT_DRIVER_USES_OUTLINES( x ) !( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_NO_OUTLINES ) + +#define FT_DRIVER_HAS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ + FT_MODULE_DRIVER_HAS_HINTER ) + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Module_Interface */ + /* */ + /* <Description> */ + /* Finds a module and returns its specific interface as a typeless */ + /* pointer. */ + /* */ + /* <Input> */ + /* library :: A handle to the library object. */ + /* */ + /* module_name :: The module's name (as an ASCII string). */ + /* */ + /* <Return> */ + /* A module-specific interface if available, 0 otherwise. */ + /* */ + /* <Note> */ + /* You should better be familiar with FreeType internals to know */ + /* which module to look for, and what its interface is :-) */ + /* */ + FT_BASE( const void* ) + FT_Get_Module_Interface( FT_Library library, + const char* mod_name ); + + FT_BASE( FT_Pointer ) + ft_module_get_service( FT_Module module, + const char* service_id ); + + /* */ + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** F A C E, S I Z E & G L Y P H S L O T O B J E C T S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* a few macros used to perform easy typecasts with minimal brain damage */ + +#define FT_FACE( x ) ((FT_Face)(x)) +#define FT_SIZE( x ) ((FT_Size)(x)) +#define FT_SLOT( x ) ((FT_GlyphSlot)(x)) + +#define FT_FACE_DRIVER( x ) FT_FACE( x )->driver +#define FT_FACE_LIBRARY( x ) FT_FACE_DRIVER( x )->root.library +#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory +#define FT_FACE_STREAM( x ) FT_FACE( x )->stream + +#define FT_SIZE_FACE( x ) FT_SIZE( x )->face +#define FT_SLOT_FACE( x ) FT_SLOT( x )->face + +#define FT_FACE_SLOT( x ) FT_FACE( x )->glyph +#define FT_FACE_SIZE( x ) FT_FACE( x )->size + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_GlyphSlot */ + /* */ + /* <Description> */ + /* It is sometimes useful to have more than one glyph slot for a */ + /* given face object. This function is used to create additional */ + /* slots. All of them are automatically discarded when the face is */ + /* destroyed. */ + /* */ + /* <Input> */ + /* face :: A handle to a parent face object. */ + /* */ + /* <Output> */ + /* aslot :: A handle to a new glyph slot object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + FT_BASE( FT_Error ) + FT_New_GlyphSlot( FT_Face face, + FT_GlyphSlot *aslot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_GlyphSlot */ + /* */ + /* <Description> */ + /* Destroys a given glyph slot. Remember however that all slots are */ + /* automatically destroyed with its parent. Using this function is */ + /* not always mandatory. */ + /* */ + /* <Input> */ + /* slot :: A handle to a target glyph slot. */ + /* */ + FT_BASE( void ) + FT_Done_GlyphSlot( FT_GlyphSlot slot ); + + /* */ + +#define FT_REQUEST_WIDTH( req ) \ + ( (req)->horiResolution \ + ? ( (req)->width * (FT_Pos)(req)->horiResolution + 36 ) / 72 \ + : (req)->width ) + +#define FT_REQUEST_HEIGHT( req ) \ + ( (req)->vertResolution \ + ? ( (req)->height * (FT_Pos)(req)->vertResolution + 36 ) / 72 \ + : (req)->height ) + + + /* Set the metrics according to a bitmap strike. */ + FT_BASE( void ) + FT_Select_Metrics( FT_Face face, + FT_ULong strike_index ); + + + /* Set the metrics according to a size request. */ + FT_BASE( void ) + FT_Request_Metrics( FT_Face face, + FT_Size_Request req ); + + + /* Match a size request against `available_sizes'. */ + FT_BASE( FT_Error ) + FT_Match_Size( FT_Face face, + FT_Size_Request req, + FT_Bool ignore_width, + FT_ULong* size_index ); + + + /* Use the horizontal metrics to synthesize the vertical metrics. */ + /* If `advance' is zero, it is also synthesized. */ + FT_BASE( void ) + ft_synthesize_vertical_metrics( FT_Glyph_Metrics* metrics, + FT_Pos advance ); + + + /* Free the bitmap of a given glyphslot when needed (i.e., only when it */ + /* was allocated with ft_glyphslot_alloc_bitmap). */ + FT_BASE( void ) + ft_glyphslot_free_bitmap( FT_GlyphSlot slot ); + + + /* Allocate a new bitmap buffer in a glyph slot. */ + FT_BASE( FT_Error ) + ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, + FT_ULong size ); + + + /* Set the bitmap buffer in a glyph slot to a given pointer. The buffer */ + /* will not be freed by a later call to ft_glyphslot_free_bitmap. */ + FT_BASE( void ) + ft_glyphslot_set_bitmap( FT_GlyphSlot slot, + FT_Byte* buffer ); + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** R E N D E R E R S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + +#define FT_RENDERER( x ) ((FT_Renderer)( x )) +#define FT_GLYPH( x ) ((FT_Glyph)( x )) +#define FT_BITMAP_GLYPH( x ) ((FT_BitmapGlyph)( x )) +#define FT_OUTLINE_GLYPH( x ) ((FT_OutlineGlyph)( x )) + + + typedef struct FT_RendererRec_ + { + FT_ModuleRec root; + FT_Renderer_Class* clazz; + FT_Glyph_Format glyph_format; + FT_Glyph_Class glyph_class; + + FT_Raster raster; + FT_Raster_Render_Func raster_render; + FT_Renderer_RenderFunc render; + + } FT_RendererRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** F O N T D R I V E R S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* typecast a module into a driver easily */ +#define FT_DRIVER( x ) ((FT_Driver)(x)) + + /* typecast a module as a driver, and get its driver class */ +#define FT_DRIVER_CLASS( x ) FT_DRIVER( x )->clazz + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_DriverRec */ + /* */ + /* <Description> */ + /* The root font driver class. A font driver is responsible for */ + /* managing and loading font files of a given format. */ + /* */ + /* <Fields> */ + /* root :: Contains the fields of the root module class. */ + /* */ + /* clazz :: A pointer to the font driver's class. Note that */ + /* this is NOT root.clazz. `class' wasn't used */ + /* as it is a reserved word in C++. */ + /* */ + /* faces_list :: The list of faces currently opened by this */ + /* driver. */ + /* */ + /* glyph_loader :: Unused. Used to be glyph loader for all faces */ + /* managed by this driver. */ + /* */ + typedef struct FT_DriverRec_ + { + FT_ModuleRec root; + FT_Driver_Class clazz; + FT_ListRec faces_list; + FT_GlyphLoader glyph_loader; + + } FT_DriverRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** L I B R A R I E S ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* This hook is used by the TrueType debugger. It must be set to an */ + /* alternate truetype bytecode interpreter function. */ +#define FT_DEBUG_HOOK_TRUETYPE 0 + + + /* Set this debug hook to a non-null pointer to force unpatented hinting */ + /* for all faces when both TT_USE_BYTECODE_INTERPRETER and */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING are defined. This is only used */ + /* during debugging. */ +#define FT_DEBUG_HOOK_UNPATENTED_HINTING 1 + + + typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap, + FT_Render_Mode render_mode, + FT_Library library ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* FT_LibraryRec */ + /* */ + /* <Description> */ + /* The FreeType library class. This is the root of all FreeType */ + /* data. Use FT_New_Library() to create a library object, and */ + /* FT_Done_Library() to discard it and all child objects. */ + /* */ + /* <Fields> */ + /* memory :: The library's memory object. Manages memory */ + /* allocation. */ + /* */ + /* version_major :: The major version number of the library. */ + /* */ + /* version_minor :: The minor version number of the library. */ + /* */ + /* version_patch :: The current patch level of the library. */ + /* */ + /* num_modules :: The number of modules currently registered */ + /* within this library. This is set to 0 for new */ + /* libraries. New modules are added through the */ + /* FT_Add_Module() API function. */ + /* */ + /* modules :: A table used to store handles to the currently */ + /* registered modules. Note that each font driver */ + /* contains a list of its opened faces. */ + /* */ + /* renderers :: The list of renderers currently registered */ + /* within the library. */ + /* */ + /* cur_renderer :: The current outline renderer. This is a */ + /* shortcut used to avoid parsing the list on */ + /* each call to FT_Outline_Render(). It is a */ + /* handle to the current renderer for the */ + /* FT_GLYPH_FORMAT_OUTLINE format. */ + /* */ + /* auto_hinter :: XXX */ + /* */ + /* raster_pool :: The raster object's render pool. This can */ + /* ideally be changed dynamically at run-time. */ + /* */ + /* raster_pool_size :: The size of the render pool in bytes. */ + /* */ + /* debug_hooks :: XXX */ + /* */ + /* lcd_filter :: If subpixel rendering is activated, the */ + /* selected LCD filter mode. */ + /* */ + /* lcd_extra :: If subpixel rendering is activated, the number */ + /* of extra pixels needed for the LCD filter. */ + /* */ + /* lcd_weights :: If subpixel rendering is activated, the LCD */ + /* filter weights, if any. */ + /* */ + /* lcd_filter_func :: If subpixel rendering is activated, the LCD */ + /* filtering callback function. */ + /* */ + /* pic_container :: Contains global structs and tables, instead */ + /* of defining them globallly. */ + /* */ + /* refcount :: A counter initialized to~1 at the time an */ + /* @FT_Library structure is created. */ + /* @FT_Reference_Library increments this counter, */ + /* and @FT_Done_Library only destroys a library */ + /* if the counter is~1, otherwise it simply */ + /* decrements it. */ + /* */ + typedef struct FT_LibraryRec_ + { + FT_Memory memory; /* library's memory manager */ + + FT_Int version_major; + FT_Int version_minor; + FT_Int version_patch; + + FT_UInt num_modules; + FT_Module modules[FT_MAX_MODULES]; /* module objects */ + + FT_ListRec renderers; /* list of renderers */ + FT_Renderer cur_renderer; /* current outline renderer */ + FT_Module auto_hinter; + + FT_Byte* raster_pool; /* scan-line conversion */ + /* render pool */ + FT_ULong raster_pool_size; /* size of render pool in bytes */ + + FT_DebugHook_Func debug_hooks[4]; + +#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING + FT_LcdFilter lcd_filter; + FT_Int lcd_extra; /* number of extra pixels */ + FT_Byte lcd_weights[7]; /* filter weights, if any */ + FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */ +#endif + +#ifdef FT_CONFIG_OPTION_PIC + FT_PIC_Container pic_container; +#endif + + FT_Int refcount; + + } FT_LibraryRec; + + + FT_BASE( FT_Renderer ) + FT_Lookup_Renderer( FT_Library library, + FT_Glyph_Format format, + FT_ListNode* node ); + + FT_BASE( FT_Error ) + FT_Render_Glyph_Internal( FT_Library library, + FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + typedef const char* + (*FT_Face_GetPostscriptNameFunc)( FT_Face face ); + + typedef FT_Error + (*FT_Face_GetGlyphNameFunc)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_Face_GetGlyphNameIndexFunc)( FT_Face face, + FT_String* glyph_name ); + + +#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_New_Memory */ + /* */ + /* <Description> */ + /* Creates a new memory object. */ + /* */ + /* <Return> */ + /* A pointer to the new memory object. 0 in case of error. */ + /* */ + FT_BASE( FT_Memory ) + FT_New_Memory( void ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Done_Memory */ + /* */ + /* <Description> */ + /* Discards memory manager. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* */ + FT_BASE( void ) + FT_Done_Memory( FT_Memory memory ); + +#endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ + + + /* Define default raster's interface. The default raster is located in */ + /* `src/base/ftraster.c'. */ + /* */ + /* Client applications can register new rasters through the */ + /* FT_Set_Raster() API. */ + +#ifndef FT_NO_DEFAULT_RASTER + FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster; +#endif + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** P I C S U P P O R T ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /* PIC support macros for ftimage.h */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_OUTLINE_FUNCS */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Outline_Funcs struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_OUTLINE_FUNCS( \ + class_, \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ ) \ + static const FT_Outline_Funcs class_ = \ + { \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_OUTLINE_FUNCS( \ + class_, \ + move_to_, \ + line_to_, \ + conic_to_, \ + cubic_to_, \ + shift_, \ + delta_ ) \ + static FT_Error \ + Init_Class_ ## class_( FT_Outline_Funcs* clazz ) \ + { \ + clazz->move_to = move_to_; \ + clazz->line_to = line_to_; \ + clazz->conic_to = conic_to_; \ + clazz->cubic_to = cubic_to_; \ + clazz->shift = shift_; \ + clazz->delta = delta_; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_RASTER_FUNCS */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Raster_Funcs struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_RASTER_FUNCS( \ + class_, \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ ) \ + const FT_Raster_Funcs class_ = \ + { \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_RASTER_FUNCS( \ + class_, \ + glyph_format_, \ + raster_new_, \ + raster_reset_, \ + raster_set_mode_, \ + raster_render_, \ + raster_done_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Raster_Funcs* clazz ) \ + { \ + clazz->glyph_format = glyph_format_; \ + clazz->raster_new = raster_new_; \ + clazz->raster_reset = raster_reset_; \ + clazz->raster_set_mode = raster_set_mode_; \ + clazz->raster_render = raster_render_; \ + clazz->raster_done = raster_done_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* PIC support macros for ftrender.h */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_GLYPH */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Glyph_Class struct. */ + /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ + /* be called with a pre-allocated stcture to be filled. */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_GLYPH( \ + class_, \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Glyph_Class class_ = \ + { \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_GLYPH( \ + class_, \ + size_, \ + format_, \ + init_, \ + done_, \ + copy_, \ + transform_, \ + bbox_, \ + prepare_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Glyph_Class* clazz ) \ + { \ + clazz->glyph_size = size_; \ + clazz->glyph_format = format_; \ + clazz->glyph_init = init_; \ + clazz->glyph_done = done_; \ + clazz->glyph_copy = copy_; \ + clazz->glyph_transform = transform_; \ + clazz->glyph_bbox = bbox_; \ + clazz->glyph_prepare = prepare_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_RENDERER */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of a */ + /* FT_Renderer_Class struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_RENDERER */ + /* */ + /* <Description> */ + /* Used to initialize an instance of FT_Renderer_Class struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion will need */ + /* to be called with a pointer where the allocated structure is */ + /* returned. And when it is no longer needed a `destroy' function */ + /* needs to be called to release that allocation. */ + /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* a mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by the renderer definition calling `FT_DEFINE_RENDERER' in the */ + /* following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_RENDERER( class_ ) \ + FT_EXPORT_VAR( const FT_Renderer_Class ) class_; + +#define FT_DEFINE_RENDERER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + glyph_format_, \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + raster_class_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Renderer_Class class_ = \ + { \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + glyph_format_, \ + \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + \ + raster_class_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_RENDERER( class_ ) FT_DECLARE_MODULE( class_ ) + +#define FT_DEFINE_RENDERER( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_, \ + glyph_format_, \ + render_glyph_, \ + transform_glyph_, \ + get_glyph_cbox_, \ + set_mode_, \ + raster_class_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Renderer_Class* rclazz = (FT_Renderer_Class*)clazz; \ + FT_Memory memory = library->memory; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( rclazz ) \ + FT_FREE( rclazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Renderer_Class* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + FT_DEFINE_ROOT_MODULE( flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + \ + clazz->glyph_format = glyph_format_; \ + \ + clazz->render_glyph = render_glyph_; \ + clazz->transform_glyph = transform_glyph_; \ + clazz->get_glyph_cbox = get_glyph_cbox_; \ + clazz->set_mode = set_mode_; \ + \ + clazz->raster_class = raster_class_; \ + \ + *output_class = (FT_Module_Class*)clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* PIC support macros for ftmodapi.h **/ + + +#ifdef FT_CONFIG_OPTION_PIC + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Creator */ + /* */ + /* <Description> */ + /* A function used to create (allocate) a new module class object. */ + /* The object's members are initialized, but the module itself is */ + /* not. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* output_class :: Initialized with the newly allocated class. */ + /* */ + typedef FT_Error + (*FT_Module_Creator)( FT_Memory memory, + FT_Module_Class** output_class ); + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* FT_Module_Destroyer */ + /* */ + /* <Description> */ + /* A function used to destroy (deallocate) a module class object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory manager. */ + /* clazz :: Module class to destroy. */ + /* */ + typedef void + (*FT_Module_Destroyer)( FT_Memory memory, + FT_Module_Class* clazz ); + +#endif + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DECLARE_MODULE */ + /* */ + /* <Description> */ + /* Used to create a forward declaration of a */ + /* FT_Module_Class struct instance. */ + /* */ + /* <Macro> */ + /* FT_DEFINE_MODULE */ + /* */ + /* <Description> */ + /* Used to initialize an instance of an FT_Module_Class struct. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion needs to */ + /* be called with a pointer where the allocated structure is */ + /* returned. And when it is no longer needed a `destroy' function */ + /* needs to be called to release that allocation. */ + /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* a mechanism to call these functions for the default modules */ + /* described in `ftmodule.h'. */ + /* */ + /* Notice that the created `create' and `destroy' functions call */ + /* `pic_init' and `pic_free' to allow you to manually allocate and */ + /* initialize any additional global data, like a module specific */ + /* interface, and put them in the global pic container defined in */ + /* `ftpic.h'. If you don't need them just implement the functions as */ + /* empty to resolve the link error. Also the `pic_init' and */ + /* `pic_free' functions should be declared in `pic.h', to be referred */ + /* by the module definition calling `FT_DEFINE_MODULE' in the */ + /* following. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ + /* allocated in the global scope (or the scope where the macro */ + /* is used). */ + /* */ + /* <Macro> */ + /* FT_DEFINE_ROOT_MODULE */ + /* */ + /* <Description> */ + /* Used to initialize an instance of an FT_Module_Class struct inside */ + /* another struct that contains it or in a function that initializes */ + /* that containing struct. */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_MODULE( class_ ) \ + FT_CALLBACK_TABLE \ + const FT_Module_Class class_; + +#define FT_DEFINE_ROOT_MODULE( \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + { \ + flags_, \ + size_, \ + \ + name_, \ + version_, \ + requires_, \ + \ + interface_, \ + \ + init_, \ + done_, \ + get_interface_, \ + }, + +#define FT_DEFINE_MODULE( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + FT_CALLBACK_TABLE_DEF \ + const FT_Module_Class class_ = \ + { \ + flags_, \ + size_, \ + \ + name_, \ + version_, \ + requires_, \ + \ + interface_, \ + \ + init_, \ + done_, \ + get_interface_, \ + }; + + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_MODULE( class_ ) \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ); \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ); + +#define FT_DEFINE_ROOT_MODULE( \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + clazz->root.module_flags = flags_; \ + clazz->root.module_size = size_; \ + clazz->root.module_name = name_; \ + clazz->root.module_version = version_; \ + clazz->root.module_requires = requires_; \ + \ + clazz->root.module_interface = interface_; \ + \ + clazz->root.module_init = init_; \ + clazz->root.module_done = done_; \ + clazz->root.get_interface = get_interface_; + +#define FT_DEFINE_MODULE( \ + class_, \ + flags_, \ + size_, \ + name_, \ + version_, \ + requires_, \ + interface_, \ + init_, \ + done_, \ + get_interface_ ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_Module_Class* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + class_ ## _pic_free( library ); \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_Module_Class** output_class ) \ + { \ + FT_Memory memory = library->memory; \ + FT_Module_Class* clazz = NULL; \ + FT_Error error; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ + return error; \ + error = class_ ## _pic_init( library ); \ + if ( error ) \ + { \ + FT_FREE( clazz ); \ + return error; \ + } \ + \ + clazz->module_flags = flags_; \ + clazz->module_size = size_; \ + clazz->module_name = name_; \ + clazz->module_version = version_; \ + clazz->module_requires = requires_; \ + \ + clazz->module_interface = interface_; \ + \ + clazz->module_init = init_; \ + clazz->module_done = done_; \ + clazz->get_interface = get_interface_; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + +FT_END_HEADER + +#endif /* __FTOBJS_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftpic.h b/lib/windows64/include/freetype/internal/ftpic.h new file mode 100644 index 0000000..7f9154f --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftpic.h @@ -0,0 +1,71 @@ +/***************************************************************************/ +/* */ +/* ftpic.h */ +/* */ +/* The FreeType position independent code services (declaration). */ +/* */ +/* Copyright 2009-2015 by */ +/* Oran Agra and Mickey Gabel. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Modules that ordinarily have const global data that need address */ + /* can instead define pointers here. */ + /* */ + /*************************************************************************/ + + +#ifndef __FTPIC_H__ +#define __FTPIC_H__ + + +FT_BEGIN_HEADER + +#ifdef FT_CONFIG_OPTION_PIC + + typedef struct FT_PIC_Container_ + { + /* pic containers for base */ + void* base; + + /* pic containers for modules */ + void* autofit; + void* cff; + void* pshinter; + void* psnames; + void* raster; + void* sfnt; + void* smooth; + void* truetype; + + } FT_PIC_Container; + + + /* Initialize the various function tables, structs, etc. */ + /* stored in the container. */ + FT_BASE( FT_Error ) + ft_pic_container_init( FT_Library library ); + + + /* Destroy the contents of the container. */ + FT_BASE( void ) + ft_pic_container_destroy( FT_Library library ); + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + +FT_END_HEADER + +#endif /* __FTPIC_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftrfork.h b/lib/windows64/include/freetype/internal/ftrfork.h new file mode 100644 index 0000000..da61ca7 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftrfork.h @@ -0,0 +1,266 @@ +/***************************************************************************/ +/* */ +/* ftrfork.h */ +/* */ +/* Embedded resource forks accessor (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* Masatake YAMATO and Redhat K.K. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* Development of the code in this file is support of */ +/* Information-technology Promotion Agency, Japan. */ +/***************************************************************************/ + + +#ifndef __FTRFORK_H__ +#define __FTRFORK_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* Number of guessing rules supported in `FT_Raccess_Guess'. */ + /* Don't forget to increment the number if you add a new guessing rule. */ +#define FT_RACCESS_N_RULES 9 + + + /* A structure to describe a reference in a resource by its resource ID */ + /* and internal offset. The `POST' resource expects to be concatenated */ + /* by the order of resource IDs instead of its appearance in the file. */ + + typedef struct FT_RFork_Ref_ + { + FT_UShort res_id; + FT_Long offset; + + } FT_RFork_Ref; + +#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK + typedef FT_Error + (*ft_raccess_guess_func)( FT_Library library, + FT_Stream stream, + char *base_file_name, + char **result_file_name, + FT_Long *result_offset ); + + typedef enum FT_RFork_Rule_ { + FT_RFork_Rule_invalid = -2, + FT_RFork_Rule_uknown, /* -1 */ + FT_RFork_Rule_apple_double, + FT_RFork_Rule_apple_single, + FT_RFork_Rule_darwin_ufs_export, + FT_RFork_Rule_darwin_newvfs, + FT_RFork_Rule_darwin_hfsplus, + FT_RFork_Rule_vfat, + FT_RFork_Rule_linux_cap, + FT_RFork_Rule_linux_double, + FT_RFork_Rule_linux_netatalk + } FT_RFork_Rule; + + /* For fast translation between rule index and rule type, + * the macros FT_RFORK_xxx should be kept consistent with + * the raccess_guess_funcs table + */ + typedef struct ft_raccess_guess_rec_ { + ft_raccess_guess_func func; + FT_RFork_Rule type; + } ft_raccess_guess_rec; + +#ifndef FT_CONFIG_OPTION_PIC + + /* this array is a storage in non-PIC mode, so ; is needed in END */ +#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type ) \ + static const type name[] = { +#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix ) \ + { raccess_guess_ ## func_suffix, \ + FT_RFork_Rule_ ## type_suffix }, +#define CONST_FT_RFORK_RULE_ARRAY_END }; + +#else /* FT_CONFIG_OPTION_PIC */ + + /* this array is a function in PIC mode, so no ; is needed in END */ +#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type ) \ + void \ + FT_Init_Table_ ## name( type* storage ) \ + { \ + type* local = storage; \ + \ + \ + int i = 0; +#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix ) \ + local[i].func = raccess_guess_ ## func_suffix; \ + local[i].type = FT_RFork_Rule_ ## type_suffix; \ + i++; +#define CONST_FT_RFORK_RULE_ARRAY_END } + +#endif /* FT_CONFIG_OPTION_PIC */ + +#endif /* FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */ + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Guess */ + /* */ + /* <Description> */ + /* Guess a file name and offset where the actual resource fork is */ + /* stored. The macro FT_RACCESS_N_RULES holds the number of */ + /* guessing rules; the guessed result for the Nth rule is */ + /* represented as a triplet: a new file name (new_names[N]), a file */ + /* offset (offsets[N]), and an error code (errors[N]). */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* base_name :: */ + /* The (base) file name of the resource fork used for some */ + /* guessing rules. */ + /* */ + /* <Output> */ + /* new_names :: */ + /* An array of guessed file names in which the resource forks may */ + /* exist. If `new_names[N]' is NULL, the guessed file name is */ + /* equal to `base_name'. */ + /* */ + /* offsets :: */ + /* An array of guessed file offsets. `offsets[N]' holds the file */ + /* offset of the possible start of the resource fork in file */ + /* `new_names[N]'. */ + /* */ + /* errors :: */ + /* An array of FreeType error codes. `errors[N]' is the error */ + /* code of Nth guessing rule function. If `errors[N]' is not */ + /* FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless. */ + /* */ + FT_BASE( void ) + FT_Raccess_Guess( FT_Library library, + FT_Stream stream, + char* base_name, + char** new_names, + FT_Long* offsets, + FT_Error* errors ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Get_HeaderInfo */ + /* */ + /* <Description> */ + /* Get the information from the header of resource fork. The */ + /* information includes the file offset where the resource map */ + /* starts, and the file offset where the resource data starts. */ + /* `FT_Raccess_Get_DataOffsets' requires these two data. */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* rfork_offset :: */ + /* The file offset where the resource fork starts. */ + /* */ + /* <Output> */ + /* map_offset :: */ + /* The file offset where the resource map starts. */ + /* */ + /* rdata_pos :: */ + /* The file offset where the resource data starts. */ + /* */ + /* <Return> */ + /* FreeType error code. FT_Err_Ok means success. */ + /* */ + FT_BASE( FT_Error ) + FT_Raccess_Get_HeaderInfo( FT_Library library, + FT_Stream stream, + FT_Long rfork_offset, + FT_Long *map_offset, + FT_Long *rdata_pos ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Raccess_Get_DataOffsets */ + /* */ + /* <Description> */ + /* Get the data offsets for a tag in a resource fork. Offsets are */ + /* stored in an array because, in some cases, resources in a resource */ + /* fork have the same tag. */ + /* */ + /* <Input> */ + /* library :: */ + /* A FreeType library instance. */ + /* */ + /* stream :: */ + /* A file stream containing the resource fork. */ + /* */ + /* map_offset :: */ + /* The file offset where the resource map starts. */ + /* */ + /* rdata_pos :: */ + /* The file offset where the resource data starts. */ + /* */ + /* tag :: */ + /* The resource tag. */ + /* */ + /* sort_by_res_id :: */ + /* A Boolean to sort the fragmented resource by their ids. */ + /* The fragmented resources for `POST' resource should be sorted */ + /* to restore Type1 font properly. For `snft' resources, sorting */ + /* may induce a different order of the faces in comparison to that */ + /* by QuickDraw API. */ + /* */ + /* <Output> */ + /* offsets :: */ + /* The stream offsets for the resource data specified by `tag'. */ + /* This array is allocated by the function, so you have to call */ + /* @ft_mem_free after use. */ + /* */ + /* count :: */ + /* The length of offsets array. */ + /* */ + /* <Return> */ + /* FreeType error code. FT_Err_Ok means success. */ + /* */ + /* <Note> */ + /* Normally you should use `FT_Raccess_Get_HeaderInfo' to get the */ + /* value for `map_offset' and `rdata_pos'. */ + /* */ + FT_BASE( FT_Error ) + FT_Raccess_Get_DataOffsets( FT_Library library, + FT_Stream stream, + FT_Long map_offset, + FT_Long rdata_pos, + FT_Long tag, + FT_Bool sort_by_res_id, + FT_Long **offsets, + FT_Long *count ); + + +FT_END_HEADER + +#endif /* __FTRFORK_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftserv.h b/lib/windows64/include/freetype/internal/ftserv.h new file mode 100644 index 0000000..8f837e4 --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftserv.h @@ -0,0 +1,763 @@ +/***************************************************************************/ +/* */ +/* ftserv.h */ +/* */ +/* The FreeType services (specification only). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Each module can export one or more `services'. Each service is */ + /* identified by a constant string and modeled by a pointer; the latter */ + /* generally corresponds to a structure containing function pointers. */ + /* */ + /* Note that a service's data cannot be a mere function pointer because */ + /* in C it is possible that function pointers might be implemented */ + /* differently than data pointers (e.g. 48 bits instead of 32). */ + /* */ + /*************************************************************************/ + + +#ifndef __FTSERV_H__ +#define __FTSERV_H__ + + +FT_BEGIN_HEADER + + /* + * @macro: + * FT_FACE_FIND_SERVICE + * + * @description: + * This macro is used to look up a service from a face's driver module. + * + * @input: + * face :: + * The source face handle. + * + * id :: + * A string describing the service as defined in the service's + * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to + * `multi-masters'). It is automatically prefixed with + * `FT_SERVICE_ID_'. + * + * @output: + * ptr :: + * A variable that receives the service pointer. Will be NULL + * if not found. + */ +#ifdef __cplusplus + +#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_ = NULL; \ + FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \ + \ + \ + if ( module->clazz->get_interface ) \ + _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ + *_pptr_ = _tmp_; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_ = NULL; \ + \ + if ( module->clazz->get_interface ) \ + _tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ + ptr = _tmp_; \ + FT_END_STMNT + +#endif /* !C++ */ + + + /* + * @macro: + * FT_FACE_FIND_GLOBAL_SERVICE + * + * @description: + * This macro is used to look up a service from all modules. + * + * @input: + * face :: + * The source face handle. + * + * id :: + * A string describing the service as defined in the service's + * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to + * `multi-masters'). It is automatically prefixed with + * `FT_SERVICE_ID_'. + * + * @output: + * ptr :: + * A variable that receives the service pointer. Will be NULL + * if not found. + */ +#ifdef __cplusplus + +#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_; \ + FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \ + \ + \ + _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ + *_pptr_ = _tmp_; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \ + FT_Pointer _tmp_; \ + \ + \ + _tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ + ptr = _tmp_; \ + FT_END_STMNT + +#endif /* !C++ */ + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** S E R V I C E D E S C R I P T O R S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * The following structure is used to _describe_ a given service + * to the library. This is useful to build simple static service lists. + */ + typedef struct FT_ServiceDescRec_ + { + const char* serv_id; /* service name */ + const void* serv_data; /* service pointer/data */ + + } FT_ServiceDescRec; + + typedef const FT_ServiceDescRec* FT_ServiceDesc; + + + /*************************************************************************/ + /* */ + /* <Macro> */ + /* FT_DEFINE_SERVICEDESCREC1 */ + /* FT_DEFINE_SERVICEDESCREC2 */ + /* FT_DEFINE_SERVICEDESCREC3 */ + /* FT_DEFINE_SERVICEDESCREC4 */ + /* FT_DEFINE_SERVICEDESCREC5 */ + /* FT_DEFINE_SERVICEDESCREC6 */ + /* FT_DEFINE_SERVICEDESCREC7 */ + /* */ + /* <Description> */ + /* Used to initialize an array of FT_ServiceDescRec structures. */ + /* */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs to */ + /* be called with a pointer to return an allocated array. As soon as */ + /* it is no longer needed, a `destroy' function needs to be called to */ + /* release that allocation. */ + /* */ + /* These functions should be manually called from the `pic_init' and */ + /* `pic_free' functions of your module (see FT_DEFINE_MODULE). */ + /* */ + /* When FT_CONFIG_OPTION_PIC is not defined the array will be */ + /* allocated in the global scope (or the scope where the macro is */ + /* used). */ + /* */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICEDESCREC1( class_, \ + serv_id_1, serv_data_1 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC2( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC3( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC4( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC5( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC6( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { serv_id_6, serv_data_6 }, \ + { NULL, NULL } \ + }; + +#define FT_DEFINE_SERVICEDESCREC7( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6, \ + serv_id_7, serv_data_7 ) \ + static const FT_ServiceDescRec class_[] = \ + { \ + { serv_id_1, serv_data_1 }, \ + { serv_id_2, serv_data_2 }, \ + { serv_id_3, serv_data_3 }, \ + { serv_id_4, serv_data_4 }, \ + { serv_id_5, serv_data_5 }, \ + { serv_id_6, serv_data_6 }, \ + { serv_id_7, serv_data_7 }, \ + { NULL, NULL } \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICEDESCREC1( class_, \ + serv_id_1, serv_data_1 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = NULL; \ + clazz[1].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC2( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = NULL; \ + clazz[2].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC3( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = NULL; \ + clazz[3].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC4( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = NULL; \ + clazz[4].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC5( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class ) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = NULL; \ + clazz[5].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC6( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = serv_id_6; \ + clazz[5].serv_data = serv_data_6; \ + clazz[6].serv_id = NULL; \ + clazz[6].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#define FT_DEFINE_SERVICEDESCREC7( class_, \ + serv_id_1, serv_data_1, \ + serv_id_2, serv_data_2, \ + serv_id_3, serv_data_3, \ + serv_id_4, serv_data_4, \ + serv_id_5, serv_data_5, \ + serv_id_6, serv_data_6, \ + serv_id_7, serv_data_7 ) \ + void \ + FT_Destroy_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec* clazz ) \ + { \ + FT_Memory memory = library->memory; \ + \ + \ + if ( clazz ) \ + FT_FREE( clazz ); \ + } \ + \ + FT_Error \ + FT_Create_Class_ ## class_( FT_Library library, \ + FT_ServiceDescRec** output_class) \ + { \ + FT_ServiceDescRec* clazz = NULL; \ + FT_Error error; \ + FT_Memory memory = library->memory; \ + \ + \ + if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) ) \ + return error; \ + \ + clazz[0].serv_id = serv_id_1; \ + clazz[0].serv_data = serv_data_1; \ + clazz[1].serv_id = serv_id_2; \ + clazz[1].serv_data = serv_data_2; \ + clazz[2].serv_id = serv_id_3; \ + clazz[2].serv_data = serv_data_3; \ + clazz[3].serv_id = serv_id_4; \ + clazz[3].serv_data = serv_data_4; \ + clazz[4].serv_id = serv_id_5; \ + clazz[4].serv_data = serv_data_5; \ + clazz[5].serv_id = serv_id_6; \ + clazz[5].serv_data = serv_data_6; \ + clazz[6].serv_id = serv_id_7; \ + clazz[6].serv_data = serv_data_7; \ + clazz[7].serv_id = NULL; \ + clazz[7].serv_data = NULL; \ + \ + *output_class = clazz; \ + \ + return FT_Err_Ok; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + + /* + * Parse a list of FT_ServiceDescRec descriptors and look for + * a specific service by ID. Note that the last element in the + * array must be { NULL, NULL }, and that the function should + * return NULL if the service isn't available. + * + * This function can be used by modules to implement their + * `get_service' method. + */ + FT_BASE( FT_Pointer ) + ft_service_list_lookup( FT_ServiceDesc service_descriptors, + const char* service_id ); + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** S E R V I C E S C A C H E *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * This structure is used to store a cache for several frequently used + * services. It is the type of `face->internal->services'. You + * should only use FT_FACE_LOOKUP_SERVICE to access it. + * + * All fields should have the type FT_Pointer to relax compilation + * dependencies. We assume the developer isn't completely stupid. + * + * Each field must be named `service_XXXX' where `XXX' corresponds to + * the correct FT_SERVICE_ID_XXXX macro. See the definition of + * FT_FACE_LOOKUP_SERVICE below how this is implemented. + * + */ + typedef struct FT_ServiceCacheRec_ + { + FT_Pointer service_POSTSCRIPT_FONT_NAME; + FT_Pointer service_MULTI_MASTERS; + FT_Pointer service_GLYPH_DICT; + FT_Pointer service_PFR_METRICS; + FT_Pointer service_WINFNT; + + } FT_ServiceCacheRec, *FT_ServiceCache; + + + /* + * A magic number used within the services cache. + */ + + /* ensure that value `1' has the same width as a pointer */ +#define FT_SERVICE_UNAVAILABLE ((FT_Pointer)~(FT_PtrDist)1) + + + /* + * @macro: + * FT_FACE_LOOKUP_SERVICE + * + * @description: + * This macro is used to lookup a service from a face's driver module + * using its cache. + * + * @input: + * face:: + * The source face handle containing the cache. + * + * field :: + * The field name in the cache. + * + * id :: + * The service ID. + * + * @output: + * ptr :: + * A variable receiving the service data. NULL if not available. + */ +#ifdef __cplusplus + +#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Pointer svc; \ + FT_Pointer* Pptr = (FT_Pointer*)&(ptr); \ + \ + \ + svc = FT_FACE( face )->internal->services. service_ ## id; \ + if ( svc == FT_SERVICE_UNAVAILABLE ) \ + svc = NULL; \ + else if ( svc == NULL ) \ + { \ + FT_FACE_FIND_SERVICE( face, svc, id ); \ + \ + FT_FACE( face )->internal->services. service_ ## id = \ + (FT_Pointer)( svc != NULL ? svc \ + : FT_SERVICE_UNAVAILABLE ); \ + } \ + *Pptr = svc; \ + FT_END_STMNT + +#else /* !C++ */ + +#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ + FT_BEGIN_STMNT \ + FT_Pointer svc; \ + \ + \ + svc = FT_FACE( face )->internal->services. service_ ## id; \ + if ( svc == FT_SERVICE_UNAVAILABLE ) \ + svc = NULL; \ + else if ( svc == NULL ) \ + { \ + FT_FACE_FIND_SERVICE( face, svc, id ); \ + \ + FT_FACE( face )->internal->services. service_ ## id = \ + (FT_Pointer)( svc != NULL ? svc \ + : FT_SERVICE_UNAVAILABLE ); \ + } \ + ptr = svc; \ + FT_END_STMNT + +#endif /* !C++ */ + + /* + * A macro used to define new service structure types. + */ + +#define FT_DEFINE_SERVICE( name ) \ + typedef struct FT_Service_ ## name ## Rec_ \ + FT_Service_ ## name ## Rec ; \ + typedef struct FT_Service_ ## name ## Rec_ \ + const * FT_Service_ ## name ; \ + struct FT_Service_ ## name ## Rec_ + + /* */ + + /* + * The header files containing the services. + */ + +#define FT_SERVICE_BDF_H <internal/services/svbdf.h> +#define FT_SERVICE_CID_H <internal/services/svcid.h> +#define FT_SERVICE_GLYPH_DICT_H <internal/services/svgldict.h> +#define FT_SERVICE_GX_VALIDATE_H <internal/services/svgxval.h> +#define FT_SERVICE_KERNING_H <internal/services/svkern.h> +#define FT_SERVICE_MULTIPLE_MASTERS_H <internal/services/svmm.h> +#define FT_SERVICE_OPENTYPE_VALIDATE_H <internal/services/svotval.h> +#define FT_SERVICE_PFR_H <internal/services/svpfr.h> +#define FT_SERVICE_POSTSCRIPT_CMAPS_H <internal/services/svpscmap.h> +#define FT_SERVICE_POSTSCRIPT_INFO_H <internal/services/svpsinfo.h> +#define FT_SERVICE_POSTSCRIPT_NAME_H <internal/services/svpostnm.h> +#define FT_SERVICE_PROPERTIES_H <internal/services/svprop.h> +#define FT_SERVICE_SFNT_H <internal/services/svsfnt.h> +#define FT_SERVICE_TRUETYPE_ENGINE_H <internal/services/svtteng.h> +#define FT_SERVICE_TT_CMAP_H <internal/services/svttcmap.h> +#define FT_SERVICE_WINFNT_H <internal/services/svwinfnt.h> +#define FT_SERVICE_FONT_FORMAT_H <internal/services/svfntfmt.h> +#define FT_SERVICE_TRUETYPE_GLYF_H <internal/services/svttglyf.h> + + /* */ + +FT_END_HEADER + +#endif /* __FTSERV_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftstream.h b/lib/windows64/include/freetype/internal/ftstream.h new file mode 100644 index 0000000..384e5df --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftstream.h @@ -0,0 +1,536 @@ +/***************************************************************************/ +/* */ +/* ftstream.h */ +/* */ +/* Stream handling (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTSTREAM_H__ +#define __FTSTREAM_H__ + + +#include <ft2build.h> +#include FT_SYSTEM_H +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* format of an 8-bit frame_op value: */ + /* */ + /* bit 76543210 */ + /* xxxxxxes */ + /* */ + /* s is set to 1 if the value is signed. */ + /* e is set to 1 if the value is little-endian. */ + /* xxx is a command. */ + +#define FT_FRAME_OP_SHIFT 2 +#define FT_FRAME_OP_SIGNED 1 +#define FT_FRAME_OP_LITTLE 2 +#define FT_FRAME_OP_COMMAND( x ) ( x >> FT_FRAME_OP_SHIFT ) + +#define FT_MAKE_FRAME_OP( command, little, sign ) \ + ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign ) + +#define FT_FRAME_OP_END 0 +#define FT_FRAME_OP_START 1 /* start a new frame */ +#define FT_FRAME_OP_BYTE 2 /* read 1-byte value */ +#define FT_FRAME_OP_SHORT 3 /* read 2-byte value */ +#define FT_FRAME_OP_LONG 4 /* read 4-byte value */ +#define FT_FRAME_OP_OFF3 5 /* read 3-byte value */ +#define FT_FRAME_OP_BYTES 6 /* read a bytes sequence */ + + + typedef enum FT_Frame_Op_ + { + ft_frame_end = 0, + ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ), + + ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ), + ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ), + + ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ), + ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ), + ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ), + ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ), + + ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ), + ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ), + ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ), + ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ), + + ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ), + ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ), + ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ), + ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ), + + ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ), + ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 ) + + } FT_Frame_Op; + + + typedef struct FT_Frame_Field_ + { + FT_Byte value; + FT_Byte size; + FT_UShort offset; + + } FT_Frame_Field; + + + /* Construct an FT_Frame_Field out of a structure type and a field name. */ + /* The structure type must be set in the FT_STRUCTURE macro before */ + /* calling the FT_FRAME_START() macro. */ + /* */ +#define FT_FIELD_SIZE( f ) \ + (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f ) + +#define FT_FIELD_SIZE_DELTA( f ) \ + (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] ) + +#define FT_FIELD_OFFSET( f ) \ + (FT_UShort)( offsetof( FT_STRUCTURE, f ) ) + +#define FT_FRAME_FIELD( frame_op, field ) \ + { \ + frame_op, \ + FT_FIELD_SIZE( field ), \ + FT_FIELD_OFFSET( field ) \ + } + +#define FT_MAKE_EMPTY_FIELD( frame_op ) { frame_op, 0, 0 } + +#define FT_FRAME_START( size ) { ft_frame_start, 0, size } +#define FT_FRAME_END { ft_frame_end, 0, 0 } + +#define FT_FRAME_LONG( f ) FT_FRAME_FIELD( ft_frame_long_be, f ) +#define FT_FRAME_ULONG( f ) FT_FRAME_FIELD( ft_frame_ulong_be, f ) +#define FT_FRAME_SHORT( f ) FT_FRAME_FIELD( ft_frame_short_be, f ) +#define FT_FRAME_USHORT( f ) FT_FRAME_FIELD( ft_frame_ushort_be, f ) +#define FT_FRAME_OFF3( f ) FT_FRAME_FIELD( ft_frame_off3_be, f ) +#define FT_FRAME_UOFF3( f ) FT_FRAME_FIELD( ft_frame_uoff3_be, f ) +#define FT_FRAME_BYTE( f ) FT_FRAME_FIELD( ft_frame_byte, f ) +#define FT_FRAME_CHAR( f ) FT_FRAME_FIELD( ft_frame_schar, f ) + +#define FT_FRAME_LONG_LE( f ) FT_FRAME_FIELD( ft_frame_long_le, f ) +#define FT_FRAME_ULONG_LE( f ) FT_FRAME_FIELD( ft_frame_ulong_le, f ) +#define FT_FRAME_SHORT_LE( f ) FT_FRAME_FIELD( ft_frame_short_le, f ) +#define FT_FRAME_USHORT_LE( f ) FT_FRAME_FIELD( ft_frame_ushort_le, f ) +#define FT_FRAME_OFF3_LE( f ) FT_FRAME_FIELD( ft_frame_off3_le, f ) +#define FT_FRAME_UOFF3_LE( f ) FT_FRAME_FIELD( ft_frame_uoff3_le, f ) + +#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 } +#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 } +#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 } + +#define FT_FRAME_BYTES( field, count ) \ + { \ + ft_frame_bytes, \ + count, \ + FT_FIELD_OFFSET( field ) \ + } + +#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 } + + + /*************************************************************************/ + /* */ + /* Integer extraction macros -- the `buffer' parameter must ALWAYS be of */ + /* type `char*' or equivalent (1-byte elements). */ + /* */ + +#define FT_BYTE_( p, i ) ( ((const FT_Byte*)(p))[(i)] ) + +#define FT_INT16( x ) ( (FT_Int16)(x) ) +#define FT_UINT16( x ) ( (FT_UInt16)(x) ) +#define FT_INT32( x ) ( (FT_Int32)(x) ) +#define FT_UINT32( x ) ( (FT_UInt32)(x) ) + + +#define FT_BYTE_U16( p, i, s ) ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) ) +#define FT_BYTE_U32( p, i, s ) ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) ) + + +#define FT_PEEK_SHORT( p ) FT_INT16( FT_BYTE_U16( p, 0, 8) | \ + FT_BYTE_U16( p, 1, 0) ) + +#define FT_PEEK_USHORT( p ) FT_UINT16( FT_BYTE_U16( p, 0, 8 ) | \ + FT_BYTE_U16( p, 1, 0 ) ) + +#define FT_PEEK_LONG( p ) FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) | \ + FT_BYTE_U32( p, 3, 0 ) ) + +#define FT_PEEK_ULONG( p ) FT_UINT32( FT_BYTE_U32( p, 0, 24 ) | \ + FT_BYTE_U32( p, 1, 16 ) | \ + FT_BYTE_U32( p, 2, 8 ) | \ + FT_BYTE_U32( p, 3, 0 ) ) + +#define FT_PEEK_OFF3( p ) FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 2, 0 ) ) + +#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 2, 0 ) ) + +#define FT_PEEK_SHORT_LE( p ) FT_INT16( FT_BYTE_U16( p, 1, 8 ) | \ + FT_BYTE_U16( p, 0, 0 ) ) + +#define FT_PEEK_USHORT_LE( p ) FT_UINT16( FT_BYTE_U16( p, 1, 8 ) | \ + FT_BYTE_U16( p, 0, 0 ) ) + +#define FT_PEEK_LONG_LE( p ) FT_INT32( FT_BYTE_U32( p, 3, 24 ) | \ + FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_ULONG_LE( p ) FT_UINT32( FT_BYTE_U32( p, 3, 24 ) | \ + FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + +#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \ + FT_BYTE_U32( p, 1, 8 ) | \ + FT_BYTE_U32( p, 0, 0 ) ) + + +#define FT_NEXT_CHAR( buffer ) \ + ( (signed char)*buffer++ ) + +#define FT_NEXT_BYTE( buffer ) \ + ( (unsigned char)*buffer++ ) + +#define FT_NEXT_SHORT( buffer ) \ + ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) ) + +#define FT_NEXT_USHORT( buffer ) \ + ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) ) + +#define FT_NEXT_OFF3( buffer ) \ + ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) ) + +#define FT_NEXT_UOFF3( buffer ) \ + ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) ) + +#define FT_NEXT_LONG( buffer ) \ + ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) ) + +#define FT_NEXT_ULONG( buffer ) \ + ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) ) + + +#define FT_NEXT_SHORT_LE( buffer ) \ + ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) ) + +#define FT_NEXT_USHORT_LE( buffer ) \ + ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) ) + +#define FT_NEXT_OFF3_LE( buffer ) \ + ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) ) + +#define FT_NEXT_UOFF3_LE( buffer ) \ + ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) ) + +#define FT_NEXT_LONG_LE( buffer ) \ + ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) ) + +#define FT_NEXT_ULONG_LE( buffer ) \ + ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) ) + + + /*************************************************************************/ + /* */ + /* Each GET_xxxx() macro uses an implicit `stream' variable. */ + /* */ +#if 0 +#define FT_GET_MACRO( type ) FT_NEXT_ ## type ( stream->cursor ) + +#define FT_GET_CHAR() FT_GET_MACRO( CHAR ) +#define FT_GET_BYTE() FT_GET_MACRO( BYTE ) +#define FT_GET_SHORT() FT_GET_MACRO( SHORT ) +#define FT_GET_USHORT() FT_GET_MACRO( USHORT ) +#define FT_GET_OFF3() FT_GET_MACRO( OFF3 ) +#define FT_GET_UOFF3() FT_GET_MACRO( UOFF3 ) +#define FT_GET_LONG() FT_GET_MACRO( LONG ) +#define FT_GET_ULONG() FT_GET_MACRO( ULONG ) +#define FT_GET_TAG4() FT_GET_MACRO( ULONG ) + +#define FT_GET_SHORT_LE() FT_GET_MACRO( SHORT_LE ) +#define FT_GET_USHORT_LE() FT_GET_MACRO( USHORT_LE ) +#define FT_GET_LONG_LE() FT_GET_MACRO( LONG_LE ) +#define FT_GET_ULONG_LE() FT_GET_MACRO( ULONG_LE ) + +#else +#define FT_GET_MACRO( func, type ) ( (type)func( stream ) ) + +#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char ) +#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte ) +#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short ) +#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort ) +#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long ) +#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong ) +#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long ) +#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong ) +#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong ) + +#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short ) +#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort ) +#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long ) +#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong ) +#endif + +#define FT_READ_MACRO( func, type, var ) \ + ( var = (type)func( stream, &error ), \ + error != FT_Err_Ok ) + +#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var ) +#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var ) +#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var ) +#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var ) +#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var ) +#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var ) +#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var ) +#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var ) + +#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var ) +#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var ) +#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var ) +#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var ) + + +#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM + + /* initialize a stream for reading a regular system stream */ + FT_BASE( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ); + +#endif /* FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ + + + /* create a new (input) stream from an FT_Open_Args structure */ + FT_BASE( FT_Error ) + FT_Stream_New( FT_Library library, + const FT_Open_Args* args, + FT_Stream *astream ); + + /* free a stream */ + FT_BASE( void ) + FT_Stream_Free( FT_Stream stream, + FT_Int external ); + + /* initialize a stream for reading in-memory data */ + FT_BASE( void ) + FT_Stream_OpenMemory( FT_Stream stream, + const FT_Byte* base, + FT_ULong size ); + + /* close a stream (does not destroy the stream structure) */ + FT_BASE( void ) + FT_Stream_Close( FT_Stream stream ); + + + /* seek within a stream. position is relative to start of stream */ + FT_BASE( FT_Error ) + FT_Stream_Seek( FT_Stream stream, + FT_ULong pos ); + + /* skip bytes in a stream */ + FT_BASE( FT_Error ) + FT_Stream_Skip( FT_Stream stream, + FT_Long distance ); + + /* return current stream position */ + FT_BASE( FT_ULong ) + FT_Stream_Pos( FT_Stream stream ); + + /* read bytes from a stream into a user-allocated buffer, returns an */ + /* error if not all bytes could be read. */ + FT_BASE( FT_Error ) + FT_Stream_Read( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); + + /* read bytes from a stream at a given position */ + FT_BASE( FT_Error ) + FT_Stream_ReadAt( FT_Stream stream, + FT_ULong pos, + FT_Byte* buffer, + FT_ULong count ); + + /* try to read bytes at the end of a stream; return number of bytes */ + /* really available */ + FT_BASE( FT_ULong ) + FT_Stream_TryRead( FT_Stream stream, + FT_Byte* buffer, + FT_ULong count ); + + /* Enter a frame of `count' consecutive bytes in a stream. Returns an */ + /* error if the frame could not be read/accessed. The caller can use */ + /* the FT_Stream_Get_XXX functions to retrieve frame data without */ + /* error checks. */ + /* */ + /* You must _always_ call FT_Stream_ExitFrame() once you have entered */ + /* a stream frame! */ + /* */ + FT_BASE( FT_Error ) + FT_Stream_EnterFrame( FT_Stream stream, + FT_ULong count ); + + /* exit a stream frame */ + FT_BASE( void ) + FT_Stream_ExitFrame( FT_Stream stream ); + + /* Extract a stream frame. If the stream is disk-based, a heap block */ + /* is allocated and the frame bytes are read into it. If the stream */ + /* is memory-based, this function simply set a pointer to the data. */ + /* */ + /* Useful to optimize access to memory-based streams transparently. */ + /* */ + /* All extracted frames must be `freed' with a call to the function */ + /* FT_Stream_ReleaseFrame(). */ + /* */ + FT_BASE( FT_Error ) + FT_Stream_ExtractFrame( FT_Stream stream, + FT_ULong count, + FT_Byte** pbytes ); + + /* release an extract frame (see FT_Stream_ExtractFrame) */ + FT_BASE( void ) + FT_Stream_ReleaseFrame( FT_Stream stream, + FT_Byte** pbytes ); + + /* read a byte from an entered frame */ + FT_BASE( FT_Char ) + FT_Stream_GetChar( FT_Stream stream ); + + /* read a 16-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_UShort ) + FT_Stream_GetUShort( FT_Stream stream ); + + /* read a 24-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetUOffset( FT_Stream stream ); + + /* read a 32-bit big-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetULong( FT_Stream stream ); + + /* read a 16-bit little-endian unsigned integer from an entered frame */ + FT_BASE( FT_UShort ) + FT_Stream_GetUShortLE( FT_Stream stream ); + + /* read a 32-bit little-endian unsigned integer from an entered frame */ + FT_BASE( FT_ULong ) + FT_Stream_GetULongLE( FT_Stream stream ); + + + /* read a byte from a stream */ + FT_BASE( FT_Char ) + FT_Stream_ReadChar( FT_Stream stream, + FT_Error* error ); + + /* read a 16-bit big-endian unsigned integer from a stream */ + FT_BASE( FT_UShort ) + FT_Stream_ReadUShort( FT_Stream stream, + FT_Error* error ); + + /* read a 24-bit big-endian unsigned integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadUOffset( FT_Stream stream, + FT_Error* error ); + + /* read a 32-bit big-endian integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadULong( FT_Stream stream, + FT_Error* error ); + + /* read a 16-bit little-endian unsigned integer from a stream */ + FT_BASE( FT_UShort ) + FT_Stream_ReadUShortLE( FT_Stream stream, + FT_Error* error ); + + /* read a 32-bit little-endian unsigned integer from a stream */ + FT_BASE( FT_ULong ) + FT_Stream_ReadULongLE( FT_Stream stream, + FT_Error* error ); + + /* Read a structure from a stream. The structure must be described */ + /* by an array of FT_Frame_Field records. */ + FT_BASE( FT_Error ) + FT_Stream_ReadFields( FT_Stream stream, + const FT_Frame_Field* fields, + void* structure ); + + +#define FT_STREAM_POS() \ + FT_Stream_Pos( stream ) + +#define FT_STREAM_SEEK( position ) \ + FT_SET_ERROR( FT_Stream_Seek( stream, \ + (FT_ULong)(position) ) ) + +#define FT_STREAM_SKIP( distance ) \ + FT_SET_ERROR( FT_Stream_Skip( stream, \ + (FT_Long)(distance) ) ) + +#define FT_STREAM_READ( buffer, count ) \ + FT_SET_ERROR( FT_Stream_Read( stream, \ + (FT_Byte*)(buffer), \ + (FT_ULong)(count) ) ) + +#define FT_STREAM_READ_AT( position, buffer, count ) \ + FT_SET_ERROR( FT_Stream_ReadAt( stream, \ + (FT_ULong)(position), \ + (FT_Byte*)buffer, \ + (FT_ULong)(count) ) ) + +#define FT_STREAM_READ_FIELDS( fields, object ) \ + FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) ) + + +#define FT_FRAME_ENTER( size ) \ + FT_SET_ERROR( \ + FT_DEBUG_INNER( FT_Stream_EnterFrame( stream, \ + (FT_ULong)(size) ) ) ) + +#define FT_FRAME_EXIT() \ + FT_DEBUG_INNER( FT_Stream_ExitFrame( stream ) ) + +#define FT_FRAME_EXTRACT( size, bytes ) \ + FT_SET_ERROR( \ + FT_DEBUG_INNER( FT_Stream_ExtractFrame( stream, \ + (FT_ULong)(size), \ + (FT_Byte**)&(bytes) ) ) ) + +#define FT_FRAME_RELEASE( bytes ) \ + FT_DEBUG_INNER( FT_Stream_ReleaseFrame( stream, \ + (FT_Byte**)&(bytes) ) ) + + +FT_END_HEADER + +#endif /* __FTSTREAM_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/fttrace.h b/lib/windows64/include/freetype/internal/fttrace.h new file mode 100644 index 0000000..9d28d21 --- /dev/null +++ b/lib/windows64/include/freetype/internal/fttrace.h @@ -0,0 +1,154 @@ +/***************************************************************************/ +/* */ +/* fttrace.h */ +/* */ +/* Tracing handling (specification only). */ +/* */ +/* Copyright 2002-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /* definitions of trace levels for FreeType 2 */ + + /* the first level must always be `trace_any' */ +FT_TRACE_DEF( any ) + + /* base components */ +FT_TRACE_DEF( calc ) /* calculations (ftcalc.c) */ +FT_TRACE_DEF( memory ) /* memory manager (ftobjs.c) */ +FT_TRACE_DEF( stream ) /* stream manager (ftstream.c) */ +FT_TRACE_DEF( io ) /* i/o interface (ftsystem.c) */ +FT_TRACE_DEF( list ) /* list management (ftlist.c) */ +FT_TRACE_DEF( init ) /* initialization (ftinit.c) */ +FT_TRACE_DEF( objs ) /* base objects (ftobjs.c) */ +FT_TRACE_DEF( outline ) /* outline management (ftoutln.c) */ +FT_TRACE_DEF( glyph ) /* glyph management (ftglyph.c) */ +FT_TRACE_DEF( gloader ) /* glyph loader (ftgloadr.c) */ + +FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */ +FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */ +FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */ +FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */ +FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */ +FT_TRACE_DEF( bitmap ) /* bitmap checksum (ftobjs.c) */ + + /* Cache sub-system */ +FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */ + + /* SFNT driver components */ +FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */ +FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */ +FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */ +FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */ +FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */ +FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */ +FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */ +FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */ +FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */ + + /* TrueType driver components */ +FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */ +FT_TRACE_DEF( ttgload ) /* TT glyph loader (ttgload.c) */ +FT_TRACE_DEF( ttinterp ) /* bytecode interpreter (ttinterp.c) */ +FT_TRACE_DEF( ttobjs ) /* TT objects manager (ttobjs.c) */ +FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */ +FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */ + + /* Type 1 driver components */ +FT_TRACE_DEF( t1afm ) +FT_TRACE_DEF( t1driver ) +FT_TRACE_DEF( t1gload ) +FT_TRACE_DEF( t1hint ) +FT_TRACE_DEF( t1load ) +FT_TRACE_DEF( t1objs ) +FT_TRACE_DEF( t1parse ) + + /* PostScript helper module `psaux' */ +FT_TRACE_DEF( t1decode ) +FT_TRACE_DEF( psobjs ) +FT_TRACE_DEF( psconv ) + + /* PostScript hinting module `pshinter' */ +FT_TRACE_DEF( pshrec ) +FT_TRACE_DEF( pshalgo1 ) +FT_TRACE_DEF( pshalgo2 ) + + /* Type 2 driver components */ +FT_TRACE_DEF( cffdriver ) +FT_TRACE_DEF( cffgload ) +FT_TRACE_DEF( cffload ) +FT_TRACE_DEF( cffobjs ) +FT_TRACE_DEF( cffparse ) + +FT_TRACE_DEF( cf2blues ) +FT_TRACE_DEF( cf2hints ) +FT_TRACE_DEF( cf2interp ) + + /* Type 42 driver component */ +FT_TRACE_DEF( t42 ) + + /* CID driver components */ +FT_TRACE_DEF( cidafm ) +FT_TRACE_DEF( ciddriver ) +FT_TRACE_DEF( cidgload ) +FT_TRACE_DEF( cidload ) +FT_TRACE_DEF( cidobjs ) +FT_TRACE_DEF( cidparse ) + + /* Windows font component */ +FT_TRACE_DEF( winfnt ) + + /* PCF font components */ +FT_TRACE_DEF( pcfdriver ) +FT_TRACE_DEF( pcfread ) + + /* BDF font components */ +FT_TRACE_DEF( bdfdriver ) +FT_TRACE_DEF( bdflib ) + + /* PFR font component */ +FT_TRACE_DEF( pfr ) + + /* OpenType validation components */ +FT_TRACE_DEF( otvmodule ) +FT_TRACE_DEF( otvcommon ) +FT_TRACE_DEF( otvbase ) +FT_TRACE_DEF( otvgdef ) +FT_TRACE_DEF( otvgpos ) +FT_TRACE_DEF( otvgsub ) +FT_TRACE_DEF( otvjstf ) +FT_TRACE_DEF( otvmath ) + + /* TrueTypeGX/AAT validation components */ +FT_TRACE_DEF( gxvmodule ) +FT_TRACE_DEF( gxvcommon ) +FT_TRACE_DEF( gxvfeat ) +FT_TRACE_DEF( gxvmort ) +FT_TRACE_DEF( gxvmorx ) +FT_TRACE_DEF( gxvbsln ) +FT_TRACE_DEF( gxvjust ) +FT_TRACE_DEF( gxvkern ) +FT_TRACE_DEF( gxvopbd ) +FT_TRACE_DEF( gxvtrak ) +FT_TRACE_DEF( gxvprop ) +FT_TRACE_DEF( gxvlcar ) + + /* autofit components */ +FT_TRACE_DEF( afmodule ) +FT_TRACE_DEF( afhints ) +FT_TRACE_DEF( afcjk ) +FT_TRACE_DEF( aflatin ) +FT_TRACE_DEF( aflatin2 ) +FT_TRACE_DEF( afwarp ) +FT_TRACE_DEF( afharfbuzz ) +FT_TRACE_DEF( afglobal ) + +/* END */ diff --git a/lib/windows64/include/freetype/internal/ftvalid.h b/lib/windows64/include/freetype/internal/ftvalid.h new file mode 100644 index 0000000..9cda6ee --- /dev/null +++ b/lib/windows64/include/freetype/internal/ftvalid.h @@ -0,0 +1,159 @@ +/***************************************************************************/ +/* */ +/* ftvalid.h */ +/* */ +/* FreeType validation support (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTVALID_H__ +#define __FTVALID_H__ + +#include <ft2build.h> +#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */ + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** ****/ + /**** V A L I D A T I O N ****/ + /**** ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* handle to a validation object */ + typedef struct FT_ValidatorRec_ volatile* FT_Validator; + + + /*************************************************************************/ + /* */ + /* There are three distinct validation levels defined here: */ + /* */ + /* FT_VALIDATE_DEFAULT :: */ + /* A table that passes this validation level can be used reliably by */ + /* FreeType. It generally means that all offsets have been checked to */ + /* prevent out-of-bound reads, that array counts are correct, etc. */ + /* */ + /* FT_VALIDATE_TIGHT :: */ + /* A table that passes this validation level can be used reliably and */ + /* doesn't contain invalid data. For example, a charmap table that */ + /* returns invalid glyph indices will not pass, even though it can */ + /* be used with FreeType in default mode (the library will simply */ + /* return an error later when trying to load the glyph). */ + /* */ + /* It also checks that fields which must be a multiple of 2, 4, or 8, */ + /* don't have incorrect values, etc. */ + /* */ + /* FT_VALIDATE_PARANOID :: */ + /* Only for font debugging. Checks that a table follows the */ + /* specification by 100%. Very few fonts will be able to pass this */ + /* level anyway but it can be useful for certain tools like font */ + /* editors/converters. */ + /* */ + typedef enum FT_ValidationLevel_ + { + FT_VALIDATE_DEFAULT = 0, + FT_VALIDATE_TIGHT, + FT_VALIDATE_PARANOID + + } FT_ValidationLevel; + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + /* We disable the warning `structure was padded due to */ + /* __declspec(align())' in order to compile cleanly with */ + /* the maximum level of warnings. */ +#pragma warning( push ) +#pragma warning( disable : 4324 ) +#endif /* _MSC_VER */ + + /* validator structure */ + typedef struct FT_ValidatorRec_ + { + ft_jmp_buf jump_buffer; /* used for exception handling */ + + const FT_Byte* base; /* address of table in memory */ + const FT_Byte* limit; /* `base' + sizeof(table) in memory */ + FT_ValidationLevel level; /* validation level */ + FT_Error error; /* error returned. 0 means success */ + + } FT_ValidatorRec; + +#if defined( _MSC_VER ) +#pragma warning( pop ) +#endif + +#define FT_VALIDATOR( x ) ( (FT_Validator)( x ) ) + + + FT_BASE( void ) + ft_validator_init( FT_Validator valid, + const FT_Byte* base, + const FT_Byte* limit, + FT_ValidationLevel level ); + + /* Do not use this. It's broken and will cause your validator to crash */ + /* if you run it on an invalid font. */ + FT_BASE( FT_Int ) + ft_validator_run( FT_Validator valid ); + + /* Sets the error field in a validator, then calls `longjmp' to return */ + /* to high-level caller. Using `setjmp/longjmp' avoids many stupid */ + /* error checks within the validation routines. */ + /* */ + FT_BASE( void ) + ft_validator_error( FT_Validator valid, + FT_Error error ); + + + /* Calls ft_validate_error. Assumes that the `valid' local variable */ + /* holds a pointer to the current validator object. */ + /* */ +#define FT_INVALID( _error ) FT_INVALID_( _error ) +#define FT_INVALID_( _error ) \ + ft_validator_error( valid, FT_THROW( _error ) ) + + /* called when a broken table is detected */ +#define FT_INVALID_TOO_SHORT \ + FT_INVALID( Invalid_Table ) + + /* called when an invalid offset is detected */ +#define FT_INVALID_OFFSET \ + FT_INVALID( Invalid_Offset ) + + /* called when an invalid format/value is detected */ +#define FT_INVALID_FORMAT \ + FT_INVALID( Invalid_Table ) + + /* called when an invalid glyph index is detected */ +#define FT_INVALID_GLYPH_ID \ + FT_INVALID( Invalid_Glyph_Index ) + + /* called when an invalid field value is detected */ +#define FT_INVALID_DATA \ + FT_INVALID( Invalid_Table ) + + +FT_END_HEADER + +#endif /* __FTVALID_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/internal.h b/lib/windows64/include/freetype/internal/internal.h new file mode 100644 index 0000000..1c1fd0e --- /dev/null +++ b/lib/windows64/include/freetype/internal/internal.h @@ -0,0 +1,63 @@ +/***************************************************************************/ +/* */ +/* internal.h */ +/* */ +/* Internal header files (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This file is automatically included by `ft2build.h'. */ + /* Do not include it manually! */ + /* */ + /*************************************************************************/ + + +#define FT_INTERNAL_OBJECTS_H <internal/ftobjs.h> +#define FT_INTERNAL_PIC_H <internal/ftpic.h> +#define FT_INTERNAL_STREAM_H <internal/ftstream.h> +#define FT_INTERNAL_MEMORY_H <internal/ftmemory.h> +#define FT_INTERNAL_DEBUG_H <internal/ftdebug.h> +#define FT_INTERNAL_CALC_H <internal/ftcalc.h> +#define FT_INTERNAL_DRIVER_H <internal/ftdriver.h> +#define FT_INTERNAL_TRACE_H <internal/fttrace.h> +#define FT_INTERNAL_GLYPH_LOADER_H <internal/ftgloadr.h> +#define FT_INTERNAL_SFNT_H <internal/sfnt.h> +#define FT_INTERNAL_SERVICE_H <internal/ftserv.h> +#define FT_INTERNAL_RFORK_H <internal/ftrfork.h> +#define FT_INTERNAL_VALIDATE_H <internal/ftvalid.h> + +#define FT_INTERNAL_TRUETYPE_TYPES_H <internal/tttypes.h> +#define FT_INTERNAL_TYPE1_TYPES_H <internal/t1types.h> + +#define FT_INTERNAL_POSTSCRIPT_AUX_H <internal/psaux.h> +#define FT_INTERNAL_POSTSCRIPT_HINTS_H <internal/pshints.h> +#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H <internal/psglobal.h> + +#define FT_INTERNAL_AUTOHINT_H <internal/autohint.h> + + +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + + /* We disable the warning `conditional expression is constant' here */ + /* in order to compile cleanly with the maximum level of warnings. */ + /* In particular, the warning complains about stuff like `while(0)' */ + /* which is very useful in macro definitions. There is no benefit */ + /* in having it enabled. */ +#pragma warning( disable : 4127 ) + +#endif /* _MSC_VER */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/psaux.h b/lib/windows64/include/freetype/internal/psaux.h new file mode 100644 index 0000000..1c5f784 --- /dev/null +++ b/lib/windows64/include/freetype/internal/psaux.h @@ -0,0 +1,877 @@ +/***************************************************************************/ +/* */ +/* psaux.h */ +/* */ +/* Auxiliary functions and data structures related to PostScript fonts */ +/* (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSAUX_H__ +#define __PSAUX_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_TYPE1_TYPES_H +#include FT_SERVICE_POSTSCRIPT_CMAPS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1_TABLE *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct PS_TableRec_* PS_Table; + typedef const struct PS_Table_FuncsRec_* PS_Table_Funcs; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Table_FuncsRec */ + /* */ + /* <Description> */ + /* A set of function pointers to manage PS_Table objects. */ + /* */ + /* <Fields> */ + /* table_init :: Used to initialize a table. */ + /* */ + /* table_done :: Finalizes resp. destroy a given table. */ + /* */ + /* table_add :: Adds a new object to a table. */ + /* */ + /* table_release :: Releases table data, then finalizes it. */ + /* */ + typedef struct PS_Table_FuncsRec_ + { + FT_Error + (*init)( PS_Table table, + FT_Int count, + FT_Memory memory ); + + void + (*done)( PS_Table table ); + + FT_Error + (*add)( PS_Table table, + FT_Int idx, + void* object, + FT_UInt length ); + + void + (*release)( PS_Table table ); + + } PS_Table_FuncsRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_TableRec */ + /* */ + /* <Description> */ + /* A PS_Table is a simple object used to store an array of objects in */ + /* a single memory block. */ + /* */ + /* <Fields> */ + /* block :: The address in memory of the growheap's block. This */ + /* can change between two object adds, due to */ + /* reallocation. */ + /* */ + /* cursor :: The current top of the grow heap within its block. */ + /* */ + /* capacity :: The current size of the heap block. Increments by */ + /* 1kByte chunks. */ + /* */ + /* init :: Set to 0xDEADBEEF if `elements' and `lengths' have */ + /* been allocated. */ + /* */ + /* max_elems :: The maximum number of elements in table. */ + /* */ + /* num_elems :: The current number of elements in table. */ + /* */ + /* elements :: A table of element addresses within the block. */ + /* */ + /* lengths :: A table of element sizes within the block. */ + /* */ + /* memory :: The object used for memory operations */ + /* (alloc/realloc). */ + /* */ + /* funcs :: A table of method pointers for this object. */ + /* */ + typedef struct PS_TableRec_ + { + FT_Byte* block; /* current memory block */ + FT_Offset cursor; /* current cursor in memory block */ + FT_Offset capacity; /* current size of memory block */ + FT_ULong init; + + FT_Int max_elems; + FT_Int num_elems; + FT_Byte** elements; /* addresses of table elements */ + FT_UInt* lengths; /* lengths of table elements */ + + FT_Memory memory; + PS_Table_FuncsRec funcs; + + } PS_TableRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 FIELDS & TOKENS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PS_ParserRec_* PS_Parser; + + typedef struct T1_TokenRec_* T1_Token; + + typedef struct T1_FieldRec_* T1_Field; + + + /* simple enumeration type used to identify token types */ + typedef enum T1_TokenType_ + { + T1_TOKEN_TYPE_NONE = 0, + T1_TOKEN_TYPE_ANY, + T1_TOKEN_TYPE_STRING, + T1_TOKEN_TYPE_ARRAY, + T1_TOKEN_TYPE_KEY, /* aka `name' */ + + /* do not remove */ + T1_TOKEN_TYPE_MAX + + } T1_TokenType; + + + /* a simple structure used to identify tokens */ + typedef struct T1_TokenRec_ + { + FT_Byte* start; /* first character of token in input stream */ + FT_Byte* limit; /* first character after the token */ + T1_TokenType type; /* type of token */ + + } T1_TokenRec; + + + /* enumeration type used to identify object fields */ + typedef enum T1_FieldType_ + { + T1_FIELD_TYPE_NONE = 0, + T1_FIELD_TYPE_BOOL, + T1_FIELD_TYPE_INTEGER, + T1_FIELD_TYPE_FIXED, + T1_FIELD_TYPE_FIXED_1000, + T1_FIELD_TYPE_STRING, + T1_FIELD_TYPE_KEY, + T1_FIELD_TYPE_BBOX, + T1_FIELD_TYPE_MM_BBOX, + T1_FIELD_TYPE_INTEGER_ARRAY, + T1_FIELD_TYPE_FIXED_ARRAY, + T1_FIELD_TYPE_CALLBACK, + + /* do not remove */ + T1_FIELD_TYPE_MAX + + } T1_FieldType; + + + typedef enum T1_FieldLocation_ + { + T1_FIELD_LOCATION_CID_INFO, + T1_FIELD_LOCATION_FONT_DICT, + T1_FIELD_LOCATION_FONT_EXTRA, + T1_FIELD_LOCATION_FONT_INFO, + T1_FIELD_LOCATION_PRIVATE, + T1_FIELD_LOCATION_BBOX, + T1_FIELD_LOCATION_LOADER, + T1_FIELD_LOCATION_FACE, + T1_FIELD_LOCATION_BLEND, + + /* do not remove */ + T1_FIELD_LOCATION_MAX + + } T1_FieldLocation; + + + typedef void + (*T1_Field_ParseFunc)( FT_Face face, + FT_Pointer parser ); + + + /* structure type used to model object fields */ + typedef struct T1_FieldRec_ + { + const char* ident; /* field identifier */ + T1_FieldLocation location; + T1_FieldType type; /* type of field */ + T1_Field_ParseFunc reader; + FT_UInt offset; /* offset of field in object */ + FT_Byte size; /* size of field in bytes */ + FT_UInt array_max; /* maximum number of elements for */ + /* array */ + FT_UInt count_offset; /* offset of element count for */ + /* arrays; must not be zero if in */ + /* use -- in other words, a */ + /* `num_FOO' element must not */ + /* start the used structure if we */ + /* parse a `FOO' array */ + FT_UInt dict; /* where we expect it */ + } T1_FieldRec; + +#define T1_FIELD_DICT_FONTDICT ( 1 << 0 ) /* also FontInfo and FDArray */ +#define T1_FIELD_DICT_PRIVATE ( 1 << 1 ) + + + +#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE( _fname ), \ + 0, 0, \ + _dict \ + }, + +#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \ + { \ + _ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \ + (T1_Field_ParseFunc)_reader, \ + 0, 0, \ + 0, 0, \ + _dict \ + }, + +#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE_DELTA( _fname ), \ + _max, \ + FT_FIELD_OFFSET( num_ ## _fname ), \ + _dict \ + }, + +#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \ + { \ + _ident, T1CODE, _type, \ + 0, \ + FT_FIELD_OFFSET( _fname ), \ + FT_FIELD_SIZE_DELTA( _fname ), \ + _max, 0, \ + _dict \ + }, + + +#define T1_FIELD_BOOL( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname, _dict ) + +#define T1_FIELD_NUM( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname, _dict ) + +#define T1_FIELD_FIXED( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname, _dict ) + +#define T1_FIELD_FIXED_1000( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname, \ + _dict ) + +#define T1_FIELD_STRING( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname, _dict ) + +#define T1_FIELD_KEY( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname, _dict ) + +#define T1_FIELD_BBOX( _ident, _fname, _dict ) \ + T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname, _dict ) + + +#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax, _dict ) \ + T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ + _fname, _fmax, _dict ) + +#define T1_FIELD_CALLBACK( _ident, _name, _dict ) \ + T1_NEW_CALLBACK_FIELD( _ident, _name, _dict ) + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 PARSER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef const struct PS_Parser_FuncsRec_* PS_Parser_Funcs; + + typedef struct PS_Parser_FuncsRec_ + { + void + (*init)( PS_Parser parser, + FT_Byte* base, + FT_Byte* limit, + FT_Memory memory ); + + void + (*done)( PS_Parser parser ); + + void + (*skip_spaces)( PS_Parser parser ); + void + (*skip_PS_token)( PS_Parser parser ); + + FT_Long + (*to_int)( PS_Parser parser ); + FT_Fixed + (*to_fixed)( PS_Parser parser, + FT_Int power_ten ); + + FT_Error + (*to_bytes)( PS_Parser parser, + FT_Byte* bytes, + FT_Offset max_bytes, + FT_ULong* pnum_bytes, + FT_Bool delimiters ); + + FT_Int + (*to_coord_array)( PS_Parser parser, + FT_Int max_coords, + FT_Short* coords ); + FT_Int + (*to_fixed_array)( PS_Parser parser, + FT_Int max_values, + FT_Fixed* values, + FT_Int power_ten ); + + void + (*to_token)( PS_Parser parser, + T1_Token token ); + void + (*to_token_array)( PS_Parser parser, + T1_Token tokens, + FT_UInt max_tokens, + FT_Int* pnum_tokens ); + + FT_Error + (*load_field)( PS_Parser parser, + const T1_Field field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + FT_Error + (*load_field_table)( PS_Parser parser, + const T1_Field field, + void** objects, + FT_UInt max_objects, + FT_ULong* pflags ); + + } PS_Parser_FuncsRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_ParserRec */ + /* */ + /* <Description> */ + /* A PS_Parser is an object used to parse a Type 1 font very quickly. */ + /* */ + /* <Fields> */ + /* cursor :: The current position in the text. */ + /* */ + /* base :: Start of the processed text. */ + /* */ + /* limit :: End of the processed text. */ + /* */ + /* error :: The last error returned. */ + /* */ + /* memory :: The object used for memory operations (alloc/realloc). */ + /* */ + /* funcs :: A table of functions for the parser. */ + /* */ + typedef struct PS_ParserRec_ + { + FT_Byte* cursor; + FT_Byte* base; + FT_Byte* limit; + FT_Error error; + FT_Memory memory; + + PS_Parser_FuncsRec funcs; + + } PS_ParserRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 BUILDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct T1_BuilderRec_* T1_Builder; + + + typedef FT_Error + (*T1_Builder_Check_Points_Func)( T1_Builder builder, + FT_Int count ); + + typedef void + (*T1_Builder_Add_Point_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y, + FT_Byte flag ); + + typedef FT_Error + (*T1_Builder_Add_Point1_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y ); + + typedef FT_Error + (*T1_Builder_Add_Contour_Func)( T1_Builder builder ); + + typedef FT_Error + (*T1_Builder_Start_Point_Func)( T1_Builder builder, + FT_Pos x, + FT_Pos y ); + + typedef void + (*T1_Builder_Close_Contour_Func)( T1_Builder builder ); + + + typedef const struct T1_Builder_FuncsRec_* T1_Builder_Funcs; + + typedef struct T1_Builder_FuncsRec_ + { + void + (*init)( T1_Builder builder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Bool hinting ); + + void + (*done)( T1_Builder builder ); + + T1_Builder_Check_Points_Func check_points; + T1_Builder_Add_Point_Func add_point; + T1_Builder_Add_Point1_Func add_point1; + T1_Builder_Add_Contour_Func add_contour; + T1_Builder_Start_Point_Func start_point; + T1_Builder_Close_Contour_Func close_contour; + + } T1_Builder_FuncsRec; + + + /* an enumeration type to handle charstring parsing states */ + typedef enum T1_ParseState_ + { + T1_Parse_Start, + T1_Parse_Have_Width, + T1_Parse_Have_Moveto, + T1_Parse_Have_Path + + } T1_ParseState; + + + /*************************************************************************/ + /* */ + /* <Structure> */ + /* T1_BuilderRec */ + /* */ + /* <Description> */ + /* A structure used during glyph loading to store its outline. */ + /* */ + /* <Fields> */ + /* memory :: The current memory object. */ + /* */ + /* face :: The current face object. */ + /* */ + /* glyph :: The current glyph slot. */ + /* */ + /* loader :: XXX */ + /* */ + /* base :: The base glyph outline. */ + /* */ + /* current :: The current glyph outline. */ + /* */ + /* max_points :: maximum points in builder outline */ + /* */ + /* max_contours :: Maximum number of contours in builder outline. */ + /* */ + /* pos_x :: The horizontal translation (if composite glyph). */ + /* */ + /* pos_y :: The vertical translation (if composite glyph). */ + /* */ + /* left_bearing :: The left side bearing point. */ + /* */ + /* advance :: The horizontal advance vector. */ + /* */ + /* bbox :: Unused. */ + /* */ + /* parse_state :: An enumeration which controls the charstring */ + /* parsing state. */ + /* */ + /* load_points :: If this flag is not set, no points are loaded. */ + /* */ + /* no_recurse :: Set but not used. */ + /* */ + /* metrics_only :: A boolean indicating that we only want to compute */ + /* the metrics of a given glyph, not load all of its */ + /* points. */ + /* */ + /* funcs :: An array of function pointers for the builder. */ + /* */ + typedef struct T1_BuilderRec_ + { + FT_Memory memory; + FT_Face face; + FT_GlyphSlot glyph; + FT_GlyphLoader loader; + FT_Outline* base; + FT_Outline* current; + + FT_Pos pos_x; + FT_Pos pos_y; + + FT_Vector left_bearing; + FT_Vector advance; + + FT_BBox bbox; /* bounding box */ + T1_ParseState parse_state; + FT_Bool load_points; + FT_Bool no_recurse; + + FT_Bool metrics_only; + + void* hints_funcs; /* hinter-specific */ + void* hints_globals; /* hinter-specific */ + + T1_Builder_FuncsRec funcs; + + } T1_BuilderRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** T1 DECODER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#if 0 + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 8 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 32 + +#endif /* 0 */ + + + typedef struct T1_Decoder_ZoneRec_ + { + FT_Byte* cursor; + FT_Byte* base; + FT_Byte* limit; + + } T1_Decoder_ZoneRec, *T1_Decoder_Zone; + + + typedef struct T1_DecoderRec_* T1_Decoder; + typedef const struct T1_Decoder_FuncsRec_* T1_Decoder_Funcs; + + + typedef FT_Error + (*T1_Decoder_Callback)( T1_Decoder decoder, + FT_UInt glyph_index ); + + + typedef struct T1_Decoder_FuncsRec_ + { + FT_Error + (*init)( T1_Decoder decoder, + FT_Face face, + FT_Size size, + FT_GlyphSlot slot, + FT_Byte** glyph_names, + PS_Blend blend, + FT_Bool hinting, + FT_Render_Mode hint_mode, + T1_Decoder_Callback callback ); + + void + (*done)( T1_Decoder decoder ); + + FT_Error + (*parse_charstrings)( T1_Decoder decoder, + FT_Byte* base, + FT_UInt len ); + + } T1_Decoder_FuncsRec; + + + typedef struct T1_DecoderRec_ + { + T1_BuilderRec builder; + + FT_Long stack[T1_MAX_CHARSTRINGS_OPERANDS]; + FT_Long* top; + + T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS + 1]; + T1_Decoder_Zone zone; + + FT_Service_PsCMaps psnames; /* for seac */ + FT_UInt num_glyphs; + FT_Byte** glyph_names; + + FT_Int lenIV; /* internal for sub routine calls */ + FT_Int num_subrs; + FT_Byte** subrs; + FT_UInt* subrs_len; /* array of subrs length (optional) */ + + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_Int flex_state; + FT_Int num_flex_vectors; + FT_Vector flex_vectors[7]; + + PS_Blend blend; /* for multiple master support */ + + FT_Render_Mode hint_mode; + + T1_Decoder_Callback parse_callback; + T1_Decoder_FuncsRec funcs; + + FT_Long* buildchar; + FT_UInt len_buildchar; + + FT_Bool seac; + + } T1_DecoderRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** AFM PARSER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct AFM_ParserRec_* AFM_Parser; + + typedef struct AFM_Parser_FuncsRec_ + { + FT_Error + (*init)( AFM_Parser parser, + FT_Memory memory, + FT_Byte* base, + FT_Byte* limit ); + + void + (*done)( AFM_Parser parser ); + + FT_Error + (*parse)( AFM_Parser parser ); + + } AFM_Parser_FuncsRec; + + + typedef struct AFM_StreamRec_* AFM_Stream; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* AFM_ParserRec */ + /* */ + /* <Description> */ + /* An AFM_Parser is a parser for the AFM files. */ + /* */ + /* <Fields> */ + /* memory :: The object used for memory operations (alloc and */ + /* realloc). */ + /* */ + /* stream :: This is an opaque object. */ + /* */ + /* FontInfo :: The result will be stored here. */ + /* */ + /* get_index :: A user provided function to get a glyph index by its */ + /* name. */ + /* */ + typedef struct AFM_ParserRec_ + { + FT_Memory memory; + AFM_Stream stream; + + AFM_FontInfo FontInfo; + + FT_Int + (*get_index)( const char* name, + FT_Offset len, + void* user_data ); + + void* user_data; + + } AFM_ParserRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** TYPE1 CHARMAPS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef const struct T1_CMap_ClassesRec_* T1_CMap_Classes; + + typedef struct T1_CMap_ClassesRec_ + { + FT_CMap_Class standard; + FT_CMap_Class expert; + FT_CMap_Class custom; + FT_CMap_Class unicode; + + } T1_CMap_ClassesRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PSAux Module Interface *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSAux_ServiceRec_ + { + /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */ + const PS_Table_FuncsRec* ps_table_funcs; + const PS_Parser_FuncsRec* ps_parser_funcs; + const T1_Builder_FuncsRec* t1_builder_funcs; + const T1_Decoder_FuncsRec* t1_decoder_funcs; + + void + (*t1_decrypt)( FT_Byte* buffer, + FT_Offset length, + FT_UShort seed ); + + T1_CMap_Classes t1_cmap_classes; + + /* fields after this comment line were added after version 2.1.10 */ + const AFM_Parser_FuncsRec* afm_parser_funcs; + + } PSAux_ServiceRec, *PSAux_Service; + + /* backwards-compatible type definition */ + typedef PSAux_ServiceRec PSAux_Interface; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** Some convenience functions *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + +#define IS_PS_NEWLINE( ch ) \ + ( (ch) == '\r' || \ + (ch) == '\n' ) + +#define IS_PS_SPACE( ch ) \ + ( (ch) == ' ' || \ + IS_PS_NEWLINE( ch ) || \ + (ch) == '\t' || \ + (ch) == '\f' || \ + (ch) == '\0' ) + +#define IS_PS_SPECIAL( ch ) \ + ( (ch) == '/' || \ + (ch) == '(' || (ch) == ')' || \ + (ch) == '<' || (ch) == '>' || \ + (ch) == '[' || (ch) == ']' || \ + (ch) == '{' || (ch) == '}' || \ + (ch) == '%' ) + +#define IS_PS_DELIM( ch ) \ + ( IS_PS_SPACE( ch ) || \ + IS_PS_SPECIAL( ch ) ) + +#define IS_PS_DIGIT( ch ) \ + ( (ch) >= '0' && (ch) <= '9' ) + +#define IS_PS_XDIGIT( ch ) \ + ( IS_PS_DIGIT( ch ) || \ + ( (ch) >= 'A' && (ch) <= 'F' ) || \ + ( (ch) >= 'a' && (ch) <= 'f' ) ) + +#define IS_PS_BASE85( ch ) \ + ( (ch) >= '!' && (ch) <= 'u' ) + +#define IS_PS_TOKEN( cur, limit, token ) \ + ( (char)(cur)[0] == (token)[0] && \ + ( (cur) + sizeof ( (token) ) == (limit) || \ + ( (cur) + sizeof( (token) ) < (limit) && \ + IS_PS_DELIM( (cur)[sizeof ( (token) ) - 1] ) ) ) && \ + ft_strncmp( (char*)(cur), (token), sizeof ( (token) ) - 1 ) == 0 ) + + +FT_END_HEADER + +#endif /* __PSAUX_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/pshints.h b/lib/windows64/include/freetype/internal/pshints.h new file mode 100644 index 0000000..12aaaba --- /dev/null +++ b/lib/windows64/include/freetype/internal/pshints.h @@ -0,0 +1,722 @@ +/***************************************************************************/ +/* */ +/* pshints.h */ +/* */ +/* Interface to Postscript-specific (Type 1 and Type 2) hints */ +/* recorders (specification only). These are used to support native */ +/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */ +/* */ +/* Copyright 2001-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __PSHINTS_H__ +#define __PSHINTS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_TYPE1_TABLES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** INTERNAL REPRESENTATION OF GLOBALS *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct PSH_GlobalsRec_* PSH_Globals; + + typedef FT_Error + (*PSH_Globals_NewFunc)( FT_Memory memory, + T1_Private* private_dict, + PSH_Globals* aglobals ); + + typedef void + (*PSH_Globals_SetScaleFunc)( PSH_Globals globals, + FT_Fixed x_scale, + FT_Fixed y_scale, + FT_Fixed x_delta, + FT_Fixed y_delta ); + + typedef void + (*PSH_Globals_DestroyFunc)( PSH_Globals globals ); + + + typedef struct PSH_Globals_FuncsRec_ + { + PSH_Globals_NewFunc create; + PSH_Globals_SetScaleFunc set_scale; + PSH_Globals_DestroyFunc destroy; + + } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 1 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * T1_Hints + * + * @description: + * This is a handle to an opaque structure used to record glyph hints + * from a Type 1 character glyph character string. + * + * The methods used to operate on this object are defined by the + * @T1_Hints_FuncsRec structure. Recording glyph hints is normally + * achieved through the following scheme: + * + * - Open a new hint recording session by calling the `open' method. + * This rewinds the recorder and prepare it for new input. + * + * - For each hint found in the glyph charstring, call the corresponding + * method (`stem', `stem3', or `reset'). Note that these functions do + * not return an error code. + * + * - Close the recording session by calling the `close' method. It + * returns an error code if the hints were invalid or something + * strange happened (e.g., memory shortage). + * + * The hints accumulated in the object can later be used by the + * PostScript hinter. + * + */ + typedef struct T1_HintsRec_* T1_Hints; + + + /************************************************************************* + * + * @type: + * T1_Hints_Funcs + * + * @description: + * A pointer to the @T1_Hints_FuncsRec structure that defines the API of + * a given @T1_Hints object. + * + */ + typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs; + + + /************************************************************************* + * + * @functype: + * T1_Hints_OpenFunc + * + * @description: + * A method of the @T1_Hints class used to prepare it for a new Type 1 + * hints recording session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * @note: + * You should always call the @T1_Hints_CloseFunc method in order to + * close an opened recording session. + * + */ + typedef void + (*T1_Hints_OpenFunc)( T1_Hints hints ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_SetStemFunc + * + * @description: + * A method of the @T1_Hints class used to record a new horizontal or + * vertical stem. This corresponds to the Type 1 `hstem' and `vstem' + * operators. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * dimension :: + * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). + * + * coords :: + * Array of 2 coordinates in 16.16 format, used as (position,length) + * stem descriptor. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * `coords[0]' is the absolute stem position (lowest coordinate); + * `coords[1]' is the length. + * + * The length can be negative, in which case it must be either -20 or + * -21. It is interpreted as a `ghost' stem, according to the Type 1 + * specification. + * + * If the length is -21 (corresponding to a bottom ghost stem), then + * the real stem position is `coords[0]+coords[1]'. + * + */ + typedef void + (*T1_Hints_SetStemFunc)( T1_Hints hints, + FT_UInt dimension, + FT_Fixed* coords ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_SetStem3Func + * + * @description: + * A method of the @T1_Hints class used to record three + * counter-controlled horizontal or vertical stems at once. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * dimension :: + * 0 for horizontal stems, 1 for vertical ones. + * + * coords :: + * An array of 6 values in 16.16 format, holding 3 (position,length) + * pairs for the counter-controlled stems. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * The lengths cannot be negative (ghost stems are never + * counter-controlled). + * + */ + typedef void + (*T1_Hints_SetStem3Func)( T1_Hints hints, + FT_UInt dimension, + FT_Fixed* coords ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_ResetFunc + * + * @description: + * A method of the @T1_Hints class used to reset the stems hints in a + * recording session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph in which the + * previously defined hints apply. + * + */ + typedef void + (*T1_Hints_ResetFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_CloseFunc + * + * @description: + * A method of the @T1_Hints class used to close a hint recording + * session. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * The error code is set to indicate that an error occurred during the + * recording session. + * + */ + typedef FT_Error + (*T1_Hints_CloseFunc)( T1_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T1_Hints_ApplyFunc + * + * @description: + * A method of the @T1_Hints class used to apply hints to the + * corresponding glyph outline. Must be called once all hints have been + * recorded. + * + * @input: + * hints :: + * A handle to the Type 1 hints recorder. + * + * outline :: + * A pointer to the target outline descriptor. + * + * globals :: + * The hinter globals for this font. + * + * hint_mode :: + * Hinting information. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * On input, all points within the outline are in font coordinates. On + * output, they are in 1/64th of pixels. + * + * The scaling transformation is taken from the `globals' object which + * must correspond to the same font as the glyph. + * + */ + typedef FT_Error + (*T1_Hints_ApplyFunc)( T1_Hints hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + + /************************************************************************* + * + * @struct: + * T1_Hints_FuncsRec + * + * @description: + * The structure used to provide the API to @T1_Hints objects. + * + * @fields: + * hints :: + * A handle to the T1 Hints recorder. + * + * open :: + * The function to open a recording session. + * + * close :: + * The function to close a recording session. + * + * stem :: + * The function to set a simple stem. + * + * stem3 :: + * The function to set counter-controlled stems. + * + * reset :: + * The function to reset stem hints. + * + * apply :: + * The function to apply the hints to the corresponding glyph outline. + * + */ + typedef struct T1_Hints_FuncsRec_ + { + T1_Hints hints; + T1_Hints_OpenFunc open; + T1_Hints_CloseFunc close; + T1_Hints_SetStemFunc stem; + T1_Hints_SetStem3Func stem3; + T1_Hints_ResetFunc reset; + T1_Hints_ApplyFunc apply; + + } T1_Hints_FuncsRec; + + + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** PUBLIC TYPE 2 HINTS RECORDER *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + + /************************************************************************* + * + * @type: + * T2_Hints + * + * @description: + * This is a handle to an opaque structure used to record glyph hints + * from a Type 2 character glyph character string. + * + * The methods used to operate on this object are defined by the + * @T2_Hints_FuncsRec structure. Recording glyph hints is normally + * achieved through the following scheme: + * + * - Open a new hint recording session by calling the `open' method. + * This rewinds the recorder and prepare it for new input. + * + * - For each hint found in the glyph charstring, call the corresponding + * method (`stems', `hintmask', `counters'). Note that these + * functions do not return an error code. + * + * - Close the recording session by calling the `close' method. It + * returns an error code if the hints were invalid or something + * strange happened (e.g., memory shortage). + * + * The hints accumulated in the object can later be used by the + * Postscript hinter. + * + */ + typedef struct T2_HintsRec_* T2_Hints; + + + /************************************************************************* + * + * @type: + * T2_Hints_Funcs + * + * @description: + * A pointer to the @T2_Hints_FuncsRec structure that defines the API of + * a given @T2_Hints object. + * + */ + typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs; + + + /************************************************************************* + * + * @functype: + * T2_Hints_OpenFunc + * + * @description: + * A method of the @T2_Hints class used to prepare it for a new Type 2 + * hints recording session. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * @note: + * You should always call the @T2_Hints_CloseFunc method in order to + * close an opened recording session. + * + */ + typedef void + (*T2_Hints_OpenFunc)( T2_Hints hints ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_StemsFunc + * + * @description: + * A method of the @T2_Hints class used to set the table of stems in + * either the vertical or horizontal dimension. Equivalent to the + * `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * dimension :: + * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). + * + * count :: + * The number of stems. + * + * coords :: + * An array of `count' (position,length) pairs in 16.16 format. + * + * @note: + * Use vertical coordinates (y) for horizontal stems (dim=0). Use + * horizontal coordinates (x) for vertical stems (dim=1). + * + * There are `2*count' elements in the `coords' array. Each even + * element is an absolute position in font units, each odd element is a + * length in font units. + * + * A length can be negative, in which case it must be either -20 or + * -21. It is interpreted as a `ghost' stem, according to the Type 1 + * specification. + * + */ + typedef void + (*T2_Hints_StemsFunc)( T2_Hints hints, + FT_UInt dimension, + FT_Int count, + FT_Fixed* coordinates ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_MaskFunc + * + * @description: + * A method of the @T2_Hints class used to set a given hintmask (this + * corresponds to the `hintmask' Type 2 operator). + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * The glyph index of the last point to which the previously defined + * or activated hints apply. + * + * bit_count :: + * The number of bits in the hint mask. + * + * bytes :: + * An array of bytes modelling the hint mask. + * + * @note: + * If the hintmask starts the charstring (before any glyph point + * definition), the value of `end_point' should be 0. + * + * `bit_count' is the number of meaningful bits in the `bytes' array; it + * must be equal to the total number of hints defined so far (i.e., + * horizontal+verticals). + * + * The `bytes' array can come directly from the Type 2 charstring and + * respects the same format. + * + */ + typedef void + (*T2_Hints_MaskFunc)( T2_Hints hints, + FT_UInt end_point, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_CounterFunc + * + * @description: + * A method of the @T2_Hints class used to set a given counter mask + * (this corresponds to the `hintmask' Type 2 operator). + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * A glyph index of the last point to which the previously defined or + * active hints apply. + * + * bit_count :: + * The number of bits in the hint mask. + * + * bytes :: + * An array of bytes modelling the hint mask. + * + * @note: + * If the hintmask starts the charstring (before any glyph point + * definition), the value of `end_point' should be 0. + * + * `bit_count' is the number of meaningful bits in the `bytes' array; it + * must be equal to the total number of hints defined so far (i.e., + * horizontal+verticals). + * + * The `bytes' array can come directly from the Type 2 charstring and + * respects the same format. + * + */ + typedef void + (*T2_Hints_CounterFunc)( T2_Hints hints, + FT_UInt bit_count, + const FT_Byte* bytes ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_CloseFunc + * + * @description: + * A method of the @T2_Hints class used to close a hint recording + * session. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * end_point :: + * The index of the last point in the input glyph. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * The error code is set to indicate that an error occurred during the + * recording session. + * + */ + typedef FT_Error + (*T2_Hints_CloseFunc)( T2_Hints hints, + FT_UInt end_point ); + + + /************************************************************************* + * + * @functype: + * T2_Hints_ApplyFunc + * + * @description: + * A method of the @T2_Hints class used to apply hints to the + * corresponding glyph outline. Must be called after the `close' + * method. + * + * @input: + * hints :: + * A handle to the Type 2 hints recorder. + * + * outline :: + * A pointer to the target outline descriptor. + * + * globals :: + * The hinter globals for this font. + * + * hint_mode :: + * Hinting information. + * + * @return: + * FreeType error code. 0 means success. + * + * @note: + * On input, all points within the outline are in font coordinates. On + * output, they are in 1/64th of pixels. + * + * The scaling transformation is taken from the `globals' object which + * must correspond to the same font than the glyph. + * + */ + typedef FT_Error + (*T2_Hints_ApplyFunc)( T2_Hints hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + + /************************************************************************* + * + * @struct: + * T2_Hints_FuncsRec + * + * @description: + * The structure used to provide the API to @T2_Hints objects. + * + * @fields: + * hints :: + * A handle to the T2 hints recorder object. + * + * open :: + * The function to open a recording session. + * + * close :: + * The function to close a recording session. + * + * stems :: + * The function to set the dimension's stems table. + * + * hintmask :: + * The function to set hint masks. + * + * counter :: + * The function to set counter masks. + * + * apply :: + * The function to apply the hints on the corresponding glyph outline. + * + */ + typedef struct T2_Hints_FuncsRec_ + { + T2_Hints hints; + T2_Hints_OpenFunc open; + T2_Hints_CloseFunc close; + T2_Hints_StemsFunc stems; + T2_Hints_MaskFunc hintmask; + T2_Hints_CounterFunc counter; + T2_Hints_ApplyFunc apply; + + } T2_Hints_FuncsRec; + + + /* */ + + + typedef struct PSHinter_Interface_ + { + PSH_Globals_Funcs (*get_globals_funcs)( FT_Module module ); + T1_Hints_Funcs (*get_t1_funcs) ( FT_Module module ); + T2_Hints_Funcs (*get_t2_funcs) ( FT_Module module ); + + } PSHinter_Interface; + + typedef PSHinter_Interface* PSHinter_Service; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_PSHINTER_INTERFACE( \ + class_, \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ ) \ + static const PSHinter_Interface class_ = \ + { \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_PSHINTER_INTERFACE( \ + class_, \ + get_globals_funcs_, \ + get_t1_funcs_, \ + get_t2_funcs_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + PSHinter_Interface* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_globals_funcs = get_globals_funcs_; \ + clazz->get_t1_funcs = get_t1_funcs_; \ + clazz->get_t2_funcs = get_t2_funcs_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __PSHINTS_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svbdf.h b/lib/windows64/include/freetype/internal/services/svbdf.h new file mode 100644 index 0000000..865b536 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svbdf.h @@ -0,0 +1,82 @@ +/***************************************************************************/ +/* */ +/* svbdf.h */ +/* */ +/* The FreeType BDF services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVBDF_H__ +#define __SVBDF_H__ + +#include FT_BDF_H +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_BDF "bdf" + + typedef FT_Error + (*FT_BDF_GetCharsetIdFunc)( FT_Face face, + const char* *acharset_encoding, + const char* *acharset_registry ); + + typedef FT_Error + (*FT_BDF_GetPropertyFunc)( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + + + FT_DEFINE_SERVICE( BDF ) + { + FT_BDF_GetCharsetIdFunc get_charset_id; + FT_BDF_GetPropertyFunc get_property; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_BDFRec( class_, \ + get_charset_id_, \ + get_property_ ) \ + static const FT_Service_BDFRec class_ = \ + { \ + get_charset_id_, get_property_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_BDFRec( class_, \ + get_charset_id_, \ + get_property_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_BDFRec* clazz ) \ + { \ + clazz->get_charset_id = get_charset_id_; \ + clazz->get_property = get_property_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVBDF_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svcid.h b/lib/windows64/include/freetype/internal/services/svcid.h new file mode 100644 index 0000000..4a535a6 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svcid.h @@ -0,0 +1,90 @@ +/***************************************************************************/ +/* */ +/* svcid.h */ +/* */ +/* The FreeType CID font services (specification). */ +/* */ +/* Copyright 2007-2015 by */ +/* Derek Clegg and Michael Toftdal. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVCID_H__ +#define __SVCID_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_CID "CID" + + typedef FT_Error + (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face face, + const char* *registry, + const char* *ordering, + FT_Int *supplement ); + typedef FT_Error + (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face face, + FT_Bool *is_cid ); + typedef FT_Error + (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + + FT_DEFINE_SERVICE( CID ) + { + FT_CID_GetRegistryOrderingSupplementFunc get_ros; + FT_CID_GetIsInternallyCIDKeyedFunc get_is_cid; + FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_CIDREC( class_, \ + get_ros_, \ + get_is_cid_, \ + get_cid_from_glyph_index_ ) \ + static const FT_Service_CIDRec class_ = \ + { \ + get_ros_, get_is_cid_, get_cid_from_glyph_index_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_CIDREC( class_, \ + get_ros_, \ + get_is_cid_, \ + get_cid_from_glyph_index_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_CIDRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_ros = get_ros_; \ + clazz->get_is_cid = get_is_cid_; \ + clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVCID_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svfntfmt.h b/lib/windows64/include/freetype/internal/services/svfntfmt.h new file mode 100644 index 0000000..f8b3617 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svfntfmt.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* svfntfmt.h */ +/* */ +/* The FreeType font format service (specification only). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVFNTFMT_H__ +#define __SVFNTFMT_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A trivial service used to return the name of a face's font driver, + * according to the XFree86 nomenclature. Note that the service data + * is a simple constant string pointer. + */ + +#define FT_SERVICE_ID_FONT_FORMAT "font-format" + +#define FT_FONT_FORMAT_TRUETYPE "TrueType" +#define FT_FONT_FORMAT_TYPE_1 "Type 1" +#define FT_FONT_FORMAT_BDF "BDF" +#define FT_FONT_FORMAT_PCF "PCF" +#define FT_FONT_FORMAT_TYPE_42 "Type 42" +#define FT_FONT_FORMAT_CID "CID Type 1" +#define FT_FONT_FORMAT_CFF "CFF" +#define FT_FONT_FORMAT_PFR "PFR" +#define FT_FONT_FORMAT_WINFNT "Windows FNT" + + /* */ + + +FT_END_HEADER + + +#endif /* __SVFNTFMT_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svgldict.h b/lib/windows64/include/freetype/internal/services/svgldict.h new file mode 100644 index 0000000..f78bca5 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svgldict.h @@ -0,0 +1,88 @@ +/***************************************************************************/ +/* */ +/* svgldict.h */ +/* */ +/* The FreeType glyph dictionary services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVGLDICT_H__ +#define __SVGLDICT_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A service used to retrieve glyph names, as well as to find the + * index of a given glyph name in a font. + * + */ + +#define FT_SERVICE_ID_GLYPH_DICT "glyph-dict" + + + typedef FT_Error + (*FT_GlyphDict_GetNameFunc)( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + typedef FT_UInt + (*FT_GlyphDict_NameIndexFunc)( FT_Face face, + FT_String* glyph_name ); + + + FT_DEFINE_SERVICE( GlyphDict ) + { + FT_GlyphDict_GetNameFunc get_name; + FT_GlyphDict_NameIndexFunc name_index; /* optional */ + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ + get_name_, \ + name_index_) \ + static const FT_Service_GlyphDictRec class_ = \ + { \ + get_name_, name_index_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_, \ + get_name_, \ + name_index_) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_GlyphDictRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_name = get_name_; \ + clazz->name_index = name_index_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVGLDICT_H__ */ diff --git a/lib/windows64/include/freetype/internal/services/svgxval.h b/lib/windows64/include/freetype/internal/services/svgxval.h new file mode 100644 index 0000000..59cc3b7 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svgxval.h @@ -0,0 +1,72 @@ +/***************************************************************************/ +/* */ +/* svgxval.h */ +/* */ +/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* Masatake YAMATO, Red Hat K.K., */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/***************************************************************************/ +/* */ +/* gxvalid is derived from both gxlayout module and otvalid module. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVGXVAL_H__ +#define __SVGXVAL_H__ + +#include FT_GX_VALIDATE_H +#include FT_INTERNAL_VALIDATE_H + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_GX_VALIDATE "truetypegx-validate" +#define FT_SERVICE_ID_CLASSICKERN_VALIDATE "classickern-validate" + + typedef FT_Error + (*gxv_validate_func)( FT_Face face, + FT_UInt gx_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + + typedef FT_Error + (*ckern_validate_func)( FT_Face face, + FT_UInt ckern_flags, + FT_Bytes *ckern_table ); + + + FT_DEFINE_SERVICE( GXvalidate ) + { + gxv_validate_func validate; + }; + + FT_DEFINE_SERVICE( CKERNvalidate ) + { + ckern_validate_func validate; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVGXVAL_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svkern.h b/lib/windows64/include/freetype/internal/services/svkern.h new file mode 100644 index 0000000..bc26f15 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svkern.h @@ -0,0 +1,51 @@ +/***************************************************************************/ +/* */ +/* svkern.h */ +/* */ +/* The FreeType Kerning service (specification). */ +/* */ +/* Copyright 2006-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVKERN_H__ +#define __SVKERN_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + +#define FT_SERVICE_ID_KERNING "kerning" + + + typedef FT_Error + (*FT_Kerning_TrackGetFunc)( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + FT_DEFINE_SERVICE( Kerning ) + { + FT_Kerning_TrackGetFunc get_track; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVKERN_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svmm.h b/lib/windows64/include/freetype/internal/services/svmm.h new file mode 100644 index 0000000..f2cecfb --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svmm.h @@ -0,0 +1,113 @@ +/***************************************************************************/ +/* */ +/* svmm.h */ +/* */ +/* The FreeType Multiple Masters and GX var services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVMM_H__ +#define __SVMM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + + /* + * A service used to manage multiple-masters data in a given face. + * + * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H). + * + */ + +#define FT_SERVICE_ID_MULTI_MASTERS "multi-masters" + + + typedef FT_Error + (*FT_Get_MM_Func)( FT_Face face, + FT_Multi_Master* master ); + + typedef FT_Error + (*FT_Get_MM_Var_Func)( FT_Face face, + FT_MM_Var* *master ); + + typedef FT_Error + (*FT_Set_MM_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + typedef FT_Error + (*FT_Set_Var_Design_Func)( FT_Face face, + FT_UInt num_coords, + FT_Fixed* coords ); + + typedef FT_Error + (*FT_Set_MM_Blend_Func)( FT_Face face, + FT_UInt num_coords, + FT_Long* coords ); + + + FT_DEFINE_SERVICE( MultiMasters ) + { + FT_Get_MM_Func get_mm; + FT_Set_MM_Design_Func set_mm_design; + FT_Set_MM_Blend_Func set_mm_blend; + FT_Get_MM_Var_Func get_mm_var; + FT_Set_Var_Design_Func set_var_design; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \ + get_mm_, \ + set_mm_design_, \ + set_mm_blend_, \ + get_mm_var_, \ + set_var_design_ ) \ + static const FT_Service_MultiMastersRec class_ = \ + { \ + get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \ + get_mm_, \ + set_mm_design_, \ + set_mm_blend_, \ + get_mm_var_, \ + set_var_design_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_MultiMastersRec* clazz ) \ + { \ + clazz->get_mm = get_mm_; \ + clazz->set_mm_design = set_mm_design_; \ + clazz->set_mm_blend = set_mm_blend_; \ + clazz->get_mm_var = get_mm_var_; \ + clazz->set_var_design = set_var_design_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVMM_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svotval.h b/lib/windows64/include/freetype/internal/services/svotval.h new file mode 100644 index 0000000..a82a642 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svotval.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* svotval.h */ +/* */ +/* The FreeType OpenType validation service (specification). */ +/* */ +/* Copyright 2004-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVOTVAL_H__ +#define __SVOTVAL_H__ + +#include FT_OPENTYPE_VALIDATE_H +#include FT_INTERNAL_VALIDATE_H + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_OPENTYPE_VALIDATE "opentype-validate" + + + typedef FT_Error + (*otv_validate_func)( FT_Face volatile face, + FT_UInt ot_flags, + FT_Bytes *base, + FT_Bytes *gdef, + FT_Bytes *gpos, + FT_Bytes *gsub, + FT_Bytes *jstf ); + + + FT_DEFINE_SERVICE( OTvalidate ) + { + otv_validate_func validate; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVOTVAL_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svpfr.h b/lib/windows64/include/freetype/internal/services/svpfr.h new file mode 100644 index 0000000..d4eb169 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svpfr.h @@ -0,0 +1,66 @@ +/***************************************************************************/ +/* */ +/* svpfr.h */ +/* */ +/* Internal PFR service functions (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPFR_H__ +#define __SVPFR_H__ + +#include FT_PFR_H +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_PFR_METRICS "pfr-metrics" + + + typedef FT_Error + (*FT_PFR_GetMetricsFunc)( FT_Face face, + FT_UInt *aoutline, + FT_UInt *ametrics, + FT_Fixed *ax_scale, + FT_Fixed *ay_scale ); + + typedef FT_Error + (*FT_PFR_GetKerningFunc)( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + typedef FT_Error + (*FT_PFR_GetAdvanceFunc)( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + + + FT_DEFINE_SERVICE( PfrMetrics ) + { + FT_PFR_GetMetricsFunc get_metrics; + FT_PFR_GetKerningFunc get_kerning; + FT_PFR_GetAdvanceFunc get_advance; + + }; + + /* */ + +FT_END_HEADER + +#endif /* __SVPFR_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svpostnm.h b/lib/windows64/include/freetype/internal/services/svpostnm.h new file mode 100644 index 0000000..a89f79e --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svpostnm.h @@ -0,0 +1,81 @@ +/***************************************************************************/ +/* */ +/* svpostnm.h */ +/* */ +/* The FreeType PostScript name services (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPOSTNM_H__ +#define __SVPOSTNM_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + /* + * A trivial service used to retrieve the PostScript name of a given + * font when available. The `get_name' field should never be NULL. + * + * The corresponding function can return NULL to indicate that the + * PostScript name is not available. + * + * The name is owned by the face and will be destroyed with it. + */ + +#define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME "postscript-font-name" + + + typedef const char* + (*FT_PsName_GetFunc)( FT_Face face ); + + + FT_DEFINE_SERVICE( PsFontName ) + { + FT_PsName_GetFunc get_ps_font_name; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \ + static const FT_Service_PsFontNameRec class_ = \ + { \ + get_ps_font_name_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsFontNameRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_ps_font_name = get_ps_font_name_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPOSTNM_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svprop.h b/lib/windows64/include/freetype/internal/services/svprop.h new file mode 100644 index 0000000..c9f07ce --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svprop.h @@ -0,0 +1,81 @@ +/***************************************************************************/ +/* */ +/* svprop.h */ +/* */ +/* The FreeType property service (specification). */ +/* */ +/* Copyright 2012-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPROP_H__ +#define __SVPROP_H__ + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_PROPERTIES "properties" + + + typedef FT_Error + (*FT_Properties_SetFunc)( FT_Module module, + const char* property_name, + const void* value ); + + typedef FT_Error + (*FT_Properties_GetFunc)( FT_Module module, + const char* property_name, + void* value ); + + + FT_DEFINE_SERVICE( Properties ) + { + FT_Properties_SetFunc set_property; + FT_Properties_GetFunc get_property; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ + set_property_, \ + get_property_ ) \ + static const FT_Service_PropertiesRec class_ = \ + { \ + set_property_, \ + get_property_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PROPERTIESREC( class_, \ + set_property_, \ + get_property_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_PropertiesRec* clazz ) \ + { \ + clazz->set_property = set_property_; \ + clazz->get_property = get_property_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPROP_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svpscmap.h b/lib/windows64/include/freetype/internal/services/svpscmap.h new file mode 100644 index 0000000..66da6e1 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svpscmap.h @@ -0,0 +1,177 @@ +/***************************************************************************/ +/* */ +/* svpscmap.h */ +/* */ +/* The FreeType PostScript charmap service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPSCMAP_H__ +#define __SVPSCMAP_H__ + +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" + + + /* + * Adobe glyph name to unicode value. + */ + typedef FT_UInt32 + (*PS_Unicode_ValueFunc)( const char* glyph_name ); + + /* + * Macintosh name id to glyph name. NULL if invalid index. + */ + typedef const char* + (*PS_Macintosh_NameFunc)( FT_UInt name_index ); + + /* + * Adobe standard string ID to glyph name. NULL if invalid index. + */ + typedef const char* + (*PS_Adobe_Std_StringsFunc)( FT_UInt string_index ); + + + /* + * Simple unicode -> glyph index charmap built from font glyph names + * table. + */ + typedef struct PS_UniMap_ + { + FT_UInt32 unicode; /* bit 31 set: is glyph variant */ + FT_UInt glyph_index; + + } PS_UniMap; + + + typedef struct PS_UnicodesRec_* PS_Unicodes; + + typedef struct PS_UnicodesRec_ + { + FT_CMapRec cmap; + FT_UInt num_maps; + PS_UniMap* maps; + + } PS_UnicodesRec; + + + /* + * A function which returns a glyph name for a given index. Returns + * NULL if invalid index. + */ + typedef const char* + (*PS_GetGlyphNameFunc)( FT_Pointer data, + FT_UInt string_index ); + + /* + * A function used to release the glyph name returned by + * PS_GetGlyphNameFunc, when needed + */ + typedef void + (*PS_FreeGlyphNameFunc)( FT_Pointer data, + const char* name ); + + typedef FT_Error + (*PS_Unicodes_InitFunc)( FT_Memory memory, + PS_Unicodes unicodes, + FT_UInt num_glyphs, + PS_GetGlyphNameFunc get_glyph_name, + PS_FreeGlyphNameFunc free_glyph_name, + FT_Pointer glyph_data ); + + typedef FT_UInt + (*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes, + FT_UInt32 unicode ); + + typedef FT_UInt32 + (*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes, + FT_UInt32 *unicode ); + + + FT_DEFINE_SERVICE( PsCMaps ) + { + PS_Unicode_ValueFunc unicode_value; + + PS_Unicodes_InitFunc unicodes_init; + PS_Unicodes_CharIndexFunc unicodes_char_index; + PS_Unicodes_CharNextFunc unicodes_char_next; + + PS_Macintosh_NameFunc macintosh_name; + PS_Adobe_Std_StringsFunc adobe_std_strings; + const unsigned short* adobe_std_encoding; + const unsigned short* adobe_expert_encoding; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ + unicode_value_, \ + unicodes_init_, \ + unicodes_char_index_, \ + unicodes_char_next_, \ + macintosh_name_, \ + adobe_std_strings_, \ + adobe_std_encoding_, \ + adobe_expert_encoding_ ) \ + static const FT_Service_PsCMapsRec class_ = \ + { \ + unicode_value_, unicodes_init_, \ + unicodes_char_index_, unicodes_char_next_, macintosh_name_, \ + adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSCMAPSREC( class_, \ + unicode_value_, \ + unicodes_init_, \ + unicodes_char_index_, \ + unicodes_char_next_, \ + macintosh_name_, \ + adobe_std_strings_, \ + adobe_std_encoding_, \ + adobe_expert_encoding_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsCMapsRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->unicode_value = unicode_value_; \ + clazz->unicodes_init = unicodes_init_; \ + clazz->unicodes_char_index = unicodes_char_index_; \ + clazz->unicodes_char_next = unicodes_char_next_; \ + clazz->macintosh_name = macintosh_name_; \ + clazz->adobe_std_strings = adobe_std_strings_; \ + clazz->adobe_std_encoding = adobe_std_encoding_; \ + clazz->adobe_expert_encoding = adobe_expert_encoding_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPSCMAP_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svpsinfo.h b/lib/windows64/include/freetype/internal/services/svpsinfo.h new file mode 100644 index 0000000..752a266 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svpsinfo.h @@ -0,0 +1,111 @@ +/***************************************************************************/ +/* */ +/* svpsinfo.h */ +/* */ +/* The FreeType PostScript info service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVPSINFO_H__ +#define __SVPSINFO_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_TYPE1_TYPES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_POSTSCRIPT_INFO "postscript-info" + + + typedef FT_Error + (*PS_GetFontInfoFunc)( FT_Face face, + PS_FontInfoRec* afont_info ); + + typedef FT_Error + (*PS_GetFontExtraFunc)( FT_Face face, + PS_FontExtraRec* afont_extra ); + + typedef FT_Int + (*PS_HasGlyphNamesFunc)( FT_Face face ); + + typedef FT_Error + (*PS_GetFontPrivateFunc)( FT_Face face, + PS_PrivateRec* afont_private ); + + typedef FT_Long + (*PS_GetFontValueFunc)( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + + FT_DEFINE_SERVICE( PsInfo ) + { + PS_GetFontInfoFunc ps_get_font_info; + PS_GetFontExtraFunc ps_get_font_extra; + PS_HasGlyphNamesFunc ps_has_glyph_names; + PS_GetFontPrivateFunc ps_get_font_private; + PS_GetFontValueFunc ps_get_font_value; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSINFOREC( class_, \ + get_font_info_, \ + ps_get_font_extra_, \ + has_glyph_names_, \ + get_font_private_, \ + get_font_value_ ) \ + static const FT_Service_PsInfoRec class_ = \ + { \ + get_font_info_, ps_get_font_extra_, has_glyph_names_, \ + get_font_private_, get_font_value_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_PSINFOREC( class_, \ + get_font_info_, \ + ps_get_font_extra_, \ + has_glyph_names_, \ + get_font_private_, \ + get_font_value_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_PsInfoRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->ps_get_font_info = get_font_info_; \ + clazz->ps_get_font_extra = ps_get_font_extra_; \ + clazz->ps_has_glyph_names = has_glyph_names_; \ + clazz->ps_get_font_private = get_font_private_; \ + clazz->ps_get_font_value = get_font_value_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVPSINFO_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svsfnt.h b/lib/windows64/include/freetype/internal/services/svsfnt.h new file mode 100644 index 0000000..252ae1c --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svsfnt.h @@ -0,0 +1,103 @@ +/***************************************************************************/ +/* */ +/* svsfnt.h */ +/* */ +/* The FreeType SFNT table loading service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVSFNT_H__ +#define __SVSFNT_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + + /* + * SFNT table loading service. + */ + +#define FT_SERVICE_ID_SFNT_TABLE "sfnt-table" + + + /* + * Used to implement FT_Load_Sfnt_Table(). + */ + typedef FT_Error + (*FT_SFNT_TableLoadFunc)( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + /* + * Used to implement FT_Get_Sfnt_Table(). + */ + typedef void* + (*FT_SFNT_TableGetFunc)( FT_Face face, + FT_Sfnt_Tag tag ); + + + /* + * Used to implement FT_Sfnt_Table_Info(). + */ + typedef FT_Error + (*FT_SFNT_TableInfoFunc)( FT_Face face, + FT_UInt idx, + FT_ULong *tag, + FT_ULong *offset, + FT_ULong *length ); + + + FT_DEFINE_SERVICE( SFNT_Table ) + { + FT_SFNT_TableLoadFunc load_table; + FT_SFNT_TableGetFunc get_table; + FT_SFNT_TableInfoFunc table_info; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \ + static const FT_Service_SFNT_TableRec class_ = \ + { \ + load_, get_, info_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_SFNT_TableRec* clazz ) \ + { \ + clazz->load_table = load_; \ + clazz->get_table = get_; \ + clazz->table_info = info_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + + +#endif /* __SVSFNT_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svttcmap.h b/lib/windows64/include/freetype/internal/services/svttcmap.h new file mode 100644 index 0000000..4351a9a --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svttcmap.h @@ -0,0 +1,105 @@ +/***************************************************************************/ +/* */ +/* svttcmap.h */ +/* */ +/* The FreeType TrueType/sfnt cmap extra information service. */ +/* */ +/* Copyright 2003-2015 by */ +/* Masatake YAMATO, Redhat K.K., */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* Development of this service is support of + Information-technology Promotion Agency, Japan. */ + +#ifndef __SVTTCMAP_H__ +#define __SVTTCMAP_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_TT_CMAP "tt-cmaps" + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_CMapInfo */ + /* */ + /* <Description> */ + /* A structure used to store TrueType/sfnt specific cmap information */ + /* which is not covered by the generic @FT_CharMap structure. This */ + /* structure can be accessed with the @FT_Get_TT_CMap_Info function. */ + /* */ + /* <Fields> */ + /* language :: */ + /* The language ID used in Mac fonts. Definitions of values are in */ + /* `ttnameid.h'. */ + /* */ + /* format :: */ + /* The cmap format. OpenType 1.5 defines the formats 0 (byte */ + /* encoding table), 2~(high-byte mapping through table), 4~(segment */ + /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */ + /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */ + /* coverage), and 14 (Unicode Variation Sequences). */ + /* */ + typedef struct TT_CMapInfo_ + { + FT_ULong language; + FT_Long format; + + } TT_CMapInfo; + + + typedef FT_Error + (*TT_CMap_Info_GetFunc)( FT_CharMap charmap, + TT_CMapInfo *cmap_info ); + + + FT_DEFINE_SERVICE( TTCMaps ) + { + TT_CMap_Info_GetFunc get_cmap_info; + }; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ + static const FT_Service_TTCMapsRec class_ = \ + { \ + get_cmap_info_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + FT_Service_TTCMapsRec* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->get_cmap_info = get_cmap_info_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVTTCMAP_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svtteng.h b/lib/windows64/include/freetype/internal/services/svtteng.h new file mode 100644 index 0000000..272ee8c --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svtteng.h @@ -0,0 +1,53 @@ +/***************************************************************************/ +/* */ +/* svtteng.h */ +/* */ +/* The FreeType TrueType engine query service (specification). */ +/* */ +/* Copyright 2006-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVTTENG_H__ +#define __SVTTENG_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_MODULE_H + + +FT_BEGIN_HEADER + + + /* + * SFNT table loading service. + */ + +#define FT_SERVICE_ID_TRUETYPE_ENGINE "truetype-engine" + + /* + * Used to implement FT_Get_TrueType_Engine_Type + */ + + FT_DEFINE_SERVICE( TrueTypeEngine ) + { + FT_TrueTypeEngineType engine_type; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVTTENG_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svttglyf.h b/lib/windows64/include/freetype/internal/services/svttglyf.h new file mode 100644 index 0000000..f5cb76a --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svttglyf.h @@ -0,0 +1,69 @@ +/***************************************************************************/ +/* */ +/* svttglyf.h */ +/* */ +/* The FreeType TrueType glyph service. */ +/* */ +/* Copyright 2007-2015 by */ +/* David Turner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#ifndef __SVTTGLYF_H__ +#define __SVTTGLYF_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_TRUETYPE_TABLES_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_TT_GLYF "tt-glyf" + + + typedef FT_ULong + (*TT_Glyf_GetLocationFunc)( FT_Face face, + FT_UInt gindex, + FT_ULong *psize ); + + FT_DEFINE_SERVICE( TTGlyf ) + { + TT_Glyf_GetLocationFunc get_location; + }; + + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ ) \ + static const FT_Service_TTGlyfRec class_ = \ + { \ + get_location_ \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Service_TTGlyfRec* clazz ) \ + { \ + clazz->get_location = get_location_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + + +FT_END_HEADER + +#endif /* __SVTTGLYF_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/services/svwinfnt.h b/lib/windows64/include/freetype/internal/services/svwinfnt.h new file mode 100644 index 0000000..0036929 --- /dev/null +++ b/lib/windows64/include/freetype/internal/services/svwinfnt.h @@ -0,0 +1,50 @@ +/***************************************************************************/ +/* */ +/* svwinfnt.h */ +/* */ +/* The FreeType Windows FNT/FONT service (specification). */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SVWINFNT_H__ +#define __SVWINFNT_H__ + +#include FT_INTERNAL_SERVICE_H +#include FT_WINFONTS_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_WINFNT "winfonts" + + typedef FT_Error + (*FT_WinFnt_GetHeaderFunc)( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); + + + FT_DEFINE_SERVICE( WinFnt ) + { + FT_WinFnt_GetHeaderFunc get_header; + }; + + /* */ + + +FT_END_HEADER + + +#endif /* __SVWINFNT_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/sfnt.h b/lib/windows64/include/freetype/internal/sfnt.h new file mode 100644 index 0000000..97ce390 --- /dev/null +++ b/lib/windows64/include/freetype/internal/sfnt.h @@ -0,0 +1,711 @@ +/***************************************************************************/ +/* */ +/* sfnt.h */ +/* */ +/* High-level `sfnt' driver interface (specification). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __SFNT_H__ +#define __SFNT_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_DRIVER_H +#include FT_INTERNAL_TRUETYPE_TYPES_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Init_Face_Func */ + /* */ + /* <Description> */ + /* First part of the SFNT face object initialization. This finds */ + /* the face in a SFNT file or collection, and load its format tag in */ + /* face->format_tag. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* face :: A handle to the target face object. */ + /* */ + /* face_index :: The index of the TrueType font, if we are opening a */ + /* collection. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* params :: Optional additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be at the font file's origin. */ + /* */ + /* This function recognizes fonts embedded in a `TrueType */ + /* collection'. */ + /* */ + /* Once the format tag has been validated by the font driver, it */ + /* should then call the TT_Load_Face_Func() callback to read the rest */ + /* of the SFNT tables in the object. */ + /* */ + typedef FT_Error + (*TT_Init_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Face_Func */ + /* */ + /* <Description> */ + /* Second part of the SFNT face object initialization. This loads */ + /* the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the */ + /* face object. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* face :: A handle to the target face object. */ + /* */ + /* face_index :: The index of the TrueType font, if we are opening a */ + /* collection. */ + /* */ + /* num_params :: The number of additional parameters. */ + /* */ + /* params :: Optional additional parameters. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function must be called after TT_Init_Face_Func(). */ + /* */ + typedef FT_Error + (*TT_Load_Face_Func)( FT_Stream stream, + TT_Face face, + FT_Int face_index, + FT_Int num_params, + FT_Parameter* params ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Done_Face_Func */ + /* */ + /* <Description> */ + /* A callback used to delete the common SFNT data from a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* <Note> */ + /* This function does NOT destroy the face object. */ + /* */ + typedef void + (*TT_Done_Face_Func)( TT_Face face ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Any_Func */ + /* */ + /* <Description> */ + /* Load any font table into client memory. */ + /* */ + /* <Input> */ + /* face :: The face object to look for. */ + /* */ + /* tag :: The tag of table to load. Use the value 0 if you want */ + /* to access the whole font file, else set this parameter */ + /* to a valid TrueType table tag that you can forge with */ + /* the MAKE_TT_TAG macro. */ + /* */ + /* offset :: The starting offset in the table (or the file if */ + /* tag == 0). */ + /* */ + /* length :: The address of the decision variable: */ + /* */ + /* If length == NULL: */ + /* Loads the whole table. Returns an error if */ + /* `offset' == 0! */ + /* */ + /* If *length == 0: */ + /* Exits immediately; returning the length of the given */ + /* table or of the font file, depending on the value of */ + /* `tag'. */ + /* */ + /* If *length != 0: */ + /* Loads the next `length' bytes of table or font, */ + /* starting at offset `offset' (in table or font too). */ + /* */ + /* <Output> */ + /* buffer :: The address of target buffer. */ + /* */ + /* <Return> */ + /* TrueType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Load_Any_Func)( TT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte *buffer, + FT_ULong* length ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Find_SBit_Image_Func */ + /* */ + /* <Description> */ + /* Check whether an embedded bitmap (an `sbit') exists for a given */ + /* glyph, at a given strike. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* glyph_index :: The glyph index. */ + /* */ + /* strike_index :: The current strike index. */ + /* */ + /* <Output> */ + /* arange :: The SBit range containing the glyph index. */ + /* */ + /* astrike :: The SBit strike containing the glyph index. */ + /* */ + /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns */ + /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ + /* glyph. */ + /* */ + typedef FT_Error + (*TT_Find_SBit_Image_Func)( TT_Face face, + FT_UInt glyph_index, + FT_ULong strike_index, + TT_SBit_Range *arange, + TT_SBit_Strike *astrike, + FT_ULong *aglyph_offset ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_SBit_Metrics_Func */ + /* */ + /* <Description> */ + /* Get the big metrics for a given embedded bitmap. */ + /* */ + /* <Input> */ + /* stream :: The input stream. */ + /* */ + /* range :: The SBit range containing the glyph. */ + /* */ + /* <Output> */ + /* big_metrics :: A big SBit metrics structure for the glyph. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be positioned at the glyph's offset within */ + /* the `EBDT' table before the call. */ + /* */ + /* If the image format uses variable metrics, the stream cursor is */ + /* positioned just after the metrics header in the `EBDT' table on */ + /* function exit. */ + /* */ + typedef FT_Error + (*TT_Load_SBit_Metrics_Func)( FT_Stream stream, + TT_SBit_Range range, + TT_SBit_Metrics metrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_SBit_Image_Func */ + /* */ + /* <Description> */ + /* Load a given glyph sbit image from the font resource. This also */ + /* returns its metrics. */ + /* */ + /* <Input> */ + /* face :: */ + /* The target face object. */ + /* */ + /* strike_index :: */ + /* The strike index. */ + /* */ + /* glyph_index :: */ + /* The current glyph index. */ + /* */ + /* load_flags :: */ + /* The current load flags. */ + /* */ + /* stream :: */ + /* The input stream. */ + /* */ + /* <Output> */ + /* amap :: */ + /* The target pixmap. */ + /* */ + /* ametrics :: */ + /* A big sbit metrics structure for the glyph image. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* glyph sbit exists for the index. */ + /* */ + /* <Note> */ + /* The `map.buffer' field is always freed before the glyph is loaded. */ + /* */ + typedef FT_Error + (*TT_Load_SBit_Image_Func)( TT_Face face, + FT_ULong strike_index, + FT_UInt glyph_index, + FT_UInt load_flags, + FT_Stream stream, + FT_Bitmap *amap, + TT_SBit_MetricsRec *ametrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Set_SBit_Strike_Func */ + /* */ + /* <Description> */ + /* Select an sbit strike for a given size request. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* req :: The size request. */ + /* */ + /* <Output> */ + /* astrike_index :: The index of the sbit strike. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* sbit strike exists for the selected ppem values. */ + /* */ + typedef FT_Error + (*TT_Set_SBit_Strike_Func)( TT_Face face, + FT_Size_Request req, + FT_ULong* astrike_index ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Strike_Metrics_Func */ + /* */ + /* <Description> */ + /* Load the metrics of a given strike. */ + /* */ + /* <Input> */ + /* face :: The target face object. */ + /* */ + /* strike_index :: The strike index. */ + /* */ + /* <Output> */ + /* metrics :: the metrics of the strike. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. Returns an error if no */ + /* such sbit strike exists. */ + /* */ + typedef FT_Error + (*TT_Load_Strike_Metrics_Func)( TT_Face face, + FT_ULong strike_index, + FT_Size_Metrics* metrics ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_PS_Name_Func */ + /* */ + /* <Description> */ + /* Get the PostScript glyph name of a glyph. */ + /* */ + /* <Input> */ + /* idx :: The glyph index. */ + /* */ + /* PSname :: The address of a string pointer. Will be NULL in case */ + /* of error, otherwise it is a pointer to the glyph name. */ + /* */ + /* You must not modify the returned string! */ + /* */ + /* <Output> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Get_PS_Name_Func)( TT_Face face, + FT_UInt idx, + FT_String** PSname ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Metrics_Func */ + /* */ + /* <Description> */ + /* Load a metrics table, which is a table with a horizontal and a */ + /* vertical version. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* vertical :: A boolean flag. If set, load the vertical one. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Load_Metrics_Func)( TT_Face face, + FT_Stream stream, + FT_Bool vertical ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Get_Metrics_Func */ + /* */ + /* <Description> */ + /* Load the horizontal or vertical header in a face object. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* vertical :: A boolean flag. If set, load vertical metrics. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* <Output> */ + /* abearing :: The horizontal (or vertical) bearing. Set to zero in */ + /* case of error. */ + /* */ + /* aadvance :: The horizontal (or vertical) advance. Set to zero in */ + /* case of error. */ + /* */ + typedef void + (*TT_Get_Metrics_Func)( TT_Face face, + FT_Bool vertical, + FT_UInt gindex, + FT_Short* abearing, + FT_UShort* aadvance ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Load_Table_Func */ + /* */ + /* <Description> */ + /* Load a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The function uses `face->goto_table' to seek the stream to the */ + /* start of the table, except while loading the font directory. */ + /* */ + typedef FT_Error + (*TT_Load_Table_Func)( TT_Face face, + FT_Stream stream ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Free_Table_Func */ + /* */ + /* <Description> */ + /* Free a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + typedef void + (*TT_Free_Table_Func)( TT_Face face ); + + + /* + * @functype: + * TT_Face_GetKerningFunc + * + * @description: + * Return the horizontal kerning value between two glyphs. + * + * @input: + * face :: A handle to the source face object. + * left_glyph :: The left glyph index. + * right_glyph :: The right glyph index. + * + * @return: + * The kerning value in font units. + */ + typedef FT_Int + (*TT_Face_GetKerningFunc)( TT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph ); + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* SFNT_Interface */ + /* */ + /* <Description> */ + /* This structure holds pointers to the functions used to load and */ + /* free the basic tables that are required in a `sfnt' font file. */ + /* */ + /* <Fields> */ + /* Check the various xxx_Func() descriptions for details. */ + /* */ + typedef struct SFNT_Interface_ + { + TT_Loader_GotoTableFunc goto_table; + + TT_Init_Face_Func init_face; + TT_Load_Face_Func load_face; + TT_Done_Face_Func done_face; + FT_Module_Requester get_interface; + + TT_Load_Any_Func load_any; + + /* these functions are called by `load_face' but they can also */ + /* be called from external modules, if there is a need to do so */ + TT_Load_Table_Func load_head; + TT_Load_Metrics_Func load_hhea; + TT_Load_Table_Func load_cmap; + TT_Load_Table_Func load_maxp; + TT_Load_Table_Func load_os2; + TT_Load_Table_Func load_post; + + TT_Load_Table_Func load_name; + TT_Free_Table_Func free_name; + + /* this field was called `load_kerning' up to version 2.1.10 */ + TT_Load_Table_Func load_kern; + + TT_Load_Table_Func load_gasp; + TT_Load_Table_Func load_pclt; + + /* see `ttload.h'; this field was called `load_bitmap_header' up to */ + /* version 2.1.10 */ + TT_Load_Table_Func load_bhed; + + TT_Load_SBit_Image_Func load_sbit_image; + + /* see `ttpost.h' */ + TT_Get_PS_Name_Func get_psname; + TT_Free_Table_Func free_psnames; + + /* starting here, the structure differs from version 2.1.7 */ + + /* this field was introduced in version 2.1.8, named `get_psname' */ + TT_Face_GetKerningFunc get_kerning; + + /* new elements introduced after version 2.1.10 */ + + /* load the font directory, i.e., the offset table and */ + /* the table directory */ + TT_Load_Table_Func load_font_dir; + TT_Load_Metrics_Func load_hmtx; + + TT_Load_Table_Func load_eblc; + TT_Free_Table_Func free_eblc; + + TT_Set_SBit_Strike_Func set_sbit_strike; + TT_Load_Strike_Metrics_Func load_strike_metrics; + + TT_Get_Metrics_Func get_metrics; + + } SFNT_Interface; + + + /* transitional */ + typedef SFNT_Interface* SFNT_Service; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SFNT_INTERFACE( \ + class_, \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_ ) \ + static const SFNT_Interface class_ = \ + { \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_, \ + }; + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_INTERNAL( a, a_ ) \ + clazz->a = a_; + +#define FT_DEFINE_SFNT_INTERFACE( \ + class_, \ + goto_table_, \ + init_face_, \ + load_face_, \ + done_face_, \ + get_interface_, \ + load_any_, \ + load_head_, \ + load_hhea_, \ + load_cmap_, \ + load_maxp_, \ + load_os2_, \ + load_post_, \ + load_name_, \ + free_name_, \ + load_kern_, \ + load_gasp_, \ + load_pclt_, \ + load_bhed_, \ + load_sbit_image_, \ + get_psname_, \ + free_psnames_, \ + get_kerning_, \ + load_font_dir_, \ + load_hmtx_, \ + load_eblc_, \ + free_eblc_, \ + set_sbit_strike_, \ + load_strike_metrics_, \ + get_metrics_ ) \ + void \ + FT_Init_Class_ ## class_( FT_Library library, \ + SFNT_Interface* clazz ) \ + { \ + FT_UNUSED( library ); \ + \ + clazz->goto_table = goto_table_; \ + clazz->init_face = init_face_; \ + clazz->load_face = load_face_; \ + clazz->done_face = done_face_; \ + clazz->get_interface = get_interface_; \ + clazz->load_any = load_any_; \ + clazz->load_head = load_head_; \ + clazz->load_hhea = load_hhea_; \ + clazz->load_cmap = load_cmap_; \ + clazz->load_maxp = load_maxp_; \ + clazz->load_os2 = load_os2_; \ + clazz->load_post = load_post_; \ + clazz->load_name = load_name_; \ + clazz->free_name = free_name_; \ + clazz->load_kern = load_kern_; \ + clazz->load_gasp = load_gasp_; \ + clazz->load_pclt = load_pclt_; \ + clazz->load_bhed = load_bhed_; \ + clazz->load_sbit_image = load_sbit_image_; \ + clazz->get_psname = get_psname_; \ + clazz->free_psnames = free_psnames_; \ + clazz->get_kerning = get_kerning_; \ + clazz->load_font_dir = load_font_dir_; \ + clazz->load_hmtx = load_hmtx_; \ + clazz->load_eblc = load_eblc_; \ + clazz->free_eblc = free_eblc_; \ + clazz->set_sbit_strike = set_sbit_strike_; \ + clazz->load_strike_metrics = load_strike_metrics_; \ + clazz->get_metrics = get_metrics_; \ + } + +#endif /* FT_CONFIG_OPTION_PIC */ + +FT_END_HEADER + +#endif /* __SFNT_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/t1types.h b/lib/windows64/include/freetype/internal/t1types.h new file mode 100644 index 0000000..029acc4 --- /dev/null +++ b/lib/windows64/include/freetype/internal/t1types.h @@ -0,0 +1,255 @@ +/***************************************************************************/ +/* */ +/* t1types.h */ +/* */ +/* Basic Type1/Type2 type definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TYPES_H__ +#define __T1TYPES_H__ + + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H +#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include FT_INTERNAL_SERVICE_H +#include FT_SERVICE_POSTSCRIPT_CMAPS_H + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_EncodingRec */ + /* */ + /* <Description> */ + /* A structure modeling a custom encoding. */ + /* */ + /* <Fields> */ + /* num_chars :: The number of character codes in the encoding. */ + /* Usually 256. */ + /* */ + /* code_first :: The lowest valid character code in the encoding. */ + /* */ + /* code_last :: The highest valid character code in the encoding */ + /* + 1. When equal to code_first there are no valid */ + /* character codes. */ + /* */ + /* char_index :: An array of corresponding glyph indices. */ + /* */ + /* char_name :: An array of corresponding glyph names. */ + /* */ + typedef struct T1_EncodingRecRec_ + { + FT_Int num_chars; + FT_Int code_first; + FT_Int code_last; + + FT_UShort* char_index; + FT_String** char_name; + + } T1_EncodingRec, *T1_Encoding; + + + /* used to hold extra data of PS_FontInfoRec that + * cannot be stored in the publicly defined structure. + * + * Note these can't be blended with multiple-masters. + */ + typedef struct PS_FontExtraRec_ + { + FT_UShort fs_type; + + } PS_FontExtraRec; + + + typedef struct T1_FontRec_ + { + PS_FontInfoRec font_info; /* font info dictionary */ + PS_FontExtraRec font_extra; /* font info extra fields */ + PS_PrivateRec private_dict; /* private dictionary */ + FT_String* font_name; /* top-level dictionary */ + + T1_EncodingType encoding_type; + T1_EncodingRec encoding; + + FT_Byte* subrs_block; + FT_Byte* charstrings_block; + FT_Byte* glyph_names_block; + + FT_Int num_subrs; + FT_Byte** subrs; + FT_UInt* subrs_len; + + FT_Int num_glyphs; + FT_String** glyph_names; /* array of glyph names */ + FT_Byte** charstrings; /* array of glyph charstrings */ + FT_UInt* charstrings_len; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + FT_BBox font_bbox; + FT_Long font_id; + + FT_Fixed stroke_width; + + } T1_FontRec, *T1_Font; + + + typedef struct CID_SubrsRec_ + { + FT_Int num_subrs; + FT_Byte** code; + + } CID_SubrsRec, *CID_Subrs; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** AFM FONT INFORMATION STRUCTURES ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + typedef struct AFM_TrackKernRec_ + { + FT_Int degree; + FT_Fixed min_ptsize; + FT_Fixed min_kern; + FT_Fixed max_ptsize; + FT_Fixed max_kern; + + } AFM_TrackKernRec, *AFM_TrackKern; + + typedef struct AFM_KernPairRec_ + { + FT_UInt index1; + FT_UInt index2; + FT_Int x; + FT_Int y; + + } AFM_KernPairRec, *AFM_KernPair; + + typedef struct AFM_FontInfoRec_ + { + FT_Bool IsCIDFont; + FT_BBox FontBBox; + FT_Fixed Ascender; + FT_Fixed Descender; + AFM_TrackKern TrackKerns; /* free if non-NULL */ + FT_UInt NumTrackKern; + AFM_KernPair KernPairs; /* free if non-NULL */ + FT_UInt NumKernPair; + + } AFM_FontInfoRec, *AFM_FontInfo; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** ORIGINAL T1_FACE CLASS DEFINITION ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + typedef struct T1_FaceRec_* T1_Face; + typedef struct CID_FaceRec_* CID_Face; + + + typedef struct T1_FaceRec_ + { + FT_FaceRec root; + T1_FontRec type1; + const void* psnames; + const void* psaux; + const void* afm_data; + FT_CharMapRec charmaprecs[2]; + FT_CharMap charmaps[2]; + + /* support for Multiple Masters fonts */ + PS_Blend blend; + + /* undocumented, optional: indices of subroutines that express */ + /* the NormalizeDesignVector and the ConvertDesignVector procedure, */ + /* respectively, as Type 2 charstrings; -1 if keywords not present */ + FT_Int ndv_idx; + FT_Int cdv_idx; + + /* undocumented, optional: has the same meaning as len_buildchar */ + /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */ + FT_UInt len_buildchar; + FT_Long* buildchar; + + /* since version 2.1 - interface to PostScript hinter */ + const void* pshinter; + + } T1_FaceRec; + + + typedef struct CID_FaceRec_ + { + FT_FaceRec root; + void* psnames; + void* psaux; + CID_FaceInfoRec cid; + PS_FontExtraRec font_extra; +#if 0 + void* afm_data; +#endif + CID_Subrs subrs; + + /* since version 2.1 - interface to PostScript hinter */ + void* pshinter; + + /* since version 2.1.8, but was originally positioned after `afm_data' */ + FT_Byte* binary_data; /* used if hex data has been converted */ + FT_Stream cid_stream; + + } CID_FaceRec; + + +FT_END_HEADER + +#endif /* __T1TYPES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/internal/tttypes.h b/lib/windows64/include/freetype/internal/tttypes.h new file mode 100644 index 0000000..31dd0aa --- /dev/null +++ b/lib/windows64/include/freetype/internal/tttypes.h @@ -0,0 +1,1514 @@ +/***************************************************************************/ +/* */ +/* tttypes.h */ +/* */ +/* Basic SFNT/TrueType type definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTYPES_H__ +#define __TTTYPES_H__ + + +#include <ft2build.h> +#include FT_TRUETYPE_TABLES_H +#include FT_INTERNAL_OBJECTS_H + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT +#include FT_MULTIPLE_MASTERS_H +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TTC_HeaderRec */ + /* */ + /* <Description> */ + /* TrueType collection header. This table contains the offsets of */ + /* the font headers of each distinct TrueType face in the file. */ + /* */ + /* <Fields> */ + /* tag :: Must be `ttc ' to indicate a TrueType collection. */ + /* */ + /* version :: The version number. */ + /* */ + /* count :: The number of faces in the collection. The */ + /* specification says this should be an unsigned long, but */ + /* we use a signed long since we need the value -1 for */ + /* specific purposes. */ + /* */ + /* offsets :: The offsets of the font headers, one per face. */ + /* */ + typedef struct TTC_HeaderRec_ + { + FT_ULong tag; + FT_Fixed version; + FT_Long count; + FT_ULong* offsets; + + } TTC_HeaderRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* SFNT_HeaderRec */ + /* */ + /* <Description> */ + /* SFNT file format header. */ + /* */ + /* <Fields> */ + /* format_tag :: The font format tag. */ + /* */ + /* num_tables :: The number of tables in file. */ + /* */ + /* search_range :: Must be `16 * (max power of 2 <= num_tables)'. */ + /* */ + /* entry_selector :: Must be log2 of `search_range / 16'. */ + /* */ + /* range_shift :: Must be `num_tables * 16 - search_range'. */ + /* */ + typedef struct SFNT_HeaderRec_ + { + FT_ULong format_tag; + FT_UShort num_tables; + FT_UShort search_range; + FT_UShort entry_selector; + FT_UShort range_shift; + + FT_ULong offset; /* not in file */ + + } SFNT_HeaderRec, *SFNT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_TableRec */ + /* */ + /* <Description> */ + /* This structure describes a given table of a TrueType font. */ + /* */ + /* <Fields> */ + /* Tag :: A four-bytes tag describing the table. */ + /* */ + /* CheckSum :: The table checksum. This value can be ignored. */ + /* */ + /* Offset :: The offset of the table from the start of the TrueType */ + /* font in its resource. */ + /* */ + /* Length :: The table length (in bytes). */ + /* */ + typedef struct TT_TableRec_ + { + FT_ULong Tag; /* table type */ + FT_ULong CheckSum; /* table checksum */ + FT_ULong Offset; /* table file offset */ + FT_ULong Length; /* table length */ + + } TT_TableRec, *TT_Table; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* WOFF_HeaderRec */ + /* */ + /* <Description> */ + /* WOFF file format header. */ + /* */ + /* <Fields> */ + /* See */ + /* */ + /* http://www.w3.org/TR/WOFF/#WOFFHeader */ + /* */ + typedef struct WOFF_HeaderRec_ + { + FT_ULong signature; + FT_ULong flavor; + FT_ULong length; + FT_UShort num_tables; + FT_UShort reserved; + FT_ULong totalSfntSize; + FT_UShort majorVersion; + FT_UShort minorVersion; + FT_ULong metaOffset; + FT_ULong metaLength; + FT_ULong metaOrigLength; + FT_ULong privOffset; + FT_ULong privLength; + + } WOFF_HeaderRec, *WOFF_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* WOFF_TableRec */ + /* */ + /* <Description> */ + /* This structure describes a given table of a WOFF font. */ + /* */ + /* <Fields> */ + /* Tag :: A four-bytes tag describing the table. */ + /* */ + /* Offset :: The offset of the table from the start of the WOFF */ + /* font in its resource. */ + /* */ + /* CompLength :: Compressed table length (in bytes). */ + /* */ + /* OrigLength :: Unompressed table length (in bytes). */ + /* */ + /* CheckSum :: The table checksum. This value can be ignored. */ + /* */ + /* OrigOffset :: The uncompressed table file offset. This value gets */ + /* computed while constructing the (uncompressed) SFNT */ + /* header. It is not contained in the WOFF file. */ + /* */ + typedef struct WOFF_TableRec_ + { + FT_ULong Tag; /* table ID */ + FT_ULong Offset; /* table file offset */ + FT_ULong CompLength; /* compressed table length */ + FT_ULong OrigLength; /* uncompressed table length */ + FT_ULong CheckSum; /* uncompressed checksum */ + + FT_ULong OrigOffset; /* uncompressed table file offset */ + /* (not in the WOFF file) */ + } WOFF_TableRec, *WOFF_Table; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_LongMetricsRec */ + /* */ + /* <Description> */ + /* A structure modeling the long metrics of the `hmtx' and `vmtx' */ + /* TrueType tables. The values are expressed in font units. */ + /* */ + /* <Fields> */ + /* advance :: The advance width or height for the glyph. */ + /* */ + /* bearing :: The left-side or top-side bearing for the glyph. */ + /* */ + typedef struct TT_LongMetricsRec_ + { + FT_UShort advance; + FT_Short bearing; + + } TT_LongMetricsRec, *TT_LongMetrics; + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_ShortMetrics */ + /* */ + /* <Description> */ + /* A simple type to model the short metrics of the `hmtx' and `vmtx' */ + /* tables. */ + /* */ + typedef FT_Short TT_ShortMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_NameEntryRec */ + /* */ + /* <Description> */ + /* A structure modeling TrueType name records. Name records are used */ + /* to store important strings like family name, style name, */ + /* copyright, etc. in _localized_ versions (i.e., language, encoding, */ + /* etc). */ + /* */ + /* <Fields> */ + /* platformID :: The ID of the name's encoding platform. */ + /* */ + /* encodingID :: The platform-specific ID for the name's encoding. */ + /* */ + /* languageID :: The platform-specific ID for the name's language. */ + /* */ + /* nameID :: The ID specifying what kind of name this is. */ + /* */ + /* stringLength :: The length of the string in bytes. */ + /* */ + /* stringOffset :: The offset to the string in the `name' table. */ + /* */ + /* string :: A pointer to the string's bytes. Note that these */ + /* are usually UTF-16 encoded characters. */ + /* */ + typedef struct TT_NameEntryRec_ + { + FT_UShort platformID; + FT_UShort encodingID; + FT_UShort languageID; + FT_UShort nameID; + FT_UShort stringLength; + FT_ULong stringOffset; + + /* this last field is not defined in the spec */ + /* but used by the FreeType engine */ + + FT_Byte* string; + + } TT_NameEntryRec, *TT_NameEntry; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_NameTableRec */ + /* */ + /* <Description> */ + /* A structure modeling the TrueType name table. */ + /* */ + /* <Fields> */ + /* format :: The format of the name table. */ + /* */ + /* numNameRecords :: The number of names in table. */ + /* */ + /* storageOffset :: The offset of the name table in the `name' */ + /* TrueType table. */ + /* */ + /* names :: An array of name records. */ + /* */ + /* stream :: the file's input stream. */ + /* */ + typedef struct TT_NameTableRec_ + { + FT_UShort format; + FT_UInt numNameRecords; + FT_UInt storageOffset; + TT_NameEntryRec* names; + FT_Stream stream; + + } TT_NameTableRec, *TT_NameTable; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GaspRangeRec */ + /* */ + /* <Description> */ + /* A tiny structure used to model a gasp range according to the */ + /* TrueType specification. */ + /* */ + /* <Fields> */ + /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */ + /* */ + /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */ + /* modes to be used. */ + /* */ + typedef struct TT_GaspRangeRec_ + { + FT_UShort maxPPEM; + FT_UShort gaspFlag; + + } TT_GaspRangeRec, *TT_GaspRange; + + +#define TT_GASP_GRIDFIT 0x01 +#define TT_GASP_DOGRAY 0x02 + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GaspRec */ + /* */ + /* <Description> */ + /* A structure modeling the TrueType `gasp' table used to specify */ + /* grid-fitting and anti-aliasing behaviour. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numRanges :: The number of gasp ranges in table. */ + /* */ + /* gaspRanges :: An array of gasp ranges. */ + /* */ + typedef struct TT_Gasp_ + { + FT_UShort version; + FT_UShort numRanges; + TT_GaspRange gaspRanges; + + } TT_GaspRec; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** EMBEDDED BITMAPS SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_MetricsRec */ + /* */ + /* <Description> */ + /* A structure used to hold the big metrics of a given glyph bitmap */ + /* in a TrueType or OpenType font. These are usually found in the */ + /* `EBDT' (Microsoft) or `bloc' (Apple) table. */ + /* */ + /* <Fields> */ + /* height :: The glyph height in pixels. */ + /* */ + /* width :: The glyph width in pixels. */ + /* */ + /* horiBearingX :: The horizontal left bearing. */ + /* */ + /* horiBearingY :: The horizontal top bearing. */ + /* */ + /* horiAdvance :: The horizontal advance. */ + /* */ + /* vertBearingX :: The vertical left bearing. */ + /* */ + /* vertBearingY :: The vertical top bearing. */ + /* */ + /* vertAdvance :: The vertical advance. */ + /* */ + typedef struct TT_SBit_MetricsRec_ + { + FT_UShort height; + FT_UShort width; + + FT_Short horiBearingX; + FT_Short horiBearingY; + FT_UShort horiAdvance; + + FT_Short vertBearingX; + FT_Short vertBearingY; + FT_UShort vertAdvance; + + } TT_SBit_MetricsRec, *TT_SBit_Metrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_SmallMetricsRec */ + /* */ + /* <Description> */ + /* A structure used to hold the small metrics of a given glyph bitmap */ + /* in a TrueType or OpenType font. These are usually found in the */ + /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */ + /* */ + /* <Fields> */ + /* height :: The glyph height in pixels. */ + /* */ + /* width :: The glyph width in pixels. */ + /* */ + /* bearingX :: The left-side bearing. */ + /* */ + /* bearingY :: The top-side bearing. */ + /* */ + /* advance :: The advance width or height. */ + /* */ + typedef struct TT_SBit_Small_Metrics_ + { + FT_Byte height; + FT_Byte width; + + FT_Char bearingX; + FT_Char bearingY; + FT_Byte advance; + + } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_LineMetricsRec */ + /* */ + /* <Description> */ + /* A structure used to describe the text line metrics of a given */ + /* bitmap strike, for either a horizontal or vertical layout. */ + /* */ + /* <Fields> */ + /* ascender :: The ascender in pixels. */ + /* */ + /* descender :: The descender in pixels. */ + /* */ + /* max_width :: The maximum glyph width in pixels. */ + /* */ + /* caret_slope_enumerator :: Rise of the caret slope, typically set */ + /* to 1 for non-italic fonts. */ + /* */ + /* caret_slope_denominator :: Rise of the caret slope, typically set */ + /* to 0 for non-italic fonts. */ + /* */ + /* caret_offset :: Offset in pixels to move the caret for */ + /* proper positioning. */ + /* */ + /* min_origin_SB :: Minimum of horiBearingX (resp. */ + /* vertBearingY). */ + /* min_advance_SB :: Minimum of */ + /* */ + /* horizontal advance - */ + /* ( horiBearingX + width ) */ + /* */ + /* resp. */ + /* */ + /* vertical advance - */ + /* ( vertBearingY + height ) */ + /* */ + /* max_before_BL :: Maximum of horiBearingY (resp. */ + /* vertBearingY). */ + /* */ + /* min_after_BL :: Minimum of */ + /* */ + /* horiBearingY - height */ + /* */ + /* resp. */ + /* */ + /* vertBearingX - width */ + /* */ + /* pads :: Unused (to make the size of the record */ + /* a multiple of 32 bits. */ + /* */ + typedef struct TT_SBit_LineMetricsRec_ + { + FT_Char ascender; + FT_Char descender; + FT_Byte max_width; + FT_Char caret_slope_numerator; + FT_Char caret_slope_denominator; + FT_Char caret_offset; + FT_Char min_origin_SB; + FT_Char min_advance_SB; + FT_Char max_before_BL; + FT_Char min_after_BL; + FT_Char pads[2]; + + } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_RangeRec */ + /* */ + /* <Description> */ + /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */ + /* (Microsoft) or `bloc' (Apple) tables. */ + /* */ + /* <Fields> */ + /* first_glyph :: The first glyph index in the range. */ + /* */ + /* last_glyph :: The last glyph index in the range. */ + /* */ + /* index_format :: The format of index table. Valid values are 1 */ + /* to 5. */ + /* */ + /* image_format :: The format of `EBDT' image data. */ + /* */ + /* image_offset :: The offset to image data in `EBDT'. */ + /* */ + /* image_size :: For index formats 2 and 5. This is the size in */ + /* bytes of each glyph bitmap. */ + /* */ + /* big_metrics :: For index formats 2 and 5. This is the big */ + /* metrics for each glyph bitmap. */ + /* */ + /* num_glyphs :: For index formats 4 and 5. This is the number of */ + /* glyphs in the code array. */ + /* */ + /* glyph_offsets :: For index formats 1 and 3. */ + /* */ + /* glyph_codes :: For index formats 4 and 5. */ + /* */ + /* table_offset :: The offset of the index table in the `EBLC' */ + /* table. Only used during strike loading. */ + /* */ + typedef struct TT_SBit_RangeRec_ + { + FT_UShort first_glyph; + FT_UShort last_glyph; + + FT_UShort index_format; + FT_UShort image_format; + FT_ULong image_offset; + + FT_ULong image_size; + TT_SBit_MetricsRec metrics; + FT_ULong num_glyphs; + + FT_ULong* glyph_offsets; + FT_UShort* glyph_codes; + + FT_ULong table_offset; + + } TT_SBit_RangeRec, *TT_SBit_Range; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_StrikeRec */ + /* */ + /* <Description> */ + /* A structure used describe a given bitmap strike in the `EBLC' */ + /* (Microsoft) or `bloc' (Apple) tables. */ + /* */ + /* <Fields> */ + /* num_index_ranges :: The number of index ranges. */ + /* */ + /* index_ranges :: An array of glyph index ranges. */ + /* */ + /* color_ref :: Unused. `color_ref' is put in for future */ + /* enhancements, but these fields are already */ + /* in use by other platforms (e.g. Newton). */ + /* For details, please see */ + /* */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */ + /* */ + /* hori :: The line metrics for horizontal layouts. */ + /* */ + /* vert :: The line metrics for vertical layouts. */ + /* */ + /* start_glyph :: The lowest glyph index for this strike. */ + /* */ + /* end_glyph :: The highest glyph index for this strike. */ + /* */ + /* x_ppem :: The number of horizontal pixels per EM. */ + /* */ + /* y_ppem :: The number of vertical pixels per EM. */ + /* */ + /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ + /* and 8. */ + /* */ + /* flags :: Is this a vertical or horizontal strike? For */ + /* details, please see */ + /* */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */ + /* */ + typedef struct TT_SBit_StrikeRec_ + { + FT_Int num_ranges; + TT_SBit_Range sbit_ranges; + FT_ULong ranges_offset; + + FT_ULong color_ref; + + TT_SBit_LineMetricsRec hori; + TT_SBit_LineMetricsRec vert; + + FT_UShort start_glyph; + FT_UShort end_glyph; + + FT_Byte x_ppem; + FT_Byte y_ppem; + + FT_Byte bit_depth; + FT_Char flags; + + } TT_SBit_StrikeRec, *TT_SBit_Strike; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_ComponentRec */ + /* */ + /* <Description> */ + /* A simple structure to describe a compound sbit element. */ + /* */ + /* <Fields> */ + /* glyph_code :: The element's glyph index. */ + /* */ + /* x_offset :: The element's left bearing. */ + /* */ + /* y_offset :: The element's top bearing. */ + /* */ + typedef struct TT_SBit_ComponentRec_ + { + FT_UShort glyph_code; + FT_Char x_offset; + FT_Char y_offset; + + } TT_SBit_ComponentRec, *TT_SBit_Component; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_SBit_ScaleRec */ + /* */ + /* <Description> */ + /* A structure used describe a given bitmap scaling table, as defined */ + /* in the `EBSC' table. */ + /* */ + /* <Fields> */ + /* hori :: The horizontal line metrics. */ + /* */ + /* vert :: The vertical line metrics. */ + /* */ + /* x_ppem :: The number of horizontal pixels per EM. */ + /* */ + /* y_ppem :: The number of vertical pixels per EM. */ + /* */ + /* x_ppem_substitute :: Substitution x_ppem value. */ + /* */ + /* y_ppem_substitute :: Substitution y_ppem value. */ + /* */ + typedef struct TT_SBit_ScaleRec_ + { + TT_SBit_LineMetricsRec hori; + TT_SBit_LineMetricsRec vert; + + FT_Byte x_ppem; + FT_Byte y_ppem; + + FT_Byte x_ppem_substitute; + FT_Byte y_ppem_substitute; + + } TT_SBit_ScaleRec, *TT_SBit_Scale; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_20Rec */ + /* */ + /* <Description> */ + /* Postscript names sub-table, format 2.0. Stores the PS name of */ + /* each glyph in the font face. */ + /* */ + /* <Fields> */ + /* num_glyphs :: The number of named glyphs in the table. */ + /* */ + /* num_names :: The number of PS names stored in the table. */ + /* */ + /* glyph_indices :: The indices of the glyphs in the names arrays. */ + /* */ + /* glyph_names :: The PS names not in Mac Encoding. */ + /* */ + typedef struct TT_Post_20Rec_ + { + FT_UShort num_glyphs; + FT_UShort num_names; + FT_UShort* glyph_indices; + FT_Char** glyph_names; + + } TT_Post_20Rec, *TT_Post_20; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_25Rec */ + /* */ + /* <Description> */ + /* Postscript names sub-table, format 2.5. Stores the PS name of */ + /* each glyph in the font face. */ + /* */ + /* <Fields> */ + /* num_glyphs :: The number of glyphs in the table. */ + /* */ + /* offsets :: An array of signed offsets in a normal Mac */ + /* Postscript name encoding. */ + /* */ + typedef struct TT_Post_25_ + { + FT_UShort num_glyphs; + FT_Char* offsets; + + } TT_Post_25Rec, *TT_Post_25; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Post_NamesRec */ + /* */ + /* <Description> */ + /* Postscript names table, either format 2.0 or 2.5. */ + /* */ + /* <Fields> */ + /* loaded :: A flag to indicate whether the PS names are loaded. */ + /* */ + /* format_20 :: The sub-table used for format 2.0. */ + /* */ + /* format_25 :: The sub-table used for format 2.5. */ + /* */ + typedef struct TT_Post_NamesRec_ + { + FT_Bool loaded; + + union + { + TT_Post_20Rec format_20; + TT_Post_25Rec format_25; + + } names; + + } TT_Post_NamesRec, *TT_Post_Names; + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** GX VARIATION TABLE SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + typedef struct GX_BlendRec_ *GX_Blend; +#endif + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** EMBEDDED BDF PROPERTIES TABLE SUPPORT ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + /* + * These types are used to support a `BDF ' table that isn't part of the + * official TrueType specification. It is mainly used in SFNT-based + * bitmap fonts that were generated from a set of BDF fonts. + * + * The format of the table is as follows. + * + * USHORT version `BDF ' table version number, should be 0x0001. + * USHORT strikeCount Number of strikes (bitmap sizes) in this table. + * ULONG stringTable Offset (from start of BDF table) to string + * table. + * + * This is followed by an array of `strikeCount' descriptors, having the + * following format. + * + * USHORT ppem Vertical pixels per EM for this strike. + * USHORT numItems Number of items for this strike (properties and + * atoms). Maximum is 255. + * + * This array in turn is followed by `strikeCount' value sets. Each + * `value set' is an array of `numItems' items with the following format. + * + * ULONG item_name Offset in string table to item name. + * USHORT item_type The item type. Possible values are + * 0 => string (e.g., COMMENT) + * 1 => atom (e.g., FONT or even SIZE) + * 2 => int32 + * 3 => uint32 + * 0x10 => A flag to indicate a properties. This + * is ORed with the above values. + * ULONG item_value For strings => Offset into string table without + * the corresponding double quotes. + * For atoms => Offset into string table. + * For integers => Direct value. + * + * All strings in the string table consist of bytes and are + * zero-terminated. + * + */ + +#ifdef TT_CONFIG_OPTION_BDF + + typedef struct TT_BDFRec_ + { + FT_Byte* table; + FT_Byte* table_end; + FT_Byte* strings; + FT_ULong strings_size; + FT_UInt num_strikes; + FT_Bool loaded; + + } TT_BDFRec, *TT_BDF; + +#endif /* TT_CONFIG_OPTION_BDF */ + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /*** ***/ + /*** ***/ + /*** ORIGINAL TT_FACE CLASS DEFINITION ***/ + /*** ***/ + /*** ***/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This structure/class is defined here because it is common to the */ + /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ + /* */ + /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */ + /* shared between font drivers, and are thus defined in `ttobjs.h'. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* TT_Face */ + /* */ + /* <Description> */ + /* A handle to a TrueType face/font object. A TT_Face encapsulates */ + /* the resolution and scaling independent parts of a TrueType font */ + /* resource. */ + /* */ + /* <Note> */ + /* The TT_Face structure is also used as a `parent class' for the */ + /* OpenType-CFF class (T2_Face). */ + /* */ + typedef struct TT_FaceRec_* TT_Face; + + + /* a function type used for the truetype bytecode interpreter hooks */ + typedef FT_Error + (*TT_Interpreter)( void* exec_context ); + + /* forward declaration */ + typedef struct TT_LoaderRec_* TT_Loader; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_GotoTableFunc */ + /* */ + /* <Description> */ + /* Seeks a stream to the start of a given TrueType table. */ + /* */ + /* <Input> */ + /* face :: A handle to the target face object. */ + /* */ + /* tag :: A 4-byte tag used to name the table. */ + /* */ + /* stream :: The input stream. */ + /* */ + /* <Output> */ + /* length :: The length of the table in bytes. Set to 0 if not */ + /* needed. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* The stream cursor must be at the font file's origin. */ + /* */ + typedef FT_Error + (*TT_Loader_GotoTableFunc)( TT_Face face, + FT_ULong tag, + FT_Stream stream, + FT_ULong* length ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_StartGlyphFunc */ + /* */ + /* <Description> */ + /* Seeks a stream to the start of a given glyph element, and opens a */ + /* frame for it. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + /* glyph index :: The index of the glyph to access. */ + /* */ + /* offset :: The offset of the glyph according to the */ + /* `locations' table. */ + /* */ + /* byte_count :: The size of the frame in bytes. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function is normally equivalent to FT_STREAM_SEEK(offset) */ + /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */ + /* but alternative formats (e.g. compressed ones) might use something */ + /* different. */ + /* */ + typedef FT_Error + (*TT_Loader_StartGlyphFunc)( TT_Loader loader, + FT_UInt glyph_index, + FT_ULong offset, + FT_UInt byte_count ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_ReadGlyphFunc */ + /* */ + /* <Description> */ + /* Reads one glyph element (its header, a simple glyph, or a */ + /* composite) from the loader's current stream frame. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + typedef FT_Error + (*TT_Loader_ReadGlyphFunc)( TT_Loader loader ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* TT_Loader_EndGlyphFunc */ + /* */ + /* <Description> */ + /* Closes the current loader stream frame for the glyph. */ + /* */ + /* <Input> */ + /* loader :: The current TrueType glyph loader object. */ + /* */ + typedef void + (*TT_Loader_EndGlyphFunc)( TT_Loader loader ); + + + typedef enum TT_SbitTableType_ + { + TT_SBIT_TABLE_TYPE_NONE = 0, + TT_SBIT_TABLE_TYPE_EBLC, /* `EBLC' (Microsoft), */ + /* `bloc' (Apple) */ + TT_SBIT_TABLE_TYPE_CBLC, /* `CBLC' (Google) */ + TT_SBIT_TABLE_TYPE_SBIX, /* `sbix' (Apple) */ + + /* do not remove */ + TT_SBIT_TABLE_TYPE_MAX + + } TT_SbitTableType; + + + /*************************************************************************/ + /* */ + /* TrueType Face Type */ + /* */ + /* <Struct> */ + /* TT_Face */ + /* */ + /* <Description> */ + /* The TrueType face class. These objects model the resolution and */ + /* point-size independent data found in a TrueType font file. */ + /* */ + /* <Fields> */ + /* root :: The base FT_Face structure, managed by the */ + /* base layer. */ + /* */ + /* ttc_header :: The TrueType collection header, used when */ + /* the file is a `ttc' rather than a `ttf'. */ + /* For ordinary font files, the field */ + /* `ttc_header.count' is set to 0. */ + /* */ + /* format_tag :: The font format tag. */ + /* */ + /* num_tables :: The number of TrueType tables in this font */ + /* file. */ + /* */ + /* dir_tables :: The directory of TrueType tables for this */ + /* font file. */ + /* */ + /* header :: The font's font header (`head' table). */ + /* Read on font opening. */ + /* */ + /* horizontal :: The font's horizontal header (`hhea' */ + /* table). This field also contains the */ + /* associated horizontal metrics table */ + /* (`hmtx'). */ + /* */ + /* max_profile :: The font's maximum profile table. Read on */ + /* font opening. Note that some maximum */ + /* values cannot be taken directly from this */ + /* table. We thus define additional fields */ + /* below to hold the computed maxima. */ + /* */ + /* vertical_info :: A boolean which is set when the font file */ + /* contains vertical metrics. If not, the */ + /* value of the `vertical' field is */ + /* undefined. */ + /* */ + /* vertical :: The font's vertical header (`vhea' table). */ + /* This field also contains the associated */ + /* vertical metrics table (`vmtx'), if found. */ + /* IMPORTANT: The contents of this field is */ + /* undefined if the `vertical_info' field is */ + /* unset. */ + /* */ + /* num_names :: The number of name records within this */ + /* TrueType font. */ + /* */ + /* name_table :: The table of name records (`name'). */ + /* */ + /* os2 :: The font's OS/2 table (`OS/2'). */ + /* */ + /* postscript :: The font's PostScript table (`post' */ + /* table). The PostScript glyph names are */ + /* not loaded by the driver on face opening. */ + /* See the `ttpost' module for more details. */ + /* */ + /* cmap_table :: Address of the face's `cmap' SFNT table */ + /* in memory (it's an extracted frame). */ + /* */ + /* cmap_size :: The size in bytes of the `cmap_table' */ + /* described above. */ + /* */ + /* goto_table :: A function called by each TrueType table */ + /* loader to position a stream's cursor to */ + /* the start of a given table according to */ + /* its tag. It defaults to TT_Goto_Face but */ + /* can be different for strange formats (e.g. */ + /* Type 42). */ + /* */ + /* access_glyph_frame :: A function used to access the frame of a */ + /* given glyph within the face's font file. */ + /* */ + /* forget_glyph_frame :: A function used to forget the frame of a */ + /* given glyph when all data has been loaded. */ + /* */ + /* read_glyph_header :: A function used to read a glyph header. */ + /* It must be called between an `access' and */ + /* `forget'. */ + /* */ + /* read_simple_glyph :: A function used to read a simple glyph. */ + /* It must be called after the header was */ + /* read, and before the `forget'. */ + /* */ + /* read_composite_glyph :: A function used to read a composite glyph. */ + /* It must be called after the header was */ + /* read, and before the `forget'. */ + /* */ + /* sfnt :: A pointer to the SFNT service. */ + /* */ + /* psnames :: A pointer to the PostScript names service. */ + /* */ + /* hdmx :: The face's horizontal device metrics */ + /* (`hdmx' table). This table is optional in */ + /* TrueType/OpenType fonts. */ + /* */ + /* gasp :: The grid-fitting and scaling properties */ + /* table (`gasp'). This table is optional in */ + /* TrueType/OpenType fonts. */ + /* */ + /* pclt :: The `pclt' SFNT table. */ + /* */ + /* num_sbit_scales :: The number of sbit scales for this font. */ + /* */ + /* sbit_scales :: Array of sbit scales embedded in this */ + /* font. This table is optional in a */ + /* TrueType/OpenType font. */ + /* */ + /* postscript_names :: A table used to store the Postscript names */ + /* of the glyphs for this font. See the */ + /* file `ttconfig.h' for comments on the */ + /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */ + /* */ + /* num_locations :: The number of glyph locations in this */ + /* TrueType file. This should be */ + /* identical to the number of glyphs. */ + /* Ignored for Type 2 fonts. */ + /* */ + /* glyph_locations :: An array of longs. These are offsets to */ + /* glyph data within the `glyf' table. */ + /* Ignored for Type 2 font faces. */ + /* */ + /* glyf_len :: The length of the `glyf' table. Needed */ + /* for malformed `loca' tables. */ + /* */ + /* font_program_size :: Size in bytecodes of the face's font */ + /* program. 0 if none defined. Ignored for */ + /* Type 2 fonts. */ + /* */ + /* font_program :: The face's font program (bytecode stream) */ + /* executed at load time, also used during */ + /* glyph rendering. Comes from the `fpgm' */ + /* table. Ignored for Type 2 font fonts. */ + /* */ + /* cvt_program_size :: The size in bytecodes of the face's cvt */ + /* program. Ignored for Type 2 fonts. */ + /* */ + /* cvt_program :: The face's cvt program (bytecode stream) */ + /* executed each time an instance/size is */ + /* changed/reset. Comes from the `prep' */ + /* table. Ignored for Type 2 fonts. */ + /* */ + /* cvt_size :: Size of the control value table (in */ + /* entries). Ignored for Type 2 fonts. */ + /* */ + /* cvt :: The face's original control value table. */ + /* Coordinates are expressed in unscaled font */ + /* units. Comes from the `cvt ' table. */ + /* Ignored for Type 2 fonts. */ + /* */ + /* num_kern_pairs :: The number of kerning pairs present in the */ + /* font file. The engine only loads the */ + /* first horizontal format 0 kern table it */ + /* finds in the font file. Ignored for */ + /* Type 2 fonts. */ + /* */ + /* kern_table_index :: The index of the kerning table in the font */ + /* kerning directory. Ignored for Type 2 */ + /* fonts. */ + /* */ + /* interpreter :: A pointer to the TrueType bytecode */ + /* interpreters field is also used to hook */ + /* the debugger in `ttdebug'. */ + /* */ + /* unpatented_hinting :: If true, use only unpatented methods in */ + /* the bytecode interpreter. */ + /* */ + /* doblend :: A boolean which is set if the font should */ + /* be blended (this is for GX var). */ + /* */ + /* blend :: Contains the data needed to control GX */ + /* variation tables (rather like Multiple */ + /* Master data). */ + /* */ + /* extra :: Reserved for third-party font drivers. */ + /* */ + /* postscript_name :: The PS name of the font. Used by the */ + /* postscript name service. */ + /* */ + typedef struct TT_FaceRec_ + { + FT_FaceRec root; + + TTC_HeaderRec ttc_header; + + FT_ULong format_tag; + FT_UShort num_tables; + TT_Table dir_tables; + + TT_Header header; /* TrueType header table */ + TT_HoriHeader horizontal; /* TrueType horizontal header */ + + TT_MaxProfile max_profile; + + FT_Bool vertical_info; + TT_VertHeader vertical; /* TT Vertical header, if present */ + + FT_UShort num_names; /* number of name records */ + TT_NameTableRec name_table; /* name table */ + + TT_OS2 os2; /* TrueType OS/2 table */ + TT_Postscript postscript; /* TrueType Postscript table */ + + FT_Byte* cmap_table; /* extracted `cmap' table */ + FT_ULong cmap_size; + + TT_Loader_GotoTableFunc goto_table; + + TT_Loader_StartGlyphFunc access_glyph_frame; + TT_Loader_EndGlyphFunc forget_glyph_frame; + TT_Loader_ReadGlyphFunc read_glyph_header; + TT_Loader_ReadGlyphFunc read_simple_glyph; + TT_Loader_ReadGlyphFunc read_composite_glyph; + + /* a typeless pointer to the SFNT_Interface table used to load */ + /* the basic TrueType tables in the face object */ + void* sfnt; + + /* a typeless pointer to the FT_Service_PsCMapsRec table used to */ + /* handle glyph names <-> unicode & Mac values */ + void* psnames; + + + /***********************************************************************/ + /* */ + /* Optional TrueType/OpenType tables */ + /* */ + /***********************************************************************/ + + /* grid-fitting and scaling table */ + TT_GaspRec gasp; /* the `gasp' table */ + + /* PCL 5 table */ + TT_PCLT pclt; + + /* embedded bitmaps support */ + FT_ULong num_sbit_scales; + TT_SBit_Scale sbit_scales; + + /* postscript names table */ + TT_Post_NamesRec postscript_names; + + + /***********************************************************************/ + /* */ + /* TrueType-specific fields (ignored by the OTF-Type2 driver) */ + /* */ + /***********************************************************************/ + + /* the font program, if any */ + FT_ULong font_program_size; + FT_Byte* font_program; + + /* the cvt program, if any */ + FT_ULong cvt_program_size; + FT_Byte* cvt_program; + + /* the original, unscaled, control value table */ + FT_ULong cvt_size; + FT_Short* cvt; + + /* A pointer to the bytecode interpreter to use. This is also */ + /* used to hook the debugger for the `ttdebug' utility. */ + TT_Interpreter interpreter; + +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING + /* Use unpatented hinting only. */ + FT_Bool unpatented_hinting; +#endif + + /***********************************************************************/ + /* */ + /* Other tables or fields. This is used by derivative formats like */ + /* OpenType. */ + /* */ + /***********************************************************************/ + + FT_Generic extra; + + const char* postscript_name; + + FT_ULong glyf_len; + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + FT_Bool doblend; + GX_Blend blend; +#endif + + /* since version 2.2 */ + + FT_Byte* horz_metrics; + FT_ULong horz_metrics_size; + + FT_Byte* vert_metrics; + FT_ULong vert_metrics_size; + + FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */ + FT_Byte* glyph_locations; + + FT_Byte* hdmx_table; + FT_ULong hdmx_table_size; + FT_UInt hdmx_record_count; + FT_ULong hdmx_record_size; + FT_Byte* hdmx_record_sizes; + + FT_Byte* sbit_table; + FT_ULong sbit_table_size; + TT_SbitTableType sbit_table_type; + FT_UInt sbit_num_strikes; + + FT_Byte* kern_table; + FT_ULong kern_table_size; + FT_UInt num_kern_tables; + FT_UInt32 kern_avail_bits; + FT_UInt32 kern_order_bits; + +#ifdef TT_CONFIG_OPTION_BDF + TT_BDFRec bdf; +#endif /* TT_CONFIG_OPTION_BDF */ + + /* since 2.3.0 */ + FT_ULong horz_metrics_offset; + FT_ULong vert_metrics_offset; + +#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING + /* since 2.4.12 */ + FT_ULong sph_found_func_flags; /* special functions found */ + /* for this face */ + FT_Bool sph_compatibility_mode; +#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + + } TT_FaceRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_GlyphZoneRec */ + /* */ + /* <Description> */ + /* A glyph zone is used to load, scale and hint glyph outline */ + /* coordinates. */ + /* */ + /* <Fields> */ + /* memory :: A handle to the memory manager. */ + /* */ + /* max_points :: The maximum size in points of the zone. */ + /* */ + /* max_contours :: Max size in links contours of the zone. */ + /* */ + /* n_points :: The current number of points in the zone. */ + /* */ + /* n_contours :: The current number of contours in the zone. */ + /* */ + /* org :: The original glyph coordinates (font */ + /* units/scaled). */ + /* */ + /* cur :: The current glyph coordinates (scaled/hinted). */ + /* */ + /* tags :: The point control tags. */ + /* */ + /* contours :: The contours end points. */ + /* */ + /* first_point :: Offset of the current subglyph's first point. */ + /* */ + typedef struct TT_GlyphZoneRec_ + { + FT_Memory memory; + FT_UShort max_points; + FT_Short max_contours; + FT_UShort n_points; /* number of points in zone */ + FT_Short n_contours; /* number of contours */ + + FT_Vector* org; /* original point coordinates */ + FT_Vector* cur; /* current point coordinates */ + FT_Vector* orus; /* original (unscaled) point coordinates */ + + FT_Byte* tags; /* current touch flags */ + FT_UShort* contours; /* contour end points */ + + FT_UShort first_point; /* offset of first (#0) point */ + + } TT_GlyphZoneRec, *TT_GlyphZone; + + + /* handle to execution context */ + typedef struct TT_ExecContextRec_* TT_ExecContext; + + /* glyph loader structure */ + typedef struct TT_LoaderRec_ + { + FT_Face face; + FT_Size size; + FT_GlyphSlot glyph; + FT_GlyphLoader gloader; + + FT_ULong load_flags; + FT_UInt glyph_index; + + FT_Stream stream; + FT_Int byte_len; + + FT_Short n_contours; + FT_BBox bbox; + FT_Int left_bearing; + FT_Int advance; + FT_Int linear; + FT_Bool linear_def; + FT_Vector pp1; + FT_Vector pp2; + + FT_ULong glyf_offset; + + /* the zone where we load our glyphs */ + TT_GlyphZoneRec base; + TT_GlyphZoneRec zone; + + TT_ExecContext exec; + FT_Byte* instructions; + FT_ULong ins_pos; + + /* for possible extensibility in other formats */ + void* other; + + /* since version 2.1.8 */ + FT_Int top_bearing; + FT_Int vadvance; + FT_Vector pp3; + FT_Vector pp4; + + /* since version 2.2.1 */ + FT_Byte* cursor; + FT_Byte* limit; + + } TT_LoaderRec; + + +FT_END_HEADER + +#endif /* __TTTYPES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/t1tables.h b/lib/windows64/include/freetype/t1tables.h new file mode 100644 index 0000000..a6ea415 --- /dev/null +++ b/lib/windows64/include/freetype/t1tables.h @@ -0,0 +1,761 @@ +/***************************************************************************/ +/* */ +/* t1tables.h */ +/* */ +/* Basic Type 1/Type 2 tables definitions and interface (specification */ +/* only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __T1TABLES_H__ +#define __T1TABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* type1_tables */ + /* */ + /* <Title> */ + /* Type 1 Tables */ + /* */ + /* <Abstract> */ + /* Type~1 (PostScript) specific font tables. */ + /* */ + /* <Description> */ + /* This section contains the definition of Type 1-specific tables, */ + /* including structures related to other PostScript font formats. */ + /* */ + /* <Order> */ + /* PS_FontInfoRec */ + /* PS_FontInfo */ + /* PS_PrivateRec */ + /* PS_Private */ + /* */ + /* CID_FaceDictRec */ + /* CID_FaceDict */ + /* CID_FaceInfoRec */ + /* CID_FaceInfo */ + /* */ + /* FT_Has_PS_Glyph_Names */ + /* FT_Get_PS_Font_Info */ + /* FT_Get_PS_Font_Private */ + /* FT_Get_PS_Font_Value */ + /* */ + /* T1_Blend_Flags */ + /* T1_EncodingType */ + /* PS_Dict_Keys */ + /* */ + /*************************************************************************/ + + + /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ + /* structures in order to support Multiple Master fonts. */ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfoRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* FontInfo dictionary. */ + /* */ + typedef struct PS_FontInfoRec_ + { + FT_String* version; + FT_String* notice; + FT_String* full_name; + FT_String* family_name; + FT_String* weight; + FT_Long italic_angle; + FT_Bool is_fixed_pitch; + FT_Short underline_position; + FT_UShort underline_thickness; + + } PS_FontInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_FontInfo */ + /* */ + /* <Description> */ + /* A handle to a @PS_FontInfoRec structure. */ + /* */ + typedef struct PS_FontInfoRec_* PS_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_FontInfo */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_FontInfoRec T1_FontInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_PrivateRec */ + /* */ + /* <Description> */ + /* A structure used to model a Type~1 or Type~2 private dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* Private dictionary. */ + /* */ + typedef struct PS_PrivateRec_ + { + FT_Int unique_id; + FT_Int lenIV; + + FT_Byte num_blue_values; + FT_Byte num_other_blues; + FT_Byte num_family_blues; + FT_Byte num_family_other_blues; + + FT_Short blue_values[14]; + FT_Short other_blues[10]; + + FT_Short family_blues [14]; + FT_Short family_other_blues[10]; + + FT_Fixed blue_scale; + FT_Int blue_shift; + FT_Int blue_fuzz; + + FT_UShort standard_width[1]; + FT_UShort standard_height[1]; + + FT_Byte num_snap_widths; + FT_Byte num_snap_heights; + FT_Bool force_bold; + FT_Bool round_stem_up; + + FT_Short snap_widths [13]; /* including std width */ + FT_Short snap_heights[13]; /* including std height */ + + FT_Fixed expansion_factor; + + FT_Long language_group; + FT_Long password; + + FT_Short min_feature[2]; + + } PS_PrivateRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* PS_Private */ + /* */ + /* <Description> */ + /* A handle to a @PS_PrivateRec structure. */ + /* */ + typedef struct PS_PrivateRec_* PS_Private; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_Private */ + /* */ + /* <Description> */ + /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef PS_PrivateRec T1_Private; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_Blend_Flags */ + /* */ + /* <Description> */ + /* A set of flags used to indicate which fields are present in a */ + /* given blend dictionary (font info or private). Used to support */ + /* Multiple Masters fonts. */ + /* */ + /* <Values> */ + /* T1_BLEND_UNDERLINE_POSITION :: */ + /* T1_BLEND_UNDERLINE_THICKNESS :: */ + /* T1_BLEND_ITALIC_ANGLE :: */ + /* T1_BLEND_BLUE_VALUES :: */ + /* T1_BLEND_OTHER_BLUES :: */ + /* T1_BLEND_STANDARD_WIDTH :: */ + /* T1_BLEND_STANDARD_HEIGHT :: */ + /* T1_BLEND_STEM_SNAP_WIDTHS :: */ + /* T1_BLEND_STEM_SNAP_HEIGHTS :: */ + /* T1_BLEND_BLUE_SCALE :: */ + /* T1_BLEND_BLUE_SHIFT :: */ + /* T1_BLEND_FAMILY_BLUES :: */ + /* T1_BLEND_FAMILY_OTHER_BLUES :: */ + /* T1_BLEND_FORCE_BOLD :: */ + /* */ + typedef enum T1_Blend_Flags_ + { + /* required fields in a FontInfo blend dictionary */ + T1_BLEND_UNDERLINE_POSITION = 0, + T1_BLEND_UNDERLINE_THICKNESS, + T1_BLEND_ITALIC_ANGLE, + + /* required fields in a Private blend dictionary */ + T1_BLEND_BLUE_VALUES, + T1_BLEND_OTHER_BLUES, + T1_BLEND_STANDARD_WIDTH, + T1_BLEND_STANDARD_HEIGHT, + T1_BLEND_STEM_SNAP_WIDTHS, + T1_BLEND_STEM_SNAP_HEIGHTS, + T1_BLEND_BLUE_SCALE, + T1_BLEND_BLUE_SHIFT, + T1_BLEND_FAMILY_BLUES, + T1_BLEND_FAMILY_OTHER_BLUES, + T1_BLEND_FORCE_BOLD, + + T1_BLEND_MAX /* do not remove */ + + } T1_Blend_Flags; + + + /* these constants are deprecated; use the corresponding */ + /* `T1_Blend_Flags' values instead */ +#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION +#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS +#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE +#define t1_blend_blue_values T1_BLEND_BLUE_VALUES +#define t1_blend_other_blues T1_BLEND_OTHER_BLUES +#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH +#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT +#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS +#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS +#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE +#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT +#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES +#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES +#define t1_blend_force_bold T1_BLEND_FORCE_BOLD +#define t1_blend_max T1_BLEND_MAX + + /* */ + + + /* maximum number of Multiple Masters designs, as defined in the spec */ +#define T1_MAX_MM_DESIGNS 16 + + /* maximum number of Multiple Masters axes, as defined in the spec */ +#define T1_MAX_MM_AXIS 4 + + /* maximum number of elements in a design map */ +#define T1_MAX_MM_MAP_POINTS 20 + + + /* this structure is used to store the BlendDesignMap entry for an axis */ + typedef struct PS_DesignMap_ + { + FT_Byte num_points; + FT_Long* design_points; + FT_Fixed* blend_points; + + } PS_DesignMapRec, *PS_DesignMap; + + /* backwards-compatible definition */ + typedef PS_DesignMapRec T1_DesignMap; + + + typedef struct PS_BlendRec_ + { + FT_UInt num_designs; + FT_UInt num_axis; + + FT_String* axis_names[T1_MAX_MM_AXIS]; + FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; + PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; + + FT_Fixed* weight_vector; + FT_Fixed* default_weight_vector; + + PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; + PS_Private privates [T1_MAX_MM_DESIGNS + 1]; + + FT_ULong blend_bitflags; + + FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; + + /* since 2.3.0 */ + + /* undocumented, optional: the default design instance; */ + /* corresponds to default_weight_vector -- */ + /* num_default_design_vector == 0 means it is not present */ + /* in the font and associated metrics files */ + FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; + FT_UInt num_default_design_vector; + + } PS_BlendRec, *PS_Blend; + + + /* backwards-compatible definition */ + typedef PS_BlendRec T1_Blend; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDictRec */ + /* */ + /* <Description> */ + /* A structure used to represent data in a CID top-level dictionary. */ + /* */ + typedef struct CID_FaceDictRec_ + { + PS_PrivateRec private_dict; + + FT_UInt len_buildchar; + FT_Fixed forcebold_threshold; + FT_Pos stroke_width; + FT_Fixed expansion_factor; + + FT_Byte paint_type; + FT_Byte font_type; + FT_Matrix font_matrix; + FT_Vector font_offset; + + FT_UInt num_subrs; + FT_ULong subrmap_offset; + FT_Int sd_bytes; + + } CID_FaceDictRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceDict */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceDictRec structure. */ + /* */ + typedef struct CID_FaceDictRec_* CID_FaceDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FontDict */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceDictRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceDictRec CID_FontDict; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfoRec */ + /* */ + /* <Description> */ + /* A structure used to represent CID Face information. */ + /* */ + typedef struct CID_FaceInfoRec_ + { + FT_String* cid_font_name; + FT_Fixed cid_version; + FT_Int cid_font_type; + + FT_String* registry; + FT_String* ordering; + FT_Int supplement; + + PS_FontInfoRec font_info; + FT_BBox font_bbox; + FT_ULong uid_base; + + FT_Int num_xuid; + FT_ULong xuid[16]; + + FT_ULong cidmap_offset; + FT_Int fd_bytes; + FT_Int gd_bytes; + FT_ULong cid_count; + + FT_Int num_dicts; + CID_FaceDict font_dicts; + + FT_ULong data_offset; + + } CID_FaceInfoRec; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_FaceInfo */ + /* */ + /* <Description> */ + /* A handle to a @CID_FaceInfoRec structure. */ + /* */ + typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* CID_Info */ + /* */ + /* <Description> */ + /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ + /* kept to maintain source compatibility between various versions of */ + /* FreeType. */ + /* */ + typedef CID_FaceInfoRec CID_Info; + + + /************************************************************************ + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph + * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, + * except that certain fonts (mostly TrueType) contain incorrect + * glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ + FT_EXPORT( FT_Int ) + FT_Has_PS_Glyph_Names( FT_Face face ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * Output font info structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * String pointers within the @PS_FontInfoRec structure are owned by + * the face and don't need to be freed by the caller. Missing entries + * in the font's FontInfo dictionary are represented by NULL pointers. + * + * If the font's format is not PostScript-based, this function will + * return the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Info( FT_Face face, + PS_FontInfo afont_info ); + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Private + * + * @description: + * Retrieve the @PS_PrivateRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_private :: + * Output private dictionary structure pointer. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The string pointers within the @PS_PrivateRec structure are owned by + * the face and don't need to be freed by the caller. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Error ) + FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* T1_EncodingType */ + /* */ + /* <Description> */ + /* An enumeration describing the `Encoding' entry in a Type 1 */ + /* dictionary. */ + /* */ + /* <Values> */ + /* T1_ENCODING_TYPE_NONE :: */ + /* T1_ENCODING_TYPE_ARRAY :: */ + /* T1_ENCODING_TYPE_STANDARD :: */ + /* T1_ENCODING_TYPE_ISOLATIN1 :: */ + /* T1_ENCODING_TYPE_EXPERT :: */ + /* */ + typedef enum T1_EncodingType_ + { + T1_ENCODING_TYPE_NONE = 0, + T1_ENCODING_TYPE_ARRAY, + T1_ENCODING_TYPE_STANDARD, + T1_ENCODING_TYPE_ISOLATIN1, + T1_ENCODING_TYPE_EXPERT + + } T1_EncodingType; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* PS_Dict_Keys */ + /* */ + /* <Description> */ + /* An enumeration used in calls to @FT_Get_PS_Font_Value to identify */ + /* the Type~1 dictionary entry to retrieve. */ + /* */ + /* <Values> */ + /* PS_DICT_FONT_TYPE :: */ + /* PS_DICT_FONT_MATRIX :: */ + /* PS_DICT_FONT_BBOX :: */ + /* PS_DICT_PAINT_TYPE :: */ + /* PS_DICT_FONT_NAME :: */ + /* PS_DICT_UNIQUE_ID :: */ + /* PS_DICT_NUM_CHAR_STRINGS :: */ + /* PS_DICT_CHAR_STRING_KEY :: */ + /* PS_DICT_CHAR_STRING :: */ + /* PS_DICT_ENCODING_TYPE :: */ + /* PS_DICT_ENCODING_ENTRY :: */ + /* PS_DICT_NUM_SUBRS :: */ + /* PS_DICT_SUBR :: */ + /* PS_DICT_STD_HW :: */ + /* PS_DICT_STD_VW :: */ + /* PS_DICT_NUM_BLUE_VALUES :: */ + /* PS_DICT_BLUE_VALUE :: */ + /* PS_DICT_BLUE_FUZZ :: */ + /* PS_DICT_NUM_OTHER_BLUES :: */ + /* PS_DICT_OTHER_BLUE :: */ + /* PS_DICT_NUM_FAMILY_BLUES :: */ + /* PS_DICT_FAMILY_BLUE :: */ + /* PS_DICT_NUM_FAMILY_OTHER_BLUES :: */ + /* PS_DICT_FAMILY_OTHER_BLUE :: */ + /* PS_DICT_BLUE_SCALE :: */ + /* PS_DICT_BLUE_SHIFT :: */ + /* PS_DICT_NUM_STEM_SNAP_H :: */ + /* PS_DICT_STEM_SNAP_H :: */ + /* PS_DICT_NUM_STEM_SNAP_V :: */ + /* PS_DICT_STEM_SNAP_V :: */ + /* PS_DICT_FORCE_BOLD :: */ + /* PS_DICT_RND_STEM_UP :: */ + /* PS_DICT_MIN_FEATURE :: */ + /* PS_DICT_LEN_IV :: */ + /* PS_DICT_PASSWORD :: */ + /* PS_DICT_LANGUAGE_GROUP :: */ + /* PS_DICT_VERSION :: */ + /* PS_DICT_NOTICE :: */ + /* PS_DICT_FULL_NAME :: */ + /* PS_DICT_FAMILY_NAME :: */ + /* PS_DICT_WEIGHT :: */ + /* PS_DICT_IS_FIXED_PITCH :: */ + /* PS_DICT_UNDERLINE_POSITION :: */ + /* PS_DICT_UNDERLINE_THICKNESS :: */ + /* PS_DICT_FS_TYPE :: */ + /* PS_DICT_ITALIC_ANGLE :: */ + /* */ + typedef enum PS_Dict_Keys_ + { + /* conventionally in the font dictionary */ + PS_DICT_FONT_TYPE, /* FT_Byte */ + PS_DICT_FONT_MATRIX, /* FT_Fixed */ + PS_DICT_FONT_BBOX, /* FT_Fixed */ + PS_DICT_PAINT_TYPE, /* FT_Byte */ + PS_DICT_FONT_NAME, /* FT_String* */ + PS_DICT_UNIQUE_ID, /* FT_Int */ + PS_DICT_NUM_CHAR_STRINGS, /* FT_Int */ + PS_DICT_CHAR_STRING_KEY, /* FT_String* */ + PS_DICT_CHAR_STRING, /* FT_String* */ + PS_DICT_ENCODING_TYPE, /* T1_EncodingType */ + PS_DICT_ENCODING_ENTRY, /* FT_String* */ + + /* conventionally in the font Private dictionary */ + PS_DICT_NUM_SUBRS, /* FT_Int */ + PS_DICT_SUBR, /* FT_String* */ + PS_DICT_STD_HW, /* FT_UShort */ + PS_DICT_STD_VW, /* FT_UShort */ + PS_DICT_NUM_BLUE_VALUES, /* FT_Byte */ + PS_DICT_BLUE_VALUE, /* FT_Short */ + PS_DICT_BLUE_FUZZ, /* FT_Int */ + PS_DICT_NUM_OTHER_BLUES, /* FT_Byte */ + PS_DICT_OTHER_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_BLUE, /* FT_Short */ + PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte */ + PS_DICT_FAMILY_OTHER_BLUE, /* FT_Short */ + PS_DICT_BLUE_SCALE, /* FT_Fixed */ + PS_DICT_BLUE_SHIFT, /* FT_Int */ + PS_DICT_NUM_STEM_SNAP_H, /* FT_Byte */ + PS_DICT_STEM_SNAP_H, /* FT_Short */ + PS_DICT_NUM_STEM_SNAP_V, /* FT_Byte */ + PS_DICT_STEM_SNAP_V, /* FT_Short */ + PS_DICT_FORCE_BOLD, /* FT_Bool */ + PS_DICT_RND_STEM_UP, /* FT_Bool */ + PS_DICT_MIN_FEATURE, /* FT_Short */ + PS_DICT_LEN_IV, /* FT_Int */ + PS_DICT_PASSWORD, /* FT_Long */ + PS_DICT_LANGUAGE_GROUP, /* FT_Long */ + + /* conventionally in the font FontInfo dictionary */ + PS_DICT_VERSION, /* FT_String* */ + PS_DICT_NOTICE, /* FT_String* */ + PS_DICT_FULL_NAME, /* FT_String* */ + PS_DICT_FAMILY_NAME, /* FT_String* */ + PS_DICT_WEIGHT, /* FT_String* */ + PS_DICT_IS_FIXED_PITCH, /* FT_Bool */ + PS_DICT_UNDERLINE_POSITION, /* FT_Short */ + PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */ + PS_DICT_FS_TYPE, /* FT_UShort */ + PS_DICT_ITALIC_ANGLE, /* FT_Long */ + + PS_DICT_MAX = PS_DICT_ITALIC_ANGLE + + } PS_Dict_Keys; + + + /************************************************************************ + * + * @function: + * FT_Get_PS_Font_Value + * + * @description: + * Retrieve the value for the supplied key from a PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * key :: + * An enumeration value representing the dictionary key to retrieve. + * + * idx :: + * For array values, this specifies the index to be returned. + * + * value :: + * A pointer to memory into which to write the value. + * + * valen_len :: + * The size, in bytes, of the memory supplied for the value. + * + * @output: + * value :: + * The value matching the above key, if it exists. + * + * @return: + * The amount of memory (in bytes) required to hold the requested + * value (if it exists, -1 otherwise). + * + * @note: + * The values returned are not pointers into the internal structures of + * the face, but are `fresh' copies, so that the memory containing them + * belongs to the calling application. This also enforces the + * `read-only' nature of these values, i.e., this function cannot be + * used to manipulate the face. + * + * `value' is a void pointer because the values returned can be of + * various types. + * + * If either `value' is NULL or `value_len' is too small, just the + * required memory size for the requested entry is returned. + * + * The `idx' parameter is used, not only to retrieve elements of, for + * example, the FontMatrix or FontBBox, but also to retrieve name keys + * from the CharStrings dictionary, and the charstrings themselves. It + * is ignored for atomic values. + * + * PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To + * get the value as in the font stream, you need to divide by + * 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale). + * + * IMPORTANT: Only key/value pairs read by the FreeType interpreter can + * be retrieved. So, for example, PostScript procedures such as NP, + * ND, and RD are not available. Arbitrary keys are, obviously, not be + * available either. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ + FT_EXPORT( FT_Long ) + FT_Get_PS_Font_Value( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + + /* */ + +FT_END_HEADER + +#endif /* __T1TABLES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ttnameid.h b/lib/windows64/include/freetype/ttnameid.h new file mode 100644 index 0000000..c9585f2 --- /dev/null +++ b/lib/windows64/include/freetype/ttnameid.h @@ -0,0 +1,1237 @@ +/***************************************************************************/ +/* */ +/* ttnameid.h */ +/* */ +/* TrueType name ID definitions (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTNAMEID_H__ +#define __TTNAMEID_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + + + /*************************************************************************/ + /* */ + /* Possible values for the `platform' identifier code in the name */ + /* records of the TTF `name' table. */ + /* */ + /*************************************************************************/ + + + /*********************************************************************** + * + * @enum: + * TT_PLATFORM_XXX + * + * @description: + * A list of valid values for the `platform_id' identifier code in + * @FT_CharMapRec and @FT_SfntName structures. + * + * @values: + * TT_PLATFORM_APPLE_UNICODE :: + * Used by Apple to indicate a Unicode character map and/or name entry. + * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note + * that name entries in this format are coded as big-endian UCS-2 + * character codes _only_. + * + * TT_PLATFORM_MACINTOSH :: + * Used by Apple to indicate a MacOS-specific charmap and/or name entry. + * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that + * most TrueType fonts contain an Apple roman charmap to be usable on + * MacOS systems (even if they contain a Microsoft charmap as well). + * + * TT_PLATFORM_ISO :: + * This value was used to specify ISO/IEC 10646 charmaps. It is however + * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding + * `encoding_id' values. + * + * TT_PLATFORM_MICROSOFT :: + * Used by Microsoft to indicate Windows-specific charmaps. See + * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. + * Note that most fonts contain a Unicode charmap using + * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). + * + * TT_PLATFORM_CUSTOM :: + * Used to indicate application-specific charmaps. + * + * TT_PLATFORM_ADOBE :: + * This value isn't part of any font format specification, but is used + * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec + * structure. See @TT_ADOBE_ID_XXX. + */ + +#define TT_PLATFORM_APPLE_UNICODE 0 +#define TT_PLATFORM_MACINTOSH 1 +#define TT_PLATFORM_ISO 2 /* deprecated */ +#define TT_PLATFORM_MICROSOFT 3 +#define TT_PLATFORM_CUSTOM 4 +#define TT_PLATFORM_ADOBE 7 /* artificial */ + + + /*********************************************************************** + * + * @enum: + * TT_APPLE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. + * + * @values: + * TT_APPLE_ID_DEFAULT :: + * Unicode version 1.0. + * + * TT_APPLE_ID_UNICODE_1_1 :: + * Unicode 1.1; specifies Hangul characters starting at U+34xx. + * + * TT_APPLE_ID_ISO_10646 :: + * Deprecated (identical to preceding). + * + * TT_APPLE_ID_UNICODE_2_0 :: + * Unicode 2.0 and beyond (UTF-16 BMP only). + * + * TT_APPLE_ID_UNICODE_32 :: + * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations + * on a real cmap. + */ + +#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ +#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ + + + /*********************************************************************** + * + * @enum: + * TT_MAC_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MACINTOSH charmaps and name entries. + * + * @values: + * TT_MAC_ID_ROMAN :: + * TT_MAC_ID_JAPANESE :: + * TT_MAC_ID_TRADITIONAL_CHINESE :: + * TT_MAC_ID_KOREAN :: + * TT_MAC_ID_ARABIC :: + * TT_MAC_ID_HEBREW :: + * TT_MAC_ID_GREEK :: + * TT_MAC_ID_RUSSIAN :: + * TT_MAC_ID_RSYMBOL :: + * TT_MAC_ID_DEVANAGARI :: + * TT_MAC_ID_GURMUKHI :: + * TT_MAC_ID_GUJARATI :: + * TT_MAC_ID_ORIYA :: + * TT_MAC_ID_BENGALI :: + * TT_MAC_ID_TAMIL :: + * TT_MAC_ID_TELUGU :: + * TT_MAC_ID_KANNADA :: + * TT_MAC_ID_MALAYALAM :: + * TT_MAC_ID_SINHALESE :: + * TT_MAC_ID_BURMESE :: + * TT_MAC_ID_KHMER :: + * TT_MAC_ID_THAI :: + * TT_MAC_ID_LAOTIAN :: + * TT_MAC_ID_GEORGIAN :: + * TT_MAC_ID_ARMENIAN :: + * TT_MAC_ID_MALDIVIAN :: + * TT_MAC_ID_SIMPLIFIED_CHINESE :: + * TT_MAC_ID_TIBETAN :: + * TT_MAC_ID_MONGOLIAN :: + * TT_MAC_ID_GEEZ :: + * TT_MAC_ID_SLAVIC :: + * TT_MAC_ID_VIETNAMESE :: + * TT_MAC_ID_SINDHI :: + * TT_MAC_ID_UNINTERP :: + */ + +#define TT_MAC_ID_ROMAN 0 +#define TT_MAC_ID_JAPANESE 1 +#define TT_MAC_ID_TRADITIONAL_CHINESE 2 +#define TT_MAC_ID_KOREAN 3 +#define TT_MAC_ID_ARABIC 4 +#define TT_MAC_ID_HEBREW 5 +#define TT_MAC_ID_GREEK 6 +#define TT_MAC_ID_RUSSIAN 7 +#define TT_MAC_ID_RSYMBOL 8 +#define TT_MAC_ID_DEVANAGARI 9 +#define TT_MAC_ID_GURMUKHI 10 +#define TT_MAC_ID_GUJARATI 11 +#define TT_MAC_ID_ORIYA 12 +#define TT_MAC_ID_BENGALI 13 +#define TT_MAC_ID_TAMIL 14 +#define TT_MAC_ID_TELUGU 15 +#define TT_MAC_ID_KANNADA 16 +#define TT_MAC_ID_MALAYALAM 17 +#define TT_MAC_ID_SINHALESE 18 +#define TT_MAC_ID_BURMESE 19 +#define TT_MAC_ID_KHMER 20 +#define TT_MAC_ID_THAI 21 +#define TT_MAC_ID_LAOTIAN 22 +#define TT_MAC_ID_GEORGIAN 23 +#define TT_MAC_ID_ARMENIAN 24 +#define TT_MAC_ID_MALDIVIAN 25 +#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 +#define TT_MAC_ID_TIBETAN 26 +#define TT_MAC_ID_MONGOLIAN 27 +#define TT_MAC_ID_GEEZ 28 +#define TT_MAC_ID_SLAVIC 29 +#define TT_MAC_ID_VIETNAMESE 30 +#define TT_MAC_ID_SINDHI 31 +#define TT_MAC_ID_UNINTERP 32 + + + /*********************************************************************** + * + * @enum: + * TT_ISO_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ISO charmaps and name entries. + * + * Their use is now deprecated. + * + * @values: + * TT_ISO_ID_7BIT_ASCII :: + * ASCII. + * TT_ISO_ID_10646 :: + * ISO/10646. + * TT_ISO_ID_8859_1 :: + * Also known as Latin-1. + */ + +#define TT_ISO_ID_7BIT_ASCII 0 +#define TT_ISO_ID_10646 1 +#define TT_ISO_ID_8859_1 2 + + + /*********************************************************************** + * + * @enum: + * TT_MS_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MICROSOFT charmaps and name entries. + * + * @values: + * TT_MS_ID_SYMBOL_CS :: + * Corresponds to Microsoft symbol encoding. See + * @FT_ENCODING_MS_SYMBOL. + * + * TT_MS_ID_UNICODE_CS :: + * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See + * @FT_ENCODING_UNICODE. + * + * TT_MS_ID_SJIS :: + * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. + * + * TT_MS_ID_GB2312 :: + * Corresponds to Simplified Chinese as used in Mainland China. See + * @FT_ENCODING_GB2312. + * + * TT_MS_ID_BIG_5 :: + * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. + * See @FT_ENCODING_BIG5. + * + * TT_MS_ID_WANSUNG :: + * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. + * + * TT_MS_ID_JOHAB :: + * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. + * + * TT_MS_ID_UCS_4 :: + * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to + * the OpenType specification version 1.4 (mid-2001.) + */ + +#define TT_MS_ID_SYMBOL_CS 0 +#define TT_MS_ID_UNICODE_CS 1 +#define TT_MS_ID_SJIS 2 +#define TT_MS_ID_GB2312 3 +#define TT_MS_ID_BIG_5 4 +#define TT_MS_ID_WANSUNG 5 +#define TT_MS_ID_JOHAB 6 +#define TT_MS_ID_UCS_4 10 + + + /*********************************************************************** + * + * @enum: + * TT_ADOBE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! + * + * @values: + * TT_ADOBE_ID_STANDARD :: + * Adobe standard encoding. + * TT_ADOBE_ID_EXPERT :: + * Adobe expert encoding. + * TT_ADOBE_ID_CUSTOM :: + * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. + */ + +#define TT_ADOBE_ID_STANDARD 0 +#define TT_ADOBE_ID_EXPERT 1 +#define TT_ADOBE_ID_CUSTOM 2 +#define TT_ADOBE_ID_LATIN_1 3 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MACINTOSH. These values are also used as return values */ + /* for function @FT_Get_CMap_Language_ID. */ + /* */ + /* The canonical source for the Apple assigned Language ID's is at */ + /* */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html */ + /* */ +#define TT_MAC_LANGID_ENGLISH 0 +#define TT_MAC_LANGID_FRENCH 1 +#define TT_MAC_LANGID_GERMAN 2 +#define TT_MAC_LANGID_ITALIAN 3 +#define TT_MAC_LANGID_DUTCH 4 +#define TT_MAC_LANGID_SWEDISH 5 +#define TT_MAC_LANGID_SPANISH 6 +#define TT_MAC_LANGID_DANISH 7 +#define TT_MAC_LANGID_PORTUGUESE 8 +#define TT_MAC_LANGID_NORWEGIAN 9 +#define TT_MAC_LANGID_HEBREW 10 +#define TT_MAC_LANGID_JAPANESE 11 +#define TT_MAC_LANGID_ARABIC 12 +#define TT_MAC_LANGID_FINNISH 13 +#define TT_MAC_LANGID_GREEK 14 +#define TT_MAC_LANGID_ICELANDIC 15 +#define TT_MAC_LANGID_MALTESE 16 +#define TT_MAC_LANGID_TURKISH 17 +#define TT_MAC_LANGID_CROATIAN 18 +#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 +#define TT_MAC_LANGID_URDU 20 +#define TT_MAC_LANGID_HINDI 21 +#define TT_MAC_LANGID_THAI 22 +#define TT_MAC_LANGID_KOREAN 23 +#define TT_MAC_LANGID_LITHUANIAN 24 +#define TT_MAC_LANGID_POLISH 25 +#define TT_MAC_LANGID_HUNGARIAN 26 +#define TT_MAC_LANGID_ESTONIAN 27 +#define TT_MAC_LANGID_LETTISH 28 +#define TT_MAC_LANGID_SAAMISK 29 +#define TT_MAC_LANGID_FAEROESE 30 +#define TT_MAC_LANGID_FARSI 31 +#define TT_MAC_LANGID_RUSSIAN 32 +#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 +#define TT_MAC_LANGID_FLEMISH 34 +#define TT_MAC_LANGID_IRISH 35 +#define TT_MAC_LANGID_ALBANIAN 36 +#define TT_MAC_LANGID_ROMANIAN 37 +#define TT_MAC_LANGID_CZECH 38 +#define TT_MAC_LANGID_SLOVAK 39 +#define TT_MAC_LANGID_SLOVENIAN 40 +#define TT_MAC_LANGID_YIDDISH 41 +#define TT_MAC_LANGID_SERBIAN 42 +#define TT_MAC_LANGID_MACEDONIAN 43 +#define TT_MAC_LANGID_BULGARIAN 44 +#define TT_MAC_LANGID_UKRAINIAN 45 +#define TT_MAC_LANGID_BYELORUSSIAN 46 +#define TT_MAC_LANGID_UZBEK 47 +#define TT_MAC_LANGID_KAZAKH 48 +#define TT_MAC_LANGID_AZERBAIJANI 49 +#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 +#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 +#define TT_MAC_LANGID_ARMENIAN 51 +#define TT_MAC_LANGID_GEORGIAN 52 +#define TT_MAC_LANGID_MOLDAVIAN 53 +#define TT_MAC_LANGID_KIRGHIZ 54 +#define TT_MAC_LANGID_TAJIKI 55 +#define TT_MAC_LANGID_TURKMEN 56 +#define TT_MAC_LANGID_MONGOLIAN 57 +#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 +#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 +#define TT_MAC_LANGID_PASHTO 59 +#define TT_MAC_LANGID_KURDISH 60 +#define TT_MAC_LANGID_KASHMIRI 61 +#define TT_MAC_LANGID_SINDHI 62 +#define TT_MAC_LANGID_TIBETAN 63 +#define TT_MAC_LANGID_NEPALI 64 +#define TT_MAC_LANGID_SANSKRIT 65 +#define TT_MAC_LANGID_MARATHI 66 +#define TT_MAC_LANGID_BENGALI 67 +#define TT_MAC_LANGID_ASSAMESE 68 +#define TT_MAC_LANGID_GUJARATI 69 +#define TT_MAC_LANGID_PUNJABI 70 +#define TT_MAC_LANGID_ORIYA 71 +#define TT_MAC_LANGID_MALAYALAM 72 +#define TT_MAC_LANGID_KANNADA 73 +#define TT_MAC_LANGID_TAMIL 74 +#define TT_MAC_LANGID_TELUGU 75 +#define TT_MAC_LANGID_SINHALESE 76 +#define TT_MAC_LANGID_BURMESE 77 +#define TT_MAC_LANGID_KHMER 78 +#define TT_MAC_LANGID_LAO 79 +#define TT_MAC_LANGID_VIETNAMESE 80 +#define TT_MAC_LANGID_INDONESIAN 81 +#define TT_MAC_LANGID_TAGALOG 82 +#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 +#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 +#define TT_MAC_LANGID_AMHARIC 85 +#define TT_MAC_LANGID_TIGRINYA 86 +#define TT_MAC_LANGID_GALLA 87 +#define TT_MAC_LANGID_SOMALI 88 +#define TT_MAC_LANGID_SWAHILI 89 +#define TT_MAC_LANGID_RUANDA 90 +#define TT_MAC_LANGID_RUNDI 91 +#define TT_MAC_LANGID_CHEWA 92 +#define TT_MAC_LANGID_MALAGASY 93 +#define TT_MAC_LANGID_ESPERANTO 94 +#define TT_MAC_LANGID_WELSH 128 +#define TT_MAC_LANGID_BASQUE 129 +#define TT_MAC_LANGID_CATALAN 130 +#define TT_MAC_LANGID_LATIN 131 +#define TT_MAC_LANGID_QUECHUA 132 +#define TT_MAC_LANGID_GUARANI 133 +#define TT_MAC_LANGID_AYMARA 134 +#define TT_MAC_LANGID_TATAR 135 +#define TT_MAC_LANGID_UIGHUR 136 +#define TT_MAC_LANGID_DZONGKHA 137 +#define TT_MAC_LANGID_JAVANESE 138 +#define TT_MAC_LANGID_SUNDANESE 139 + + +#if 0 /* these seem to be errors that have been dropped */ + +#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 +#define TT_MAC_LANGID_IRISH_GAELIC 141 + +#endif + + + /* The following codes are new as of 2000-03-10 */ +#define TT_MAC_LANGID_GALICIAN 140 +#define TT_MAC_LANGID_AFRIKAANS 141 +#define TT_MAC_LANGID_BRETON 142 +#define TT_MAC_LANGID_INUKTITUT 143 +#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 +#define TT_MAC_LANGID_MANX_GAELIC 145 +#define TT_MAC_LANGID_IRISH_GAELIC 146 +#define TT_MAC_LANGID_TONGAN 147 +#define TT_MAC_LANGID_GREEK_POLYTONIC 148 +#define TT_MAC_LANGID_GREELANDIC 149 +#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 + + + /*************************************************************************/ + /* */ + /* Possible values of the language identifier field in the name records */ + /* of the TTF `name' table if the `platform' identifier code is */ + /* TT_PLATFORM_MICROSOFT. */ + /* */ + /* The canonical source for the MS assigned LCIDs is */ + /* */ + /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ + /* */ + +#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 +#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 +#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 +#define TT_MS_LANGID_ARABIC_EGYPT 0x0C01 +#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 +#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 +#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 +#define TT_MS_LANGID_ARABIC_TUNISIA 0x1C01 +#define TT_MS_LANGID_ARABIC_OMAN 0x2001 +#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 +#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 +#define TT_MS_LANGID_ARABIC_JORDAN 0x2C01 +#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 +#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 +#define TT_MS_LANGID_ARABIC_UAE 0x3801 +#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3C01 +#define TT_MS_LANGID_ARABIC_QATAR 0x4001 +#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 +#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 +#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 +#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 +#define TT_MS_LANGID_CHINESE_PRC 0x0804 +#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0C04 +#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 + +#if 1 /* this looks like the correct value */ +#define TT_MS_LANGID_CHINESE_MACAU 0x1404 +#else /* but beware, Microsoft may change its mind... + the most recent Word reference has the following: */ +#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG +#endif + +#if 0 /* used only with .NET `cultures'; commented out */ +#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04 +#endif + +#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 +#define TT_MS_LANGID_DANISH_DENMARK 0x0406 +#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 +#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 +#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0C07 +#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 +#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 +#define TT_MS_LANGID_GREEK_GREECE 0x0408 + + /* don't ask what this one means... It is commented out currently. */ +#if 0 +#define TT_MS_LANGID_GREEK_GREECE2 0x2008 +#endif + +#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 +#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 +#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 +#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0C09 +#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 +#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 +#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 +#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1C09 +#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 +#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 +#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 +#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2C09 +#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 +#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 +#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 +#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3C09 +#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 +#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 +#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 +#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040A +#define TT_MS_LANGID_SPANISH_MEXICO 0x080A +#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0C0A +#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100A +#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140A +#define TT_MS_LANGID_SPANISH_PANAMA 0x180A +#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1C0A +#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200A +#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240A +#define TT_MS_LANGID_SPANISH_PERU 0x280A +#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2C0A +#define TT_MS_LANGID_SPANISH_ECUADOR 0x300A +#define TT_MS_LANGID_SPANISH_CHILE 0x340A +#define TT_MS_LANGID_SPANISH_URUGUAY 0x380A +#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3C0A +#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400A +#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440A +#define TT_MS_LANGID_SPANISH_HONDURAS 0x480A +#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4C0A +#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500A +#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540A + /* The following ID blatantly violate MS specs by using a */ + /* sublanguage > 0x1F. */ +#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40AU +#define TT_MS_LANGID_FINNISH_FINLAND 0x040B +#define TT_MS_LANGID_FRENCH_FRANCE 0x040C +#define TT_MS_LANGID_FRENCH_BELGIUM 0x080C +#define TT_MS_LANGID_FRENCH_CANADA 0x0C0C +#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100C +#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140C +#define TT_MS_LANGID_FRENCH_MONACO 0x180C +#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1C0C +#define TT_MS_LANGID_FRENCH_REUNION 0x200C +#define TT_MS_LANGID_FRENCH_CONGO 0x240C + /* which was formerly: */ +#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO +#define TT_MS_LANGID_FRENCH_SENEGAL 0x280C +#define TT_MS_LANGID_FRENCH_CAMEROON 0x2C0C +#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300C +#define TT_MS_LANGID_FRENCH_MALI 0x340C +#define TT_MS_LANGID_FRENCH_MOROCCO 0x380C +#define TT_MS_LANGID_FRENCH_HAITI 0x3C0C + /* and another violation of the spec (see 0xE40AU) */ +#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40CU +#define TT_MS_LANGID_HEBREW_ISRAEL 0x040D +#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040E +#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040F +#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 +#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 +#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 +#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 +#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 +#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 +#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 +#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 +#define TT_MS_LANGID_POLISH_POLAND 0x0415 +#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 +#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 +#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 +#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 +#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 +#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 +#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 +#define TT_MS_LANGID_CROATIAN_CROATIA 0x041A +#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081A +#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0C1A + +#if 0 /* this used to be this value, but it looks like we were wrong */ +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101A +#else /* current sources say */ +#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101A +#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141A + /* and XPsp2 Platform SDK added (2004-07-26) */ + /* Names are shortened to be significant within 40 chars. */ +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181A +#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181A +#endif + +#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041B +#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041C +#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041D +#define TT_MS_LANGID_SWEDISH_FINLAND 0x081D +#define TT_MS_LANGID_THAI_THAILAND 0x041E +#define TT_MS_LANGID_TURKISH_TURKEY 0x041F +#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 +#define TT_MS_LANGID_URDU_INDIA 0x0820 +#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 +#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 +#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 +#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 +#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 +#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 +#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 +#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 +#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 +#define TT_MS_LANGID_FARSI_IRAN 0x0429 +#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042A +#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042B +#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042C +#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082C +#define TT_MS_LANGID_BASQUE_SPAIN 0x042D +#define TT_MS_LANGID_SORBIAN_GERMANY 0x042E +#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042F +#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 +#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 +#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 +#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 +#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 +#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 +#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 +#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 +#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 +#define TT_MS_LANGID_HINDI_INDIA 0x0439 +#define TT_MS_LANGID_MALTESE_MALTA 0x043A + /* Added by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043B +#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083B +#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3B +#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103B +#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143B +#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183B +#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3B +#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203B +#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243B + /* ... and we also keep our old identifier... */ +#define TT_MS_LANGID_SAAMI_LAPONIA 0x043B + +#if 0 /* this seems to be a previous inversion */ +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#else +#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083C +#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043C +#endif + +#define TT_MS_LANGID_YIDDISH_GERMANY 0x043D +#define TT_MS_LANGID_MALAY_MALAYSIA 0x043E +#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083E +#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043F +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ + TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN + +#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 +#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 +#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 +#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 +#define TT_MS_LANGID_BENGALI_INDIA 0x0445 +#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 +#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 +#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 +#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 +#define TT_MS_LANGID_ORIYA_INDIA 0x0448 +#define TT_MS_LANGID_TAMIL_INDIA 0x0449 +#define TT_MS_LANGID_TELUGU_INDIA 0x044A +#define TT_MS_LANGID_KANNADA_INDIA 0x044B +#define TT_MS_LANGID_MALAYALAM_INDIA 0x044C +#define TT_MS_LANGID_ASSAMESE_INDIA 0x044D +#define TT_MS_LANGID_MARATHI_INDIA 0x044E +#define TT_MS_LANGID_SANSKRIT_INDIA 0x044F +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 +#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 +#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 + /* Don't use the next constant! It has */ + /* (1) the wrong spelling (Dzonghka) */ + /* (2) Microsoft doesn't officially define it -- */ + /* at least it is not in the List of Local */ + /* ID Values. */ + /* (3) Dzongkha is not the same language as */ + /* Tibetan, so merging it is wrong anyway. */ + /* */ + /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ +#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 + +#if 0 + /* the following used to be defined */ +#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 + /* ... but it was changed; */ +#else + /* So we will continue to #define it, but with the correct value */ +#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN +#endif + +#define TT_MS_LANGID_WELSH_WALES 0x0452 +#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 +#define TT_MS_LANGID_LAO_LAOS 0x0454 +#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 +#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 +#define TT_MS_LANGID_KONKANI_INDIA 0x0457 +#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 +#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 +#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 + /* Missing a LCID for Sindhi in Devanagari script */ +#define TT_MS_LANGID_SYRIAC_SYRIA 0x045A +#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045B +#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045C +#define TT_MS_LANGID_INUKTITUT_CANADA 0x045D +#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045E +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045F +#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085F + /* Missing a LCID for Tifinagh script */ +#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 + /* Spelled this way by XPsp2 Platform SDK (2004-07-26) */ + /* script is yet unclear... might be Arabic, Nagari or Sharada */ +#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 + /* ... and aliased (by MS) for compatibility reasons. */ +#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA +#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 +#define TT_MS_LANGID_NEPALI_INDIA 0x0861 +#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 +#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 +#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 +#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 + /* alias declared in Windows 2000 */ +#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES +#define TT_MS_LANGID_EDO_NIGERIA 0x0466 +#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 +#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 +#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 +#define TT_MS_LANGID_YORUBA_NIGERIA 0x046A +#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046B +#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086B +#define TT_MS_LANGID_QUECHUA_PERU 0x0C6B +#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046C + /* Also spelled by XPsp2 Platform SDK (2004-07-26) */ +#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ + TT_MS_LANGID_SEPEDI_SOUTH_AFRICA + /* language codes 0x046D, 0x046E and 0x046F are (still) unknown. */ +#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 +#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 +#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 +#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 +#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 + /* also spelled in the `Passport SDK' list as: */ +#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA +#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 +#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 +#define TT_MS_LANGID_LATIN 0x0476 +#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 + /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ + /* not written (but OTOH the peculiar writing system is worth */ + /* studying). */ +#define TT_MS_LANGID_YI_CHINA 0x0478 +#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 + /* language codes from 0x047A to 0x047F are (still) unknown. */ +#define TT_MS_LANGID_UIGHUR_CHINA 0x0480 +#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 + +#if 0 /* not deemed useful for fonts */ +#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04FF +#endif + + + /*************************************************************************/ + /* */ + /* Possible values of the `name' identifier field in the name records of */ + /* the TTF `name' table. These values are platform independent. */ + /* */ +#define TT_NAME_ID_COPYRIGHT 0 +#define TT_NAME_ID_FONT_FAMILY 1 +#define TT_NAME_ID_FONT_SUBFAMILY 2 +#define TT_NAME_ID_UNIQUE_ID 3 +#define TT_NAME_ID_FULL_NAME 4 +#define TT_NAME_ID_VERSION_STRING 5 +#define TT_NAME_ID_PS_NAME 6 +#define TT_NAME_ID_TRADEMARK 7 + + /* the following values are from the OpenType spec */ +#define TT_NAME_ID_MANUFACTURER 8 +#define TT_NAME_ID_DESIGNER 9 +#define TT_NAME_ID_DESCRIPTION 10 +#define TT_NAME_ID_VENDOR_URL 11 +#define TT_NAME_ID_DESIGNER_URL 12 +#define TT_NAME_ID_LICENSE 13 +#define TT_NAME_ID_LICENSE_URL 14 + /* number 15 is reserved */ +#define TT_NAME_ID_PREFERRED_FAMILY 16 +#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 +#define TT_NAME_ID_MAC_FULL_NAME 18 + + /* The following code is new as of 2000-01-21 */ +#define TT_NAME_ID_SAMPLE_TEXT 19 + + /* This is new in OpenType 1.3 */ +#define TT_NAME_ID_CID_FINDFONT_NAME 20 + + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + + + /*************************************************************************/ + /* */ + /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ + /* */ + /* Updated 08-Nov-2008. */ + /* */ + + /* Bit 0 Basic Latin */ +#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ + /* Bit 1 C1 Controls and Latin-1 Supplement */ +#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ + /* Bit 2 Latin Extended-A */ +#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ + /* Bit 3 Latin Extended-B */ +#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ +#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ + /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ +#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ +#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ + /* Bit 7 Greek and Coptic */ +#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ +#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ + /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ + /* Bit 10 Armenian */ +#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ + /* Bit 11 Hebrew */ +#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ +#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ + /* Bit 15 Devanagari */ +#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ + /* Bit 16 Bengali */ +#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ + /* Bit 17 Gurmukhi */ +#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ + /* Bit 18 Gujarati */ +#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ + /* Bit 19 Oriya */ +#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ + /* Bit 20 Tamil */ +#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ + /* Bit 21 Telugu */ +#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ + /* Bit 22 Kannada */ +#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ + /* Bit 23 Malayalam */ +#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ + /* Bit 24 Thai */ +#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ + /* Bit 25 Lao */ +#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ +#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ + /* Bit 28 Hangul Jamo */ +#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ + /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ +#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ + /* Bit 30 Greek Extended */ +#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ +#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ + /* Bit 32 Superscripts And Subscripts */ +#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ + /* Bit 33 Currency Symbols */ +#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ + /* Bit 34 Combining Diacritical Marks For Symbols */ +#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ + /* Bit 35 Letterlike Symbols */ +#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ + /* Bit 36 Number Forms */ +#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ +#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ + /* U+27F0-U+27FF */ + /* U+2900-U+297F */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ +#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ + /* U+2A00-U+2AFF */ + /* U+27C0-U+27EF */ + /* U+2980-U+29FF */ + /* Bit 39 Miscellaneous Technical */ +#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ + /* Bit 40 Control Pictures */ +#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ + /* Bit 41 Optical Character Recognition */ +#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ + /* Bit 42 Enclosed Alphanumerics */ +#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ + /* Bit 43 Box Drawing */ +#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ + /* Bit 44 Block Elements */ +#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ + /* Bit 45 Geometric Shapes */ +#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ + /* Bit 46 Miscellaneous Symbols */ +#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ + /* Bit 47 Dingbats */ +#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ + /* Bit 48 CJK Symbols and Punctuation */ +#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ + /* Bit 49 Hiragana */ +#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ +#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ + /* U+31F0-U+31FF */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ +#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ + /* U+31A0-U+31BF */ + /* Bit 52 Hangul Compatibility Jamo */ +#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA + /* Bit 54 Enclosed CJK Letters and Months */ +#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ + /* Bit 55 CJK Compatibility */ +#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ + /* Bit 56 Hangul Syllables */ +#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + /* */ + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000 */ +#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ + /* U+DB80-U+DBFF */ + /* U+DC00-U+DFFF */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ +#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ + /* U+2E80-U+2EFF */ + /* U+2F00-U+2FDF */ + /* U+2FF0-U+2FFF */ + /* U+3400-U+4DB5 */ + /*U+20000-U+2A6DF*/ + /* U+3190-U+319F */ + /* Bit 60 Private Use */ +#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ + /*U+2F800-U+2FA1F*/ + /* Bit 62 Alphabetic Presentation Forms */ +#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ + /* Bit 63 Arabic Presentation Forms-A */ +#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ + /* Bit 64 Combining Half Marks */ +#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ + /* Bit 66 Small Form Variants */ +#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ + /* Bit 67 Arabic Presentation Forms-B */ +#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ + /* Bit 68 Halfwidth and Fullwidth Forms */ +#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ + /* Bit 69 Specials */ +#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ + /* Bit 70 Tibetan */ +#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ + /* Bit 71 Syriac */ +#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ + /* Bit 72 Thaana */ +#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ + /* Bit 73 Sinhala */ +#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ + /* Bit 74 Myanmar */ +#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ +#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ + /* Bit 76 Cherokee */ +#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ + /* Bit 77 Unified Canadian Aboriginal Syllabics */ +#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ + /* Bit 78 Ogham */ +#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ + /* Bit 79 Runic */ +#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ +#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ + /* Bit 81 Mongolian */ +#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ + /* Bit 82 Braille Patterns */ +#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ +#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ + /* U+A490-U+A4CF */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ +#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ + /* U+1720-U+173F */ + /* U+1740-U+175F */ + /* U+1760-U+177F */ + /* Bit 85 Old Italic */ +#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ + /* Bit 86 Gothic */ +#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ + /* Bit 87 Deseret */ +#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ +#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ + /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ + /* Bit 89 Mathematical Alphanumeric Symbols */ +#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ +#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ + /*U+100000-U+10FFFD*/ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ +#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ + /* Bit 92 Tags */ +#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ + + + /*************************************************************************/ + /* */ + /* Some compilers have a very limited length of identifiers. */ + /* */ +#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) +#define HAVE_LIMIT_ON_IDENTS +#endif + + +#ifndef HAVE_LIMIT_ON_IDENTS + + + /*************************************************************************/ + /* */ + /* Here some alias #defines in order to be clearer. */ + /* */ + /* These are not always #defined to stay within the 31~character limit, */ + /* which some compilers have. */ + /* */ + /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ + /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ + /* If you get a warning with such a compiler, use the -i40 switch. */ + /* */ +#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ + TT_UCR_ARABIC_PRESENTATIONS_A +#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ + TT_UCR_ARABIC_PRESENTATIONS_B + +#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ + TT_UCR_COMBINING_DIACRITICS +#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ + TT_UCR_COMBINING_DIACRITICS_SYMB + + +#endif /* !HAVE_LIMIT_ON_IDENTS */ + + +FT_END_HEADER + +#endif /* __TTNAMEID_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/tttables.h b/lib/windows64/include/freetype/tttables.h new file mode 100644 index 0000000..1568f40 --- /dev/null +++ b/lib/windows64/include/freetype/tttables.h @@ -0,0 +1,829 @@ +/***************************************************************************/ +/* */ +/* tttables.h */ +/* */ +/* Basic SFNT/TrueType tables definitions and interface */ +/* (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTTABLES_H__ +#define __TTTABLES_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* <Section> */ + /* truetype_tables */ + /* */ + /* <Title> */ + /* TrueType Tables */ + /* */ + /* <Abstract> */ + /* TrueType specific table types and functions. */ + /* */ + /* <Description> */ + /* This section contains the definition of TrueType-specific tables */ + /* as well as some routines used to access and process them. */ + /* */ + /* <Order> */ + /* TT_Header */ + /* TT_HoriHeader */ + /* TT_VertHeader */ + /* TT_OS2 */ + /* TT_Postscript */ + /* TT_PCLT */ + /* TT_MaxProfile */ + /* */ + /* FT_Sfnt_Tag */ + /* FT_Get_Sfnt_Table */ + /* FT_Load_Sfnt_Table */ + /* FT_Sfnt_Table_Info */ + /* */ + /* FT_Get_CMap_Language_ID */ + /* FT_Get_CMap_Format */ + /* */ + /* FT_PARAM_TAG_UNPATENTED_HINTING */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Header */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType font header table. All */ + /* fields follow the TrueType specification. */ + /* */ + typedef struct TT_Header_ + { + FT_Fixed Table_Version; + FT_Fixed Font_Revision; + + FT_Long CheckSum_Adjust; + FT_Long Magic_Number; + + FT_UShort Flags; + FT_UShort Units_Per_EM; + + FT_Long Created [2]; + FT_Long Modified[2]; + + FT_Short xMin; + FT_Short yMin; + FT_Short xMax; + FT_Short yMax; + + FT_UShort Mac_Style; + FT_UShort Lowest_Rec_PPEM; + + FT_Short Font_Direction; + FT_Short Index_To_Loc_Format; + FT_Short Glyph_Data_Format; + + } TT_Header; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_HoriHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType horizontal header, the `hhea' */ + /* table, as well as the corresponding horizontal metrics table, */ + /* i.e., the `hmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of all */ + /* glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoAscender' field */ + /* of the OS/2 table instead if you want */ + /* the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the distance */ + /* from the baseline to the bottom-most of */ + /* all glyph points found in the font. It */ + /* is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of the */ + /* glyphs found in the font (maybe ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Width_Max :: This field is the maximum of all advance */ + /* widths found in the font. It can be */ + /* used to compute the maximum width of an */ + /* arbitrary string of text. */ + /* */ + /* min_Left_Side_Bearing :: The minimum left side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Right_Side_Bearing :: The minimum right side bearing of all */ + /* glyphs within the font. */ + /* */ + /* xMax_Extent :: The maximum horizontal extent (i.e., the */ + /* `width' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ + /* table -- this value can be smaller than */ + /* the total number of glyphs in the font. */ + /* */ + /* long_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `hmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields, */ + /* which are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_HoriHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Width_Max; /* advance width maximum */ + + FT_Short min_Left_Side_Bearing; /* minimum left-sb */ + FT_Short min_Right_Side_Bearing; /* minimum right-sb */ + FT_Short xMax_Extent; /* xmax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_HMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they are used to connect the metrics header to the relevant */ + /* `HMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_HoriHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_VertHeader */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType vertical header, the `vhea' */ + /* table, as well as the corresponding vertical metrics table, i.e., */ + /* the `vmtx' table. */ + /* */ + /* <Fields> */ + /* Version :: The table version. */ + /* */ + /* Ascender :: The font's ascender, i.e., the distance */ + /* from the baseline to the top-most of */ + /* all glyph points found in the font. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoAscender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Descender :: The font's descender, i.e., the */ + /* distance from the baseline to the */ + /* bottom-most of all glyph points found */ + /* in the font. It is negative. */ + /* */ + /* This value is invalid in many fonts, as */ + /* it is usually set by the font designer, */ + /* and often reflects only a portion of */ + /* the glyphs found in the font (maybe */ + /* ASCII). */ + /* */ + /* You should use the `sTypoDescender' */ + /* field of the OS/2 table instead if you */ + /* want the correct one. */ + /* */ + /* Line_Gap :: The font's line gap, i.e., the distance */ + /* to add to the ascender and descender to */ + /* get the BTB, i.e., the */ + /* baseline-to-baseline distance for the */ + /* font. */ + /* */ + /* advance_Height_Max :: This field is the maximum of all */ + /* advance heights found in the font. It */ + /* can be used to compute the maximum */ + /* height of an arbitrary string of text. */ + /* */ + /* min_Top_Side_Bearing :: The minimum top side bearing of all */ + /* glyphs within the font. */ + /* */ + /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ + /* glyphs within the font. */ + /* */ + /* yMax_Extent :: The maximum vertical extent (i.e., the */ + /* `height' of a glyph's bounding box) for */ + /* all glyphs in the font. */ + /* */ + /* caret_Slope_Rise :: The rise coefficient of the cursor's */ + /* slope of the cursor (slope=rise/run). */ + /* */ + /* caret_Slope_Run :: The run coefficient of the cursor's */ + /* slope. */ + /* */ + /* caret_Offset :: The cursor's offset for slanted fonts. */ + /* This value is `reserved' in vmtx */ + /* version 1.0. */ + /* */ + /* Reserved :: 8~reserved bytes. */ + /* */ + /* metric_Data_Format :: Always~0. */ + /* */ + /* number_Of_HMetrics :: Number of VMetrics entries in the */ + /* `vmtx' table -- this value can be */ + /* smaller than the total number of glyphs */ + /* in the font. */ + /* */ + /* long_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* short_metrics :: A pointer into the `vmtx' table. */ + /* */ + /* <Note> */ + /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ + /* be identical except for the names of their fields, */ + /* which are different. */ + /* */ + /* This ensures that a single function in the `ttload' */ + /* module is able to read both the horizontal and vertical */ + /* headers. */ + /* */ + typedef struct TT_VertHeader_ + { + FT_Fixed Version; + FT_Short Ascender; + FT_Short Descender; + FT_Short Line_Gap; + + FT_UShort advance_Height_Max; /* advance height maximum */ + + FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ + FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ + FT_Short yMax_Extent; /* xmax or ymax extents */ + FT_Short caret_Slope_Rise; + FT_Short caret_Slope_Run; + FT_Short caret_Offset; + + FT_Short Reserved[4]; + + FT_Short metric_Data_Format; + FT_UShort number_Of_VMetrics; + + /* The following fields are not defined by the TrueType specification */ + /* but they're used to connect the metrics header to the relevant */ + /* `HMTX' or `VMTX' table. */ + + void* long_metrics; + void* short_metrics; + + } TT_VertHeader; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_OS2 */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType OS/2 table. All fields */ + /* comply to the OpenType specification. */ + /* */ + /* Note that we now support old Mac fonts that do not include an OS/2 */ + /* table. In this case, the `version' field is always set to 0xFFFF. */ + /* */ + typedef struct TT_OS2_ + { + FT_UShort version; /* 0x0001 - more or 0xFFFF */ + FT_Short xAvgCharWidth; + FT_UShort usWeightClass; + FT_UShort usWidthClass; + FT_UShort fsType; + FT_Short ySubscriptXSize; + FT_Short ySubscriptYSize; + FT_Short ySubscriptXOffset; + FT_Short ySubscriptYOffset; + FT_Short ySuperscriptXSize; + FT_Short ySuperscriptYSize; + FT_Short ySuperscriptXOffset; + FT_Short ySuperscriptYOffset; + FT_Short yStrikeoutSize; + FT_Short yStrikeoutPosition; + FT_Short sFamilyClass; + + FT_Byte panose[10]; + + FT_ULong ulUnicodeRange1; /* Bits 0-31 */ + FT_ULong ulUnicodeRange2; /* Bits 32-63 */ + FT_ULong ulUnicodeRange3; /* Bits 64-95 */ + FT_ULong ulUnicodeRange4; /* Bits 96-127 */ + + FT_Char achVendID[4]; + + FT_UShort fsSelection; + FT_UShort usFirstCharIndex; + FT_UShort usLastCharIndex; + FT_Short sTypoAscender; + FT_Short sTypoDescender; + FT_Short sTypoLineGap; + FT_UShort usWinAscent; + FT_UShort usWinDescent; + + /* only version 1 and higher: */ + + FT_ULong ulCodePageRange1; /* Bits 0-31 */ + FT_ULong ulCodePageRange2; /* Bits 32-63 */ + + /* only version 2 and higher: */ + + FT_Short sxHeight; + FT_Short sCapHeight; + FT_UShort usDefaultChar; + FT_UShort usBreakChar; + FT_UShort usMaxContext; + + /* only version 5 and higher: */ + + FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */ + FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */ + + } TT_OS2; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_Postscript */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PostScript table. All fields */ + /* comply to the TrueType specification. This structure does not */ + /* reference the PostScript glyph names, which can be nevertheless */ + /* accessed with the `ttpost' module. */ + /* */ + typedef struct TT_Postscript_ + { + FT_Fixed FormatType; + FT_Fixed italicAngle; + FT_Short underlinePosition; + FT_Short underlineThickness; + FT_ULong isFixedPitch; + FT_ULong minMemType42; + FT_ULong maxMemType42; + FT_ULong minMemType1; + FT_ULong maxMemType1; + + /* Glyph names follow in the file, but we don't */ + /* load them by default. See the ttpost.c file. */ + + } TT_Postscript; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_PCLT */ + /* */ + /* <Description> */ + /* A structure used to model a TrueType PCLT table. All fields */ + /* comply to the TrueType specification. */ + /* */ + typedef struct TT_PCLT_ + { + FT_Fixed Version; + FT_ULong FontNumber; + FT_UShort Pitch; + FT_UShort xHeight; + FT_UShort Style; + FT_UShort TypeFamily; + FT_UShort CapHeight; + FT_UShort SymbolSet; + FT_Char TypeFace[16]; + FT_Char CharacterComplement[8]; + FT_Char FileName[6]; + FT_Char StrokeWeight; + FT_Char WidthType; + FT_Byte SerifStyle; + FT_Byte Reserved; + + } TT_PCLT; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* TT_MaxProfile */ + /* */ + /* <Description> */ + /* The maximum profile is a table containing many max values, which */ + /* can be used to pre-allocate arrays. This ensures that no memory */ + /* allocation occurs during a glyph load. */ + /* */ + /* <Fields> */ + /* version :: The version number. */ + /* */ + /* numGlyphs :: The number of glyphs in this TrueType */ + /* font. */ + /* */ + /* maxPoints :: The maximum number of points in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositePoints'. */ + /* */ + /* maxContours :: The maximum number of contours in a */ + /* non-composite TrueType glyph. See also */ + /* the structure element */ + /* `maxCompositeContours'. */ + /* */ + /* maxCompositePoints :: The maximum number of points in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxPoints'. */ + /* */ + /* maxCompositeContours :: The maximum number of contours in a */ + /* composite TrueType glyph. See also the */ + /* structure element `maxContours'. */ + /* */ + /* maxZones :: The maximum number of zones used for */ + /* glyph hinting. */ + /* */ + /* maxTwilightPoints :: The maximum number of points in the */ + /* twilight zone used for glyph hinting. */ + /* */ + /* maxStorage :: The maximum number of elements in the */ + /* storage area used for glyph hinting. */ + /* */ + /* maxFunctionDefs :: The maximum number of function */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxInstructionDefs :: The maximum number of instruction */ + /* definitions in the TrueType bytecode for */ + /* this font. */ + /* */ + /* maxStackElements :: The maximum number of stack elements used */ + /* during bytecode interpretation. */ + /* */ + /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ + /* used for glyph hinting. */ + /* */ + /* maxComponentElements :: The maximum number of simple (i.e., non- */ + /* composite) glyphs in a composite glyph. */ + /* */ + /* maxComponentDepth :: The maximum nesting depth of composite */ + /* glyphs. */ + /* */ + /* <Note> */ + /* This structure is only used during font loading. */ + /* */ + typedef struct TT_MaxProfile_ + { + FT_Fixed version; + FT_UShort numGlyphs; + FT_UShort maxPoints; + FT_UShort maxContours; + FT_UShort maxCompositePoints; + FT_UShort maxCompositeContours; + FT_UShort maxZones; + FT_UShort maxTwilightPoints; + FT_UShort maxStorage; + FT_UShort maxFunctionDefs; + FT_UShort maxInstructionDefs; + FT_UShort maxStackElements; + FT_UShort maxSizeOfInstructions; + FT_UShort maxComponentElements; + FT_UShort maxComponentDepth; + + } TT_MaxProfile; + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* FT_Sfnt_Tag */ + /* */ + /* <Description> */ + /* An enumeration used to specify the index of an SFNT table. */ + /* Used in the @FT_Get_Sfnt_Table API function. */ + /* */ + /* <Values> */ + /* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */ + /* */ + /* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */ + /* */ + /* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */ + /* */ + /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ + /* */ + /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader struture. */ + /* */ + /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ + /* */ + /* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */ + /* */ + typedef enum FT_Sfnt_Tag_ + { + FT_SFNT_HEAD, + FT_SFNT_MAXP, + FT_SFNT_OS2, + FT_SFNT_HHEA, + FT_SFNT_VHEA, + FT_SFNT_POST, + FT_SFNT_PCLT, + + FT_SFNT_MAX + + } FT_Sfnt_Tag; + + /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ + /* values instead */ +#define ft_sfnt_head FT_SFNT_HEAD +#define ft_sfnt_maxp FT_SFNT_MAXP +#define ft_sfnt_os2 FT_SFNT_OS2 +#define ft_sfnt_hhea FT_SFNT_HHEA +#define ft_sfnt_vhea FT_SFNT_VHEA +#define ft_sfnt_post FT_SFNT_POST +#define ft_sfnt_pclt FT_SFNT_PCLT + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Sfnt_Table */ + /* */ + /* <Description> */ + /* Return a pointer to a given SFNT table within a face. */ + /* */ + /* <Input> */ + /* face :: A handle to the source. */ + /* */ + /* tag :: The index of the SFNT table. */ + /* */ + /* <Return> */ + /* A type-less pointer to the table. This will be~0 in case of */ + /* error, or if the corresponding table was not found *OR* loaded */ + /* from the file. */ + /* */ + /* Use a typecast according to `tag' to access the structure */ + /* elements. */ + /* */ + /* <Note> */ + /* The table is owned by the face object and disappears with it. */ + /* */ + /* This function is only useful to access SFNT tables that are loaded */ + /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ + /* a list. */ + /* */ + /* Here an example how to access the `vhea' table: */ + /* */ + /* { */ + /* TT_VertHeader* vert_header; */ + /* */ + /* */ + /* vert_header = */ + /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */ + /* } */ + /* */ + FT_EXPORT( void* ) + FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + + /************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use the value~0 if you want + * to access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag == 0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length' parameter is NULL, then try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length' is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length' set to~0, as in the following example: + * + * { + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * } + * + * Note that structures like @TT_Header or @TT_OS2 can't be used with + * this function; they are limited to @FT_Get_Sfnt_Table. Reason is that + * those structures depend on the processor architecture, with varying + * size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). + * + */ + FT_EXPORT( FT_Error ) + FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + + /************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return information on an SFNT table. + * + * @input: + * face :: + * A handle to the source face. + * + * table_index :: + * The index of an SFNT table. The function returns + * FT_Err_Table_Missing for an invalid value. + * + * @inout: + * tag :: + * The name tag of the SFNT table. If the value is NULL, `table_index' + * is ignored, and `length' returns the number of SFNT tables in the + * font. + * + * @output: + * length :: + * The length of the SFNT table (or the number of SFNT tables, depending + * on `tag'). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While parsing fonts, FreeType handles SFNT tables with length zero as + * missing. + * + */ + FT_EXPORT( FT_Error ) + FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Language_ID */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap language ID. Definitions of */ + /* language ID values are in `ttnameid.h'. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The language ID of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, just return~0 as the default value. */ + /* */ + /* For a format~14 cmap (to access Unicode IVS), the return value is */ + /* 0xFFFFFFFF. */ + /* */ + FT_EXPORT( FT_ULong ) + FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_CMap_Format */ + /* */ + /* <Description> */ + /* Return TrueType/sfnt specific cmap format. */ + /* */ + /* <Input> */ + /* charmap :: */ + /* The target charmap. */ + /* */ + /* <Return> */ + /* The format of `charmap'. If `charmap' doesn't belong to a */ + /* TrueType/sfnt face, return -1. */ + /* */ + FT_EXPORT( FT_Long ) + FT_Get_CMap_Format( FT_CharMap charmap ); + + /* */ + + +FT_END_HEADER + +#endif /* __TTTABLES_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/tttags.h b/lib/windows64/include/freetype/tttags.h new file mode 100644 index 0000000..3836c7b --- /dev/null +++ b/lib/windows64/include/freetype/tttags.h @@ -0,0 +1,111 @@ +/***************************************************************************/ +/* */ +/* tttags.h */ +/* */ +/* Tags for TrueType and OpenType tables (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTAGS_H__ +#define __TTAGS_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) +#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' ) +#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) +#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' ) +#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) +#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) +#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) +#define TTAG_CBDT FT_MAKE_TAG( 'C', 'B', 'D', 'T' ) +#define TTAG_CBLC FT_MAKE_TAG( 'C', 'B', 'L', 'C' ) +#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) +#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) +#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) +#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) +#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) +#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) +#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) +#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) +#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) +#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) +#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) +#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) +#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' ) +#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) +#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) +#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) +#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) +#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) +#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) +#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) +#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) +#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) +#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) +#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) +#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) +#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) +#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) +#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) +#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) +#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) +#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) +#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) +#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) +#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) +#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) +#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) +#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) +#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) +#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) +#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) +#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sbix FT_MAKE_TAG( 's', 'b', 'i', 'x' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) +#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) +#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) +#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) +#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) +#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) +#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) +#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) +#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) +#define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' ) + + +FT_END_HEADER + +#endif /* __TTAGS_H__ */ + + +/* END */ diff --git a/lib/windows64/include/freetype/ttunpat.h b/lib/windows64/include/freetype/ttunpat.h new file mode 100644 index 0000000..8ea5568 --- /dev/null +++ b/lib/windows64/include/freetype/ttunpat.h @@ -0,0 +1,60 @@ +/***************************************************************************/ +/* */ +/* ttunpat.h */ +/* */ +/* Definitions for the unpatented TrueType hinting system */ +/* */ +/* Copyright 2003-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* Written by Graham Asher <graham.asher@btinternet.com> */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __TTUNPAT_H__ +#define __TTUNPAT_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * A constant used as the tag of an @FT_Parameter structure to indicate + * that unpatented methods only should be used by the TrueType bytecode + * interpreter for a typeface opened by @FT_Open_Face. + * + */ +#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) + + /* */ + + +FT_END_HEADER + + +#endif /* __TTUNPAT_H__ */ + + +/* END */ diff --git a/lib/windows64/include/ft2build.h b/lib/windows64/include/ft2build.h new file mode 100644 index 0000000..b9eade2 --- /dev/null +++ b/lib/windows64/include/ft2build.h @@ -0,0 +1,40 @@ +/***************************************************************************/ +/* */ +/* ft2build.h */ +/* */ +/* FreeType 2 build and setup macros (development version). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /* + * This is a development version of <ft2build.h> to build the library in + * debug mode. Its only difference to the default version is that it + * includes a local `ftoption.h' header file with different settings for + * many configuration macros. + * + * To use it, simply ensure that the directory containing this file is + * scanned by the compiler before the default FreeType header directory. + * + */ + +#ifndef __FT2BUILD_H__ +#define __FT2BUILD_H__ + +#define FT_CONFIG_OPTIONS_H <ftoption.h> + +#include <freetype/config/ftheader.h> + +#endif /* __FT2BUILD_H__ */ + + +/* END */ diff --git a/lib/windows64/include/ftoption.h b/lib/windows64/include/ftoption.h new file mode 100644 index 0000000..ed63aa0 --- /dev/null +++ b/lib/windows64/include/ftoption.h @@ -0,0 +1,886 @@ +/***************************************************************************/ +/* */ +/* ftoption.h (for development) */ +/* */ +/* User-selectable configuration macros (specification only). */ +/* */ +/* Copyright 1996-2015 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTOPTION_H__ +#define __FTOPTION_H__ + + +#include <ft2build.h> + + +FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /* USER-SELECTABLE CONFIGURATION MACROS */ + /* */ + /* This file contains the default configuration macro definitions for */ + /* a standard build of the FreeType library. There are three ways to */ + /* use this file to build project-specific versions of the library: */ + /* */ + /* - You can modify this file by hand, but this is not recommended in */ + /* cases where you would like to build several versions of the */ + /* library from a single source directory. */ + /* */ + /* - You can put a copy of this file in your build directory, more */ + /* precisely in `$BUILD/config/ftoption.h', where `$BUILD' is the */ + /* name of a directory that is included _before_ the FreeType include */ + /* path during compilation. */ + /* */ + /* The default FreeType Makefiles and Jamfiles use the build */ + /* directory `builds/<system>' by default, but you can easily change */ + /* that for your own projects. */ + /* */ + /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ + /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ + /* locate this file during the build. For example, */ + /* */ + /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ + /* #include <config/ftheader.h> */ + /* */ + /* will use `$BUILD/myftoptions.h' instead of this file for macro */ + /* definitions. */ + /* */ + /* Note also that you can similarly pre-define the macro */ + /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ + /* that are statically linked to the library at compile time. By */ + /* default, this file is <config/ftmodule.h>. */ + /* */ + /* We highly recommend using the third method whenever possible. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Uncomment the line below if you want to activate sub-pixel rendering */ + /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ + /* */ + /* Note that this feature is covered by several Microsoft patents */ + /* and should not be activated in any default build of the library. */ + /* */ + /* This macro has no impact on the FreeType API, only on its */ + /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ + /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ + /* the original size in case this macro isn't defined; however, each */ + /* triplet of subpixels has R=G=B. */ + /* */ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING + + + /*************************************************************************/ + /* */ + /* Many compilers provide a non-ANSI 64-bit data type that can be used */ + /* by FreeType to speed up some computations. However, this will create */ + /* some problems when compiling the library in strict ANSI mode. */ + /* */ + /* For this reason, the use of 64-bit integers is normally disabled when */ + /* the __STDC__ macro is defined. You can however disable this by */ + /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ + /* */ + /* For most compilers, this will only create compilation warnings when */ + /* building the library. */ + /* */ + /* ObNote: The compiler-specific 64-bit integers are detected in the */ + /* file `ftconfig.h' either statically or through the */ + /* `configure' script on supported platforms. */ + /* */ +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /*************************************************************************/ + /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /*************************************************************************/ + /* */ + /* LZW-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `compress' program. This is mostly used to parse many of the PCF */ + /* files that come with various X11 distributions. The implementation */ + /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ + /* (see src/lzw/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_LZW + + + /*************************************************************************/ + /* */ + /* Gzip-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `gzip' program. This is mostly used to parse many of the PCF files */ + /* that come with XFree86. The implementation uses `zlib' to */ + /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ + /* */ + /* Define this macro if you want to enable this `feature'. See also */ + /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ + /* */ +#define FT_CONFIG_OPTION_USE_ZLIB + + + /*************************************************************************/ + /* */ + /* ZLib library selection */ + /* */ + /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ + /* It allows FreeType's `ftgzip' component to link to the system's */ + /* installation of the ZLib library. This is useful on systems like */ + /* Unix or VMS where it generally is already available. */ + /* */ + /* If you let it undefined, the component will use its own copy */ + /* of the zlib sources instead. These have been modified to be */ + /* included directly within the component and *not* export external */ + /* function names. This allows you to link any program with FreeType */ + /* _and_ ZLib without linking conflicts. */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ + + + /*************************************************************************/ + /* */ + /* Bzip2-compressed file support. */ + /* */ + /* FreeType now handles font files that have been compressed with the */ + /* `bzip2' program. This is mostly used to parse many of the PCF */ + /* files that come with XFree86. The implementation uses `libbz2' to */ + /* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */ + /* Contrary to gzip, bzip2 currently is not included and need to use */ + /* the system available bzip2 implementation. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_BZIP2 + + + /*************************************************************************/ + /* */ + /* PNG bitmap support. */ + /* */ + /* FreeType now handles loading color bitmap glyphs in the PNG format. */ + /* This requires help from the external libpng library. Uncompressed */ + /* color bitmaps do not need any external libraries and will be */ + /* supported regardless of this configuration. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_PNG + + + /*************************************************************************/ + /* */ + /* HarfBuzz support. */ + /* */ + /* FreeType uses the HarfBuzz library to improve auto-hinting of */ + /* OpenType fonts. If available, many glyphs not directly addressable */ + /* by a font's character map will be hinted also. */ + /* */ + /* Define this macro if you want to enable this `feature'. */ + /* */ +#define FT_CONFIG_OPTION_USE_HARFBUZZ + + + /*************************************************************************/ + /* */ + /* Define to disable the use of file stream functions and types, FILE, */ + /* fopen() etc. Enables the use of smaller system libraries on embedded */ + /* systems that have multiple system libraries, some with or without */ + /* file stream support, in the cases where file stream support is not */ + /* necessary such as memory loading of font files. */ + /* */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /*************************************************************************/ + /* */ + /* DLL export compilation */ + /* */ + /* When compiling FreeType as a DLL, some systems/compilers need a */ + /* special keyword in front OR after the return type of function */ + /* declarations. */ + /* */ + /* Two macros are used within the FreeType source code to define */ + /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ + /* */ + /* FT_EXPORT( return_type ) */ + /* */ + /* is used in a function declaration, as in */ + /* */ + /* FT_EXPORT( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* */ + /* */ + /* FT_EXPORT_DEF( return_type ) */ + /* */ + /* is used in a function definition, as in */ + /* */ + /* FT_EXPORT_DEF( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ) */ + /* { */ + /* ... some code ... */ + /* return FT_Err_Ok; */ + /* } */ + /* */ + /* You can provide your own implementation of FT_EXPORT and */ + /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ + /* will be later automatically defined as `extern return_type' to */ + /* allow normal compilation. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +/* #define FT_EXPORT(x) extern x */ +/* #define FT_EXPORT_DEF(x) x */ + + + /*************************************************************************/ + /* */ + /* Glyph Postscript Names handling */ + /* */ + /* By default, FreeType 2 is compiled with the `psnames' module. This */ + /* module is in charge of converting a glyph name string into a */ + /* Unicode value, or return a Macintosh standard glyph name for the */ + /* use with the TrueType `post' table. */ + /* */ + /* Undefine this macro if you do not want `psnames' compiled in your */ + /* build of FreeType. This has the following effects: */ + /* */ + /* - The TrueType driver will provide its own set of glyph names, */ + /* if you build it to support postscript names in the TrueType */ + /* `post' table. */ + /* */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ + /* charmap out of the glyphs found in the fonts. */ + /* */ + /* You would normally undefine this configuration macro when building */ + /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ + /* */ +#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Postscript Names to Unicode Values support */ + /* */ + /* By default, FreeType 2 is built with the `PSNames' module compiled */ + /* in. Among other things, the module is used to convert a glyph name */ + /* into a Unicode value. This is especially useful in order to */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* through a big table named the `Adobe Glyph List' (AGL). */ + /* */ + /* Undefine this macro if you do not want the Adobe Glyph List */ + /* compiled in your `PSNames' module. The Type 1 driver will not be */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ + /* fonts. */ + /* */ +#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + + /*************************************************************************/ + /* */ + /* Support for Mac fonts */ + /* */ + /* Define this macro if you want support for outline fonts in Mac */ + /* format (mac dfont, mac resource, macbinary containing a mac */ + /* resource) on non-Mac platforms. */ + /* */ + /* Note that the `FOND' resource isn't checked. */ + /* */ +#define FT_CONFIG_OPTION_MAC_FONTS + + + /*************************************************************************/ + /* */ + /* Guessing methods to access embedded resource forks */ + /* */ + /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ + /* GNU/Linux). */ + /* */ + /* Resource forks which include fonts data are stored sometimes in */ + /* locations which users or developers don't expected. In some cases, */ + /* resource forks start with some offset from the head of a file. In */ + /* other cases, the actual resource fork is stored in file different */ + /* from what the user specifies. If this option is activated, */ + /* FreeType tries to guess whether such offsets or different file */ + /* names must be used. */ + /* */ + /* Note that normal, direct access of resource forks is controlled via */ + /* the FT_CONFIG_OPTION_MAC_FONTS option. */ + /* */ +#ifdef FT_CONFIG_OPTION_MAC_FONTS +#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK +#endif + + + /*************************************************************************/ + /* */ + /* Allow the use of FT_Incremental_Interface to load typefaces that */ + /* contain no glyph data, but supply it via a callback function. */ + /* This is required by clients supporting document formats which */ + /* supply font data incrementally as the document is parsed, such */ + /* as the Ghostscript interpreter for the PostScript language. */ + /* */ +#define FT_CONFIG_OPTION_INCREMENTAL + + + /*************************************************************************/ + /* */ + /* The size in bytes of the render pool used by the scan-line converter */ + /* to do all of its work. */ + /* */ +#define FT_RENDER_POOL_SIZE 16384L + + + /*************************************************************************/ + /* */ + /* FT_MAX_MODULES */ + /* */ + /* The maximum number of modules that can be registered in a single */ + /* FreeType library object. 32 is the default. */ + /* */ +#define FT_MAX_MODULES 32 + + + /*************************************************************************/ + /* */ + /* Debug level */ + /* */ + /* FreeType can be compiled in debug or trace mode. In debug mode, */ + /* errors are reported through the `ftdebug' component. In trace */ + /* mode, additional messages are sent to the standard output during */ + /* execution. */ + /* */ + /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ + /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ + /* */ + /* Don't define any of these macros to compile in `release' mode! */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +#define FT_DEBUG_LEVEL_ERROR +#define FT_DEBUG_LEVEL_TRACE + + + /*************************************************************************/ + /* */ + /* Autofitter debugging */ + /* */ + /* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */ + /* control the autofitter behaviour for debugging purposes with global */ + /* boolean variables (consequently, you should *never* enable this */ + /* while compiling in `release' mode): */ + /* */ + /* _af_debug_disable_horz_hints */ + /* _af_debug_disable_vert_hints */ + /* _af_debug_disable_blue_hints */ + /* */ + /* Additionally, the following functions provide dumps of various */ + /* internal autofit structures to stdout (using `printf'): */ + /* */ + /* af_glyph_hints_dump_points */ + /* af_glyph_hints_dump_segments */ + /* af_glyph_hints_dump_edges */ + /* af_glyph_hints_get_num_segments */ + /* af_glyph_hints_get_segment_offset */ + /* */ + /* As an argument, they use another global variable: */ + /* */ + /* _af_debug_hints */ + /* */ + /* Please have a look at the `ftgrid' demo program to see how those */ + /* variables and macros should be used. */ + /* */ + /* Do not #undef these macros here since the build system might define */ + /* them for certain configurations only. */ + /* */ +#define FT_DEBUG_AUTOFIT + + + /*************************************************************************/ + /* */ + /* Memory Debugging */ + /* */ + /* FreeType now comes with an integrated memory debugger that is */ + /* capable of detecting simple errors like memory leaks or double */ + /* deletes. To compile it within your build of the library, you */ + /* should define FT_DEBUG_MEMORY here. */ + /* */ + /* Note that the memory debugger is only activated at runtime when */ + /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ + /* */ + /* Do not #undef this macro here since the build system might define */ + /* it for certain configurations only. */ + /* */ +#define FT_DEBUG_MEMORY + + + /*************************************************************************/ + /* */ + /* Module errors */ + /* */ + /* If this macro is set (which is _not_ the default), the higher byte */ + /* of an error code gives the module in which the error has occurred, */ + /* while the lower byte is the real error code. */ + /* */ + /* Setting this macro makes sense for debugging purposes only, since */ + /* it would break source compatibility of certain programs that use */ + /* FreeType 2. */ + /* */ + /* More details can be found in the files ftmoderr.h and fterrors.h. */ + /* */ +#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS + + + /*************************************************************************/ + /* */ + /* Position Independent Code */ + /* */ + /* If this macro is set (which is _not_ the default), FreeType2 will */ + /* avoid creating constants that require address fixups. Instead the */ + /* constants will be moved into a struct and additional intialization */ + /* code will be used. */ + /* */ + /* Setting this macro is needed for systems that prohibit address */ + /* fixups, such as BREW. */ + /* */ +/* #define FT_CONFIG_OPTION_PIC */ + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ + /* embedded bitmaps in all formats using the SFNT module (namely */ + /* TrueType & OpenType). */ + /* */ +#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ + /* load and enumerate the glyph Postscript names in a TrueType or */ + /* OpenType file. */ + /* */ + /* Note that when you do not compile the `PSNames' module by undefining */ + /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ + /* contain additional code used to read the PS Names table from a font. */ + /* */ + /* (By default, the module uses `PSNames' to extract glyph names.) */ + /* */ +#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ + /* access the internal name table in a SFNT-based format like TrueType */ + /* or OpenType. The name table contains various strings used to */ + /* describe the font, like family name, copyright, version, etc. It */ + /* does not contain any glyph name though. */ + /* */ + /* Accessing SFNT names is done through the functions declared in */ + /* `ftsnames.h'. */ + /* */ +#define TT_CONFIG_OPTION_SFNT_NAMES + + + /*************************************************************************/ + /* */ + /* TrueType CMap support */ + /* */ + /* Here you can fine-tune which TrueType CMap table format shall be */ + /* supported. */ +#define TT_CONFIG_CMAP_FORMAT_0 +#define TT_CONFIG_CMAP_FORMAT_2 +#define TT_CONFIG_CMAP_FORMAT_4 +#define TT_CONFIG_CMAP_FORMAT_6 +#define TT_CONFIG_CMAP_FORMAT_8 +#define TT_CONFIG_CMAP_FORMAT_10 +#define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14 + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ + /* a bytecode interpreter in the TrueType driver. */ + /* */ + /* By undefining this, you will only compile the code necessary to load */ + /* TrueType glyphs without hinting. */ + /* */ + /* Do not #undef this macro here, since the build system might */ + /* define it for certain configurations only. */ + /* */ +#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ + /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ + /* replaces the native TrueType hinting mechanism when anything but */ + /* FT_RENDER_MODE_MONO is requested. */ + /* */ + /* Enabling this causes the TrueType driver to ignore instructions under */ + /* certain conditions. This is done in accordance with the guide here, */ + /* with some minor differences: */ + /* */ + /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ + /* By undefining this, you only compile the code necessary to hint */ + /* TrueType glyphs with native TT hinting. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING + + + /*************************************************************************/ + /* */ + /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ + /* of the TrueType bytecode interpreter is used that doesn't implement */ + /* any of the patented opcodes and algorithms. The patents related to */ + /* TrueType hinting have expired worldwide since May 2010; this option */ + /* is now deprecated. */ + /* */ + /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ + /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ + /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ + /* */ + /* This macro is only useful for a small number of font files (mostly */ + /* for Asian scripts) that require bytecode interpretation to properly */ + /* load glyphs. For all other fonts, this produces unpleasant results, */ + /* thus the unpatented interpreter is never used to load glyphs from */ + /* TrueType fonts unless one of the following two options is used. */ + /* */ + /* - The unpatented interpreter is explicitly activated by the user */ + /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ + /* when opening the FT_Face. */ + /* */ + /* - FreeType detects that the FT_Face corresponds to one of the */ + /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ + /* contains a hard-coded list of font names and other matching */ + /* parameters (see function `tt_face_init' in file */ + /* `src/truetype/ttobjs.c'). */ + /* */ + /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* */ + /* { */ + /* FT_Parameter parameter; */ + /* FT_Open_Args open_args; */ + /* */ + /* */ + /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ + /* */ + /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ + /* open_args.pathname = my_font_pathname; */ + /* open_args.num_params = 1; */ + /* open_args.params = ¶meter; */ + /* */ + /* error = FT_Open_Face( library, &open_args, index, &face ); */ + /* ... */ + /* } */ + /* */ +/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */ + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ + /* TrueType glyph loader to use Apple's definition of how to handle */ + /* component offsets in composite glyphs. */ + /* */ + /* Apple and MS disagree on the default behavior of component offsets */ + /* in composites. Apple says that they should be scaled by the scaling */ + /* factors in the transformation matrix (roughly, it's more complex) */ + /* while MS says they should not. OpenType defines two bits in the */ + /* composite flags array which can be used to disambiguate, but old */ + /* fonts will not have them. */ + /* */ + /* http://www.microsoft.com/typography/otspec/glyf.htm */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */ + /* */ +#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ + /* support for Apple's distortable font technology (fvar, gvar, cvar, */ + /* and avar tables). This has many similarities to Type 1 Multiple */ + /* Masters support. */ + /* */ +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT + + + /*************************************************************************/ + /* */ + /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ + /* an embedded `BDF ' table within SFNT-based bitmap formats. */ + /* */ +#define TT_CONFIG_OPTION_BDF + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */ + /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ + /* required. */ + /* */ +#define T1_MAX_DICT_DEPTH 5 + + + /*************************************************************************/ + /* */ + /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ + /* calls during glyph loading. */ + /* */ +#define T1_MAX_SUBRS_CALLS 16 + + + /*************************************************************************/ + /* */ + /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ + /* minimum of 16 is required. */ + /* */ + /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ + /* */ +#define T1_MAX_CHARSTRINGS_OPERANDS 256 + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ + /* files into an existing face. Note that if set, the T1 driver will be */ + /* unable to produce kerning distances. */ + /* */ +#undef T1_CONFIG_OPTION_NO_AFM + + + /*************************************************************************/ + /* */ + /* Define this configuration macro if you want to prevent the */ + /* compilation of the Multiple Masters font support in the Type 1 */ + /* driver. */ + /* */ +#undef T1_CONFIG_OPTION_NO_MM_SUPPORT + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** C F F D R I V E R C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */ + /* possible to set up the default values of the four control points that */ + /* define the stem darkening behaviour of the (new) CFF engine. For */ + /* more details please read the documentation of the */ + /* `darkening-parameters' property of the cff driver module (file */ + /* `ftcffdrv.h'), which allows the control at run-time. */ + /* */ + /* Do *not* undefine these macros! */ + /* */ +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275 + +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333 +#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0 + + + /*************************************************************************/ + /* */ + /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */ + /* engine gets compiled into FreeType. If defined, it is possible to */ + /* switch between the two engines using the `hinting-engine' property of */ + /* the cff driver module. */ + /* */ +#define CFF_CONFIG_OPTION_OLD_ENGINE + + + /*************************************************************************/ + /*************************************************************************/ + /**** ****/ + /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ + /**** ****/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ + /* support. */ + /* */ +#define AF_CONFIG_OPTION_CJK + + /*************************************************************************/ + /* */ + /* Compile autofit module with Indic script support. */ + /* */ +#define AF_CONFIG_OPTION_INDIC + + /*************************************************************************/ + /* */ + /* Compile autofit module with warp hinting. The idea of the warping */ + /* code is to slightly scale and shift a glyph within a single dimension */ + /* so that as much of its segments are aligned (more or less) on the */ + /* grid. To find out the optimal scaling and shifting value, various */ + /* parameter combinations are tried and scored. */ + /* */ + /* This experimental option is active only if the rendering mode is */ + /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */ + /* `warping' property of the auto-hinter (see file `ftautoh.h' for more */ + /* information; by default it is switched off). */ + /* */ +#define AF_CONFIG_OPTION_USE_WARPER + + /* */ + + + /* + * This macro is obsolete. Support has been removed in FreeType + * version 2.5. + */ +/* #define FT_CONFIG_OPTION_OLD_INTERNALS */ + + + /* + * This macro is defined if either unpatented or native TrueType + * hinting is requested by the definitions above. + */ +#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER +#define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING +#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING +#define TT_USE_BYTECODE_INTERPRETER +#endif + + + /* + * Check CFF darkening parameters. The checks are the same as in function + * `cff_property_set' in file `cffdrivr.c'. + */ +#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \ + \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \ + CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500 +#error "Invalid CFF darkening parameters!" +#endif + +FT_END_HEADER + + +#endif /* __FTOPTION_H__ */ + + +/* END */ diff --git a/lib/windows64/include/jemalloc/jemalloc.h b/lib/windows64/include/jemalloc/jemalloc.h new file mode 100644 index 0000000..602a3f4 --- /dev/null +++ b/lib/windows64/include/jemalloc/jemalloc.h @@ -0,0 +1,377 @@ +#ifndef JEMALLOC_H_ +#define JEMALLOC_H_ +#ifdef __cplusplus +extern "C" { +#endif + +/* Defined if __attribute__((...)) syntax is supported. */ +/* #undef JEMALLOC_HAVE_ATTR */ + +/* Defined if alloc_size attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_ALLOC_SIZE */ + +/* Defined if format(gnu_printf, ...) attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF */ + +/* Defined if format(printf, ...) attribute is supported. */ +/* #undef JEMALLOC_HAVE_ATTR_FORMAT_PRINTF */ + +/* + * Define overrides for non-standard allocator-related functions if they are + * present on the system. + */ +/* #undef JEMALLOC_OVERRIDE_MEMALIGN */ +/* #undef JEMALLOC_OVERRIDE_VALLOC */ + +/* + * At least Linux omits the "const" in: + * + * size_t malloc_usable_size(const void *ptr); + * + * Match the operating system's prototype. + */ +#define JEMALLOC_USABLE_SIZE_CONST const + +/* + * If defined, specify throw() for the public function prototypes when compiling + * with C++. The only justification for this is to match the prototypes that + * glibc defines. + */ +/* #undef JEMALLOC_USE_CXX_THROW */ + +#ifdef _MSC_VER +# ifdef _WIN64 +# define LG_SIZEOF_PTR_WIN 3 +# else +# define LG_SIZEOF_PTR_WIN 2 +# endif +#endif + +/* sizeof(void *) == 2^LG_SIZEOF_PTR. */ +#define LG_SIZEOF_PTR LG_SIZEOF_PTR_WIN + +/* + * Name mangling for public symbols is controlled by --with-mangling and + * --with-jemalloc-prefix. With default settings the je_ prefix is stripped by + * these macro definitions. + */ +#ifndef JEMALLOC_NO_RENAME +# define je_malloc_conf je_malloc_conf +# define je_malloc_message je_malloc_message +# define je_malloc je_malloc +# define je_calloc je_calloc +# define je_posix_memalign je_posix_memalign +# define je_aligned_alloc je_aligned_alloc +# define je_realloc je_realloc +# define je_free je_free +# define je_mallocx je_mallocx +# define je_rallocx je_rallocx +# define je_xallocx je_xallocx +# define je_sallocx je_sallocx +# define je_dallocx je_dallocx +# define je_sdallocx je_sdallocx +# define je_nallocx je_nallocx +# define je_mallctl je_mallctl +# define je_mallctlnametomib je_mallctlnametomib +# define je_mallctlbymib je_mallctlbymib +# define je_malloc_stats_print je_malloc_stats_print +# define je_malloc_usable_size je_malloc_usable_size +#endif + +#include <stdlib.h> +#include <stdbool.h> +#include <stdint.h> +#include <limits.h> +#include <strings.h> + +#define JEMALLOC_VERSION "0.0.0-0-g0000000000000000000000000000000000000000" +#define JEMALLOC_VERSION_MAJOR 0 +#define JEMALLOC_VERSION_MINOR 0 +#define JEMALLOC_VERSION_BUGFIX 0 +#define JEMALLOC_VERSION_NREV 0 +#define JEMALLOC_VERSION_GID "0000000000000000000000000000000000000000" + +# define MALLOCX_LG_ALIGN(la) ((int)(la)) +# if LG_SIZEOF_PTR == 2 +# define MALLOCX_ALIGN(a) ((int)(ffs((int)(a))-1)) +# else +# define MALLOCX_ALIGN(a) \ + ((int)(((size_t)(a) < (size_t)INT_MAX) ? ffs((int)(a))-1 : \ + ffs((int)(((size_t)(a))>>32))+31)) +# endif +# define MALLOCX_ZERO ((int)0x40) +/* + * Bias tcache index bits so that 0 encodes "automatic tcache management", and 1 + * encodes MALLOCX_TCACHE_NONE. + */ +# define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8)) +# define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1) +/* + * Bias arena index bits so that 0 encodes "use an automatically chosen arena". + */ +# define MALLOCX_ARENA(a) ((((int)(a))+1) << 20) + +#if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW) +# define JEMALLOC_CXX_THROW throw() +#else +# define JEMALLOC_CXX_THROW +#endif + +#if _MSC_VER +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) __declspec(align(s)) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +// # ifndef JEMALLOC_EXPORT +// # ifdef DLLEXPORT +// # define JEMALLOC_EXPORT __declspec(dllexport) +// # else +// # define JEMALLOC_EXPORT __declspec(dllimport) +// # endif +// # endif +# define JEMALLOC_EXPORT +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE __declspec(noinline) +# ifdef __cplusplus +# define JEMALLOC_NOTHROW __declspec(nothrow) +# else +# define JEMALLOC_NOTHROW +# endif +# define JEMALLOC_SECTION(s) __declspec(allocate(s)) +# define JEMALLOC_RESTRICT_RETURN __declspec(restrict) +# if _MSC_VER >= 1900 && !defined(__EDG__) +# define JEMALLOC_ALLOCATOR __declspec(allocator) +# else +# define JEMALLOC_ALLOCATOR +# endif +#elif defined(JEMALLOC_HAVE_ATTR) +# define JEMALLOC_ATTR(s) __attribute__((s)) +# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s)) +# ifdef JEMALLOC_HAVE_ATTR_ALLOC_SIZE +# define JEMALLOC_ALLOC_SIZE(s) JEMALLOC_ATTR(alloc_size(s)) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) JEMALLOC_ATTR(alloc_size(s1, s2)) +# else +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# endif +# ifndef JEMALLOC_EXPORT +# define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default")) +# endif +# ifdef JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(gnu_printf, s, i)) +# elif defined(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF) +# define JEMALLOC_FORMAT_PRINTF(s, i) JEMALLOC_ATTR(format(printf, s, i)) +# else +# define JEMALLOC_FORMAT_PRINTF(s, i) +# endif +# define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline) +# define JEMALLOC_NOTHROW JEMALLOC_ATTR(nothrow) +# define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s)) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#else +# define JEMALLOC_ATTR(s) +# define JEMALLOC_ALIGNED(s) +# define JEMALLOC_ALLOC_SIZE(s) +# define JEMALLOC_ALLOC_SIZE2(s1, s2) +# define JEMALLOC_EXPORT +# define JEMALLOC_FORMAT_PRINTF(s, i) +# define JEMALLOC_NOINLINE +# define JEMALLOC_NOTHROW +# define JEMALLOC_SECTION(s) +# define JEMALLOC_RESTRICT_RETURN +# define JEMALLOC_ALLOCATOR +#endif + +/* + * The je_ prefix on the following public symbol declarations is an artifact + * of namespace management, and should be omitted in application code unless + * JEMALLOC_NO_DEMANGLE is defined (see jemalloc_mangle.h). + */ +extern JEMALLOC_EXPORT const char *je_malloc_conf; +extern JEMALLOC_EXPORT void (*je_malloc_message)(void *cbopaque, + const char *s); + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_malloc(size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_calloc(size_t num, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_posix_memalign(void **memptr, + size_t alignment, size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(nonnull(1)); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_aligned_alloc(size_t alignment, + size_t size) JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc) + JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_realloc(void *ptr, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr) + JEMALLOC_CXX_THROW; + +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_mallocx(size_t size, int flags) + JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1); +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_rallocx(void *ptr, size_t size, + int flags) JEMALLOC_ALLOC_SIZE(2); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_xallocx(void *ptr, size_t size, + size_t extra, int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_sallocx(const void *ptr, + int flags) JEMALLOC_ATTR(pure); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_dallocx(void *ptr, int flags); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size, + int flags); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_nallocx(size_t size, int flags) + JEMALLOC_ATTR(pure); + +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctl(const char *name, + void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlnametomib(const char *name, + size_t *mibp, size_t *miblenp); +JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_malloc_stats_print( + void (*write_cb)(void *, const char *), void *je_cbopaque, + const char *opts); +JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size( + JEMALLOC_USABLE_SIZE_CONST void *ptr) JEMALLOC_CXX_THROW; + +#ifdef JEMALLOC_OVERRIDE_MEMALIGN +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_memalign(size_t alignment, size_t size) + JEMALLOC_CXX_THROW JEMALLOC_ATTR(malloc); +#endif + +#ifdef JEMALLOC_OVERRIDE_VALLOC +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_NOTHROW *je_valloc(size_t size) JEMALLOC_CXX_THROW + JEMALLOC_ATTR(malloc); +#endif + +/* + * void * + * chunk_alloc(void *new_addr, size_t size, size_t alignment, bool *zero, + * bool *commit, unsigned arena_ind); + */ +typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); + +/* + * bool + * chunk_dalloc(void *chunk, size_t size, bool committed, unsigned arena_ind); + */ +typedef bool (chunk_dalloc_t)(void *, size_t, bool, unsigned); + +/* + * bool + * chunk_commit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_commit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_decommit(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_decommit_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_purge(void *chunk, size_t size, size_t offset, size_t length, + * unsigned arena_ind); + */ +typedef bool (chunk_purge_t)(void *, size_t, size_t, size_t, unsigned); + +/* + * bool + * chunk_split(void *chunk, size_t size, size_t size_a, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_split_t)(void *, size_t, size_t, size_t, bool, unsigned); + +/* + * bool + * chunk_merge(void *chunk_a, size_t size_a, void *chunk_b, size_t size_b, + * bool committed, unsigned arena_ind); + */ +typedef bool (chunk_merge_t)(void *, size_t, void *, size_t, bool, unsigned); + +typedef struct { + chunk_alloc_t *alloc; + chunk_dalloc_t *dalloc; + chunk_commit_t *commit; + chunk_decommit_t *decommit; + chunk_purge_t *purge; + chunk_split_t *split; + chunk_merge_t *merge; +} chunk_hooks_t; + +/* + * By default application code must explicitly refer to mangled symbol names, + * so that it is possible to use jemalloc in conjunction with another allocator + * in the same application. Define JEMALLOC_MANGLE in order to cause automatic + * name mangling that matches the API prefixing that happened as a result of + * --with-mangling and/or --with-jemalloc-prefix configuration settings. + */ +#ifdef JEMALLOC_MANGLE +# ifndef JEMALLOC_NO_DEMANGLE +# define JEMALLOC_NO_DEMANGLE +# endif +# define malloc_conf je_malloc_conf +# define malloc_message je_malloc_message +# define malloc je_malloc +# define calloc je_calloc +# define posix_memalign je_posix_memalign +# define aligned_alloc je_aligned_alloc +# define realloc je_realloc +# define free je_free +# define mallocx je_mallocx +# define rallocx je_rallocx +# define xallocx je_xallocx +# define sallocx je_sallocx +# define dallocx je_dallocx +# define sdallocx je_sdallocx +# define nallocx je_nallocx +# define mallctl je_mallctl +# define mallctlnametomib je_mallctlnametomib +# define mallctlbymib je_mallctlbymib +# define malloc_stats_print je_malloc_stats_print +# define malloc_usable_size je_malloc_usable_size +#endif + +/* + * The je_* macros can be used as stable alternative names for the + * public jemalloc API if JEMALLOC_NO_DEMANGLE is defined. This is primarily + * meant for use in jemalloc itself, but it can be used by application code to + * provide isolation from the name mangling specified via --with-mangling + * and/or --with-jemalloc-prefix. + */ +#ifndef JEMALLOC_NO_DEMANGLE +# undef je_malloc_conf +# undef je_malloc_message +# undef je_malloc +# undef je_calloc +# undef je_posix_memalign +# undef je_aligned_alloc +# undef je_realloc +# undef je_free +# undef je_mallocx +# undef je_rallocx +# undef je_xallocx +# undef je_sallocx +# undef je_dallocx +# undef je_sdallocx +# undef je_nallocx +# undef je_mallctl +# undef je_mallctlnametomib +# undef je_mallctlbymib +# undef je_malloc_stats_print +# undef je_malloc_usable_size +#endif + +#ifdef __cplusplus +} +#endif +#endif /* JEMALLOC_H_ */ diff --git a/lib/windows64/include/ogg/config_types.h b/lib/windows64/include/ogg/config_types.h new file mode 100644 index 0000000..1e7d490 --- /dev/null +++ b/lib/windows64/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 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/lib/windows64/include/ogg/ogg.h b/lib/windows64/include/ogg/ogg.h new file mode 100644 index 0000000..cea4ebe --- /dev/null +++ b/lib/windows64/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/lib/windows64/include/ogg/os_types.h b/lib/windows64/include/ogg/os_types.h new file mode 100644 index 0000000..8bf8210 --- /dev/null +++ b/lib/windows64/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/lib/windows64/include/png.h b/lib/windows64/include/png.h new file mode 100644 index 0000000..f2013cf --- /dev/null +++ b/lib/windows64/include/png.h @@ -0,0 +1,3265 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.6.18, July 23, 2015 + * + * Copyright (c) 1998-2015 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.6.18, July 23, 2015: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 12.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 12.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-7 13 10210 12.so.0.10[.0] + * 1.2.10rc1-2 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.4.0beta1-5 14 10400 14.so.0.0[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.4.0beta7-8 14 10400 14.so.0.0[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.4.0beta9-14 14 10400 14.so.0.0[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.4.0beta15-36 14 10400 14.so.0.0[.0] + * 1.4.0beta37-87 14 10400 14.so.14.0[.0] + * 1.4.0rc01 14 10400 14.so.14.0[.0] + * 1.4.0beta88-109 14 10400 14.so.14.0[.0] + * 1.4.0rc02-08 14 10400 14.so.14.0[.0] + * 1.4.0 14 10400 14.so.14.0[.0] + * 1.4.1beta01-03 14 10401 14.so.14.1[.0] + * 1.4.1rc01 14 10401 14.so.14.1[.0] + * 1.4.1beta04-12 14 10401 14.so.14.1[.0] + * 1.4.1 14 10401 14.so.14.1[.0] + * 1.4.2 14 10402 14.so.14.2[.0] + * 1.4.3 14 10403 14.so.14.3[.0] + * 1.4.4 14 10404 14.so.14.4[.0] + * 1.5.0beta01-58 15 10500 15.so.15.0[.0] + * 1.5.0rc01-07 15 10500 15.so.15.0[.0] + * 1.5.0 15 10500 15.so.15.0[.0] + * 1.5.1beta01-11 15 10501 15.so.15.1[.0] + * 1.5.1rc01-02 15 10501 15.so.15.1[.0] + * 1.5.1 15 10501 15.so.15.1[.0] + * 1.5.2beta01-03 15 10502 15.so.15.2[.0] + * 1.5.2rc01-03 15 10502 15.so.15.2[.0] + * 1.5.2 15 10502 15.so.15.2[.0] + * 1.5.3beta01-10 15 10503 15.so.15.3[.0] + * 1.5.3rc01-02 15 10503 15.so.15.3[.0] + * 1.5.3beta11 15 10503 15.so.15.3[.0] + * 1.5.3 [omitted] + * 1.5.4beta01-08 15 10504 15.so.15.4[.0] + * 1.5.4rc01 15 10504 15.so.15.4[.0] + * 1.5.4 15 10504 15.so.15.4[.0] + * 1.5.5beta01-08 15 10505 15.so.15.5[.0] + * 1.5.5rc01 15 10505 15.so.15.5[.0] + * 1.5.5 15 10505 15.so.15.5[.0] + * 1.5.6beta01-07 15 10506 15.so.15.6[.0] + * 1.5.6rc01-03 15 10506 15.so.15.6[.0] + * 1.5.6 15 10506 15.so.15.6[.0] + * 1.5.7beta01-05 15 10507 15.so.15.7[.0] + * 1.5.7rc01-03 15 10507 15.so.15.7[.0] + * 1.5.7 15 10507 15.so.15.7[.0] + * 1.6.0beta01-40 16 10600 16.so.16.0[.0] + * 1.6.0rc01-08 16 10600 16.so.16.0[.0] + * 1.6.0 16 10600 16.so.16.0[.0] + * 1.6.1beta01-09 16 10601 16.so.16.1[.0] + * 1.6.1rc01 16 10601 16.so.16.1[.0] + * 1.6.1 16 10601 16.so.16.1[.0] + * 1.6.2beta01 16 10602 16.so.16.2[.0] + * 1.6.2rc01-06 16 10602 16.so.16.2[.0] + * 1.6.2 16 10602 16.so.16.2[.0] + * 1.6.3beta01-11 16 10603 16.so.16.3[.0] + * 1.6.3rc01 16 10603 16.so.16.3[.0] + * 1.6.3 16 10603 16.so.16.3[.0] + * 1.6.4beta01-02 16 10604 16.so.16.4[.0] + * 1.6.4rc01 16 10604 16.so.16.4[.0] + * 1.6.4 16 10604 16.so.16.4[.0] + * 1.6.5 16 10605 16.so.16.5[.0] + * 1.6.6 16 10606 16.so.16.6[.0] + * 1.6.7beta01-04 16 10607 16.so.16.7[.0] + * 1.6.7rc01-03 16 10607 16.so.16.7[.0] + * 1.6.7 16 10607 16.so.16.7[.0] + * 1.6.8beta01-02 16 10608 16.so.16.8[.0] + * 1.6.8rc01-02 16 10608 16.so.16.8[.0] + * 1.6.8 16 10608 16.so.16.8[.0] + * 1.6.9beta01-04 16 10609 16.so.16.9[.0] + * 1.6.9rc01-02 16 10609 16.so.16.9[.0] + * 1.6.9 16 10609 16.so.16.9[.0] + * 1.6.10beta01-03 16 10610 16.so.16.10[.0] + * 1.6.10rc01-03 16 10610 16.so.16.10[.0] + * 1.6.10 16 10610 16.so.16.10[.0] + * 1.6.11beta01-06 16 10611 16.so.16.11[.0] + * 1.6.11rc01-02 16 10611 16.so.16.11[.0] + * 1.6.11 16 10611 16.so.16.11[.0] + * 1.6.12rc01-03 16 10612 16.so.16.12[.0] + * 1.6.12 16 10612 16.so.16.12[.0] + * 1.6.13beta01-04 16 10613 16.so.16.13[.0] + * 1.6.13rc01-02 16 10613 16.so.16.13[.0] + * 1.6.13 16 10613 16.so.16.13[.0] + * 1.6.14beta01-07 16 10614 16.so.16.14[.0] + * 1.6.14rc01-02 16 10614 16.so.16.14[.0] + * 1.6.14 16 10614 16.so.16.14[.0] + * 1.6.15beta01-08 16 10615 16.so.16.15[.0] + * 1.6.15rc01-03 16 10615 16.so.16.15[.0] + * 1.6.15 16 10615 16.so.16.15[.0] + * 1.6.16beta01-03 16 10616 16.so.16.16[.0] + * 1.6.16rc01-02 16 10616 16.so.16.16[.0] + * 1.6.16 16 10616 16.so.16.16[.0] + * 1.6.17beta01-06 16 10617 16.so.16.17[.0] + * 1.6.17rc01-06 16 10617 16.so.16.17[.0] + * 1.6.17 16 10617 16.so.16.17[.0] + * 1.6.18beta01-09 16 10618 16.so.16.18[.0] + * 1.6.18rc01-03 16 10618 16.so.16.18[.0] + * 1.6.18 16 10618 16.so.16.18[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcNN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng-manual.txt or libpng.3 for more information. The PNG + * specification is available as a W3C Recommendation and as an ISO + * Specification, <http://www.w3.org/TR/2003/REC-PNG-20031110/ + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + * + * If you modify libpng you may insert additional notices immediately following + * this sentence. + * + * This code is released under the libpng license. + * + * libpng versions 1.0.7, July 1, 2000, through 1.6.18, July 23, 2015, are + * Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.0.6 + * with the following individuals added to the list of Contributing Authors: + * + * Simon-Pierre Cadieux + * Mans Rullgard + * Cosmin Truta + * Gilles Vollant + * James Yu + * + * and with the following additions to the disclaimer: + * + * There is no warranty against interference with your enjoyment of the + * library or against infringement. There is no warranty that our + * efforts or the library will fulfill any of your particular purposes + * or needs. This library is provided with all faults, and the entire + * risk of satisfactory quality, performance, accuracy, and effort is with + * the user. + * + * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + * Copyright (c) 1998-2000 Glenn Randers-Pehrson, and are distributed according + * to the same disclaimer and license as libpng-0.96, with the following + * individuals added to the list of Contributing Authors: + * + * Tom Lane + * Glenn Randers-Pehrson + * Eric S. Raymond + * Willem van Schaik + * + * libpng versions 0.89, June 1996, through 0.96, May 1997, are + * Copyright (c) 1996-1997 Andreas Dilger, and are + * distributed according to the same disclaimer and license as libpng-0.88, + * with the following individuals added to the list of Contributing Authors: + * + * John Bowler + * Kevin Bracey + * Sam Bushell + * Magnus Holmgren + * Greg Roelofs + * Tom Tanner + * + * libpng versions 0.5, May 1995, through 0.88, January 1996, are + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + * + * For the purposes of this copyright and license, "Contributing Authors" + * is defined as the following set of individuals: + * + * Andreas Dilger + * Dave Martindale + * Guy Eric Schalnat + * Paul Schmidt + * Tim Wegner + * + * The PNG Reference Library is supplied "AS IS". The Contributing Authors + * and Group 42, Inc. disclaim all warranties, expressed or implied, + * including, without limitation, the warranties of merchantability and of + * fitness for any purpose. The Contributing Authors and Group 42, Inc. + * assume no liability for direct, indirect, incidental, special, exemplary, + * or consequential damages, which may result from the use of the PNG + * Reference Library, even if advised of the possibility of such damage. + * + * Permission is hereby granted to use, copy, modify, and distribute this + * source code, or portions hereof, for any purpose, without fee, subject + * to the following restrictions: + * + * 1. The origin of this source code must not be misrepresented. + * + * 2. Altered versions must be plainly marked as such and must not + * be misrepresented as being the original source. + * + * 3. This Copyright notice may not be removed or altered from any + * source or altered source distribution. + * + * The Contributing Authors and Group 42, Inc. specifically permit, without + * fee, and encourage the use of this source code as a component to + * supporting the PNG file format in commercial products. If you use this + * source code in a product, acknowledgment is not required but would be + * appreciated. + */ + +/* + * A "png_get_copyright" function is available, for convenient use in "about" + * boxes and the like: + * + * printf("%s", png_get_copyright(NULL)); + * + * Also, the PNG logo (in PNG format, of course) is supplied in the + * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + */ + +/* + * Libpng is OSI Certified Open Source Software. OSI Certified Open Source is + * a certification mark of the Open Source Initiative. OSI has not addressed + * the additional disclaimers inserted at version 1.0.7. + */ + +/* + * The contributing authors would like to thank all those who helped + * with testing, bug fixes, and patience. This wouldn't have been + * possible without all of you. + * + * Thanks to Frank J. T. Wojcik for helping with the documentation. + */ + +/* + * Y2K compliance in libpng: + * ========================= + * + * July 23, 2015 + * + * Since the PNG Development group is an ad-hoc body, we can't make + * an official declaration. + * + * This is your unofficial assurance that libpng from version 0.71 and + * upward through 1.6.18 are Y2K compliant. It is my belief that + * earlier versions were also Y2K compliant. + * + * Libpng only has two year fields. One is a 2-byte unsigned integer + * that will hold years up to 65535. The other, which is deprecated, + * holds the date in text format, and will hold years up to 9999. + * + * The integer is + * "png_uint_16 year" in png_time_struct. + * + * The string is + * "char time_buffer[29]" in png_struct. This is no longer used + * in libpng-1.6.x and will be removed from libpng-1.7.0. + * + * There are seven time-related functions: + * png.c: png_convert_to_rfc_1123_buffer() in png.c + * (formerly png_convert_to_rfc_1123() prior to libpng-1.5.x and + * png_convert_to_rfc_1152() in error prior to libpng-0.98) + * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c + * png_convert_from_time_t() in pngwrite.c + * png_get_tIME() in pngget.c + * png_handle_tIME() in pngrutil.c, called in pngread.c + * png_set_tIME() in pngset.c + * png_write_tIME() in pngwutil.c, called in pngwrite.c + * + * All handle dates properly in a Y2K environment. The + * png_convert_from_time_t() function calls gmtime() to convert from system + * clock time, which returns (year - 1900), which we properly convert to + * the full 4-digit year. There is a possibility that libpng applications + * are not passing 4-digit years into the png_convert_to_rfc_1123_buffer() + * function, or that they are incorrectly passing only a 2-digit year + * instead of "year - 1900" into the png_convert_from_struct_tm() function, + * but this is not under our control. The libpng documentation has always + * stated that it works with 4-digit years, and the APIs have been + * documented as such. + * + * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned + * integer to hold the year, and can hold years as large as 65535. + * + * zlib, upon which libpng depends, is also Y2K compliant. It contains + * no date-related code. + * + * Glenn Randers-Pehrson + * libpng maintainer + * PNG Development Group + */ + +#ifndef PNG_H +#define PNG_H + +/* This is not the place to learn how to use libpng. The file libpng-manual.txt + * describes how to use libpng, and the file example.c summarizes it + * with some code on which to build. This file is useful for looking + * at the actual function definitions and structure components. If that + * file has been stripped from your copy of libpng, you can find it at + * <http://www.libpng.org/pub/png/libpng-manual.txt> + * + * If you just need to read a PNG file and don't want to read the documentation + * skip to the end of this file and read the section entitled 'simplified API'. + */ + +/* Version information for png.h - this should match the version in png.c */ +#define PNG_LIBPNG_VER_STRING "1.6.18" +#define PNG_HEADER_VERSION_STRING \ + " libpng version 1.6.18 - July 23, 2015\n" + +#define PNG_LIBPNG_VER_SONUM 16 +#define PNG_LIBPNG_VER_DLLNUM 16 + +/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ +#define PNG_LIBPNG_VER_MAJOR 1 +#define PNG_LIBPNG_VER_MINOR 6 +#define PNG_LIBPNG_VER_RELEASE 18 + +/* This should match the numeric part of the final component of + * PNG_LIBPNG_VER_STRING, omitting any leading zero: + */ + +#define PNG_LIBPNG_VER_BUILD 0 + +/* Release Status */ +#define PNG_LIBPNG_BUILD_ALPHA 1 +#define PNG_LIBPNG_BUILD_BETA 2 +#define PNG_LIBPNG_BUILD_RC 3 +#define PNG_LIBPNG_BUILD_STABLE 4 +#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 + +/* Release-Specific Flags */ +#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with + PNG_LIBPNG_BUILD_STABLE only */ +#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_SPECIAL */ +#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_PRIVATE */ + +#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE + +/* Careful here. At one time, Guy wanted to use 082, but that would be octal. + * We must not include leading zeros. + * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only + * version 1.0.0 was mis-numbered 100 instead of 10000). From + * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release + */ +#define PNG_LIBPNG_VER 10618 /* 1.6.18 */ + +/* Library configuration: these options cannot be changed after + * the library has been built. + */ +#ifndef PNGLCONF_H + /* If pnglibconf.h is missing, you can + * copy scripts/pnglibconf.h.prebuilt to pnglibconf.h + */ +# include "pnglibconf.h" +#endif + +#ifndef PNG_VERSION_INFO_ONLY + /* Machine specific configuration. */ +# include "pngconf.h" +#endif + +/* + * Added at libpng-1.2.8 + * + * Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#define png_libpng_ver png_get_header_ver(NULL) + +/* This file is arranged in several sections: + * + * 1. Any configuration options that can be specified by for the application + * code when it is built. (Build time configuration is in pnglibconf.h) + * 2. Type definitions (base types are defined in pngconf.h), structure + * definitions. + * 3. Exported library functions. + * 4. Simplified API. + * + * The library source code has additional files (principally pngpriv.h) that + * allow configuration of the library. + */ +/* Section 1: run time configuration + * See pnglibconf.h for build time configuration + * + * Run time configuration allows the application to choose between + * implementations of certain arithmetic APIs. The default is set + * at build time and recorded in pnglibconf.h, but it is safe to + * override these (and only these) settings. Note that this won't + * change what the library does, only application code, and the + * settings can (and probably should) be made on a per-file basis + * by setting the #defines before including png.h + * + * Use macros to read integers from PNG data or use the exported + * functions? + * PNG_USE_READ_MACROS: use the macros (see below) Note that + * the macros evaluate their argument multiple times. + * PNG_NO_USE_READ_MACROS: call the relevant library function. + * + * Use the alternative algorithm for compositing alpha samples that + * does not use division? + * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' + * algorithm. + * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. + * + * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is + * false? + * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error + * APIs to png_warning. + * Otherwise the calls are mapped to png_error. + */ + +/* Section 2: type definitions, including structures and compile time + * constants. + * See pngconf.h for base types that vary by machine/system + */ + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef char* png_libpng_version_1_6_18; + +/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. + * + * png_struct is the cache of information used while reading or writing a single + * PNG file. One of these is always required, although the simplified API + * (below) hides the creation and destruction of it. + */ +typedef struct png_struct_def png_struct; +typedef const png_struct * png_const_structp; +typedef png_struct * png_structp; +typedef png_struct * * png_structpp; + +/* png_info contains information read from or to be written to a PNG file. One + * or more of these must exist while reading or creating a PNG file. The + * information is not used by libpng during read but is used to control what + * gets written when a PNG file is created. "png_get_" function calls read + * information during read and "png_set_" functions calls write information + * when creating a PNG. + * been moved into a separate header file that is not accessible to + * applications. Read libpng-manual.txt or libpng.3 for more info. + */ +typedef struct png_info_def png_info; +typedef png_info * png_infop; +typedef const png_info * png_const_infop; +typedef png_info * * png_infopp; + +/* Types with names ending 'p' are pointer types. The corresponding types with + * names ending 'rp' are identical pointer types except that the pointer is + * marked 'restrict', which means that it is the only pointer to the object + * passed to the function. Applications should not use the 'restrict' types; + * it is always valid to pass 'p' to a pointer with a function argument of the + * corresponding 'rp' type. Different compilers have different rules with + * regard to type matching in the presence of 'restrict'. For backward + * compatibility libpng callbacks never have 'restrict' in their parameters and, + * consequentially, writing portable application code is extremely difficult if + * an attempt is made to use 'restrict'. + */ +typedef png_struct * PNG_RESTRICT png_structrp; +typedef const png_struct * PNG_RESTRICT png_const_structrp; +typedef png_info * PNG_RESTRICT png_inforp; +typedef const png_info * PNG_RESTRICT png_const_inforp; + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color * png_colorp; +typedef const png_color * png_const_colorp; +typedef png_color * * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 * png_color_16p; +typedef const png_color_16 * png_const_color_16p; +typedef png_color_16 * * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 * png_color_8p; +typedef const png_color_8 * png_const_color_8p; +typedef png_color_8 * * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry * png_sPLT_entryp; +typedef const png_sPLT_entry * png_const_sPLT_entryp; +typedef png_sPLT_entry * * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t * png_sPLT_tp; +typedef const png_sPLT_t * png_const_sPLT_tp; +typedef png_sPLT_t * * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text" fields can be a + * regular C string, an empty string, or a NULL pointer. + * However, the structure returned by png_get_text() will always contain + * the "text" field as a regular zero-terminated C string (possibly + * empty), never a NULL pointer, so it can be safely used in printf() and + * other string-handling functions. Note that the "itxt_length", "lang", and + * "lang_key" members of the structure only exist when the library is built + * with iTXt chunk support. Prior to libpng-1.4.0 the library was built by + * default without iTXt support. Also note that when iTXt *is* supported, + * the "lang" and "lang_key" fields contain NULL pointers when the + * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or + * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the + * same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag" + * which is always 0 or 1, or its "compression method" which is always 0. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +} png_text; +typedef png_text * png_textp; +typedef const png_text * png_const_textp; +typedef png_text * * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time * png_timep; +typedef const png_time * png_const_timep; +typedef png_time * * png_timepp; + +#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) ||\ + defined(PNG_USER_CHUNKS_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + * + * The data in the structure is set by libpng on read and used on write. + */ +typedef struct png_unknown_chunk_t +{ + png_byte name[5]; /* Textual chunk name with '\0' terminator */ + png_byte *data; /* Data, should not be modified on read! */ + png_size_t size; + + /* On write 'location' must be set using the flag values listed below. + * Notice that on read it is set by libpng however the values stored have + * more bits set than are listed below. Always treat the value as a + * bitmask. On write set only one bit - setting multiple bits may cause the + * chunk to be written in multiple places. + */ + png_byte location; /* mode of operation at read time */ +} +png_unknown_chunk; + +typedef png_unknown_chunk * png_unknown_chunkp; +typedef const png_unknown_chunk * png_const_unknown_chunkp; +typedef png_unknown_chunk * * png_unknown_chunkpp; +#endif + +/* Flag values for the unknown chunk location byte. */ +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_AFTER_IDAT 0x08 + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) + +/* These are constants for fixed point values encoded in the + * PNG specification manner (x100000) + */ +#define PNG_FP_1 100000 +#define PNG_FP_HALF 50000 +#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL) +#define PNG_FP_MIN (-PNG_FP_MAX) + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_<chunk> defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000 /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info * png_row_infop; +typedef png_row_info * * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. Note that the 'write' function must not + * modify the buffer it is passed. The 'read' function, on the other hand, is + * expected to return the read data in the buffer. + */ +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); + +/* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +/* not used anywhere */ +/* typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); */ +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This must match the function definition in <setjmp.h>, and the application + * must include this before png.h to obtain the definition of jmp_buf. The + * function is required to be PNG_NORETURN, but this is not checked. If the + * function does return the application will crash via an abort() or similar + * system level call. + * + * If you get a warning here while building the library you may need to make + * changes to ensure that pnglibconf.h records the calling convention used by + * your compiler. This may be very difficult - try using a different compiler + * to build the library! + */ +PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.4.0 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ +/* Added to libpng-1.5.4 */ +#define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ +#define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +/* NOTE: prior to 1.5 these functions had no 'API' style declaration, + * this allowed the zlib default functions to be used on Windows + * platforms. In 1.5 the zlib default malloc (which just calls malloc and + * ignores the first argument) should be completely compatible with the + * following. + */ +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); + +/* Section 3: exported functions + * Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng-manual.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + * + * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in + * pngconf.h and in the *.dfn files in the scripts directory. + * + * PNG_EXPORT(ordinal, type, name, (args)); + * + * ordinal: ordinal that is used while building + * *.def files. The ordinal value is only + * relevant when preprocessing png.h with + * the *.dfn files for building symbol table + * entries, and are removed by pngconf.h. + * type: return type of the function + * name: function name + * args: function arguments, with types + * + * When we wish to append attributes to a function prototype we use + * the PNG_EXPORTA() macro instead. + * + * PNG_EXPORTA(ordinal, type, name, (args), attributes); + * + * ordinal, type, name, and args: same as in PNG_EXPORT(). + * attributes: function attributes + */ + +/* Returns the version number of the library */ +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); + +/* Tell lib we have already handled the first <num_bytes> magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +PNG_EXPORTA(4, png_structp, png_create_read_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +PNG_EXPORTA(5, png_structp, png_create_write_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); + +PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, + (png_const_structrp png_ptr)); + +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr, + png_size_t size)); + +/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp + * match up. + */ +#ifdef PNG_SETJMP_SUPPORTED +/* This function returns the jmp_buf built in to *png_ptr. It must be + * supplied with an appropriate 'longjmp' function to use on that jmp_buf + * unless the default error function is overridden in which case NULL is + * acceptable. The size of the jmp_buf is checked against the actual size + * allocated by the library - the call will return NULL on a mismatch + * indicating an ABI mismatch. + */ +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); +# define png_jmpbuf(png_ptr) \ + (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) +#endif +/* This function should be used by libpng applications in place of + * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it + * will use it; otherwise it will call PNG_ABORT(). This function was + * added in libpng-1.5.0. + */ +PNG_EXPORTA(9, void, png_longjmp, (png_const_structrp png_ptr, int val), + PNG_NORETURN); + +#ifdef PNG_READ_SUPPORTED +/* Reset the compression stream */ +PNG_EXPORTA(10, int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED); +#endif + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(11, png_structp, png_create_read_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +PNG_EXPORTA(12, png_structp, png_create_write_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +#endif + +/* Write the PNG file signature. */ +PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr)); + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr, + png_const_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr, + png_const_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr)); + +/* Allocate and initialize the info structure */ +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr), + PNG_ALLOCATED); + +/* DEPRECATED: this function allowed init structures to be created using the + * default allocation method (typically malloc). Use is deprecated in 1.6.0 and + * the API will be removed in the future. + */ +PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr, + png_size_t png_info_struct_size), PNG_DEPRECATED); + +/* Writes all the PNG information before the image. */ +PNG_EXPORT(20, void, png_write_info_before_PLTE, + (png_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(21, void, png_write_info, + (png_structrp png_ptr, png_const_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +PNG_EXPORT(22, void, png_read_info, + (png_structrp png_ptr, png_inforp info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED + /* Convert to a US string format: there is no localization support in this + * routine. The original implementation used a 29 character buffer in + * png_struct, this will be removed in future versions. + */ +#if PNG_LIBPNG_VER < 10700 +/* To do: remove this from libpng17 (and from libpng17/png.c and pngstruct.h) */ +PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr, + png_const_timep ptime),PNG_DEPRECATED); +#endif +PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, (char out[29], + png_const_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + const struct tm * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +PNG_EXPORT(25, void, png_convert_from_time_t, (png_timep ptime, time_t ttime)); +#endif /* CONVERT_tIME */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +PNG_EXPORT(26, void, png_set_expand, (png_structrp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structrp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +/* Expand to 16-bit channels, forces conversion of palette to RGB and expansion + * of a tRNS chunk if present. + */ +PNG_EXPORT(221, void, png_set_expand_16, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +PNG_EXPORT(30, void, png_set_bgr, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +#define PNG_ERROR_ACTION_NONE 1 +#define PNG_ERROR_ACTION_WARN 2 +#define PNG_ERROR_ACTION_ERROR 3 +#define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ + +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structrp png_ptr, + int error_action, double red, double green)) +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green)) + +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp + png_ptr)); +#endif + +#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); +#endif + +#ifdef PNG_READ_ALPHA_MODE_SUPPORTED +/* How the alpha channel is interpreted - this affects how the color channels + * of a PNG file are returned to the calling application when an alpha channel, + * or a tRNS chunk in a palette file, is present. + * + * This has no effect on the way pixels are written into a PNG output + * datastream. The color samples in a PNG datastream are never premultiplied + * with the alpha samples. + * + * The default is to return data according to the PNG specification: the alpha + * channel is a linear measure of the contribution of the pixel to the + * corresponding composited pixel, and the color channels are unassociated + * (not premultiplied). The gamma encoded color channels must be scaled + * according to the contribution and to do this it is necessary to undo + * the encoding, scale the color values, perform the composition and reencode + * the values. This is the 'PNG' mode. + * + * The alternative is to 'associate' the alpha with the color information by + * storing color channel values that have been scaled by the alpha. + * image. These are the 'STANDARD', 'ASSOCIATED' or 'PREMULTIPLIED' modes + * (the latter being the two common names for associated alpha color channels). + * + * For the 'OPTIMIZED' mode, a pixel is treated as opaque only if the alpha + * value is equal to the maximum value. + * + * The final choice is to gamma encode the alpha channel as well. This is + * broken because, in practice, no implementation that uses this choice + * correctly undoes the encoding before handling alpha composition. Use this + * choice only if other serious errors in the software or hardware you use + * mandate it; the typical serious error is for dark halos to appear around + * opaque areas of the composited PNG image because of arithmetic overflow. + * + * The API function png_set_alpha_mode specifies which of these choices to use + * with an enumerated 'mode' value and the gamma of the required output: + */ +#define PNG_ALPHA_PNG 0 /* according to the PNG standard */ +#define PNG_ALPHA_STANDARD 1 /* according to Porter/Duff */ +#define PNG_ALPHA_ASSOCIATED 1 /* as above; this is the normal practice */ +#define PNG_ALPHA_PREMULTIPLIED 1 /* as above */ +#define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ +#define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ + +PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structrp png_ptr, int mode, + double output_gamma)) +PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr, + int mode, png_fixed_point output_gamma)) +#endif + +#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) +/* The output_gamma value is a screen gamma in libpng terminology: it expresses + * how to decode the output values, not how they are encoded. + */ +#define PNG_DEFAULT_sRGB -1 /* sRGB gamma and color space */ +#define PNG_GAMMA_MAC_18 -2 /* Old Mac '1.8' gamma and color space */ +#define PNG_GAMMA_sRGB 220000 /* Television standards--matches sRGB gamma */ +#define PNG_GAMMA_LINEAR PNG_FP_1 /* Linear */ +#endif + +/* The following are examples of calls to png_set_alpha_mode to achieve the + * required overall gamma correction and, where necessary, alpha + * premultiplication. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * This is the default libpng handling of the alpha channel - it is not + * pre-multiplied into the color components. In addition the call states + * that the output is for a sRGB system and causes all PNG files without gAMA + * chunks to be assumed to be encoded using sRGB. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * In this case the output is assumed to be something like an sRGB conformant + * display preceeded by a power-law lookup table of power 1.45. This is how + * early Mac systems behaved. + * + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR); + * This is the classic Jim Blinn approach and will work in academic + * environments where everything is done by the book. It has the shortcoming + * of assuming that input PNG data with no gamma information is linear - this + * is unlikely to be correct unless the PNG files where generated locally. + * Most of the time the output precision will be so low as to show + * significant banding in dark areas of the image. + * + * png_set_expand_16(pp); + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_DEFAULT_sRGB); + * This is a somewhat more realistic Jim Blinn inspired approach. PNG files + * are assumed to have the sRGB encoding if not marked with a gamma value and + * the output is always 16 bits per component. This permits accurate scaling + * and processing of the data. If you know that your input PNG files were + * generated locally you might need to replace PNG_DEFAULT_sRGB with the + * correct value for your system. + * + * png_set_alpha_mode(pp, PNG_ALPHA_OPTIMIZED, PNG_DEFAULT_sRGB); + * If you just need to composite the PNG image onto an existing background + * and if you control the code that does this you can use the optimization + * setting. In this case you just copy completely opaque pixels to the + * output. For pixels that are not completely transparent (you just skip + * those) you do the composition math using png_composite or png_composite_16 + * below then encode the resultant 8-bit or 16-bit values to match the output + * encoding. + * + * Other cases + * If neither the PNG nor the standard linear encoding work for you because + * of the software or hardware you use then you have a big problem. The PNG + * case will probably result in halos around the image. The linear encoding + * will probably result in a washed out, too bright, image (it's actually too + * contrasty.) Try the ALPHA_OPTIMIZED mode above - this will probably + * substantially reduce the halos. Alternatively try: + * + * png_set_alpha_mode(pp, PNG_ALPHA_BROKEN, PNG_DEFAULT_sRGB); + * This option will also reduce the halos, but there will be slight dark + * halos round the opaque parts of the image where the background is light. + * In the OPTIMIZED mode the halos will be light halos where the background + * is dark. Take your pick - the halos are unavoidable unless you can get + * your hardware/software fixed! (The OPTIMIZED approach is slightly + * faster.) + * + * When the default gamma of PNG files doesn't match the output gamma. + * If you have PNG files with no gamma information png_set_alpha_mode allows + * you to provide a default gamma, but it also sets the ouput gamma to the + * matching value. If you know your PNG files have a gamma that doesn't + * match the output you can take advantage of the fact that + * png_set_alpha_mode always sets the output gamma but only sets the PNG + * default if it is not already set: + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * The first call sets both the default and the output gamma values, the + * second call overrides the output gamma without changing the default. This + * is easier than achieving the same effect with png_set_gamma. You must use + * PNG_ALPHA_PNG for the first call - internal checking in png_set_alpha will + * fire if more than one call to png_set_alpha_mode and png_set_background is + * made in the same read operation, however multiple calls with PNG_ALPHA_PNG + * are ignored. + */ + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(39, void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler, + int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +# define PNG_FILLER_BEFORE 0 +# define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, + png_uint_32 filler, int flags)); +#endif /* READ_FILLER || WRITE_FILLER */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +PNG_EXPORT(41, void, png_set_swap, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +PNG_EXPORT(42, void, png_set_packing, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ + defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +PNG_EXPORT(43, void, png_set_packswap, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +PNG_EXPORT(44, void, png_set_shift, (png_structrp png_ptr, png_const_color_8p + true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. + * MUST be called before png_read_update_info or png_start_read_image, + * otherwise it will not have the desired effect. Note that it is still + * necessary to call png_read_row or png_read_rows png_get_image_height + * times for each pass. +*/ +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structrp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +PNG_EXPORT(46, void, png_set_invert_mono, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. Prior to + * libpng-1.5.4 this API must not be called before the PNG file header has been + * read. Doing so will result in unexpected behavior and possible warnings or + * errors if the PNG file contains a bKGD chunk. + */ +PNG_FP_EXPORT(47, void, png_set_background, (png_structrp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)) +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structrp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, png_fixed_point background_gamma)) +#endif +#ifdef PNG_READ_BACKGROUND_SUPPORTED +# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +# define PNG_BACKGROUND_GAMMA_SCREEN 1 +# define PNG_BACKGROUND_GAMMA_FILE 2 +# define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED +/* Scale a 16-bit depth file down to 8-bit, accurately. */ +PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_16_TO_8 SUPPORTED /* Name prior to 1.5.4 */ +/* Strip the second byte of information from a 16-bit depth file. */ +PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* Turn on quantizing, and reduce the palette to the number of colors + * available. + */ +PNG_EXPORT(49, void, png_set_quantize, (png_structrp png_ptr, + png_colorp palette, int num_palette, int maximum_colors, + png_const_uint_16p histogram, int full_quantize)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* The threshold on gamma processing is configurable but hard-wired into the + * library. The following is the floating point variant. + */ +#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) + +/* Handle gamma correction. Screen_gamma=(display_exponent). + * NOTE: this API simply sets the screen and file gamma values. It will + * therefore override the value for gamma in a PNG file if it is called after + * the file header has been read - use with care - call before reading the PNG + * file for best results! + * + * These routines accept the same gamma values as png_set_alpha_mode (described + * above). The PNG_GAMMA_ defines and PNG_DEFAULT_sRGB can be passed to either + * API (floating point or fixed.) Notice, however, that the 'file_gamma' value + * is the inverse of a 'screen gamma' value. + */ +PNG_FP_EXPORT(50, void, png_set_gamma, (png_structrp png_ptr, + double screen_gamma, double override_file_gamma)) +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structrp png_ptr, + png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) +#endif + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +PNG_EXPORT(51, void, png_set_flush, (png_structrp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +PNG_EXPORT(52, void, png_write_flush, (png_structrp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +PNG_EXPORT(53, void, png_start_read_image, (png_structrp png_ptr)); + +/* Optional call to update the users info structure */ +PNG_EXPORT(54, void, png_read_update_info, (png_structrp png_ptr, + png_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +PNG_EXPORT(55, void, png_read_rows, (png_structrp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +PNG_EXPORT(56, void, png_read_row, (png_structrp png_ptr, png_bytep row, + png_bytep display_row)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +PNG_EXPORT(57, void, png_read_image, (png_structrp png_ptr, png_bytepp image)); +#endif + +/* Write a row of image data */ +PNG_EXPORT(58, void, png_write_row, (png_structrp png_ptr, + png_const_bytep row)); + +/* Write a few rows of image data: (*row) is not written; however, the type + * is declared as writeable to maintain compatibility with previous versions + * of libpng and to allow the 'display_row' array from read_rows to be passed + * unchanged to write_rows. + */ +PNG_EXPORT(59, void, png_write_rows, (png_structrp png_ptr, png_bytepp row, + png_uint_32 num_rows)); + +/* Write the image data */ +PNG_EXPORT(60, void, png_write_image, (png_structrp png_ptr, png_bytepp image)); + +/* Write the end of the PNG file. */ +PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr, + png_inforp info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +PNG_EXPORT(62, void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +PNG_EXPORT(63, void, png_destroy_info_struct, (png_const_structrp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, + int ancil_action)); + +/* Values for png_set_crc_action() say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +#ifdef PNG_WRITE_SUPPORTED +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, + int filters)); +#endif /* WRITE */ + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#ifdef PNG_WRITE_SUPPORTED +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, + png_const_doublep filter_costs)) +PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, + (png_structrp png_ptr, int heuristic_method, int num_weights, + png_const_fixed_point_p filter_weights, + png_const_fixed_point_p filter_costs)) +#endif /* WRITE_WEIGHTED_FILTER */ + +/* The following are no longer used and will be removed from libpng-1.7: */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED +PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, + int level)); + +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structrp png_ptr, + int mem_level)); + +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structrp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, + int window_bits)); + +PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, + int method)); +#endif /* WRITE_CUSTOMIZE_COMPRESSION */ + +#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +/* Also set zlib parameters for compressing non-IDAT chunks */ +PNG_EXPORT(222, void, png_set_text_compression_level, (png_structrp png_ptr, + int level)); + +PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structrp png_ptr, + int mem_level)); + +PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structrp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(225, void, png_set_text_compression_window_bits, + (png_structrp png_ptr, int window_bits)); + +PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, + int method)); +#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ +#endif /* WRITE */ + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng-manual.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +PNG_EXPORT(75, void, png_set_error_fn, (png_structrp png_ptr, + png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +PNG_EXPORT(77, void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +PNG_EXPORT(78, void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr)); + +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structrp png_ptr, + png_read_status_ptr read_row_fn)); + +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structrp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +PNG_EXPORT(82, void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr read_user_transform_fn)); +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr write_user_transform_fn)); +#endif + +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structrp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, + (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED +/* Return information about the row currently being processed. Note that these + * APIs do not fail but will return unexpected results if called outside a user + * transform callback. Also note that when transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); +#endif + +#ifdef PNG_READ_USER_CHUNKS_SUPPORTED +/* This callback is called only for *unknown* chunks. If + * PNG_HANDLE_AS_UNKNOWN_SUPPORTED is set then it is possible to set known + * chunks to be treated as unknown, however in this case the callback must do + * any processing required by the chunk (e.g. by calling the appropriate + * png_set_ APIs.) + * + * There is no write support - on write, by default, all the chunks in the + * 'unknown' list are written in the specified position. + * + * The integer return from the callback function is interpreted thus: + * + * negative: An error occurred; png_chunk_error will be called. + * zero: The chunk was not handled, the chunk will be saved. A critical + * chunk will cause an error at this point unless it is to be saved. + * positive: The chunk was handled, libpng will ignore/discard it. + * + * See "INTERACTION WTIH USER CHUNK CALLBACKS" below for important notes about + * how this behavior will change in libpng 1.7 + */ +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structrp png_ptr, + png_voidp progressive_ptr, png_progressive_info_ptr info_fn, + png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, + (png_const_structrp png_ptr)); + +/* Function to be called when data becomes available */ +PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr, + png_inforp info_ptr, png_bytep buffer, png_size_t buffer_size)); + +/* A function which may be called *only* within png_process_data to stop the + * processing of any more data. The function returns the number of bytes + * remaining, excluding any that libpng has cached internally. A subsequent + * call to png_process_data must supply these bytes again. If the argument + * 'save' is set to true the routine will first save all the pending data and + * will always return 0. + */ +PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structrp, int save)); + +/* A function which may be called *only* outside (after) a call to + * png_process_data. It returns the number of bytes of data to skip in the + * input. Normally it will return 0, but if it returns a non-zero value the + * application must skip than number of bytes of input data and pass the + * following data to the next call to png_process_data. + */ +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); + +/* Function that combines rows. 'new_row' is a flag that should come from + * the callback and be non-NULL if anything needs to be done; the library + * stores its own version of the new data internally and ignores the passed + * in value. + */ +PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, + png_bytep old_row, png_const_bytep new_row)); +#endif /* PROGRESSIVE_READ */ + +PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); +/* Added at libpng version 1.4.0 */ +PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Added at libpng version 1.2.4 */ +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Frees a pointer allocated by png_malloc() */ +PNG_EXPORT(97, void, png_free, (png_const_structrp png_ptr, png_voidp ptr)); + +/* Free data that was allocated internally */ +PNG_EXPORT(98, void, png_free_data, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 free_me, int num)); + +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application; this works on the png_info structure passed + * in, it does not change the state for other png_info structures. + * + * It is unlikely that this function works correctly as of 1.6.0 and using it + * may result either in memory leaks or double free of allocated data. + */ +PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, + png_inforp info_ptr, int freer, png_uint_32 mask)); + +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_FREE_UNKN 0x0200 +#endif +/* PNG_FREE_LIST 0x0400 removed in 1.6.0 because it is ignored */ +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED); +PNG_EXPORTA(101, void, png_free_default, (png_const_structrp png_ptr, + png_voidp ptr), PNG_DEPRECATED); +#endif + +#ifdef PNG_ERROR_TEXT_SUPPORTED +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(102, void, png_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +/* The same, but the chunk name is prepended to the error string. */ +PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +#else +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN); +# define png_error(s1,s2) png_err(s1) +# define png_chunk_error(s1,s2) png_err(s1) +#endif + +#ifdef PNG_WARNINGS_SUPPORTED +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +PNG_EXPORT(105, void, png_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); + +/* Non-fatal error in libpng, chunk name is prepended to message. */ +PNG_EXPORT(106, void, png_chunk_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); +#else +# define png_warning(s1,s2) ((void)(s1)) +# define png_chunk_warning(s1,s2) ((void)(s1)) +#endif + +#ifdef PNG_BENIGN_ERRORS_SUPPORTED +/* Benign error in libpng. Can continue, but may have a problem. + * User can choose whether to handle as a fatal error or as a warning. */ +PNG_EXPORT(107, void, png_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_READ_SUPPORTED +/* Same, chunk name is prepended to message (only during read) */ +PNG_EXPORT(108, void, png_chunk_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); +#endif + +PNG_EXPORT(109, void, png_set_benign_errors, + (png_structrp png_ptr, int allowed)); +#else +# ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +# else +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* The png_set_<chunk> functions are for storing values in the png_info_struct. + * Similarly, the png_get_<chunk> calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_<chunk> functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image height in pixels. */ +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image bit_depth. */ +PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image color_type. */ +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image filter_type. */ +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image interlace_type. */ +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image compression_type. */ +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +#endif /* EASY_ACCESS */ + +#ifdef PNG_READ_SUPPORTED +/* Returns pointer to signature string read from PNG header */ +PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(132, void, png_set_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)) +PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *red_X, double *red_Y, double *red_Z, + double *green_X, double *green_Y, double *green_Z, double *blue_X, + double *blue_Y, double *blue_Z)) +PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_white_x, png_fixed_point *int_white_y, + png_fixed_point *int_red_x, png_fixed_point *int_red_y, + png_fixed_point *int_green_x, png_fixed_point *int_green_y, + png_fixed_point *int_blue_x, png_fixed_point *int_blue_y)) +PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_red_X, png_fixed_point *int_red_Y, + png_fixed_point *int_red_Z, png_fixed_point *int_green_X, + png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, + png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, + png_fixed_point *int_blue_Z)) +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(135, void, png_set_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)) +PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_const_structrp png_ptr, + png_inforp info_ptr, double red_X, double red_Y, double red_Z, + double green_X, double green_Y, double green_Z, double blue_X, + double blue_Y, double blue_Z)) +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) +PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, + png_fixed_point int_red_Z, png_fixed_point int_green_X, + png_fixed_point int_green_Y, png_fixed_point int_green_Z, + png_fixed_point int_blue_X, png_fixed_point int_blue_Y, + png_fixed_point int_blue_Z)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *file_gamma)) +PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, + png_fixed_point *int_file_gamma)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_const_structrp png_ptr, + png_inforp info_ptr, double file_gamma)) +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_file_gamma)) +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(142, void, png_set_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_uint_16p hist)); +#endif + +PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); + +PNG_EXPORT(144, void, png_set_IHDR, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(146, void, png_set_oFFs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charp *purpose, png_int_32 *X0, + png_int_32 *X1, int *type, int *nparams, png_charp *units, + png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(148, void, png_set_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1, + int type, int nparams, png_const_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(150, void, png_set_pHYs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr, + png_inforp info_ptr, png_colorp *palette, int *num_palette)); + +PNG_EXPORT(152, void, png_set_PLTE, (png_structrp png_ptr, + png_inforp info_ptr, png_const_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(154, void, png_set_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *file_srgb_intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(156, void, png_set_sRGB, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charpp name, int *compression_type, + png_bytepp profile, png_uint_32 *proflen)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(159, void, png_set_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp name, int compression_type, + png_const_bytep profile, png_uint_32 proflen)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(160, int, png_get_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(161, void, png_set_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +PNG_EXPORT(162, int, png_get_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_textp *text_ptr, int *num_text)); +#endif + +/* Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +PNG_EXPORT(163, void, png_set_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(165, void, png_set_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep *trans_alpha, int *num_trans, + png_color_16p *trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(167, void, png_set_tRNS, (png_structrp png_ptr, + png_inforp info_ptr, png_const_bytep trans_alpha, int num_trans, + png_const_color_16p trans_color)); +#endif + +#ifdef PNG_sCAL_SUPPORTED +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *unit, double *width, double *height)) +#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ + defined(PNG_FLOATING_POINT_SUPPORTED) +/* NOTE: this API is currently implemented using floating point arithmetic, + * consequently it can only be used on systems with floating point support. + * In any case the range of values supported by png_fixed_point is small and it + * is highly recommended that png_get_sCAL_s be used instead. + */ +PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_fixed_point *width, png_fixed_point *height)) +#endif +PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_charpp swidth, png_charpp sheight)); + +PNG_FP_EXPORT(170, void, png_set_sCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, double width, double height)) +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, png_fixed_point width, + png_fixed_point height)) +PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, + png_const_charp swidth, png_const_charp sheight)); +#endif /* sCAL */ + +#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +/* Provide the default handling for all unknown chunks or, optionally, for + * specific unknown chunks. + * + * NOTE: prior to 1.6.0 the handling specified for particular chunks on read was + * ignored and the default was used, the per-chunk setting only had an effect on + * write. If you wish to have chunk-specific handling on read in code that must + * work on earlier versions you must use a user chunk callback to specify the + * desired handling (keep or discard.) + * + * The 'keep' parameter is a PNG_HANDLE_CHUNK_ value as listed below. The + * parameter is interpreted as follows: + * + * READ: + * PNG_HANDLE_CHUNK_AS_DEFAULT: + * Known chunks: do normal libpng processing, do not keep the chunk (but + * see the comments below about PNG_HANDLE_AS_UNKNOWN_SUPPORTED) + * Unknown chunks: for a specific chunk use the global default, when used + * as the default discard the chunk data. + * PNG_HANDLE_CHUNK_NEVER: + * Discard the chunk data. + * PNG_HANDLE_CHUNK_IF_SAFE: + * Keep the chunk data if the chunk is not critical else raise a chunk + * error. + * PNG_HANDLE_CHUNK_ALWAYS: + * Keep the chunk data. + * + * If the chunk data is saved it can be retrieved using png_get_unknown_chunks, + * below. Notice that specifying "AS_DEFAULT" as a global default is equivalent + * to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks + * it simply resets the behavior to the libpng default. + * + * INTERACTION WTIH USER CHUNK CALLBACKS: + * The per-chunk handling is always used when there is a png_user_chunk_ptr + * callback and the callback returns 0; the chunk is then always stored *unless* + * it is critical and the per-chunk setting is other than ALWAYS. Notice that + * the global default is *not* used in this case. (In effect the per-chunk + * value is incremented to at least IF_SAFE.) + * + * IMPORTANT NOTE: this behavior will change in libpng 1.7 - the global and + * per-chunk defaults will be honored. If you want to preserve the current + * behavior when your callback returns 0 you must set PNG_HANDLE_CHUNK_IF_SAFE + * as the default - if you don't do this libpng 1.6 will issue a warning. + * + * If you want unhandled unknown chunks to be discarded in libpng 1.6 and + * earlier simply return '1' (handled). + * + * PNG_HANDLE_AS_UNKNOWN_SUPPORTED: + * If this is *not* set known chunks will always be handled by libpng and + * will never be stored in the unknown chunk list. Known chunks listed to + * png_set_keep_unknown_chunks will have no effect. If it is set then known + * chunks listed with a keep other than AS_DEFAULT will *never* be processed + * by libpng, in addition critical chunks must either be processed by the + * callback or saved. + * + * The IHDR and IEND chunks must not be listed. Because this turns off the + * default handling for chunks that would otherwise be recognized the + * behavior of libpng transformations may well become incorrect! + * + * WRITE: + * When writing chunks the options only apply to the chunks specified by + * png_set_unknown_chunks (below), libpng will *always* write known chunks + * required by png_set_ calls and will always write the core critical chunks + * (as required for PLTE). + * + * Each chunk in the png_set_unknown_chunks list is looked up in the + * png_set_keep_unknown_chunks list to find the keep setting, this is then + * interpreted as follows: + * + * PNG_HANDLE_CHUNK_AS_DEFAULT: + * Write safe-to-copy chunks and write other chunks if the global + * default is set to _ALWAYS, otherwise don't write this chunk. + * PNG_HANDLE_CHUNK_NEVER: + * Do not write the chunk. + * PNG_HANDLE_CHUNK_IF_SAFE: + * Write the chunk if it is safe-to-copy, otherwise do not write it. + * PNG_HANDLE_CHUNK_ALWAYS: + * Write the chunk. + * + * Note that the default behavior is effectively the opposite of the read case - + * in read unknown chunks are not stored by default, in write they are written + * by default. Also the behavior of PNG_HANDLE_CHUNK_IF_SAFE is very different + * - on write the safe-to-copy bit is checked, on read the critical bit is + * checked and on read if the chunk is critical an error will be raised. + * + * num_chunks: + * =========== + * If num_chunks is positive, then the "keep" parameter specifies the manner + * for handling only those chunks appearing in the chunk_list array, + * otherwise the chunk list array is ignored. + * + * If num_chunks is 0 the "keep" parameter specifies the default behavior for + * unknown chunks, as described above. + * + * If num_chunks is negative, then the "keep" parameter specifies the manner + * for handling all unknown chunks plus all chunks recognized by libpng + * except for the IHDR, PLTE, tRNS, IDAT, and IEND chunks (which continue to + * be processed by libpng. + */ +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, + int keep, png_const_bytep chunk_list, int num_chunks)); + +/* The "keep" PNG_HANDLE_CHUNK_ parameter for the specified chunk is returned; + * the result is therefore true (non-zero) if special handling is required, + * false for the default handling. + */ +PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, + png_const_bytep chunk_name)); +#endif + +#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); + /* NOTE: prior to 1.6.0 this routine set the 'location' field of the added + * unknowns to the location currently stored in the png_struct. This is + * invariably the wrong value on write. To fix this call the following API + * for each chunk in the list with the correct location. If you know your + * code won't be compiled on earlier versions you can rely on + * png_set_unknown_chunks(write-ptr, png_get_unknown_chunks(read-ptr)) doing + * the correct thing. + */ + +PNG_EXPORT(175, void, png_set_unknown_chunk_location, + (png_const_structrp png_ptr, png_inforp info_ptr, int chunk, int location)); + +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +PNG_EXPORT(177, void, png_set_invalid, (png_const_structrp png_ptr, + png_inforp info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +PNG_EXPORT(178, void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr, + int transforms, png_voidp params)); +#endif +#ifdef PNG_WRITE_SUPPORTED +PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr, + int transforms, png_voidp params)); +#endif +#endif + +PNG_EXPORT(180, png_const_charp, png_get_copyright, + (png_const_structrp png_ptr)); +PNG_EXPORT(181, png_const_charp, png_get_header_ver, + (png_const_structrp png_ptr)); +PNG_EXPORT(182, png_const_charp, png_get_header_version, + (png_const_structrp png_ptr)); +PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, + (png_const_structrp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr, + png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 +#define PNG_HANDLE_CHUNK_LAST 4 + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +PNG_EXPORT(185, void, png_set_strip_error_numbers, (png_structrp png_ptr, + png_uint_32 strip_mode)); +#endif + +/* Added in libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +PNG_EXPORT(186, void, png_set_user_limits, (png_structrp png_ptr, + png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(187, png_uint_32, png_get_user_width_max, + (png_const_structrp png_ptr)); +PNG_EXPORT(188, png_uint_32, png_get_user_height_max, + (png_const_structrp png_ptr)); +/* Added in libpng-1.4.0 */ +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structrp png_ptr, + png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, + (png_const_structrp png_ptr)); +/* Added in libpng-1.4.1 */ +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structrp png_ptr, + png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, + (png_const_structrp png_ptr)); +#endif + +#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) +PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, + (png_const_structrp png_ptr, png_const_inforp info_ptr)); + +PNG_FP_EXPORT(196, float, png_get_x_offset_inches, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#endif + +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structrp png_ptr, + png_const_inforp info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, + (png_const_structrp png_ptr, png_const_inforp info_ptr)) +#endif + +# ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +# endif /* pHYs */ +#endif /* INCH_CONVERSIONS */ + +/* Added in libpng-1.4.0 */ +#ifdef PNG_IO_STATE_SUPPORTED +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr)); + +/* Removed from libpng 1.6; use png_get_io_chunk_type. */ +PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr), + PNG_DEPRECATED) + +PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, + (png_const_structrp png_ptr)); + +/* The flags returned by png_get_io_state() are the following: */ +# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +# define PNG_IO_READING 0x0001 /* currently reading */ +# define PNG_IO_WRITING 0x0002 /* currently writing */ +# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +#endif /* IO_STATE */ + +/* Interlace support. The following macros are always defined so that if + * libpng interlace handling is turned off the macros may be used to handle + * interlaced images within the application. + */ +#define PNG_INTERLACE_ADAM7_PASSES 7 + +/* Two macros to return the first row and first column of the original, + * full, image which appears in a given pass. 'pass' is in the range 0 + * to 6 and the result is in the range 0 to 7. + */ +#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7) +#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7) + +/* A macro to return the offset between pixels in the output row for a pair of + * pixels in the input - effectively the inverse of the 'COL_SHIFT' macro that + * follows. Note that ROW_OFFSET is the offset from one row to the next whereas + * COL_OFFSET is from one column to the next, within a row. + */ +#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8) +#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1)) + +/* Two macros to help evaluate the number of rows or columns in each + * pass. This is expressed as a shift - effectively log2 of the number or + * rows or columns in each 8x8 tile of the original image. + */ +#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) +#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) + +/* Hence two macros to determine the number of rows or columns in a given + * pass of an image given its height or width. In fact these macros may + * return non-zero even though the sub-image is empty, because the other + * dimension may be empty for a small image. + */ +#define PNG_PASS_ROWS(height, pass) (((height)+(((1<<PNG_PASS_ROW_SHIFT(pass))\ + -1)-PNG_PASS_START_ROW(pass)))>>PNG_PASS_ROW_SHIFT(pass)) +#define PNG_PASS_COLS(width, pass) (((width)+(((1<<PNG_PASS_COL_SHIFT(pass))\ + -1)-PNG_PASS_START_COL(pass)))>>PNG_PASS_COL_SHIFT(pass)) + +/* For the reader row callbacks (both progressive and sequential) it is + * necessary to find the row in the output image given a row in an interlaced + * image, so two more macros: + */ +#define PNG_ROW_FROM_PASS_ROW(y_in, pass) \ + (((y_in)<<PNG_PASS_ROW_SHIFT(pass))+PNG_PASS_START_ROW(pass)) +#define PNG_COL_FROM_PASS_COL(x_in, pass) \ + (((x_in)<<PNG_PASS_COL_SHIFT(pass))+PNG_PASS_START_COL(pass)) + +/* Two macros which return a boolean (0 or 1) saying whether the given row + * or column is in a particular pass. These use a common utility macro that + * returns a mask for a given pass - the offset 'off' selects the row or + * column version. The mask has the appropriate bit set for each column in + * the tile. + */ +#define PNG_PASS_MASK(pass,off) ( \ + ((0x110145AF>>(((7-(off))-(pass))<<2)) & 0xF) | \ + ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0)) + +#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ + ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) +#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ + ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ + * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 \ + - (png_uint_16)(alpha)) + 128); \ + (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ + * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(65535 \ + - (png_uint_32)(alpha)) + 32768); \ + (composite) = (png_uint_16)(0xffff & ((temp + (temp >> 16)) >> 16)); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = \ + (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + 127) / 255)) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = \ + (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ + 32767) / 65535)) +#endif /* READ_COMPOSITE_NODIV */ + +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); +#endif + +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr, + png_const_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); +#endif +#ifdef PNG_SAVE_INT_32_SUPPORTED +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); +#endif + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif + +#ifdef PNG_USE_READ_MACROS +/* Inline macros to do direct reads of bytes from the input buffer. + * The png_get_int_32() routine assumes we are using two's complement + * format for negative values, which is almost certainly true. + */ +# define PNG_get_uint_32(buf) \ + (((png_uint_32)(*(buf)) << 24) + \ + ((png_uint_32)(*((buf) + 1)) << 16) + \ + ((png_uint_32)(*((buf) + 2)) << 8) + \ + ((png_uint_32)(*((buf) + 3)))) + + /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the + * function) incorrectly returned a value of type png_uint_32. + */ +# define PNG_get_uint_16(buf) \ + ((png_uint_16) \ + (((unsigned int)(*(buf)) << 8) + \ + ((unsigned int)(*((buf) + 1))))) + +# define PNG_get_int_32(buf) \ + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \ + : (png_int_32)png_get_uint_32(buf))) + + /* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, + * but defining a macro name prefixed with PNG_PREFIX. + */ +# ifndef PNG_PREFIX +# define png_get_uint_32(buf) PNG_get_uint_32(buf) +# define png_get_uint_16(buf) PNG_get_uint_16(buf) +# define png_get_int_32(buf) PNG_get_int_32(buf) +# endif +#else +# ifdef PNG_PREFIX + /* No macros; revert to the (redefined) function */ +# define PNG_get_uint_32 (png_get_uint_32) +# define PNG_get_uint_16 (png_get_uint_16) +# define PNG_get_int_32 (png_get_int_32) +# endif +#endif + +#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ + defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) +/******************************************************************************* + * SIMPLIFIED API + ******************************************************************************* + * + * Please read the documentation in libpng-manual.txt (TODO: write said + * documentation) if you don't understand what follows. + * + * The simplified API hides the details of both libpng and the PNG file format + * itself. It allows PNG files to be read into a very limited number of + * in-memory bitmap formats or to be written from the same formats. If these + * formats do not accomodate your needs then you can, and should, use the more + * sophisticated APIs above - these support a wide variety of in-memory formats + * and a wide variety of sophisticated transformations to those formats as well + * as a wide variety of APIs to manipulate ancillary information. + * + * To read a PNG file using the simplified API: + * + * 1) Declare a 'png_image' structure (see below) on the stack, set the + * version field to PNG_IMAGE_VERSION and the 'opaque' pointer to NULL + * (this is REQUIRED, your program may crash if you don't do it.) + * 2) Call the appropriate png_image_begin_read... function. + * 3) Set the png_image 'format' member to the required sample format. + * 4) Allocate a buffer for the image and, if required, the color-map. + * 5) Call png_image_finish_read to read the image and, if required, the + * color-map into your buffers. + * + * There are no restrictions on the format of the PNG input itself; all valid + * color types, bit depths, and interlace methods are acceptable, and the + * input image is transformed as necessary to the requested in-memory format + * during the png_image_finish_read() step. The only caveat is that if you + * request a color-mapped image from a PNG that is full-color or makes + * complex use of an alpha channel the transformation is extremely lossy and the + * result may look terrible. + * + * To write a PNG file using the simplified API: + * + * 1) Declare a 'png_image' structure on the stack and memset() it to all zero. + * 2) Initialize the members of the structure that describe the image, setting + * the 'format' member to the format of the image samples. + * 3) Call the appropriate png_image_write... function with a pointer to the + * image and, if necessary, the color-map to write the PNG data. + * + * png_image is a structure that describes the in-memory format of an image + * when it is being read or defines the in-memory format of an image that you + * need to write: + */ +#define PNG_IMAGE_VERSION 1 + +typedef struct png_control *png_controlp; +typedef struct +{ + png_controlp opaque; /* Initialize to NULL, free with png_image_free */ + png_uint_32 version; /* Set to PNG_IMAGE_VERSION */ + png_uint_32 width; /* Image width in pixels (columns) */ + png_uint_32 height; /* Image height in pixels (rows) */ + png_uint_32 format; /* Image format as defined below */ + png_uint_32 flags; /* A bit mask containing informational flags */ + png_uint_32 colormap_entries; + /* Number of entries in the color-map */ + + /* In the event of an error or warning the following field will be set to a + * non-zero value and the 'message' field will contain a '\0' terminated + * string with the libpng error or warning message. If both warnings and + * an error were encountered, only the error is recorded. If there + * are multiple warnings, only the first one is recorded. + * + * The upper 30 bits of this value are reserved, the low two bits contain + * a value as follows: + */ +# define PNG_IMAGE_WARNING 1 +# define PNG_IMAGE_ERROR 2 + /* + * The result is a two-bit code such that a value more than 1 indicates + * a failure in the API just called: + * + * 0 - no warning or error + * 1 - warning + * 2 - error + * 3 - error preceded by warning + */ +# define PNG_IMAGE_FAILED(png_cntrl) ((((png_cntrl).warning_or_error)&0x03)>1) + + png_uint_32 warning_or_error; + + char message[64]; +} png_image, *png_imagep; + +/* The samples of the image have one to four channels whose components have + * original values in the range 0 to 1.0: + * + * 1: A single gray or luminance channel (G). + * 2: A gray/luminance channel and an alpha channel (GA). + * 3: Three red, green, blue color channels (RGB). + * 4: Three color channels and an alpha channel (RGBA). + * + * The components are encoded in one of two ways: + * + * a) As a small integer, value 0..255, contained in a single byte. For the + * alpha channel the original value is simply value/255. For the color or + * luminance channels the value is encoded according to the sRGB specification + * and matches the 8-bit format expected by typical display devices. + * + * The color/gray channels are not scaled (pre-multiplied) by the alpha + * channel and are suitable for passing to color management software. + * + * b) As a value in the range 0..65535, contained in a 2-byte integer. All + * channels can be converted to the original value by dividing by 65535; all + * channels are linear. Color channels use the RGB encoding (RGB end-points) of + * the sRGB specification. This encoding is identified by the + * PNG_FORMAT_FLAG_LINEAR flag below. + * + * When the simplified API needs to convert between sRGB and linear colorspaces, + * the actual sRGB transfer curve defined in the sRGB specification (see the + * article at http://en.wikipedia.org/wiki/SRGB) is used, not the gamma=1/2.2 + * approximation used elsewhere in libpng. + * + * When an alpha channel is present it is expected to denote pixel coverage + * of the color or luminance channels and is returned as an associated alpha + * channel: the color/gray channels are scaled (pre-multiplied) by the alpha + * value. + * + * The samples are either contained directly in the image data, between 1 and 8 + * bytes per pixel according to the encoding, or are held in a color-map indexed + * by bytes in the image data. In the case of a color-map the color-map entries + * are individual samples, encoded as above, and the image data has one byte per + * pixel to select the relevant sample from the color-map. + */ + +/* PNG_FORMAT_* + * + * #defines to be used in png_image::format. Each #define identifies a + * particular layout of sample data and, if present, alpha values. There are + * separate defines for each of the two component encodings. + * + * A format is built up using single bit flag values. All combinations are + * valid. Formats can be built up from the flag values or you can use one of + * the predefined values below. When testing formats always use the FORMAT_FLAG + * macros to test for individual features - future versions of the library may + * add new flags. + * + * When reading or writing color-mapped images the format should be set to the + * format of the entries in the color-map then png_image_{read,write}_colormap + * called to read or write the color-map and set the format correctly for the + * image data. Do not set the PNG_FORMAT_FLAG_COLORMAP bit directly! + * + * NOTE: libpng can be built with particular features disabled, if you see + * compiler errors because the definition of one of the following flags has been + * compiled out it is because libpng does not have the required support. It is + * possible, however, for the libpng configuration to enable the format on just + * read or just write; in that case you may see an error at run time. You can + * guard against this by checking for the definition of the appropriate + * "_SUPPORTED" macro, one of: + * + * PNG_SIMPLIFIED_{READ,WRITE}_{BGR,AFIRST}_SUPPORTED + */ +#define PNG_FORMAT_FLAG_ALPHA 0x01U /* format with an alpha channel */ +#define PNG_FORMAT_FLAG_COLOR 0x02U /* color format: otherwise grayscale */ +#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2 byte channels else 1 byte */ +#define PNG_FORMAT_FLAG_COLORMAP 0x08U /* image data is color-mapped */ + +#ifdef PNG_FORMAT_BGR_SUPPORTED +# define PNG_FORMAT_FLAG_BGR 0x10U /* BGR colors, else order is RGB */ +#endif + +#ifdef PNG_FORMAT_AFIRST_SUPPORTED +# define PNG_FORMAT_FLAG_AFIRST 0x20U /* alpha channel comes first */ +#endif + +/* Commonly used formats have predefined macros. + * + * First the single byte (sRGB) formats: + */ +#define PNG_FORMAT_GRAY 0 +#define PNG_FORMAT_GA PNG_FORMAT_FLAG_ALPHA +#define PNG_FORMAT_AG (PNG_FORMAT_GA|PNG_FORMAT_FLAG_AFIRST) +#define PNG_FORMAT_RGB PNG_FORMAT_FLAG_COLOR +#define PNG_FORMAT_BGR (PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_BGR) +#define PNG_FORMAT_RGBA (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_ARGB (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_AFIRST) +#define PNG_FORMAT_BGRA (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_ABGR (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_AFIRST) + +/* Then the linear 2-byte formats. When naming these "Y" is used to + * indicate a luminance (gray) channel. + */ +#define PNG_FORMAT_LINEAR_Y PNG_FORMAT_FLAG_LINEAR +#define PNG_FORMAT_LINEAR_Y_ALPHA (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_ALPHA) +#define PNG_FORMAT_LINEAR_RGB (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR) +#define PNG_FORMAT_LINEAR_RGB_ALPHA \ + (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA) + +/* With color-mapped formats the image data is one byte for each pixel, the byte + * is an index into the color-map which is formatted as above. To obtain a + * color-mapped format it is sufficient just to add the PNG_FOMAT_FLAG_COLORMAP + * to one of the above definitions, or you can use one of the definitions below. + */ +#define PNG_FORMAT_RGB_COLORMAP (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_BGR_COLORMAP (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_RGBA_COLORMAP (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_ARGB_COLORMAP (PNG_FORMAT_ARGB|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_BGRA_COLORMAP (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_COLORMAP) +#define PNG_FORMAT_ABGR_COLORMAP (PNG_FORMAT_ABGR|PNG_FORMAT_FLAG_COLORMAP) + +/* PNG_IMAGE macros + * + * These are convenience macros to derive information from a png_image + * structure. The PNG_IMAGE_SAMPLE_ macros return values appropriate to the + * actual image sample values - either the entries in the color-map or the + * pixels in the image. The PNG_IMAGE_PIXEL_ macros return corresponding values + * for the pixels and will always return 1 for color-mapped formats. The + * remaining macros return information about the rows in the image and the + * complete image. + * + * NOTE: All the macros that take a png_image::format parameter are compile time + * constants if the format parameter is, itself, a constant. Therefore these + * macros can be used in array declarations and case labels where required. + * Similarly the macros are also pre-processor constants (sizeof is not used) so + * they can be used in #if tests. + * + * First the information about the samples. + */ +#define PNG_IMAGE_SAMPLE_CHANNELS(fmt)\ + (((fmt)&(PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA))+1) + /* Return the total number of channels in a given format: 1..4 */ + +#define PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)\ + ((((fmt) & PNG_FORMAT_FLAG_LINEAR) >> 2)+1) + /* Return the size in bytes of a single component of a pixel or color-map + * entry (as appropriate) in the image: 1 or 2. + */ + +#define PNG_IMAGE_SAMPLE_SIZE(fmt)\ + (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)) + /* This is the size of the sample data for one sample. If the image is + * color-mapped it is the size of one color-map entry (and image pixels are + * one byte in size), otherwise it is the size of one image pixel. + */ + +#define PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(fmt)\ + (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * 256) + /* The maximum size of the color-map required by the format expressed in a + * count of components. This can be used to compile-time allocate a + * color-map: + * + * png_uint_16 colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(linear_fmt)]; + * + * png_byte colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(sRGB_fmt)]; + * + * Alternatively use the PNG_IMAGE_COLORMAP_SIZE macro below to use the + * information from one of the png_image_begin_read_ APIs and dynamically + * allocate the required memory. + */ + +/* Corresponding information about the pixels */ +#define PNG_IMAGE_PIXEL_(test,fmt)\ + (((fmt)&PNG_FORMAT_FLAG_COLORMAP)?1:test(fmt)) + +#define PNG_IMAGE_PIXEL_CHANNELS(fmt)\ + PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_CHANNELS,fmt) + /* The number of separate channels (components) in a pixel; 1 for a + * color-mapped image. + */ + +#define PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)\ + PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_COMPONENT_SIZE,fmt) + /* The size, in bytes, of each component in a pixel; 1 for a color-mapped + * image. + */ + +#define PNG_IMAGE_PIXEL_SIZE(fmt) PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_SIZE,fmt) + /* The size, in bytes, of a complete pixel; 1 for a color-mapped image. */ + +/* Information about the whole row, or whole image */ +#define PNG_IMAGE_ROW_STRIDE(image)\ + (PNG_IMAGE_PIXEL_CHANNELS((image).format) * (image).width) + /* Return the total number of components in a single row of the image; this + * is the minimum 'row stride', the minimum count of components between each + * row. For a color-mapped image this is the minimum number of bytes in a + * row. + */ + +#define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\ + (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride)) + /* Return the size, in bytes, of an image buffer given a png_image and a row + * stride - the number of components to leave space for in each row. + */ + +#define PNG_IMAGE_SIZE(image)\ + PNG_IMAGE_BUFFER_SIZE(image, PNG_IMAGE_ROW_STRIDE(image)) + /* Return the size, in bytes, of the image in memory given just a png_image; + * the row stride is the minimum stride required for the image. + */ + +#define PNG_IMAGE_COLORMAP_SIZE(image)\ + (PNG_IMAGE_SAMPLE_SIZE((image).format) * (image).colormap_entries) + /* Return the size, in bytes, of the color-map of this image. If the image + * format is not a color-map format this will return a size sufficient for + * 256 entries in the given format; check PNG_FORMAT_FLAG_COLORMAP if + * you don't want to allocate a color-map in this case. + */ + +/* PNG_IMAGE_FLAG_* + * + * Flags containing additional information about the image are held in the + * 'flags' field of png_image. + */ +#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01 + /* This indicates the the RGB values of the in-memory bitmap do not + * correspond to the red, green and blue end-points defined by sRGB. + */ + +#define PNG_IMAGE_FLAG_FAST 0x02 + /* On write emphasise speed over compression; the resultant PNG file will be + * larger but will be produced significantly faster, particular for large + * images. Do not use this option for images which will be distributed, only + * used it when producing intermediate files that will be read back in + * repeatedly. For a typical 24-bit image the option will double the read + * speed at the cost of increasing the image size by 25%, however for many + * more compressible images the PNG file can be 10 times larger with only a + * slight speed gain. + */ + +#define PNG_IMAGE_FLAG_16BIT_sRGB 0x04 + /* On read if the image is a 16-bit per component image and there is no gAMA + * or sRGB chunk assume that the components are sRGB encoded. Notice that + * images output by the simplified API always have gamma information; setting + * this flag only affects the interpretation of 16-bit images from an + * external source. It is recommended that the application expose this flag + * to the user; the user can normally easily recognize the difference between + * linear and sRGB encoding. This flag has no effect on write - the data + * passed to the write APIs must have the correct encoding (as defined + * above.) + * + * If the flag is not set (the default) input 16-bit per component data is + * assumed to be linear. + * + * NOTE: the flag can only be set after the png_image_begin_read_ call, + * because that call initializes the 'flags' field. + */ + +#ifdef PNG_SIMPLIFIED_READ_SUPPORTED +/* READ APIs + * --------- + * + * The png_image passed to the read APIs must have been initialized by setting + * the png_controlp field 'opaque' to NULL (or, safer, memset the whole thing.) + */ +#ifdef PNG_STDIO_SUPPORTED +PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, + const char *file_name)); + /* The named file is opened for read and the image header is filled in + * from the PNG header in the file. + */ + +PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, + FILE* file)); + /* The PNG header is read from the stdio FILE object. */ +#endif /* STDIO */ + +PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, + png_const_voidp memory, png_size_t size)); + /* The PNG header is read from the given memory buffer. */ + +PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image, + png_const_colorp background, void *buffer, png_int_32 row_stride, + void *colormap)); + /* Finish reading the image into the supplied buffer and clean up the + * png_image structure. + * + * row_stride is the step, in byte or 2-byte units as appropriate, + * between adjacent rows. A positive stride indicates that the top-most row + * is first in the buffer - the normal top-down arrangement. A negative + * stride indicates that the bottom-most row is first in the buffer. + * + * background need only be supplied if an alpha channel must be removed from + * a png_byte format and the removal is to be done by compositing on a solid + * color; otherwise it may be NULL and any composition will be done directly + * onto the buffer. The value is an sRGB color to use for the background, + * for grayscale output the green channel is used. + * + * background must be supplied when an alpha channel must be removed from a + * single byte color-mapped output format, in other words if: + * + * 1) The original format from png_image_begin_read_from_* had + * PNG_FORMAT_FLAG_ALPHA set. + * 2) The format set by the application does not. + * 3) The format set by the application has PNG_FORMAT_FLAG_COLORMAP set and + * PNG_FORMAT_FLAG_LINEAR *not* set. + * + * For linear output removing the alpha channel is always done by compositing + * on black and background is ignored. + * + * colormap must be supplied when PNG_FORMAT_FLAG_COLORMAP is set. It must + * be at least the size (in bytes) returned by PNG_IMAGE_COLORMAP_SIZE. + * image->colormap_entries will be updated to the actual number of entries + * written to the colormap; this may be less than the original value. + */ + +PNG_EXPORT(238, void, png_image_free, (png_imagep image)); + /* Free any data allocated by libpng in image->opaque, setting the pointer to + * NULL. May be called at any time after the structure is initialized. + */ +#endif /* SIMPLIFIED_READ */ + +#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED +#ifdef PNG_STDIO_SUPPORTED +/* WRITE APIS + * ---------- + * For write you must initialize a png_image structure to describe the image to + * be written. To do this use memset to set the whole structure to 0 then + * initialize fields describing your image. + * + * version: must be set to PNG_IMAGE_VERSION + * opaque: must be initialized to NULL + * width: image width in pixels + * height: image height in rows + * format: the format of the data (image and color-map) you wish to write + * flags: set to 0 unless one of the defined flags applies; set + * PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB for color format images where the RGB + * values do not correspond to the colors in sRGB. + * colormap_entries: set to the number of entries in the color-map (0 to 256) + */ +PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, + const char *file, int convert_to_8bit, const void *buffer, + png_int_32 row_stride, const void *colormap)); + /* Write the image to the named file. */ + +PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, + int convert_to_8_bit, const void *buffer, png_int_32 row_stride, + const void *colormap)); + /* Write the image to the given (FILE*). */ + +/* With both write APIs if image is in one of the linear formats with 16-bit + * data then setting convert_to_8_bit will cause the output to be an 8-bit PNG + * gamma encoded according to the sRGB specification, otherwise a 16-bit linear + * encoded PNG file is written. + * + * With color-mapped data formats the colormap parameter point to a color-map + * with at least image->colormap_entries encoded in the specified format. If + * the format is linear the written PNG color-map will be converted to sRGB + * regardless of the convert_to_8_bit flag. + * + * With all APIs row_stride is handled as in the read APIs - it is the spacing + * from one row to the next in component sized units (1 or 2 bytes) and if + * negative indicates a bottom-up row layout in the buffer. If row_stride is zero, + * libpng will calculate it for you from the image width and number of channels. + * + * Note that the write API does not support interlacing, sub-8-bit pixels, indexed + * PNG (color_type 3) or most ancillary chunks. + */ +#endif /* STDIO */ +#endif /* SIMPLIFIED_WRITE */ +/******************************************************************************* + * END OF SIMPLIFIED API + ******************************************************************************/ +#endif /* SIMPLIFIED_{READ|WRITE} */ + +#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +PNG_EXPORT(242, void, png_set_check_for_invalid_index, + (png_structrp png_ptr, int allowed)); +# ifdef PNG_GET_PALETTE_MAX_SUPPORTED +PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, + png_const_infop info_ptr)); +# endif +#endif /* CHECK_FOR_INVALID_INDEX */ + +/******************************************************************************* + * IMPLEMENTATION OPTIONS + ******************************************************************************* + * + * Support for arbitrary implementation-specific optimizations. The API allows + * particular options to be turned on or off. 'Option' is the number of the + * option and 'onoff' is 0 (off) or non-0 (on). The value returned is given + * by the PNG_OPTION_ defines below. + * + * HARDWARE: normally hardware capabilites, such as the Intel SSE instructions, + * are detected at run time, however sometimes it may be impossible + * to do this in user mode, in which case it is necessary to discover + * the capabilities in an OS specific way. Such capabilities are + * listed here when libpng has support for them and must be turned + * ON by the application if present. + * + * SOFTWARE: sometimes software optimizations actually result in performance + * decrease on some architectures or systems, or with some sets of + * PNG images. 'Software' options allow such optimizations to be + * selected at run time. + */ +#ifdef PNG_SET_OPTION_SUPPORTED +#ifdef PNG_ARM_NEON_API_SUPPORTED +# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ +#endif +#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ +#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ +#define PNG_OPTION_NEXT 6 /* Next option - numbers must be even */ + +/* Return values: NOTE: there are four values and 'off' is *not* zero */ +#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ +#define PNG_OPTION_INVALID 1 /* Option number out of range */ +#define PNG_OPTION_OFF 2 +#define PNG_OPTION_ON 3 + +PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, + int onoff)); +#endif /* SET_OPTION */ + +/******************************************************************************* + * END OF HARDWARE AND SOFTWARE OPTIONS + ******************************************************************************/ + +/* Maintainer: Put new public prototypes here ^, in libpng.3, in project + * defs, and in scripts/symbols.def. + */ + +/* The last ordinal number (this is the *last* one already used; the next + * one to use is one more than this.) + */ +#ifdef PNG_EXPORT_LAST_ORDINAL + PNG_EXPORT_LAST_ORDINAL(244); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff --git a/lib/windows64/include/pngconf.h b/lib/windows64/include/pngconf.h new file mode 100644 index 0000000..62e37cf --- /dev/null +++ b/lib/windows64/include/pngconf.h @@ -0,0 +1,622 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.6.18, July 23, 2015 + * + * Copyright (c) 1998-2015 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + * Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ + +/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C + * compiler for correct compilation. The following header files are required by + * the standard. If your compiler doesn't provide these header files, or they + * do not match the standard, you will need to provide/improve them. + */ +#include <limits.h> +#include <stddef.h> + +/* Library header files. These header files are all defined by ISOC90; libpng + * expects conformant implementations, however, an ISOC90 conformant system need + * not provide these header files if the functionality cannot be implemented. + * In this case it will be necessary to disable the relevant parts of libpng in + * the build of pnglibconf.h. + * + * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not + * include this unnecessary header file. + */ + +#ifdef PNG_STDIO_SUPPORTED + /* Required for the definition of FILE: */ +# include <stdio.h> +#endif + +#ifdef PNG_SETJMP_SUPPORTED + /* Required for the definition of jmp_buf and the declaration of longjmp: */ +# include <setjmp.h> +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED + /* Required for struct tm: */ +# include <time.h> +#endif + +#endif /* PNG_BUILDING_SYMBOL_TABLE */ + +/* Prior to 1.6.0 it was possible to turn off 'const' in declarations using + * PNG_NO_CONST; this is no longer supported except for data declarations which + * apparently still cause problems in 2011 on some compilers. + */ +#define PNG_CONST const /* backward compatibility only */ + +/* This controls optimization of the reading of 16 and 32 bit values + * from PNG files. It can be set on a per-app-file basis - it + * just changes whether a macro is used when the function is called. + * The library builder sets the default; if read functions are not + * built into the library the macro implementation is forced on. + */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# if PNG_DEFAULT_READ_MACROS +# define PNG_USE_READ_MACROS +# endif +#endif + +/* COMPILER SPECIFIC OPTIONS. + * + * These options are provided so that a variety of difficult compilers + * can be used. Some are fixed at build time (e.g. PNG_API_RULE + * below) but still have compiler specific implementations, others + * may be changed on a per-file basis when compiling against libpng. + */ + +/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect + * against legacy (pre ISOC90) compilers that did not understand function + * prototypes. It is not required for modern C compilers. + */ +#ifndef PNGARG +# define PNGARG(arglist) arglist +#endif + +/* Function calling conventions. + * ============================= + * Normally it is not necessary to specify to the compiler how to call + * a function - it just does it - however on x86 systems derived from + * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems + * and some others) there are multiple ways to call a function and the + * default can be changed on the compiler command line. For this reason + * libpng specifies the calling convention of every exported function and + * every function called via a user supplied function pointer. This is + * done in this file by defining the following macros: + * + * PNGAPI Calling convention for exported functions. + * PNGCBAPI Calling convention for user provided (callback) functions. + * PNGCAPI Calling convention used by the ANSI-C library (required + * for longjmp callbacks and sometimes used internally to + * specify the calling convention for zlib). + * + * These macros should never be overridden. If it is necessary to + * change calling convention in a private build this can be done + * by setting PNG_API_RULE (which defaults to 0) to one of the values + * below to select the correct 'API' variants. + * + * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. + * This is correct in every known environment. + * PNG_API_RULE=1 Use the operating system convention for PNGAPI and + * the 'C' calling convention (from PNGCAPI) for + * callbacks (PNGCBAPI). This is no longer required + * in any known environment - if it has to be used + * please post an explanation of the problem to the + * libpng mailing list. + * + * These cases only differ if the operating system does not use the C + * calling convention, at present this just means the above cases + * (x86 DOS/Windows sytems) and, even then, this does not apply to + * Cygwin running on those systems. + * + * Note that the value must be defined in pnglibconf.h so that what + * the application uses to call the library matches the conventions + * set when building the library. + */ + +/* Symbol export + * ============= + * When building a shared library it is almost always necessary to tell + * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' + * is used to mark the symbols. On some systems these symbols can be + * extracted at link time and need no special processing by the compiler, + * on other systems the symbols are flagged by the compiler and just + * the declaration requires a special tag applied (unfortunately) in a + * compiler dependent way. Some systems can do either. + * + * A small number of older systems also require a symbol from a DLL to + * be flagged to the program that calls it. This is a problem because + * we do not know in the header file included by application code that + * the symbol will come from a shared library, as opposed to a statically + * linked one. For this reason the application must tell us by setting + * the magic flag PNG_USE_DLL to turn on the special processing before + * it includes png.h. + * + * Four additional macros are used to make this happen: + * + * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from + * the build or imported if PNG_USE_DLL is set - compiler + * and system specific. + * + * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to + * 'type', compiler specific. + * + * PNG_DLL_EXPORT Set to the magic to use during a libpng build to + * make a symbol exported from the DLL. Not used in the + * public header files; see pngpriv.h for how it is used + * in the libpng build. + * + * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come + * from a DLL - used to define PNG_IMPEXP when + * PNG_USE_DLL is set. + */ + +/* System specific discovery. + * ========================== + * This code is used at build time to find PNG_IMPEXP, the API settings + * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL + * import processing is possible. On Windows systems it also sets + * compiler-specific macros to the values required to change the calling + * conventions of the various functions. + */ +#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ + defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) + /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or + * MinGW on any architecture currently supported by Windows. Also includes + * Watcom builds but these need special treatment because they are not + * compatible with GCC or Visual C because of different calling conventions. + */ +# if PNG_API_RULE == 2 + /* If this line results in an error, either because __watcall is not + * understood or because of a redefine just below you cannot use *this* + * build of the library with the compiler you are using. *This* build was + * build using Watcom and applications must also be built using Watcom! + */ +# define PNGCAPI __watcall +# endif + +# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) +# define PNGCAPI __cdecl +# if PNG_API_RULE == 1 + /* If this line results in an error __stdcall is not understood and + * PNG_API_RULE should not have been set to '1'. + */ +# define PNGAPI __stdcall +# endif +# else + /* An older compiler, or one not detected (erroneously) above, + * if necessary override on the command line to get the correct + * variants for the compiler. + */ +# ifndef PNGCAPI +# define PNGCAPI _cdecl +# endif +# if PNG_API_RULE == 1 && !defined(PNGAPI) +# define PNGAPI _stdcall +# endif +# endif /* compiler/api */ + + /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ + +# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) +# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" +# endif + +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ + +#else /* !Windows */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# define PNGAPI _System +# else /* !Windows/x86 && !OS/2 */ + /* Use the defaults, or define PNG*API on the command line (but + * this will have to be done for every compile!) + */ +# endif /* other system, !OS/2 */ +#endif /* !Windows/x86 */ + +/* Now do all the defaulting . */ +#ifndef PNGCAPI +# define PNGCAPI +#endif +#ifndef PNGCBAPI +# define PNGCBAPI PNGCAPI +#endif +#ifndef PNGAPI +# define PNGAPI PNGCAPI +#endif + +/* PNG_IMPEXP may be set on the compilation system command line or (if not set) + * then in an internal header file when building the library, otherwise (when + * using the library) it is set here. + */ +#ifndef PNG_IMPEXP +# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) + /* This forces use of a DLL, disallowing static linking */ +# define PNG_IMPEXP PNG_DLL_IMPORT +# endif + +# ifndef PNG_IMPEXP +# define PNG_IMPEXP +# endif +#endif + +/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat + * 'attributes' as a storage class - the attributes go at the start of the + * function definition, and attributes are always appended regardless of the + * compiler. This considerably simplifies these macros but may cause problems + * if any compilers both need function attributes and fail to handle them as + * a storage class (this is unlikely.) + */ +#ifndef PNG_FUNCTION +# define PNG_FUNCTION(type, name, args, attributes) attributes type name args +#endif + +#ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type +#endif + + /* The ordinal value is only relevant when preprocessing png.h for symbol + * table entries, so we discard it here. See the .dfn files in the + * scripts directory. + */ + +#ifndef PNG_EXPORTA +# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ + PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ + PNG_LINKAGE_API attributes) +#endif + +/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, + * so make something non-empty to satisfy the requirement: + */ +#define PNG_EMPTY /*empty list*/ + +#define PNG_EXPORT(ordinal, type, name, args) \ + PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) + +/* Use PNG_REMOVED to comment out a removed interface. */ +#ifndef PNG_REMOVED +# define PNG_REMOVED(ordinal, type, name, args, attributes) +#endif + +#ifndef PNG_CALLBACK +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +#endif + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. + * + * Added at libpng-1.2.41. + */ + +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED + /* Support for compiler specific function attributes. These are used + * so that where compiler support is available, incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. Disabling these removes the warnings but may also produce + * less efficient code. + */ +# if defined(__clang__) && defined(__has_attribute) + /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ +# if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# if !defined(PNG_PRIVATE) +# ifdef __has_extension +# if __has_extension(attribute_unavailable_with_message) +# define PNG_PRIVATE __attribute__((__unavailable__(\ + "This function is not exported by libpng."))) +# endif +# endif +# endif +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif + +# elif defined(__GNUC__) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if __GNUC__ >= 3 +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif +# if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif +# endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ +# endif /* __GNUC__ >= 3 */ + +# elif defined(_MSC_VER) && (_MSC_VER >= 1300) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* not supported */ +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __declspec(noreturn) +# endif +# ifndef PNG_ALLOCATED +# if (_MSC_VER >= 1400) +# define PNG_ALLOCATED __declspec(restrict) +# endif +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __declspec(deprecated) +# endif +# ifndef PNG_PRIVATE +# define PNG_PRIVATE __declspec(deprecated) +# endif +# ifndef PNG_RESTRICT +# if (_MSC_VER >= 1400) +# define PNG_RESTRICT __restrict +# endif +# endif + +# elif defined(__WATCOMC__) +# ifndef PNG_RESTRICT +# define PNG_RESTRICT __restrict +# endif +# endif +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif +#ifndef PNG_RESTRICT +# define PNG_RESTRICT /* The C99 "restrict" feature */ +#endif + +#ifndef PNG_FP_EXPORT /* A floating point API. */ +# ifdef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FP_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No floating point APIs */ +# define PNG_FP_EXPORT(ordinal, type, name, args) +# endif +#endif +#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ +# ifdef PNG_FIXED_POINT_SUPPORTED +# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No fixed point APIs */ +# define PNG_FIXED_EXPORT(ordinal, type, name, args) +# endif +#endif + +#ifndef PNG_BUILDING_SYMBOL_TABLE +/* Some typedefs to get us started. These should be safe on most of the common + * platforms. + * + * png_uint_32 and png_int_32 may, currently, be larger than required to hold a + * 32-bit value however this is not normally advisable. + * + * png_uint_16 and png_int_16 should always be two bytes in size - this is + * verified at library build time. + * + * png_byte must always be one byte in size. + * + * The checks below use constants from limits.h, as defined by the ISOC90 + * standard. + */ +#if CHAR_BIT == 8 && UCHAR_MAX == 255 + typedef unsigned char png_byte; +#else +# error "libpng requires 8 bit bytes" +#endif + +#if INT_MIN == -32768 && INT_MAX == 32767 + typedef int png_int_16; +#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 + typedef short png_int_16; +#else +# error "libpng requires a signed 16 bit type" +#endif + +#if UINT_MAX == 65535 + typedef unsigned int png_uint_16; +#elif USHRT_MAX == 65535 + typedef unsigned short png_uint_16; +#else +# error "libpng requires an unsigned 16 bit type" +#endif + +#if INT_MIN < -2147483646 && INT_MAX > 2147483646 + typedef int png_int_32; +#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 + typedef long int png_int_32; +#else +# error "libpng requires a signed 32 bit (or more) type" +#endif + +#if UINT_MAX > 4294967294 + typedef unsigned int png_uint_32; +#elif ULONG_MAX > 4294967294 + typedef unsigned long int png_uint_32; +#else +# error "libpng requires an unsigned 32 bit (or more) type" +#endif + +/* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, + * requires an ISOC90 compiler and relies on consistent behavior of sizeof. + */ +typedef size_t png_size_t; +typedef ptrdiff_t png_ptrdiff_t; + +/* libpng needs to know the maximum value of 'size_t' and this controls the + * definition of png_alloc_size_t, below. This maximum value of size_t limits + * but does not control the maximum allocations the library makes - there is + * direct application control of this through png_set_user_limits(). + */ +#ifndef PNG_SMALL_SIZE_T + /* Compiler specific tests for systems where size_t is known to be less than + * 32 bits (some of these systems may no longer work because of the lack of + * 'far' support; see above.) + */ +# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ + (defined(_MSC_VER) && defined(MAXSEG_64K)) +# define PNG_SMALL_SIZE_T +# endif +#endif + +/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no + * smaller than png_uint_32. Casts from png_size_t or png_uint_32 to + * png_alloc_size_t are not necessary; in fact, it is recommended not to use + * them at all so that the compiler can complain when something turns out to be + * problematic. + * + * Casts in the other direction (from png_alloc_size_t to png_size_t or + * png_uint_32) should be explicitly applied; however, we do not expect to + * encounter practical situations that require such conversions. + * + * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than + * 4294967295 - i.e. less than the maximum value of png_uint_32. + */ +#ifdef PNG_SMALL_SIZE_T + typedef png_uint_32 png_alloc_size_t; +#else + typedef png_size_t png_alloc_size_t; +#endif + +/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler + * implementations of Intel CPU specific support of user-mode segmented address + * spaces, where 16-bit pointers address more than 65536 bytes of memory using + * separate 'segment' registers. The implementation requires two different + * types of pointer (only one of which includes the segment value.) + * + * If required this support is available in version 1.2 of libpng and may be + * available in versions through 1.5, although the correctness of the code has + * not been verified recently. + */ + +/* Typedef for floating-point numbers that are converted to fixed-point with a + * multiple of 100,000, e.g., gamma + */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void * png_voidp; +typedef const void * png_const_voidp; +typedef png_byte * png_bytep; +typedef const png_byte * png_const_bytep; +typedef png_uint_32 * png_uint_32p; +typedef const png_uint_32 * png_const_uint_32p; +typedef png_int_32 * png_int_32p; +typedef const png_int_32 * png_const_int_32p; +typedef png_uint_16 * png_uint_16p; +typedef const png_uint_16 * png_const_uint_16p; +typedef png_int_16 * png_int_16p; +typedef const png_int_16 * png_const_int_16p; +typedef char * png_charp; +typedef const char * png_const_charp; +typedef png_fixed_point * png_fixed_point_p; +typedef const png_fixed_point * png_const_fixed_point_p; +typedef png_size_t * png_size_tp; +typedef const png_size_t * png_const_size_tp; + +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double * png_doublep; +typedef const double * png_const_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte * * png_bytepp; +typedef png_uint_32 * * png_uint_32pp; +typedef png_int_32 * * png_int_32pp; +typedef png_uint_16 * * png_uint_16pp; +typedef png_int_16 * * png_int_16pp; +typedef const char * * png_const_charpp; +typedef char * * png_charpp; +typedef png_fixed_point * * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double * * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char * * * png_charppp; + +#endif /* PNG_BUILDING_SYMBOL_TABLE */ + +#endif /* PNGCONF_H */ diff --git a/lib/windows64/include/pnglibconf.h b/lib/windows64/include/pnglibconf.h new file mode 100644 index 0000000..2719f00 --- /dev/null +++ b/lib/windows64/include/pnglibconf.h @@ -0,0 +1,216 @@ +/* libpng 1.6.18 STANDARD API DEFINITION */ + +/* pnglibconf.h - library build configuration */ + +/* Libpng version 1.6.18 - July 23, 2015 */ + +/* Copyright (c) 1998-2014 Glenn Randers-Pehrson */ + +/* This code is released under the libpng license. */ +/* For conditions of distribution and use, see the disclaimer */ +/* and license in png.h */ + +/* pnglibconf.h */ +/* Machine generated file: DO NOT EDIT */ +/* Derived from: scripts/pnglibconf.dfa */ +#ifndef PNGLCONF_H +#define PNGLCONF_H +/* options */ +#define PNG_16BIT_SUPPORTED +#define PNG_ALIGNED_MEMORY_SUPPORTED +/*#undef PNG_ARM_NEON_API_SUPPORTED*/ +/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ +#define PNG_BENIGN_ERRORS_SUPPORTED +#define PNG_BENIGN_READ_ERRORS_SUPPORTED +/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ +#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_COLORSPACE_SUPPORTED +#define PNG_CONSOLE_IO_SUPPORTED +#define PNG_CONVERT_tIME_SUPPORTED +#define PNG_EASY_ACCESS_SUPPORTED +/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ +#define PNG_ERROR_TEXT_SUPPORTED +#define PNG_FIXED_POINT_SUPPORTED +#define PNG_FLOATING_ARITHMETIC_SUPPORTED +#define PNG_FLOATING_POINT_SUPPORTED +#define PNG_FORMAT_AFIRST_SUPPORTED +#define PNG_FORMAT_BGR_SUPPORTED +#define PNG_GAMMA_SUPPORTED +#define PNG_GET_PALETTE_MAX_SUPPORTED +#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +#define PNG_INCH_CONVERSIONS_SUPPORTED +#define PNG_INFO_IMAGE_SUPPORTED +#define PNG_IO_STATE_SUPPORTED +#define PNG_MNG_FEATURES_SUPPORTED +#define PNG_POINTER_INDEXING_SUPPORTED +#define PNG_PROGRESSIVE_READ_SUPPORTED +#define PNG_READ_16BIT_SUPPORTED +#define PNG_READ_ALPHA_MODE_SUPPORTED +#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_BGR_SUPPORTED +#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_READ_COMPOSITE_NODIV_SUPPORTED +#define PNG_READ_COMPRESSED_TEXT_SUPPORTED +#define PNG_READ_EXPAND_16_SUPPORTED +#define PNG_READ_EXPAND_SUPPORTED +#define PNG_READ_FILLER_SUPPORTED +#define PNG_READ_GAMMA_SUPPORTED +#define PNG_READ_GET_PALETTE_MAX_SUPPORTED +#define PNG_READ_GRAY_TO_RGB_SUPPORTED +#define PNG_READ_INTERLACING_SUPPORTED +#define PNG_READ_INT_FUNCTIONS_SUPPORTED +#define PNG_READ_INVERT_ALPHA_SUPPORTED +#define PNG_READ_INVERT_SUPPORTED +#define PNG_READ_OPT_PLTE_SUPPORTED +#define PNG_READ_PACKSWAP_SUPPORTED +#define PNG_READ_PACK_SUPPORTED +#define PNG_READ_QUANTIZE_SUPPORTED +#define PNG_READ_RGB_TO_GRAY_SUPPORTED +#define PNG_READ_SCALE_16_TO_8_SUPPORTED +#define PNG_READ_SHIFT_SUPPORTED +#define PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_STRIP_ALPHA_SUPPORTED +#define PNG_READ_SUPPORTED +#define PNG_READ_SWAP_ALPHA_SUPPORTED +#define PNG_READ_SWAP_SUPPORTED +#define PNG_READ_TEXT_SUPPORTED +#define PNG_READ_TRANSFORMS_SUPPORTED +#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_READ_USER_CHUNKS_SUPPORTED +#define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_READ_bKGD_SUPPORTED +#define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_gAMA_SUPPORTED +#define PNG_READ_hIST_SUPPORTED +#define PNG_READ_iCCP_SUPPORTED +#define PNG_READ_iTXt_SUPPORTED +#define PNG_READ_oFFs_SUPPORTED +#define PNG_READ_pCAL_SUPPORTED +#define PNG_READ_pHYs_SUPPORTED +#define PNG_READ_sBIT_SUPPORTED +#define PNG_READ_sCAL_SUPPORTED +#define PNG_READ_sPLT_SUPPORTED +#define PNG_READ_sRGB_SUPPORTED +#define PNG_READ_tEXt_SUPPORTED +#define PNG_READ_tIME_SUPPORTED +#define PNG_READ_tRNS_SUPPORTED +#define PNG_READ_zTXt_SUPPORTED +#define PNG_SAVE_INT_32_SUPPORTED +#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_SETJMP_SUPPORTED +#define PNG_SET_OPTION_SUPPORTED +#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_SET_USER_LIMITS_SUPPORTED +#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED +#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED +#define PNG_SIMPLIFIED_READ_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED +#define PNG_SIMPLIFIED_WRITE_SUPPORTED +#define PNG_STDIO_SUPPORTED +#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_TEXT_SUPPORTED +#define PNG_TIME_RFC1123_SUPPORTED +#define PNG_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_CHUNKS_SUPPORTED +#define PNG_USER_LIMITS_SUPPORTED +#define PNG_USER_MEM_SUPPORTED +#define PNG_USER_TRANSFORM_INFO_SUPPORTED +#define PNG_USER_TRANSFORM_PTR_SUPPORTED +#define PNG_WARNINGS_SUPPORTED +#define PNG_WRITE_16BIT_SUPPORTED +#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#define PNG_WRITE_BGR_SUPPORTED +#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED +#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED +#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED +#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +#define PNG_WRITE_FILLER_SUPPORTED +#define PNG_WRITE_FILTER_SUPPORTED +#define PNG_WRITE_FLUSH_SUPPORTED +#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED +#define PNG_WRITE_INTERLACING_SUPPORTED +#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED +#define PNG_WRITE_INVERT_ALPHA_SUPPORTED +#define PNG_WRITE_INVERT_SUPPORTED +#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED +#define PNG_WRITE_PACKSWAP_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED +#define PNG_WRITE_SHIFT_SUPPORTED +#define PNG_WRITE_SUPPORTED +#define PNG_WRITE_SWAP_ALPHA_SUPPORTED +#define PNG_WRITE_SWAP_SUPPORTED +#define PNG_WRITE_TEXT_SUPPORTED +#define PNG_WRITE_TRANSFORMS_SUPPORTED +#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_WRITE_USER_TRANSFORM_SUPPORTED +#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_WRITE_bKGD_SUPPORTED +#define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_gAMA_SUPPORTED +#define PNG_WRITE_hIST_SUPPORTED +#define PNG_WRITE_iCCP_SUPPORTED +#define PNG_WRITE_iTXt_SUPPORTED +#define PNG_WRITE_oFFs_SUPPORTED +#define PNG_WRITE_pCAL_SUPPORTED +#define PNG_WRITE_pHYs_SUPPORTED +#define PNG_WRITE_sBIT_SUPPORTED +#define PNG_WRITE_sCAL_SUPPORTED +#define PNG_WRITE_sPLT_SUPPORTED +#define PNG_WRITE_sRGB_SUPPORTED +#define PNG_WRITE_tEXt_SUPPORTED +#define PNG_WRITE_tIME_SUPPORTED +#define PNG_WRITE_tRNS_SUPPORTED +#define PNG_WRITE_zTXt_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_iTXt_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_tEXt_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_tRNS_SUPPORTED +#define PNG_zTXt_SUPPORTED +/* end of options */ +/* settings */ +#define PNG_API_RULE 0 +#define PNG_COST_SHIFT 3 +#define PNG_DEFAULT_READ_MACROS 1 +#define PNG_GAMMA_THRESHOLD_FIXED 5000 +#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE +#define PNG_INFLATE_BUF_SIZE 1024 +#define PNG_LINKAGE_API extern +#define PNG_LINKAGE_CALLBACK extern +#define PNG_LINKAGE_DATA extern +#define PNG_LINKAGE_FUNCTION extern +#define PNG_MAX_GAMMA_8 11 +#define PNG_QUANTIZE_BLUE_BITS 5 +#define PNG_QUANTIZE_GREEN_BITS 5 +#define PNG_QUANTIZE_RED_BITS 5 +#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) +#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 +#define PNG_USER_CHUNK_CACHE_MAX 1000 +#define PNG_USER_CHUNK_MALLOC_MAX 8000000 +#define PNG_USER_HEIGHT_MAX 1000000 +#define PNG_USER_WIDTH_MAX 1000000 +#define PNG_WEIGHT_SHIFT 8 +#define PNG_ZBUF_SIZE 8192 +#define PNG_ZLIB_VERNUM 0 /* unknown */ +#define PNG_Z_DEFAULT_COMPRESSION (-1) +#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 +#define PNG_Z_DEFAULT_STRATEGY 1 +#define PNG_sCAL_PRECISION 5 +#define PNG_sRGB_PROFILE_CHECKS 2 +/* end of settings */ +#endif /* PNGLCONF_H */ diff --git a/lib/windows64/include/steam/isteamapplist.h b/lib/windows64/include/steam/isteamapplist.h new file mode 100644 index 0000000..d678909 --- /dev/null +++ b/lib/windows64/include/steam/isteamapplist.h @@ -0,0 +1,63 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPLIST_H +#define ISTEAMAPPLIST_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamtypes.h" + +//----------------------------------------------------------------------------- +// Purpose: This is a restricted interface that can only be used by previously approved apps, +// contact your Steam Account Manager if you believe you need access to this API. +// This interface lets you detect installed apps for the local Steam client, useful for debugging tools +// to offer lists of apps to debug via Steam. +//----------------------------------------------------------------------------- +class ISteamAppList +{ +public: + virtual uint32 GetNumInstalledApps() = 0; + virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; + + virtual int GetAppName( AppId_t nAppID, OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found + virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found + + virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game +}; + +#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when a new app is installed +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when an app is uninstalled +//--------------------------------------------------------------------------------- +DEFINE_CALLBACK( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ); + CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) +#endif // ISTEAMAPPLIST_H diff --git a/lib/windows64/include/steam/isteamapps.h b/lib/windows64/include/steam/isteamapps.h new file mode 100644 index 0000000..9a97b4a --- /dev/null +++ b/lib/windows64/include/steam/isteamapps.h @@ -0,0 +1,176 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPS_H +#define ISTEAMAPPS_H +#ifdef _WIN32 +#pragma once +#endif + +const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key + + +//----------------------------------------------------------------------------- +// Purpose: interface to app data +//----------------------------------------------------------------------------- +class ISteamApps +{ +public: + virtual bool BIsSubscribed() = 0; + virtual bool BIsLowViolence() = 0; + virtual bool BIsCybercafe() = 0; + virtual bool BIsVACBanned() = 0; + virtual const char *GetCurrentGameLanguage() = 0; + virtual const char *GetAvailableGameLanguages() = 0; + + // only use this member if you need to check ownership of another game related to yours, a demo for example + virtual bool BIsSubscribedApp( AppId_t appID ) = 0; + + // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed + virtual bool BIsDlcInstalled( AppId_t appID ) = 0; + + // returns the Unix time of the purchase of the app + virtual uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID ) = 0; + + // Checks if the user is subscribed to the current app through a free weekend + // This function will return false for users who have a retail or other type of license + // Before using, please ask your Valve technical contact how to package and secure your free weekened + virtual bool BIsSubscribedFromFreeWeekend() = 0; + + // Returns the number of DLC pieces for the running app + virtual int GetDLCCount() = 0; + + // Returns metadata for DLC by index, of range [0, GetDLCCount()] + virtual bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize ) = 0; + + // Install/Uninstall control for optional DLC + virtual void InstallDLC( AppId_t nAppID ) = 0; + virtual void UninstallDLC( AppId_t nAppID ) = 0; + + // Request legacy cd-key for yourself or owned DLC. If you are interested in this + // data then make sure you provide us with a list of valid keys to be distributed + // to users when they purchase the game, before the game ships. + // You'll receive an AppProofOfPurchaseKeyResponse_t callback when + // the key is available (which may be immediately). + virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0; + + virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch + virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing + virtual uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots ) = 0; // return installed depots in mount order + + // returns current app install folder for AppID, returns folder name length + virtual uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize ) = 0; + virtual bool BIsAppInstalled( AppId_t appID ) = 0; // returns true if that app is installed (not necessarily owned) + + virtual CSteamID GetAppOwner() = 0; // returns the SteamID of the original owner. If different from current user, it's borrowed + + // Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc. + // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. + // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + // but it is advised that you not param names beginning with an underscore for your own features. + virtual const char *GetLaunchQueryParam( const char *pchKey ) = 0; + + // get download progress for optional DLC + virtual bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // return the buildid of this app, may change at any time based on backend updates to the game + virtual int GetAppBuildId() = 0; + + // Request all proof of purchase keys for the calling appid and asociated DLC. + // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with + // appropriate appid values, ending with a final callback where the m_nAppId + // member is k_uAppIdInvalid (zero). + virtual void RequestAllProofOfPurchaseKeys() = 0; + + CALL_RESULT( FileDetailsResult_t ) + virtual SteamAPICall_t GetFileDetails( const char* pszFileName ) = 0; +}; + +#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: posted after the user gains ownership of DLC & that DLC is installed +//----------------------------------------------------------------------------- +struct DlcInstalled_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 5 }; + AppId_t m_nAppID; // AppID of the DLC +}; + + +//----------------------------------------------------------------------------- +// Purpose: possible results when registering an activation code +//----------------------------------------------------------------------------- +enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RegisterActivationCode() +//----------------------------------------------------------------------------- +struct RegisterActivationCodeResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; + ERegisterActivationCodeResult m_eResult; + uint32 m_unPackageRegistered; // package that was registered. Only set on success +}; + + +//--------------------------------------------------------------------------------- +// Purpose: posted after the user gains executes a steam url with query parameters +// such as steam://run/<appid>//?param1=value1;param2=value2;param3=value3; etc +// while the game is already running. The new params can be queried +// with GetLaunchQueryParam. +//--------------------------------------------------------------------------------- +struct NewLaunchQueryParameters_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys +// for supporting third-party CD keys, or other proof-of-purchase systems. +//----------------------------------------------------------------------------- +struct AppProofOfPurchaseKeyResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; + EResult m_eResult; + uint32 m_nAppID; + uint32 m_cchKeyLength; + char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to GetFileDetails +//----------------------------------------------------------------------------- +struct FileDetailsResult_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 23 }; + EResult m_eResult; + uint64 m_ulFileSize; // original file size in bytes + uint8 m_FileSHA[20]; // original file SHA1 hash + uint32 m_unFlags; // +}; + + +#pragma pack( pop ) +#endif // ISTEAMAPPS_H diff --git a/lib/windows64/include/steam/isteamappticket.h b/lib/windows64/include/steam/isteamappticket.h new file mode 100644 index 0000000..21fb9e1 --- /dev/null +++ b/lib/windows64/include/steam/isteamappticket.h @@ -0,0 +1,28 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: a private, but well versioned, interface to get at critical bits +// of a steam3 appticket - consumed by the simple drm wrapper to let it +// ask about ownership with greater confidence. +// +//============================================================================= + +#ifndef ISTEAMAPPTICKET_H +#define ISTEAMAPPTICKET_H +#pragma once + +//----------------------------------------------------------------------------- +// Purpose: hand out a reasonable "future proof" view of an app ownership ticket +// the raw (signed) buffer, and indices into that buffer where the appid and +// steamid are located. the sizes of the appid and steamid are implicit in +// (each version of) the interface - currently uin32 appid and uint64 steamid +//----------------------------------------------------------------------------- +class ISteamAppTicket +{ +public: + virtual uint32 GetAppOwnershipTicketData( uint32 nAppID, void *pvBuffer, uint32 cbBufferLength, uint32 *piAppId, uint32 *piSteamId, uint32 *piSignature, uint32 *pcbSignature ) = 0; +}; + +#define STEAMAPPTICKET_INTERFACE_VERSION "STEAMAPPTICKET_INTERFACE_VERSION001" + + +#endif // ISTEAMAPPTICKET_H diff --git a/lib/windows64/include/steam/isteamclient.h b/lib/windows64/include/steam/isteamclient.h new file mode 100644 index 0000000..45d707d --- /dev/null +++ b/lib/windows64/include/steam/isteamclient.h @@ -0,0 +1,520 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: Main interface for loading and accessing Steamworks API's from the +// Steam client. +// For most uses, this code is wrapped inside of SteamAPI_Init() +//============================================================================= + +#ifndef ISTEAMCLIENT_H +#define ISTEAMCLIENT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + +// Define compile time assert macros to let us validate the structure sizes. +#define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; + +#ifndef REFERENCE +#define REFERENCE(arg) ((void)arg) +#endif + +#if defined(STEAM_API_EXPORTS) && !defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) __VA_ARGS__ +#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) +#else +#define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: +#endif + +#if defined(__linux__) || defined(__APPLE__) +// The 32-bit version of gcc has the alignment requirement for uint64 and double set to +// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. +// The 64-bit version of gcc has the alignment requirement for these types set to +// 8 meaning that unless we use #pragma pack(4) our structures will get bigger. +// The 64-bit structure packing has to match the 32-bit structure packing for each platform. +#define VALVE_CALLBACK_PACK_SMALL +#else +#define VALVE_CALLBACK_PACK_LARGE +#endif + +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error ??? +#endif + +typedef struct ValvePackingSentinel_t +{ + uint32 m_u32; + uint64 m_u64; + uint16 m_u16; + double m_d; +} ValvePackingSentinel_t; + +#pragma pack( pop ) + + +#if defined(VALVE_CALLBACK_PACK_SMALL) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 ) +#elif defined(VALVE_CALLBACK_PACK_LARGE) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 ) +#else +#error ??? +#endif + + +// handle to a communication pipe to the Steam client +typedef int32 HSteamPipe; +// handle to single instance of a steam user +typedef int32 HSteamUser; +// function prototype +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); +extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); +#if defined( __SNC__ ) + #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor +#endif + +// interface predec +class ISteamUser; +class ISteamGameServer; +class ISteamFriends; +class ISteamUtils; +class ISteamMatchmaking; +class ISteamContentServer; +class ISteamMatchmakingServers; +class ISteamUserStats; +class ISteamApps; +class ISteamNetworking; +class ISteamRemoteStorage; +class ISteamScreenshots; +class ISteamMusic; +class ISteamMusicRemote; +class ISteamGameServerStats; +class ISteamPS3OverlayRender; +class ISteamHTTP; +class ISteamUnifiedMessages; +class ISteamController; +class ISteamUGC; +class ISteamAppList; +class ISteamHTMLSurface; +class ISteamInventory; +class ISteamVideo; + +//----------------------------------------------------------------------------- +// Purpose: Interface to creating a new steam instance, or to +// connect to an existing steam instance, whether it's in a +// different process or is local. +// +// For most scenarios this is all handled automatically via SteamAPI_Init(). +// You'll only need these APIs if you have a more complex versioning scheme, +// or if you want to implement a multiplexed gameserver where a single process +// is handling multiple games at once with independent gameserver SteamIDs. +//----------------------------------------------------------------------------- +class ISteamClient +{ +public: + // Creates a communication pipe to the Steam client. + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamPipe CreateSteamPipe() = 0; + + // Releases a previously created communications pipe + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; + + // connects to an existing global user, failing if none exists + // used by the game to coordinate with the steamUI + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; + + // used by game servers, create a steam user that won't be shared with anyone else + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0; + + // removes an allocated user + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0; + + // retrieves the ISteamUser interface associated with the handle + virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // retrieves the ISteamGameServer interface associated with the handle + virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // set the local IP and Port to bind to + // this must be set before CreateLocalUser() + virtual void SetLocalIPBinding( uint32 unIP, uint16 usPort ) = 0; + + // returns the ISteamFriends interface + virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUtils interface + virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmaking interface + virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmakingServers interface + virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the a generic interface + virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUserStats interface + virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamGameServerStats interface + virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns apps interface + virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // networking + virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // remote storage + virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // user screenshots + virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message. + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Trigger global shutdown for the DLL + virtual bool BShutdownIfAllPipesClosed() = 0; + + // Expose HTTP interface + virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUnifiedMessages interface + virtual ISteamUnifiedMessages *GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamController interface + virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUGC interface + virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns app list interface, only available on specially registered apps + virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player + virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player Remote + virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // html page display + virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // Helper functions for internal Steam usage + STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) + + // inventory + virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Video + virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; +}; + + +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient017" + +//----------------------------------------------------------------------------- +// Purpose: Base values for callback identifiers, each callback must +// have a unique ID. +//----------------------------------------------------------------------------- +enum { k_iSteamUserCallbacks = 100 }; +enum { k_iSteamGameServerCallbacks = 200 }; +enum { k_iSteamFriendsCallbacks = 300 }; +enum { k_iSteamBillingCallbacks = 400 }; +enum { k_iSteamMatchmakingCallbacks = 500 }; +enum { k_iSteamContentServerCallbacks = 600 }; +enum { k_iSteamUtilsCallbacks = 700 }; +enum { k_iClientFriendsCallbacks = 800 }; +enum { k_iClientUserCallbacks = 900 }; +enum { k_iSteamAppsCallbacks = 1000 }; +enum { k_iSteamUserStatsCallbacks = 1100 }; +enum { k_iSteamNetworkingCallbacks = 1200 }; +enum { k_iClientRemoteStorageCallbacks = 1300 }; +enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamGameServerItemsCallbacks = 1500 }; +enum { k_iClientUtilsCallbacks = 1600 }; +enum { k_iSteamGameCoordinatorCallbacks = 1700 }; +enum { k_iSteamGameServerStatsCallbacks = 1800 }; +enum { k_iSteam2AsyncCallbacks = 1900 }; +enum { k_iSteamGameStatsCallbacks = 2000 }; +enum { k_iClientHTTPCallbacks = 2100 }; +enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamScreenshotsCallbacks = 2300 }; +enum { k_iClientAudioCallbacks = 2400 }; +enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +enum { k_iSteamStreamLauncherCallbacks = 2600 }; +enum { k_iClientControllerCallbacks = 2700 }; +enum { k_iSteamControllerCallbacks = 2800 }; +enum { k_iClientParentalSettingsCallbacks = 2900 }; +enum { k_iClientDeviceAuthCallbacks = 3000 }; +enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; +enum { k_iClientMusicCallbacks = 3200 }; +enum { k_iClientRemoteClientManagerCallbacks = 3300 }; +enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamStreamClientCallbacks = 3500 }; +enum { k_IClientProductBuilderCallbacks = 3600 }; +enum { k_iClientShortcutsCallbacks = 3700 }; +enum { k_iClientRemoteControlManagerCallbacks = 3800 }; +enum { k_iSteamAppListCallbacks = 3900 }; +enum { k_iSteamMusicCallbacks = 4000 }; +enum { k_iSteamMusicRemoteCallbacks = 4100 }; +enum { k_iClientVRCallbacks = 4200 }; +enum { k_iClientGameNotificationCallbacks = 4300 }; +enum { k_iSteamGameNotificationCallbacks = 4400 }; +enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; +enum { k_iClientVideoCallbacks = 4600 }; +enum { k_iClientInventoryCallbacks = 4700 }; +enum { k_iClientBluetoothManagerCallbacks = 4800 }; + +//----------------------------------------------------------------------------- +// The CALLBACK macros are for client side callback logging enabled with +// log_callback <first callnbackID> <last callbackID> +// Do not change any of these. +//----------------------------------------------------------------------------- + +#ifdef STEAM_CALLBACK_INSPECTION_ENABLED + +#define DEFINE_CALLBACK( callbackname, callbackid ) \ +struct callbackname { \ + typedef callbackname SteamCallback_t; \ + enum { k_iCallback = callbackid }; \ + static callbackname *GetNullPointer() { return 0; } \ + static const char *GetCallbackName() { return #callbackname; } \ + static uint32 GetCallbackID() { return callbackname::k_iCallback; } + +#define CALLBACK_MEMBER( varidx, vartype, varname ) \ + public: vartype varname ; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname; \ + varSize = sizeof( vartype ); \ + varCount = 1; \ + *pszName = #varname; *pszType = #vartype; } + +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) \ + public: vartype varname [ varcount ]; \ + static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + varOffset = (unsigned int)(size_t)&GetNullPointer()->varname[0]; \ + varSize = sizeof( vartype ); \ + varCount = varcount; \ + *pszName = #varname; *pszType = #vartype; } + + +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) \ + static uint32 GetNumMemberVariables() { return numvars; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \ + switch ( index ) { default : return false; + + +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) case varidx : GetMemberVar_##varidx( varOffset, varSize, varCount, pszName, pszType ); return true; + +#define END_CALLBACK_INTERNAL_END() }; } }; + +#define END_DEFINE_CALLBACK_0() \ + static uint32 GetNumMemberVariables() { return 0; } \ + static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { REFERENCE( pszType ); REFERENCE( pszName ); REFERENCE( varCount ); REFERENCE( varSize ); REFERENCE( varOffset ); REFERENCE( index ); return false; } \ + }; + +#else + +#define DEFINE_CALLBACK( callbackname, callbackid ) struct callbackname { typedef callbackname SteamCallback_t; enum { k_iCallback = callbackid }; +#define CALLBACK_MEMBER( varidx, vartype, varname ) public: vartype varname ; +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) public: vartype varname [ varcount ]; +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) +#define END_CALLBACK_INTERNAL_END() }; +#define END_DEFINE_CALLBACK_0() }; + +#endif + +#define END_DEFINE_CALLBACK_1() \ + END_CALLBACK_INTERNAL_BEGIN( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_2() \ + END_CALLBACK_INTERNAL_BEGIN( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_3() \ + END_CALLBACK_INTERNAL_BEGIN( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_4() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_5() \ + END_CALLBACK_INTERNAL_BEGIN( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_END() + + +#define END_DEFINE_CALLBACK_6() \ + END_CALLBACK_INTERNAL_BEGIN( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_7() \ + END_CALLBACK_INTERNAL_BEGIN( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_8() \ + END_CALLBACK_INTERNAL_BEGIN( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_9() \ + END_CALLBACK_INTERNAL_BEGIN( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_10() \ + END_CALLBACK_INTERNAL_BEGIN( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_11() \ + END_CALLBACK_INTERNAL_BEGIN( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_12() \ + END_CALLBACK_INTERNAL_BEGIN( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_13() \ + END_CALLBACK_INTERNAL_BEGIN( 13 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_END() + +#define END_DEFINE_CALLBACK_14() \ + END_CALLBACK_INTERNAL_BEGIN( 14 ) \ + END_CALLBACK_INTERNAL_SWITCH( 0 ) \ + END_CALLBACK_INTERNAL_SWITCH( 1 ) \ + END_CALLBACK_INTERNAL_SWITCH( 2 ) \ + END_CALLBACK_INTERNAL_SWITCH( 3 ) \ + END_CALLBACK_INTERNAL_SWITCH( 4 ) \ + END_CALLBACK_INTERNAL_SWITCH( 5 ) \ + END_CALLBACK_INTERNAL_SWITCH( 6 ) \ + END_CALLBACK_INTERNAL_SWITCH( 7 ) \ + END_CALLBACK_INTERNAL_SWITCH( 8 ) \ + END_CALLBACK_INTERNAL_SWITCH( 9 ) \ + END_CALLBACK_INTERNAL_SWITCH( 10 ) \ + END_CALLBACK_INTERNAL_SWITCH( 11 ) \ + END_CALLBACK_INTERNAL_SWITCH( 12 ) \ + END_CALLBACK_INTERNAL_SWITCH( 13 ) \ + END_CALLBACK_INTERNAL_END() + +#endif // ISTEAMCLIENT_H diff --git a/lib/windows64/include/steam/isteamcontroller.h b/lib/windows64/include/steam/isteamcontroller.h new file mode 100644 index 0000000..68f7af6 --- /dev/null +++ b/lib/windows64/include/steam/isteamcontroller.h @@ -0,0 +1,251 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to valve controller +// +//============================================================================= + +#ifndef ISTEAMCONTROLLER_H +#define ISTEAMCONTROLLER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define STEAM_CONTROLLER_MAX_COUNT 16 + +#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 + +#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 + +#define STEAM_CONTROLLER_MAX_ORIGINS 8 + +// When sending an option to a specific controller handle, you can send to all controllers via this command +#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX + +#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f +#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f + +enum ESteamControllerPad +{ + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right +}; + +enum EControllerSource +{ + k_EControllerSource_None, + k_EControllerSource_LeftTrackpad, + k_EControllerSource_RightTrackpad, + k_EControllerSource_Joystick, + k_EControllerSource_ABXY, + k_EControllerSource_Switch, + k_EControllerSource_LeftTrigger, + k_EControllerSource_RightTrigger, + k_EControllerSource_Gyro, + k_EControllerSource_Count +}; + +enum EControllerSourceMode +{ + k_EControllerSourceMode_None, + k_EControllerSourceMode_Dpad, + k_EControllerSourceMode_Buttons, + k_EControllerSourceMode_FourButtons, + k_EControllerSourceMode_AbsoluteMouse, + k_EControllerSourceMode_RelativeMouse, + k_EControllerSourceMode_JoystickMove, + k_EControllerSourceMode_JoystickCamera, + k_EControllerSourceMode_ScrollWheel, + k_EControllerSourceMode_Trigger, + k_EControllerSourceMode_TouchMenu, + k_EControllerSourceMode_MouseJoystick, + k_EControllerSourceMode_MouseRegion, + k_EControllerSourceMode_RadialMenu, + k_EControllerSourceMode_Switches +}; + +enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None, + k_EControllerActionOrigin_A, + k_EControllerActionOrigin_B, + k_EControllerActionOrigin_X, + k_EControllerActionOrigin_Y, + k_EControllerActionOrigin_LeftBumper, + k_EControllerActionOrigin_RightBumper, + k_EControllerActionOrigin_LeftGrip, + k_EControllerActionOrigin_RightGrip, + k_EControllerActionOrigin_Start, + k_EControllerActionOrigin_Back, + k_EControllerActionOrigin_LeftPad_Touch, + k_EControllerActionOrigin_LeftPad_Swipe, + k_EControllerActionOrigin_LeftPad_Click, + k_EControllerActionOrigin_LeftPad_DPadNorth, + k_EControllerActionOrigin_LeftPad_DPadSouth, + k_EControllerActionOrigin_LeftPad_DPadWest, + k_EControllerActionOrigin_LeftPad_DPadEast, + k_EControllerActionOrigin_RightPad_Touch, + k_EControllerActionOrigin_RightPad_Swipe, + k_EControllerActionOrigin_RightPad_Click, + k_EControllerActionOrigin_RightPad_DPadNorth, + k_EControllerActionOrigin_RightPad_DPadSouth, + k_EControllerActionOrigin_RightPad_DPadWest, + k_EControllerActionOrigin_RightPad_DPadEast, + k_EControllerActionOrigin_LeftTrigger_Pull, + k_EControllerActionOrigin_LeftTrigger_Click, + k_EControllerActionOrigin_RightTrigger_Pull, + k_EControllerActionOrigin_RightTrigger_Click, + k_EControllerActionOrigin_LeftStick_Move, + k_EControllerActionOrigin_LeftStick_Click, + k_EControllerActionOrigin_LeftStick_DPadNorth, + k_EControllerActionOrigin_LeftStick_DPadSouth, + k_EControllerActionOrigin_LeftStick_DPadWest, + k_EControllerActionOrigin_LeftStick_DPadEast, + k_EControllerActionOrigin_Gyro_Move, + k_EControllerActionOrigin_Gyro_Pitch, + k_EControllerActionOrigin_Gyro_Yaw, + k_EControllerActionOrigin_Gyro_Roll, + + k_EControllerActionOrigin_Count +}; + +// ControllerHandle_t is used to refer to a specific controller. +// This handle will consistently identify a controller, even if it is disconnected and re-connected +typedef uint64 ControllerHandle_t; + + +// These handles are used to refer to a specific in-game action or action set +// All action handles should be queried during initialization for performance reasons +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; + +#pragma pack( push, 1 ) + +struct ControllerAnalogActionData_t +{ + // Type of data coming from this action, this will match what got specified in the action set + EControllerSourceMode eMode; + + // The current state of this action; will be delta updates for mouse actions + float x, y; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerDigitalActionData_t +{ + // The current state of this action; will be true if currently pressed + bool bState; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerMotionData_t +{ + // Sensor-fused absolute rotation; will drift in heading + float rotQuatX; + float rotQuatY; + float rotQuatZ; + float rotQuatW; + + // Positional acceleration + float posAccelX; + float posAccelY; + float posAccelZ; + + // Angular velocity + float rotVelX; + float rotVelY; + float rotVelZ; +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Native Steam controller support API +//----------------------------------------------------------------------------- +class ISteamController +{ +public: + + // Init and Shutdown must be called when starting/ending use of this interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. + virtual void RunFrame() = 0; + + // Enumerate currently connected controllers + // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetConnectedControllers( ControllerHandle_t *handlesOut ) = 0; + + // Invokes the Steam overlay and brings up the binding screen + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; + + // ACTION SETS + // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; + + // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') + // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in + // your state loops, instead of trying to place it in all of your state transitions. + virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0; + virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0; + + // ACTIONS + // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of the supplied digital game action + virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0; + + // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) = 0; + + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of these supplied analog game action + virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0; + + // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles + virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) = 0; + + virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0; + + // Trigger a haptic pulse on a controller + virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + + // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. + // nFlags is currently unused and reserved for future use. + virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + + // Returns the associated gamepad index for the specified controller, if emulating a gamepad + virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; + + // Returns the associated controller handle for the specified emulated gamepad + virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; + + // Returns raw motion data from the specified controller + virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0; + + // Attempt to display origins of given action in the controller HUD, for the currently active action set + // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode + virtual bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; + virtual bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition ) = 0; +}; + +#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController004" + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/windows64/include/steam/isteamfriends.h b/lib/windows64/include/steam/isteamfriends.h new file mode 100644 index 0000000..8013356 --- /dev/null +++ b/lib/windows64/include/steam/isteamfriends.h @@ -0,0 +1,636 @@ +//====== Copyright (C) 1996-2008, Valve Corporation, All rights reserved. ===== +// +// Purpose: interface to both friends list data and general information about users +// +//============================================================================= + +#ifndef ISTEAMFRIENDS_H +#define ISTEAMFRIENDS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamclientpublic.h" + + +//----------------------------------------------------------------------------- +// Purpose: set of relationships to other users +//----------------------------------------------------------------------------- +enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, // was used by the original implementation of the facebook linking feature, but now unused. + + // keep this updated + k_EFriendRelationshipMax = 8, +}; + +// maximum length of friend group name (not including terminating nul!) +const int k_cchMaxFriendsGroupName = 64; + +// maximum number of groups a single user is allowed +const int k_cFriendsGroupLimit = 100; + +// friends group identifier type +typedef int16 FriendsGroupID_t; + +// invalid friends group identifier constant +const FriendsGroupID_t k_FriendsGroupID_Invalid = -1; + +const int k_cEnumerateFollowersMax = 50; + + +//----------------------------------------------------------------------------- +// Purpose: list of states a friend can be in +//----------------------------------------------------------------------------- +enum EPersonaState +{ + k_EPersonaStateOffline = 0, // friend is not currently logged on + k_EPersonaStateOnline = 1, // friend is logged on + k_EPersonaStateBusy = 2, // user is on, but busy + k_EPersonaStateAway = 3, // auto-away feature + k_EPersonaStateSnooze = 4, // auto-away for a long time + k_EPersonaStateLookingToTrade = 5, // Online, trading + k_EPersonaStateLookingToPlay = 6, // Online, wanting to play + k_EPersonaStateMax, +}; + + +//----------------------------------------------------------------------------- +// Purpose: flags for enumerating friends list, or quickly checking a the relationship between users +//----------------------------------------------------------------------------- +enum EFriendFlags +{ + k_EFriendFlagNone = 0x00, + k_EFriendFlagBlocked = 0x01, + k_EFriendFlagFriendshipRequested = 0x02, + k_EFriendFlagImmediate = 0x04, // "regular" friend + k_EFriendFlagClanMember = 0x08, + k_EFriendFlagOnGameServer = 0x10, + // k_EFriendFlagHasPlayedWith = 0x20, // not currently used + // k_EFriendFlagFriendOfFriend = 0x40, // not currently used + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + k_EFriendFlagSuggested = 0x800, + k_EFriendFlagChatMember = 0x1000, + k_EFriendFlagAll = 0xFFFF, +}; + + +// friend game played information +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct FriendGameInfo_t +{ + CGameID m_gameID; + uint32 m_unGameIP; + uint16 m_usGamePort; + uint16 m_usQueryPort; + CSteamID m_steamIDLobby; +}; +#pragma pack( pop ) + +// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. +// The UTF-8 version has to be very generous to accomodate characters that get large when encoded +// in UTF-8. +enum +{ + k_cchPersonaNameMax = 128, + k_cwchPersonaNameMax = 32, +}; + +//----------------------------------------------------------------------------- +// Purpose: user restriction flags +//----------------------------------------------------------------------------- +enum EUserRestriction +{ + k_nUserRestrictionNone = 0, // no known chat/content restriction + k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) + k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat + k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat + k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat + k_nUserRestrictionRating = 16, // user is too young according to rating in current region + k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) + k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) +}; + +//----------------------------------------------------------------------------- +// Purpose: information about user sessions +//----------------------------------------------------------------------------- +struct FriendSessionStateInfo_t +{ + uint32 m_uiOnlineSessionInstances; + uint8 m_uiPublishedToFriendsSessionInstance; +}; + + + +// size limit on chat room or member metadata +const uint32 k_cubChatMetadataMax = 8192; + +// size limits on Rich Presence data +enum { k_cchMaxRichPresenceKeys = 20 }; +enum { k_cchMaxRichPresenceKeyLength = 64 }; +enum { k_cchMaxRichPresenceValueLength = 256 }; + +// These values are passed as parameters to the store +enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +}; + +//----------------------------------------------------------------------------- +// Purpose: interface to accessing information about individual users, +// that can be a friend, in a group, on a game server or in a lobby with the local user +//----------------------------------------------------------------------------- +class ISteamFriends +{ +public: + // returns the local players name - guaranteed to not be NULL. + // this is the same name as on the users community profile page + // this is stored in UTF-8 format + // like all the other interface functions that return a char *, it's important that this pointer is not saved + // off; it will eventually be free'd or re-allocated + virtual const char *GetPersonaName() = 0; + + // Sets the player name, stores it on the server and publishes the changes to all friends who are online. + // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. + // + // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. + // + // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted + // to change the name back, in addition to the SetPersonaNameResponse_t callback. + CALL_RESULT( SetPersonaNameResponse_t ) + virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0; + + // gets the status of the current user + virtual EPersonaState GetPersonaState() = 0; + + // friend iteration + // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria + // then GetFriendByIndex() can then be used to return the id's of each of those users + virtual int GetFriendCount( int iFriendFlags ) = 0; + + // returns the steamID of a user + // iFriend is a index of range [0, GetFriendCount()) + // iFriendsFlags must be the same value as used in GetFriendCount() + // the returned CSteamID can then be used by all the functions below to access details about the user + virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0; + + // returns a relationship to a user + virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0; + + // returns the current status of the specified user + // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user + virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0; + + // returns the name another user - guaranteed to not be NULL. + // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user + // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously + // + virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0; + + // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details + virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0; + // accesses old friends names - returns an empty string when their are no more items in the history + virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0; + // friends steam level + virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0; + + // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. + virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0; + + // friend grouping (tag) apis + // returns the number of friends groups + virtual int GetFriendsGroupCount() = 0; + // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) + virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0; + // returns the name for the given friends group (NULL in the case of invalid friends group IDs) + virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0; + // returns the number of members in a given friends group + virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0; + // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid + virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0; + + // returns true if the specified user meets any of the criteria specified in iFriendFlags + // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values + virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0; + + // clan (group) iteration and access functions + virtual int GetClanCount() = 0; + virtual CSteamID GetClanByIndex( int iClan ) = 0; + virtual const char *GetClanName( CSteamID steamIDClan ) = 0; + virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; + // returns the most recent information we have about what's happening in a clan + virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; + // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + virtual SteamAPICall_t DownloadClanActivityCounts( ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; + + // iterators for getting users in a chat room, lobby, game server or clan + // note that large clans that cannot be iterated by the local user + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + // steamIDSource can be the steamID of a group, game server, lobby or chat room + virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0; + virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0; + + // returns true if the local user can see that steamIDUser is a member or in steamIDSource + virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0; + + // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) + virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0; + + // activates the game overlay, with an optional dialog to open + // valid options are "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements" + virtual void ActivateGameOverlay( const char *pchDialog ) = 0; + + // activates game overlay to a specific place + // valid options are + // "steamid" - opens the overlay web browser to the specified user or groups profile + // "chat" - opens a chat window to the specified user, or joins the group chat + // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API + // "stats" - opens the overlay web browser to the specified user's stats + // "achievements" - opens the overlay web browser to the specified user's achievements + // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend + // "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend + // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite + // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite + virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0; + + // activates game overlay web browser directly to the specified URL + // full address with protocol type is required, e.g. http://www.steamgames.com/ + virtual void ActivateGameOverlayToWebPage( const char *pchURL ) = 0; + + // activates game overlay to store page for app + virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0; + + // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is + // in game + virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0; + + // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. + virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0; + + // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again + virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0; + + // requests information about a user - persona name & avatar + // if bRequireNameOnly is set, then the avatar of a user isn't downloaded + // - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them + // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved + // if returns false, it means that we already have all the details about that user, and functions can be called immediately + virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; + + // requests information about a clan officer list + // when complete, data is returned in ClanOfficerListResponse_t call result + // this makes available the calls below + // you can only ask about clans that a user is a member of + // note that this won't download avatars automatically; if you get an officer, + // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar + CALL_RESULT( ClanOfficerListResponse_t ) + virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0; + + // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed + + // returns the steamID of the clan owner + virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0; + // returns the number of officers in a clan (including the owner) + virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0; + // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) + virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0; + // if current user is chat restricted, he can't send or receive any text/voice chat messages. + // the user can't see custom avatars. But the user can be online and send/recv game invites. + // a chat restricted user can't add friends or join any groups. + virtual uint32 GetUserRestrictions() = 0; + + // Rich Presence data is automatically shared between friends who are in the same game + // Each user has a set of Key/Value pairs + // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength + // There are two magic keys: + // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list + // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + // GetFriendRichPresence() returns an empty string "" if no value is set + // SetRichPresence() to a NULL or an empty string deletes the key + // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() + // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) + virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0; + virtual void ClearRichPresence() = 0; + virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0; + virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0; + virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0; + // Requests rich presence for a specific user. + virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0; + + // rich invite support + // if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game + // if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string + // invites can only be sent to friends + virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; + + // recently-played-with friends iteration + // this iterates the entire list of users recently played with, across games + // GetFriendCoplayTime() returns as a unix time + virtual int GetCoplayFriendCount() = 0; + virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0; + virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0; + virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0; + + // chat interface for games + // this allows in-game access to group (clan) chats from in the game + // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay + // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat + CALL_RESULT( JoinClanChatRoomCompletionResult_t ) + virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0; + virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0; + virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0; + virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0; + virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0; + virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, OUT_STRUCT() CSteamID *psteamidChatter ) = 0; + virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0; + + // interact with the Steam (game overlay / desktop) + virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + + // peer-to-peer chat interception + // this is so you can show P2P chats inline in the game + virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0; + virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0; + virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // following apis + CALL_RESULT( FriendsGetFollowerCount_t ) + virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0; + CALL_RESULT( FriendsIsFollowing_t ) + virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0; + CALL_RESULT( FriendsEnumerateFollowingList_t ) + virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0; +}; + +#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends015" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a friends' status changes +//----------------------------------------------------------------------------- +struct PersonaStateChange_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 4 }; + + uint64 m_ulSteamID; // steamID of the friend who changed + int m_nChangeFlags; // what's changed +}; + + +// used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user +// these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend +enum EPersonaChange +{ + k_EPersonaChangeName = 0x0001, + k_EPersonaChangeStatus = 0x0002, + k_EPersonaChangeComeOnline = 0x0004, + k_EPersonaChangeGoneOffline = 0x0008, + k_EPersonaChangeGamePlayed = 0x0010, + k_EPersonaChangeGameServer = 0x0020, + k_EPersonaChangeAvatar = 0x0040, + k_EPersonaChangeJoinedSource= 0x0080, + k_EPersonaChangeLeftSource = 0x0100, + k_EPersonaChangeRelationshipChanged = 0x0200, + k_EPersonaChangeNameFirstSet = 0x0400, + k_EPersonaChangeFacebookInfo = 0x0800, + k_EPersonaChangeNickname = 0x1000, + k_EPersonaChangeSteamLevel = 0x2000, +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted when game overlay activates or deactivates +// the game can use this to be pause or resume single player games +//----------------------------------------------------------------------------- +struct GameOverlayActivated_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; + uint8 m_bActive; // true if it's just been activated, false otherwise +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a different game server from their friends list +// game client should attempt to connect to specified server when this is received +//----------------------------------------------------------------------------- +struct GameServerChangeRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 32 }; + char m_rgchServer[64]; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") + char m_rgchPassword[64]; // server password, if any +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a lobby from their friends list +// game client should attempt to connect to specified lobby when this is received +//----------------------------------------------------------------------------- +struct GameLobbyJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 33 }; + CSteamID m_steamIDLobby; + + // The friend they did the join via (will be invalid if not directly via a friend) + // + // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but + // the account type will be console user so you can tell at least that this was from a PSN friend + // rather than a Steam friend. + CSteamID m_steamIDFriend; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call +// if the image wasn't already available +//----------------------------------------------------------------------------- +struct AvatarImageLoaded_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 34 }; + CSteamID m_steamID; // steamid the avatar has been loaded for + int m_iImage; // the image index of the now loaded image + int m_iWide; // width of the loaded image + int m_iTall; // height of the loaded image +}; + + +//----------------------------------------------------------------------------- +// Purpose: marks the return of a request officer list call +//----------------------------------------------------------------------------- +struct ClanOfficerListResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 35 }; + CSteamID m_steamIDClan; + int m_cOfficers; + uint8 m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating updated data about friends rich presence information +//----------------------------------------------------------------------------- +struct FriendRichPresenceUpdate_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 36 }; + CSteamID m_steamIDFriend; // friend who's rich presence has changed + AppId_t m_nAppID; // the appID of the game (should always be the current game) +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a game from their friends list +// rich presence will have been set with the "connect" key which is set here +//----------------------------------------------------------------------------- +struct GameRichPresenceJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 37 }; + CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) + char m_rgchConnect[k_cchMaxRichPresenceValueLength]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received for a clan chat the game has joined +//----------------------------------------------------------------------------- +struct GameConnectedClanChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 38 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has joined a clan chat +//----------------------------------------------------------------------------- +struct GameConnectedChatJoin_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 39 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has left the chat we're in +//----------------------------------------------------------------------------- +struct GameConnectedChatLeave_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 40 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + bool m_bKicked; // true if admin kicked + bool m_bDropped; // true if Steam connection dropped +}; + + +//----------------------------------------------------------------------------- +// Purpose: a DownloadClanActivityCounts() call has finished +//----------------------------------------------------------------------------- +struct DownloadClanActivityCountsResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 41 }; + bool m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a JoinClanChatRoom() call has finished +//----------------------------------------------------------------------------- +struct JoinClanChatRoomCompletionResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 42 }; + CSteamID m_steamIDClanChat; + EChatRoomEnterResponse m_eChatRoomEnterResponse; +}; + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received from a user +//----------------------------------------------------------------------------- +struct GameConnectedFriendChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 43 }; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +struct FriendsGetFollowerCount_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 44 }; + EResult m_eResult; + CSteamID m_steamID; + int m_nCount; +}; + + +struct FriendsIsFollowing_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 45 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bIsFollowing; +}; + + +struct FriendsEnumerateFollowingList_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 46 }; + EResult m_eResult; + CSteamID m_rgSteamID[ k_cEnumerateFollowersMax ]; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; +}; + +//----------------------------------------------------------------------------- +// Purpose: reports the result of an attempt to change the user's persona name +//----------------------------------------------------------------------------- +struct SetPersonaNameResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 47 }; + + bool m_bSuccess; // true if name change succeeded completely. + bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) + EResult m_result; // detailed result code +}; + + +#pragma pack( pop ) + +#endif // ISTEAMFRIENDS_H diff --git a/lib/windows64/include/steam/isteamgamecoordinator.h b/lib/windows64/include/steam/isteamgamecoordinator.h new file mode 100644 index 0000000..5ab0637 --- /dev/null +++ b/lib/windows64/include/steam/isteamgamecoordinator.h @@ -0,0 +1,75 @@ +//====== Copyright ©, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to the game coordinator for this application +// +//============================================================================= + +#ifndef ISTEAMGAMECOORDINATOR +#define ISTEAMGAMECOORDINATOR +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible return values from the ISteamGameCoordinator API +enum EGCResults +{ + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for sending and receiving messages from the Game Coordinator +// for this application +//----------------------------------------------------------------------------- +class ISteamGameCoordinator +{ +public: + + // sends a message to the Game Coordinator + virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0; + + // returns true if there is a message waiting from the game coordinator + virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0; + + // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or + // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. + // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned + // and the message remains at the head of the queue. + virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + +}; +#define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - A new message is available for reading from the message queue +struct GCMessageAvailable_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 }; + uint32 m_nMessageSize; +}; + +// callback notification - A message failed to make it to the GC. It may be down temporarily +struct GCMessageFailed_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMGAMECOORDINATOR diff --git a/lib/windows64/include/steam/isteamgameserver.h b/lib/windows64/include/steam/isteamgameserver.h new file mode 100644 index 0000000..e19f1dd --- /dev/null +++ b/lib/windows64/include/steam/isteamgameserver.h @@ -0,0 +1,387 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam for game servers +// +//============================================================================= + +#ifndef ISTEAMGAMESERVER_H +#define ISTEAMGAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServer +{ +public: + +// +// Basic server data. These properties, if set, must be set before before calling LogOn. They +// may not be changed after logged in. +// + + /// This is called by SteamGameServer_Init, and you will usually not need to call it directly + virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; + + /// Game product identifier. This is currently used by the master server for version checking purposes. + /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. + virtual void SetProduct( const char *pszProduct ) = 0; + + /// Description of the game. This is a required field and is displayed in the steam server browser....for now. + /// This is a required field, but it will go away eventually, as the data should be determined from the AppID. + virtual void SetGameDescription( const char *pszGameDescription ) = 0; + + /// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning + /// this application is the original game, not a mod. + /// + /// @see k_cbMaxGameServerGameDir + virtual void SetModDir( const char *pszModDir ) = 0; + + /// Is this is a dedicated server? The default value is false. + virtual void SetDedicatedServer( bool bDedicated ) = 0; + +// +// Login +// + + /// Begin process to login to a persistent game server account + /// + /// You need to register for callbacks to determine the result of this operation. + /// @see SteamServersConnected_t + /// @see SteamServerConnectFailure_t + /// @see SteamServersDisconnected_t + virtual void LogOn( const char *pszToken ) = 0; + + /// Login to a generic, anonymous account. + /// + /// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, + /// but this is no longer the case. + virtual void LogOnAnonymous() = 0; + + /// Begin process of logging game server out of steam + virtual void LogOff() = 0; + + // status functions + virtual bool BLoggedOn() = 0; + virtual bool BSecure() = 0; + virtual CSteamID GetSteamID() = 0; + + /// Returns true if the master server has requested a restart. + /// Only returns true once per request. + virtual bool WasRestartRequested() = 0; + +// +// Server state. These properties may be changed at any time. +// + + /// Max player count that will be reported to server browser and client queries + virtual void SetMaxPlayerCount( int cPlayersMax ) = 0; + + /// Number of bots. Default value is zero + virtual void SetBotPlayerCount( int cBotplayers ) = 0; + + /// Set the name of server as it will appear in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetServerName( const char *pszServerName ) = 0; + + /// Set name of map to report in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetMapName( const char *pszMapName ) = 0; + + /// Let people know if your server will require a password + virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; + + /// Spectator server. The default value is zero, meaning the service + /// is not used. + virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; + + /// Name of the spectator server. (Only used if spectator port is nonzero.) + /// + /// @see k_cbMaxGameServerMapName + virtual void SetSpectatorServerName( const char *pszSpectatorServerName ) = 0; + + /// Call this to clear the whole list of key/values that are sent in rules queries. + virtual void ClearAllKeyValues() = 0; + + /// Call this to add/update a key/value pair. + virtual void SetKeyValue( const char *pKey, const char *pValue ) = 0; + + /// Sets a string defining the "gametags" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// + /// @see k_cbMaxGameServerTags + virtual void SetGameTags( const char *pchGameTags ) = 0; + + /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// don't set this unless it actually changes, its only uploaded to the master once (when + /// acknowledged) + /// + /// @see k_cbMaxGameServerGameData + virtual void SetGameData( const char *pchGameData ) = 0; + + /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region + virtual void SetRegion( const char *pszRegion ) = 0; + +// +// Player list management / authentication +// + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + + // New auth system APIs - do not mix with the old auth system APIs. + // ---------------------------------------------------------------- + + // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t + // returns false if we're not connected to the steam servers and thus cannot ask + virtual bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) = 0; + + + // these two functions s are deprecated, and will not return results + // they will be removed in a future version of the SDK + virtual void GetGameplayStats( ) = 0; + CALL_RESULT( GSReputation_t ) + virtual SteamAPICall_t GetServerReputation() = 0; + + // Returns the public IP of the server according to Steam, useful when the server is + // behind NAT and you want to advertise its IP in a lobby for other clients to directly + // connect to + virtual uint32 GetPublicIP() = 0; + +// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own +// socket to talk to the master server on, it lets the game use its socket to forward messages +// back and forth. This prevents us from requiring server ops to open up yet another port +// in their firewalls. +// +// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + + // These are used when you've elected to multiplex the game server's UDP socket + // rather than having the master server updater use its own sockets. + // + // Source games use this to simplify the job of the server admins, so they + // don't have to open up more ports on their firewalls. + + // Call this when a packet that starts with 0xFFFFFFFF comes in. That means + // it's for us. + virtual bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort ) = 0; + + // AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. + // This gets a packet that the master server updater needs to send out on UDP. + // It returns the length of the packet it wants to send, or 0 if there are no more packets to send. + // Call this each frame until it returns 0. + virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; + +// +// Control heartbeats / advertisement with master server +// + + // Call this as often as you like to tell the master server updater whether or not + // you want it to be active (default: off). + virtual void EnableHeartbeats( bool bActive ) = 0; + + // You usually don't need to modify this. + // Pass -1 to use the default value for iHeartbeatInterval. + // Some mods change this. + virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; + + // Force a heartbeat to steam at the next opportunity + virtual void ForceHeartbeat() = 0; + + // associate this game server with this clan for the purposes of computing player compat + CALL_RESULT( AssociateWithClanResult_t ) + virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; + + // ask if any of the current players dont want to play with this new player - or vice versa + CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) + virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + +}; + +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer012" + +// game server flags +const uint32 k_unServerFlagNone = 0x00; +const uint32 k_unServerFlagActive = 0x01; // server has users playing +const uint32 k_unServerFlagSecure = 0x02; // server wants to be secure +const uint32 k_unServerFlagDedicated = 0x04; // server is dedicated +const uint32 k_unServerFlagLinux = 0x08; // linux build +const uint32 k_unServerFlagPassworded = 0x10; // password protected +const uint32 k_unServerFlagPrivate = 0x20; // server shouldn't list on master server and + // won't enforce authentication of users that connect to the server. + // Useful when you run a server where the clients may not + // be connected to the internet but you want them to play (i.e LANs) + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// client has been approved to connect to this game server +struct GSClientApprove_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 1 }; + CSteamID m_SteamID; // SteamID of approved player + CSteamID m_OwnerSteamID; // SteamID of original owner for game license +}; + + +// client has been denied to connection to this game server +struct GSClientDeny_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 2 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; + char m_rgchOptionalText[128]; +}; + + +// request the game server should kick the user +struct GSClientKick_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 3 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; +}; + +// NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, +// do not reuse them here. + + +// client achievement info +struct GSClientAchievementStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 6 }; + uint64 m_SteamID; + char m_pchAchievement[128]; + bool m_bUnlocked; +}; + +// received when the game server requests to be displayed as secure (VAC protected) +// m_bSecure is true if the game server should display itself as secure to users, false otherwise +struct GSPolicyResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 15 }; + uint8 m_bSecure; +}; + +// GS gameplay stats info +struct GSGameplayStats_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 7 }; + EResult m_eResult; // Result of the call + int32 m_nRank; // Overall rank of the server (0-based) + uint32 m_unTotalConnects; // Total number of clients who have ever connected to the server + uint32 m_unTotalMinutesPlayed; // Total number of minutes ever played on the server +}; + +// send as a reply to RequestUserGroupStatus() +struct GSClientGroupStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 8 }; + CSteamID m_SteamIDUser; + CSteamID m_SteamIDGroup; + bool m_bMember; + bool m_bOfficer; +}; + +// Sent as a reply to GetServerReputation() +struct GSReputation_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 9 }; + EResult m_eResult; // Result of the call; + uint32 m_unReputationScore; // The reputation score for the game server + bool m_bBanned; // True if the server is banned from the Steam + // master servers + + // The following members are only filled out if m_bBanned is true. They will all + // be set to zero otherwise. Master server bans are by IP so it is possible to be + // banned even when the score is good high if there is a bad server on another port. + // This information can be used to determine which server is bad. + + uint32 m_unBannedIP; // The IP of the banned server + uint16 m_usBannedPort; // The port of the banned server + uint64 m_ulBannedGameID; // The game ID the banned server is serving + uint32 m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) +}; + +// Sent as a reply to AssociateWithClan() +struct AssociateWithClanResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 10 }; + EResult m_eResult; // Result of the call; +}; + +// Sent as a reply to ComputeNewPlayerCompatibility() +struct ComputeNewPlayerCompatibilityResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 11 }; + EResult m_eResult; // Result of the call; + int m_cPlayersThatDontLikeCandidate; + int m_cPlayersThatCandidateDoesntLike; + int m_cClanPlayersThatDontLikeCandidate; + CSteamID m_SteamIDCandidate; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMGAMESERVER_H diff --git a/lib/windows64/include/steam/isteamgameserverstats.h b/lib/windows64/include/steam/isteamgameserverstats.h new file mode 100644 index 0000000..e7922c9 --- /dev/null +++ b/lib/windows64/include/steam/isteamgameserverstats.h @@ -0,0 +1,101 @@ +//====== Copyright © Valve Corporation, All rights reserved. ======= +// +// Purpose: interface for game servers to steam stats and achievements +// +//============================================================================= + +#ifndef ISTEAMGAMESERVERSTATS_H +#define ISTEAMGAMESERVERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServerStats +{ +public: + // downloads stats for the user + // returns a GSStatsReceived_t callback when completed + // if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats will only be auto-updated for clients playing on the server. For other + // users you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( GSStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + + // Set / update stats and achievements. + // Note: These updates will work only on stats game servers are allowed to edit and only for + // game servers that have been declared as officially controlled by the game creators. + // Set the IP range of your official servers on the Steamworks page + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; + virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + + // Store the current data on the server, will get a GSStatsStored_t callback when set. + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + CALL_RESULT( GSStatsStored_t ) + virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; +}; + +#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct GSStatsReceived_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct GSStatsStored_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; + EResult m_eResult; // success / error + CSteamID m_steamIDUser; // The user for whom the stats were stored +}; + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct GSStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + +#pragma pack( pop ) + + +#endif // ISTEAMGAMESERVERSTATS_H diff --git a/lib/windows64/include/steam/isteamhtmlsurface.h b/lib/windows64/include/steam/isteamhtmlsurface.h new file mode 100644 index 0000000..ccfc6af --- /dev/null +++ b/lib/windows64/include/steam/isteamhtmlsurface.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to display html pages in a texture +// +//============================================================================= + +#ifndef ISTEAMHTMLSURFACE_H +#define ISTEAMHTMLSURFACE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +typedef uint32 HHTMLBrowser; +const uint32 INVALID_HTMLBROWSER = 0; + +//----------------------------------------------------------------------------- +// Purpose: Functions for displaying HTML pages and interacting with them +//----------------------------------------------------------------------------- +class ISteamHTMLSurface +{ +public: + virtual ~ISteamHTMLSurface() {} + + // Must call init and shutdown when starting/ending use of the interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Create a browser object for display of a html page, when creation is complete the call handle + // will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. + // The user agent string is a substring to be added to the general user agent string so you can + // identify your client on web servers. + // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if + // you do not require this functionality. + // + // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, + // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS + // section of this interface (AllowStartRequest, etc) for more details. If you do + // not implement these callback handlers, the browser may appear to hang instead of + // navigating to new pages or triggering javascript popups. + // + CALL_RESULT( HTML_BrowserReady_t ) + virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; + + // Call this when you are done with a html surface, this lets us free the resources being used by it + virtual void RemoveBrowser( HHTMLBrowser unBrowserHandle ) = 0; + + // Navigate to this URL, results in a HTML_StartRequest_t as the request commences + virtual void LoadURL( HHTMLBrowser unBrowserHandle, const char *pchURL, const char *pchPostData ) = 0; + + // Tells the surface the size in pixels to display the surface + virtual void SetSize( HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ) = 0; + + // Stop the load of the current html page + virtual void StopLoad( HHTMLBrowser unBrowserHandle ) = 0; + // Reload (most likely from local cache) the current page + virtual void Reload( HHTMLBrowser unBrowserHandle ) = 0; + // navigate back in the page history + virtual void GoBack( HHTMLBrowser unBrowserHandle ) = 0; + // navigate forward in the page history + virtual void GoForward( HHTMLBrowser unBrowserHandle ) = 0; + + // add this header to any url requests from this browser + virtual void AddHeader( HHTMLBrowser unBrowserHandle, const char *pchKey, const char *pchValue ) = 0; + // run this javascript script in the currently loaded page + virtual void ExecuteJavascript( HHTMLBrowser unBrowserHandle, const char *pchScript ) = 0; + + enum EHTMLMouseButton + { + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, + }; + + // Mouse click and mouse movement commands + virtual void MouseUp( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDown( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDoubleClick( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + // x and y are relative to the HTML bounds + virtual void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + // nDelta is pixels of scroll + virtual void MouseWheel( HHTMLBrowser unBrowserHandle, int32 nDelta ) = 0; + + enum EMouseCursor + { + dc_user = 0, + dc_none, + dc_arrow, + dc_ibeam, + dc_hourglass, + dc_waitarrow, + dc_crosshair, + dc_up, + dc_sizenw, + dc_sizese, + dc_sizene, + dc_sizesw, + dc_sizew, + dc_sizee, + dc_sizen, + dc_sizes, + dc_sizewe, + dc_sizens, + dc_sizeall, + dc_no, + dc_hand, + dc_blank, // don't show any custom cursor, just use your default + dc_middle_pan, + dc_north_pan, + dc_north_east_pan, + dc_east_pan, + dc_south_east_pan, + dc_south_pan, + dc_south_west_pan, + dc_west_pan, + dc_north_west_pan, + dc_alias, + dc_cell, + dc_colresize, + dc_copycur, + dc_verticaltext, + dc_rowresize, + dc_zoomin, + dc_zoomout, + dc_help, + dc_custom, + + dc_last, // custom cursors start from this value and up + }; + + enum EHTMLKeyModifiers + { + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1 << 0, + k_eHTMLKeyModifier_CtrlDown = 1 << 1, + k_eHTMLKeyModifier_ShiftDown = 1 << 2, + }; + + // keyboard interactions, native keycode is the virtual key code value from your OS + virtual void KeyDown( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + virtual void KeyUp( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + // cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) + virtual void KeyChar( HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + + // programmatically scroll this many pixels on the page + virtual void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + virtual void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + + // tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things + virtual void SetKeyFocus( HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ) = 0; + + // open the current pages html code in the local editor of choice, used for debugging + virtual void ViewSource( HHTMLBrowser unBrowserHandle ) = 0; + // copy the currently selected text on the html page to the local clipboard + virtual void CopyToClipboard( HHTMLBrowser unBrowserHandle ) = 0; + // paste from the local clipboard to the current html page + virtual void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) = 0; + + // find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element + virtual void Find( HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse ) = 0; + // cancel a currently running find + virtual void StopFind( HHTMLBrowser unBrowserHandle ) = 0; + + // return details about the link at position x,y on the current page + virtual void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + + // set a webcookie for the hostname in question + virtual void SetCookie( const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath = "/", RTime32 nExpires = 0, bool bSecure = false, bool bHTTPOnly = false ) = 0; + + // Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) + virtual void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) = 0; + + // Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are + // more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, + // all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". + // When background mode is disabled, any video or audio objects with that property will resume with ".play()". + virtual void SetBackgroundMode( HHTMLBrowser unBrowserHandle, bool bBackgroundMode ) = 0; + + // CALLBACKS + // + // These set of functions are used as responses to callback requests + // + + // You MUST call this in response to a HTML_StartRequest_t callback + // Set bAllowed to true to allow this navigation, false to cancel it and stay + // on the current page. You can use this feature to limit the valid pages + // allowed in your HTML surface. + virtual void AllowStartRequest( HHTMLBrowser unBrowserHandle, bool bAllowed ) = 0; + + // You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback + // Set bResult to true for the OK option of a confirm, use false otherwise + virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; + + // You MUST call this in response to a HTML_FileOpenDialog_t callback + IGNOREATTR() + virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; +}; + +#define STEAMHTMLSURFACE_INTERFACE_VERSION "STEAMHTMLSURFACE_INTERFACE_VERSION_003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +//----------------------------------------------------------------------------- +// Purpose: The browser is ready for use +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_BrowserReady_t, k_iSteamHTMLSurfaceCallbacks + 1 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this browser is now fully created and ready to navigate to pages +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser has a pending paint +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_NeedsPaint_t, k_iSteamHTMLSurfaceCallbacks + 2) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint +CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called +CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture +CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture +CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update +CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update +CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update +CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update +CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered +CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered +CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages +END_DEFINE_CALLBACK_12() + + +//----------------------------------------------------------------------------- +// Purpose: The browser wanted to navigate to a new page +// NOTE - you MUST call AllowStartRequest in response to this callback +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_StartRequest_t, k_iSteamHTMLSurfaceCallbacks + 3) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface navigating +CALLBACK_MEMBER(1, const char *, pchURL) // the url they wish to navigate to +CALLBACK_MEMBER(2, const char *, pchTarget) // the html link target type (i.e _blank, _self, _parent, _top ) +CALLBACK_MEMBER(3, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER(4, bool, bIsRedirect) // true if this was a http/html redirect from the last load request +END_DEFINE_CALLBACK_5() + + +//----------------------------------------------------------------------------- +// Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK(HTML_CloseBrowser_t, k_iSteamHTMLSurfaceCallbacks + 4) +CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +//----------------------------------------------------------------------------- +// Purpose: the browser is navigating to a new url +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_URLChanged_t, k_iSteamHTMLSurfaceCallbacks + 5 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface navigating +CALLBACK_MEMBER( 1, const char *, pchURL ) // the url they wish to navigate to +CALLBACK_MEMBER( 2, const char *, pchPostData ) // any posted data for the request +CALLBACK_MEMBER( 3, bool, bIsRedirect ) // true if this was a http/html redirect from the last load request +CALLBACK_MEMBER( 4, const char *, pchPageTitle ) // the title of the page +CALLBACK_MEMBER( 5, bool, bNewNavigation ) // true if this was from a fresh tab and not a click on an existing page +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: A page is finished loading +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FinishedRequest_t, k_iSteamHTMLSurfaceCallbacks + 6 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +CALLBACK_MEMBER( 2, const char *, pchPageTitle ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a request to load this url in a new tab +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_OpenLinkInNewTab_t, k_iSteamHTMLSurfaceCallbacks + 7 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: the page has a new title now +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ChangedTitle_t, k_iSteamHTMLSurfaceCallbacks + 8 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: results from a search +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SearchResults_t, k_iSteamHTMLSurfaceCallbacks + 9 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unResults ) // +CALLBACK_MEMBER( 2, uint32, unCurrentMatch ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: page history status changed on the ability to go backwards and forward +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_CanGoBackAndForward_t, k_iSteamHTMLSurfaceCallbacks + 10 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, bool, bCanGoBack ) // +CALLBACK_MEMBER( 2, bool, bCanGoForward ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the horizontal scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HorizontalScroll_t, k_iSteamHTMLSurfaceCallbacks + 11 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool , bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the vertical scrollbar +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_VerticalScroll_t, k_iSteamHTMLSurfaceCallbacks + 12 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +CALLBACK_MEMBER( 3, float, flPageScale ) // +CALLBACK_MEMBER( 4, bool, bVisible ) // +CALLBACK_MEMBER( 5, uint32, unPageSize ) // +END_DEFINE_CALLBACK_6() + + +//----------------------------------------------------------------------------- +// Purpose: response to GetLinkAtPosition call +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_LinkAtPosition_t, k_iSteamHTMLSurfaceCallbacks + 13 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, x ) // NOTE - Not currently set +CALLBACK_MEMBER( 2, uint32, y ) // NOTE - Not currently set +CALLBACK_MEMBER( 3, const char *, pchURL ) // +CALLBACK_MEMBER( 4, bool, bInput ) // +CALLBACK_MEMBER( 5, bool, bLiveLink ) // +END_DEFINE_CALLBACK_6() + + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript alert dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSAlert_t, k_iSteamHTMLSurfaceCallbacks + 14 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript confirmation dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_JSConfirm_t, k_iSteamHTMLSurfaceCallbacks + 15 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMessage ) // +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: when received show a file open dialog +// then call FileLoadDialogResponse with the file(s) the user selected. +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_FileOpenDialog_t, k_iSteamHTMLSurfaceCallbacks + 16 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchTitle ) // +CALLBACK_MEMBER( 2, const char *, pchInitialFile ) // +END_DEFINE_CALLBACK_3() + + +//----------------------------------------------------------------------------- +// Purpose: a new html window has been created +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_NewWindow_t, k_iSteamHTMLSurfaceCallbacks + 21 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the current surface +CALLBACK_MEMBER( 1, const char *, pchURL ) // the page to load +CALLBACK_MEMBER( 2, uint32, unX ) // the x pos into the page to display the popup +CALLBACK_MEMBER( 3, uint32, unY ) // the y pos into the page to display the popup +CALLBACK_MEMBER( 4, uint32, unWide ) // the total width of the pBGRA texture +CALLBACK_MEMBER( 5, uint32, unTall ) // the total height of the pBGRA texture +CALLBACK_MEMBER( 6, HHTMLBrowser, unNewWindow_BrowserHandle ) // the handle of the new window surface +END_DEFINE_CALLBACK_7() + + +//----------------------------------------------------------------------------- +// Purpose: change the cursor to display +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: informational message from the browser +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: show a tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: update the text of an existing tooltip +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +END_DEFINE_CALLBACK_2() + + +//----------------------------------------------------------------------------- +// Purpose: hide the tooltip you are showing +//----------------------------------------------------------------------------- +DEFINE_CALLBACK( HTML_HideToolTip_t, k_iSteamHTMLSurfaceCallbacks + 26 ) +CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMHTMLSURFACE_H diff --git a/lib/windows64/include/steam/isteamhttp.h b/lib/windows64/include/steam/isteamhttp.h new file mode 100644 index 0000000..8fab537 --- /dev/null +++ b/lib/windows64/include/steam/isteamhttp.h @@ -0,0 +1,210 @@ +//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to http client +// +//============================================================================= + +#ifndef ISTEAMHTTP_H +#define ISTEAMHTTP_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "steamhttpenums.h" + +// Handle to a HTTP Request handle +typedef uint32 HTTPRequestHandle; +#define INVALID_HTTPREQUEST_HANDLE 0 + +typedef uint32 HTTPCookieContainerHandle; +#define INVALID_HTTPCOOKIE_HANDLE 0 + +//----------------------------------------------------------------------------- +// Purpose: interface to http client +//----------------------------------------------------------------------------- +class ISteamHTTP +{ +public: + + // Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + // the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + // so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + // or such. + virtual HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL ) = 0; + + // Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + // sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + virtual bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue ) = 0; + + // Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + // timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + // has already been sent. + virtual bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ) = 0; + + // Set a request header value for the request, must be called prior to sending the request. Will + // return false if the handle is invalid or the request is already sent. + virtual bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue ) = 0; + + // Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + // when creating the request. Must be called prior to sending the request. Will return false if the + // handle is invalid or the request is already sent. + virtual bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback. + // + // Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + // header and only do a local cache lookup rather than sending any actual remote request. + virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + // HTTPRequestDataReceived_t callbacks while streaming. + virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + // returns the size of the header value if present so the caller and allocate a correctly sized buffer for + // GetHTTPResponseHeaderValue. + virtual bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize ) = 0; + + // Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // header is not present or if your buffer is too small to contain it's value. You should first call + // BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + virtual bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize ) = 0; + + // Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid. + virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0; + + // Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + // the correct buffer size to use. + virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + // handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + // do not match the size and offset sent in HTTPRequestDataReceived_t. + virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + // callback and finishing using the response. + virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Gets progress on downloading the body for the request. This will be zero unless a response header has already been + // received which included a content-length field. For responses that contain no content-length it will report + // zero for the duration of the request as the size is unknown until the connection closes. + virtual bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut ) = 0; + + // Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + // have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + // parameter will set the content-type header for the request so the server may know how to interpret the body. + virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0; + + // Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + // than any response to your requests using this cookie container may add new cookies which may be transmitted with + // future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + // during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + // repeat executions of your process. + virtual HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify ) = 0; + + // Release a cookie container you are finished using, freeing it's memory + virtual bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Adds a cookie to the specified cookie container that will be used with future requests. + virtual bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie ) = 0; + + // Set the cookie container to use for a HTTP request + virtual bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + virtual bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo ) = 0; + + // Set that https request should require verified SSL certificate via machines certificate trust store + virtual bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ) = 0; + + // Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + // which can bump everytime we get more data + virtual bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds ) = 0; + + // Check if the reason the request failed was because we timed it out (rather than some harder failure) + virtual bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut ) = 0; +}; + +#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION002" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct HTTPRequestCompleted_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + + // Handle value for the request that has completed. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + // This will be true if we actually got any sort of response from the server (even an error). + // It will be false if we failed due to an internal error or client side network failure. + bool m_bRequestSuccessful; + + // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal + // OK response, if you get something else you probably need to treat it as a failure. + EHTTPStatusCode m_eStatusCode; + + uint32 m_unBodySize; // Same as GetHTTPResponseBodySize() +}; + + +struct HTTPRequestHeadersReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + + // Handle value for the request that has received headers. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; +}; + +struct HTTPRequestDataReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + + // Handle value for the request that has received data. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + + // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cOffset; + + // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cBytesReceived; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMHTTP_H \ No newline at end of file diff --git a/lib/windows64/include/steam/isteaminventory.h b/lib/windows64/include/steam/isteaminventory.h new file mode 100644 index 0000000..5d236a5 --- /dev/null +++ b/lib/windows64/include/steam/isteaminventory.h @@ -0,0 +1,357 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Inventory +// +//============================================================================= + +#ifndef ISTEAMINVENTORY_H +#define ISTEAMINVENTORY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +// Every individual instance of an item has a globally-unique ItemInstanceID. +// This ID is unique to the combination of (player, specific item instance) +// and will not be transferred to another player or re-used for another item. +typedef uint64 SteamItemInstanceID_t; + +static const SteamItemInstanceID_t k_SteamItemInstanceIDInvalid = (SteamItemInstanceID_t)~0; + +// Types of items in your game are identified by a 32-bit "item definition number". +// Valid definition numbers are between 1 and 999999999; numbers less than or equal to +// zero are invalid, and numbers greater than or equal to one billion (1x10^9) are +// reserved for internal Steam use. +typedef int32 SteamItemDef_t; + + +enum ESteamItemFlags +{ + // Item status flags - these flags are permanently attached to specific item instances + k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. + + // Action confirmation flags - these flags are set one time only, as part of a result set + k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated + k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. + + // All other flag bits are currently reserved for internal Steam use at this time. + // Do not assume anything about the state of other flags which are not defined here. +}; + +struct SteamItemDetails_t +{ + SteamItemInstanceID_t m_itemId; + SteamItemDef_t m_iDefinition; + uint16 m_unQuantity; + uint16 m_unFlags; // see ESteamItemFlags +}; + +typedef int32 SteamInventoryResult_t; + +static const SteamInventoryResult_t k_SteamInventoryResultInvalid = -1; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Inventory query and manipulation API +//----------------------------------------------------------------------------- +class ISteamInventory +{ +public: + + // INVENTORY ASYNC RESULT MANAGEMENT + // + // Asynchronous inventory queries always output a result handle which can be used with + // GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + // be triggered when the asynchronous result becomes ready (or fails). + // + + // Find out the status of an asynchronous inventory result handle. Possible values: + // k_EResultPending - still in progress + // k_EResultOK - done, result ready + // k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + // k_EResultInvalidParam - ERROR: invalid API call parameters + // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + // k_EResultFail - ERROR: unknown / generic error + METHOD_DESC(Find out the status of an asynchronous inventory result handle.) + virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; + + // Copies the contents of a result set into a flat array. The specific + // contents of the result set depend on which query which was used. + METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) + virtual bool GetResultItems( SteamInventoryResult_t resultHandle, + OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, + uint32 *punOutItemsArraySize ) = 0; + + // Returns the server time at which the result was generated. Compare against + // the value of IClientUtils::GetServerRealTime() to determine age. + METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) + virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; + + // Returns true if the result belongs to the target steam ID, false if the + // result does not. This is important when using DeserializeResult, to verify + // that a remote player is not pretending to have a different user's inventory. + METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) + virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; + + // Destroys a result handle and frees all associated memory. + METHOD_DESC(Destroys a result handle and frees all associated memory.) + virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; + + + // INVENTORY ASYNC QUERY + // + + // Captures the entire state of the current user's Steam inventory. + // You must call DestroyResult on this handle when you are done with it. + // Returns false and sets *pResultHandle to zero if inventory is unavailable. + // Note: calls to this function are subject to rate limits and may return + // cached results if called too frequently. It is suggested that you call + // this function only when you are about to display the user's full inventory, + // or if you expect that the inventory may have changed. + METHOD_DESC(Captures the entire state of the current users Steam inventory.) + virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; + + + // Captures the state of a subset of the current user's Steam inventory, + // identified by an array of item instance IDs. The results from this call + // can be serialized and passed to other players to "prove" that the current + // user owns specific items, without exposing the user's entire inventory. + // For example, you could call GetItemsByID with the IDs of the user's + // currently equipped cosmetic items and serialize this to a buffer, and + // then transmit this buffer to other players upon joining a game. + METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) + virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; + + + // RESULT SERIALIZATION AND AUTHENTICATION + // + // Serialized result sets contain a short signature which can't be forged + // or replayed across different game sessions. A result set can be serialized + // on the local client, transmitted to other players via your game networking, + // and deserialized by the remote players. This is a secure way of preventing + // hackers from lying about posessing rare/high-value items. + + // Serializes a result set with signature bytes to an output buffer. Pass + // NULL as an output buffer to get the required size via punOutBufferSize. + // The size of a serialized result depends on the number items which are being + // serialized. When securely transmitting items to other players, it is + // recommended to use "GetItemsByID" first to create a minimal result set. + // Results have a built-in timestamp which will be considered "expired" after + // an hour has elapsed. See DeserializeResult for expiration handling. + virtual bool SerializeResult( SteamInventoryResult_t resultHandle, OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize ) = 0; + + // Deserializes a result set and verifies the signature bytes. Returns false + // if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + // Otherwise returns true and then delivers error codes via GetResultStatus. + // + // The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + // be set to true by your game at this time. + // + // DeserializeResult has a potential soft-failure mode where the handle status + // is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + // The "expired" result could indicate that the data may be out of date - not + // just due to timed expiration (one hour), but also because one of the items + // in the result set may have been traded or consumed since the result set was + // generated. You could compare the timestamp from GetResultTimestamp() to + // ISteamUtils::GetServerRealTime() to determine how old the data is. You could + // simply ignore the "expired" result code and continue as normal, or you + // could challenge the player with expired data to send an updated result set. + virtual bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false ) = 0; + + + // INVENTORY ASYNC MODIFICATION + // + + // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + // notification with a matching nCallbackContext parameter. This API is insecure, and could + // be abused by hacked clients. It is, however, very useful as a development cheat or as + // a means of prototyping item-related features for your game. The use of GenerateItems can + // be restricted to certain item definitions or fully blocked via the Steamworks website. + // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + // describe the quantity of each item to generate. + virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; + + // GrantPromoItems() checks the list of promotional items for which the user may be eligible + // and grants the items (one time only). On success, the result set will include items which + // were granted, if any. If no items were granted because the user isn't eligible for any + // promotions, this is still considered a success. + METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) + virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; + + // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + // scanning for all eligible promotional items, the check is restricted to a single item + // definition or set of item definitions. This can be useful if your game has custom UI for + // showing a specific promo item to the user. + virtual bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef ) = 0; + virtual bool AddPromoItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength ) = 0; + + // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + // Not for the faint of heart - if your game implements item removal at all, a high-friction + // UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity + // can be NULL or else an array of the same length as pArrayItems which describe the quantity + // of each item to destroy. ConsumeItem can be restricted to certain item definitions or + // fully blocked via the Steamworks website to minimize support/abuse issues such as the + // clasic "my brother borrowed my laptop and deleted all of my rare items". + METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) + virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; + + // ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be + // used to implement crafting recipes or transmutations, or items which unpack themselves + // into other items. Like GenerateItems, this is a flexible and dangerous API which is + // meant for rapid prototyping. You can configure restrictions on ExchangeItems via the + // Steamworks website, such as limiting it to a whitelist of input/output combinations + // corresponding to recipes. + // (Note: although GenerateItems may be hard or impossible to use securely in your game, + // ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.) + virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, + ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, + ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; + + + // TransferItemQuantity() is intended for use with items which are "stackable" (can have + // quantity greater than one). It can be used to split a stack into two, or to transfer + // quantity from one stack into another stack of identical items. To split one stack into + // two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + virtual bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ) = 0; + + + // TIMED DROPS AND PLAYTIME CREDIT + // + + // Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when + // active gameplay begins, and at least once every two minutes afterwards. The backend + // performs its own time calculations, so the precise timing of the heartbeat is not + // critical as long as you send at least one heartbeat every two minutes. Calling the + // function more often than that is not harmful, it will simply have no effect. Note: + // players may be able to spoof this message by hacking their client, so you should not + // attempt to use this as a mechanism to restrict playtime credits. It is simply meant + // to distinguish between being in any kind of gameplay situation vs the main menu or + // a pre-game launcher window. (If you are stingy with handing out playtime credit, it + // will only encourage players to run bots or use mouse/kb event simulators.) + // + // Playtime credit accumulation can be capped on a daily or weekly basis through your + // Steamworks configuration. + // + METHOD_DESC(Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.) + virtual void SendItemDropHeartbeat() = 0; + + // Playtime credit must be consumed and turned into item drops by your game. Only item + // definitions which are marked as "playtime item generators" can be spawned. The call + // will return an empty result set if there is not enough playtime credit for a drop. + // Your game should call TriggerItemDrop at an appropriate time for the user to receive + // new items, such as between rounds or while the player is dead. Note that players who + // hack their clients could modify the value of "dropListDefinition", so do not use it + // to directly control rarity. It is primarily useful during testing and development, + // where you may wish to perform experiments with different types of drops. + METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) + virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; + + + // IN-GAME TRADING + // + // TradeItems() implements limited in-game trading of items, if you prefer not to use + // the overlay or an in-game web browser to perform Steam Trading through the website. + // You should implement a UI where both players can see and agree to a trade, and then + // each client should call TradeItems simultaneously (+/- 5 seconds) with matching + // (but reversed) parameters. The result is the same as if both players performed a + // Steam Trading transaction through the web. Each player will get an inventory result + // confirming the removal or quantity changes of the items given away, and the new + // item instance id numbers and quantities of the received items. + // (Note: new item instance IDs are generated whenever an item changes ownership.) + virtual bool TradeItems( SteamInventoryResult_t *pResultHandle, CSteamID steamIDTradePartner, + ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength, + ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength ) = 0; + + + // ITEM DEFINITIONS + // + // Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + // to a set of string properties. Some of these properties are required to display items + // on the Steam community web site. Other properties can be defined by applications. + // Use of these functions is optional; there is no reason to call LoadItemDefinitions + // if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + // weapon mod = 55) and does not allow for adding new item types without a client patch. + // + + // LoadItemDefinitions triggers the automatic load and refresh of item definitions. + // Every time new item definitions are available (eg, from the dynamic addition of new + // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + // callback will be fired. + METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) + virtual bool LoadItemDefinitions() = 0; + + // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + // defined via Steamworks configuration, and not necessarily contiguous integers). + // If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + // contain the total size necessary for a subsequent call. Otherwise, the call will + // return false if and only if there is not enough space in the output array. + virtual bool GetItemDefinitionIDs( + OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, + DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; + + // GetItemDefinitionProperty returns a string property from a given item definition. + // Note that some properties (for example, "name") may be localized and will depend + // on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, + OUT_STRING_COUNT(punValueBufferSizeOut) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; +}; + +#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V001" + + +// SteamInventoryResultReady_t callbacks are fired whenever asynchronous +// results transition from "Pending" to "OK" or an error state. There will +// always be exactly one callback per handle. +struct SteamInventoryResultReady_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + SteamInventoryResult_t m_handle; + EResult m_result; +}; + + +// SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems +// successfully returns a result which is newer / fresher than the last +// known result. (It will not trigger if the inventory hasn't changed, +// or if results from two overlapping calls are reversed in flight and +// the earlier result is already known to be stale/out-of-date.) +// The normal ResultReady callback will still be triggered immediately +// afterwards; this is an additional notification for your convenience. +struct SteamInventoryFullUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + SteamInventoryResult_t m_handle; +}; + + +// A SteamInventoryDefinitionUpdate_t callback is triggered whenever +// item definitions have been updated, which could be in response to +// LoadItemDefinitions() or any other async request which required +// a definition update in order to process results from the server. +struct SteamInventoryDefinitionUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMCONTROLLER_H diff --git a/lib/windows64/include/steam/isteammasterserverupdater.h b/lib/windows64/include/steam/isteammasterserverupdater.h new file mode 100644 index 0000000..4be0ca5 --- /dev/null +++ b/lib/windows64/include/steam/isteammasterserverupdater.h @@ -0,0 +1 @@ +#error "This file isn't used any more" diff --git a/lib/windows64/include/steam/isteammatchmaking.h b/lib/windows64/include/steam/isteammatchmaking.h new file mode 100644 index 0000000..837d98b --- /dev/null +++ b/lib/windows64/include/steam/isteammatchmaking.h @@ -0,0 +1,751 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing game server/client match making +// +//============================================================================= + +#ifndef ISTEAMMATCHMAKING +#define ISTEAMMATCHMAKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" +#include "matchmakingtypes.h" +#include "isteamclient.h" +#include "isteamfriends.h" + +// lobby type description +enum ELobbyType +{ + k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else + k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list + k_ELobbyTypePublic = 2, // visible for friends and in lobby list + k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends + // useful if you want a user in two lobbies, for example matching groups together + // a user can be in only one regular lobby, and up to two invisible lobbies +}; + +// lobby search filter tools +enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +}; + +// lobby search distance. Lobby results are sorted from closest to farthest. +enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned + k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions + k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe + k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) +}; + +// maximum number of characters a lobby metadata key can be +#define k_nMaxLobbyKeyLength 255 + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to favorites +// and to operate on game lobbies. +//----------------------------------------------------------------------------- +class ISteamMatchmaking +{ +public: + // game server favorites storage + // saves basic details about a multiplayer game server locally + + // returns the number of favorites servers the user has stored + virtual int GetFavoriteGameCount() = 0; + + // returns the details of the game server + // iGame is of range [0,GetFavoriteGameCount()) + // *pnIP, *pnConnPort are filled in the with IP:port of the game server + // *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections + // *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added + virtual bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer ) = 0; + + // adds the game server to the local list; updates the time played of the server if it already exists in the list + virtual int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ) = 0; + + // removes the game server from the local storage; returns true if one was removed + virtual bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ) = 0; + + /////// + // Game lobby functions + + // Get a list of relevant lobbies + // this is an asynchronous request + // results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found + // this will never return lobbies that are full + // to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call + // use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. + /* + class CMyLobbyListManager + { + CCallResult<CMyLobbyListManager, LobbyMatchList_t> m_CallResultLobbyMatchList; + void FindLobbies() + { + // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() + SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); + m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); + } + + void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) + { + // lobby list has be retrieved from Steam back-end, use results + } + } + */ + // + CALL_RESULT( LobbyMatchList_t ) + virtual SteamAPICall_t RequestLobbyList() = 0; + // filters for lobbies + // this needs to be called before RequestLobbyList() to take effect + // these are cleared on each call to RequestLobbyList() + virtual void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType ) = 0; + // numerical comparison + virtual void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ) = 0; + // returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence + virtual void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo ) = 0; + // returns only lobbies with the specified number of slots available + virtual void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) = 0; + // sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) + virtual void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter ) = 0; + // sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client + virtual void AddRequestLobbyListResultCountFilter( int cMaxResults ) = 0; + + virtual void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby ) = 0; + + // returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call + // should only be called after a LobbyMatchList_t callback is received + // iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) + // the returned CSteamID::IsValid() will be false if iLobby is out of range + virtual CSteamID GetLobbyByIndex( int iLobby ) = 0; + + // Create a lobby on the Steam servers. + // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID + // of the lobby will need to be communicated via game channels or via InviteUserToLobby() + // this is an asynchronous request + // results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + CALL_RESULT( LobbyCreated_t ) + virtual SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers ) = 0; + + // Joins an existing lobby + // this is an asynchronous request + // results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful + // lobby metadata is available to use immediately on this call completing + CALL_RESULT( LobbyEnter_t ) + virtual SteamAPICall_t JoinLobby( CSteamID steamIDLobby ) = 0; + + // Leave a lobby; this will take effect immediately on the client side + // other users in the lobby will be notified by a LobbyChatUpdate_t callback + virtual void LeaveLobby( CSteamID steamIDLobby ) = 0; + + // Invite another user to the lobby + // the target user will receive a LobbyInvite_t callback + // will return true if the invite is successfully sent, whether or not the target responds + // returns false if the local user is not connected to the Steam servers + // if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, + // or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> + virtual bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee ) = 0; + + // Lobby iteration, for viewing details of users in a lobby + // only accessible if the lobby user is a member of the specified lobby + // persona information for other lobby members (name, avatar, etc.) will be asynchronously received + // and accessible via ISteamFriends interface + + // returns the number of users in the specified lobby + virtual int GetNumLobbyMembers( CSteamID steamIDLobby ) = 0; + // returns the CSteamID of a user in the lobby + // iMember is of range [0,GetNumLobbyMembers()) + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + virtual CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ) = 0; + + // Get data associated with this lobby + // takes a simple key, and returns the string associated with it + // "" will be returned if no value is set, or if steamIDLobby is invalid + virtual const char *GetLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + // Sets a key/value pair in the lobby metadata + // each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data + // this can be used to set lobby names, map, etc. + // to reset a key, just set it to "" + // other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback + virtual bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // returns the number of metadata keys set on the specified lobby + virtual int GetLobbyDataCount( CSteamID steamIDLobby ) = 0; + + // returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) + virtual bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize ) = 0; + + // removes a metadata key from the lobby + virtual bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + + // Gets per-user metadata for someone in this lobby + virtual const char *GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey ) = 0; + // Sets per-user metadata (for the local user implicitly) + virtual void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // Broadcasts a chat message to the all the users in the lobby + // users in the lobby (including the local user) will receive a LobbyChatMsg_t callback + // returns true if the message is successfully sent + // pvMsgBody can be binary or text data, up to 4k + // if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator + virtual bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody ) = 0; + // Get a chat message as specified in a LobbyChatMsg_t callback + // iChatID is the LobbyChatMsg_t::m_iChatID value in the callback + // *pSteamIDUser is filled in with the CSteamID of the member + // *pvData is filled in with the message itself + // return value is the number of bytes written into the buffer + virtual int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, OUT_STRUCT() CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // Refreshes metadata for a lobby you're not necessarily in right now + // you never do this for lobbies you're a member of, only if your + // this will send down all the metadata associated with a lobby + // this is an asynchronous call + // returns false if the local user is not connected to the Steam servers + // results will be returned by a LobbyDataUpdate_t callback + // if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + virtual bool RequestLobbyData( CSteamID steamIDLobby ) = 0; + + // sets the game server associated with the lobby + // usually at this point, the users will join the specified game server + // either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect + virtual void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer ) = 0; + // returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist + virtual bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, OUT_STRUCT() CSteamID *psteamIDGameServer ) = 0; + + // set the limit on the # of users who can join the lobby + virtual bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers ) = 0; + // returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined + virtual int GetLobbyMemberLimit( CSteamID steamIDLobby ) = 0; + + // updates which type of lobby it is + // only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls + virtual bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType ) = 0; + + // sets whether or not a lobby is joinable - defaults to true for a new lobby + // if set to false, no user can join, even if they are a friend or have been invited + virtual bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable ) = 0; + + // returns the current lobby owner + // you must be a member of the lobby to access this + // there always one lobby owner - if the current owner leaves, another user will become the owner + // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner + virtual CSteamID GetLobbyOwner( CSteamID steamIDLobby ) = 0; + + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner ) = 0; + + // link two lobbies for the purposes of checking player compatibility + // you must be the lobby owner of both lobbies + virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0; + +#ifdef _PS3 + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; +#endif + CALL_BACK( LobbyChatUpdate_t ) +}; +#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" + + +//----------------------------------------------------------------------------- +// Callback interfaces for server list functions (see ISteamMatchmakingServers below) +// +// The idea here is that your game code implements objects that implement these +// interfaces to receive callback notifications after calling asynchronous functions +// inside the ISteamMatchmakingServers() interface below. +// +// This is different than normal Steam callback handling due to the potentially +// large size of server lists. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when requesting server list. +//----------------------------------------------------------------------------- +typedef void* HServerListRequest; + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after a server list refresh +// or an individual server update. +// +// Since you get these callbacks after requesting full list refreshes you will +// usually implement this interface inside an object like CServerBrowser. If that +// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() +// to cancel any in-progress queries so you don't get a callback into the destructed +// object and crash. +//----------------------------------------------------------------------------- +class ISteamMatchmakingServerListResponse +{ +public: + // Server has responded ok with updated data + virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0; + + // Server has failed to respond + virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0; + + // A list refresh you had initiated is now 100% completed + virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after pinging an individual server +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PingServer() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPingResponse +{ +public: + // Server has responded successfully and has updated data + virtual void ServerResponded( gameserveritem_t &server ) = 0; + + // Server failed to respond to the ping request + virtual void ServerFailedToRespond() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting details on +// who is playing on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPlayersResponse +{ +public: + // Got data on a new player on the server -- you'll get this callback once per player + // on the server which you have requested player data on. + virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; + + // The server failed to respond to the request for player details + virtual void PlayersFailedToRespond() = 0; + + // The server has finished responding to the player details request + // (ie, you won't get anymore AddPlayerToList callbacks) + virtual void PlayersRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting rules +// details on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->ServerRules() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingRulesResponse +{ +public: + // Got data on a rule on the server -- you'll get one of these per rule defined on + // the server you are querying + virtual void RulesResponded( const char *pchRule, const char *pchValue ) = 0; + + // The server failed to respond to the request for rule details + virtual void RulesFailedToRespond() = 0; + + // The server has finished responding to the rule details request + // (ie, you won't get anymore RulesResponded callbacks) + virtual void RulesRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when querying details on an individual server. +//----------------------------------------------------------------------------- +typedef int HServerQuery; +const int HSERVERQUERY_INVALID = 0xffffffff; + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to game lists and details +//----------------------------------------------------------------------------- +class ISteamMatchmakingServers +{ +public: + // Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. + // Each call allocates a new asynchronous request object. + // Request object must be released by calling ReleaseRequest( hServerListRequest ) + virtual HServerListRequest RequestInternetServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + + // Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. + // RefreshComplete callback is not posted when request is released. + virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0; + + /* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: + + "map" + - Server passes the filter if the server is playing the specified map. + "gamedataand" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedataor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedatanor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsand" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsnor" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "and" (x1 && x2 && ... && xn) + "or" (x1 || x2 || ... || xn) + "nand" !(x1 && x2 && ... && xn) + "nor" !(x1 || x2 || ... || xn) + - Performs Boolean operation on the following filters. The operand to this filter specifies + the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue + pairs must immediately follow, i.e. this is a prefix logical operator notation.) + In the simplest case where Boolean expressions are not nested, this is simply + the number of operands. + + For example, to match servers on a particular map or with a particular tag, would would + use these filters. + + ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) + "or", "2" + "map", "cp_dustbowl" + "gametagsand", "payload" + + If logical inputs are nested, then the operand specifies the size of the entire + "length" of its operands, not the number of immediate children. + + ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) + "or", "4" + "map", "cp_dustbowl" + "and", "2" + "gametagsand", "payload" + "gametagsnor", "payloadrace" + + Unary NOT can be achieved using either "nand" or "nor" with a single operand. + + "addr" + - Server passes the filter if the server's query address matches the specified IP or IP:port. + "gameaddr" + - Server passes the filter if the server's game address matches the specified IP or IP:port. + + The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t + + "dedicated" + - Server passes the filter if it passed true to SetDedicatedServer. + "secure" + - Server passes the filter if the server is VAC-enabled. + "notfull" + - Server passes the filter if the player count is less than the reported max player count. + "hasplayers" + - Server passes the filter if the player count is greater than zero. + "noplayers" + - Server passes the filter if it doesn't have any players. + "linux" + - Server passes the filter if it's a linux server + */ + + // Get details on a given server in the list, you can get the valid range of index + // values by calling GetServerCount(). You will also receive index values in + // ISteamMatchmakingServerListResponse::ServerResponded() callbacks + virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0; + + // Cancel an request which is operation on the given list type. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above list request calls. Not doing so may result in a crash when a callback + // occurs on the destructed object. + // Canceling a query does not release the allocated request handle. + // The request handle must be released using ReleaseRequest( hRequest ) + virtual void CancelQuery( HServerListRequest hRequest ) = 0; + + // Ping every server in your list again but don't update the list of servers + // Query callback installed when the server list was requested will be used + // again to post notifications and RefreshComplete, so the callback must remain + // valid until another RefreshComplete is called on it or the request + // is released with ReleaseRequest( hRequest ) + virtual void RefreshQuery( HServerListRequest hRequest ) = 0; + + // Returns true if the list is currently refreshing its server list + virtual bool IsRefreshing( HServerListRequest hRequest ) = 0; + + // How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 + virtual int GetServerCount( HServerListRequest hRequest ) = 0; + + // Refresh a single server inside of a query (rather than all the servers ) + virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0; + + + //----------------------------------------------------------------------------- + // Queries to individual servers directly via IP/Port + //----------------------------------------------------------------------------- + + // Request updated ping time and other details from a single server + virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; + + // Request the list of players currently playing on a server + virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; + + // Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) + virtual HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse ) = 0; + + // Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above calls to avoid crashing when callbacks occur. + virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0; +}; +#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002" + +// game server flags +const uint32 k_unFavoriteFlagNone = 0x00; +const uint32 k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list +const uint32 k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list + + +//----------------------------------------------------------------------------- +// Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 +//----------------------------------------------------------------------------- +enum EChatMemberStateChange +{ + // Specific to joining / leaving the chatroom + k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room + k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room + k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first + k_EChatMemberStateChangeKicked = 0x0008, // User kicked + k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned +}; + +// returns true of the flags indicate that a user has been removed from the chat +#define BChatMemberStateChangeRemoved( rgfChatMemberStateChangeFlags ) ( rgfChatMemberStateChangeFlags & ( k_EChatMemberStateChangeDisconnected | k_EChatMemberStateChangeLeft | k_EChatMemberStateChangeKicked | k_EChatMemberStateChangeBanned ) ) + + +//----------------------------------------------------------------------------- +// Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: a server was added/removed from the favorites list, you should refresh now +//----------------------------------------------------------------------------- +struct FavoritesListChanged_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 2 }; + uint32 m_nIP; // an IP of 0 means reload the whole list, any other value means just one server + uint32 m_nQueryPort; + uint32 m_nConnPort; + uint32 m_nAppID; + uint32 m_nFlags; + bool m_bAdd; // true if this is adding the entry, otherwise it is a remove + AccountID_t m_unAccountId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Someone has invited you to join a Lobby +// normally you don't need to do anything with this, since +// the Steam UI will also display a '<user> has invited you to the lobby, join?' dialog +// +// if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", +// or with the callback GameLobbyJoinRequested_t if they're already in-game +//----------------------------------------------------------------------------- +struct LobbyInvite_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 3 }; + + uint64 m_ulSteamIDUser; // Steam ID of the person making the invite + uint64 m_ulSteamIDLobby; // Steam ID of the Lobby + uint64 m_ulGameID; // GameID of the Lobby +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent on entering a lobby, or on failing to enter +// m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, +// or a higher value on failure (see enum EChatRoomEnterResponse) +//----------------------------------------------------------------------------- +struct LobbyEnter_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 4 }; + + uint64 m_ulSteamIDLobby; // SteamID of the Lobby you have entered + uint32 m_rgfChatPermissions; // Permissions of the current user + bool m_bLocked; // If true, then only invited users may join + uint32 m_EChatRoomEnterResponse; // EChatRoomEnterResponse +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby metadata has changed +// if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details +// if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata +//----------------------------------------------------------------------------- +struct LobbyDataUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 5 }; + + uint64 m_ulSteamIDLobby; // steamID of the Lobby + uint64 m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself + uint8 m_bSuccess; // true if we lobby data was successfully changed; + // will only be false if RequestLobbyData() was called on a lobby that no longer exists +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby chat room state has changed +// this is usually sent when a user has joined or left the lobby +//----------------------------------------------------------------------------- +struct LobbyChatUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 6 }; + + uint64 m_ulSteamIDLobby; // Lobby ID + uint64 m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient + uint64 m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) + // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick + uint32 m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values +}; + + +//----------------------------------------------------------------------------- +// Purpose: A chat message for this lobby has been sent +// use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message +//----------------------------------------------------------------------------- +struct LobbyChatMsg_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 7 }; + + uint64 m_ulSteamIDLobby; // the lobby id this is in + uint64 m_ulSteamIDUser; // steamID of the user who has sent this message + uint8 m_eChatEntryType; // type of message + uint32 m_iChatID; // index of the chat entry to lookup +}; + + +//----------------------------------------------------------------------------- +// Purpose: A game created a game for all the members of the lobby to join, +// as triggered by a SetLobbyGameServer() +// it's up to the individual clients to take action on this; the usual +// game behavior is to leave the lobby and connect to the specified game server +//----------------------------------------------------------------------------- +struct LobbyGameCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 9 }; + + uint64 m_ulSteamIDLobby; // the lobby we were in + uint64 m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members + uint32 m_unIP; // IP & Port of the game server (if any) + uint16 m_usPort; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Number of matching lobbies found +// iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 +//----------------------------------------------------------------------------- +struct LobbyMatchList_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 10 }; + uint32 m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted if a user is forcefully removed from a lobby +// can occur if a user loses connection to Steam +//----------------------------------------------------------------------------- +struct LobbyKicked_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 }; + uint64 m_ulSteamIDLobby; // Lobby + uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself + uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct LobbyCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 13 }; + + EResult m_eResult; // k_EResultOK - the lobby was successfully created + // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end + // k_EResultTimeout - you the message to the Steam servers, but it didn't respond + // k_EResultFail - the server responded, but with an unknown internal error + // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game + // k_EResultLimitExceeded - your game client has created too many lobbies + + uint64 m_ulSteamIDLobby; // chat room, zero if failed +}; + +// used by now obsolete RequestFriendsLobbiesResponse_t +// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 }; + + +//----------------------------------------------------------------------------- +// Purpose: Result of CheckForPSNGameBootInvite +// m_eResult == k_EResultOK on success +// at this point, the local user may not have finishing joining this lobby; +// game code should wait until the subsequent LobbyEnter_t callback is received +//----------------------------------------------------------------------------- +struct PSNGameBootInviteResult_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 }; + + bool m_bGameBootInviteExists; + CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct FavoritesListAccountsUpdated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 16 }; + + EResult m_eResult; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMMATCHMAKING diff --git a/lib/windows64/include/steam/isteammusic.h b/lib/windows64/include/steam/isteammusic.h new file mode 100644 index 0000000..779a4c2 --- /dev/null +++ b/lib/windows64/include/steam/isteammusic.h @@ -0,0 +1,67 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSIC_H +#define ISTEAMMUSIC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3 +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions to control music playback in the steam client +//----------------------------------------------------------------------------- +class ISteamMusic +{ +public: + virtual bool BIsEnabled() = 0; + virtual bool BIsPlaying() = 0; + + virtual AudioPlayback_Status GetPlaybackStatus() = 0; + + virtual void Play() = 0; + virtual void Pause() = 0; + virtual void PlayPrevious() = 0; + virtual void PlayNext() = 0; + + // volume is between 0.0 and 1.0 + virtual void SetVolume( float flVolume ) = 0; + virtual float GetVolume() = 0; + +}; + +#define STEAMMUSIC_INTERFACE_VERSION "STEAMMUSIC_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( PlaybackStatusHasChanged_t, k_iSteamMusicCallbacks + 1 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( VolumeHasChanged_t, k_iSteamMusicCallbacks + 2 ) + CALLBACK_MEMBER( 0, float, m_flNewVolume ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + +#endif // #define ISTEAMMUSIC_H diff --git a/lib/windows64/include/steam/isteammusicremote.h b/lib/windows64/include/steam/isteammusicremote.h new file mode 100644 index 0000000..ea29a7d --- /dev/null +++ b/lib/windows64/include/steam/isteammusicremote.h @@ -0,0 +1,129 @@ +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSICREMOTE_H +#define ISTEAMMUSICREMOTE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteammusic.h" + +#define k_SteamMusicNameMaxLength 255 +#define k_SteamMusicPNGMaxLength 65535 + + +class ISteamMusicRemote +{ +public: + // Service Definition + virtual bool RegisterSteamMusicRemote( const char *pchName ) = 0; + virtual bool DeregisterSteamMusicRemote() = 0; + virtual bool BIsCurrentMusicRemote() = 0; + virtual bool BActivationSuccess( bool bValue ) = 0; + + virtual bool SetDisplayName( const char *pchDisplayName ) = 0; + virtual bool SetPNGIcon_64x64( void *pvBuffer, uint32 cbBufferLength ) = 0; + + // Abilities for the user interface + virtual bool EnablePlayPrevious(bool bValue) = 0; + virtual bool EnablePlayNext( bool bValue ) = 0; + virtual bool EnableShuffled( bool bValue ) = 0; + virtual bool EnableLooped( bool bValue ) = 0; + virtual bool EnableQueue( bool bValue ) = 0; + virtual bool EnablePlaylists( bool bValue ) = 0; + + // Status + virtual bool UpdatePlaybackStatus( AudioPlayback_Status nStatus ) = 0; + virtual bool UpdateShuffled( bool bValue ) = 0; + virtual bool UpdateLooped( bool bValue ) = 0; + virtual bool UpdateVolume( float flValue ) = 0; // volume is between 0.0 and 1.0 + + // Current Entry + virtual bool CurrentEntryWillChange() = 0; + virtual bool CurrentEntryIsAvailable( bool bAvailable ) = 0; + virtual bool UpdateCurrentEntryText( const char *pchText ) = 0; + virtual bool UpdateCurrentEntryElapsedSeconds( int nValue ) = 0; + virtual bool UpdateCurrentEntryCoverArt( void *pvBuffer, uint32 cbBufferLength ) = 0; + virtual bool CurrentEntryDidChange() = 0; + + // Queue + virtual bool QueueWillChange() = 0; + virtual bool ResetQueueEntries() = 0; + virtual bool SetQueueEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentQueueEntry( int nID ) = 0; + virtual bool QueueDidChange() = 0; + + // Playlist + virtual bool PlaylistWillChange() = 0; + virtual bool ResetPlaylistEntries() = 0; + virtual bool SetPlaylistEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentPlaylistEntry( int nID ) = 0; + virtual bool PlaylistDidChange() = 0; +}; + +#define STEAMMUSICREMOTE_INTERFACE_VERSION "STEAMMUSICREMOTE_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +DEFINE_CALLBACK( MusicPlayerRemoteWillActivate_t, k_iSteamMusicRemoteCallbacks + 1) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteWillDeactivate_t, k_iSteamMusicRemoteCallbacks + 2 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerRemoteToFront_t, k_iSteamMusicRemoteCallbacks + 3 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWillQuit_t, k_iSteamMusicRemoteCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlay_t, k_iSteamMusicRemoteCallbacks + 5 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPause_t, k_iSteamMusicRemoteCallbacks + 6 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayPrevious_t, k_iSteamMusicRemoteCallbacks + 7 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsPlayNext_t, k_iSteamMusicRemoteCallbacks + 8 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( MusicPlayerWantsShuffled_t, k_iSteamMusicRemoteCallbacks + 9 ) + CALLBACK_MEMBER( 0, bool, m_bShuffled ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsLooped_t, k_iSteamMusicRemoteCallbacks + 10 ) + CALLBACK_MEMBER(0, bool, m_bLooped ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsVolume_t, k_iSteamMusicCallbacks + 11 ) + CALLBACK_MEMBER(0, float, m_flNewVolume) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsQueueEntry_t, k_iSteamMusicCallbacks + 12 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerSelectsPlaylistEntry_t, k_iSteamMusicCallbacks + 13 ) + CALLBACK_MEMBER(0, int, nID ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( MusicPlayerWantsPlayingRepeatStatus_t, k_iSteamMusicRemoteCallbacks + 14 ) + CALLBACK_MEMBER(0, int, m_nPlayingRepeatStatus ) +END_DEFINE_CALLBACK_1() + +#pragma pack( pop ) + + + +#endif // #define ISTEAMMUSICREMOTE_H diff --git a/lib/windows64/include/steam/isteamnetworking.h b/lib/windows64/include/steam/isteamnetworking.h new file mode 100644 index 0000000..8f70819 --- /dev/null +++ b/lib/windows64/include/steam/isteamnetworking.h @@ -0,0 +1,306 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing network connections between game clients & servers +// +//============================================================================= + +#ifndef ISTEAMNETWORKING +#define ISTEAMNETWORKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + + +// list of possible errors returned by SendP2PPacket() API +// these will be posted in the P2PSessionConnectFail_t callback +enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, // target is not running the same game + k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running + k_EP2PSessionErrorDestinationNotLoggedIn = 3, // target user isn't connected to Steam + k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() + // corporate firewalls can also block this (NAT traversal is not firewall traversal) + // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + k_EP2PSessionErrorMax = 5 +}; + +// SendP2PPacket() send types +// Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets +enum EP2PSend +{ + // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). + // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or + // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. + k_EP2PSendUnreliable = 0, + + // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first + // packet sent to a remote host almost guarantees the packet will be dropped. + // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets + k_EP2PSendUnreliableNoDelay = 1, + + // Reliable message send. Can send up to 1MB of data in a single message. + // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. + k_EP2PSendReliable = 2, + + // As above, but applies the Nagle algorithm to the send - sends will accumulate + // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). + // Useful if you want to send a set of smaller messages but have the coalesced into a single packet + // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then + // do a normal k_EP2PSendReliable to force all the buffered data to be sent. + k_EP2PSendReliableWithBuffering = 3, + +}; + + +// connection state to a specified user, returned by GetP2PSessionState() +// this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct P2PSessionState_t +{ + uint8 m_bConnectionActive; // true if we've got an active open connection + uint8 m_bConnecting; // true if we're currently trying to establish a connection + uint8 m_eP2PSessionError; // last error recorded (see enum above) + uint8 m_bUsingRelay; // true if it's going through a relay server (TURN) + int32 m_nBytesQueuedForSend; + int32 m_nPacketsQueuedForSend; + uint32 m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. + uint16 m_nRemotePort; // Only exists for compatibility with older authentication api's +}; +#pragma pack( pop ) + + +// handle to a socket +typedef uint32 SNetSocket_t; // CreateP2PConnectionSocket() +typedef uint32 SNetListenSocket_t; // CreateListenSocket() + +// connection progress indicators, used by CreateP2PConnectionSocket() +enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + + // communication is valid + k_ESNetSocketStateConnected = 1, + + // states while establishing a connection + k_ESNetSocketStateInitiated = 10, // the connection state machine has started + + // p2p connections + k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info + k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info + + // direct connections + k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server + + // failure states + k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end + k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown + k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection + k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us + k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke + +}; + +// describes how the socket is currently connected +enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for making connections and sending data between clients, +// traversing NAT's where possible +//----------------------------------------------------------------------------- +class ISteamNetworking +{ +public: + //////////////////////////////////////////////////////////////////////////////////////////// + // Session-less connection functions + // automatically establishes NAT-traversing or Relay server connections + + // Sends a P2P packet to the specified user + // UDP-like, unreliable and a max packet size of 1200 bytes + // the first packet send may be delayed as the NAT-traversal code runs + // if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + // see EP2PSend enum above for the descriptions of the different ways of sending packets + // + // nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + // with the same channel number in order to retrieve the data on the other end + // using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + virtual bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 ) = 0; + + // returns true if any data is available for read, and the amount of data that will need to be read + virtual bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 ) = 0; + + // reads in a packet that has been sent from another user via SendP2PPacket() + // returns the size of the message and the steamID of the user who sent it in the last two parameters + // if the buffer passed in is too small, the message will be truncated + // this call is not blocking, and will return false if no data is available + virtual bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 ) = 0; + + // AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + // P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + // if you don't want to talk to the user, just ignore the request + // if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + // this may be called multiple times for a single user + // (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + virtual bool AcceptP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + // if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + virtual bool CloseP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + // open channels to a user have been closed, the open session to the user will be closed and new data from this + // user will trigger a P2PSessionRequest_t callback + virtual bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel ) = 0; + + // fills out P2PSessionState_t structure with details about the underlying connection to the user + // should only needed for debugging purposes + // returns false if no connection exists to the specified user + virtual bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState ) = 0; + + // Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + // or NAT-traversal cannot be established. Only applies to connections created after setting this value, + // or to existing connections that need to automatically reconnect after this value is set. + // + // P2P packet relay is allowed by default + virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; + + + //////////////////////////////////////////////////////////////////////////////////////////// + // LISTEN / CONNECT style interface functions + // + // This is an older set of functions designed around the Berkeley TCP sockets model + // it's preferential that you use the above P2P functions, they're more robust + // and these older functions will be removed eventually + // + //////////////////////////////////////////////////////////////////////////////////////////// + + + // creates a socket and listens others to connect + // will trigger a SocketStatusCallback_t callback on another client connecting + // nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + // this can usually just be 0 unless you want multiple sets of connections + // unIP is the local IP address to bind to + // pass in 0 if you just want the default local IP + // unPort is the port to use + // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; + + // creates a socket and begin connection to a remote destination + // can connect via a known steamID (client or game server), or directly to an IP + // on success will trigger a SocketStatusCallback_t callback + // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; + virtual SNetSocket_t CreateConnectionSocket( uint32 nIP, uint16 nPort, int nTimeoutSec ) = 0; + + // disconnects the connection to the socket, if any, and invalidates the handle + // any unread data on the socket will be thrown away + // if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + virtual bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + // destroying a listen socket will automatically kill all the regular sockets generated from it + virtual bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + + // sending data + // must be a handle to a connected socket + // data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + // use the reliable flag with caution; although the resend rate is pretty aggressive, + // it can still cause stalls in receiving data (like TCP) + virtual bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable ) = 0; + + // receiving data + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + virtual bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize ) = 0; + + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + virtual bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + + // checks for data from any socket that has been connected off this listen socket + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + // fills out *phSocket with the socket that data is available on + virtual bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // retrieves data from any socket that has been connected off this listen socket + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + // fills out *phSocket with the socket that data is available on + virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // returns information about the specified socket, filling out the contents of the pointers + virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, uint32 *punIPRemote, uint16 *punPortRemote ) = 0; + + // returns which local port the listen socket is bound to + // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, uint32 *pnIP, uint16 *pnPort ) = 0; + + // returns true to describe how the socket ended up connecting + virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; + + // max packet size, in bytes + virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; +}; +#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking005" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +// callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API +// in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them +struct P2PSessionRequest_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 2 }; + CSteamID m_steamIDRemote; // user who wants to talk to us +}; + + +// callback notification - packets can't get through to the specified user via the SendP2PPacket() API +// all packets queued packets unsent at this point will be dropped +// further attempts to send will retry making the connection (but will be dropped if we fail again) +struct P2PSessionConnectFail_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 3 }; + CSteamID m_steamIDRemote; // user we were sending packets to + uint8 m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble +}; + + +// callback notification - status of a socket has changed +// used as part of the CreateListenSocket() / CreateP2PConnectionSocket() +struct SocketStatusCallback_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 1 }; + SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host + SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection + CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one + int m_eSNetSocketState; // socket state, ESNetSocketState +}; + +#pragma pack( pop ) + +#endif // ISTEAMNETWORKING diff --git a/lib/windows64/include/steam/isteamps3overlayrenderer.h b/lib/windows64/include/steam/isteamps3overlayrenderer.h new file mode 100644 index 0000000..4e07d4a --- /dev/null +++ b/lib/windows64/include/steam/isteamps3overlayrenderer.h @@ -0,0 +1,91 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface the game must provide Steam with on PS3 in order for the +// Steam overlay to render. +// +//============================================================================= + +#ifndef ISTEAMPS3OVERLAYRENDERER_H +#define ISTEAMPS3OVERLAYRENDERER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cell/pad.h" + +//----------------------------------------------------------------------------- +// Purpose: Enum for supported gradient directions +//----------------------------------------------------------------------------- +enum EOverlayGradientDirection +{ + k_EOverlayGradientHorizontal = 1, + k_EOverlayGradientVertical = 2, + k_EOverlayGradientNone = 3, +}; + +// Helpers for fetching individual color components from ARGB packed DWORD colors Steam PS3 overlay renderer uses. +#define STEAM_COLOR_RED( color ) \ + (int)(((color)>>16)&0xff) + +#define STEAM_COLOR_GREEN( color ) \ + (int)(((color)>>8)&0xff) + +#define STEAM_COLOR_BLUE( color ) \ + (int)((color)&0xff) + +#define STEAM_COLOR_ALPHA( color ) \ + (int)(((color)>>24)&0xff) + + +//----------------------------------------------------------------------------- +// Purpose: Interface the game must expose to Steam for rendering +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRenderHost +{ +public: + + // Interface for game engine to implement which Steam requires to render. + + // Draw a textured rect. This may use only part of the texture and will pass texture coords, it will also possibly request a gradient and will specify colors for vertexes. + virtual void DrawTexturedRect( int x0, int y0, int x1, int y1, float u0, float v0, float u1, float v1, int32 iTextureID, DWORD colorStart, DWORD colorEnd, EOverlayGradientDirection eDirection ) = 0; + + // Load a RGBA texture for Steam, or update a previously loaded one. Updates may be partial. You must not evict or remove this texture once Steam has uploaded it. + virtual void LoadOrUpdateTexture( int32 iTextureID, bool bIsFullTexture, int x0, int y0, uint32 uWidth, uint32 uHeight, int32 iBytes, char *pData ) = 0; + + // Delete a texture Steam previously uploaded + virtual void DeleteTexture( int32 iTextureID ) = 0; + + // Delete all previously uploaded textures + virtual void DeleteAllTextures() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Interface Steam exposes for the game to tell it when to render, etc. +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRender +{ +public: + + // Call once at startup to initialize the Steam overlay and pass it your host interface ptr + virtual bool BHostInitialize( uint32 unScreenWidth, uint32 unScreenHeight, uint32 unRefreshRate, ISteamPS3OverlayRenderHost *pRenderHost, void *CellFontLib ) = 0; + + // Call this once a frame when you are ready for the Steam overlay to render (ie, right before flipping buffers, after all your rendering) + virtual void Render() = 0; + + // Call this everytime you read input on PS3. + // + // If this returns true, then the overlay is active and has consumed the input, your game + // should then ignore all the input until BHandleCellPadData once again returns false, which + // will mean the overlay is deactivated. + virtual bool BHandleCellPadData( const CellPadData &padData ) = 0; + + // Call this if you detect no controllers connected or that the XMB is intercepting input + // + // This is important to clear input state for the overlay, so keys left down during XMB activation + // are not continued to be processed. + virtual bool BResetInputState() = 0; +}; + + +#endif // ISTEAMPS3OVERLAYRENDERER_H \ No newline at end of file diff --git a/lib/windows64/include/steam/isteamremotestorage.h b/lib/windows64/include/steam/isteamremotestorage.h new file mode 100644 index 0000000..3ac2871 --- /dev/null +++ b/lib/windows64/include/steam/isteamremotestorage.h @@ -0,0 +1,681 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMREMOTESTORAGE_H +#define ISTEAMREMOTESTORAGE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +//----------------------------------------------------------------------------- +// Purpose: Defines the largest allowed file size. Cloud files cannot be written +// in a single chunk over 100MB (and cannot be over 200MB total.) +//----------------------------------------------------------------------------- +const uint32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + + +//----------------------------------------------------------------------------- +// Purpose: Structure that contains an array of const char * strings and the number of those strings +//----------------------------------------------------------------------------- +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct SteamParamStringArray_t +{ + const char ** m_ppStrings; + int32 m_nNumStrings; +}; +#pragma pack( pop ) + +// A handle to a piece of user generated content +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +const PublishedFileId_t k_PublishedFileIdInvalid = 0; +const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull; +const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull; + +// Handle for writing to Steam Cloud +typedef uint64 UGCFileWriteStreamHandle_t; +const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull; + +const uint32 k_cchPublishedDocumentTitleMax = 128 + 1; +const uint32 k_cchPublishedDocumentDescriptionMax = 8000; +const uint32 k_cchPublishedDocumentChangeDescriptionMax = 8000; +const uint32 k_unEnumeratePublishedFilesMaxResults = 50; +const uint32 k_cchTagListMax = 1024 + 1; +const uint32 k_cchFilenameMax = 260; +const uint32 k_cchPublishedFileURLMax = 256; + + +enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = (1 << 0), + k_ERemoteStoragePlatformOSX = (1 << 1), + k_ERemoteStoragePlatformPS3 = (1 << 2), + k_ERemoteStoragePlatformLinux = (1 << 3), + k_ERemoteStoragePlatformReserved2 = (1 << 4), + + k_ERemoteStoragePlatformAll = 0xffffffff +}; + +enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +}; + + +enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + + k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to + k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game + k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items + k_EWorkshopFileTypeArt = 3, // artwork + k_EWorkshopFileTypeVideo = 4, // external video + k_EWorkshopFileTypeScreenshot = 5, // screenshot + k_EWorkshopFileTypeGame = 6, // Greenlight game entry + k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry + k_EWorkshopFileTypeConcept = 8, // Greenlight concept + k_EWorkshopFileTypeWebGuide = 9, // Steam web guide + k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide + k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold + k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings + k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal + k_EWorkshopFileTypeSteamVideo = 14, // Steam video + k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + + // Update k_EWorkshopFileTypeMax if you add values. + k_EWorkshopFileTypeMax = 16 + +}; + +enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +}; + +enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +}; + +enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +}; + +enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1 +}; + + +enum EUGCReadAction +{ + // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. + // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. + // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. + k_EUGCRead_ContinueReadingUntilFinished = 0, + + // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. + // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. + k_EUGCRead_ContinueReading = 1, + + // Frees the file handle. Use this when you're done reading the content. + // To read the file from Steam again you will need to call UGCDownload again. + k_EUGCRead_Close = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing, reading and writing files stored remotely +// and cached locally +//----------------------------------------------------------------------------- +class ISteamRemoteStorage +{ + public: + // NOTE + // + // Filenames are case-insensitive, and will be converted to lowercase automatically. + // So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then + // iterate the files, the filename returned will be "foo.bar". + // + + // file operations + virtual bool FileWrite( const char *pchFile, const void *pvData, int32 cubData ) = 0; + virtual int32 FileRead( const char *pchFile, void *pvData, int32 cubDataToRead ) = 0; + + CALL_RESULT( RemoteStorageFileWriteAsyncComplete_t ) + virtual SteamAPICall_t FileWriteAsync( const char *pchFile, const void *pvData, uint32 cubData ) = 0; + + CALL_RESULT( RemoteStorageFileReadAsyncComplete_t ) + virtual SteamAPICall_t FileReadAsync( const char *pchFile, uint32 nOffset, uint32 cubToRead ) = 0; + virtual bool FileReadAsyncComplete( SteamAPICall_t hReadCall, void *pvBuffer, uint32 cubToRead ) = 0; + + virtual bool FileForget( const char *pchFile ) = 0; + virtual bool FileDelete( const char *pchFile ) = 0; + CALL_RESULT( RemoteStorageFileShareResult_t ) + virtual SteamAPICall_t FileShare( const char *pchFile ) = 0; + virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0; + + // file operations that cause network IO + virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0; + virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0; + virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0; + virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0; + + // file information + virtual bool FileExists( const char *pchFile ) = 0; + virtual bool FilePersisted( const char *pchFile ) = 0; + virtual int32 GetFileSize( const char *pchFile ) = 0; + virtual int64 GetFileTimestamp( const char *pchFile ) = 0; + virtual ERemoteStoragePlatform GetSyncPlatforms( const char *pchFile ) = 0; + + // iteration + virtual int32 GetFileCount() = 0; + virtual const char *GetFileNameAndSize( int iFile, int32 *pnFileSizeInBytes ) = 0; + + // configuration management + virtual bool GetQuota( uint64 *pnTotalBytes, uint64 *puAvailableBytes ) = 0; + virtual bool IsCloudEnabledForAccount() = 0; + virtual bool IsCloudEnabledForApp() = 0; + virtual void SetCloudEnabledForApp( bool bEnabled ) = 0; + + // user generated content + + // Downloads a UGC file. A priority value of 0 will download the file immediately, + // otherwise it will wait to download the file until all downloads with a lower priority + // value are completed. Downloads with equal priority will occur simultaneously. + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0; + + // Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false + // or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage + virtual bool GetUGCDownloadProgress( UGCHandle_t hContent, int32 *pnBytesDownloaded, int32 *pnBytesExpected ) = 0; + + // Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result + virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, OUT_STRING() char **ppchName, int32 *pnFileSizeInBytes, OUT_STRUCT() CSteamID *pSteamIDOwner ) = 0; + + // After download, gets the content of the file. + // Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. + // Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate + // enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail + // unless UGCDownload is called again. + // For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. + virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ) = 0; + + // Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() + virtual int32 GetCachedUGCCount() = 0; + virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; + + // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you + // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. + +#if defined(_PS3) || defined(_SERVER) + // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback + virtual void GetFileListFromServer() = 0; + // Indicate this file should be downloaded in the next sync + virtual bool FileFetch( const char *pchFile ) = 0; + // Indicate this file should be persisted in the next sync + virtual bool FilePersist( const char *pchFile ) = 0; + // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback + virtual bool SynchronizeToClient() = 0; + // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback + virtual bool SynchronizeToServer() = 0; + // Reset any fetch/persist/etc requests + virtual bool ResetFileRequestState() = 0; +#endif + + // publishing UGC + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; + virtual PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileFile( PublishedFileUpdateHandle_t updateHandle, const char *pchFile ) = 0; + virtual bool UpdatePublishedFilePreviewFile( PublishedFileUpdateHandle_t updateHandle, const char *pchPreviewFile ) = 0; + virtual bool UpdatePublishedFileTitle( PublishedFileUpdateHandle_t updateHandle, const char *pchTitle ) = 0; + virtual bool UpdatePublishedFileDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchDescription ) = 0; + virtual bool UpdatePublishedFileVisibility( PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; + virtual bool UpdatePublishedFileTags( PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageUpdatePublishedFileResult_t ) + virtual SteamAPICall_t CommitPublishedFileUpdate( PublishedFileUpdateHandle_t updateHandle ) = 0; + // Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, + // cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. + // A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. + CALL_RESULT( RemoteStorageGetPublishedFileDetailsResult_t ) + virtual SteamAPICall_t GetPublishedFileDetails( PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ) = 0; + CALL_RESULT( RemoteStorageDeletePublishedFileResult_t ) + virtual SteamAPICall_t DeletePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + // enumerate the files that the current user published with this app + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserPublishedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserSubscribedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSubscribedFiles( uint32 unStartIndex ) = 0; + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileSetChangeDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchChangeDescription ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageUpdateUserPublishedItemVoteResult_t ) + virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0; + CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0; + CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0; + CALL_RESULT( RemoteStorageSetUserPublishedFileActionResult_t ) + virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0; + CALL_RESULT( RemoteStorageEnumeratePublishedFilesByUserActionResult_t ) + virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0; + // this method enumerates the public view of workshop files + CALL_RESULT( RemoteStorageEnumerateWorkshopFilesResult_t ) + virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0; + + CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; +}; + +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: sent when the local file cache is fully synced with the server for an app +// That means that an application can be started and has all latest files +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedClient_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumDownloads; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent when the server is fully synced with the local file cache for an app +// That means that we can shutdown Steam and our data is stored on the server +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedServer_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumUploads; +}; + +//----------------------------------------------------------------------------- +// Purpose: Status of up and downloads during a sync session +// +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; + char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred + AppId_t m_nAppID; // App this info relates to + uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk + double m_dAppPercentComplete; // Percent complete that this app's transfers are + bool m_bUploading; // if false, downloading +}; + +// +// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h +// + + +//----------------------------------------------------------------------------- +// Purpose: Sent after we've determined the list of files that are out of sync +// with the server. +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncStatusCheck_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; + AppId_t m_nAppID; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to FileShare() +//----------------------------------------------------------------------------- +struct RemoteStorageFileShareResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + EResult m_eResult; // The result of the operation + UGCHandle_t m_hFile; // The handle that can be shared with users and features + char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared +}; + + +// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to PublishFile() +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to DeletePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageDeletePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateUserPublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageSubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateSubscribePublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +#if defined(VALVE_CALLBACK_PACK_SMALL) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 ); +#elif defined(VALVE_CALLBACK_PACK_LARGE) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 + 4 ); +#else +#warning You must first include isteamclient.h +#endif + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UnsubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageUnsubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to CommitPublishedFileUpdate() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdatePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UGCDownload() +//----------------------------------------------------------------------------- +struct RemoteStorageDownloadUGCResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + EResult m_eResult; // The result of the operation. + UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. + AppId_t m_nAppID; // ID of the app that created this file. + int32 m_nSizeInBytes; // The size of the file that was downloaded, in bytes. + char m_pchFileName[k_cchFilenameMax]; // The name of the file that was downloaded. + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetPublishedFileDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedFileDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + ERemoteStoragePublishedFileVisibility m_eVisibility; + bool m_bBanned; + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_pchFileName[k_cchFilenameMax]; // The name of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + EWorkshopFileType m_eFileType; // Type of the file + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop +}; + + +struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + EResult m_eResult; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ]; + AppId_t m_nAppId; + uint32 m_unStartIndex; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of GetPublishedItemVoteDetails +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + EResult m_eResult; + PublishedFileId_t m_unPublishedFileId; + int32 m_nVotesFor; + int32 m_nVotesAgainst; + int32 m_nReports; + float m_fScore; +}; + + +//----------------------------------------------------------------------------- +// Purpose: User subscribed to a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileSubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + +//----------------------------------------------------------------------------- +// Purpose: User unsubscribed from a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUnsubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Published file that a user owns was deleted (from within the app or the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileDeleted_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UpdateUserPublishedItemVote() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserPublishedItemVoteDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageUserVoteDetails_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopVote m_eVote; // what the user voted +}; + +struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +struct RemoteStorageSetUserPublishedFileActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopFileAction m_eAction; // the action that was attempted +}; + +struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + EResult m_eResult; // The result of the operation. + EWorkshopFileAction m_eAction; // the action that was filtered on + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called periodically while a PublishWorkshopFile is in progress +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + double m_dPercentFile; + bool m_bPreview; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called when the content for a published file is updated +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUpdated_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. + uint64 m_ulUnused; // not used anymore +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileWriteAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileWriteAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + EResult m_eResult; // result +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileReadAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileReadAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made + EResult m_eResult; // result + uint32 m_nOffset; // offset in the file this read was at + uint32 m_cubRead; // amount read - will the <= the amount requested +}; + +#pragma pack( pop ) + + +#endif // ISTEAMREMOTESTORAGE_H diff --git a/lib/windows64/include/steam/isteamscreenshots.h b/lib/windows64/include/steam/isteamscreenshots.h new file mode 100644 index 0000000..6095705 --- /dev/null +++ b/lib/windows64/include/steam/isteamscreenshots.h @@ -0,0 +1,116 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMSCREENSHOTS_H +#define ISTEAMSCREENSHOTS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +const uint32 k_nScreenshotMaxTaggedUsers = 32; +const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32; +const int k_cubUFSTagTypeMax = 255; +const int k_cubUFSTagValueMax = 255; + +// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail +// one will be generated. +const int k_ScreenshotThumbWidth = 200; + +// Handle is valid for the lifetime of your process and no longer +typedef uint32 ScreenshotHandle; +#define INVALID_SCREENSHOT_HANDLE 0 + +enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5 +}; + +//----------------------------------------------------------------------------- +// Purpose: Functions for adding screenshots to the user's screenshot library +//----------------------------------------------------------------------------- +class ISteamScreenshots +{ +public: + // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0; + + // Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio + // as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0; + + // Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. + virtual void TriggerScreenshot() = 0; + + // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, + // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary + // in response. + virtual void HookScreenshots( bool bHook ) = 0; + + // Sets metadata about a screenshot's location (for example, the name of the map) + virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0; + + // Tags a user as being visible in the screenshot + virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0; + + // Tags a published file as being visible in the screenshot + virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0; + + // Returns true if the app has hooked the screenshot + virtual bool IsScreenshotsHooked() = 0; + + // Adds a VR screenshot to the user's screenshot library from disk in the supported type. + // pchFilename should be the normal 2D image used in the library view + // pchVRFilename should contain the image that matches the correct type + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename ) = 0; +}; + +#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +//----------------------------------------------------------------------------- +// Purpose: Screenshot successfully written or otherwise added to the library +// and can now be tagged +//----------------------------------------------------------------------------- +struct ScreenshotReady_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 }; + ScreenshotHandle m_hLocal; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: Screenshot has been requested by the user. Only sent if +// HookScreenshots() has been called, in which case Steam will not take +// the screenshot itself. +//----------------------------------------------------------------------------- +struct ScreenshotRequested_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMSCREENSHOTS_H + diff --git a/lib/windows64/include/steam/isteamugc.h b/lib/windows64/include/steam/isteamugc.h new file mode 100644 index 0000000..1827fc6 --- /dev/null +++ b/lib/windows64/include/steam/isteamugc.h @@ -0,0 +1,453 @@ +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam ugc +// +//============================================================================= + +#ifndef ISTEAMUGC_H +#define ISTEAMUGC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; + + +const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; +const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; + + +// Matching UGC types for queries +enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) + k_EUGCMatchingUGCType_All = ~0, // return everything +}; + +// Different lists of published UGC for a user. +// If the current logged in user is different than the specified user, then some options may not be allowed. +enum EUserUGCList +{ + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, +}; + +// Sort order for user published UGC lists (defaults to creation order descending) +enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, +}; + +// Combination of sorting and filtering for queries across all UGC +enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +}; + +enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t + k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data + k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files + k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam + k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image + k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes +}; + +enum EItemState +{ + k_EItemStateNone = 0, // item not tracked on client + k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. + k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage + k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) + k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content + k_EItemStateDownloading = 16, // item update is currently downloading + k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired +}; + +enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +}; + +enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) + k_EItemPreviewType_YouTubeVideo = 1, // video id is stored + k_EItemPreviewType_Sketchfab = 2, // model id is stored + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout + // +---+---+-------+ + // | |Up | | + // +---+---+---+---+ + // | L | F | R | B | + // +---+---+---+---+ + // | |Dn | | + // +---+---+---+---+ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value +}; + +const uint32 kNumUGCResultsPerPage = 50; +const uint32 k_cchDeveloperMetadataMax = 5000; + +// Details for a single published file/UGC +struct SteamUGCDetails_t +{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; // The result of the operation. + EWorkshopFileType m_eFileType; // Type of the file + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + uint32 m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) + ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility + bool m_bBanned; // whether the file was banned + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + // file/url information + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + // voting information + uint32 m_unVotesUp; // number of votes up + uint32 m_unVotesDown; // number of votes down + float m_flScore; // calculated score + // collection details + uint32 m_unNumChildren; +}; + +//----------------------------------------------------------------------------- +// Purpose: Steam UGC support API +//----------------------------------------------------------------------------- +class ISteamUGC +{ +public: + + // Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + + // Send the query to Steam + CALL_RESULT( SteamUGCQueryCompleted_t ) + virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Retrieve an individual result after receiving the callback for querying UGC + virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; + virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; + virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; + virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; + virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0; + virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; + virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + + // Release the request to free up memory, after retrieving results + virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Options to set for querying UGC + virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; + virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; + virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0; + virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0; + virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; + virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; + virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; + virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; + virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; + + // Options only for querying user UGC + virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; + + // Options only for querying all UGC + virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; + virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; + virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; + + // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; + + // Steam Workshop Creator API + CALL_RESULT( CreateItemResult_t ) + virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet + + virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + + virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item + virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item + virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set + virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item + virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item + virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder + virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key + virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. + virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item + virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item + virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) + + CALL_RESULT( SubmitItemUpdateResult_t ) + virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() + virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0; + + // Steam Workshop Consumer API + CALL_RESULT( SetUserItemVoteResult_t ) + virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0; + CALL_RESULT( GetUserItemVoteResult_t ) + virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP + CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits + virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items + virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs + + // get EItemState flags about item on this client + virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0; + + // get info about currently installed content on disc for items that have k_EItemStateInstalled set + // if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0; + + // get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + // then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + // If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0; + + // game servers can set a specific workshop folder before issuing any UGC commands. + // This is helpful if you want to support multiple game servers running out of the same install folder + virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0; + + // SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends + virtual void SuspendDownloads( bool bSuspend ) = 0; + + // usage tracking + CALL_RESULT( StartPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + CALL_RESULT( StopPlaytimeTrackingResult_t ); + virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; +}; + +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION009" + +//----------------------------------------------------------------------------- +// Purpose: Callback for querying UGC +//----------------------------------------------------------------------------- +struct SteamUGCQueryCompleted_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + UGCQueryHandle_t m_handle; + EResult m_eResult; + uint32 m_unNumResultsReturned; + uint32 m_unTotalMatchingResults; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback for requesting details on one piece of UGC +//----------------------------------------------------------------------------- +struct SteamUGCRequestUGCDetailsResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + SteamUGCDetails_t m_details; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::CreateItem() +//----------------------------------------------------------------------------- +struct CreateItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::SubmitItemUpdate() +//----------------------------------------------------------------------------- +struct SubmitItemUpdateResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + EResult m_eResult; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a Workshop item has been installed or updated +//----------------------------------------------------------------------------- +struct ItemInstalled_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of DownloadItem(), existing item files can be accessed again +//----------------------------------------------------------------------------- +struct DownloadItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() +//----------------------------------------------------------------------------- +struct UserFavoriteItemsListChanged_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bWasAddRequest; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SetUserItemVote() +//----------------------------------------------------------------------------- +struct SetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVoteUp; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserItemVote() +//----------------------------------------------------------------------------- +struct GetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVotedUp; + bool m_bVotedDown; + bool m_bVoteSkipped; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StartPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StartPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StopPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StopPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + EResult m_eResult; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMUGC_H diff --git a/lib/windows64/include/steam/isteamunifiedmessages.h b/lib/windows64/include/steam/isteamunifiedmessages.h new file mode 100644 index 0000000..684f4e8 --- /dev/null +++ b/lib/windows64/include/steam/isteamunifiedmessages.h @@ -0,0 +1,63 @@ +//====== Copyright � 1996-2007, Valve Corporation, All rights reserved. ======= +// +// Purpose: Interface to unified messages client +// +// You should not need to use this interface except if your product is using a language other than C++. +// Contact your Steam Tech contact for more details. +// +//============================================================================= + +#ifndef ISTEAMUNIFIEDMESSAGES_H +#define ISTEAMUNIFIEDMESSAGES_H +#ifdef _WIN32 +#pragma once +#endif + +typedef uint64 ClientUnifiedMessageHandle; + +class ISteamUnifiedMessages +{ +public: + static const ClientUnifiedMessageHandle k_InvalidUnifiedMessageHandle = 0; + + // Sends a service method (in binary serialized form) using the Steam Client. + // Returns a unified message handle (k_InvalidUnifiedMessageHandle if could not send the message). + virtual ClientUnifiedMessageHandle SendMethod( const char *pchServiceMethod, const void *pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext ) = 0; + + // Gets the size of the response and the EResult. Returns false if the response is not ready yet. + virtual bool GetMethodResponseInfo( ClientUnifiedMessageHandle hHandle, uint32 *punResponseSize, EResult *peResult ) = 0; + + // Gets a response in binary serialized form (and optionally release the corresponding allocated memory). + virtual bool GetMethodResponseData( ClientUnifiedMessageHandle hHandle, void *pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease ) = 0; + + // Releases the message and its corresponding allocated memory. + virtual bool ReleaseMethod( ClientUnifiedMessageHandle hHandle ) = 0; + + // Sends a service notification (in binary serialized form) using the Steam Client. + // Returns true if the notification was sent successfully. + virtual bool SendNotification( const char *pchServiceNotification, const void *pNotificationBuffer, uint32 unNotificationBufferSize ) = 0; +}; + +#define STEAMUNIFIEDMESSAGES_INTERFACE_VERSION "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct SteamUnifiedMessagesSendMethodResult_t +{ + enum { k_iCallback = k_iClientUnifiedMessagesCallbacks + 1 }; + ClientUnifiedMessageHandle m_hHandle; // The handle returned by SendMethod(). + uint64 m_unContext; // Context provided when calling SendMethod(). + EResult m_eResult; // The result of the method call. + uint32 m_unResponseSize; // The size of the response. +}; + +#pragma pack( pop ) + +#endif // ISTEAMUNIFIEDMESSAGES_H diff --git a/lib/windows64/include/steam/isteamuser.h b/lib/windows64/include/steam/isteamuser.h new file mode 100644 index 0000000..f97a057 --- /dev/null +++ b/lib/windows64/include/steam/isteamuser.h @@ -0,0 +1,355 @@ +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to user account information in Steam +// +//============================================================================= + +#ifndef ISTEAMUSER_H +#define ISTEAMUSER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// structure that contains client callback data +// see callbacks documentation for more details +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif +struct CallbackMsg_t +{ + HSteamUser m_hSteamUser; + int m_iCallback; + uint8 *m_pubParam; + int m_cubParam; +}; +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing and manipulating a steam account +// associated with one client instance +//----------------------------------------------------------------------------- +class ISteamUser +{ +public: + // returns the HSteamUser this interface represents + // this is only used internally by the API, and by a few select interfaces that support multi-user + virtual HSteamUser GetHSteamUser() = 0; + + // returns true if the Steam client current has a live connection to the Steam servers. + // If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. + // The Steam client will automatically be trying to recreate the connection as often as possible. + virtual bool BLoggedOn() = 0; + + // returns the CSteamID of the account currently logged into the Steam client + // a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API + virtual CSteamID GetSteamID() = 0; + + // Multiplayer Authentication functions + + // InitiateGameConnection() starts the state machine for authenticating the game client with the game server + // It is the client portion of a three-way handshake between the client, the game server, and the steam servers + // + // Parameters: + // void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. + // int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> ) + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + // bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) + // + // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed + // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + + // notify of disconnect + // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + + // Legacy functions + + // used by only a few games to track usage events + virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; + + // get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. + // this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local" + virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0; + + // Starts voice recording. Once started, use GetVoice() to get the data + virtual void StartVoiceRecording( ) = 0; + + // Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for + // a little bit after this function is called. GetVoice() should continue to be called until it returns + // k_eVoiceResultNotRecording + virtual void StopVoiceRecording( ) = 0; + + // Determine the amount of captured audio data that is available in bytes. + // This provides both the compressed and uncompressed data. Please note that the uncompressed + // data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected. + // nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case) + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to + // DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format. + // Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible + // levels of speech are detected, and may have passed through denoising filters, etc. + // This function should be called as often as possible once recording has started; once per frame at least. + // nBytesWritten is set to the number of bytes written to pDestBuffer. + // nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer. + // You must grab both compressed and uncompressed here at the same time, if you want both. + // Matching data that is not read during this call will be thrown away. + // GetAvailableVoice() can be used to determine how much data is actually available. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + + // Decompresses a chunk of compressed data produced by GetVoice(). + // nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall. + // In that case, nBytesWritten is set to the size of the buffer required to decompress the given + // data. The suggested buffer size for the destination buffer is 22 kilobytes. + // The output format of the data is 16-bit signed at the requested samples per second. + // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate + virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; + + // This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results + virtual uint32 GetVoiceOptimalSampleRate() = 0; + + // Retrieve ticket to be sent to the entity who wishes to authenticate you. + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to BeginAuthSession, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam + // (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. + virtual bool BIsBehindNAT() = 0; + + // set data to be replicated to friends so that they can join your game + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + virtual void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer ) = 0; + + // Requests a ticket encrypted with an app specific shared key + // pDataToInclude, cbDataToInclude will be encrypted into the ticket + // ( This is asynchronous, you must wait for the ticket to be completed by the server ) + CALL_RESULT( EncryptedAppTicketResponse_t ) + virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; + + // retrieve a finished ticket + virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Trading Card badges data access + // if you only have one set of cards, the series will be 1 + // the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) + virtual int GetGameBadgeLevel( int nSeries, bool bFoil ) = 0; + + // gets the Steam Level of the user, as shown on their profile + virtual int GetPlayerSteamLevel() = 0; + + // Requests a URL which authenticates an in-game browser for store check-out, + // and then redirects to the specified URL. As long as the in-game browser + // accepts and handles session cookies, Steam microtransaction checkout pages + // will automatically recognize the user instead of presenting a login page. + // The result of this API call will be a StoreAuthURLResponse_t callback. + // NOTE: The URL has a very short lifetime to prevent history-snooping attacks, + // so you should only call this API when you are about to launch the browser, + // or else immediately navigate to the result URL using a hidden browser window. + // NOTE 2: The resulting authorization cookie has an expiration time of one day, + // so it would be a good idea to request and visit a new auth URL every 12 hours. + CALL_RESULT( StoreAuthURLResponse_t ) + virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; + + // gets whether the users phone number is verified + virtual bool BIsPhoneVerified() = 0; + + // gets whether the user has two factor enabled on their account + virtual bool BIsTwoFactorEnabled() = 0; + + // gets whether the users phone number is identifying + virtual bool BIsPhoneIdentifying() = 0; + + // gets whether the users phone number is awaiting (re)verification + virtual bool BIsPhoneRequiringVerification() = 0; + +}; + +#define STEAMUSER_INTERFACE_VERSION "SteamUser019" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a connections to the Steam back-end has been established +// this means the Steam client now has a working connection to the Steam servers +// usually this will have occurred before the game has launched, and should +// only be seen if the user has dropped connection due to a networking issue +// or a Steam server update +//----------------------------------------------------------------------------- +struct SteamServersConnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 1 }; +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a connection attempt has failed +// this will occur periodically if the Steam client is not connected, +// and has failed in it's retry to establish a connection +//----------------------------------------------------------------------------- +struct SteamServerConnectFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 2 }; + EResult m_eResult; + bool m_bStillRetrying; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called if the client has lost connection to the Steam servers +// real-time services will be disabled until a matching SteamServersConnected_t has been posted +//----------------------------------------------------------------------------- +struct SteamServersDisconnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 3 }; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, +// which it may be in the process of or already connected to. +// The game client should immediately disconnect upon receiving this message. +// This can usually occur if the user doesn't have rights to play on the game server. +//----------------------------------------------------------------------------- +struct ClientGameServerDeny_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 13 }; + + uint32 m_uAppID; + uint32 m_unGameServerIP; + uint16 m_usGameServerPort; + uint16 m_bSecure; + uint32 m_uReason; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) +// When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. +// This usually occurs in the rare event the Steam client has some kind of fatal error. +//----------------------------------------------------------------------------- +struct IPCFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 17 }; + enum EFailureType + { + k_EFailureFlushedCallbackQueue, + k_EFailurePipeFail, + }; + uint8 m_eFailureType; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Signaled whenever licenses change +//----------------------------------------------------------------------------- +struct LicensesUpdated_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 25 }; +}; + + +//----------------------------------------------------------------------------- +// callback for BeginAuthSession +//----------------------------------------------------------------------------- +struct ValidateAuthTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 43 }; + CSteamID m_SteamID; + EAuthSessionResponse m_eAuthSessionResponse; + CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a user has responded to a microtransaction authorization request +//----------------------------------------------------------------------------- +struct MicroTxnAuthorizationResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 52 }; + + uint32 m_unAppID; // AppID for this microtransaction + uint64 m_ulOrderID; // OrderID provided for the microtransaction + uint8 m_bAuthorized; // if user authorized transaction +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result from RequestEncryptedAppTicket +//----------------------------------------------------------------------------- +struct EncryptedAppTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 54 }; + + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// callback for GetAuthSessionTicket +//----------------------------------------------------------------------------- +struct GetAuthSessionTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 63 }; + HAuthTicket m_hAuthTicket; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to a steam://gamewebcallback/ command +//----------------------------------------------------------------------------- +struct GameWebCallback_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 64 }; + char m_szURL[256]; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL +//----------------------------------------------------------------------------- +struct StoreAuthURLResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 65 }; + char m_szURL[512]; +}; + + + +#pragma pack( pop ) + +#endif // ISTEAMUSER_H diff --git a/lib/windows64/include/steam/isteamuserstats.h b/lib/windows64/include/steam/isteamuserstats.h new file mode 100644 index 0000000..29ae38b --- /dev/null +++ b/lib/windows64/include/steam/isteamuserstats.h @@ -0,0 +1,476 @@ +//====== Copyright � 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to stats, achievements, and leaderboards +// +//============================================================================= + +#ifndef ISTEAMUSERSTATS_H +#define ISTEAMUSERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamremotestorage.h" + +// size limit on stat or achievement name (UTF-8 encoded) +enum { k_cchStatNameMax = 128 }; + +// maximum number of bytes for a leaderboard name (UTF-8 encoded) +enum { k_cchLeaderboardNameMax = 128 }; + +// maximum number of details int32's storable for a single leaderboard entry +enum { k_cLeaderboardDetailsMax = 64 }; + +// handle to a single leaderboard +typedef uint64 SteamLeaderboard_t; + +// handle to a set of downloaded entries in a leaderboard +typedef uint64 SteamLeaderboardEntries_t; + +// type of data request, when downloading leaderboard entries +enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3 +}; + +// the sort order of a leaderboard +enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number + k_ELeaderboardSortMethodDescending = 2, // top-score is highest number +}; + +// the display type (used by the Steam Community web site) for a leaderboard +enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score + k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds +}; + +enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score + k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified +}; + +// a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +struct LeaderboardEntry_t +{ + CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info + int32 m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard + int32 m_nScore; // score as set in the leaderboard + int32 m_cDetails; // number of int32 details available for this entry + UGCHandle_t m_hUGC; // handle for UGC attached to the entry +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing stats, achievements, and leaderboard information +//----------------------------------------------------------------------------- +class ISteamUserStats +{ +public: + // Ask the server to send down this user's data and achievements for this game + CALL_BACK( UserStatsReceived_t ) + virtual bool RequestCurrentStats() = 0; + + // Data accessors + virtual bool GetStat( const char *pchName, int32 *pData ) = 0; + virtual bool GetStat( const char *pchName, float *pData ) = 0; + + // Set / update data + virtual bool SetStat( const char *pchName, int32 nData ) = 0; + virtual bool SetStat( const char *pchName, float fData ) = 0; + virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + // Achievement flag accessors + virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0; + virtual bool SetAchievement( const char *pchName ) = 0; + virtual bool ClearAchievement( const char *pchName ) = 0; + + // Get the achievement status, and the time it was unlocked if unlocked. + // If the return value is true, but the unlock time is zero, that means it was unlocked before Steam + // began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. + virtual bool GetAchievementAndUnlockTime( const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Store the current data on the server, will get a callback when set + // And one callback for every new achievement + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + virtual bool StoreStats() = 0; + + // Achievement / GroupAchievement metadata + + // Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. + // A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback + // which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the + // specified achievement. + virtual int GetAchievementIcon( const char *pchName ) = 0; + + // Get general attributes for an achievement. Accepts the following keys: + // - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) + // - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) + virtual const char *GetAchievementDisplayAttribute( const char *pchName, const char *pchKey ) = 0; + + // Achievement progress - triggers an AchievementProgress callback, that is all. + // Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. + virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0; + + // Used for iterating achievements. In general games should not need these functions because they should have a + // list of existing achievements compiled into them + virtual uint32 GetNumAchievements() = 0; + // Get achievement name iAchievement in [0,GetNumAchievements) + virtual const char *GetAchievementName( uint32 iAchievement ) = 0; + + // Friends stats & achievements + + // downloads stats for the user + // returns a UserStatsReceived_t received when completed + // if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data + CALL_RESULT( UserStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + // See notes for GetAchievementAndUnlockTime above + virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Reset stats + virtual bool ResetAllStats( bool bAchievementsToo ) = 0; + + // Leaderboard functions + + // asks the Steam back-end for a leaderboard by name, and will create it if it's not yet + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT(LeaderboardFindResult_t) + virtual SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) = 0; + + // as above, but won't create the leaderboard if it's not found + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + CALL_RESULT( LeaderboardFindResult_t ) + virtual SteamAPICall_t FindLeaderboard( const char *pchLeaderboardName ) = 0; + + // returns the name of a leaderboard + virtual const char *GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the total number of entries in a leaderboard, as of the last request + virtual int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the sort method of the leaderboard + virtual ELeaderboardSortMethod GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the display type of the leaderboard + virtual ELeaderboardDisplayType GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // Asks the Steam back-end for a set of rows in the leaderboard. + // This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t + // LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) + // You can ask for more entries than exist, and it will return as many as do exist. + // k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] + // k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate + // e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after + // k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) = 0; + // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers + // if a user doesn't have a leaderboard entry, they won't be included in the result + // a max of 100 users can be downloaded at a time, with only one outstanding call at a time + METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) + CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, + ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; + + // Returns data about a single leaderboard entry + // use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries + // e.g. + // void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) + // { + // for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) + // { + // LeaderboardEntry_t leaderboardEntry; + // int32 details[3]; // we know this is how many we've stored previously + // GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); + // assert( leaderboardEntry.m_cDetails == 3 ); + // ... + // } + // once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid + virtual bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) = 0; + + // Uploads a user score to the Steam back-end. + // This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t + // Details are extra game-defined information regarding how the user got that score + // pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list + CALL_RESULT( LeaderboardScoreUploaded_t ) + virtual SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 *pScoreDetails, int cScoreDetailsCount ) = 0; + + // Attaches a piece of user generated content the user's entry on a leaderboard. + // hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). + // This call is asynchronous, with the result returned in LeaderboardUGCSet_t. + CALL_RESULT( LeaderboardUGCSet_t ) + virtual SteamAPICall_t AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) = 0; + + // Retrieves the number of players currently playing your game (online + offline) + // This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t + CALL_RESULT( NumberOfCurrentPlayers_t ) + virtual SteamAPICall_t GetNumberOfCurrentPlayers() = 0; + + // Requests that Steam fetch data on the percentage of players who have received each achievement + // for the game globally. + // This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. + CALL_RESULT( GlobalAchievementPercentagesReady_t ) + virtual SteamAPICall_t RequestGlobalAchievementPercentages() = 0; + + // Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch + // the next most achieved afterwards. Will return -1 if there is no data on achievement + // percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). + virtual int GetMostAchievedAchievementInfo( char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another + // GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last + // achievement has been iterated. + virtual int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Returns the percentage of users who have achieved the specified achievement. + virtual bool GetAchievementAchievedPercent( const char *pchName, float *pflPercent ) = 0; + + // Requests global stats data, which is available for stats marked as "aggregated". + // This call is asynchronous, with the results returned in GlobalStatsReceived_t. + // nHistoryDays specifies how many days of day-by-day history to retrieve in addition + // to the overall totals. The limit is 60. + CALL_RESULT( GlobalStatsReceived_t ) + virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; + + // Gets the lifetime totals for an aggregated stat + virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; + virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; + + // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. + // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, + // etc. cubData is the size in bytes of the pubData buffer. Returns the number of + // elements actually set. + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; + virtual int32 GetGlobalStatHistory( const char *pchStatName, ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; + +#ifdef _PS3 + // Call to kick off installation of the PS3 trophies. This call is asynchronous, and the results will be returned in a PS3TrophiesInstalled_t + // callback. + virtual bool InstallPS3Trophies() = 0; + + // Returns the amount of space required at boot to install trophies. This value can be used when comparing the amount of space needed + // by the game to the available space value passed to the game at boot. The value is set during InstallPS3Trophies(). + virtual uint64 GetTrophySpaceRequiredBeforeInstall() = 0; + + // On PS3, user stats & achievement progress through Steam must be stored with the user's saved game data. + // At startup, before calling RequestCurrentStats(), you must pass the user's stats data to Steam via this method. + // If you do not have any user data, call this function with pvData = NULL and cubData = 0 + virtual bool SetUserStatsData( const void *pvData, uint32 cubData ) = 0; + + // Call to get the user's current stats data. You should retrieve this data after receiving successful UserStatsReceived_t & UserStatsStored_t + // callbacks, and store the data with the user's save game data. You can call this method with pvData = NULL and cubData = 0 to get the required + // buffer size. + virtual bool GetUserStatsData( void *pvData, uint32 cubData, uint32 *pcubWritten ) = 0; +#endif +}; + +#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION011" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct UserStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 1 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct UserStatsStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 2 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // success / error +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the achievements for a game, or an +// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress +// are zero, that means the achievement has been fully unlocked. +//----------------------------------------------------------------------------- +struct UserAchievementStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 3 }; + + uint64 m_nGameID; // Game this is for + bool m_bGroupAchievement; // if this is a "group" achievement + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + uint32 m_nCurProgress; // current progress towards the achievement + uint32 m_nMaxProgress; // "out of" this many +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardFindResult_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 4 }; + SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found + uint8 m_bLeaderboardFound; // 0 if no leaderboard found +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoresDownloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 5 }; + SteamLeaderboard_t m_hSteamLeaderboard; + SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() + int m_cEntryCount; // the number of entries downloaded +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoreUploaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 6 }; + uint8 m_bSuccess; // 1 if the call was successful + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + int32 m_nScore; // the score that was attempted to set + uint8 m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better + int m_nGlobalRankNew; // the new global rank of the user in this leaderboard + int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard +}; + +struct NumberOfCurrentPlayers_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 7 }; + uint8 m_bSuccess; // 1 if the call was successful + int32 m_cPlayers; // Number of players currently playing +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct UserStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that an achievement icon has been fetched +//----------------------------------------------------------------------------- +struct UserAchievementIconFetched_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 9 }; + + CGameID m_nGameID; // Game this is for + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + bool m_bAchieved; // Is the icon for the achieved or not achieved version? + int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that global achievement percentages are fetched +//----------------------------------------------------------------------------- +struct GlobalAchievementPercentagesReady_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 10 }; + + uint64 m_nGameID; // Game this is for + EResult m_eResult; // Result of the operation +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() +//----------------------------------------------------------------------------- +struct LeaderboardUGCSet_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 11 }; + EResult m_eResult; // The result of the operation + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating that PS3 trophies have been installed +//----------------------------------------------------------------------------- +struct PS3TrophiesInstalled_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // The result of the operation + uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies + +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating global stats have been received. +// Returned as a result of RequestGlobalStats() +//----------------------------------------------------------------------------- +struct GlobalStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game global stats were requested for + EResult m_eResult; // The result of the request +}; + +#pragma pack( pop ) + + +#endif // ISTEAMUSER_H diff --git a/lib/windows64/include/steam/isteamutils.h b/lib/windows64/include/steam/isteamutils.h new file mode 100644 index 0000000..aaf839f --- /dev/null +++ b/lib/windows64/include/steam/isteamutils.h @@ -0,0 +1,254 @@ +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to utility functions in Steam +// +//============================================================================= + +#ifndef ISTEAMUTILS_H +#define ISTEAMUTILS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + + +// Steam API call failure results +enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, // no failure + k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away + k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken + // SteamServersDisconnected_t callback will be sent around the same time + // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again + k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists + k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call +}; + + +// Input modes for the Big Picture gamepad text entry +enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1 +}; + + +// Controls number of allowed lines for the Big Picture gamepad text entry +enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1 +}; + + +// function prototype for warning message hook +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); + +//----------------------------------------------------------------------------- +// Purpose: interface to user independent utility functions +//----------------------------------------------------------------------------- +class ISteamUtils +{ +public: + // return the number of seconds since the user + virtual uint32 GetSecondsSinceAppActive() = 0; + virtual uint32 GetSecondsSinceComputerActive() = 0; + + // the universe this client is connecting to + virtual EUniverse GetConnectedUniverse() = 0; + + // Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) + virtual uint32 GetServerRealTime() = 0; + + // returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + // e.g "US" or "UK". + virtual const char *GetIPCountry() = 0; + + // returns true if the image exists, and valid sizes were filled out + virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0; + + // returns true if the image exists, and the buffer was successfully filled out + // results are returned in RGBA format + // the destination buffer size should be 4 * height * width * sizeof(char) + virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; + + // returns the IP of the reporting server for valve - currently only used in Source engine games + virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; + + // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + virtual uint8 GetCurrentBatteryPower() = 0; + + // returns the appID of the current process + virtual uint32 GetAppID() = 0; + + // Sets the position where the overlay instance for the currently calling game should show notifications. + // This position is per-game and if this function is called from outside of a game context it will do nothing. + virtual void SetOverlayNotificationPosition( ENotificationPosition eNotificationPosition ) = 0; + + // API asynchronous call results + // can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + virtual bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, bool *pbFailed ) = 0; + virtual ESteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) = 0; + virtual bool GetAPICallResult( SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() instead. Game servers do not need to call this function. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + // start & hook the game process, so this function will initially return false while the overlay is loading. + virtual bool IsOverlayEnabled() = 0; + + // Normally this call is unneeded if your game has a constantly running frame loop that calls the + // D3D Present API, or OGL SwapBuffers API every frame. + // + // However, if you have a game that only refreshes the screen on an event driven basis then that can break + // the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + // need to Present() to the screen any time an even needing a notification happens or when the overlay is + // brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + // in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + // refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + virtual bool BOverlayNeedsPresent() = 0; + + // Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + // of the partner site, for example to refuse to load modified executable files. + // The result is returned in CheckFileSignature_t. + // k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + // k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + // k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + // k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + // k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + CALL_RESULT( CheckFileSignature_t ) + virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; + + // Activates the Big Picture text input dialog which only supports gamepad input + virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; + + // Returns previously entered text & length + virtual uint32 GetEnteredGamepadTextLength() = 0; + virtual bool GetEnteredGamepadTextInput( char *pchText, uint32 cchText ) = 0; + + // returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + virtual const char *GetSteamUILanguage() = 0; + + // returns true if Steam itself is running in VR mode + virtual bool IsSteamRunningInVR() = 0; + + // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; + + // returns true if Steam & the Steam Overlay are running in Big Picture mode + // Games much be launched through the Steam client to enable the Big Picture overlay. During development, + // a game can be added as a non-steam game to the developers library to test this feature + virtual bool IsSteamInBigPictureMode() = 0; + + // ask SteamUI to create and render its OpenVR dashboard + virtual void StartVRDashboard() = 0; +}; + +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils008" + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + +//----------------------------------------------------------------------------- +// Purpose: The country of the user changed +//----------------------------------------------------------------------------- +struct IPCountry_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 1 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute +//----------------------------------------------------------------------------- +struct LowBatteryPower_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 2 }; + uint8 m_nMinutesBatteryLeft; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a SteamAsyncCall_t has completed (or failed) +//----------------------------------------------------------------------------- +struct SteamAPICallCompleted_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; + SteamAPICall_t m_hAsyncCall; + int m_iCallback; + uint32 m_cubParam; +}; + + +//----------------------------------------------------------------------------- +// called when Steam wants to shutdown +//----------------------------------------------------------------------------- +struct SteamShutdown_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 4 }; +}; + +//----------------------------------------------------------------------------- +// results for CheckFileSignature +//----------------------------------------------------------------------------- +enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +}; + +//----------------------------------------------------------------------------- +// callback for CheckFileSignature +//----------------------------------------------------------------------------- +struct CheckFileSignature_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 5 }; + ECheckFileSignature m_eCheckFileSignature; +}; + + +// k_iSteamUtilsCallbacks + 13 is taken + + +//----------------------------------------------------------------------------- +// Big Picture gamepad text input has been closed +//----------------------------------------------------------------------------- +struct GamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; + bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input + uint32 m_unSubmittedText; +}; + +// k_iSteamUtilsCallbacks + 15 is taken + +#pragma pack( pop ) + +#endif // ISTEAMUTILS_H diff --git a/lib/windows64/include/steam/isteamvideo.h b/lib/windows64/include/steam/isteamvideo.h new file mode 100644 index 0000000..6893f0b --- /dev/null +++ b/lib/windows64/include/steam/isteamvideo.h @@ -0,0 +1,60 @@ +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Video +// +//============================================================================= + +#ifndef ISTEAMVIDEO_H +#define ISTEAMVIDEO_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error isteamclient.h must be included +#endif + + + + +//----------------------------------------------------------------------------- +// Purpose: Steam Video API +//----------------------------------------------------------------------------- +class ISteamVideo +{ +public: + + // Get a URL suitable for streaming the given Video app ID's video + virtual void GetVideoURL( AppId_t unVideoAppID ) = 0; + + // returns true if user is uploading a live broadcast + virtual bool IsBroadcasting( int *pnNumViewers ) = 0; +}; + +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V001" + +DEFINE_CALLBACK( BroadcastUploadStart_t, k_iClientVideoCallbacks + 4 ) +END_DEFINE_CALLBACK_0() + +DEFINE_CALLBACK( BroadcastUploadStop_t, k_iClientVideoCallbacks + 5 ) + CALLBACK_MEMBER( 0, EBroadcastUploadResult, m_eResult ) +END_DEFINE_CALLBACK_1() + +DEFINE_CALLBACK( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) + CALLBACK_MEMBER( 0, EResult, m_eResult ) + CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) + CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) +END_DEFINE_CALLBACK_1() + + +#pragma pack( pop ) + + +#endif // ISTEAMVIDEO_H diff --git a/lib/windows64/include/steam/matchmakingtypes.h b/lib/windows64/include/steam/matchmakingtypes.h new file mode 100644 index 0000000..e52cfc6 --- /dev/null +++ b/lib/windows64/include/steam/matchmakingtypes.h @@ -0,0 +1,251 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef MATCHMAKINGTYPES_H +#define MATCHMAKINGTYPES_H + +#ifdef _WIN32 +#pragma once +#endif + +#ifdef POSIX +#ifndef _snprintf +#define _snprintf snprintf +#endif +#endif + +#include <stdio.h> +#include <string.h> + +// +// Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. +// WARNING: These cannot be changed easily, without breaking clients using old interfaces. +// +const int k_cbMaxGameServerGameDir = 32; +const int k_cbMaxGameServerMapName = 32; +const int k_cbMaxGameServerGameDescription = 64; +const int k_cbMaxGameServerName = 64; +const int k_cbMaxGameServerTags = 128; +const int k_cbMaxGameServerGameData = 2048; + +/// Store key/value pair used in matchmaking queries. +/// +/// Actually, the name Key/Value is a bit misleading. The "key" is better +/// understood as "filter operation code" and the "value" is the operand to this +/// filter operation. The meaning of the operand depends upon the filter. +struct MatchMakingKeyValuePair_t +{ + MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; } + MatchMakingKeyValuePair_t( const char *pchKey, const char *pchValue ) + { + strncpy( m_szKey, pchKey, sizeof(m_szKey) ); // this is a public header, use basic c library string funcs only! + m_szKey[ sizeof( m_szKey ) - 1 ] = '\0'; + strncpy( m_szValue, pchValue, sizeof(m_szValue) ); + m_szValue[ sizeof( m_szValue ) - 1 ] = '\0'; + } + char m_szKey[ 256 ]; + char m_szValue[ 256 ]; +}; + + +enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match +}; + +// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, +// namely: its IP, its connection port, and its query port. +class servernetadr_t +{ +public: + + servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} + + void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +#ifdef NETADR_H + netadr_t GetIPAndQueryPort(); +#endif + + // Access the query port. + uint16 GetQueryPort() const; + void SetQueryPort( uint16 usPort ); + + // Access the connection port. + uint16 GetConnectionPort() const; + void SetConnectionPort( uint16 usPort ); + + // Access the IP + uint32 GetIP() const; + void SetIP( uint32 ); + + // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). + const char *GetConnectionAddressString() const; + const char *GetQueryAddressString() const; + + // Comparison operators and functions. + bool operator<(const servernetadr_t &netadr) const; + void operator=( const servernetadr_t &that ) + { + m_usConnectionPort = that.m_usConnectionPort; + m_usQueryPort = that.m_usQueryPort; + m_unIP = that.m_unIP; + } + + +private: + const char *ToString( uint32 unIP, uint16 usPort ) const; + uint16 m_usConnectionPort; // (in HOST byte order) + uint16 m_usQueryPort; + uint32 m_unIP; +}; + + +inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ) +{ + m_unIP = ip; + m_usQueryPort = usQueryPort; + m_usConnectionPort = usConnectionPort; +} + +#ifdef NETADR_H +inline netadr_t servernetadr_t::GetIPAndQueryPort() +{ + return netadr_t( m_unIP, m_usQueryPort ); +} +#endif + +inline uint16 servernetadr_t::GetQueryPort() const +{ + return m_usQueryPort; +} + +inline void servernetadr_t::SetQueryPort( uint16 usPort ) +{ + m_usQueryPort = usPort; +} + +inline uint16 servernetadr_t::GetConnectionPort() const +{ + return m_usConnectionPort; +} + +inline void servernetadr_t::SetConnectionPort( uint16 usPort ) +{ + m_usConnectionPort = usPort; +} + +inline uint32 servernetadr_t::GetIP() const +{ + return m_unIP; +} + +inline void servernetadr_t::SetIP( uint32 unIP ) +{ + m_unIP = unIP; +} + +inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const +{ + static char s[4][64]; + static int nBuf = 0; + unsigned char *ipByte = (unsigned char *)&unIP; +#ifdef VALVE_BIG_ENDIAN + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); +#else + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); +#endif + const char *pchRet = s[nBuf]; + ++nBuf; + nBuf %= ( (sizeof(s)/sizeof(s[0])) ); + return pchRet; +} + +inline const char* servernetadr_t::GetConnectionAddressString() const +{ + return ToString( m_unIP, m_usConnectionPort ); +} + +inline const char* servernetadr_t::GetQueryAddressString() const +{ + return ToString( m_unIP, m_usQueryPort ); +} + +inline bool servernetadr_t::operator<(const servernetadr_t &netadr) const +{ + return ( m_unIP < netadr.m_unIP ) || ( m_unIP == netadr.m_unIP && m_usQueryPort < netadr.m_usQueryPort ); +} + +//----------------------------------------------------------------------------- +// Purpose: Data describing a single server +//----------------------------------------------------------------------------- +class gameserveritem_t +{ +public: + gameserveritem_t(); + + const char* GetName() const; + void SetName( const char *pName ); + +public: + servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server + int m_nPing; ///< current ping time in milliseconds + bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past + bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed + char m_szGameDir[k_cbMaxGameServerGameDir]; ///< current game directory + char m_szMap[k_cbMaxGameServerMapName]; ///< current map + char m_szGameDescription[k_cbMaxGameServerGameDescription]; ///< game description + uint32 m_nAppID; ///< Steam App ID of this server + int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! + int m_nMaxPlayers; ///< Maximum players that can join this server + int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server + bool m_bPassword; ///< true if this server needs a password to join + bool m_bSecure; ///< Is this server protected by VAC + uint32 m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) + int m_nServerVersion; ///< server version as reported to Steam + +private: + + /// Game server name + char m_szServerName[k_cbMaxGameServerName]; + + // For data added after SteamMatchMaking001 add it here +public: + /// the tags this server exposes + char m_szGameTags[k_cbMaxGameServerTags]; + + /// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) + CSteamID m_steamID; +}; + + +inline gameserveritem_t::gameserveritem_t() +{ + m_szGameDir[0] = m_szMap[0] = m_szGameDescription[0] = m_szServerName[0] = 0; + m_bHadSuccessfulResponse = m_bDoNotRefresh = m_bPassword = m_bSecure = false; + m_nPing = m_nAppID = m_nPlayers = m_nMaxPlayers = m_nBotPlayers = m_ulTimeLastPlayed = m_nServerVersion = 0; + m_szGameTags[0] = 0; +} + +inline const char* gameserveritem_t::GetName() const +{ + // Use the IP address as the name if nothing is set yet. + if ( m_szServerName[0] == 0 ) + return m_NetAdr.GetConnectionAddressString(); + else + return m_szServerName; +} + +inline void gameserveritem_t::SetName( const char *pName ) +{ + strncpy( m_szServerName, pName, sizeof( m_szServerName ) ); + m_szServerName[ sizeof( m_szServerName ) - 1 ] = '\0'; +} + + +#endif // MATCHMAKINGTYPES_H diff --git a/lib/windows64/include/steam/steam_api.h b/lib/windows64/include/steam/steam_api.h new file mode 100644 index 0000000..e3a31ae --- /dev/null +++ b/lib/windows64/include/steam/steam_api.h @@ -0,0 +1,394 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_API_H +#define STEAM_API_H +#ifdef _WIN32 +#pragma once +#endif + +#include "isteamclient.h" +#include "isteamuser.h" +#include "isteamfriends.h" +#include "isteamutils.h" +#include "isteammatchmaking.h" +#include "isteamuserstats.h" +#include "isteamapps.h" +#include "isteamnetworking.h" +#include "isteamremotestorage.h" +#include "isteamscreenshots.h" +#include "isteammusic.h" +#include "isteammusicremote.h" +#include "isteamhttp.h" +#include "isteamunifiedmessages.h" +#include "isteamcontroller.h" +#include "isteamugc.h" +#include "isteamapplist.h" +#include "isteamhtmlsurface.h" +#include "isteaminventory.h" +#include "isteamvideo.h" + + +// Steam API export macro +#if defined( _WIN32 ) && !defined( _X360 ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __declspec( dllexport ) + #elif defined( STEAM_API_NODLL ) + #define S_API extern "C" + #else + #define S_API extern "C" __declspec( dllimport ) + #endif // STEAM_API_EXPORTS +#elif defined( GNUC ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __attribute__ ((visibility("default"))) + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#else // !WIN32 + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Steam API setup & shutdown +// +// These functions manage loading, initializing and shutdown of the steamclient.dll +// +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + + +// SteamAPI_Init must be called before using any other API functions. If it fails, an +// error message will be output to the debugger (or stderr) with further information. +S_API bool S_CALLTYPE SteamAPI_Init(); + +// SteamAPI_Shutdown should be called during process shutdown if possible. +S_API void S_CALLTYPE SteamAPI_Shutdown(); + +// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. +// +// Returns true if the current process should terminate. Steam is now re-launching your application. +// +// Returns false if no action needs to be taken. This means that your executable was started through +// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). +// Your current process should continue if false is returned. +// +// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary +// since the DRM wrapper will ensure that your application was launched properly through Steam. +S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); + +// Many Steam API functions allocate a small amount of thread-local memory for parameter storage. +// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. +// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded +// program never needs to explicitly call this function. +S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); + + +// crash dump recording functions +S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); +S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Global accessors for Steamworks C++ APIs. See individual isteam*.h files for details. +// You should not cache the results of these accessors or pass the result pointers across +// modules! Different modules may be compiled against different SDK header versions, and +// the interface pointers could therefore be different across modules. Every line of code +// which calls into a Steamworks API should retrieve the interface from a global accessor. +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#if !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamClient(); +inline ISteamUser *SteamUser(); +inline ISteamFriends *SteamFriends(); +inline ISteamUtils *SteamUtils(); +inline ISteamMatchmaking *SteamMatchmaking(); +inline ISteamUserStats *SteamUserStats(); +inline ISteamApps *SteamApps(); +inline ISteamNetworking *SteamNetworking(); +inline ISteamMatchmakingServers *SteamMatchmakingServers(); +inline ISteamRemoteStorage *SteamRemoteStorage(); +inline ISteamScreenshots *SteamScreenshots(); +inline ISteamHTTP *SteamHTTP(); +inline ISteamUnifiedMessages *SteamUnifiedMessages(); +inline ISteamController *SteamController(); +inline ISteamUGC *SteamUGC(); +inline ISteamAppList *SteamAppList(); +inline ISteamMusic *SteamMusic(); +inline ISteamMusicRemote *SteamMusicRemote(); +inline ISteamHTMLSurface *SteamHTMLSurface(); +inline ISteamInventory *SteamInventory(); +inline ISteamVideo *SteamVideo(); +#endif // VERSION_SAFE_STEAM_API_INTERFACES + + +// CSteamAPIContext encapsulates the Steamworks API global accessors into +// a single object. This is DEPRECATED and only remains for compatibility. +class CSteamAPIContext +{ +public: + // DEPRECATED - there is no benefit to using this over the global accessors + CSteamAPIContext() { Clear(); } + void Clear(); + bool Init(); + ISteamClient* SteamClient() const { return m_pSteamClient; } + ISteamUser* SteamUser() const { return m_pSteamUser; } + ISteamFriends* SteamFriends() const { return m_pSteamFriends; } + ISteamUtils* SteamUtils() const { return m_pSteamUtils; } + ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } + ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } + ISteamApps* SteamApps() const { return m_pSteamApps; } + ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } + ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } + ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } + ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } + ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } + ISteamUnifiedMessages* SteamUnifiedMessages() const { return m_pSteamUnifiedMessages; } + ISteamController* SteamController() const { return m_pController; } + ISteamUGC* SteamUGC() const { return m_pSteamUGC; } + ISteamAppList* SteamAppList() const { return m_pSteamAppList; } + ISteamMusic* SteamMusic() const { return m_pSteamMusic; } + ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } + ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } + ISteamInventory* SteamInventory() const { return m_pSteamInventory; } + ISteamVideo* SteamVideo() const { return m_pSteamVideo; } + // DEPRECATED - there is no benefit to using this over the global accessors +private: + ISteamClient *m_pSteamClient; + ISteamUser *m_pSteamUser; + ISteamFriends *m_pSteamFriends; + ISteamUtils *m_pSteamUtils; + ISteamMatchmaking *m_pSteamMatchmaking; + ISteamUserStats *m_pSteamUserStats; + ISteamApps *m_pSteamApps; + ISteamMatchmakingServers *m_pSteamMatchmakingServers; + ISteamNetworking *m_pSteamNetworking; + ISteamRemoteStorage *m_pSteamRemoteStorage; + ISteamScreenshots *m_pSteamScreenshots; + ISteamHTTP *m_pSteamHTTP; + ISteamUnifiedMessages *m_pSteamUnifiedMessages; + ISteamController *m_pController; + ISteamUGC *m_pSteamUGC; + ISteamAppList *m_pSteamAppList; + ISteamMusic *m_pSteamMusic; + ISteamMusicRemote *m_pSteamMusicRemote; + ISteamHTMLSurface *m_pSteamHTMLSurface; + ISteamInventory *m_pSteamInventory; + ISteamVideo *m_pSteamVideo; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steam callback and call-result helpers +// +// The following macros and classes are used to register your application for +// callbacks and call-results, which are delivered in a predictable manner. +// +// STEAM_CALLBACK macros are meant for use inside of a C++ class definition. +// They map a Steam notification callback directly to a class member function +// which is automatically prototyped as "void func( callback_type *pParam )". +// +// CCallResult is used with specific Steam APIs that return "result handles". +// The handle can be passed to a CCallResult object's Set function, along with +// an object pointer and member-function pointer. The member function will +// be executed once the results of the Steam API call are available. +// +// CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK +// macros if you require finer control over registration and unregistration. +// +// Callbacks and call-results are queued automatically and are only +// delivered/executed when your application calls SteamAPI_RunCallbacks(). +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously, +// but if you choose to do this, callback code could be executed on any thread. +// One alternative is to call SteamAPI_RunCallbacks from the main thread only, +// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. +S_API void S_CALLTYPE SteamAPI_RunCallbacks(); + + +// Declares a callback member function plus a helper member variable which +// registers the callback on object creation and unregisters on destruction. +// The optional fourth 'var' param exists only for backwards-compatibility +// and can be ignored. +#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) ) + +// Declares a callback function and a named CCallbackManual variable which +// has Register and Unregister functions instead of automatic registration. +#define STEAM_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type > var; void func( callback_type *pParam ) + + +// Internal functions used by the utility CCallback objects to receive callbacks +S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); +// Internal functions used by the utility CCallResult objects to receive async call results +S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); + + +//----------------------------------------------------------------------------- +// Purpose: base for callbacks and call results - internal implementation detail +//----------------------------------------------------------------------------- +class CCallbackBase +{ +public: + CCallbackBase() { m_nCallbackFlags = 0; m_iCallback = 0; } + // don't add a virtual destructor because we export this binary interface across dll's + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) = 0; + int GetICallback() { return m_iCallback; } + virtual int GetCallbackSizeBytes() = 0; + +protected: + enum { k_ECallbackFlagsRegistered = 0x01, k_ECallbackFlagsGameServer = 0x02 }; + uint8 m_nCallbackFlags; + int m_iCallback; + friend class CCallbackMgr; + +private: + CCallbackBase( const CCallbackBase& ); + CCallbackBase& operator=( const CCallbackBase& ); +}; + +//----------------------------------------------------------------------------- +// Purpose: templated base for callbacks - internal implementation detail +//----------------------------------------------------------------------------- +template< int sizeof_P > +class CCallbackImpl : protected CCallbackBase +{ +public: + ~CCallbackImpl() { if ( m_nCallbackFlags & k_ECallbackFlagsRegistered ) SteamAPI_UnregisterCallback( this ); } + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } + +protected: + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } + virtual int GetCallbackSizeBytes() { return sizeof_P; } +}; + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +class CCallResult : private CCallbackBase +{ +public: + typedef void (T::*func_t)( P*, bool ); + + CCallResult(); + ~CCallResult(); + + void Set( SteamAPICall_t hAPICall, T *p, func_t func ); + bool IsActive() const; + void Cancel(); + + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } +private: + virtual void Run( void *pvParam ); + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); + virtual int GetCallbackSizeBytes() { return sizeof( P ); } + + SteamAPICall_t m_hAPICall; + T *m_pObj; + func_t m_Func; +}; + + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver = false > +class CCallback : public CCallbackImpl< sizeof( P ) > +{ +public: + typedef void (T::*func_t)(P*); + + // NOTE: If you can't provide the correct parameters at construction time, you should + // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. + CCallback( T *pObj, func_t func ); + + void Register( T *pObj, func_t func ); + void Unregister(); + +protected: + virtual void Run( void *pvParam ); + + T *m_pObj; + func_t m_Func; +}; + + +//----------------------------------------------------------------------------- +// Purpose: subclass of CCallback which allows default-construction in +// an unregistered state; you must call Register manually +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameServer = false > +class CCallbackManual : public CCallback< T, P, bGameServer > +{ +public: + CCallbackManual() : CCallback< T, P, bGameServer >( NULL, NULL ) {} + + // Inherits public Register and Unregister functions from base class +}; + + + +#ifdef _WIN32 +// disable this warning; this pattern need for steam callback registration +#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list +#endif + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_IsSteamRunning() returns true if Steam is currently running +S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); + +// Pumps out all the steam messages, calling registered callbacks. +// NOT THREADSAFE - do not call from multiple threads simultaneously. +S_API void Steam_RunCallbacks( HSteamPipe hSteamPipe, bool bGameServerCallbacks ); + +// register the callback funcs to use to interact with the steam dll +S_API void Steam_RegisterInterfaceFuncs( void *hModule ); + +// returns the HSteamUser of the last user to dispatch a callback +S_API HSteamUser Steam_GetHSteamUserCurrent(); + +// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. +// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs +S_API const char *SteamAPI_GetSteamInstallPath(); + +// returns the pipe we are communicating to Steam with +S_API HSteamPipe SteamAPI_GetHSteamPipe(); + +// sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks +S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); + +// backwards compat export, passes through to SteamAPI_ variants +S_API HSteamPipe GetHSteamPipe(); +S_API HSteamUser GetHSteamUser(); + + +#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) +// exists only for backwards compat with code written against older SDKs +S_API bool S_CALLTYPE SteamAPI_InitSafe(); +#endif + +#include "steam_api_internal.h" + +#endif // STEAM_API_H diff --git a/lib/windows64/include/steam/steam_api.json b/lib/windows64/include/steam/steam_api.json new file mode 100644 index 0000000..09adb0c --- /dev/null +++ b/lib/windows64/include/steam/steam_api.json @@ -0,0 +1,7576 @@ +{"typedefs":[{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "uint8","type": "unsigned char"} +,{"typedef": "int8","type": "signed char"} +,{"typedef": "int16","type": "short"} +,{"typedef": "uint16","type": "unsigned short"} +,{"typedef": "int32","type": "int"} +,{"typedef": "uint32","type": "unsigned int"} +,{"typedef": "int64","type": "long long"} +,{"typedef": "uint64","type": "unsigned long long"} +,{"typedef": "lint64","type": "int64"} +,{"typedef": "ulint64","type": "uint64"} +,{"typedef": "intp","type": "long long"} +,{"typedef": "uintp","type": "unsigned long long"} +,{"typedef": "Salt_t","type": "uint8 [8]"} +,{"typedef": "GID_t","type": "uint64"} +,{"typedef": "JobID_t","type": "uint64"} +,{"typedef": "TxnID_t","type": "GID_t"} +,{"typedef": "PackageId_t","type": "uint32"} +,{"typedef": "BundleId_t","type": "uint32"} +,{"typedef": "AppId_t","type": "uint32"} +,{"typedef": "AssetClassId_t","type": "uint64"} +,{"typedef": "PhysicalItemId_t","type": "uint32"} +,{"typedef": "DepotId_t","type": "uint32"} +,{"typedef": "RTime32","type": "uint32"} +,{"typedef": "CellID_t","type": "uint32"} +,{"typedef": "SteamAPICall_t","type": "uint64"} +,{"typedef": "AccountID_t","type": "uint32"} +,{"typedef": "PartnerId_t","type": "uint32"} +,{"typedef": "ManifestId_t","type": "uint64"} +,{"typedef": "HAuthTicket","type": "uint32"} +,{"typedef": "PFNLegacyKeyRegistration","type": "void (*)(const char *, const char *)"} +,{"typedef": "PFNLegacyKeyInstalled","type": "_Bool (*)(void)"} +,{"typedef": "PFNPreMinidumpCallback","type": "void (*)(void *)"} +,{"typedef": "BREAKPAD_HANDLE","type": "void *"} +,{"typedef": "ValvePackingSentinel_t","type": "struct ValvePackingSentinel_t"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "HSteamPipe","type": "int32"} +,{"typedef": "HSteamUser","type": "int32"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "SteamAPI_CheckCallbackRegistered_t","type": "uint32 (*)(int)"} +,{"typedef": "FriendsGroupID_t","type": "int16"} +,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} +,{"typedef": "HServerListRequest","type": "void *"} +,{"typedef": "HServerQuery","type": "int"} +,{"typedef": "UGCHandle_t","type": "uint64"} +,{"typedef": "PublishedFileUpdateHandle_t","type": "uint64"} +,{"typedef": "PublishedFileId_t","type": "uint64"} +,{"typedef": "UGCFileWriteStreamHandle_t","type": "uint64"} +,{"typedef": "compile_time_assert_type","type": "char [1]"} +,{"typedef": "SteamLeaderboard_t","type": "uint64"} +,{"typedef": "SteamLeaderboardEntries_t","type": "uint64"} +,{"typedef": "SNetSocket_t","type": "uint32"} +,{"typedef": "SNetListenSocket_t","type": "uint32"} +,{"typedef": "ScreenshotHandle","type": "uint32"} +,{"typedef": "PlaybackStatusHasChanged_t::SteamCallback_t","type": "struct PlaybackStatusHasChanged_t"} +,{"typedef": "VolumeHasChanged_t::SteamCallback_t","type": "struct VolumeHasChanged_t"} +,{"typedef": "MusicPlayerRemoteWillActivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillActivate_t"} +,{"typedef": "MusicPlayerRemoteWillDeactivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillDeactivate_t"} +,{"typedef": "MusicPlayerRemoteToFront_t::SteamCallback_t","type": "struct MusicPlayerRemoteToFront_t"} +,{"typedef": "MusicPlayerWillQuit_t::SteamCallback_t","type": "struct MusicPlayerWillQuit_t"} +,{"typedef": "MusicPlayerWantsPlay_t::SteamCallback_t","type": "struct MusicPlayerWantsPlay_t"} +,{"typedef": "MusicPlayerWantsPause_t::SteamCallback_t","type": "struct MusicPlayerWantsPause_t"} +,{"typedef": "MusicPlayerWantsPlayPrevious_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayPrevious_t"} +,{"typedef": "MusicPlayerWantsPlayNext_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayNext_t"} +,{"typedef": "MusicPlayerWantsShuffled_t::SteamCallback_t","type": "struct MusicPlayerWantsShuffled_t"} +,{"typedef": "MusicPlayerWantsLooped_t::SteamCallback_t","type": "struct MusicPlayerWantsLooped_t"} +,{"typedef": "MusicPlayerWantsVolume_t::SteamCallback_t","type": "struct MusicPlayerWantsVolume_t"} +,{"typedef": "MusicPlayerSelectsQueueEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsQueueEntry_t"} +,{"typedef": "MusicPlayerSelectsPlaylistEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsPlaylistEntry_t"} +,{"typedef": "MusicPlayerWantsPlayingRepeatStatus_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayingRepeatStatus_t"} +,{"typedef": "HTTPRequestHandle","type": "uint32"} +,{"typedef": "HTTPCookieContainerHandle","type": "uint32"} +,{"typedef": "ClientUnifiedMessageHandle","type": "uint64"} +,{"typedef": "ControllerHandle_t","type": "uint64"} +,{"typedef": "ControllerActionSetHandle_t","type": "uint64"} +,{"typedef": "ControllerDigitalActionHandle_t","type": "uint64"} +,{"typedef": "ControllerAnalogActionHandle_t","type": "uint64"} +,{"typedef": "UGCQueryHandle_t","type": "uint64"} +,{"typedef": "UGCUpdateHandle_t","type": "uint64"} +,{"typedef": "SteamAppInstalled_t::SteamCallback_t","type": "struct SteamAppInstalled_t"} +,{"typedef": "SteamAppUninstalled_t::SteamCallback_t","type": "struct SteamAppUninstalled_t"} +,{"typedef": "HHTMLBrowser","type": "uint32"} +,{"typedef": "HTML_BrowserReady_t::SteamCallback_t","type": "struct HTML_BrowserReady_t"} +,{"typedef": "HTML_NeedsPaint_t::SteamCallback_t","type": "struct HTML_NeedsPaint_t"} +,{"typedef": "HTML_StartRequest_t::SteamCallback_t","type": "struct HTML_StartRequest_t"} +,{"typedef": "HTML_CloseBrowser_t::SteamCallback_t","type": "struct HTML_CloseBrowser_t"} +,{"typedef": "HTML_URLChanged_t::SteamCallback_t","type": "struct HTML_URLChanged_t"} +,{"typedef": "HTML_FinishedRequest_t::SteamCallback_t","type": "struct HTML_FinishedRequest_t"} +,{"typedef": "HTML_OpenLinkInNewTab_t::SteamCallback_t","type": "struct HTML_OpenLinkInNewTab_t"} +,{"typedef": "HTML_ChangedTitle_t::SteamCallback_t","type": "struct HTML_ChangedTitle_t"} +,{"typedef": "HTML_SearchResults_t::SteamCallback_t","type": "struct HTML_SearchResults_t"} +,{"typedef": "HTML_CanGoBackAndForward_t::SteamCallback_t","type": "struct HTML_CanGoBackAndForward_t"} +,{"typedef": "HTML_HorizontalScroll_t::SteamCallback_t","type": "struct HTML_HorizontalScroll_t"} +,{"typedef": "HTML_VerticalScroll_t::SteamCallback_t","type": "struct HTML_VerticalScroll_t"} +,{"typedef": "HTML_LinkAtPosition_t::SteamCallback_t","type": "struct HTML_LinkAtPosition_t"} +,{"typedef": "HTML_JSAlert_t::SteamCallback_t","type": "struct HTML_JSAlert_t"} +,{"typedef": "HTML_JSConfirm_t::SteamCallback_t","type": "struct HTML_JSConfirm_t"} +,{"typedef": "HTML_FileOpenDialog_t::SteamCallback_t","type": "struct HTML_FileOpenDialog_t"} +,{"typedef": "HTML_NewWindow_t::SteamCallback_t","type": "struct HTML_NewWindow_t"} +,{"typedef": "HTML_SetCursor_t::SteamCallback_t","type": "struct HTML_SetCursor_t"} +,{"typedef": "HTML_StatusText_t::SteamCallback_t","type": "struct HTML_StatusText_t"} +,{"typedef": "HTML_ShowToolTip_t::SteamCallback_t","type": "struct HTML_ShowToolTip_t"} +,{"typedef": "HTML_UpdateToolTip_t::SteamCallback_t","type": "struct HTML_UpdateToolTip_t"} +,{"typedef": "HTML_HideToolTip_t::SteamCallback_t","type": "struct HTML_HideToolTip_t"} +,{"typedef": "SteamItemInstanceID_t","type": "uint64"} +,{"typedef": "SteamItemDef_t","type": "int32"} +,{"typedef": "SteamInventoryResult_t","type": "int32"} +,{"typedef": "BroadcastUploadStart_t::SteamCallback_t","type": "struct BroadcastUploadStart_t"} +,{"typedef": "BroadcastUploadStop_t::SteamCallback_t","type": "struct BroadcastUploadStop_t"} +,{"typedef": "GetVideoURLResult_t::SteamCallback_t","type": "struct GetVideoURLResult_t"} +,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} +,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} +], +"enums":[ + {"enumname": "EUniverse","values": [ + {"name": "k_EUniverseInvalid","value": "0"} + ,{"name": "k_EUniversePublic","value": "1"} + ,{"name": "k_EUniverseBeta","value": "2"} + ,{"name": "k_EUniverseInternal","value": "3"} + ,{"name": "k_EUniverseDev","value": "4"} + ,{"name": "k_EUniverseMax","value": "5"} +]} +, {"enumname": "EResult","values": [ + {"name": "k_EResultOK","value": "1"} + ,{"name": "k_EResultFail","value": "2"} + ,{"name": "k_EResultNoConnection","value": "3"} + ,{"name": "k_EResultInvalidPassword","value": "5"} + ,{"name": "k_EResultLoggedInElsewhere","value": "6"} + ,{"name": "k_EResultInvalidProtocolVer","value": "7"} + ,{"name": "k_EResultInvalidParam","value": "8"} + ,{"name": "k_EResultFileNotFound","value": "9"} + ,{"name": "k_EResultBusy","value": "10"} + ,{"name": "k_EResultInvalidState","value": "11"} + ,{"name": "k_EResultInvalidName","value": "12"} + ,{"name": "k_EResultInvalidEmail","value": "13"} + ,{"name": "k_EResultDuplicateName","value": "14"} + ,{"name": "k_EResultAccessDenied","value": "15"} + ,{"name": "k_EResultTimeout","value": "16"} + ,{"name": "k_EResultBanned","value": "17"} + ,{"name": "k_EResultAccountNotFound","value": "18"} + ,{"name": "k_EResultInvalidSteamID","value": "19"} + ,{"name": "k_EResultServiceUnavailable","value": "20"} + ,{"name": "k_EResultNotLoggedOn","value": "21"} + ,{"name": "k_EResultPending","value": "22"} + ,{"name": "k_EResultEncryptionFailure","value": "23"} + ,{"name": "k_EResultInsufficientPrivilege","value": "24"} + ,{"name": "k_EResultLimitExceeded","value": "25"} + ,{"name": "k_EResultRevoked","value": "26"} + ,{"name": "k_EResultExpired","value": "27"} + ,{"name": "k_EResultAlreadyRedeemed","value": "28"} + ,{"name": "k_EResultDuplicateRequest","value": "29"} + ,{"name": "k_EResultAlreadyOwned","value": "30"} + ,{"name": "k_EResultIPNotFound","value": "31"} + ,{"name": "k_EResultPersistFailed","value": "32"} + ,{"name": "k_EResultLockingFailed","value": "33"} + ,{"name": "k_EResultLogonSessionReplaced","value": "34"} + ,{"name": "k_EResultConnectFailed","value": "35"} + ,{"name": "k_EResultHandshakeFailed","value": "36"} + ,{"name": "k_EResultIOFailure","value": "37"} + ,{"name": "k_EResultRemoteDisconnect","value": "38"} + ,{"name": "k_EResultShoppingCartNotFound","value": "39"} + ,{"name": "k_EResultBlocked","value": "40"} + ,{"name": "k_EResultIgnored","value": "41"} + ,{"name": "k_EResultNoMatch","value": "42"} + ,{"name": "k_EResultAccountDisabled","value": "43"} + ,{"name": "k_EResultServiceReadOnly","value": "44"} + ,{"name": "k_EResultAccountNotFeatured","value": "45"} + ,{"name": "k_EResultAdministratorOK","value": "46"} + ,{"name": "k_EResultContentVersion","value": "47"} + ,{"name": "k_EResultTryAnotherCM","value": "48"} + ,{"name": "k_EResultPasswordRequiredToKickSession","value": "49"} + ,{"name": "k_EResultAlreadyLoggedInElsewhere","value": "50"} + ,{"name": "k_EResultSuspended","value": "51"} + ,{"name": "k_EResultCancelled","value": "52"} + ,{"name": "k_EResultDataCorruption","value": "53"} + ,{"name": "k_EResultDiskFull","value": "54"} + ,{"name": "k_EResultRemoteCallFailed","value": "55"} + ,{"name": "k_EResultPasswordUnset","value": "56"} + ,{"name": "k_EResultExternalAccountUnlinked","value": "57"} + ,{"name": "k_EResultPSNTicketInvalid","value": "58"} + ,{"name": "k_EResultExternalAccountAlreadyLinked","value": "59"} + ,{"name": "k_EResultRemoteFileConflict","value": "60"} + ,{"name": "k_EResultIllegalPassword","value": "61"} + ,{"name": "k_EResultSameAsPreviousValue","value": "62"} + ,{"name": "k_EResultAccountLogonDenied","value": "63"} + ,{"name": "k_EResultCannotUseOldPassword","value": "64"} + ,{"name": "k_EResultInvalidLoginAuthCode","value": "65"} + ,{"name": "k_EResultAccountLogonDeniedNoMail","value": "66"} + ,{"name": "k_EResultHardwareNotCapableOfIPT","value": "67"} + ,{"name": "k_EResultIPTInitError","value": "68"} + ,{"name": "k_EResultParentalControlRestricted","value": "69"} + ,{"name": "k_EResultFacebookQueryError","value": "70"} + ,{"name": "k_EResultExpiredLoginAuthCode","value": "71"} + ,{"name": "k_EResultIPLoginRestrictionFailed","value": "72"} + ,{"name": "k_EResultAccountLockedDown","value": "73"} + ,{"name": "k_EResultAccountLogonDeniedVerifiedEmailRequired","value": "74"} + ,{"name": "k_EResultNoMatchingURL","value": "75"} + ,{"name": "k_EResultBadResponse","value": "76"} + ,{"name": "k_EResultRequirePasswordReEntry","value": "77"} + ,{"name": "k_EResultValueOutOfRange","value": "78"} + ,{"name": "k_EResultUnexpectedError","value": "79"} + ,{"name": "k_EResultDisabled","value": "80"} + ,{"name": "k_EResultInvalidCEGSubmission","value": "81"} + ,{"name": "k_EResultRestrictedDevice","value": "82"} + ,{"name": "k_EResultRegionLocked","value": "83"} + ,{"name": "k_EResultRateLimitExceeded","value": "84"} + ,{"name": "k_EResultAccountLoginDeniedNeedTwoFactor","value": "85"} + ,{"name": "k_EResultItemDeleted","value": "86"} + ,{"name": "k_EResultAccountLoginDeniedThrottle","value": "87"} + ,{"name": "k_EResultTwoFactorCodeMismatch","value": "88"} + ,{"name": "k_EResultTwoFactorActivationCodeMismatch","value": "89"} + ,{"name": "k_EResultAccountAssociatedToMultiplePartners","value": "90"} + ,{"name": "k_EResultNotModified","value": "91"} + ,{"name": "k_EResultNoMobileDevice","value": "92"} + ,{"name": "k_EResultTimeNotSynced","value": "93"} + ,{"name": "k_EResultSmsCodeFailed","value": "94"} + ,{"name": "k_EResultAccountLimitExceeded","value": "95"} + ,{"name": "k_EResultAccountActivityLimitExceeded","value": "96"} + ,{"name": "k_EResultPhoneActivityLimitExceeded","value": "97"} + ,{"name": "k_EResultRefundToWallet","value": "98"} + ,{"name": "k_EResultEmailSendFailure","value": "99"} + ,{"name": "k_EResultNotSettled","value": "100"} + ,{"name": "k_EResultNeedCaptcha","value": "101"} + ,{"name": "k_EResultGSLTDenied","value": "102"} + ,{"name": "k_EResultGSOwnerDenied","value": "103"} + ,{"name": "k_EResultInvalidItemType","value": "104"} + ,{"name": "k_EResultIPBanned","value": "105"} + ,{"name": "k_EResultGSLTExpired","value": "106"} +]} +, {"enumname": "EVoiceResult","values": [ + {"name": "k_EVoiceResultOK","value": "0"} + ,{"name": "k_EVoiceResultNotInitialized","value": "1"} + ,{"name": "k_EVoiceResultNotRecording","value": "2"} + ,{"name": "k_EVoiceResultNoData","value": "3"} + ,{"name": "k_EVoiceResultBufferTooSmall","value": "4"} + ,{"name": "k_EVoiceResultDataCorrupted","value": "5"} + ,{"name": "k_EVoiceResultRestricted","value": "6"} + ,{"name": "k_EVoiceResultUnsupportedCodec","value": "7"} + ,{"name": "k_EVoiceResultReceiverOutOfDate","value": "8"} + ,{"name": "k_EVoiceResultReceiverDidNotAnswer","value": "9"} +]} +, {"enumname": "EDenyReason","values": [ + {"name": "k_EDenyInvalid","value": "0"} + ,{"name": "k_EDenyInvalidVersion","value": "1"} + ,{"name": "k_EDenyGeneric","value": "2"} + ,{"name": "k_EDenyNotLoggedOn","value": "3"} + ,{"name": "k_EDenyNoLicense","value": "4"} + ,{"name": "k_EDenyCheater","value": "5"} + ,{"name": "k_EDenyLoggedInElseWhere","value": "6"} + ,{"name": "k_EDenyUnknownText","value": "7"} + ,{"name": "k_EDenyIncompatibleAnticheat","value": "8"} + ,{"name": "k_EDenyMemoryCorruption","value": "9"} + ,{"name": "k_EDenyIncompatibleSoftware","value": "10"} + ,{"name": "k_EDenySteamConnectionLost","value": "11"} + ,{"name": "k_EDenySteamConnectionError","value": "12"} + ,{"name": "k_EDenySteamResponseTimedOut","value": "13"} + ,{"name": "k_EDenySteamValidationStalled","value": "14"} + ,{"name": "k_EDenySteamOwnerLeftGuestUser","value": "15"} +]} +, {"enumname": "EBeginAuthSessionResult","values": [ + {"name": "k_EBeginAuthSessionResultOK","value": "0"} + ,{"name": "k_EBeginAuthSessionResultInvalidTicket","value": "1"} + ,{"name": "k_EBeginAuthSessionResultDuplicateRequest","value": "2"} + ,{"name": "k_EBeginAuthSessionResultInvalidVersion","value": "3"} + ,{"name": "k_EBeginAuthSessionResultGameMismatch","value": "4"} + ,{"name": "k_EBeginAuthSessionResultExpiredTicket","value": "5"} +]} +, {"enumname": "EAuthSessionResponse","values": [ + {"name": "k_EAuthSessionResponseOK","value": "0"} + ,{"name": "k_EAuthSessionResponseUserNotConnectedToSteam","value": "1"} + ,{"name": "k_EAuthSessionResponseNoLicenseOrExpired","value": "2"} + ,{"name": "k_EAuthSessionResponseVACBanned","value": "3"} + ,{"name": "k_EAuthSessionResponseLoggedInElseWhere","value": "4"} + ,{"name": "k_EAuthSessionResponseVACCheckTimedOut","value": "5"} + ,{"name": "k_EAuthSessionResponseAuthTicketCanceled","value": "6"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed","value": "7"} + ,{"name": "k_EAuthSessionResponseAuthTicketInvalid","value": "8"} + ,{"name": "k_EAuthSessionResponsePublisherIssuedBan","value": "9"} +]} +, {"enumname": "EUserHasLicenseForAppResult","values": [ + {"name": "k_EUserHasLicenseResultHasLicense","value": "0"} + ,{"name": "k_EUserHasLicenseResultDoesNotHaveLicense","value": "1"} + ,{"name": "k_EUserHasLicenseResultNoAuth","value": "2"} +]} +, {"enumname": "EAccountType","values": [ + {"name": "k_EAccountTypeInvalid","value": "0"} + ,{"name": "k_EAccountTypeIndividual","value": "1"} + ,{"name": "k_EAccountTypeMultiseat","value": "2"} + ,{"name": "k_EAccountTypeGameServer","value": "3"} + ,{"name": "k_EAccountTypeAnonGameServer","value": "4"} + ,{"name": "k_EAccountTypePending","value": "5"} + ,{"name": "k_EAccountTypeContentServer","value": "6"} + ,{"name": "k_EAccountTypeClan","value": "7"} + ,{"name": "k_EAccountTypeChat","value": "8"} + ,{"name": "k_EAccountTypeConsoleUser","value": "9"} + ,{"name": "k_EAccountTypeAnonUser","value": "10"} + ,{"name": "k_EAccountTypeMax","value": "11"} +]} +, {"enumname": "EAppReleaseState","values": [ + {"name": "k_EAppReleaseState_Unknown","value": "0"} + ,{"name": "k_EAppReleaseState_Unavailable","value": "1"} + ,{"name": "k_EAppReleaseState_Prerelease","value": "2"} + ,{"name": "k_EAppReleaseState_PreloadOnly","value": "3"} + ,{"name": "k_EAppReleaseState_Released","value": "4"} +]} +, {"enumname": "EAppOwnershipFlags","values": [ + {"name": "k_EAppOwnershipFlags_None","value": "0"} + ,{"name": "k_EAppOwnershipFlags_OwnsLicense","value": "1"} + ,{"name": "k_EAppOwnershipFlags_FreeLicense","value": "2"} + ,{"name": "k_EAppOwnershipFlags_RegionRestricted","value": "4"} + ,{"name": "k_EAppOwnershipFlags_LowViolence","value": "8"} + ,{"name": "k_EAppOwnershipFlags_InvalidPlatform","value": "16"} + ,{"name": "k_EAppOwnershipFlags_SharedLicense","value": "32"} + ,{"name": "k_EAppOwnershipFlags_FreeWeekend","value": "64"} + ,{"name": "k_EAppOwnershipFlags_RetailLicense","value": "128"} + ,{"name": "k_EAppOwnershipFlags_LicenseLocked","value": "256"} + ,{"name": "k_EAppOwnershipFlags_LicensePending","value": "512"} + ,{"name": "k_EAppOwnershipFlags_LicenseExpired","value": "1024"} + ,{"name": "k_EAppOwnershipFlags_LicensePermanent","value": "2048"} + ,{"name": "k_EAppOwnershipFlags_LicenseRecurring","value": "4096"} + ,{"name": "k_EAppOwnershipFlags_LicenseCanceled","value": "8192"} + ,{"name": "k_EAppOwnershipFlags_AutoGrant","value": "16384"} + ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} + ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} + ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} +]} +, {"enumname": "EAppType","values": [ + {"name": "k_EAppType_Invalid","value": "0"} + ,{"name": "k_EAppType_Game","value": "1"} + ,{"name": "k_EAppType_Application","value": "2"} + ,{"name": "k_EAppType_Tool","value": "4"} + ,{"name": "k_EAppType_Demo","value": "8"} + ,{"name": "k_EAppType_Media_DEPRECATED","value": "16"} + ,{"name": "k_EAppType_DLC","value": "32"} + ,{"name": "k_EAppType_Guide","value": "64"} + ,{"name": "k_EAppType_Driver","value": "128"} + ,{"name": "k_EAppType_Config","value": "256"} + ,{"name": "k_EAppType_Hardware","value": "512"} + ,{"name": "k_EAppType_Franchise","value": "1024"} + ,{"name": "k_EAppType_Video","value": "2048"} + ,{"name": "k_EAppType_Plugin","value": "4096"} + ,{"name": "k_EAppType_Music","value": "8192"} + ,{"name": "k_EAppType_Series","value": "16384"} + ,{"name": "k_EAppType_Shortcut","value": "1073741824"} + ,{"name": "k_EAppType_DepotOnly","value": "-2147483648"} +]} +, {"enumname": "ESteamUserStatType","values": [ + {"name": "k_ESteamUserStatTypeINVALID","value": "0"} + ,{"name": "k_ESteamUserStatTypeINT","value": "1"} + ,{"name": "k_ESteamUserStatTypeFLOAT","value": "2"} + ,{"name": "k_ESteamUserStatTypeAVGRATE","value": "3"} + ,{"name": "k_ESteamUserStatTypeACHIEVEMENTS","value": "4"} + ,{"name": "k_ESteamUserStatTypeGROUPACHIEVEMENTS","value": "5"} + ,{"name": "k_ESteamUserStatTypeMAX","value": "6"} +]} +, {"enumname": "EChatEntryType","values": [ + {"name": "k_EChatEntryTypeInvalid","value": "0"} + ,{"name": "k_EChatEntryTypeChatMsg","value": "1"} + ,{"name": "k_EChatEntryTypeTyping","value": "2"} + ,{"name": "k_EChatEntryTypeInviteGame","value": "3"} + ,{"name": "k_EChatEntryTypeEmote","value": "4"} + ,{"name": "k_EChatEntryTypeLeftConversation","value": "6"} + ,{"name": "k_EChatEntryTypeEntered","value": "7"} + ,{"name": "k_EChatEntryTypeWasKicked","value": "8"} + ,{"name": "k_EChatEntryTypeWasBanned","value": "9"} + ,{"name": "k_EChatEntryTypeDisconnected","value": "10"} + ,{"name": "k_EChatEntryTypeHistoricalChat","value": "11"} + ,{"name": "k_EChatEntryTypeLinkBlocked","value": "14"} +]} +, {"enumname": "EChatRoomEnterResponse","values": [ + {"name": "k_EChatRoomEnterResponseSuccess","value": "1"} + ,{"name": "k_EChatRoomEnterResponseDoesntExist","value": "2"} + ,{"name": "k_EChatRoomEnterResponseNotAllowed","value": "3"} + ,{"name": "k_EChatRoomEnterResponseFull","value": "4"} + ,{"name": "k_EChatRoomEnterResponseError","value": "5"} + ,{"name": "k_EChatRoomEnterResponseBanned","value": "6"} + ,{"name": "k_EChatRoomEnterResponseLimited","value": "7"} + ,{"name": "k_EChatRoomEnterResponseClanDisabled","value": "8"} + ,{"name": "k_EChatRoomEnterResponseCommunityBan","value": "9"} + ,{"name": "k_EChatRoomEnterResponseMemberBlockedYou","value": "10"} + ,{"name": "k_EChatRoomEnterResponseYouBlockedMember","value": "11"} +]} +, {"enumname": "EChatSteamIDInstanceFlags","values": [ + {"name": "k_EChatAccountInstanceMask","value": "4095"} + ,{"name": "k_EChatInstanceFlagClan","value": "524288"} + ,{"name": "k_EChatInstanceFlagLobby","value": "262144"} + ,{"name": "k_EChatInstanceFlagMMSLobby","value": "131072"} +]} +, {"enumname": "EMarketingMessageFlags","values": [ + {"name": "k_EMarketingMessageFlagsNone","value": "0"} + ,{"name": "k_EMarketingMessageFlagsHighPriority","value": "1"} + ,{"name": "k_EMarketingMessageFlagsPlatformWindows","value": "2"} + ,{"name": "k_EMarketingMessageFlagsPlatformMac","value": "4"} + ,{"name": "k_EMarketingMessageFlagsPlatformLinux","value": "8"} + ,{"name": "k_EMarketingMessageFlagsPlatformRestrictions","value": "14"} +]} +, {"enumname": "ENotificationPosition","values": [ + {"name": "k_EPositionTopLeft","value": "0"} + ,{"name": "k_EPositionTopRight","value": "1"} + ,{"name": "k_EPositionBottomLeft","value": "2"} + ,{"name": "k_EPositionBottomRight","value": "3"} +]} +, {"enumname": "EBroadcastUploadResult","values": [ + {"name": "k_EBroadcastUploadResultNone","value": "0"} + ,{"name": "k_EBroadcastUploadResultOK","value": "1"} + ,{"name": "k_EBroadcastUploadResultInitFailed","value": "2"} + ,{"name": "k_EBroadcastUploadResultFrameFailed","value": "3"} + ,{"name": "k_EBroadcastUploadResultTimeout","value": "4"} + ,{"name": "k_EBroadcastUploadResultBandwidthExceeded","value": "5"} + ,{"name": "k_EBroadcastUploadResultLowFPS","value": "6"} + ,{"name": "k_EBroadcastUploadResultMissingKeyFrames","value": "7"} + ,{"name": "k_EBroadcastUploadResultNoConnection","value": "8"} + ,{"name": "k_EBroadcastUploadResultRelayFailed","value": "9"} + ,{"name": "k_EBroadcastUploadResultSettingsChanged","value": "10"} + ,{"name": "k_EBroadcastUploadResultMissingAudio","value": "11"} + ,{"name": "k_EBroadcastUploadResultTooFarBehind","value": "12"} + ,{"name": "k_EBroadcastUploadResultTranscodeBehind","value": "13"} +]} +, {"enumname": "ELaunchOptionType","values": [ + {"name": "k_ELaunchOptionType_None","value": "0"} + ,{"name": "k_ELaunchOptionType_Default","value": "1"} + ,{"name": "k_ELaunchOptionType_SafeMode","value": "2"} + ,{"name": "k_ELaunchOptionType_Multiplayer","value": "3"} + ,{"name": "k_ELaunchOptionType_Config","value": "4"} + ,{"name": "k_ELaunchOptionType_OpenVR","value": "5"} + ,{"name": "k_ELaunchOptionType_Server","value": "6"} + ,{"name": "k_ELaunchOptionType_Editor","value": "7"} + ,{"name": "k_ELaunchOptionType_Manual","value": "8"} + ,{"name": "k_ELaunchOptionType_Benchmark","value": "9"} + ,{"name": "k_ELaunchOptionType_Option1","value": "10"} + ,{"name": "k_ELaunchOptionType_Option2","value": "11"} + ,{"name": "k_ELaunchOptionType_Option3","value": "12"} + ,{"name": "k_ELaunchOptionType_OculusVR","value": "13"} + ,{"name": "k_ELaunchOptionType_OpenVROverlay","value": "14"} + ,{"name": "k_ELaunchOptionType_OSVR","value": "15"} + ,{"name": "k_ELaunchOptionType_Dialog","value": "1000"} +]} +, {"enumname": "EVRHMDType","values": [ + {"name": "k_eEVRHMDType_None","value": "-1"} + ,{"name": "k_eEVRHMDType_Unknown","value": "0"} + ,{"name": "k_eEVRHMDType_HTC_Dev","value": "1"} + ,{"name": "k_eEVRHMDType_HTC_VivePre","value": "2"} + ,{"name": "k_eEVRHMDType_HTC_Vive","value": "3"} + ,{"name": "k_eEVRHMDType_HTC_Unknown","value": "20"} + ,{"name": "k_eEVRHMDType_Oculus_DK1","value": "21"} + ,{"name": "k_eEVRHMDType_Oculus_DK2","value": "22"} + ,{"name": "k_eEVRHMDType_Oculus_Rift","value": "23"} + ,{"name": "k_eEVRHMDType_Oculus_Unknown","value": "40"} +]} +, {"enumname": "EControllerType","values": [ + {"name": "k_eControllerType_None","value": "-1"} + ,{"name": "k_eControllerType_Unknown","value": "0"} + ,{"name": "k_eControllerType_UnknownSteamController","value": "1"} + ,{"name": "k_eControllerType_SteamController","value": "2"} + ,{"name": "k_eControllerType_UnknownNonSteamController","value": "30"} + ,{"name": "k_eControllerType_XBox360Controller","value": "31"} + ,{"name": "k_eControllerType_XBoxOneController","value": "32"} + ,{"name": "k_eControllerType_PS3Controller","value": "33"} + ,{"name": "k_eControllerType_PS4Controller","value": "34"} + ,{"name": "k_eControllerType_WiiController","value": "35"} + ,{"name": "k_eControllerType_AppleController","value": "36"} +]} +, {"enumname": "CGameID::EGameIDType","values": [ + {"name": "k_EGameIDTypeApp","value": "0"} + ,{"name": "k_EGameIDTypeGameMod","value": "1"} + ,{"name": "k_EGameIDTypeShortcut","value": "2"} + ,{"name": "k_EGameIDTypeP2P","value": "3"} +]} +, {"enumname": "IPCFailure_t::EFailureType","values": [ + {"name": "k_EFailureFlushedCallbackQueue","value": "0"} + ,{"name": "k_EFailurePipeFail","value": "1"} +]} +, {"enumname": "EFriendRelationship","values": [ + {"name": "k_EFriendRelationshipNone","value": "0"} + ,{"name": "k_EFriendRelationshipBlocked","value": "1"} + ,{"name": "k_EFriendRelationshipRequestRecipient","value": "2"} + ,{"name": "k_EFriendRelationshipFriend","value": "3"} + ,{"name": "k_EFriendRelationshipRequestInitiator","value": "4"} + ,{"name": "k_EFriendRelationshipIgnored","value": "5"} + ,{"name": "k_EFriendRelationshipIgnoredFriend","value": "6"} + ,{"name": "k_EFriendRelationshipSuggested_DEPRECATED","value": "7"} + ,{"name": "k_EFriendRelationshipMax","value": "8"} +]} +, {"enumname": "EPersonaState","values": [ + {"name": "k_EPersonaStateOffline","value": "0"} + ,{"name": "k_EPersonaStateOnline","value": "1"} + ,{"name": "k_EPersonaStateBusy","value": "2"} + ,{"name": "k_EPersonaStateAway","value": "3"} + ,{"name": "k_EPersonaStateSnooze","value": "4"} + ,{"name": "k_EPersonaStateLookingToTrade","value": "5"} + ,{"name": "k_EPersonaStateLookingToPlay","value": "6"} + ,{"name": "k_EPersonaStateMax","value": "7"} +]} +, {"enumname": "EFriendFlags","values": [ + {"name": "k_EFriendFlagNone","value": "0"} + ,{"name": "k_EFriendFlagBlocked","value": "1"} + ,{"name": "k_EFriendFlagFriendshipRequested","value": "2"} + ,{"name": "k_EFriendFlagImmediate","value": "4"} + ,{"name": "k_EFriendFlagClanMember","value": "8"} + ,{"name": "k_EFriendFlagOnGameServer","value": "16"} + ,{"name": "k_EFriendFlagRequestingFriendship","value": "128"} + ,{"name": "k_EFriendFlagRequestingInfo","value": "256"} + ,{"name": "k_EFriendFlagIgnored","value": "512"} + ,{"name": "k_EFriendFlagIgnoredFriend","value": "1024"} + ,{"name": "k_EFriendFlagSuggested","value": "2048"} + ,{"name": "k_EFriendFlagChatMember","value": "4096"} + ,{"name": "k_EFriendFlagAll","value": "65535"} +]} +, {"enumname": "EUserRestriction","values": [ + {"name": "k_nUserRestrictionNone","value": "0"} + ,{"name": "k_nUserRestrictionUnknown","value": "1"} + ,{"name": "k_nUserRestrictionAnyChat","value": "2"} + ,{"name": "k_nUserRestrictionVoiceChat","value": "4"} + ,{"name": "k_nUserRestrictionGroupChat","value": "8"} + ,{"name": "k_nUserRestrictionRating","value": "16"} + ,{"name": "k_nUserRestrictionGameInvites","value": "32"} + ,{"name": "k_nUserRestrictionTrading","value": "64"} +]} +, {"enumname": "EOverlayToStoreFlag","values": [ + {"name": "k_EOverlayToStoreFlag_None","value": "0"} + ,{"name": "k_EOverlayToStoreFlag_AddToCart","value": "1"} + ,{"name": "k_EOverlayToStoreFlag_AddToCartAndShow","value": "2"} +]} +, {"enumname": "EPersonaChange","values": [ + {"name": "k_EPersonaChangeName","value": "1"} + ,{"name": "k_EPersonaChangeStatus","value": "2"} + ,{"name": "k_EPersonaChangeComeOnline","value": "4"} + ,{"name": "k_EPersonaChangeGoneOffline","value": "8"} + ,{"name": "k_EPersonaChangeGamePlayed","value": "16"} + ,{"name": "k_EPersonaChangeGameServer","value": "32"} + ,{"name": "k_EPersonaChangeAvatar","value": "64"} + ,{"name": "k_EPersonaChangeJoinedSource","value": "128"} + ,{"name": "k_EPersonaChangeLeftSource","value": "256"} + ,{"name": "k_EPersonaChangeRelationshipChanged","value": "512"} + ,{"name": "k_EPersonaChangeNameFirstSet","value": "1024"} + ,{"name": "k_EPersonaChangeFacebookInfo","value": "2048"} + ,{"name": "k_EPersonaChangeNickname","value": "4096"} + ,{"name": "k_EPersonaChangeSteamLevel","value": "8192"} +]} +, {"enumname": "ESteamAPICallFailure","values": [ + {"name": "k_ESteamAPICallFailureNone","value": "-1"} + ,{"name": "k_ESteamAPICallFailureSteamGone","value": "0"} + ,{"name": "k_ESteamAPICallFailureNetworkFailure","value": "1"} + ,{"name": "k_ESteamAPICallFailureInvalidHandle","value": "2"} + ,{"name": "k_ESteamAPICallFailureMismatchedCallback","value": "3"} +]} +, {"enumname": "EGamepadTextInputMode","values": [ + {"name": "k_EGamepadTextInputModeNormal","value": "0"} + ,{"name": "k_EGamepadTextInputModePassword","value": "1"} +]} +, {"enumname": "EGamepadTextInputLineMode","values": [ + {"name": "k_EGamepadTextInputLineModeSingleLine","value": "0"} + ,{"name": "k_EGamepadTextInputLineModeMultipleLines","value": "1"} +]} +, {"enumname": "ECheckFileSignature","values": [ + {"name": "k_ECheckFileSignatureInvalidSignature","value": "0"} + ,{"name": "k_ECheckFileSignatureValidSignature","value": "1"} + ,{"name": "k_ECheckFileSignatureFileNotFound","value": "2"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisApp","value": "3"} + ,{"name": "k_ECheckFileSignatureNoSignaturesFoundForThisFile","value": "4"} +]} +, {"enumname": "EMatchMakingServerResponse","values": [ + {"name": "eServerResponded","value": "0"} + ,{"name": "eServerFailedToRespond","value": "1"} + ,{"name": "eNoServersListedOnMasterServer","value": "2"} +]} +, {"enumname": "ELobbyType","values": [ + {"name": "k_ELobbyTypePrivate","value": "0"} + ,{"name": "k_ELobbyTypeFriendsOnly","value": "1"} + ,{"name": "k_ELobbyTypePublic","value": "2"} + ,{"name": "k_ELobbyTypeInvisible","value": "3"} +]} +, {"enumname": "ELobbyComparison","values": [ + {"name": "k_ELobbyComparisonEqualToOrLessThan","value": "-2"} + ,{"name": "k_ELobbyComparisonLessThan","value": "-1"} + ,{"name": "k_ELobbyComparisonEqual","value": "0"} + ,{"name": "k_ELobbyComparisonGreaterThan","value": "1"} + ,{"name": "k_ELobbyComparisonEqualToOrGreaterThan","value": "2"} + ,{"name": "k_ELobbyComparisonNotEqual","value": "3"} +]} +, {"enumname": "ELobbyDistanceFilter","values": [ + {"name": "k_ELobbyDistanceFilterClose","value": "0"} + ,{"name": "k_ELobbyDistanceFilterDefault","value": "1"} + ,{"name": "k_ELobbyDistanceFilterFar","value": "2"} + ,{"name": "k_ELobbyDistanceFilterWorldwide","value": "3"} +]} +, {"enumname": "EChatMemberStateChange","values": [ + {"name": "k_EChatMemberStateChangeEntered","value": "1"} + ,{"name": "k_EChatMemberStateChangeLeft","value": "2"} + ,{"name": "k_EChatMemberStateChangeDisconnected","value": "4"} + ,{"name": "k_EChatMemberStateChangeKicked","value": "8"} + ,{"name": "k_EChatMemberStateChangeBanned","value": "16"} +]} +, {"enumname": "ERemoteStoragePlatform","values": [ + {"name": "k_ERemoteStoragePlatformNone","value": "0"} + ,{"name": "k_ERemoteStoragePlatformWindows","value": "1"} + ,{"name": "k_ERemoteStoragePlatformOSX","value": "2"} + ,{"name": "k_ERemoteStoragePlatformPS3","value": "4"} + ,{"name": "k_ERemoteStoragePlatformLinux","value": "8"} + ,{"name": "k_ERemoteStoragePlatformReserved2","value": "16"} + ,{"name": "k_ERemoteStoragePlatformAll","value": "-1"} +]} +, {"enumname": "ERemoteStoragePublishedFileVisibility","values": [ + {"name": "k_ERemoteStoragePublishedFileVisibilityPublic","value": "0"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityFriendsOnly","value": "1"} + ,{"name": "k_ERemoteStoragePublishedFileVisibilityPrivate","value": "2"} +]} +, {"enumname": "EWorkshopFileType","values": [ + {"name": "k_EWorkshopFileTypeFirst","value": "0"} + ,{"name": "k_EWorkshopFileTypeCommunity","value": "0"} + ,{"name": "k_EWorkshopFileTypeMicrotransaction","value": "1"} + ,{"name": "k_EWorkshopFileTypeCollection","value": "2"} + ,{"name": "k_EWorkshopFileTypeArt","value": "3"} + ,{"name": "k_EWorkshopFileTypeVideo","value": "4"} + ,{"name": "k_EWorkshopFileTypeScreenshot","value": "5"} + ,{"name": "k_EWorkshopFileTypeGame","value": "6"} + ,{"name": "k_EWorkshopFileTypeSoftware","value": "7"} + ,{"name": "k_EWorkshopFileTypeConcept","value": "8"} + ,{"name": "k_EWorkshopFileTypeWebGuide","value": "9"} + ,{"name": "k_EWorkshopFileTypeIntegratedGuide","value": "10"} + ,{"name": "k_EWorkshopFileTypeMerch","value": "11"} + ,{"name": "k_EWorkshopFileTypeControllerBinding","value": "12"} + ,{"name": "k_EWorkshopFileTypeSteamworksAccessInvite","value": "13"} + ,{"name": "k_EWorkshopFileTypeSteamVideo","value": "14"} + ,{"name": "k_EWorkshopFileTypeGameManagedItem","value": "15"} + ,{"name": "k_EWorkshopFileTypeMax","value": "16"} +]} +, {"enumname": "EWorkshopVote","values": [ + {"name": "k_EWorkshopVoteUnvoted","value": "0"} + ,{"name": "k_EWorkshopVoteFor","value": "1"} + ,{"name": "k_EWorkshopVoteAgainst","value": "2"} + ,{"name": "k_EWorkshopVoteLater","value": "3"} +]} +, {"enumname": "EWorkshopFileAction","values": [ + {"name": "k_EWorkshopFileActionPlayed","value": "0"} + ,{"name": "k_EWorkshopFileActionCompleted","value": "1"} +]} +, {"enumname": "EWorkshopEnumerationType","values": [ + {"name": "k_EWorkshopEnumerationTypeRankedByVote","value": "0"} + ,{"name": "k_EWorkshopEnumerationTypeRecent","value": "1"} + ,{"name": "k_EWorkshopEnumerationTypeTrending","value": "2"} + ,{"name": "k_EWorkshopEnumerationTypeFavoritesOfFriends","value": "3"} + ,{"name": "k_EWorkshopEnumerationTypeVotedByFriends","value": "4"} + ,{"name": "k_EWorkshopEnumerationTypeContentByFriends","value": "5"} + ,{"name": "k_EWorkshopEnumerationTypeRecentFromFollowedUsers","value": "6"} +]} +, {"enumname": "EWorkshopVideoProvider","values": [ + {"name": "k_EWorkshopVideoProviderNone","value": "0"} + ,{"name": "k_EWorkshopVideoProviderYoutube","value": "1"} +]} +, {"enumname": "EUGCReadAction","values": [ + {"name": "k_EUGCRead_ContinueReadingUntilFinished","value": "0"} + ,{"name": "k_EUGCRead_ContinueReading","value": "1"} + ,{"name": "k_EUGCRead_Close","value": "2"} +]} +, {"enumname": "ELeaderboardDataRequest","values": [ + {"name": "k_ELeaderboardDataRequestGlobal","value": "0"} + ,{"name": "k_ELeaderboardDataRequestGlobalAroundUser","value": "1"} + ,{"name": "k_ELeaderboardDataRequestFriends","value": "2"} + ,{"name": "k_ELeaderboardDataRequestUsers","value": "3"} +]} +, {"enumname": "ELeaderboardSortMethod","values": [ + {"name": "k_ELeaderboardSortMethodNone","value": "0"} + ,{"name": "k_ELeaderboardSortMethodAscending","value": "1"} + ,{"name": "k_ELeaderboardSortMethodDescending","value": "2"} +]} +, {"enumname": "ELeaderboardDisplayType","values": [ + {"name": "k_ELeaderboardDisplayTypeNone","value": "0"} + ,{"name": "k_ELeaderboardDisplayTypeNumeric","value": "1"} + ,{"name": "k_ELeaderboardDisplayTypeTimeSeconds","value": "2"} + ,{"name": "k_ELeaderboardDisplayTypeTimeMilliSeconds","value": "3"} +]} +, {"enumname": "ELeaderboardUploadScoreMethod","values": [ + {"name": "k_ELeaderboardUploadScoreMethodNone","value": "0"} + ,{"name": "k_ELeaderboardUploadScoreMethodKeepBest","value": "1"} + ,{"name": "k_ELeaderboardUploadScoreMethodForceUpdate","value": "2"} +]} +, {"enumname": "ERegisterActivationCodeResult","values": [ + {"name": "k_ERegisterActivationCodeResultOK","value": "0"} + ,{"name": "k_ERegisterActivationCodeResultFail","value": "1"} + ,{"name": "k_ERegisterActivationCodeResultAlreadyRegistered","value": "2"} + ,{"name": "k_ERegisterActivationCodeResultTimeout","value": "3"} + ,{"name": "k_ERegisterActivationCodeAlreadyOwned","value": "4"} +]} +, {"enumname": "EP2PSessionError","values": [ + {"name": "k_EP2PSessionErrorNone","value": "0"} + ,{"name": "k_EP2PSessionErrorNotRunningApp","value": "1"} + ,{"name": "k_EP2PSessionErrorNoRightsToApp","value": "2"} + ,{"name": "k_EP2PSessionErrorDestinationNotLoggedIn","value": "3"} + ,{"name": "k_EP2PSessionErrorTimeout","value": "4"} + ,{"name": "k_EP2PSessionErrorMax","value": "5"} +]} +, {"enumname": "EP2PSend","values": [ + {"name": "k_EP2PSendUnreliable","value": "0"} + ,{"name": "k_EP2PSendUnreliableNoDelay","value": "1"} + ,{"name": "k_EP2PSendReliable","value": "2"} + ,{"name": "k_EP2PSendReliableWithBuffering","value": "3"} +]} +, {"enumname": "ESNetSocketState","values": [ + {"name": "k_ESNetSocketStateInvalid","value": "0"} + ,{"name": "k_ESNetSocketStateConnected","value": "1"} + ,{"name": "k_ESNetSocketStateInitiated","value": "10"} + ,{"name": "k_ESNetSocketStateLocalCandidatesFound","value": "11"} + ,{"name": "k_ESNetSocketStateReceivedRemoteCandidates","value": "12"} + ,{"name": "k_ESNetSocketStateChallengeHandshake","value": "15"} + ,{"name": "k_ESNetSocketStateDisconnecting","value": "21"} + ,{"name": "k_ESNetSocketStateLocalDisconnect","value": "22"} + ,{"name": "k_ESNetSocketStateTimeoutDuringConnect","value": "23"} + ,{"name": "k_ESNetSocketStateRemoteEndDisconnected","value": "24"} + ,{"name": "k_ESNetSocketStateConnectionBroken","value": "25"} +]} +, {"enumname": "ESNetSocketConnectionType","values": [ + {"name": "k_ESNetSocketConnectionTypeNotConnected","value": "0"} + ,{"name": "k_ESNetSocketConnectionTypeUDP","value": "1"} + ,{"name": "k_ESNetSocketConnectionTypeUDPRelay","value": "2"} +]} +, {"enumname": "EVRScreenshotType","values": [ + {"name": "k_EVRScreenshotType_None","value": "0"} + ,{"name": "k_EVRScreenshotType_Mono","value": "1"} + ,{"name": "k_EVRScreenshotType_Stereo","value": "2"} + ,{"name": "k_EVRScreenshotType_MonoCubemap","value": "3"} + ,{"name": "k_EVRScreenshotType_MonoPanorama","value": "4"} + ,{"name": "k_EVRScreenshotType_StereoPanorama","value": "5"} +]} +, {"enumname": "AudioPlayback_Status","values": [ + {"name": "AudioPlayback_Undefined","value": "0"} + ,{"name": "AudioPlayback_Playing","value": "1"} + ,{"name": "AudioPlayback_Paused","value": "2"} + ,{"name": "AudioPlayback_Idle","value": "3"} +]} +, {"enumname": "EHTTPMethod","values": [ + {"name": "k_EHTTPMethodInvalid","value": "0"} + ,{"name": "k_EHTTPMethodGET","value": "1"} + ,{"name": "k_EHTTPMethodHEAD","value": "2"} + ,{"name": "k_EHTTPMethodPOST","value": "3"} + ,{"name": "k_EHTTPMethodPUT","value": "4"} + ,{"name": "k_EHTTPMethodDELETE","value": "5"} + ,{"name": "k_EHTTPMethodOPTIONS","value": "6"} + ,{"name": "k_EHTTPMethodPATCH","value": "7"} +]} +, {"enumname": "EHTTPStatusCode","values": [ + {"name": "k_EHTTPStatusCodeInvalid","value": "0"} + ,{"name": "k_EHTTPStatusCode100Continue","value": "100"} + ,{"name": "k_EHTTPStatusCode101SwitchingProtocols","value": "101"} + ,{"name": "k_EHTTPStatusCode200OK","value": "200"} + ,{"name": "k_EHTTPStatusCode201Created","value": "201"} + ,{"name": "k_EHTTPStatusCode202Accepted","value": "202"} + ,{"name": "k_EHTTPStatusCode203NonAuthoritative","value": "203"} + ,{"name": "k_EHTTPStatusCode204NoContent","value": "204"} + ,{"name": "k_EHTTPStatusCode205ResetContent","value": "205"} + ,{"name": "k_EHTTPStatusCode206PartialContent","value": "206"} + ,{"name": "k_EHTTPStatusCode300MultipleChoices","value": "300"} + ,{"name": "k_EHTTPStatusCode301MovedPermanently","value": "301"} + ,{"name": "k_EHTTPStatusCode302Found","value": "302"} + ,{"name": "k_EHTTPStatusCode303SeeOther","value": "303"} + ,{"name": "k_EHTTPStatusCode304NotModified","value": "304"} + ,{"name": "k_EHTTPStatusCode305UseProxy","value": "305"} + ,{"name": "k_EHTTPStatusCode307TemporaryRedirect","value": "307"} + ,{"name": "k_EHTTPStatusCode400BadRequest","value": "400"} + ,{"name": "k_EHTTPStatusCode401Unauthorized","value": "401"} + ,{"name": "k_EHTTPStatusCode402PaymentRequired","value": "402"} + ,{"name": "k_EHTTPStatusCode403Forbidden","value": "403"} + ,{"name": "k_EHTTPStatusCode404NotFound","value": "404"} + ,{"name": "k_EHTTPStatusCode405MethodNotAllowed","value": "405"} + ,{"name": "k_EHTTPStatusCode406NotAcceptable","value": "406"} + ,{"name": "k_EHTTPStatusCode407ProxyAuthRequired","value": "407"} + ,{"name": "k_EHTTPStatusCode408RequestTimeout","value": "408"} + ,{"name": "k_EHTTPStatusCode409Conflict","value": "409"} + ,{"name": "k_EHTTPStatusCode410Gone","value": "410"} + ,{"name": "k_EHTTPStatusCode411LengthRequired","value": "411"} + ,{"name": "k_EHTTPStatusCode412PreconditionFailed","value": "412"} + ,{"name": "k_EHTTPStatusCode413RequestEntityTooLarge","value": "413"} + ,{"name": "k_EHTTPStatusCode414RequestURITooLong","value": "414"} + ,{"name": "k_EHTTPStatusCode415UnsupportedMediaType","value": "415"} + ,{"name": "k_EHTTPStatusCode416RequestedRangeNotSatisfiable","value": "416"} + ,{"name": "k_EHTTPStatusCode417ExpectationFailed","value": "417"} + ,{"name": "k_EHTTPStatusCode4xxUnknown","value": "418"} + ,{"name": "k_EHTTPStatusCode429TooManyRequests","value": "429"} + ,{"name": "k_EHTTPStatusCode500InternalServerError","value": "500"} + ,{"name": "k_EHTTPStatusCode501NotImplemented","value": "501"} + ,{"name": "k_EHTTPStatusCode502BadGateway","value": "502"} + ,{"name": "k_EHTTPStatusCode503ServiceUnavailable","value": "503"} + ,{"name": "k_EHTTPStatusCode504GatewayTimeout","value": "504"} + ,{"name": "k_EHTTPStatusCode505HTTPVersionNotSupported","value": "505"} + ,{"name": "k_EHTTPStatusCode5xxUnknown","value": "599"} +]} +, {"enumname": "ESteamControllerPad","values": [ + {"name": "k_ESteamControllerPad_Left","value": "0"} + ,{"name": "k_ESteamControllerPad_Right","value": "1"} +]} +, {"enumname": "EControllerSource","values": [ + {"name": "k_EControllerSource_None","value": "0"} + ,{"name": "k_EControllerSource_LeftTrackpad","value": "1"} + ,{"name": "k_EControllerSource_RightTrackpad","value": "2"} + ,{"name": "k_EControllerSource_Joystick","value": "3"} + ,{"name": "k_EControllerSource_ABXY","value": "4"} + ,{"name": "k_EControllerSource_Switch","value": "5"} + ,{"name": "k_EControllerSource_LeftTrigger","value": "6"} + ,{"name": "k_EControllerSource_RightTrigger","value": "7"} + ,{"name": "k_EControllerSource_Gyro","value": "8"} + ,{"name": "k_EControllerSource_Count","value": "9"} +]} +, {"enumname": "EControllerSourceMode","values": [ + {"name": "k_EControllerSourceMode_None","value": "0"} + ,{"name": "k_EControllerSourceMode_Dpad","value": "1"} + ,{"name": "k_EControllerSourceMode_Buttons","value": "2"} + ,{"name": "k_EControllerSourceMode_FourButtons","value": "3"} + ,{"name": "k_EControllerSourceMode_AbsoluteMouse","value": "4"} + ,{"name": "k_EControllerSourceMode_RelativeMouse","value": "5"} + ,{"name": "k_EControllerSourceMode_JoystickMove","value": "6"} + ,{"name": "k_EControllerSourceMode_JoystickCamera","value": "7"} + ,{"name": "k_EControllerSourceMode_ScrollWheel","value": "8"} + ,{"name": "k_EControllerSourceMode_Trigger","value": "9"} + ,{"name": "k_EControllerSourceMode_TouchMenu","value": "10"} + ,{"name": "k_EControllerSourceMode_MouseJoystick","value": "11"} + ,{"name": "k_EControllerSourceMode_MouseRegion","value": "12"} + ,{"name": "k_EControllerSourceMode_RadialMenu","value": "13"} + ,{"name": "k_EControllerSourceMode_Switches","value": "14"} +]} +, {"enumname": "EControllerActionOrigin","values": [ + {"name": "k_EControllerActionOrigin_None","value": "0"} + ,{"name": "k_EControllerActionOrigin_A","value": "1"} + ,{"name": "k_EControllerActionOrigin_B","value": "2"} + ,{"name": "k_EControllerActionOrigin_X","value": "3"} + ,{"name": "k_EControllerActionOrigin_Y","value": "4"} + ,{"name": "k_EControllerActionOrigin_LeftBumper","value": "5"} + ,{"name": "k_EControllerActionOrigin_RightBumper","value": "6"} + ,{"name": "k_EControllerActionOrigin_LeftGrip","value": "7"} + ,{"name": "k_EControllerActionOrigin_RightGrip","value": "8"} + ,{"name": "k_EControllerActionOrigin_Start","value": "9"} + ,{"name": "k_EControllerActionOrigin_Back","value": "10"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Touch","value": "11"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Swipe","value": "12"} + ,{"name": "k_EControllerActionOrigin_LeftPad_Click","value": "13"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadNorth","value": "14"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadSouth","value": "15"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadWest","value": "16"} + ,{"name": "k_EControllerActionOrigin_LeftPad_DPadEast","value": "17"} + ,{"name": "k_EControllerActionOrigin_RightPad_Touch","value": "18"} + ,{"name": "k_EControllerActionOrigin_RightPad_Swipe","value": "19"} + ,{"name": "k_EControllerActionOrigin_RightPad_Click","value": "20"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadNorth","value": "21"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadSouth","value": "22"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadWest","value": "23"} + ,{"name": "k_EControllerActionOrigin_RightPad_DPadEast","value": "24"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Pull","value": "25"} + ,{"name": "k_EControllerActionOrigin_LeftTrigger_Click","value": "26"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Pull","value": "27"} + ,{"name": "k_EControllerActionOrigin_RightTrigger_Click","value": "28"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Move","value": "29"} + ,{"name": "k_EControllerActionOrigin_LeftStick_Click","value": "30"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadNorth","value": "31"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadSouth","value": "32"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadWest","value": "33"} + ,{"name": "k_EControllerActionOrigin_LeftStick_DPadEast","value": "34"} + ,{"name": "k_EControllerActionOrigin_Gyro_Move","value": "35"} + ,{"name": "k_EControllerActionOrigin_Gyro_Pitch","value": "36"} + ,{"name": "k_EControllerActionOrigin_Gyro_Yaw","value": "37"} + ,{"name": "k_EControllerActionOrigin_Gyro_Roll","value": "38"} + ,{"name": "k_EControllerActionOrigin_Count","value": "39"} +]} +, {"enumname": "EControllerActivationType","values": [ + {"name": "k_EControllerActivationType_None","value": "0"} + ,{"name": "k_EControllerActivationType_FullPress","value": "1"} + ,{"name": "k_EControllerActivationType_SoftPress","value": "2"} + ,{"name": "k_EControllerActivationType_StartPress","value": "3"} + ,{"name": "k_EControllerActivationType_Release","value": "4"} + ,{"name": "k_EControllerActivationType_LongPress","value": "5"} + ,{"name": "k_EControllerActivationType_DoublePress","value": "6"} + ,{"name": "k_EControllerActivationType_Analog","value": "7"} +]} +, {"enumname": "EControllerPressureButton","values": [ + {"name": "k_EControllerPressureButton_LeftTrackPad","value": "0"} + ,{"name": "k_EControllerPressureButton_RightTrackPad","value": "1"} + ,{"name": "k_EControllerPressureButton_LeftBumper","value": "2"} + ,{"name": "k_EControllerPressureButton_RightBumper","value": "3"} + ,{"name": "k_EControllerPressureButton_LeftGripLower","value": "4"} + ,{"name": "k_EControllerPressureButton_RightGripLower","value": "5"} + ,{"name": "k_EControllerPressureButton_LeftGripUpper","value": "6"} + ,{"name": "k_EControllerPressureButton_RightGripUpper","value": "7"} + ,{"name": "k_EControllerPressureButton_Invalid","value": "8"} +]} +, {"enumname": "EControllerActivatorOutputAxis","values": [ + {"name": "k_EOutputAxisLeftTrigger","value": "0"} + ,{"name": "k_EOutputAxisRightTrigger","value": "1"} + ,{"name": "k_EOutputAxisLeftThumbXPos","value": "2"} + ,{"name": "k_EOutputAxisLeftThumbXNeg","value": "3"} + ,{"name": "k_EOutputAxisLeftThumbYPos","value": "4"} + ,{"name": "k_EOutputAxisLeftThumbYNeg","value": "5"} + ,{"name": "k_EOutputAxisRightThumbXPos","value": "6"} + ,{"name": "k_EOutputAxisRightThumbXNeg","value": "7"} + ,{"name": "k_EOutputAxisRightThumbYPos","value": "8"} + ,{"name": "k_EOutputAxisRightThumbYNeg","value": "9"} +]} +, {"enumname": "EControllerConfigFeature","values": [ + {"name": "k_EControllerConfigFeature_None","value": "0"} + ,{"name": "k_EControllerConfigFeature_Gamepad","value": "1"} + ,{"name": "k_EControllerConfigFeature_Keyboard","value": "2"} + ,{"name": "k_EControllerConfigFeature_Mouse","value": "3"} + ,{"name": "k_EControllerConfigFeature_Gyro","value": "4"} + ,{"name": "k_EControllerConfigFeature_TouchMenu","value": "5"} + ,{"name": "k_EControllerConfigFeature_ModeShift","value": "6"} + ,{"name": "k_EControllerConfigFeature_ActionSet","value": "7"} + ,{"name": "k_EControllerConfigFeature_Activator","value": "8"} +]} +, {"enumname": "EControllerPopupMenuActivationType","values": [ + {"name": "k_EMenuButtonPress","value": "0"} + ,{"name": "k_EMenuButtonRelease","value": "1"} + ,{"name": "k_EMenuTouchRelease","value": "2"} + ,{"name": "k_EMenuTouchAlways","value": "3"} +]} +, {"enumname": "EUGCMatchingUGCType","values": [ + {"name": "k_EUGCMatchingUGCType_Items","value": "0"} + ,{"name": "k_EUGCMatchingUGCType_Items_Mtx","value": "1"} + ,{"name": "k_EUGCMatchingUGCType_Items_ReadyToUse","value": "2"} + ,{"name": "k_EUGCMatchingUGCType_Collections","value": "3"} + ,{"name": "k_EUGCMatchingUGCType_Artwork","value": "4"} + ,{"name": "k_EUGCMatchingUGCType_Videos","value": "5"} + ,{"name": "k_EUGCMatchingUGCType_Screenshots","value": "6"} + ,{"name": "k_EUGCMatchingUGCType_AllGuides","value": "7"} + ,{"name": "k_EUGCMatchingUGCType_WebGuides","value": "8"} + ,{"name": "k_EUGCMatchingUGCType_IntegratedGuides","value": "9"} + ,{"name": "k_EUGCMatchingUGCType_UsableInGame","value": "10"} + ,{"name": "k_EUGCMatchingUGCType_ControllerBindings","value": "11"} + ,{"name": "k_EUGCMatchingUGCType_GameManagedItems","value": "12"} + ,{"name": "k_EUGCMatchingUGCType_All","value": "-1"} +]} +, {"enumname": "EUserUGCList","values": [ + {"name": "k_EUserUGCList_Published","value": "0"} + ,{"name": "k_EUserUGCList_VotedOn","value": "1"} + ,{"name": "k_EUserUGCList_VotedUp","value": "2"} + ,{"name": "k_EUserUGCList_VotedDown","value": "3"} + ,{"name": "k_EUserUGCList_WillVoteLater","value": "4"} + ,{"name": "k_EUserUGCList_Favorited","value": "5"} + ,{"name": "k_EUserUGCList_Subscribed","value": "6"} + ,{"name": "k_EUserUGCList_UsedOrPlayed","value": "7"} + ,{"name": "k_EUserUGCList_Followed","value": "8"} +]} +, {"enumname": "EUserUGCListSortOrder","values": [ + {"name": "k_EUserUGCListSortOrder_CreationOrderDesc","value": "0"} + ,{"name": "k_EUserUGCListSortOrder_CreationOrderAsc","value": "1"} + ,{"name": "k_EUserUGCListSortOrder_TitleAsc","value": "2"} + ,{"name": "k_EUserUGCListSortOrder_LastUpdatedDesc","value": "3"} + ,{"name": "k_EUserUGCListSortOrder_SubscriptionDateDesc","value": "4"} + ,{"name": "k_EUserUGCListSortOrder_VoteScoreDesc","value": "5"} + ,{"name": "k_EUserUGCListSortOrder_ForModeration","value": "6"} +]} +, {"enumname": "EUGCQuery","values": [ + {"name": "k_EUGCQuery_RankedByVote","value": "0"} + ,{"name": "k_EUGCQuery_RankedByPublicationDate","value": "1"} + ,{"name": "k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate","value": "2"} + ,{"name": "k_EUGCQuery_RankedByTrend","value": "3"} + ,{"name": "k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate","value": "4"} + ,{"name": "k_EUGCQuery_CreatedByFriendsRankedByPublicationDate","value": "5"} + ,{"name": "k_EUGCQuery_RankedByNumTimesReported","value": "6"} + ,{"name": "k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate","value": "7"} + ,{"name": "k_EUGCQuery_NotYetRated","value": "8"} + ,{"name": "k_EUGCQuery_RankedByTotalVotesAsc","value": "9"} + ,{"name": "k_EUGCQuery_RankedByVotesUp","value": "10"} + ,{"name": "k_EUGCQuery_RankedByTextSearch","value": "11"} + ,{"name": "k_EUGCQuery_RankedByTotalUniqueSubscriptions","value": "12"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeTrend","value": "13"} + ,{"name": "k_EUGCQuery_RankedByTotalPlaytime","value": "14"} + ,{"name": "k_EUGCQuery_RankedByAveragePlaytimeTrend","value": "15"} + ,{"name": "k_EUGCQuery_RankedByLifetimeAveragePlaytime","value": "16"} + ,{"name": "k_EUGCQuery_RankedByPlaytimeSessionsTrend","value": "17"} + ,{"name": "k_EUGCQuery_RankedByLifetimePlaytimeSessions","value": "18"} +]} +, {"enumname": "EItemUpdateStatus","values": [ + {"name": "k_EItemUpdateStatusInvalid","value": "0"} + ,{"name": "k_EItemUpdateStatusPreparingConfig","value": "1"} + ,{"name": "k_EItemUpdateStatusPreparingContent","value": "2"} + ,{"name": "k_EItemUpdateStatusUploadingContent","value": "3"} + ,{"name": "k_EItemUpdateStatusUploadingPreviewFile","value": "4"} + ,{"name": "k_EItemUpdateStatusCommittingChanges","value": "5"} +]} +, {"enumname": "EItemState","values": [ + {"name": "k_EItemStateNone","value": "0"} + ,{"name": "k_EItemStateSubscribed","value": "1"} + ,{"name": "k_EItemStateLegacyItem","value": "2"} + ,{"name": "k_EItemStateInstalled","value": "4"} + ,{"name": "k_EItemStateNeedsUpdate","value": "8"} + ,{"name": "k_EItemStateDownloading","value": "16"} + ,{"name": "k_EItemStateDownloadPending","value": "32"} +]} +, {"enumname": "EItemStatistic","values": [ + {"name": "k_EItemStatistic_NumSubscriptions","value": "0"} + ,{"name": "k_EItemStatistic_NumFavorites","value": "1"} + ,{"name": "k_EItemStatistic_NumFollowers","value": "2"} + ,{"name": "k_EItemStatistic_NumUniqueSubscriptions","value": "3"} + ,{"name": "k_EItemStatistic_NumUniqueFavorites","value": "4"} + ,{"name": "k_EItemStatistic_NumUniqueFollowers","value": "5"} + ,{"name": "k_EItemStatistic_NumUniqueWebsiteViews","value": "6"} + ,{"name": "k_EItemStatistic_ReportScore","value": "7"} + ,{"name": "k_EItemStatistic_NumSecondsPlayed","value": "8"} + ,{"name": "k_EItemStatistic_NumPlaytimeSessions","value": "9"} + ,{"name": "k_EItemStatistic_NumComments","value": "10"} +]} +, {"enumname": "EItemPreviewType","values": [ + {"name": "k_EItemPreviewType_Image","value": "0"} + ,{"name": "k_EItemPreviewType_YouTubeVideo","value": "1"} + ,{"name": "k_EItemPreviewType_Sketchfab","value": "2"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_HorizontalCross","value": "3"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_LatLong","value": "4"} + ,{"name": "k_EItemPreviewType_ReservedMax","value": "255"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLMouseButton","values": [ + {"name": "eHTMLMouseButton_Left","value": "0"} + ,{"name": "eHTMLMouseButton_Right","value": "1"} + ,{"name": "eHTMLMouseButton_Middle","value": "2"} +]} +, {"enumname": "ISteamHTMLSurface::EMouseCursor","values": [ + {"name": "dc_user","value": "0"} + ,{"name": "dc_none","value": "1"} + ,{"name": "dc_arrow","value": "2"} + ,{"name": "dc_ibeam","value": "3"} + ,{"name": "dc_hourglass","value": "4"} + ,{"name": "dc_waitarrow","value": "5"} + ,{"name": "dc_crosshair","value": "6"} + ,{"name": "dc_up","value": "7"} + ,{"name": "dc_sizenw","value": "8"} + ,{"name": "dc_sizese","value": "9"} + ,{"name": "dc_sizene","value": "10"} + ,{"name": "dc_sizesw","value": "11"} + ,{"name": "dc_sizew","value": "12"} + ,{"name": "dc_sizee","value": "13"} + ,{"name": "dc_sizen","value": "14"} + ,{"name": "dc_sizes","value": "15"} + ,{"name": "dc_sizewe","value": "16"} + ,{"name": "dc_sizens","value": "17"} + ,{"name": "dc_sizeall","value": "18"} + ,{"name": "dc_no","value": "19"} + ,{"name": "dc_hand","value": "20"} + ,{"name": "dc_blank","value": "21"} + ,{"name": "dc_middle_pan","value": "22"} + ,{"name": "dc_north_pan","value": "23"} + ,{"name": "dc_north_east_pan","value": "24"} + ,{"name": "dc_east_pan","value": "25"} + ,{"name": "dc_south_east_pan","value": "26"} + ,{"name": "dc_south_pan","value": "27"} + ,{"name": "dc_south_west_pan","value": "28"} + ,{"name": "dc_west_pan","value": "29"} + ,{"name": "dc_north_west_pan","value": "30"} + ,{"name": "dc_alias","value": "31"} + ,{"name": "dc_cell","value": "32"} + ,{"name": "dc_colresize","value": "33"} + ,{"name": "dc_copycur","value": "34"} + ,{"name": "dc_verticaltext","value": "35"} + ,{"name": "dc_rowresize","value": "36"} + ,{"name": "dc_zoomin","value": "37"} + ,{"name": "dc_zoomout","value": "38"} + ,{"name": "dc_help","value": "39"} + ,{"name": "dc_custom","value": "40"} + ,{"name": "dc_last","value": "41"} +]} +, {"enumname": "ISteamHTMLSurface::EHTMLKeyModifiers","values": [ + {"name": "k_eHTMLKeyModifier_None","value": "0"} + ,{"name": "k_eHTMLKeyModifier_AltDown","value": "1"} + ,{"name": "k_eHTMLKeyModifier_CtrlDown","value": "2"} + ,{"name": "k_eHTMLKeyModifier_ShiftDown","value": "4"} +]} +, {"enumname": "ESteamItemFlags","values": [ + {"name": "k_ESteamItemNoTrade","value": "1"} + ,{"name": "k_ESteamItemRemoved","value": "256"} + ,{"name": "k_ESteamItemConsumed","value": "512"} +]} +], +"consts":[{ + "constname": "k_iSteamUserCallbacks","consttype": "int", "constval": "100"} +,{ + "constname": "k_iSteamGameServerCallbacks","consttype": "int", "constval": "200"} +,{ + "constname": "k_iSteamFriendsCallbacks","consttype": "int", "constval": "300"} +,{ + "constname": "k_iSteamBillingCallbacks","consttype": "int", "constval": "400"} +,{ + "constname": "k_iSteamMatchmakingCallbacks","consttype": "int", "constval": "500"} +,{ + "constname": "k_iSteamContentServerCallbacks","consttype": "int", "constval": "600"} +,{ + "constname": "k_iSteamUtilsCallbacks","consttype": "int", "constval": "700"} +,{ + "constname": "k_iClientFriendsCallbacks","consttype": "int", "constval": "800"} +,{ + "constname": "k_iClientUserCallbacks","consttype": "int", "constval": "900"} +,{ + "constname": "k_iSteamAppsCallbacks","consttype": "int", "constval": "1000"} +,{ + "constname": "k_iSteamUserStatsCallbacks","consttype": "int", "constval": "1100"} +,{ + "constname": "k_iSteamNetworkingCallbacks","consttype": "int", "constval": "1200"} +,{ + "constname": "k_iClientRemoteStorageCallbacks","consttype": "int", "constval": "1300"} +,{ + "constname": "k_iClientDepotBuilderCallbacks","consttype": "int", "constval": "1400"} +,{ + "constname": "k_iSteamGameServerItemsCallbacks","consttype": "int", "constval": "1500"} +,{ + "constname": "k_iClientUtilsCallbacks","consttype": "int", "constval": "1600"} +,{ + "constname": "k_iSteamGameCoordinatorCallbacks","consttype": "int", "constval": "1700"} +,{ + "constname": "k_iSteamGameServerStatsCallbacks","consttype": "int", "constval": "1800"} +,{ + "constname": "k_iSteam2AsyncCallbacks","consttype": "int", "constval": "1900"} +,{ + "constname": "k_iSteamGameStatsCallbacks","consttype": "int", "constval": "2000"} +,{ + "constname": "k_iClientHTTPCallbacks","consttype": "int", "constval": "2100"} +,{ + "constname": "k_iClientScreenshotsCallbacks","consttype": "int", "constval": "2200"} +,{ + "constname": "k_iSteamScreenshotsCallbacks","consttype": "int", "constval": "2300"} +,{ + "constname": "k_iClientAudioCallbacks","consttype": "int", "constval": "2400"} +,{ + "constname": "k_iClientUnifiedMessagesCallbacks","consttype": "int", "constval": "2500"} +,{ + "constname": "k_iSteamStreamLauncherCallbacks","consttype": "int", "constval": "2600"} +,{ + "constname": "k_iClientControllerCallbacks","consttype": "int", "constval": "2700"} +,{ + "constname": "k_iSteamControllerCallbacks","consttype": "int", "constval": "2800"} +,{ + "constname": "k_iClientParentalSettingsCallbacks","consttype": "int", "constval": "2900"} +,{ + "constname": "k_iClientDeviceAuthCallbacks","consttype": "int", "constval": "3000"} +,{ + "constname": "k_iClientNetworkDeviceManagerCallbacks","consttype": "int", "constval": "3100"} +,{ + "constname": "k_iClientMusicCallbacks","consttype": "int", "constval": "3200"} +,{ + "constname": "k_iClientRemoteClientManagerCallbacks","consttype": "int", "constval": "3300"} +,{ + "constname": "k_iClientUGCCallbacks","consttype": "int", "constval": "3400"} +,{ + "constname": "k_iSteamStreamClientCallbacks","consttype": "int", "constval": "3500"} +,{ + "constname": "k_IClientProductBuilderCallbacks","consttype": "int", "constval": "3600"} +,{ + "constname": "k_iClientShortcutsCallbacks","consttype": "int", "constval": "3700"} +,{ + "constname": "k_iClientRemoteControlManagerCallbacks","consttype": "int", "constval": "3800"} +,{ + "constname": "k_iSteamAppListCallbacks","consttype": "int", "constval": "3900"} +,{ + "constname": "k_iSteamMusicCallbacks","consttype": "int", "constval": "4000"} +,{ + "constname": "k_iSteamMusicRemoteCallbacks","consttype": "int", "constval": "4100"} +,{ + "constname": "k_iClientVRCallbacks","consttype": "int", "constval": "4200"} +,{ + "constname": "k_iClientGameNotificationCallbacks","consttype": "int", "constval": "4300"} +,{ + "constname": "k_iSteamGameNotificationCallbacks","consttype": "int", "constval": "4400"} +,{ + "constname": "k_iSteamHTMLSurfaceCallbacks","consttype": "int", "constval": "4500"} +,{ + "constname": "k_iClientVideoCallbacks","consttype": "int", "constval": "4600"} +,{ + "constname": "k_iClientInventoryCallbacks","consttype": "int", "constval": "4700"} +,{ + "constname": "k_iClientBluetoothManagerCallbacks","consttype": "int", "constval": "4800"} +,{ + "constname": "k_cchPersonaNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cwchPersonaNameMax","consttype": "int", "constval": "32"} +,{ + "constname": "k_cchMaxRichPresenceKeys","consttype": "int", "constval": "20"} +,{ + "constname": "k_cchMaxRichPresenceKeyLength","consttype": "int", "constval": "64"} +,{ + "constname": "k_cchMaxRichPresenceValueLength","consttype": "int", "constval": "256"} +,{ + "constname": "k_cchStatNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cchLeaderboardNameMax","consttype": "int", "constval": "128"} +,{ + "constname": "k_cLeaderboardDetailsMax","consttype": "int", "constval": "64"} +,{ + "constname": "k_InvalidUnifiedMessageHandle","consttype": "const ClientUnifiedMessageHandle", "constval": "0"} +,{ + "constname": "k_SteamItemInstanceIDInvalid","consttype": "const SteamItemInstanceID_t", "constval": "18446744073709551615"} +,{ + "constname": "k_SteamInventoryResultInvalid","consttype": "const SteamInventoryResult_t", "constval": "-1"} +], +"structs":[{"struct": "CSteamID","fields": [ +{ "fieldname": "m_steamid", "fieldtype": "union SteamID_t"}]} +,{"struct": "CSteamID::SteamID_t","fields": [ +{ "fieldname": "m_comp", "fieldtype": "struct SteamIDComponent_t"}, +{ "fieldname": "m_unAll64Bits", "fieldtype": "uint64"}]} +,{"struct": "CSteamID::SteamID_t::SteamIDComponent_t","fields": [ +{ "fieldname": "m_unAccountID", "fieldtype": "uint32"}, +{ "fieldname": "m_unAccountInstance", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EAccountType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_EUniverse", "fieldtype": "enum EUniverse"}]} +,{"struct": "CGameID::GameID_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nType", "fieldtype": "unsigned int"}, +{ "fieldname": "m_nModID", "fieldtype": "unsigned int"}]} +,{"struct": "CGameID::(anonymous)","fields": [ +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_gameID", "fieldtype": "struct CGameID::GameID_t"}]} +,{"struct": "ValvePackingSentinel_t","fields": [ +{ "fieldname": "m_u32", "fieldtype": "uint32"}, +{ "fieldname": "m_u64", "fieldtype": "uint64"}, +{ "fieldname": "m_u16", "fieldtype": "uint16"}, +{ "fieldname": "m_d", "fieldtype": "double"}]} +,{"struct": "CallbackMsg_t","fields": [ +{ "fieldname": "m_hSteamUser", "fieldtype": "HSteamUser"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_pubParam", "fieldtype": "uint8 *"}, +{ "fieldname": "m_cubParam", "fieldtype": "int"}]} +,{"struct": "SteamServerConnectFailure_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bStillRetrying", "fieldtype": "_Bool"}]} +,{"struct": "SteamServersDisconnected_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ClientGameServerDeny_t","fields": [ +{ "fieldname": "m_uAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_unGameServerIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGameServerPort", "fieldtype": "uint16"}, +{ "fieldname": "m_bSecure", "fieldtype": "uint16"}, +{ "fieldname": "m_uReason", "fieldtype": "uint32"}]} +,{"struct": "ValidateAuthTicketResponse_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eAuthSessionResponse", "fieldtype": "enum EAuthSessionResponse"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "MicroTxnAuthorizationResponse_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_ulOrderID", "fieldtype": "uint64"}, +{ "fieldname": "m_bAuthorized", "fieldtype": "uint8"}]} +,{"struct": "EncryptedAppTicketResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GetAuthSessionTicketResponse_t","fields": [ +{ "fieldname": "m_hAuthTicket", "fieldtype": "HAuthTicket"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "GameWebCallback_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [256]"}]} +,{"struct": "StoreAuthURLResponse_t","fields": [ +{ "fieldname": "m_szURL", "fieldtype": "char [512]"}]} +,{"struct": "FriendGameInfo_t","fields": [ +{ "fieldname": "m_gameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_unGameIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usGamePort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FriendSessionStateInfo_t","fields": [ +{ "fieldname": "m_uiOnlineSessionInstances", "fieldtype": "uint32"}, +{ "fieldname": "m_uiPublishedToFriendsSessionInstance", "fieldtype": "uint8"}]} +,{"struct": "PersonaStateChange_t","fields": [ +{ "fieldname": "m_ulSteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_nChangeFlags", "fieldtype": "int"}]} +,{"struct": "GameOverlayActivated_t","fields": [ +{ "fieldname": "m_bActive", "fieldtype": "uint8"}]} +,{"struct": "GameServerChangeRequested_t","fields": [ +{ "fieldname": "m_rgchServer", "fieldtype": "char [64]"}, +{ "fieldname": "m_rgchPassword", "fieldtype": "char [64]"}]} +,{"struct": "GameLobbyJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}]} +,{"struct": "AvatarImageLoaded_t","fields": [ +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iImage", "fieldtype": "int"}, +{ "fieldname": "m_iWide", "fieldtype": "int"}, +{ "fieldname": "m_iTall", "fieldtype": "int"}]} +,{"struct": "ClanOfficerListResponse_t","fields": [ +{ "fieldname": "m_steamIDClan", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_cOfficers", "fieldtype": "int"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "FriendRichPresenceUpdate_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "GameRichPresenceJoinRequested_t","fields": [ +{ "fieldname": "m_steamIDFriend", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_rgchConnect", "fieldtype": "char [256]"}]} +,{"struct": "GameConnectedClanChatMsg_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "GameConnectedChatJoin_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GameConnectedChatLeave_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bKicked", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDropped", "fieldtype": "_Bool"}]} +,{"struct": "DownloadClanActivityCountsResult_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}]} +,{"struct": "JoinClanChatRoomCompletionResult_t","fields": [ +{ "fieldname": "m_steamIDClanChat", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eChatRoomEnterResponse", "fieldtype": "enum EChatRoomEnterResponse"}]} +,{"struct": "GameConnectedFriendChatMsg_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_iMessageID", "fieldtype": "int"}]} +,{"struct": "FriendsGetFollowerCount_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nCount", "fieldtype": "int"}]} +,{"struct": "FriendsIsFollowing_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bIsFollowing", "fieldtype": "_Bool"}]} +,{"struct": "FriendsEnumerateFollowingList_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_rgSteamID", "fieldtype": "class CSteamID [50]"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}]} +,{"struct": "SetPersonaNameResponse_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_bLocalSuccess", "fieldtype": "_Bool"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "LowBatteryPower_t","fields": [ +{ "fieldname": "m_nMinutesBatteryLeft", "fieldtype": "uint8"}]} +,{"struct": "SteamAPICallCompleted_t","fields": [ +{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_cubParam", "fieldtype": "uint32"}]} +,{"struct": "CheckFileSignature_t","fields": [ +{ "fieldname": "m_eCheckFileSignature", "fieldtype": "enum ECheckFileSignature"}]} +,{"struct": "GamepadTextInputDismissed_t","fields": [ +{ "fieldname": "m_bSubmitted", "fieldtype": "_Bool"}, +{ "fieldname": "m_unSubmittedText", "fieldtype": "uint32"}]} +,{"struct": "MatchMakingKeyValuePair_t","fields": [ +{ "fieldname": "m_szKey", "fieldtype": "char [256]"}, +{ "fieldname": "m_szValue", "fieldtype": "char [256]"}]} +,{"struct": "servernetadr_t","fields": [ +{ "fieldname": "m_usConnectionPort", "fieldtype": "uint16"}, +{ "fieldname": "m_usQueryPort", "fieldtype": "uint16"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}]} +,{"struct": "gameserveritem_t","fields": [ +{ "fieldname": "m_NetAdr", "fieldtype": "class servernetadr_t"}, +{ "fieldname": "m_nPing", "fieldtype": "int"}, +{ "fieldname": "m_bHadSuccessfulResponse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bDoNotRefresh", "fieldtype": "_Bool"}, +{ "fieldname": "m_szGameDir", "fieldtype": "char [32]"}, +{ "fieldname": "m_szMap", "fieldtype": "char [32]"}, +{ "fieldname": "m_szGameDescription", "fieldtype": "char [64]"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nMaxPlayers", "fieldtype": "int"}, +{ "fieldname": "m_nBotPlayers", "fieldtype": "int"}, +{ "fieldname": "m_bPassword", "fieldtype": "_Bool"}, +{ "fieldname": "m_bSecure", "fieldtype": "_Bool"}, +{ "fieldname": "m_ulTimeLastPlayed", "fieldtype": "uint32"}, +{ "fieldname": "m_nServerVersion", "fieldtype": "int"}, +{ "fieldname": "m_szServerName", "fieldtype": "char [64]"}, +{ "fieldname": "m_szGameTags", "fieldtype": "char [128]"}, +{ "fieldname": "m_steamID", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListChanged_t","fields": [ +{ "fieldname": "m_nIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nQueryPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nConnPort", "fieldtype": "uint32"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_nFlags", "fieldtype": "uint32"}, +{ "fieldname": "m_bAdd", "fieldtype": "_Bool"}, +{ "fieldname": "m_unAccountId", "fieldtype": "AccountID_t"}]} +,{"struct": "LobbyInvite_t","fields": [ +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulGameID", "fieldtype": "uint64"}]} +,{"struct": "LobbyEnter_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatPermissions", "fieldtype": "uint32"}, +{ "fieldname": "m_bLocked", "fieldtype": "_Bool"}, +{ "fieldname": "m_EChatRoomEnterResponse", "fieldtype": "uint32"}]} +,{"struct": "LobbyDataUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMember", "fieldtype": "uint64"}, +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}]} +,{"struct": "LobbyChatUpdate_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUserChanged", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDMakingChange", "fieldtype": "uint64"}, +{ "fieldname": "m_rgfChatMemberStateChange", "fieldtype": "uint32"}]} +,{"struct": "LobbyChatMsg_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDUser", "fieldtype": "uint64"}, +{ "fieldname": "m_eChatEntryType", "fieldtype": "uint8"}, +{ "fieldname": "m_iChatID", "fieldtype": "uint32"}]} +,{"struct": "LobbyGameCreated_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDGameServer", "fieldtype": "uint64"}, +{ "fieldname": "m_unIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usPort", "fieldtype": "uint16"}]} +,{"struct": "LobbyMatchList_t","fields": [ +{ "fieldname": "m_nLobbiesMatching", "fieldtype": "uint32"}]} +,{"struct": "LobbyKicked_t","fields": [ +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}, +{ "fieldname": "m_ulSteamIDAdmin", "fieldtype": "uint64"}, +{ "fieldname": "m_bKickedDueToDisconnect", "fieldtype": "uint8"}]} +,{"struct": "LobbyCreated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulSteamIDLobby", "fieldtype": "uint64"}]} +,{"struct": "PSNGameBootInviteResult_t","fields": [ +{ "fieldname": "m_bGameBootInviteExists", "fieldtype": "_Bool"}, +{ "fieldname": "m_steamIDLobby", "fieldtype": "class CSteamID"}]} +,{"struct": "FavoritesListAccountsUpdated_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamParamStringArray_t","fields": [ +{ "fieldname": "m_ppStrings", "fieldtype": "const char **"}, +{ "fieldname": "m_nNumStrings", "fieldtype": "int32"}]} +,{"struct": "RemoteStorageAppSyncedClient_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumDownloads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncedServer_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumUploads", "fieldtype": "int"}]} +,{"struct": "RemoteStorageAppSyncProgress_t","fields": [ +{ "fieldname": "m_rgchCurrentFile", "fieldtype": "char [260]"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_uBytesTransferredThisChunk", "fieldtype": "uint32"}, +{ "fieldname": "m_dAppPercentComplete", "fieldtype": "double"}, +{ "fieldname": "m_bUploading", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageAppSyncStatusCheck_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileShareResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_rgchFilename", "fieldtype": "char [260]"}]} +,{"struct": "RemoteStoragePublishFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDeletePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserPublishedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeSubscribed", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStorageUnsubscribePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUpdatePublishedFileResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageDownloadUGCResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nSizeInBytes", "fieldtype": "int32"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageGetPublishedFileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStorageEnumerateWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgScore", "fieldtype": "float [50]"}, +{ "fieldname": "m_nAppId", "fieldtype": "AppId_t"}, +{ "fieldname": "m_unStartIndex", "fieldtype": "uint32"}]} +,{"struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nVotesFor", "fieldtype": "int32"}, +{ "fieldname": "m_nVotesAgainst", "fieldtype": "int32"}, +{ "fieldname": "m_nReports", "fieldtype": "int32"}, +{ "fieldname": "m_fScore", "fieldtype": "float"}]} +,{"struct": "RemoteStoragePublishedFileSubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileUnsubscribed_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStoragePublishedFileDeleted_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoteStorageUserVoteDetails_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eVote", "fieldtype": "enum EWorkshopVote"}]} +,{"struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}]} +,{"struct": "RemoteStorageSetUserPublishedFileActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}]} +,{"struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eAction", "fieldtype": "enum EWorkshopFileAction"}, +{ "fieldname": "m_nResultsReturned", "fieldtype": "int32"}, +{ "fieldname": "m_nTotalResultCount", "fieldtype": "int32"}, +{ "fieldname": "m_rgPublishedFileId", "fieldtype": "PublishedFileId_t [50]"}, +{ "fieldname": "m_rgRTimeUpdated", "fieldtype": "uint32 [50]"}]} +,{"struct": "RemoteStoragePublishFileProgress_t","fields": [ +{ "fieldname": "m_dPercentFile", "fieldtype": "double"}, +{ "fieldname": "m_bPreview", "fieldtype": "_Bool"}]} +,{"struct": "RemoteStoragePublishedFileUpdated_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_ulUnused", "fieldtype": "uint64"}]} +,{"struct": "RemoteStorageFileWriteAsyncComplete_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "RemoteStorageFileReadAsyncComplete_t","fields": [ +{ "fieldname": "m_hFileReadAsync", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cubRead", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardEntry_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_nGlobalRank", "fieldtype": "int32"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_cDetails", "fieldtype": "int32"}, +{ "fieldname": "m_hUGC", "fieldtype": "UGCHandle_t"}]} +,{"struct": "UserStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserStatsStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserAchievementStored_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_bGroupAchievement", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_nCurProgress", "fieldtype": "uint32"}, +{ "fieldname": "m_nMaxProgress", "fieldtype": "uint32"}]} +,{"struct": "LeaderboardFindResult_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_bLeaderboardFound", "fieldtype": "uint8"}]} +,{"struct": "LeaderboardScoresDownloaded_t","fields": [ +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_hSteamLeaderboardEntries", "fieldtype": "SteamLeaderboardEntries_t"}, +{ "fieldname": "m_cEntryCount", "fieldtype": "int"}]} +,{"struct": "LeaderboardScoreUploaded_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}, +{ "fieldname": "m_nScore", "fieldtype": "int32"}, +{ "fieldname": "m_bScoreChanged", "fieldtype": "uint8"}, +{ "fieldname": "m_nGlobalRankNew", "fieldtype": "int"}, +{ "fieldname": "m_nGlobalRankPrevious", "fieldtype": "int"}]} +,{"struct": "NumberOfCurrentPlayers_t","fields": [ +{ "fieldname": "m_bSuccess", "fieldtype": "uint8"}, +{ "fieldname": "m_cPlayers", "fieldtype": "int32"}]} +,{"struct": "UserStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "UserAchievementIconFetched_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "class CGameID"}, +{ "fieldname": "m_rgchAchievementName", "fieldtype": "char [128]"}, +{ "fieldname": "m_bAchieved", "fieldtype": "_Bool"}, +{ "fieldname": "m_nIconHandle", "fieldtype": "int"}]} +,{"struct": "GlobalAchievementPercentagesReady_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "LeaderboardUGCSet_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_hSteamLeaderboard", "fieldtype": "SteamLeaderboard_t"}]} +,{"struct": "PS3TrophiesInstalled_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulRequiredDiskSpace", "fieldtype": "uint64"}]} +,{"struct": "GlobalStatsReceived_t","fields": [ +{ "fieldname": "m_nGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "DlcInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "RegisterActivationCodeResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum ERegisterActivationCodeResult"}, +{ "fieldname": "m_unPackageRegistered", "fieldtype": "uint32"}]} +,{"struct": "AppProofOfPurchaseKeyResponse_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nAppID", "fieldtype": "uint32"}, +{ "fieldname": "m_cchKeyLength", "fieldtype": "uint32"}, +{ "fieldname": "m_rgchKey", "fieldtype": "char [240]"}]} +,{"struct": "FileDetailsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_ulFileSize", "fieldtype": "uint64"}, +{ "fieldname": "m_FileSHA", "fieldtype": "uint8 [20]"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint32"}]} +,{"struct": "P2PSessionState_t","fields": [ +{ "fieldname": "m_bConnectionActive", "fieldtype": "uint8"}, +{ "fieldname": "m_bConnecting", "fieldtype": "uint8"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}, +{ "fieldname": "m_bUsingRelay", "fieldtype": "uint8"}, +{ "fieldname": "m_nBytesQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nPacketsQueuedForSend", "fieldtype": "int32"}, +{ "fieldname": "m_nRemoteIP", "fieldtype": "uint32"}, +{ "fieldname": "m_nRemotePort", "fieldtype": "uint16"}]} +,{"struct": "P2PSessionRequest_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}]} +,{"struct": "P2PSessionConnectFail_t","fields": [ +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eP2PSessionError", "fieldtype": "uint8"}]} +,{"struct": "SocketStatusCallback_t","fields": [ +{ "fieldname": "m_hSocket", "fieldtype": "SNetSocket_t"}, +{ "fieldname": "m_hListenSocket", "fieldtype": "SNetListenSocket_t"}, +{ "fieldname": "m_steamIDRemote", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eSNetSocketState", "fieldtype": "int"}]} +,{"struct": "ScreenshotReady_t","fields": [ +{ "fieldname": "m_hLocal", "fieldtype": "ScreenshotHandle"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "VolumeHasChanged_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerWantsShuffled_t","fields": [ +{ "fieldname": "m_bShuffled", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsLooped_t","fields": [ +{ "fieldname": "m_bLooped", "fieldtype": "_Bool"}]} +,{"struct": "MusicPlayerWantsVolume_t","fields": [ +{ "fieldname": "m_flNewVolume", "fieldtype": "float"}]} +,{"struct": "MusicPlayerSelectsQueueEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerSelectsPlaylistEntry_t","fields": [ +{ "fieldname": "nID", "fieldtype": "int"}]} +,{"struct": "MusicPlayerWantsPlayingRepeatStatus_t","fields": [ +{ "fieldname": "m_nPlayingRepeatStatus", "fieldtype": "int"}]} +,{"struct": "HTTPRequestCompleted_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_bRequestSuccessful", "fieldtype": "_Bool"}, +{ "fieldname": "m_eStatusCode", "fieldtype": "enum EHTTPStatusCode"}, +{ "fieldname": "m_unBodySize", "fieldtype": "uint32"}]} +,{"struct": "HTTPRequestHeadersReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}]} +,{"struct": "HTTPRequestDataReceived_t","fields": [ +{ "fieldname": "m_hRequest", "fieldtype": "HTTPRequestHandle"}, +{ "fieldname": "m_ulContextValue", "fieldtype": "uint64"}, +{ "fieldname": "m_cOffset", "fieldtype": "uint32"}, +{ "fieldname": "m_cBytesReceived", "fieldtype": "uint32"}]} +,{"struct": "SteamUnifiedMessagesSendMethodResult_t","fields": [ +{ "fieldname": "m_hHandle", "fieldtype": "ClientUnifiedMessageHandle"}, +{ "fieldname": "m_unContext", "fieldtype": "uint64"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unResponseSize", "fieldtype": "uint32"}]} +,{"struct": "ControllerAnalogActionData_t","fields": [ +{ "fieldname": "eMode", "fieldtype": "enum EControllerSourceMode"}, +{ "fieldname": "x", "fieldtype": "float"}, +{ "fieldname": "y", "fieldtype": "float"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerDigitalActionData_t","fields": [ +{ "fieldname": "bState", "fieldtype": "_Bool"}, +{ "fieldname": "bActive", "fieldtype": "_Bool"}]} +,{"struct": "ControllerMotionData_t","fields": [ +{ "fieldname": "rotQuatX", "fieldtype": "float"}, +{ "fieldname": "rotQuatY", "fieldtype": "float"}, +{ "fieldname": "rotQuatZ", "fieldtype": "float"}, +{ "fieldname": "rotQuatW", "fieldtype": "float"}, +{ "fieldname": "posAccelX", "fieldtype": "float"}, +{ "fieldname": "posAccelY", "fieldtype": "float"}, +{ "fieldname": "posAccelZ", "fieldtype": "float"}, +{ "fieldname": "rotVelX", "fieldtype": "float"}, +{ "fieldname": "rotVelY", "fieldtype": "float"}, +{ "fieldname": "rotVelZ", "fieldtype": "float"}]} +,{"struct": "SteamUGCDetails_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_eFileType", "fieldtype": "enum EWorkshopFileType"}, +{ "fieldname": "m_nCreatorAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nConsumerAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchTitle", "fieldtype": "char [129]"}, +{ "fieldname": "m_rgchDescription", "fieldtype": "char [8000]"}, +{ "fieldname": "m_ulSteamIDOwner", "fieldtype": "uint64"}, +{ "fieldname": "m_rtimeCreated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeUpdated", "fieldtype": "uint32"}, +{ "fieldname": "m_rtimeAddedToUserList", "fieldtype": "uint32"}, +{ "fieldname": "m_eVisibility", "fieldtype": "enum ERemoteStoragePublishedFileVisibility"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_bAcceptedForUse", "fieldtype": "_Bool"}, +{ "fieldname": "m_bTagsTruncated", "fieldtype": "_Bool"}, +{ "fieldname": "m_rgchTags", "fieldtype": "char [1025]"}, +{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_hPreviewFile", "fieldtype": "UGCHandle_t"}, +{ "fieldname": "m_pchFileName", "fieldtype": "char [260]"}, +{ "fieldname": "m_nFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_nPreviewFileSize", "fieldtype": "int32"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}, +{ "fieldname": "m_unVotesUp", "fieldtype": "uint32"}, +{ "fieldname": "m_unVotesDown", "fieldtype": "uint32"}, +{ "fieldname": "m_flScore", "fieldtype": "float"}, +{ "fieldname": "m_unNumChildren", "fieldtype": "uint32"}]} +,{"struct": "SteamUGCQueryCompleted_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "UGCQueryHandle_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unNumResultsReturned", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMatchingResults", "fieldtype": "uint32"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "SteamUGCRequestUGCDetailsResult_t","fields": [ +{ "fieldname": "m_details", "fieldtype": "struct SteamUGCDetails_t"}, +{ "fieldname": "m_bCachedData", "fieldtype": "_Bool"}]} +,{"struct": "CreateItemResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "SubmitItemUpdateResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype": "_Bool"}]} +,{"struct": "DownloadItemResult_t","fields": [ +{ "fieldname": "m_unAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "UserFavoriteItemsListChanged_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bWasAddRequest", "fieldtype": "_Bool"}]} +,{"struct": "SetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVoteUp", "fieldtype": "_Bool"}]} +,{"struct": "GetUserItemVoteResult_t","fields": [ +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_bVotedUp", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVotedDown", "fieldtype": "_Bool"}, +{ "fieldname": "m_bVoteSkipped", "fieldtype": "_Bool"}]} +,{"struct": "StartPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "StopPlaytimeTrackingResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "SteamAppInstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "SteamAppUninstalled_t","fields": [ +{ "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} +,{"struct": "HTML_BrowserReady_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_NeedsPaint_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pBGRA", "fieldtype": "const char *"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateX", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateY", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateWide", "fieldtype": "uint32"}, +{ "fieldname": "unUpdateTall", "fieldtype": "uint32"}, +{ "fieldname": "unScrollX", "fieldtype": "uint32"}, +{ "fieldname": "unScrollY", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "unPageSerial", "fieldtype": "uint32"}]} +,{"struct": "HTML_StartRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchTarget", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}]} +,{"struct": "HTML_CloseBrowser_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_URLChanged_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPostData", "fieldtype": "const char *"}, +{ "fieldname": "bIsRedirect", "fieldtype": "_Bool"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}, +{ "fieldname": "bNewNavigation", "fieldtype": "_Bool"}]} +,{"struct": "HTML_FinishedRequest_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "pchPageTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_OpenLinkInNewTab_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}]} +,{"struct": "HTML_ChangedTitle_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}]} +,{"struct": "HTML_SearchResults_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unResults", "fieldtype": "uint32"}, +{ "fieldname": "unCurrentMatch", "fieldtype": "uint32"}]} +,{"struct": "HTML_CanGoBackAndForward_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "bCanGoBack", "fieldtype": "_Bool"}, +{ "fieldname": "bCanGoForward", "fieldtype": "_Bool"}]} +,{"struct": "HTML_HorizontalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_VerticalScroll_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "unScrollMax", "fieldtype": "uint32"}, +{ "fieldname": "unScrollCurrent", "fieldtype": "uint32"}, +{ "fieldname": "flPageScale", "fieldtype": "float"}, +{ "fieldname": "bVisible", "fieldtype": "_Bool"}, +{ "fieldname": "unPageSize", "fieldtype": "uint32"}]} +,{"struct": "HTML_LinkAtPosition_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "x", "fieldtype": "uint32"}, +{ "fieldname": "y", "fieldtype": "uint32"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "bInput", "fieldtype": "_Bool"}, +{ "fieldname": "bLiveLink", "fieldtype": "_Bool"}]} +,{"struct": "HTML_JSAlert_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_JSConfirm_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMessage", "fieldtype": "const char *"}]} +,{"struct": "HTML_FileOpenDialog_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchTitle", "fieldtype": "const char *"}, +{ "fieldname": "pchInitialFile", "fieldtype": "const char *"}]} +,{"struct": "HTML_NewWindow_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchURL", "fieldtype": "const char *"}, +{ "fieldname": "unX", "fieldtype": "uint32"}, +{ "fieldname": "unY", "fieldtype": "uint32"}, +{ "fieldname": "unWide", "fieldtype": "uint32"}, +{ "fieldname": "unTall", "fieldtype": "uint32"}, +{ "fieldname": "unNewWindow_BrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "HTML_SetCursor_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "eMouseCursor", "fieldtype": "uint32"}]} +,{"struct": "HTML_StatusText_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_ShowToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_UpdateToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}, +{ "fieldname": "pchMsg", "fieldtype": "const char *"}]} +,{"struct": "HTML_HideToolTip_t","fields": [ +{ "fieldname": "unBrowserHandle", "fieldtype": "HHTMLBrowser"}]} +,{"struct": "SteamItemDetails_t","fields": [ +{ "fieldname": "m_itemId", "fieldtype": "SteamItemInstanceID_t"}, +{ "fieldname": "m_iDefinition", "fieldtype": "SteamItemDef_t"}, +{ "fieldname": "m_unQuantity", "fieldtype": "uint16"}, +{ "fieldname": "m_unFlags", "fieldtype": "uint16"}]} +,{"struct": "SteamInventoryResultReady_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}, +{ "fieldname": "m_result", "fieldtype": "enum EResult"}]} +,{"struct": "SteamInventoryFullUpdate_t","fields": [ +{ "fieldname": "m_handle", "fieldtype": "SteamInventoryResult_t"}]} +,{"struct": "BroadcastUploadStop_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EBroadcastUploadResult"}]} +,{"struct": "GetVideoURLResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, +{ "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} +,{"struct": "CSteamAPIContext","fields": [ +{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, +{ "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, +{ "fieldname": "m_pSteamFriends", "fieldtype": "class ISteamFriends *"}, +{ "fieldname": "m_pSteamUtils", "fieldtype": "class ISteamUtils *"}, +{ "fieldname": "m_pSteamMatchmaking", "fieldtype": "class ISteamMatchmaking *"}, +{ "fieldname": "m_pSteamUserStats", "fieldtype": "class ISteamUserStats *"}, +{ "fieldname": "m_pSteamApps", "fieldtype": "class ISteamApps *"}, +{ "fieldname": "m_pSteamMatchmakingServers", "fieldtype": "class ISteamMatchmakingServers *"}, +{ "fieldname": "m_pSteamNetworking", "fieldtype": "class ISteamNetworking *"}, +{ "fieldname": "m_pSteamRemoteStorage", "fieldtype": "class ISteamRemoteStorage *"}, +{ "fieldname": "m_pSteamScreenshots", "fieldtype": "class ISteamScreenshots *"}, +{ "fieldname": "m_pSteamHTTP", "fieldtype": "class ISteamHTTP *"}, +{ "fieldname": "m_pSteamUnifiedMessages", "fieldtype": "class ISteamUnifiedMessages *"}, +{ "fieldname": "m_pController", "fieldtype": "class ISteamController *"}, +{ "fieldname": "m_pSteamUGC", "fieldtype": "class ISteamUGC *"}, +{ "fieldname": "m_pSteamAppList", "fieldtype": "class ISteamAppList *"}, +{ "fieldname": "m_pSteamMusic", "fieldtype": "class ISteamMusic *"}, +{ "fieldname": "m_pSteamMusicRemote", "fieldtype": "class ISteamMusicRemote *"}, +{ "fieldname": "m_pSteamHTMLSurface", "fieldtype": "class ISteamHTMLSurface *"}, +{ "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, +{ "fieldname": "m_pSteamVideo", "fieldtype": "class ISteamVideo *"}]} +,{"struct": "CCallbackBase","fields": [ +{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}]} +,{"struct": "CCallResult","fields": [ +{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "CCallback","fields": [ +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "GSClientApprove_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} +,{"struct": "GSClientDeny_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}, +{ "fieldname": "m_rgchOptionalText", "fieldtype": "char [128]"}]} +,{"struct": "GSClientKick_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_eDenyReason", "fieldtype": "enum EDenyReason"}]} +,{"struct": "GSClientAchievementStatus_t","fields": [ +{ "fieldname": "m_SteamID", "fieldtype": "uint64"}, +{ "fieldname": "m_pchAchievement", "fieldtype": "char [128]"}, +{ "fieldname": "m_bUnlocked", "fieldtype": "_Bool"}]} +,{"struct": "GSPolicyResponse_t","fields": [ +{ "fieldname": "m_bSecure", "fieldtype": "uint8"}]} +,{"struct": "GSGameplayStats_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nRank", "fieldtype": "int32"}, +{ "fieldname": "m_unTotalConnects", "fieldtype": "uint32"}, +{ "fieldname": "m_unTotalMinutesPlayed", "fieldtype": "uint32"}]} +,{"struct": "GSClientGroupStatus_t","fields": [ +{ "fieldname": "m_SteamIDUser", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_SteamIDGroup", "fieldtype": "class CSteamID"}, +{ "fieldname": "m_bMember", "fieldtype": "_Bool"}, +{ "fieldname": "m_bOfficer", "fieldtype": "_Bool"}]} +,{"struct": "GSReputation_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unReputationScore", "fieldtype": "uint32"}, +{ "fieldname": "m_bBanned", "fieldtype": "_Bool"}, +{ "fieldname": "m_unBannedIP", "fieldtype": "uint32"}, +{ "fieldname": "m_usBannedPort", "fieldtype": "uint16"}, +{ "fieldname": "m_ulBannedGameID", "fieldtype": "uint64"}, +{ "fieldname": "m_unBanExpires", "fieldtype": "uint32"}]} +,{"struct": "AssociateWithClanResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "ComputeNewPlayerCompatibilityResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_cPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_cPlayersThatCandidateDoesntLike", "fieldtype": "int"}, +{ "fieldname": "m_cClanPlayersThatDontLikeCandidate", "fieldtype": "int"}, +{ "fieldname": "m_SteamIDCandidate", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsReceived_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsStored_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +,{"struct": "GSStatsUnloaded_t","fields": [ +{ "fieldname": "m_steamIDUser", "fieldtype": "class CSteamID"}]} +], +"methods":[{ + "classname": "ISteamClient", + "methodname": "CreateSteamPipe", + "returntype": "HSteamPipe" +} +,{ + "classname": "ISteamClient", + "methodname": "BReleaseSteamPipe", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ConnectToGlobalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "CreateLocalUser", + "returntype": "HSteamUser", + "params": [ +{ "paramname": "phSteamPipe" ,"paramtype": "HSteamPipe *"}, +{ "paramname": "eAccountType" ,"paramtype": "EAccountType"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "ReleaseUser", + "returntype": "void", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "hUser" ,"paramtype": "HSteamUser"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUser", + "returntype": "class ISteamUser *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServer", + "returntype": "class ISteamGameServer *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "SetLocalIPBinding", + "returntype": "void", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamFriends", + "returntype": "class ISteamFriends *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUtils", + "returntype": "class ISteamUtils *", + "params": [ +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmaking", + "returntype": "class ISteamMatchmaking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMatchmakingServers", + "returntype": "class ISteamMatchmakingServers *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGenericInterface", + "returntype": "void *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUserStats", + "returntype": "class ISteamUserStats *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamGameServerStats", + "returntype": "class ISteamGameServerStats *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamApps", + "returntype": "class ISteamApps *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamNetworking", + "returntype": "class ISteamNetworking *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamRemoteStorage", + "returntype": "class ISteamRemoteStorage *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamScreenshots", + "returntype": "class ISteamScreenshots *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamClient", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "BShutdownIfAllPipesClosed", + "returntype": "bool" +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTTP", + "returntype": "class ISteamHTTP *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUnifiedMessages", + "returntype": "class ISteamUnifiedMessages *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamController", + "returntype": "class ISteamController *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamUGC", + "returntype": "class ISteamUGC *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamAppList", + "returntype": "class ISteamAppList *", + "params": [ +{ "paramname": "hSteamUser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusic", + "returntype": "class ISteamMusic *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamMusicRemote", + "returntype": "class ISteamMusicRemote *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamHTMLSurface", + "returntype": "class ISteamHTMLSurface *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamInventory", + "returntype": "class ISteamInventory *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamClient", + "methodname": "GetISteamVideo", + "returntype": "class ISteamVideo *", + "params": [ +{ "paramname": "hSteamuser" ,"paramtype": "HSteamUser"}, +{ "paramname": "hSteamPipe" ,"paramtype": "HSteamPipe"}, +{ "paramname": "pchVersion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetHSteamUser", + "returntype": "HSteamUser" +} +,{ + "classname": "ISteamUser", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamUser", + "methodname": "InitiateGameConnection", + "returntype": "int", + "params": [ +{ "paramname": "pAuthBlob" ,"paramtype": "void *"}, +{ "paramname": "cbMaxAuthBlob" ,"paramtype": "int"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"}, +{ "paramname": "bSecure" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TerminateGameConnection", + "returntype": "void", + "params": [ +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "TrackAppUsageEvent", + "returntype": "void", + "params": [ +{ "paramname": "gameID" ,"paramtype": "class CGameID"}, +{ "paramname": "eAppUsageEvent" ,"paramtype": "int"}, +{ "paramname": "pchExtraInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetUserDataFolder", + "returntype": "bool", + "params": [ +{ "paramname": "pchBuffer" ,"paramtype": "char *"}, +{ "paramname": "cubBuffer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "StartVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "StopVoiceRecording", + "returntype": "void" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAvailableVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pcbCompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "pcbUncompressed" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "bWantCompressed" ,"paramtype": "bool"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "bWantUncompressed" ,"paramtype": "bool"}, +{ "paramname": "pUncompressedDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbUncompressedDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nUncompressBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "DecompressVoice", + "returntype": "EVoiceResult", + "params": [ +{ "paramname": "pCompressed" ,"paramtype": "const void *"}, +{ "paramname": "cbCompressed" ,"paramtype": "uint32"}, +{ "paramname": "pDestBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, +{ "paramname": "nDesiredSampleRate" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetVoiceOptimalSampleRate", + "returntype": "uint32" +} +,{ + "classname": "ISteamUser", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsBehindNAT", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "AdvertiseGame", + "returntype": "void", + "params": [ +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"}, +{ "paramname": "unIPServer" ,"paramtype": "uint32"}, +{ "paramname": "usPortServer" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "RequestEncryptedAppTicket", "callresult": "EncryptedAppTicketResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pDataToInclude" ,"paramtype": "void *"}, +{ "paramname": "cbDataToInclude" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetEncryptedAppTicket", + "returntype": "bool", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetGameBadgeLevel", + "returntype": "int", + "params": [ +{ "paramname": "nSeries" ,"paramtype": "int"}, +{ "paramname": "bFoil" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "GetPlayerSteamLevel", + "returntype": "int" +} +,{ + "classname": "ISteamUser", + "methodname": "RequestStoreAuthURL", "callresult": "StoreAuthURLResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchRedirectURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneVerified", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsTwoFactorEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneIdentifying", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneRequiringVerification", + "returntype": "bool" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaName", + "returntype": "const char *" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPersonaName", "callresult": "SetPersonaNameResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchPersonaName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPersonaState", + "returntype": "EPersonaState" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCount", + "returntype": "int", + "params": [ +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iFriend" ,"paramtype": "int"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRelationship", + "returntype": "EFriendRelationship", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaState", + "returntype": "EPersonaState", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendGamePlayed", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pFriendGameInfo" ,"out_struct": " " ,"paramtype": "struct FriendGameInfo_t *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendPersonaNameHistory", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iPersonaName" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendSteamLevel", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetPlayerNickname", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupIDByIndex", + "returntype": "FriendsGroupID_t", + "params": [ +{ "paramname": "iFG" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupName", + "returntype": "const char *", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersCount", + "returntype": "int", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendsGroupMembersList", + "returntype": "void", + "params": [ +{ "paramname": "friendsGroupID" ,"paramtype": "FriendsGroupID_t"}, +{ "paramname": "pOutSteamIDMembers" ,"out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nMembersCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "HasFriend", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriendFlags" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iClan" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanName", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanTag", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanActivityCounts", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "pnOnline" ,"paramtype": "int *"}, +{ "paramname": "pnInGame" ,"paramtype": "int *"}, +{ "paramname": "pnChatting" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "DownloadClanActivityCounts", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "psteamIDClans" ,"array_count": "cClansToRequest" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cClansToRequest" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCountFromSource", + "returntype": "int", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendFromSourceByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"}, +{ "paramname": "iFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsUserInSource", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDSource" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetInGameVoiceSpeaking", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bSpeaking" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlay", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToUser", + "returntype": "void", + "params": [ +{ "paramname": "pchDialog" ,"paramtype": "const char *"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToWebPage", + "returntype": "void", + "params": [ +{ "paramname": "pchURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayToStore", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "eFlag" ,"paramtype": "EOverlayToStoreFlag"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetPlayedWith", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUserPlayedWith" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ActivateGameOverlayInviteDialog", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetSmallFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetMediumFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetLargeFriendAvatar", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestUserInformation", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "bRequireNameOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestClanOfficerList", "callresult": "ClanOfficerListResponse_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanOfficerByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iOfficer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetUserRestrictions", + "returntype": "uint32" +} +,{ + "classname": "ISteamFriends", + "methodname": "SetRichPresence", + "returntype": "bool", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ClearRichPresence", + "returntype": "void" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresence", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendRichPresenceKeyByIndex", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iKey" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "RequestFriendRichPresence", + "returntype": "void", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "InviteUserToGame", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchConnectString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriendCount", + "returntype": "int" +} +,{ + "classname": "ISteamFriends", + "methodname": "GetCoplayFriend", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iCoplayFriend" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayTime", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendCoplayGame", + "returntype": "AppId_t", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "JoinClanChatRoom", "callresult": "JoinClanChatRoomCompletionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "LeaveClanChatRoom", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMemberCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetChatMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"}, +{ "paramname": "iUser" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SendClanChatMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetClanChatMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessage" ,"paramtype": "int"}, +{ "paramname": "prgchText" ,"paramtype": "void *"}, +{ "paramname": "cchTextMax" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"}, +{ "paramname": "psteamidChatter" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatAdmin", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsClanChatWindowOpenInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "OpenClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "CloseClanChatWindowInSteam", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDClanChat" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "SetListenForFriendsMessages", + "returntype": "bool", + "params": [ +{ "paramname": "bInterceptEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "ReplyToFriendMessage", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchMsgToSend" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFriendMessage", + "returntype": "int", + "params": [ +{ "paramname": "steamIDFriend" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMessageID" ,"paramtype": "int"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "GetFollowerCount", "callresult": "FriendsGetFollowerCount_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "IsFollowing", "callresult": "FriendsIsFollowing_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamFriends", + "methodname": "EnumerateFollowingList", "callresult": "FriendsEnumerateFollowingList_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceAppActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSecondsSinceComputerActive", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetConnectedUniverse", + "returntype": "EUniverse" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetServerRealTime", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCountry", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageSize", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32 *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetImageRGBA", + "returntype": "bool", + "params": [ +{ "paramname": "iImage" ,"paramtype": "int"}, +{ "paramname": "pubDest" ,"paramtype": "uint8 *"}, +{ "paramname": "nDestBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCSERIPPort", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32 *"}, +{ "paramname": "usPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetCurrentBatteryPower", + "returntype": "uint8" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAppID", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationPosition", + "returntype": "void", + "params": [ +{ "paramname": "eNotificationPosition" ,"paramtype": "ENotificationPosition"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsAPICallCompleted", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallFailureReason", + "returntype": "ESteamAPICallFailure", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetAPICallResult", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamAPICall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pCallback" ,"paramtype": "void *"}, +{ "paramname": "cubCallback" ,"paramtype": "int"}, +{ "paramname": "iCallbackExpected" ,"paramtype": "int"}, +{ "paramname": "pbFailed" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetIPCCallCount", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetWarningMessageHook", + "returntype": "void", + "params": [ +{ "paramname": "pFunction" ,"paramtype": "SteamAPIWarningMessageHook_t"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsOverlayEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "BOverlayNeedsPresent", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "CheckFileSignature", "callresult": "CheckFileSignature_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "szFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "ShowGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "eInputMode" ,"paramtype": "EGamepadTextInputMode"}, +{ "paramname": "eLineInputMode" ,"paramtype": "EGamepadTextInputLineMode"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "unCharMax" ,"paramtype": "uint32"}, +{ "paramname": "pchExistingText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextLength", + "returntype": "uint32" +} +,{ + "classname": "ISteamUtils", + "methodname": "GetEnteredGamepadTextInput", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "char *"}, +{ "paramname": "cchText" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "GetSteamUILanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamRunningInVR", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetOverlayNotificationInset", + "returntype": "void", + "params": [ +{ "paramname": "nHorizontalInset" ,"paramtype": "int"}, +{ "paramname": "nVerticalInset" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamInBigPictureMode", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "StartVRDashboard", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGameCount", + "returntype": "int" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "iGame" ,"paramtype": "int"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnConnPort" ,"paramtype": "uint16 *"}, +{ "paramname": "pnQueryPort" ,"paramtype": "uint16 *"}, +{ "paramname": "punFlags" ,"paramtype": "uint32 *"}, +{ "paramname": "pRTime32LastPlayedOnServer" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddFavoriteGame", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "rTime32LastPlayedOnServer" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RemoveFavoriteGame", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nConnPort" ,"paramtype": "uint16"}, +{ "paramname": "nQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyList", "callresult": "LobbyMatchList_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListStringFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "pchValueToMatch" ,"paramtype": "const char *"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNumericalFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToMatch" ,"paramtype": "int"}, +{ "paramname": "eComparisonType" ,"paramtype": "ELobbyComparison"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListNearValueFilter", + "returntype": "void", + "params": [ +{ "paramname": "pchKeyToMatch" ,"paramtype": "const char *"}, +{ "paramname": "nValueToBeCloseTo" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListFilterSlotsAvailable", + "returntype": "void", + "params": [ +{ "paramname": "nSlotsAvailable" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListDistanceFilter", + "returntype": "void", + "params": [ +{ "paramname": "eLobbyDistanceFilter" ,"paramtype": "ELobbyDistanceFilter"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListResultCountFilter", + "returntype": "void", + "params": [ +{ "paramname": "cMaxResults" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "AddRequestLobbyListCompatibleMembersFilter", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "iLobby" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "CreateLobby", "callresult": "LobbyCreated_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "JoinLobby", "callresult": "LobbyEnter_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "LeaveLobby", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "InviteUserToLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDInvitee" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetNumLobbyMembers", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberByIndex", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iMember" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataCount", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iLobbyData" ,"paramtype": "int"}, +{ "paramname": "pchKey" ,"paramtype": "char *"}, +{ "paramname": "cchKeyBufferSize" ,"paramtype": "int"}, +{ "paramname": "pchValue" ,"paramtype": "char *"}, +{ "paramname": "cchValueBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "DeleteLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberData", + "returntype": "const char *", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberData", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SendLobbyChatMsg", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "pvMsgBody" ,"paramtype": "const void *"}, +{ "paramname": "cubMsgBody" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyChatEntry", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "iChatID" ,"paramtype": "int"}, +{ "paramname": "pSteamIDUser" ,"out_struct": " " ,"paramtype": "class CSteamID *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "int"}, +{ "paramname": "peChatEntryType" ,"paramtype": "EChatEntryType *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "RequestLobbyData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyGameServer", + "returntype": "void", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "unGameServerIP" ,"paramtype": "uint32"}, +{ "paramname": "unGameServerPort" ,"paramtype": "uint16"}, +{ "paramname": "steamIDGameServer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "punGameServerIP" ,"paramtype": "uint32 *"}, +{ "paramname": "punGameServerPort" ,"paramtype": "uint16 *"}, +{ "paramname": "psteamIDGameServer" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyMemberLimit", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "cMaxMembers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyMemberLimit", + "returntype": "int", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyType", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "eLobbyType" ,"paramtype": "ELobbyType"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyJoinable", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "bLobbyJoinable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "GetLobbyOwner", + "returntype": "class CSteamID", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLobbyOwner", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDNewOwner" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmaking", + "methodname": "SetLinkedLobby", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDLobby" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDLobbyDependent" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServerListResponse", + "methodname": "RefreshComplete", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "response" ,"paramtype": "EMatchMakingServerResponse"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerResponded", + "returntype": "void", + "params": [ +{ "paramname": "server" ,"paramtype": "class gameserveritem_t &"} + ] +} +,{ + "classname": "ISteamMatchmakingPingResponse", + "methodname": "ServerFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "AddPlayerToList", + "returntype": "void", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nScore" ,"paramtype": "int"}, +{ "paramname": "flTimePlayed" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingPlayersResponse", + "methodname": "PlayersRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesResponded", + "returntype": "void", + "params": [ +{ "paramname": "pchRule" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesFailedToRespond", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingRulesResponse", + "methodname": "RulesRefreshComplete", + "returntype": "void" +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestInternetServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestLANServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFriendsServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestFavoritesServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestHistoryServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RequestSpectatorServerList", + "returntype": "HServerListRequest", + "params": [ +{ "paramname": "iApp" ,"paramtype": "AppId_t"}, +{ "paramname": "ppchFilters" ,"array_count": "nFilters" ,"paramtype": "struct MatchMakingKeyValuePair_t **"}, +{ "paramname": "nFilters" ,"paramtype": "uint32"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingServerListResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ReleaseRequest", + "returntype": "void", + "params": [ +{ "paramname": "hServerListRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerDetails", + "returntype": "class gameserveritem_t *", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshQuery", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "IsRefreshing", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "GetServerCount", + "returntype": "int", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "RefreshServer", + "returntype": "void", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HServerListRequest"}, +{ "paramname": "iServer" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PingServer", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPingResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "PlayerDetails", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingPlayersResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "ServerRules", + "returntype": "HServerQuery", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usPort" ,"paramtype": "uint16"}, +{ "paramname": "pRequestServersResponse" ,"paramtype": "class ISteamMatchmakingRulesResponse *"} + ] +} +,{ + "classname": "ISteamMatchmakingServers", + "methodname": "CancelServerQuery", + "returntype": "void", + "params": [ +{ "paramname": "hServerQuery" ,"paramtype": "HServerQuery"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWrite", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileRead", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteAsync", "callresult": "RemoteStorageFileWriteAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsync", "callresult": "RemoteStorageFileReadAsyncComplete_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "nOffset" ,"paramtype": "uint32"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileReadAsyncComplete", + "returntype": "bool", + "params": [ +{ "paramname": "hReadCall" ,"paramtype": "SteamAPICall_t"}, +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cubToRead" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileForget", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileDelete", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileShare", "callresult": "RemoteStorageFileShareResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetSyncPlatforms", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "eRemoteStoragePlatform" ,"paramtype": "ERemoteStoragePlatform"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamOpen", + "returntype": "UGCFileWriteStreamHandle_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamWriteChunk", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamClose", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileWriteStreamCancel", + "returntype": "bool", + "params": [ +{ "paramname": "writeHandle" ,"paramtype": "UGCFileWriteStreamHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FileExists", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "FilePersisted", + "returntype": "bool", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileSize", + "returntype": "int32", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileTimestamp", + "returntype": "int64", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetSyncPlatforms", + "returntype": "ERemoteStoragePlatform", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetFileNameAndSize", + "returntype": "const char *", + "params": [ +{ "paramname": "iFile" ,"paramtype": "int"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetQuota", + "returntype": "bool", + "params": [ +{ "paramname": "pnTotalBytes" ,"paramtype": "uint64 *"}, +{ "paramname": "puAvailableBytes" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForAccount", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "IsCloudEnabledForApp", + "returntype": "bool" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetCloudEnabledForApp", + "returntype": "void", + "params": [ +{ "paramname": "bEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownload", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnBytesDownloaded" ,"paramtype": "int32 *"}, +{ "paramname": "pnBytesExpected" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUGCDetails", + "returntype": "bool", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pnAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "ppchName" ,"out_string": " " ,"paramtype": "char **"}, +{ "paramname": "pnFileSizeInBytes" ,"paramtype": "int32 *"}, +{ "paramname": "pSteamIDOwner" ,"out_struct": " " ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCRead", + "returntype": "int32", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pvData" ,"paramtype": "void *"}, +{ "paramname": "cubDataToRead" ,"paramtype": "int32"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "eAction" ,"paramtype": "EUGCReadAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCCount", + "returntype": "int32" +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetCachedUGCHandle", + "returntype": "UGCHandle_t", + "params": [ +{ "paramname": "iCachedContent" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishWorkshopFile", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchFile" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "eWorkshopFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CreatePublishedFileUpdateRequest", + "returntype": "PublishedFileUpdateHandle_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFilePreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTitle", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "CommitPublishedFileUpdate", "callresult": "RemoteStorageUpdatePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedFileDetails", "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxSecondsOld" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "DeletePublishedFile", "callresult": "RemoteStorageDeletePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserPublishedFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SubscribePublishedFile", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSubscribedFiles", "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UnsubscribePublishedFile", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdatePublishedFileSetChangeDescription", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "PublishedFileUpdateHandle_t"}, +{ "paramname": "pchChangeDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UpdateUserPublishedItemVote", "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "GetUserPublishedItemVoteDetails", "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumerateUserSharedWorkshopFiles", "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamId" ,"paramtype": "class CSteamID"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "pRequiredTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pExcludedTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "PublishVideo", "callresult": "RemoteStoragePublishFileProgress_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eVideoProvider" ,"paramtype": "EWorkshopVideoProvider"}, +{ "paramname": "pchVideoAccount" ,"paramtype": "const char *"}, +{ "paramname": "pchVideoIdentifier" ,"paramtype": "const char *"}, +{ "paramname": "pchPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "SetUserPublishedFileAction", "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "unPublishedFileId" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedFilesByUserAction", "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eAction" ,"paramtype": "EWorkshopFileAction"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "EnumeratePublishedWorkshopFiles", "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "eEnumerationType" ,"paramtype": "EWorkshopEnumerationType"}, +{ "paramname": "unStartIndex" ,"paramtype": "uint32"}, +{ "paramname": "unCount" ,"paramtype": "uint32"}, +{ "paramname": "unDays" ,"paramtype": "uint32"}, +{ "paramname": "pTags" ,"paramtype": "struct SteamParamStringArray_t *"}, +{ "paramname": "pUserTags" ,"paramtype": "struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamRemoteStorage", + "methodname": "UGCDownloadToLocation", "callresult": "RemoteStorageDownloadUGCResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hContent" ,"paramtype": "UGCHandle_t"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"}, +{ "paramname": "unPriority" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestCurrentStats", "callback": "UserStatsReceived_t", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UpdateAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "SetAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ClearAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "StoreStats", + "returntype": "bool" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementIcon", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementDisplayAttribute", + "returntype": "const char *", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "IndicateAchievementProgress", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nCurProgress" ,"paramtype": "uint32"}, +{ "paramname": "nMaxProgress" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumAchievements", + "returntype": "uint32" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementName", + "returntype": "const char *", + "params": [ +{ "paramname": "iAchievement" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestUserStats", "callresult": "UserStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetUserAchievementAndUnlockTime", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"}, +{ "paramname": "punUnlockTime" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "ResetAllStats", + "returntype": "bool", + "params": [ +{ "paramname": "bAchievementsToo" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindOrCreateLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"}, +{ "paramname": "eLeaderboardSortMethod" ,"paramtype": "ELeaderboardSortMethod"}, +{ "paramname": "eLeaderboardDisplayType" ,"paramtype": "ELeaderboardDisplayType"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "FindLeaderboard", "callresult": "LeaderboardFindResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchLeaderboardName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardName", + "returntype": "const char *", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardEntryCount", + "returntype": "int", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardSortMethod", + "returntype": "ELeaderboardSortMethod", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetLeaderboardDisplayType", + "returntype": "ELeaderboardDisplayType", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntries", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardDataRequest" ,"paramtype": "ELeaderboardDataRequest"}, +{ "paramname": "nRangeStart" ,"paramtype": "int"}, +{ "paramname": "nRangeEnd" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "DownloadLeaderboardEntriesForUsers", "callresult": "LeaderboardScoresDownloaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "prgUsers" ,"array_count": "cUsers" ,"desc": "Array of users to retrieve" ,"paramtype": "class CSteamID *"}, +{ "paramname": "cUsers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetDownloadedLeaderboardEntry", + "returntype": "bool", + "params": [ +{ "paramname": "hSteamLeaderboardEntries" ,"paramtype": "SteamLeaderboardEntries_t"}, +{ "paramname": "index" ,"paramtype": "int"}, +{ "paramname": "pLeaderboardEntry" ,"paramtype": "struct LeaderboardEntry_t *"}, +{ "paramname": "pDetails" ,"paramtype": "int32 *"}, +{ "paramname": "cDetailsMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "UploadLeaderboardScore", "callresult": "LeaderboardScoreUploaded_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "eLeaderboardUploadScoreMethod" ,"paramtype": "ELeaderboardUploadScoreMethod"}, +{ "paramname": "nScore" ,"paramtype": "int32"}, +{ "paramname": "pScoreDetails" ,"paramtype": "const int32 *"}, +{ "paramname": "cScoreDetailsCount" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "AttachLeaderboardUGC", "callresult": "LeaderboardUGCSet_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "hSteamLeaderboard" ,"paramtype": "SteamLeaderboard_t"}, +{ "paramname": "hUGC" ,"paramtype": "UGCHandle_t"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNumberOfCurrentPlayers", "callresult": "NumberOfCurrentPlayers_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalAchievementPercentages", "callresult": "GlobalAchievementPercentagesReady_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetNextMostAchievedAchievementInfo", + "returntype": "int", + "params": [ +{ "paramname": "iIteratorPrevious" ,"paramtype": "int"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "unNameBufLen" ,"paramtype": "uint32"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetAchievementAchievedPercent", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pflPercent" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "RequestGlobalStats", "callresult": "GlobalStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nHistoryDays" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int64 *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStat", + "returntype": "bool", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "double *"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "int64 *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUserStats", + "methodname": "GetGlobalStatHistory", + "returntype": "int32", + "params": [ +{ "paramname": "pchStatName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"array_count": "cubData" ,"paramtype": "double *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribed", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsLowViolence", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsCybercafe", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsVACBanned", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentGameLanguage", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "GetAvailableGameLanguages", + "returntype": "const char *" +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedApp", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsDlcInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetEarliestPurchaseUnixTime", + "returntype": "uint32", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsSubscribedFromFreeWeekend", + "returntype": "bool" +} +,{ + "classname": "ISteamApps", + "methodname": "GetDLCCount", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "BGetDLCDataByIndex", + "returntype": "bool", + "params": [ +{ "paramname": "iDLC" ,"paramtype": "int"}, +{ "paramname": "pAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "pbAvailable" ,"paramtype": "bool *"}, +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "InstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "UninstallDLC", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAppProofOfPurchaseKey", + "returntype": "void", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetCurrentBetaName", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "char *"}, +{ "paramname": "cchNameBufferSize" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "MarkContentCorrupt", + "returntype": "bool", + "params": [ +{ "paramname": "bMissingFilesOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetInstalledDepots", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pvecDepots" ,"paramtype": "DepotId_t *"}, +{ "paramname": "cMaxDepots" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppInstallDir", + "returntype": "uint32", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchFolder" ,"paramtype": "char *"}, +{ "paramname": "cchFolderBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "BIsAppInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppOwner", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamApps", + "methodname": "GetLaunchQueryParam", + "returntype": "const char *", + "params": [ +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetDlcDownloadProgress", + "returntype": "bool", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamApps", + "methodname": "GetAppBuildId", + "returntype": "int" +} +,{ + "classname": "ISteamApps", + "methodname": "RequestAllProofOfPurchaseKeys", + "returntype": "void" +} +,{ + "classname": "ISteamApps", + "methodname": "GetFileDetails", "callresult": "FileDetailsResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pszFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pubData" ,"paramtype": "const void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "eP2PSendType" ,"paramtype": "EP2PSend"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsP2PPacketAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "ReadP2PPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "psteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AcceptP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PSessionWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CloseP2PChannelWithUser", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "nChannel" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetP2PSessionState", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDRemote" ,"paramtype": "class CSteamID"}, +{ "paramname": "pConnectionState" ,"paramtype": "struct P2PSessionState_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "AllowP2PPacketRelay", + "returntype": "bool", + "params": [ +{ "paramname": "bAllow" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateListenSocket", + "returntype": "SNetListenSocket_t", + "params": [ +{ "paramname": "nVirtualP2PPort" ,"paramtype": "int"}, +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateP2PConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "steamIDTarget" ,"paramtype": "class CSteamID"}, +{ "paramname": "nVirtualPort" ,"paramtype": "int"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"}, +{ "paramname": "bAllowUseOfPacketRelay" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "CreateConnectionSocket", + "returntype": "SNetSocket_t", + "params": [ +{ "paramname": "nIP" ,"paramtype": "uint32"}, +{ "paramname": "nPort" ,"paramtype": "uint16"}, +{ "paramname": "nTimeoutSec" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroySocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "DestroyListenSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "bNotifyRemoteEnd" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "SendDataOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubData" ,"paramtype": "void *"}, +{ "paramname": "cubData" ,"paramtype": "uint32"}, +{ "paramname": "bReliable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailableOnSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveDataFromSocket", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "IsDataAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "RetrieveData", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pubDest" ,"paramtype": "void *"}, +{ "paramname": "cubDest" ,"paramtype": "uint32"}, +{ "paramname": "pcubMsgSize" ,"paramtype": "uint32 *"}, +{ "paramname": "phSocket" ,"paramtype": "SNetSocket_t *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"}, +{ "paramname": "pSteamIDRemote" ,"paramtype": "class CSteamID *"}, +{ "paramname": "peSocketStatus" ,"paramtype": "int *"}, +{ "paramname": "punIPRemote" ,"paramtype": "uint32 *"}, +{ "paramname": "punPortRemote" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetListenSocketInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hListenSocket" ,"paramtype": "SNetListenSocket_t"}, +{ "paramname": "pnIP" ,"paramtype": "uint32 *"}, +{ "paramname": "pnPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetSocketConnectionType", + "returntype": "ESNetSocketConnectionType", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamNetworking", + "methodname": "GetMaxPacketSize", + "returntype": "int", + "params": [ +{ "paramname": "hSocket" ,"paramtype": "SNetSocket_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "WriteScreenshot", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pubRGB" ,"paramtype": "void *"}, +{ "paramname": "cubRGB" ,"paramtype": "uint32"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchThumbnailFilename" ,"paramtype": "const char *"}, +{ "paramname": "nWidth" ,"paramtype": "int"}, +{ "paramname": "nHeight" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TriggerScreenshot", + "returntype": "void" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "HookScreenshots", + "returntype": "void", + "params": [ +{ "paramname": "bHook" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "SetLocation", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "pchLocation" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagUser", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "TagPublishedFile", + "returntype": "bool", + "params": [ +{ "paramname": "hScreenshot" ,"paramtype": "ScreenshotHandle"}, +{ "paramname": "unPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamScreenshots", + "methodname": "IsScreenshotsHooked", + "returntype": "bool" +} +,{ + "classname": "ISteamScreenshots", + "methodname": "AddVRScreenshotToLibrary", + "returntype": "ScreenshotHandle", + "params": [ +{ "paramname": "eType" ,"paramtype": "EVRScreenshotType"}, +{ "paramname": "pchFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "BIsPlaying", + "returntype": "bool" +} +,{ + "classname": "ISteamMusic", + "methodname": "GetPlaybackStatus", + "returntype": "AudioPlayback_Status" +} +,{ + "classname": "ISteamMusic", + "methodname": "Play", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "Pause", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayPrevious", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "PlayNext", + "returntype": "void" +} +,{ + "classname": "ISteamMusic", + "methodname": "SetVolume", + "returntype": "void", + "params": [ +{ "paramname": "flVolume" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusic", + "methodname": "GetVolume", + "returntype": "float" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "RegisterSteamMusicRemote", + "returntype": "bool", + "params": [ +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "DeregisterSteamMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BIsCurrentMusicRemote", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "BActivationSuccess", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetDisplayName", + "returntype": "bool", + "params": [ +{ "paramname": "pchDisplayName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPNGIcon_64x64", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayPrevious", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlayNext", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnableQueue", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "EnablePlaylists", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdatePlaybackStatus", + "returntype": "bool", + "params": [ +{ "paramname": "nStatus" ,"paramtype": "AudioPlayback_Status"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateShuffled", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateLooped", + "returntype": "bool", + "params": [ +{ "paramname": "bValue" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateVolume", + "returntype": "bool", + "params": [ +{ "paramname": "flValue" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryIsAvailable", + "returntype": "bool", + "params": [ +{ "paramname": "bAvailable" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryText", + "returntype": "bool", + "params": [ +{ "paramname": "pchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryElapsedSeconds", + "returntype": "bool", + "params": [ +{ "paramname": "nValue" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "UpdateCurrentEntryCoverArt", + "returntype": "bool", + "params": [ +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "cbBufferLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "CurrentEntryDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetQueueEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentQueueEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "QueueDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistWillChange", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "ResetPlaylistEntries", + "returntype": "bool" +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"}, +{ "paramname": "nPosition" ,"paramtype": "int"}, +{ "paramname": "pchEntryText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "SetCurrentPlaylistEntry", + "returntype": "bool", + "params": [ +{ "paramname": "nID" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamMusicRemote", + "methodname": "PlaylistDidChange", + "returntype": "bool" +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateHTTPRequest", + "returntype": "HTTPRequestHandle", + "params": [ +{ "paramname": "eHTTPRequestMethod" ,"paramtype": "EHTTPMethod"}, +{ "paramname": "pchAbsoluteURL" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestContextValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "ulContextValue" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestNetworkActivityTimeout", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unTimeoutSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pchHeaderValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestGetOrPostParameter", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchParamName" ,"paramtype": "const char *"}, +{ "paramname": "pchParamValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SendHTTPRequestAndStreamResponse", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pCallHandle" ,"paramtype": "SteamAPICall_t *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "DeferHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "PrioritizeHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderSize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "unResponseHeaderSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseHeaderValue", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchHeaderName" ,"paramtype": "const char *"}, +{ "paramname": "pHeaderValueBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodySize", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unBodySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPStreamingResponseBodyData", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "cOffset" ,"paramtype": "uint32"}, +{ "paramname": "pBodyDataBuffer" ,"paramtype": "uint8 *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseHTTPRequest", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPDownloadProgressPct", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pflPercentOut" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRawPostBody", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchContentType" ,"paramtype": "const char *"}, +{ "paramname": "pubBody" ,"paramtype": "uint8 *"}, +{ "paramname": "unBodyLen" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "CreateCookieContainer", + "returntype": "HTTPCookieContainerHandle", + "params": [ +{ "paramname": "bAllowResponsesToModify" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "ReleaseCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetCookie", + "returntype": "bool", + "params": [ +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"}, +{ "paramname": "pchHost" ,"paramtype": "const char *"}, +{ "paramname": "pchUrl" ,"paramtype": "const char *"}, +{ "paramname": "pchCookie" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestCookieContainer", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "hCookieContainer" ,"paramtype": "HTTPCookieContainerHandle"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestUserAgentInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pchUserAgentInfo" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestRequiresVerifiedCertificate", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "bRequireVerifiedCertificate" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "SetHTTPRequestAbsoluteTimeoutMS", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "unMilliseconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTTP", + "methodname": "GetHTTPRequestWasTimedOut", + "returntype": "bool", + "params": [ +{ "paramname": "hRequest" ,"paramtype": "HTTPRequestHandle"}, +{ "paramname": "pbWasTimedOut" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendMethod", + "returntype": "ClientUnifiedMessageHandle", + "params": [ +{ "paramname": "pchServiceMethod" ,"paramtype": "const char *"}, +{ "paramname": "pRequestBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unRequestBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "unContext" ,"paramtype": "uint64"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseInfo", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "punResponseSize" ,"paramtype": "uint32 *"}, +{ "paramname": "peResult" ,"paramtype": "EResult *"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "GetMethodResponseData", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"}, +{ "paramname": "pResponseBuffer" ,"paramtype": "void *"}, +{ "paramname": "unResponseBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bAutoRelease" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "ReleaseMethod", + "returntype": "bool", + "params": [ +{ "paramname": "hHandle" ,"paramtype": "ClientUnifiedMessageHandle"} + ] +} +,{ + "classname": "ISteamUnifiedMessages", + "methodname": "SendNotification", + "returntype": "bool", + "params": [ +{ "paramname": "pchServiceNotification" ,"paramtype": "const char *"}, +{ "paramname": "pNotificationBuffer" ,"paramtype": "const void *"}, +{ "paramname": "unNotificationBufferSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamController", + "methodname": "RunFrame", + "returntype": "void" +} +,{ + "classname": "ISteamController", + "methodname": "GetConnectedControllers", + "returntype": "int", + "params": [ +{ "paramname": "handlesOut" ,"paramtype": "ControllerHandle_t *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowBindingPanel", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetActionSetHandle", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "pszActionSetName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ActivateActionSet", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetCurrentActionSet", + "returntype": "ControllerActionSetHandle_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionHandle", + "returntype": "ControllerDigitalActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionData", + "returntype": "struct ControllerDigitalActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetDigitalActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionHandle", + "returntype": "ControllerAnalogActionHandle_t", + "params": [ +{ "paramname": "pszActionName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionData", + "returntype": "struct ControllerAnalogActionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetAnalogActionOrigins", + "returntype": "int", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "actionSetHandle" ,"paramtype": "ControllerActionSetHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "originsOut" ,"paramtype": "EControllerActionOrigin *"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "StopAnalogActionMomentum", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eAction" ,"paramtype": "ControllerAnalogActionHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "TriggerRepeatedHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "eTargetPad" ,"paramtype": "ESteamControllerPad"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "usOffMicroSec" ,"paramtype": "unsigned short"}, +{ "paramname": "unRepeat" ,"paramtype": "unsigned short"}, +{ "paramname": "nFlags" ,"paramtype": "unsigned int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetGamepadIndexForController", + "returntype": "int", + "params": [ +{ "paramname": "ulControllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetControllerForGamepadIndex", + "returntype": "ControllerHandle_t", + "params": [ +{ "paramname": "nIndex" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "GetMotionData", + "returntype": "struct ControllerMotionData_t", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowDigitalActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "digitalActionHandle" ,"paramtype": "ControllerDigitalActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamController", + "methodname": "ShowAnalogActionOrigins", + "returntype": "bool", + "params": [ +{ "paramname": "controllerHandle" ,"paramtype": "ControllerHandle_t"}, +{ "paramname": "analogActionHandle" ,"paramtype": "ControllerAnalogActionHandle_t"}, +{ "paramname": "flScale" ,"paramtype": "float"}, +{ "paramname": "flXPosition" ,"paramtype": "float"}, +{ "paramname": "flYPosition" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUserUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "unAccountID" ,"paramtype": "AccountID_t"}, +{ "paramname": "eListType" ,"paramtype": "EUserUGCList"}, +{ "paramname": "eMatchingUGCType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "eSortOrder" ,"paramtype": "EUserUGCListSortOrder"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryAllUGCRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "eQueryType" ,"paramtype": "EUGCQuery"}, +{ "paramname": "eMatchingeMatchingUGCTypeFileType" ,"paramtype": "EUGCMatchingUGCType"}, +{ "paramname": "nCreatorAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "nConsumerAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "unPage" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateQueryUGCDetailsRequest", + "returntype": "UGCQueryHandle_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SendQueryUGCRequest", "callresult": "SteamUGCQueryCompleted_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCResult", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pDetails" ,"paramtype": "struct SteamUGCDetails_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCPreviewURL", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchURL" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pchMetadata" ,"out_string_count": "cchMetadatasize" ,"paramtype": "char *"}, +{ "paramname": "cchMetadatasize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCStatistic", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "eStatType" ,"paramtype": "EItemStatistic"}, +{ "paramname": "pStatValue" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumAdditionalPreviews", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCAdditionalPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "previewIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchURLOrVideoID" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchURLSize" ,"paramtype": "uint32"}, +{ "paramname": "pchOriginalFileName" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchOriginalFileNameSize" ,"paramtype": "uint32"}, +{ "paramname": "pPreviewType" ,"paramtype": "EItemPreviewType *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCNumKeyValueTags", + "returntype": "uint32", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetQueryUGCKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "keyValueTagIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchKey" ,"out_string_count": "cchKeySize" ,"paramtype": "char *"}, +{ "paramname": "cchKeySize" ,"paramtype": "uint32"}, +{ "paramname": "pchValue" ,"out_string_count": "cchValueSize" ,"paramtype": "char *"}, +{ "paramname": "cchValueSize" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "ReleaseQueryUGCRequest", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddExcludedTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pTagName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnOnlyIDs", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnOnlyIDs" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnKeyValueTags" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnLongDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnLongDescription" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnMetadata" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnChildren", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnChildren" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnAdditionalPreviews", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnAdditionalPreviews" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnTotalOnly", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bReturnTotalOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetAllowCachedResponse", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetCloudFileNameFilter", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pMatchCloudFileName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetMatchAnyTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "bMatchAnyTag" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetSearchText", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pSearchText" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetRankedByTrendDays", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unDays" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddRequiredKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RequestUGCDetails", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "unMaxAgeSeconds" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "CreateItem", "callresult": "CreateItemResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "eFileType" ,"paramtype": "EWorkshopFileType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartItemUpdate", + "returntype": "UGCUpdateHandle_t", + "params": [ +{ "paramname": "nConsumerAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTitle", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchTitle" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemDescription", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemUpdateLanguage", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchLanguage" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemMetadata", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchMetaData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "eVisibility" ,"paramtype": "ERemoteStoragePublishedFileVisibility"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemTags", + "returntype": "bool", + "params": [ +{ "paramname": "updateHandle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pTags" ,"paramtype": "const struct SteamParamStringArray_t *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemContent", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszContentFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemKeyValueTags", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemKeyValueTag", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "type" ,"paramtype": "EItemPreviewType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubmitItemUpdate", "callresult": "SubmitItemUpdateResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pchChangeNote" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemUpdateProgress", + "returntype": "EItemUpdateStatus", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "punBytesProcessed" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SetUserItemVote", "callresult": "SetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bVoteUp" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetUserItemVote", "callresult": "GetUserItemVoteResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemToFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemFromFavorites", "callresult": "UserFavoriteItemsListChanged_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SubscribeItem", "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UnsubscribeItem", "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetNumSubscribedItems", + "returntype": "uint32" +} +,{ + "classname": "ISteamUGC", + "methodname": "GetSubscribedItems", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "cMaxEntries" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemState", + "returntype": "uint32", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemInstallInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punSizeOnDisk" ,"paramtype": "uint64 *"}, +{ "paramname": "pchFolder" ,"out_string_count": "cchFolderSize" ,"paramtype": "char *"}, +{ "paramname": "cchFolderSize" ,"paramtype": "uint32"}, +{ "paramname": "punTimeStamp" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "GetItemDownloadInfo", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "punBytesDownloaded" ,"paramtype": "uint64 *"}, +{ "paramname": "punBytesTotal" ,"paramtype": "uint64 *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "DownloadItem", + "returntype": "bool", + "params": [ +{ "paramname": "nPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "bHighPriority" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "BInitWorkshopForGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unWorkshopDepotID" ,"paramtype": "DepotId_t"}, +{ "paramname": "pszFolder" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "SuspendDownloads", + "returntype": "void", + "params": [ +{ "paramname": "bSuspend" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StartPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTracking", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pvecPublishedFileID" ,"paramtype": "PublishedFileId_t *"}, +{ "paramname": "unNumPublishedFileIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "StopPlaytimeTrackingForAllItems", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetNumInstalledApps", + "returntype": "uint32" +} +,{ + "classname": "ISteamAppList", + "methodname": "GetInstalledApps", + "returntype": "uint32", + "params": [ +{ "paramname": "pvecAppID" ,"paramtype": "AppId_t *"}, +{ "paramname": "unMaxAppIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppName", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppInstallDir", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchDirectory" ,"paramtype": "char *"}, +{ "paramname": "cchNameMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamAppList", + "methodname": "GetAppBuildId", + "returntype": "int", + "params": [ +{ "paramname": "nAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "DestructISteamHTMLSurface", + "returntype": "void" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Init", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Shutdown", + "returntype": "bool" +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CreateBrowser", "callresult": "HTML_BrowserReady_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "pchUserAgent" ,"paramtype": "const char *"}, +{ "paramname": "pchUserCSS" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "RemoveBrowser", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "LoadURL", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchURL" ,"paramtype": "const char *"}, +{ "paramname": "pchPostData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetSize", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "unWidth" ,"paramtype": "uint32"}, +{ "paramname": "unHeight" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopLoad", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Reload", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoBack", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GoForward", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AddHeader", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ExecuteJavascript", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchScript" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseDoubleClick", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "eMouseButton" ,"paramtype": "ISteamHTMLSurface::EHTMLMouseButton"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseMove", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "MouseWheel", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nDelta" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyDown", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyUp", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nNativeKeyCode" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "KeyChar", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "cUnicodeChar" ,"paramtype": "uint32"}, +{ "paramname": "eHTMLKeyModifiers" ,"paramtype": "ISteamHTMLSurface::EHTMLKeyModifiers"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetHorizontalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetVerticalScroll", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "nAbsolutePixelScroll" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetKeyFocus", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bHasKeyFocus" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "ViewSource", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "CopyToClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "PasteFromClipboard", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "Find", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "pchSearchStr" ,"paramtype": "const char *"}, +{ "paramname": "bCurrentlyInFind" ,"paramtype": "bool"}, +{ "paramname": "bReverse" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "StopFind", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "GetLinkAtPosition", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "x" ,"paramtype": "int"}, +{ "paramname": "y" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetCookie", + "returntype": "void", + "params": [ +{ "paramname": "pchHostname" ,"paramtype": "const char *"}, +{ "paramname": "pchKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"}, +{ "paramname": "pchPath" ,"paramtype": "const char *"}, +{ "paramname": "nExpires" ,"paramtype": "RTime32"}, +{ "paramname": "bSecure" ,"paramtype": "bool"}, +{ "paramname": "bHTTPOnly" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetPageScaleFactor", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "flZoom" ,"paramtype": "float"}, +{ "paramname": "nPointX" ,"paramtype": "int"}, +{ "paramname": "nPointY" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "SetBackgroundMode", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bBackgroundMode" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "AllowStartRequest", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bAllowed" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamHTMLSurface", + "methodname": "JSDialogResponse", + "returntype": "void", + "params": [ +{ "paramname": "unBrowserHandle" ,"paramtype": "HHTMLBrowser"}, +{ "paramname": "bResult" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultStatus", "desc": "Find out the status of an asynchronous inventory result handle.", + "returntype": "EResult", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultItems", "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutItemsArray" ,"out_array_count": "punOutItemsArraySize" ,"desc": "Output array" ,"paramtype": "struct SteamItemDetails_t *"}, +{ "paramname": "punOutItemsArraySize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetResultTimestamp", "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", + "returntype": "uint32", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "CheckResultSteamID", "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "steamIDExpected" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DestroyResult", "desc": "Destroys a result handle and frees all associated memory.", + "returntype": "void", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetAllItems", "desc": "Captures the entire state of the current users Steam inventory.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemsByID", "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pInstanceIDs" ,"array_count": "unCountInstanceIDs" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "unCountInstanceIDs" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SerializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "pOutBuffer" ,"out_buffer_count": "punOutBufferSize" ,"paramtype": "void *"}, +{ "paramname": "punOutBufferSize" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "DeserializeResult", + "returntype": "bool", + "params": [ +{ "paramname": "pOutResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pBuffer" ,"buffer_count": "punOutBufferSize" ,"paramtype": "const void *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32"}, +{ "paramname": "bRESERVED_MUST_BE_FALSE" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GenerateItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayQuantity" ,"array_count": "unArrayLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GrantPromoItems", "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItem", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemDef" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "AddPromoItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayItemDefs" ,"array_count": "unArrayLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "unArrayLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ConsumeItem", "desc": "ConsumeItem() removes items from the inventory permanently.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemConsume" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "ExchangeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "pArrayGenerate" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const SteamItemDef_t *"}, +{ "paramname": "punArrayGenerateQuantity" ,"array_count": "unArrayGenerateLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayGenerateLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayDestroy" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "punArrayDestroyQuantity" ,"array_count": "unArrayDestroyLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "unArrayDestroyLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TransferItemQuantity", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "itemIdSource" ,"paramtype": "SteamItemInstanceID_t"}, +{ "paramname": "unQuantity" ,"paramtype": "uint32"}, +{ "paramname": "itemIdDest" ,"paramtype": "SteamItemInstanceID_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "SendItemDropHeartbeat", "desc": "Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when active gameplay begins and at least once every two minutes afterwards.", + "returntype": "void" +} +,{ + "classname": "ISteamInventory", + "methodname": "TriggerItemDrop", "desc": "Playtime credit must be consumed and turned into item drops by your game.", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "dropListDefinition" ,"paramtype": "SteamItemDef_t"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "TradeItems", + "returntype": "bool", + "params": [ +{ "paramname": "pResultHandle" ,"paramtype": "SteamInventoryResult_t *"}, +{ "paramname": "steamIDTradePartner" ,"paramtype": "class CSteamID"}, +{ "paramname": "pArrayGive" ,"array_count": "nArrayGiveLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGiveQuantity" ,"array_count": "nArrayGiveLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGiveLength" ,"paramtype": "uint32"}, +{ "paramname": "pArrayGet" ,"array_count": "nArrayGetLength" ,"paramtype": "const SteamItemInstanceID_t *"}, +{ "paramname": "pArrayGetQuantity" ,"array_count": "nArrayGetLength" ,"paramtype": "const uint32 *"}, +{ "paramname": "nArrayGetLength" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "LoadItemDefinitions", "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", + "returntype": "bool" +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionIDs", + "returntype": "bool", + "params": [ +{ "paramname": "pItemDefIDs" ,"out_array_count": "punItemDefIDsArraySize" ,"desc": "List of item definition IDs" ,"paramtype": "SteamItemDef_t *"}, +{ "paramname": "punItemDefIDsArraySize" ,"desc": "Size of array is passed in and actual size used is returned in this param" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamInventory", + "methodname": "GetItemDefinitionProperty", + "returntype": "bool", + "params": [ +{ "paramname": "iDefinition" ,"paramtype": "SteamItemDef_t"}, +{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, +{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, +{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "GetVideoURL", + "returntype": "void", + "params": [ +{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "IsBroadcasting", + "returntype": "bool", + "params": [ +{ "paramname": "pnNumViewers" ,"paramtype": "int *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "InitGameServer", + "returntype": "bool", + "params": [ +{ "paramname": "unIP" ,"paramtype": "uint32"}, +{ "paramname": "usGamePort" ,"paramtype": "uint16"}, +{ "paramname": "usQueryPort" ,"paramtype": "uint16"}, +{ "paramname": "unFlags" ,"paramtype": "uint32"}, +{ "paramname": "nGameAppId" ,"paramtype": "AppId_t"}, +{ "paramname": "pchVersionString" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetProduct", + "returntype": "void", + "params": [ +{ "paramname": "pszProduct" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameDescription", + "returntype": "void", + "params": [ +{ "paramname": "pszGameDescription" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetModDir", + "returntype": "void", + "params": [ +{ "paramname": "pszModDir" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetDedicatedServer", + "returntype": "void", + "params": [ +{ "paramname": "bDedicated" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOn", + "returntype": "void", + "params": [ +{ "paramname": "pszToken" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOnAnonymous", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "LogOff", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BLoggedOn", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "BSecure", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetSteamID", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "WasRestartRequested", + "returntype": "bool" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMaxPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cPlayersMax" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetBotPlayerCount", + "returntype": "void", + "params": [ +{ "paramname": "cBotplayers" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetMapName", + "returntype": "void", + "params": [ +{ "paramname": "pszMapName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetPasswordProtected", + "returntype": "void", + "params": [ +{ "paramname": "bPasswordProtected" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorPort", + "returntype": "void", + "params": [ +{ "paramname": "unSpectatorPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetSpectatorServerName", + "returntype": "void", + "params": [ +{ "paramname": "pszSpectatorServerName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ClearAllKeyValues", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetKeyValue", + "returntype": "void", + "params": [ +{ "paramname": "pKey" ,"paramtype": "const char *"}, +{ "paramname": "pValue" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameTags", + "returntype": "void", + "params": [ +{ "paramname": "pchGameTags" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetGameData", + "returntype": "void", + "params": [ +{ "paramname": "pchGameData" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetRegion", + "returntype": "void", + "params": [ +{ "paramname": "pszRegion" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserConnectAndAuthenticate", + "returntype": "bool", + "params": [ +{ "paramname": "unIPClient" ,"paramtype": "uint32"}, +{ "paramname": "pvAuthBlob" ,"paramtype": "const void *"}, +{ "paramname": "cubAuthBlobSize" ,"paramtype": "uint32"}, +{ "paramname": "pSteamIDUser" ,"paramtype": "class CSteamID *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CreateUnauthenticatedUserConnection", + "returntype": "class CSteamID" +} +,{ + "classname": "ISteamGameServer", + "methodname": "SendUserDisconnect", + "returntype": "void", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BUpdateUserData", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchPlayerName" ,"paramtype": "const char *"}, +{ "paramname": "uScore" ,"paramtype": "uint32"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetAuthSessionTicket", + "returntype": "HAuthTicket", + "params": [ +{ "paramname": "pTicket" ,"paramtype": "void *"}, +{ "paramname": "cbMaxTicket" ,"paramtype": "int"}, +{ "paramname": "pcbTicket" ,"paramtype": "uint32 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "BeginAuthSession", + "returntype": "EBeginAuthSessionResult", + "params": [ +{ "paramname": "pAuthTicket" ,"paramtype": "const void *"}, +{ "paramname": "cbAuthTicket" ,"paramtype": "int"}, +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EndAuthSession", + "returntype": "void", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "CancelAuthTicket", + "returntype": "void", + "params": [ +{ "paramname": "hAuthTicket" ,"paramtype": "HAuthTicket"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "UserHasLicenseForApp", + "returntype": "EUserHasLicenseForAppResult", + "params": [ +{ "paramname": "steamID" ,"paramtype": "class CSteamID"}, +{ "paramname": "appID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "RequestUserGroupStatus", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "steamIDGroup" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetGameplayStats", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetServerReputation", "callresult": "GSReputation_t", + "returntype": "SteamAPICall_t" +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetPublicIP", + "returntype": "uint32" +} +,{ + "classname": "ISteamGameServer", + "methodname": "HandleIncomingPacket", + "returntype": "bool", + "params": [ +{ "paramname": "pData" ,"paramtype": "const void *"}, +{ "paramname": "cbData" ,"paramtype": "int"}, +{ "paramname": "srcIP" ,"paramtype": "uint32"}, +{ "paramname": "srcPort" ,"paramtype": "uint16"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "GetNextOutgoingPacket", + "returntype": "int", + "params": [ +{ "paramname": "pOut" ,"paramtype": "void *"}, +{ "paramname": "cbMaxOut" ,"paramtype": "int"}, +{ "paramname": "pNetAdr" ,"paramtype": "uint32 *"}, +{ "paramname": "pPort" ,"paramtype": "uint16 *"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "EnableHeartbeats", + "returntype": "void", + "params": [ +{ "paramname": "bActive" ,"paramtype": "bool"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "SetHeartbeatInterval", + "returntype": "void", + "params": [ +{ "paramname": "iHeartbeatInterval" ,"paramtype": "int"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ForceHeartbeat", + "returntype": "void" +} +,{ + "classname": "ISteamGameServer", + "methodname": "AssociateWithClan", "callresult": "AssociateWithClanResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDClan" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServer", + "methodname": "ComputeNewPlayerCompatibility", "callresult": "ComputeNewPlayerCompatibilityResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDNewPlayer" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "RequestUserStats", "callresult": "GSStatsReceived_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "int32 *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pData" ,"paramtype": "float *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "GetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "pbAchieved" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "nData" ,"paramtype": "int32"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "fData" ,"paramtype": "float"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "UpdateUserAvgRateStat", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"}, +{ "paramname": "flCountThisSession" ,"paramtype": "float"}, +{ "paramname": "dSessionLength" ,"paramtype": "double"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "SetUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "ClearUserAchievement", + "returntype": "bool", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"}, +{ "paramname": "pchName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamGameServerStats", + "methodname": "StoreUserStats", "callresult": "GSStatsStored_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "steamIDUser" ,"paramtype": "class CSteamID"} + ] +} +] +} \ No newline at end of file diff --git a/lib/windows64/include/steam/steam_api_flat.h b/lib/windows64/include/steam/steam_api_flat.h new file mode 100644 index 0000000..e77e4cb --- /dev/null +++ b/lib/windows64/include/steam/steam_api_flat.h @@ -0,0 +1,802 @@ +//====== Copyright (c) 1996-2014, Valve Corporation, All rights reserved. ======= +// +// Purpose: Header for flatted SteamAPI. Use this for binding to other languages. +// This file is auto-generated, do not edit it. +// +//============================================================================= + +#ifndef STEAMAPIFLAT_H +#define STEAMAPIFLAT_H +#ifdef _WIN32 +#pragma once +#endif + +#include <stdint.h> + + +typedef unsigned char uint8; +typedef unsigned char uint8; +typedef signed char int8; +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; +typedef int64 lint64; +typedef uint64 ulint64; +typedef uint8 Salt_t[8]; +typedef uint64 GID_t; +typedef uint64 JobID_t; +typedef GID_t TxnID_t; +typedef uint32 PackageId_t; +typedef uint32 BundleId_t; +typedef uint32 AppId_t; +typedef uint64 AssetClassId_t; +typedef uint32 PhysicalItemId_t; +typedef uint32 DepotId_t; +typedef uint32 RTime32; +typedef uint32 CellID_t; +typedef uint64 SteamAPICall_t; +typedef uint32 AccountID_t; +typedef uint32 PartnerId_t; +typedef uint64 ManifestId_t; +typedef uint32 HAuthTicket; +typedef void * BREAKPAD_HANDLE; +typedef char compile_time_assert_type[1]; +typedef int32 HSteamPipe; +typedef int32 HSteamUser; +typedef int16 FriendsGroupID_t; +typedef void * HServerListRequest; +typedef int HServerQuery; +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +typedef uint64 UGCFileWriteStreamHandle_t; +typedef char compile_time_assert_type[1]; +typedef uint64 SteamLeaderboard_t; +typedef uint64 SteamLeaderboardEntries_t; +typedef uint32 SNetSocket_t; +typedef uint32 SNetListenSocket_t; +typedef uint32 ScreenshotHandle; +typedef uint32 HTTPRequestHandle; +typedef uint32 HTTPCookieContainerHandle; +typedef uint64 ClientUnifiedMessageHandle; +typedef uint64 ControllerHandle_t; +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; +typedef uint32 HHTMLBrowser; +typedef uint64 SteamItemInstanceID_t; +typedef int32 SteamItemDef_t; +typedef int32 SteamInventoryResult_t; +// OpenVR Constants +int const_k_iSteamUserCallbacks = 100; +int const_k_iSteamGameServerCallbacks = 200; +int const_k_iSteamFriendsCallbacks = 300; +int const_k_iSteamBillingCallbacks = 400; +int const_k_iSteamMatchmakingCallbacks = 500; +int const_k_iSteamContentServerCallbacks = 600; +int const_k_iSteamUtilsCallbacks = 700; +int const_k_iClientFriendsCallbacks = 800; +int const_k_iClientUserCallbacks = 900; +int const_k_iSteamAppsCallbacks = 1000; +int const_k_iSteamUserStatsCallbacks = 1100; +int const_k_iSteamNetworkingCallbacks = 1200; +int const_k_iClientRemoteStorageCallbacks = 1300; +int const_k_iClientDepotBuilderCallbacks = 1400; +int const_k_iSteamGameServerItemsCallbacks = 1500; +int const_k_iClientUtilsCallbacks = 1600; +int const_k_iSteamGameCoordinatorCallbacks = 1700; +int const_k_iSteamGameServerStatsCallbacks = 1800; +int const_k_iSteam2AsyncCallbacks = 1900; +int const_k_iSteamGameStatsCallbacks = 2000; +int const_k_iClientHTTPCallbacks = 2100; +int const_k_iClientScreenshotsCallbacks = 2200; +int const_k_iSteamScreenshotsCallbacks = 2300; +int const_k_iClientAudioCallbacks = 2400; +int const_k_iClientUnifiedMessagesCallbacks = 2500; +int const_k_iSteamStreamLauncherCallbacks = 2600; +int const_k_iClientControllerCallbacks = 2700; +int const_k_iSteamControllerCallbacks = 2800; +int const_k_iClientParentalSettingsCallbacks = 2900; +int const_k_iClientDeviceAuthCallbacks = 3000; +int const_k_iClientNetworkDeviceManagerCallbacks = 3100; +int const_k_iClientMusicCallbacks = 3200; +int const_k_iClientRemoteClientManagerCallbacks = 3300; +int const_k_iClientUGCCallbacks = 3400; +int const_k_iSteamStreamClientCallbacks = 3500; +int const_k_IClientProductBuilderCallbacks = 3600; +int const_k_iClientShortcutsCallbacks = 3700; +int const_k_iClientRemoteControlManagerCallbacks = 3800; +int const_k_iSteamAppListCallbacks = 3900; +int const_k_iSteamMusicCallbacks = 4000; +int const_k_iSteamMusicRemoteCallbacks = 4100; +int const_k_iClientVRCallbacks = 4200; +int const_k_iClientGameNotificationCallbacks = 4300; +int const_k_iSteamGameNotificationCallbacks = 4400; +int const_k_iSteamHTMLSurfaceCallbacks = 4500; +int const_k_iClientVideoCallbacks = 4600; +int const_k_iClientInventoryCallbacks = 4700; +int const_k_iClientBluetoothManagerCallbacks = 4800; +int const_k_cchPersonaNameMax = 128; +int const_k_cwchPersonaNameMax = 32; +int const_k_cchMaxRichPresenceKeys = 20; +int const_k_cchMaxRichPresenceKeyLength = 64; +int const_k_cchMaxRichPresenceValueLength = 256; +int const_k_cchStatNameMax = 128; +int const_k_cchLeaderboardNameMax = 128; +int const_k_cLeaderboardDetailsMax = 64; +unsigned long const_k_InvalidUnifiedMessageHandle = 0; +unsigned long const_k_SteamItemInstanceIDInvalid = 0xffffffff; +int const_k_SteamInventoryResultInvalid = -1; + + + +// OpenVR Enums +// OpenVR Structs + + + +S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser(intptr_t instancePtr, HSteamPipe hSteamPipe); +S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser(intptr_t instancePtr, HSteamPipe * phSteamPipe, EAccountType eAccountType); +S_API void SteamAPI_ISteamClient_ReleaseUser(intptr_t instancePtr, HSteamPipe hSteamPipe, HSteamUser hUser); +S_API class ISteamUser * SteamAPI_ISteamClient_GetISteamUser(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void SteamAPI_ISteamClient_SetLocalIPBinding(intptr_t instancePtr, uint32 unIP, uint16 usPort); +S_API class ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils(intptr_t instancePtr, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamApps * SteamAPI_ISteamClient_GetISteamApps(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamClient_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(intptr_t instancePtr); +S_API class ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUnifiedMessages * SteamAPI_ISteamClient_GetISteamUnifiedMessages(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamController * SteamAPI_ISteamClient_GetISteamController(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API class ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); +S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BLoggedOn(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamUser_GetSteamID(intptr_t instancePtr); +S_API int SteamAPI_ISteamUser_InitiateGameConnection(intptr_t instancePtr, void * pAuthBlob, int cbMaxAuthBlob, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure); +S_API void SteamAPI_ISteamUser_TerminateGameConnection(intptr_t instancePtr, uint32 unIPServer, uint16 usPortServer); +S_API void SteamAPI_ISteamUser_TrackAppUsageEvent(intptr_t instancePtr, class CGameID gameID, int eAppUsageEvent, const char * pchExtraInfo); +S_API bool SteamAPI_ISteamUser_GetUserDataFolder(intptr_t instancePtr, char * pchBuffer, int cubBuffer); +S_API void SteamAPI_ISteamUser_StartVoiceRecording(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_StopVoiceRecording(intptr_t instancePtr); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed, void * pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 * nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice(intptr_t instancePtr, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate); +S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(intptr_t instancePtr); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamUser_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamUser_BIsBehindNAT(intptr_t instancePtr); +S_API void SteamAPI_ISteamUser_AdvertiseGame(intptr_t instancePtr, class CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket(intptr_t instancePtr, void * pDataToInclude, int cbDataToInclude); +S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API int SteamAPI_ISteamUser_GetGameBadgeLevel(intptr_t instancePtr, int nSeries, bool bFoil); +S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL(intptr_t instancePtr, const char * pchRedirectURL); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetPersonaName(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName(intptr_t instancePtr, const char * pchPersonaName); +S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState(intptr_t instancePtr); +S_API int SteamAPI_ISteamFriends_GetFriendCount(intptr_t instancePtr, int iFriendFlags); +S_API uint64 SteamAPI_ISteamFriends_GetFriendByIndex(intptr_t instancePtr, int iFriend, int iFriendFlags); +S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed(intptr_t instancePtr, class CSteamID steamIDFriend, struct FriendGameInfo_t * pFriendGameInfo); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(intptr_t instancePtr, class CSteamID steamIDFriend, int iPersonaName); +S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname(intptr_t instancePtr, class CSteamID steamIDPlayer); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount(intptr_t instancePtr); +S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(intptr_t instancePtr, int iFG); +S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(intptr_t instancePtr, FriendsGroupID_t friendsGroupID); +S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(intptr_t instancePtr, FriendsGroupID_t friendsGroupID, class CSteamID * pOutSteamIDMembers, int nMembersCount); +S_API bool SteamAPI_ISteamFriends_HasFriend(intptr_t instancePtr, class CSteamID steamIDFriend, int iFriendFlags); +S_API int SteamAPI_ISteamFriends_GetClanCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetClanByIndex(intptr_t instancePtr, int iClan); +S_API const char * SteamAPI_ISteamFriends_GetClanName(intptr_t instancePtr, class CSteamID steamIDClan); +S_API const char * SteamAPI_ISteamFriends_GetClanTag(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts(intptr_t instancePtr, class CSteamID steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting); +S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts(intptr_t instancePtr, class CSteamID * psteamIDClans, int cClansToRequest); +S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource(intptr_t instancePtr, class CSteamID steamIDSource); +S_API uint64 SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(intptr_t instancePtr, class CSteamID steamIDSource, int iFriend); +S_API bool SteamAPI_ISteamFriends_IsUserInSource(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDSource); +S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(intptr_t instancePtr, class CSteamID steamIDUser, bool bSpeaking); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlay(intptr_t instancePtr, const char * pchDialog); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(intptr_t instancePtr, const char * pchDialog, class CSteamID steamID); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(intptr_t instancePtr, const char * pchURL); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(intptr_t instancePtr, AppId_t nAppID, EOverlayToStoreFlag eFlag); +S_API void SteamAPI_ISteamFriends_SetPlayedWith(intptr_t instancePtr, class CSteamID steamIDUserPlayedWith); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_RequestUserInformation(intptr_t instancePtr, class CSteamID steamIDUser, bool bRequireNameOnly); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOwner(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanOfficerCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetClanOfficerByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iOfficer); +S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamFriends_SetRichPresence(intptr_t instancePtr, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamFriends_ClearRichPresence(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchKey); +S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(intptr_t instancePtr, class CSteamID steamIDFriend, int iKey); +S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API bool SteamAPI_ISteamFriends_InviteUserToGame(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchConnectString); +S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamFriends_GetCoplayFriend(intptr_t instancePtr, int iCoplayFriend); +S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame(intptr_t instancePtr, class CSteamID steamIDFriend); +S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom(intptr_t instancePtr, class CSteamID steamIDClan); +S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount(intptr_t instancePtr, class CSteamID steamIDClan); +S_API uint64 SteamAPI_ISteamFriends_GetChatMemberByIndex(intptr_t instancePtr, class CSteamID steamIDClan, int iUser); +S_API bool SteamAPI_ISteamFriends_SendClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, const char * pchText); +S_API int SteamAPI_ISteamFriends_GetClanChatMessage(intptr_t instancePtr, class CSteamID steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, class CSteamID * psteamidChatter); +S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin(intptr_t instancePtr, class CSteamID steamIDClanChat, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(intptr_t instancePtr, class CSteamID steamIDClanChat); +S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(intptr_t instancePtr, bool bInterceptEnabled); +S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, const char * pchMsgToSend); +S_API int SteamAPI_ISteamFriends_GetFriendMessage(intptr_t instancePtr, class CSteamID steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing(intptr_t instancePtr, class CSteamID steamID); +S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList(intptr_t instancePtr, uint32 unStartIndex); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(intptr_t instancePtr); +S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUtils_GetIPCountry(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetImageSize(intptr_t instancePtr, int iImage, uint32 * pnWidth, uint32 * pnHeight); +S_API bool SteamAPI_ISteamUtils_GetImageRGBA(intptr_t instancePtr, int iImage, uint8 * pubDest, int nDestBufferSize); +S_API bool SteamAPI_ISteamUtils_GetCSERIPPort(intptr_t instancePtr, uint32 * unIP, uint16 * usPort); +S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUtils_GetAppID(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(intptr_t instancePtr, ENotificationPosition eNotificationPosition); +S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, bool * pbFailed); +S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason(intptr_t instancePtr, SteamAPICall_t hSteamAPICall); +S_API bool SteamAPI_ISteamUtils_GetAPICallResult(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed); +S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); +S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature(intptr_t instancePtr, const char * szFileName); +S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput(intptr_t instancePtr, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText); +S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(intptr_t instancePtr, char * pchText, uint32 cchText); +S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); +S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); +S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); +S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(intptr_t instancePtr, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(intptr_t instancePtr, const char * pchKeyToMatch, int nValueToBeCloseTo); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(intptr_t instancePtr, int nSlotsAvailable); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(intptr_t instancePtr, ELobbyDistanceFilter eLobbyDistanceFilter); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(intptr_t instancePtr, int cMaxResults); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyByIndex(intptr_t instancePtr, int iLobby); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby(intptr_t instancePtr, ELobbyType eLobbyType, int cMaxMembers); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_LeaveLobby(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDInvitee); +S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iMember); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(intptr_t instancePtr, class CSteamID steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize); +S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDUser, const char * pchKey); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(intptr_t instancePtr, class CSteamID steamIDLobby, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(intptr_t instancePtr, class CSteamID steamIDLobby, const void * pvMsgBody, int cubMsgBody); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(intptr_t instancePtr, class CSteamID steamIDLobby, int iChatID, class CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType); +S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, class CSteamID steamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(intptr_t instancePtr, class CSteamID steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, class CSteamID * psteamIDGameServer); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby, int cMaxMembers); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType(intptr_t instancePtr, class CSteamID steamIDLobby, ELobbyType eLobbyType); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(intptr_t instancePtr, class CSteamID steamIDLobby, bool bLobbyJoinable); +S_API uint64 SteamAPI_ISteamMatchmaking_GetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDNewOwner); +S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(intptr_t instancePtr, class CSteamID steamIDLobby, class CSteamID steamIDLobbyDependent); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(intptr_t instancePtr, HServerListRequest hRequest, EMatchMakingServerResponse response); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(intptr_t instancePtr, class gameserveritem_t & server); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(intptr_t instancePtr, const char * pchName, int nScore, float flTimePlayed); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(intptr_t instancePtr, const char * pchRule, const char * pchValue); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(intptr_t instancePtr); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(intptr_t instancePtr); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList(intptr_t instancePtr, AppId_t iApp, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(intptr_t instancePtr, AppId_t iApp, struct MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, class ISteamMatchmakingServerListResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(intptr_t instancePtr, HServerListRequest hServerListRequest); +S_API class gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery(intptr_t instancePtr, HServerListRequest hRequest); +S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(intptr_t instancePtr, HServerListRequest hRequest); +S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount(intptr_t instancePtr, HServerListRequest hRequest); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer(intptr_t instancePtr, HServerListRequest hRequest, int iServer); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPingResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingPlayersResponse * pRequestServersResponse); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules(intptr_t instancePtr, uint32 unIP, uint16 usPort, class ISteamMatchmakingRulesResponse * pRequestServersResponse); +S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(intptr_t instancePtr, HServerQuery hServerQuery); +S_API bool SteamAPI_ISteamRemoteStorage_FileWrite(intptr_t instancePtr, const char * pchFile, const void * pvData, int32 cubData); +S_API int32 SteamAPI_ISteamRemoteStorage_FileRead(intptr_t instancePtr, const char * pchFile, void * pvData, int32 cubDataToRead); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync(intptr_t instancePtr, const char * pchFile, const void * pvData, uint32 cubData); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync(intptr_t instancePtr, const char * pchFile, uint32 nOffset, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(intptr_t instancePtr, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead); +S_API bool SteamAPI_ISteamRemoteStorage_FileForget(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileDelete(intptr_t instancePtr, const char * pchFile); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(intptr_t instancePtr, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform); +S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(intptr_t instancePtr, UGCFileWriteStreamHandle_t writeHandle); +S_API bool SteamAPI_ISteamRemoteStorage_FileExists(intptr_t instancePtr, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize(intptr_t instancePtr, const char * pchFile); +S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp(intptr_t instancePtr, const char * pchFile); +S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(intptr_t instancePtr, const char * pchFile); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(intptr_t instancePtr, int iFile, int32 * pnFileSizeInBytes); +S_API bool SteamAPI_ISteamRemoteStorage_GetQuota(intptr_t instancePtr, uint64 * pnTotalBytes, uint64 * puAvailableBytes); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(intptr_t instancePtr); +S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(intptr_t instancePtr, bool bEnabled); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload(intptr_t instancePtr, UGCHandle_t hContent, uint32 unPriority); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(intptr_t instancePtr, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(intptr_t instancePtr, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, class CSteamID * pSteamIDOwner); +S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead(intptr_t instancePtr, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction); +S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(intptr_t instancePtr); +S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(intptr_t instancePtr, int32 iCachedContent); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(intptr_t instancePtr, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType); +S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(intptr_t instancePtr, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(intptr_t instancePtr, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(intptr_t instancePtr, PublishedFileId_t unPublishedFileId); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(intptr_t instancePtr, class CSteamID steamId, uint32 unStartIndex, struct SteamParamStringArray_t * pRequiredTags, struct SteamParamStringArray_t * pExcludedTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo(intptr_t instancePtr, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, struct SteamParamStringArray_t * pTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(intptr_t instancePtr, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(intptr_t instancePtr, EWorkshopFileAction eAction, uint32 unStartIndex); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(intptr_t instancePtr, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, struct SteamParamStringArray_t * pTags, struct SteamParamStringArray_t * pUserTags); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(intptr_t instancePtr, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority); +S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUserStats_GetStat(intptr_t instancePtr, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetStat0(intptr_t instancePtr, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_SetStat(intptr_t instancePtr, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamUserStats_SetStat0(intptr_t instancePtr, const char * pchName, float fData); +S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(intptr_t instancePtr, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamUserStats_GetAchievement(intptr_t instancePtr, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_SetAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_ClearAchievement(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(intptr_t instancePtr, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_StoreStats(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetAchievementIcon(intptr_t instancePtr, const char * pchName); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(intptr_t instancePtr, const char * pchName, const char * pchKey); +S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(intptr_t instancePtr, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress); +S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementName(intptr_t instancePtr, uint32 iAchievement); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamUserStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime); +S_API bool SteamAPI_ISteamUserStats_ResetAllStats(intptr_t instancePtr, bool bAchievementsToo); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard(intptr_t instancePtr, const char * pchLeaderboardName); +S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, class CSteamID * prgUsers, int cUsers); +S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(intptr_t instancePtr, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, struct LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC(intptr_t instancePtr, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(intptr_t instancePtr); +S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(intptr_t instancePtr, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(intptr_t instancePtr, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(intptr_t instancePtr, const char * pchName, float * pflPercent); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats(intptr_t instancePtr, int nHistoryDays); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat(intptr_t instancePtr, const char * pchStatName, int64 * pData); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStat0(intptr_t instancePtr, const char * pchStatName, double * pData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory(intptr_t instancePtr, const char * pchStatName, int64 * pData, uint32 cubData); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistory0(intptr_t instancePtr, const char * pchStatName, double * pData, uint32 cubData); +S_API bool SteamAPI_ISteamApps_BIsSubscribed(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsLowViolence(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsCybercafe(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsVACBanned(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BIsSubscribedApp(intptr_t instancePtr, AppId_t appID); +S_API bool SteamAPI_ISteamApps_BIsDlcInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(intptr_t instancePtr); +S_API int SteamAPI_ISteamApps_GetDLCCount(intptr_t instancePtr); +S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex(intptr_t instancePtr, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize); +S_API void SteamAPI_ISteamApps_InstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_UninstallDLC(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(intptr_t instancePtr, AppId_t nAppID); +S_API bool SteamAPI_ISteamApps_GetCurrentBetaName(intptr_t instancePtr, char * pchName, int cchNameBufferSize); +S_API bool SteamAPI_ISteamApps_MarkContentCorrupt(intptr_t instancePtr, bool bMissingFilesOnly); +S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots(intptr_t instancePtr, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots); +S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir(intptr_t instancePtr, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize); +S_API bool SteamAPI_ISteamApps_BIsAppInstalled(intptr_t instancePtr, AppId_t appID); +S_API uint64 SteamAPI_ISteamApps_GetAppOwner(intptr_t instancePtr); +S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam(intptr_t instancePtr, const char * pchKey); +S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress(intptr_t instancePtr, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API int SteamAPI_ISteamApps_GetAppBuildId(intptr_t instancePtr); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails(intptr_t instancePtr, const char * pszFileName); +S_API bool SteamAPI_ISteamNetworking_SendP2PPacket(intptr_t instancePtr, class CSteamID steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel); +S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(intptr_t instancePtr, uint32 * pcubMsgSize, int nChannel); +S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket(intptr_t instancePtr, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, class CSteamID * psteamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(intptr_t instancePtr, class CSteamID steamIDRemote); +S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(intptr_t instancePtr, class CSteamID steamIDRemote, int nChannel); +S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState(intptr_t instancePtr, class CSteamID steamIDRemote, struct P2PSessionState_t * pConnectionState); +S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(intptr_t instancePtr, bool bAllow); +S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket(intptr_t instancePtr, int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(intptr_t instancePtr, class CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket(intptr_t instancePtr, uint32 nIP, uint16 nPort, int nTimeoutSec); +S_API bool SteamAPI_ISteamNetworking_DestroySocket(intptr_t instancePtr, SNetSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket(intptr_t instancePtr, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd); +S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(intptr_t instancePtr, SNetSocket_t hSocket, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(intptr_t instancePtr, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailable(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_RetrieveData(intptr_t instancePtr, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket); +S_API bool SteamAPI_ISteamNetworking_GetSocketInfo(intptr_t instancePtr, SNetSocket_t hSocket, class CSteamID * pSteamIDRemote, int * peSocketStatus, uint32 * punIPRemote, uint16 * punPortRemote); +S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo(intptr_t instancePtr, SNetListenSocket_t hListenSocket, uint32 * pnIP, uint16 * pnPort); +S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType(intptr_t instancePtr, SNetSocket_t hSocket); +S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize(intptr_t instancePtr, SNetSocket_t hSocket); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot(intptr_t instancePtr, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(intptr_t instancePtr, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight); +S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot(intptr_t instancePtr); +S_API void SteamAPI_ISteamScreenshots_HookScreenshots(intptr_t instancePtr, bool bHook); +S_API bool SteamAPI_ISteamScreenshots_SetLocation(intptr_t instancePtr, ScreenshotHandle hScreenshot, const char * pchLocation); +S_API bool SteamAPI_ISteamScreenshots_TagUser(intptr_t instancePtr, ScreenshotHandle hScreenshot, class CSteamID steamID); +S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile(intptr_t instancePtr, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID); +S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(intptr_t instancePtr); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(intptr_t instancePtr, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename); +S_API bool SteamAPI_ISteamMusic_BIsEnabled(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusic_BIsPlaying(intptr_t instancePtr); +S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Play(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_Pause(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayPrevious(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_PlayNext(intptr_t instancePtr); +S_API void SteamAPI_ISteamMusic_SetVolume(intptr_t instancePtr, float flVolume); +S_API float SteamAPI_ISteamMusic_GetVolume(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(intptr_t instancePtr, const char * pchName); +S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName(intptr_t instancePtr, const char * pchDisplayName); +S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnableQueue(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(intptr_t instancePtr, AudioPlayback_Status nStatus); +S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped(intptr_t instancePtr, bool bValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume(intptr_t instancePtr, float flValue); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(intptr_t instancePtr, bool bAvailable); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(intptr_t instancePtr, const char * pchText); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(intptr_t instancePtr, int nValue); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(intptr_t instancePtr, void * pvBuffer, uint32 cbBufferLength); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(intptr_t instancePtr); +S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(intptr_t instancePtr, int nID, int nPosition, const char * pchEntryText); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(intptr_t instancePtr, int nID); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(intptr_t instancePtr); +S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest(intptr_t instancePtr, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(intptr_t instancePtr, HTTPRequestHandle hRequest, uint64 ulContextValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(intptr_t instancePtr, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle); +S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 * unBodySize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize); +S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(intptr_t instancePtr, HTTPRequestHandle hRequest); +S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(intptr_t instancePtr, HTTPRequestHandle hRequest, float * pflPercentOut); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen); +S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer(intptr_t instancePtr, bool bAllowResponsesToModify); +S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetCookie(intptr_t instancePtr, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(intptr_t instancePtr, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(intptr_t instancePtr, HTTPRequestHandle hRequest, const char * pchUserAgentInfo); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(intptr_t instancePtr, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(intptr_t instancePtr, HTTPRequestHandle hRequest, uint32 unMilliseconds); +S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(intptr_t instancePtr, HTTPRequestHandle hRequest, bool * pbWasTimedOut); +S_API ClientUnifiedMessageHandle SteamAPI_ISteamUnifiedMessages_SendMethod(intptr_t instancePtr, const char * pchServiceMethod, const void * pRequestBuffer, uint32 unRequestBufferSize, uint64 unContext); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, uint32 * punResponseSize, EResult * peResult); +S_API bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle, void * pResponseBuffer, uint32 unResponseBufferSize, bool bAutoRelease); +S_API bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(intptr_t instancePtr, ClientUnifiedMessageHandle hHandle); +S_API bool SteamAPI_ISteamUnifiedMessages_SendNotification(intptr_t instancePtr, const char * pchServiceNotification, const void * pNotificationBuffer, uint32 unNotificationBufferSize); +S_API bool SteamAPI_ISteamController_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamController_Shutdown(intptr_t instancePtr); +S_API void SteamAPI_ISteamController_RunFrame(intptr_t instancePtr); +S_API int SteamAPI_ISteamController_GetConnectedControllers(intptr_t instancePtr, ControllerHandle_t * handlesOut); +S_API bool SteamAPI_ISteamController_ShowBindingPanel(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle(intptr_t instancePtr, const char * pszActionSetName); +S_API void SteamAPI_ISteamController_ActivateActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle); +S_API int SteamAPI_ISteamController_GetDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut); +S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle(intptr_t instancePtr, const char * pszActionName); +S_API struct ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle); +S_API int SteamAPI_ISteamController_GetAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut); +S_API void SteamAPI_ISteamController_StopAnalogActionMomentum(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction); +S_API void SteamAPI_ISteamController_TriggerHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec); +S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(intptr_t instancePtr, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags); +S_API int SteamAPI_ISteamController_GetGamepadIndexForController(intptr_t instancePtr, ControllerHandle_t ulControllerHandle); +S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex(intptr_t instancePtr, int nIndex); +S_API struct ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(intptr_t instancePtr, ControllerHandle_t controllerHandle); +S_API bool SteamAPI_ISteamController_ShowDigitalActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition); +S_API bool SteamAPI_ISteamController_ShowAnalogActionOrigins(intptr_t instancePtr, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(intptr_t instancePtr, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(intptr_t instancePtr, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, struct SteamUGCDetails_t * pDetails); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize); +S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); +S_API bool SteamAPI_ISteamUGC_AddRequiredTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_AddExcludedTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pTagName); +S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnOnlyIDs); +S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnKeyValueTags); +S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnLongDescription); +S_API bool SteamAPI_ISteamUGC_SetReturnMetadata(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnMetadata); +S_API bool SteamAPI_ISteamUGC_SetReturnChildren(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnChildren); +S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews); +S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnTotalOnly); +S_API bool SteamAPI_ISteamUGC_SetLanguage(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds); +S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pMatchCloudFileName); +S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag(intptr_t instancePtr, UGCQueryHandle_t handle, bool bMatchAnyTag); +S_API bool SteamAPI_ISteamUGC_SetSearchText(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pSearchText); +S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); +S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pKey, const char * pValue); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds); +S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem(intptr_t instancePtr, AppId_t nConsumerAppId, EWorkshopFileType eFileType); +S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate(intptr_t instancePtr, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_SetItemTitle(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchTitle); +S_API bool SteamAPI_ISteamUGC_SetItemDescription(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchDescription); +S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchLanguage); +S_API bool SteamAPI_ISteamUGC_SetItemMetadata(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchMetaData); +S_API bool SteamAPI_ISteamUGC_SetItemVisibility(intptr_t instancePtr, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); +S_API bool SteamAPI_ISteamUGC_SetItemTags(intptr_t instancePtr, UGCUpdateHandle_t updateHandle, const struct SteamParamStringArray_t * pTags); +S_API bool SteamAPI_ISteamUGC_SetItemContent(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszContentFolder); +S_API bool SteamAPI_ISteamUGC_SetItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey); +S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchChangeNote); +S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress(intptr_t instancePtr, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bVoteUp); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites(intptr_t instancePtr, AppId_t nAppId, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); +S_API uint32 SteamAPI_ISteamUGC_GetItemState(intptr_t instancePtr, PublishedFileId_t nPublishedFileID); +S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp); +S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); +S_API bool SteamAPI_ISteamUGC_DownloadItem(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bHighPriority); +S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(intptr_t instancePtr, DepotId_t unWorkshopDepotID, const char * pszFolder); +S_API void SteamAPI_ISteamUGC_SuspendDownloads(intptr_t instancePtr, bool bSuspend); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps(intptr_t instancePtr, AppId_t * pvecAppID, uint32 unMaxAppIDs); +S_API int SteamAPI_ISteamAppList_GetAppName(intptr_t instancePtr, AppId_t nAppID, char * pchName, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppInstallDir(intptr_t instancePtr, AppId_t nAppID, char * pchDirectory, int cchNameMax); +S_API int SteamAPI_ISteamAppList_GetAppBuildId(intptr_t instancePtr, AppId_t nAppID); +S_API void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Init(intptr_t instancePtr); +S_API bool SteamAPI_ISteamHTMLSurface_Shutdown(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser(intptr_t instancePtr, const char * pchUserAgent, const char * pchUserCSS); +S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_LoadURL(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData); +S_API void SteamAPI_ISteamHTMLSurface_SetSize(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight); +S_API void SteamAPI_ISteamHTMLSurface_StopLoad(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Reload(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoBack(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GoForward(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_AddHeader(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue); +S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchScript); +S_API void SteamAPI_ISteamHTMLSurface_MouseUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton); +S_API void SteamAPI_ISteamHTMLSurface_MouseMove(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_MouseWheel(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int32 nDelta); +S_API void SteamAPI_ISteamHTMLSurface_KeyDown(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyUp(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_KeyChar(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers); +S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll); +S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus); +S_API void SteamAPI_ISteamHTMLSurface_ViewSource(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_Find(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse); +S_API void SteamAPI_ISteamHTMLSurface_StopFind(intptr_t instancePtr, HHTMLBrowser unBrowserHandle); +S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, int x, int y); +S_API void SteamAPI_ISteamHTMLSurface_SetCookie(intptr_t instancePtr, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly); +S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY); +S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bBackgroundMode); +S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bAllowed); +S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bResult); +S_API EResult SteamAPI_ISteamInventory_GetResultStatus(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetResultItems(intptr_t instancePtr, SteamInventoryResult_t resultHandle, struct SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize); +S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_CheckResultSteamID(intptr_t instancePtr, SteamInventoryResult_t resultHandle, class CSteamID steamIDExpected); +S_API void SteamAPI_ISteamInventory_DestroyResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle); +S_API bool SteamAPI_ISteamInventory_GetAllItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_GetItemsByID(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs); +S_API bool SteamAPI_ISteamInventory_SerializeResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize); +S_API bool SteamAPI_ISteamInventory_DeserializeResult(intptr_t instancePtr, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE); +S_API bool SteamAPI_ISteamInventory_GenerateItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_GrantPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle); +S_API bool SteamAPI_ISteamInventory_AddPromoItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef); +S_API bool SteamAPI_ISteamInventory_AddPromoItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength); +S_API bool SteamAPI_ISteamInventory_ConsumeItem(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity); +S_API bool SteamAPI_ISteamInventory_ExchangeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength); +S_API bool SteamAPI_ISteamInventory_TransferItemQuantity(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest); +S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_TriggerItemDrop(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition); +S_API bool SteamAPI_ISteamInventory_TradeItems(intptr_t instancePtr, SteamInventoryResult_t * pResultHandle, class CSteamID steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength); +S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions(intptr_t instancePtr); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(intptr_t instancePtr, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(intptr_t instancePtr, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); +S_API void SteamAPI_ISteamVideo_GetVideoURL(intptr_t instancePtr, AppId_t unVideoAppID); +S_API bool SteamAPI_ISteamVideo_IsBroadcasting(intptr_t instancePtr, int * pnNumViewers); +S_API bool SteamAPI_ISteamGameServer_InitGameServer(intptr_t instancePtr, uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char * pchVersionString); +S_API void SteamAPI_ISteamGameServer_SetProduct(intptr_t instancePtr, const char * pszProduct); +S_API void SteamAPI_ISteamGameServer_SetGameDescription(intptr_t instancePtr, const char * pszGameDescription); +S_API void SteamAPI_ISteamGameServer_SetModDir(intptr_t instancePtr, const char * pszModDir); +S_API void SteamAPI_ISteamGameServer_SetDedicatedServer(intptr_t instancePtr, bool bDedicated); +S_API void SteamAPI_ISteamGameServer_LogOn(intptr_t instancePtr, const char * pszToken); +S_API void SteamAPI_ISteamGameServer_LogOnAnonymous(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_LogOff(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BLoggedOn(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_BSecure(intptr_t instancePtr); +S_API uint64 SteamAPI_ISteamGameServer_GetSteamID(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_WasRestartRequested(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount(intptr_t instancePtr, int cPlayersMax); +S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount(intptr_t instancePtr, int cBotplayers); +S_API void SteamAPI_ISteamGameServer_SetServerName(intptr_t instancePtr, const char * pszServerName); +S_API void SteamAPI_ISteamGameServer_SetMapName(intptr_t instancePtr, const char * pszMapName); +S_API void SteamAPI_ISteamGameServer_SetPasswordProtected(intptr_t instancePtr, bool bPasswordProtected); +S_API void SteamAPI_ISteamGameServer_SetSpectatorPort(intptr_t instancePtr, uint16 unSpectatorPort); +S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName(intptr_t instancePtr, const char * pszSpectatorServerName); +S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SetKeyValue(intptr_t instancePtr, const char * pKey, const char * pValue); +S_API void SteamAPI_ISteamGameServer_SetGameTags(intptr_t instancePtr, const char * pchGameTags); +S_API void SteamAPI_ISteamGameServer_SetGameData(intptr_t instancePtr, const char * pchGameData); +S_API void SteamAPI_ISteamGameServer_SetRegion(intptr_t instancePtr, const char * pszRegion); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(intptr_t instancePtr, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, class CSteamID * pSteamIDUser); +S_API uint64 SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(intptr_t instancePtr); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchPlayerName, uint32 uScore); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); +S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession(intptr_t instancePtr, const void * pAuthTicket, int cbAuthTicket, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_EndAuthSession(intptr_t instancePtr, class CSteamID steamID); +S_API void SteamAPI_ISteamGameServer_CancelAuthTicket(intptr_t instancePtr, HAuthTicket hAuthTicket); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp(intptr_t instancePtr, class CSteamID steamID, AppId_t appID); +S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(intptr_t instancePtr, class CSteamID steamIDUser, class CSteamID steamIDGroup); +S_API void SteamAPI_ISteamGameServer_GetGameplayStats(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation(intptr_t instancePtr); +S_API uint32 SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr); +S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket(intptr_t instancePtr, const void * pData, int cbData, uint32 srcIP, uint16 srcPort); +S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(intptr_t instancePtr, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort); +S_API void SteamAPI_ISteamGameServer_EnableHeartbeats(intptr_t instancePtr, bool bActive); +S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval(intptr_t instancePtr, int iHeartbeatInterval); +S_API void SteamAPI_ISteamGameServer_ForceHeartbeat(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan(intptr_t instancePtr, class CSteamID steamIDClan); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(intptr_t instancePtr, class CSteamID steamIDNewPlayer); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float * pData); +S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, bool * pbAchieved); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, int32 nData); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStat0(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float fData); +S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength); +S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(intptr_t instancePtr, class CSteamID steamIDUser, const char * pchName); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats(intptr_t instancePtr, class CSteamID steamIDUser); +#endif // STEAMAPIFLAT_H + + diff --git a/lib/windows64/include/steam/steam_api_internal.h b/lib/windows64/include/steam/steam_api_internal.h new file mode 100644 index 0000000..ed0423b --- /dev/null +++ b/lib/windows64/include/steam/steam_api_internal.h @@ -0,0 +1,327 @@ +//====== Copyright 1996-2015, Valve Corporation, All rights reserved. ======= +// +// Purpose: Internal private Steamworks API declarations and definitions +// +//============================================================================= + +#ifndef STEAM_API_INTERNAL_H +#define STEAM_API_INTERNAL_H + +S_API HSteamUser SteamAPI_GetHSteamUser(); +S_API void * S_CALLTYPE SteamInternal_ContextInit( void *pContextInitData ); +S_API void * S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); + +#if !defined( STEAM_API_EXPORTS ) + +inline void S_CALLTYPE SteamInternal_OnContextInit( void* p ) +{ + ((CSteamAPIContext*)p)->Clear(); + if ( SteamAPI_GetHSteamPipe() ) + ((CSteamAPIContext*)p)->Init(); +} +inline CSteamAPIContext& SteamInternal_ModuleContext() +{ + // SteamInternal_ContextInit takes a base pointer for the equivalent of + // struct { void (*pFn)(void* pCtx); uintp counter; CSteamAPIContext ctx; } + // Do not change layout of 2 + sizeof... or add non-pointer aligned data! + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* s_CallbackCounterAndContext[ 2 + sizeof(CSteamAPIContext)/sizeof(void*) ] = { (void*)&SteamInternal_OnContextInit, 0 }; + return *(CSteamAPIContext*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); +} + +inline ISteamClient *SteamClient() { return SteamInternal_ModuleContext().SteamClient(); } +inline ISteamUser *SteamUser() { return SteamInternal_ModuleContext().SteamUser(); } +inline ISteamFriends *SteamFriends() { return SteamInternal_ModuleContext().SteamFriends(); } +inline ISteamUtils *SteamUtils() { return SteamInternal_ModuleContext().SteamUtils(); } +inline ISteamMatchmaking *SteamMatchmaking() { return SteamInternal_ModuleContext().SteamMatchmaking(); } +inline ISteamUserStats *SteamUserStats() { return SteamInternal_ModuleContext().SteamUserStats(); } +inline ISteamApps *SteamApps() { return SteamInternal_ModuleContext().SteamApps(); } +inline ISteamMatchmakingServers *SteamMatchmakingServers() { return SteamInternal_ModuleContext().SteamMatchmakingServers(); } +inline ISteamNetworking *SteamNetworking() { return SteamInternal_ModuleContext().SteamNetworking(); } +inline ISteamRemoteStorage *SteamRemoteStorage() { return SteamInternal_ModuleContext().SteamRemoteStorage(); } +inline ISteamScreenshots *SteamScreenshots() { return SteamInternal_ModuleContext().SteamScreenshots(); } +inline ISteamHTTP *SteamHTTP() { return SteamInternal_ModuleContext().SteamHTTP(); } +inline ISteamUnifiedMessages *SteamUnifiedMessages() { return SteamInternal_ModuleContext().SteamUnifiedMessages(); } +inline ISteamController *SteamController() { return SteamInternal_ModuleContext().SteamController(); } +inline ISteamUGC *SteamUGC() { return SteamInternal_ModuleContext().SteamUGC(); } +inline ISteamAppList *SteamAppList() { return SteamInternal_ModuleContext().SteamAppList(); } +inline ISteamMusic *SteamMusic() { return SteamInternal_ModuleContext().SteamMusic(); } +inline ISteamMusicRemote *SteamMusicRemote() { return SteamInternal_ModuleContext().SteamMusicRemote(); } +inline ISteamHTMLSurface *SteamHTMLSurface() { return SteamInternal_ModuleContext().SteamHTMLSurface(); } +inline ISteamInventory *SteamInventory() { return SteamInternal_ModuleContext().SteamInventory(); } +inline ISteamVideo *SteamVideo() { return SteamInternal_ModuleContext().SteamVideo(); } + +#endif // !defined( STEAM_API_EXPORTS ) + + +inline void CSteamAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamUser = NULL; + m_pSteamFriends = NULL; + m_pSteamUtils = NULL; + m_pSteamMatchmaking = NULL; + m_pSteamUserStats = NULL; + m_pSteamApps = NULL; + m_pSteamMatchmakingServers = NULL; + m_pSteamNetworking = NULL; + m_pSteamRemoteStorage = NULL; + m_pSteamHTTP = NULL; + m_pSteamScreenshots = NULL; + m_pSteamMusic = NULL; + m_pSteamUnifiedMessages = NULL; + m_pController = NULL; + m_pSteamUGC = NULL; + m_pSteamAppList = NULL; + m_pSteamMusic = NULL; + m_pSteamMusicRemote = NULL; + m_pSteamHTMLSurface = NULL; + m_pSteamInventory = NULL; +} + + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamAPIContext::Init() +{ + HSteamUser hSteamUser = SteamAPI_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamUser = m_pSteamClient->GetISteamUser( hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION ); + if ( !m_pSteamUser ) + return false; + + m_pSteamFriends = m_pSteamClient->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION ); + if ( !m_pSteamFriends ) + return false; + + m_pSteamUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamUtils ) + return false; + + m_pSteamMatchmaking = m_pSteamClient->GetISteamMatchmaking( hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION ); + if ( !m_pSteamMatchmaking ) + return false; + + m_pSteamMatchmakingServers = m_pSteamClient->GetISteamMatchmakingServers( hSteamUser, hSteamPipe, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); + if ( !m_pSteamMatchmakingServers ) + return false; + + m_pSteamUserStats = m_pSteamClient->GetISteamUserStats( hSteamUser, hSteamPipe, STEAMUSERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamUserStats ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + m_pSteamNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamNetworking ) + return false; + + m_pSteamRemoteStorage = m_pSteamClient->GetISteamRemoteStorage( hSteamUser, hSteamPipe, STEAMREMOTESTORAGE_INTERFACE_VERSION ); + if ( !m_pSteamRemoteStorage ) + return false; + + m_pSteamScreenshots = m_pSteamClient->GetISteamScreenshots( hSteamUser, hSteamPipe, STEAMSCREENSHOTS_INTERFACE_VERSION ); + if ( !m_pSteamScreenshots ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamUnifiedMessages = m_pSteamClient->GetISteamUnifiedMessages( hSteamUser, hSteamPipe, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION ); + if ( !m_pSteamUnifiedMessages ) + return false; + + m_pController = m_pSteamClient->GetISteamController( hSteamUser, hSteamPipe, STEAMCONTROLLER_INTERFACE_VERSION ); + if ( !m_pController ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamAppList = m_pSteamClient->GetISteamAppList( hSteamUser, hSteamPipe, STEAMAPPLIST_INTERFACE_VERSION ); + if ( !m_pSteamAppList ) + return false; + + m_pSteamMusic = m_pSteamClient->GetISteamMusic( hSteamUser, hSteamPipe, STEAMMUSIC_INTERFACE_VERSION ); + if ( !m_pSteamMusic ) + return false; + + m_pSteamMusicRemote = m_pSteamClient->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION ); + if ( !m_pSteamMusicRemote ) + return false; + + m_pSteamHTMLSurface = m_pSteamClient->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION ); + if ( !m_pSteamHTMLSurface ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamVideo = m_pSteamClient->GetISteamVideo( hSteamUser, hSteamPipe, STEAMVIDEO_INTERFACE_VERSION ); + if ( !m_pSteamVideo ) + return false; + + return true; +} + + +//----------------------------------------------------------------------------- +// The following macros are implementation details, not intended for public use +//----------------------------------------------------------------------------- +#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) +#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED +#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y +#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ + struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ + CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ + private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + pOuter->func( reinterpret_cast<param*>( pvParam ) ); \ + } \ + } m_steamcallback_ ## func ; void func( param *pParam ) +#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ + CCallback< thisclass, param > var; void func( param *pParam ) + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +inline CCallResult<T, P>::CCallResult() +{ + m_hAPICall = k_uAPICallInvalid; + m_pObj = NULL; + m_Func = NULL; + m_iCallback = P::k_iCallback; +} + +template< class T, class P > +inline void CCallResult<T, P>::Set( SteamAPICall_t hAPICall, T *p, func_t func ) +{ + if ( m_hAPICall ) + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + + m_hAPICall = hAPICall; + m_pObj = p; + m_Func = func; + + if ( hAPICall ) + SteamAPI_RegisterCallResult( this, hAPICall ); +} + +template< class T, class P > +inline bool CCallResult<T, P>::IsActive() const +{ + return (m_hAPICall != k_uAPICallInvalid); +} + +template< class T, class P > +inline void CCallResult<T, P>::Cancel() +{ + if ( m_hAPICall != k_uAPICallInvalid ) + { + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + m_hAPICall = k_uAPICallInvalid; + } + +} + +template< class T, class P > +inline CCallResult<T, P>::~CCallResult() +{ + Cancel(); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam ) +{ + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, false); +} + +template< class T, class P > +inline void CCallResult<T, P>::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) +{ + if ( hSteamAPICall == m_hAPICall ) + { + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, bIOFailure); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver > +inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) + : m_pObj( NULL ), m_Func( NULL ) +{ + if ( bGameserver ) + { + this->SetGameserverFlag(); + } + Register( pObj, func ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) +{ + if ( !pObj || !func ) + return; + + if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) + Unregister(); + + m_pObj = pObj; + m_Func = func; + // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered + SteamAPI_RegisterCallback( this, P::k_iCallback ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Unregister() +{ + // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered + SteamAPI_UnregisterCallback( this ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) +{ + (m_pObj->*m_Func)((P *)pvParam); +} + + +#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) +// this should be called before the game initialized the steam APIs +// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) +// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) +// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder +// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback +// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. +S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); +S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#endif + + +#endif // STEAM_API_INTERNAL_H diff --git a/lib/windows64/include/steam/steam_api_interop.cs b/lib/windows64/include/steam/steam_api_interop.cs new file mode 100644 index 0000000..f7a6775 --- /dev/null +++ b/lib/windows64/include/steam/steam_api_interop.cs @@ -0,0 +1,10470 @@ +//====== Copyright 1996-2016, Valve Corporation, All rights reserved. ======= +// +// Purpose: This file contains C#/managed code bindings for the SteamAPI interfaces +// This file is auto-generated, do not edit it. +// +//============================================================================= + +using System; +using System.Runtime.InteropServices; +using Valve.Steamworks; +using Valve.Interop; + +namespace Valve.Interop +{ + +public class NativeEntrypoints +{ + + +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe")] +internal static extern uint SteamAPI_ISteamClient_CreateSteamPipe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BReleaseSteamPipe")] +internal static extern bool SteamAPI_ISteamClient_BReleaseSteamPipe(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ConnectToGlobalUser")] +internal static extern uint SteamAPI_ISteamClient_ConnectToGlobalUser(IntPtr instancePtr, uint hSteamPipe); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_CreateLocalUser")] +internal static extern uint SteamAPI_ISteamClient_CreateLocalUser(IntPtr instancePtr, ref uint phSteamPipe, uint eAccountType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_ReleaseUser")] +internal static extern void SteamAPI_ISteamClient_ReleaseUser(IntPtr instancePtr, uint hSteamPipe, uint hUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUser")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUser(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServer")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServer(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetLocalIPBinding")] +internal static extern void SteamAPI_ISteamClient_SetLocalIPBinding(IntPtr instancePtr, uint unIP, char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamFriends")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamFriends(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUtils")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUtils(IntPtr instancePtr, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmaking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmaking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMatchmakingServers")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMatchmakingServers(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGenericInterface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGenericInterface(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUserStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUserStats(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamGameServerStats")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamGameServerStats(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamApps")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamApps(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamNetworking")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamNetworking(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamRemoteStorage")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamRemoteStorage(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamScreenshots(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamClient_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamClient_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed")] +internal static extern bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTTP")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTTP(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUnifiedMessages")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUnifiedMessages(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamController")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamController(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamUGC")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamUGC(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamAppList")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamAppList(IntPtr instancePtr, uint hSteamUser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusic")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusic(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamMusicRemote")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusicRemote(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTMLSurface(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInventory(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo")] +internal static extern IntPtr SteamAPI_ISteamClient_GetISteamVideo(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser")] +internal static extern uint SteamAPI_ISteamUser_GetHSteamUser(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BLoggedOn")] +internal static extern bool SteamAPI_ISteamUser_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetSteamID")] +internal static extern ulong SteamAPI_ISteamUser_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection")] +internal static extern int SteamAPI_ISteamUser_InitiateGameConnection(IntPtr instancePtr, IntPtr pAuthBlob, int cbMaxAuthBlob, ulong steamIDGameServer, uint unIPServer, char usPortServer, bool bSecure); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection")] +internal static extern void SteamAPI_ISteamUser_TerminateGameConnection(IntPtr instancePtr, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent")] +internal static extern void SteamAPI_ISteamUser_TrackAppUsageEvent(IntPtr instancePtr, ulong gameID, int eAppUsageEvent, string pchExtraInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetUserDataFolder")] +internal static extern bool SteamAPI_ISteamUser_GetUserDataFolder(IntPtr instancePtr, string pchBuffer, int cubBuffer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StartVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StartVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording")] +internal static extern void SteamAPI_ISteamUser_StopVoiceRecording(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice")] +internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoice")] +internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed, IntPtr pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, ref uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_DecompressVoice")] +internal static extern uint SteamAPI_ISteamUser_DecompressVoice(IntPtr instancePtr, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate")] +internal static extern uint SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamUser_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_EndAuthSession")] +internal static extern void SteamAPI_ISteamUser_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamUser_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamUser_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsBehindNAT")] +internal static extern bool SteamAPI_ISteamUser_BIsBehindNAT(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_AdvertiseGame")] +internal static extern void SteamAPI_ISteamUser_AdvertiseGame(IntPtr instancePtr, ulong steamIDGameServer, uint unIPServer, char usPortServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestEncryptedAppTicket")] +internal static extern ulong SteamAPI_ISteamUser_RequestEncryptedAppTicket(IntPtr instancePtr, IntPtr pDataToInclude, int cbDataToInclude); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetEncryptedAppTicket")] +internal static extern bool SteamAPI_ISteamUser_GetEncryptedAppTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetGameBadgeLevel")] +internal static extern int SteamAPI_ISteamUser_GetGameBadgeLevel(IntPtr instancePtr, int nSeries, bool bFoil); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetPlayerSteamLevel")] +internal static extern int SteamAPI_ISteamUser_GetPlayerSteamLevel(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL")] +internal static extern ulong SteamAPI_ISteamUser_RequestStoreAuthURL(IntPtr instancePtr, string pchRedirectURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneVerified(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled")] +internal static extern bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneIdentifying")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneIdentifying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneRequiringVerification")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPersonaName(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName")] +internal static extern ulong SteamAPI_ISteamFriends_SetPersonaName(IntPtr instancePtr, string pchPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetPersonaState(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCount(IntPtr instancePtr, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendByIndex(IntPtr instancePtr, int iFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRelationship")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendRelationship(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaState")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendPersonaState(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaName(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendGamePlayed")] +internal static extern bool SteamAPI_ISteamFriends_GetFriendGamePlayed(IntPtr instancePtr, ulong steamIDFriend, ref FriendGameInfo_t pFriendGameInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(IntPtr instancePtr, ulong steamIDFriend, int iPersonaName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendSteamLevel")] +internal static extern int SteamAPI_ISteamFriends_GetFriendSteamLevel(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPlayerNickname")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetPlayerNickname(IntPtr instancePtr, ulong steamIDPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex")] +internal static extern char SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(IntPtr instancePtr, int iFG); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendsGroupName(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(IntPtr instancePtr, char friendsGroupID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendsGroupMembersList")] +internal static extern void SteamAPI_ISteamFriends_GetFriendsGroupMembersList(IntPtr instancePtr, char friendsGroupID, [In, Out] CSteamID[] pOutSteamIDMembers, int nMembersCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_HasFriend")] +internal static extern bool SteamAPI_ISteamFriends_HasFriend(IntPtr instancePtr, ulong steamIDFriend, int iFriendFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanByIndex(IntPtr instancePtr, int iClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanName")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanName(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanTag")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetClanTag(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanActivityCounts")] +internal static extern bool SteamAPI_ISteamFriends_GetClanActivityCounts(IntPtr instancePtr, ulong steamIDClan, ref int pnOnline, ref int pnInGame, ref int pnChatting); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_DownloadClanActivityCounts")] +internal static extern ulong SteamAPI_ISteamFriends_DownloadClanActivityCounts(IntPtr instancePtr, [In, Out] CSteamID[] psteamIDClans, int cClansToRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCountFromSource")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCountFromSource(IntPtr instancePtr, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(IntPtr instancePtr, ulong steamIDSource, int iFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsUserInSource")] +internal static extern bool SteamAPI_ISteamFriends_IsUserInSource(IntPtr instancePtr, ulong steamIDUser, ulong steamIDSource); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking")] +internal static extern void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(IntPtr instancePtr, ulong steamIDUser, bool bSpeaking); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlay")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlay(IntPtr instancePtr, string pchDialog); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToUser")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToUser(IntPtr instancePtr, string pchDialog, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(IntPtr instancePtr, string pchURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayToStore")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayToStore(IntPtr instancePtr, uint nAppID, char eFlag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPlayedWith")] +internal static extern void SteamAPI_ISteamFriends_SetPlayedWith(IntPtr instancePtr, ulong steamIDUserPlayedWith); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog")] +internal static extern void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetSmallFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetSmallFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetMediumFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetMediumFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetLargeFriendAvatar")] +internal static extern int SteamAPI_ISteamFriends_GetLargeFriendAvatar(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestUserInformation")] +internal static extern bool SteamAPI_ISteamFriends_RequestUserInformation(IntPtr instancePtr, ulong steamIDUser, bool bRequireNameOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestClanOfficerList")] +internal static extern ulong SteamAPI_ISteamFriends_RequestClanOfficerList(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOwner")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOwner(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanOfficerCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanOfficerByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetClanOfficerByIndex(IntPtr instancePtr, ulong steamIDClan, int iOfficer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetUserRestrictions")] +internal static extern uint SteamAPI_ISteamFriends_GetUserRestrictions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetRichPresence")] +internal static extern bool SteamAPI_ISteamFriends_SetRichPresence(IntPtr instancePtr, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ClearRichPresence")] +internal static extern void SteamAPI_ISteamFriends_ClearRichPresence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresence")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount")] +internal static extern int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex")] +internal static extern IntPtr SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(IntPtr instancePtr, ulong steamIDFriend, int iKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_RequestFriendRichPresence")] +internal static extern void SteamAPI_ISteamFriends_RequestFriendRichPresence(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_InviteUserToGame")] +internal static extern bool SteamAPI_ISteamFriends_InviteUserToGame(IntPtr instancePtr, ulong steamIDFriend, string pchConnectString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriendCount")] +internal static extern int SteamAPI_ISteamFriends_GetCoplayFriendCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetCoplayFriend")] +internal static extern ulong SteamAPI_ISteamFriends_GetCoplayFriend(IntPtr instancePtr, int iCoplayFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayTime")] +internal static extern int SteamAPI_ISteamFriends_GetFriendCoplayTime(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendCoplayGame")] +internal static extern uint SteamAPI_ISteamFriends_GetFriendCoplayGame(IntPtr instancePtr, ulong steamIDFriend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_JoinClanChatRoom")] +internal static extern ulong SteamAPI_ISteamFriends_JoinClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_LeaveClanChatRoom")] +internal static extern bool SteamAPI_ISteamFriends_LeaveClanChatRoom(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMemberCount")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMemberCount(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetChatMemberByIndex")] +internal static extern ulong SteamAPI_ISteamFriends_GetChatMemberByIndex(IntPtr instancePtr, ulong steamIDClan, int iUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SendClanChatMessage")] +internal static extern bool SteamAPI_ISteamFriends_SendClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetClanChatMessage")] +internal static extern int SteamAPI_ISteamFriends_GetClanChatMessage(IntPtr instancePtr, ulong steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, ref uint peChatEntryType, ref CSteamID psteamidChatter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatAdmin")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatAdmin(IntPtr instancePtr, ulong steamIDClanChat, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam")] +internal static extern bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam")] +internal static extern bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(IntPtr instancePtr, ulong steamIDClanChat); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetListenForFriendsMessages")] +internal static extern bool SteamAPI_ISteamFriends_SetListenForFriendsMessages(IntPtr instancePtr, bool bInterceptEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_ReplyToFriendMessage")] +internal static extern bool SteamAPI_ISteamFriends_ReplyToFriendMessage(IntPtr instancePtr, ulong steamIDFriend, string pchMsgToSend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFriendMessage")] +internal static extern int SteamAPI_ISteamFriends_GetFriendMessage(IntPtr instancePtr, ulong steamIDFriend, int iMessageID, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetFollowerCount")] +internal static extern ulong SteamAPI_ISteamFriends_GetFollowerCount(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_IsFollowing")] +internal static extern ulong SteamAPI_ISteamFriends_IsFollowing(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_EnumerateFollowingList")] +internal static extern ulong SteamAPI_ISteamFriends_EnumerateFollowingList(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceAppActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceAppActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive")] +internal static extern uint SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetConnectedUniverse")] +internal static extern int SteamAPI_ISteamUtils_GetConnectedUniverse(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetServerRealTime")] +internal static extern uint SteamAPI_ISteamUtils_GetServerRealTime(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCountry")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetIPCountry(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageSize")] +internal static extern bool SteamAPI_ISteamUtils_GetImageSize(IntPtr instancePtr, int iImage, ref uint pnWidth, ref uint pnHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetImageRGBA")] +internal static extern bool SteamAPI_ISteamUtils_GetImageRGBA(IntPtr instancePtr, int iImage, IntPtr pubDest, int nDestBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCSERIPPort")] +internal static extern bool SteamAPI_ISteamUtils_GetCSERIPPort(IntPtr instancePtr, ref uint unIP, ref char usPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetCurrentBatteryPower")] +internal static extern byte SteamAPI_ISteamUtils_GetCurrentBatteryPower(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAppID")] +internal static extern uint SteamAPI_ISteamUtils_GetAppID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationPosition")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(IntPtr instancePtr, uint eNotificationPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsAPICallCompleted")] +internal static extern bool SteamAPI_ISteamUtils_IsAPICallCompleted(IntPtr instancePtr, ulong hSteamAPICall, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallFailureReason")] +internal static extern int SteamAPI_ISteamUtils_GetAPICallFailureReason(IntPtr instancePtr, ulong hSteamAPICall); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult")] +internal static extern bool SteamAPI_ISteamUtils_GetAPICallResult(IntPtr instancePtr, ulong hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, ref bool pbFailed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount")] +internal static extern uint SteamAPI_ISteamUtils_GetIPCCallCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook")] +internal static extern void SteamAPI_ISteamUtils_SetWarningMessageHook(IntPtr instancePtr, IntPtr pFunction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsOverlayEnabled")] +internal static extern bool SteamAPI_ISteamUtils_IsOverlayEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_BOverlayNeedsPresent")] +internal static extern bool SteamAPI_ISteamUtils_BOverlayNeedsPresent(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_CheckFileSignature")] +internal static extern ulong SteamAPI_ISteamUtils_CheckFileSignature(IntPtr instancePtr, string szFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_ShowGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_ShowGamepadTextInput(IntPtr instancePtr, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength")] +internal static extern uint SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput")] +internal static extern bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(IntPtr instancePtr, string pchText, uint cchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetSteamUILanguage")] +internal static extern IntPtr SteamAPI_ISteamUtils_GetSteamUILanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningInVR")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamRunningInVR(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset")] +internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(IntPtr instancePtr, int nHorizontalInset, int nVerticalInset); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] +internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(IntPtr instancePtr, int iGame, ref uint pnAppID, ref uint pnIP, ref char pnConnPort, ref char pnQueryPort, ref uint punFlags, ref uint pRTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddFavoriteGame")] +internal static extern int SteamAPI_ISteamMatchmaking_AddFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame")] +internal static extern bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(IntPtr instancePtr, uint nAppID, uint nIP, char nConnPort, char nQueryPort, uint unFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyList")] +internal static extern ulong SteamAPI_ISteamMatchmaking_RequestLobbyList(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(IntPtr instancePtr, string pchKeyToMatch, string pchValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToMatch, uint eComparisonType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(IntPtr instancePtr, string pchKeyToMatch, int nValueToBeCloseTo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(IntPtr instancePtr, int nSlotsAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(IntPtr instancePtr, uint eLobbyDistanceFilter); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(IntPtr instancePtr, int cMaxResults); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter")] +internal static extern void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyByIndex(IntPtr instancePtr, int iLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_CreateLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_CreateLobby(IntPtr instancePtr, uint eLobbyType, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_JoinLobby")] +internal static extern ulong SteamAPI_ISteamMatchmaking_JoinLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_LeaveLobby")] +internal static extern void SteamAPI_ISteamMatchmaking_LeaveLobby(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_InviteUserToLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_InviteUserToLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDInvitee); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers")] +internal static extern int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(IntPtr instancePtr, ulong steamIDLobby, int iMember); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataCount")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyDataCount(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(IntPtr instancePtr, ulong steamIDLobby, int iLobbyData, string pchKey, int cchKeyBufferSize, string pchValue, int cchValueBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_DeleteLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_DeleteLobbyData(IntPtr instancePtr, ulong steamIDLobby, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberData")] +internal static extern IntPtr SteamAPI_ISteamMatchmaking_GetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDUser, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberData")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyMemberData(IntPtr instancePtr, ulong steamIDLobby, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg")] +internal static extern bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(IntPtr instancePtr, ulong steamIDLobby, IntPtr pvMsgBody, int cubMsgBody); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(IntPtr instancePtr, ulong steamIDLobby, int iChatID, ref CSteamID pSteamIDUser, IntPtr pvData, int cubData, ref uint peChatEntryType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_RequestLobbyData")] +internal static extern bool SteamAPI_ISteamMatchmaking_RequestLobbyData(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyGameServer")] +internal static extern void SteamAPI_ISteamMatchmaking_SetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, uint unGameServerIP, char unGameServerPort, ulong steamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyGameServer")] +internal static extern bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer(IntPtr instancePtr, ulong steamIDLobby, ref uint punGameServerIP, ref char punGameServerPort, ref CSteamID psteamIDGameServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby, int cMaxMembers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit")] +internal static extern int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyType")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyType(IntPtr instancePtr, ulong steamIDLobby, uint eLobbyType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyJoinable")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable(IntPtr instancePtr, ulong steamIDLobby, bool bLobbyJoinable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetLobbyOwner")] +internal static extern ulong SteamAPI_ISteamMatchmaking_GetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLobbyOwner")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLobbyOwner(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDNewOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_SetLinkedLobby")] +internal static extern bool SteamAPI_ISteamMatchmaking_SetLinkedLobby(IntPtr instancePtr, ulong steamIDLobby, ulong steamIDLobbyDependent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(IntPtr instancePtr, uint hRequest, uint response); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(IntPtr instancePtr, IntPtr server); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(IntPtr instancePtr, string pchName, int nScore, float flTimePlayed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(IntPtr instancePtr, string pchRule, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete")] +internal static extern void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestLANServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestLANServerList(IntPtr instancePtr, uint iApp, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(IntPtr instancePtr, uint iApp, [In, Out] IntPtr[] ppchFilters, uint nFilters, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ReleaseRequest")] +internal static extern void SteamAPI_ISteamMatchmakingServers_ReleaseRequest(IntPtr instancePtr, uint hServerListRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerDetails")] +internal static extern IntPtr SteamAPI_ISteamMatchmakingServers_GetServerDetails(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshQuery(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_IsRefreshing")] +internal static extern bool SteamAPI_ISteamMatchmakingServers_IsRefreshing(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_GetServerCount")] +internal static extern int SteamAPI_ISteamMatchmakingServers_GetServerCount(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_RefreshServer")] +internal static extern void SteamAPI_ISteamMatchmakingServers_RefreshServer(IntPtr instancePtr, uint hRequest, int iServer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PingServer")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PingServer(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_PlayerDetails")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_PlayerDetails(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_ServerRules")] +internal static extern uint SteamAPI_ISteamMatchmakingServers_ServerRules(IntPtr instancePtr, uint unIP, char usPort, IntPtr pRequestServersResponse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmakingServers_CancelServerQuery")] +internal static extern void SteamAPI_ISteamMatchmakingServers_CancelServerQuery(IntPtr instancePtr, uint hServerQuery); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWrite")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWrite(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_FileRead(IntPtr instancePtr, string pchFile, IntPtr pvData, int cubDataToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteAsync(IntPtr instancePtr, string pchFile, IntPtr pvData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsync")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileReadAsync(IntPtr instancePtr, string pchFile, uint nOffset, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(IntPtr instancePtr, ulong hReadCall, IntPtr pvBuffer, uint cubToRead); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileForget")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileForget(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileDelete")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileDelete(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileShare")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileShare(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms")] +internal static extern bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(IntPtr instancePtr, string pchFile, uint eRemoteStoragePlatform); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(IntPtr instancePtr, ulong writeHandle, IntPtr pvData, int cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(IntPtr instancePtr, ulong writeHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FileExists")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FileExists(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersisted")] +internal static extern bool SteamAPI_ISteamRemoteStorage_FilePersisted(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileSize")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileSize(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileTimestamp")] +internal static extern long SteamAPI_ISteamRemoteStorage_GetFileTimestamp(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms")] +internal static extern uint SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(IntPtr instancePtr, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetFileCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize")] +internal static extern IntPtr SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(IntPtr instancePtr, int iFile, ref int pnFileSizeInBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetQuota")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetQuota(IntPtr instancePtr, ref ulong pnTotalBytes, ref ulong puAvailableBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp")] +internal static extern bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp")] +internal static extern void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(IntPtr instancePtr, bool bEnabled); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownload")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownload(IntPtr instancePtr, ulong hContent, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(IntPtr instancePtr, ulong hContent, ref int pnBytesDownloaded, ref int pnBytesExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUGCDetails")] +internal static extern bool SteamAPI_ISteamRemoteStorage_GetUGCDetails(IntPtr instancePtr, ulong hContent, ref uint pnAppID, System.Text.StringBuilder ppchName, ref int pnFileSizeInBytes, ref CSteamID pSteamIDOwner); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCRead")] +internal static extern int SteamAPI_ISteamRemoteStorage_UGCRead(IntPtr instancePtr, ulong hContent, IntPtr pvData, int cubDataToRead, uint cOffset, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount")] +internal static extern int SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(IntPtr instancePtr, int iCachedContent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(IntPtr instancePtr, string pchFile, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags, uint eWorkshopFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(IntPtr instancePtr, ulong updateHandle, string pchFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(IntPtr instancePtr, ulong updateHandle, string pchPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(IntPtr instancePtr, ulong updateHandle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(IntPtr instancePtr, ulong updateHandle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(IntPtr instancePtr, ulong updateHandle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(IntPtr instancePtr, ulong updateHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(IntPtr instancePtr, ulong unPublishedFileId, uint unMaxSecondsOld); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_DeletePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_DeletePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(IntPtr instancePtr, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription")] +internal static extern bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(IntPtr instancePtr, ulong updateHandle, string pchChangeDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(IntPtr instancePtr, ulong unPublishedFileId, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(IntPtr instancePtr, ulong unPublishedFileId); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(IntPtr instancePtr, ulong steamId, uint unStartIndex, ref SteamParamStringArray_t pRequiredTags, ref SteamParamStringArray_t pExcludedTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishVideo")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_PublishVideo(IntPtr instancePtr, uint eVideoProvider, string pchVideoAccount, string pchVideoIdentifier, string pchPreviewFile, uint nConsumerAppId, string pchTitle, string pchDescription, uint eVisibility, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(IntPtr instancePtr, ulong unPublishedFileId, uint eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(IntPtr instancePtr, uint eAction, uint unStartIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(IntPtr instancePtr, uint eEnumerationType, uint unStartIndex, uint unCount, uint unDays, ref SteamParamStringArray_t pTags, ref SteamParamStringArray_t pUserTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation")] +internal static extern ulong SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(IntPtr instancePtr, ulong hContent, string pchLocation, uint unPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestCurrentStats")] +internal static extern bool SteamAPI_ISteamUserStats_RequestCurrentStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat(IntPtr instancePtr, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetStat0(IntPtr instancePtr, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat(IntPtr instancePtr, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetStat0")] +internal static extern bool SteamAPI_ISteamUserStats_SetStat0(IntPtr instancePtr, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UpdateAvgRateStat")] +internal static extern bool SteamAPI_ISteamUserStats_UpdateAvgRateStat(IntPtr instancePtr, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievement(IntPtr instancePtr, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_SetAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_SetAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ClearAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_ClearAchievement(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(IntPtr instancePtr, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_StoreStats")] +internal static extern bool SteamAPI_ISteamUserStats_StoreStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementIcon")] +internal static extern int SteamAPI_ISteamUserStats_GetAchievementIcon(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(IntPtr instancePtr, string pchName, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_IndicateAchievementProgress")] +internal static extern bool SteamAPI_ISteamUserStats_IndicateAchievementProgress(IntPtr instancePtr, string pchName, uint nCurProgress, uint nMaxProgress); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumAchievements")] +internal static extern uint SteamAPI_ISteamUserStats_GetNumAchievements(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetAchievementName(IntPtr instancePtr, uint iAchievement); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime")] +internal static extern bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved, ref uint punUnlockTime); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_ResetAllStats")] +internal static extern bool SteamAPI_ISteamUserStats_ResetAllStats(IntPtr instancePtr, bool bAchievementsToo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(IntPtr instancePtr, string pchLeaderboardName, uint eLeaderboardSortMethod, uint eLeaderboardDisplayType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_FindLeaderboard")] +internal static extern ulong SteamAPI_ISteamUserStats_FindLeaderboard(IntPtr instancePtr, string pchLeaderboardName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardName")] +internal static extern IntPtr SteamAPI_ISteamUserStats_GetLeaderboardName(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount")] +internal static extern int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType")] +internal static extern uint SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(IntPtr instancePtr, ulong hSteamLeaderboard); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers")] +internal static extern ulong SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(IntPtr instancePtr, ulong hSteamLeaderboard, [In, Out] CSteamID[] prgUsers, int cUsers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry")] +internal static extern bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(IntPtr instancePtr, ulong hSteamLeaderboardEntries, int index, ref LeaderboardEntry_t pLeaderboardEntry, ref int pDetails, int cDetailsMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_UploadLeaderboardScore")] +internal static extern ulong SteamAPI_ISteamUserStats_UploadLeaderboardScore(IntPtr instancePtr, ulong hSteamLeaderboard, uint eLeaderboardUploadScoreMethod, int nScore, ref int pScoreDetails, int cScoreDetailsCount); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_AttachLeaderboardUGC")] +internal static extern ulong SteamAPI_ISteamUserStats_AttachLeaderboardUGC(IntPtr instancePtr, ulong hSteamLeaderboard, ulong hUGC); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers")] +internal static extern ulong SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(IntPtr instancePtr, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo")] +internal static extern int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(IntPtr instancePtr, int iIteratorPrevious, string pchName, uint unNameBufLen, ref float pflPercent, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent")] +internal static extern bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(IntPtr instancePtr, string pchName, ref float pflPercent); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_RequestGlobalStats")] +internal static extern ulong SteamAPI_ISteamUserStats_RequestGlobalStats(IntPtr instancePtr, int nHistoryDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat(IntPtr instancePtr, string pchStatName, ref long pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStat0")] +internal static extern bool SteamAPI_ISteamUserStats_GetGlobalStat0(IntPtr instancePtr, string pchStatName, ref double pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory(IntPtr instancePtr, string pchStatName, [In, Out] long[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUserStats_GetGlobalStatHistory0")] +internal static extern int SteamAPI_ISteamUserStats_GetGlobalStatHistory0(IntPtr instancePtr, string pchStatName, [In, Out] double[] pData, uint cubData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribed")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribed(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsLowViolence")] +internal static extern bool SteamAPI_ISteamApps_BIsLowViolence(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsCybercafe")] +internal static extern bool SteamAPI_ISteamApps_BIsCybercafe(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsVACBanned")] +internal static extern bool SteamAPI_ISteamApps_BIsVACBanned(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentGameLanguage")] +internal static extern IntPtr SteamAPI_ISteamApps_GetCurrentGameLanguage(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAvailableGameLanguages")] +internal static extern IntPtr SteamAPI_ISteamApps_GetAvailableGameLanguages(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedApp")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedApp(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsDlcInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsDlcInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime")] +internal static extern uint SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend")] +internal static extern bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDLCCount")] +internal static extern int SteamAPI_ISteamApps_GetDLCCount(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BGetDLCDataByIndex")] +internal static extern bool SteamAPI_ISteamApps_BGetDLCDataByIndex(IntPtr instancePtr, int iDLC, ref uint pAppID, ref bool pbAvailable, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_InstallDLC")] +internal static extern void SteamAPI_ISteamApps_InstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_UninstallDLC")] +internal static extern void SteamAPI_ISteamApps_UninstallDLC(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey")] +internal static extern void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetCurrentBetaName")] +internal static extern bool SteamAPI_ISteamApps_GetCurrentBetaName(IntPtr instancePtr, string pchName, int cchNameBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_MarkContentCorrupt")] +internal static extern bool SteamAPI_ISteamApps_MarkContentCorrupt(IntPtr instancePtr, bool bMissingFilesOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetInstalledDepots")] +internal static extern uint SteamAPI_ISteamApps_GetInstalledDepots(IntPtr instancePtr, uint appID, ref uint pvecDepots, uint cMaxDepots); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppInstallDir")] +internal static extern uint SteamAPI_ISteamApps_GetAppInstallDir(IntPtr instancePtr, uint appID, string pchFolder, uint cchFolderBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_BIsAppInstalled")] +internal static extern bool SteamAPI_ISteamApps_BIsAppInstalled(IntPtr instancePtr, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppOwner")] +internal static extern ulong SteamAPI_ISteamApps_GetAppOwner(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetLaunchQueryParam")] +internal static extern IntPtr SteamAPI_ISteamApps_GetLaunchQueryParam(IntPtr instancePtr, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetDlcDownloadProgress")] +internal static extern bool SteamAPI_ISteamApps_GetDlcDownloadProgress(IntPtr instancePtr, uint nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId")] +internal static extern int SteamAPI_ISteamApps_GetAppBuildId(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys")] +internal static extern void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetFileDetails")] +internal static extern ulong SteamAPI_ISteamApps_GetFileDetails(IntPtr instancePtr, string pszFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_SendP2PPacket(IntPtr instancePtr, ulong steamIDRemote, IntPtr pubData, uint cubData, uint eP2PSendType, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(IntPtr instancePtr, ref uint pcubMsgSize, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_ReadP2PPacket")] +internal static extern bool SteamAPI_ISteamNetworking_ReadP2PPacket(IntPtr instancePtr, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref CSteamID psteamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(IntPtr instancePtr, ulong steamIDRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser")] +internal static extern bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(IntPtr instancePtr, ulong steamIDRemote, int nChannel); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetP2PSessionState")] +internal static extern bool SteamAPI_ISteamNetworking_GetP2PSessionState(IntPtr instancePtr, ulong steamIDRemote, ref P2PSessionState_t pConnectionState); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_AllowP2PPacketRelay")] +internal static extern bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay(IntPtr instancePtr, bool bAllow); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateListenSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateListenSocket(IntPtr instancePtr, int nVirtualP2PPort, uint nIP, char nPort, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(IntPtr instancePtr, ulong steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_CreateConnectionSocket")] +internal static extern uint SteamAPI_ISteamNetworking_CreateConnectionSocket(IntPtr instancePtr, uint nIP, char nPort, int nTimeoutSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroySocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroySocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_DestroyListenSocket")] +internal static extern bool SteamAPI_ISteamNetworking_DestroyListenSocket(IntPtr instancePtr, uint hSocket, bool bNotifyRemoteEnd); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendDataOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_SendDataOnSocket(IntPtr instancePtr, uint hSocket, IntPtr pubData, uint cubData, bool bReliable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(IntPtr instancePtr, uint hSocket, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveDataFromSocket")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket(IntPtr instancePtr, uint hSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsDataAvailable")] +internal static extern bool SteamAPI_ISteamNetworking_IsDataAvailable(IntPtr instancePtr, uint hListenSocket, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_RetrieveData")] +internal static extern bool SteamAPI_ISteamNetworking_RetrieveData(IntPtr instancePtr, uint hListenSocket, IntPtr pubDest, uint cubDest, ref uint pcubMsgSize, ref uint phSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetSocketInfo(IntPtr instancePtr, uint hSocket, ref CSteamID pSteamIDRemote, ref int peSocketStatus, ref uint punIPRemote, ref char punPortRemote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetListenSocketInfo")] +internal static extern bool SteamAPI_ISteamNetworking_GetListenSocketInfo(IntPtr instancePtr, uint hListenSocket, ref uint pnIP, ref char pnPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetSocketConnectionType")] +internal static extern uint SteamAPI_ISteamNetworking_GetSocketConnectionType(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_GetMaxPacketSize")] +internal static extern int SteamAPI_ISteamNetworking_GetMaxPacketSize(IntPtr instancePtr, uint hSocket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot")] +internal static extern uint SteamAPI_ISteamScreenshots_WriteScreenshot(IntPtr instancePtr, IntPtr pubRGB, uint cubRGB, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(IntPtr instancePtr, string pchFilename, string pchThumbnailFilename, int nWidth, int nHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TriggerScreenshot")] +internal static extern void SteamAPI_ISteamScreenshots_TriggerScreenshot(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_HookScreenshots")] +internal static extern void SteamAPI_ISteamScreenshots_HookScreenshots(IntPtr instancePtr, bool bHook); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_SetLocation")] +internal static extern bool SteamAPI_ISteamScreenshots_SetLocation(IntPtr instancePtr, uint hScreenshot, string pchLocation); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagUser")] +internal static extern bool SteamAPI_ISteamScreenshots_TagUser(IntPtr instancePtr, uint hScreenshot, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_TagPublishedFile")] +internal static extern bool SteamAPI_ISteamScreenshots_TagPublishedFile(IntPtr instancePtr, uint hScreenshot, ulong unPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_IsScreenshotsHooked")] +internal static extern bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary")] +internal static extern uint SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(IntPtr instancePtr, uint eType, string pchFilename, string pchVRFilename); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled")] +internal static extern bool SteamAPI_ISteamMusic_BIsEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying")] +internal static extern bool SteamAPI_ISteamMusic_BIsPlaying(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus")] +internal static extern int SteamAPI_ISteamMusic_GetPlaybackStatus(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Play")] +internal static extern void SteamAPI_ISteamMusic_Play(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_Pause")] +internal static extern void SteamAPI_ISteamMusic_Pause(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious")] +internal static extern void SteamAPI_ISteamMusic_PlayPrevious(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_PlayNext")] +internal static extern void SteamAPI_ISteamMusic_PlayNext(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_SetVolume")] +internal static extern void SteamAPI_ISteamMusic_SetVolume(IntPtr instancePtr, float flVolume); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusic_GetVolume")] +internal static extern float SteamAPI_ISteamMusic_GetVolume(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(IntPtr instancePtr, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote")] +internal static extern bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_BActivationSuccess")] +internal static extern bool SteamAPI_ISteamMusicRemote_BActivationSuccess(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetDisplayName")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetDisplayName(IntPtr instancePtr, string pchDisplayName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayPrevious")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlayNext")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlayNext(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnableQueue")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnableQueue(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_EnablePlaylists")] +internal static extern bool SteamAPI_ISteamMusicRemote_EnablePlaylists(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(IntPtr instancePtr, int nStatus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateShuffled")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateShuffled(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateLooped")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateLooped(IntPtr instancePtr, bool bValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateVolume")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateVolume(IntPtr instancePtr, float flValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(IntPtr instancePtr, bool bAvailable); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(IntPtr instancePtr, string pchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(IntPtr instancePtr, int nValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt")] +internal static extern bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(IntPtr instancePtr, IntPtr pvBuffer, uint cbBufferLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetQueueEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetQueueEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetQueueEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_QueueDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_QueueDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistWillChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistWillChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries")] +internal static extern bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry(IntPtr instancePtr, int nID, int nPosition, string pchEntryText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry")] +internal static extern bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(IntPtr instancePtr, int nID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMusicRemote_PlaylistDidChange")] +internal static extern bool SteamAPI_ISteamMusicRemote_PlaylistDidChange(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateHTTPRequest")] +internal static extern uint SteamAPI_ISteamHTTP_CreateHTTPRequest(IntPtr instancePtr, uint eHTTPRequestMethod, string pchAbsoluteURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(IntPtr instancePtr, uint hRequest, ulong ulContextValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(IntPtr instancePtr, uint hRequest, uint unTimeoutSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, string pchHeaderValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(IntPtr instancePtr, uint hRequest, string pchParamName, string pchParamValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequest(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse")] +internal static extern bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(IntPtr instancePtr, uint hRequest, ref ulong pCallHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_DeferHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_DeferHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(IntPtr instancePtr, uint hRequest, string pchHeaderName, ref uint unResponseHeaderSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(IntPtr instancePtr, uint hRequest, string pchHeaderName, IntPtr pHeaderValueBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(IntPtr instancePtr, uint hRequest, ref uint unBodySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(IntPtr instancePtr, uint hRequest, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(IntPtr instancePtr, uint hRequest, uint cOffset, IntPtr pBodyDataBuffer, uint unBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseHTTPRequest")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest(IntPtr instancePtr, uint hRequest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(IntPtr instancePtr, uint hRequest, ref float pflPercentOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(IntPtr instancePtr, uint hRequest, string pchContentType, IntPtr pubBody, uint unBodyLen); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_CreateCookieContainer")] +internal static extern uint SteamAPI_ISteamHTTP_CreateCookieContainer(IntPtr instancePtr, bool bAllowResponsesToModify); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_ReleaseCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_ReleaseCookieContainer(IntPtr instancePtr, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetCookie")] +internal static extern bool SteamAPI_ISteamHTTP_SetCookie(IntPtr instancePtr, uint hCookieContainer, string pchHost, string pchUrl, string pchCookie); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(IntPtr instancePtr, uint hRequest, uint hCookieContainer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(IntPtr instancePtr, uint hRequest, string pchUserAgentInfo); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(IntPtr instancePtr, uint hRequest, bool bRequireVerifiedCertificate); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS")] +internal static extern bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(IntPtr instancePtr, uint hRequest, uint unMilliseconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut")] +internal static extern bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(IntPtr instancePtr, uint hRequest, ref bool pbWasTimedOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendMethod")] +internal static extern ulong SteamAPI_ISteamUnifiedMessages_SendMethod(IntPtr instancePtr, string pchServiceMethod, IntPtr pRequestBuffer, uint unRequestBufferSize, ulong unContext); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(IntPtr instancePtr, ulong hHandle, ref uint punResponseSize, ref uint peResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_GetMethodResponseData")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(IntPtr instancePtr, ulong hHandle, IntPtr pResponseBuffer, uint unResponseBufferSize, bool bAutoRelease); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_ReleaseMethod")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_ReleaseMethod(IntPtr instancePtr, ulong hHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUnifiedMessages_SendNotification")] +internal static extern bool SteamAPI_ISteamUnifiedMessages_SendNotification(IntPtr instancePtr, string pchServiceNotification, IntPtr pNotificationBuffer, uint unNotificationBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Init")] +internal static extern bool SteamAPI_ISteamController_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_Shutdown")] +internal static extern bool SteamAPI_ISteamController_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_RunFrame")] +internal static extern void SteamAPI_ISteamController_RunFrame(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetConnectedControllers")] +internal static extern int SteamAPI_ISteamController_GetConnectedControllers(IntPtr instancePtr, ref ulong handlesOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowBindingPanel")] +internal static extern bool SteamAPI_ISteamController_ShowBindingPanel(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetActionSetHandle")] +internal static extern ulong SteamAPI_ISteamController_GetActionSetHandle(IntPtr instancePtr, string pszActionSetName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ActivateActionSet")] +internal static extern void SteamAPI_ISteamController_ActivateActionSet(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetCurrentActionSet")] +internal static extern ulong SteamAPI_ISteamController_GetCurrentActionSet(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetDigitalActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionData")] +internal static extern ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetDigitalActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong digitalActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionHandle")] +internal static extern ulong SteamAPI_ISteamController_GetAnalogActionHandle(IntPtr instancePtr, string pszActionName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionData")] +internal static extern ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetAnalogActionOrigins")] +internal static extern int SteamAPI_ISteamController_GetAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong actionSetHandle, ulong analogActionHandle, ref uint originsOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_StopAnalogActionMomentum")] +internal static extern void SteamAPI_ISteamController_StopAnalogActionMomentum(IntPtr instancePtr, ulong controllerHandle, ulong eAction); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_TriggerRepeatedHapticPulse")] +internal static extern void SteamAPI_ISteamController_TriggerRepeatedHapticPulse(IntPtr instancePtr, ulong controllerHandle, uint eTargetPad, char usDurationMicroSec, char usOffMicroSec, char unRepeat, uint nFlags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetGamepadIndexForController")] +internal static extern int SteamAPI_ISteamController_GetGamepadIndexForController(IntPtr instancePtr, ulong ulControllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetControllerForGamepadIndex")] +internal static extern ulong SteamAPI_ISteamController_GetControllerForGamepadIndex(IntPtr instancePtr, int nIndex); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_GetMotionData")] +internal static extern ControllerMotionData_t SteamAPI_ISteamController_GetMotionData(IntPtr instancePtr, ulong controllerHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowDigitalActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowDigitalActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong digitalActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamController_ShowAnalogActionOrigins")] +internal static extern bool SteamAPI_ISteamController_ShowAnalogActionOrigins(IntPtr instancePtr, ulong controllerHandle, ulong analogActionHandle, float flScale, float flXPosition, float flYPosition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(IntPtr instancePtr, uint unAccountID, uint eListType, uint eMatchingUGCType, uint eSortOrder, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryAllUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(IntPtr instancePtr, uint eQueryType, uint eMatchingeMatchingUGCTypeFileType, uint nCreatorAppID, uint nConsumerAppID, uint unPage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest")] +internal static extern ulong SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SendQueryUGCRequest")] +internal static extern ulong SteamAPI_ISteamUGC_SendQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCResult")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCResult(IntPtr instancePtr, ulong handle, uint index, ref SteamUGCDetails_t pDetails); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchURL, uint cchURLSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCMetadata")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(IntPtr instancePtr, ulong handle, uint index, System.Text.StringBuilder pchMetadata, uint cchMetadatasize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCChildren")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCChildren(IntPtr instancePtr, ulong handle, uint index, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCStatistic")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(IntPtr instancePtr, ulong handle, uint index, uint eStatType, ref ulong pStatValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, System.Text.StringBuilder pchOriginalFileName, uint cchOriginalFileNameSize, ref uint pPreviewType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags")] +internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(IntPtr instancePtr, ulong handle, uint index, uint keyValueTagIndex, System.Text.StringBuilder pchKey, uint cchKeySize, System.Text.StringBuilder pchValue, uint cchValueSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest")] +internal static extern bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(IntPtr instancePtr, ulong handle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddExcludedTag")] +internal static extern bool SteamAPI_ISteamUGC_AddExcludedTag(IntPtr instancePtr, ulong handle, string pTagName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnOnlyIDs")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnOnlyIDs(IntPtr instancePtr, ulong handle, bool bReturnOnlyIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnKeyValueTags(IntPtr instancePtr, ulong handle, bool bReturnKeyValueTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnLongDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnLongDescription(IntPtr instancePtr, ulong handle, bool bReturnLongDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnMetadata(IntPtr instancePtr, ulong handle, bool bReturnMetadata); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnChildren")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnChildren(IntPtr instancePtr, ulong handle, bool bReturnChildren); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(IntPtr instancePtr, ulong handle, bool bReturnAdditionalPreviews); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnTotalOnly(IntPtr instancePtr, ulong handle, bool bReturnTotalOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse")] +internal static extern bool SteamAPI_ISteamUGC_SetAllowCachedResponse(IntPtr instancePtr, ulong handle, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter")] +internal static extern bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(IntPtr instancePtr, ulong handle, string pMatchCloudFileName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetMatchAnyTag")] +internal static extern bool SteamAPI_ISteamUGC_SetMatchAnyTag(IntPtr instancePtr, ulong handle, bool bMatchAnyTag); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetSearchText")] +internal static extern bool SteamAPI_ISteamUGC_SetSearchText(IntPtr instancePtr, ulong handle, string pSearchText); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetRankedByTrendDays")] +internal static extern bool SteamAPI_ISteamUGC_SetRankedByTrendDays(IntPtr instancePtr, ulong handle, uint unDays); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag(IntPtr instancePtr, ulong handle, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RequestUGCDetails")] +internal static extern ulong SteamAPI_ISteamUGC_RequestUGCDetails(IntPtr instancePtr, ulong nPublishedFileID, uint unMaxAgeSeconds); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_CreateItem")] +internal static extern ulong SteamAPI_ISteamUGC_CreateItem(IntPtr instancePtr, uint nConsumerAppId, uint eFileType); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_StartItemUpdate(IntPtr instancePtr, uint nConsumerAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTitle")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTitle(IntPtr instancePtr, ulong handle, string pchTitle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemDescription")] +internal static extern bool SteamAPI_ISteamUGC_SetItemDescription(IntPtr instancePtr, ulong handle, string pchDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemUpdateLanguage")] +internal static extern bool SteamAPI_ISteamUGC_SetItemUpdateLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemMetadata")] +internal static extern bool SteamAPI_ISteamUGC_SetItemMetadata(IntPtr instancePtr, ulong handle, string pchMetaData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemVisibility")] +internal static extern bool SteamAPI_ISteamUGC_SetItemVisibility(IntPtr instancePtr, ulong handle, uint eVisibility); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemTags")] +internal static extern bool SteamAPI_ISteamUGC_SetItemTags(IntPtr instancePtr, ulong updateHandle, ref SteamParamStringArray_t pTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemContent")] +internal static extern bool SteamAPI_ISteamUGC_SetItemContent(IntPtr instancePtr, ulong handle, string pszContentFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_SetItemPreview(IntPtr instancePtr, ulong handle, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemKeyValueTags")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(IntPtr instancePtr, ulong handle, string pchKey); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag")] +internal static extern bool SteamAPI_ISteamUGC_AddItemKeyValueTag(IntPtr instancePtr, ulong handle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewFile(IntPtr instancePtr, ulong handle, string pszPreviewFile, uint type); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewVideo(IntPtr instancePtr, ulong handle, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(IntPtr instancePtr, ulong handle, uint index, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(IntPtr instancePtr, ulong handle, uint index, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemPreview(IntPtr instancePtr, ulong handle, uint index); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate")] +internal static extern ulong SteamAPI_ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, ulong handle, string pchChangeNote); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress")] +internal static extern uint SteamAPI_ISteamUGC_GetItemUpdateProgress(IntPtr instancePtr, ulong handle, ref ulong punBytesProcessed, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_SetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID, bool bVoteUp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetUserItemVote")] +internal static extern ulong SteamAPI_ISteamUGC_GetUserItemVote(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemToFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_AddItemToFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemFromFavorites")] +internal static extern ulong SteamAPI_ISteamUGC_RemoveItemFromFavorites(IntPtr instancePtr, uint nAppId, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_SubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UnsubscribeItem")] +internal static extern ulong SteamAPI_ISteamUGC_UnsubscribeItem(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetNumSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetNumSubscribedItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetSubscribedItems")] +internal static extern uint SteamAPI_ISteamUGC_GetSubscribedItems(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint cMaxEntries); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemState")] +internal static extern uint SteamAPI_ISteamUGC_GetItemState(IntPtr instancePtr, ulong nPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemInstallInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemInstallInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punSizeOnDisk, System.Text.StringBuilder pchFolder, uint cchFolderSize, ref uint punTimeStamp); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemDownloadInfo")] +internal static extern bool SteamAPI_ISteamUGC_GetItemDownloadInfo(IntPtr instancePtr, ulong nPublishedFileID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_DownloadItem")] +internal static extern bool SteamAPI_ISteamUGC_DownloadItem(IntPtr instancePtr, ulong nPublishedFileID, bool bHighPriority); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_BInitWorkshopForGameServer")] +internal static extern bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer(IntPtr instancePtr, uint unWorkshopDepotID, string pszFolder); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SuspendDownloads")] +internal static extern void SteamAPI_ISteamUGC_SuspendDownloads(IntPtr instancePtr, bool bSuspend); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StartPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StartPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTracking")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems")] +internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetNumInstalledApps(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps")] +internal static extern uint SteamAPI_ISteamAppList_GetInstalledApps(IntPtr instancePtr, ref uint pvecAppID, uint unMaxAppIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppName")] +internal static extern int SteamAPI_ISteamAppList_GetAppName(IntPtr instancePtr, uint nAppID, System.Text.StringBuilder pchName, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppInstallDir")] +internal static extern int SteamAPI_ISteamAppList_GetAppInstallDir(IntPtr instancePtr, uint nAppID, string pchDirectory, int cchNameMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetAppBuildId")] +internal static extern int SteamAPI_ISteamAppList_GetAppBuildId(IntPtr instancePtr, uint nAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface")] +internal static extern void SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Init")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Init(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Shutdown")] +internal static extern bool SteamAPI_ISteamHTMLSurface_Shutdown(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CreateBrowser")] +internal static extern ulong SteamAPI_ISteamHTMLSurface_CreateBrowser(IntPtr instancePtr, string pchUserAgent, string pchUserCSS); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_RemoveBrowser")] +internal static extern void SteamAPI_ISteamHTMLSurface_RemoveBrowser(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_LoadURL")] +internal static extern void SteamAPI_ISteamHTMLSurface_LoadURL(IntPtr instancePtr, uint unBrowserHandle, string pchURL, string pchPostData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetSize")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetSize(IntPtr instancePtr, uint unBrowserHandle, uint unWidth, uint unHeight); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopLoad")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopLoad(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Reload")] +internal static extern void SteamAPI_ISteamHTMLSurface_Reload(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoBack")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoBack(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GoForward")] +internal static extern void SteamAPI_ISteamHTMLSurface_GoForward(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AddHeader")] +internal static extern void SteamAPI_ISteamHTMLSurface_AddHeader(IntPtr instancePtr, uint unBrowserHandle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ExecuteJavascript")] +internal static extern void SteamAPI_ISteamHTMLSurface_ExecuteJavascript(IntPtr instancePtr, uint unBrowserHandle, string pchScript); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseUp(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDown(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseDoubleClick")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseDoubleClick(IntPtr instancePtr, uint unBrowserHandle, uint eMouseButton); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseMove")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseMove(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_MouseWheel")] +internal static extern void SteamAPI_ISteamHTMLSurface_MouseWheel(IntPtr instancePtr, uint unBrowserHandle, int nDelta); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyDown")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyDown(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyUp")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyUp(IntPtr instancePtr, uint unBrowserHandle, uint nNativeKeyCode, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_KeyChar")] +internal static extern void SteamAPI_ISteamHTMLSurface_KeyChar(IntPtr instancePtr, uint unBrowserHandle, uint cUnicodeChar, uint eHTMLKeyModifiers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetVerticalScroll")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetVerticalScroll(IntPtr instancePtr, uint unBrowserHandle, uint nAbsolutePixelScroll); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetKeyFocus")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetKeyFocus(IntPtr instancePtr, uint unBrowserHandle, bool bHasKeyFocus); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_ViewSource")] +internal static extern void SteamAPI_ISteamHTMLSurface_ViewSource(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_CopyToClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_CopyToClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_PasteFromClipboard")] +internal static extern void SteamAPI_ISteamHTMLSurface_PasteFromClipboard(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_Find")] +internal static extern void SteamAPI_ISteamHTMLSurface_Find(IntPtr instancePtr, uint unBrowserHandle, string pchSearchStr, bool bCurrentlyInFind, bool bReverse); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_StopFind")] +internal static extern void SteamAPI_ISteamHTMLSurface_StopFind(IntPtr instancePtr, uint unBrowserHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition")] +internal static extern void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(IntPtr instancePtr, uint unBrowserHandle, int x, int y); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetCookie")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetCookie(IntPtr instancePtr, string pchHostname, string pchKey, string pchValue, string pchPath, ulong nExpires, bool bSecure, bool bHTTPOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(IntPtr instancePtr, uint unBrowserHandle, float flZoom, int nPointX, int nPointY); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_SetBackgroundMode")] +internal static extern void SteamAPI_ISteamHTMLSurface_SetBackgroundMode(IntPtr instancePtr, uint unBrowserHandle, bool bBackgroundMode); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_AllowStartRequest")] +internal static extern void SteamAPI_ISteamHTMLSurface_AllowStartRequest(IntPtr instancePtr, uint unBrowserHandle, bool bAllowed); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamHTMLSurface_JSDialogResponse")] +internal static extern void SteamAPI_ISteamHTMLSurface_JSDialogResponse(IntPtr instancePtr, uint unBrowserHandle, bool bResult); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus")] +internal static extern uint SteamAPI_ISteamInventory_GetResultStatus(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItems")] +internal static extern bool SteamAPI_ISteamInventory_GetResultItems(IntPtr instancePtr, int resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp")] +internal static extern uint SteamAPI_ISteamInventory_GetResultTimestamp(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID")] +internal static extern bool SteamAPI_ISteamInventory_CheckResultSteamID(IntPtr instancePtr, int resultHandle, ulong steamIDExpected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DestroyResult")] +internal static extern void SteamAPI_ISteamInventory_DestroyResult(IntPtr instancePtr, int resultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetAllItems")] +internal static extern bool SteamAPI_ISteamInventory_GetAllItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemsByID")] +internal static extern bool SteamAPI_ISteamInventory_GetItemsByID(IntPtr instancePtr, ref int pResultHandle, [In, Out] ulong[] pInstanceIDs, uint unCountInstanceIDs); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SerializeResult")] +internal static extern bool SteamAPI_ISteamInventory_SerializeResult(IntPtr instancePtr, int resultHandle, IntPtr pOutBuffer, ref uint punOutBufferSize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_DeserializeResult")] +internal static extern bool SteamAPI_ISteamInventory_DeserializeResult(IntPtr instancePtr, ref int pOutResultHandle, IntPtr pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GenerateItems")] +internal static extern bool SteamAPI_ISteamInventory_GenerateItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GrantPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_GrantPromoItems(IntPtr instancePtr, ref int pResultHandle); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItem")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItem(IntPtr instancePtr, ref int pResultHandle, int itemDef); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_AddPromoItems")] +internal static extern bool SteamAPI_ISteamInventory_AddPromoItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayItemDefs, uint unArrayLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ConsumeItem")] +internal static extern bool SteamAPI_ISteamInventory_ConsumeItem(IntPtr instancePtr, ref int pResultHandle, ulong itemConsume, uint unQuantity); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_ExchangeItems")] +internal static extern bool SteamAPI_ISteamInventory_ExchangeItems(IntPtr instancePtr, ref int pResultHandle, [In, Out] int[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] ulong[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TransferItemQuantity")] +internal static extern bool SteamAPI_ISteamInventory_TransferItemQuantity(IntPtr instancePtr, ref int pResultHandle, ulong itemIdSource, uint unQuantity, ulong itemIdDest); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_SendItemDropHeartbeat")] +internal static extern void SteamAPI_ISteamInventory_SendItemDropHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TriggerItemDrop")] +internal static extern bool SteamAPI_ISteamInventory_TriggerItemDrop(IntPtr instancePtr, ref int pResultHandle, int dropListDefinition); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_TradeItems")] +internal static extern bool SteamAPI_ISteamInventory_TradeItems(IntPtr instancePtr, ref int pResultHandle, ulong steamIDTradePartner, [In, Out] ulong[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] ulong[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_LoadItemDefinitions")] +internal static extern bool SteamAPI_ISteamInventory_LoadItemDefinitions(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionIDs")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionIDs(IntPtr instancePtr, [In, Out] int[] pItemDefIDs, ref uint punItemDefIDsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetItemDefinitionProperty")] +internal static extern bool SteamAPI_ISteamInventory_GetItemDefinitionProperty(IntPtr instancePtr, int iDefinition, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL")] +internal static extern void SteamAPI_ISteamVideo_GetVideoURL(IntPtr instancePtr, uint unVideoAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting")] +internal static extern bool SteamAPI_ISteamVideo_IsBroadcasting(IntPtr instancePtr, ref int pnNumViewers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_InitGameServer")] +internal static extern bool SteamAPI_ISteamGameServer_InitGameServer(IntPtr instancePtr, uint unIP, char usGamePort, char usQueryPort, uint unFlags, uint nGameAppId, string pchVersionString); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetProduct")] +internal static extern void SteamAPI_ISteamGameServer_SetProduct(IntPtr instancePtr, string pszProduct); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameDescription")] +internal static extern void SteamAPI_ISteamGameServer_SetGameDescription(IntPtr instancePtr, string pszGameDescription); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetModDir")] +internal static extern void SteamAPI_ISteamGameServer_SetModDir(IntPtr instancePtr, string pszModDir); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetDedicatedServer")] +internal static extern void SteamAPI_ISteamGameServer_SetDedicatedServer(IntPtr instancePtr, bool bDedicated); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOn")] +internal static extern void SteamAPI_ISteamGameServer_LogOn(IntPtr instancePtr, string pszToken); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOnAnonymous")] +internal static extern void SteamAPI_ISteamGameServer_LogOnAnonymous(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_LogOff")] +internal static extern void SteamAPI_ISteamGameServer_LogOff(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BLoggedOn")] +internal static extern bool SteamAPI_ISteamGameServer_BLoggedOn(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BSecure")] +internal static extern bool SteamAPI_ISteamGameServer_BSecure(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetSteamID")] +internal static extern ulong SteamAPI_ISteamGameServer_GetSteamID(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_WasRestartRequested")] +internal static extern bool SteamAPI_ISteamGameServer_WasRestartRequested(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMaxPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetMaxPlayerCount(IntPtr instancePtr, int cPlayersMax); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetBotPlayerCount")] +internal static extern void SteamAPI_ISteamGameServer_SetBotPlayerCount(IntPtr instancePtr, int cBotplayers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetServerName(IntPtr instancePtr, string pszServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetMapName")] +internal static extern void SteamAPI_ISteamGameServer_SetMapName(IntPtr instancePtr, string pszMapName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetPasswordProtected")] +internal static extern void SteamAPI_ISteamGameServer_SetPasswordProtected(IntPtr instancePtr, bool bPasswordProtected); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorPort")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorPort(IntPtr instancePtr, char unSpectatorPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetSpectatorServerName")] +internal static extern void SteamAPI_ISteamGameServer_SetSpectatorServerName(IntPtr instancePtr, string pszSpectatorServerName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ClearAllKeyValues")] +internal static extern void SteamAPI_ISteamGameServer_ClearAllKeyValues(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetKeyValue")] +internal static extern void SteamAPI_ISteamGameServer_SetKeyValue(IntPtr instancePtr, string pKey, string pValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameTags")] +internal static extern void SteamAPI_ISteamGameServer_SetGameTags(IntPtr instancePtr, string pchGameTags); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetGameData")] +internal static extern void SteamAPI_ISteamGameServer_SetGameData(IntPtr instancePtr, string pchGameData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetRegion")] +internal static extern void SteamAPI_ISteamGameServer_SetRegion(IntPtr instancePtr, string pszRegion); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate")] +internal static extern bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(IntPtr instancePtr, uint unIPClient, IntPtr pvAuthBlob, uint cubAuthBlobSize, ref CSteamID pSteamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection")] +internal static extern ulong SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect")] +internal static extern void SteamAPI_ISteamGameServer_SendUserDisconnect(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData")] +internal static extern bool SteamAPI_ISteamGameServer_BUpdateUserData(IntPtr instancePtr, ulong steamIDUser, string pchPlayerName, uint uScore); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket")] +internal static extern uint SteamAPI_ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, IntPtr pTicket, int cbMaxTicket, ref uint pcbTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession")] +internal static extern uint SteamAPI_ISteamGameServer_BeginAuthSession(IntPtr instancePtr, IntPtr pAuthTicket, int cbAuthTicket, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EndAuthSession")] +internal static extern void SteamAPI_ISteamGameServer_EndAuthSession(IntPtr instancePtr, ulong steamID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_CancelAuthTicket")] +internal static extern void SteamAPI_ISteamGameServer_CancelAuthTicket(IntPtr instancePtr, uint hAuthTicket); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_UserHasLicenseForApp")] +internal static extern uint SteamAPI_ISteamGameServer_UserHasLicenseForApp(IntPtr instancePtr, ulong steamID, uint appID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_RequestUserGroupStatus")] +internal static extern bool SteamAPI_ISteamGameServer_RequestUserGroupStatus(IntPtr instancePtr, ulong steamIDUser, ulong steamIDGroup); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetGameplayStats")] +internal static extern void SteamAPI_ISteamGameServer_GetGameplayStats(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetServerReputation")] +internal static extern ulong SteamAPI_ISteamGameServer_GetServerReputation(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetPublicIP")] +internal static extern uint SteamAPI_ISteamGameServer_GetPublicIP(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_HandleIncomingPacket")] +internal static extern bool SteamAPI_ISteamGameServer_HandleIncomingPacket(IntPtr instancePtr, IntPtr pData, int cbData, uint srcIP, char srcPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket")] +internal static extern int SteamAPI_ISteamGameServer_GetNextOutgoingPacket(IntPtr instancePtr, IntPtr pOut, int cbMaxOut, ref uint pNetAdr, ref char pPort); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_EnableHeartbeats")] +internal static extern void SteamAPI_ISteamGameServer_EnableHeartbeats(IntPtr instancePtr, bool bActive); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetHeartbeatInterval")] +internal static extern void SteamAPI_ISteamGameServer_SetHeartbeatInterval(IntPtr instancePtr, int iHeartbeatInterval); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ForceHeartbeat")] +internal static extern void SteamAPI_ISteamGameServer_ForceHeartbeat(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan")] +internal static extern ulong SteamAPI_ISteamGameServer_AssociateWithClan(IntPtr instancePtr, ulong steamIDClan); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility")] +internal static extern ulong SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(IntPtr instancePtr, ulong steamIDNewPlayer); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_RequestUserStats(IntPtr instancePtr, ulong steamIDUser); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, ref int pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, ref float pData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_GetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_GetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName, ref bool pbAchieved); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat(IntPtr instancePtr, ulong steamIDUser, string pchName, int nData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserStat0")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserStat0(IntPtr instancePtr, ulong steamIDUser, string pchName, float fData); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat")] +internal static extern bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(IntPtr instancePtr, ulong steamIDUser, string pchName, float flCountThisSession, double dSessionLength); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_SetUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_SetUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_ClearUserAchievement")] +internal static extern bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats")] +internal static extern ulong SteamAPI_ISteamGameServerStats_StoreUserStats(IntPtr instancePtr, ulong steamIDUser); +public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t pUserStatsReceived_t); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallback")] +public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallback")] +public static extern ulong CUserStatsReceived_t_RemoveCallback(ulong handle); +public delegate void SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult(RemoteStorageFileReadAsyncComplete_t pRemoteStorageFileReadAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult(RemoteStorageGetPublishedItemVoteDetailsResult_t pRemoteStorageGetPublishedItemVoteDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FileDetailsResult_t_CallResult(FileDetailsResult_t pFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_SetCallResult")] +public static extern ulong CFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_FileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsStored_t_CallResult(GSStatsStored_t pGSStatsStored_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_SetCallResult")] +public static extern ulong CGSStatsStored_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsStored_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsStored_t_RemoveCallResult")] +public static extern ulong CGSStatsStored_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_HTML_BrowserReady_t_CallResult(HTML_BrowserReady_t pHTML_BrowserReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_SetCallResult")] +public static extern ulong CHTML_BrowserReady_t_SetCallResult(ulong hAPICall, SteamAPI_HTML_BrowserReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CHTML_BrowserReady_t_RemoveCallResult")] +public static extern ulong CHTML_BrowserReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsGetFollowerCount_t_CallResult(FriendsGetFollowerCount_t pFriendsGetFollowerCount_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_SetCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsGetFollowerCount_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsGetFollowerCount_t_RemoveCallResult")] +public static extern ulong CFriendsGetFollowerCount_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsIsFollowing_t_CallResult(FriendsIsFollowing_t pFriendsIsFollowing_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_SetCallResult")] +public static extern ulong CFriendsIsFollowing_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsIsFollowing_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsIsFollowing_t_RemoveCallResult")] +public static extern ulong CFriendsIsFollowing_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyMatchList_t_CallResult(LobbyMatchList_t pLobbyMatchList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_SetCallResult")] +public static extern ulong CLobbyMatchList_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyMatchList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyMatchList_t_RemoveCallResult")] +public static extern ulong CLobbyMatchList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult(RemoteStorageUpdatePublishedFileResult_t pRemoteStorageUpdatePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_StoreAuthURLResponse_t_CallResult(StoreAuthURLResponse_t pStoreAuthURLResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_SetCallResult")] +public static extern ulong CStoreAuthURLResponse_t_SetCallResult(ulong hAPICall, SteamAPI_StoreAuthURLResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CStoreAuthURLResponse_t_RemoveCallResult")] +public static extern ulong CStoreAuthURLResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyCreated_t_CallResult(LobbyCreated_t pLobbyCreated_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_SetCallResult")] +public static extern ulong CLobbyCreated_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyCreated_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyCreated_t_RemoveCallResult")] +public static extern ulong CLobbyCreated_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult(RemoteStorageFileWriteAsyncComplete_t pRemoteStorageFileWriteAsyncComplete_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_SetCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult(RemoteStorageDeletePublishedFileResult_t pRemoteStorageDeletePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult(RemoteStorageGetPublishedFileDetailsResult_t pRemoteStorageGetPublishedFileDetailsResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult(RemoteStorageDownloadUGCResult_t pRemoteStorageDownloadUGCResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_SetCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageDownloadUGCResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SteamUGCQueryCompleted_t_CallResult(SteamUGCQueryCompleted_t pSteamUGCQueryCompleted_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_SetCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_SetCallResult(ulong hAPICall, SteamAPI_SteamUGCQueryCompleted_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSteamUGCQueryCompleted_t_RemoveCallResult")] +public static extern ulong CSteamUGCQueryCompleted_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageFileShareResult_t_CallResult(RemoteStorageFileShareResult_t pRemoteStorageFileShareResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_SetCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileShareResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileShareResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageFileShareResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LobbyEnter_t_CallResult(LobbyEnter_t pLobbyEnter_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_SetCallResult")] +public static extern ulong CLobbyEnter_t_SetCallResult(ulong hAPICall, SteamAPI_LobbyEnter_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLobbyEnter_t_RemoveCallResult")] +public static extern ulong CLobbyEnter_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SubmitItemUpdateResult_t_CallResult(SubmitItemUpdateResult_t pSubmitItemUpdateResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_SetCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_SetCallResult(ulong hAPICall, SteamAPI_SubmitItemUpdateResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSubmitItemUpdateResult_t_RemoveCallResult")] +public static extern ulong CSubmitItemUpdateResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_NumberOfCurrentPlayers_t_CallResult(NumberOfCurrentPlayers_t pNumberOfCurrentPlayers_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_SetCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_SetCallResult(ulong hAPICall, SteamAPI_NumberOfCurrentPlayers_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CNumberOfCurrentPlayers_t_RemoveCallResult")] +public static extern ulong CNumberOfCurrentPlayers_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSStatsReceived_t_CallResult(GSStatsReceived_t pGSStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_SetCallResult")] +public static extern ulong CGSStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GSStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSStatsReceived_t_RemoveCallResult")] +public static extern ulong CGSStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoresDownloaded_t_CallResult(LeaderboardScoresDownloaded_t pLeaderboardScoresDownloaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoresDownloaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoresDownloaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoresDownloaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult(RemoteStorageUpdateUserPublishedItemVoteResult_t pRemoteStorageUpdateUserPublishedItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult(RemoteStorageEnumerateUserSubscribedFilesResult_t pRemoteStorageEnumerateUserSubscribedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CreateItemResult_t_CallResult(CreateItemResult_t pCreateItemResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_SetCallResult")] +public static extern ulong CCreateItemResult_t_SetCallResult(ulong hAPICall, SteamAPI_CreateItemResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCreateItemResult_t_RemoveCallResult")] +public static extern ulong CCreateItemResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetUserItemVoteResult_t_CallResult(SetUserItemVoteResult_t pSetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CSetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_SetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CSetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult(ComputeNewPlayerCompatibilityResult_t pComputeNewPlayerCompatibilityResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_SetCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_SetCallResult(ulong hAPICall, SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CComputeNewPlayerCompatibilityResult_t_RemoveCallResult")] +public static extern ulong CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardScoreUploaded_t_CallResult(LeaderboardScoreUploaded_t pLeaderboardScoreUploaded_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_SetCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardScoreUploaded_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardScoreUploaded_t_RemoveCallResult")] +public static extern ulong CLeaderboardScoreUploaded_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalAchievementPercentagesReady_t_CallResult(GlobalAchievementPercentagesReady_t pGlobalAchievementPercentagesReady_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_SetCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalAchievementPercentagesReady_t_RemoveCallResult")] +public static extern ulong CGlobalAchievementPercentagesReady_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GlobalStatsReceived_t_CallResult(GlobalStatsReceived_t pGlobalStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_SetCallResult")] +public static extern ulong CGlobalStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_GlobalStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGlobalStatsReceived_t_RemoveCallResult")] +public static extern ulong CGlobalStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult(RemoteStorageEnumeratePublishedFilesByUserActionResult_t pRemoteStorageEnumeratePublishedFilesByUserActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_ClanOfficerListResponse_t_CallResult(ClanOfficerListResponse_t pClanOfficerListResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_SetCallResult")] +public static extern ulong CClanOfficerListResponse_t_SetCallResult(ulong hAPICall, SteamAPI_ClanOfficerListResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CClanOfficerListResponse_t_RemoveCallResult")] +public static extern ulong CClanOfficerListResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStoragePublishFileProgress_t_CallResult(RemoteStoragePublishFileProgress_t pRemoteStoragePublishFileProgress_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_SetCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStoragePublishFileProgress_t_RemoveCallResult")] +public static extern ulong CRemoteStoragePublishFileProgress_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult(RemoteStorageEnumerateWorkshopFilesResult_t pRemoteStorageEnumerateWorkshopFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GSReputation_t_CallResult(GSReputation_t pGSReputation_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_SetCallResult")] +public static extern ulong CGSReputation_t_SetCallResult(ulong hAPICall, SteamAPI_GSReputation_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_RemoveCallResult")] +public static extern ulong CGSReputation_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserFavoriteItemsListChanged_t_CallResult(UserFavoriteItemsListChanged_t pUserFavoriteItemsListChanged_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_SetCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_SetCallResult(ulong hAPICall, SteamAPI_UserFavoriteItemsListChanged_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserFavoriteItemsListChanged_t_RemoveCallResult")] +public static extern ulong CUserFavoriteItemsListChanged_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_EncryptedAppTicketResponse_t_CallResult(EncryptedAppTicketResponse_t pEncryptedAppTicketResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_SetCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_SetCallResult(ulong hAPICall, SteamAPI_EncryptedAppTicketResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CEncryptedAppTicketResponse_t_RemoveCallResult")] +public static extern ulong CEncryptedAppTicketResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult(RemoteStorageSetUserPublishedFileActionResult_t pRemoteStorageSetUserPublishedFileActionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult(RemoteStorageEnumerateUserPublishedFilesResult_t pRemoteStorageEnumerateUserPublishedFilesResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_FriendsEnumerateFollowingList_t_CallResult(FriendsEnumerateFollowingList_t pFriendsEnumerateFollowingList_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_SetCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_SetCallResult(ulong hAPICall, SteamAPI_FriendsEnumerateFollowingList_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CFriendsEnumerateFollowingList_t_RemoveCallResult")] +public static extern ulong CFriendsEnumerateFollowingList_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult(RemoteStorageSubscribePublishedFileResult_t pRemoteStorageSubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_GetUserItemVoteResult_t_CallResult(GetUserItemVoteResult_t pGetUserItemVoteResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_SetCallResult")] +public static extern ulong CGetUserItemVoteResult_t_SetCallResult(ulong hAPICall, SteamAPI_GetUserItemVoteResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CGetUserItemVoteResult_t_RemoveCallResult")] +public static extern ulong CGetUserItemVoteResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_AssociateWithClanResult_t_CallResult(AssociateWithClanResult_t pAssociateWithClanResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_SetCallResult")] +public static extern ulong CAssociateWithClanResult_t_SetCallResult(ulong hAPICall, SteamAPI_AssociateWithClanResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CAssociateWithClanResult_t_RemoveCallResult")] +public static extern ulong CAssociateWithClanResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardUGCSet_t_CallResult(LeaderboardUGCSet_t pLeaderboardUGCSet_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_SetCallResult")] +public static extern ulong CLeaderboardUGCSet_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardUGCSet_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardUGCSet_t_RemoveCallResult")] +public static extern ulong CLeaderboardUGCSet_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_CheckFileSignature_t_CallResult(CheckFileSignature_t pCheckFileSignature_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_SetCallResult")] +public static extern ulong CCheckFileSignature_t_SetCallResult(ulong hAPICall, SteamAPI_CheckFileSignature_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CCheckFileSignature_t_RemoveCallResult")] +public static extern ulong CCheckFileSignature_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult(RemoteStorageUnsubscribePublishedFileResult_t pRemoteStorageUnsubscribePublishedFileResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult")] +public static extern ulong CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_SetPersonaNameResponse_t_CallResult(SetPersonaNameResponse_t pSetPersonaNameResponse_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_SetCallResult")] +public static extern ulong CSetPersonaNameResponse_t_SetCallResult(ulong hAPICall, SteamAPI_SetPersonaNameResponse_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CSetPersonaNameResponse_t_RemoveCallResult")] +public static extern ulong CSetPersonaNameResponse_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_UserStatsReceived_t_CallResult(UserStatsReceived_t pUserStatsReceived_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallResult")] +public static extern ulong CUserStatsReceived_t_SetCallResult(ulong hAPICall, SteamAPI_UserStatsReceived_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallResult")] +public static extern ulong CUserStatsReceived_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult(JoinClanChatRoomCompletionResult_t pJoinClanChatRoomCompletionResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_SetCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_SetCallResult(ulong hAPICall, SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CJoinClanChatRoomCompletionResult_t_RemoveCallResult")] +public static extern ulong CJoinClanChatRoomCompletionResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_LeaderboardFindResult_t_CallResult(LeaderboardFindResult_t pLeaderboardFindResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_SetCallResult")] +public static extern ulong CLeaderboardFindResult_t_SetCallResult(ulong hAPICall, SteamAPI_LeaderboardFindResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CLeaderboardFindResult_t_RemoveCallResult")] +public static extern ulong CLeaderboardFindResult_t_RemoveCallResult(ulong handle); + +} + +} + +namespace Valve.Steamworks +{ + + public abstract class ISteamClient + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateSteamPipe(); + public abstract bool BReleaseSteamPipe(uint hSteamPipe); + public abstract uint ConnectToGlobalUser(uint hSteamPipe); + public abstract uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType); + public abstract void ReleaseUser(uint hSteamPipe,uint hUser); + public abstract ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract void SetLocalIPBinding(uint unIP,char usPort); + public abstract ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool BShutdownIfAllPipesClosed(); + public abstract ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion); + public abstract ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion); + } + + + public abstract class ISteamUser + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetHSteamUser(); + public abstract bool BLoggedOn(); + public abstract ulong GetSteamID(); + public abstract int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure); + public abstract void TerminateGameConnection(uint unIPServer,char usPortServer); + public abstract void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo); + public abstract bool GetUserDataFolder(string pchBuffer,int cubBuffer); + public abstract void StartVoiceRecording(); + public abstract void StopVoiceRecording(); + public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate); + public abstract uint GetVoiceOptimalSampleRate(); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool BIsBehindNAT(); + public abstract void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer); + public abstract ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude); + public abstract bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract int GetGameBadgeLevel(int nSeries,bool bFoil); + public abstract int GetPlayerSteamLevel(); + public abstract ulong RequestStoreAuthURL(string pchRedirectURL); + public abstract bool BIsPhoneVerified(); + public abstract bool BIsTwoFactorEnabled(); + public abstract bool BIsPhoneIdentifying(); + public abstract bool BIsPhoneRequiringVerification(); + } + + + public abstract class ISteamFriends + { + public abstract IntPtr GetIntPtr(); + public abstract string GetPersonaName(); + public abstract ulong SetPersonaName(string pchPersonaName); + public abstract uint GetPersonaState(); + public abstract int GetFriendCount(int iFriendFlags); + public abstract ulong GetFriendByIndex(int iFriend,int iFriendFlags); + public abstract uint GetFriendRelationship(ulong steamIDFriend); + public abstract uint GetFriendPersonaState(ulong steamIDFriend); + public abstract string GetFriendPersonaName(ulong steamIDFriend); + public abstract bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo); + public abstract string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName); + public abstract int GetFriendSteamLevel(ulong steamIDFriend); + public abstract string GetPlayerNickname(ulong steamIDPlayer); + public abstract int GetFriendsGroupCount(); + public abstract char GetFriendsGroupIDByIndex(int iFG); + public abstract string GetFriendsGroupName(char friendsGroupID); + public abstract int GetFriendsGroupMembersCount(char friendsGroupID); + public abstract void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers); + public abstract bool HasFriend(ulong steamIDFriend,int iFriendFlags); + public abstract int GetClanCount(); + public abstract ulong GetClanByIndex(int iClan); + public abstract string GetClanName(ulong steamIDClan); + public abstract string GetClanTag(ulong steamIDClan); + public abstract bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting); + public abstract ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans); + public abstract int GetFriendCountFromSource(ulong steamIDSource); + public abstract ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend); + public abstract bool IsUserInSource(ulong steamIDUser,ulong steamIDSource); + public abstract void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking); + public abstract void ActivateGameOverlay(string pchDialog); + public abstract void ActivateGameOverlayToUser(string pchDialog,ulong steamID); + public abstract void ActivateGameOverlayToWebPage(string pchURL); + public abstract void ActivateGameOverlayToStore(uint nAppID,char eFlag); + public abstract void SetPlayedWith(ulong steamIDUserPlayedWith); + public abstract void ActivateGameOverlayInviteDialog(ulong steamIDLobby); + public abstract int GetSmallFriendAvatar(ulong steamIDFriend); + public abstract int GetMediumFriendAvatar(ulong steamIDFriend); + public abstract int GetLargeFriendAvatar(ulong steamIDFriend); + public abstract bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly); + public abstract ulong RequestClanOfficerList(ulong steamIDClan); + public abstract ulong GetClanOwner(ulong steamIDClan); + public abstract int GetClanOfficerCount(ulong steamIDClan); + public abstract ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer); + public abstract uint GetUserRestrictions(); + public abstract bool SetRichPresence(string pchKey,string pchValue); + public abstract void ClearRichPresence(); + public abstract string GetFriendRichPresence(ulong steamIDFriend,string pchKey); + public abstract int GetFriendRichPresenceKeyCount(ulong steamIDFriend); + public abstract string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey); + public abstract void RequestFriendRichPresence(ulong steamIDFriend); + public abstract bool InviteUserToGame(ulong steamIDFriend,string pchConnectString); + public abstract int GetCoplayFriendCount(); + public abstract ulong GetCoplayFriend(int iCoplayFriend); + public abstract int GetFriendCoplayTime(ulong steamIDFriend); + public abstract uint GetFriendCoplayGame(ulong steamIDFriend); + public abstract ulong JoinClanChatRoom(ulong steamIDClan); + public abstract bool LeaveClanChatRoom(ulong steamIDClan); + public abstract int GetClanChatMemberCount(ulong steamIDClan); + public abstract ulong GetChatMemberByIndex(ulong steamIDClan,int iUser); + public abstract bool SendClanChatMessage(ulong steamIDClanChat,string pchText); + public abstract int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter); + public abstract bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser); + public abstract bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat); + public abstract bool OpenClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool CloseClanChatWindowInSteam(ulong steamIDClanChat); + public abstract bool SetListenForFriendsMessages(bool bInterceptEnabled); + public abstract bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend); + public abstract int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract ulong GetFollowerCount(ulong steamID); + public abstract ulong IsFollowing(ulong steamID); + public abstract ulong EnumerateFollowingList(uint unStartIndex); + } + + + public abstract class ISteamUtils + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetSecondsSinceAppActive(); + public abstract uint GetSecondsSinceComputerActive(); + public abstract int GetConnectedUniverse(); + public abstract uint GetServerRealTime(); + public abstract string GetIPCountry(); + public abstract bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight); + public abstract bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize); + public abstract bool GetCSERIPPort(ref uint unIP,ref char usPort); + public abstract byte GetCurrentBatteryPower(); + public abstract uint GetAppID(); + public abstract void SetOverlayNotificationPosition(uint eNotificationPosition); + public abstract bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed); + public abstract int GetAPICallFailureReason(ulong hSteamAPICall); + public abstract bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed); + public abstract uint GetIPCCallCount(); + public abstract void SetWarningMessageHook(IntPtr pFunction); + public abstract bool IsOverlayEnabled(); + public abstract bool BOverlayNeedsPresent(); + public abstract ulong CheckFileSignature(string szFileName); + public abstract bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText); + public abstract uint GetEnteredGamepadTextLength(); + public abstract bool GetEnteredGamepadTextInput(string pchText,uint cchText); + public abstract string GetSteamUILanguage(); + public abstract bool IsSteamRunningInVR(); + public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); + public abstract bool IsSteamInBigPictureMode(); + public abstract void StartVRDashboard(); + } + + + public abstract class ISteamMatchmaking + { + public abstract IntPtr GetIntPtr(); + public abstract int GetFavoriteGameCount(); + public abstract bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer); + public abstract int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer); + public abstract bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags); + public abstract ulong RequestLobbyList(); + public abstract void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType); + public abstract void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo); + public abstract void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); + public abstract void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter); + public abstract void AddRequestLobbyListResultCountFilter(int cMaxResults); + public abstract void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby); + public abstract ulong GetLobbyByIndex(int iLobby); + public abstract ulong CreateLobby(uint eLobbyType,int cMaxMembers); + public abstract ulong JoinLobby(ulong steamIDLobby); + public abstract void LeaveLobby(ulong steamIDLobby); + public abstract bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee); + public abstract int GetNumLobbyMembers(ulong steamIDLobby); + public abstract ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember); + public abstract string GetLobbyData(ulong steamIDLobby,string pchKey); + public abstract bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract int GetLobbyDataCount(ulong steamIDLobby); + public abstract bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize); + public abstract bool DeleteLobbyData(ulong steamIDLobby,string pchKey); + public abstract string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey); + public abstract void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue); + public abstract bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody); + public abstract int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType); + public abstract bool RequestLobbyData(ulong steamIDLobby); + public abstract void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer); + public abstract bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer); + public abstract bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers); + public abstract int GetLobbyMemberLimit(ulong steamIDLobby); + public abstract bool SetLobbyType(ulong steamIDLobby,uint eLobbyType); + public abstract bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable); + public abstract ulong GetLobbyOwner(ulong steamIDLobby); + public abstract bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner); + public abstract bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent); + } + + + public abstract class ISteamMatchmakingServerListResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(uint hRequest,int iServer); + public abstract void ServerFailedToRespond(uint hRequest,int iServer); + public abstract void RefreshComplete(uint hRequest,uint response); + } + + + public abstract class ISteamMatchmakingPingResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void ServerResponded(IntPtr server); + public abstract void ServerFailedToRespond(); + } + + + public abstract class ISteamMatchmakingPlayersResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void AddPlayerToList(string pchName,int nScore,float flTimePlayed); + public abstract void PlayersFailedToRespond(); + public abstract void PlayersRefreshComplete(); + } + + + public abstract class ISteamMatchmakingRulesResponse + { + public abstract IntPtr GetIntPtr(); + public abstract void RulesResponded(string pchRule,string pchValue); + public abstract void RulesFailedToRespond(); + public abstract void RulesRefreshComplete(); + } + + + public abstract class ISteamMatchmakingServers + { + public abstract IntPtr GetIntPtr(); + public abstract uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse); + public abstract void ReleaseRequest(uint hServerListRequest); + public abstract gameserveritem_t GetServerDetails(uint hRequest,int iServer); + public abstract void CancelQuery(uint hRequest); + public abstract void RefreshQuery(uint hRequest); + public abstract bool IsRefreshing(uint hRequest); + public abstract int GetServerCount(uint hRequest); + public abstract void RefreshServer(uint hRequest,int iServer); + public abstract uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse); + public abstract uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse); + public abstract uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse); + public abstract void CancelServerQuery(uint hServerQuery); + } + + + public abstract class ISteamRemoteStorage + { + public abstract IntPtr GetIntPtr(); + public abstract bool FileWrite(string pchFile,IntPtr pvData,int cubData); + public abstract int FileRead(string pchFile,IntPtr pvData,int cubDataToRead); + public abstract ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData); + public abstract ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead); + public abstract bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead); + public abstract bool FileForget(string pchFile); + public abstract bool FileDelete(string pchFile); + public abstract ulong FileShare(string pchFile); + public abstract bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform); + public abstract ulong FileWriteStreamOpen(string pchFile); + public abstract bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData); + public abstract bool FileWriteStreamClose(ulong writeHandle); + public abstract bool FileWriteStreamCancel(ulong writeHandle); + public abstract bool FileExists(string pchFile); + public abstract bool FilePersisted(string pchFile); + public abstract int GetFileSize(string pchFile); + public abstract long GetFileTimestamp(string pchFile); + public abstract uint GetSyncPlatforms(string pchFile); + public abstract int GetFileCount(); + public abstract string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes); + public abstract bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes); + public abstract bool IsCloudEnabledForAccount(); + public abstract bool IsCloudEnabledForApp(); + public abstract void SetCloudEnabledForApp(bool bEnabled); + public abstract ulong UGCDownload(ulong hContent,uint unPriority); + public abstract bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected); + public abstract bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner); + public abstract int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction); + public abstract int GetCachedUGCCount(); + public abstract ulong GetCachedUGCHandle(int iCachedContent); + public abstract ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType); + public abstract ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileFile(ulong updateHandle,string pchFile); + public abstract bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile); + public abstract bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle); + public abstract bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription); + public abstract bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility); + public abstract bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract ulong CommitPublishedFileUpdate(ulong updateHandle); + public abstract ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld); + public abstract ulong DeletePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserPublishedFiles(uint unStartIndex); + public abstract ulong SubscribePublishedFile(ulong unPublishedFileId); + public abstract ulong EnumerateUserSubscribedFiles(uint unStartIndex); + public abstract ulong UnsubscribePublishedFile(ulong unPublishedFileId); + public abstract bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription); + public abstract ulong GetPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp); + public abstract ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId); + public abstract ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags); + public abstract ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags); + public abstract ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction); + public abstract ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex); + public abstract ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags); + public abstract ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority); + } + + + public abstract class ISteamUserStats + { + public abstract IntPtr GetIntPtr(); + public abstract bool RequestCurrentStats(); + public abstract bool GetStat(string pchName,ref int pData); + public abstract bool GetStat0(string pchName,ref float pData); + public abstract bool SetStat(string pchName,int nData); + public abstract bool SetStat0(string pchName,float fData); + public abstract bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength); + public abstract bool GetAchievement(string pchName,ref bool pbAchieved); + public abstract bool SetAchievement(string pchName); + public abstract bool ClearAchievement(string pchName); + public abstract bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool StoreStats(); + public abstract int GetAchievementIcon(string pchName); + public abstract string GetAchievementDisplayAttribute(string pchName,string pchKey); + public abstract bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress); + public abstract uint GetNumAchievements(); + public abstract string GetAchievementName(uint iAchievement); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime); + public abstract bool ResetAllStats(bool bAchievementsToo); + public abstract ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType); + public abstract ulong FindLeaderboard(string pchLeaderboardName); + public abstract string GetLeaderboardName(ulong hSteamLeaderboard); + public abstract int GetLeaderboardEntryCount(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardSortMethod(ulong hSteamLeaderboard); + public abstract uint GetLeaderboardDisplayType(ulong hSteamLeaderboard); + public abstract ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd); + public abstract ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers); + public abstract bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax); + public abstract ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount); + public abstract ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC); + public abstract ulong GetNumberOfCurrentPlayers(); + public abstract ulong RequestGlobalAchievementPercentages(); + public abstract int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved); + public abstract bool GetAchievementAchievedPercent(string pchName,ref float pflPercent); + public abstract ulong RequestGlobalStats(int nHistoryDays); + public abstract bool GetGlobalStat(string pchStatName,ref long pData); + public abstract bool GetGlobalStat0(string pchStatName,ref double pData); + public abstract int GetGlobalStatHistory(string pchStatName,long [] pData); + public abstract int GetGlobalStatHistory0(string pchStatName,double [] pData); + } + + + public abstract class ISteamApps + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsSubscribed(); + public abstract bool BIsLowViolence(); + public abstract bool BIsCybercafe(); + public abstract bool BIsVACBanned(); + public abstract string GetCurrentGameLanguage(); + public abstract string GetAvailableGameLanguages(); + public abstract bool BIsSubscribedApp(uint appID); + public abstract bool BIsDlcInstalled(uint appID); + public abstract uint GetEarliestPurchaseUnixTime(uint nAppID); + public abstract bool BIsSubscribedFromFreeWeekend(); + public abstract int GetDLCCount(); + public abstract bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize); + public abstract void InstallDLC(uint nAppID); + public abstract void UninstallDLC(uint nAppID); + public abstract void RequestAppProofOfPurchaseKey(uint nAppID); + public abstract bool GetCurrentBetaName(string pchName,int cchNameBufferSize); + public abstract bool MarkContentCorrupt(bool bMissingFilesOnly); + public abstract uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots); + public abstract uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize); + public abstract bool BIsAppInstalled(uint appID); + public abstract ulong GetAppOwner(); + public abstract string GetLaunchQueryParam(string pchKey); + public abstract bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract int GetAppBuildId(); + public abstract void RequestAllProofOfPurchaseKeys(); + public abstract ulong GetFileDetails(string pszFileName); + } + + + public abstract class ISteamNetworking + { + public abstract IntPtr GetIntPtr(); + public abstract bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel); + public abstract bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel); + public abstract bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel); + public abstract bool AcceptP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PSessionWithUser(ulong steamIDRemote); + public abstract bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel); + public abstract bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState); + public abstract bool AllowP2PPacketRelay(bool bAllow); + public abstract uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay); + public abstract uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay); + public abstract uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec); + public abstract bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd); + public abstract bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable); + public abstract bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize); + public abstract bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize); + public abstract bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket); + public abstract bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote); + public abstract bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort); + public abstract uint GetSocketConnectionType(uint hSocket); + public abstract int GetMaxPacketSize(uint hSocket); + } + + + public abstract class ISteamScreenshots + { + public abstract IntPtr GetIntPtr(); + public abstract uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight); + public abstract uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight); + public abstract void TriggerScreenshot(); + public abstract void HookScreenshots(bool bHook); + public abstract bool SetLocation(uint hScreenshot,string pchLocation); + public abstract bool TagUser(uint hScreenshot,ulong steamID); + public abstract bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID); + public abstract bool IsScreenshotsHooked(); + public abstract uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename); + } + + + public abstract class ISteamMusic + { + public abstract IntPtr GetIntPtr(); + public abstract bool BIsEnabled(); + public abstract bool BIsPlaying(); + public abstract int GetPlaybackStatus(); + public abstract void Play(); + public abstract void Pause(); + public abstract void PlayPrevious(); + public abstract void PlayNext(); + public abstract void SetVolume(float flVolume); + public abstract float GetVolume(); + } + + + public abstract class ISteamMusicRemote + { + public abstract IntPtr GetIntPtr(); + public abstract bool RegisterSteamMusicRemote(string pchName); + public abstract bool DeregisterSteamMusicRemote(); + public abstract bool BIsCurrentMusicRemote(); + public abstract bool BActivationSuccess(bool bValue); + public abstract bool SetDisplayName(string pchDisplayName); + public abstract bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool EnablePlayPrevious(bool bValue); + public abstract bool EnablePlayNext(bool bValue); + public abstract bool EnableShuffled(bool bValue); + public abstract bool EnableLooped(bool bValue); + public abstract bool EnableQueue(bool bValue); + public abstract bool EnablePlaylists(bool bValue); + public abstract bool UpdatePlaybackStatus(int nStatus); + public abstract bool UpdateShuffled(bool bValue); + public abstract bool UpdateLooped(bool bValue); + public abstract bool UpdateVolume(float flValue); + public abstract bool CurrentEntryWillChange(); + public abstract bool CurrentEntryIsAvailable(bool bAvailable); + public abstract bool UpdateCurrentEntryText(string pchText); + public abstract bool UpdateCurrentEntryElapsedSeconds(int nValue); + public abstract bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength); + public abstract bool CurrentEntryDidChange(); + public abstract bool QueueWillChange(); + public abstract bool ResetQueueEntries(); + public abstract bool SetQueueEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentQueueEntry(int nID); + public abstract bool QueueDidChange(); + public abstract bool PlaylistWillChange(); + public abstract bool ResetPlaylistEntries(); + public abstract bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText); + public abstract bool SetCurrentPlaylistEntry(int nID); + public abstract bool PlaylistDidChange(); + } + + + public abstract class ISteamHTTP + { + public abstract IntPtr GetIntPtr(); + public abstract uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL); + public abstract bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue); + public abstract bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds); + public abstract bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue); + public abstract bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue); + public abstract bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle); + public abstract bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle); + public abstract bool DeferHTTPRequest(uint hRequest); + public abstract bool PrioritizeHTTPRequest(uint hRequest); + public abstract bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize); + public abstract bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize); + public abstract bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize); + public abstract bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize); + public abstract bool ReleaseHTTPRequest(uint hRequest); + public abstract bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut); + public abstract bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen); + public abstract uint CreateCookieContainer(bool bAllowResponsesToModify); + public abstract bool ReleaseCookieContainer(uint hCookieContainer); + public abstract bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie); + public abstract bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer); + public abstract bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo); + public abstract bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate); + public abstract bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds); + public abstract bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut); + } + + + public abstract class ISteamUnifiedMessages + { + public abstract IntPtr GetIntPtr(); + public abstract ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext); + public abstract bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult); + public abstract bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease); + public abstract bool ReleaseMethod(ulong hHandle); + public abstract bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize); + } + + + public abstract class ISteamController + { + public abstract IntPtr GetIntPtr(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract void RunFrame(); + public abstract int GetConnectedControllers(ref ulong handlesOut); + public abstract bool ShowBindingPanel(ulong controllerHandle); + public abstract ulong GetActionSetHandle(string pszActionSetName); + public abstract void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle); + public abstract ulong GetCurrentActionSet(ulong controllerHandle); + public abstract ulong GetDigitalActionHandle(string pszActionName); + public abstract ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle); + public abstract int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut); + public abstract ulong GetAnalogActionHandle(string pszActionName); + public abstract ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle); + public abstract int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut); + public abstract void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction); + public abstract void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec); + public abstract void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags); + public abstract int GetGamepadIndexForController(ulong ulControllerHandle); + public abstract ulong GetControllerForGamepadIndex(int nIndex); + public abstract ControllerMotionData_t GetMotionData(ulong controllerHandle); + public abstract bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition); + public abstract bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition); + } + + + public abstract class ISteamUGC + { + public abstract IntPtr GetIntPtr(); + public abstract ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage); + public abstract ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong SendQueryUGCRequest(ulong handle); + public abstract bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails); + public abstract bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL); + public abstract bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata); + public abstract bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue); + public abstract uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index); + public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType); + public abstract uint GetQueryUGCNumKeyValueTags(ulong handle,uint index); + public abstract bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue); + public abstract bool ReleaseQueryUGCRequest(ulong handle); + public abstract bool AddRequiredTag(ulong handle,string pTagName); + public abstract bool AddExcludedTag(ulong handle,string pTagName); + public abstract bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs); + public abstract bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags); + public abstract bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription); + public abstract bool SetReturnMetadata(ulong handle,bool bReturnMetadata); + public abstract bool SetReturnChildren(ulong handle,bool bReturnChildren); + public abstract bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews); + public abstract bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly); + public abstract bool SetLanguage(ulong handle,string pchLanguage); + public abstract bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds); + public abstract bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName); + public abstract bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag); + public abstract bool SetSearchText(ulong handle,string pSearchText); + public abstract bool SetRankedByTrendDays(ulong handle,uint unDays); + public abstract bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue); + public abstract ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds); + public abstract ulong CreateItem(uint nConsumerAppId,uint eFileType); + public abstract ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID); + public abstract bool SetItemTitle(ulong handle,string pchTitle); + public abstract bool SetItemDescription(ulong handle,string pchDescription); + public abstract bool SetItemUpdateLanguage(ulong handle,string pchLanguage); + public abstract bool SetItemMetadata(ulong handle,string pchMetaData); + public abstract bool SetItemVisibility(ulong handle,uint eVisibility); + public abstract bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags); + public abstract bool SetItemContent(ulong handle,string pszContentFolder); + public abstract bool SetItemPreview(ulong handle,string pszPreviewFile); + public abstract bool RemoveItemKeyValueTags(ulong handle,string pchKey); + public abstract bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue); + public abstract bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type); + public abstract bool AddItemPreviewVideo(ulong handle,string pszVideoID); + public abstract bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile); + public abstract bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID); + public abstract bool RemoveItemPreview(ulong handle,uint index); + public abstract ulong SubmitItemUpdate(ulong handle,string pchChangeNote); + public abstract uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal); + public abstract ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp); + public abstract ulong GetUserItemVote(ulong nPublishedFileID); + public abstract ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID); + public abstract ulong SubscribeItem(ulong nPublishedFileID); + public abstract ulong UnsubscribeItem(ulong nPublishedFileID); + public abstract uint GetNumSubscribedItems(); + public abstract uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries); + public abstract uint GetItemState(ulong nPublishedFileID); + public abstract bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp); + public abstract bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); + public abstract bool DownloadItem(ulong nPublishedFileID,bool bHighPriority); + public abstract bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder); + public abstract void SuspendDownloads(bool bSuspend); + public abstract ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); + public abstract ulong StopPlaytimeTrackingForAllItems(); + } + + + public abstract class ISteamAppList + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetNumInstalledApps(); + public abstract uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs); + public abstract int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax); + public abstract int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax); + public abstract int GetAppBuildId(uint nAppID); + } + + + public abstract class ISteamHTMLSurface + { + public abstract IntPtr GetIntPtr(); + public abstract void DestructISteamHTMLSurface(); + public abstract bool Init(); + public abstract bool Shutdown(); + public abstract ulong CreateBrowser(string pchUserAgent,string pchUserCSS); + public abstract void RemoveBrowser(uint unBrowserHandle); + public abstract void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData); + public abstract void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight); + public abstract void StopLoad(uint unBrowserHandle); + public abstract void Reload(uint unBrowserHandle); + public abstract void GoBack(uint unBrowserHandle); + public abstract void GoForward(uint unBrowserHandle); + public abstract void AddHeader(uint unBrowserHandle,string pchKey,string pchValue); + public abstract void ExecuteJavascript(uint unBrowserHandle,string pchScript); + public abstract void MouseUp(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDown(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton); + public abstract void MouseMove(uint unBrowserHandle,int x,int y); + public abstract void MouseWheel(uint unBrowserHandle,int nDelta); + public abstract void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers); + public abstract void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers); + public abstract void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll); + public abstract void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus); + public abstract void ViewSource(uint unBrowserHandle); + public abstract void CopyToClipboard(uint unBrowserHandle); + public abstract void PasteFromClipboard(uint unBrowserHandle); + public abstract void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse); + public abstract void StopFind(uint unBrowserHandle); + public abstract void GetLinkAtPosition(uint unBrowserHandle,int x,int y); + public abstract void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly); + public abstract void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY); + public abstract void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode); + public abstract void AllowStartRequest(uint unBrowserHandle,bool bAllowed); + public abstract void JSDialogResponse(uint unBrowserHandle,bool bResult); + } + + + public abstract class ISteamInventory + { + public abstract IntPtr GetIntPtr(); + public abstract uint GetResultStatus(int resultHandle); + public abstract bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray); + public abstract uint GetResultTimestamp(int resultHandle); + public abstract bool CheckResultSteamID(int resultHandle,ulong steamIDExpected); + public abstract void DestroyResult(int resultHandle); + public abstract bool GetAllItems(ref int pResultHandle); + public abstract bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs); + public abstract bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize); + public abstract bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE); + public abstract bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity); + public abstract bool GrantPromoItems(ref int pResultHandle); + public abstract bool AddPromoItem(ref int pResultHandle,int itemDef); + public abstract bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs); + public abstract bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity); + public abstract bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity); + public abstract bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest); + public abstract void SendItemDropHeartbeat(); + public abstract bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition); + public abstract bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity); + public abstract bool LoadItemDefinitions(); + public abstract bool GetItemDefinitionIDs(out int [] pItemDefIDs); + public abstract bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer); + } + + + public abstract class ISteamVideo + { + public abstract IntPtr GetIntPtr(); + public abstract void GetVideoURL(uint unVideoAppID); + public abstract bool IsBroadcasting(ref int pnNumViewers); + } + + + public abstract class ISteamGameServer + { + public abstract IntPtr GetIntPtr(); + public abstract bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString); + public abstract void SetProduct(string pszProduct); + public abstract void SetGameDescription(string pszGameDescription); + public abstract void SetModDir(string pszModDir); + public abstract void SetDedicatedServer(bool bDedicated); + public abstract void LogOn(string pszToken); + public abstract void LogOnAnonymous(); + public abstract void LogOff(); + public abstract bool BLoggedOn(); + public abstract bool BSecure(); + public abstract ulong GetSteamID(); + public abstract bool WasRestartRequested(); + public abstract void SetMaxPlayerCount(int cPlayersMax); + public abstract void SetBotPlayerCount(int cBotplayers); + public abstract void SetServerName(string pszServerName); + public abstract void SetMapName(string pszMapName); + public abstract void SetPasswordProtected(bool bPasswordProtected); + public abstract void SetSpectatorPort(char unSpectatorPort); + public abstract void SetSpectatorServerName(string pszSpectatorServerName); + public abstract void ClearAllKeyValues(); + public abstract void SetKeyValue(string pKey,string pValue); + public abstract void SetGameTags(string pchGameTags); + public abstract void SetGameData(string pchGameData); + public abstract void SetRegion(string pszRegion); + public abstract bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser); + public abstract ulong CreateUnauthenticatedUserConnection(); + public abstract void SendUserDisconnect(ulong steamIDUser); + public abstract bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore); + public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); + public abstract uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID); + public abstract void EndAuthSession(ulong steamID); + public abstract void CancelAuthTicket(uint hAuthTicket); + public abstract uint UserHasLicenseForApp(ulong steamID,uint appID); + public abstract bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup); + public abstract void GetGameplayStats(); + public abstract ulong GetServerReputation(); + public abstract uint GetPublicIP(); + public abstract bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort); + public abstract int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort); + public abstract void EnableHeartbeats(bool bActive); + public abstract void SetHeartbeatInterval(int iHeartbeatInterval); + public abstract void ForceHeartbeat(); + public abstract ulong AssociateWithClan(ulong steamIDClan); + public abstract ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer); + } + + + public abstract class ISteamGameServerStats + { + public abstract IntPtr GetIntPtr(); + public abstract ulong RequestUserStats(ulong steamIDUser); + public abstract bool GetUserStat(ulong steamIDUser,string pchName,ref int pData); + public abstract bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData); + public abstract bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved); + public abstract bool SetUserStat(ulong steamIDUser,string pchName,int nData); + public abstract bool SetUserStat0(ulong steamIDUser,string pchName,float fData); + public abstract bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength); + public abstract bool SetUserAchievement(ulong steamIDUser,string pchName); + public abstract bool ClearUserAchievement(ulong steamIDUser,string pchName); + public abstract ulong StoreUserStats(ulong steamIDUser); + } + + +public class CSteamClient : ISteamClient +{ +public CSteamClient(IntPtr SteamClient) +{ + m_pSteamClient = SteamClient; +} +IntPtr m_pSteamClient; + +public override IntPtr GetIntPtr() { return m_pSteamClient; } + +private void CheckIfUsable() +{ + if (m_pSteamClient == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateSteamPipe() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateSteamPipe(m_pSteamClient); + return result; +} +public override bool BReleaseSteamPipe(uint hSteamPipe) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BReleaseSteamPipe(m_pSteamClient,hSteamPipe); + return result; +} +public override uint ConnectToGlobalUser(uint hSteamPipe) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_ConnectToGlobalUser(m_pSteamClient,hSteamPipe); + return result; +} +public override uint CreateLocalUser(ref uint phSteamPipe,uint eAccountType) +{ + CheckIfUsable(); + phSteamPipe = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamClient_CreateLocalUser(m_pSteamClient,ref phSteamPipe,eAccountType); + return result; +} +public override void ReleaseUser(uint hSteamPipe,uint hUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_ReleaseUser(m_pSteamClient,hSteamPipe,hUser); +} +public override ISteamUser GetISteamUser(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUser(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUser) Marshal.PtrToStructure(result, typeof(ISteamUser)); +} +public override ISteamGameServer GetISteamGameServer(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServer(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamGameServer) Marshal.PtrToStructure(result, typeof(ISteamGameServer)); +} +public override void SetLocalIPBinding(uint unIP,char usPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetLocalIPBinding(m_pSteamClient,unIP,usPort); +} +public override ISteamFriends GetISteamFriends(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamFriends(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamFriends) Marshal.PtrToStructure(result, typeof(ISteamFriends)); +} +public override ISteamUtils GetISteamUtils(uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUtils(m_pSteamClient,hSteamPipe,pchVersion); + return (ISteamUtils) Marshal.PtrToStructure(result, typeof(ISteamUtils)); +} +public override ISteamMatchmaking GetISteamMatchmaking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmaking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmaking) Marshal.PtrToStructure(result, typeof(ISteamMatchmaking)); +} +public override ISteamMatchmakingServers GetISteamMatchmakingServers(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMatchmakingServers(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamMatchmakingServers) Marshal.PtrToStructure(result, typeof(ISteamMatchmakingServers)); +} +public override IntPtr GetISteamGenericInterface(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGenericInterface(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (IntPtr) Marshal.PtrToStructure(result, typeof(IntPtr)); +} +public override ISteamUserStats GetISteamUserStats(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUserStats(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUserStats) Marshal.PtrToStructure(result, typeof(ISteamUserStats)); +} +public override ISteamGameServerStats GetISteamGameServerStats(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamGameServerStats(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamGameServerStats) Marshal.PtrToStructure(result, typeof(ISteamGameServerStats)); +} +public override ISteamApps GetISteamApps(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamApps(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamApps) Marshal.PtrToStructure(result, typeof(ISteamApps)); +} +public override ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamNetworking(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamNetworking) Marshal.PtrToStructure(result, typeof(ISteamNetworking)); +} +public override ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamRemoteStorage(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamRemoteStorage) Marshal.PtrToStructure(result, typeof(ISteamRemoteStorage)); +} +public override ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamScreenshots(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamScreenshots) Marshal.PtrToStructure(result, typeof(ISteamScreenshots)); +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamClient_GetIPCCallCount(m_pSteamClient); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamClient_SetWarningMessageHook(m_pSteamClient,pFunction); +} +public override bool BShutdownIfAllPipesClosed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(m_pSteamClient); + return result; +} +public override ISteamHTTP GetISteamHTTP(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTTP(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTTP) Marshal.PtrToStructure(result, typeof(ISteamHTTP)); +} +public override ISteamUnifiedMessages GetISteamUnifiedMessages(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUnifiedMessages(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamUnifiedMessages) Marshal.PtrToStructure(result, typeof(ISteamUnifiedMessages)); +} +public override ISteamController GetISteamController(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamController(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamController) Marshal.PtrToStructure(result, typeof(ISteamController)); +} +public override ISteamUGC GetISteamUGC(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamUGC(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamUGC) Marshal.PtrToStructure(result, typeof(ISteamUGC)); +} +public override ISteamAppList GetISteamAppList(uint hSteamUser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamAppList(m_pSteamClient,hSteamUser,hSteamPipe,pchVersion); + return (ISteamAppList) Marshal.PtrToStructure(result, typeof(ISteamAppList)); +} +public override ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusic(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusic) Marshal.PtrToStructure(result, typeof(ISteamMusic)); +} +public override ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamMusicRemote(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamMusicRemote) Marshal.PtrToStructure(result, typeof(ISteamMusicRemote)); +} +public override ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTMLSurface(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamHTMLSurface) Marshal.PtrToStructure(result, typeof(ISteamHTMLSurface)); +} +public override ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamInventory(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamInventory) Marshal.PtrToStructure(result, typeof(ISteamInventory)); +} +public override ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamVideo(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); + return (ISteamVideo) Marshal.PtrToStructure(result, typeof(ISteamVideo)); +} +} + + +public class CSteamUser : ISteamUser +{ +public CSteamUser(IntPtr SteamUser) +{ + m_pSteamUser = SteamUser; +} +IntPtr m_pSteamUser; + +public override IntPtr GetIntPtr() { return m_pSteamUser; } + +private void CheckIfUsable() +{ + if (m_pSteamUser == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetHSteamUser() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetHSteamUser(m_pSteamUser); + return result; +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BLoggedOn(m_pSteamUser); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_GetSteamID(m_pSteamUser); + return result; +} +public override int InitiateGameConnection(IntPtr pAuthBlob,int cbMaxAuthBlob,ulong steamIDGameServer,uint unIPServer,char usPortServer,bool bSecure) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_InitiateGameConnection(m_pSteamUser,pAuthBlob,cbMaxAuthBlob,steamIDGameServer,unIPServer,usPortServer,bSecure); + return result; +} +public override void TerminateGameConnection(uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TerminateGameConnection(m_pSteamUser,unIPServer,usPortServer); +} +public override void TrackAppUsageEvent(ulong gameID,int eAppUsageEvent,string pchExtraInfo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_TrackAppUsageEvent(m_pSteamUser,gameID,eAppUsageEvent,pchExtraInfo); +} +public override bool GetUserDataFolder(string pchBuffer,int cubBuffer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetUserDataFolder(m_pSteamUser,pchBuffer,cubBuffer); + return result; +} +public override void StartVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StartVoiceRecording(m_pSteamUser); +} +public override void StopVoiceRecording() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_StopVoiceRecording(m_pSteamUser); +} +public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + pcbCompressed = 0; + pcbUncompressed = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + nUncompressBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed,pUncompressedDestBuffer,cbUncompressedDestBufferSize,ref nUncompressBytesWritten,nUncompressedVoiceDesiredSampleRate); + return result; +} +public override uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate) +{ + CheckIfUsable(); + nBytesWritten = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_DecompressVoice(m_pSteamUser,pCompressed,cbCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,nDesiredSampleRate); + return result; +} +public override uint GetVoiceOptimalSampleRate() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(m_pSteamUser); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAuthSessionTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_BeginAuthSession(m_pSteamUser,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_EndAuthSession(m_pSteamUser,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_CancelAuthTicket(m_pSteamUser,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUser_UserHasLicenseForApp(m_pSteamUser,steamID,appID); + return result; +} +public override bool BIsBehindNAT() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsBehindNAT(m_pSteamUser); + return result; +} +public override void AdvertiseGame(ulong steamIDGameServer,uint unIPServer,char usPortServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUser_AdvertiseGame(m_pSteamUser,steamIDGameServer,unIPServer,usPortServer); +} +public override ulong RequestEncryptedAppTicket(IntPtr pDataToInclude,int cbDataToInclude) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestEncryptedAppTicket(m_pSteamUser,pDataToInclude,cbDataToInclude); + return result; +} +public override bool GetEncryptedAppTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUser_GetEncryptedAppTicket(m_pSteamUser,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override int GetGameBadgeLevel(int nSeries,bool bFoil) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetGameBadgeLevel(m_pSteamUser,nSeries,bFoil); + return result; +} +public override int GetPlayerSteamLevel() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUser_GetPlayerSteamLevel(m_pSteamUser); + return result; +} +public override ulong RequestStoreAuthURL(string pchRedirectURL) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestStoreAuthURL(m_pSteamUser,pchRedirectURL); + return result; +} +public override bool BIsPhoneVerified() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneVerified(m_pSteamUser); + return result; +} +public override bool BIsTwoFactorEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsTwoFactorEnabled(m_pSteamUser); + return result; +} +public override bool BIsPhoneIdentifying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneIdentifying(m_pSteamUser); + return result; +} +public override bool BIsPhoneRequiringVerification() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneRequiringVerification(m_pSteamUser); + return result; +} +} + + +public class CSteamFriends : ISteamFriends +{ +public CSteamFriends(IntPtr SteamFriends) +{ + m_pSteamFriends = SteamFriends; +} +IntPtr m_pSteamFriends; + +public override IntPtr GetIntPtr() { return m_pSteamFriends; } + +private void CheckIfUsable() +{ + if (m_pSteamFriends == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override string GetPersonaName() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaName(m_pSteamFriends); + return Marshal.PtrToStringAnsi(result); +} +public override ulong SetPersonaName(string pchPersonaName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_SetPersonaName(m_pSteamFriends,pchPersonaName); + return result; +} +public override uint GetPersonaState() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPersonaState(m_pSteamFriends); + return result; +} +public override int GetFriendCount(int iFriendFlags) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCount(m_pSteamFriends,iFriendFlags); + return result; +} +public override ulong GetFriendByIndex(int iFriend,int iFriendFlags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendByIndex(m_pSteamFriends,iFriend,iFriendFlags); + return result; +} +public override uint GetFriendRelationship(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRelationship(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendPersonaState(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaState(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendPersonaName(ulong steamIDFriend) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaName(m_pSteamFriends,steamIDFriend); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetFriendGamePlayed(ulong steamIDFriend,out FriendGameInfo_t pFriendGameInfo) +{ + CheckIfUsable(); + pFriendGameInfo = new FriendGameInfo_t(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendGamePlayed(m_pSteamFriends,steamIDFriend,ref pFriendGameInfo); + return result; +} +public override string GetFriendPersonaNameHistory(ulong steamIDFriend,int iPersonaName) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendPersonaNameHistory(m_pSteamFriends,steamIDFriend,iPersonaName); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendSteamLevel(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendSteamLevel(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetPlayerNickname(ulong steamIDPlayer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetPlayerNickname(m_pSteamFriends,steamIDPlayer); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupCount(m_pSteamFriends); + return result; +} +public override char GetFriendsGroupIDByIndex(int iFG) +{ + CheckIfUsable(); + char result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex(m_pSteamFriends,iFG); + return result; +} +public override string GetFriendsGroupName(char friendsGroupID) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupName(m_pSteamFriends,friendsGroupID); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendsGroupMembersCount(char friendsGroupID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersCount(m_pSteamFriends,friendsGroupID); + return result; +} +public override void GetFriendsGroupMembersList(char friendsGroupID,out CSteamID [] pOutSteamIDMembers) +{ + CheckIfUsable(); + int nMembersCount = GetFriendsGroupMembersCount (friendsGroupID); + pOutSteamIDMembers = new CSteamID[nMembersCount]; + NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendsGroupMembersList(m_pSteamFriends,friendsGroupID,pOutSteamIDMembers,nMembersCount); +} +public override bool HasFriend(ulong steamIDFriend,int iFriendFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_HasFriend(m_pSteamFriends,steamIDFriend,iFriendFlags); + return result; +} +public override int GetClanCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanCount(m_pSteamFriends); + return result; +} +public override ulong GetClanByIndex(int iClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanByIndex(m_pSteamFriends,iClan); + return result; +} +public override string GetClanName(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanName(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override string GetClanTag(ulong steamIDClan) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanTag(m_pSteamFriends,steamIDClan); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetClanActivityCounts(ulong steamIDClan,ref int pnOnline,ref int pnInGame,ref int pnChatting) +{ + CheckIfUsable(); + pnOnline = 0; + pnInGame = 0; + pnChatting = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanActivityCounts(m_pSteamFriends,steamIDClan,ref pnOnline,ref pnInGame,ref pnChatting); + return result; +} +public override ulong DownloadClanActivityCounts(CSteamID [] psteamIDClans) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_DownloadClanActivityCounts(m_pSteamFriends,psteamIDClans,(int) psteamIDClans.Length); + return result; +} +public override int GetFriendCountFromSource(ulong steamIDSource) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCountFromSource(m_pSteamFriends,steamIDSource); + return result; +} +public override ulong GetFriendFromSourceByIndex(ulong steamIDSource,int iFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendFromSourceByIndex(m_pSteamFriends,steamIDSource,iFriend); + return result; +} +public override bool IsUserInSource(ulong steamIDUser,ulong steamIDSource) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsUserInSource(m_pSteamFriends,steamIDUser,steamIDSource); + return result; +} +public override void SetInGameVoiceSpeaking(ulong steamIDUser,bool bSpeaking) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetInGameVoiceSpeaking(m_pSteamFriends,steamIDUser,bSpeaking); +} +public override void ActivateGameOverlay(string pchDialog) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlay(m_pSteamFriends,pchDialog); +} +public override void ActivateGameOverlayToUser(string pchDialog,ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToUser(m_pSteamFriends,pchDialog,steamID); +} +public override void ActivateGameOverlayToWebPage(string pchURL) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage(m_pSteamFriends,pchURL); +} +public override void ActivateGameOverlayToStore(uint nAppID,char eFlag) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayToStore(m_pSteamFriends,nAppID,eFlag); +} +public override void SetPlayedWith(ulong steamIDUserPlayedWith) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_SetPlayedWith(m_pSteamFriends,steamIDUserPlayedWith); +} +public override void ActivateGameOverlayInviteDialog(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog(m_pSteamFriends,steamIDLobby); +} +public override int GetSmallFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetSmallFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetMediumFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetMediumFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override int GetLargeFriendAvatar(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetLargeFriendAvatar(m_pSteamFriends,steamIDFriend); + return result; +} +public override bool RequestUserInformation(ulong steamIDUser,bool bRequireNameOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestUserInformation(m_pSteamFriends,steamIDUser,bRequireNameOnly); + return result; +} +public override ulong RequestClanOfficerList(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_RequestClanOfficerList(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOwner(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOwner(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanOfficerCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetClanOfficerByIndex(ulong steamIDClan,int iOfficer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanOfficerByIndex(m_pSteamFriends,steamIDClan,iOfficer); + return result; +} +public override uint GetUserRestrictions() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetUserRestrictions(m_pSteamFriends); + return result; +} +public override bool SetRichPresence(string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetRichPresence(m_pSteamFriends,pchKey,pchValue); + return result; +} +public override void ClearRichPresence() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_ClearRichPresence(m_pSteamFriends); +} +public override string GetFriendRichPresence(ulong steamIDFriend,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresence(m_pSteamFriends,steamIDFriend,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override int GetFriendRichPresenceKeyCount(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount(m_pSteamFriends,steamIDFriend); + return result; +} +public override string GetFriendRichPresenceKeyByIndex(ulong steamIDFriend,int iKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex(m_pSteamFriends,steamIDFriend,iKey); + return Marshal.PtrToStringAnsi(result); +} +public override void RequestFriendRichPresence(ulong steamIDFriend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamFriends_RequestFriendRichPresence(m_pSteamFriends,steamIDFriend); +} +public override bool InviteUserToGame(ulong steamIDFriend,string pchConnectString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_InviteUserToGame(m_pSteamFriends,steamIDFriend,pchConnectString); + return result; +} +public override int GetCoplayFriendCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriendCount(m_pSteamFriends); + return result; +} +public override ulong GetCoplayFriend(int iCoplayFriend) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetCoplayFriend(m_pSteamFriends,iCoplayFriend); + return result; +} +public override int GetFriendCoplayTime(ulong steamIDFriend) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayTime(m_pSteamFriends,steamIDFriend); + return result; +} +public override uint GetFriendCoplayGame(ulong steamIDFriend) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendCoplayGame(m_pSteamFriends,steamIDFriend); + return result; +} +public override ulong JoinClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_JoinClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override bool LeaveClanChatRoom(ulong steamIDClan) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_LeaveClanChatRoom(m_pSteamFriends,steamIDClan); + return result; +} +public override int GetClanChatMemberCount(ulong steamIDClan) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMemberCount(m_pSteamFriends,steamIDClan); + return result; +} +public override ulong GetChatMemberByIndex(ulong steamIDClan,int iUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetChatMemberByIndex(m_pSteamFriends,steamIDClan,iUser); + return result; +} +public override bool SendClanChatMessage(ulong steamIDClanChat,string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SendClanChatMessage(m_pSteamFriends,steamIDClanChat,pchText); + return result; +} +public override int GetClanChatMessage(ulong steamIDClanChat,int iMessage,IntPtr prgchText,int cchTextMax,ref uint peChatEntryType,out CSteamID psteamidChatter) +{ + CheckIfUsable(); + peChatEntryType = 0; + psteamidChatter = new CSteamID(); + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetClanChatMessage(m_pSteamFriends,steamIDClanChat,iMessage,prgchText,cchTextMax,ref peChatEntryType,ref psteamidChatter); + return result; +} +public override bool IsClanChatAdmin(ulong steamIDClanChat,ulong steamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatAdmin(m_pSteamFriends,steamIDClanChat,steamIDUser); + return result; +} +public override bool IsClanChatWindowOpenInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool OpenClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_OpenClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool CloseClanChatWindowInSteam(ulong steamIDClanChat) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_CloseClanChatWindowInSteam(m_pSteamFriends,steamIDClanChat); + return result; +} +public override bool SetListenForFriendsMessages(bool bInterceptEnabled) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_SetListenForFriendsMessages(m_pSteamFriends,bInterceptEnabled); + return result; +} +public override bool ReplyToFriendMessage(ulong steamIDFriend,string pchMsgToSend) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamFriends_ReplyToFriendMessage(m_pSteamFriends,steamIDFriend,pchMsgToSend); + return result; +} +public override int GetFriendMessage(ulong steamIDFriend,int iMessageID,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFriendMessage(m_pSteamFriends,steamIDFriend,iMessageID,pvData,cubData,ref peChatEntryType); + return result; +} +public override ulong GetFollowerCount(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_GetFollowerCount(m_pSteamFriends,steamID); + return result; +} +public override ulong IsFollowing(ulong steamID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_IsFollowing(m_pSteamFriends,steamID); + return result; +} +public override ulong EnumerateFollowingList(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamFriends_EnumerateFollowingList(m_pSteamFriends,unStartIndex); + return result; +} +} + + +public class CSteamUtils : ISteamUtils +{ +public CSteamUtils(IntPtr SteamUtils) +{ + m_pSteamUtils = SteamUtils; +} +IntPtr m_pSteamUtils; + +public override IntPtr GetIntPtr() { return m_pSteamUtils; } + +private void CheckIfUsable() +{ + if (m_pSteamUtils == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetSecondsSinceAppActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceAppActive(m_pSteamUtils); + return result; +} +public override uint GetSecondsSinceComputerActive() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSecondsSinceComputerActive(m_pSteamUtils); + return result; +} +public override int GetConnectedUniverse() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetConnectedUniverse(m_pSteamUtils); + return result; +} +public override uint GetServerRealTime() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetServerRealTime(m_pSteamUtils); + return result; +} +public override string GetIPCountry() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCountry(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetImageSize(int iImage,ref uint pnWidth,ref uint pnHeight) +{ + CheckIfUsable(); + pnWidth = 0; + pnHeight = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageSize(m_pSteamUtils,iImage,ref pnWidth,ref pnHeight); + return result; +} +public override bool GetImageRGBA(int iImage,IntPtr pubDest,int nDestBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetImageRGBA(m_pSteamUtils,iImage,pubDest,nDestBufferSize); + return result; +} +public override bool GetCSERIPPort(ref uint unIP,ref char usPort) +{ + CheckIfUsable(); + unIP = 0; + usPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCSERIPPort(m_pSteamUtils,ref unIP,ref usPort); + return result; +} +public override byte GetCurrentBatteryPower() +{ + CheckIfUsable(); + byte result = NativeEntrypoints.SteamAPI_ISteamUtils_GetCurrentBatteryPower(m_pSteamUtils); + return result; +} +public override uint GetAppID() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAppID(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationPosition(uint eNotificationPosition) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationPosition(m_pSteamUtils,eNotificationPosition); +} +public override bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsAPICallCompleted(m_pSteamUtils,hSteamAPICall,ref pbFailed); + return result; +} +public override int GetAPICallFailureReason(ulong hSteamAPICall) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallFailureReason(m_pSteamUtils,hSteamAPICall); + return result; +} +public override bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed) +{ + CheckIfUsable(); + pbFailed = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallResult(m_pSteamUtils,hSteamAPICall,pCallback,cubCallback,iCallbackExpected,ref pbFailed); + return result; +} +public override uint GetIPCCallCount() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetIPCCallCount(m_pSteamUtils); + return result; +} +public override void SetWarningMessageHook(IntPtr pFunction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetWarningMessageHook(m_pSteamUtils,pFunction); +} +public override bool IsOverlayEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsOverlayEnabled(m_pSteamUtils); + return result; +} +public override bool BOverlayNeedsPresent() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_BOverlayNeedsPresent(m_pSteamUtils); + return result; +} +public override ulong CheckFileSignature(string szFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUtils_CheckFileSignature(m_pSteamUtils,szFileName); + return result; +} +public override bool ShowGamepadTextInput(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_ShowGamepadTextInput(m_pSteamUtils,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText); + return result; +} +public override uint GetEnteredGamepadTextLength() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextLength(m_pSteamUtils); + return result; +} +public override bool GetEnteredGamepadTextInput(string pchText,uint cchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(m_pSteamUtils,pchText,cchText); + return result; +} +public override string GetSteamUILanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUtils_GetSteamUILanguage(m_pSteamUtils); + return Marshal.PtrToStringAnsi(result); +} +public override bool IsSteamRunningInVR() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamRunningInVR(m_pSteamUtils); + return result; +} +public override void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationInset(m_pSteamUtils,nHorizontalInset,nVerticalInset); +} +public override bool IsSteamInBigPictureMode() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamInBigPictureMode(m_pSteamUtils); + return result; +} +public override void StartVRDashboard() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); +} +} + + +public class CSteamMatchmaking : ISteamMatchmaking +{ +public CSteamMatchmaking(IntPtr SteamMatchmaking) +{ + m_pSteamMatchmaking = SteamMatchmaking; +} +IntPtr m_pSteamMatchmaking; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmaking; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmaking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override int GetFavoriteGameCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(m_pSteamMatchmaking); + return result; +} +public override bool GetFavoriteGame(int iGame,ref uint pnAppID,ref uint pnIP,ref char pnConnPort,ref char pnQueryPort,ref uint punFlags,ref uint pRTime32LastPlayedOnServer) +{ + CheckIfUsable(); + pnAppID = 0; + pnIP = 0; + pnConnPort = (char) 0; + pnQueryPort = (char) 0; + punFlags = 0; + pRTime32LastPlayedOnServer = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetFavoriteGame(m_pSteamMatchmaking,iGame,ref pnAppID,ref pnIP,ref pnConnPort,ref pnQueryPort,ref punFlags,ref pRTime32LastPlayedOnServer); + return result; +} +public override int AddFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags,uint rTime32LastPlayedOnServer) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags,rTime32LastPlayedOnServer); + return result; +} +public override bool RemoveFavoriteGame(uint nAppID,uint nIP,char nConnPort,char nQueryPort,uint unFlags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RemoveFavoriteGame(m_pSteamMatchmaking,nAppID,nIP,nConnPort,nQueryPort,unFlags); + return result; +} +public override ulong RequestLobbyList() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyList(m_pSteamMatchmaking); + return result; +} +public override void AddRequestLobbyListStringFilter(string pchKeyToMatch,string pchValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter(m_pSteamMatchmaking,pchKeyToMatch,pchValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNumericalFilter(string pchKeyToMatch,int nValueToMatch,uint eComparisonType) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToMatch,eComparisonType); +} +public override void AddRequestLobbyListNearValueFilter(string pchKeyToMatch,int nValueToBeCloseTo) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(m_pSteamMatchmaking,pchKeyToMatch,nValueToBeCloseTo); +} +public override void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(m_pSteamMatchmaking,nSlotsAvailable); +} +public override void AddRequestLobbyListDistanceFilter(uint eLobbyDistanceFilter) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(m_pSteamMatchmaking,eLobbyDistanceFilter); +} +public override void AddRequestLobbyListResultCountFilter(int cMaxResults) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(m_pSteamMatchmaking,cMaxResults); +} +public override void AddRequestLobbyListCompatibleMembersFilter(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(m_pSteamMatchmaking,steamIDLobby); +} +public override ulong GetLobbyByIndex(int iLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyByIndex(m_pSteamMatchmaking,iLobby); + return result; +} +public override ulong CreateLobby(uint eLobbyType,int cMaxMembers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_CreateLobby(m_pSteamMatchmaking,eLobbyType,cMaxMembers); + return result; +} +public override ulong JoinLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_JoinLobby(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void LeaveLobby(ulong steamIDLobby) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_LeaveLobby(m_pSteamMatchmaking,steamIDLobby); +} +public override bool InviteUserToLobby(ulong steamIDLobby,ulong steamIDInvitee) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_InviteUserToLobby(m_pSteamMatchmaking,steamIDLobby,steamIDInvitee); + return result; +} +public override int GetNumLobbyMembers(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetNumLobbyMembers(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override ulong GetLobbyMemberByIndex(ulong steamIDLobby,int iMember) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex(m_pSteamMatchmaking,steamIDLobby,iMember); + return result; +} +public override string GetLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool SetLobbyData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); + return result; +} +public override int GetLobbyDataCount(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataCount(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool GetLobbyDataByIndex(ulong steamIDLobby,int iLobbyData,string pchKey,int cchKeyBufferSize,string pchValue,int cchValueBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex(m_pSteamMatchmaking,steamIDLobby,iLobbyData,pchKey,cchKeyBufferSize,pchValue,cchValueBufferSize); + return result; +} +public override bool DeleteLobbyData(ulong steamIDLobby,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_DeleteLobbyData(m_pSteamMatchmaking,steamIDLobby,pchKey); + return result; +} +public override string GetLobbyMemberData(ulong steamIDLobby,ulong steamIDUser,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,steamIDUser,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override void SetLobbyMemberData(ulong steamIDLobby,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberData(m_pSteamMatchmaking,steamIDLobby,pchKey,pchValue); +} +public override bool SendLobbyChatMsg(ulong steamIDLobby,IntPtr pvMsgBody,int cubMsgBody) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SendLobbyChatMsg(m_pSteamMatchmaking,steamIDLobby,pvMsgBody,cubMsgBody); + return result; +} +public override int GetLobbyChatEntry(ulong steamIDLobby,int iChatID,out CSteamID pSteamIDUser,IntPtr pvData,int cubData,ref uint peChatEntryType) +{ + CheckIfUsable(); + pSteamIDUser = new CSteamID(); + peChatEntryType = 0; + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyChatEntry(m_pSteamMatchmaking,steamIDLobby,iChatID,ref pSteamIDUser,pvData,cubData,ref peChatEntryType); + return result; +} +public override bool RequestLobbyData(ulong steamIDLobby) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_RequestLobbyData(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override void SetLobbyGameServer(ulong steamIDLobby,uint unGameServerIP,char unGameServerPort,ulong steamIDGameServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,unGameServerIP,unGameServerPort,steamIDGameServer); +} +public override bool GetLobbyGameServer(ulong steamIDLobby,ref uint punGameServerIP,ref char punGameServerPort,out CSteamID psteamIDGameServer) +{ + CheckIfUsable(); + punGameServerIP = 0; + punGameServerPort = (char) 0; + psteamIDGameServer = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyGameServer(m_pSteamMatchmaking,steamIDLobby,ref punGameServerIP,ref punGameServerPort,ref psteamIDGameServer); + return result; +} +public override bool SetLobbyMemberLimit(ulong steamIDLobby,int cMaxMembers) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby,cMaxMembers); + return result; +} +public override int GetLobbyMemberLimit(ulong steamIDLobby) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyType(ulong steamIDLobby,uint eLobbyType) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyType(m_pSteamMatchmaking,steamIDLobby,eLobbyType); + return result; +} +public override bool SetLobbyJoinable(ulong steamIDLobby,bool bLobbyJoinable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyJoinable(m_pSteamMatchmaking,steamIDLobby,bLobbyJoinable); + return result; +} +public override ulong GetLobbyOwner(ulong steamIDLobby) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_GetLobbyOwner(m_pSteamMatchmaking,steamIDLobby); + return result; +} +public override bool SetLobbyOwner(ulong steamIDLobby,ulong steamIDNewOwner) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLobbyOwner(m_pSteamMatchmaking,steamIDLobby,steamIDNewOwner); + return result; +} +public override bool SetLinkedLobby(ulong steamIDLobby,ulong steamIDLobbyDependent) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmaking_SetLinkedLobby(m_pSteamMatchmaking,steamIDLobby,steamIDLobbyDependent); + return result; +} +} + + +public class CSteamMatchmakingServerListResponse : ISteamMatchmakingServerListResponse +{ +public CSteamMatchmakingServerListResponse(IntPtr SteamMatchmakingServerListResponse) +{ + m_pSteamMatchmakingServerListResponse = SteamMatchmakingServerListResponse; +} +IntPtr m_pSteamMatchmakingServerListResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServerListResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServerListResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void ServerFailedToRespond(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond(m_pSteamMatchmakingServerListResponse,hRequest,iServer); +} +public override void RefreshComplete(uint hRequest,uint response) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete(m_pSteamMatchmakingServerListResponse,hRequest,response); +} +} + + +public class CSteamMatchmakingPingResponse : ISteamMatchmakingPingResponse +{ +public CSteamMatchmakingPingResponse(IntPtr SteamMatchmakingPingResponse) +{ + m_pSteamMatchmakingPingResponse = SteamMatchmakingPingResponse; +} +IntPtr m_pSteamMatchmakingPingResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPingResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPingResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void ServerResponded(IntPtr server) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerResponded(m_pSteamMatchmakingPingResponse,server); +} +public override void ServerFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond(m_pSteamMatchmakingPingResponse); +} +} + + +public class CSteamMatchmakingPlayersResponse : ISteamMatchmakingPlayersResponse +{ +public CSteamMatchmakingPlayersResponse(IntPtr SteamMatchmakingPlayersResponse) +{ + m_pSteamMatchmakingPlayersResponse = SteamMatchmakingPlayersResponse; +} +IntPtr m_pSteamMatchmakingPlayersResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingPlayersResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingPlayersResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void AddPlayerToList(string pchName,int nScore,float flTimePlayed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList(m_pSteamMatchmakingPlayersResponse,pchName,nScore,flTimePlayed); +} +public override void PlayersFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond(m_pSteamMatchmakingPlayersResponse); +} +public override void PlayersRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete(m_pSteamMatchmakingPlayersResponse); +} +} + + +public class CSteamMatchmakingRulesResponse : ISteamMatchmakingRulesResponse +{ +public CSteamMatchmakingRulesResponse(IntPtr SteamMatchmakingRulesResponse) +{ + m_pSteamMatchmakingRulesResponse = SteamMatchmakingRulesResponse; +} +IntPtr m_pSteamMatchmakingRulesResponse; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingRulesResponse; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingRulesResponse == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void RulesResponded(string pchRule,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded(m_pSteamMatchmakingRulesResponse,pchRule,pchValue); +} +public override void RulesFailedToRespond() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond(m_pSteamMatchmakingRulesResponse); +} +public override void RulesRefreshComplete() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete(m_pSteamMatchmakingRulesResponse); +} +} + + +public class CSteamMatchmakingServers : ISteamMatchmakingServers +{ +public CSteamMatchmakingServers(IntPtr SteamMatchmakingServers) +{ + m_pSteamMatchmakingServers = SteamMatchmakingServers; +} +IntPtr m_pSteamMatchmakingServers; + +public override IntPtr GetIntPtr() { return m_pSteamMatchmakingServers; } + +private void CheckIfUsable() +{ + if (m_pSteamMatchmakingServers == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint RequestInternetServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestInternetServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestLANServerList(uint iApp,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestLANServerList(m_pSteamMatchmakingServers,iApp,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFriendsServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestFavoritesServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestHistoryServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint RequestSpectatorServerList(uint iApp,IntPtr [] ppchFilters,ISteamMatchmakingServerListResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList(m_pSteamMatchmakingServers,iApp,ppchFilters,(uint) ppchFilters.Length,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void ReleaseRequest(uint hServerListRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ReleaseRequest(m_pSteamMatchmakingServers,hServerListRequest); +} +public override gameserveritem_t GetServerDetails(uint hRequest,int iServer) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerDetails(m_pSteamMatchmakingServers,hRequest,iServer); + return (gameserveritem_t) Marshal.PtrToStructure(result, typeof(gameserveritem_t)); +} +public override void CancelQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelQuery(m_pSteamMatchmakingServers,hRequest); +} +public override void RefreshQuery(uint hRequest) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshQuery(m_pSteamMatchmakingServers,hRequest); +} +public override bool IsRefreshing(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_IsRefreshing(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override int GetServerCount(uint hRequest) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_GetServerCount(m_pSteamMatchmakingServers,hRequest); + return result; +} +public override void RefreshServer(uint hRequest,int iServer) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_RefreshServer(m_pSteamMatchmakingServers,hRequest,iServer); +} +public override uint PingServer(uint unIP,char usPort,ISteamMatchmakingPingResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PingServer(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint PlayerDetails(uint unIP,char usPort,ISteamMatchmakingPlayersResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_PlayerDetails(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override uint ServerRules(uint unIP,char usPort,ISteamMatchmakingRulesResponse pRequestServersResponse) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_ServerRules(m_pSteamMatchmakingServers,unIP,usPort,pRequestServersResponse.GetIntPtr()); + return result; +} +public override void CancelServerQuery(uint hServerQuery) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMatchmakingServers_CancelServerQuery(m_pSteamMatchmakingServers,hServerQuery); +} +} + + +public class CSteamRemoteStorage : ISteamRemoteStorage +{ +public CSteamRemoteStorage(IntPtr SteamRemoteStorage) +{ + m_pSteamRemoteStorage = SteamRemoteStorage; +} +IntPtr m_pSteamRemoteStorage; + +public override IntPtr GetIntPtr() { return m_pSteamRemoteStorage; } + +private void CheckIfUsable() +{ + if (m_pSteamRemoteStorage == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool FileWrite(string pchFile,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWrite(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override int FileRead(string pchFile,IntPtr pvData,int cubDataToRead) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileRead(m_pSteamRemoteStorage,pchFile,pvData,cubDataToRead); + return result; +} +public override ulong FileWriteAsync(string pchFile,IntPtr pvData,uint cubData) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteAsync(m_pSteamRemoteStorage,pchFile,pvData,cubData); + return result; +} +public override ulong FileReadAsync(string pchFile,uint nOffset,uint cubToRead) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsync(m_pSteamRemoteStorage,pchFile,nOffset,cubToRead); + return result; +} +public override bool FileReadAsyncComplete(ulong hReadCall,IntPtr pvBuffer,uint cubToRead) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete(m_pSteamRemoteStorage,hReadCall,pvBuffer,cubToRead); + return result; +} +public override bool FileForget(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileForget(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileDelete(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileDelete(m_pSteamRemoteStorage,pchFile); + return result; +} +public override ulong FileShare(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileShare(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool SetSyncPlatforms(string pchFile,uint eRemoteStoragePlatform) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetSyncPlatforms(m_pSteamRemoteStorage,pchFile,eRemoteStoragePlatform); + return result; +} +public override ulong FileWriteStreamOpen(string pchFile) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FileWriteStreamWriteChunk(ulong writeHandle,IntPtr pvData,int cubData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk(m_pSteamRemoteStorage,writeHandle,pvData,cubData); + return result; +} +public override bool FileWriteStreamClose(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamClose(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileWriteStreamCancel(ulong writeHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel(m_pSteamRemoteStorage,writeHandle); + return result; +} +public override bool FileExists(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FileExists(m_pSteamRemoteStorage,pchFile); + return result; +} +public override bool FilePersisted(string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_FilePersisted(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileSize(string pchFile) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileSize(m_pSteamRemoteStorage,pchFile); + return result; +} +public override long GetFileTimestamp(string pchFile) +{ + CheckIfUsable(); + long result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileTimestamp(m_pSteamRemoteStorage,pchFile); + return result; +} +public override uint GetSyncPlatforms(string pchFile) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetSyncPlatforms(m_pSteamRemoteStorage,pchFile); + return result; +} +public override int GetFileCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileCount(m_pSteamRemoteStorage); + return result; +} +public override string GetFileNameAndSize(int iFile,ref int pnFileSizeInBytes) +{ + CheckIfUsable(); + pnFileSizeInBytes = 0; + IntPtr result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetFileNameAndSize(m_pSteamRemoteStorage,iFile,ref pnFileSizeInBytes); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetQuota(ref ulong pnTotalBytes,ref ulong puAvailableBytes) +{ + CheckIfUsable(); + pnTotalBytes = 0; + puAvailableBytes = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetQuota(m_pSteamRemoteStorage,ref pnTotalBytes,ref puAvailableBytes); + return result; +} +public override bool IsCloudEnabledForAccount() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount(m_pSteamRemoteStorage); + return result; +} +public override bool IsCloudEnabledForApp() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp(m_pSteamRemoteStorage); + return result; +} +public override void SetCloudEnabledForApp(bool bEnabled) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp(m_pSteamRemoteStorage,bEnabled); +} +public override ulong UGCDownload(ulong hContent,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownload(m_pSteamRemoteStorage,hContent,unPriority); + return result; +} +public override bool GetUGCDownloadProgress(ulong hContent,ref int pnBytesDownloaded,ref int pnBytesExpected) +{ + CheckIfUsable(); + pnBytesDownloaded = 0; + pnBytesExpected = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress(m_pSteamRemoteStorage,hContent,ref pnBytesDownloaded,ref pnBytesExpected); + return result; +} +public override bool GetUGCDetails(ulong hContent,ref uint pnAppID,System.Text.StringBuilder ppchName,ref int pnFileSizeInBytes,out CSteamID pSteamIDOwner) +{ + CheckIfUsable(); + pnAppID = 0; + pnFileSizeInBytes = 0; + pSteamIDOwner = new CSteamID(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUGCDetails(m_pSteamRemoteStorage,hContent,ref pnAppID,ppchName,ref pnFileSizeInBytes,ref pSteamIDOwner); + return result; +} +public override int UGCRead(ulong hContent,IntPtr pvData,int cubDataToRead,uint cOffset,uint eAction) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCRead(m_pSteamRemoteStorage,hContent,pvData,cubDataToRead,cOffset,eAction); + return result; +} +public override int GetCachedUGCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCCount(m_pSteamRemoteStorage); + return result; +} +public override ulong GetCachedUGCHandle(int iCachedContent) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle(m_pSteamRemoteStorage,iCachedContent); + return result; +} +public override ulong PublishWorkshopFile(string pchFile,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags,uint eWorkshopFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishWorkshopFile(m_pSteamRemoteStorage,pchFile,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags,eWorkshopFileType); + return result; +} +public override ulong CreatePublishedFileUpdateRequest(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileFile(ulong updateHandle,string pchFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile(m_pSteamRemoteStorage,updateHandle,pchFile); + return result; +} +public override bool UpdatePublishedFilePreviewFile(ulong updateHandle,string pchPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile(m_pSteamRemoteStorage,updateHandle,pchPreviewFile); + return result; +} +public override bool UpdatePublishedFileTitle(ulong updateHandle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle(m_pSteamRemoteStorage,updateHandle,pchTitle); + return result; +} +public override bool UpdatePublishedFileDescription(ulong updateHandle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription(m_pSteamRemoteStorage,updateHandle,pchDescription); + return result; +} +public override bool UpdatePublishedFileVisibility(ulong updateHandle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility(m_pSteamRemoteStorage,updateHandle,eVisibility); + return result; +} +public override bool UpdatePublishedFileTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags(m_pSteamRemoteStorage,updateHandle,ref pTags); + return result; +} +public override ulong CommitPublishedFileUpdate(ulong updateHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate(m_pSteamRemoteStorage,updateHandle); + return result; +} +public override ulong GetPublishedFileDetails(ulong unPublishedFileId,uint unMaxSecondsOld) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails(m_pSteamRemoteStorage,unPublishedFileId,unMaxSecondsOld); + return result; +} +public override ulong DeletePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_DeletePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserPublishedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong SubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSubscribedFiles(uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles(m_pSteamRemoteStorage,unStartIndex); + return result; +} +public override ulong UnsubscribePublishedFile(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override bool UpdatePublishedFileSetChangeDescription(ulong updateHandle,string pchChangeDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(m_pSteamRemoteStorage,updateHandle,pchChangeDescription); + return result; +} +public override ulong GetPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong UpdateUserPublishedItemVote(ulong unPublishedFileId,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote(m_pSteamRemoteStorage,unPublishedFileId,bVoteUp); + return result; +} +public override ulong GetUserPublishedItemVoteDetails(ulong unPublishedFileId) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails(m_pSteamRemoteStorage,unPublishedFileId); + return result; +} +public override ulong EnumerateUserSharedWorkshopFiles(ulong steamId,uint unStartIndex,ref SteamParamStringArray_t pRequiredTags,ref SteamParamStringArray_t pExcludedTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(m_pSteamRemoteStorage,steamId,unStartIndex,ref pRequiredTags,ref pExcludedTags); + return result; +} +public override ulong PublishVideo(uint eVideoProvider,string pchVideoAccount,string pchVideoIdentifier,string pchPreviewFile,uint nConsumerAppId,string pchTitle,string pchDescription,uint eVisibility,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_PublishVideo(m_pSteamRemoteStorage,eVideoProvider,pchVideoAccount,pchVideoIdentifier,pchPreviewFile,nConsumerAppId,pchTitle,pchDescription,eVisibility,ref pTags); + return result; +} +public override ulong SetUserPublishedFileAction(ulong unPublishedFileId,uint eAction) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction(m_pSteamRemoteStorage,unPublishedFileId,eAction); + return result; +} +public override ulong EnumeratePublishedFilesByUserAction(uint eAction,uint unStartIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(m_pSteamRemoteStorage,eAction,unStartIndex); + return result; +} +public override ulong EnumeratePublishedWorkshopFiles(uint eEnumerationType,uint unStartIndex,uint unCount,uint unDays,ref SteamParamStringArray_t pTags,ref SteamParamStringArray_t pUserTags) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(m_pSteamRemoteStorage,eEnumerationType,unStartIndex,unCount,unDays,ref pTags,ref pUserTags); + return result; +} +public override ulong UGCDownloadToLocation(ulong hContent,string pchLocation,uint unPriority) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation(m_pSteamRemoteStorage,hContent,pchLocation,unPriority); + return result; +} +} + + +public class CSteamUserStats : ISteamUserStats +{ +public CSteamUserStats(IntPtr SteamUserStats) +{ + m_pSteamUserStats = SteamUserStats; +} +IntPtr m_pSteamUserStats; + +public override IntPtr GetIntPtr() { return m_pSteamUserStats; } + +private void CheckIfUsable() +{ + if (m_pSteamUserStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RequestCurrentStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestCurrentStats(m_pSteamUserStats); + return result; +} +public override bool GetStat(string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool GetStat0(string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetStat0(m_pSteamUserStats,pchName,ref pData); + return result; +} +public override bool SetStat(string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat(m_pSteamUserStats,pchName,nData); + return result; +} +public override bool SetStat0(string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetStat0(m_pSteamUserStats,pchName,fData); + return result; +} +public override bool UpdateAvgRateStat(string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_UpdateAvgRateStat(m_pSteamUserStats,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool GetAchievement(string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievement(m_pSteamUserStats,pchName,ref pbAchieved); + return result; +} +public override bool SetAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_SetAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool ClearAchievement(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ClearAchievement(m_pSteamUserStats,pchName); + return result; +} +public override bool GetAchievementAndUnlockTime(string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime(m_pSteamUserStats,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool StoreStats() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_StoreStats(m_pSteamUserStats); + return result; +} +public override int GetAchievementIcon(string pchName) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementIcon(m_pSteamUserStats,pchName); + return result; +} +public override string GetAchievementDisplayAttribute(string pchName,string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute(m_pSteamUserStats,pchName,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool IndicateAchievementProgress(string pchName,uint nCurProgress,uint nMaxProgress) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_IndicateAchievementProgress(m_pSteamUserStats,pchName,nCurProgress,nMaxProgress); + return result; +} +public override uint GetNumAchievements() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumAchievements(m_pSteamUserStats); + return result; +} +public override string GetAchievementName(uint iAchievement) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementName(m_pSteamUserStats,iAchievement); + return Marshal.PtrToStringAnsi(result); +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestUserStats(m_pSteamUserStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserStat0(m_pSteamUserStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievement(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool GetUserAchievementAndUnlockTime(ulong steamIDUser,string pchName,ref bool pbAchieved,ref uint punUnlockTime) +{ + CheckIfUsable(); + pbAchieved = false; + punUnlockTime = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime(m_pSteamUserStats,steamIDUser,pchName,ref pbAchieved,ref punUnlockTime); + return result; +} +public override bool ResetAllStats(bool bAchievementsToo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_ResetAllStats(m_pSteamUserStats,bAchievementsToo); + return result; +} +public override ulong FindOrCreateLeaderboard(string pchLeaderboardName,uint eLeaderboardSortMethod,uint eLeaderboardDisplayType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindOrCreateLeaderboard(m_pSteamUserStats,pchLeaderboardName,eLeaderboardSortMethod,eLeaderboardDisplayType); + return result; +} +public override ulong FindLeaderboard(string pchLeaderboardName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_FindLeaderboard(m_pSteamUserStats,pchLeaderboardName); + return result; +} +public override string GetLeaderboardName(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardName(m_pSteamUserStats,hSteamLeaderboard); + return Marshal.PtrToStringAnsi(result); +} +public override int GetLeaderboardEntryCount(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardEntryCount(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardSortMethod(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardSortMethod(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override uint GetLeaderboardDisplayType(ulong hSteamLeaderboard) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetLeaderboardDisplayType(m_pSteamUserStats,hSteamLeaderboard); + return result; +} +public override ulong DownloadLeaderboardEntries(ulong hSteamLeaderboard,uint eLeaderboardDataRequest,int nRangeStart,int nRangeEnd) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntries(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardDataRequest,nRangeStart,nRangeEnd); + return result; +} +public override ulong DownloadLeaderboardEntriesForUsers(ulong hSteamLeaderboard,CSteamID [] prgUsers) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers(m_pSteamUserStats,hSteamLeaderboard,prgUsers,(int) prgUsers.Length); + return result; +} +public override bool GetDownloadedLeaderboardEntry(ulong hSteamLeaderboardEntries,int index,ref LeaderboardEntry_t pLeaderboardEntry,ref int pDetails,int cDetailsMax) +{ + CheckIfUsable(); + pDetails = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry(m_pSteamUserStats,hSteamLeaderboardEntries,index,ref pLeaderboardEntry,ref pDetails,cDetailsMax); + return result; +} +public override ulong UploadLeaderboardScore(ulong hSteamLeaderboard,uint eLeaderboardUploadScoreMethod,int nScore,ref int pScoreDetails,int cScoreDetailsCount) +{ + CheckIfUsable(); + pScoreDetails = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_UploadLeaderboardScore(m_pSteamUserStats,hSteamLeaderboard,eLeaderboardUploadScoreMethod,nScore,ref pScoreDetails,cScoreDetailsCount); + return result; +} +public override ulong AttachLeaderboardUGC(ulong hSteamLeaderboard,ulong hUGC) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_AttachLeaderboardUGC(m_pSteamUserStats,hSteamLeaderboard,hUGC); + return result; +} +public override ulong GetNumberOfCurrentPlayers() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers(m_pSteamUserStats); + return result; +} +public override ulong RequestGlobalAchievementPercentages() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages(m_pSteamUserStats); + return result; +} +public override int GetMostAchievedAchievementInfo(string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo(m_pSteamUserStats,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override int GetNextMostAchievedAchievementInfo(int iIteratorPrevious,string pchName,uint unNameBufLen,ref float pflPercent,ref bool pbAchieved) +{ + CheckIfUsable(); + pflPercent = 0; + pbAchieved = false; + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo(m_pSteamUserStats,iIteratorPrevious,pchName,unNameBufLen,ref pflPercent,ref pbAchieved); + return result; +} +public override bool GetAchievementAchievedPercent(string pchName,ref float pflPercent) +{ + CheckIfUsable(); + pflPercent = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetAchievementAchievedPercent(m_pSteamUserStats,pchName,ref pflPercent); + return result; +} +public override ulong RequestGlobalStats(int nHistoryDays) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUserStats_RequestGlobalStats(m_pSteamUserStats,nHistoryDays); + return result; +} +public override bool GetGlobalStat(string pchStatName,ref long pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override bool GetGlobalStat0(string pchStatName,ref double pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStat0(m_pSteamUserStats,pchStatName,ref pData); + return result; +} +public override int GetGlobalStatHistory(string pchStatName,long [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +public override int GetGlobalStatHistory0(string pchStatName,double [] pData) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamUserStats_GetGlobalStatHistory0(m_pSteamUserStats,pchStatName,pData,(uint) pData.Length); + return result; +} +} + + +public class CSteamApps : ISteamApps +{ +public CSteamApps(IntPtr SteamApps) +{ + m_pSteamApps = SteamApps; +} +IntPtr m_pSteamApps; + +public override IntPtr GetIntPtr() { return m_pSteamApps; } + +private void CheckIfUsable() +{ + if (m_pSteamApps == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsSubscribed() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribed(m_pSteamApps); + return result; +} +public override bool BIsLowViolence() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsLowViolence(m_pSteamApps); + return result; +} +public override bool BIsCybercafe() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsCybercafe(m_pSteamApps); + return result; +} +public override bool BIsVACBanned() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsVACBanned(m_pSteamApps); + return result; +} +public override string GetCurrentGameLanguage() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentGameLanguage(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override string GetAvailableGameLanguages() +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetAvailableGameLanguages(m_pSteamApps); + return Marshal.PtrToStringAnsi(result); +} +public override bool BIsSubscribedApp(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedApp(m_pSteamApps,appID); + return result; +} +public override bool BIsDlcInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsDlcInstalled(m_pSteamApps,appID); + return result; +} +public override uint GetEarliestPurchaseUnixTime(uint nAppID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime(m_pSteamApps,nAppID); + return result; +} +public override bool BIsSubscribedFromFreeWeekend() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend(m_pSteamApps); + return result; +} +public override int GetDLCCount() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetDLCCount(m_pSteamApps); + return result; +} +public override bool BGetDLCDataByIndex(int iDLC,ref uint pAppID,ref bool pbAvailable,string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + pAppID = 0; + pbAvailable = false; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BGetDLCDataByIndex(m_pSteamApps,iDLC,ref pAppID,ref pbAvailable,pchName,cchNameBufferSize); + return result; +} +public override void InstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_InstallDLC(m_pSteamApps,nAppID); +} +public override void UninstallDLC(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_UninstallDLC(m_pSteamApps,nAppID); +} +public override void RequestAppProofOfPurchaseKey(uint nAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey(m_pSteamApps,nAppID); +} +public override bool GetCurrentBetaName(string pchName,int cchNameBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetCurrentBetaName(m_pSteamApps,pchName,cchNameBufferSize); + return result; +} +public override bool MarkContentCorrupt(bool bMissingFilesOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_MarkContentCorrupt(m_pSteamApps,bMissingFilesOnly); + return result; +} +public override uint GetInstalledDepots(uint appID,ref uint pvecDepots,uint cMaxDepots) +{ + CheckIfUsable(); + pvecDepots = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetInstalledDepots(m_pSteamApps,appID,ref pvecDepots,cMaxDepots); + return result; +} +public override uint GetAppInstallDir(uint appID,string pchFolder,uint cchFolderBufferSize) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppInstallDir(m_pSteamApps,appID,pchFolder,cchFolderBufferSize); + return result; +} +public override bool BIsAppInstalled(uint appID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamApps_BIsAppInstalled(m_pSteamApps,appID); + return result; +} +public override ulong GetAppOwner() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppOwner(m_pSteamApps); + return result; +} +public override string GetLaunchQueryParam(string pchKey) +{ + CheckIfUsable(); + IntPtr result = NativeEntrypoints.SteamAPI_ISteamApps_GetLaunchQueryParam(m_pSteamApps,pchKey); + return Marshal.PtrToStringAnsi(result); +} +public override bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamApps_GetDlcDownloadProgress(m_pSteamApps,nAppID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override int GetAppBuildId() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppBuildId(m_pSteamApps); + return result; +} +public override void RequestAllProofOfPurchaseKeys() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(m_pSteamApps); +} +public override ulong GetFileDetails(string pszFileName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamApps_GetFileDetails(m_pSteamApps,pszFileName); + return result; +} +} + + +public class CSteamNetworking : ISteamNetworking +{ +public CSteamNetworking(IntPtr SteamNetworking) +{ + m_pSteamNetworking = SteamNetworking; +} +IntPtr m_pSteamNetworking; + +public override IntPtr GetIntPtr() { return m_pSteamNetworking; } + +private void CheckIfUsable() +{ + if (m_pSteamNetworking == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool SendP2PPacket(ulong steamIDRemote,IntPtr pubData,uint cubData,uint eP2PSendType,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendP2PPacket(m_pSteamNetworking,steamIDRemote,pubData,cubData,eP2PSendType,nChannel); + return result; +} +public override bool IsP2PPacketAvailable(ref uint pcubMsgSize,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsP2PPacketAvailable(m_pSteamNetworking,ref pcubMsgSize,nChannel); + return result; +} +public override bool ReadP2PPacket(IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref CSteamID psteamIDRemote,int nChannel) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_ReadP2PPacket(m_pSteamNetworking,pubDest,cubDest,ref pcubMsgSize,ref psteamIDRemote,nChannel); + return result; +} +public override bool AcceptP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PSessionWithUser(ulong steamIDRemote) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PSessionWithUser(m_pSteamNetworking,steamIDRemote); + return result; +} +public override bool CloseP2PChannelWithUser(ulong steamIDRemote,int nChannel) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_CloseP2PChannelWithUser(m_pSteamNetworking,steamIDRemote,nChannel); + return result; +} +public override bool GetP2PSessionState(ulong steamIDRemote,ref P2PSessionState_t pConnectionState) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetP2PSessionState(m_pSteamNetworking,steamIDRemote,ref pConnectionState); + return result; +} +public override bool AllowP2PPacketRelay(bool bAllow) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_AllowP2PPacketRelay(m_pSteamNetworking,bAllow); + return result; +} +public override uint CreateListenSocket(int nVirtualP2PPort,uint nIP,char nPort,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateListenSocket(m_pSteamNetworking,nVirtualP2PPort,nIP,nPort,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateP2PConnectionSocket(ulong steamIDTarget,int nVirtualPort,int nTimeoutSec,bool bAllowUseOfPacketRelay) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateP2PConnectionSocket(m_pSteamNetworking,steamIDTarget,nVirtualPort,nTimeoutSec,bAllowUseOfPacketRelay); + return result; +} +public override uint CreateConnectionSocket(uint nIP,char nPort,int nTimeoutSec) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_CreateConnectionSocket(m_pSteamNetworking,nIP,nPort,nTimeoutSec); + return result; +} +public override bool DestroySocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroySocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool DestroyListenSocket(uint hSocket,bool bNotifyRemoteEnd) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_DestroyListenSocket(m_pSteamNetworking,hSocket,bNotifyRemoteEnd); + return result; +} +public override bool SendDataOnSocket(uint hSocket,IntPtr pubData,uint cubData,bool bReliable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_SendDataOnSocket(m_pSteamNetworking,hSocket,pubData,cubData,bReliable); + return result; +} +public override bool IsDataAvailableOnSocket(uint hSocket,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailableOnSocket(m_pSteamNetworking,hSocket,ref pcubMsgSize); + return result; +} +public override bool RetrieveDataFromSocket(uint hSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize) +{ + CheckIfUsable(); + pcubMsgSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveDataFromSocket(m_pSteamNetworking,hSocket,pubDest,cubDest,ref pcubMsgSize); + return result; +} +public override bool IsDataAvailable(uint hListenSocket,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_IsDataAvailable(m_pSteamNetworking,hListenSocket,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool RetrieveData(uint hListenSocket,IntPtr pubDest,uint cubDest,ref uint pcubMsgSize,ref uint phSocket) +{ + CheckIfUsable(); + pcubMsgSize = 0; + phSocket = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_RetrieveData(m_pSteamNetworking,hListenSocket,pubDest,cubDest,ref pcubMsgSize,ref phSocket); + return result; +} +public override bool GetSocketInfo(uint hSocket,ref CSteamID pSteamIDRemote,ref int peSocketStatus,ref uint punIPRemote,ref char punPortRemote) +{ + CheckIfUsable(); + peSocketStatus = 0; + punIPRemote = 0; + punPortRemote = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketInfo(m_pSteamNetworking,hSocket,ref pSteamIDRemote,ref peSocketStatus,ref punIPRemote,ref punPortRemote); + return result; +} +public override bool GetListenSocketInfo(uint hListenSocket,ref uint pnIP,ref char pnPort) +{ + CheckIfUsable(); + pnIP = 0; + pnPort = (char) 0; + bool result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetListenSocketInfo(m_pSteamNetworking,hListenSocket,ref pnIP,ref pnPort); + return result; +} +public override uint GetSocketConnectionType(uint hSocket) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetSocketConnectionType(m_pSteamNetworking,hSocket); + return result; +} +public override int GetMaxPacketSize(uint hSocket) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamNetworking_GetMaxPacketSize(m_pSteamNetworking,hSocket); + return result; +} +} + + +public class CSteamScreenshots : ISteamScreenshots +{ +public CSteamScreenshots(IntPtr SteamScreenshots) +{ + m_pSteamScreenshots = SteamScreenshots; +} +IntPtr m_pSteamScreenshots; + +public override IntPtr GetIntPtr() { return m_pSteamScreenshots; } + +private void CheckIfUsable() +{ + if (m_pSteamScreenshots == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint WriteScreenshot(IntPtr pubRGB,uint cubRGB,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_WriteScreenshot(m_pSteamScreenshots,pubRGB,cubRGB,nWidth,nHeight); + return result; +} +public override uint AddScreenshotToLibrary(string pchFilename,string pchThumbnailFilename,int nWidth,int nHeight) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddScreenshotToLibrary(m_pSteamScreenshots,pchFilename,pchThumbnailFilename,nWidth,nHeight); + return result; +} +public override void TriggerScreenshot() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_TriggerScreenshot(m_pSteamScreenshots); +} +public override void HookScreenshots(bool bHook) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamScreenshots_HookScreenshots(m_pSteamScreenshots,bHook); +} +public override bool SetLocation(uint hScreenshot,string pchLocation) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_SetLocation(m_pSteamScreenshots,hScreenshot,pchLocation); + return result; +} +public override bool TagUser(uint hScreenshot,ulong steamID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagUser(m_pSteamScreenshots,hScreenshot,steamID); + return result; +} +public override bool TagPublishedFile(uint hScreenshot,ulong unPublishedFileID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_TagPublishedFile(m_pSteamScreenshots,hScreenshot,unPublishedFileID); + return result; +} +public override bool IsScreenshotsHooked() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamScreenshots_IsScreenshotsHooked(m_pSteamScreenshots); + return result; +} +public override uint AddVRScreenshotToLibrary(uint eType,string pchFilename,string pchVRFilename) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary(m_pSteamScreenshots,eType,pchFilename,pchVRFilename); + return result; +} +} + + +public class CSteamMusic : ISteamMusic +{ +public CSteamMusic(IntPtr SteamMusic) +{ + m_pSteamMusic = SteamMusic; +} +IntPtr m_pSteamMusic; + +public override IntPtr GetIntPtr() { return m_pSteamMusic; } + +private void CheckIfUsable() +{ + if (m_pSteamMusic == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool BIsEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsEnabled(m_pSteamMusic); + return result; +} +public override bool BIsPlaying() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusic_BIsPlaying(m_pSteamMusic); + return result; +} +public override int GetPlaybackStatus() +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamMusic_GetPlaybackStatus(m_pSteamMusic); + return result; +} +public override void Play() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Play(m_pSteamMusic); +} +public override void Pause() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_Pause(m_pSteamMusic); +} +public override void PlayPrevious() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayPrevious(m_pSteamMusic); +} +public override void PlayNext() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_PlayNext(m_pSteamMusic); +} +public override void SetVolume(float flVolume) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamMusic_SetVolume(m_pSteamMusic,flVolume); +} +public override float GetVolume() +{ + CheckIfUsable(); + float result = NativeEntrypoints.SteamAPI_ISteamMusic_GetVolume(m_pSteamMusic); + return result; +} +} + + +public class CSteamMusicRemote : ISteamMusicRemote +{ +public CSteamMusicRemote(IntPtr SteamMusicRemote) +{ + m_pSteamMusicRemote = SteamMusicRemote; +} +IntPtr m_pSteamMusicRemote; + +public override IntPtr GetIntPtr() { return m_pSteamMusicRemote; } + +private void CheckIfUsable() +{ + if (m_pSteamMusicRemote == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool RegisterSteamMusicRemote(string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote(m_pSteamMusicRemote,pchName); + return result; +} +public override bool DeregisterSteamMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BIsCurrentMusicRemote() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote(m_pSteamMusicRemote); + return result; +} +public override bool BActivationSuccess(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_BActivationSuccess(m_pSteamMusicRemote,bValue); + return result; +} +public override bool SetDisplayName(string pchDisplayName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetDisplayName(m_pSteamMusicRemote,pchDisplayName); + return result; +} +public override bool SetPNGIcon_64x64(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool EnablePlayPrevious(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayPrevious(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlayNext(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlayNext(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnableQueue(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnableQueue(m_pSteamMusicRemote,bValue); + return result; +} +public override bool EnablePlaylists(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_EnablePlaylists(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdatePlaybackStatus(int nStatus) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus(m_pSteamMusicRemote,nStatus); + return result; +} +public override bool UpdateShuffled(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateShuffled(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateLooped(bool bValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateLooped(m_pSteamMusicRemote,bValue); + return result; +} +public override bool UpdateVolume(float flValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateVolume(m_pSteamMusicRemote,flValue); + return result; +} +public override bool CurrentEntryWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryWillChange(m_pSteamMusicRemote); + return result; +} +public override bool CurrentEntryIsAvailable(bool bAvailable) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable(m_pSteamMusicRemote,bAvailable); + return result; +} +public override bool UpdateCurrentEntryText(string pchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText(m_pSteamMusicRemote,pchText); + return result; +} +public override bool UpdateCurrentEntryElapsedSeconds(int nValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(m_pSteamMusicRemote,nValue); + return result; +} +public override bool UpdateCurrentEntryCoverArt(IntPtr pvBuffer,uint cbBufferLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt(m_pSteamMusicRemote,pvBuffer,cbBufferLength); + return result; +} +public override bool CurrentEntryDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_CurrentEntryDidChange(m_pSteamMusicRemote); + return result; +} +public override bool QueueWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetQueueEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetQueueEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetQueueEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetQueueEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentQueueEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool QueueDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_QueueDidChange(m_pSteamMusicRemote); + return result; +} +public override bool PlaylistWillChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistWillChange(m_pSteamMusicRemote); + return result; +} +public override bool ResetPlaylistEntries() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_ResetPlaylistEntries(m_pSteamMusicRemote); + return result; +} +public override bool SetPlaylistEntry(int nID,int nPosition,string pchEntryText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetPlaylistEntry(m_pSteamMusicRemote,nID,nPosition,pchEntryText); + return result; +} +public override bool SetCurrentPlaylistEntry(int nID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry(m_pSteamMusicRemote,nID); + return result; +} +public override bool PlaylistDidChange() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamMusicRemote_PlaylistDidChange(m_pSteamMusicRemote); + return result; +} +} + + +public class CSteamHTTP : ISteamHTTP +{ +public CSteamHTTP(IntPtr SteamHTTP) +{ + m_pSteamHTTP = SteamHTTP; +} +IntPtr m_pSteamHTTP; + +public override IntPtr GetIntPtr() { return m_pSteamHTTP; } + +private void CheckIfUsable() +{ + if (m_pSteamHTTP == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint CreateHTTPRequest(uint eHTTPRequestMethod,string pchAbsoluteURL) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateHTTPRequest(m_pSteamHTTP,eHTTPRequestMethod,pchAbsoluteURL); + return result; +} +public override bool SetHTTPRequestContextValue(uint hRequest,ulong ulContextValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestContextValue(m_pSteamHTTP,hRequest,ulContextValue); + return result; +} +public override bool SetHTTPRequestNetworkActivityTimeout(uint hRequest,uint unTimeoutSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(m_pSteamHTTP,hRequest,unTimeoutSeconds); + return result; +} +public override bool SetHTTPRequestHeaderValue(uint hRequest,string pchHeaderName,string pchHeaderValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pchHeaderValue); + return result; +} +public override bool SetHTTPRequestGetOrPostParameter(uint hRequest,string pchParamName,string pchParamValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter(m_pSteamHTTP,hRequest,pchParamName,pchParamValue); + return result; +} +public override bool SendHTTPRequest(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequest(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool SendHTTPRequestAndStreamResponse(uint hRequest,ref ulong pCallHandle) +{ + CheckIfUsable(); + pCallHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse(m_pSteamHTTP,hRequest,ref pCallHandle); + return result; +} +public override bool DeferHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_DeferHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool PrioritizeHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_PrioritizeHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPResponseHeaderSize(uint hRequest,string pchHeaderName,ref uint unResponseHeaderSize) +{ + CheckIfUsable(); + unResponseHeaderSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize(m_pSteamHTTP,hRequest,pchHeaderName,ref unResponseHeaderSize); + return result; +} +public override bool GetHTTPResponseHeaderValue(uint hRequest,string pchHeaderName,IntPtr pHeaderValueBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue(m_pSteamHTTP,hRequest,pchHeaderName,pHeaderValueBuffer,unBufferSize); + return result; +} +public override bool GetHTTPResponseBodySize(uint hRequest,ref uint unBodySize) +{ + CheckIfUsable(); + unBodySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodySize(m_pSteamHTTP,hRequest,ref unBodySize); + return result; +} +public override bool GetHTTPResponseBodyData(uint hRequest,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPResponseBodyData(m_pSteamHTTP,hRequest,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool GetHTTPStreamingResponseBodyData(uint hRequest,uint cOffset,IntPtr pBodyDataBuffer,uint unBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData(m_pSteamHTTP,hRequest,cOffset,pBodyDataBuffer,unBufferSize); + return result; +} +public override bool ReleaseHTTPRequest(uint hRequest) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseHTTPRequest(m_pSteamHTTP,hRequest); + return result; +} +public override bool GetHTTPDownloadProgressPct(uint hRequest,ref float pflPercentOut) +{ + CheckIfUsable(); + pflPercentOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct(m_pSteamHTTP,hRequest,ref pflPercentOut); + return result; +} +public override bool SetHTTPRequestRawPostBody(uint hRequest,string pchContentType,IntPtr pubBody,uint unBodyLen) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody(m_pSteamHTTP,hRequest,pchContentType,pubBody,unBodyLen); + return result; +} +public override uint CreateCookieContainer(bool bAllowResponsesToModify) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamHTTP_CreateCookieContainer(m_pSteamHTTP,bAllowResponsesToModify); + return result; +} +public override bool ReleaseCookieContainer(uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_ReleaseCookieContainer(m_pSteamHTTP,hCookieContainer); + return result; +} +public override bool SetCookie(uint hCookieContainer,string pchHost,string pchUrl,string pchCookie) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetCookie(m_pSteamHTTP,hCookieContainer,pchHost,pchUrl,pchCookie); + return result; +} +public override bool SetHTTPRequestCookieContainer(uint hRequest,uint hCookieContainer) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer(m_pSteamHTTP,hRequest,hCookieContainer); + return result; +} +public override bool SetHTTPRequestUserAgentInfo(uint hRequest,string pchUserAgentInfo) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo(m_pSteamHTTP,hRequest,pchUserAgentInfo); + return result; +} +public override bool SetHTTPRequestRequiresVerifiedCertificate(uint hRequest,bool bRequireVerifiedCertificate) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(m_pSteamHTTP,hRequest,bRequireVerifiedCertificate); + return result; +} +public override bool SetHTTPRequestAbsoluteTimeoutMS(uint hRequest,uint unMilliseconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(m_pSteamHTTP,hRequest,unMilliseconds); + return result; +} +public override bool GetHTTPRequestWasTimedOut(uint hRequest,ref bool pbWasTimedOut) +{ + CheckIfUsable(); + pbWasTimedOut = false; + bool result = NativeEntrypoints.SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut(m_pSteamHTTP,hRequest,ref pbWasTimedOut); + return result; +} +} + + +public class CSteamUnifiedMessages : ISteamUnifiedMessages +{ +public CSteamUnifiedMessages(IntPtr SteamUnifiedMessages) +{ + m_pSteamUnifiedMessages = SteamUnifiedMessages; +} +IntPtr m_pSteamUnifiedMessages; + +public override IntPtr GetIntPtr() { return m_pSteamUnifiedMessages; } + +private void CheckIfUsable() +{ + if (m_pSteamUnifiedMessages == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong SendMethod(string pchServiceMethod,IntPtr pRequestBuffer,uint unRequestBufferSize,ulong unContext) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendMethod(m_pSteamUnifiedMessages,pchServiceMethod,pRequestBuffer,unRequestBufferSize,unContext); + return result; +} +public override bool GetMethodResponseInfo(ulong hHandle,ref uint punResponseSize,ref uint peResult) +{ + CheckIfUsable(); + punResponseSize = 0; + peResult = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseInfo(m_pSteamUnifiedMessages,hHandle,ref punResponseSize,ref peResult); + return result; +} +public override bool GetMethodResponseData(ulong hHandle,IntPtr pResponseBuffer,uint unResponseBufferSize,bool bAutoRelease) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_GetMethodResponseData(m_pSteamUnifiedMessages,hHandle,pResponseBuffer,unResponseBufferSize,bAutoRelease); + return result; +} +public override bool ReleaseMethod(ulong hHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_ReleaseMethod(m_pSteamUnifiedMessages,hHandle); + return result; +} +public override bool SendNotification(string pchServiceNotification,IntPtr pNotificationBuffer,uint unNotificationBufferSize) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUnifiedMessages_SendNotification(m_pSteamUnifiedMessages,pchServiceNotification,pNotificationBuffer,unNotificationBufferSize); + return result; +} +} + + +public class CSteamController : ISteamController +{ +public CSteamController(IntPtr SteamController) +{ + m_pSteamController = SteamController; +} +IntPtr m_pSteamController; + +public override IntPtr GetIntPtr() { return m_pSteamController; } + +private void CheckIfUsable() +{ + if (m_pSteamController == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Init(m_pSteamController); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_Shutdown(m_pSteamController); + return result; +} +public override void RunFrame() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_RunFrame(m_pSteamController); +} +public override int GetConnectedControllers(ref ulong handlesOut) +{ + CheckIfUsable(); + handlesOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetConnectedControllers(m_pSteamController,ref handlesOut); + return result; +} +public override bool ShowBindingPanel(ulong controllerHandle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowBindingPanel(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetActionSetHandle(string pszActionSetName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetActionSetHandle(m_pSteamController,pszActionSetName); + return result; +} +public override void ActivateActionSet(ulong controllerHandle,ulong actionSetHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_ActivateActionSet(m_pSteamController,controllerHandle,actionSetHandle); +} +public override ulong GetCurrentActionSet(ulong controllerHandle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetCurrentActionSet(m_pSteamController,controllerHandle); + return result; +} +public override ulong GetDigitalActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerDigitalActionData_t GetDigitalActionData(ulong controllerHandle,ulong digitalActionHandle) +{ + CheckIfUsable(); + ControllerDigitalActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionData(m_pSteamController,controllerHandle,digitalActionHandle); + return result; +} +public override int GetDigitalActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong digitalActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetDigitalActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,digitalActionHandle,ref originsOut); + return result; +} +public override ulong GetAnalogActionHandle(string pszActionName) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionHandle(m_pSteamController,pszActionName); + return result; +} +public override ControllerAnalogActionData_t GetAnalogActionData(ulong controllerHandle,ulong analogActionHandle) +{ + CheckIfUsable(); + ControllerAnalogActionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionData(m_pSteamController,controllerHandle,analogActionHandle); + return result; +} +public override int GetAnalogActionOrigins(ulong controllerHandle,ulong actionSetHandle,ulong analogActionHandle,ref uint originsOut) +{ + CheckIfUsable(); + originsOut = 0; + int result = NativeEntrypoints.SteamAPI_ISteamController_GetAnalogActionOrigins(m_pSteamController,controllerHandle,actionSetHandle,analogActionHandle,ref originsOut); + return result; +} +public override void StopAnalogActionMomentum(ulong controllerHandle,ulong eAction) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_StopAnalogActionMomentum(m_pSteamController,controllerHandle,eAction); +} +public override void TriggerHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec); +} +public override void TriggerRepeatedHapticPulse(ulong controllerHandle,uint eTargetPad,char usDurationMicroSec,char usOffMicroSec,char unRepeat,uint nFlags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamController_TriggerRepeatedHapticPulse(m_pSteamController,controllerHandle,eTargetPad,usDurationMicroSec,usOffMicroSec,unRepeat,nFlags); +} +public override int GetGamepadIndexForController(ulong ulControllerHandle) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamController_GetGamepadIndexForController(m_pSteamController,ulControllerHandle); + return result; +} +public override ulong GetControllerForGamepadIndex(int nIndex) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamController_GetControllerForGamepadIndex(m_pSteamController,nIndex); + return result; +} +public override ControllerMotionData_t GetMotionData(ulong controllerHandle) +{ + CheckIfUsable(); + ControllerMotionData_t result = NativeEntrypoints.SteamAPI_ISteamController_GetMotionData(m_pSteamController,controllerHandle); + return result; +} +public override bool ShowDigitalActionOrigins(ulong controllerHandle,ulong digitalActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowDigitalActionOrigins(m_pSteamController,controllerHandle,digitalActionHandle,flScale,flXPosition,flYPosition); + return result; +} +public override bool ShowAnalogActionOrigins(ulong controllerHandle,ulong analogActionHandle,float flScale,float flXPosition,float flYPosition) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamController_ShowAnalogActionOrigins(m_pSteamController,controllerHandle,analogActionHandle,flScale,flXPosition,flYPosition); + return result; +} +} + + +public class CSteamUGC : ISteamUGC +{ +public CSteamUGC(IntPtr SteamUGC) +{ + m_pSteamUGC = SteamUGC; +} +IntPtr m_pSteamUGC; + +public override IntPtr GetIntPtr() { return m_pSteamUGC; } + +private void CheckIfUsable() +{ + if (m_pSteamUGC == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong CreateQueryUserUGCRequest(uint unAccountID,uint eListType,uint eMatchingUGCType,uint eSortOrder,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(m_pSteamUGC,unAccountID,eListType,eMatchingUGCType,eSortOrder,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryAllUGCRequest(uint eQueryType,uint eMatchingeMatchingUGCTypeFileType,uint nCreatorAppID,uint nConsumerAppID,uint unPage) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryAllUGCRequest(m_pSteamUGC,eQueryType,eMatchingeMatchingUGCTypeFileType,nCreatorAppID,nConsumerAppID,unPage); + return result; +} +public override ulong CreateQueryUGCDetailsRequest(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong SendQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SendQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool GetQueryUGCResult(ulong handle,uint index,ref SteamUGCDetails_t pDetails) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCResult(m_pSteamUGC,handle,index,ref pDetails); + return result; +} +public override bool GetQueryUGCPreviewURL(ulong handle,uint index,out string pchURL) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCPreviewURL(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchURL = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCMetadata(ulong handle,uint index,out string pchMetadata) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCMetadata(m_pSteamUGC,handle,index,pStrBuffer1,2048); + pchMetadata = pStrBuffer1.ToString(); + return result; +} +public override bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCChildren(m_pSteamUGC,handle,index,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref ulong pStatValue) +{ + CheckIfUsable(); + pStatValue = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCStatistic(m_pSteamUGC,handle,index,eStatType,ref pStatValue); + return result; +} +public override uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType) +{ + CheckIfUsable(); + pPreviewType = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,pStrBuffer2,cchOriginalFileNameSize,ref pPreviewType); + pchURLOrVideoID = pStrBuffer1.ToString(); + pchOriginalFileName = pStrBuffer2.ToString(); + return result; +} +public override uint GetQueryUGCNumKeyValueTags(ulong handle,uint index) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(m_pSteamUGC,handle,index); + return result; +} +public override bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue) +{ + CheckIfUsable(); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(m_pSteamUGC,handle,index,keyValueTagIndex,pStrBuffer1,2048,pStrBuffer2,2048); + pchKey = pStrBuffer1.ToString(); + pchValue = pStrBuffer2.ToString(); + return result; +} +public override bool ReleaseQueryUGCRequest(ulong handle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(m_pSteamUGC,handle); + return result; +} +public override bool AddRequiredTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool AddExcludedTag(ulong handle,string pTagName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddExcludedTag(m_pSteamUGC,handle,pTagName); + return result; +} +public override bool SetReturnOnlyIDs(ulong handle,bool bReturnOnlyIDs) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnOnlyIDs(m_pSteamUGC,handle,bReturnOnlyIDs); + return result; +} +public override bool SetReturnKeyValueTags(ulong handle,bool bReturnKeyValueTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnKeyValueTags(m_pSteamUGC,handle,bReturnKeyValueTags); + return result; +} +public override bool SetReturnLongDescription(ulong handle,bool bReturnLongDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnLongDescription(m_pSteamUGC,handle,bReturnLongDescription); + return result; +} +public override bool SetReturnMetadata(ulong handle,bool bReturnMetadata) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnMetadata(m_pSteamUGC,handle,bReturnMetadata); + return result; +} +public override bool SetReturnChildren(ulong handle,bool bReturnChildren) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnChildren(m_pSteamUGC,handle,bReturnChildren); + return result; +} +public override bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(m_pSteamUGC,handle,bReturnAdditionalPreviews); + return result; +} +public override bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnTotalOnly(m_pSteamUGC,handle,bReturnTotalOnly); + return result; +} +public override bool SetLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetAllowCachedResponse(m_pSteamUGC,handle,unMaxAgeSeconds); + return result; +} +public override bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetCloudFileNameFilter(m_pSteamUGC,handle,pMatchCloudFileName); + return result; +} +public override bool SetMatchAnyTag(ulong handle,bool bMatchAnyTag) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetMatchAnyTag(m_pSteamUGC,handle,bMatchAnyTag); + return result; +} +public override bool SetSearchText(ulong handle,string pSearchText) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetSearchText(m_pSteamUGC,handle,pSearchText); + return result; +} +public override bool SetRankedByTrendDays(ulong handle,uint unDays) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetRankedByTrendDays(m_pSteamUGC,handle,unDays); + return result; +} +public override bool AddRequiredKeyValueTag(ulong handle,string pKey,string pValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddRequiredKeyValueTag(m_pSteamUGC,handle,pKey,pValue); + return result; +} +public override ulong RequestUGCDetails(ulong nPublishedFileID,uint unMaxAgeSeconds) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RequestUGCDetails(m_pSteamUGC,nPublishedFileID,unMaxAgeSeconds); + return result; +} +public override ulong CreateItem(uint nConsumerAppId,uint eFileType) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_CreateItem(m_pSteamUGC,nConsumerAppId,eFileType); + return result; +} +public override ulong StartItemUpdate(uint nConsumerAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartItemUpdate(m_pSteamUGC,nConsumerAppId,nPublishedFileID); + return result; +} +public override bool SetItemTitle(ulong handle,string pchTitle) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTitle(m_pSteamUGC,handle,pchTitle); + return result; +} +public override bool SetItemDescription(ulong handle,string pchDescription) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemDescription(m_pSteamUGC,handle,pchDescription); + return result; +} +public override bool SetItemUpdateLanguage(ulong handle,string pchLanguage) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemUpdateLanguage(m_pSteamUGC,handle,pchLanguage); + return result; +} +public override bool SetItemMetadata(ulong handle,string pchMetaData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemMetadata(m_pSteamUGC,handle,pchMetaData); + return result; +} +public override bool SetItemVisibility(ulong handle,uint eVisibility) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemVisibility(m_pSteamUGC,handle,eVisibility); + return result; +} +public override bool SetItemTags(ulong updateHandle,ref SteamParamStringArray_t pTags) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemTags(m_pSteamUGC,updateHandle,ref pTags); + return result; +} +public override bool SetItemContent(ulong handle,string pszContentFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemContent(m_pSteamUGC,handle,pszContentFolder); + return result; +} +public override bool SetItemPreview(ulong handle,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetItemPreview(m_pSteamUGC,handle,pszPreviewFile); + return result; +} +public override bool RemoveItemKeyValueTags(ulong handle,string pchKey) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemKeyValueTags(m_pSteamUGC,handle,pchKey); + return result; +} +public override bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemKeyValueTag(m_pSteamUGC,handle,pchKey,pchValue); + return result; +} +public override bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewFile(m_pSteamUGC,handle,pszPreviewFile,type); + return result; +} +public override bool AddItemPreviewVideo(ulong handle,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewVideo(m_pSteamUGC,handle,pszVideoID); + return result; +} +public override bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewFile(m_pSteamUGC,handle,index,pszPreviewFile); + return result; +} +public override bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewVideo(m_pSteamUGC,handle,index,pszVideoID); + return result; +} +public override bool RemoveItemPreview(ulong handle,uint index) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemPreview(m_pSteamUGC,handle,index); + return result; +} +public override ulong SubmitItemUpdate(ulong handle,string pchChangeNote) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubmitItemUpdate(m_pSteamUGC,handle,pchChangeNote); + return result; +} +public override uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesProcessed = 0; + punBytesTotal = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemUpdateProgress(m_pSteamUGC,handle,ref punBytesProcessed,ref punBytesTotal); + return result; +} +public override ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SetUserItemVote(m_pSteamUGC,nPublishedFileID,bVoteUp); + return result; +} +public override ulong GetUserItemVote(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_GetUserItemVote(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong AddItemToFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemToFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong RemoveItemFromFavorites(uint nAppId,ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemFromFavorites(m_pSteamUGC,nAppId,nPublishedFileID); + return result; +} +public override ulong SubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_SubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override ulong UnsubscribeItem(ulong nPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_UnsubscribeItem(m_pSteamUGC,nPublishedFileID); + return result; +} +public override uint GetNumSubscribedItems() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetNumSubscribedItems(m_pSteamUGC); + return result; +} +public override uint GetSubscribedItems(ref ulong pvecPublishedFileID,uint cMaxEntries) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetSubscribedItems(m_pSteamUGC,ref pvecPublishedFileID,cMaxEntries); + return result; +} +public override uint GetItemState(ulong nPublishedFileID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemState(m_pSteamUGC,nPublishedFileID); + return result; +} +public override bool GetItemInstallInfo(ulong nPublishedFileID,ref ulong punSizeOnDisk,out string pchFolder,ref uint punTimeStamp) +{ + CheckIfUsable(); + punSizeOnDisk = 0; + punTimeStamp = 0; + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemInstallInfo(m_pSteamUGC,nPublishedFileID,ref punSizeOnDisk,pStrBuffer1,2048,ref punTimeStamp); + pchFolder = pStrBuffer1.ToString(); + return result; +} +public override bool GetItemDownloadInfo(ulong nPublishedFileID,ref ulong punBytesDownloaded,ref ulong punBytesTotal) +{ + CheckIfUsable(); + punBytesDownloaded = 0; + punBytesTotal = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetItemDownloadInfo(m_pSteamUGC,nPublishedFileID,ref punBytesDownloaded,ref punBytesTotal); + return result; +} +public override bool DownloadItem(ulong nPublishedFileID,bool bHighPriority) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_DownloadItem(m_pSteamUGC,nPublishedFileID,bHighPriority); + return result; +} +public override bool BInitWorkshopForGameServer(uint unWorkshopDepotID,string pszFolder) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_BInitWorkshopForGameServer(m_pSteamUGC,unWorkshopDepotID,pszFolder); + return result; +} +public override void SuspendDownloads(bool bSuspend) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUGC_SuspendDownloads(m_pSteamUGC,bSuspend); +} +public override ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StartPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs) +{ + CheckIfUsable(); + pvecPublishedFileID = 0; + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTracking(m_pSteamUGC,ref pvecPublishedFileID,unNumPublishedFileIDs); + return result; +} +public override ulong StopPlaytimeTrackingForAllItems() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(m_pSteamUGC); + return result; +} +} + + +public class CSteamAppList : ISteamAppList +{ +public CSteamAppList(IntPtr SteamAppList) +{ + m_pSteamAppList = SteamAppList; +} +IntPtr m_pSteamAppList; + +public override IntPtr GetIntPtr() { return m_pSteamAppList; } + +private void CheckIfUsable() +{ + if (m_pSteamAppList == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetNumInstalledApps() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetNumInstalledApps(m_pSteamAppList); + return result; +} +public override uint GetInstalledApps(ref uint pvecAppID,uint unMaxAppIDs) +{ + CheckIfUsable(); + pvecAppID = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamAppList_GetInstalledApps(m_pSteamAppList,ref pvecAppID,unMaxAppIDs); + return result; +} +public override int GetAppName(uint nAppID,System.Text.StringBuilder pchName,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppName(m_pSteamAppList,nAppID,pchName,cchNameMax); + return result; +} +public override int GetAppInstallDir(uint nAppID,string pchDirectory,int cchNameMax) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppInstallDir(m_pSteamAppList,nAppID,pchDirectory,cchNameMax); + return result; +} +public override int GetAppBuildId(uint nAppID) +{ + CheckIfUsable(); + int result = NativeEntrypoints.SteamAPI_ISteamAppList_GetAppBuildId(m_pSteamAppList,nAppID); + return result; +} +} + + +public class CSteamHTMLSurface : ISteamHTMLSurface +{ +public CSteamHTMLSurface(IntPtr SteamHTMLSurface) +{ + m_pSteamHTMLSurface = SteamHTMLSurface; +} +IntPtr m_pSteamHTMLSurface; + +public override IntPtr GetIntPtr() { return m_pSteamHTMLSurface; } + +private void CheckIfUsable() +{ + if (m_pSteamHTMLSurface == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void DestructISteamHTMLSurface() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_DestructISteamHTMLSurface(m_pSteamHTMLSurface); +} +public override bool Init() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Init(m_pSteamHTMLSurface); + return result; +} +public override bool Shutdown() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Shutdown(m_pSteamHTMLSurface); + return result; +} +public override ulong CreateBrowser(string pchUserAgent,string pchUserCSS) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CreateBrowser(m_pSteamHTMLSurface,pchUserAgent,pchUserCSS); + return result; +} +public override void RemoveBrowser(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_RemoveBrowser(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void LoadURL(uint unBrowserHandle,string pchURL,string pchPostData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_LoadURL(m_pSteamHTMLSurface,unBrowserHandle,pchURL,pchPostData); +} +public override void SetSize(uint unBrowserHandle,uint unWidth,uint unHeight) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetSize(m_pSteamHTMLSurface,unBrowserHandle,unWidth,unHeight); +} +public override void StopLoad(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopLoad(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Reload(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Reload(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoBack(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoBack(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GoForward(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GoForward(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void AddHeader(uint unBrowserHandle,string pchKey,string pchValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AddHeader(m_pSteamHTMLSurface,unBrowserHandle,pchKey,pchValue); +} +public override void ExecuteJavascript(uint unBrowserHandle,string pchScript) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ExecuteJavascript(m_pSteamHTMLSurface,unBrowserHandle,pchScript); +} +public override void MouseUp(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseUp(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDown(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDown(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseDoubleClick(uint unBrowserHandle,uint eMouseButton) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseDoubleClick(m_pSteamHTMLSurface,unBrowserHandle,eMouseButton); +} +public override void MouseMove(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseMove(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void MouseWheel(uint unBrowserHandle,int nDelta) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_MouseWheel(m_pSteamHTMLSurface,unBrowserHandle,nDelta); +} +public override void KeyDown(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyDown(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyUp(uint unBrowserHandle,uint nNativeKeyCode,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyUp(m_pSteamHTMLSurface,unBrowserHandle,nNativeKeyCode,eHTMLKeyModifiers); +} +public override void KeyChar(uint unBrowserHandle,uint cUnicodeChar,uint eHTMLKeyModifiers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_KeyChar(m_pSteamHTMLSurface,unBrowserHandle,cUnicodeChar,eHTMLKeyModifiers); +} +public override void SetHorizontalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetHorizontalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetVerticalScroll(uint unBrowserHandle,uint nAbsolutePixelScroll) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetVerticalScroll(m_pSteamHTMLSurface,unBrowserHandle,nAbsolutePixelScroll); +} +public override void SetKeyFocus(uint unBrowserHandle,bool bHasKeyFocus) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetKeyFocus(m_pSteamHTMLSurface,unBrowserHandle,bHasKeyFocus); +} +public override void ViewSource(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_ViewSource(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void CopyToClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_CopyToClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void PasteFromClipboard(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_PasteFromClipboard(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void Find(uint unBrowserHandle,string pchSearchStr,bool bCurrentlyInFind,bool bReverse) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_Find(m_pSteamHTMLSurface,unBrowserHandle,pchSearchStr,bCurrentlyInFind,bReverse); +} +public override void StopFind(uint unBrowserHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_StopFind(m_pSteamHTMLSurface,unBrowserHandle); +} +public override void GetLinkAtPosition(uint unBrowserHandle,int x,int y) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_GetLinkAtPosition(m_pSteamHTMLSurface,unBrowserHandle,x,y); +} +public override void SetCookie(string pchHostname,string pchKey,string pchValue,string pchPath,ulong nExpires,bool bSecure,bool bHTTPOnly) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetCookie(m_pSteamHTMLSurface,pchHostname,pchKey,pchValue,pchPath,nExpires,bSecure,bHTTPOnly); +} +public override void SetPageScaleFactor(uint unBrowserHandle,float flZoom,int nPointX,int nPointY) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetPageScaleFactor(m_pSteamHTMLSurface,unBrowserHandle,flZoom,nPointX,nPointY); +} +public override void SetBackgroundMode(uint unBrowserHandle,bool bBackgroundMode) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_SetBackgroundMode(m_pSteamHTMLSurface,unBrowserHandle,bBackgroundMode); +} +public override void AllowStartRequest(uint unBrowserHandle,bool bAllowed) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_AllowStartRequest(m_pSteamHTMLSurface,unBrowserHandle,bAllowed); +} +public override void JSDialogResponse(uint unBrowserHandle,bool bResult) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamHTMLSurface_JSDialogResponse(m_pSteamHTMLSurface,unBrowserHandle,bResult); +} +} + + +public class CSteamInventory : ISteamInventory +{ +public CSteamInventory(IntPtr SteamInventory) +{ + m_pSteamInventory = SteamInventory; +} +IntPtr m_pSteamInventory; + +public override IntPtr GetIntPtr() { return m_pSteamInventory; } + +private void CheckIfUsable() +{ + if (m_pSteamInventory == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override uint GetResultStatus(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultStatus(m_pSteamInventory,resultHandle); + return result; +} +public override bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray) +{ + CheckIfUsable(); + uint punOutItemsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,null,ref punOutItemsArraySize); + pOutItemsArray= new SteamItemDetails_t[punOutItemsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,pOutItemsArray,ref punOutItemsArraySize); + return result; +} +public override uint GetResultTimestamp(int resultHandle) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultTimestamp(m_pSteamInventory,resultHandle); + return result; +} +public override bool CheckResultSteamID(int resultHandle,ulong steamIDExpected) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_CheckResultSteamID(m_pSteamInventory,resultHandle,steamIDExpected); + return result; +} +public override void DestroyResult(int resultHandle) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_DestroyResult(m_pSteamInventory,resultHandle); +} +public override bool GetAllItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetAllItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool GetItemsByID(ref int pResultHandle,ulong [] pInstanceIDs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemsByID(m_pSteamInventory,ref pResultHandle,pInstanceIDs,(uint) pInstanceIDs.Length); + return result; +} +public override bool SerializeResult(int resultHandle,IntPtr pOutBuffer,ref uint punOutBufferSize) +{ + CheckIfUsable(); + punOutBufferSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_SerializeResult(m_pSteamInventory,resultHandle,pOutBuffer,ref punOutBufferSize); + return result; +} +public override bool DeserializeResult(ref int pOutResultHandle,IntPtr pBuffer,uint unBufferSize,bool bRESERVED_MUST_BE_FALSE) +{ + CheckIfUsable(); + pOutResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_DeserializeResult(m_pSteamInventory,ref pOutResultHandle,pBuffer,unBufferSize,bRESERVED_MUST_BE_FALSE); + return result; +} +public override bool GenerateItems(ref int pResultHandle,int [] pArrayItemDefs,uint [] punArrayQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GenerateItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,punArrayQuantity,(uint) punArrayQuantity.Length); + return result; +} +public override bool GrantPromoItems(ref int pResultHandle) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GrantPromoItems(m_pSteamInventory,ref pResultHandle); + return result; +} +public override bool AddPromoItem(ref int pResultHandle,int itemDef) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItem(m_pSteamInventory,ref pResultHandle,itemDef); + return result; +} +public override bool AddPromoItems(ref int pResultHandle,int [] pArrayItemDefs) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_AddPromoItems(m_pSteamInventory,ref pResultHandle,pArrayItemDefs,(uint) pArrayItemDefs.Length); + return result; +} +public override bool ConsumeItem(ref int pResultHandle,ulong itemConsume,uint unQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ConsumeItem(m_pSteamInventory,ref pResultHandle,itemConsume,unQuantity); + return result; +} +public override bool ExchangeItems(ref int pResultHandle,int [] pArrayGenerate,uint [] punArrayGenerateQuantity,ulong [] pArrayDestroy,uint [] punArrayDestroyQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_ExchangeItems(m_pSteamInventory,ref pResultHandle,pArrayGenerate,punArrayGenerateQuantity,(uint) punArrayGenerateQuantity.Length,pArrayDestroy,punArrayDestroyQuantity,(uint) punArrayDestroyQuantity.Length); + return result; +} +public override bool TransferItemQuantity(ref int pResultHandle,ulong itemIdSource,uint unQuantity,ulong itemIdDest) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TransferItemQuantity(m_pSteamInventory,ref pResultHandle,itemIdSource,unQuantity,itemIdDest); + return result; +} +public override void SendItemDropHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamInventory_SendItemDropHeartbeat(m_pSteamInventory); +} +public override bool TriggerItemDrop(ref int pResultHandle,int dropListDefinition) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TriggerItemDrop(m_pSteamInventory,ref pResultHandle,dropListDefinition); + return result; +} +public override bool TradeItems(ref int pResultHandle,ulong steamIDTradePartner,ulong [] pArrayGive,uint [] pArrayGiveQuantity,ulong [] pArrayGet,uint [] pArrayGetQuantity) +{ + CheckIfUsable(); + pResultHandle = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_TradeItems(m_pSteamInventory,ref pResultHandle,steamIDTradePartner,pArrayGive,pArrayGiveQuantity,(uint) pArrayGiveQuantity.Length,pArrayGet,pArrayGetQuantity,(uint) pArrayGetQuantity.Length); + return result; +} +public override bool LoadItemDefinitions() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_LoadItemDefinitions(m_pSteamInventory); + return result; +} +public override bool GetItemDefinitionIDs(out int [] pItemDefIDs) +{ + CheckIfUsable(); + uint punItemDefIDsArraySize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,null,ref punItemDefIDsArraySize); + pItemDefIDs= new int[punItemDefIDsArraySize]; + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionIDs(m_pSteamInventory,pItemDefIDs,ref punItemDefIDsArraySize); + return result; +} +public override bool GetItemDefinitionProperty(int iDefinition,string pchPropertyName,out string pchValueBuffer) +{ + CheckIfUsable(); + uint punValueBufferSizeOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,null,ref punValueBufferSizeOut); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetItemDefinitionProperty(m_pSteamInventory,iDefinition,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); + pchValueBuffer = pStrBuffer1.ToString(); + return result; +} +} + + +public class CSteamVideo : ISteamVideo +{ +public CSteamVideo(IntPtr SteamVideo) +{ + m_pSteamVideo = SteamVideo; +} +IntPtr m_pSteamVideo; + +public override IntPtr GetIntPtr() { return m_pSteamVideo; } + +private void CheckIfUsable() +{ + if (m_pSteamVideo == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override void GetVideoURL(uint unVideoAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamVideo_GetVideoURL(m_pSteamVideo,unVideoAppID); +} +public override bool IsBroadcasting(ref int pnNumViewers) +{ + CheckIfUsable(); + pnNumViewers = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamVideo_IsBroadcasting(m_pSteamVideo,ref pnNumViewers); + return result; +} +} + + +public class CSteamGameServer : ISteamGameServer +{ +public CSteamGameServer(IntPtr SteamGameServer) +{ + m_pSteamGameServer = SteamGameServer; +} +IntPtr m_pSteamGameServer; + +public override IntPtr GetIntPtr() { return m_pSteamGameServer; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServer == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override bool InitGameServer(uint unIP,char usGamePort,char usQueryPort,uint unFlags,uint nGameAppId,string pchVersionString) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_InitGameServer(m_pSteamGameServer,unIP,usGamePort,usQueryPort,unFlags,nGameAppId,pchVersionString); + return result; +} +public override void SetProduct(string pszProduct) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetProduct(m_pSteamGameServer,pszProduct); +} +public override void SetGameDescription(string pszGameDescription) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameDescription(m_pSteamGameServer,pszGameDescription); +} +public override void SetModDir(string pszModDir) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetModDir(m_pSteamGameServer,pszModDir); +} +public override void SetDedicatedServer(bool bDedicated) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetDedicatedServer(m_pSteamGameServer,bDedicated); +} +public override void LogOn(string pszToken) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOn(m_pSteamGameServer,pszToken); +} +public override void LogOnAnonymous() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOnAnonymous(m_pSteamGameServer); +} +public override void LogOff() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_LogOff(m_pSteamGameServer); +} +public override bool BLoggedOn() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BLoggedOn(m_pSteamGameServer); + return result; +} +public override bool BSecure() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BSecure(m_pSteamGameServer); + return result; +} +public override ulong GetSteamID() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetSteamID(m_pSteamGameServer); + return result; +} +public override bool WasRestartRequested() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_WasRestartRequested(m_pSteamGameServer); + return result; +} +public override void SetMaxPlayerCount(int cPlayersMax) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMaxPlayerCount(m_pSteamGameServer,cPlayersMax); +} +public override void SetBotPlayerCount(int cBotplayers) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetBotPlayerCount(m_pSteamGameServer,cBotplayers); +} +public override void SetServerName(string pszServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetServerName(m_pSteamGameServer,pszServerName); +} +public override void SetMapName(string pszMapName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetMapName(m_pSteamGameServer,pszMapName); +} +public override void SetPasswordProtected(bool bPasswordProtected) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetPasswordProtected(m_pSteamGameServer,bPasswordProtected); +} +public override void SetSpectatorPort(char unSpectatorPort) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorPort(m_pSteamGameServer,unSpectatorPort); +} +public override void SetSpectatorServerName(string pszSpectatorServerName) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetSpectatorServerName(m_pSteamGameServer,pszSpectatorServerName); +} +public override void ClearAllKeyValues() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ClearAllKeyValues(m_pSteamGameServer); +} +public override void SetKeyValue(string pKey,string pValue) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetKeyValue(m_pSteamGameServer,pKey,pValue); +} +public override void SetGameTags(string pchGameTags) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameTags(m_pSteamGameServer,pchGameTags); +} +public override void SetGameData(string pchGameData) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetGameData(m_pSteamGameServer,pchGameData); +} +public override void SetRegion(string pszRegion) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetRegion(m_pSteamGameServer,pszRegion); +} +public override bool SendUserConnectAndAuthenticate(uint unIPClient,IntPtr pvAuthBlob,uint cubAuthBlobSize,ref CSteamID pSteamIDUser) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate(m_pSteamGameServer,unIPClient,pvAuthBlob,cubAuthBlobSize,ref pSteamIDUser); + return result; +} +public override ulong CreateUnauthenticatedUserConnection() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection(m_pSteamGameServer); + return result; +} +public override void SendUserDisconnect(ulong steamIDUser) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SendUserDisconnect(m_pSteamGameServer,steamIDUser); +} +public override bool BUpdateUserData(ulong steamIDUser,string pchPlayerName,uint uScore) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_BUpdateUserData(m_pSteamGameServer,steamIDUser,pchPlayerName,uScore); + return result; +} +public override uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket) +{ + CheckIfUsable(); + pcbTicket = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetAuthSessionTicket(m_pSteamGameServer,pTicket,cbMaxTicket,ref pcbTicket); + return result; +} +public override uint BeginAuthSession(IntPtr pAuthTicket,int cbAuthTicket,ulong steamID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_BeginAuthSession(m_pSteamGameServer,pAuthTicket,cbAuthTicket,steamID); + return result; +} +public override void EndAuthSession(ulong steamID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EndAuthSession(m_pSteamGameServer,steamID); +} +public override void CancelAuthTicket(uint hAuthTicket) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_CancelAuthTicket(m_pSteamGameServer,hAuthTicket); +} +public override uint UserHasLicenseForApp(ulong steamID,uint appID) +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_UserHasLicenseForApp(m_pSteamGameServer,steamID,appID); + return result; +} +public override bool RequestUserGroupStatus(ulong steamIDUser,ulong steamIDGroup) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_RequestUserGroupStatus(m_pSteamGameServer,steamIDUser,steamIDGroup); + return result; +} +public override void GetGameplayStats() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_GetGameplayStats(m_pSteamGameServer); +} +public override ulong GetServerReputation() +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetServerReputation(m_pSteamGameServer); + return result; +} +public override uint GetPublicIP() +{ + CheckIfUsable(); + uint result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetPublicIP(m_pSteamGameServer); + return result; +} +public override bool HandleIncomingPacket(IntPtr pData,int cbData,uint srcIP,char srcPort) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServer_HandleIncomingPacket(m_pSteamGameServer,pData,cbData,srcIP,srcPort); + return result; +} +public override int GetNextOutgoingPacket(IntPtr pOut,int cbMaxOut,ref uint pNetAdr,ref char pPort) +{ + CheckIfUsable(); + pNetAdr = 0; + pPort = (char) 0; + int result = NativeEntrypoints.SteamAPI_ISteamGameServer_GetNextOutgoingPacket(m_pSteamGameServer,pOut,cbMaxOut,ref pNetAdr,ref pPort); + return result; +} +public override void EnableHeartbeats(bool bActive) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_EnableHeartbeats(m_pSteamGameServer,bActive); +} +public override void SetHeartbeatInterval(int iHeartbeatInterval) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_SetHeartbeatInterval(m_pSteamGameServer,iHeartbeatInterval); +} +public override void ForceHeartbeat() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamGameServer_ForceHeartbeat(m_pSteamGameServer); +} +public override ulong AssociateWithClan(ulong steamIDClan) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_AssociateWithClan(m_pSteamGameServer,steamIDClan); + return result; +} +public override ulong ComputeNewPlayerCompatibility(ulong steamIDNewPlayer) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility(m_pSteamGameServer,steamIDNewPlayer); + return result; +} +} + + +public class CSteamGameServerStats : ISteamGameServerStats +{ +public CSteamGameServerStats(IntPtr SteamGameServerStats) +{ + m_pSteamGameServerStats = SteamGameServerStats; +} +IntPtr m_pSteamGameServerStats; + +public override IntPtr GetIntPtr() { return m_pSteamGameServerStats; } + +private void CheckIfUsable() +{ + if (m_pSteamGameServerStats == IntPtr.Zero) + { + throw new Exception("Steam Pointer not configured"); + } +} +public override ulong RequestUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_RequestUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +public override bool GetUserStat(ulong steamIDUser,string pchName,ref int pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserStat0(ulong steamIDUser,string pchName,ref float pData) +{ + CheckIfUsable(); + pData = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,ref pData); + return result; +} +public override bool GetUserAchievement(ulong steamIDUser,string pchName,ref bool pbAchieved) +{ + CheckIfUsable(); + pbAchieved = false; + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_GetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName,ref pbAchieved); + return result; +} +public override bool SetUserStat(ulong steamIDUser,string pchName,int nData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat(m_pSteamGameServerStats,steamIDUser,pchName,nData); + return result; +} +public override bool SetUserStat0(ulong steamIDUser,string pchName,float fData) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserStat0(m_pSteamGameServerStats,steamIDUser,pchName,fData); + return result; +} +public override bool UpdateUserAvgRateStat(ulong steamIDUser,string pchName,float flCountThisSession,double dSessionLength) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat(m_pSteamGameServerStats,steamIDUser,pchName,flCountThisSession,dSessionLength); + return result; +} +public override bool SetUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_SetUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override bool ClearUserAchievement(ulong steamIDUser,string pchName) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_ClearUserAchievement(m_pSteamGameServerStats,steamIDUser,pchName); + return result; +} +public override ulong StoreUserStats(ulong steamIDUser) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamGameServerStats_StoreUserStats(m_pSteamGameServerStats,steamIDUser); + return result; +} +} + + +public class CUserStatsReceived_t_Callback +{ + public CUserStatsReceived_t_Callback() { } + ~CUserStatsReceived_t_Callback() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_Callback func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallback(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallback(func); + } +} +public class CRemoteStorageFileReadAsyncComplete_t_CallResult +{ + public CRemoteStorageFileReadAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileReadAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileReadAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedItemVoteDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedItemVoteDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CFileDetailsResult_t_CallResult +{ + public CFileDetailsResult_t_CallResult() { } + ~CFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsStored_t_CallResult +{ + public CGSStatsStored_t_CallResult() { } + ~CGSStatsStored_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsStored_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsStored_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsStored_t_SetCallResult(hAPICall, func); + } +} +public class CHTML_BrowserReady_t_CallResult +{ + public CHTML_BrowserReady_t_CallResult() { } + ~CHTML_BrowserReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_HTML_BrowserReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CHTML_BrowserReady_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsGetFollowerCount_t_CallResult +{ + public CFriendsGetFollowerCount_t_CallResult() { } + ~CFriendsGetFollowerCount_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsGetFollowerCount_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsGetFollowerCount_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsIsFollowing_t_CallResult +{ + public CFriendsIsFollowing_t_CallResult() { } + ~CFriendsIsFollowing_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsIsFollowing_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsIsFollowing_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyMatchList_t_CallResult +{ + public CLobbyMatchList_t_CallResult() { } + ~CLobbyMatchList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyMatchList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyMatchList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdatePublishedFileResult_t_CallResult +{ + public CRemoteStorageUpdatePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUpdatePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdatePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdatePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CStoreAuthURLResponse_t_CallResult +{ + public CStoreAuthURLResponse_t_CallResult() { } + ~CStoreAuthURLResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_StoreAuthURLResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CStoreAuthURLResponse_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyCreated_t_CallResult +{ + public CLobbyCreated_t_CallResult() { } + ~CLobbyCreated_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyCreated_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyCreated_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyCreated_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileWriteAsyncComplete_t_CallResult +{ + public CRemoteStorageFileWriteAsyncComplete_t_CallResult() { } + ~CRemoteStorageFileWriteAsyncComplete_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileWriteAsyncComplete_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileWriteAsyncComplete_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDeletePublishedFileResult_t_CallResult +{ + public CRemoteStorageDeletePublishedFileResult_t_CallResult() { } + ~CRemoteStorageDeletePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDeletePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDeletePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageGetPublishedFileDetailsResult_t_CallResult +{ + public CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() { } + ~CRemoteStorageGetPublishedFileDetailsResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageDownloadUGCResult_t_CallResult +{ + public CRemoteStorageDownloadUGCResult_t_CallResult() { } + ~CRemoteStorageDownloadUGCResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageDownloadUGCResult_t_SetCallResult(hAPICall, func); + } +} +public class CSteamUGCQueryCompleted_t_CallResult +{ + public CSteamUGCQueryCompleted_t_CallResult() { } + ~CSteamUGCQueryCompleted_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SteamUGCQueryCompleted_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSteamUGCQueryCompleted_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageFileShareResult_t_CallResult +{ + public CRemoteStorageFileShareResult_t_CallResult() { } + ~CRemoteStorageFileShareResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageFileShareResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageFileShareResult_t_SetCallResult(hAPICall, func); + } +} +public class CLobbyEnter_t_CallResult +{ + public CLobbyEnter_t_CallResult() { } + ~CLobbyEnter_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LobbyEnter_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLobbyEnter_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLobbyEnter_t_SetCallResult(hAPICall, func); + } +} +public class CSubmitItemUpdateResult_t_CallResult +{ + public CSubmitItemUpdateResult_t_CallResult() { } + ~CSubmitItemUpdateResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SubmitItemUpdateResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSubmitItemUpdateResult_t_SetCallResult(hAPICall, func); + } +} +public class CNumberOfCurrentPlayers_t_CallResult +{ + public CNumberOfCurrentPlayers_t_CallResult() { } + ~CNumberOfCurrentPlayers_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_NumberOfCurrentPlayers_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CNumberOfCurrentPlayers_t_SetCallResult(hAPICall, func); + } +} +public class CGSStatsReceived_t_CallResult +{ + public CGSStatsReceived_t_CallResult() { } + ~CGSStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoresDownloaded_t_CallResult +{ + public CLeaderboardScoresDownloaded_t_CallResult() { } + ~CLeaderboardScoresDownloaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoresDownloaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoresDownloaded_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult +{ + public CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() { } + ~CRemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUpdateUserPublishedItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUpdateUserPublishedItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserSubscribedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserSubscribedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CCreateItemResult_t_CallResult +{ + public CCreateItemResult_t_CallResult() { } + ~CCreateItemResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CreateItemResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCreateItemResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCreateItemResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetUserItemVoteResult_t_CallResult +{ + public CSetUserItemVoteResult_t_CallResult() { } + ~CSetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CComputeNewPlayerCompatibilityResult_t_CallResult +{ + public CComputeNewPlayerCompatibilityResult_t_CallResult() { } + ~CComputeNewPlayerCompatibilityResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ComputeNewPlayerCompatibilityResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CComputeNewPlayerCompatibilityResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardScoreUploaded_t_CallResult +{ + public CLeaderboardScoreUploaded_t_CallResult() { } + ~CLeaderboardScoreUploaded_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardScoreUploaded_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardScoreUploaded_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalAchievementPercentagesReady_t_CallResult +{ + public CGlobalAchievementPercentagesReady_t_CallResult() { } + ~CGlobalAchievementPercentagesReady_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalAchievementPercentagesReady_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalAchievementPercentagesReady_t_SetCallResult(hAPICall, func); + } +} +public class CGlobalStatsReceived_t_CallResult +{ + public CGlobalStatsReceived_t_CallResult() { } + ~CGlobalStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GlobalStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGlobalStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult +{ + public CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() { } + ~CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumeratePublishedFilesByUserActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumeratePublishedFilesByUserActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CClanOfficerListResponse_t_CallResult +{ + public CClanOfficerListResponse_t_CallResult() { } + ~CClanOfficerListResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_ClanOfficerListResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CClanOfficerListResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStoragePublishFileProgress_t_CallResult +{ + public CRemoteStoragePublishFileProgress_t_CallResult() { } + ~CRemoteStoragePublishFileProgress_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStoragePublishFileProgress_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStoragePublishFileProgress_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CGSReputation_t_CallResult +{ + public CGSReputation_t_CallResult() { } + ~CGSReputation_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GSReputation_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGSReputation_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGSReputation_t_SetCallResult(hAPICall, func); + } +} +public class CUserFavoriteItemsListChanged_t_CallResult +{ + public CUserFavoriteItemsListChanged_t_CallResult() { } + ~CUserFavoriteItemsListChanged_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserFavoriteItemsListChanged_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserFavoriteItemsListChanged_t_SetCallResult(hAPICall, func); + } +} +public class CEncryptedAppTicketResponse_t_CallResult +{ + public CEncryptedAppTicketResponse_t_CallResult() { } + ~CEncryptedAppTicketResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_EncryptedAppTicketResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CEncryptedAppTicketResponse_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSetUserPublishedFileActionResult_t_CallResult +{ + public CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() { } + ~CRemoteStorageSetUserPublishedFileActionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSetUserPublishedFileActionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSetUserPublishedFileActionResult_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult +{ + public CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() { } + ~CRemoteStorageEnumerateUserPublishedFilesResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageEnumerateUserPublishedFilesResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateUserPublishedFilesResult_t_SetCallResult(hAPICall, func); + } +} +public class CFriendsEnumerateFollowingList_t_CallResult +{ + public CFriendsEnumerateFollowingList_t_CallResult() { } + ~CFriendsEnumerateFollowingList_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_FriendsEnumerateFollowingList_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CFriendsEnumerateFollowingList_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageSubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageSubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageSubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageSubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageSubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CGetUserItemVoteResult_t_CallResult +{ + public CGetUserItemVoteResult_t_CallResult() { } + ~CGetUserItemVoteResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_GetUserItemVoteResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGetUserItemVoteResult_t_SetCallResult(hAPICall, func); + } +} +public class CAssociateWithClanResult_t_CallResult +{ + public CAssociateWithClanResult_t_CallResult() { } + ~CAssociateWithClanResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AssociateWithClanResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CAssociateWithClanResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardUGCSet_t_CallResult +{ + public CLeaderboardUGCSet_t_CallResult() { } + ~CLeaderboardUGCSet_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardUGCSet_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardUGCSet_t_SetCallResult(hAPICall, func); + } +} +public class CCheckFileSignature_t_CallResult +{ + public CCheckFileSignature_t_CallResult() { } + ~CCheckFileSignature_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_CheckFileSignature_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CCheckFileSignature_t_SetCallResult(hAPICall, func); + } +} +public class CRemoteStorageUnsubscribePublishedFileResult_t_CallResult +{ + public CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() { } + ~CRemoteStorageUnsubscribePublishedFileResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoteStorageUnsubscribePublishedFileResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageUnsubscribePublishedFileResult_t_SetCallResult(hAPICall, func); + } +} +public class CSetPersonaNameResponse_t_CallResult +{ + public CSetPersonaNameResponse_t_CallResult() { } + ~CSetPersonaNameResponse_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_SetPersonaNameResponse_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CSetPersonaNameResponse_t_SetCallResult(hAPICall, func); + } +} +public class CUserStatsReceived_t_CallResult +{ + public CUserStatsReceived_t_CallResult() { } + ~CUserStatsReceived_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_UserStatsReceived_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallResult(hAPICall, func); + } +} +public class CJoinClanChatRoomCompletionResult_t_CallResult +{ + public CJoinClanChatRoomCompletionResult_t_CallResult() { } + ~CJoinClanChatRoomCompletionResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_JoinClanChatRoomCompletionResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CJoinClanChatRoomCompletionResult_t_SetCallResult(hAPICall, func); + } +} +public class CLeaderboardFindResult_t_CallResult +{ + public CLeaderboardFindResult_t_CallResult() { } + ~CLeaderboardFindResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_LeaderboardFindResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CLeaderboardFindResult_t_SetCallResult(hAPICall, func); + } +} +public class SteamAPIInterop +{ +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RestartAppIfNecessary")] +internal static extern void SteamAPI_RestartAppIfNecessary(uint unOwnAppID ); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_Init")] +internal static extern void SteamAPI_Init(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RunCallbacks")] +internal static extern void SteamAPI_RunCallbacks(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_RegisterCallback")] +internal static extern void SteamAPI_RegisterCallback(IntPtr pCallback, int iCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_UnregisterCallback")] +internal static extern void SteamAPI_UnregisterCallback(IntPtr pCallback); +[DllImportAttribute("Steam_api", EntryPoint = "SteamClient")] +internal static extern IntPtr SteamClient(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUser")] +internal static extern IntPtr SteamUser(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamFriends")] +internal static extern IntPtr SteamFriends(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUtils")] +internal static extern IntPtr SteamUtils(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmaking")] +internal static extern IntPtr SteamMatchmaking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServerListResponse")] +internal static extern IntPtr SteamMatchmakingServerListResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPingResponse")] +internal static extern IntPtr SteamMatchmakingPingResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingPlayersResponse")] +internal static extern IntPtr SteamMatchmakingPlayersResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingRulesResponse")] +internal static extern IntPtr SteamMatchmakingRulesResponse(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMatchmakingServers")] +internal static extern IntPtr SteamMatchmakingServers(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamRemoteStorage")] +internal static extern IntPtr SteamRemoteStorage(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUserStats")] +internal static extern IntPtr SteamUserStats(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamApps")] +internal static extern IntPtr SteamApps(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamNetworking")] +internal static extern IntPtr SteamNetworking(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamScreenshots")] +internal static extern IntPtr SteamScreenshots(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusic")] +internal static extern IntPtr SteamMusic(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamMusicRemote")] +internal static extern IntPtr SteamMusicRemote(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTTP")] +internal static extern IntPtr SteamHTTP(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUnifiedMessages")] +internal static extern IntPtr SteamUnifiedMessages(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamController")] +internal static extern IntPtr SteamController(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamUGC")] +internal static extern IntPtr SteamUGC(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAppList")] +internal static extern IntPtr SteamAppList(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamHTMLSurface")] +internal static extern IntPtr SteamHTMLSurface(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamInventory")] +internal static extern IntPtr SteamInventory(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamVideo")] +internal static extern IntPtr SteamVideo(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServer")] +internal static extern IntPtr SteamGameServer(); +[DllImportAttribute("Steam_api", EntryPoint = "SteamGameServerStats")] +internal static extern IntPtr SteamGameServerStats(); +} + + +public enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + k_EUniverseMax = 5, +} +public enum EResult +{ + k_EResultOK = 1, + k_EResultFail = 2, + k_EResultNoConnection = 3, + k_EResultInvalidPassword = 5, + k_EResultLoggedInElsewhere = 6, + k_EResultInvalidProtocolVer = 7, + k_EResultInvalidParam = 8, + k_EResultFileNotFound = 9, + k_EResultBusy = 10, + k_EResultInvalidState = 11, + k_EResultInvalidName = 12, + k_EResultInvalidEmail = 13, + k_EResultDuplicateName = 14, + k_EResultAccessDenied = 15, + k_EResultTimeout = 16, + k_EResultBanned = 17, + k_EResultAccountNotFound = 18, + k_EResultInvalidSteamID = 19, + k_EResultServiceUnavailable = 20, + k_EResultNotLoggedOn = 21, + k_EResultPending = 22, + k_EResultEncryptionFailure = 23, + k_EResultInsufficientPrivilege = 24, + k_EResultLimitExceeded = 25, + k_EResultRevoked = 26, + k_EResultExpired = 27, + k_EResultAlreadyRedeemed = 28, + k_EResultDuplicateRequest = 29, + k_EResultAlreadyOwned = 30, + k_EResultIPNotFound = 31, + k_EResultPersistFailed = 32, + k_EResultLockingFailed = 33, + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, + k_EResultBlocked = 40, + k_EResultIgnored = 41, + k_EResultNoMatch = 42, + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, + k_EResultAccountNotFeatured = 45, + k_EResultAdministratorOK = 46, + k_EResultContentVersion = 47, + k_EResultTryAnotherCM = 48, + k_EResultPasswordRequiredToKickSession = 49, + k_EResultAlreadyLoggedInElsewhere = 50, + k_EResultSuspended = 51, + k_EResultCancelled = 52, + k_EResultDataCorruption = 53, + k_EResultDiskFull = 54, + k_EResultRemoteCallFailed = 55, + k_EResultPasswordUnset = 56, + k_EResultExternalAccountUnlinked = 57, + k_EResultPSNTicketInvalid = 58, + k_EResultExternalAccountAlreadyLinked = 59, + k_EResultRemoteFileConflict = 60, + k_EResultIllegalPassword = 61, + k_EResultSameAsPreviousValue = 62, + k_EResultAccountLogonDenied = 63, + k_EResultCannotUseOldPassword = 64, + k_EResultInvalidLoginAuthCode = 65, + k_EResultAccountLogonDeniedNoMail = 66, + k_EResultHardwareNotCapableOfIPT = 67, + k_EResultIPTInitError = 68, + k_EResultParentalControlRestricted = 69, + k_EResultFacebookQueryError = 70, + k_EResultExpiredLoginAuthCode = 71, + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, + k_EResultRequirePasswordReEntry = 77, + k_EResultValueOutOfRange = 78, + k_EResultUnexpectedError = 79, + k_EResultDisabled = 80, + k_EResultInvalidCEGSubmission = 81, + k_EResultRestrictedDevice = 82, + k_EResultRegionLocked = 83, + k_EResultRateLimitExceeded = 84, + k_EResultAccountLoginDeniedNeedTwoFactor = 85, + k_EResultItemDeleted = 86, + k_EResultAccountLoginDeniedThrottle = 87, + k_EResultTwoFactorCodeMismatch = 88, + k_EResultTwoFactorActivationCodeMismatch = 89, + k_EResultAccountAssociatedToMultiplePartners = 90, + k_EResultNotModified = 91, + k_EResultNoMobileDevice = 92, + k_EResultTimeNotSynced = 93, + k_EResultSmsCodeFailed = 94, + k_EResultAccountLimitExceeded = 95, + k_EResultAccountActivityLimitExceeded = 96, + k_EResultPhoneActivityLimitExceeded = 97, + k_EResultRefundToWallet = 98, + k_EResultEmailSendFailure = 99, + k_EResultNotSettled = 100, + k_EResultNeedCaptcha = 101, + k_EResultGSLTDenied = 102, + k_EResultGSOwnerDenied = 103, + k_EResultInvalidItemType = 104, + k_EResultIPBanned = 105, + k_EResultGSLTExpired = 106, +} +public enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, +} +public enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +} +public enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, + k_EBeginAuthSessionResultInvalidTicket = 1, + k_EBeginAuthSessionResultDuplicateRequest = 2, + k_EBeginAuthSessionResultInvalidVersion = 3, + k_EBeginAuthSessionResultGameMismatch = 4, + k_EBeginAuthSessionResultExpiredTicket = 5, +} +public enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, + k_EAuthSessionResponseUserNotConnectedToSteam = 1, + k_EAuthSessionResponseNoLicenseOrExpired = 2, + k_EAuthSessionResponseVACBanned = 3, + k_EAuthSessionResponseLoggedInElseWhere = 4, + k_EAuthSessionResponseVACCheckTimedOut = 5, + k_EAuthSessionResponseAuthTicketCanceled = 6, + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, + k_EAuthSessionResponseAuthTicketInvalid = 8, + k_EAuthSessionResponsePublisherIssuedBan = 9, +} +public enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, + k_EUserHasLicenseResultDoesNotHaveLicense = 1, + k_EUserHasLicenseResultNoAuth = 2, +} +public enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, + k_EAccountTypeMultiseat = 2, + k_EAccountTypeGameServer = 3, + k_EAccountTypeAnonGameServer = 4, + k_EAccountTypePending = 5, + k_EAccountTypeContentServer = 6, + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, + k_EAccountTypeAnonUser = 10, + k_EAccountTypeMax = 11, +} +public enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, + k_EAppReleaseState_Unavailable = 1, + k_EAppReleaseState_Prerelease = 2, + k_EAppReleaseState_PreloadOnly = 3, + k_EAppReleaseState_Released = 4, +} +public enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0, + k_EAppOwnershipFlags_OwnsLicense = 1, + k_EAppOwnershipFlags_FreeLicense = 2, + k_EAppOwnershipFlags_RegionRestricted = 4, + k_EAppOwnershipFlags_LowViolence = 8, + k_EAppOwnershipFlags_InvalidPlatform = 16, + k_EAppOwnershipFlags_SharedLicense = 32, + k_EAppOwnershipFlags_FreeWeekend = 64, + k_EAppOwnershipFlags_RetailLicense = 128, + k_EAppOwnershipFlags_LicenseLocked = 256, + k_EAppOwnershipFlags_LicensePending = 512, + k_EAppOwnershipFlags_LicenseExpired = 1024, + k_EAppOwnershipFlags_LicensePermanent = 2048, + k_EAppOwnershipFlags_LicenseRecurring = 4096, + k_EAppOwnershipFlags_LicenseCanceled = 8192, + k_EAppOwnershipFlags_AutoGrant = 16384, + k_EAppOwnershipFlags_PendingGift = 32768, + k_EAppOwnershipFlags_RentalNotActivated = 65536, + k_EAppOwnershipFlags_Rental = 131072, +} +public enum EAppType +{ + k_EAppType_Invalid = 0, + k_EAppType_Game = 1, + k_EAppType_Application = 2, + k_EAppType_Tool = 4, + k_EAppType_Demo = 8, + k_EAppType_Media_DEPRECATED = 16, + k_EAppType_DLC = 32, + k_EAppType_Guide = 64, + k_EAppType_Driver = 128, + k_EAppType_Config = 256, + k_EAppType_Hardware = 512, + k_EAppType_Franchise = 1024, + k_EAppType_Video = 2048, + k_EAppType_Plugin = 4096, + k_EAppType_Music = 8192, + k_EAppType_Series = 16384, + k_EAppType_Shortcut = 1073741824, + k_EAppType_DepotOnly = -2147483648, +} +public enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + k_ESteamUserStatTypeMAX = 6, +} +public enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, + k_EChatEntryTypeTyping = 2, + k_EChatEntryTypeInviteGame = 3, + k_EChatEntryTypeEmote = 4, + k_EChatEntryTypeLeftConversation = 6, + k_EChatEntryTypeEntered = 7, + k_EChatEntryTypeWasKicked = 8, + k_EChatEntryTypeWasBanned = 9, + k_EChatEntryTypeDisconnected = 10, + k_EChatEntryTypeHistoricalChat = 11, + k_EChatEntryTypeLinkBlocked = 14, +} +public enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, + k_EChatRoomEnterResponseDoesntExist = 2, + k_EChatRoomEnterResponseNotAllowed = 3, + k_EChatRoomEnterResponseFull = 4, + k_EChatRoomEnterResponseError = 5, + k_EChatRoomEnterResponseBanned = 6, + k_EChatRoomEnterResponseLimited = 7, + k_EChatRoomEnterResponseClanDisabled = 8, + k_EChatRoomEnterResponseCommunityBan = 9, + k_EChatRoomEnterResponseMemberBlockedYou = 10, + k_EChatRoomEnterResponseYouBlockedMember = 11, +} +public enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 4095, + k_EChatInstanceFlagClan = 524288, + k_EChatInstanceFlagLobby = 262144, + k_EChatInstanceFlagMMSLobby = 131072, +} +public enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1, + k_EMarketingMessageFlagsPlatformWindows = 2, + k_EMarketingMessageFlagsPlatformMac = 4, + k_EMarketingMessageFlagsPlatformLinux = 8, + k_EMarketingMessageFlagsPlatformRestrictions = 14, +} +public enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +} +public enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, + k_EBroadcastUploadResultOK = 1, + k_EBroadcastUploadResultInitFailed = 2, + k_EBroadcastUploadResultFrameFailed = 3, + k_EBroadcastUploadResultTimeout = 4, + k_EBroadcastUploadResultBandwidthExceeded = 5, + k_EBroadcastUploadResultLowFPS = 6, + k_EBroadcastUploadResultMissingKeyFrames = 7, + k_EBroadcastUploadResultNoConnection = 8, + k_EBroadcastUploadResultRelayFailed = 9, + k_EBroadcastUploadResultSettingsChanged = 10, + k_EBroadcastUploadResultMissingAudio = 11, + k_EBroadcastUploadResultTooFarBehind = 12, + k_EBroadcastUploadResultTranscodeBehind = 13, +} +public enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, + k_ELaunchOptionType_Default = 1, + k_ELaunchOptionType_SafeMode = 2, + k_ELaunchOptionType_Multiplayer = 3, + k_ELaunchOptionType_Config = 4, + k_ELaunchOptionType_OpenVR = 5, + k_ELaunchOptionType_Server = 6, + k_ELaunchOptionType_Editor = 7, + k_ELaunchOptionType_Manual = 8, + k_ELaunchOptionType_Benchmark = 9, + k_ELaunchOptionType_Option1 = 10, + k_ELaunchOptionType_Option2 = 11, + k_ELaunchOptionType_Option3 = 12, + k_ELaunchOptionType_OculusVR = 13, + k_ELaunchOptionType_OpenVROverlay = 14, + k_ELaunchOptionType_OSVR = 15, + k_ELaunchOptionType_Dialog = 1000, +} +public enum EVRHMDType +{ + k_eEVRHMDType_None = -1, + k_eEVRHMDType_Unknown = 0, + k_eEVRHMDType_HTC_Dev = 1, + k_eEVRHMDType_HTC_VivePre = 2, + k_eEVRHMDType_HTC_Vive = 3, + k_eEVRHMDType_HTC_Unknown = 20, + k_eEVRHMDType_Oculus_DK1 = 21, + k_eEVRHMDType_Oculus_DK2 = 22, + k_eEVRHMDType_Oculus_Rift = 23, + k_eEVRHMDType_Oculus_Unknown = 40, +} +public enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36, +} +public enum EFailureType +{ + k_EFailureFlushedCallbackQueue = 0, + k_EFailurePipeFail = 1, +} +public enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, + k_EFriendRelationshipMax = 8, +} +public enum EPersonaState +{ + k_EPersonaStateOffline = 0, + k_EPersonaStateOnline = 1, + k_EPersonaStateBusy = 2, + k_EPersonaStateAway = 3, + k_EPersonaStateSnooze = 4, + k_EPersonaStateLookingToTrade = 5, + k_EPersonaStateLookingToPlay = 6, + k_EPersonaStateMax = 7, +} +public enum EFriendFlags +{ + k_EFriendFlagNone = 0, + k_EFriendFlagBlocked = 1, + k_EFriendFlagFriendshipRequested = 2, + k_EFriendFlagImmediate = 4, + k_EFriendFlagClanMember = 8, + k_EFriendFlagOnGameServer = 16, + k_EFriendFlagRequestingFriendship = 128, + k_EFriendFlagRequestingInfo = 256, + k_EFriendFlagIgnored = 512, + k_EFriendFlagIgnoredFriend = 1024, + k_EFriendFlagSuggested = 2048, + k_EFriendFlagChatMember = 4096, + k_EFriendFlagAll = 65535, +} +public enum EUserRestriction +{ + k_nUserRestrictionNone = 0, + k_nUserRestrictionUnknown = 1, + k_nUserRestrictionAnyChat = 2, + k_nUserRestrictionVoiceChat = 4, + k_nUserRestrictionGroupChat = 8, + k_nUserRestrictionRating = 16, + k_nUserRestrictionGameInvites = 32, + k_nUserRestrictionTrading = 64, +} +public enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +} +public enum EPersonaChange +{ + k_EPersonaChangeName = 1, + k_EPersonaChangeStatus = 2, + k_EPersonaChangeComeOnline = 4, + k_EPersonaChangeGoneOffline = 8, + k_EPersonaChangeGamePlayed = 16, + k_EPersonaChangeGameServer = 32, + k_EPersonaChangeAvatar = 64, + k_EPersonaChangeJoinedSource = 128, + k_EPersonaChangeLeftSource = 256, + k_EPersonaChangeRelationshipChanged = 512, + k_EPersonaChangeNameFirstSet = 1024, + k_EPersonaChangeFacebookInfo = 2048, + k_EPersonaChangeNickname = 4096, + k_EPersonaChangeSteamLevel = 8192, +} +public enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, + k_ESteamAPICallFailureSteamGone = 0, + k_ESteamAPICallFailureNetworkFailure = 1, + k_ESteamAPICallFailureInvalidHandle = 2, + k_ESteamAPICallFailureMismatchedCallback = 3, +} +public enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1, +} +public enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1, +} +public enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +} +public enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond = 1, + eNoServersListedOnMasterServer = 2, +} +public enum ELobbyType +{ + k_ELobbyTypePrivate = 0, + k_ELobbyTypeFriendsOnly = 1, + k_ELobbyTypePublic = 2, + k_ELobbyTypeInvisible = 3, +} +public enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +} +public enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose = 0, + k_ELobbyDistanceFilterDefault = 1, + k_ELobbyDistanceFilterFar = 2, + k_ELobbyDistanceFilterWorldwide = 3, +} +public enum EChatMemberStateChange +{ + k_EChatMemberStateChangeEntered = 1, + k_EChatMemberStateChangeLeft = 2, + k_EChatMemberStateChangeDisconnected = 4, + k_EChatMemberStateChangeKicked = 8, + k_EChatMemberStateChangeBanned = 16, +} +public enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = 1, + k_ERemoteStoragePlatformOSX = 2, + k_ERemoteStoragePlatformPS3 = 4, + k_ERemoteStoragePlatformLinux = 8, + k_ERemoteStoragePlatformReserved2 = 16, + k_ERemoteStoragePlatformAll = -1, +} +public enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, +} +public enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + k_EWorkshopFileTypeCommunity = 0, + k_EWorkshopFileTypeMicrotransaction = 1, + k_EWorkshopFileTypeCollection = 2, + k_EWorkshopFileTypeArt = 3, + k_EWorkshopFileTypeVideo = 4, + k_EWorkshopFileTypeScreenshot = 5, + k_EWorkshopFileTypeGame = 6, + k_EWorkshopFileTypeSoftware = 7, + k_EWorkshopFileTypeConcept = 8, + k_EWorkshopFileTypeWebGuide = 9, + k_EWorkshopFileTypeIntegratedGuide = 10, + k_EWorkshopFileTypeMerch = 11, + k_EWorkshopFileTypeControllerBinding = 12, + k_EWorkshopFileTypeSteamworksAccessInvite = 13, + k_EWorkshopFileTypeSteamVideo = 14, + k_EWorkshopFileTypeGameManagedItem = 15, + k_EWorkshopFileTypeMax = 16, +} +public enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +} +public enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +} +public enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +} +public enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1, +} +public enum EUGCReadAction +{ + k_EUGCRead_ContinueReadingUntilFinished = 0, + k_EUGCRead_ContinueReading = 1, + k_EUGCRead_Close = 2, +} +public enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3, +} +public enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, + k_ELeaderboardSortMethodDescending = 2, +} +public enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, + k_ELeaderboardDisplayTypeTimeSeconds = 2, + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, +} +public enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, + k_ELeaderboardUploadScoreMethodForceUpdate = 2, +} +public enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +} +public enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, + k_EP2PSessionErrorNoRightsToApp = 2, + k_EP2PSessionErrorDestinationNotLoggedIn = 3, + k_EP2PSessionErrorTimeout = 4, + k_EP2PSessionErrorMax = 5, +} +public enum EP2PSend +{ + k_EP2PSendUnreliable = 0, + k_EP2PSendUnreliableNoDelay = 1, + k_EP2PSendReliable = 2, + k_EP2PSendReliableWithBuffering = 3, +} +public enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + k_ESNetSocketStateConnected = 1, + k_ESNetSocketStateInitiated = 10, + k_ESNetSocketStateLocalCandidatesFound = 11, + k_ESNetSocketStateReceivedRemoteCandidates = 12, + k_ESNetSocketStateChallengeHandshake = 15, + k_ESNetSocketStateDisconnecting = 21, + k_ESNetSocketStateLocalDisconnect = 22, + k_ESNetSocketStateTimeoutDuringConnect = 23, + k_ESNetSocketStateRemoteEndDisconnected = 24, + k_ESNetSocketStateConnectionBroken = 25, +} +public enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +} +public enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5, +} +public enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3, +} +public enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET = 1, + k_EHTTPMethodHEAD = 2, + k_EHTTPMethodPOST = 3, + k_EHTTPMethodPUT = 4, + k_EHTTPMethodDELETE = 5, + k_EHTTPMethodOPTIONS = 6, + k_EHTTPMethodPATCH = 7, +} +public enum EHTTPStatusCode +{ + k_EHTTPStatusCodeInvalid = 0, + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + k_EHTTPStatusCode307TemporaryRedirect = 307, + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, + k_EHTTPStatusCode402PaymentRequired = 402, + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, + k_EHTTPStatusCode429TooManyRequests = 429, + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +} +public enum ESteamControllerPad +{ + k_ESteamControllerPad_Left = 0, + k_ESteamControllerPad_Right = 1, +} +public enum EControllerSource +{ + k_EControllerSource_None = 0, + k_EControllerSource_LeftTrackpad = 1, + k_EControllerSource_RightTrackpad = 2, + k_EControllerSource_Joystick = 3, + k_EControllerSource_ABXY = 4, + k_EControllerSource_Switch = 5, + k_EControllerSource_LeftTrigger = 6, + k_EControllerSource_RightTrigger = 7, + k_EControllerSource_Gyro = 8, + k_EControllerSource_Count = 9, +} +public enum EControllerSourceMode +{ + k_EControllerSourceMode_None = 0, + k_EControllerSourceMode_Dpad = 1, + k_EControllerSourceMode_Buttons = 2, + k_EControllerSourceMode_FourButtons = 3, + k_EControllerSourceMode_AbsoluteMouse = 4, + k_EControllerSourceMode_RelativeMouse = 5, + k_EControllerSourceMode_JoystickMove = 6, + k_EControllerSourceMode_JoystickCamera = 7, + k_EControllerSourceMode_ScrollWheel = 8, + k_EControllerSourceMode_Trigger = 9, + k_EControllerSourceMode_TouchMenu = 10, + k_EControllerSourceMode_MouseJoystick = 11, + k_EControllerSourceMode_MouseRegion = 12, + k_EControllerSourceMode_RadialMenu = 13, + k_EControllerSourceMode_Switches = 14, +} +public enum EControllerActionOrigin +{ + k_EControllerActionOrigin_None = 0, + k_EControllerActionOrigin_A = 1, + k_EControllerActionOrigin_B = 2, + k_EControllerActionOrigin_X = 3, + k_EControllerActionOrigin_Y = 4, + k_EControllerActionOrigin_LeftBumper = 5, + k_EControllerActionOrigin_RightBumper = 6, + k_EControllerActionOrigin_LeftGrip = 7, + k_EControllerActionOrigin_RightGrip = 8, + k_EControllerActionOrigin_Start = 9, + k_EControllerActionOrigin_Back = 10, + k_EControllerActionOrigin_LeftPad_Touch = 11, + k_EControllerActionOrigin_LeftPad_Swipe = 12, + k_EControllerActionOrigin_LeftPad_Click = 13, + k_EControllerActionOrigin_LeftPad_DPadNorth = 14, + k_EControllerActionOrigin_LeftPad_DPadSouth = 15, + k_EControllerActionOrigin_LeftPad_DPadWest = 16, + k_EControllerActionOrigin_LeftPad_DPadEast = 17, + k_EControllerActionOrigin_RightPad_Touch = 18, + k_EControllerActionOrigin_RightPad_Swipe = 19, + k_EControllerActionOrigin_RightPad_Click = 20, + k_EControllerActionOrigin_RightPad_DPadNorth = 21, + k_EControllerActionOrigin_RightPad_DPadSouth = 22, + k_EControllerActionOrigin_RightPad_DPadWest = 23, + k_EControllerActionOrigin_RightPad_DPadEast = 24, + k_EControllerActionOrigin_LeftTrigger_Pull = 25, + k_EControllerActionOrigin_LeftTrigger_Click = 26, + k_EControllerActionOrigin_RightTrigger_Pull = 27, + k_EControllerActionOrigin_RightTrigger_Click = 28, + k_EControllerActionOrigin_LeftStick_Move = 29, + k_EControllerActionOrigin_LeftStick_Click = 30, + k_EControllerActionOrigin_LeftStick_DPadNorth = 31, + k_EControllerActionOrigin_LeftStick_DPadSouth = 32, + k_EControllerActionOrigin_LeftStick_DPadWest = 33, + k_EControllerActionOrigin_LeftStick_DPadEast = 34, + k_EControllerActionOrigin_Gyro_Move = 35, + k_EControllerActionOrigin_Gyro_Pitch = 36, + k_EControllerActionOrigin_Gyro_Yaw = 37, + k_EControllerActionOrigin_Gyro_Roll = 38, + k_EControllerActionOrigin_Count = 39, +} +public enum EControllerActivationType +{ + k_EControllerActivationType_None = 0, + k_EControllerActivationType_FullPress = 1, + k_EControllerActivationType_SoftPress = 2, + k_EControllerActivationType_StartPress = 3, + k_EControllerActivationType_Release = 4, + k_EControllerActivationType_LongPress = 5, + k_EControllerActivationType_DoublePress = 6, + k_EControllerActivationType_Analog = 7, +} +public enum EControllerPressureButton +{ + k_EControllerPressureButton_LeftTrackPad = 0, + k_EControllerPressureButton_RightTrackPad = 1, + k_EControllerPressureButton_LeftBumper = 2, + k_EControllerPressureButton_RightBumper = 3, + k_EControllerPressureButton_LeftGripLower = 4, + k_EControllerPressureButton_RightGripLower = 5, + k_EControllerPressureButton_LeftGripUpper = 6, + k_EControllerPressureButton_RightGripUpper = 7, + k_EControllerPressureButton_Invalid = 8, +} +public enum EControllerActivatorOutputAxis +{ + k_EOutputAxisLeftTrigger = 0, + k_EOutputAxisRightTrigger = 1, + k_EOutputAxisLeftThumbXPos = 2, + k_EOutputAxisLeftThumbXNeg = 3, + k_EOutputAxisLeftThumbYPos = 4, + k_EOutputAxisLeftThumbYNeg = 5, + k_EOutputAxisRightThumbXPos = 6, + k_EOutputAxisRightThumbXNeg = 7, + k_EOutputAxisRightThumbYPos = 8, + k_EOutputAxisRightThumbYNeg = 9, +} +public enum EControllerConfigFeature +{ + k_EControllerConfigFeature_None = 0, + k_EControllerConfigFeature_Gamepad = 1, + k_EControllerConfigFeature_Keyboard = 2, + k_EControllerConfigFeature_Mouse = 3, + k_EControllerConfigFeature_Gyro = 4, + k_EControllerConfigFeature_TouchMenu = 5, + k_EControllerConfigFeature_ModeShift = 6, + k_EControllerConfigFeature_ActionSet = 7, + k_EControllerConfigFeature_Activator = 8, +} +public enum EControllerPopupMenuActivationType +{ + k_EMenuButtonPress = 0, + k_EMenuButtonRelease = 1, + k_EMenuTouchRelease = 2, + k_EMenuTouchAlways = 3, +} +public enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, + k_EUGCMatchingUGCType_All = -1, +} +public enum EUserUGCList +{ + k_EUserUGCList_Published = 0, + k_EUserUGCList_VotedOn = 1, + k_EUserUGCList_VotedUp = 2, + k_EUserUGCList_VotedDown = 3, + k_EUserUGCList_WillVoteLater = 4, + k_EUserUGCList_Favorited = 5, + k_EUserUGCList_Subscribed = 6, + k_EUserUGCList_UsedOrPlayed = 7, + k_EUserUGCList_Followed = 8, +} +public enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc = 0, + k_EUserUGCListSortOrder_CreationOrderAsc = 1, + k_EUserUGCListSortOrder_TitleAsc = 2, + k_EUserUGCListSortOrder_LastUpdatedDesc = 3, + k_EUserUGCListSortOrder_SubscriptionDateDesc = 4, + k_EUserUGCListSortOrder_VoteScoreDesc = 5, + k_EUserUGCListSortOrder_ForModeration = 6, +} +public enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +} +public enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, + k_EItemUpdateStatusPreparingConfig = 1, + k_EItemUpdateStatusPreparingContent = 2, + k_EItemUpdateStatusUploadingContent = 3, + k_EItemUpdateStatusUploadingPreviewFile = 4, + k_EItemUpdateStatusCommittingChanges = 5, +} +public enum EItemState +{ + k_EItemStateNone = 0, + k_EItemStateSubscribed = 1, + k_EItemStateLegacyItem = 2, + k_EItemStateInstalled = 4, + k_EItemStateNeedsUpdate = 8, + k_EItemStateDownloading = 16, + k_EItemStateDownloadPending = 32, +} +public enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, +} +public enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, + k_EItemPreviewType_YouTubeVideo = 1, + k_EItemPreviewType_Sketchfab = 2, + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, + k_EItemPreviewType_EnvironmentMap_LatLong = 4, + k_EItemPreviewType_ReservedMax = 255, +} +public enum EHTMLMouseButton +{ + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, +} +public enum EMouseCursor +{ + dc_user = 0, + dc_none = 1, + dc_arrow = 2, + dc_ibeam = 3, + dc_hourglass = 4, + dc_waitarrow = 5, + dc_crosshair = 6, + dc_up = 7, + dc_sizenw = 8, + dc_sizese = 9, + dc_sizene = 10, + dc_sizesw = 11, + dc_sizew = 12, + dc_sizee = 13, + dc_sizen = 14, + dc_sizes = 15, + dc_sizewe = 16, + dc_sizens = 17, + dc_sizeall = 18, + dc_no = 19, + dc_hand = 20, + dc_blank = 21, + dc_middle_pan = 22, + dc_north_pan = 23, + dc_north_east_pan = 24, + dc_east_pan = 25, + dc_south_east_pan = 26, + dc_south_pan = 27, + dc_south_west_pan = 28, + dc_west_pan = 29, + dc_north_west_pan = 30, + dc_alias = 31, + dc_cell = 32, + dc_colresize = 33, + dc_copycur = 34, + dc_verticaltext = 35, + dc_rowresize = 36, + dc_zoomin = 37, + dc_zoomout = 38, + dc_help = 39, + dc_custom = 40, + dc_last = 41, +} +public enum EHTMLKeyModifiers +{ + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1, + k_eHTMLKeyModifier_CtrlDown = 2, + k_eHTMLKeyModifier_ShiftDown = 4, +} +public enum ESteamItemFlags +{ + k_ESteamItemNoTrade = 1, + k_ESteamItemRemoved = 256, + k_ESteamItemConsumed = 512, +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamID +{ + public SteamID_t m_steamid; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamID_t +{ + public SteamIDComponent_t m_comp; + public ulong m_unAll64Bits; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamIDComponent_t +{ + public uint m_unAccountID; + public uint m_unAccountInstance; + public uint m_EAccountType; + public EUniverse m_EUniverse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameID_t +{ + public uint m_nAppID; + public uint m_nType; + public uint m_nModID; +} +[StructLayout(LayoutKind.Sequential)] public struct ValvePackingSentinel_t +{ + public uint m_u32; + public ulong m_u64; + public char m_u16; + public double m_d; +} +[StructLayout(LayoutKind.Sequential)] public struct CallbackMsg_t +{ + public uint m_hSteamUser; + public int m_iCallback; + public IntPtr m_pubParam; // uint8 * + public int m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServerConnectFailure_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bStillRetrying; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamServersDisconnected_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ClientGameServerDeny_t +{ + public uint m_uAppID; + public uint m_unGameServerIP; + public char m_usGameServerPort; + public char m_bSecure; + public uint m_uReason; +} +[StructLayout(LayoutKind.Sequential)] public struct ValidateAuthTicketResponse_t +{ + public ulong m_SteamID; + public EAuthSessionResponse m_eAuthSessionResponse; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct MicroTxnAuthorizationResponse_t +{ + public uint m_unAppID; + public ulong m_ulOrderID; + public byte m_bAuthorized; +} +[StructLayout(LayoutKind.Sequential)] public struct EncryptedAppTicketResponse_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GetAuthSessionTicketResponse_t +{ + public uint m_hAuthTicket; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct GameWebCallback_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct StoreAuthURLResponse_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)] + public string m_szURL; //char[512] +} +[StructLayout(LayoutKind.Sequential)] public struct FriendGameInfo_t +{ + public ulong m_gameID; + public uint m_unGameIP; + public char m_usGamePort; + public char m_usQueryPort; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendSessionStateInfo_t +{ + public uint m_uiOnlineSessionInstances; + public byte m_uiPublishedToFriendsSessionInstance; +} +[StructLayout(LayoutKind.Sequential)] public struct PersonaStateChange_t +{ + public ulong m_ulSteamID; + public int m_nChangeFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct GameOverlayActivated_t +{ + public byte m_bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct GameServerChangeRequested_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchServer; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchPassword; //char[64] +} +[StructLayout(LayoutKind.Sequential)] public struct GameLobbyJoinRequested_t +{ + public ulong m_steamIDLobby; + public ulong m_steamIDFriend; +} +[StructLayout(LayoutKind.Sequential)] public struct AvatarImageLoaded_t +{ + public ulong m_steamID; + public int m_iImage; + public int m_iWide; + public int m_iTall; +} +[StructLayout(LayoutKind.Sequential)] public struct ClanOfficerListResponse_t +{ + public ulong m_steamIDClan; + public int m_cOfficers; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendRichPresenceUpdate_t +{ + public ulong m_steamIDFriend; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameRichPresenceJoinRequested_t +{ + public ulong m_steamIDFriend; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchConnect; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedClanChatMsg_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatJoin_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedChatLeave_t +{ + public ulong m_steamIDClanChat; + public ulong m_steamIDUser; + [MarshalAs(UnmanagedType.I1)] + public bool m_bKicked; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDropped; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadClanActivityCountsResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct JoinClanChatRoomCompletionResult_t +{ + public ulong m_steamIDClanChat; + public EChatRoomEnterResponse m_eChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct GameConnectedFriendChatMsg_t +{ + public ulong m_steamIDUser; + public int m_iMessageID; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsGetFollowerCount_t +{ + public EResult m_eResult; + public ulong m_steamID; + public int m_nCount; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsIsFollowing_t +{ + public EResult m_eResult; + public ulong m_steamID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bIsFollowing; +} +[StructLayout(LayoutKind.Sequential)] public struct FriendsEnumerateFollowingList_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public CSteamID[] m_rgSteamID; //CSteamID[50] + public int m_nResultsReturned; + public int m_nTotalResultCount; +} +[StructLayout(LayoutKind.Sequential)] public struct SetPersonaNameResponse_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocalSuccess; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct LowBatteryPower_t +{ + public byte m_nMinutesBatteryLeft; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamAPICallCompleted_t +{ + public ulong m_hAsyncCall; + public int m_iCallback; + public uint m_cubParam; +} +[StructLayout(LayoutKind.Sequential)] public struct CheckFileSignature_t +{ + public ECheckFileSignature m_eCheckFileSignature; +} +[StructLayout(LayoutKind.Sequential)] public struct GamepadTextInputDismissed_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bSubmitted; + public uint m_unSubmittedText; +} +[StructLayout(LayoutKind.Sequential)] public struct MatchMakingKeyValuePair_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szKey; //char[256] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szValue; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct servernetadr_t +{ + public char m_usConnectionPort; + public char m_usQueryPort; + public uint m_unIP; +} +[StructLayout(LayoutKind.Sequential)] public struct gameserveritem_t +{ + public servernetadr_t m_NetAdr; + public int m_nPing; + [MarshalAs(UnmanagedType.I1)] + public bool m_bHadSuccessfulResponse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bDoNotRefresh; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szGameDir; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string m_szMap; //char[32] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szGameDescription; //char[64] + public uint m_nAppID; + public int m_nPlayers; + public int m_nMaxPlayers; + public int m_nBotPlayers; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPassword; + [MarshalAs(UnmanagedType.I1)] + public bool m_bSecure; + public uint m_ulTimeLastPlayed; + public int m_nServerVersion; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_szServerName; //char[64] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_szGameTags; //char[128] + public ulong m_steamID; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListChanged_t +{ + public uint m_nIP; + public uint m_nQueryPort; + public uint m_nConnPort; + public uint m_nAppID; + public uint m_nFlags; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAdd; + public uint m_unAccountId; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyInvite_t +{ + public ulong m_ulSteamIDUser; + public ulong m_ulSteamIDLobby; + public ulong m_ulGameID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyEnter_t +{ + public ulong m_ulSteamIDLobby; + public uint m_rgfChatPermissions; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocked; + public uint m_EChatRoomEnterResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyDataUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDMember; + public byte m_bSuccess; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatUpdate_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUserChanged; + public ulong m_ulSteamIDMakingChange; + public uint m_rgfChatMemberStateChange; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyChatMsg_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDUser; + public byte m_eChatEntryType; + public uint m_iChatID; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyGameCreated_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDGameServer; + public uint m_unIP; + public char m_usPort; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyMatchList_t +{ + public uint m_nLobbiesMatching; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyKicked_t +{ + public ulong m_ulSteamIDLobby; + public ulong m_ulSteamIDAdmin; + public byte m_bKickedDueToDisconnect; +} +[StructLayout(LayoutKind.Sequential)] public struct LobbyCreated_t +{ + public EResult m_eResult; + public ulong m_ulSteamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct PSNGameBootInviteResult_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bGameBootInviteExists; + public ulong m_steamIDLobby; +} +[StructLayout(LayoutKind.Sequential)] public struct FavoritesListAccountsUpdated_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamParamStringArray_t +{ + public IntPtr m_ppStrings; // const char ** + public int m_nNumStrings; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedClient_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumDownloads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncedServer_t +{ + public uint m_nAppID; + public EResult m_eResult; + public int m_unNumUploads; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncProgress_t +{ + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchCurrentFile; //char[260] + public uint m_nAppID; + public uint m_uBytesTransferredThisChunk; + public double m_dAppPercentComplete; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUploading; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageAppSyncStatusCheck_t +{ + public uint m_nAppID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileShareResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_rgchFilename; //char[260] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDeletePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeSubscribed; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUnsubscribePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdatePublishedFileResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageDownloadUGCResult_t +{ + public EResult m_eResult; + public ulong m_hFile; + public uint m_nAppID; + public int m_nSizeInBytes; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public ulong m_ulSteamIDOwner; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedFileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_hFile; + public ulong m_hPreviewFile; + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public EWorkshopFileType m_eFileType; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.R4)] + public float[] m_rgScore; //float[50] + public uint m_nAppId; + public uint m_unStartIndex; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + public EResult m_eResult; + public ulong m_unPublishedFileId; + public int m_nVotesFor; + public int m_nVotesAgainst; + public int m_nReports; + public float m_fScore; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileSubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUnsubscribed_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileDeleted_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageUserVoteDetails_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopVote m_eVote; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageSetUserPublishedFileActionResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public EWorkshopFileAction m_eAction; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + public EResult m_eResult; + public EWorkshopFileAction m_eAction; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U8)] + public ulong[] m_rgPublishedFileId; //ulong[50] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.U4)] + public uint[] m_rgRTimeUpdated; //uint[50] +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishFileProgress_t +{ + public double m_dPercentFile; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPreview; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStoragePublishedFileUpdated_t +{ + public ulong m_nPublishedFileId; + public uint m_nAppID; + public ulong m_ulUnused; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileWriteAsyncComplete_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileReadAsyncComplete_t +{ + public ulong m_hFileReadAsync; + public EResult m_eResult; + public uint m_nOffset; + public uint m_cubRead; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardEntry_t +{ + public ulong m_steamIDUser; + public int m_nGlobalRank; + public int m_nScore; + public int m_cDetails; + public ulong m_hUGC; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsStored_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementStored_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bGroupAchievement; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + public uint m_nCurProgress; + public uint m_nMaxProgress; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardFindResult_t +{ + public ulong m_hSteamLeaderboard; + public byte m_bLeaderboardFound; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoresDownloaded_t +{ + public ulong m_hSteamLeaderboard; + public ulong m_hSteamLeaderboardEntries; + public int m_cEntryCount; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardScoreUploaded_t +{ + public byte m_bSuccess; + public ulong m_hSteamLeaderboard; + public int m_nScore; + public byte m_bScoreChanged; + public int m_nGlobalRankNew; + public int m_nGlobalRankPrevious; +} +[StructLayout(LayoutKind.Sequential)] public struct NumberOfCurrentPlayers_t +{ + public byte m_bSuccess; + public int m_cPlayers; +} +[StructLayout(LayoutKind.Sequential)] public struct UserStatsUnloaded_t +{ + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct UserAchievementIconFetched_t +{ + public ulong m_nGameID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchAchievementName; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bAchieved; + public int m_nIconHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalAchievementPercentagesReady_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct LeaderboardUGCSet_t +{ + public EResult m_eResult; + public ulong m_hSteamLeaderboard; +} +[StructLayout(LayoutKind.Sequential)] public struct PS3TrophiesInstalled_t +{ + public ulong m_nGameID; + public EResult m_eResult; + public ulong m_ulRequiredDiskSpace; +} +[StructLayout(LayoutKind.Sequential)] public struct GlobalStatsReceived_t +{ + public ulong m_nGameID; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct DlcInstalled_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct RegisterActivationCodeResponse_t +{ + public ERegisterActivationCodeResult m_eResult; + public uint m_unPackageRegistered; +} +[StructLayout(LayoutKind.Sequential)] public struct AppProofOfPurchaseKeyResponse_t +{ + public EResult m_eResult; + public uint m_nAppID; + public uint m_cchKeyLength; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)] + public string m_rgchKey; //char[240] +} +[StructLayout(LayoutKind.Sequential)] public struct FileDetailsResult_t +{ + public EResult m_eResult; + public ulong m_ulFileSize; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U1)] + public byte[] m_FileSHA; //byte[20] + public uint m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionState_t +{ + public byte m_bConnectionActive; + public byte m_bConnecting; + public byte m_eP2PSessionError; + public byte m_bUsingRelay; + public int m_nBytesQueuedForSend; + public int m_nPacketsQueuedForSend; + public uint m_nRemoteIP; + public char m_nRemotePort; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionRequest_t +{ + public ulong m_steamIDRemote; +} +[StructLayout(LayoutKind.Sequential)] public struct P2PSessionConnectFail_t +{ + public ulong m_steamIDRemote; + public byte m_eP2PSessionError; +} +[StructLayout(LayoutKind.Sequential)] public struct SocketStatusCallback_t +{ + public uint m_hSocket; + public uint m_hListenSocket; + public ulong m_steamIDRemote; + public int m_eSNetSocketState; +} +[StructLayout(LayoutKind.Sequential)] public struct ScreenshotReady_t +{ + public uint m_hLocal; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bShuffled; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool m_bLooped; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public float m_flNewVolume; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int nID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public int m_nPlayingRepeatStatus; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestCompleted_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + [MarshalAs(UnmanagedType.I1)] + public bool m_bRequestSuccessful; + public EHTTPStatusCode m_eStatusCode; + public uint m_unBodySize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestHeadersReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; +} +[StructLayout(LayoutKind.Sequential)] public struct HTTPRequestDataReceived_t +{ + public uint m_hRequest; + public ulong m_ulContextValue; + public uint m_cOffset; + public uint m_cBytesReceived; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUnifiedMessagesSendMethodResult_t +{ + public ulong m_hHandle; + public ulong m_unContext; + public EResult m_eResult; + public uint m_unResponseSize; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerAnalogActionData_t +{ + public EControllerSourceMode eMode; + public float x; + public float y; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerDigitalActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bState; + [MarshalAs(UnmanagedType.I1)] + public bool bActive; +} +[StructLayout(LayoutKind.Sequential)] public struct ControllerMotionData_t +{ + public float rotQuatX; + public float rotQuatY; + public float rotQuatZ; + public float rotQuatW; + public float posAccelX; + public float posAccelY; + public float posAccelZ; + public float rotVelX; + public float rotVelY; + public float rotVelZ; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCDetails_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + public EWorkshopFileType m_eFileType; + public uint m_nCreatorAppID; + public uint m_nConsumerAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] + public string m_rgchTitle; //char[129] + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8000)] + public string m_rgchDescription; //char[8000] + public ulong m_ulSteamIDOwner; + public uint m_rtimeCreated; + public uint m_rtimeUpdated; + public uint m_rtimeAddedToUserList; + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1025)] + public string m_rgchTags; //char[1025] + public ulong m_hFile; + public ulong m_hPreviewFile; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string m_pchFileName; //char[260] + public int m_nFileSize; + public int m_nPreviewFileSize; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] + public uint m_unVotesUp; + public uint m_unVotesDown; + public float m_flScore; + public uint m_unNumChildren; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCQueryCompleted_t +{ + public ulong m_handle; + public EResult m_eResult; + public uint m_unNumResultsReturned; + public uint m_unTotalMatchingResults; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamUGCRequestUGCDetailsResult_t +{ + public SteamUGCDetails_t m_details; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; +} +[StructLayout(LayoutKind.Sequential)] public struct CreateItemResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct SubmitItemUpdateResult_t +{ + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +} +[StructLayout(LayoutKind.Sequential)] public struct DownloadItemResult_t +{ + public uint m_unAppID; + public ulong m_nPublishedFileId; + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct UserFavoriteItemsListChanged_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bWasAddRequest; +} +[StructLayout(LayoutKind.Sequential)] public struct SetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteUp; +} +[StructLayout(LayoutKind.Sequential)] public struct GetUserItemVoteResult_t +{ + public ulong m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedUp; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedDown; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteSkipped; +} +[StructLayout(LayoutKind.Sequential)] public struct StartPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct StopPlaytimeTrackingResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public uint m_nAppID; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_BrowserReady_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NeedsPaint_t +{ + public uint unBrowserHandle; + public IntPtr pBGRA; // const char * + public uint unWide; + public uint unTall; + public uint unUpdateX; + public uint unUpdateY; + public uint unUpdateWide; + public uint unUpdateTall; + public uint unScrollX; + public uint unScrollY; + public float flPageScale; + public uint unPageSerial; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StartRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchTarget; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CloseBrowser_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_URLChanged_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPostData; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; + public IntPtr pchPageTitle; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bNewNavigation; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FinishedRequest_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public IntPtr pchPageTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_OpenLinkInNewTab_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ChangedTitle_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SearchResults_t +{ + public uint unBrowserHandle; + public uint unResults; + public uint unCurrentMatch; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_CanGoBackAndForward_t +{ + public uint unBrowserHandle; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoBack; + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoForward; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HorizontalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_VerticalScroll_t +{ + public uint unBrowserHandle; + public uint unScrollMax; + public uint unScrollCurrent; + public float flPageScale; + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; + public uint unPageSize; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_LinkAtPosition_t +{ + public uint unBrowserHandle; + public uint x; + public uint y; + public IntPtr pchURL; // const char * + [MarshalAs(UnmanagedType.I1)] + public bool bInput; + [MarshalAs(UnmanagedType.I1)] + public bool bLiveLink; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSAlert_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_JSConfirm_t +{ + public uint unBrowserHandle; + public IntPtr pchMessage; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_FileOpenDialog_t +{ + public uint unBrowserHandle; + public IntPtr pchTitle; // const char * + public IntPtr pchInitialFile; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_NewWindow_t +{ + public uint unBrowserHandle; + public IntPtr pchURL; // const char * + public uint unX; + public uint unY; + public uint unWide; + public uint unTall; + public uint unNewWindow_BrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_SetCursor_t +{ + public uint unBrowserHandle; + public uint eMouseCursor; +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_StatusText_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_ShowToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_UpdateToolTip_t +{ + public uint unBrowserHandle; + public IntPtr pchMsg; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct HTML_HideToolTip_t +{ + public uint unBrowserHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamItemDetails_t +{ + public ulong m_itemId; + public int m_iDefinition; + public char m_unQuantity; + public char m_unFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryResultReady_t +{ + public int m_handle; + public EResult m_result; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamInventoryFullUpdate_t +{ + public int m_handle; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EBroadcastUploadResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EResult m_eResult; + public uint m_unVideoAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; //char[256] +} +[StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext +{ + public IntPtr m_pSteamClient; // class ISteamClient * + public IntPtr m_pSteamUser; // class ISteamUser * + public IntPtr m_pSteamFriends; // class ISteamFriends * + public IntPtr m_pSteamUtils; // class ISteamUtils * + public IntPtr m_pSteamMatchmaking; // class ISteamMatchmaking * + public IntPtr m_pSteamUserStats; // class ISteamUserStats * + public IntPtr m_pSteamApps; // class ISteamApps * + public IntPtr m_pSteamMatchmakingServers; // class ISteamMatchmakingServers * + public IntPtr m_pSteamNetworking; // class ISteamNetworking * + public IntPtr m_pSteamRemoteStorage; // class ISteamRemoteStorage * + public IntPtr m_pSteamScreenshots; // class ISteamScreenshots * + public IntPtr m_pSteamHTTP; // class ISteamHTTP * + public IntPtr m_pSteamUnifiedMessages; // class ISteamUnifiedMessages * + public IntPtr m_pController; // class ISteamController * + public IntPtr m_pSteamUGC; // class ISteamUGC * + public IntPtr m_pSteamAppList; // class ISteamAppList * + public IntPtr m_pSteamMusic; // class ISteamMusic * + public IntPtr m_pSteamMusicRemote; // class ISteamMusicRemote * + public IntPtr m_pSteamHTMLSurface; // class ISteamHTMLSurface * + public IntPtr m_pSteamInventory; // class ISteamInventory * + public IntPtr m_pSteamVideo; // class ISteamVideo * +} +[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase +{ + public byte m_nCallbackFlags; + public int m_iCallback; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallResult +{ + public ulong m_hAPICall; + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallback +{ + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientApprove_t +{ + public ulong m_SteamID; + public ulong m_OwnerSteamID; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientDeny_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchOptionalText; //char[128] +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientKick_t +{ + public ulong m_SteamID; + public EDenyReason m_eDenyReason; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientAchievementStatus_t +{ + public ulong m_SteamID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_pchAchievement; //char[128] + [MarshalAs(UnmanagedType.I1)] + public bool m_bUnlocked; +} +[StructLayout(LayoutKind.Sequential)] public struct GSPolicyResponse_t +{ + public byte m_bSecure; +} +[StructLayout(LayoutKind.Sequential)] public struct GSGameplayStats_t +{ + public EResult m_eResult; + public int m_nRank; + public uint m_unTotalConnects; + public uint m_unTotalMinutesPlayed; +} +[StructLayout(LayoutKind.Sequential)] public struct GSClientGroupStatus_t +{ + public ulong m_SteamIDUser; + public ulong m_SteamIDGroup; + [MarshalAs(UnmanagedType.I1)] + public bool m_bMember; + [MarshalAs(UnmanagedType.I1)] + public bool m_bOfficer; +} +[StructLayout(LayoutKind.Sequential)] public struct GSReputation_t +{ + public EResult m_eResult; + public uint m_unReputationScore; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + public uint m_unBannedIP; + public char m_usBannedPort; + public ulong m_ulBannedGameID; + public uint m_unBanExpires; +} +[StructLayout(LayoutKind.Sequential)] public struct AssociateWithClanResult_t +{ + public EResult m_eResult; +} +[StructLayout(LayoutKind.Sequential)] public struct ComputeNewPlayerCompatibilityResult_t +{ + public EResult m_eResult; + public int m_cPlayersThatDontLikeCandidate; + public int m_cPlayersThatCandidateDoesntLike; + public int m_cClanPlayersThatDontLikeCandidate; + public ulong m_SteamIDCandidate; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsReceived_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsStored_t +{ + public EResult m_eResult; + public ulong m_steamIDUser; +} +[StructLayout(LayoutKind.Sequential)] public struct GSStatsUnloaded_t +{ + public ulong m_steamIDUser; +} + +public class SteamAPI +{ +public static void Init(uint appId) +{ +SteamAPIInterop.SteamAPI_RestartAppIfNecessary (appId); +SteamAPIInterop.SteamAPI_Init (); +} + +public static void RunCallbacks() +{ +SteamAPIInterop.SteamAPI_RunCallbacks (); +} + +public static void RegisterCallback(IntPtr pCallback, int iCallback) +{ +SteamAPIInterop.SteamAPI_RegisterCallback (pCallback, iCallback); +} + +public static void UnregisterCallback(IntPtr pCallback) +{ +SteamAPIInterop.SteamAPI_UnregisterCallback (pCallback); +} + +public const int k_iSteamUserCallbacks = 100; +public const int k_iSteamGameServerCallbacks = 200; +public const int k_iSteamFriendsCallbacks = 300; +public const int k_iSteamBillingCallbacks = 400; +public const int k_iSteamMatchmakingCallbacks = 500; +public const int k_iSteamContentServerCallbacks = 600; +public const int k_iSteamUtilsCallbacks = 700; +public const int k_iClientFriendsCallbacks = 800; +public const int k_iClientUserCallbacks = 900; +public const int k_iSteamAppsCallbacks = 1000; +public const int k_iSteamUserStatsCallbacks = 1100; +public const int k_iSteamNetworkingCallbacks = 1200; +public const int k_iClientRemoteStorageCallbacks = 1300; +public const int k_iClientDepotBuilderCallbacks = 1400; +public const int k_iSteamGameServerItemsCallbacks = 1500; +public const int k_iClientUtilsCallbacks = 1600; +public const int k_iSteamGameCoordinatorCallbacks = 1700; +public const int k_iSteamGameServerStatsCallbacks = 1800; +public const int k_iSteam2AsyncCallbacks = 1900; +public const int k_iSteamGameStatsCallbacks = 2000; +public const int k_iClientHTTPCallbacks = 2100; +public const int k_iClientScreenshotsCallbacks = 2200; +public const int k_iSteamScreenshotsCallbacks = 2300; +public const int k_iClientAudioCallbacks = 2400; +public const int k_iClientUnifiedMessagesCallbacks = 2500; +public const int k_iSteamStreamLauncherCallbacks = 2600; +public const int k_iClientControllerCallbacks = 2700; +public const int k_iSteamControllerCallbacks = 2800; +public const int k_iClientParentalSettingsCallbacks = 2900; +public const int k_iClientDeviceAuthCallbacks = 3000; +public const int k_iClientNetworkDeviceManagerCallbacks = 3100; +public const int k_iClientMusicCallbacks = 3200; +public const int k_iClientRemoteClientManagerCallbacks = 3300; +public const int k_iClientUGCCallbacks = 3400; +public const int k_iSteamStreamClientCallbacks = 3500; +public const int k_IClientProductBuilderCallbacks = 3600; +public const int k_iClientShortcutsCallbacks = 3700; +public const int k_iClientRemoteControlManagerCallbacks = 3800; +public const int k_iSteamAppListCallbacks = 3900; +public const int k_iSteamMusicCallbacks = 4000; +public const int k_iSteamMusicRemoteCallbacks = 4100; +public const int k_iClientVRCallbacks = 4200; +public const int k_iClientGameNotificationCallbacks = 4300; +public const int k_iSteamGameNotificationCallbacks = 4400; +public const int k_iSteamHTMLSurfaceCallbacks = 4500; +public const int k_iClientVideoCallbacks = 4600; +public const int k_iClientInventoryCallbacks = 4700; +public const int k_iClientBluetoothManagerCallbacks = 4800; +public const int k_cchPersonaNameMax = 128; +public const int k_cwchPersonaNameMax = 32; +public const int k_cchMaxRichPresenceKeys = 20; +public const int k_cchMaxRichPresenceKeyLength = 64; +public const int k_cchMaxRichPresenceValueLength = 256; +public const int k_cchStatNameMax = 128; +public const int k_cchLeaderboardNameMax = 128; +public const int k_cLeaderboardDetailsMax = 64; +public const ulong k_InvalidUnifiedMessageHandle = 0; +public const ulong k_SteamItemInstanceIDInvalid = 0xffffffffffffffff; +public const int k_SteamInventoryResultInvalid = -1; +public static ISteamClient SteamClient() +{ +return new CSteamClient(SteamAPIInterop.SteamClient()); +} + +public static ISteamUser SteamUser() +{ +return new CSteamUser(SteamAPIInterop.SteamUser()); +} + +public static ISteamFriends SteamFriends() +{ +return new CSteamFriends(SteamAPIInterop.SteamFriends()); +} + +public static ISteamUtils SteamUtils() +{ +return new CSteamUtils(SteamAPIInterop.SteamUtils()); +} + +public static ISteamMatchmaking SteamMatchmaking() +{ +return new CSteamMatchmaking(SteamAPIInterop.SteamMatchmaking()); +} + +public static ISteamMatchmakingServerListResponse SteamMatchmakingServerListResponse() +{ +return new CSteamMatchmakingServerListResponse(SteamAPIInterop.SteamMatchmakingServerListResponse()); +} + +public static ISteamMatchmakingPingResponse SteamMatchmakingPingResponse() +{ +return new CSteamMatchmakingPingResponse(SteamAPIInterop.SteamMatchmakingPingResponse()); +} + +public static ISteamMatchmakingPlayersResponse SteamMatchmakingPlayersResponse() +{ +return new CSteamMatchmakingPlayersResponse(SteamAPIInterop.SteamMatchmakingPlayersResponse()); +} + +public static ISteamMatchmakingRulesResponse SteamMatchmakingRulesResponse() +{ +return new CSteamMatchmakingRulesResponse(SteamAPIInterop.SteamMatchmakingRulesResponse()); +} + +public static ISteamMatchmakingServers SteamMatchmakingServers() +{ +return new CSteamMatchmakingServers(SteamAPIInterop.SteamMatchmakingServers()); +} + +public static ISteamRemoteStorage SteamRemoteStorage() +{ +return new CSteamRemoteStorage(SteamAPIInterop.SteamRemoteStorage()); +} + +public static ISteamUserStats SteamUserStats() +{ +return new CSteamUserStats(SteamAPIInterop.SteamUserStats()); +} + +public static ISteamApps SteamApps() +{ +return new CSteamApps(SteamAPIInterop.SteamApps()); +} + +public static ISteamNetworking SteamNetworking() +{ +return new CSteamNetworking(SteamAPIInterop.SteamNetworking()); +} + +public static ISteamScreenshots SteamScreenshots() +{ +return new CSteamScreenshots(SteamAPIInterop.SteamScreenshots()); +} + +public static ISteamMusic SteamMusic() +{ +return new CSteamMusic(SteamAPIInterop.SteamMusic()); +} + +public static ISteamMusicRemote SteamMusicRemote() +{ +return new CSteamMusicRemote(SteamAPIInterop.SteamMusicRemote()); +} + +public static ISteamHTTP SteamHTTP() +{ +return new CSteamHTTP(SteamAPIInterop.SteamHTTP()); +} + +public static ISteamUnifiedMessages SteamUnifiedMessages() +{ +return new CSteamUnifiedMessages(SteamAPIInterop.SteamUnifiedMessages()); +} + +public static ISteamController SteamController() +{ +return new CSteamController(SteamAPIInterop.SteamController()); +} + +public static ISteamUGC SteamUGC() +{ +return new CSteamUGC(SteamAPIInterop.SteamUGC()); +} + +public static ISteamAppList SteamAppList() +{ +return new CSteamAppList(SteamAPIInterop.SteamAppList()); +} + +public static ISteamHTMLSurface SteamHTMLSurface() +{ +return new CSteamHTMLSurface(SteamAPIInterop.SteamHTMLSurface()); +} + +public static ISteamInventory SteamInventory() +{ +return new CSteamInventory(SteamAPIInterop.SteamInventory()); +} + +public static ISteamVideo SteamVideo() +{ +return new CSteamVideo(SteamAPIInterop.SteamVideo()); +} + +public static ISteamGameServer SteamGameServer() +{ +return new CSteamGameServer(SteamAPIInterop.SteamGameServer()); +} + +public static ISteamGameServerStats SteamGameServerStats() +{ +return new CSteamGameServerStats(SteamAPIInterop.SteamGameServerStats()); +} + +} + + + +} + diff --git a/lib/windows64/include/steam/steam_gameserver.h b/lib/windows64/include/steam/steam_gameserver.h new file mode 100644 index 0000000..f2d2847 --- /dev/null +++ b/lib/windows64/include/steam/steam_gameserver.h @@ -0,0 +1,237 @@ +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_GAMESERVER_H +#define STEAM_GAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api.h" +#include "isteamgameserver.h" +#include "isteamgameserverstats.h" + +enum EServerMode +{ + eServerModeInvalid = 0, // DO NOT USE + eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list + eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect + eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients +}; + +// Initialize ISteamGameServer interface object, and set server properties which may not be changed. +// +// After calling this function, you should set any additional server parameters, and then +// call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() +// +// - usSteamPort is the local port used to communicate with the steam servers. +// - usGamePort is the port that clients will connect to for gameplay. +// - usQueryPort is the port that will manage server browser related duties and info +// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving +// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. +// - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the +// server is out of date. (Only servers with the latest version will be listed.) + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + +S_API void SteamGameServer_Shutdown(); +S_API void SteamGameServer_RunCallbacks(); + +// Most Steam API functions allocate some amount of thread-local memory for +// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() +// will free all API-related memory associated with the calling thread. +// This memory is released automatically by SteamGameServer_RunCallbacks(), +// so single-threaded servers do not need to explicitly call this function. +inline void SteamGameServer_ReleaseCurrentThreadMemory(); + +S_API bool SteamGameServer_BSecure(); +S_API uint64 SteamGameServer_GetSteamID(); + +// If your application contains modules which could be built against different Steamworks SDK +// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot +// use the version-less global accessors. Instead, create and use CSteamGameServerAPIContext +// objects to retrieve interface pointers which are appropriate for your Steamworks SDK headers. +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamGameServerClient(); +inline ISteamGameServer *SteamGameServer(); +inline ISteamUtils *SteamGameServerUtils(); +inline ISteamNetworking *SteamGameServerNetworking(); +inline ISteamGameServerStats *SteamGameServerStats(); +inline ISteamHTTP *SteamGameServerHTTP(); +inline ISteamInventory *SteamGameServerInventory(); +inline ISteamUGC *SteamGameServerUGC(); +inline ISteamApps *SteamGameServerApps(); +#endif + +class CSteamGameServerAPIContext +{ +public: + CSteamGameServerAPIContext() { Clear(); } + inline void Clear(); + inline bool Init(); + + ISteamClient *SteamClient() const { return m_pSteamClient; } + ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } + ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } + ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } + ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } + ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } + ISteamInventory *SteamInventory() const { return m_pSteamInventory; } + ISteamUGC *SteamUGC() const { return m_pSteamUGC; } + ISteamApps *SteamApps() const { return m_pSteamApps; } + +private: + ISteamClient *m_pSteamClient; + ISteamGameServer *m_pSteamGameServer; + ISteamUtils *m_pSteamGameServerUtils; + ISteamNetworking *m_pSteamGameServerNetworking; + ISteamGameServerStats *m_pSteamGameServerStats; + ISteamHTTP *m_pSteamHTTP; + ISteamInventory *m_pSteamInventory; + ISteamUGC *m_pSteamUGC; + ISteamApps *m_pSteamApps; +}; + + +// Older SDKs exported this global pointer, but it is no longer supported. +// You should use SteamGameServerClient() or CSteamGameServerAPIContext to +// safely access the ISteamClient APIs from your game server application. +//S_API ISteamClient *g_pSteamClientGameServer; + +// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and +// is no longer supported. Use SteamGameServer_Init instead. +//S_API void S_CALLTYPE SteamGameServer_InitSafe(); + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// These macros are similar to the STEAM_CALLBACK_* macros in steam_api.h, but only trigger for gameserver callbacks +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_GAMESERVER_CALLBACK( thisclass, func, /*callback_type, [deprecated] var*/... ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, GS, 3 ), ( this->SetGameserverFlag();, thisclass, func, __VA_ARGS__ ) ) + +#define STEAM_GAMESERVER_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) + + +#define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ + CCallback< thisclass, param, true > var; void func( param *pParam ) + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + + +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline CSteamGameServerAPIContext& SteamGameServerInternal_ModuleContext() +{ + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* ctx[ sizeof(CSteamGameServerAPIContext)/sizeof(void*) ]; + return *(CSteamGameServerAPIContext*)ctx; +} +#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ + if ( !SteamGameServer_GetHSteamPipe() ) return 0; \ + CSteamGameServerAPIContext &ctx = SteamGameServerInternal_ModuleContext(); \ + if ( !ctx.AccessFunc() ) ctx.Init(); \ + return ctx.AccessFunc(); + +inline ISteamClient *SteamGameServerClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } +inline ISteamGameServer *SteamGameServer() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServer ) } +inline ISteamUtils *SteamGameServerUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerUtils ) } +inline ISteamNetworking *SteamGameServerNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerNetworking ) } +inline ISteamGameServerStats *SteamGameServerStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerStats ) } +inline ISteamHTTP *SteamGameServerHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } +inline ISteamInventory *SteamGameServerInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } +inline ISteamUGC *SteamGameServerUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } +inline ISteamApps *SteamGameServerApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } +#undef _STEAMINTERNAL_ACCESSOR_BODY +#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) + + +inline void CSteamGameServerAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamGameServer = NULL; + m_pSteamGameServerUtils = NULL; + m_pSteamGameServerNetworking = NULL; + m_pSteamGameServerStats = NULL; + m_pSteamHTTP = NULL; + m_pSteamInventory = NULL; + m_pSteamUGC = NULL; + m_pSteamApps = NULL; +} + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamGameServerAPIContext::Init() +{ + HSteamUser hSteamUser = SteamGameServer_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamGameServer_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamGameServer = m_pSteamClient->GetISteamGameServer( hSteamUser, hSteamPipe, STEAMGAMESERVER_INTERFACE_VERSION ); + if ( !m_pSteamGameServer ) + return false; + + m_pSteamGameServerUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerUtils ) + return false; + + m_pSteamGameServerNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamGameServerNetworking ) + return false; + + m_pSteamGameServerStats = m_pSteamClient->GetISteamGameServerStats( hSteamUser, hSteamPipe, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamGameServerStats ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + return true; +} + + +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + if ( !SteamInternal_GameServer_Init( unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + return false; + + return true; +} + + +inline void SteamGameServer_ReleaseCurrentThreadMemory() +{ + SteamAPI_ReleaseCurrentThreadMemory(); +} + +#endif // STEAM_GAMESERVER_H diff --git a/lib/windows64/include/steam/steamclientpublic.h b/lib/windows64/include/steam/steamclientpublic.h new file mode 100644 index 0000000..8d89376 --- /dev/null +++ b/lib/windows64/include/steam/steamclientpublic.h @@ -0,0 +1,1255 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMCLIENTPUBLIC_H +#define STEAMCLIENTPUBLIC_H +#ifdef _WIN32 +#pragma once +#endif +//lint -save -e1931 -e1927 -e1924 -e613 -e726 + +// This header file defines the interface between the calling application and the code that +// knows how to communicate with the connection manager (CM) from the Steam service + +// This header file is intended to be portable; ideally this 1 header file plus a lib or dll +// is all you need to integrate the client library into some other tree. So please avoid +// including or requiring other header files if possible. This header should only describe the +// interface layer, no need to include anything about the implementation. + +#include "steamtypes.h" +#include "steamuniverse.h" + +// General result codes +enum EResult +{ + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection +// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha + k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned + k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) + k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid + k_EResultIPBanned = 105, // the ip address has been banned from taking this action + k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use +}; + +// Error codes for use with the voice functions +enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, + +}; + +// Result codes to GSHandleClientDeny/Kick +enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +}; + +// return type of GetAuthSessionTicket +typedef uint32 HAuthTicket; +const HAuthTicket k_HAuthTicketInvalid = 0; + +// results from BeginAuthSession +enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. + k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. + k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID + k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version + k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game + k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired +}; + +// Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession +enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. + k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam + k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. + k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. + k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. + k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user + k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. + k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. + k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC +}; + +// results from UserHasLicenseForApp +enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated +}; + + +// Steam account types +enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, // single user account + k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account + k_EAccountTypeGameServer = 3, // game server account + k_EAccountTypeAnonGameServer = 4, // anonymous game server account + k_EAccountTypePending = 5, // pending + k_EAccountTypeContentServer = 6, // content server + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. + k_EAccountTypeAnonUser = 10, + + // Max of 16 items in this field + k_EAccountTypeMax +}; + + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing + k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all + k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released + k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released. + k_EAppReleaseState_Released = 4, // owners can download and play app. +}; + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0x0000, // unknown + k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game + k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game + k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region + k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version + k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform + k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device + k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses + k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) + k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user + k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play + k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired + k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc + k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically + k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring + k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license + k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem + k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet + k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental +}; + + +//----------------------------------------------------------------------------- +// Purpose: designed as flags to allow filters masks +//----------------------------------------------------------------------------- +enum EAppType +{ + k_EAppType_Invalid = 0x000, // unknown / invalid + k_EAppType_Game = 0x001, // playable game, default type + k_EAppType_Application = 0x002, // software application + k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers + k_EAppType_Demo = 0x008, // game demo + k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web + k_EAppType_DLC = 0x020, // down loadable content + k_EAppType_Guide = 0x040, // game guide, PDF etc + k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) + k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) + k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) + k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games + k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) + k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps + k_EAppType_Music = 0x2000, // Music files + k_EAppType_Series = 0x4000, // Container app for video series + + k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only + k_EAppType_DepotOnly = 0x80000000, // placeholder since depots and apps share the same namespace +}; + + + +//----------------------------------------------------------------------------- +// types of user game stats fields +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE +//----------------------------------------------------------------------------- +enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + // Read as FLOAT, set with count / session length + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + + // max, for sanity checks + k_ESteamUserStatTypeMAX +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Entry Types (previously was only friend-to-friend message types) +//----------------------------------------------------------------------------- +enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, // Normal text message from another user + k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) + k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game + k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) + //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) + k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) + // Above are previous FriendMsgType entries, now merged into more generic chat entry types + k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) + k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) + k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) + k_EChatEntryTypeDisconnected = 10, // user disconnected + k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message + //k_EChatEntryTypeReserved1 = 12, // No longer used + //k_EChatEntryTypeReserved2 = 13, // No longer used + k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Room Enter Responses +//----------------------------------------------------------------------------- +enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, // Success + k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) + k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat + k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size + k_EChatRoomEnterResponseError = 5, // Unexpected Error + k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join + k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) + k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled + k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account + k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining + k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat + // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used + // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used + // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used +}; + + +typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); +typedef bool (*PFNLegacyKeyInstalled)(); + +const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; +const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; +// we allow 3 simultaneous user account instances right now, 1= desktop, 2 = console, 4 = web, 0 = all +const unsigned int k_unSteamUserDesktopInstance = 1; +const unsigned int k_unSteamUserConsoleInstance = 2; +const unsigned int k_unSteamUserWebInstance = 4; + +// Special flags for Chat accounts - they go in the top 8 bits +// of the steam ID's "instance", leaving 12 for the actual instances +enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags + + k_EChatInstanceFlagClan = ( k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit + k_EChatInstanceFlagLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc + k_EChatInstanceFlagMMSLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc + + // Max of 8 flags +}; + + +//----------------------------------------------------------------------------- +// Purpose: Marketing message flags that change how a client should handle them +//----------------------------------------------------------------------------- +enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1 << 0, + k_EMarketingMessageFlagsPlatformWindows = 1 << 1, + k_EMarketingMessageFlagsPlatformMac = 1 << 2, + k_EMarketingMessageFlagsPlatformLinux = 1 << 3, + + //aggregate flags + k_EMarketingMessageFlagsPlatformRestrictions = + k_EMarketingMessageFlagsPlatformWindows | + k_EMarketingMessageFlagsPlatformMac | + k_EMarketingMessageFlagsPlatformLinux, +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Possible positions to tell the overlay to show notifications in +//----------------------------------------------------------------------------- +enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Broadcast upload result details +//----------------------------------------------------------------------------- +enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, // broadcast state unknown + k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems + k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed + k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed + k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out + k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data + k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low + k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames + k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay + k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload + k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings + k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data + k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading + k_EBroadcastUploadResultTranscodeBehind = 13, // server failed to keep up with transcode +}; + + +//----------------------------------------------------------------------------- +// Purpose: codes for well defined launch options +//----------------------------------------------------------------------------- +enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, // unknown what launch option does + k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode + k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode + k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode + k_ELaunchOptionType_Config = 4, // runs config tool for this game + k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR + k_ELaunchOptionType_Server = 6, // runs dedicated server for this game + k_ELaunchOptionType_Editor = 7, // runs game editor + k_ELaunchOptionType_Manual = 8, // shows game manual + k_ELaunchOptionType_Benchmark = 9, // runs game benchmark + k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name + k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name + k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name + k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK + k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay + k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK + + + k_ELaunchOptionType_Dialog = 1000, // show launch options dialog +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_OpenVR + || eType == k_ELaunchOptionType_OpenVROverlay + || eType == k_ELaunchOptionType_OculusVR + || eType == k_ELaunchOptionType_OSVR; +} + + +//----------------------------------------------------------------------------- +// Purpose: code points for VR HMD vendors and models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EVRHMDType +{ + k_eEVRHMDType_None = -1, // unknown vendor and model + + k_eEVRHMDType_Unknown = 0, // unknown vendor and model + + k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits + k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre + k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release + + k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd + + k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 + k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 + k_eEVRHMDType_Oculus_Rift = 23, // Oculus rift + + k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD +}; + + +//----------------------------------------------------------------------------- +// Purpose: Steam Controller models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EControllerType +{ + k_eControllerType_None = -1, + k_eControllerType_Unknown = 0, + + // Steam Controllers + k_eControllerType_UnknownSteamController = 1, + k_eControllerType_SteamController = 2, + + // Other Controllers + k_eControllerType_UnknownNonSteamController = 30, + k_eControllerType_XBox360Controller = 31, + k_eControllerType_XBoxOneController = 32, + k_eControllerType_PS3Controller = 33, + k_eControllerType_PS4Controller = 34, + k_eControllerType_WiiController = 35, + k_eControllerType_AppleController = 36 +}; + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Oculus HMD +//----------------------------------------------------------------------------- +static inline bool BIsOculusHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_Unknown; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Vive HMD +//----------------------------------------------------------------------------- +static inline bool BIsViveHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown; +} + + +#pragma pack( push, 1 ) + +#define CSTEAMID_DEFINED + +// Steam ID structure (64 bits total) +class CSteamID +{ +public: + + //----------------------------------------------------------------------------- + // Purpose: Constructor + //----------------------------------------------------------------------------- + CSteamID() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + Set( unAccountID, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // unAccountInstance - instance + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) + { +#if defined(_SERVER) && defined(Assert) + Assert( ! ( ( k_EAccountTypeIndividual == eAccountType ) && ( unAccountInstance > k_unSteamUserWebInstance ) ) ); // enforce that for individual accounts, instance is always 1 +#endif // _SERVER + InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : ulSteamID - 64-bit representation of a Steam ID + // Note: Will not accept a uint32 or int32 as input, as that is a probable mistake. + // See the stubbed out overloads in the private: section for more info. + //----------------------------------------------------------------------------- + CSteamID( uint64 ulSteamID ) + { + SetFromUint64( ulSteamID ); + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CSteamID( uint64_t ulSteamID ) + { + SetFromUint64( (uint64)ulSteamID ); + } +#endif + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void Set( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + + if ( eAccountType == k_EAccountTypeClan || eAccountType == k_EAccountTypeGameServer ) + { + m_steamid.m_comp.m_unAccountInstance = 0; + } + else + { + // by default we pick the desktop instance + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; + } + } + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void InstancedSet( uint32 unAccountID, uint32 unInstance, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + m_steamid.m_comp.m_unAccountInstance = unInstance; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 52 bit parts and universe/type + // Input : ulIdentifier - 52 bits of goodness + //----------------------------------------------------------------------------- + void FullSet( uint64 ulIdentifier, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = ( ulIdentifier & k_unSteamAccountIDMask ); // account ID is low 32 bits + m_steamid.m_comp.m_unAccountInstance = ( ( ulIdentifier >> 32 ) & k_unSteamAccountInstanceMask ); // account instance is next 20 bits + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 64-bit representation + // Input : ulSteamID - 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + void SetFromUint64( uint64 ulSteamID ) + { + m_steamid.m_unAll64Bits = ulSteamID; + } + + + //----------------------------------------------------------------------------- + // Purpose: Clear all fields, leaving an invalid ID. + //----------------------------------------------------------------------------- + void Clear() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to convert + // eUniverse - universe this ID belongs to + //----------------------------------------------------------------------------- + void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe + m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDesktopInstance; // Steam2 only knew desktop instances + } + + //----------------------------------------------------------------------------- + // Purpose: Fills out a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to write to + //----------------------------------------------------------------------------- + void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const + { + // only individual accounts have any meaning in Steam 2, only they can be mapped + // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); + + pTSteamGlobalUserID->m_SteamInstanceID = 0; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; + } +#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) + + //----------------------------------------------------------------------------- + // Purpose: Converts steam ID to its 64-bit representation + // Output : 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + uint64 ConvertToUint64() const + { + return m_steamid.m_unAll64Bits; + } + + + //----------------------------------------------------------------------------- + // Purpose: Converts the static parts of a steam ID to a 64-bit representation. + // For multiseat accounts, all instances of that account will have the + // same static account key, so they can be grouped together by the static + // account key. + // Output : 64-bit static account key + //----------------------------------------------------------------------------- + uint64 GetStaticAccountKey() const + { + // note we do NOT include the account instance (which is a dynamic property) in the static account key + return (uint64) ( ( ( (uint64) m_steamid.m_comp.m_EUniverse ) << 56 ) + ((uint64) m_steamid.m_comp.m_EAccountType << 52 ) + m_steamid.m_comp.m_unAccountID ); + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonGameServer; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonUserLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonUser; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server login that will be filled in? + //----------------------------------------------------------------------------- + bool BBlankAnonAccount() const + { + return m_steamid.m_comp.m_unAccountID == 0 && BAnonAccount() && m_steamid.m_comp.m_unAccountInstance == 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a game server account id? (Either persistent or anonymous) + //----------------------------------------------------------------------------- + bool BGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a persistent (not anonymous) game server account id? + //----------------------------------------------------------------------------- + bool BPersistentGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server account id? + //----------------------------------------------------------------------------- + bool BAnonGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a content server account id? + //----------------------------------------------------------------------------- + bool BContentServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeContentServer; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a clan account id? + //----------------------------------------------------------------------------- + bool BClanAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool BChatAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool IsLobby() const + { + return ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat ) + && ( m_steamid.m_comp.m_unAccountInstance & k_EChatInstanceFlagLobby ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an individual user account id? + //----------------------------------------------------------------------------- + bool BIndividualAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual || m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous account? + //----------------------------------------------------------------------------- + bool BAnonAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) + //----------------------------------------------------------------------------- + bool BAnonUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a faked up Steam ID for a PSN friend account? + //----------------------------------------------------------------------------- + bool BConsoleUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + // simple accessors + void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } + void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } + void ClearIndividualInstance() { if ( BIndividualAccount() ) m_steamid.m_comp.m_unAccountInstance = 0; } + bool HasNoIndividualInstance() const { return BIndividualAccount() && (m_steamid.m_comp.m_unAccountInstance==0); } + AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } + uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } + EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } + EUniverse GetEUniverse() const { return m_steamid.m_comp.m_EUniverse; } + void SetEUniverse( EUniverse eUniverse ) { m_steamid.m_comp.m_EUniverse = eUniverse; } + bool IsValid() const; + + // this set of functions is hidden, will be moved out of class + explicit CSteamID( const char *pchSteamID, EUniverse eDefaultUniverse = k_EUniverseInvalid ); + const char * Render() const; // renders this steam ID to string + static const char * Render( uint64 ulSteamID ); // static method to render a uint64 representation of a steam ID to a string + + void SetFromString( const char *pchSteamID, EUniverse eDefaultUniverse ); + // SetFromString allows many partially-correct strings, constraining how + // we might be able to change things in the future. + // SetFromStringStrict requires the exact string forms that we support + // and is preferred when the caller knows it's safe to be strict. + // Returns whether the string parsed correctly. + bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); + bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); + + inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } + inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } + inline bool operator<( const CSteamID &val ) const { return m_steamid.m_unAll64Bits < val.m_steamid.m_unAll64Bits; } + inline bool operator>( const CSteamID &val ) const { return m_steamid.m_unAll64Bits > val.m_steamid.m_unAll64Bits; } + + // DEBUG function + bool BValidExternalSteamID() const; + +private: + // These are defined here to prevent accidental implicit conversion of a u32AccountID to a CSteamID. + // If you get a compiler error about an ambiguous constructor/function then it may be because you're + // passing a 32-bit int to a function that takes a CSteamID. You should explicitly create the SteamID + // using the correct Universe and account Type/Instance values. + CSteamID( uint32 ); + CSteamID( int32 ); + + // 64 bits total + union SteamID_t + { + struct SteamIDComponent_t + { +#ifdef VALVE_BIG_ENDIAN + EUniverse m_EUniverse : 8; // universe this account belongs to + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + unsigned int m_unAccountInstance : 20; // dynamic instance ID + uint32 m_unAccountID : 32; // unique account identifier +#else + uint32 m_unAccountID : 32; // unique account identifier + unsigned int m_unAccountInstance : 20; // dynamic instance ID + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + EUniverse m_EUniverse : 8; // universe this account belongs to +#endif + } m_comp; + + uint64 m_unAll64Bits; + } m_steamid; +}; + +inline bool CSteamID::IsValid() const +{ + if ( m_steamid.m_comp.m_EAccountType <= k_EAccountTypeInvalid || m_steamid.m_comp.m_EAccountType >= k_EAccountTypeMax ) + return false; + + if ( m_steamid.m_comp.m_EUniverse <= k_EUniverseInvalid || m_steamid.m_comp.m_EUniverse >= k_EUniverseMax ) + return false; + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance > k_unSteamUserWebInstance ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != 0 ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 ) + return false; + // Any limit on instances? We use them for local users and bots + } + return true; +} + +// generic invalid CSteamID +#define k_steamIDNil CSteamID() + +// This steamID comes from a user game connection to an out of date GS that hasnt implemented the protocol +// to provide its steamID +#define k_steamIDOutofDateGS CSteamID( 0, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID comes from a user game connection to an sv_lan GS +#define k_steamIDLanModeGS CSteamID( 0, 0, k_EUniversePublic, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that has just booted but hasnt yet even initialized +// its steam3 component and started logging on. +#define k_steamIDNotInitYetGS CSteamID( 1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that isn't using the steam authentication system but still +// wants to support the "Join Game" option in the friends list +#define k_steamIDNonSteamGS CSteamID( 2, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) + + +#ifdef STEAM +// Returns the matching chat steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeChat it will be returned with the same instance +CSteamID ChatIDFromSteamID( const CSteamID &steamID ); +// Returns the matching clan steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeClan it will be returned with the same instance +CSteamID ClanIDFromSteamID( const CSteamID &steamID ); +// Asserts steamID type before conversion +CSteamID ChatIDFromClanID( const CSteamID &steamIDClan ); +// Asserts steamID type before conversion +CSteamID ClanIDFromChatID( const CSteamID &steamIDChat ); + +#endif // _STEAM + + +//----------------------------------------------------------------------------- +// Purpose: encapsulates an appID/modID pair +//----------------------------------------------------------------------------- +class CGameID +{ +public: + + CGameID() + { + m_gameID.m_nType = k_EGameIDTypeApp; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nModID = 0; + } + + explicit CGameID( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CGameID( uint64_t ulGameID ) + { + m_ulGameID = (uint64)ulGameID; + } +#endif + + explicit CGameID( int32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + explicit CGameID( uint32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + CGameID( uint32 nAppID, uint32 nModID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nModID = nModID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + } + + // Hidden functions used only by Steam + explicit CGameID( const char *pchGameID ); + const char *Render() const; // render this Game ID to string + static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string + + // must include checksum_crc.h first to get this functionality +#if defined( CHECKSUM_CRC_H ) + CGameID( uint32 nAppID, const char *pchModPath ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + + char rgchModDir[MAX_PATH]; + V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); + CRC32_t crc32; + CRC32_Init( &crc32 ); + CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + + CGameID( const char *pchExePath, const char *pchAppName ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeShortcut; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + if ( pchExePath ) + CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); + if ( pchAppName ) + CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#if defined( VSTFILEID_H ) + + CGameID( VstFileID vstFileID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeP2P; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + const char *pchFileId = vstFileID.Render(); + CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#endif /* VSTFILEID_H */ + +#endif /* CHECKSUM_CRC_H */ + + + uint64 ToUint64() const + { + return m_ulGameID; + } + + uint64 *GetUint64Ptr() + { + return &m_ulGameID; + } + + void Set( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } + + bool IsMod() const + { + return ( m_gameID.m_nType == k_EGameIDTypeGameMod ); + } + + bool IsShortcut() const + { + return ( m_gameID.m_nType == k_EGameIDTypeShortcut ); + } + + bool IsP2PFile() const + { + return ( m_gameID.m_nType == k_EGameIDTypeP2P ); + } + + bool IsSteamApp() const + { + return ( m_gameID.m_nType == k_EGameIDTypeApp ); + } + + uint32 ModID() const + { + return m_gameID.m_nModID; + } + + uint32 AppID() const + { + return m_gameID.m_nAppID; + } + + bool operator == ( const CGameID &rhs ) const + { + return m_ulGameID == rhs.m_ulGameID; + } + + bool operator != ( const CGameID &rhs ) const + { + return !(*this == rhs); + } + + bool operator < ( const CGameID &rhs ) const + { + return ( m_ulGameID < rhs.m_ulGameID ); + } + + bool IsValid() const + { + // each type has it's own invalid fixed point: + switch( m_gameID.m_nType ) + { + case k_EGameIDTypeApp: + return m_gameID.m_nAppID != k_uAppIdInvalid; + + case k_EGameIDTypeGameMod: + return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + case k_EGameIDTypeShortcut: + return (m_gameID.m_nModID & 0x80000000) != 0; + + case k_EGameIDTypeP2P: + return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + default: +#if defined(Assert) + Assert(false); +#endif + return false; + } + + } + + void Reset() + { + m_ulGameID = 0; + } + + + +private: + + enum EGameIDType + { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + + struct GameID_t + { +#ifdef VALVE_BIG_ENDIAN + unsigned int m_nModID : 32; + unsigned int m_nType : 8; + unsigned int m_nAppID : 24; +#else + unsigned int m_nAppID : 24; + unsigned int m_nType : 8; + unsigned int m_nModID : 32; +#endif + }; + + union + { + uint64 m_ulGameID; + GameID_t m_gameID; + }; +}; + +#pragma pack( pop ) + +const int k_cchGameExtraInfoMax = 64; + + +//----------------------------------------------------------------------------- +// Constants used for query ports. +//----------------------------------------------------------------------------- + +#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. +#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. + + +//----------------------------------------------------------------------------- +// Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback +// just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) +//----------------------------------------------------------------------------- +typedef void (*PFNPreMinidumpCallback)(void *context); + +//----------------------------------------------------------------------------- +// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers +//----------------------------------------------------------------------------- +typedef void *BREAKPAD_HANDLE; +#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 + +#endif // STEAMCLIENTPUBLIC_H diff --git a/lib/windows64/include/steam/steamencryptedappticket.h b/lib/windows64/include/steam/steamencryptedappticket.h new file mode 100644 index 0000000..48c63b4 --- /dev/null +++ b/lib/windows64/include/steam/steamencryptedappticket.h @@ -0,0 +1,32 @@ +//========= Copyright © 1996-2010, Valve LLC, All rights reserved. ============ +// +// Purpose: utilities to decode/decrypt a ticket from the +// ISteamUser::RequestEncryptedAppTicket, ISteamUser::GetEncryptedAppTicket API +// +// To use: declare CSteamEncryptedAppTicket, then call BDecryptTicket +// if BDecryptTicket returns true, other accessors are valid +// +//============================================================================= + +#include "steam_api.h" + +static const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + + +S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, + uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, + const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey ); + +S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID ); + +S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); \ No newline at end of file diff --git a/lib/windows64/include/steam/steamhttpenums.h b/lib/windows64/include/steam/steamhttpenums.h new file mode 100644 index 0000000..d95f195 --- /dev/null +++ b/lib/windows64/include/steam/steamhttpenums.h @@ -0,0 +1,98 @@ +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: HTTP related enums, stuff that is shared by both clients and servers, and our +// UI projects goes here. +// +//============================================================================= + +#ifndef STEAMHTTPENUMS_H +#define STEAMHTTPENUMS_H +#ifdef _WIN32 +#pragma once +#endif + +// HTTP related types + +// This enum is used in client API methods, do not re-number existing values. +enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT +}; + + +// HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions +// of each of these. +enum EHTTPStatusCode +{ + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +}; + +#endif // STEAMHTTPENUMS_H \ No newline at end of file diff --git a/lib/windows64/include/steam/steamps3params.h b/lib/windows64/include/steam/steamps3params.h new file mode 100644 index 0000000..c0741b4 --- /dev/null +++ b/lib/windows64/include/steam/steamps3params.h @@ -0,0 +1,112 @@ +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMPS3PARAMS_H +#define STEAMPS3PARAMS_H +#ifdef _WIN32 +#pragma once +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 initialization parameters +// +// The following structure must be passed to when loading steam_api_ps3.prx +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_PS3_PATH_MAX 1055 +#define STEAM_PS3_SERVICE_ID_MAX 32 +#define STEAM_PS3_COMMUNICATION_ID_MAX 10 +#define STEAM_PS3_COMMUNICATION_SIG_MAX 160 +#define STEAM_PS3_LANGUAGE_MAX 64 +#define STEAM_PS3_REGION_CODE_MAX 16 +#define STEAM_PS3_CURRENT_PARAMS_VER 2 +struct SteamPS3Params_t +{ + uint32 m_unVersion; // set to STEAM_PS3_CURRENT_PARAMS_VER + + void *pReserved; + uint32 m_nAppId; // set to your game's appid + + char m_rgchInstallationPath[ STEAM_PS3_PATH_MAX ]; // directory containing latest steam prx's and sdata. Can be read only (BDVD) + char m_rgchSystemCache[ STEAM_PS3_PATH_MAX ]; // temp working cache, not persistent + char m_rgchGameData[ STEAM_PS3_PATH_MAX ]; // persistent game data path for storing user data + char m_rgchNpServiceID[ STEAM_PS3_SERVICE_ID_MAX ]; + char m_rgchNpCommunicationID[ STEAM_PS3_COMMUNICATION_ID_MAX ]; + char m_rgchNpCommunicationSig[ STEAM_PS3_COMMUNICATION_SIG_MAX ]; + + // Language should be one of the following. must be zero terminated + // danish + // dutch + // english + // finnish + // french + // german + // italian + // korean + // norwegian + // polish + // portuguese + // russian + // schinese + // spanish + // swedish + // tchinese + char m_rgchSteamLanguage[ STEAM_PS3_LANGUAGE_MAX ]; + + // region codes are "SCEA", "SCEE", "SCEJ". must be zero terminated + char m_rgchRegionCode[ STEAM_PS3_REGION_CODE_MAX ]; + + // Should be SYS_TTYP3 through SYS_TTYP10, if it's 0 then Steam won't spawn a + // thread to read console input at all. Using this let's you use Steam console commands + // like: profile_on, profile_off, profile_dump, mem_stats, mem_validate. + unsigned int m_cSteamInputTTY; + + struct Ps3netInit_t + { + bool m_bNeedInit; + void *m_pMemory; + int m_nMemorySize; + int m_flags; + } m_sysNetInitInfo; + + struct Ps3jpgInit_t + { + bool m_bNeedInit; + } m_sysJpgInitInfo; + + struct Ps3pngInit_t + { + bool m_bNeedInit; + } m_sysPngInitInfo; + + struct Ps3sysutilUserInfo_t + { + bool m_bNeedInit; + } m_sysSysUtilUserInfo; + + bool m_bIncludeNewsPage; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 memory structure +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAMPS3_MALLOC_INUSE 0x53D04A51 +#define STEAMPS3_MALLOC_SYSTEM 0x0D102C48 +#define STEAMPS3_MALLOC_OK 0xFFD04A51 +struct SteamPS3Memory_t +{ + bool m_bSingleAllocation; // If true, Steam will request one 6MB allocation and use the returned memory for all future allocations + // If false, Steam will make call malloc for each allocation + + // required function pointers + void* (*m_pfMalloc)(size_t); + void* (*m_pfRealloc)(void *, size_t); + void (*m_pfFree)(void *); + size_t (*m_pUsable_size)(void*); +}; + + +#endif // STEAMPS3PARAMS_H diff --git a/lib/windows64/include/steam/steamtypes.h b/lib/windows64/include/steam/steamtypes.h new file mode 100644 index 0000000..f74df1a --- /dev/null +++ b/lib/windows64/include/steam/steamtypes.h @@ -0,0 +1,181 @@ +//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMTYPES_H +#define STEAMTYPES_H +#ifdef _WIN32 +#pragma once +#endif + +#define S_CALLTYPE __cdecl + +// Steam-specific types. Defined here so this header file can be included in other code bases. +#ifndef WCHARTYPES_H +typedef unsigned char uint8; +#endif + +#if defined( __GNUC__ ) && !defined(POSIX) + #if __GNUC__ < 4 + #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" + #endif + #define POSIX 1 +#endif + +#if defined(__x86_64__) || defined(_WIN64) +#define X64BITS +#endif + +// Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. +#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) +#define VALVE_BIG_ENDIAN +#endif + +typedef unsigned char uint8; +typedef signed char int8; + +#if defined( _WIN32 ) + +typedef __int16 int16; +typedef unsigned __int16 uint16; +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; + +typedef int64 lint64; +typedef uint64 ulint64; + +#ifdef X64BITS +typedef __int64 intp; // intp is an integer that can accomodate a pointer +typedef unsigned __int64 uintp; // (ie, sizeof(intp) >= sizeof(int) && sizeof(intp) >= sizeof(void *) +#else +typedef __int32 intp; +typedef unsigned __int32 uintp; +#endif + +#else // _WIN32 + +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; + +// [u]int64 are actually defined as 'long long' and gcc 64-bit +// doesn't automatically consider them the same as 'long int'. +// Changing the types for [u]int64 is complicated by +// there being many definitions, so we just +// define a 'long int' here and use it in places that would +// otherwise confuse the compiler. +typedef long int lint64; +typedef unsigned long int ulint64; + +#ifdef X64BITS +typedef long long intp; +typedef unsigned long long uintp; +#else +typedef int intp; +typedef unsigned int uintp; +#endif + +#endif // else _WIN32 + +#ifdef API_GEN +# define CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define CLANG_ATTR(ATTR) +#endif + +#define METHOD_DESC(DESC) CLANG_ATTR( "desc:" #DESC ";" ) +#define IGNOREATTR() CLANG_ATTR( "ignore" ) +#define OUT_STRUCT() CLANG_ATTR( "out_struct: ;" ) +#define OUT_STRING() CLANG_ATTR( "out_string: ;" ) +#define OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define OUT_ARRAY_COUNT(COUNTER, DESC) CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define ARRAY_COUNT(COUNTER) CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define ARRAY_COUNT_D(COUNTER, DESC) CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define BUFFER_COUNT(COUNTER) CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define OUT_BUFFER_COUNT(COUNTER) CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define OUT_STRING_COUNT(COUNTER) CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define DESC(DESC) CLANG_ATTR("desc:" #DESC ";") +#define CALL_RESULT(RESULT_TYPE) CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define CALL_BACK(RESULT_TYPE) CLANG_ATTR("callback:" #RESULT_TYPE ";") + +const int k_cubSaltSize = 8; +typedef uint8 Salt_t[ k_cubSaltSize ]; + +//----------------------------------------------------------------------------- +// GID (GlobalID) stuff +// This is a globally unique identifier. It's guaranteed to be unique across all +// racks and servers for as long as a given universe persists. +//----------------------------------------------------------------------------- +// NOTE: for GID parsing/rendering and other utils, see gid.h +typedef uint64 GID_t; + +const GID_t k_GIDNil = 0xffffffffffffffffull; + +// For convenience, we define a number of types that are just new names for GIDs +typedef uint64 JobID_t; // Each Job has a unique ID +typedef GID_t TxnID_t; // Each financial transaction has a unique ID + +const GID_t k_TxnIDNil = k_GIDNil; +const GID_t k_TxnIDUnknown = 0; + +const JobID_t k_JobIDNil = 0xffffffffffffffffull; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 PackageId_t; +const PackageId_t k_uPackageIdFreeSub = 0x0; +const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; + +typedef uint32 BundleId_t; +const BundleId_t k_uBundleIdInvalid = 0; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 AppId_t; +const AppId_t k_uAppIdInvalid = 0x0; + +typedef uint64 AssetClassId_t; +const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; + +typedef uint32 PhysicalItemId_t; +const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; + + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. AppIds and DepotIDs also presently +// share the same namespace, but since we'd like to change that in the future +// I've defined it seperately here. +typedef uint32 DepotId_t; +const DepotId_t k_uDepotIdInvalid = 0x0; + +// RTime32 +// We use this 32 bit time representing real world time. +// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +typedef uint32 RTime32; + +typedef uint32 CellID_t; +const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; + +// handle to a Steam API call +typedef uint64 SteamAPICall_t; +const SteamAPICall_t k_uAPICallInvalid = 0x0; + +typedef uint32 AccountID_t; + +typedef uint32 PartnerId_t; +const PartnerId_t k_uPartnerIdInvalid = 0; + +// ID for a depot content manifest +typedef uint64 ManifestId_t; +const ManifestId_t k_uManifestIdInvalid = 0; + + + +#endif // STEAMTYPES_H diff --git a/lib/windows64/include/steam/steamuniverse.h b/lib/windows64/include/steam/steamuniverse.h new file mode 100644 index 0000000..dd384dc --- /dev/null +++ b/lib/windows64/include/steam/steamuniverse.h @@ -0,0 +1,27 @@ +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMUNIVERSE_H +#define STEAMUNIVERSE_H +#ifdef _WIN32 +#pragma once +#endif + + +// Steam universes. Each universe is a self-contained Steam instance. +enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + // k_EUniverseRC = 5, // no such universe anymore + k_EUniverseMax +}; + + +#endif // STEAMUNIVERSE_H diff --git a/lib/windows64/include/strings.h b/lib/windows64/include/strings.h new file mode 100644 index 0000000..a3ee250 --- /dev/null +++ b/lib/windows64/include/strings.h @@ -0,0 +1,59 @@ +#ifndef strings_h +#define strings_h + +/* MSVC doesn't define ffs/ffsl. This dummy strings.h header is provided + * for both */ +#ifdef _MSC_VER +# include <intrin.h> +# pragma intrinsic(_BitScanForward) +static __forceinline int ffsl(long x) +{ + unsigned long i; + + if (_BitScanForward(&i, x)) + return (i + 1); + return (0); +} + +static __forceinline int ffs(int x) +{ + + return (ffsl(x)); +} + +# ifdef _M_X64 +# pragma intrinsic(_BitScanForward64) +# endif + +static __forceinline int ffsll(unsigned __int64 x) +{ + unsigned long i; +#ifdef _M_X64 + if (_BitScanForward64(&i, x)) + return (i + 1); + return (0); +#else +// Fallback for 32-bit build where 64-bit version not available +// assuming little endian + union { + unsigned __int64 ll; + unsigned long l[2]; + } s; + + s.ll = x; + + if (_BitScanForward(&i, s.l[0])) + return (i + 1); + else if(_BitScanForward(&i, s.l[1])) + return (i + 33); + return (0); +#endif +} + +#else +# define ffsll(x) __builtin_ffsll(x) +# define ffsl(x) __builtin_ffsl(x) +# define ffs(x) __builtin_ffs(x) +#endif + +#endif /* strings_h */ diff --git a/lib/windows64/include/vorbis/codec.h b/lib/windows64/include/vorbis/codec.h new file mode 100644 index 0000000..999aa33 --- /dev/null +++ b/lib/windows64/include/vorbis/codec.h @@ -0,0 +1,243 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +#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/lib/windows64/include/vorbis/vorbisenc.h b/lib/windows64/include/vorbis/vorbisenc.h new file mode 100644 index 0000000..02332b5 --- /dev/null +++ b/lib/windows64/include/vorbis/vorbisenc.h @@ -0,0 +1,436 @@ +/******************************************************************** + * * + * 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: vorbis encode-engine setup + last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $ + + ********************************************************************/ + +/** \file + * Libvorbisenc is a convenient API for setting up an encoding + * environment using libvorbis. Libvorbisenc encapsulates the + * actions needed to set up the encoder properly. + */ + +#ifndef _OV_ENC_H_ +#define _OV_ENC_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include "codec.h" + +/** + * This is the primary function within libvorbisenc for setting up managed + * bitrate modes. + * + * Before this function is called, the \ref vorbis_info + * struct should be initialized by using vorbis_info_init() from the libvorbis + * API. After encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_init(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step bitrate-managed encode + * setup. It functions similarly to the one-step setup performed by \ref + * vorbis_encode_init but allows an application to make further encode setup + * tweaks using \ref vorbis_encode_ctl before finally calling \ref + * vorbis_encode_setup_init to complete the setup process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set + * constraints for the encoded file. This function uses these settings to + * select the appropriate encoding mode and set it up. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset. + * \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset. + * \param min_bitrate Desired minimum bitrate. -1 indicates unset. + * + * \return Zero for success, and negative for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request. + */ +extern int vorbis_encode_setup_managed(vorbis_info *vi, + long channels, + long rate, + + long max_bitrate, + long nominal_bitrate, + long min_bitrate); + +/** + * This function performs step-one of a three-step variable bitrate + * (quality-based) encode setup. It functions similarly to the one-step setup + * performed by \ref vorbis_encode_init_vbr() but allows an application to + * make further encode setup tweaks using \ref vorbis_encode_ctl() before + * finally calling \ref vorbis_encode_setup_init to complete the setup + * process. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using \ref vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_setup_vbr(vorbis_info *vi, + long channels, + long rate, + + float quality + ); + +/** + * This is the primary function within libvorbisenc for setting up variable + * bitrate ("quality" based) modes. + * + * + * Before this function is called, the vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API. After + * encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized vorbis_info struct. + * \param channels The number of channels to be encoded. + * \param rate The sampling rate of the source audio. + * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi). + * + * + * \return Zero for success, or a negative number for failure. + * + * \retval 0 Success + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * \retval OV_EINVAL Invalid setup request, eg, out of range argument. + * \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request. + */ +extern int vorbis_encode_init_vbr(vorbis_info *vi, + long channels, + long rate, + + float base_quality + ); + +/** + * This function performs the last stage of three-step encoding setup, as + * described in the API overview under managed bitrate modes. + * + * Before this function is called, the \ref vorbis_info struct should be + * initialized by using vorbis_info_init() from the libvorbis API, one of + * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to + * initialize the high-level encoding setup, and \ref vorbis_encode_ctl() + * called if necessary to make encoding setup changes. + * vorbis_encode_setup_init() finalizes the highlevel encoding structure into + * a complete encoding setup after which the application may make no further + * setup changes. + * + * After encoding, vorbis_info_clear() should be called. + * + * \param vi Pointer to an initialized \ref vorbis_info struct. + * + * \return Zero for success, and negative values for failure. + * + * \retval 0 Success. + * \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption. + * + * \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first + * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to + * initialize the high-level encoding setup + * + */ +extern int vorbis_encode_setup_init(vorbis_info *vi); + +/** + * This function implements a generic interface to miscellaneous encoder + * settings similar to the classic UNIX 'ioctl()' system call. Applications + * may use vorbis_encode_ctl() to query or set bitrate management or quality + * mode details by using one of several \e request arguments detailed below. + * vorbis_encode_ctl() must be called after one of + * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used + * to modify settings, \ref vorbis_encode_ctl() must be called before \ref + * vorbis_encode_setup_init(). + * + * \param vi Pointer to an initialized vorbis_info struct. + * + * \param number Specifies the desired action; See \ref encctlcodes "the list + * of available requests". + * + * \param arg void * pointing to a data structure matching the request + * argument. + * + * \retval 0 Success. Any further return information (such as the result of a + * query) is placed into the storage pointed to by *arg. + * + * \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after + * calling vorbis_encode_setup_init(). + * + * \retval OV_EIMPL Unimplemented or unknown request + */ +extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); + +/** + * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl() + * with the \ref ovectl_ratemanage2_arg struct and \ref + * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code. + * + * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl() + * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref + * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. +*/ +struct ovectl_ratemanage_arg { + int management_active; /**< nonzero if bitrate management is active*/ +/** hard lower limit (in kilobits per second) below which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_min; +/** hard upper limit (in kilobits per second) above which the stream bitrate + will never be allowed for any given bitrate_hard_window seconds of time.*/ + long bitrate_hard_max; +/** the window period (in seconds) used to regulate the hard bitrate minimum + and maximum*/ + double bitrate_hard_window; +/** soft lower limit (in kilobits per second) below which the average bitrate + tracker will start nudging the bitrate higher.*/ + long bitrate_av_lo; +/** soft upper limit (in kilobits per second) above which the average bitrate + tracker will start nudging the bitrate lower.*/ + long bitrate_av_hi; +/** the window period (in seconds) used to regulate the average bitrate + minimum and maximum.*/ + double bitrate_av_window; +/** Regulates the relative centering of the average and hard windows; in + libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but + followed the average window regulation. In libvorbis 1.1 a bit-reservoir + interface replaces the old windowing interface; the older windowing + interface is simulated and this field has no effect.*/ + double bitrate_av_window_center; +}; + +/** + * \name struct ovectl_ratemanage2_arg + * + * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and + * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to + * query and modify specifics of the encoder's bitrate management + * configuration. + * +*/ +struct ovectl_ratemanage2_arg { + int management_active; /**< nonzero if bitrate management is active */ +/** Lower allowed bitrate limit in kilobits per second */ + long bitrate_limit_min_kbps; +/** Upper allowed bitrate limit in kilobits per second */ + long bitrate_limit_max_kbps; + long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */ +/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0 + * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0 + * buffers against future sudden drops in instantaneous bitrate. Default is + * 0.1 + */ + double bitrate_limit_reservoir_bias; +/** Average bitrate setting in kilobits per second */ + long bitrate_average_kbps; +/** Slew rate limit setting for average bitrate adjustment; sets the minimum + * time in seconds the bitrate tracker may swing from one extreme to the + * other when boosting or damping average bitrate. + */ + double bitrate_average_damping; +}; + + +/** + * \name vorbis_encode_ctl() codes + * + * \anchor encctlcodes + * + * These values are passed as the \c number parameter of vorbis_encode_ctl(). + * The type of the referent of that function's \c arg pointer depends on these + * codes. + */ +/*@{*/ + +/** + * Query the current encoder bitrate management setting. + * + *Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to query the current encoder bitrate management setting. Also used to + * initialize fields of an ovectl_ratemanage2_arg structure for use with + * \ref OV_ECTL_RATEMANAGE2_SET. + */ +#define OV_ECTL_RATEMANAGE2_GET 0x14 + +/** + * Set the current encoder bitrate management settings. + * + * Argument: <tt>struct ovectl_ratemanage2_arg *</tt> + * + * Used to set the current encoder bitrate management settings to the values + * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable + * bitrate management. +*/ +#define OV_ECTL_RATEMANAGE2_SET 0x15 + +/** + * Returns the current encoder hard-lowpass setting (kHz) in the double + * pointed to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_GET 0x20 + +/** + * Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid + * lowpass settings range from 2 to 99. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_LOWPASS_SET 0x21 + +/** + * Returns the current encoder impulse block setting in the double pointed + * to by arg. + * + * Argument: <tt>double *</tt> +*/ +#define OV_ECTL_IBLOCK_GET 0x30 + +/** + * Sets the impulse block bias to the the value pointed to by arg. + * + * Argument: <tt>double *</tt> + * + * Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will + * direct to encoder to use more bits when incoding short blocks that contain + * strong impulses, thus improving the accuracy of impulse encoding. + */ +#define OV_ECTL_IBLOCK_SET 0x31 + +/** + * Returns the current encoder coupling setting in the int pointed + * to by arg. + * + * Argument: <tt>int *</tt> +*/ +#define OV_ECTL_COUPLING_GET 0x40 + +/** + * Enables/disables channel coupling in multichannel encoding according to arg. + * + * Argument: <tt>int *</tt> + * + * Zero disables channel coupling for multichannel inputs, nonzer enables + * channel coupling. Setting has no effect on monophonic encoding or + * multichannel counts that do not offer coupling. At present, coupling is + * available for stereo and 5.1 encoding. + */ +#define OV_ECTL_COUPLING_SET 0x41 + + /* deprecated rate management supported only for compatibility */ + +/** + * Old interface to querying bitrate management settings. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_GET 0x10 +/** + * Old interface to modifying bitrate management settings. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_SET 0x11 +/** + * Old interface to setting average-bitrate encoding mode. + * + * Deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_AVG 0x12 +/** + * Old interface to setting bounded-bitrate encoding modes. + * + * deprecated after move to bit-reservoir style management in 1.1 rendered + * this interface partially obsolete. + * + * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead. + * + * Argument: <tt>struct ovectl_ratemanage_arg *</tt> + */ +#define OV_ECTL_RATEMANAGE_HARD 0x13 + +/*@}*/ + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/lib/windows64/include/vorbis/vorbisfile.h b/lib/windows64/include/vorbis/vorbisfile.h new file mode 100644 index 0000000..9271331 --- /dev/null +++ b/lib/windows64/include/vorbis/vorbisfile.h @@ -0,0 +1,206 @@ +/******************************************************************** + * * + * 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 + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ + +#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/lib/windows64/include/windows_extra.h b/lib/windows64/include/windows_extra.h new file mode 100644 index 0000000..3008faa --- /dev/null +++ b/lib/windows64/include/windows_extra.h @@ -0,0 +1,6 @@ +#ifndef MSVC_COMPAT_WINDOWS_EXTRA_H +#define MSVC_COMPAT_WINDOWS_EXTRA_H + +#include <errno.h> + +#endif /* MSVC_COMPAT_WINDOWS_EXTRA_H */ diff --git a/lib/windows64/include/zconf.h b/lib/windows64/include/zconf.h new file mode 100644 index 0000000..9987a77 --- /dev/null +++ b/lib/windows64/include/zconf.h @@ -0,0 +1,511 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2013 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzvprintf z_gzvprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateGetDictionary z_inflateGetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateResetKeep z_inflateResetKeep +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include <windows.h> + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include <limits.h> +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include <sys/types.h> /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include <stdarg.h> /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include <stddef.h> /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include <unixio.h> /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/lib/windows64/include/zlib.h b/lib/windows64/include/zlib.h new file mode 100644 index 0000000..3e0c767 --- /dev/null +++ b/lib/windows64/include/zlib.h @@ -0,0 +1,1768 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.8, April 28th, 2013 + + Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + + 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. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.8" +#define ZLIB_VERNUM 0x1280 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 8 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). Then deflate is guaranteed to + return Z_STREAM_END. If not enough output space is provided, deflate will + not return Z_STREAM_END, and it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + producted so far. The CRC-32 is checked against the gzip trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, + z_const unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if defined(_WIN32) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, + const char *format, + va_list va)); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/lib/windows64/jemalloc.lib b/lib/windows64/jemalloc.lib new file mode 100644 index 0000000000000000000000000000000000000000..0c07627e3b334eb3b883284b1653f002a182a5b1 GIT binary patch literal 580456 zcmeFa3t(MUl{bFUd)ua^<rXMV1R+AuLZPI2v<dB)bMEupd(VB)mWNUZX_B^qyhv_Z z==dn41>z+m>Zpw4jHBbI<M^rL=ZAo=rp2}(I0aF8%qTd{3{b|;@lz=H$p5$2-sgR8 za!WfX^Y3Zz$vSJVwI6G*{a$<Tx2)+L?%MM9`IpqWpB2q3+g3I<wYE06@#be^%gU9l z>~!6HMVWP<qU_&r^uMR_it-wMHFHi>Uej;+CZ*<B|89R#sX6{TE`v9?4$M0DGm7ii za<?+e{H^_%GV6c9FLbt{O#55@E+urNzt+c<koTv3P6-|V9kC3;$+MNJexLcR68<Cn z%|0=&9RI!XWH4v^Zl&tqcR!-cq2J>lJF?%idz3k^({FCmZHo1~^loKtrC+f@nS1<K zNe1oh9Wk||VMQX5%V^1TR&8I|Uax7YA{|!6jZ7@5<<<6<_WD?I1g|s!qj+Upl&$GR zG9SxFW5J|uZ=*#u6Hn^NVyvLH*T-|$_w;x6^$m6bF0?nbx2)STINI0U-ZHptATVIJ zZ?U+V$wc#7Dwmwrw}HV@pqEx^V<|Oiq;kbf%&5|%&VifTTl$<HWTUBKyb#X>dSDE8 z-O%1L+&O^v;Ba@(Fg|*=_NdDBJssP6O9MS4BORLthi~ZU>g(wo7#(urdk1<;&Tok8 zhK`=$;lW`qwvW8=xghl&kY~@Z->Cw6XmF$?VzZ^UuiF`l<ucSc+%w>c*3fVd@i?e^ zMy%vWt%^p~Oe~Q!l9`0su%fZ4xn<?5*0#=#UEMvKTuMcRsZ=3lBvKASEgFj_k}kqn zQjHslY&xqs=!A!xxAb0rLtp>E;Lwf3Bc;);c4j5j6mqJVO6DC*!t<1#&SZ^TzEHeu z?Yi}sUtuvBYO<Kj72|PdKq4y0!;PbxEV&Df?&umC?j0y?B6&zmKeDHDbB_b#BN-X+ zqe{c2!O{NCn;d*w{hn_PVBI#{Tk0`ObS$C9GsUD4)q{0BK^oQGGSX8j^$u)qZ&|-C z-rlll&=NpQSL4}qG+s!fqz4pT$<M{P)AB-9%+!~*4EJ<)TN+`Dr8Lsrv2k#))Zj>< ziCf{p$>Py5+_SlNq}0PDKuVWbx;b<Yk8t-O2L_!nF@x)2Wv4GkIiyeglu{q`83AnU z?7BfQIXbotcMc7ShzxAm*gG&n0Syk7I{G$ul)5^*wovwS-Vst@h(x+^ggZtkjvZS% zheh~;jY?Q2QrbB(GT7DIiJY|A5KzaazR{5_9etg{LZzgKwhMde;prXNH0VS@?2b=o zqD36K5WFj3L}_DRk6S*16xG>4$(x4FJw6nq(bb1EIl>*WvP~vpq|{j&>FDoqCC$Ns zjPOKkq@%lMq%=Huv+XTvRFaUX{|&KxF(1`*(q2bHw?a?rMj>m&)D<p#vr*78(Renl zmWD@rTuv=1BbG|Wiy5_NXs~OG+bx^c6Gc6Xnx(y&8qDozF&)9R7+SHAH&W`R&b|@1 zw<~j5BbiFYvc%dDz`H6|j1@D*tf6l086N2!9B}!(O4svwP17|Miq_uTJ%Tpd5%4M_ zqZvjto@U<zz0c`-I$J1es?1~;e`_?MXOsDSLGA7xVIA-|XLLQI<>Dgr?LEVTZuew5 zU&s}61>t`EC|W{i^jecfJekU&Tfng&8Xj~v2yL-M#>iz7QQ_XXad5cg@}MoP6_W|W z$f~j8<s;OW5Zx7bkD)D}%%m~})P*9LQD~UUo2aJ760xL_Nye!^)52t&8tLPRr=tXh zIFw3D=c6i@*pc?;fh}EIkU)0^fH0X$$BMah-cDl&wVJ&*d83fdq_vc;p`tdUzyhfp zg>0%|#NtVr_oDc4OXBs}NGB5+<bxv$on58gtv)H_4dhrNA5)8Hvd}E_ZtpRL3YB(C z6|HqNmB<<B*V!=^SyU;?Q8kr|<`Tsi_b`Q+No56njPj29oH2h$c_?x=Z^YH^o~}-G z!b-jU9J74;3e8Vl)MHRfJ>jM1;??b?kEzjkF`CFG5>{SvC><P#Q(w{DO(fEpWJXI1 zQM#&ox71^5G8-%8HN*B5wKSFSW)`c*Up<~mCelTRC`U`fon4mreHs{3QE+v=V5F^B z%X$=btv4zeR1v6yWC1{|yL*RAH+S@p_PNUw5=eTI)wPtJr(A4j%A%NxYABsI3XT#a z;$te1F9mTmia|jtiw?b|@xwjc+Xn|Kry4v)te|NL-R2qM@;p-n<7!OHYN>c8X348> zc(hW6#MO8q7SE;8?I{kTM@N14=}SXgP2`L5ViE%2lGxsCRt(5-Z@nCitEp5`OJr!| zV3zg)$skLQue^aLoy(+>(X6F>R6%r%boLMRd5SV<ja)3LYj*u)YTp35QJzXFuI5s4 zjOI|4TsGP{P#W!@IkkmEJQXYGj(oUD^tmeLcS6l3jhqpS<?J+X?d;o(9&>j^rX;d0 zm&zt`X`2c9%T=w(<gc2NY9?*ubv>H5GrO|VC)GUKxm-LW>uC7Tg5`Wi4Be$EsiIV8 zw0PW6i7`0_aW|Mz@+o^#E$T)(oy;Vy7>V|xLXCj2Y1SwdqDdZMi>i`C>Fnx4_DCJ^ z1(Q-^xpXlbE!wq$neR~c4u8!9hCDhKIyBO+wnJP^xRak!lZ8Yv5l4gOXXvMHakrNt zl}cvwIn7bbIVGFBNBf7SNr|p&#at|r4hV;fyf2)zfd)}WSIR0<9L}cR0pww2iDk3J zXg-}bRP;}KHxD5GEn?VWHcXiR@HBlXHIG46EL+S5L~cM-NUjPV!>DLHQACE?k#jcK zm13u>iA+8jCAINOdnl+8*VUw+iKkLgM-6`CXeVYNFg&v=R)3L6s|j?}^h7ih5Yli@ zsT15DiKo$6BvVmC3*Z<qMd%VkT16*16OTiyDQnuB<@it}q=P0s+{%+ybNN_2mem6V z-QU^0wb#?3M*QQ6Y%G&QuhgvvvezX<UAeQ7Q4<9{ug8-GHAWpeUsXtb%yeUWeX_v) z2{Ae5QIM<}%}4VY1H*2AzE$d7WL2Yperi6Ci7m5HaQ85znr!#=VX|m`V_GVvsa=Bu zn|e35H_HJseM;T0oaC%ph!zrB7G;_OuJT`7JN@${+)y!@lFda^nz|OPYa92WsQRLj zi#g9g1<S{m%NyBT&e<6->tWfzRZM&i9f@eHki+=P8b@@@q*-9fr=TR+Vn7aU8AbQE zc|go8xHU4TrqjhlI;H0-^T~$LrTRHFqoZ$?O$OCxsG~80Ku2K!wX~;k&a3DoX<9rN z6j7cCs1Q>y8i_(SiuTs8gFH`AkujZ$CeuZ9xBZOBluDh)yqeQ7HH-0>OMkf%w%XE) zxtLcAS}~nSMT4SirZY&gV2nni5N<Rey0&CD_4f7oL|Z82Q)teDL~BYYD9C~uEf%9u zEfZ9{rSc5-+&GHa2~Us(HJOQLljsXf8`<DM^+G0!o>~B>2$N@2Fm>aprweKpMLUbG zV*sZmpsvwjzw#B-TrL}n#!^8EwO9iSN<l4Ti#bCJY*1|0;hvySF{)4IFglni!oIF- zQH^D?(PRz-^8nrDptzg`740ILz;pqXe~>!RU_q48KtUDNbS7TNqZi>1wjZr$cW0@S zDrJBFsHkRRdNC2jEQg=fmJ?5F^?0-iytzW$$R~mXWh!v6B7(J$O=U9qluDzM7O6X2 zO{1mk>gnzom}dA{RE<OtQ%gorH&BLLK^?)0zIHUD#R3v+i+LcZ3=~n;Q<!y02lYA3 zN}^JNiy2+Z=k=hHCs~7Ij8-*@9&9$2&#AJ@MYY(>|1h7iqS4pYf_I6i5syc)5;0wl z2POl|Nj(*X2$HJQrlX8YF(1?Q6sA0_PTtHOR!A6Tgo=8;pkY4FpD=TJjEkShTYH%y zs-owqY3S*y+^cA7Z%JTO*kUaewvdOI{qOC9u1b=XPJT>cCbP*@Q18_hvMBgY&Rn6G zFBXbHCD);iW^UM=m^X^0;^}mzsP<!Kr^QqaF=%QT;wiLY#CniAU^G+Z<V|B9Bb`nK zl>xiHF!j-9!~_UBh?<7+a20`42X(Z)$;pn1&NNoNbhV?SqrD}HB^5+HSj-(AF2+<E zgI+_QDQktGY|aE~)r5vwrL?MH3Y(=uU4mZBS+wvFu*KOq$U8YP-GSb4GBrb(sF5j; zZBC5nG5LnEV@kbzV046rbgo?S%p!6>-saZTSez!-FnN;eys5XJrb9$`vb~L$J>VUW zq+57R!^xO0q;h(?h_Y$c`N(=lIYoY;K4`G2+n#QlJFONnT0Ty}1}(KEJA3;^haoe{ zFrI7aD)nu&*)y1q%@+*R=TtM<9br=~fko(4dN6zuqc3u@J;<rCXd#|V#$#%327PY9 z;#Yf%lhx4D=`2>m5%pNIu>pzX;F{!Lt_B&iqOq^fLfW9yuUtA4%VEK|dNELvY#;J! z3S!hXj54dyIEt~8*+^lE7b<(iQow*wPisjHg=@wPqzVxEM-j&_W`|!?i<va7xaI;P zFGoU-0%I{^i5e|q2Gbvo(W7Ie2|c8QV(7>UU`|eU!yG}b)5nu&mr{BGGhu3Juq5Y9 zpi49UgTHnLJN-))Q$}1*=Tz>WQWUEDSJ6WqtJ#?pN{HxURO@3!|F8^L%og)$RdfK3 z+P_>TjwY}WY?%^Rf(LAQVa_id<?=^j;u7p0Z3X6`#Se|eQfEABL@`$yuvVYz=^q@% z+KFsbxTm+N(`JvVNln949p?UN28-+g5TK|x&5*h78rjy<Gh|JU_1Ok7=)xL>VlkP| zCOnl;z-U~0X@_4>F@KTK(@`;etWs563PnkCdZ@$ZB&nsz?C9ufB~(UO%FJitiQIIm zB3cES&z8}0MF^fiGI`9->eCj88GOmn+C(m8WR5;r8T8nq$pmbe(kc%%C{qIdO&=qy zO=mDEoGC!>U%M~x1Qs~)7>4nz`f~ltIf-Im1tEnc#FShxmJ3Wyk{nj(Fs*~d4>`jq zn?E-V*0<8}c#da^Q3DSQLeF_&(QD_HQ!#)|<}^$OYGj#VX}xz!7=%VF8PDc3BKGD& zmOI=+G#5=8Sco;NU+yG&XfS<Q%wT?irC=_qxM_+QKqU(1dY-v(<fO@~v6xoKConl{ zhBd%>;~|1=Qvwt1>J`$sK$c4H!a^R?7Rh`(f$2GOg0Z`2<LGAB+*lqX**qru(O=`Z zTZ=pHFbiqS&(bQ8S;L9N948UxS5i?efmumG#8XJTzT&2e$BcY21DTtV3ebpxs$;lh zpzmr+LiFpMeqr7qS4hTEQu#PQv2fs_$|ti}T~15wLj4@D{8ogtbUhx$LOQ3BeG|(a zZr`xnpDd>Gru7D?pnui5sOqVNmd0|Ps*Q~F4AWHV2udlcG;cP+&@zgF6d5F%xsJJi zUeI#~oK41(nKaf`?D&a=B_CM|D`Q2=w;)w3qE^dfut2X1-yEwA?3*-=;t?Sh*3j7} za~<)C?ljpU*a*vgxHR0;gLOXGB9b{&w`F7`9J+h@dW4OV_#WulMxKa|k<pFJ?c%ee zMTGWO2e*eETLuSj=-4K086B>sd6a288#A)8TqY|FUmd14=))zlnOG{85R>Rw$cQDW ze=AFr2SoNIjR2B*ObVDCG8m|0KD3yL=R}KmEWFg!Og^qBa<rZr&_`ekD@2Psr9#8V z9)qey3|bmiHa9cevdNBQPE95Y7<?zA>Xx3)p^mMM?J%kmX<tc=2}L_QlNi`2c4LW` zfGB_5bN_^ardn8Y!05$`vS?zd*g4@2R&fu;R6p|GF7+-VF1aoYRYfj@SX*+T{9PV$ z<{)gPcYJohY|cZ`0lQ2aMJCf7!-LWm(e#T96WLP4BDBmZ*>n10gG%eG(W2Z$MNG)7 zyJK+U^*vp7a8{z3kH1_o6c}d&1qPMA<$o^?@9i%#qi{O+p~wlVXAVQm3CZ|)qtoy5 z%Cbo2`oRjpLfeMQ>@(#KN;cb?IuW*9hI^bT5hCFwq>(LysDMU?Fn`On6tkCTHrHt_ z>cE<Y+YZ!lj~gj$Vucd8Wa?L$nVg-mc5?@~40QJQ1bN7KqL+0X#?r}LENx(}C#a5) zHor7Qa0SeWMmzhG&?7Fu)SVe&yI#%{{^}a+?-#c0!WA7Y4+iriHaRbz+n=T3-hTUQ z6qCYCJAj!$B&M^QZD-{d{H2U1atkxWwxRN~yLW4Ex6{4Xk0G0=-l0Axo0)sk7y9Hf zB)^6Aul3Q><%qzD`-|Eo<hz5w)-0+1{iCIxn=BE!kY+qwNK5Cfq7dwC7YVn!G~kz6 z-xN<LVF{0A46n&j3zoYQ39PfJelyG#SY%}|b$~v%&$e=9OivnFEODp-eY2IhLI$QJ zn0b)h6=(NjRWWWDm{c;<pk7C76l(|tva3W>;qO7hk}aJ|#?pDLz<Z6{y-5QtEMPO} z=<8~F05w!E#&5iEj!E3!VOJj)b~2elJgcK;>LCT6$7C4ea6`k2D3%usqowvX7(BGW z4udQ!h3^3@h^?N7Emj;O=z#W_8dhrz!nVd)`UKYe@T{vBVZV=sXV@VI`sXOisNilQ z^9yeKGoJN%^!sy(xCVPQSXBhXE7#eF8n&M%T1C=emfdSlZ6Nm(QA~?sR2IY?BO?XO z@Ph?=5PAl>(Y?h68M}{>QDZ4Bk%B46Yva$Uxnw?B&|}d+{<S^bqg@=fsc9`G3<<69 z<A}bNi$#lAyq8+s($zV@JB&6WH%-&&mTl;+;(OTQ#E3Nq8yT3F3R_fv?;fLhSgRDU z#4jefMGx7fa|Jb?Po(rbCV1TQLC(^G<<<-)P7?+uD4d%RTs{?H>YCAWQLI~M5*<0% zh8JQTuu_%VYfy1^HrU%KIvYe)LDdxs1(`;P&N3r-qe2(D%_BWl-<(Uavtbknv*Hq8 z{k@y9D#F#UK#1nlxod#&Z2B*t4neZ<<{{W<`TQS|&SqB~(WPDw^a<Tj+PpEyRkDqv zeh;O=#@Gq9>4hM87l+BvD<bR&2wO5xirI#de8kjG&rOXqUD8qN+(;O6X{EzoQTv_j zO4@d_cUVy*F=tG^N^s-N{k<HD{HB(?H0Z#Il#A4LP{}lz(UtTJ$RyDy+xfGlpiRp{ zfE67iDM6kL>F69S@y-%iZ2b9PInaEv+4mUe8XC2B%y4T$AyEgMOpTqet!}1khnW?G zkiMH7_NdLo$XOWkQ%otDUvg^2{3LsSf{{<XH(?tJ<N=i@%&?tsj3`ZY68l$J93u`@ zp}cQoH83^6?3WQE8D}{4SGsizZ@sQJ*#Xl8dPk=fIDgtDl|MxWQiS<)$W1Kzqg|z& z%v=yeWI$XZtknbd;AKCOu|g152;#E?yQ=yJ#TcHc?2SD=H<f665Rb(%f_H4z33fpw zu#`8#Wz$2^(?3+=KA8u<sTbS)C`KMU45~0w667E^ka_8Wo+fx~sT-yO6X+#2HU)(w zrzAW94d6Q<T8J*4V-w(l!OPYlbVY_?%=3%v@B~epPa)k7N=$%{PUmSv;UcRflHkaV zY_F^ZPPa;-Gfki-uuGsWuuHHu2&VvHSPs)hq_R#he~?zNLx5gLyk9ef!!*(i(hg=C znuaM@LzvB(yIvjf5lkx{r%%B}hy9b$G{+yQd?uaA#W15wi=&SDwI;n7&tSJ#M#Yv) zw@Wsb%thnqVxdiNyI^m2E(?oVT9$CRG-It)k7u=<>YIUYhIz6c&lL>Sx1X&!mBOyU zG&Tyc-GVcE%{mrRa#%kT6T@z&Sh0Y;$0^mf0j?Q4zVgX5c8T!{i;F9h!Ol3uQY;m@ zoN|ermcdpQ42-Z1%H@<#<)bNVXr~!&k4qNzG1!10mS|i|1q|(C3E0k%jiigKB^rZq zJXTBORw^f3OBA*~NladgwNtl~k;NW;YcGt;4Y{QmT0w)s5gHeFaPeGTOT!*tj0fFr zSQg1eF{a{qCbtttdKg9O*rw=Pl%Rc^TB3+eYHUI0=F1eZTBPOjs()>y1>4Kxu*Z(G zDBT*@l7)qR6s&R?+Lb&EcH=r0y;c84n-+BQjc5_l^xOHajOwvMvWW3@!2W@i(E=<p zU>BeUtctCS7BLV`ViB9`d$;lDN~}cW3o$Inimrw${VTDSk%3fUuEH}b9!FT?7HKEg zfPcAUC3dT2QrKvq%3Ul@5v;_%8|;xusbasb+gCl2$!7IL)?Bi2F+!=c*t?*arfn`q z>@CaEZdp}qxpsSNVEe6sy{cjc!XtxR+(@U2n6npiZf?$;ZeXVkL<_rluZ8f+0?eRu zD86dIR+v@T`+$|f1m-71*URPas#FqIENRp|a*e~|n%AS*Xcm?cJa^&NuT>d6n<^Ht z;1jgPV-*UrQ8Y4;Z-B|}DjbZU7Ynd_3R;3(m5ZbL(lSV`=smh)m4k(GK8_^_bftZ( zMypWRvxQh8OPcL7+Fez^+H5g~F{<q5xqU8R#UY+A=xWe{=Bi>AwV94MQ;NJcy{$3q zg39HQx8}6J%j?#-4vSDNZrC<gPPJ*pZp}R8rK{#R&CQ+4<X|I@8X#yhNvocP6}$$4 z1n%y|DJXi>NTA-aY$shor&Fk@6Qr?0*1N4n4)Vg-UxhIJTeDhoF&!3Fc~l6Z=(=^J zHJ3=ojTH8*p&G@k=775<Z9`>}&ZjW-gxP?ACCWB~n!i*QnoUCh-`Z+hJ{64?X#uvc zbNkI57`nK(ZnvR6DjFJ8l!qBKa&gJEtq8f`NDWBNw48LgqscQg*e&BE8Y&<-Fkx_G zAEsvqN8QQ9F5^@V)ijoQDJ2})KsCU`9445edF<nsRUMXlXmKZCS5ZQZfmVxR_o5ik z3yTfRYqhtSGeFLagjriOhrNqY+Unele~te4$Z%JCBXwGuyW9y)!>R{!Krn0&qBe(v zl_Hl>b4Ds@V6&<xa@cMZ&$C^SIq-D{R8aFc>>yn%$Q{Qt89~d$lqy6_jQ6qSLrkf- zcwtqX&Y<HJMIQi%T)@5-NAuA904B3IR1TSrzhESWd@w%sY>b553z*<T7b#bjAG9jc z)j8~#B*dgtHi~8rI|eA$<`f9U#aup=lbyU@l+3AU!VyzK80uM5ZjduJ0_s^E*4qAT z5*UQsH`?9P-e`rf0!n3jkyqozB4&gutbmxau$Xq`m|PAWhYr&L2@tjI4J_T$3CI<d z;%kfvY%!^vrqM|h2SmVnx()v~Hv~Uc*ajK)WUzNOPIbAt`_HM=prB$!TdB=+O*~~7 zd$|&MbP!<REG=xk#~Uz3x)_5&o>dJDxikwDFbmR91cdhctqhRsF|^!i6f!Q|{_dTj zVnHIFL?bO{U+HiaPbfIhs*p3N{io{8Z@B^ER&-dBn2j~#;XD5TGqKS)>`u|G<2IR1 z0^GF`*19zvM(T+IdMGrX!*gn`sN`U7f}O`O??*#u3B^N#^@A8nxlD0i@5aqt?pgyA z)>=Y~XR*D46C~D`J-!sN^)g#PkC^6Hdof+L-IIaX0S1%eY{4ix<KoUBY<e-W2{gWO z5fUOZI<SqZ4yUqUw@4zDPQn1ls)e163g%y^hN1aX8Z<I&PECpr8mX90u31WQ_D_wv zu=cDdqwNXNt{b)>14e~G34PdBA@pUB`uR%^^a++jZ~}+K_I^xZ<J1_6y90Ma&&{-^ zXrk?5GZES2YyRTJ3zsiqJ)^_v3GFA9_9p#uB~z%H=!|tR(i{rwMJ=w=DHeRlg)=u+ z#b9Qt(-v%)%k+1`sMG1%2E{S5I(nX1eH=tT&vd8MIbwiiFishx@L^}4g$c+Qzndd_ zY)8!GnG=mNg$MvzjA>_K)8N9IXNU<T=G0}}C|1lwDl=lPPt&?uA{&oo$k2M)=9uE+ zYml+c7JHY{8oF(?+SS)Hu(`B_?Wt1jEk!Lw3nS~YaLPCvKOCOpn2o?03_0w~)?zps zhddeFw28*DWRz9CCuntH$XCb}P~*h(%k$X|7^$sojB4u=<R=Tm8x4tcL?x$UgieO3 zFk-fo66I#Q#T{#GK7@rHwm=m`4af17l=;gI*dvj@9yQt6DJEn^-pE>ydTd@o$Dvq) z)~XJKS_HC6#rN^zv^>XYU&22!(V`=tHg#f+-VR-$rS*)H(xqtwY<*yJRZ?vW?^SE6 zf~9$w2!z+VokxKQv@hNx!Ya)Qnx=YOA85`-tYr_W`Lw)&{w{k-#2b4{s4!5aZ5reb ztqUj2D<lbfFYA!zsE*yrNz~eui&pm1hrP7IUuItMhb05crofH1MI-RGWcZu<h$CG3 zWi(b8S?DLW)T{31v?Z3y7RhQ>?c9Xg*;T??aA1~!-LASSwoo}s-%1=Jgtk7XsT(Oz z+*4p}1p~u<*nG<Fvv=wbBZ^oOXDy-i6`lWq!ERKHq|vSjBya{y94#IUjsv@+u|e#Y z#e^fybQEXSP~oTDJ@&dWjt@jVRYVU?21V;5u0YVyOkv9@_Nz(?&TuIuWV?u=C^<BH zC=QLI%oi?@cdxmUXPulToluRMC%;LIY@WrJ&{p9!#mn|oxQJ0%f9K5`X$WPmrZ{<> z6n5L_q>!aM$a}eX#4AQUHw|?TuqBU^*-0_71-1cPMk-SD_V;2U(oTg88`&R(<E2Kd z#nHf48~`XhmRu}rp4ap-2W5lg3T9yJ4B_#17DrH)C9qlDnT@H8rQcmvc0PAmFZ%Fq zdb6E%Q=3>9EovqE0D$1=1(QtUiz`?+w~I@5y3I2aMWQ6qBYX@IFs)*XR4B4#T_#v% zKTv*9J;3F`=Hj|R<gNoL=VOp~HY||rCf1c0bM6L3$U$qb%?e(Bh3moFHLi3JRW4gJ zx-e|g=)$n6nhVopCq)h}2Kxswf#X1v8JGQOk04o%y_Jx?EG&ZYuM11OX=EurMKj^4 zwS;*M25>kU(<&6A1R+PQGbE`k+}PX69aw_<dq=uDL??`*joCUnZ4zBZ`sj0fP`hgH ziX&&)(%L$0A}w7J4SheUhv<ibi>B;&l9Wt65Hsb7?;mMyYF#PsA30M|lnwh8CI6J7 zoH(aOX}+jN*|fYydGYod<um8bQtob<rF?AdEagpSg%soLkn*nOA?5Mbkg~l!q<l^b zDQ73c%0r(HE5H3rSjnF_Te*9Dj`ET3&QU)0_#9==vvZW&n&v8ZUpiO$eQvJOP@JpW zH%n3GDD#vWyw6l3$|=fe_=$gKSP*^BvA&2({5#Wv$W>6#n<&UlxZCt5pZGgRhBpVH zn;84AJG=;dxBVB8$wfSbIgQ`KjY1|4@y~?MWQtkJEXzf>3*W`t<S{wTkiB^KxA`SP zBA(M7VG}IAgTgR*?Z0Mx1vTZ3|KBNA2*PciMN<R0hWJaQ^c2Wf<ZuWsM0WzaQoc~$ z)0;vvLlu9`FX6ixZ<3(%AIbhq$W!E-;IZ@D^i|}L8G;>iksqdi5l&Hr<6_d1n;8>| zJ^edV{<9&0@qU|h^w;m^$2jTTun0GzoZ<MlM4^AeWga9zu|FL;cq;!rUH&}{81o;w z6NUKed@ojl{+Tire<R>L`569-D2oFAnJE==o+r~sU!+S5t$*}IxRB$Ypdq}Fxarqy z{$8L|`bYGq%aBe7JP-e7<D33E|4}ZIMv)u+JHhqOPw(Wd4n9+<<$vV+T=`FgD)fIg z!k+0L@d~Nbpxk-?2{$<ys&piArHw@uPwTIAh;gOSR%P4nrs=FMDosMYeg+u<gIIHX z`^RsqQTasa=GW7VV;bZA*V)8lx-tLjZ2mFbk>1mrhD?9l_iHvCsd!9y%d}P{m3LoE zXK^z949m3EDAP>89EGXMv^zzP+p#pPeC>8DGo3O&?M9sGtzf2Ii<sf``l|1n`ERtf znc)Qe|2|WkD$eGg!B}USllxcw!AyCk+q5-<q0jVNx{mfTf}=DeO3!eW!SrTEGu(90 zdX#2J)nCT+M{Tn-({&Fs88uZ}`IOzoDzA%}(KKp?>m-iac4~$dj4Eua{%2ojQI+8s z49xy$uDz&g!HG@Xu(I_UuE(g-MDCbh#DypyznR0cRW^D=H**}xCgs=T7LV#TLLa~J z;|+b|N7cr%N3!Al^}0yp2+eno-#qeq+&uEyO{9<CT5|l>lGl1`$&ne?zh1YT9O<zi zui;{pqcMSeqh71>n)gP$*85nFg`wzCT<UW4Hm1=(qMKok?a4OBZ<@hgo`8*q(c?GG z@G*1dmLdOTNyl%RY38F~9XBz!j8d`b?+td-%xm8GhNQmnZmBsYCwfKyP`BM=aJ)jY zh&z9S_V}&aGC10YJ$<;No;N4(eXw*GDXy`g4H>@E&5qxlBaWq}vh296B&c0Des|6> zzdPsXH_aZCEkLx9==d!@e~4Rrj`@+#IJWZtFBb!0Vi9M=Xek^&GF?-^rz{4v2i8{S zqdl84q2f}Jq!GnQp+WKRo*ue>UA(<zlYPwuu9g2oTyPY}_&<#^0vc8{HZ`}bT-Dmv zxv>j-<2G;Uz5a&2{(-@v8*wt)=vG@yNfn0>#fvGNW??hoDyVoOi90(pIQBJPC|<U9 z-TKR~a55duO-e_7BmfRxFjBc9c8CY&joDqWb)<6uH=NivlKgiZp`KE4&k;_RqPx2T zjwvwcsEiiuxW{{N82cD$huBv8njLIfea+WP#j#C3UcjZ~K><re<sB@zb&QTug|6CJ zd6Z|c9{ZEyb@k}3%X%$`R7*<$9C7`Jy=?1fPqaN|XJs74onOc1+<!Aij=`}VbX&_Y zyoT&(jts^rBu9UZ*)chU<PCls+R>h%68i&QsP<Y9Z;2njiH&YespcPM27<4i`$OKu z_S(-2f1}^wcJzDZakS3yYv5S(`AAS)^+<<!@jvR>S>3th|JZBbj>W-MGo8DDlNoRu z0WLpt4xn6<;D0=aUmc5U@n*h<;E(B$tr>4bsP2}(YR>Aa{vyC*bF9}fy-u)-Gs2G9 zje|3tHFgBY5P|gdzrS#rb5`UCq{=%EXFgKxkM$nJs%{af=7cCIu<CABJQf#|$N-P= zC5_b`eD_CxmE&{=^I3v>JuiIZ+evUXqCDx;aa+m}-Yz2!Cki@n=cvv-3c9j}k0=x2 z1)WypJnHC;co>p15BTDq<EJC>1#+&ldhByy%tH#rK{eJXgl_7<(~;a)9l4J(k|)=> zk8%noah-bPCUHf=?d0M*)@LR8u5CJgcoH2oixZUoxDQVfI{e>p$JXn0iXe_#I>O@* ziQ_fj0Oq)bcH`)#p5fs^K2^@X7|eNc9vyf{2Szz@+*o*#@?1wJo%;w_(fIfd!ZZ(N z6pXUk_Jkm@ZvQ0G=V8#vnpDGi0;1Y&aHK>>ULtY0h1pIJ*N3K?eKMJhp;;};ddh>9 zRg??sK34OnPWiNtjuj!i5l;Q2<AdK&rx^bMPI?x~%$KcMt+90$o9CLV<JXMgmaXI0 zjP>CB?Lps_aeU{L)R1YfuR4Csn7p`;C5FR~eV5P)2m2UwXE9_q`%KsXr^;8+NnV>^ z+I%{)YsS!0n-@s($+K^?8x{Ys7m)hT;l%iZj}R4?0Z<o#h8;Mj-vJ)gC8b?B;eMdx zytWhv!H?i#aWeqSGyH+B%$A8o1blHE8Sta{P;5p!qK-PMG&oA<huXfGw{h^{u5uJ- z;`n%12TqRbQ9?HNj>roR9L}QI^!P2@JxE;Q>6jysUIg9++p*Q3CtCv&ylog4B-)|K z6i$C^EBAq!(!4nKC~ue*SA|h5Djx|eZ*KpebeBAxY3sUJ*PhxSS@0pa;`RpuX@bo} z^JE)mg9~F;n)0w*?p&J$t~m$?k}C%Dt|l+ut}vvR^59=t6bR|L-Iu&GePOTpDj5%k zE_HFC_$C+^hVPegVd(NJ7lMxZ?`1WlcyM6;TbnEn^Q>f|wNFYmojq3&i$jmCYJhk| z%1!#}?kGkDXph+VW&;c%`uoL20OA{2?!m|#M})I|x-t8O>r4763c`_Z1LRNNWyn(W zrl1|4=Dd~@C5L+g#TVub5BBwK?CfHJGnzhdQ+F5Vo4{b`&Xu3_#nqnm#V1<x7pbMZ z-K-lIh+W^)#rHz6o0ZS@mn(+sZcg+$XmCv&r<^8tdg-1|`)dF-tkby<7gCJc?y}Yt zs_l(VzsoEC(3)dlq3uz%z&nonb|P%KSl2hRvy1{M?Z}qFzV43Ep>AB}Wu-*S201Ex z<`P(Q2GfC}tGc9WkyPAeL5}kUIReDs!*TJNOXO}w^3x@Mx3g1qqzjGsf;?orNl(QQ z7g9S9>voq)`%7NMLo*H?+vMFI4p)bK#F6G)B{;4CALg5_d3FRXFcNMaOfMYl+la)s zoG=w1BcmIc+s)@aRU9R<>U+jT)q<%Zvut|m8d<}Nc_uzv-HNa2#7hH+(a6YPSFcnU z>4qJH9ej&nhjq}t&&4{h-Qi+hL1Cig9Tf7@Az~AQ;Dx42M9%=-tLDBnT`b4Isv5V8 zn=+T=P)9Gyd2qa>vhOH25!^kq4x<-XK0aQ89pW-mDncg4G0|Y6SVBxAOTv*~`fhgh z#CiPm<rES=fuaz$^_B+E748r-bZEl{L{((s%_3`l(@hs0)@-H|+ehB`Twqh*fo&JK z_uS`H0d3V@)_kEEisfS0YnGFJd5lD%WpkwXCfO&%t<SimMYbKLjI7&tF7X_{zoL0% z+sekK*473-V&8h1pR3xMB<{NTH?3^mu(k&R9O=23icD|U1{ss(Xi}5_=h0GcUnMt0 zt)f#e?iv}c=*mi6$(74;B}cANDmmH}S|tjqx+}X4Y_8}=J%>t;qE}tXm4|E<9XD2T zF|TW^<W6Jyif*{zt&*FVpQz-D;cP{x8!GxKCZK6fz9O@EUD~t+l^n&ANJUp@b0xRV z60Yy;s_06M06WgV#4IkdteB;0Rhw0y7+BHJuyQ3XvuMUHB;j)1{O;S%R8n8O`^xXu zD$3Qk--4dy-M9d*gdVzluEAd;Y<|hV^A~}RuJNv4XSzH9;O{+js<J4$yo8La?;kMf zLIC<_n_uE@-J;@kUb+Qv8mfZsdeFTKbpI}C=i)oazxBXhG)GZ(;73m-x;MjZA87tn z(ouYa{3E&=cycy*gr^eSLb$DwG)#zBkbe~Ybd_}ZD(EOa>w@TRLNBw^jERDq1{CEA z51qQGL0wM0Q3oC6$0pDXOIq@u={){Hm6W@x^zUxaeYy(&_EhQLL!kTN4E|9%epRJ^ zxN<;QKncQQrFYmZm$$<0LP^7fc&Uq2b-9O*NQza^%>&(4RnVOSy3Q)-&I8?!D(EO3 ze_I6|uBA~P^wBk_s8cS%E=BEfW4)1%UV856Xm9s&TvU2)RcNrpa_c>`IAS%g<r3@8 zt)qJ7zwo;kzwJuRN%*70F5PfBZaf>=aKp{04L8Km;prRf>>k-*Hb56QFK=AF!u#1j zvbAdiT2mT_j%?W4)!4A2#iH2|(2;QVGcHxuoTO}2l!LhXL{UC?tz!Mn^>z&pjtp)p z)h%6nL0w@8mMgv6vA?e_hRaED2lBA8M^W_glj7rAtudZnv{xVBP+zN$m+BW?sgJ!_ zr<Y&R%fHkosJc*|qnBPjN8j~yX=&t~9rPJ5$7-dsUOq)qT)jkJeNJgM=th4MFDGq+ z)0lu?4=*9l@Cz$cXVE=IVPzHGS%%sz+*N?`jJwXl^#FPk<2b%nRQ>UM%Zw3pCQihR z>Ygjv_fzo}F<S~q#H_)>B>=q>zp#?Aa0NgzW@9fdjhD4ry?l~Ch!a6ZRezXsN(4ay zsgm`w%B=e}5}2}2yH43_zH0U&mun)pwWoWo5^2WY#uJ8!idrf2c^iNbBBUq+ss%)8 z4JkF@8YLVBh==mZd@cYWI0Qr-D;ZabW0}PvAmUgfIOd0y`H0#4#yK1_5{~&?3_ye< zAmXCvgp@UAp?dqJb+mc5j`q&h@z&WovAWaQcd1f${>akvM=vn{&UdkieZX}nrjjhs z86%o%NwAH$js{F4mn!oWl`a8Z-rN1bYr{2DQxs)&69%cv8yfDaQFaK7vujgB$*Q>q zZ};Qu*35!asD?T=?#J0xp=KdeLvMPPN0)sN3P6yf+e29$s-cF5p3xiDppN&_Q1c(E zAvK}4>BU|D2a4;Zp&m)7hBAz3UjD=jU-i?FOQ?pFhvGEn?A{msG?c9~(NHrKs^QuQ z(B65!xY6&=e5Rq8(=%^-D&nU(0WP5$lSa>OIL%K(k_nQbm>nm->8Zn|M)Z(0#baWq z@}MVd(VQ<3xDv>uSuHWO7G|x)%(XE65;Mob+%7Q-EX>CxCS+ld3H+R3VfIVRd<*ka ziJ8ZkdLzH085qiKlFS^1FfEeC!ZZ<ra+30kX^4p*3uDnxzPo8G42QLz-MwLvM$J){ zJGyX`<Dr^Gc+>OQTMGY4*D8tUxAHI3D9#Qd)v`jvN$W<wu}rhM-c%#ln8p<r)CF9W z7J43S`%a|R3Tu_*Vj5Ri6gNApSL?s^A2!z&l8b3vVNsXC9oAectditn8dq2+`@*uh zJ}SAG#uXOz4eauM{v+==pRUFd&wY}MX<T6~wzx=!Ykt@FsLl1X<YF4d*|j9y57kiT zjh@kW_U=<;IZ>3~N-m<A<>EpibV%bbXLtXF&9z1pGhAxs<vN|YsAixiw(lSQ%I4Z6 zxroLc7PYpa8tSgn)4AZ25QQXGJ|qF6adVvkOsM8OV!^ZUi*FjVxt^6=MC0b7R^67y z=D)iBT{hQ+Bvw2`<L07XL8!)z)BB$LzpvU{H%Km`nWgN+7pC>(B7(hsY)+I_H=kEw zYHpgzJZk0wX8_&vaAq_rO*cBO$2Li)oAooz2gOuj{pi3pY;>%5Olvx(E9-f<Sjo}P z>Xd<>*X8PG_Dag{fsexPiASb>KRg6-n+8rRIjW;YR#knU4sHRd{>l&>6?Y5|ZNqUr z$LQRjqdgqPf3x2FOPW@Q2`u@RGhQoJta732%o(p0D^@g#DKDDwI$O#8!`)Z@1=`gQ zqe#=^>=x4ZHTXSX_c92jC>3VB-eT74f=UUR@mc}5e*@iV)Y{^qS~+M2h?@F3(EP~^ zbh|*80?oscj{a2guNJ+4^Qk9*r&72t!{HLpyj9lhmHgWVKQ@Bq$r<Rjprt<*eZzNC zt&T^<FDQPifd3t8<7TQ`@lXXEL`UA}pt(-cS?O?eTZo@J64y%_`lhGSOx7^y-Xm$L zh7X#_qQ>^)Rr>d3(0yYD|LWl1Q=oZO(os4p#V>poX6Eptr&9bVy~`yH6XI3Lzm=ei z&fp)V_d3v&B;9oJdk<*dH-mo^zt2gUnd0|l(0yYD|0sS>f#&CuZo2p#22Gd>6dp@{ zo*6kBnw%?Xm=Ld^nLFwhUR)*J+pC~EAO01pq$>r`y)H9t{|AxW_BzkBSxa_DGtGv0 zV?IsS_s8oS04s^62jk=Mddv__>f`I{>+Yi&@21D5s8g&o?bgR0(D%L-AQj56Vt{ms zF>ch?!IP!Ngi)_QM}#0-x|bC2JSNjYfyuk|^^0tVb@w*FXF<K}8NJLcgWmLjKEAWQ z4lX8Ug0ocLwcD7uvtEaTQJ%b?BBdj=Iz5tjLijO($TmGV^?kj3r{HgTSUBAB00ngQ zUW)Njjt*(mpEE>tD%Ia%<?VP=y245a-fv;(CcH0T$c}b}bP5K0l2RXkSN#(03Yw}k zFi%<jFTMO^V%P4{N!o<^`?164ZpHN5E6?XqCL{OMBpRPyGw)sJZ@O#E!uN#N)Qv8T z+!L$Or}nOy_wN5ZbmE$2rMYV^9-X88Z^G?Z-Jq9$6WO%`@nW)xY|Wa6$esU+?=`F5 zv+km+KKGNzt{;%=w_>x#b{`x&ymH$WhM0iV@75ys>_ni7qLuHwh5n{P4^BOcm}&Pz zNWkvVB8lDc@@{SQp3!skvAwenErsj7wd4qwvBR}+gw($)5|k((yqD%R;*t2lCh#4I z+;hT&c5uzSZ6`&(H97WNgI0db=-O?p-ZR`Vp?!PJ84|zB#xI%BJ^_3a(_d-fN6t-` zCymIL9?FFd7^@EqFF@iCeG;KI?LM^hzH<@gq0>R3zx+gE=hNv(d{STilhMe1Gz=5U zs*fF*%I$ioG#?InB>v;{_}O}SLp{V-s&CcH@2Xd!rFGi1dpF$$9?w%F9)Xn~0e^)1 z$MNSw_=T0v;(ZZ*A>~VWU(C=r<V}O9uyQY;<&66Vpi3B1*IjvUD?~4JHMk(Wid5^n z9vnU0S0+gPo2KmIAbg>spqKwCuq;qm9arzAK8Yv{G_n?jp#hL63{)&cVJHB43w~jx z7jID*)XUdhaiz9iyIi|MyHcO%tAAF%<;4SVHls&{I58KhrZhdxl|!!lgg&18tX@V+ z{%hy%$j)=1Gi%N-Ek@Ri5Mk(!@Y%@U=U+y=8h0lef2NH+GId8{N1|~men)rx()85c z_;~+Ejqz)4*Y0U227sSfQ&)Q1n)6C;LJ2t$CFHz)sJCiBdg#a6*ZA)b_a$~P@QC(R z{`(!tdi$CSOU)NGKuy=9&fvODFXwL8Cocbl#`?^HG|Ja}!YHGbp>UC;j~;rfR-Tt0 zo2*43qShPFain%Vc=HJ_Kgr=Ep&!+DtX@8P8N!NDsKm|Dy|8p4hq-FTFrPaVNt7?3 zkT@9W2|PR@a?j+BSFSHDUei}fUvwi9aO(Z@&=ZXO?Vgbn;*op)OOhrc-#SH`h(0}b zcwOZ7S&*teAyRoaDgf#^D&;$Gr9XP;p{Zw0|97nJ8=bA)bK{}=w0rsveVuYA9KU1n z*(?OgpDSyr8n|cQ*zU<c`8v2GxBnS1dZ4F9xv#!1J@%d2bXVf=p|h+{t&Gow)@K@@ z#yCh5JEuyswXZBYbaG<n&$Rog@Z492S3Ht<)F?l(FYz*}{@v-xL+$C8pD-rKT|v>; z?o$Ei-+JU>@feZ#?#MZ+vT0M~oSj6YXj2dB<$dXwpV7(>>XR>o^oj5X_0Vo(+3pyG zv6M)R@}B4&@r7U0cRe<GP%n>u7Mk!i?b|AGmnRd;UeQAb5f;Vo;zOrtJ6^3Tor?Fe zQUvddBfD<Jc!1pJ=~EA-r}oG1I9V?zK00=Is<hDP`bBQ_??-0mmc4u^lxTVhnFNJK z5=YNWkNv)8_|$ZH9}9Y4`0P5!SRZ??X7uNTIn5~V*C!U7Z7kcHTYWeeN$zK@Oox5~ z?vmt=oTE6o(_=peHx&1F&a>w~g91$%7P<eqxpt=g1Xw9S{qCqK1T+aWRzj2T$kek& zxtntD0p#BL`oo8y0`glc)AxzicbdM9aky&tlDsIN-167as7xIgduA>PUn?K50))tC zv&jENLz@DLL&`$vk$X_~mmS`@yL94?OB+nF?wf_mdq%OI%VIqXVwFpQPWjl<eN(V> zNpw=eXRt@7+~wpq<%>$;`3$-&e%X!#Tdiz!U2&Ie6J`3gWt*dKAzRjRlC7=jN3GxG zNg-`gZm9UoqMb=&->eIb)uFNF{l@CUMkKYHmDUz(WaqbjKQ%?7jokWGK$|Mc_XUhZ z{PMj7Qw_ltjt)&kKXecGH0$)PwTBO#@5YsZLdkTI0f#bt6<05!mn8I9pFl<;D<km( zLY=Mp#MI{q^f@f_Ib3V$^0Sq7`OW&+3$xN=`)5&r_cow=d0)d-FcU%NWz+bqV<7(- zbvm+B`<*HLRe&Pr#34<p=4I{U)bH!jPH-(k?a;o&UFhvY?U5te;X4xVx1u|CxMpiD zYPs~(_l~fFyMQ`GXqiyOk=|VXe$;encxOanw$_+!59++g&L4q6sLmsR0?N0D|MOph zs}*(8gqANmoY?iBH!n($eQzo~wJ*A3O`|gU(xFhU>(^FNjIP7E)h|<B{d-EvlwDW9 zIXyO2GmH-Bez(5b^~pKT`s5d=t@l}qFJcn<F(+X$Ct(WOKcADJdgT9qQGY-Ge@XMW z=OLPHkppM|IS06&O(Q{2Ny<N2zdH4CkzXI7dye9MnDvj8u{zZ|iz~y^P^-GiYlZaN zt(Daj$x3wz`*X5i=b%^ITSE76*R#K#nj(rh&`Rad?0xZ7Q%L1rbkXMO_OR{%grs$7 z*J{^j8#=DN`kK8ga53tu_(pqK)l+-KPmRqnD?~8AYQwW@Yv<I?t*u3Fd!A6$PfbVx zZA}e+%p=}avj-E-3PuNEYeGzH1$#U#LQ2Q;B}iKwxTDcAnzs}q)5idbA@siiq7ocd zlF&hcdj}waqxM7$#P<NAg@lmuAfQHuPDgvz!qC}(Rx)%uAi?oZfNo>lpQ7J!A)v7G zARyuTIH1++`p<yYFqA+~<bw=72}p39k4}T&XaJ<KYb&5ALtg?U!e~GbTyWe0D8;Vt z2c$Ff&w%a(6jq)GG|tff!Vp7nY^pV(3ox(~xIsXI<AV7n?iN57Fz?3zku<}~-&oLR zEa(ds^c4%DL9pQ14X6pcA>{!;NrnypG8lRoP%}dZ0bR<_<ACxEJpm}k&_4rG8F~g# zk)c-1DAP;>%%uReF{A=&Whf5lGKRtnu*kzuEueOW7676tyO6R7&{~EL0*W#8IG_YW zPXIy_3A%p<w2q;VFGMGTp}zr?W$4p@G7NnV(0Yc<=?qNUVYcqkrU&(@XVREdGW*@> zsom&B)Swpu*ZZJ8%JcXkD03Qx#7481Vf0xJpwmI*vp{asF19GxGVNA;;vvN~pJf1q zjhTRu_sRyw)tp+ZoLa&UwsWV#LhaPXlb(TtLhDoJLsL3}TR_CUk#T3dZN73w%^AwV zU!3sFyn}Oh&mIb27iySAIiq|Tza{v+4L?eaqR<+Z`CJY__$eUra|`2YPOMQ*j0!qR zxA|NFKyV0%I0hJZ#<^i-QO(?0p`lq6L9A!Nf*618khc+9K3C$e@JB%8Pl<7rLPqae zatMexwlnUG=8$r3&74`Ma=1Yu?*g6qyaRv;SwQ5^4#wHnjwm)LZXj_W#62bsMDQIY zS6=mwcRGlIZ$H^~)6LsoSNlDr6Dlkg3<-uch{IZs6eLtbDoc8|>dG7c)^D*!+`@v6 zXfFC_Z-<`-RU>Ff=&16PA0NKzBYqlknaLkilc1qOK-68Q{PZ@zKa_o;8d5Eyd0_aA z-}q@zp@N1KUj;PYoIztlv3I5&RT*ej;XMn#e~kZRub&3h7-*<C5%&*HJ_7<Hh@R8L zAAXY$qP}JTFM*-9#(ZWeof`*-N#(^;2O4oEffGY8)tvO$c6ZkZ1Z*LRi=G=L#<sh= zMPh{A9esRQVr(0~&q<7J8TfUHvF!;Tkr>;a@W&EER)3^1vaV!^;?scxxo#LK-M|Pd zhOdfGyosj2r@w3HW)npi*a0@1-{dP>^sS^4y}L$OeTIl;C21%14Olk_(@0hGz4#GE zZ~;(g*kxl@5(<xnX=?%7&yeY?8{|)03&N)s(!w;gg5!CFMHu$Eu?46pC#J0h5z?U; z7FSyfx+v5hTA0QbG>C6QM%n&Q!dAL4tAI(kF$n9+5QW9n)(n3ZqfWJaZfgM-wW$`S zaTRF(&B@i+3YuTLFm1rhMnSfGZfrwX3s7t=Oj|RG!ZS{v+nPZ`?Xn$K8^VIQqs`US z0G}^&VO9Xs>BhjHJ``3*Sm?@q0d2MAb6YbqjM{b!)3gF%-R<ORYJ|^UaABH&`L+|Y zq8UEFh)lP_TCobb^I23HHilBM8J`xWtp#cSrql$H?~U;1YfcPBQ2B%tLmn%C=fsdu zm49$zRy0D#{?UnPTPao33f(FNNQlrnge@Mb>o`6Z4b{esp^A$ih#DBDT`RH-wHEQx z^MNm2|JNbQCi7(IGCfS=vdM(-!6oq661Hx0+U9zz<YF3ESk$)&)hs42@!T0n{)cTf z+9tV}#uZisw02nkaoUsEy+!Gu=W@x#G_J4~!8KG<hc}UYKmNX3=UH4sl8b3vVVwk8 zJFIoPSFE$S?vz|i;|l9!<}zjYo7-w1uq{+SE4i4)71k-Pu*hE5=AuyzJxt>Yi=-!H zNF@EY?+x2lzW*$_n8p>>smx{O*ZAEZ{*29Kb|aa_71n9Y<xE%DlHp0BY2lVF<O=I_ zS6GxTn`@cmVj5RiOPGsdPKkK+-Tj}iEv4g<i)mb8o#6`WTji(Ew7IU4TukG#@<js= z8B%*q&w1ah|E?liN>~a@E}{vthNax6C*1R%zp=SKD!I;ti<^taRw1!53(yb0e)*?u zuHBN0Xxv=XsSeegk2gL0wmx#N&Go$GA{sZ>*}&LbtCxQ437hL|)baEXjqqTt#1K|s zu61FC@MYWdnkQFvboBNQb)<SqM(0Q=!RLz#)H**ZIXK+kS;~nsuQc+^c_yiO;z+<L zQl8_NI)aX93OKbX;BY7ZaZl1XdE0QwPEu-}-Z{{X&1kVLJviN^11EcQjp7KXo6%VT z0>{$~-q72lI4pgwgxKb>Hp;fC^`+4!_dEI6>}31c98NwqOENw#+r`IZ$<D`QyZD$) z>H2sq2Oo<RzmG%Wr7`i$SDZwnY9^H`q>MyL^^V6}ccBnrERi&lnS_H-jJRBcvDbLV zWc8O>c66lsaqK{pj@@<Yn9#2Im$bCG40UI+-)&pfuu?FP{q98y+3((f8uYVNqVag` zcW(pkSJZECJ^}W-yWzf_`ofMU$bOfq<4e&xtd%VURorZ+8e6-*{wm`gCObKAz^mIq zrz)zt+`VB~83Nsaq%nC_rMP?fMjZF$cqm-&vqMpLI|pp!ek*=IhJV*l?+FjpZb5dm z-N3&GG(VMe)NKl)y9)UE=$>uFkDf|&)O5TLG@q7qmBOV?%pTC}mvol=9D{BOhdNS^ zg679F(2?_Vc>Qt)I?{vRg63A)0#cVND7}9P{E6r@{5|y>@KARti0&)ErxD5DP(<-i zXDo>BX5c@7z~&PH9?I$<x-Q_~37T(8x=Ql<5$K)<%~vR5c&PKh{sq`SZ#Ua*rc^50 z1K$d|Ka;c+Zjk*miQ@}Z`gbqr9+<&DlEY7{^zQ}Gy;OyNi>bfqcq-XHp9Q+5l6JcE zCad&sE$FVT!oPP_>E9io`|}z6Bl&%$O8@Q$-M%XP`&pI#y$HI)Rrq%r_2eB-rTjP> zbQen6O8G&0u2<>b2GDJp!9SAUZB_dBXQ2C-*FTT__!jtguh&1N=sWqL9&~k-7{?Q2 zXZ|+0#{=ll_8sBL3h8{zxICV?w1W<08Xf8BuDirUIge;^dt2oZ3|~box4zDX;pTZw zM`IUGcFtq3hDK*UN7*0@HO64nO^rwaKWgRdhjc}bGHv8hLvln@(H}CmUZlfza0%>D z+19#DqgCab6qQ|%l};!>q)))kxBQ*|_jzN2XGGM-mzt*F)I>HtWOT9tX278*cC1!l z&^NXC_rimnyVb}&FGUi+z9TfXfAy=wKU8<VH2MHp59>Ot8jHekxZ_$jasN967G`VS z&oFd3-U3H5+)vFpKP*UCw9REJ`lWoLMI9sciK}YMYAq~ZO6Tm_JzBdzL<u-_!r0+i zqbKeUQGwUX-(}K$v3LzzLTn&YC*%ip+$gkKZeI;RVTDRimLbZiJVWX_vPEY<M406# zWROh=@=f|gwswDvZ4_iU1{v|!UA>ngu}C^oOgzriA<S_I)c%Q3mjM!?W-Leu)(}Qj z>G1^zr}m6<X6>b17V@HwmXIO22;B34Shbq*H;gz<w(Dch?q)R6H%au1OF3c>leil# zoG|SrlRVTFWmvCIjn4gY4GYdZ97M!OUwxodSLU9IX)7-+Z^jotI5j!WF4Be;CSSr| zEDWBwkNvJ`-0k#~qaxx%`Ev=!hvY-QuyQWmX@)MqJHZeo@9!8|jkl0O6c9-;%+eID zq+RIT0Cz3kD;U~>H#Ii1u?0m@KFPRu;Y~{iVdWOQZHe5s1D_l<Y^f-9N0xH@_42{U zNlIktLh3U`PSO_vU&o+Y2W*4DHUO&%tO{&VV2i+BC$QHE30l%Qy@F8u=Z;XdBC?WZ zmqY^3v!LY`)Mi0(3nC>K9PhNCZa_lV*8>t_+79T`_=T1C;w^-;6Oa(joq&YsK47_i z#BvqI2X^@7dAlBr?EDZM#-6V!oq|_n=PvqsrKZ&XJjvQDs;|S}{UItmTu!+_FeJ^O zE`bZJm5ak`S{R~lnmP`%#Q~{Tm@D&D3|)zLD??bG<MsHkvKi2&j2pz8R5Q#<rZPlw z)EK%Q?>}Ma{dm8fp-<s0s)7FnNU9(m<HN_|2qh5;Q+`5zVOPmv0qVP^N^kd<(erk+ zE2Xpbi9+qZxk8Nzu@GgNw|1b$>VTQpKe2+NOxj3NhKo5`R8oX$(1?swJFJ|KHz`?| zRYjCd5=DY>ln8;Nk|ru5OCdO@$Rb#kb9E-8963p?jV#J8LRnf8Srn_o_fmW};JX#y zD!z4m7x8`7FM+u3m%wb%S3g<`?Ng|NLd{EMLR6@Wtq9OeqKK4zz|hQ+9Np$9_T|G= z@<$vc-z@fO?LL$wv*aV<X30m~&61Dkn<Zb>5p!AeDHTY7r~KEEJ+Pez{$lUPRGUwf z3!=h^0s3qF!rTrC=xPhM$%1aQAgUV$-5nP6Q9wc~{tA$&Fzx{)DvYlK5*5a7Kth!d z01_3(BbMu9maFrmA<9VexeS1?BoI(7zBe$g=Dd({UUS$w(TJ)r^H~c(a0!UGHZl$- z49c8FVLd@J5$3ZFfZz}iacp6nljAEUIsQ`1A~*y@90QE2@tlD~BX;x201#XPBCZnS zyj(vrS@4(CT5t)7xTtz|pXqcPFy><b5F7#`jvb71O8PH>F`pa&!66{xARiHiLuOqj zIsQ^P7aRg2jyoAwb8@Y6^7{G8$<6bWlN(QbX2H-2*TI43lISlzG_fVP1w`B*WSldG zOMo#Sq7WPcqW9g5GbxVtFEtO-J<fBgc-FoSM^2aM9JclA;&nI|qt1Qml%V0`YjLQo zi|n<XDCNvz5mEn%QoDUAa8Bt_pVYRmcvo`AC+wj}SaOmT1XiOQ6OiO0);DW>zMm{H zL?Z-v4j|JntgSdEC}+bZR5K(wPF?sNYBl6@q5MlU;Brh?&H+ZmS&}&Ztd=m*fXgxI zM_uhu&8_st@7J{-x=y6jNyCa%(+ziu@57f}c&?vj9$Z2-R9O(s4?i>Zu%CvitWXU# zkQCM_H~!22^V6KbG?Y4$;TQkzf%E+|3z%l1q%odZSm&o9*H8_GNdCNc*)=FN1Ub`n zBGZtz5Y+hg54DTDanev9FjPZTz#{xEI_chP{50ees-bF+s5gG>X&}5|oy0U$$&oa_ zxq9D+{r-@SgleerAo<+-(kwLoq$|$&oWe9z?NR$Z|B3gjf(9SlouI$;2pywFz<dOT zdR*osFz+!x@mFB(a$)?|LFD`?i>6L;ebI-x--r335A!P@W)6vtAJga4eV9vp7~O~2 z?89vHVa#=QMKQzrw2$T<ALgJB^Y1>4dG3>aYMHr;ZJ$y0Rv~Uox|^Z5ON?zjb*;qM zmQlkJW7|{RCNYaFe?BZRCjmpcgh^zHImN<!TVhVMFb_*i#KJr&F(+G?pGl0c_=2_4 zD)ODm8I?G;0I_N-3)9F%a3|dtb}S}_>J7&5329V@s5A+TNn>Lg;r1i^s1yjA7C>eR z7MKQLsJv2HWK1)4yy&62&TWxGWyrQjq0`S6T2=?Yktt;wmn8s-CAhd20(9W4-5;>I z&JyBQn8sywaGJ#hK>6g>$Ir9vBGyPQrg4RJy2V8#+7~~$-sZYWaxsl7tR>7v(x&Hc zKlkLXY}=9%$;C9Tu+9LjovxAR_TFZ5y<c)MjVmm!&n>GS3Tu%i!_P}DQRh2Pt2@&b z)>Dsu|Icl%Ny)`DuCUIsxBw`0s@q9cSU-|nOyf$|n=LLP`TG0L`QJ9zOOlIeTw$GU zaRK14PO-vTEE{g7afL;#x-G-m?|ou{%|*Km>0ugISara<_3%V1thD4}8dq3vVJ=e- zueo#mhi$HFB^T4U!aCO%R>TTxSaLCqE3ETeVSV;<FAUpUw@WUjafMay3X62(WGk${ zlw3^X3JXoXLxxv<wi~NF)FYthi;|0JTw%QxuC~ROzW0$`w(Zt#$;C9Tu-?X8rVKxO z>)9vSTtAUqOyde`DRY_Si|P&AChd2Ui)mb8UEm7quP?mzOE%XjGJ#CvvLK=!A8dy4 zrpMhI6ccS?ZwC6Jj>VB>pbgd3GY>2wfBTIuD6*Z#e2ff>XwVyUa9zY)lwNwSX}L3D zbKNAlh(=V6Ujv2`I|sjzBJZLYA*l$=B;0xVqszLF!g)CbY;@>;3j7rMOZVzp_f$wX z!r^|8BQXS8-#4PsWg?OZpD-Z0qO)(5>>$XV2pHH82@HbiY!KElWHQv*U|$4hUb1uK z7nAt!9u!wgJ1*;B#7KwldLi>RH=l!xVdKq1xOv8T`G+*{v22;-$%56LOepSTae5~) z0XNFnmt;8U9akVZ5-B4^d25T<fwX1qKnC8gM_x#eE8XBnno{v1KnFi%v*XjNaPk&t z^YSF3w0t%{_%bQ_pqrG;b10>{n8|mTZv`jLXOu)9Iual3frv{WuXOSmLD{jc$hN|1 zZASD~Dy#z~U06E|2ilUP9ZaCBo7pLEH>1nN&E%B=h2u-UiA3UDsUSjMf+;86WQ>u) zR?1`HZzWfg*}2+l2I8p|5q~<hw70XbcRNn0H&3}tsPRlOX+(8HZLg2#%;UcS7uuWJ zTX^22y#+C)S(Ek_%&xSzY#LN8eqD`c)6sY#9h;8do_Jv|RAoSB|A=x)t2FwOwqi3` ziM2GWkd$O4HjAyqcGZaH0IdQhIsEsUbd!Vg39u4-0Pd4c8o*>FcI2z_&f5{HTx|au z0=xP3UTn8-KsuWB_Sbbs7xe_@U$SC_OJ!!#n8wD|mR8mo(wNPxF{fgbXPV6iY0O15 z9&|nxG-ljGM;hatW+N|%Bu8^Ijz<l!@2i6rUjw>#(;N*R>f{93lf4i4M?iBWjZpDW zM=6MIIq)}t<}V~22``B5KHw)M4M2W^=oTS<+c8poAB{Wl&@@^Q9hIcRl7{H$38K3J z_-|k|`ZgL{;(_;pbToQeA!&$?o*@6y@SquV=6R%*<aamd9>K`8henKeXnG*Xzdr%p zw?Xq;8YAMNd<>#HANY@BL^w&KLOhky@iN@L3z|JN4#ZO_+;79}ER6b|rjZ{W>JtZr z`(fZ0Vx0FW8tdU9IR()Xez&9{I(mZWDBt#i?)EyO5Z&$|x*x;sOLdAe@fM=0tfxJ2 z`xnqeX{3jzlK#=e&h?-vNxDk%djWLs0nHW~1LC2npP=})1OEbOE~qD}%HdM^xC}J! zm2|W49pqmZ@E-!rOOlS{8ASI3;1@#~o+pJM7{4I8?*RXg7$t6%V;~yHFrCNFll1K? z<~Rv3J(cY2_JHntl9u8ZWamlc;l(Qb`xVhG#Sc#<|7bvawxnS~yeh@-LeQ<8!9SWT zS`V5&FCF)R%n-zC=lekO5igxbesy5^Drg?}(gpbUOVIq@OXu;A^5ZOwoiC#CGagGW z0sdt`bA^{Kz`qh`c6#Xo{QDGWzUZa%_(%Eiu%zJ#;#Da>o&ep?X7G>lV-{ux-h>}L z)1|i+G;uGTCw_JCV<Tv8_0k2T_isS+1uvb)Kgy4XK=YKBF2KLTpb67l1Rg6L0sfr} znno{OfPY2MZ1B=~{G<HXE@?Pmyej3#ZJ_($4E|Al^5rW1djNC?XYj8U{{6g4|6T&! zESi<UQ%Qd0U!A03LcA)acPZ$aXYg+U_}5nH-?gB-eg^+2es@&q-(8^lcoqKLU!{M0 zK=-{W{ClxV|9(Yu7vqPgQht!WoDG^rFI|v6gJy%5&ZEy%-nN70eO|f%|2_wruX^b` z{w;uik4YMU{8ZAHAA|0N8T_OCt))iY@l^6}5$Mj6w3XyX{#{z7e^JooXYh~mqpwQ; zc7X2AD*XF=mHvGTbPvtoALZ|JRr+@rbm2>cpexCb^7mXxBPc7^2g^Zs=?wmn{H_8` zpO-E`|K10hk9g@k`bYkK6*LFDbOHYTJ7|9Cr3>(HQG=q0^T-|LGQhtm=<@i{Q%QcT zFQD1sr3>)yuR-&9FP$fTixAcU&^+O#3-IqH(9Du+nw8>5{ewDl-IEf6r&4)q1zp_h zpJP#gc(>rU(d%D@eHIUS=>l%zq%Q2wgXkOvEfg-v#ry2Q`22tF%#VG$^-<0I&_Ioz zi1>qRFXb(l4MzDf9E*sv<9Qk&4a?1!A2Z5Nrq6pUz521p&S$|uW}s@i{FJ`zDSh(L z0@@p}Y&LnMmyJDJUYeXWdPNTAp3C&f=V#~2dvKy94nzJ?y8K=Bj#9nY4?q^0DxHe1 z!|t@9V=oRvCSPH^d2+7&5J;aB{<*32N1xa4Remu=&wKUr4v@ialQA()C}Z_PV%c^c zLga8nkb(XnG=ze%5RfM(&yy$V@?&<~7()emBZL;_Q`N3vs1LXs@e8xb-CBldfJl{R zSa}NXVTS0;&GihO1?UQfaI|`4=MI2uQfo;c>3@>$7%it;wesQe$sjA8xO$yBGS8R@ zKMJ8@TZEJi&ZQ=sS{!z-tlt0bdabO6_3{t3ab&`G6WH#-Ca`?$JQ*l+B9`rEXX`wA zwp@NYB9X-}%xTFpq~G!i6|HS``h+&6Pd*1jV-_w>ZKjqLLF}BQzk4m&46;OM7UgO{ zH~|OHI~k%L{s4ZsxB(~UkG)d6twX27u_yIMpVLn`K)~d4vn(iVLA4gN$b#zh6DIX3 z+y(H>1Mn&|QhPter@UwH{Rm6ZzyDL5OS%_gy7^4~Ue*%miGiyG;HX4CjQtY3+o7)$ z;T$=_m)-Y;iEr%i+~Kf3q5sbEX6m8LM0gfdUq5dTj>pD56Xl1D@}t_<6&3UlPb<W8 znSRTwB&QKwpU6xh=yd2I+zmjADFyfz%R*bo5d!2Y3j*9jaXKWnI;B_djokW4d>gB| z)XBoPt=(At(8#6fTPCMaPSdwMOM0GL{r#=b+lQoLGd+$f&rU2jL6=3KHjNTV8+A}v z#508347OUEfW*BQ`H8b?^_LGC=RIMper)R^+slJ#+???JrU%m#V-%ns+M}=Dqer5T zB8BWNsf@^QQWufoq}C$CVF4#IydThY$e1u&=XNsm5#R>#3oCzxx4``apbmC@43H>h zq*;Ovw}Y6Pv+h`E&OvN3o5=hw9*I4ObJkf~me48fPKAklcoLg_T&i+l?3Fna+N)qY zkepaBf#_lX#oUp(tU-rDW0Swr#~zwWPpDI*hUXpBCbSy;`!9_BG!)vimo4`j(kR@x z^Q4Y=<2Y&eI-@K$PK^EOB86^RFzUB7?Z%cU($0M~w8^63YHTft*KdJ=et8|reryTq zt;uIY`m#w@Ib}S%Xmz&s-J$Vptstiv&jNm71sWEovwPR^KDAbT?B)iXEdL~(?TuRg zmj<p2sWZyYj?Qg*jFl--e$S%#vfo5@eh=)l#jQy7(p7Y=$aQpD{?bi%rOU}Bx-huc zUxq%YhxPL&_3~1EBDY9v321sLflB$Zrl++sj@eF^^GghQ%?b)Sj#_>hN8J|>8|Upw zw=ErAgi@6*KdhI3z!5lvJzwEpQ;F7>9hlmOtC(>a2$F^4iSMyPh%fs+7!u|E;AFOV z`S-hCitM@$LPMpug--cjN_TBsM|JpBym^k|p_P*m;G_EFGod)OSO?R9(#sC89|q_l z3`j;Bzjl$f`r6uehXIjHTeWMi-g^NeWw2DQ#9OE+)oMw`-EQGN4`?0Z4&t3)=vll+ z7&;$H9%V>fhifdxUc8DkC0FJH*Neyu0}@w}Nsdg}hD`Zt{as*->^v17P|gfd&fKK; ze*X@j_3>}i@1Vc8>^ThKQC8`6@lC@f`#yqnITe_3#>7Pzrpu4Wyqikk?vj4WyO+}C z!gM*e9CZO@-ZC^aKR^Y(fU;3`0>*YPOizS&>$s;!H1?dYzeChGU-w)2ifaSzwgQhY zdzrI!pP8+6W_m-s{PM1;$gV#@-cr6|E2K;-vi2s*+97csHAPn|rznHVA7^37e5OpM zyteWg@}+z(YU3Tq=MK*24$9}NG~7{gJ|Zddc^e>+&mRCJ^7(TX?ni(`FMukl%kT>; zIEhl`_&I<?j?=xRBF9A|^6354a+pPE*Mm2m#oJuJ{|u_!lgbBmS^q~;q8$+16=gHC z?Nogt>TZt1wTEhT*%nOgMimY(CVx6hY(9Jrv4V2U=09b0mUi145vi|bOuV@cZeORi zy6Lfa`MdG*9$RCyawtBrSkcB_UA%3+wm)1;U7$mY?md7%@zn>lNOF%h9!BWgGf0o^ z9nwOJYtv)9!!puihiXRekGHWi^+xKpHqr)I^CVN$z1q~|{_rj2uk<Cf_?Eb6!-OBh zPsu%wX#RN3CCn4sqD^T4PC%;wiB1<)eAFI=`G!Dhf5O}roxl)f$>j`f$9q0QAI5tF zb5Ms(;9dmO$GBGj3Enz<3)c$)30wmpL1*sFx(xEbwK<QK77F2`E{6|dx7^-S0FB~@ z9i<RIZVc$7oy4X3B~%kMl>dY%?>!7n*C+pDHeKH|w*Qj*RUq~A4$C@pV!?jlv8;p3 z&ow=*muo0%Pc85Lg&vt?cwW<EO%Dn}gtSy#S7MaEgUe#-uxkxf@b}nN_955qSC{+@ z;p|t>qCahK#!K1SR{nl@FYX4Jd}elZe_UxsVv$d*P2~l5K^13_lRmNLpVAWxS~KGd zl-0~QjEWhx0{7gx#FlvTGCKKKFqD#O1|%d$sUE^F%tz+ZvC3g(6TUNy+lhCPp})af zNc|gtL{2<u;erI3E<dMZj8guuwCs$Xn)dc)sraPJQc^;s81F#(5K-ti@$!NX#M=t3 zqo->acT8M~`^iwLL6J@IO{H4Pg;u?sQe~5@k1s_FjXl-xKBXKxOE2SMu<wn>mawc3 z&7L{{I8ZP&(iLh;3t&QRsm2k>q*25*_=S~E;Qda9f)Z?=9bA4&E5AaimueJxHBo*v zT3&ot+m)@OCqMdvF_BtI*Q_Ca9J6DVjMEV{5oI0F2978xyofToBQn<JP%~a$i%8&p zCRQp9nKk*Zv-QwZnTh7R%Ig|-J@%d}QT^19oP)MzBDQq$@T^4np-`-K*&dAT?AGO+ zIQm4?nb9U+0mYtpDBBuehHd!k#QyAZwz)iKYV!NfA!CLYk7t_?MQ&bLjy2<RD`!e` zIo8@FMttM3hN)Ct8UGKgmK7%yITC+pyiiB|tB$>7;VcqKwZ2HCokL#&PN*rTm3N)u z)-{&1Zf$=*7v*&x>IN!OhZgW|cYM)g4Q+a7;&QA=`1z50I2z-zB6v28wbzVhglE<7 z-`C6QYMZ9U|5T@n38Qs6wjTe}T637l13~C<163pu5{1~!N&`&PFQ_m6NsK3nkjH!{ zBCa>!7v}xBeGFyru4U+IyoKv+fQ0ME0g2jgHy{H)F-E?QAsPnS{mSzm(pNuJ()DHN zt-Y{7Uv?^J6m*Xt-6DpIvm^H$yyev?Adwz1G}X)DNB4T>2PXB4X?TVn^Z}0a959F` z{Tx7|`KJ1Z#w}r`6VO%o(T0EL&i=H(QI##SbBuT>KG57JN8fb+FWzhJZkKKCF5EWu z_e3EnM;G0~EWblD7P<ZX<g)AO$WD?Cdh|<K=wCs-EHef|A7G)2Z&^uSZOR8z0&hc| zZ;aRI%S7Wk`ASGO^NqX5BX&;h6>~VUd>P~6gX5>0M<BR1D!aBalb`gPt<>RtIeuY2 z8=G)qWA^~$HCs{f-4Cdi>uZsrTY<X{zp%0kZ=wq;9|a_MKV{**28ejW%C{`nhb^4h znzH6&DrVv=XyD?5tiD3|_fuJc@I(<ENAlmy2<WG{XHEo2NTGAf0Ey_dSWwl$RP@#K z;Yp6wf7^y^QIx2kbUl7yz6Z0HA-j^PVng=mL}5sX?~i{wc8rsEGTvRRCT{|iV%+(7 z#~EtGdkaGv-d8bQ)`H$)LERQKXhGX8h)SX0{V*UA+Ft_F@e3<o#k-e%z7J52aip@M zQrHJ*6T5!bay@9ddfI5wMA4Bk4Ls@-Hxt?ey{4D+iNU2>`Nw7tnR?{t9%5Mf9kh2= zrvp<v->Dn>P5tmsM1N~!g}jppgIaV_s8fb16Wp)G0n$)c_V%Xs$`0BOwSTPPDMIqp z+abX~7^Bh$8nkPlM@smr2T``y;!8AlU4Tx&FU&iYuVLuVE!-ra660zjbCgK;JSEbM zlVaAMK;1m$0eZ=YY74O!SwOY;rtFZrrPqob=A`}RvkidY5D;<P$+#LcpS7O~|3dJ% zR|amfxCBI8A7tEH7KW9DKf{(Ox@Q6pS_^&_;4NqgBOoe&f{Spg@iU(w|L=xlNO{Zo zwaWRA&r{AQEmG!pV@u5X6FCf%oBR~qODyOtK!Tg7icl}}5tLzk3W(D2*Z3hEyq&Rf z(+Fxxlkk`PymJPBKW+I7z>-TPe}!DgPqNT6pP=}D9*)T01tDd@#@c7*GzeOfgZbPH zK;*H2D3xDk9Ou@raD?vzbC}rVqLc|*l7WE8O>hx(DSqY?<o`WzgcKLoDvKYVtwc%- zkXt7px8}1Yn8{5(3GO8pM7brniHdu4_)AYvINtzX<d!p5BvnC8X%!HqN%%{Cl0BpO z1o?};we**$$ZvWo`77i?ev;j#`2_iU0FKBl&shvVHd*kODpHYK0-_Yq{2{nVn%$7# z`gzJ?)BuauE*gS^@-n^T^QZVLxCKPqk2B7BUIJD5=JPH9f<r*W@f72nCmx8>EO_2y zaR`Vwo?)CfT`vG@KIqfQa0EnL|IRpP%$A$v_`8E$N#+6~ju#o{<Y))Rd~N|C(jp+@ z_$A|<X_+v|@%L7Cr7#3U9ETbAmf5qE**M9A9+QJy1s!RVfT)BB4x%EvVDky``}c4Z z`bt!$zwYqu5QM+vr&C{p{0)P~uU9`Xqk_Lw>kHWkh|)p}Y2cb;pFTn@k@@ri5F7#` z4vGsn5L`Ga=$t7gbrc)|B97ApM+M!bE`s^o2taTPh`4Eiud?QU+hoPxVT)Tp#C@*d zUNT2ng8Oxr;C`JYjf=U=ywAZ&vsfZr0TJg?!Aa#5?d|-vbC~O52Up4B5)g4MXD*>R z^lh0X@i0!%k>&_!5g@@q{_eofe1iO@=_1mcSuhqm62EuA)6bY5<8P4Pm%c{7$={#P z;P?N>-j@efQJwA2<%UJJ#0?QqFBlbEA|&jnx%-`)+?zyDaX~^z0z@IfEP%M62CDQL zty{I)TI<$YZPoUZy33}ZRa9)Xb>CXGxb~}STlqcjd(O<6Gk0z>UB0h>{JsNsa_)Pc z=Y7vUXU^PtC;U(9CcVSKwSrf^lTx?9Sgk{&Nua5oM2u=()HUg(y+<o}>CLd-z^K8- zsLmnAD9pK|Fz1d!y^oqT;tgUxX3_Dt3m?&cM2xJ?Vhs+^zZ6BA_Zt4=9$;w6s)u|J zFk5s0zBwNbq3h3JfQAHxW4cXRkIFy|N`Ww<D)vB(s#!_s2QFe*SQuJ9SWLl+=V9h( z5~tq}Vg>`$QAlgY!0lL{lNKk2E|!A<no1~T;7vPU&BxHfDj1;C8fomgH}bc9%s|H6 zk0XVS#6`%K+ZLBLK$9&pVvHK~cdRblnB9;P3~V7K2-lvHL4n;EI*|thbP9kfqwT;O z{~%({a*+kRqY_67Wzoa0$j8ut3I=GoLpi&0@{AkuF~b-`3s}lo^ZVETDjzePF?4#P zwr~IDJNxEiu*(Bmv}mC`|FY@TYw|I~#v7w>BwH_Cx_xUtW_QNWNrPMNl2Mub`k|f` z4A5zb%74)Jwq1~qq5BSf)z4mxp|+rQ|9H`7=m?a1XFc!DnAdQmI=uWU+9PyhMlhxs zN7D1FLsvHBWA<STwJfo{eeci$I~e#Aj?^j-)$Bxdx^1EAfuRKz*=l;{qHpD6Mlpu^ zGxe<N&;EK{K4w40G|~|tZ@)UD8S`5lsir=>{jw|b>zQ_&f`P|yq*1i*x|(Ui7TzJX zv~4-n355{n1RIg!D<3IuVq)e94nlIV_0^W#mM5V$vw~o~V1313ueWzmGMY{XD?guG z0y~H5bY@`=q9)*ANh<Or(LBj%c@o<C)Ad}IC%H9G@<g8G^*qUkd6K{7Nrs4OLI$i- zjFOTOw#0fn%wD!6EHTRW&Z$x|%*I%6Y#C}xE|VDL)#nZ=+1tiEA|)lZgx(8EfjsSq z=$leP{&_^y@;|eWE!ka8fg^1Ry!&w&WlQh|LJs@dl9ZGTw<RY^iK?G7@+52WBv(qw zXy_5q+oWVaTXK(->}E^EMlSi@Ar>CK?<l8L3Bmwd(jY~HY}N}>kMcY8p_C|(MnyC! zAka3pNZeOSifqYvDcPST@K!XjLXdcr3x7cqrG(}ymP}z+MEFKClkgy9xe%hWj9~H0 z-tdj)OqTGw)$oPS8v-+xz9P{1LSV=d64{{{Qc5s~P_QNRax)GzLo&uv!*8Z#i3Kre zhGYr7B#i@|zgR-AJ2PlLqnS<jdUOCJYHbtW?^N8P?++P;X|l!`qj@hm5UI+u&C}@* zzEP|bB#SYcr<4%0=zKz<yK(qKgKb-9N>&Id`g@(mki_<|^x;Dn^eEO<lEoO!)>xZ` zh>`mwb(QkVv|h3pqm}C*n?=3o@QDweqgcO_EXHWIN|{A%M68m^cV1SkuOy2xnk}5< z9OZiPrbmCHSfgbVFh;X=2(v<T#AnEd#`%g>DOrrsY|#o-)#1w1|MXqOS|C}B(QJ)l z7O!3qn`yqcRI%1d7GpG9<273!9x$R_v3??1jL~czrrFy1@&}J8)~_XtF`BKzHCxA> zeB3vR^^s&TMzeK<%|gU@VaK|^47K~=?sPgwV2oyqF5y%iK3Dnamx@&(S&Y$a(P~6^ zVx;!k`qmq(6zh1&VvJ_%D9zTC@9nvtVy%!Y#%Q)^lm`PLI^xs0`-syO>pIC|jAo1G zJXNly?U&>f>tV@ajApBxSytb8sUv=qV!a_*jL~e-jH_%N^3E}<6)Q-W8VHQhY)yhx z%u!UXV}5&EM6nK$EXHWICNqm>X=0r;<7Y1`R$8(cquH8bvk+lVUwhkqV~J!jMzcjT zt}0hq(=~f4)<u%V7|j+<-O5YV6Z`LbmhyY{BgtZnW^1};Yxe#>|4gwSkSxY%w&;pe zc@-n?TgqqG4#{GSW{Yl0sB)Dr`R+Z6MQ^aAz!=Te(U2-z<PmEhyAJ!y>7Oy0tz(#F zwHJBPQ!Kd0<G>ir*0DB=0OSR3q-`rKS&Y$a(RG9>*X`3w_E4--B#SYctuV7>GJDb+ zW!qv`S4d}!W-G!ht6WXX{`P@lT_Tk+Mza;ov$d~n>lVpkjAkpQ*?KPW;atUfRI(VO z*@|nnsJ)c$xZg__V>DX{&DN0b9J@`iK9MZOXtt8f;ww<ZHspSLyJ8KX%VPw_Xtq+2 zs`k44_*+U9>j24OjAqMZmNiGcyQ<|(#hM~njL~eRHCv^t$9E}Kjbt%KvsGoY5aE6} z+HS9flEoO!R<+HdIcnv~zt<?%1(L-W%~pn4vWmGM?q}P&Ua}aY*~)6R$djI8{amsb zquHv_Y*F7(J|{Ow7GpG9wVJIT&Uor2#d=n<7^B&$V;1!d3N#-oUw^Ml7GpG9#{sMQ z#?=qZU!+*yNETx>TeFzuw59w&jvh?*u~CYTz80NL5_>H=WXlV9sfAo-7&9e{F`BL8 znMM7O!jMezX!W+xlO>BWTDeXDR@vI)dw<=eSj#1gF`BItZ5G*DblR{-)mu=nkSxY% zw&vI@>W3Gt=vbgwKb0)TXtqvb7S$oK8vec%msnP9Y?Lg<XtqvfmNg$fRe$Sm73(F* zVvJ_%6wTJtKYL`UV*R&dF-Eg>s%C5F1%DW-SVM;(5rHw9t+|kj^D>o7w{@^&F-Eg> z8ndi&-Eqj}0cGo0$zqIVYhEw5=13M}G+XtWtz}P~yoa*2OtKiG*_zKRYd$>V2c<77 z);h^zjApArvvqXyBP$f^Cdp!qW@`bnM&d}}+6z}#?Qi#u2PKO!nyp4)RiB@oPL?ay z4#{GS=BcuYS&PXKg6<XbJ;`DWr++CW^rat5`cb3FASCoYb1MkRA$gK%d6IaZWKN!B zQJ&<iJju86B-d&Zr<cxVWHT5jm6_Fjd)_QrgwcI_E@alBlBN6hd|R>zqkENK#4Kwb zlVtg4>@X2w3`ff#DMCz1=-2*q)>0CBeWMln87JTyc7@uOb=C{7lh(H-i=+Vl^;WXi zMt(B3enCqsoaHTSBT?&OeCu!|0@}C)zA=@k;~#P!I;(j}Gv1gwd)AyxTjLoCDC_EI z!OpJm92#jnv#X`OP-@?vM%&>~lO6q0_JmJR;plTwb7%eHhV~{UZ(Q8g*3oPWr4LEl zzo#HC>uO)rtT@tZ=fajHOX@p_p^}!dlRx!cxZdQtJiV*+jOM0#cud8gJcLV+<Sl7{ z;ria0j3IpsP@(m<{l#5i3N@6-UmNt)4*RPtQJ$cAd2_3(F^OW9D7am3GKu=kLNw)K zRWErdc782&+*<AE4jpZcEe)Mq(K5~1UQ*Nuq=vD4Xrho3;^9tJrgU^RbavD)ZI;a` zq;T-+(%B&jLG@-qnwmR0+uP1kB6fsHUmb2oMbss9_!=dB4zHi`tJ49e6p>R*L_6T6 zvb?3Wsd**dR=sptmnb(jcAZ~k(PWRY`;jiTD_wNxrsl?mv+6tH{E$bm6pHR(5oLiL z{!wL$qf<Csd5THHnda~%DiZTLP98lUk*CDn#qxCI0U8%Kw6vB^ETy_tQ=7A!N*%pI zgqF#DYv~mtv`pz+ORo^2WoqAAdWG~-wW7Q9QneD$Th(ehysK8z;$3f=mR=#fRjsDQ zyK1$(c-NbzrB_H^)!GwTUY)9xJd&K2@+g)(pMaBUYu7T%`K{{k)*P8Xn4L3Xo*^yK zZOxuG-87YuPvKFQmp^O1&C6a#y*2OV8?jT|R>aKgCP=C1B@>)O2Y!mJ9OcVBdbk6x zb!(P8GJ~1kIkh`7<WA8^z57U}(*oVcQ|iQ5hYm5xX(t4Qwx)N-RI7QV*2r3qSKZ0E zI&qToPcF)?N1DpAb^^-di1SjZqv^cx+;)0`V3bp1>j~`ar_>`sFeVjZcq9l0&naFu zJQ4(h=MOK2M}n*<tLdyWvnYj2N(&69k87*!e4^*IL^&-h>N^`2xRw}FBJxCMQET<T zv|$-munnw%;!9gP8tdB@E|jYjLBJJ3dsi!|<W55u6ZREC<6^9R$toq=UjXSigCvw? zd~A2x{~>qWnC%+RsBdjvvb4hxmD*7c|Nou#mxkpHElY5Tl3v=ds5y$&ws92PE{7bU zFE7j$(<e`!z<Bb){HT$=<Jvi;)p+b(TnBsl?fzhY>mpA6E#QSYeSnS&lNV;6UY?vk zP9iPG<6@D#>NXr9bp928yu7p07Q|6>$Hox~dA~{lH(O$9>xXeJ?_9LqbtW)t-8c{L zTsH%AmmBAy?`dG(bmKhq?E+>9-A6(wls~#W9}moQH_k)f9AFyVI9L8i-vz*2?#6lO zy9<~H-8h#%s=wa@^PwB(p>N1E{1^fs3U+y2-pB$-n=CO5#35W#5_WEqkeqfkrsUzm zc{u7$Q6ISBz_t3o-2vP=dAR(y(q9hTp>*HQ5yB<;INC9}FAtYrj?ut9<^xB!K;QI% z8wcD7x<lv)VGnO^qmX{A58NKWo#X?zCvd0xz>NUzTpu`^g0A$5yT>Q)86UV1?0)D2 zM^ouAx~J+0UiFNr&p6Bnj>?<%iCg3YM;mx+ec%QH*OP~vkT>220C$xS9G!ly^MRv{ z`S0i9^2ZU~wEEHq?o{BCN8{iKUgMJHgCFJL^2a5$+g(0!+kN21K;MTxa5RpFAA^G< z6zW%FeBfxF4Ew-Q{VmDE<+lf&XSU|y^6QVv`=U?Wmp*U@LEpZ|;@}8g^|Ck8kM@D1 zt@z`7;6?)1<pW3aT8|GLweQV7aMb_S`@roF+;4s0sQ&)!12-19y(@8W1h0A?h4iUD zaJvI{oKM^WAGm#>ufqq9+T+_kaX0$FQ9oGk14nkZ`@ltjdnXT<Ki+8mJ2;GkBY4eg z2O_;A>;NI^)o#>ZuJDPw%Lk6^KIH>P>zAEAaHKCpmE#D7%2DYPH`fP_?4IQVN9DNI z2krpip7wzo4ctzjxPeiC9l@(!$nHTta8!<nPuy}JxDfQ+;R8qG<JUfLr0-21I2xCM z7!Ho$RWBi=@9P6c{b0He+*sgF@_{=PxK%!Iw7&XL9xi_!76$IedAR&}qYSur^Kkj+ z>4SjVJC1`Rc-0@RC#U(q(REMQCoby)M|Mx~fumm#E%1RW2JQ?WI6A+r@`2kAxT}2N z=(jI-`M}W+bMDW><@W>XFOT@Z(fM~v9xlHhP`mxs2aeWPZ~4GcyM5sUNBP_314sJ; zB?%lH!K<Ir`f9Wf9JR+$K5(ROx(^&(Cue-%sQ%{pz)b<J!v~J~^X)!xl)w9Y;3fd~ zqz@cj2Yl@VN9(o0NgN!(tKDe)j`4w`avbIZNA+^F4;<yM+6RvM-vS>v>MyN6a8%w4 zeBh{_zwHA@zm~er2af9RRv$Q;4}RqXNBe|ZeBh}5e&+*6_4kes9F_MAA2=#+zZ4FR z;MM;Kx0eqbofi)Afur^f`@m8ArhVd0_JP|M`dWP8$nJ$caMW&B_`r<^?gk$?TJLW4 zfunWZ+dgo#bpC4|E`L2l{px5F2S@Pg2XsEK^?{@L<#Zo7TJN6a14rkD%Y5MI`t24U zILhBfA2`b2vp#U7?~gukr0+8yINFCBlE%RiyxN26WnUjSI-i&Mz)?A-`M^=XPx-)6 zznbj>M|Kzbz>&T#A2=Gn7yG~+3EZ_la7O_5m=7G)%cnkY2LtzaA2^zK$5!Fs2wwf* zP^3@tfunjp)d%h<;7<2}qx$=v4_qm5kNd#U{QM^$xG}&5aX;4?s9tc(_bBHZk-NHD zn#z{6EEwxc?DPG}>tS`}|ML5j`4>WEZ3|9^W4NPtCsz#58Z;QLm}l63vn`G7Z5?e3 zJ454UjStl>>ug!tvI;NK4#n`B#+D^`4>x>7!YS;?6Hc5HIT7CcdzO?wVP5dTjgY5v zpO{+{2M!_#yc*LxA4L4COi$v#$fE&D=s95@>AN<w?%aJcJ=uLC>jUp0#ef6YQQcn- zDPDUQRvr?=3GZJ7L1x`8rOyJDsCdVOyMDY~XFw$Pn>8CcXJmT%6J7amFMec0_l6&K ze>rr;9_F=?+$HBzayqze*PDs*&v$LgZ7N=0RK8|I*Nc+L9;=1x-^7~Fi`RTJn9MwZ z`~i`824y<52pW*}j}gaXKX&%;br*l#niwemK0|-$WfS5h0C0-C_EYG~<gy=om}4u? zkQJuD#A;{BiTxDV@oCMFb1^f*@o#3`ou$7cOT~$8`Fb-wlaYp2cs`rkZYPT(+F#+O zTNavffea%XFS>J(>7n6?va>??N#39GB6VcQkLL5);>6P)s*0iNUA-_}BTx<R_L_l# zT+5=2?~!GgBvzry6WKl#tS{WQ;<@Y>|1Mkc=``CKUG>~Agwb6v`nt<#r7QgzSNefw z4oxjvGM9Z_bUpRXi1>8AQS(1;$C1svCjUno`JZd9f39o%OBww?vKULghp$)frh)i+ zuS4ozs^)*LGkKZJy88E4*DyR1lh{_fAdh1nOBW~LZuohgXyNvq-0ai5##4|>8D?U- zbQjKqFj)S_jQt0i;6Gr}tNncU(!R)IensPchBoHLj0=DJcH=wGf;gQ&LuY#D`S=TG zYiDxetV`$RY!K&V&r?j~eqIBJSzhG8>PKWjB&sw1yG{$F8D4^Ez2JSK^rhkLe*d6` z*WGz|02-{5Ub!jHRCsaEK8c)l{)#;RrghriS!~y*y`=EUXr7rRY(|{(#?$N~S2@|W zPuLo%g)+tFC-jmiv8Zwk$bZ|Zq<HNEXn7j{#cS?H3^u$<kk?q7v8qM=*o{T69?RyQ zNmJ#x`<A=q^QwdVfjKIBv`N}zMOaEj1^cb>y!<Bg{HC9Om+~odZMCOX_uO|gIkEgU z@t&zSP(9`aTW-XkNPT2p{k+rQf?Z9CjDO1Pp?w8y9smDH!gr|L|7eJT5JuA!@q5&$ zGK=`>&=|{>;5%(ch<9$*V$c*B_uxBitp|;#a3mj(MaGMW(dB-TF#zAmK`LGyg`?0n z6R}#BkxN#AYe0<LpyKsII11cZh@HT)^Kle!3AhrmQ(1Ncj)F_R>Y{Az7l_T{)CcU; zjfj!<BI7Ar_BLWoEPD?}VeMnY7P0Je98c#MygJJlW$c5PuvUiHGES{POmL%!b+9aJ z<C+j#&axI8w-PZbRguwc<E}&O9G3mi#{C?z)hxT;#yyMJg)IB6je7^NwJiJC#(j<$ z-DN8>iZOp*%&B`JCUSZdVmX$PFFGNMA$BRt<{&0YIS(<RWd&lFbLu&W3C1;uUB$BR z+p;?lyM|?tA||wur?~4__Ogxp6JkGL+23s3o;cgx$g+`$2^(~+do#<*5fl2-h~37r z8XI>SVz;wwv5i}e*qtm}W8<zw>@JqwYU3V4jQUKGvC+moi`cy^d&|a=&#?Pg_Kl4j zhRfgwS#}^|B7aj5dxT~5`XW(|D#WM{78!GGTnA!XShmu}U4+<HmVM90-Hq6jEW6jn zZ9(j5mc3x(K1A$Umi^hr1qK+#^DG;Rn8@Ejh`qqFafpfhO-1bYEKA$C`G~#3vSu6C zi5Pi&EHYNxxbGtN7R#=;aqAKL1Ir$?WlthTBdy5z05Opl@-DTLWrGkCc{vENk61R& zmQ6+MQ<j~KnBXo$>@O_qvT<t=`+{Yc*|^&f`<i8U*f{dY^mmp$W#isP%)q!QGTyUs zUmzA_SwEaFh24D-ga32j4nR!g`AEceV_Bt*I}x#=EIZZ4osL*B%g(WJS5k~+*V?!r zBeploX!$1WZa^%?V|puMBRO@4o%$(a`?2hE#6+%k-_0-%VA*KIgqHD$jbYg&TQ(c9 zQkI>BnBbm)*r6<2ZsV>-EX6sv&c^)=vBMa5pN)GFF)_cqV&irq7H4h{dq_tzV>n_W zSNk9~fn^8UvSSew^Gggdk*isV2`%-A(cD{Pv>-NxW9K3!^j(G6be4S&F~R)_Vn?&= zmp1N6#Kc&5#>SDm<Vwc%M@(=>B1ZFjkx_=2u#rVf^p{ySt{t%i<IcBn<io>c+2ywE zZp6g-<6gvsjctfkGwwAT_XoskSoVo68-YD}I%nb~M2LwqaR@Q|hin}Fh;!{xh*hy{ z5@NKsT4YQ|4F3^>vo?9IH4ziIEMfvT3o-l$?iBnH{i*>mfm?`}z@32@{sY&6KcWx8 zm7c`Gjhw`-K@9(ay99qkAG#7Tp^yA%2z@_54F7?<6@Nq@x)U*hy9Y6WTaOt21NR92 zh+gs-VgmOhVgmOJV)zf-i})j2^)<u<j(lne+<S=OKX9MWAFlB)5EHn+AtrDEG?l>Z zhL~u<62t^<Z^Q&{l#L4^MmGWQK5jcU&W;^n$0pdZNp@@+Vsv9PXdG?J!geff$4onx zv14_1EHH96yvSg*F*2~1G4zwcZwy*CaQ=Wgs72@!fA~nZLWNU$5yLcM(9a9;3V}iW zj6qxIR=8qNs=!fwh#2)n!63bB&_}J{rMnb~QulB6<D6KGLb?TmP=hg>Siwv8VL~^K z&YTqCyFlv}gkIA5H;ghXc<G&hM0%xy2v+SC(ktqMbRJBVB!idUDM%x|=y?B7J(FH~ z<jx9Sy6GtdEVB4v%Z{>TcmmOIdjC)2(ZsIy=1@y(XeGI!XzW}vZtTGwV~+@xm6eSj zY&5pDE^Jv;CZ20F@N{R#jF1ZSY$m8pB;luR;bMcoghH*tsfEC{iYI^ROKW@cnO%4i zwL_#dcD1)RFLHe8YV8QIWEn}jI$M?qU<mnGvP1w|`El@O$!cw0fhS1i7jWsz;QwS+ zy)z_Rpq1*-5cj{NXhIpu$|jVxQr7!wp4Nt?&7EyaTNY^T)JK~xIEx5qPg$AzpCgYv za<J7ykQL;FAG(#<6B4xBq7EH|+_I~YLZy*zO$wA%bcq67*)0mB+I^@{I(L<ViR5Ue zxo{hB2P#0Od{G-sD4Q_h;8k7pSNx&lMC0J{39Gt72Up-Tv7BNP%a<(i_#=|&I0>H$ ziX1t)qaYkQ2LD@i4>tH=YsXOj_l#s7c~(bX!Zqb;eHKzz_wF2avUl&WldVa_>X4LR zb=v|Kt)}zeMuQFVe&nd6(7#wq$iiar7`r{(TBX3<-=w&3O*sJGb>#rKYfB^*s4vA+ z*>&fxwR16CA2ne<=;&x!)QUM@3TA{3Mpt#UKok6Z;bWa4TH0De%i5b8o12<j8&SOn zW43lN;9IPzrM>g4`lVe<I*p|`IW;tP!q3+XmWJpo7HV(kY-uBVGbRr19a3{tB+r87 z$!KY_!O;+YT|jwRg?INj1zy}`A~WtxFXPO)rLDpVn5%&3{!PnU;0eGbXK<52fAC9( z86j3l+3GqX)Ul$uc^OW>2V*)oA|w^q-vv{o7MSMcr2mhesPpQMeMOboYTRWI$pr?u zO!V%uGSTj?{M|YJtkYKE*)=b-Jkb@-tVk}9S()gaS(#{OmcRdtnWg!ra9%mJKvqSX zcTPo`ol*MgmCs(zS%Zzvw$6qnUaa1lLJnH1)zn`m<uw(2ge-%LJMqWEmN%=txf6c6 zz_TKGOm7}mQ4LKEoegEutZO9N$*P}Qq8S)`lv6n_Z2*5CY&0)xYh0|Y;<C+4+uF}^ z&VLKlvfEyDGtXXl7g*30K-bsThoa4xGeV~~i!*D8%G1&TUu_*Bqz*QgH@A0S>NQRj zf00?tyK;Ho)V!c;ks<xx8BHx64GWf_Mk5^^&Fz?FvAA}Cg?_k_Yh5@aMAr&~jagl- zN74iuf}2R1-r?b;6Z2QcjKKyZWep43+TjkRy{p++*suh%UWkA~Eb>8LG3oQkQKnj7 zWvvo|P9%bgm}Q$1TE&_}CdzLh;#@?@VhR>ajyt*fxkfHtbfI8sGRjp`Xq*?Eld#n0 z97~6JIL%0?<HRG2VncMD3g}eGy|jK=drNDlEUiNVAlj7dlIusAPEluh&+KYwZ)ipH zSk0gWWJp$7dvnvOHX9<pDgCRO+uNjmimHUJ&h~~zOSAZ*5|=kDS%jQ7Nv8Ex0r(QM ztx=}SZz@?{g^GF;UsNKRM~K)Tsoi8s1}L4~xkI$KEtE!<A*z(nH`H$P!j_eebSZJx zA_L_*fZ}B`F6=r|Nq1<R1407XI~XQbPW6H>ypJ;4L+((XpXxB=ohXf>p4e_j!_s9- ztd`P+Q01&C<gKx5sk1&<Kn6v1T5NR6=61BIgu2CUwTqg%mM(LuWr0%5*<9GtYAaL% z7YP3AtnSVj`Ys@`x)W%LgkCMjpEXrP$bG0xs%zt%^YR{G8UqrIvC-OzvL7e@IuUiW z2&D@G$;cL7rG}O@w})6GWrfzOKEb^D42^4T3-N3)-Z-JPs{^ZT$1>QtSVgN*lgPZQ zo^NCuR<<ndS}IrRN3yTBCUG^x&bDL`sP1SQmR%!)Qw9~1#Q42!NQklDBU%|Gy0{%z zJ`Xj9&gF(v>w1El`UZ2sW90rzRk5;!{fbZmyG~x`I^N3&liSm>mZmG_6$N(fq7AU{ zLb!j$Mf-OG#`!{0)`V-2PVrVa+N%r(PP6vW?7zNVO6l;Gg^f1op^eb|K-+{A2!oA2 z1iEETTaiNI^rc1EV1Tyv{)*V|l4Dkj7uksuDMTDXQqMR`U|5ohJPB>Oi(p~qSOS~1 zC{MB~PjX3~<OfnxWb3&z5A(1l!E3(CE3lVJo8w$kgJ1lGT~PYn3rY9|S>;3`rjk^k zU<XQ;z)YG<C<{~O@N0#;pr}LIK&R0D*|3L|i}c?LAv-_UUnYQilVH()Ew##Det7pg ziuHkHF-CK&K9E_K)BT(F-ZoFM`cdaXV2tKio!j2FwQTvvPb=0a$rAm;SuWc9R*vuw zyzuLvD^|H=F-EgBm|0f2;yd=aO|hyZi!oZcXg^%N<mda}zpqoV7DyIjG+S)NF4unD z_s>+URgxug;w%^KV=G%DyWYiJeQHArS4b9PG+Xp!k!r7N#(rln#rmmaF-9vFJvXB2 zaPc*(N)>C9WHCmwMdMo8dj6)08H)9iWHCl_gip^r2Lm!0aSCGm!$*r06Q&=zG;D2L z*44of8$~ykt<X=?OgAD$ekgs(f}PDu^9aczjLxE4RKdUzL_xUkwDf-|)(puajLzb| z9iW<|@aF2T@Mxcvv2$dEFgj~*NP>Yoh=Q<NuK6*=x=FGKqqFF#vS8qHq9BBRI^V&1 zPqGN3v-k%{bcc?^(@WRxP`1iwFe4B~XYmcT06nKjp{9M$_Y`ZkWD!PZ@h!c8oO+DC zRyW`QBdazpku1XKEV_jj3|O;u?biq3%w(~CEm?%oS$tC`KynJ<>M!tXD~pBKjdLK3 z&Y}_p1JwEy2E6g)CdIN|21pp4wLc`m0JT1a%Nr)wDAtA27GZQ2-{=ZZi%@v?<CD); zth*(PFglBTZv+D*r|{?RZoEyg-jpoD=&TSViZ$l>lPeU<dO;sybk-P+Rax{1raG$* z=g3KhFgj~2vqCshD84@VW5v2cvIwKI4uT{Ypjx6ZGWGyExMk}Z$s&x-DupB%pz=}} zzQ?*rinSY^a1aQivkrzt)yC{I2RdveB#SUQ>ky4~)Z*nQC|l=C7GZSOq0FN55rv;$ z{sIbNm5YAnLxC_li+X!7K<7RRcO(z_iDJDfS%lG9;~@#sua`J{dVBhhiuH{Y6Gmt8 zZQp>Er(X;_?Qz9AKxTn3I_q#qf`Peg$uPe4i-j18mX0ZsMHrn$^Jg%C;lbhhU2i<8 zSQknbVRY7!kOTv#3X(B??vK#mmaXlQMHrn`#w=^@9Wv#Kdd1pPHV9#K7CrN*dQ`UR z85G^JHC?g@qqDFqbFgkGp7W?;bx9Usbk;;>(FmfjZsvK_igk}<5k_Z~L!xGzekagK zv~svpvIwKIFyI|I{LX)^{JmoBOA8+a!ssjvC$Oxu-e(oFpHi$7B#SUQi)MJ$URSgR zOvU<<WD!PZVId0^tpq5X{m>N0NO@PX2&1#6LJ|yEb-3-|Z?03eN(PfA_+Z0FXHA1d zvG$w45X%;;4yz=KFgj~GvuGBgu=@Ioo>i<hl0_JuH3O1h08<QyHy@3q6^mw63WU*F zGa*qg!#U^LQVcaKhaX86VRY8f%%U?dg|_4W>X@U(4G~hp=&WNP3EF3(tG;{a-<7RX zB#SUQ>sV%4XT6TiMT-^dGRY#0&Z=Y<1~7;3Jz0lpw#xOeWD!PZg&|RAhtuzUq+PMB zpPvv$XGNH0wU_aem)=t>`gs=x!sx6hB*DN~N<^sI@54J4i+-?0fiOBN21(FfZ>)c5 zcvi9Qk}SgLtT?lF$C1L68>Vhltal`fFghy%NiblsKE3(;4;5>#VWbH^sKZBRB_Rn0 zXe~#fZ2PyjC{|Rm2&1!7kf^>f^s6IQDORUs5k_ZWz&lufXzICGv2K+t!ssjv46v-; zd+UMwU#?g$NETsqR+VOJ&LzJODb{Xs`X`Les%93oK7~tXP5Omm&5$g@=&TGR>ijkQ z#dBX(taBxcFgh#CEUVA|`K@8-T>T)UuwAkUqqAxtQGNc9*UlZKSi51qqCgm(RSSt? zeRlmHE>o<iWD!PZ)iKM;;oy(<#)M?$@NCH<jLtfaSu~SV_~d|Ru2!t|l0_JuH474T zhMjupx7rkIfSmpbqqAl+YkwRmJa*1(TsB!bj7Sz?bk^~ZsM;7Y{nr;L)+)&&jLyQO z>B!+T7v8W!v3@C8gwa_iGRvxs@rQogpjaPC7GZSO9A;VT`SGvr@ugxND~C8?bk<4C z8jT}`(}$n^g<`FcEW+rllOYM(S8exKzr8@Q?vgCR=&VziW##a>=LWx_Sno;}VRRO) z)`Ir6-noy?T&GxL_CO*6VRRNwat>B`+teQ`R=Z>oMrWPItPqYAE**5ze=F7|$s&x- zng@xR*{&G&z1<XRcX?VPjLxcORtQH5sY9>2N3o)kMHrnm9}+dQJs$Z4NUQf=E?I=p zS?EAug>a<s=_@<-Q>-nLMHrohMg_|n%Ud34zCp2e$Ecw|7@gG!i8|~3YQG!Nk*yq7 zOBP{tRui)h#gW2c9SuKHtTmEF7@gG&iMmd?b=ZCfE7m5-B8<*j$gD7q6rQ{2OmrVB zhp$N%VRY6aNP>Yfq99cK*mzm7_TO7b38S+XLlO)eB$ADfZ$D~>Vl9v?!sx6PW(|_8 zV;=qUy^3|cWD!PZoz5(IdNYQ7bKmQVb-!d0MrWO&vF7!>aJyo?Em?%oSxcB@<#6Gp zw_;dWbvS4Q5)lZavz9^<3}AS0xNQ9;$gIUWM6w8@vsxhu2IOhLIA+-r3?_?}kSxOJ zESwC$!l{nKhpF8iIb0@Lgwa{cAPELAJUAS&r1(N*>*tb17@c({B*DO7K{B?@`)HbC z{ZX<AqqEwX)nBqA`~Bu3#TvMe5EDjcbuepyWc}%v<q5?aD_MlmS)I(1ldQ4-{c}T# zb&O;YMrU;~%j!|bUB7XpVzo&YVRY7VX34H&Jaoe`j(OuM$s&x-TEQ%<NBuEme5h<a zDOrTkSu2@km8&f>6ekd?Z@e#Agwa`NF>5G}6q;7-35dlSgECSejLupGiMn3Cef7YY zVkIPtFgojOW?6mXXS==qgkqf~S%lG9=V-QGobvl)73(_5B8<*Dms#>eWhBpk8`Wu* z>o<}`7@c(<v#j=N$tDj`tX+~t7@f76SyOPNFk$PfzgDax_Z3pY=&bW0QDb@A;PJJJ zwN$bQqq8nxmQ}9LSM8lstg9r8FggoE7q%wgNa2}dzrnD!YU5GKB8<-JhD7Zie0|Mb z_bQe(oe)N6tznkzaK<SIpYf1l9VRCs!sx8E%(CXgAC``bDAoeWB8<-Z7PG9{_^)f| zflaGi7fKdkbQUHTN6jCYxcASB^`K-CMrU2jEUR2Ud-$oB6zeU?B8<*j$1H1nrGv$l ziZx13u7uH9-)5Fvju^k3dm)<6D%Y`+MHrohu7Gk`b$G?uq8~tr&@Neo(OH*3qFVW@ zVGUE2tt%vpFgmM;SwnE7u;ZND9OG-VWD!PZT?&c17m!_f!A@oCkCH_gopl+rthx8_ zS5BLySo@AfA_8G_)^{Kgch)F<-V5J7L9vdNEW+rl%b8`h*SHPy7b#YUWD!PZUBN7? zz1|(Uaid~gBUyyeSywX4s>5?HJ7A(>{aUgJqqDAJ)*d)gIBw?$reb|0S%lG9S3{y| z{(+XIuPD}-{YjHy5JqQx7ZSB{7<uQaj}$8-S%lG9*D%ZKhpR8z9967~B#SUQ>sn@& z;7H*|&u_U-v3@LBgwa{wgGBY-L(Rt>v*_<6i!eG1s=<;IpYhA3SBzD*tQ$du(OK7P zwoV*Za))9?4nQITVRY8_AyM~6XZ<<3L9tGkEW+rlA24e?jug7DIuKpengK4AEW+rl z8z50vqYpOy;B>`$MzRQ_vwp}dd3rN?2F!7^a?ycEL?DdLx)G9K0Mj&wBTjgFuCg^* zvTj70&iWA~YUS|l*~exTt6j1PqqA;emYg7rwuZ`aigklz5k_a-%&cM@DbzLXh6%~4 z!<QtBFgoiNNYpiK_O8W_90o#2L?DdLx)l<&BmMqY549;<(?Uo@AdJqs4HC7NvY@QI zLa`QxkcdDSo%Lf#)XL$>r%ydov2F<=5rHr|>nD(?a*e*?66b6aLLvfTbk^;VC|hU! z{H?>3t$t&O1BVCr=&YYYqHIn6>ORM8GfuJyqq8uaz#5Jtg+sO-KTX-Hmn_2QtUDo5 zHJ_gT=h=$2R<a1Avwp^`!8lT=c;$QyL91^(C|QKjSwDwF)y9ht4tDgYHzkWOI_oZG zS?84PUsX<0wg!zwA_8G_*4>b(k+R1(csA9};Y7(IjLy1;SyrDP^VUiCD^{aq5k_bI zLbJ8u-N)WmtZz#eVRY6nnN@-#g_ZM1Z&R#?B#SUQ>%Slg296{O!hTafzf7@qN)};s z7M7l19YGX?=boB&nqnPtkdP8aXRU`s&Aq1#j{Zfl8YGJ_I_p==Iv7U^``=;&6zdYn zB8<+u4-$2T9bD7+v0^<bS%lG9XdbW*#gW2mzwB_#qMu0?VRY65kf?q*|I+3Cm94T; z(j<Ptrn4S|G#EIFQ{fsk_4BtC>jcRnjLv$9Syp@PHZpa*VqGd(gwa_KGfO5LZ(X?C zON#YtDJG20dW2c~;z*(F!t6<k)n7IUVRY7`kf=M4i#A;OsbW=07Ge6~1F!a0!`hPX zYLcJe8-D+UA7|G)e$Y-L@fAN=r3b)BARmEnMD0gn9Ws96)%xDnh*v7NblP-$?`Y*8 z(JypB8uKJd;LKEgeQLJZ(AoqSw6Vp_jc4H1t{u&ISgr*RtTmDV&qlPJ(bDXE#j%sG zUR10}#ru8vb;O#S-@#d$FBf=zm9z&wUoP<c@?sBszFgod=$*zM_<Xs*^Q(?M@Okpe z%KBKie!_%UO<heiV#dOirIAROnu9ulcw|Fjvf<ijHk!=TWy9jP&6Shr5kNtZm{>NP zO;^RTiDU+v;#upr!HCyZR#Z-w54u-QZfUKYY(45;SsF`+t@j7lhU2kJO<h$@6@ETU zPrX-85<j8V>{MsMRms{!Rc&oDOpk4oZm)mz%WyK*WF^vLLbk1{XgC^8CQ^0r^uM5` zCLD`JYHJdih+QxIc)6D0Xf|ABR%Pp|lj$(GOXVc15+_tn;v!5!gr7avi1B1NTNRJi znJB668f~?Uh?=dfiqyo@k*I(A0-GMKMx)mzBGu`duvLXV{!Xu?e^a!AL}TG(b*#1~ zl1bS0gmPC>vALPJ<H>#$jfYd2Y%FOa+g3eUV15Q(SDgySvgx|&Xk9uFjYpFC@pzq3 z8%|cmtCMD?_tp>(S-Gj%Y;`OeOJ#a(NbwM$n_8DlB(q5~*&CG}k;YU08Z{OPC!(2n zJesWOjcPxVuaToQXvAm~-7nfJnV;9!nRVgnm|2&ICi-BChxv7GZMe3&E}Mx&t9rF6 zTt&F4)#!26RjEEJ3eUQ0)Tx=ONG21-fJV2PFac9ba#fdxn3Ao|BvYwaH6uI#ldIEa zqRy<YA%I8vL^Ew>YO6D`@I*~<G8>N9#<HnQRV{{EEJ<DnFjf$&kblV=fsn9Ag8ZmG z?h>_OGg*~LM$-SfE=<Mgn%bJGcp@9-$78)G%igC-<R_Z0$wcCDdxW*J9{{ZiqIKa+ zHeMC2io`tHT;O?{^BP!n;aF95G?}gO>T3?J$H<CB!`a%pn!4ILuR-bHT94n_6^)4| z7O9S;;#D!bV1zF)E!Bk+b?Mq#v!<@s^3f1>_e`7`Gm&(<x;mQrm%9g=w5B>yg9*<J z(}Tp`Em}Fb_co12!f~APBWcvQHOX3@5VU4R^}<q3Z6s6eQEcg|fNM-X7j0KBnCa@; zWOXv-H3?`;(X5JzhDoK--!f)jHbtY_%xE%PhlxF%tV-I&5|+FhHI~2`HdRxTOs4v< zBwaBmOX+Y`Hkpdz%%6Wwx4biGHHo&buC9yLq|=$O<+Y)5vUpNZEMhQSbh*!*@o=K1 zE?$?cjeFR^L%6yL%-OZosj8})RG88x%O|7pL~!L~<?(^L42*TSjn#zHsc14?m+>-& z$I|$zH+Bi3nT^H6(b}4tNF<vM!&L;#@})v$1><3vmWq?vU4&)2tFpqb%2+InQ))b& zuB!7xuc@4fRjRdEs18SKqBT_+(`)prCwR5|Mx*E@F|#USCc+FsGvL{2D{rfs-1QO- z*WlbzU4wdY;VCn2v>8rR)g+_T2lKmzbX}q62Wyy`y6TLH8OehoYEfGvrNT9J$xN)e z&TCK#hZnkqbU0fRi^r->Pl9x1p;J;}(~Q(*V+pTyl5lpR5wK23Mk1*sX4Ehx<MDH< zQIUIEqoc>+95?|}6Z_Gys(Z;2yESp@OT{8pW;%*X2+u`*-%@RrPbZ~B9To){ueB3< zx4>c?*9DE_H%luHt(<CWQniUXulZh5<(%gxnwdmxbriFHersApk24uETb-?qXKE5& z9mgVCr!mbYt`y98Rb5pIYi0o~a8Z<3e`pl7G_e~3S*fcsBQ-UqSL2J7L@)IgsY@qP zxa`R<zN8kaw`3|3iD$hk+#-6{TWvIjGg;beF1Cn;>J1CJy6U=`bZ_gUyjtVV>{V}A zE7ev-vnj8E%xCLDwU!O1({+h-%Jix=!St-OEatydHXE<@sx-;-s<T?0*6X6tNR`*T zDS3seELE4v#LaZJ*Y$_*Iz!)0L{nz1nT?0p$q7#ken!7{-^KM(G+A9!9jn1+g**{? zWG3H$rOtKjnhImLp)L`}WpI9f7Jf*yu?YJ~Gldm179%p*-(W0YKaF)~w$@B|UQ1an zSKK+MtBILrsyZIF0e$D8fc?5~x+-2<gH?-1@udrw%1K@o5eug?vD$Px<#k11`EpV7 zuRZ(3%y3O@Dr=_eP=l5Q<lj-7$g4P)*ps)-o}9|WQptE-Rha#`Xf>0Fgt65Xk7lB2 z&n*$*Cq`d4Eo`t=$7;hdGaX4rki$MVWaKU>PJ3y5VoC{Cw}}`wWuOFpVJauH+nCD9 z_I}x9s%POirgCz9y-l1NtBciDVVw|`o@BJ5VJoUG9#7z$9hMGetP`wznOB1ikYr6f zfn}Su&BpF$G<8$6ritZyT_h}>(rBsEq6xD)SyNLRwp`U{$#r2fm58LVi4#^HY%m7V zYVOQnm#HQai{P|xXGUBgvU?j@gqUEW7Ts&DOgM#XW}~S{7%p%sr}H{)GWIWd$!mGR zff{{KPmd+4GTACDSpY>3B=<O42_|J~BURBj1`s*T(UK--B6YPjnN*lP>1at<SVmKc zY{pF1@%qJ~oQ9uA@v+EAC#qvHtQ8oHMK-(O(bXn#p_)xqC$PSznM_AY%@_`P8K;^i zt;x|J7@v2o5DllY(QKkFCbsu%kkD7K%Cq4*T;?Zg>k>k*bmyUG7+ZL$x=5lbUZpZ@ z0cC#O*_~dKtV&hY;);xO!V65d(kP~rNF;&5XVrp$^^s+4KUSe4&~8$B;Y%6J*;VOG zjcH=}XI&Q;M#od(XgZoq#<6#9<w!?cjYFHzm<WVQdqmfv_ePR+sT!+|Y)?db$#H=c zuZt$C6Keakz@<$bC%;s>%8XTG%h<}21M8We%1KSlcAl^^P@SsH#NtVrDW3I(!y`Rc zW;h;=C+cczqso*MEN!_*{In#tq_Q}riH0WcNV;CM7Luz?Tu0bNU{oK?T!)R3sw!Nl znL@L2tEB5Uael6fr&6>TV^xs@YgLiEgJKUS6HCUcad(1ysC3Ds>&BHZws=$3m|Jb# z7O+r#M5|0(i(>V|YRQ|Et}{aCi)5xM>Cnlj0t#_|BwJG(k73J~H3}zCy3QD`7gEVY z8W%TqJ|(Vz)*5UF*Q8RkQ^Hy;-%+~WM7TPc$!2Iiv-R4@0-AAiDW0gVtHOpnYnEQ8 zbj9&-Z6cnE)tZjMZvhMF%^)u+%yB8%(>(4aVP?P-iOo%Huh{vOxB^;1NhH!$$*PFV zE(W}E^rL6GI-IG+oQC}+rCo<hBY9g6(~_BZGL^-GgR6ub0O_hDSe2zCm_EdnvO*Qg zHddwCbgV9mWvmUBZnbpHRbjM7tP0l@D$``&0t*8L&kvYCGU;T3hOonsT!=e2F|w#f zT)E&@Pne50$paIs!gN+so56mT-8`HZ$HJb^syw?YHEK4)^-(e!tIc9dUllvwJ(peu z=`fa%Rq=Sz%32=;tRphDb#+N>%)0XFL6i-ovWSyq8oQ85EQL6W=pkH2;q6J!SqA$! znd)rTIls8@g}M}W7m~4LRT}#_swUWvm~H~+wCW5dbrjxR=Ws$+Xi<q1XAKsGSQ^NR zwsK`TtJ00sgtKN<RWy-tbl*Hi;gTdVWyYg5F-J+*b(wA?g;fZy1hWx$PZn6I-hF<; zy@+gWGM19FCpQKAKyxckXK<dxnbuWJ0$V^iF1u6FNCG!j9a$%5X}a=c7&l9+umkQ` zn{h@MT0r;obOiSpGuWsnpKDe_xld!<4N_>SI(va*t<3b%iMw~nY$RD5j<BP)Li(_0 ziCbUsY&snaOE+%v=7ZII`8lYH;&QeYi$iOPCB3}ql@JeOA0>v%=tx+4f9pdrrk<J% zRu>6$3~~<F2OJCE4Ax4?I$RaP9bB*5)|25tu5z+HW^sCpp#Z${`v<AnFcvoHcs$Gf z25Z9BHf)m8!Ve3?Dy;@^`Gjo@EQ!;pu<$!)ZKujDb=PJzU0|%T^N14_F5yhG7Uxx~ zo(r6)a3vax6A;^n(o>yvXQFbt@Kq=4ax#0Xvu$9k)Fi91m!6h$IL5HYv=yW6#B@3u zug!*~lRCN|!A|X<nEfEqPc?*FJLj!|ns5p~V89|d=0PO?c1{|mE7X9UIb2F$-zI_+ zQQ8-|#%5xxC4n1#W*ohrec<KwBtGAiSC%GgxzfA1?eyy}-2Xx^k3?`MAk4psm|i&< zKJyA)=u60yFn-LGUW(ouZGfLv=MS62PnwRJICXN!5hhNWGJQ&U#l(qI9YRDWPM9!d z%9K!O($wh_M9TcZP2bwr$lh`7oL}PyptblN7zL*nKKhOy7#j3aFf9x&0ghbMmf}~Y zB5c8*lZ&ix;&0d}i8{ULk+cDy{rih_>liAjoA1WaFI>+9Zu|g&3gC|yZg(V9NK9|~ z&O~B-poI{Bz4Tp(q<evzI!It_yADrwlrj>Zh{On_VT4O2gv<EXVU|R^p5|oWnkAO1 zl5sA5Lm}_>sqZr2uJ1!%2>R${Rlj%RJo5JiFhTjCLZST8?_0+JGtrIn&{qr0scxLB zyp*l8BnD9qh3fAD;Cg)MyThlxUjp}NANr_0UiGQ(ec(RpLm%~*Ju%J>mp`_)>)E6J z(!iYH#<}W`+5@gdjczy2L*I{p`I!rcIpC-`epPZp=J-rHI%8~CS4&gbl9mNyeThMd zWsi4ZYcuhhNH#HhY>4Io{QA_O9~G}Ogg=qkjJYSkdv(X$GtR;SVs5-`MeC9_ys}`f zwb6Oxq_Xm|iSDmUJC--j#kt{h_y+BmyS%Y{!o<loX70)<ljhE9#ww_z`AFU-ZJgWQ z+1}h-*0$huxV|}hcX}TES$+%D74yW~py+S5rLn!OqitblXxyyvp;~MYE^S$b8<e3K z+?2wzYCG~Bo^5u25HfQwWpYnEK(j!_hEL4md-m)cwXpcWxMBSFcUZ77XwKZ!`De3x zOX$?ik=zEedqdC+ZpaPYXg>dznR_y_Yj+bbf*v3MW^S8#(GU?2&xxD}6XVR>SBZ+x zbLo<`PZY2DHVm2T=9Y%dbxTT36R)+c%d9)6G*o<`5y?Fc#b&N^>o{}m=biCH&v}9P z%&$5or+bpYhbf0hu6Q{&bgTLNAI!BMc8)f4d%b3^-O)KDk=ts$zSZ2d*_`=m`#WZC z`>r{Ia<wIqU603Se%k({Ob%wCy|m8Ek?9;|qI=6Yyu@`g)yH1=6mi}LQQk@@ZzE00 zTja!tsW;|c>VCU8_jM-sTygx>cu&`-GoN3+-{H@1{8LeG)5bT7f}3Y<jrW`qh!@9S zitO6FGnmM|mRXk`WcD04sp9j@x<Gv0$t8)N>RpMMubJ!49GBZ%oO*0sWWu_BiJ9A% zk2SkDh7&!JUAcZ{&ny@}^UEMoi`I=dd(tJ@!yoVZBY4aAi{ze5_e9VFJ5U+vb)7rL zMb?ep6j^u9j!9IalKW}gQ2|HBXFg$~$m1fpjm4>r^iEF$qR6`FUP1z^_%ae-BE_l4 z6Kg4Hbi6pRo$4r*SXUJ)-w>I%S#%TXB^%9+Zx^M5zso&Yv4J}bb(h)WI>#0t7&g#n z*1&@5HnDNkZ$6dXg0s9Kk{i0g>NO?qUQ<0zVo~`a>Np|lZMi?0xliLgVbor{G#sB9 zDe1^?7epVLK-~omH0@FDzUUd~lkb{qcXb|U=8k{Wpsq0t{op;yS3CzkcaGQF@p@un zqjsj5xu?xsa**f}=;QOuU2o7iU-X8+h~114o&AjwO-06t<AcVCN&SowZ;(2}pcAtd z_C`d!%S^;*@~6j`f<|Ca&=?dgdZXVmfwg}0PTxi_g60wtBi0y}joE9EvDaVlHdVL} zAAJ07M*m5aCf@8ue<^o@L({H^jYdqc$;Qq2Si#HAp-5D37PE4t=SA@7L?QH&PFl8D z!AmbaK!8%?g_Q%!`%NGuEljMi4<e$TM2t#R!7?YK!Ghy2l}|84j2P2d7Jx5Gs++;( z1Li|u96|>fsD1=X#E4bNvN6MojA5MvQKMo_WwEG~0!u?(#ONqkglfgd3L>3qOT<Wj z0v}bQmR=nr&}2*KC7rY&vx1l2Y9zv)^#7)V>CWbroux~;z%-o%16GTi7P{z%!ZEaS zIZI^}PFDkn%~&;gX+DNl#BjVt0EFB3JK@@V47ErwVD*=;n=YJ_kD(QAFhF%isxEop zjRQmsUod-%(BBBjhd_3hk|J9&MoI?QlB1<0XiH9zl7W!mJ&Ku{Nz_LvP$`5PXiGvi zg=8uL5U3Qogz9jB<_?(pi*jmHo81)X&$=NtPNxF`V>EZbv;tG^fCDoYj!>-C%z?{W z!f3W=U8Ek4dM)#Vi<A@LD<z9Dnyn!=i*j!q_LoM*vgQEBXtt<l2LmBG;xm8zmfIC; z6C@NEquCk;sVY~$sU7z!*2~Nh?=02JHJn*ATFKT28*Y9{vHl`ijL~crGfU*bFv@>W z`=w$H3kVuxv~sbP0JR8(n}72AzYMV3>k!EjIdNVdQSVdb8h-iL^A(HUSx$j5nyoz` z4QjT6wyiTHi!oZc_GFe-u7hukj8?2mB#SYcEuL@KaW>`U%!7tUF*8yW;ZDgCbCR=M ze2%l-Z9jL$zLkpggk*{HpwrzppDox$9kth6-;1wRtUpMWIHNdi@p;0wb@@|E%M~j~ zYZ?S`E^*r8a|JuZBwNQ^Q1dOtqPG!K5a$!8EjkOT_PXbobDvc#dY3B&#u%sJ8=f2D zrFcEwzNo%5VX-bA`x1#AT?=TvUQcf?t6$vE-lU+7i(8g7IT8dxD5#e_=M!DZntGng zA?s>gfro$S;VGvg!;O_0EOk6=<%Q>`t@H%P<5qeCUy+sa^HzF-J4^YM;m(~0!mY$z zZEh8L=~96+YpQxh-o4XAfhU%FrwV4FRKYFpm0KY7sPYMuaP?{jd&jH77IDPd@tRsO zMedN%j@K9?jUBH!n8VH!Jr+Az>b(;rq8+cJtx+y9hR2TAHl)#O;hn*2$18-v+kms) z1#<U^rb(}zr)J2X17?bxN9ok*g`>%B9x%%!jz*prE&=%(V4mm$M^nJ75`!oQFMV5( z@`exGqrlyQ^K2uXH4&(ay!2fS`PIN2M(0Tc%7+*3G006|hSBVeVC!@3h)~ulC5C}G z6xvZr0XJJ>$*$Lq9O*mLr@pg*Tib^|I#Jy0Q{S(E+w4Q%n?Ch@2At)JzfgHe6}`*D z84A_k;lNFm*h2cKye9zD;>LOGP+bJfm2RA?eM#Rvz&z&0dFXo^n2+5!4}HV10vbcB zAOyP{9{MVQsdnQ$^tAwEd28)W-}S)#xDS1_V0sLg-@0)g`TK8RcDZq`{E@!>Y3=3+ zh1&N>;HFEgRSrz5|MNSB^x*xu|I0gu>c>9+`nDnMij~a4?#zTtZbzhe{ikM*mU>1y z_oey8j!f?N>4SEpXYMFo^CpD6(U;D>WFG#KxpC)EGq>41oMty{P-QkP{(NJ<t`oCs zH*_9uZhXIgHn%BWydGOtFQ#+94quEdsP_btw&}1VWny<|LjC4UZWCz@nYlf(xhDbj zM48XMZ{BBovWvoM^Pp|CCsdK?Sx2JGOddBY4uVCtBTRbgfi+lxEf^9ThIUTgr`)A; zJ5=6SLWB5he2Uo7^;sNSg5zNvy8_4kIYyKIxg3MX1mkdy4aSKSm$TrGM(jY2nb>yA zafZz=o-+@6(wzBZr)eJkoVoE&L(Rjv>QR}`EhgN?_xcyFfA)f}cY)bC)a((oT+wrz zUG=fiJkr2u*^J#<&NN-JicFJHk?CU)TY*mz-_aVwG1|>dRBYg?;=@yeAU}fB$QUiD zi{!>~_w<07`+e8M2k0y*D!2RWI-_f_xh_^GcKRas1fb2#J!_(NX@8kBBhsiI%UIn^ z9FOGKCTy})JV6_g-Cqq_G27gQ-m=kr?mctJHc|Y3cC5&b4YFe;b}VEL*=X+CU=~08 zZ1>l}o~pmci(^k<BXl!*<5}1deZsttyAC=}X6=UJt2cIUtVH+iDaw)<v~AsA4d{t{ z4cfM3&(I#^&glMXV8_7wX-%^;*uC-ZX7`i3(mml_wB32ovyq-iz<mBs-ERehn>JJb zb!;*7U`prS!%jT5I@1??MNP9}Z|w5!LW>4vGZwEe8nkmzI`@RAO3@`S<~F|DAN3df zYdkmf^7!=HX<hq7(D!@hjEiIQR16fc|G6tQEmw=}&Q#dk_-4>Ne51K;TrM`U`^&(& zd*));N`D?ZrR!oNS^v)dyS5=NyFBlf)4n;6z=<g0N_>iV4{JQfk~p5jv348}=GYH$ z9Lq7U0-HHG5xf-1eMO~5K~Q`%_;n)pTr{`Wcc#yo*0slTf6DZv#;rS^#{2V}vwvGL z=%P_%*+i_AGunltmSt<MvvZ5-?#Tz~L}Nbxwwe3d?A{#8<Vvz@cXW;TBvZVRV?!%; zRETEEplL4nt7uOXJO7yH(4Jgyv}a%^ww=ZN70+#ZJYE_yGP%t>rHCe@9r6;_w1Y8g zPl#KQ59DNPc#!-{8N;Nza-?V}T1YR)N6bZZ<yypxf6;np;JawO3lO8-<05U}HUWth zsLjQGs)&)nDJ%;V1&pGoz>z&G(EgZUh!`<wrwx0<w6~3Y?Y*#fyBGGg_nK9*j99c> zwgSzTf-PdiCL@K}k6KjxrP)-lMU2=c%XrVY346w~2Cz+<SFAvB!4ffI)v#<#|9<uk zyv3kYfum)mh*9+m27NytA1jD-njA!o*vI2T`^EhXL+<WV8in3<pAW=s1e3u__bEvG zXLOU^k1WOb>!o`><o}Fr(mNdIH7j`OUWi1shi=t}UT=a&wJz$KbcXuSOJ`v8o#Fww zqq3V(jQTE~HH3S>V^((Xw~SF_O~j}jXg>R&+<o5${d#cjtkcpo7@*QoUOEPDA0pfv zIWd&qV4xXCiv8-)l@0lr{*0mViQZ<MeBB}YiCuH2o&k)ZQBRoaL4z<mQnflUV)vbL zMWHNu_!apW%4smLg%O5v?J1dfetvdi42@aN*(IYg`50O^1OqfHkiCPxx9x&_45|Z| z$8aP)56svzEAr$0+DfV)5kg!>!%#DpB{|fB7?y+<LLyj_S(d=YEY6cyn=j~_(pFC% z=KFb)JMttO@+2?kNj}Sy6bFPz-Q_q^O4PlPnNmV`IjF_qWK>E9K_c3Ck(3O!CFe=W zZnorVDWQ8Tf_1Bu&>a;axmQYtuw-fT(#B=9%H%-SA;GgtP6_V1Oq(DD)HC^x%EYPD zM4M4-OUZNr5)$VgFwGG9KDyd{e@y0wG1@-*FlGrkUM%(0x!Bnv-4u387Gt!1^x;TV zww{~*Sh2b@Qz9zYV2oyqu0Pd&^NCY#I99O^ku1h&w&*OQ9Ns>$|GsApwsSaBvKXV; z;`<EtKKj)U%wMEfr$`oKG+Q)2bX&L=4H<=%lEoO!mVPf{$d(t173&(w>g!&_qSJ;w zs_tOiD_L|^puawKZ<5&Mx@bkm0>ye-vKXV4OWcbP+6<%N?@Pxk);p5b*S(0R>Tmt6 zV*OpR3f+saY(4$6N0utq2r)eRyce<af<FvZtfM50R&@G3u~A$b-nLB1VvN>aI2kzV z@Qy<+4=7s=lEoOU4r#@xUTLbAYn5a%Mzcj%zpA~KJ#q3L%GQ;V#Td;NT@?%WzXUns z2c<77)}4~Y7|j-4%qm+)H$SpMu^y8w#%Q)ewk<@A_<pBeFvRZjuSphTG+SesWz8G2 z)5&th`dqRYLrM+&2*D1b<Lr|s8J{P?TW#$iSgAb8DS475d6Lzd<O+PlO(Xuvw0Il5 z{jG6vTU$r7ecMVv<m0OBXFw69)VjkZpyEONdiKzupi*ippr`Nag^)n}wSk{=w!e1R zU*#{lo0m7YcG?+}LIw$I?j$%=t6xZ-yHsW*Nu}5sQu}4~LM5u<jQSOA?PpMiRI2{1 zz7apuYwcP_QgTLAj=OQqEAd$G(q&!Zj-a&Yt`%Ku=R#DWD!H>t4V4MeWTomZnIp-a zdv&X<H;|Vq$8AJKb>5uR3n5xune$9lcJyRX1BJ*kRgtxNQ7m07ZpX1pOFe=2nuV`R zJ;AzxXAcJ1L!|}wUg^c)+n{=au;Gy)Y)qkhwq6X61i_eEh~beSD@wJR>@XrzZn2e< z4(i3+fy=2c*LOB7aP?~`fscav1uYGXr})yAj>h`7g$rpp2NnEqH)~kh(80q;wlxjA zmez%B1d^hq4J-L+3uEw6<rUMM_d5H!13G!)<Z^M#l<t6jX;k43=-MT?gD59nuREZ> zImDhzMa1I{=oX|*R96Iy<2#@WIy#)}4RT@Vl$~#cH<UFsbT&AIv_JY;o<86lKe!?| zZO{xGhdXZgP$2bQcMg9K`DMT?rhOa)Dy|nU1O?v$<~G_*K^TOO7mhBuJ|_(An;;aj zOP5`Pf!Vtc94+7v1g2KvXzA!>HwO6yz-*B?TJU?}D1WrwJQyDeh4M$Zy?{Bu2W}iN z<vwsn1C#WDs{`hgK5*2&O~AY&adbW|RNkT^v2B76g+k?}dL9W3w)HvmR?n+|d066l ztLLwP3DQ0YLLs|U&%=P(#|Lf<Fo*lVO$Mg258Q6ZP#Tz7M{)KHTHt%tAK^+-IY-j2 zB|;(GLrB{N%!B0&Glt-gm%e7m$74V9QhX>B!Zl)b_BUYaX^#}46dx~rG+wt(C4>rv za8LTcC7|YM;P${}G6iZMFMZvRF9+r;iR-N&OvVLvrM$>4)DNitrGYt1;(F_UcL4K| z#Pw$Puo>7F#fL&6yHvhofiZpHW&ty|4;;<+3nhl^Qt+xj+PFGwreVB~4~0VIy&7rz z9c>tQ<3pj){7mK84$SW)uD9~O1<VJ1;NsBtIWRNi-c@gQPXcCv#1*oehQ1}h+}j6k zPv9N}W{1SlMT%Gby#e_jfqDE`L=Xy{k1j>ph)Rao2QPgGBICCJw>d0eg~sJvBu|Xs zSu1=f6si}RR_*}iC5a2*yO-S>$ln2`Jc<ZHq4M5~v?MTpmAFFvB?jD)bZ`VOyLA3o z2HblROWUblxKkjHqBDG-Is`%?yK9lQ9hlh(hVe$Sm%iCZJ{y?r5*NgGFWi4a{sAzr zCxyO3<NPEf@0Y^HHa--3(|0*AYfOO~h(BI-sa~E0CQ2O^p-{Wsj<gIgpGjO1zI*9= z3kmyI;oLwCjZmn4$?l%DctQvt3We-GhqSAKSy;!gg8FVj@+yfDNbmgZK>iLm4(|^> z!KKgj%NQD8MJHOC#NR@{j2Q~tNQtHPDD=y*DL(Zb3tUwn`buDDu}^&~fm_puJ}U1` zKK1<+xb;5t{l=%hSAcuZhrR)GL_1i=LhUgexKR?@TYF6NsV@v%#)rPsed=om?mQp* zzVB1tEx_IFL*I6v`d$F;tv>Wo|1)SZa)d(dQ3Bj(i7nI~q;G~#eO17n*oQvq&z(N? zodev(edrqseYg44_Y2@2=|dmo?-if=-U03tANq!$45f}xs69piH&$W`wFl)d>{Fi! z-0?p2wfoe!3b=3i(07YZeRl$PUmyCYeP8gY?=9dy>O&vZAH8SR849(>UciMUworRe z{*LvjuL`&m`_RYZ!>7J;fV<d-zT152`#EqA_|W$|pZeYa?gJnC2A}F|4SAmS_~q;# zz#Sm5h1!E|7#$5vog3$&uN9b8Zk%hqF%tT&1?Fxy&O_gJU|w?LT>2<~Ujj3f7Vrpm zIXv_o2Fw&U&ZUp$=i`BCa^pPoT?ovjZk$UW^}jnMhVn<D(D?W-;5PWs_nJ?Ae+2H& zedrsF{FI!AtuuTm^j3dWz?|sDxynoJ+X>7iZk$K`{S=t>Zk$UWwa0IOdB=_O(ARGs z_QUX@V3)(CkJ{r1iD4iPh1z2haN$1mQT@#WW|bS~k-uw!xy6lh<&Wxb6EH8iaUS}< z1g5B7l%i01ss6?SQ|`uj=&J)}t{dmdAC0$F5+f`ZuD?rxyUvHc`+Vwq3b^0(p^wfV zpZnC;Z$A19J`@VoAC>or`6wek6l|PF{mq+?+okwWuyG#sckz5&cjH6B#(C&_U_SOi z@S$MiJoLRYA9El+6l|P_z7Y-R3;1X_4}D=^j(6ic^tA(Xo*U=VNB!^nz})G^dFXo* zm>1kQmp&RFe~}n22o8nD@6ZLfUd4xkT`w+u)L*7Z3<Gf}q%R6wjSqcGeCk^X+?qc0 zQUALMnDuU)NB#W<m^a)wS9wX_H^A)CC`xPBi-*1mz#Q$ydFVR@m{vE=L*FI9T<gZU z^ig}Pml%=5!tJpMxb1!DqyF*%Fhxy5TL6CwweN6XMoC=I!nyKC^*0Tej2q`s-qV3u z?#8+F(fGIum|NU94}F_}+3v=<^ilpkkQhWc6e_RLjCB(}6nZP~VG<*dh3oHF;Hvu2 zNA0`Vr#}2N!Z^PVeN^5XeCqoJaF6t%kJ{rEpZY!k?#n*((RyRVLL3~SP<tEz++h-1 zs6D7Zo50MMxZe8n>A)=SLm$=ORlxkjjq~V#j{~#AjdS%ss=rSNvj`sqyBr?+4glsb zH_oMx@@Gm6E5xBt{mlh#u@8OU@~Q7S;BM<fAC-3tFu#$w-rD0eVE)vHJ{li`7F#71 ze+!j&FW^EFYuB@@{;2;Q>r-D6xLH2*E%T{wC2(te=)1|MzMlfOz7KsgK7Qj<-v_{b z*@r%Aj}a}R9js%a_81FXnZy=q59-euVCK7V9^>OYV7~3fx!RZd-%o(K&yDlY_X03) zxp6LigQ$?F(?Nwo<sAgvUJ_fVyri$(r@k4$C4J~?@~LkLa4UW2`>s!YHvsojANscW z)b}iKuk@jh`rp?+^$j=!>pFZW6lxFBH$h?;h(n?FJsLREhrWeA_2Ea7#(8di?fMU) zX#V_up1zWBnG076+z;|_;XK@-z-{!2d(Q`MEc6vG!NC#2CHZ#yA$?*V4n9&{<v0Ym ziacDtz9WD;*#q~#@?<*Qq+apA{A4=$ME=*GNyiOW>QM;v0|W~4>D^r(Po9R-^t|aO z{Iu=+<RS3rg$r%xg=TK{$V~2;3_MZho_>!s(KDE%Gvr<p&&NK!>jnCb2iZ>zncZ)H z)AbBJzRa!!myj#LPWC7ns^5Gpm^<+i{v<;to?wMb$4u#<6HesEea#$R`j>k@*It*- z{f-jmTkaEcXV=Ba+H7;?7xCig<LQlW1UV!0Ea=QHim%yF@dW-{vGMSYYd5SsaP5Zk zia9qq=%6g^e1zN@E~C8E?HtE{GUVcrW!p1&;uo$FOHX3ImUaOTu?o0-*KetSBVZrT zwLW8Zzx7Qf_n75Ek&3#QA1$4C+U5j`7euue89zYm11{_~9IawokIw#|n}9-Y0#ca1 z#iO|ij?ut>o$K)m9Dm8N$8bz@>Pv{d!7_3a@LwDwHvu$k(arE=J~!u6{qg-~mcgAu zrgYr<h#Ld(d6R|G>#Oh$uxoEhEMC7q{gDrvTe8jKIsDy_avW!%7_lGX15cPZ(h{eL zeHn<<gYf+ZmhqUQULLX^UH{rr>NFI-_!!^~D~TU$o<K(HHxGkcs3lXvC{cw`IxC3O z!)+P;z)za@s0pvy`Iltk34YndF{2pt<UXFpr$_h)i4vK+YDb#m>qF;rDUGf}&F<AB zjjqu7t4}hzM#1L<MwOg9Ix%-pxw)y#+(77XrI@=8MgffwKB6}8<41mYu|MCoejDG4 zj7}U2*TFy2@bGvFy?Vn_mk|vwQvdA@FVyM{FN{*di&ScOA^V?ecu`@p`QXZ;c+H2f zO0Iz?m_0mj$QQ~qnn}ZACY4h8Ouq&4^|fNx!>Cmw_l5IZB#gi}M(_n;p!;zQkPic0 zaBhrTJYrz@d*fe}_^rTyMEHLwYdBei>CC~s^3=_PP;C12XXhldxliE7!N%SA6d99n zoXfJKZCMO4(NNX4Y!+gtF^+C-3T^{pVkFZAi;#6Ab^_z**MCArbKxA8Jz~qALF^Qk zy=co`L+m7${n3_Dqs?R4XSVGBnzoOoy$e<4ZdxIWAw@N<km*e;WO~yISvR<<X@yL0 zS|NJ|IMuX5rZ=sS=}jwSVfGwtkJ?X**W3tgbWT#Emey+dqgMLduttjbTJiG3G|F;+ zwbp0S-4RXRLFXv5M&-0eX&ifuO5mTDqjEDw<;OgVd7x3&F#XSS4K&edX`uZaAJH13 zbJIW*GHMM`Q#8<otPwFWSXyn_m57O&rxS$0xd%aKR?ZS4msUMU2TMM`@}fbU$515a z+(DC>80(|#EQ~=+%n9Rd*#yKy2b*TgDiITNOv;wkASUJ_`tg7$l3eavOHcAAgEO*o zt)qRZ!1V#INL1tUS9psmUUM3n-OSAy1dl`J%-Mq?#n)`aVjr>MD>lRr-`0iegj7jp zW~@Y{P)wx2lX~&GzaURoY>&%WPMBV#lZCY+5;Y9xFmNuk_9QkmM64RlKYNVPHTwLs zL&oE=F@df<;59~`T-I&~7hkn?XE0p8%gjl1#g6bAxFbqDkL#G?wR^FmQ_-2;{-$^h zT@qm#j~vj75SiI7%dQ!J8A-M}HhvfxrVMl;x0dnT5M-6?i(InZohv~^Zk(d#;!7vu z+6yJ0AWNR^e&ZWabgXzpWpD;|HkfN)E?z@ZLSMP;nl79ZF|T6B8u)GE5_cT}ChTze z=u$=MM^RN7cXS@)G|T>`u<rU&Akffj2Yv&WP9A-PmSABz4GPa=atTITk78sVfS6c} z(b`OmLRyyy8J!mQ!KcWeF?w>4Vpk(Zvq_P0i!Hkyu}|?SG9JNEaOs402g~TPibiaa zu@88HI|ebKk30{5!l~rTL2!>pOmLeJ6WkSc>@viJmYWb0T7Ha}$N|4&0pE&@t#;~D zhzT37BesjJeSw(J(hoZzLd#&p1a4njb^u}@G2;ltzTw!>h>5z2A|~>eMoiRcy)D~> zUr3;9(CZ^S+D0z1wUk|=A2?;)$WPJ5kC-WjAttJ6FIz^lk;ujv#KbIfsEsQ_>{M>N z$#&{Y!~`RZ*v<IZuZ^&-2!t;$GdF7_?J)G0-O(Q7A*1sMHMrmbZ+DEN@Wp3`%&o}~ z^cg!#!oLdGU$ilg5#KpHayOi-k;5+5EQ)y`cz?jB$QXyCDCSheL~o$GH6qhzA@&YF zMeHC}X5ZtY>7Th^5Y=1^?ZQ5-;%9O7(ZniJ4?;}j<ll6qDAei~48mxsZIlM4ko|iu z82-->o$S*zq>TTVAG$dAtx9C!HGGPUB#z|gqKN%AJ;*ZZiT80#E)T4CyU3k5F>U1j zlYZz#mQ7^x0nTWb%Cg76^xC<|<X%ayn_ZHH)4uGw>X3QC2UKLsZC%9{bKRQK8zCWw zmOa%YA2^><dot3=rkFtXg{+M$Zw6vN!AH3GyP0ENR@DH`om`h&C3Y@nnKNHEb7>R1 zmz%ZSOKe=ej(5>qvtj1zyniY7IC#T{Hps<hBG34_!D50J`PvPMVmcX)n9PmtLy@;L z`E5fXGdGyGcjcawnX88jy)rB|Iy<pkFzw~g(`HX?2^*jt&y#Yoxp0NpIk|hoH~72a zEHf9IZ|16}nSls)QDckocY?gC=!C-9G6=Ba8(WFLSS8G^)7BxiCD?Qo%DY#OGdhdR zUG$EbVtL-8Eo0g_wl|G&#Z9Y>5Z<>V%1lcNQD$1~(`pju7#u0Ji2ZWzfmnZDQi#-B z?bQ1b6B8`0?zH+krxY1WV@<mwGqY+?f;#;soU5>e-An>r!2YglmYF-QB!QHfvr7O# zDlL4)@^%BQy6}EMI6j?O9WK5Gpz3g>_=-)D!*`G_a&3vyl<=#f)HhCu!2c_!QNIbD zI45#^<irS%!c1-kc~i`tGL0wJH_ff_(hxFlq<dDNc3;T!#7wT3$oZ>r^6Z}||9mI* zz2!P@?S@G4Rgb50#k4uI%&KE~w$0Vf?S4Pdc}VwHf#S8_h03idI>{U1@(;u1pWAES z@S4v%r|ev9_H>|iX>X3r$rcaa8|d0$b{}hWJ=J~oAfxN?t+7G01_~Fi|7_<&2~dY) zVVNe^wNEiGyynBs5pZuxP924hQ#*-T9ozGBOIM=7Cq(Ka^CENWt!8KPQ&XV&XZREu zRXB?CcRgaFQ5Pd7y2fR;j2i!4e2N$?y2h*cF3$5`BK8)i(j|iE5TooEMx2?8&duhY z#SH}$o&UUn-CqV*AG>oPx@h+n6Kxh<naNen&*Y-G3|e0W-=%SSds1{6MKC&|i>>`7 zd=H5-h+_&?n^4<D#&L-Kne#9QN7*Scx#g<3dG@3>8i+RP9I|uwt<kwuyA|-Qy9qfM zC&$ELIx(sZSiJoziUC_C2Q0Fr4_IWD2W*rFESJowS5#SAS)lnvY+~o4(_CA-m@BYm z>!A5!u$(VCcAkUDVA|H$T&!RXdlR_0BsQ|Rq<UQO?y>pByH}&#F{=bFx|lIEsa*6O zM6G$HOw216T`Q82(~EB8sN5l_M^nTw=~z3=G>y=#Q7<cqCUDU+Vu*>}(uSBQ+>N&E zZp1_jh{@n(F&R9M@rkj%$({+G?K%LpiYWjq&2))5a~lu$Z5ZvFBZohq+k`PLz1hl| z`YP{o8&t6%=l+0sk{86oEziHt2yxGB3~~{-Qee_b<RykWS;z~qJy8g8A)$(W5M<(V zWE^52<0H;sZ*r^}$DeX+E{;Ohh?vmQiI}J|bymZh>r{#UnG&d6zYq0%ds5_YB)*CK z9fg?43td-;{GDjaFgQ;-|AB6N$EkZqqImttE-@@mLSLvFDNj1t+_x_V!WxBZ;TL(6 zS)ACIE>1j~#i*rm8cydfypce-7dg#B(m;lsI~<K=#HmAKl>eGIax9O9Xi<<Va{^*v zj-7(o=^Q&BF)^~86*m|aCuZV*Y)gY{4D;$%(XpxPiY`qncrg`*5mPM{l6?<neY*dm zY!<Jjy~T<Rk9Sk`1<ZBbR7V*sda(P~O~o{Oj>i@Lx^6B$_Bv>DU|si(l!DEg30!O3 z>T5Q1mC;M?=+@~p_~^x%oaL;HSggp}Em^an^93`<*33W(r$b>ZkSejaCI26L?*boH zb?pJ4ArlDC3CLTJh(UuW1Oga{!VF2^3```753FDaAxJ7OlNrG`7^1{u>Z`WiR&8r* z)!JHX74cC`h{{7z0j*GKeN_dc6}2i#HQ#@&wa;_TkkQ`T`+eW<?qB9)&D#I9*4}Hs z_t|p}w9`B4#ByN9K#*)UFe9g}izFDv)Cfi{(YeP$OQ&r#amXT2zr`oWk1_s~shcd` zgP_QHncVZ+?lL>I?^-?u&9dbLA6UIlM}=hX$6<*77%SpLPh`j1S>Xp_hxPjB+WEbc zct_uwlLu>wFX&}`^@jq90qT*-WD)&@xgmoTWFmuT7yo0=U&b*3y6x^Y%r(H8BdA!M z7_d@SieyPMp`K<MH<MMMXqXOaR7kRL`8lY+F>eE|RAfQzuXM%mXYDCCmn$6|UeMD! zyinfZ;RUMRzA3=Ck3!s!-Z^T#6s5bKySXV~?l9;Ij7{g3BZ}0U5A4Ph)!)<c?nO)= z==g!ov#afP??N6PMbp9skl=F&>XZc?LMXQmA=n2pq!zfJNq!uX`z|LrY*7n9QLh`+ zsIA)>LWi;TgX}Cca`gyuSsl?Wu9y+PL*8=>_Qo26xiPw#`z4+TA6mB^3iQT@a`RcL zHp@CMg1UzZYqY3V_J^6m+NNaG*2K6nqd2>)2*W4s9B(B`#SBDD7~e5%Rxx3TDQVQR zVol*}>>yv<HEK-Lqm9@JiW;Y*yx#gI+DH*`^mEP8Ndpt>+Q#9*->4|a$8Nk4Gh44O z)Z!Sh@xsyaY((*+>Wzr5H+JHA)MPDz_q9qUVn+CYUcV3NYYnYygbwuhv&tg{dO3*l z^7=Oe(Xo2@nzsT`V-`}O>k&hu5ff|7h!)H$2e&+0Use81Xv4N>*IDIyQ;%G|XiuyW zomuz9P`wfJ^Q_M!<$?I+x}hJ?H%D~X(e_V4lIt%$h*ZxxaCv9Fai-q(XT5%5c|h+v zv%KxODAs7K3j1aS#Q#PwYDr)O8?c{RMg3}$)DK+VRc|~^-%tCNdVM7cpH{yAZTbfE z)%xZxY-=YmHWP`y9?3(F5g)pW1_thH>Q`rxy6ns6#0-t|`FXe;>jZkHbkrzE_1hM$ zfAgCtma{tfp7IlFxQ+DHZwo{l%Te36=|I%Kg#iYy8aNH!f>>ijZwu=N%0y+14*X#L zTrLXkgZjwl%}{kZD6F=ieJ8X}BkhBTRUbv3D7oy_mQela^x^>{n5#G9c))eJR9p1| zS#0RWZMlW?eeKg!tuaf4N04S{HD;pfApMO<KP4pwA4lsKln0_+%gZAMN)VYuney&= zcbrK=p_0j1<20Q-)o>kcjyDcyGok>O8C&r31=`Vv7$-SGNsbqlHAYC2!=7&1n+AI* zpD4;FVnm@L!nKQZbl3H^&Sbp%HYBjT4AsmoUUK37K9p$^k9Ccd?+@}fsu2cOv1lDg z66KESkd>+Z)D2)-tCyj?PKs~^%%>zHOF+Y|lpdUFN+o|WTVeOZ)c)(q0mf+%#r*{o zB2|OMtaSmq8TF>j(2<s?@-%2laT!wlom^tNqAf?SpNUG4oLA`#Q1w*ZXm}QBj5T)I z|Mu7I?b*n_Y~t*|N~9C&l5aQO(Lj=y-awMy;XrZ#>5&u+q}6#2ABCfPwE2AU4L3k( zS&4xJgNl9Ev=m)%Q89I@tp&|Qshx?T*iuIm#<m2<5Jht`U7|}H_O3qS3e0Te9$4F> zJgl@G$^YnXoafY=Zfuu>Z*r`U2Aq7q0Y}}XMO$BrlXF<LpV!)iY{^ZNjiBsIW+69R z-Qr`SMmP_HTYRW}cX5j@yu?5GwJum<;&l(rG=a#%Yz7+zc!AFMvP?W}g%r(IBMVXH z_yHTZ^B7hm3sDlo;|9HR0#@2u$Pr-_&>P>hJ<KMeYPI$q20+?L{k8)j4RgK&pm&(d zGlw}OHffl<qiwR!Fn6r!qom;uWt`@4myh8tpN6}98Se6BxI=1myfb?iM_a>PKDa2? zs(dxv<xAsB8t(G#;Vut8)Aona0$syh9uIf<G~DI$aEBXQ7@E{@mv0Yuok`L;+~w`3 zNj`cV5<V?||2y=}Io!QW44>idVemu4*5C?-?g1|^@_9HPgN_>TQ2osT4|SIZJc@M; zc=_G|5B@68M{k{H4tSC^^p)sCrsaPgAq7bT9<=j-N0Dm4gWSI{;N{bRmj|n;L_FZ- zVZh6$0T0EtAfE=jd<=N#b-29MfJcSRMTyY??<;Q!HC*c$@bX;)9w!+C9*UR-JksQ_ zr<?Yu`J;p|;K5!LDk5CJWWdXF40!n%@bc^eCKs9m9;G{yZw`2<6FdlDb&kZ!fR|@w z${g_W%mEMS;~ofE0y>JMAU!nTrI1$x9=U&EzBS-+Tcko%10J-}fJcgGz=N)+@-%45 zFb2Hu<`N8e><S+6kc#BIssT^6ITVurfY)LTc+Qv7bfapoLKieCdBuxRm@R43n3qbT zt0f^6N$4WMFB9p4mx<t|BID#`BCAb9_)n*F#g<ScdFo+p^{^y_A_=;kj~AC<>TAAa z$C)2$wPHgklK9?XC9*9Ep-5uEVI}%l5<-#0;=@YNCbOhUD3VxuSc(3Ygis_=n<PQ2 zYBLP9B!nV~)gs|jF0=t;2HN<R)ConB^im7|*Tc}0Jk4;VB`Fk1t`o`5_UrERO*sD3 z`E0Qz6iHkw67=$V)EvCLekBPM(?x}$mXuH=b%RKys0Z}?L$M<iN&M)r5_E_}B!nV~ z+YT#nj3pryNzfsZ)U|VjB_R|^+#?bx{6z;^BvnF@#Qh?17=ImSNeM+#4;|J{o+Tj^ zNj%n}ospK5P$bnXQYp%1lqDe)Nj!U433^S7ct9wUpd&b`y*$Q}5Q-#riiCK10T_H_ zpZ-(Gw<LrjiQUYT7hQE`RDZt8$zQ?suw=6>2}05Kuo?Vx|4npL3C6Ru%rm-hYD_7& zR*~-ubs|Nm8%*W+@2CIoqF+N(g??v>C})0Y7u}?n_T9|jr~7@STQH_ig7_+Ew*~Pc z>3qUeY9ZY+2Uu^w(GIE|5@R`*B!nU>pC?I}sUg8}mV{6w@h|2b-M_QeAAae*2rn}~ z!(Fyij)EtT3pLP^B>fNIV+KDPbO4NA*oCyhh6WoH%#=~tij>=uq>OaaO@A}^>CaO7 z1!L+Z&j_0GDHPcfy`+;yYcu%i?ZtYX{x@}#Q~`UAtO!L``btVV@TTC&n?jK{Mbhg{ zKO2KP^rlFWH*HIz-|J03{W&SUDQL>4P~=U~>-DCe-ebj^eLH@!-|NsT{hLr^kq!r< ze@h|#6cA>31B6Hm#icLO)Vrj3vEQ4Plu#s9D4t01Vn4x=4}>Cri^Peb*5G3XKiyMA zH}yy3$(FoEkN(rQ)VkLo_Sg8B!B2O|chpUK=_sZd{B+O!j=D)N%|FfHr@LI~77Tfj z0<|zfyFDYmCY?DQ=sk<|2IhCu=AY3^>pecC^*+7lf$nc~ZSJzN^8&I#Ga@t42C>v1 zp~x!Tut)9l%rBfX`M+CILXp%$Tgp-Eh9kxdv^p1CLXp%GmU6yM(v+ZB!BMRfifWxm z5b7L!%;2Ycx#)J(y7Y9DUfL%&gP-pBchpUKY0tt8e!4GV-Rysu$s8}m^#fA`|KG(& zJSi0UY7I*b8kVW`9N#6-Gtem@^JqjNnmiYPq73}kG`g>DhW9{-E}=-*)sj05HCc-~ zvw2g3Vg*N~A{6Ns2|{H#YL}nx>y+mJMKJYJy|?Y#7DO-Uq$f|C!B6i^;x+Cw(d%MP z)fcOYzT@Oos?OTG4{9XGLQ$S>bx0?_i1l96F#gjGG?5mHr0)=EPm75<q~5orgd(Y5 zIcy$2#ch_fP$c~uk*3jid{3?a>3vrAUXWdm2yG8tRQLe@CAC74<O3qfJ-rmxuS_`p zQ{N>LLXpG<miYE{i_UY1E}=-*6Rhj#6m?5*RJVkpx+M}+Q$EMX41T&diEagP)-Bt< zZ9(*sPI_v%8T|Ba5s#%&w+=v!<X9-m@e3k7Bug6-r*iI&nu$7gdiDacxq~h$(Ehnd z3q{f|v-F_6PFnxK0LJ|sSBkOQa|!e1@(KQl4xtG77fFGqe$pnW8K_SZDWOQ}4UuxJ z<W4o=`2SB!LMW1W*Os_Sp!4J(Uq8cDYzRdXAJ`Jp1Ug3k@s-L(B!nV~PefvHH*Ijd zE1p}Hr42?~AB?s>cwGNCNQ^H;Abf$3Xb_4t925=g4ZQeR?Ke0_lY^F&P$cyYOYumx zs58FX;}7e^_Y95dtw>P46$#S&BtB;F(;Y;&Y`^5!ObJy=+rCg_LG+SN=SbqGw;Su_ zy|O#SeuMnu>zBBSZ-k<JWZM$c1bT%0<Lg(riiA)kK`(4fy%s-YNeD#}Lk=tPFH1rw zk{EtiiLWgQp-3W6Bs?{qj%b<T8xWEgp-5`9uhbk<1pnJDDWOPeysy+;hm?kHR%{7H zQj=LqJNf(7@}j^glXFUIYgg3f;5}jSn&s!`oH3^)XEDBa^TF_I>?#iftE#Q8jOPs> zQ8#?#2|4)_$B!SGv$(QmX*J$5o|6+Fv2<x-a*ln?IoGB!am?uuGoo%pT{k??4zD-6 zXxtbQ?gq8TA4X@G-ugGXX3<UO1q1EyU4|B3j3kcE&%Ys{tr3p%rDQZPWd!Csoyhd) zMb!%v=jU>nphW`nbTY>AGBS7>m}VL0JV>+GCrl^J`D!wX$p{Qo`1dnkztI+@rcHq` zlmfho86PrWbExf5A=@0P4kT%FR^l7y68}ZdRf>}I;EVP{d^iUx#yl`3T#<SNac1^} zvn`3UCy7H72}+@Di<%p8D8L(z7qDf5lMz^rE7^Iw%c|Fea$=}U%m|Pj(s<te=k-d) zbYV;ml#m_&cXxA|0<@)1wyqpC|E6R;U0F|eg&DJ8*m2@PXL?9OMj#(oO8uUV3*Jc9 zLmDyy#kf-Hdu;y0k;xe9a5FkcPtP<ka7TxFLTO;A4t12C-i)F0qT2SmBi})<Pu_I; zrw?Ne?`P`zJMtlI>~!SAeree1p9Y4eKON<r+H6OdL5!gdF-qAzJ2t~jUjGbE1B2=U zTTkFhHR-;G{`_>Zo*|5>R+uIF43J)1Lm5LiR&qft`J(uPWXw^Fp|(ZA|2^}=5R-v7 z6-)5P<S?cbS1S7(o_pcSWLrlwrXE*n7Zpz*e?l^5IAac9e~w|y;oBhPxTE?rA`M%| zrh!2>(P7=lV+;zC!>!+ol_d8qBN_7)u9-w#H#nAzIi4}M&=sF!{%gzHWXveW9Nvd; zeTQkL&7+I}63Vu^ul-_Ca(RtTLk~^8GXk`1r5bwXBXiJU(}?2iH>fl-0@O25%$gmY zW+vMj%a}KCrQZDV++i;!W5zM&2e?uw*DfhcwpD<bi~wy{QTzJ)$E$yltY<u9=Ft_O z6DQxaFc~v}F_b&X*EwU3UYm@W$e2@crF<QEch|CH%t?%S7*{IyF30|ET`~sQK$?qj zrEp8b@iUV1H3=~?p3+G6U}6^Lt&}pSpC>bhCah%ZmJff5WO*?~jA_6%h|f`NyHF9l zn3EYp(<Smx(_MF;nT$DwF`wc}?fuGv?mpxD6voV@D?UpO)&D(N&s4^c9#kCdwcGCS zsfS_4tj3j6`og{X?a6u~jJX$A%GYZH3eb$a`I^QU+7zPl+R}Q=eaRRq1$*8yHUG8u zlQAWX*?}wRd8+HFFyysW%9vl_N}>Iehp}StVx}V|BS0Goq-Wq`3(;W{hJte|m|`{U zXfq15aMUgz#|r24B+SYr4&6F8gGkXWYcq7xDi^M(jhkP!9N6N8fr~?5?zf}}L*a=e z&W<F`n@OC{k~p139W<Jn=_ZN<lXG+u=fosVQ4(iP5~nVSLz{wbTlXY!{*=VomBiVf z#Gy?Dx8^R?FgTd`qNTB$Gb)KQJ&Cg*iF1kK^ssz*qv8y(IQJ_~Z;P`{ak4DVD~i+8 z;=HFg{VmStiqp^H1W~6c4750X6sM2H$x)mfi&LODM_U|SafVu)vlM5T#aXI2v<4Li zU#U3VEzV7fbF9Vrjp7_<aW*N=aEtR-#Tj97K3AM$EKWb_Y7ufR&UnQ+!s1L<oW2%k zuHy8vIExi0WO3q(lWlRXQk)|#&drK5#Nzx)aRytQClqIp#o47eM_HUt6~}IIS=6m_ zFui(o5+`4A@}Nhmz;wkq-r~$xoRJnMt~gyR&N{{EYH@B<oC1sUOU0RFaW*K<REx7+ zamHDkzbei&i}Ru4ge^{x1|Ecn#TleHV=PXd;$&K!sfyFt;$TOSL!re{_wlt-ixXFv z=@#c|#VNKpcPLJY#d%0^PP91BD9%Y1XRqQ+v^WP8XS~G;($orJg2frEIAbl&7{xio z;*=^*k;VC*;^bSL<%%=f;#{maqb$zVigSX+`H|vGwm1(c&dC;Mlj2OVIJ*_cuB-c9 zoMqL^s+O&koC=0GD=+qNuw~}t<i<`NHxZL8npyY2r?W<!lW6LSU~?uZ46Q2}Q;@GP z7H8ZznuH?Inwl|VY353rDWSqq5C?~5frO!*0m0CmkAlT1EX*Iz7+U!<1{|8H%3%@a zj4LRd#F&02W?aD}Nuq-@Ui1vKG2=y#gHt$x_0X!{)J!v8`9&miPMUyhl!B9kkK)ke z8X*TC=1e3^J-!`na}>tnj2$<TJcQT8nwYT@Y2u7P9$`HehvxOn8BhM9_+w4Z1XUC^ zXY5#Hi!jHTn6YCe6E<f&nIg<^6EmL5f`ZL4F(beg>n6tHSSdWl#8{l%B+d~@oW2&v ztSz+vBY8J#i_J09L;F91G1FslEdOMi7|TBvXRKMrXkUW$NHxGW+Jz9!CWiJm+?+us zXTrq%aePRCQp%X|l#3F4u)q)wx37osjndATLPFE}iHby|D2`TUR7GqKt-~l`%o#Tk zi^Vtajn<6JAt9{+A6ngrR3WMY`Iu^iNEM(lQz?%&Ih=Rm(3+YtV<|nvp%rvzZM5To z|1-eJ2$&tsj!DmidhjX>Y%M@bG6cqGqaCjk(80|JQ13zG<CY=KH`-D;N{TTqTTzyB z+8SWlnxdo_<FYj~$(AiurKA|+vNemPs6J4*d+qEGdt0`yQBsU?*@^*c=WE2Z4_|3Z z-KV4&<FZx8QqFwgAS0PYctJ@q#$}7@hi!{|XiL4Rq!{C}HJhcJwt8B&K2=hTaoH+Q zvSmy4q>6#S7?-Wnz;)M+{+6v{l@w!KwoYd$XWg)+PEk^faoL)aWUHTLYmSm)jLX&; zNw#dM8YRUTm#s6CYz?$*U7@5H<Fa*Dk}X^6hf0buE?Z|O+3I82x>rdt#${`6k}X^6 zDJ8`im#uS>Y~@(CURF|!aoM7M6}uibK7V<oE%lL-VvNhyxh&;uUq@TEy3$aFz!;Y; z-kY-ejY(HM^qMVotde4k%hr78$_SXYN{&2t?NH0sG$q9tm#y<y%B+VMZaB2nmYS=i z7~`^4!BS@X`sF=){@Km4wM<Dd#${`P%hu&{wl~;P>y;E^T(&ALDG=I-?dOc>ZrQq1 zNioJ{YoR4YeQ&R4`rK_x{YgnN#$~IDrObR$KYy%c>s2Mi7?-U@E?d+`*-~F9DaN>L zRVUdx&a%~?3Iu^ME?bMiwd*0-vZW>}DaN>LozGIvd=0m3ovEZ4<Fd6R$(Aj(N=Y%s zWveF1)(FeitxAe9E?eJEvSmv>rlc6-vUP#W7S+RJEL(e(6k}Yrmbz?FJ+!4d(R3Su zF)mxnz!lF^Jk`To%T}I}VvNhya!bmrhqlygCB+z*traX~mKWvg2+LMNNioJ{Yo*H; z<;#}3UP&>=W$Qvq3Iyk?uVw2VCB+z*ty)XU%$F^-Nl7urWvh;*%zRP%>Sfv5tE3p? zvK4pPqB?I&eXOJy<Fb`VvK6vyb?${o1je{*T?DSXec4h&loVrJwpOu}Ghf-3t+7gq zF)mxHlWf^iGn5o#T(&ND**g2n2Y+^?Wow?2VvNhyB`#aPEqwVgTPmTX7~`^aDNFUG zD?Z!aJ8iNp)uf~t<Fa*`%hpLJUNqO1x?4#x#%1ermKvyRJ^kjb^K7XWCB+z*tt(u% ze)RFRdu^$`N{TTqTUWA_nJ?|S@a?wLXG)4OE?a9{woaZu{W4oB6hb7z8hkQbw$>7d z$7S+icxQcvEj3a}F~()<Dwd)yjHEu8dhK9as#r-e#$~IXrObLr{l*ZhZp>FwjB(jo z=d$(s{oQZ1r7luZjB(kb6_-8lC0m0nTR%`zjB(kz+GUICp)Ga4l46X@)-^0Ogs%8# z%TEZ~QrndjV_de@vy|z>$M4uR!It`ml46X@RwGN9^{{5+HxJrUAvL{XjLX)wE?a** zv;RC>Dql%4#%0T3DT=0iQQfemPE%5haoM`gW$X7t^Fp>%t&(Dl%T^OhIqSwCtGsSj zQjBrg`hm+9m6t8`pps&Y%hvTQ<t#5->Ln$`7?-UZT(+pZY^eiEiZL!*H?owoylkoL z-iSnCjLX(d;M)B>m6t7*ucR2`vUM{{QButEvZczE6k}Yre(17A<z-8)R8ov_*}8?L zsE?wsb?BgrkGIO}1|`K9m#rTGYv=2h#}=G#OZ{F+F~()<$1LTvHPW)RT}d&<W$RX# zt?p0%Ib=(Hprjb%vh`n<6bSA7`8}V)kLrj-=+;O6Gsb1>Cy21~b<L`}g|^giCB+z* zt)H?K<%`Oz^6O<IZK+90iZL!*x4CRRUvbwfw$$lLiZL!*x4Ud@|J{?zY^e*B6k}Yr z?r_;^Tl-EATWXz>VvNhy&kkejb|u9am#v?>Y~6S4jRD)%1|`K9m#tqM#@35UiZL!* zce-q?+<HzQ+txlM#Tb{ZU$T_hzAm^u7dJM{y1_?C5YHHwtzWrpom~CoDqCvs5r{-! zjLX(t;MylPhYbr{TVUBLP*RL>+4?n0nPW;p-Uk`BRGE@ujLX*DmJ|q{V^6YdEml&D zaoM`ZlA_v6`)sz<S|!C8m#up(DG=Pgrdqass-zg>vh^EFifoOlp7XdZ^_Y@kjLX)2 zEM>N@?H`pLu%&h@DaN>L{nlmc+TT?@X-gecQjBrg`kl*G<x_V&WJ?WHT^D0qw(fV? z`d9Dw-?60%l@w!KwtjyYTXU5ZV_dc#aM}9H#;O+E)@mii7?-U-SW+OgGcT-pbevUQ zw<;;dxNJRWNl|(2`|%&9+fu(*QjBrg`XfuxSQ)_Q?<23hewt<L870LSm#v3b%B=IF zX5YQrmin8LVvNhy!z@M7l)~Gtj7_kmK37tVaoO77veo^nk=eFXc0WWSFvex;5peA} z_U5||RN7L<D=EgfY;9yIGhbtWU-*eFRidOA<FfTAOQ{TK*A!R%Gi>?rJSD{#m#xQK zwx})JQkN?!#<*-f?y^O5fQV)5r%H-3E?ZByY~B5@P7m8s8<iAeT(<sXNrB)#YK&#; zWhKQJm#rr)DJtb>_w1Z#OSLH}#<*-f#ZpcmW?Hra{Sk@47?-VPaP2t&`OuciQBsU? z*=k`a8dE4dcG|A1J6pD<C@IFcY;6M8wsq37(+Am7=PD`2xNNnulsU)l+3D-Qm0Gq| zDJjOdY(4F=b<zGVqiw0{l@w!Kww_@rXIq|b+4{ATVvNhyvo2fImTjqKCB+z*t<5au zY|FOP9wo&Xm#r->Tbr+cYMw3iPbI||m#wWVWzGSpE!$F|0f<CkjLX(GaP9KC`l!uE z+ET|WDaN>LJ;zecdRT1vuvAGg#%1eymo2J?wp6u}VvNhyc9*R`-gV+9C6=vqN{TTq zTQ9h5U3JkT+ia;jl@w!Kwq9f@@*(x}PxN{Iq!TS$Pbn$JxNN=TvNhoOSAS<q?N(BZ zaoO5oNrB*g<0Q-00VTy4m#v+a6!jaeyZhf^OZB2kjldX}tzF>Sdk(aJIMK2-N=Y%s zW$R^@GW+@0Um9?-Eu||d#<*;~;<9z)@4tV?c+1uzCB+z*tv|bLHNM-}$(CB9q!{C} z^{UGj<!gdv>!(VJF)mxXUADejc~*`s^{A3!jLX&@mQv9;v%O=}Sj*O*6`L_GTYquc zsvPlBy)E^rl46X@)?P~rgm&P{(95S-wy+51z!;aUzk+YK<q!AO%(SIWR8ov_*?Nto z%s%STU5OG~YNnE6jLX*FT(+`)b^k(JszymM#%1eumNNUOK&L66+EVM46k}Yr-f-EP z^It_D*iv^ZDaN>Ly~$GMm~!F%<9=Oa`S4jK#Tb{Zw_LWKH1-~8OTDe67~`__w#ydP z!+gtDyOLsz%humrwzf<h|A{Si<X}W1Fvex;9dO-kd9-C~qLN~a%htOrWwvFy7hp?8 zl@w!Kw%$v!HOjJeu99Mm%htXmTej3nCB+z*t^G;1POxmPQ&Nm^*?K?8mMwLgl46X@ zR+}XSg8SadmaRW3DaN>LePBsZ-`ne>cb~SUUQtqvaoPINk^;fDPPS})uA~^_vh@#3 zifoPe=e>Jvsq7<3llcGv=Xsltz?B|=;^|)76wB5~CB+z*tpk=6*{a*udbKSzLrF14 z8(q7oGG0l#<q@<Q0U9Um&`FVtl+?%gF1$+>hXBG^pTxN-iSw%@&W0q;rX<cQNu2kR zIA0}kdJa*E=M*|~`UyB0fm{`R+P|Lot(ga$)mBo3!EZSo{`r)pj#E<eCtO!*OU+eM zgb{E27#y=-q*B1CB5=a^Pv3;|6gawzvlpDzF3$Vl+~eYW2F?R6PCGaoU7YSiHLcm= z#Ho<$<k7;m^#Q;fv@jsF;o#(<0@#=_;N-hFVQ?0>IH!YigT--r?4P7PV0vu8jLC1A z-hmECQ6P-l&!2&l5g1O92)BMb1Q78le(|HE2;-Le9Gr}RiMum*-7U6M=24_c9)jVP z`U2dHz_A>wY1e#F^R_K@l#(KhTZ+9FI6+B0c-h#Iw$z16iZGIz7R4dBaJIWRujAYI zt1DKlj909zU9s3nS5#KTYc8sGvEobc1NB8JrlMwfP27xLdOj<tsH<GIa;YU`a%+~y zt7|W+Txz1pR>k>?5;!F6uwJpaX1NEmw7T*F7o@VPDzVJPSy@}XxMnr6SgW0C+en2n z%^YW1%=D>LS5(w2TUjxqIv%U6i}TO=HDS$3W}RM*wAEG5IsNR|imD4rS63}f)RDVH zAX0T<qNX-gEG!f!YHO>P$IEM1R8`m2MHeZ#GnUpN@~q0G2~!g|ur3_ru@X|1mgnVL z)sht}>Z&W2RMsvcH^_qtDpu9j#JM2U_lxS5udGGpxsVmlW>j6Uq+$`WBqH>!YDHo> z7cYH*s#?-bbZzyr6;dyhmSqY2>Kxv$#&Zw2wA}m^b#aQQSV^g6jsEdfOKO&K1|(Ms zw6wDJe9nf8Yvxs$i}=9`6?G&+sdRBI1xpg=S62v>K>W3mC9SV@*4KDdWz~}Eit3Ay zWXrRP>9FRFT3EBZVlisM5<4+U$d0iRB=vRa(iK$|wJVk`U07Mg-eb1Py;RJK6$`&# zUB#~B$i=nQ)vBc}a>Ol+TNQ(0q%dAvS;g*S&e9btE=X{j<F7Sl3*>LhT;HtL$#L9^ zyR{3ew%Y6k7*|_Ohx*}Nhg20B%5sNQX`vP8JAjJil9jGzdF8Td7gTjY%=f|jD0g>S zsbwf5ex{U4j&@43hg<@}abgy(SP{>+{6XKwy1tFGzNzM8gB8QZuS{-8>}88@H6UiI zszbT2Te4#5qKX8aigxx0@w!E-v!GO{8b{3KD=Hj?MjXf2x|&O>$JH!fgeFf92SM8> zX;sU;Ez!-kYQD39l5~y8#g}PPZ>r*}(HqspYgb&XI5dm!upAXcnyoEM3De@FB~DF6 z^;kB8x-)RA618>J4ji-V;+6RECF?q$G_WqFSeHxG!*+;D>yUJC+F5vc_3F4LQLcp9 z2$y;X(wj7Dt7v50pWFFfR*lZGg2f!36fS9SFj;|zhw--tU6;+}{3VHVYW=w$tt{{1 zEvE015Oi2eD(jY5UoNP=m^~&Lau#_7I>`&F7pe4fO!exO7-5|p?tCQm6%{k)=#|SC zEv>FCUQ&&IwW6Yqin}I$aRvJIstZu8D=w(1)^ZceSD`ZJnq8Lk?N)c3%fBQ@8S4@D z?X*2A{4pLyejU6=k1xblV~z#3l*O?@>}PwFu(93<kBAyZJb07q0m~rc!78Q)DkG2w zs+b<A3{M`YVtSy`ig=jv;GHqPLTYsL6*J>Jf-(YnBoxyFb&ORWyfemMhz1#dA&&6~ zIR{M|cRi9x(T5TDG3*pSjCE(G+|5cUa02{Opb)9k-~=32g*DjwyF%%)Q5`GmFj1_` z&p-A=!jl+BgvY+b_?UD=ctm6>;<2EZKG3n=N+OdNZ+}VLaeh!RJzA|9jwcN^ziLTk z&GOuQtGl&hq`vsYh|IW@GJY{4Q;<@|FGgg>r<C!F@pnLyXRVoDlE*wVKCk1v(Mi7W z0>q6Dmv{k5p78=igTp~yK$4%l0MX!Zmlxpmni((C+f+VKu_;~PlJ@a{OWr4cF8S2) zDYNgA_sPAAw=?gaI?LMD&b)7IDq)#-rxI4Nwy<k<ZcDk@l2LAv?g&Rybw@ag#vS3P zmF@_KGu;u6I^>QJiHX!o-4P<;6Cn~OrIPT8P>!-^-R4R~xymQPCE}ddnmwn;xMN&G zNsAqqvE*3ER(`H1PL4NADOJ44kLy4_b-c)r??66vyesq8GR&1}o2$U~`c5tQ6g-)4 zdM7!?^h<J#$c)WRju9EZn52a9GR|ChCMC}u>n|*8On*@o=ky(~z<5#R^qqsNz|2Wr z;3}b1vHrrYBzi>MNpvi5d1-8BiyMNyVm8M`2i#M_wtyL76>)NuRmRCtRv{-xS*4sD zWtNm3<1R@Nb)?=MokHB@Mz65jkKBrRovpS6oQ3V;D_hd+sRcQ=44hJ2&0UcxL@6)s zZp>CIaY=&qjzE${M^uuSb9*95&=u(v<qGK7t#C>v#W@AV<tZeSBh3mYuH~wbENgbi zNzrD-JFN6r)tx3uCnwwCN2z@d#f~_qAUnem=aBP8ImKi@$LUqYae~a99w*G=d4T3F zkOynAop31zH2|BNL{33}K(Y$8o0KeSMkI?kwwsd09FbF}RuqRT^7D&NEkAWyL@y3c z&5cCDwCzc^-Q-zs=6t1&cSC7&bsX)pR>Uh8634OUsyNH=4CjS4xUq^@qL<awRaLB5 zyqK1RU{x(iEWdy?EUT>Jy9#Q;NVg$smM>mGAjMi%iJMoIb*zf^dhyXznu|-rB{R#X z$EN8qq`IWceCjpm*;5OqPT+fFQzyVEJ=A*Y1U&qD>V(BB!j`-qE}0dbRx&$ExlSq1 zn{NDEY*rDLO+B>+Ulw1jHu+>0<5-%f;#XKQvK*$bT!m>Du};Gs#0vUar?z5+yD&bE zF$CsXQ^#s(T&lnZMMa`!k>>nj8{sxnSAC&}LyAm4>fxEEmguErWl>*0@Z<fa<`zfs zDaL1dog!vV&7V4f9t4i>GvQj>v&G@kSu=}g6qlYFo;qRbgg8mzf!<UqJ|uY4V?O-c z>8DyM#}>zC6_?GNg`xtSs;HUz8R2N@jPjW!WvB)JJ+_L=!qcbEo;7>=^l4%BJo2ey z&Gbz)jm+vOH(~7SMweBdUp)=CVqJT@vb#HG+{B4Fjxcuo#7Ps!6^tD_-oXSpHa~wN zAt&UIRS^riEy7DoX5M$}*$p^e&{^GXcRuQzSo85&q~ff9-Lmmea{F=T#D5x}77HLm zSj(OUV`EB6r$^3=oe_&pn>;*$N;Z0F&BEbnu_01ic7_K#J63XPq^xw#aDKQSotb$U zpH*6*H<>M-Jnzi9>e{+_7hH^+vGYn+tXjTwMdhNpd1lK#as23UqsMx`E~~q!Y92-q zx(iu1@1m-4`C}(on0c!wj-RJ)ho6XfNxX)z%g-N;yO!Ey?d0CtLQQ*#9|d&NdGbgg z`d?O4RlA~Y#o~BQ-svNAX0MFbEUUSMo}gchn>TpoeJ!Q;Kl%LmAnbJ;Gj5WrZgf;* z#^)C*Jk^+fTx0UGG;KDe9>K51%%d|d&XA(UJnF$wjd4C~mQ=u$b~#esK&eMSWz}-B z%NKZYh2UQg3_UcP0v!hN!yOO)USKja36&a`kGMg=L_5IInVI>(T%vHP(swCv>wsxj zI7+5p`c{B{9Gc^gRFmv#;v5f(0*jA79Ux2>`X+t}XXl5VkA@<C4}7`-(_i7p<&5*_ zBiwj}0m&hizA$jH4)jsEeLqcowZL7GhQ8a<)b}gk9!Nvq3u)^6GjMNt^*LVVK+d9a z_l7lEcC+)y7RBe$g`DFE;p}kuKhjfffYH_e>7Ej!SKWU@SNW_ooK|YsGx5pP!gKWc z4|3L=!k*NPJ@Kpu@M`R*bIxszJW9<gvXNRzdq0ZTi*|=@X_i>>zG$Grpy(i8*8V}B z(iHE)YVukkA2#J1nnOP%@w`@Qb0Up{f&2o^pr$0FMsqwEc~%RoDbym5(sSXUA_tEz z43)M>lJxcw5aP~BbkI3BI|Wv{Q9~r%Dk*(zSmV6htg|WOQRB;*O+y0vNTKC~lHBrm zhNQre0MT25Wa!4Ly78Rplh#Bp-DuT~dAWE+_|rKRt$IUqygOsIu-<}ZM<gYJ4uS^p z%w5w5GeAlDzi-7NajSKMi%TzfT5l}LT~M$So>*f$Gcit*5ZM@pnBH_oZjK=qnbw<n zf~`5Tmgu7!vD^iE!Sl>Ta#y!9^*lAqQ}GG%qaFJ*bsVmANI$4e!j+O6<cCO>F-5MY zbLK&Q&>CeSQ(J)RaOP1)1~4_~2)xbvEszKc@X5mGXnbVYqMq6exgg|CIzkb06!X0A zE2MG23{)3HN+^;V%RJ}%PHAK_!?7SlLMW0riFwX9j~{Qs@t-^)5<-y#wHWuik!Tb% zLmmi`5Q-#<nV0-hpqk}5XVuik6O~J+;~YxfNW5tWFW~u4PHLR<04f(b>`%S%&`)mr zK>B4ThB}6f0Qr<UlCLM7a$+)us%}PryhxY@-@NroGKRVVc?k(&zG%90cQU36W5~CZ zo+V$rc_<k}-pvS5t)P^BaB1I?WDLy#G6GcJh`Q?JH?I&3zOWSir$8x@y2}JE!g1CI zzlX0A`eaiC9hOMxNt|;OhaN~Qn8k`ik5v{<LUHWJd)F&Y(8AoTIP|Dvk-AH9=z-0` zc}Q_GEY2py!MsUfcDXosm@YL1&GeHzZj<J56v%V(kj@GG-SMDY>LNH$2{6XuP)%UY zctOZ?%l+8SZitef1qVP4{$#>KUD2ONpr1uhV2tZ$1l_^4e||LJ!RNZ#Qk_T<0%Kf1 zkDyta`zH(bgDM9qDaN>LQD<t~dbVlu$F|gHCB+z*tzIle^^*cUdM9Y*t5``f#$_u6 ztZi$Ho`<KYo8CBANioJ{3*$7TOk4DmAp1wRwMvRHE?czXvu)jR#fBxe)OAXVF)mv) zjJa*u4|2FmNioJ{>j;;vuX3M!&z3S@O28Q4<h|}p;DY1rj=3U@O5PuWn8??ab;h`U z9zjEFMj%fCzl`pHDQPG8VT+O?jPU3^&1UGNO~JR62ftPC9ic<I3gzg~X%lT>VsSOS z08TdI_%N@1s(K|&?r49GV&zL>x$A4ZwuX<hOC)a8ER!?!@_kXYm$NdVjzbH8j$a^M z-{G(ur%V!~b}v0iG;g|CY)+~dD@?UHYC%=1y<n5=g<IM53fK`|5%Gf;Z+XYwSzS?A zfz#@>V!F=S(u#(smla22G2M4RPVH;fET1~TQQWlKWS=5bJ4^-R3a~b@LPz@r<0cdq z3Yhi_dh>q4$>;#gUe|BGfZllO3Muvr2Fb+Bg8J<j(3tz02j{oWrupCB)4-9wuhYO$ zuWP=N0wf1NyVUn((?H`0emLs;hoyld$nk05sHYyC296*nr-2&{TsRHfFyNM_fg?XR zrGZ-l+z)~Km%>u#$Nux#&**FpJit&$wV%-kxT6%7ikfh!!~gR;myf{M#sA^;`0_ez zL{|U%3v%7)qz3}6F(aTG-3oRZn_@*Rp&vKX^`=duHeprSNpB3`Um#{|D%ctQBHuwD zP*Hm5_nVk(?A@x@Y|^&<q$rxvtRh+W#xb*MmR<Ga8-1c*yb(3F=%cpjJND}t+w_+G zL-m@iBoQ0cf|Yj?IyP!kbjQA#O~Foj%f6wUo{>lo*3a3ze%6gay78sn6wA$*#i&t| zn{S+vJ6>;jD@X7Cl77LaMFl&taiBMLDKR!hkU82#xM@?#s7<8}%~xdWjl-}!$KttA z7SH2&v8=w(3Ni<upn79{7we6_RD;bxtw`2dLeUIJR)GJzYba`s6rLMD1B*p!W65hM z>Om>=5B%ZLWDGT@3_SWv!lzeM?o7tW8j5;O3SV4!C4S)RwM7~-0@Q0#I52qIf@BPN zEh9iZCWVdj*ZZVL)=*{#v-yn!Zzk)JnLPEB6wa8k@v&r#%-c;p2anxwPclYk=~SW= z?y3F>7FXVU$()>eM+*P7bJm<>45h^O;myYkf^n}NnQv2_qL?G!?RAMz_~NrR98PQm zd%Z@rje`AZqlhrD`Y_j7rz(#9f~I+jW54?80>!b{bVvvXd);@P;@E4tpD2#~lA_-! zj=g?tQ5<`1xJz;Db?Dy}M_z4&mEc%2U*sS6dQH|EX02OuR3@I%X$};hDLoynHF`bX zE5nxRMXpDXwZ^gdX3e+fTwE8gUUmk0+(_MY-1H%e=E~9wTR%8+eC1zEsqf4Ap0)ad znVCa!x%+F?3cP*B){EI7{Tk81sa(WAJv4PC7Sa#r_*S}Uds$*>yk_N6r<$5YH5b(^ za;iyUs2^Q9Ceuov86l@E?4&9Fn1Tu4YF;^Z;&^rIlIE3Nd0sgZgSFX${N|OHsdACh z!8OIaa*qe+H?O35!R?-Ts^7eg>cG!|`-8%gYCjzHHID=HOd7Zsf!UJ=?rmT`^x{18 zBI+x@P#BOLQq7Cnf$Og3zW>pA(f`JM3jUGrzdtR~#x=Ln%><cJU`k-#GoUU7_Zf_B z>K*_MettZvKwcbeM_?im#CG&FkO+h_18r~1Btj@EV%n$A_+Q?LRW(O@EV23@$paS+ zp&5MBo|?#Cp7_nrlQA-hpr%5YpFP+O86?U%8IeiE;W09aNX9^w&mc+nb<7|wWwQAd z|AjMGaqPiunc~>PRD<H!!_-}hV-J!~D~=3_7`V)JGN;Qua8bFsH?HihwLMA?V_X|o zGV$Rl2`~?j?frl)MbCAhz!<F$Tq^@t6u%U%sa%Q!TI%QjivQi734p#|{U}g=NKd~L zqLInPRKF2P=9|BcNc-3IF15UW<QSY>k(>~FizPX(+n9pFan{xch>mtY#!os)!R_-k zYvER^q!j!{sYMcHUwuZYX2iDG2&QP1g0cVkRq7vMF7Y2;r7m0e?{~%jb4#dZPf<uO z(rpY5%c$b#e;w5p9LX9h^@VCn{{WrF+J-6dhpOlFt1atBd2IXCmMwt1>A~@w#<34g zTGo41(bqLvxOp_4zjegXTIJpo@JLjAD4;@XVZu2c;6wa<=tr6rhQ3q4S;w#!N3G$W zi5zWRcn*TcY{YYyEjO7|<L?J<1>e_^`yqaFsinZZ228Y2B&mz`!^Od$56ljQqv6F5 z_jm9!CTZGx_)wtX!w+{m_$Oj)*rvvZU<%waIP4Q(D%4Fj8i@S#VcDv+0&^MG+!Ru! z?;^zA4@~Y9hH0ttOVf)&V049}a`UrG={X&kc^%+>2Hav`GN*z-pmOxnmq3Cdz-)*x zjPJGk;YiH`(=_cPd?=*KM-CF6QH<Bsmk5pqIX`_=<?DdCL*Y{Cqv!{5`CQ>r`MDCf zyi!eT#D_u<A3wX*;Qs-b{?iGS8uxd^O#x>342JQr>!+_2`MnI77F}?u>{2(eUtt94 zpT1)d`2ldDsGy+UHy<=<90bhx4siW}n*z)k9pDB5cOEdSI>0p`L2H5OJPQH{)Zh5| zWi|Ng2@}HyA(dY)L0ld%cPd;azWeEW68x8exv2~ULMq%Xh<h5CbJRviD!Wvl*8<b5 zaH;Cw`M|vlOwnu*2&r&aAZ|7=+dIGwga6(n%xR=8bv~X$+&EyqR=6Jc?&lZ6B~C}* zjXfy}sc_Y>yAhb7X9|v%DSrBX1O5(RE<H<dsr>v9qJIZW<=KbF{Tk6X12bu^;8OKN zCn9|bVD3CeaH;Cmg^14mo~GS`4~10aOXJ6%fEjx(!&2hNFXsUBq}nD+W%o9y3D4KG zzv4q7Rli2<{DkuuVqN_F+#RuFfSataNQQ5D5UvE6*&X2M;dJK!(^w&9Q;mZqz`Y2} z5tV{VmEX~bz6F?8g-hjU8VB1HMl|~8BRhasE-civhpGfc`SSA%AlmRnIDd-|g;aL` zin!kbv%Z>PDf{QA5&f3J2-4rKhV=b<F+SAb5mMEA!tDlT_macoo<elD8a$X99}21T zQGay^m>a&&Fl+?)rw?74c0VwOI>3?qpbJEodG+%%;fADvqwaASaLW`nRr;!cGl2O= z2e?;&>#-DlAU+i6{DfcnsQbBh8BQVMLm`#jyAU^Yxu$Kxhe9gcb7&B60CV3(f}{Sy z&u%;T1(%}ly-aZZQ{esyey__h9$X=~!6|V4P+vM<iA|n0f=i_@hUhPVDPAi$tKNI| z1gU?&Kw$)leksLS@>RgqD=hhiaX$Kfk*2=i0rzMJ`e+{eYMT1q1Mbr_^!2{V%&GiO zmEWU*J5ga%<(K;HS!wE<16)N1`l$Y14$O^S9Pg#u>85h~Jur`Zah~!ZeS3iU(2MiY z*S#Jm2=SqiD!)`76M!l8;(YW~0kgu3^Q4dTH7N|)rI4yTZU^q(4)hIy{N^<Ey$#$) z9q1bfeLdGvs_c*|eItMytFRe>r)nRw)6{n^aOZcRkNnq=roLN%`$Y%(sJ=XvroLUk zz21R7s;6J4sjq7T4wU0VA(j6qeFX}`KwMIl#|+@+q@nLZU>dwQpZfeuV1Dn#`PAp_ zz`W+g`RF?YOqZ)A7l+I52!-h=zmtF~O+#N*n)+4&SD%KyUjXy47w41TUBJBV#rgQ} zYhZd_<ME4+zEQxO<i+{uJ5ymg@?SM@7j~eJ>htw!>ia2hcc-E6nKbq70PeLk^c_l5 zUzhcmx8p-0RsG9D+*n}F@#1{SV-+y<UYt*P`~sLicyT`ZUIb>Z7w6GO{qvU!L;0YP zsz2!6h`Aj;6jJ4v%C|^i7>G+MeKUZY(}BJ$$X}SIzKeltNJHN*)6{n#aF2ALkNo#a zn)*Hj?#mAJQGN$pi;E+q^4~DvMk#En@}TrZfvNQ3eCo@Uz!+Yfr@qj5c`q=JdT~Db zUIpfDFV3Tn@*6N5nFX0Dzg>arr?7|1Zvil~yf~lq)c}+5;ymf2{N4=AFTFS)eJ#Lj z_u@SIsC~34jG60H`TYX8jOzrID!=5vqZOtjeItRJkcPfFY3e%{xbr*E*8_=aNK@a9 zz}?<~KFaUoY3geQ?!^xDQTzBXO?{b7I6Qz4g;eE1^<|90Fc6ni<vSI)Ssm!3`C3hy z`Ys2qF%5lpr>XC8;5K)luLsiiPMZ2Y2JY)L^d0#F({u7amH&<du0UZ^l?VCnG+?T| zIG^@g56tymoTvSgzTW}U;>G#sdmWfIFV06_*XuE^;zPm8hmXD@U}ku6KKiPGx!8;I z(f4Cue(A+|^ih3o0cM96=cDf<U=De49(~k)2i-t9wL_}%JsP+Z71r{LkG@%H>YD>x zMF;w*d@oN^-;KcCo`$~1)71AOaC_6x_hp*;dfo_M<3k~p|0usF0W-^s^C{mNU=m)O zr#wjC&A{C4#rf!a2ACaQoJU_a^nC<OyBFu9Z|F^$HWD8Shs*B_g%M=x{`p+s&hJ1U z)#rvZ^)&(aUmfTp|2+cCb6%WJe)j|OnHT5rAL%>dX8e{J9}1RVeDsw9bD9_D(MRR6 z0+=hkI3Int19Ptz=g~*$+YHQJFV08bm%wEHkaFS3hesc!?-*bTyf`0yrvWqHi}UEC z@$FKDA-fb(^;g#bcXJ2&`a=E>z&zu{`K0e{U_SEVJn5tS_QXw#p>*Q{;c(?!1k4OC z&ZCd=Tdgpx5SLW>y%4y|JJ3hz`)Qi`?gQ?T4)jrbdnHYMuK~Be1ATeW*X2i;v*AM_ zfKRIYP6DP>;VeIU{731lQW(-lA(g%hfLoP@zFX4NcRO(RcA&2>(z7{DeS3j>FAaT} zKgKwN4+YCFKK1z|V2ZsskN>E?R04CM7w4nzdSHI)#d-A6{Qgmeq4ZHmRUSKld#wX~ zRKADO)R%E9&W+$h!Sahw`c70BL8eY$DR8HCppX2wB29f)0%v&jdCsL#d$>1AUv|>D zv|QkRlY|Q=;f@3Dg*0)WrGYyJ`iA@$E{;IY1oEDn8;SU-Y2fG_&yqB7A>iuMz;y=h zrX(DmHRbVhCUCc=fja`Y+mmp~`Rxka18Lv}0{3VdxFB#ll5olS=mXp<Nx0<nQ9F7s z4IKIJqa<9i-Cn?bmV`^T+a0)!pWxyMe)WaM!Cq<Lx&Svg374F{lYl!q374Ec%E#O^ zaOCI3Y2bzdw>k|R<>SXmxa54C0Nfo(xc|^IxE_V^OaH^Csm+HU{`+UDk$4qoFrbcA zJBkTv3lymDrjWx|yx>y(53B#>>i+`uf2I1rM*aV}`roYnzoGt%EsQH{Q`6R{|IO;Z z)=7YC)PEkVz*<A;q(F_I0(DXps8Ld&N<+cSKsWiyhu(;!%1pt`7)?GXP^UwIZZ=cM z;j4PU8)!4*g^C|m|NqYc$`K3H|NpB2$`NbS|DUV>&FcRf>c6I{dRYBmqy9Im|Nqwn z{;v;^s`7uG;Qv=g0kf%p`~QJXoiZ|l!OYCgox60&%Ib>H4WT<i4}_j7^im<DLbeLM zJ)w^$9N`IlJ)vI*p??QqKnG!92Vu~^83zBG;mCh84EZ<1x34h%5@y5kkHvhwaw(of zt~bWzDJuE(_#F~fBcTnS;9)9>Q`D0?=_xB=`3dwsidXE=hTXzkx0jxq5{~zz2aLvZ zb^J;?A5R~Zhla+C?6QWPiT(#-p%$ik6znY6%6ekPOZwV&nv1RKr#H=R$5UW3^d_Ft zg*F5OZCSeUA_Gf|E#dX?+?<%PIck{F4pX!=`WdE%nLK~X!M7kkD)SMhXn`;TqiRqq z0F}eMlX2a^)H%2gU@DI5t4z@yBU*L`wcBwW!?F*8`jUC%jx5V(IVzu#(1ruXPI?B7 zG2|t^VQ-@I0X@_*<fU+E!=LexR?bKL)Iefrc-`mmzItOto;-{d4pR@A0WaUnqeYdZ zZX&1vr-beELvM_~z~0)gzQNM}B6hy@=+}bg1ECi7WYO+K&yA4NOh#!zv$0Fcv7tF} zq_NBNvTpPQOp7%I_vpr!=rwS^rSEt|+zt;1wIYiu1y#T)Is;S&Q|E$`^y-aEbMa7} zc<w;G@v_{U$XWOueST=e(%c16<3Neju<*JM<2h32wD<r{)4Jw(FMTsl=L?$mH$WZN zK1pxW+$<xURevxLABLo7Z6=#qTle~dof5q^XVBWf^t9f1l%s0RK-JoZs>S(3)ylG~ z)+wa9HdxTyHlQ@L;f3(}rMWpJ2I?_ASy!x5-PVnzsMjc~a^1KrcP`cN$a$@!AS?Bb zYF30jFdNh;rY-?>0#mf(EA{D@prk%M1L_ox<tHD9VSP`GD$t%XJhpd)j^`Jxq^IrX zm8_5D=9C#*@ZcpK4>VdWiK>4(d~R!W?N?^&nU<WzsIiT)p$*sNu7NdJcn-P>IeW3( z)o4n3Bc7K;kK$eVEG)s*FlFVNP0+&UD|~|dR9?x%Jbaf-;P!`hGG~HHY2aCrvm#V6 z;jWL%jE^J6mWZ)iH#XJ3IW<vKTF|ba!pS{GZ{MOf^@FTN<r3Pk4qX71-MUTmKiU{* z%S8?3#M74nk*8ooi|%@l>ZS3jis&3QI_r<NOISfVQRNm;ZCj$_xmDLtD>mAU)|L-D zhu6Fl7@@U?wD>WnXwa1i7PPlbpsN2u%U4-z-$IO5|9&S{+%{M@uE^3G+7o^2rvwrq zV3@BrPDhJ4_(dz4QhOZrfSXrKTi^EQbfd>^y{YeRy<ux&5;gm7M2%tnB8z8Tp~eoS z4w90G+O&XL*Gg2RaHJw~-g&JBTj7V?HApiW$M&evzs%UY9?!6%GRZ?4xD`nPAE(;Z z#;tKGC@Pc;Z3eD`nWEN6KlTY~%Rr4|>RC{QO#KbiP^SI~O4{mRe3zc@d{DDEmU|h$ zMr<}%Jh3`z?9-_a`Z(T|Q?{--@jWJDO~vgo<3OyTHBqh?y<R&@Z}{+0s6`p?(nF=& z#VL<jW!I#)>qXmE4J|F$8ly*8zZ5l{j<(Q6Z|scr*<&Mh^KF?M`?DVEn&8GlYLsE} zDh)e1Xq2>smqtl-R~qFcQ1tt;poSknDVJOYYKk+f<{(H-Z%NcRC|RS2XlGI7YS@$* z654=PiBds<;5pdTJabgW<45SmW-3yo#To+9)l!C0c<zY(Fs)6&=No*2S}m@VBqhd< z$R7d)TOr68%JF25i98S}*vUNV8>jiC+bkE|_=+B%Zk5OxR*C3RA~W^+LxI{7)Nn_U z$Uv(n6-j@qNUU~%irn{6DT_y`EMyX3K3v=$&w3+H3WB!$q#*J@NkN<nO6n$MUkaiT z)Wi4$we@Gv;1SEsnseq^XGhM6oT+-2yb@ys09t9mhq1=r=B@`BLq}8puR!SPH{cZ2 z$5Y%I#7WYm`zV>jlbg`h)B@C47cn-+nogjuSesdY@<=T)3<KxPP)l$mHP=4U#7m0a zC=Hdox4#J}m~DC}cMYh}u&}mxacG#Fgjc=6Ok+qMjs4lAWJsPJA2IN3cJ46HPi#Sd zf%>#H(UtoO($w%_ICRTq%oU__BLe-fae&LN=-IlA(#9$6&qV8=4c33%srE)u6=~mG zQgkqM)flv+m|=P&p1Tq~$Yr^!^`<8{r3HHz-(Z|%nm2kJKoSm+`EJU52@VYGh5ct> z_7%2>I$uyy#GZ~HA2D7oX*|wqk(jh0y1HO1W;~l4_J(e0DcX`aK4!e%Hp0#8uS~{_ z6AqL$e257Vrhq3LFa{ub&zS1k@qC@l!TLj;LRZa2HdOgZxwU=I^%Z?U%u<<08hemN zv_)~OF_2uJNtqgmNBybcJ3^g!Fxq%tJ~tuLZq#@N{Y4)2y^;Bmc@^i)KbLzBs?ajY zxs5y6D84_!yt8nX*eX!caZ>#g-XAUApDpSTC>m{oT31|!IvSKnoC!*_Tx!K$ZN>fw zR53n5Z40h~dj}N#Iy0yp!d222z!ZN2ln1qLpoEug@s0!~vSTc2I;a3^nGZ_z$;%gX zBZ5A44;AlmMz-bF9w_jwGM(-5Qo&BHAo}KF>Rs`s1$sjRnGiE4f}#gr<C#a+q5`uT zRF#i)gGYSoSijgAGxkJ}*%>X`8Cv%ysi74{6hq0VzvwM(J?J$Cqg0{BHZA$QrBmW8 zniY-03L&%1*n|qS6*IJ`@f<G;Bt`Bn77vibvnc1$bf!<4u?<jP6g_@&BgS(ISL(;0 zRkp_qVoi<2iWT)l(zI2_z#`iblfHUj4OU<ahWt8vnrm6(0(awmp}L8y*fdZLOf3a9 zk-c{lsDI%T)SkihMvnapsFOIh8?Ik->=01>nWu`Y#MpK!dYG9;5P4}%9C08TYUxyp zS#?)@4RL4H3T>*mjs^89E8^i^JxTLR6okx`r5(}`rp5<h>xNqSx!*TIixsJXw4MG4 z>m81()Z>v>>^M+TXKkxAxy8~+CWS_iO|hmPo2c6LpbT_X5fPf04*}m?UExurTpV_D zw--_T3Jgk;)J&SI3x)1Z)lnLQq$%hIUZ%mtt$(pYKV}<dBXM0HwL@=tzlT0br7E^# z3E^7yWrjAqwDzlZNXL69Pw7T*N2{kcwdg0(d>8YXEnMU@a!ZlZfG9<N3MiVk1+_|C z>8bBQc@;`NnoSgqQCx!df>vWTnFj%lu05#XZp5mk@J76pzQNS0e$l3|-%3Cx)1eJ` z=>`_lSOqLVrRKW23r#rxTuxsUk9|csj8at@8STOE`>+vYYecMwo8~H>4MEQqsKT6R z0Znx*T~>pzS=0uscucsJFKFT_>xwf$$+{vAN*cnCKuJTm6O=TBW>C@)c7c+H@CGPp z2;n)r1}UVuYk9$5qb5vU(Ok?@X$rl-I23DKl$#$zY+eiz*i^U>OQQF&Jf^bH${Ie8 zA5rvCU8v0XMsGX^QSUUK6K?AsGY*v)ZzDEQY<yHw^igdv(zGm4KPeDupo4&g=ahsR z)`NI9QWC&OV{AvAY<V+-tLOUjN-!IyezgXxh{DF@VRSR$GUHh+X39okPveDXeRD86 z>d!P4h!p*`4i!GwO~=xwH$Cxob6_8u?B-w={i6Z1B@1)vSBpNnsK2p!)JG-8Gk79z z%NrTdrXJ6-y;)5|{t-iWgS=5L4dj<*$S5Ip1pHEl1Y~2XiHRoCp!Q>^HP=5~7^yh7 zwFo(p^**hlWV%W9{WPwiR5UUz-9%HV(+Vlmdc)3mKYeqAZ;`oXv8_izQt)_0@HXC! zK-)$m(nBR%%(*T#PBpJ>*c!+1<DLq)(sWWOY1k?{@CqEBVsBAXV``_Of(JAj%&0<# ze*c%4v6Xs_p)ecoO)2f6KaNaLSlL#@WZU>C8aLh0)o3(`c5l`jTH?dt6nftA0n8_C zk!Vp1mNDq*_n7bMLDdQ;7P0sBrq%9kiY{cy+@|P4y|2}uu03Qf;ER)+tvQ9^J&L+P zSfb}>ZL7`wlAde~J$tZVZ`-B+la_x*mIEkK-Z`)b1FY>a#Ps5|fQ%G89>5da&RZ`) zPJfQ<X5uwf=BCImLCL1b<DjJ7Zv`do{xwjtWOxUZEEzrlB^xTVY!%rFphT9&7Li>5 zN;XvLKs^j8nuNHv>Ugaxo-z&^t+FF<w7DbD+%~x7P!@`2?c1~;&@|^8hPDNDV@8%L z=NOGZ*w1@0k%@&-TLzp$!#!%6xsAs?DOE&S=7d4X!aD{^yg|L2Rg>d!bJV58=Bsj? z>#ji=$dOfpTpL|x{WD&T8O2EabBR7kn52nDKu!))sd8;?=p6xt;#FFQidSi1loVEh zk`z)Is<etP&0Rg-=ZP5mXlfTTA}~$MPR!C0{n05Vs>NVqaTd7@J>MC$A4db$(KHIJ zj2SOt6v{8yNi(ZFq#OOQtfkwg>P6fW6B5g9LYDX=`;{2m&5dEl6aWQMPJ09B^W*6B zu*Fi*O0!kj_E-dJJp3u!BQm1=06eNwLG3P3YMZzI1HIIEDMlM{H2GYjW4DbmFp4&6 z)&ob$qTM<4u$cP&Fn0}jC5>mOe88^WsuxjJ_;xa+61m2NNK}?WJ9KeLo(yG@cpa1^ zekCYLJPkyWcxyrr*B*XC|DdWGn~U=xeb@;-w<Tx!quNKZPyw(Jg#Ph;F_q{=<uBV0 zI?A7>5b)3oG2@x=dh7(d3o7i`S*@qr26jQw>`b;ERWo*)hFm0zx1bJVd2>lFk4C6M zl#2YA@hnxT)w=Nt%8qKCwaqGZkJ?RA)ft0yNY$wZHI=Igr3f1oOR?v9Hg9bsJ-6kq zL44HsI7-`MUtwPYLr!Sj-C*k255ophXx&ffi?J(4Gm)qvw?Q0xm`&x_2ivh~DQ($O z4T~Ai#f&F%Z(y>SD#WcsLOKtXB*$FLVm?kyY=U0&8N4iSe2ayq$z-6+c#->Wi7`cD zG9PGdi!g<GQfu2p?7%8p+bvtz)q?8^opqivpGT7_+i6Rv7-cu}yo&Q$sdCEZ4*l3t z3X%L!&d&Q2s3NAaaHVO5n)51s-(s8JTGpA%JNa+l{(xI%QBtvwdRcB^LA!APdp79k ztkrGbE|?A^y3?)!li2JtmDX?0((C^bNMOW+EOjQR@XC<dzBa$2CZV^LX>=E4NV-;9 z=t$Q(859j<L5)^>eL3?pL4}w)1C-3R>OjdVh2~wf&I@Yyff~US&HH76^%$tn@d;|1 zas7xXY4iI)qrRm*fLJ-Qv%)I=U+Kb+IiuvlBP<uv^V)-2Di_kui?}e?$AzD<K62qd znDTTqyywo%+pL*s&+JMIKF3|ImI+Xcx~5jo=6|#DxY-3C-cYc&6w8l_g3m+4)`+C6 zNsYd}>{^Qcd}lo0c&6dQ`0)CDf%p-)Ar@-*Iq;^Twmuex+ALOR-SBKyr08$8ziEG_ z{_Bj|o6Q*WKbbBn*c&lE_ik(IM&AtEK9ST)RO;(ntyc1)nhW`C%k${P73+DLxJmn% z4ocd`>7b+qd=JzCe1h6STt8&023M)~7lQgH^Df49I2Y;7prp;Tf}+WGP}>fwGgGgE z%4CWvPfw<3jHKry2e}%FEKMS*I|^#&;(82IG^KnTSei(hgO6P&)ZKFQ_-gz^j~~zG zJYrVfWn*_pVha<UW%%1SO01_bW~#9hyQP0-yLMxRQpd=N{>i*2Nx6|J^e9j=g${!f zk6!>vJZ^xZLh;XASgkS+o3}-jxAO0jx78|d7?CktVS>dOR6{a4YI|UDj>gF45}M87 zCQrJ#yahRI^W>7}+gAP#>c%I!u|Iy4S#bTh;K;e$<<nXQ?@~4A*~oD|?jG)K`_?mc zOhPdKz|;eU=xry~OuaYKDy26Zl$2fs)GfS>qE;g1csVF3$2&p2kB?gHQ0DTn%H<`k z9x62#sQ>?7n_|h6-rAI!4No%%!ez47$pIx!odrsqO6wn4Us8u7>&pgEQZ!AVq-cHu zN@Sk_C9<!95?QKvB1;{MtWA#u^)UEJYg1LhqIAO?E2)p;1zaIZ3_UAS|79SaTS_;K zHit=-*47iePKj)MMa95yuV*ouZ=T}L5#MmcWW}{8rMe~ci0YOkyBw4xdl@Lw;iyOU z+nB%nZdIOcqPx$f@OBN|+VZSW>2{)|&2MyAiCA@m6z$JGdy}u6MlE<xBEc^B7P~Ll z%R5Q`7CSJ<@(#@YA0jnEJpjtwjyaO8qvP)*cS6xUTlay#L&D~Kn}jv-1mC9-@F-y= zLzV$}MOJwUbwrMh95;?CinI;dxRZ(!1tk@Q7C}<KX|gKyn_MDo<2F#zHXZ>bvTuPB z*>6CJY!6gpksWEZ4cc6c;p41=%Dr+=yT9pUcco%({d-dr<4va>Z5}V7b(hZ(leQt| zNZQuNc=0jV)bw3%nLMtWSf)M-HieZqPNIiqY?6_Hs;cC55GctjEfGg^%4rWpj%Lt| zl=7OP&BJvtQ;TtxqZyZgk`>Y>+*P(tYw-)oWg--LGz%D>H_?h>rtKJeGUB{79*!Ar zmKq1?&`rxnopIzQ@+9Rey6fGDaWGo{?l-ta8(H(7EcXj=WN+UWnE2u-%Vc%u!+5pj z{l4wk$r!&wN7Fdg_>>k!@@0^D9tUR#u+$8#TMN}~8M^VQv01j!hVnLAe0)ngriR<s zzQ<c=XR9r=BXwhb7Hz=xtG`_1Gd1c6NMk9`yLlJ-Wr#^b!E&vz%-Bw|3rrB2OV(q# z8#O4NH|zz3jiyf0(pJ(~y;?UO%3Xs*@dUxVtJ_M&AscaXLCH*y#?Dvq32L;SlFhm2 zK*<{a4N%h8(5%s3?PuX20*$Q&pHu&gB+kXGfhNV@qdnzgIZ?bDi1B?(49C=%BPlHB zG3UJbt$dCtT*#|}P{Z$FN-|?F*Um=1!s=jKF;30IcQAtcP0|c+F$1#+-Z`V)HCl<w zyn>_JF7!JPXCJie=rmm2B=jV_t;S<2_12<yPz-&?T-A$Uf=W9%<`RZ#MWVZFD;Ql2 z?WWLhi>&7&vr-ZhLCKclX`ra1333yW&f*FSM=M|{iQj+<bNzn`lyoIjg3^_|14_D* zPQb`8OJx~l32JU?z+L+#Z?@;?O%eBI`?@Ts!0KsT3;l29HrE%FG~^+mq#;utq#+*< zN*ZzuHx25)%vx2Uw`1G2Mc=Vc?~YQU+k~AgDriwz7L{#LIePaNy}elv{b>tSWz=Oo zM(Hs&wb~uirdDi0UVNm!k#0>OTp4R<-UyHux}{mKZ=Q;K=1sveih-8qM}vsb>koFR z4Pt8WwWX$g8^1vDi=Fy0c%>uWYlMx<81Az?u7!bzdkV2tc^d6=X5-oWy52Oi9jEuA zct7J8yXoe*a-iM2iXXiP_}VhLzC?>!Ls$I*DT&D@sJfN8YHF-#TixX7+7{{}qHEuz zd+lXKyDq}Lb2+eR-SgZ%tEoqKUEPMqZXeyA%4@|9dkHIJMO!ZFf+ogXIR$cR(~vCv zi<e@@?2Z-fyeQjN`BJoKQ|+#Tt<k1>GN@;4(u;6wXxa|skQLBAxD+^TJW7F|1xgBh zJ}4=0nkcR3N*f1t9aD6dax7Q3+b!OGpswNAouK5tFV!r;@lFG;M9h^14qShyb;Wm^ zQk{pCxTaL*`j$I6KDLQj=zcCpnynq6Gn^P-<+wI#z}Yyfa|)E;2<Q7a!g<|fri~|F zr2lP0&7Pqx+p2w5Uy=IO%L~c3UZ&f(UeK-Lh#h*t7ZP1~0@jwvoe?LJIveMbm}mJ% zAuZDB(8jrxt`15{mnOeby59pOrAtRJWL*9+C>b1n2}<Tet)OJ*5?!R(^5^__wEUOq zzshKu`E^OCcx%LH;nqGdf}57k29Kjw^)2qEzNP-l&P|c8Ahu<CQx960X!T!qsq4Z$ zKwCzA%h!7Swst-gfcecaFGZRn0e#o|^>1Zlpa*bGrgN~oF30ktgq-{_?k8uK;HFYW zYpJ0Z(%R$H$mVc9_b_yvA9sDR%-orfyO21sNgL3Ea4-iW1Zz--W^vjF1H)-D4mwsO ztx+Q!#tt~$BiBda@I@h#)*fjL7e<Q0`IiSl<*&i6h8FJ^Ys#d273`dC1Ya`il~Ftp z+g_LF8pW8(VJ7=RWAQ*$5BM0S(-g0R+P46q&S>VN!DCHN+fRG&32GI%9%PD!8mbdP zjd~fm-Ms_UAa32tV`f{i_kzNh>|+ySH_i-TR?zYueD`@Y<6wy~1HNlclx?2Tf$NUb zoA?F=3I*FBv8LI1nC{TP&Y6NI@-aRgNaW%WTm|k&!gX6L*X2iW=%aB)VbP5I%QG5h zkl$8&{C2=Ry{Y_mgz2~Krr+8!m50=@ZQnn0Y`e^cC&Xja_YG#B&>~1Y_9Q6r7!A(8 z9^>96Y91SossRP3Ry-pz9nrV$kI2Cs)Fk*76)gh?F?!rsGHG^UVn77vx0=qzsZh*< z_^_8$yY?A{#_U4!lj)?!Ja5je8e`?$rvn*_jL0lwDkzy{P_?;%JN8;obOI}={R~v< z3|luF{t}Tx)5r*&N6GlA)Yvi2=zGJYvkMb_cDx^JnvqBM4^gAJ*#FzIF~CYP_kNt@ zggePR7Fh}XlFsU!{1SE+hP;$GiVp^&8h0^I|DhDj-n<cu0Q^}umU}|&P3)Z$K}lu7 zv_d<IjbgEbKmR)wqhVnHCYv(*RgIa3e4H@k87;>_wVE{ZbO3R*I+D5L2v9ORj98R; zCv*=h3}xeIApH=DoKZ@(Q15V7D0^0RsJA{alwF*I?|Jy1kMD)}9>#Ya-^=lR?k8X@ z_yipMzF<c@<5?{riR%VEk^q`C9?u!2N^=}j_DHWz)3IIi1Rag72i4&T?3N^&X0KE^ zr;amT7s}(#4;^eMuP0_@oZx5iFE2BPzaiOqJ@X|Z58SYD3&ExFjna>FXD$#n@_^(^ zgA%JSg8HWVOzswyXE+&rc|Ms#i{OXw32J?C{UMh(bpq6B1~n=NnRAZ=bu7DqO5_U0 z(Kee<=UCJti&|k(msr%*7Ih0KvG!9?kKz;Lbo`Vx)Ax6oM_tk5Ou<*$tsF~hJc)hD zils@gnt-8ptC=MABvJ_Wx~#(=9HBO%5#;bxvNQC{ZWj4Oszxa&shgfb1ow~SM>BMg z-S`rNzAWE)^{(%Fmv#iPddL0su(^8Y^)gPOU_x|I5=uFzfUS!CtB%)4;aCKQ487<% zS{!1Uzn#{Jp=o=t&mN_l;Z_cj<^{BVUP6PU+`z@+xuSInl*!DA`h1xwt_M|S*J;0P zh_xTA!P>*@Mhc$R8`tHo1gBsxOy)OTI#snkqZKC!%jxdb1iB36TUf8dZ_cU~!#IIH zp&KT73$*=fIhNaQ+t8Rny$cTOeVFK7vL3&t*}o9cu_oq5)?kSrT2~H^x{p?7d{$<> zV;{$lhMw$PfAEsfHA4uqVO=LuW?Xj_{ln|%+uw|~Kil>fTyO|5YW$;Y)YsAW7je*` zGxqm#!9Mwf#K(~}Q?!J6{F6%|YJ9Gb`b=+sp$$JxBC^c*N3^~@GjS<?%cC-eeGJB8 z52b-_;Oh0?1QWyQ#(;UW);xiqD0r5eeqjGu_zzrW;%Hx7_w|h1KL-CI8;Mp<-k*st zNI+Jo!2s7U5s5^>R_O<58PRkG-SbepFlG;h5|~0i5i3Nk(u-b5j5RyZ`a_|*Y<)8u z4?+L_hpFi64^72h+3R}aP_VT9zW^_?F$<)bD5?&ANeMNO`wR9Kv@gCv{R))tmt02^ zGgK+dFZf-RI<Sb+7)!M<Pw6f*o~J2OspV~UHST=2Z>~R-aoN55NtKy=W8GJz_$eCL z^+wLc{!h_Sz+qiN{PF<5R3=t<92WL-7`zz6YD641N^hFgzVRDcn-^_a)m=GeElfo= z(%5A>=IkU+DL5$-fz=l~*gVaE^Qm-iN!6|Rly+3OOd2nAx<6aA`?9}w>?n4{{(Wc+ zjl8mx@4N9GKIs{1cpK_`lk<I#Pjt&CRqCKPDp3LX1ZS$b5*^z#D^UMscohy9OFgND zmB>aK8clcTNt}re4iBQv#uP%NCmH2_$@ncLqg*B9XDS&DW-{8)y&<#RLJila$ZV+L zE?_*C=K5LURx{UbHN^q_v94cTH4F7$!`_3P_luw~vXN#HX5MKR+|8LR3G1G!FUdxH zI(-QpDM_O*p`wn+jZm2`?WYk2p6QJIgYvBg=N={j`DSO<NZF*$>?q&PEK54Gw(7`6 zbj_wi+NPLaJ>{M_vXEPDe1gc8G=)1WC$@Ften2LB(n+we>Lj?OC@6L1p@vt#Y;SKH zTvqfMjxkGT+}1@A45m45dn=7&^@oC?tHuGY8`tshrWZWVkXX}gxikPqjdSy(#s!5@ zqYf*zx2<0pwKD4Y8;~=1$oO_4U<EuTf`auuiQw47#1BV8K0rSc)TqtN7Rh{2e_-B1 zP&Ahc;we{V>^e}xnD-N0FJl}nk(Z-tWoWxWtzfDruJ>^)owazECFtb%L(HRJ{QZ%6 zXMuWzdFNTYC7`kpo2gv^>L|w1kE2B51{E9B?gaH1%hC<+KQYy6;a&tK^U&8py~A4e zfs&akJz+=k+Y?kHWV5spiVA8cffCL1gDLvW41NL)N>We-N@SOVx*V|?+C^4uJ*a-L z6Vz@7^(@Q&3e^2f-3#hHPRmoEM9XGSqGcDTYZ><esI5%>6O`D68I_}KP?DoTpd?3A zKpnxF%Rx2cgHtrPN<J<G^*r+~##QuP4T?shp!O4scellR0+h&Z2PLWB2})A`7N|A& zpuXepMW(VqiRQkb#P_+N{=}&|5tO8~4AfODQ2|O)dLbyWRuAfL9BY6QeLn>y`tAcI z`W^x$`d$WgJxhEDiqaU=J_9APG!GKlexOA5C{Q9B1y#=y=Yo>7ECVHJxeC-P9D6M& z(RU{(sj<JYcn^WP61Yrl8z`x<JFVEis@S0R4^X1H3p%*ntT_ZqG#>*>G>@`)6F~id zHO~Sin&()t^Hpq6TM9}vUkXYz*IT$I3wMh}{T$R@PQh<My~z}HyHe6mgOZYd4wTf> zw?W;-xDP<x!_>#1-sSS`i|Nd4uJ@Bc$@(h{susKqtpwCcrgTsjG8F?A7he4bb5(Dv z*2!=bekFx_jnCu1TBOCh(n?|7W8h#*AU>4)Q%nQ<x<ntKh56i8#iP~E0@2BEbz1f; z+Py2+aZ4+QZ_CM?N7*jH>`lgi`h)GElFc$dlt}Y_7@Z1*JP#^#-(O;3o7Ys70GClD zVqCK`T@tH!@Pn3vPf#O$k1%xvu5_n4s2vUJPEeWJNuXxHVRDc(2j6hF9M=s@(fx`X zrYdn2-eORBEKv_i^wA(pJ`8F<#5IShpX1t(sbAwNDYze$&a#Bg!6&FajjL$>vqkL% zMfdShy+P&R6Xauhf}=&Y8veNe%(5J*oX1SsK6ZXrpiskap^XuIfup-{@#e``iboC{ zP!WmuOyY0W`XI3@vJsu9IgfA}faC`G8IcsB6mh}MYq;K($n7NhS(V<%Ma;^rXV+k1 z8d_I}IlZiZ$Of0BO4jpe6RN~$t7JO+hPFzii=bPIrOZ1T)D!pwwG(jtJC`<XI!c40 z($2ysQ!B=m=6F)tJ(!vcUT>x<L4ANvQ2RbznU?@HjH#<Zy~moHK*>SMn?QYv4~9@& z@8H;bK=o(d1Gvg51gZzZ+XQL=$8N?|_IYU|<yGdrjw{uzEIy2^n*JP=d=8H0sB(#C zamiuJPMnKH!BC;lsGEZS4|i_@A60eskKZ8yLJ~;W1Q8`jP!xec!WxuJ7Pu285Eca$ zO+peN0tqG)7Apb<DshZfTdnqWskUmZwQ8%_+Nxnuzy(=cP+N;jE132bt#zxK-}iaW zx#!$-?+i(O-~aFb`TWi&bLY%+zTf9L%X80iXL8OKsIb;_<u(zGA+G20{x(COq&HF9 z6mvJFP$C-c$uBk_QGR7D*LC#0Is9vr^IYPZK-xBL<<AZag=ATZ1|8h^Zr*2yolko= zzLTDO;IqS$ItZVWk`LhfP!}MP0F=@t`GDiLH@7D5Pomoi-_Wut_6`)Crum=amB@P) z(Jh{6oq?;k_0C01$f&_Z#h))@Nme;xA97PwBlZDaiPmyl1@3ahM5A4WSPC~i)v0JS zy3s{5--%dnyb`VZa21XAC}Ol)OthZCl^iwEdKuSV96N$5-2;jIn{#sLt`>dQemCcZ zeq#Moj=7$uMaFQW<JW8S<F(V>zg<g>`O`H#f1sO-o}cme@7-WUJVT>Ah-YY%5R=c) z5F-PLRv;Pw`ks?yCC}})3Icv;Meh{mB4-J}II$$e*0Ky+0$7caB&*xpE?I=!0;v<` zDVB&4i)Nt-RsaKaT2*%|EeG%8QrO;I4h`?~6;s5Bxmhq%yIH9@$yVyzq*dL^yOk1& z{`KAo=PRa&5%XHX#Q*gtj}v9%en?Vi)-1{<V#J_%ae_6pYZt34a!A2pP^!RD>xo!8 zVuC@arFc0ZmhM}GZkjazN4iPxI!7_yW9hzK>J~63&(v-LZRTF&nRH$u2z-sDmsST( ztMx#uC0S{6MXOaK#R&@-Mb<=&to=eT2d7$ttJ1B(^V6)sIlZjG^#hNebfn+@KCS88 z_E|113zZfTBQ3ucS_URt1FL#j1Lya&2Iiz%1MB-8?{h?GxYx-9-Y--dM2s{%CN!{* zcT;|_*u}a?u|$kmPYPBHZ(ZwRUaXiRM$A^h?3ZNqt4g-|&F^9LL#_3jD{}iM7kiOn zix{z=6KqdzZ+EdSQ7jQ7){BDGKgsGJNwNCFZhzSAKezW0B2J-;475HJJ}+X#KFBiR z^YmFW=##*a&x;uOykL-C>Jyz1OZQ=+TSA<ikf&(-+JewaI)CXXRY;TbwkYw;Bx@%1 zBvtUs`RG+-k3zk&6UtPHMU2YyzF>2G^+bK8qP|dX_5S)QS8Nd@_J=GJ^+jWmSziK2 z^(A6dUxGoUr;)=6v2-67x+TP2U)sL5AoP;X#~h`2kEQoBQQ{c>Ok<uCDpYAjj7s~p zV0t_<;!yCuSg}NmSY6P`q2KVZ3SF#9#S$@MB?(qif|ay5@wgaQ#PrP}Rw<T<5vv!o zhK@+JM!cVB4SS`lbs83410t#LixjKte9=aPq(Bo#!Oc*yOvHp1LY)m8PKaf%pRgw( zj$ZOlohK0^FA#c3CrwwK5KHeMQTmg6SSRQAKi>C9@BL}5Jy)fcr<5jV30@-*PN4o* z+{q$F`N$9&JhfioQ1HG)u|$kmX9!leE>^d3qRywe7)upH#E5au2^q^2L&S(NPA~=~ zTZ1A!tU<V62jPAlgnM_;xRZ{MIrn&SnbII)q+ycJ<|3lWuv{@jj2P!JV<^=|q`TF% zN{r_Yi`qtD=?)dKeu_n?`|)x@Ed7N-zl1n?$q#fMM2u{S+>lQC7S#!{^cJ76q$^ZO zMT|;X+F?lrmP#sOR8qn6mNb_B3*wek=Rw4%q(ZN^q_Ola5+(Kc>#NY=gpsPWB1WZM z?5m$j2afl16hp*_vCPMq<zmp6wBk+@F=Eg&N%UWMFnDrKqLr90;1{@9^ka3w5;0;$ z1S>J180kPcVVq)!7%{F848AXV;=V}5eUXCu0{2P1xGyZ1h8(3q#7M(Np&>@k?q<?| zw~O407%{&um~mz*H#^zJ`vk=nF=AhLLN={|oIo4R2-_k??3)DJ)AA(_1@Ds-OT>tE zt7cX8(CZZ!i@xL$wnU6rcQVU8zZoSNlqzuKw<1ROh+q(EBVJC3rJJ5fW4*w0deVl~ zlZ2mG_eP-Hvy@o6fB7AClU{m=<b+tdANh{DNpCOIu@hqH-X?Vmj8h-fFAB6-Gor3Z zXGRBl|Hyg+G)~Di=lf1J@J>G}6)i7fWMzk7(EWI|fV#bUs$z&3G4==s-xH~ry{BOI zj#+%Yn7uzOl<<{)B`@rW7_s-c*#5act>c_<o??p_v0oAFK1o)e`Ms<@IX$gD^}UXy zu1YB<mU~Q|rr07z>^GUsUj8Y0vu04Lz>!?U$jb$T^twl+Sh|l0-Q?x}k#5ra8eUF_ zrTcGEx4<~1BySODGxs9Tq;m-BzzMPR(sw`T!Q-^#RSp&Jd8#%=j4Xa4*yK6)2<SyF zMo=+Cj2K^ta`2M_QU4BuQU#9WB1ZKu7=)_F%L%b`f2(yzk}WqQo^HV)y*nJmc#ow! z5zn2d2eS;lRR02PS`d0k=PP(QA(q}`sTWztik(8|>Vx#QF<x9^>85Y)M4k!b=#7_W zQO~5aU8v-1EWIbOUS74h#+M8iD_^y|h*9kf7P;Y;r_bog_$pQ|0!K9<V$|}2L8uU3 zPKc%Zbfcsh5=tf2_O%6}mvnBINP3H<cZ4n}=HSlLv51RRph_xYRI<^66=SZk!o@69 zOc5hyj$qRLlrNxR7lT$tqAwLOVoYJi$zyw3L#l4IhRpx5H6-U2-1R@O%qK|rMhw-F z0mdxWLTX>=PFE48E8QYSy7PRw`P6~qoxU6rxe+m9Ocx9qd*m9aKTuAfFL(q)#E20V zj5yC^-0e>PWhK}mM(nxFcF$QH2Biud`ILx}PYDL0_TlA(Sh^Pq-4f#HC7;svwFRM< zbiVH>RY;R_sVMOY)_BfuEJ;zZDz%7FxvGQ)s^xmI61{_<GR#yA5hKQBf^mJab$z6# z)jU7d>V>C_z3P*XCmrclPQ;a9IU%exh!|;DB{Z;4n@>1bJ2bqPD5i)Jb2T%qsm^I) z=S|5ds;{rB&uFNQL~3f6X3U>gn6U((lVe~iR;;M2tT+LzpssdFMnj~Y6jj$&HDs)* zi7d-lUcJuLR#LG7CRSEgWmIZ{35l(#vTo(d3KKZIVM@mE(PuYIp-Zw=TvS#P42NeI zloiaLHQlOMTvs2lBK3{cR;YG$#flnf5>bd&EG?^C)>ymTn%x)~RkvhReMRlkYLO=a zsA_1i%<3UYZAE=`ZAF8%s<D14E2*lfkE|<O*|;KNRaIA3tSgJutgN;gA{CK_vQ?-I z<e;*ma#^)}%c!iVt*wh>EUrc+RV-eCdRVipW<_;IePeAcRb5SOLrqn6#sw8CmV#YH z`4kGuR#vPv3$m)BraneX)zoHGM5@=;L`IyIY{~4p+k9?yRbwTYl4Z$=)Mc!wSy>aw z7%{vGlswe*s?jx7H(i<-XvYYYVC5~Tu854z%EDv#jY2ZIs=m51vYNh=vdCW(0+&$K z2&1d27dI}=oJT?os=(|q(&@wK#i&ym;GMv1bv_#JbmLMWOc!f(RYjzNKhxJi#OjGF z<zssB{aG>rZ@p!dFq8xQ!!KT(U%U&+7#S0q@xjW&i*6S!nJYhO30Y^$co%x=5bG*& zLPAqEdW54{*Wwd(eOhuGK2d%sbg?e0E~~9v)!5*aR_OT!(oD(kAfX&mKyA2A@#Gu? zj`k2~B{$6YTEytOLq-WBG}F{&BZeL!aqHoH2k1)S!{3f8aya69YLZf_&=Wurbbcs} z9wQ9IJC!uS8Vz@hWUj2G6dLIg0^4y-!7KC7$-6`ixG`M&0UDx7|NWu7*?tTaF(E(` z0LuN^^M5tRkD&*t34!-<C9A9M+ZPlX-L@zf2?6T1sg8SoxCLg(svAQCS3-a~X3{vT z{<0E3hCDDKKm!Kl=c(78IONYyFUC+eO%|$uavNrXUR!C5AuoYB>*&;%-tp^U9|}-j z2y-|k?Ib^jd_N&@7p~M!#SazXJ7z+=%SB)MCIsjq?a7GU_S-KW@MAy&hL$;$)5Oxp zmijUM7?T0@)N&2o_n}g~<?7Fvk+@RI`XBzP+K)joV5<;Us>6-Hxfr*QH_!Cdc0!;6 zS8A^=#rt3OW7zWoFu<56&Rh$)H$PNj;Tz;h!|&{p=f@0U3{COK)|;b8&GXwjg)!vk z6h`NdyvdIljFg1HFkGoL<9fG^_G74LN(hiP!u)7`*~fm&X^f#-BFwbcR;}}6hA@Uo zN0>u_LFf808I0Ki0D0}-@6EvzOhUVTV<=<j%R?&r4c|NTV?X9}#$16bwb!^?veEZ? z^-!r30#8fKo<&udxq90olQHzDgKT~9qxwhvnBk0Z{O~t_`0}vd))|a}gR+H&{eO}% zce&1F3>=FwtEOLcz2DXd#?XSD$~9pANOT|GJfFpw7jUKC;o;QNuJ-5W>`q|ljz|bp z!xr6*IcxJ{)blxv`6aHDpKG%oz0q%L6k{Hfn8tU8@AYHgcCd9HuGA;ou(r6?j~T<5 zQOFPZ#+oOF<9WNcP0`HIb2+ZmUT<a0Ms<2IV;MvJGhwzB-@4e38OInZJJ~8bXG@Ge zDw{F4<4S!?O=-7TemyyiIq^L>o-yc{IH##qBjJ+XJWnt%msL#uw;wZ+F<GF(DXj5d zpSs?UnZy`cOj5Zv-BSNMKV~vxs70uLS{@I6?f0=MjQKsT6dH=IS>VUyA|)X}<1LkK z(4cS7CwP5zDr3+9Y^%qayJECEx(Vp{6Ry-B?w|5Tkw4GpF=iL86mGpJT<Et&cW6R@ zs+N59!mb112;ThU8JOob?0?6P2{PsxTuD#Db%VlwOg>|%-=MZ1cH5p!eoO&lN+jmF z`A;75V^9p_`NaN%>gW(NoiT7w&d=YT-1q~(tr?7|l$fhO>(bwku^IC!uKn=(#{)O~ z(2of*<^sCn)%AiWF<5!)xtKBcN=)*n_do7$)0vE+2M~0x{^=JZ-tc2k^(cEgt~B<X zQ@v@QAHy{q_!Q|hYCiOE`=fpg*GzyOM3A0sZ~tw+AA_kLY>`E}FFyWcyzCROvaGFK zxe7808C+KJ|L8&@N^kxcjOxQuCr(pbNazO~P7snSeUj^alAjt9vAT4$P=3Us%Pm2k zBXuj>lBLy=>e|(A3B~CrKNQATPPv|zk_;u;BPA1*<V`8*tt4$yGKnQvO)ROeu4c`r zD-8Xxg2Ff@q4Q)YOjMFoDJfQx0a7wmNlurNp-M7JO3qc1$x@Q7B=i+Dg>#f-wv>!k z68c9A3Zs;yK}xceq*+SFD#=|^lCC5VN=cfMJRv1Rl;i~|IaNviA|<CO$;VPMUP-#i zuHqym=_e(Fl;j*K>7yh;DH)(7^r(tLp_0@}Ns*FVCndv`gnrUVp|6rWEG2`LWVe*$ zD9I5iIYmj@rDUX%^rc%4;cO)tBPC}kNwJjZd+<`9q}C_d;FDbMlico;Jmix+>61L? zlf3Ga{M{$%LW2qi=Z>R)6EP)OK1s1pQs$Ga@kxH{lZam;lQqZs3qH&{KFMc3NjI9t zad7mU>XT&qBq5)q!Y8@hC%MKaxx**<txwYGlkD?Jj`$>>_#}xm*)mFcl20<mCz;`s zobQt?_DSk}l52gEyM2;}eUhhql6^kO2R=!=Pl6}%p0a29B-uVmzE85iC#m;IuJcLm z^GSG<LZdC7_hH`fNj~>UdeKDF&@;p*$?{2TpQOwu!7sKvnp=F5yM2<!eUe>LV&gs) zo#pFNGDAt;m6GX7@{yE;l;j&JIZsLY(!(2sDJ;QA-7v0ENG2;ug%sr~*6EVfUrEMD zNuH7vNy#)NxmZf_m84!uf=bdXB?U@ytCS2>l3z$kKPBORU`Do2R+7CElc^-HNy#uJ zIU*%zC`p@?j8Kx#rQ}Q{=|amJgfL4gvTFDX36gYIn7$IzLrI29Ns^LeNy%&_DUgzx zN`hZea41odIw_f@B-cnuvXcBzN_r~E9a55_B)^i9R3&*zN_r{DOH!gohqn#M%IcMs z^yEhb>iHqTS2%7-W_Z@*$+UDvpcQ>LizT!$MaaO5C1WQ@NpB^|o<J*H{G7>=OdL;3 zd4$vPl6oev0CPwwnUF0p#AVF*iIWAU*pZAKCt0)_Wz58J;{|4@BN;zd>Y>%B$l*kK z*nmKV5t6ZF7U3Mcq(o{SttApO%8^Wz0*llM);L*qGASgo=)5{%$@mF5NJOADjlg7& z71i3ukz~t)@;}`$CPx;6H^mVW$2t}>LQl>FsG%nxBeg`9LP^Hu2veAkNtTkF<w(X- zd1$3*JCYn~i&BgtGa*T!cF)O%`8>B|+<4e}2kC_29F7~0ru&;ILH)dikyv4JvVoZ< z^$6Akm_O#mjH9yCDv;KL-K^1T^;b2ekR$|Bai!3>bn}8Sytb!LpQX?h`Nj+17p&5( zIV52g^}yLzChpR#B&m!shON1Zg@|=lYQek=W$R?gVvJ#Ho??-$<c+_2O0z~v7Gn%s zSi~ZS>9|t3f79%L^j5Z}N)}@bTjv9-%XP_pKmAOz&X+947`858mSd}B@Qv3@Qnpq~ z7Gn%s3k+L7+x^oN&Dtngj4^C2WR^2*|NF}!%THIfZjvm<7`84nY#r#|^}jUh9?4>i zVe2Ah^`k3ZPdvZz6wP{6vKV97y4bK4{>7$3&DtSZj4^C2GHjjllX+#Dbx5)pW7xXH zur)R9)sHmmeaT{sVe3+6QF~Fj&TXH2x@P@LvKV97Dl=@IJE38-W_9a{L<Ghdw#p&Z zepq<Q#hb>d_8K5rj4^CgFpIK6Ib444mFH>J*^<Q=!`5PE4aSwi+tqJ3O;om~N)}@b zTb00SpWnOi$zhr`Te28q*s5aIKr)0dr(t!UVr8pBvKV97ss>iuI(qD(cQp&Yyx_nX z!`2eTBEayME*w5p+4{a@F~+d9RI#WIpSyqGO`3I^WHH9DwTxNLy-fYaP-W{u$zqIQ ztH!W3{MyGiXx7t`#TdiZWz3@ci^AShPhNMfvbA5b7-QI44y>-jd6mDJqgn4u7Gn%s zD-?@tQ5|M0Tc1l7V+>m>6^rWd>AT0Q)vV-RqzONb!3(2<YfPynNx&)B=Rf-IMdv76 zgC&bGhOIhgIX?gR?4JEJYm8(u#;~<Y*`gfId$w<xW(6gSF@~+n4O_KUubi)0=Svo2 z3|sZga{7%6@4e_D&8m?s#u&C53|nXB&!4YZ>m`dZhOG#*oI3pT-@gouR&{uzWHH9D z)o9pC`R~(LXx2lL#TdiZYQxq)>?i&-O4-^YS&T7ktubs-dui4Y$zqIQYpt?H?e%S7 z{nMKDxnwcMu(i&xb>G^4yEH334T%VhF>GA{spxyj7PXgVoh4a}F>HO0S&ko;HP3xr zv+^a2F@~)xl`TYgzLBNs@M6hgjA3iNVXN1TUzKatI>};;Ve2ZzB3pDXk5#sAku1g- zwl*jh)y8Fa4H}_Yk4Y9|3|ku&3lX+;lCpI`vKV97+N4-yYru=IKcrb7NETxZTURR< zBG|p?qJ@K$t*<4EF@~)s#UfjepYqp3nl)H<<cu+FZD!U8y5co#%)7HSD_61@W7yil zEXOxqNqA|GW-XE|#u&D~&n(q%eEgfsG;6(NF~+cUjbW>5<kg>Q)}4~Y7{k_9W;x^X z>`#Yw>7(lK8OdUdVXN7&_2=uyG-%eJB#SYIt!otv5%!G%%GMW>#Tdg@RI#Y$hyOG< zShITfCQaA^5-)R1xsD`(BuYg1*)QJsbhxs0mSi!;u+;*r9xD$7|FKB33M7j$M!BwM zmfKceWowaSF~+cUgU^;`HA)s^3|l{7meXG6KXG8kNM)-<vKV97y3w#j^Fz&gK(ZKP z*t*GAuCtY`U6REZ!`2TCTg`uK?xI;oC5thJtskj!@m;y^k-If3r4JGj7-QJF8B*O| z1Hb(8HqFYCEXEkNZebQV9NDT)eftlZb-rXV#<2Bc!`5fr?is0BS4b9P3|qG{%k3Ly zsXDw%vKV97y3Mdfb*Nc8B#SYIt)DQ9e8Z_j&3a$57-QJ_FT)nqp=KrZMIr)Y3|qHD zs>e#IL(MuzvKV97x`SCxe@JzxS*4Q27{k_`iiHUG8@8&$h-5LwuyvPWQEjYU`^_xP zx<RrSW7zsBv)t`9L)m&jvKV97x|>-}xfb4Eb*X0kQL-3g*t*AOYr3+vPqG+e*!r1a z>o5BUOx3LSB#SYIt)D9vBGz?h5B?^kY<(_Sj4^E8t5{Tr!LLF;)U2LzvdI|3)_u%! z>hQqiXVY?(t<xooF@~-C4O@3jdGSrn8YfwdF>L*USx$erKL62|@|3NhWHH9D^?+gP zv6MCUX;ztJF~+d<OJ>P|isx+8l&vczi!p|+2Yt3Q>nD=M7{k`Dm?e{Wt(UKCJt4)6 zF>F0#*t+@2@}-*fnq)D?u=Q)7t)Q~?sbn$6u=TKED`nSfX`0oyKN1lbW7v8GQqf~m zI?Y83l&!In#TdiZql!g-IQ8{gf1_EpWHH9D^&7=P#9Deu&u986TbD`}V+>orRV=b~ z&6<YAnzdT87-QIaj9FA!#H#pa<yo2~c48IVWth)JA7_@+Z@gG`@2i@1pR~mo!`3## z)=LjPy;8HDku1g-<$A)f)wb!cshV|IvKV97`rQd^eJojwF>L+bu=U^>H)3_)6*3CR zCy95)7`C27f_M%<b!e7rm}D`=u=NLKId!;d?}dG|t*Mg57{k^dndQs@mfw;2mS&wV zS&T7kJ!ROMTK)7I&8n3w#u&DqW|q?*HdXfe<H@Qvu8}Op7`C1<Z2i~BpLEx(pGp>E z3|p;+ts5V{?9NPO>vxjH7{k_f!xr@$n)Q-oF~+d9gIThJupX#*@c1xg>mA8rjA3i1 zX=~S&J2mT{lEoOq)-J;qJ^MOC*-9LML<Ghdww{Gl&kyf;VDy`sH9)c$W7v9*Sx&i1 zZ`*WWgtB#(WHH9DwcD^oYX{9bSF#vm*xI9Pk<Wkl@~~?)t5mWWW7yhj*y{Jm<w4D= zmMq2?ww^a^O~32-KFzv9vKV97dcm-@C86*g&ALId7-QIaky+0Db?$>t{#CPnE?JB* zY`tXIn)bVuk7(BKC5thJt$nIoh_D}?soHCwWHH9D^|E2>o~Ac{uUYR%7Gn%s`<dn3 z%a<QJ^S-dM^-sxSjA845VXN0if7_*5sdDnd7{k^<W;tWZKR=v*i)Lj?7Gn%shYVXA zGbc~dtn(y`F@~*I3|rfJ|7M|PEtD+A7`9$DYz-~@<hW+lOBQ1cTdy(8@r@PxYBy=t zb&|yx!`ADDt(x=poTpj$Nfu)aTZfHul|6aQLCtEFEXEkN-Y{(ae4^#b;hU1h7{k_^ zM!DYY`sjLX>r=^MjA837!<Kb-c!*~8IvI%wj4^Ee2~s_eqPb0X<%c6Ai!p|+KPwjX zHWw^j{iSA2mMq2?w%%rz<A;wNUG^Kz3P~1Y3|oIOY@OHTz0sO=v1BpEuyur4j&D4< zbtt~_c4iJMC5thJt#=Gtd!B#p6wTToS&T7ky{lM=@LaTqvUQ_mF~+d<o?=lQ(sNPG zdQh?$W7vA1SyV0x^gU6Mvb9UH7-QJ_E3kU}`t<R_Yc%V1$zqIQ>u=0*`Y2j|%~rOK zNfu)aTOSy<?s<LORhpGJ2#E-cF>D=$G$Ako*8pDU<m3#PscfAlS&T7k9b=X=XZxsn z`Ma7mQL-3g*!qxJ?sAnVTX-DHfiZ@yHpA8<gNA-jv+5;_F@~+b8@A~A;VfnAN0P-D z!`43xTmQ~E=O)d1OtKhb*!pi~(fvh%zW+*Aw(xM817i$ZA3?5t<GD8uPSC6mB#SYI zt>esc?&XYmFRs_DuOy2xhOLhcTUCeuwnMYhPT>q%j4^C|!Yt=rK0ABM4VslHS&T7k z{nM~@b4J?Jnl)Ln7-QJ_lv%QqwdlEMPgRGrB#SYIt$!J|u6ybCdo`<EvKV97`ixnQ zA65=8*qowlT`pOSF>HNq*vhzj%VV0gRk9dk*!sdKSNejg{i({<osz{E!`7FEt+$`P z?H`);gk&+su=N$QoIZ+vd(cbSdRej<W7zt)VQavx(=OAj4<w5*#{W2f%`ECObm$_Z z-%1u?gslHyFX~K4HukVMf7B1-KOcOUVxMGzPqN%6+31tp<dgi|Cwast+3AxU@=5;c zll;pk;eU6R#TT`aeyaS4Hz7IICmG|Doa>X!^+~FIlC?fblTUJ!PjZJLasN;HH^_5B zAX64#&ewnZl~V>BIwDzwG5;g}TV|apS(l8zu1K@mB#SVjHqJgx{F09RLiol6NY=_v z306gxP_$7==yM@3bWbNrDdtCz&={p9iy^sErVGsxNY*QfyQJ+T4LEr|_1pg6bMl9$ zN?=hSj9F3|M#X;_Q~JfZ^pi(XD*PrzvIt|c=zsSU0%s8gVRfI?PiR)xAwo(RlhuV; z@@BKvZoJ?g%_@>C!k8@lUm$Fy38hxkxqryjteYi^FeVFo@PO4#vStpMT&7unkSxNO ztgg&*=6}IcUb#lIUY9Jwn5=Hh>MLzse<OYv0)z;kNETsCR(EEhOX2XR?n{$3>$D6Z zC5*{RVwN-RWc+IK0?j&CvIt|cdN7Opio&wn-@$au$>FLD7FvWcS;@@mBa*GXPi=!g zIIL?Wi!dfDg;~yMb?z^h)M(Z=$s&x&N@bSQUZd@tUu)JYl0_Jk)stDhWDeK<y9*k@ z$>DLyB8<uE#jF&`>OS<TNt)Gvs1OszWTi2S?oSHG|CI2wW=)hV!k8@jAKQdLcR{l5 zyLOMOC%H(n2xGG7w1$MhM9KQw>D^qlu|~28W3u`%%c+gceXiTBbNHxa5yoWoWtP** ze;s@31kHL)vIt|c`Y}s7w^g{W!qu;KIbCF&FeZ!si&NLeV*|UpSjCb>7?X7pvv5;! z*l|^_-|HMMl`O)DmcL(02rMMOH6+jC6aIIiZdIgA{5z)na2f6E<BFGw{}pgc_&+11 z;PS=_?EZtTjjA0|eRb6pb^2ptq`sn3C9Yj*sJo)NzRuw}y8}USO>G(W5fXd&;G;|_ zt7wccTJFokz^dxC;~HwNs4k0CEGA79ABVkvs@Jk)+O)EQyt1tE;b7_PS>YLZODa}0 zR8Pwc2J;9kGE+vIDOokOHIXuG)3n?wE2~+#s%%DeBwW!D;a!ZRXr5m*w|Yf&MML$x zxeLOe7OkyZ(b!Oft$l=!VCChFHTCgQ=dWmh5o}h39hC$g64-D{0GPL~AyU0ERJ(-B zuIsN-)#R$WhMKiy_(ulp)3mgf3dWJ@D&2PV)e0>%tR+}I3pu)0M;mmsN=F-9@meh= zZIzJ~PHiGuTd}e_Qn#{(n?oiqUg!E;S6SxX;z_qdV*_pK#7)SB$P!r<abcd~i|gtl z`0wC~RkHm|nXVR%a~#%jq)1()VnrGLpO{tCrc`jb8rP=?{f3?ZWy>n+t2C-|SzTR2 zwMV$JW@$bCf0<B`WvFOb?GRO!Rl+@L8&|o~szgh8Q)}3%-T2sohBA>imts{a&a^8* z+$WN-c-^Xsh6c9*XDc&owN;I6#rUq*vbu%{3CmWI7Oon9S|xVh;@S}ng=WS7Y&X(g zTe?x#)Ypi*kr>|BYY727P5{>_TfC0EhZ5<N;YlJ{x)FbX8#qW;2`C9Sgg5hsSmhhr ztkqVdR$P1~^6T&=DLt}mD;u#{lX4|P=(1qS{bpjP$F@a2PL&{>MKV`Z(Ee&(sp-k9 z_!icnRrPgCPz`k}>)^IpEbh9p2GZ=4dhCeaq^!2CY-Js~KxJRZ_2*h~mo%6+ppw?q zR>r_$e>j)4dX4^IR)MVNES)YTV||iwK1sGq;%^sG$I7=<gDl1XpnF>W<m8DzxSC#k z_NzAKO7p6UrPU4G-%-YR%RSF0mu``)vZwD`PlD1e<k*;x+#h|i=nj`PF0C%poh^T? zP|m_1#Q;HBlDq3wuSOT4dPON@j_@3B(qatoOE6L{(~c!cIz>5`OmTO{QdEh~R`$ER zO`xh9Jt-0GQig7OdD$A-$FZx6+|}2uSh2VQV?N3v?*Q%!*?rss_8uYdx1K3i^(*hj zNJEutpmGUuqqsV2R|0tt=fET5OprPkjXtiySh%XX-npMhBpZ{WOR6K4%eb)`s!;9D zC)Y%Y_AErtMHu`mEv7^2qi}gSQ2N`|<pQEUy^ZGWKBNjM_Mkl-g7z|z3+<EQvz(An z9>o8%UJ+TTKX6QUay6n8;=WSGEm^xf@#D@>=v5Oz^n*eIr>t`CN?8W4!xoW_0-8RG zPT#AstRjo2l+ff$S^_%_%Pf&~cy84?3!7g8MpL*N0bh%|q+)4<{s@;LXR~VLbggVz z^$N5+rjIk`*%h@_E2`@YmR0i{wxPPR5kv1fbQ=($QR|l1R9l&iwQEqCOjMdMVP*3F z3%UgwBIi;X;s`XvoM~#LN3IFZOjJXaM1y$3rV-*}<+6&J+RQA<syp2!5QuSJgi9b0 z*<OT8pfe%cz*j?S-L>dUp><}JL~C*;*BYcG8stp7HAqP`NZbU-foe4+(I7Qd*C;L0 zFlQF8QA(mgR0)_nxeO|at38xVWQ&_b$pmh!<6<strp#wl&;N85rB+vxk0uryK8h6k zb8X<=SvMH&yc&!c31*f&>m4&=-b5eOy(scgjYLh=9hs}$+(IwZv)<8m1j(B$>To=@ zXl#IRgA)LRh6x>MI03+01ozU+n|~wCOLUfRUXqe)f@hJY8Qug<5%uE?*qY&yYl2>7 z$yJ%=_>*GMJoA%SbT7nphiV&MkZ4o(_V^&7i96i*Afc%P(20sBrdTH`nM9nhV1|}B z<udfd$+4m5#28&D@4QVH#+PD}Xl7@ESz?03EYE~VnE`a>g9cIwHMD{DQ_&#tQ76Zk z8ESB>#5hzjA&f(ni9V{FOo}C{k87sJBgZi;$#E=;`Ks5Vlxj=jP8X_Nb!du(qw?Tm zCb$MvGr@JInF+4D%S;fA9Np)dd5V!B7_Ls(WW-1ijEV7V#7OW~lryc@^(soC<eH$T z{Tl3&d4aCV7by2Uu12mET$&t-OOLaPaG{h)6rGz;tu`diBNRyPDZEIJP#}4B>P32l zzD&AHEAps{OLHj9JM_XwX45Zs%H&UR{L-HyIAb&YDS{I##i@~aoN+O<2~JLo6k#V; zir|co%ZZgDYgX-=Br8jQ7D}@+wZy3$EfJWpK8#!97*fxpowcK5(Vt*Yc$sQog+zi} zk6WDutOUnOktEq5dWkD3ez{3dzU5j1o79+ycuM4AIi3b5S<>BWYDqCfPJ<ajr_BtZ z(`<&&abrX1m{v=8$FLSC2;Y9r+Fs#IsTb_5{Jn4`cL<&*0}kFJmfwqI70fD~l^?VV z^3-=?>Ukh7u^KFzjZjmeu=r-Jo*t{vSB5T^aYW)&52SMh&w#7wn>*4WIXI2Ob>N2- zy3YN8M0EA^5U@sl-?gf2aSaX)LF!8S%BQBGvaD{&68V5j5b%uyjsPJD57hwTi#UAS z;j+vRJDtyT7zw~EYbdLa&`z)FGm2?^fVKwpji{K+IC{+UMW8{>b=(DzB6pUAh_k?t z4l61n^qnE`QQLSqQF;)FXGgNJ3X1Xyi%X}6^X)L2tFXkGU?V<zTK2T@{8i<&@u(R( zX=d7ZoJccm{F1sn#kcbcXNK|%XNRb{<MP=L`LG&RktdHq5#Nof@0#cvG~=Nbc|^4% zX;@LW#vPZ>v0UA|<4;c6?7X7<Q0erN*jb}fZBQ~kAZOZmIw5D;czhe9i&mIdQdAf$ zE-WsLS+o-8;GAjWsVkGJG`%>lU`DWL#;k(a^p4Euhx3Z;S%n3&3X5WzpO#rLy@8sD zBGYnkok<^EA0~+VPu50hUVdS*U6NlM&NI*DF;L_4^Mgf2`T2Gpe}QkL<%DMki}MR- z7Ut0zK1Nc0VP5g<!kKpd>^yn2k5ei5&fSBZgnZ=BE(y)bbB_EmRfY1xLA$uPv@{PV z0Zp4+w`AI6J_{(m#_Yn-^qJw3P&f}ap{cAOFEnF%L1-4-+w00+?8MT-a5yw`W;jne zq@ij2>>vt11HBq|MMm1}yuw*UGwfMKK`N5&j|@;aZ)Qo!^cki3MR~e^G7u%Wl?sYy zPoELYb9IFVWI};GJv?(}ft@GrcO$V7{vIqT$S<89a+1f3(~YK$UtCQt&gUD!%jtll zY2)jaug=b!U0f0>E((`W0d((TsLwCRn>o9*IG8`(_BJvdd}LxvQI=x6cvkR)-AYaE zwDID(H~cn)SMfB{X(yD-E-oqz6;99NPT6eSf|9(F>9eNKwhQuO-XYGpO4G(W4LUwj zH*I_#o@|F!;#;tMe8+~keyA-TXD5%z$;rxag|RskCQlfbJ$7u4ONi*$tgHzWCS+uc z%NaXyJSUYWSAD<MDt_?R1()NOK5Oy284B*RndtK+cop`hm@6cw1E<etqLf{D-R;5U zS?T%i(=!NnChSz>M@HAlpUKg$88gyL%e}Z_;C=~=^MAnfd#hNujliwwk8?;)BJJXg zomjZ1fTRCw>nZ;ap(n7ha2dee0L;VkH|g~IwOF`oA#Vq!S^kWXeqj^~_deuz0JBN{ zzLtLH7Yj#K_ZBdJmpEi2ChjQYp8@l>{PijQqAZp^%6=w(r+1$G?Pk3EeF{T!ftj8G z0z$lcE=1bX8TcjDP(tC?TX@B?i=VYw8NgI`fSUze6EFulz`X$6N5DKOf4fD$$&6*U zB7nLBrX&*p1pJ6HCXUMSC@}w$xOnBDUj_CZZds?{MFHw#>KhID2w*OdxWqU({8Y`l zN@5V@5UU*Y8^DQY;8?~p1%~nw3%3jM$0bG}W8<Dd;<^#okyZXkw`&}IH$#3IFzphj z>czER8rh-y;ncG!rbAwOR-Sv;O-dm@8V=l8i6woE^XQ{r{m<^CzB1sJcc72{!=xFQ zJG?kvv>;Ii${)60v37fLp8S!%zXJ267Z*d{fRWgt2`>sKDsK>&IbK{0eRaTm&x`Zq zkA4As8!(T0aWVA049r_zoJSv(_e)@Uo<pT@l_Q3}k-$v!;yn7OeX(hsRqe&a(ANaa z4PIOfeb~;<ddiE7q3<nVKJel^`l!5JM^Q<2i098I12<e^<Fzm8D*$GJ7Z)RcjlgX3 z;yn4I`nwC5hrPHM`d$L&4KL24kMj39Fe%h=A*gc1(03Lv<GnbKKFZ%bU@E=182UB= z)8fT>^pQV5C^3{j3h~-wCvY!!ppVM?k51|fjDg?dMM2ezCx6ucjg%M$;u0@^*}zTf zKwm2OmvmBJ4RDQ}(D%bm>bncL2RqP5?Yp;=`rZKUuN~;4@+M^A;tKKVFAca;B=$t@ zF}aiag20t@ppX1zc_;O404~}IeGha}-&4Tt?Lc2T^7la}^?eRp!dOw!@#>G-W2nRk zWPE=f1>EEg^ilmS0A{%t7o$ID2Igij&U3$!zTX0~+lz~#@2|jo?8U{<mxljs8ip4I zRWC901%WB?;$rAq4$KBGE{484fO)`+^XQ}Y-3`p^UR(@){{kkE&Bf5=@aUudYKX)L zWc>C$6S(XS^pU^J>7>3(fUD_1AC>o-PU`zHa6junANk96U|#j&V$|P1fob>RJoQJ* zu~T#4_jpk_k-sberqYY^=%ey(0_H|9E=K+y2Idc5Tnv400CUWXi=nUkc&usgqM*v* z(MRPSD=`ejC0_qr0^Efi=<5gm8epPcT#WoZ0L<fFoF{)&e}{m1&x?zpFM#J7J@KM& zqVkTE7=esm-WkBn^XS8)lre=x(}U-S=Z8c2Q%-Metf?BkqGs{wof3mmP%__xogFTm z6)Y*5cX|dbCO^jOalF=8f!>tCf+>s6Z>X+sShRc{z7AVdShuEjMO{Tz!y@Nt_^6!G z<3^A5eq7nGx^fX7wqJ&mw;L9%t{j&&cD%wYT00?Uk^E1dQS>;krg9Pe(0O#-;>&Q# z%+%i2Vw~!TGs7(Frc3GUF!5eeQ(0fvP`3nUf6qNDWA-W>US4wroef@qAJF2dT|MR3 zZeEm`w7_oqdq!cjKeb*sy4P+wmy@>aZR{3oncLo$8cKU=uf6?PVs!ou{h~X9f1u^I zozNN_dC-n7+C8FaM`C1PaO9y#0bOc?xrfp=-wenxTHgLX50|2r{I5$AT0_wTq3F*1 zv%|Y{>_Z>sN5i|b>_bQF_C5Bn{dP;@Av-$wkc0o`Kg56gpWvxjcEZ84!>{Lr4jqez zU(X61dN0)eLdmcfild1ypj4SzcGIqmvYkhfd+WuXxYVQ6iF^`>h@Fnl_?JY;xDxH= z6`ARFb0l-%g5dn%`N0c<RIPd8=&_RM$9DAjQ1qxB{e;!o(J$=iK)WTHg#N$1KUpYD z+qTq{*e!*bS<m4G^@W)u!qJz)(dWX@pJ7K2g`zL9rp>L9?vDhH-3twdIy?Hh9o@%} zjT;79;pR2zk(7;BLRlp7kw9CQ?ACB}_tqH$?dWTcDuciAkC{K9Y(>IFo8NC7Vn^x0 z1Wcrk&OR7!NgQE+zCS#yH9YcJVS*Gl4wb0vgTN8O9=0bu@?$$;UrF>i#*J&Gid|(# zS7ffWqmN~7B%MvW@`7c-OM{mL7nSWi2a+<p60K>t(tlPaT61uv+d9!&jVs9$t?O|W zskb3Eon_l`E#lZdTm|EO#3I~oUn5q<sr0|FLY9e`ki}}eO@Ds`_;B={Q1nZ){X)@K z?3Qrm+HmxXa5M`|w``zO#Bh|GGcDZ;we&l?q$P1mTJOTlytH&XJ*{^*votL|FM}lI zpForqita!?eL^X#a0^hCMxQSkxhFC_8104zq=ttJWCYshXD*X%{TOG8t=P@CXCA>v zJNKj2Md6mz^Fq;s_U8vfEs1A`a2pTX5gPV<7=O`cL($j5BX@_PFDnec%CnopnIl5c z7s<6Uq$dT_e)Mdp<$CRtA?-vZ(cPiu4e9JIFEU;ti?-Gc6dnu*wVSWZ%z&4|8gw(v zj*2XfYYn&Do=FuNiY}iNiZ<khqVMT;r^h#<-Khl&@k+G9xQcfAjf#DX*bGjk|Em=q zFc>l60izKU9xx3t;Q{9(b{;dr(LaTnXC}?NU;*yTO@H4CVK#cCFT>I6GWX*{D0)29 zTySeR`W4=OYDeF|+b{5X1h3!W)r!}iQ0|uv!LZo6(QcU?us3~arK9^l#cm0<+uM&O z<fm=h3<0Uzyo27`x{8X(eQr$>Zv0U0_WI}S+|ScCQ@-uyUuFJ|!7qoKf1cTjXc(eB z{4Q<~W{0E4!_g7sXrQhR+EMC|;G55(RZF7a>V~~CbA;W}Z>;_K0ejd1JNkm%JU=rd z6n&NTY;Hv>?`lhg&;B*k(&BDwG}+4{r>GBVD7Z8{Ak=(SI*TQ|XzLQ$;I_ntqqxC$ zbK5&+!t&-0M`c-}qHM@~Lk9Ym!<75TNqL+9(b(G_`E95rbt3ws?1R$2s1tkBuC0It z%gQdjcxMS>Yfxc{)^fyFB9>q^Ahv>IS0Hu)UWpb}rf?+c1cdw0(_!H>CnF}DhHib~ zG`WZgrwJn_oMtIvGzKPGKS#{zA|jdT)TL*IqX&a&+t8=;O&CIF{`tW$+-2CoQ0~FB z&F_FnBSKy%`ldbdO?!J=svX^FkL(J$Wk<t1mVLIpOXCG4TUsL{F{pMeiS9si>_wLy zioTGy6&<{+2B@&3kxUz1WLDYEF!~B;&9I|=N@z5BAtuT`aLoRlb-bOz26Vvomi9<? zxTTpy;av8bHN#+$?Ff@G^}rgez!nTqr|rtgF)9c3G%9Z_p{b;(?|j5+QE!RX3dAnN zE77_MSCS`M&*Hk8Q{P1FB9>8?T);89Dd@(>pt@ym+UAXj%F$KUKFa?F#!)*OniPzF z5$yw5q*v~|yoMeamkyv(8_`RNx(P>HZB%krFly!QUY{9^<|U#73pQH-6lJ%HK^}#e z#3MZyV&ra4rqN#|?4<5vGG2++<+$c?EN`Clgb-zi9RV&tov-u)>a#+dzMvVxnickz zw<1OKiMopZp_V-ED(n_+kF;%xNo`4?=pJr}v~A(c^1|qzt$0H_arGY}54c#?`wnu1 zk+OBr<D^m_Uak>jYj`-9y=~3lv~5T%iSB`_tptm@bg4GhWNKDrD-A^uElPI}-E)c7 z`H0agk&l!XZF>toi?+Q7G10cIh>5m6gqUdCBZ$eiZTkBN>2@>$7_pObD{fowT#BmM zjvljdFGZi1oc+|T(HtsE2;75~9lf5u1+jBqZcKrb*mkq{Jo#x7M^3k+vrFyh49J5v z;&{y{MI5gUkZmY!OR;x<pT9>zmTb4?aCCOMO|!5W=*I`J<=~?M9-i5oFyj)Fvf%Gf zRdBM`AdvUY3f#qTs8XujGH%GzREg=4oal<CA||>gs#4JvJ%AX=6Rl@(y_93`<9ad2 zP&<<f;VKw)*_T9pH0_$SGZpC#++?&a2?;dyALlO!UI1Di*XWl#Bi|FEN$PPy#$^2W z+<mmS*V(z-)2{g?w9ve^ocfafsIL*Ys~XdO6R_og(UySzEy(kBdpBk*u!Yj^r<%e0 z%SA20JfS*z9L%)M4<kK{slqCBdw<N_h);!EF@q%ar@(s~PqCwA`1Dp|A510HpmdlV zyNqYWm}+2f;<*bsw1OO^+kGnCLFl8O+d2!=Te!;0cJpa=^Yo-}^Xl{^yQgCe;M`z3 zHMJzV50fL84m2pYC7MnQhBQ$|PO0(AsV&!{1@nTJmR+(_&X>c@Rhi4g49IR?4HsGs z_xd5b;Fg2rZgb&U7eLm;vgYZ4)WaF%$5lvyNGt{HW|lhhDJU-5+#c!2^Y+G`C^FTD z>0_?aKYMHr+D-IpI-41&-i3H2TJvz7!m;n+8syj$N=BV=F3V_#nIevzhM4fZF^DZ< z*~N$nAAJBZ;iJ0|6NBVo#H44!*Tlk7-?xYD=p?)420iPrqZem*1Up5y%xkY+uqb+k zp@<2q;}8>8xu@Wz>xnD~bN23n3}g-NNL@QAx7&x~vlYuk&@@55&jWu3uL9(467?5G znrdzU&=^6at&^Zv6z43&L~)9}w)7%WEFiON@;@vg)3)87xe;hgQ!z!|x`>v9aBa-E z>0Y4D=9u*B#;$hsxweXMl$R*G<+2QOIgpUGm%_Pw)+B`Gcw?g=xNEXQx!*c^UI?e< z?`B;zHQoxFB89s;#{p?dgHpnMS7a^}w+H$*n$ef-r1?7)ERlUi^g=XQ6TQ$65Ub?W z2XVcGW7L*dJg>+ch}k)HPbfBx39$SzO|WRdKNikyO}m;rkqoc0a}TFoJrtk9(NhKT z5Opf0=v1!ETpRlQ;LMhO30Ml9LL>699d_=H)t82&FHl#5N_b7yRodq7gB;HNXTub! zCxjk_)=;UrGg}g~?P1Sj9ff{y^-y#cOvX%A^zBY{&rr-4u;|Oh%v&%q0pD)t?ytXy zav|btW|4{!-0xt@%<VzL1gmmZ?9TXs!9z^Fv3P<LpsE*9Rj&}EJu3Rrom%ti{wSO` zYmr}JvA+|qT{J@x4KWQdF{)FOEXFI*x<<*iDcN=<3!swA@hOovpAsHC2r_Y_&q1t$ zQ#*G<MlVkP&bK_;7VFkyux53~OY}(25)3_wSc2KkylQh2A?@hq?exBrdHlo^Sx&SD zLnamynTUyn1g%3azzeI-=ytp5%cM2vC@?kOZXY;mr|hA~_M=@?EK$XhR4iS^GVGM? zc6+Ox_S7DzN@z%WlJXPXvGYmTx9mgj+K6Muy6zPFcXGtt5Z=;COBgHd=2p9@bsClq zEr}(R2raF@Pb6N`7v1X<?H2nRrKbJ);+DiN@LIU)PTV}`8L;R-5c~s8R;hYu5<17; z^cBrN8!*}wx5IQO;d%S>!?Z?_YuKT-v#u5O=&WQ>fjcNqawQwe-I;dv-S`~N<$151 z{;ru8&V9aNN@&yec1#>Yo8F-%M@jCX)mTC}6F0_(qlag<q^8(%HG-Kh@{Bnk)-58e zLI<_FI|eeAihf{L%itt_=yW)odvJBSR=GcvyQBV4_TErS6B)D<=uWrO^0D;Y!3t>h zE>@1S5EBhfO)MImx*yTtD-pY#9V3F6xL0mLYyn=0)*VVloz^PG9YjprN#t1qSCqZi z@tk@88=kYj>8pg6;%^Gm3ibx0+u2(N2Jvji?J#LKZ*SUey2_rWFT1q_zXEN~^p?~X zWY22)vU@{!_Mo<ertRO@P0zRULIiF&Y=5vN7{C+Rrgsw(;6dn@l3Y*3s5|DTmzaWo z9Foq0RgC9u6RViLvMb~1D0=SgA9TeeEaBgU(bO9YC(oYLI3S26YRiHVg;<@54p2O& zY@abHI(rhPmwEQ~cM|N8+wJBN(Sm_ZUj)|ojTQ{%N!q^Vf`P2Rt!w)p#HmNjqaM*U zyWTk#g%yhx>gvQ|h340d+-UWP&BrUzx(nC29E(+8=aFah&0rL><fBv&6yHwxswjFO zKicmHlNU^C>~rA5aLbGl^n?ZZ<DC7k6=MLhCbDcJMw7Qhs}Wa`<v?P<N~F#kVUT#^ zYc;M3K;kDo981ELikx5tdUmsV=A>CY>w6sOzN%X(gghOjcM41J5=;>z=315w?b^la zT15*A&7f3)Be{s7bCC?1W=8RHLM+`^Au+*X-Jka2oH&elx&?z!Q_z%7h^2co5}_Mc zcTT8Q1lqJ9^peh!4)k6t^+FT!Y<cR$tO;R>h8t0fq<ek``e|w;>tt6?&W*z`b1ZaI zeG3Mmp6Ea~^<|<?+&PI?Cqggje7^&|w=2DfD36M#SJVaR{ImnT_pshTpCqf#{8Xz? zPKwoMZm%P$t5V9z&UCuSuoUmYb485m>K7~%-j&Qahe4?VN9`qIRFi^1sNt@h#nSz2 zU_?zKqH;nd*7mgpp_g<{>Ok*fQg0Vj&VQ0;(tAk<x}TJ~@rK~k#fkGwIx9NR+X`*y zTLvau193MDoS$M1%t3r^zvF$5q^}}dFVIDXWq21YC1OeV{2a>y{gSMHRmoPr`8}+D zIf%~{?4y!NZ#9ghJc}5yUt}5ghWUsh(Blp#T!x6SCt}1n$g)6kqLrM}%}O5EjdNM( zQ1HH-5oAZih;^7{Ct|HoED<Bt+k%zW%}T54Zl%Fq+PD<9M{^M;(9A>RQpAY)KFhrJ ziW~~wYZ*bg6ft6b$TD|r&<~cKu#i)UA!5Wh&a!y5e=|~@K+pO_E=7#kpRp_+`x%Fd z_lp=wwndECU$ZPQup4}*JNyRk<N9&!T#FPZ&?-aN6)|FVL8;(%)P_|(tmL_(4M#Z? zywlP^utbblyeY33ao}MT90q+7IO-EbEFCeyAk;>@oDfSlZA43b0`A@aNcTo4z0XmM z_gK37eMjA-_rE*PJ?J~?CcRW<C&bD(J#o?fq*K@A0|IT<x~OZ?$xmve;#hjmV7-BE zU94_%yJQjYeTk+wn$e4v7csJOj$nB1dHQD;C(x=^utbbl;{>a3H>)px+>v@bc~y_{ zB)0b>hlclZyaZFkh)F#%N}klkN}5meIB`fRy;EvAUJ3jYd=Vp06AaQz(^4mtBjVM4 zp3qHq&HL$A`YR_}NxKH}A*c?M^a&=-K16IFVuDGit*(-bbZQk5qZ}3r8;H4cWMTxG z?iZn#bUxC7Ui!Bo?Ga8b#?ve6gmlus2RWe}5pSK8vfjX;6l+k`Y1W|mr&@yoCs}=u z_db%gzh|rHaV=|`qXO?0N{fh5sV`tH+-f<48S5}8Rp6++B1W|=7=)?>*9jt>N+n{% zUW9aAa!0R;5ood?^pehvcsW6&o1Dc+M^897)f!xtZVjHFW)05iWeu($c>JUz{r2~1 z6{9HCyAu{8BI-}XD0j<POCIg4H@c?krb`n8?d^ohTY?=7M`vaIAYg4268Ar#k<x?! z-DPHQ|MMC8Ltu890DN-)Ls<f2=x(Ig{e$j*U;IOl8$+c|2v9kwe#$4Tx!RAR2Zjj& zs<C9me)8B0F)-a2L;lngu|9Xz@AvEJ&KT;2sBRj%?@JL|RJ-#-DG31@r>KP8?`iw9 zAJc;|D2zq1;dge)^J6Hd3H;MBn6pOC9QZSTeqbJ$qqtJewucTJ@nfh~5(0y8rTjd; zBmIycLnTfK(7c<_2YRP2^J983rjV|9jT)Tujvqtc3nm0;E<%_^r4!EZW9aTk2+We0 z+tcnvluGEXLz<~21YW?ETJFfy<LmsGK8&GRDAm*pRXLbadG+*VjFaa}YF~NLkD;D0 zAwV@r>@np-&h)nhJ)KGjjK-C`t>y9H*M7`NjQKsT6dH=I!DAn)ad)|>$HyVaFhuqS z4f+P<@?xkz*7wD&7lo01FXm*%JcBEH_H~28ehjsELV)IJ)E2{T+p|ev@PSJ~?-WS4 zWu4Afap_`-ebpUNhQ#DK0?U!mY*7S9veFSK%r!pAJwC~^KFJ3@34Qq_f@5o-Pcp(M zp%KVr(TdoVEcHp&`6Mkq$<L)E)pGLlTPf+OBs-*}kCMD0CB2p8sFb8A$>&m%tR$Gw zaOkTf{iURrl8ls+bR`K&Nt%*eC?%GX)cPb_eUf{mWFT1NOP2LJDLIKH*!}^#uX2Lb zUrA`=EeZn^Yqw+#Qj)i&<YXoJmy{$aNwP4B9?r2oNJ@Gr$w(>brzDf4Btc20OG!5+ zSu7=8m1Mn?B(ek>pj58H9V!B~G9<Kphf9(fo|Qw76)8~P+0BAvQdSNNcq9=L2SdFU zOD0Sd5MGtCWZVP^qP{_3B!qi7mW-V!G1Rk}66&8#3H7v6BJ)H2vykMB7yr^t1@2}X z>U0Vu2>}|#D2&~(b)r5B>Q-4lj4=*%qFIqXT<pD3-*X)x^{`|y#;|oNvnZbwnn$-x z*T-o+D_M*&Y@G(Iw)Obzp8YiIPm;wL!`2XHac_^<6~8`Xk7j)$S&T7kWf-=O&6s^$ zv#@C3z!<~UP-Z!{HuU^xw`QF#S&T7koz5)sBFfH3H;nn2W=)YS#u&DSF^fl4#JWB- zFr-;?C5thJtxRS)wnqJV!${4#OtKhb*c#3(9-$Dke^Bo#*VU567{eAO0j~DC;I0b? zYFj^%EXEkNFbsp`)Zz1Urro7kzmY7)7`8?jwtj!v6Pq>bdC6joVe2erId%ACW3Rh4 z>s`rWjA83+!`9~6{mV7$E6HMvVQZve>%x04dPuYS&~T2x7{k^%kZPZw_u0$^nsv5h zF~+b(D{E1Qr1gw`;ZOSTjDbGoOBQ1cTQtwnwk~_&laDm3Lb4cR*c!tur@cPt_3d`e z+8|ksF>GZSwr**BW{+mwC0UFyY*8nOc@$mo`u@;+FVL)KB#SYIt#O8}`B?>zYSv#Q zi!p|+Y-Ty-ntAD{Et=IXS&T7k<rubZt8f2<W(}dG1_EOYTj-SImTQ`1F~+bpfmzPI z{M#`r-q5znB#SYIEgF9k0(37^cxKSfQN5LKY>+I*7`7$>t9_&5;up`<tXm|DF@~+l z%%VD^K!<VbqYQr~S&T7kO#xQhdgZ+FrJA)<vKV97%4L=_e$ip3`Z&lpB#SYIt*M5s z$H(@5M6-@d7Gn%s=PDK=d?0LJRfpZWlT7?tIKi-W9;CWl173XnA<a5fvKV97nx<H! zb@)pc4%f#fW=j@h3|o1MMRy9>(yTd>#Tdg@kXdwpQJ}+T(^a`@C5thJt$bj0x&E?$ zz*Nn;PO=zd*eXygvPI=eQ??$EEXEkN3KfgW)%@c63eDOpS&T7k6*0^08v~TBqmsoK z!`5`e)?HIxd{eW&kSxX+wq`KP?el|_t?n`lj4^E4hOL{QEMKZwXGj)f3|k?et&^3l zLdjx`VXN4%m9p!#G|j4%EXEkNW-`n1jg;{8srrcFO_IeJ!&ca^)#tW<@6fC}C5thJ ztrEpT#4-=9=AX<!${54eEX5+<xMoemVtu&tL1~LIhOODmqV^(I#WyR@(yU{W#Tdg@ zDYKlu_r<b%U)8KGJ&=gN7{k^aNcG(2rH7tgsadB;7Gn%sbD8DXYTNYJRL#nfEXEkN z=AFP+iDWUxur=SX_23yd;s`uB*jY;?i!p|+^G{%FgJdzruyui9Yt`Nh`)FIYN)}@b zTML*)en{=L{Ep1GH0x2xVvJ#Hp<!!k_0wxK>v_pyjA83SW=SWonksw!Q6J&`o@6n` zuyv7P>%T_+q`PK)Em@2)Y+bBah;V<HplZHfGReg6>&!7_5v02B{df7U^EK;i$zqIQ z>k?);_wtm_Z`s~W*_tL<j4{e}sbMSS$>$%`tV+pZjA5&cS<e0S$(V;Q@H-y$eaT{s zVXNG*b>5J5w`taclEoOqRt2*L(-p7H`!`O|to@S37{k_LW;yrQwyp0@(yV_;7Gn%s zmCSPd@Zi5jXJ{6_cHqDm!&a4H>!nk6y{=i)B#SYIt!l&82c>uP(X1-TVvJ#HiDBz+ zv);c{vzjG~F@~+B%%VD^Fy+iKPj*%9^=rvujA3gTu-XqZ{&HKoW*v|$#u&D0nC1A! z>p5Qx(yV_<7Gn%sml?K>mbO-E)&Oco1jZP)mP4x74lj=1_kd>QN)}@bTPv95_{Iev z^;)i3Ws=1h!`4b>Id%AU_1jH}st%hZi!p|+TEo_jubzFHX5A-Qi~-KF_DBiEyU@jY z(<k}6Px6INlG2mOd=Yw1@kvJcB<K1h#XiX*pQO$wx!RCik5A%Y$?tYdC7wu%{dGO( ze<->8Tn(2HCx|-dZsEV^X){})hWFc*XN#55KiGSd#6IPmgi|0_)?hc^6GE2N*NDSP z-TK{1s@JZ<sYqIf+M`$y^!ZTYv)u2$gVXLrG3ZD!bz+qe)mJaA!C9T0XIa*2zf5e8 zEYIwstnry@VryLWQRj?PWtp(qvvahbORPw8cYa4@+*8|_%R3K8DkE#1W5YaBxxunW zT3;>Ya^umMC%@75$DKajtyAZaNo(HrF~#DT2IXze&aIWpd8cJ}3u}jPP89&FMrg+& zVqE50+P|7kKI2bj11RT=nI^n4R+4l_*CAYtl5H=y>UNsXk;;v|9kFvN0dM$0=Pa-a zN9t^C?v)EPpF<D>&xfBFa)I~Dg?>JzAO_wq7kEBeA_m?s7kEB6C<fjy7kEC1A_m?s z7kEB~A_m?s_f)>=2CgF(SeZ9f7}J&RP4_m6H(l^`BY4xjjpR)ieBCJCbit3GF8F-V zM9lIDe*E;9l^46x)Y%k{<I29wb5A%@k7n7^dBBd;1D59sdccm<12%g}566=jmr7k` zTq-BVrHcMGE?FjPdgl)6G5S%h-0V)}fjU~ZnJf>*5k7!ci<zp)viq&BtXNlu{dLeM zYr8Shd_>-r-p`R@*PUkc^U?<2f@Xs2-Y^qfH-(uX7%@)C5sVlKf)V4C9Knc@AQ&-D z$q|eg3Eqlw1~hN&D!C-^4XwsFiS`KHP_yq)1E8B24<ZVcl^LTC@#^USBs67rMpFkM zp(&>`nmPapP2)SGsRPi7s$0w{PE^|xal*<rw8W`vL(kaQ#WM7q7;}O`IkO?*+p)Yu zPv2{5tE$(Iqq$;Pq=HYDcg-86gpLRK9~~9KbN0@k2O@jC6CL*9-n|}s)lZm|;R+q? zRX;v!tVGjZ^<8+c`Yi$ap@9hQp9+$M9x>6w4kN_btA4uyvMk!G9>)G3-OH__VcGx2 zUT*(4f4`ZC27<>-p5StrjE+2J+=T4OSxg|0X<(0O#J6i};WZRuc}!{_k*2P3Jf_Bj zi*>pI{h(!3U!{p7v375N7AZDxJ?U8$LU+7k;i8bw1LkdsqX#Ona1D@u0!(#(L=fWP z=xOmfiD4ivvGfgx{OV5NZbiM`58Si?LR&n$XCrwYFzY+Otp)BzV0sJ``l#7r<*ya; zzQ7!kxOjHY1nvWgL6k!*ee_7a*U1tf-(unD@#aaLz}diE*$Esy_}tYA9O)Z52p3m~ zmA_x&u4w@7)FA>GuU@D<#sYJ32e|J6R|m|85*M#MwgdMmFpp;-f)LMcKGODP5JHDo z<siRL8ERR#;6)*xKJxot0(0u=42z2+zaJ|x0vX${$nU3g0!Myd2HfYvgf{wmAXYi3 zp8IFw{=kbu7rbKO)<QlHm=`1t>SN*_fc#ZpuA+=0B;plIANl=#5<@r&v2f(~FLeTU zHZt@oaP4QXs<{1CU*L*heBp=_<4E6~!0b8e#JGXL^+F|{G4jN?TTl@zfD!+!BfhSQ zRbFb3j4bROf)|B&?LmHjDKKwH9I_F!{_chRJz%!duY?fdwa34a_6RT!j$>Hd`rC!% zk0nMRrCrZ1xHKF*p6wvSd%RtG_X6kJ4LOEB+6~zq;_2(2gT5Cp3gq{U^XMbL8Y?k` zqYzIY?W|nXfj;WOX=ml{d2u{-X7zlbZzFC4=3Xz(lfQJ}b^>$Ai;JP}V_?4V;yn7O zyr+!kET~Jo@(u%TjKs#PKPoTnu3YWK#mHY1FgJK{p8S!%hk$w3i;JP}Jzzfa;yn7O z{%B|AQ|b3$2&x=0^yLCWJ0}}Bk3MR*YKalZ`2IqtRjuzpUq2}MFJK<_;$r0QC1Bq0 z;yn2yeV+r9GEwC2MCCmTnDJhmM<3PSJYXulxET4{1Wbz;=g~)B4L%6WZi%D*DxUux z0Orq~(D!d(222v=J(0elz>JbORWF|W(fu(~VuZ%{`I`q^Sts<Z@1(vhz}?t^K5E~G zJE?Cca4&a4-#>r}Ozyb;Qh*sCaq;Sp@;4rsP$%@w1E#DK`ql$;qZb#${~iYB4_=(7 zeaWBS0Opt%7ein7DHuQSq7bjVJbp-wK*sl%$-otLLSJPk^(_Z(O$Yj@J#Ox#z6XGN zyaRpI{~hY2zP|w1)`33CUyod;=EQrv{@_&L&XU-8?LqoxbW-2Nz%A{BzAc^9cN=i` zc0%9IPU?Fdxc54tFEF)p_17P`p%Qzd`kU5Cee-}T>x91boz!<DaCdY<-yb@u?`7cL z>V&>8JE^ZHp3j_&7ljkm-$aQK$oT!iOyCxH^!;CXviAgXw$A#$drCv~+DLV6<bVEb zFB}af+0o*p?1RxAVeHBJ<5s%fv}2^)tc!QS#Ex&y$qms^dKeq#wr_W~cI)HpjfXwm zcyM&~a*NJPr`?F7x9_Hg>jVSaqcY(~ObABz*tystt2OP%*y`}jw3}K-?rF>nMdv0# z7RsHMgsjqA5Glctt+Zd4JXZlb>FEzNK&{3sCefl*4()oCz&i;=@F|hEjf}9YTBWW) zOr%~xF;4Yt<Hh?(VqdPY*xJ^Pen|U9Z}}`@V>4vhK{<NC!lPhXh+u!@eRk8k-`cyU zFC-Cf2`jhPZdy_vu($jpf?evcPvgG!SMA+&7g%lG?cFd+eBSDF1$L3f9<h0}w`lNE z-h*r-QWGuuF|ml**bjE4Cy#Rb(l<kNM8w>Myw#=H#?y|@E62|2B3}hEU)Xq3ZWY;7 zN%?Azz%7uk7uvD;urD8FJ83~JjjI^;)tekh`%x>l@9a%kI@ylqFQhF%(`__nG>_tq zpJJy&0Cw!eKG&Q6o{j<E*$*vym)*QMlm0W_-kmS9)smQrcsW%Ed0iA61HWN6LkOj_ z!tjM9OO~V!*^Fe`z0@jcvD0ZITRSP7dm!z{JFvwr-r+g>kr-^A^Tj$GePAzaL(%MV zyXl>8L(M%(;4V0hWP3?74#`N&3^g51=iNZ}LuIgOZ4&8S9|}cnY$9qe{47`=NZZ_s zH0%J4@?azJAL4@$H<P%jqWoJsT8iB?i`fLR?54%2(;oTdZA<K?^723^TAFV6C`BvS z<)5K=k$TD&?KeJvG(~y~Ent0XH`(QZwsC3O>~d_VOl=lydMB{)odEWA52q9_3^!9r z2-pMmno-|GpgkCyEh-C@iOSQIMLRu4QFYA;ln3PTI#Jiz@;HS}yQncP=Ix!=pvDue zD6UtdOxQ6Un?X~H_7CH92kZ(9Kj&Qokbn)Lsk!lf3{d?4E*5Fbp(jRHax9i-;&cRT zH_JOkA0y3ET`dU*U5FiMvC*<}N;uA7-hvdn62H{`8aWcSzP}hnfA8DIm(`Bz?t7(- zcUO;_1MK5`5pKQ1=ymuMj*r8+7o#)zaVt5^#Yym*!jY|O&w+atVw$<7^{NQj1DZ_6 z!mfjVVguE1v|u6aa45IhM@G-U-7WTl#=V5kCy5*IC2CAAlh~z@ZnHe^j)SbSZF{4t z)t~BG6*n2Sw9ZF09QhVr!*>~fX#A&ho5{`uoBZdOhX{6RNZg73yD}7|TNm3@W24Er zNhoSKw^UTgUW%pNw7qcT_H{kN;%07pn`$K)_cdE=dpX26Hqq(!oJ=}?(4mr^qy+tg zP(s!7BI!YH7h?a?$Pi>UUg<iQUEJ|`3)|iyGd)Glze9F~l5|qi*QG>dH;<0}h~1ar zPN93S2&dan#})kwoB5+;X`AmvOVTkbS=<F)l$16k&vN=QJDL<mUq;>*os&f4AUWn< z9tWurkY3ar{9;`XI~rUVY7Vra2Irt$@1jTRja){OQHdp!dpB-t8@D?zN%WulvF&TR z-89LHoCdz#Qksq=-T)R#?B*`Kt?3l25u3+~T!o`~$8GKpcc*RMitMIsn_V8vw##uw zMQJ&@q0m^neB-<5ZDu1A_QI%0MM4R*WzQ~$5Sdz9{%zW}=j|S|%W--SI->)2GmdFV zZag*AjD7TzxW~H+9pG_$caXdNWBJH%u<42~(D%+gzP_8?T)eRDRoRIam$%{Yhy@Et z7j+!jqW8<)-k20>?t82|s7-6XK=*7PU*E%Sp0n`Sr&Q7CmeB*xDL?i%`ULcrkQi={ zy-EU}a$r+_=%h{)Q=qH2QGw;yLgN55rmvqDj#^aI;AeRl2)1;CHFV~<>7NhLa3aQp zNHUKHTYkibpAUqZOUtprHw`#VsI6w~=sO1$23m7)VOt*dVpe6tsDZ98zg#Hz8P&sQ ztuR!K7@8Pk#6f7skdd~fH;I};C>D3~$T@P|G*@=>A$0Sxd-yW!iHk8RMB3yS6>7#< zMq^YMgGh)+D2z@)j80TIv?tFMFxqf~QX|qp19Mw${I<Ov)!z0)43L=YU|iTvoeXH4 z)gX^<xh2g((&Vxy$HXwk#1J)22u%}=hM*$Ijzv0BFj99T<0;Q0gXJZtcHOd6b;kx# zVTm5@5iCEJ%AaT`jAD+Ok13BB<jH+hp}76SXr~g4wiAQwd|8xb6bZhH>ZJUjUyjFL z$5y!7Vd~hAQ31}qM~z2=_!8C%ZLG*D!PpMZz-O9pAWk_hL5{yul{i(=mSHy)(@5_t ztLO&ca^%g_NY5dUCCv%P+P-OTrw0yVbiW(lfqa+IeFHQkS~R*}#j(ze?$gZC9rw%2 zV)Qdc_)|P1JbH(VQK4@&z8GhK&-Z6yAnmE2K_?T56Ln~GKaAGIP>-XwFvu6s!hw2Y z#ISbQ5gfT=OY4Ty)~z99G~_V=Lm)+N+CFkS`uuk>sN)Xa$D=VhiyfVhje(6({&eTK zhkas{?;~b0IMf4EYtIN@N)vkAadh~O7~yx&T0_+A-MUa1I>bm?%%cMjrnVZ9Z8;)G z2BOEOnJvaS%xv{Y`m%Sw<&M@Z_EFeIKXXB;UbomJGS@Ao-*w$Wg%s-+5u@Jh#OoH@ zT(^|!b&JfGd)-3$>dd-D8b@YC4Bq8ix7bwk7*%QALUFxrA%7QMMuWZ>y}ME+*<t~c zk%Z{(e9oWULi_OV&M!q@je7lxS1=!o<3*r<0*(20w6Aj{h}|+TeM@U|{ug#MftM;a zFI7sZ=dhbG)q0bbD*No_Tso`-9RS9CI;-GiXm9!+4N-m9hwNwpmMZ!7XL+Sqs%&S& zT!ggEH{pX2ZzXY4c_}=(*v2FRCg9azq0>S&_Lx)JR*ew>Q7q%Jv_Qq@mwpy34MZ9+ z-{i^}K$>W&LR!GWrMNWEHa2ZrerX8xhCBzGjs!BXQfUpR1Z{M%utK;VbSBOmm;&C$ zqNcg8QJki+JcdyLo4d(OUYE($D%UD>;2TwZ2#0*&z_$@N@U3hotvp1}wg54jF(+CZ zQ19QRk6XiR>f=^(tTTO_X9Z(-ZUuuX>0kvDHwRhlP{-grp(qx(IL+elQRLRz(z^EK zt0tj4LpOtN_C2)mA(^o513QYdns67PM?<^Q!9whfoK9{&k`4ta2ZQ@9xzwT+3p~Kr zXUAHx;70(m^7B-z95GR)KR`?tNH1U5`JCkofAB9~#MuM+$i<tyiW!N80lVQKu|o6Q zspwlr?8E|r-@`D4n>LGv2AmQz9(lmb8;5mdx4WJmz|Y%bKGn)1e499HFBC17Pqm(7 zEgdt^X^W>?f*_~zt>TdumY9tLL(zFjp<F!I;>9P$#Nv~B_0&-GtCHwk``9Af6IbD& zp1GwV%<_-X!3{KspqbGF^0^~aKq_?@852*uXzeSWcr_s=o@r4RAf9RcTBSa&Qg^CU ztY~m@D{8JN`z`oc$rc<x_X$#c6`3|<BgE)>aD-LIwekN&{b4l_xBl>W=S`}=w&bfa zoyw!KYzcD(qR!}y2(Cyvx(87f;US)LcpJQk4v|0_eg-2ema14(>^#Io#V)28x|;-^ z7Kzj?DwQ4*iB##x=pNpr1@0*LvGD&>+>Wg8g3fxfvs4LDhyDLgL!8Kw(Gc+BGV<bd z;nN*DatZ3}f9}ZSu;Pp*IJ5TUkD#3TgDlw}sE*)2bL4RJ_V3magq@B65plaW4m^<~ zcVjQ^dDWRX`Z0zhvkzlHScD#dot4gig%7($@?0ee7^Z6Xf8@<H8RCPL;!cI=`3Gh} z+3oUFwNJu$B25oKsC(kckDMK2@>3Y4+0T|%n*ZS0hK)IPGUhl@8}|cGf%w@5&4VUS zY24X%?(PD9wqZyAZ8z;qx0`aU$XPU}a<ygxFz`C`mZS~$1_Qse8sEpDc3e!MUQ63d zw`$t9>808ErD@xWOEGb=$L5#fIV&HchKW&>(@5Stz|NkI84OKlmXzYz#&)|0KJ$z$ z_Y1o@+m3dphZ~rYC-5BUDon}na3jx#4eJ=~DA}}uo>0u@XB$Dg?KL^;3YNCLU`J=+ z7#*7YU?qu%8#H0cJxmWbdL2t3>i39Rzz;WU``B@+L`=ajXR}L>y-S~f#>0(nZ0rCD z#DflFj&=1TNJtwZXN?8v>*rES(5w-2)wC^rU<flqjJ9$)FUHzro;+^(DJgB*i<&6L z6a$AD9r>1)>3HIhLUjybbE(}n&5ow1a$$;z>BgK=q2OVt|7-{BEMPkzp{#glLZ(k6 zQIm}V(d<@K>fyAedEA7k7Oq!wI!Mo}%9B9bw2Nkie0&wv2_8d0wVd3Bno$Ot+~QdQ z8jhy6nAT!eOXZ|yB?rSamD`og(i9c5>n+#vGmc(uTQT!Rjo`l8&(A|>=8Syf83N|P zxp<yKs+2urGL6R%rFh0+m*S*QOpZ&1L3}Til5gV~2dt-TM+QqVN4DJ!TxuUnqk@YD zE-gKV-IM8w2YdpR8$|}G06cX^&YeQZXB>Gp4KR4dLG$!1&T{h{pi#G!AE=1O7tc7j z4Pffnb^MG&-h<STP`iY+mUA`3b+A0ZQca9xRB~D1?^q>HRnRkz5E?30S*bgKr#TL? z<ymf}laBob4>|h6LB&#F24Z3<u&K*;TMDd$2JyIKEyp^u6!1Lmh&6S_R6Ew=4%F?5 zA9uvfL{{9@z=r<oXf*&|d0DRnu4=;y02#wG4J-)6GmY0}4=uk4L>AACwHlx&8{XB; ziB|$sRV$PuCTjFL#AIRkSh3zbA;K*42omHhljgN8=i)QEsyy{D_5?GWNrd%H)%oFW zoH>!3p{DAB;Ed3Esy-;*3@0*}AHnb#on#Epv$@}LCY4kmu`&@Sh-DzVVu}++?7L1W z|6e#6EO35z>--45k;i!*g*dMxF&`CzKtCA&KkU5;U=&66Ki)$E1PCM?fgl0{1Pvk( z2x=e#69_tiAmI{FFoYzK2sub52wtFo5{D@2qIe;=DB`i;s)%<m0%1`>Jir@uRS*wQ zSMlWcd9SLE>h77$?swhY|9`h&I&WToKJQh%s;;W;>8{ojoyCat<%NX4UZY=8uuA>; zO||pE9tHNu5N!IDSg?ge?Dc{jjW=FNf7Es8iRJ`?AtYivz`AbD@qQ5aYYbnMbXF{6 zfsHq$c8~;%P~YOCCpY^vE}N_Q>vp4|HS-`O@+It&&7bknlbc=oH3M<NLeNbHG%6=# zq7KL3Yw!^z6%v*78P;)05mmjUI*YsuER|G9R8qkr)DQUR$<6)?*hwWt*<fFjk&Mhf z*=}xW8E*FLrG1eH-7ZB^ps9>PqOyp5lTCV*K~HXWU%^g9l3KvPrp8--I_VVry_ON= zNl4`Bb=HaZoi%}s+s1h--UJ|Uln)_MOa+5b)=0Y9ej6ByBu2P`zsI&cif*<KO56B@ zq~}>Jo0)r&XNn>{z@aBMyPslbl-4n+sn({Tg{RHH=AJg5CLaBL8g#LbTGLgGB0Kcp zjh>c65Uo{66yGmc*Rgw3Eq-7uR>*JS;djx^fEvkZj~*P+6WzBV><NkN(X|fLGW85I z1&;1`(bIJh1Vc!~IL^9I40^ChFoZ;m-vlEeMoTEbXJS(=0Y^c?fYt}GLwU>H3Pw_v zg+y#*4Hi3gio&~78+r5xU^MKacH|zp8pDo|$PU$(#SZrkP&@3TL8+(fA&AlliR{o@ z3D64Z%`^k)cTv1~hBipFSKugTLZTKf7=(HgA3eF*ZZB+0h;EnSVfr^c2)ksH9*fhH zo86PyZm2rD0aQ^+AyGNHhh?lZ7(yaOvS36|%QqTqArZT;U~_L{zEf;F_UMVGw<4E9 zBGy2`YDaHA!v`&^9a>hq0pgu43v?>}()B>W780@PeT8WI%yzyvZKH*Kv%wY;v3(Y{ z)AwZ-_8$zkkcfSbh3)ixuZ6wJU<--Z*@E3MM(c=jcSN~6qTC$^Byg*)w6Je6*g_)q zc#Cgm&aF|q)nE&W*i$TQXU=PZ(9>!NBIZIO_C*%9)3-Hhw;6095xc-r?iMI_bCet9 zA1}(i4G2Bm4ng=960t9~u){~~4udTuVwW@fU-^W%^^GV|lp{|kY$=V*DM7|C4k~X= zp-v#mL&r>0e3o7_(go9)G1NB`JAcQrGn{XFp|Lf}L#>D~^SdOy>%@?UC{HtNDZTM@ z<1#0Pq88=p$q0<8y?)v4#E^w34~=@{D{aDkOP!eJjG=LfFzsJ>1k+*=l(M&A47FX_ zb9K86Jd9|^P_G>2sl}G;3~iD*)`@A!m{YN(H0q@@k2o={u*ZD!!#8Q)4t8SV7&D8E zAbq*H*N09FjSW#AKO;2lg#nFR>Y_DcW=qUTS&P1N+G(TM`80M49#poMy)9#CoS?G5 zR5cRK#EzkvNR%ghoDMegkIj{yDgWXPh#%#lud}S1T;8Ly*j2VtCrH;j`zi`?~ z#GWXR-d5M0{P{0VOh?A(ZS};5<6m}SPGU^>wn|5q*;eDuI~fh!UapfFLv59g#`kM$ zr#dm6852H+T^OUc)mJw9?{eBf6(T=02GLRdUWe3GPK=i^dRslxbsi2Bd!D;7hK@u^ z?rpU@_MqNDMWMAHC;VxG(@qb@&^ZHPPMorLy%Uq9*m?4yYgRZh)Ei(meQD?W!oNa+ zFUqle3S(&IN^!pI&{P~ub_|uep|+aL7`?5g-r4bUr=4DmxfffC^DWQ6?9z`>ZAN*1 z#+J&S`tgEvr=8x6c@bMm=G&;~8(F5*P4n^*p=s2TDA5~!=orzoGkHsA9=aw+YP^P~ zSZcZ(nyaNI$<W*(HK!SxEmG6N(Cm|%o`&WtsX5uuH1i16DTXFVYC0R5AyRXyp`p>8 zQlg=`RBFukFRhdsdQXuk`~6ZAV`yrn#(YE6eyK6v(e#znm~V)}OSU<6Fzj@Zns`H# zCN<`prp8N6GXpb6YRtDtEtQ()2IdZ_X=iAjk{WtTk`P~)n%>Y*OU5!2QWI@xewLap z2J2)2)w&v*bg4-;GzC)A%g_X+hTae*OzLkFih@S$d`@Co7?}5@#(X!|Pg0X$V7kfX z+uqQeBQ;G7O_AQj4b4JDgLggkA25hRz;93!?^e<^N!TGYDQN;jN1UqZVQS7280twF zGe|1<sA5g(z*K>uo`f~};iXaktZJwyVNHJ>MB|Roq)0n7cCaS(j1-7SZShg<p!2n9 zXgpOdH#RgF5;@UWATTmKsCQkXW2hffG1O}bjm)4%<Dk&!ESeFqW`M4t`HzZ8&@}_} zvbWbY{dLPU8&uzXbviWW+j3&3*FMqRSgrX+S?`QdR%`CVEXo5lvD2!yy<)QT_Y^Tk zSsA*o;%m^e7hjWP_}V9ZF-Gy#&*95teJfdvQG8L=n)5n(Bg$!pueMZmNQ_Z@VWJ6^ zUatBx2YzF+&Xg?1D82?Ti)T2H)}Pwu43jlQvKXWIqB=2s-Fy1X<|gZM$zqJ+Yap}Y zX^T(NyZNI{)>_G8jN*%0jp^(7z&1CUtQRGVF^Vs0M`jFD4>!KLhY`a=lEoOs7ahT- zuQjJ#w8><}QUgR{jN*$r3-M+iD%b7rJ#(YU>L*!@QGC&HX8Ia;%~K~#)<nr-jN%JZ ze2cFuQa%`GvKC4fV-#PQC|G=b7JpAuleI>&7^C<)n^}5&Rn#_XZ?g3F`7lQDHAM0C zUh|(8nXE(77h@D(Lk$)LZE=^zU-dNVt0hf$kQk%*8V0Qy!z=o{+RbG3mn_C8zI@E$ zvkXYR+P~b-WZ@D9Cm*)z8yhl6V;o=WCMGR6SqmkLF^aF@%+h@=JEzMWleI>&7^9SH zgyM_p%VgC_7Go4&natAb>&BhetTtKt+j1DA_!_DB3btR_-DI_t6L!WZzRqD5%^yAZ zoXFhU_GF{J21piT6kq2mzK*VMbAid4Bw376eEAh$hcdc1JH_yIiDWTG@s*|cD!grN zXOnfiWHCnZHHuksH@{7>v*GI*sb-AgYqa8P&6Qh<OxAmn#Tdm`w!_z{hOb{Gi!q9? zF%DlQ>lB(GATdVqbsn_lSoy&_=LHiDU*|~{V-#OwnWc{@D{dRt%4AhY7Go4&IfgH4 z8=Ehwe9L@~$|}iXjN)sY;)~jb$=V`Wj8S}zSA6A`rpKA@=6X}I7^C=_p!llyC!cS! zevmB2D842dzNnucbLRzTn5+&o?LuOV;%gGLX1|d)Z1O&nHAu1;qxd?XS^BY@bkCx% zP1c2y#TdocWX0EoV@F(WvaXOU#wfm~Fw5HJn;UK8ZpmVd;%lnni`u-&dQP$!qxibO z;j5kD>s`rWjN<D;hcA;AMH5UU#wfm~L94d;#)hw6lEoOs*K}rC+q}sdEm@3Fd|hO) zAn;p&%y)pyl`O_6zH$u~wWtYM=L|4e%Os02imw^WqA`WiwIlMs>tdAaF3FmKJ?i+C zM;c@N>UrJci%ixI$zqJ+YbLXFU-Txxu7<C#B#SXhx$+fX8-8i@xXDVO&>}HL@l^n= zSzlDHWW$&KrWeL2z6zP8*Vm4k!N*M2T<ME3imzFUFDh3r!`GdX#TdocY{l21!w-LC zvUW=rV-#OSim!7vKJGK$+xDYmF-GxKtoW+D<%8}ft7l8>L}HBM>tblt7@F^3%#kd{ zD8A+}i?TxPklKdHx<s-VqxhPu_@Wq^Zyvr&vKXWIDp7o$b?$wanyeQji!q9?QpFdw zjRd2<K9wxSD89-RU(_~CRzfT6L}HBMs~lQ0hF3iN!_(~zUn3-oF^aEw%+h1H@!Z%g zCaYYs7^C>AP<&C_FyHlbr(`ik@l~n#qPAhOc1RXufWsnlQbTeh+Gw6Q{=*xgY3tB* zRW$wa4Qua<Wl(Yh6@_?*_@#LTxuu1dxatc_$^#2s_slA;s0_I7nVT14M=9L8GRi9o z=ezExEX=FOFLK>g8fIU4n0>_{R=8)QqELTXjw3$B@-01%9msiMMI~Ma6ADmJSQ)4& zbHva+=FqxE9D3JyL+=)CHtviy)NYZ6+C5%mCgh$FF$Tvy!r0*+Ut+ifkMW^ni`|yU zTGn>YFDogp3KVLxrnq&J&b1MdV`MA83RM^yP#MSz*<#EbhP7jDCb^;Q$s!r1WFb&k zw<5^M8ED&qt?zbqhn-5ELIlAM3uVim@!Z^VC;0Iut+|C2BZ><1=is$sl@#XUz{1>o zQlLO(bBYVCuW@l4Tijom@1+Q_U%oKFR(P&=ZtY<Vi2Y#<$krdmgpLreQQ%kaIP$4u zcyYg^@EBo-U$N7Go$#12h0>4dFr_je;fiH|!j;Pa2}}I$A4kCqkg(JMNLb?6r!-`# z0Z^DA>D^nHAQ=#mA%16!BSQvA6s-Y}u;gB|HcJhF!iC#r$vxZ#C`^!KPah^mIwFh_ zIVyxPq9ei>;SnT^39&zn0c&Syd25iPK2=;8gZk(cCQ}B)-3;~LI5IHwxZAMo4{1OT zooIcwK9W0kp7JDxXu=jmi1uqi2pf*>&4Lg%!XZKyBuoXvLAdH=|K>0qI+&4EEsPnp z7AmF&Ko&-}A#)}otJA4>FFg~fgvLPc-X2_V4H*=}c|+zTDvU8}=pxCbJ3dke4dz-g z-*E0_g+-Ea2h=^!vPm{z(SZtYEL^d5Q(+4WkP;bv&gWkLA<-dosTgk{w{F;wh8<CF z;LtPTjt;NE7eQHHxn!NCiuq~3GX|XLwWNmLs59uSlvMH3CVHdJd!A7buAcnhE1EW- zi8xhvd!x>sqs-HImR#PbQ;Qux+HgL+gUNbRCvnNmlcPy8liQme2=}}juA(3>K-Ujt z^5XAy8_pN+^SSx`#D)vy_lO(L=63-69<$*>`R$P{Gb{gu^4lvyT)zl$XSm^P<)BNh z={B5OIobm^7Pvx*rOP>?%CXR9&keT@{6)Zd$3Q@$`gX(J2mLf)8l6X|(75&3Hx!tU z8o<%dEnUWH+B|$HdGK-bOZF}UrYrq|gcK@&WbZ;?{v>hX>}>^R8vV9}6v`g?T@B3H z^lK7QC>;GDz5tlVBrcra=YW|>8AS?bZw)YSOI#>>#Q&?rut97%eztbi1^UlzIJb61 zKS{;l*R1LIP%_$;&0a_Bn<p_0#Kz4Y<?lKh&aHl{QNWeJb);Xnkm%a38;<PVAu)ub z<c50#`gOp~r{BGhqVaLVk-aq%LpVxqII_1MxP|nK7*aTU>m)`X-R*sd@@@cbIsNK| z)Epl-ztp9D0nAzSI~Nk=*9}MdN{JyHCC1IHtQ6nG_A2WaDKFM?YVG~=0_<A|d&i_r zqa6e=4NWR3)y<IK#`J5NCAsB~s;mWYc@o<c-`#NYq2B;ZXZo!TDV*Q_5+jiA_NW|Z z0k^3Ed#!=11Lk#!3wOM|FEQc#F2v5i0ymw0{X+^@j(HLzknZJZkDZqQR}+D~brING z1bZ8RJB5B{M4}&n-0GtY`b=ORmAFvlp#1Fw=Dh}R)LxEB3`9<Depg}755TRMAu#ka zwHuCpPJ9=bVR-`AI0TOT&XX8{bhk&hm|p_ibu$GjR6D&DyY~V!n=*hz_TBPF`aenx z;V3cA)}J0fNz*n0x9&=TnSgxwv>eC0i4Nuuf_R8(g}_CHut)JKml%PR{j<$4<!^xl zm*VSd!%<wXi~vXRTH=PY^&7VUcO7uv8VE>6Iczw}-%yERAU1CCBV48p$8Y4Ym4o`( zQ4SpDr#4&*;3h_Ziv=z>0$fYr=D6W(<)yeR0It>b5Ri<x*z!klK3!rMh>cr$soqlE za5ldbzcd@ptv#0mHx#%(Ni3SFYkkB+ztv`s=LfcOkl%U-&b|G;;)b)8V+=C%8gSl~ zFpNa?=+<7S9b7Llgrnq^KdRr=5#Xpk);n;{a*(|T9XMzEiv#Y72yhg?9S)q+FU?n8 ziU3FD*c$<k?v~o`z&X$J%7HrwT+WRUkV3T=>aQ-47zSb!YCbvBhI4DDG;S3Ew_jpI zjawAIBX0Iw+UYSH&h2=kIRD^=v$a#o-_O8Zd=mtuP;sF+2PB4p*toS*ir*Cx;HbRI z95`otX$4%+fpfM~I=*g;07vb9y&KLJ7s}se8_w<crG9OT4d+%LgnK#y9F?QifpeCZ z;=DTo9L4Xo2yhga4<p2V838U4_I`{2NBv9do3XJZx8tn@`@O)`NUU)j*^ZCaz^!w$ zXTwpP{~RIi*$8mdkJm?lBftCHa4zldJsZxg{ZT*pu?^?e{;0it?!Y<wNs99~z~%k{ z0#c|r)A3O$F$~1U%`f2=y5Vf)rCZ4s0e47ZL-j+{PQP*3b1%nlz|ElvJW{A~&~dp) zVi<@`sB$cg07w1gbq<{K_@(mQ?7+o4=GhdNKLGcu#2Rt2#cv~UO)+WPOcOVf@o^iE z$lmwB<kE=)QYd>=Z^aVBKx{(UD+BI81ol31vu8UlseTXHaG}PT?;^la{r=*>Ima0~ zE<LNUu_QOY6qi^B&S{V0-^LARt2Y{dI|8>{Vnel48qe=^vuBGR`CS_Uj^eT*0vxsH zha5O(dnUh+J8<rCdBzQAiwniM&W3aA|Jnk#%Z76sKd9Zm3*5-tARrm--WETK%UFqF zAU2`;gNYH~D1H|>aL)MA_>mt0j^bS6z#+~q@e9~+Zt<gW;ZhsUt=$vuYB!wCFU9#f z;J%gEP;sX6{u+TjY6nek$HtOE^+PRzn=i4U{8Bj<+w8fOm*TwKfpfNJs^1$NIOljo z<ydXQxzz{Z*4S`v?T^Z_-hp$rE5beGhI6U6$AIg62M9<;{A@VN->DMAKx{(QM<3vB zvD>p9Z`ALuwb^s4kKVvN=!SF2-<vjEsQkSP+{imcDZ-U^ti%Xp=<-ei?zsr;)w|iV z#ibvdy<)?;#f946uMyy=9W=R1FM;^$W{=u^D+kWK-6uG3&UR1zK^Nezl~^Orw(^qS z8y)uC{jPT4ob8_Mt#jbq?cMLdIqgxqf5d@v+9TW(5#VT?c{W1a3lZSR@6HHteSmw} zfpgXy+55?cbL+3DUGb`%^j9WsSGMDl+Cj`3T>Hj{lF<%qIP!a$#4r$>P=2qn;oRCY z9Us*Z;HbUa<iMeRZTX{e+y-2uyCEQjD@Uxv2&8+zQHq^yfLkoF#{AFbm*VmVH+#0@ zi0b2Z8_q2*WbYma&e@(RF84=>+vJ9`m4oKHTY&4i76Ot{URyb6zB_0wA<V?%pv@kY zW5`+)Ly}v6Pku+N#W_DdlnlQv_I9jgh_P|AN9V~e0XJx!fQ7R+Mq+e>ZuTz4&I!Q1 zEV0J*c9;AeiNGF}_ZV<9?rAuG0f`BhKeBfzaEBwX_iF_9sNF~X5&Z!^lp5jV78k1D zWfDU;N}+JU2yr(?h`TjH++7jk{um){V}!U(5#k<?5chP1xNQ;QcDmtg$9a3y=gT&n z+xS84;A0!ktsPLiIt<+8^$?JZc4hOMgne@)hJo0G@_T~~=jNA=k5#}$-z%&cer?Au zU7t(@rkBKd@SW}1@^>oqsS+bBhR)vwHk@1jD1I{{#LbEjH`fhkD+kT*D{MHo@#u8m zu5iQI;z#A!Xv2jn@1_WGk4K1m+6`wbZ%^cJn+@mIuBhFA3fwOe8>+ofdE@WH#**C1 zI~@(FJ#dv91dy)#yWwU-e*&0U_X}Kf2;8&KUk}XajRMy=1g;Y@eg!bA9~8K_5V$SS z_k9TWqToX*RQ{@9ul!+6`(%^AHN_vda*RZIdv6Bz5rL!YhHkhsp+5vnmp=<!sPeXh zy>o!M;8B5#3SsYK=obKU;bQ_9DlP@sT?5Q9i3??q@*Vd$7QDlUQmA%7xPHK-M}Qj( z%!Li$@?ozGn0*o#Dt~VPcNCcIRDnqC@ZmTwQ17=r8Ty(haBSj3iTX93ukkI<tl|xo z<56IqmpJmvIGa84^Pa>oQOCL1I|kgZ5!marRktMmhRR<*;L;^FT>hp4Q)0)t<Sz)! zt#+KPyz$7=<G^gU<6P{049wSdoXsAc2ef=LvhpSX*G*zWm6z&mScLXQ12?$=dz8Pb z2<=?~Ty+HYHbiJ|6L3#AV2|40TM^p(61X25ut(+X@Dw(d6srAo1+KTmhN=(BUluUa z?KqeAav3n!+Htn_LiX+j=1Duw#om5kKDOg*_NYC3p2lyx_)s#+;bN~JFzI%j%^u}% zDljE>oQu66Ft^%qHhW&!dmNZIBraTk^#L$P8n8#@ZT1W{mK3UfI|A2JVvV@i@<;YY zL}+gUaJdcGI~n$_0OmG3&Lw_N08?kjx#aIdV2;^wF81Oundn3l3ZziwJsJB30W-;t zbFo(m%pyC^mOnb)?vfbtODR-++zZ?z4cMdpZ%>5w-U05j2JBILZu}hO%1oj1*Acj$ z5*sRhWN!p8lkGT{_*DUOl^th`AGN=`f!Soox!8Ldn78aWn?0(JA0$REaj5d10ItRJ z0u`>jy?_~F$GPP1LSSawakl(Xd6xmR%8qlf_b4#W+i^B~R3Gn2Ohe^82HdX^*y~h_ zIUqiijJUYuZ%i%vN_;38I9vXxyqDBsT)>Btfpf8UZ!L}wd?*<>n?0)EJ+*`|Q>gmg zUyJbrA4=iudA13Rz71us8E^>_8_r&8g!a;bJ2wJ*g%R2-0d8Rg_HK>P-rc}G7=gWA z5!!ndxc4Hk_j82yqF%r`4L+2@)khzR5y;T}^BKTpL|`vBLVL4;tBk<jjS<?r4Y+$F zuvZtMz1_g=kHFsFBDD7_aLwvOl*84>sS?vree?q^Jpy}EBea(XTuB7>f)U!g8MwP6 zu=i|)_O=7}Y6SMaj?mr@z(u{-aD8->n1<@37jS1pU~fW%_AUf&b_Dj8MQE=ExZ5JI z_e6yDo(FDs1ojR`Xzv(szeZrM({{Zk#NSZkQ4iqyNo*9LjB^<;$3$pv5^#AD*jp5# zy=#HHxdD4L-+d%Pd(Q&5s{wm7Klm&{dtU?ha|HG}?hy5$Z$s5bH{kk6Y^eH3hLO?0 zR7#u&-$U8E0+{Ls>`{3)NK8Zd+XURx5!ibxLVF(q_hkh3TI|$wCjN#hZ(HEHN^Ge3 zCBnpz2<=S*F0TQ5G(TMwp}iY`yQ2YnG#`Hwn3wH1m-+4yV1BUUY{xI<FQFdiW%y7s z;^Ja&1TbUmI2U^*5+f{zX@9^~H(-y-y8)P|?KqeGy#>rCcAQK8qIThh5BN|DSKj`> z46);E_9%ZBN(>vsCRF<?1Mad0>`{MpTZH!R1@4gs?8U&|o(S#j2kzqt?0Np8msI=> zRo-U6B}l9hXIuOzf2k4LO9$@U2<#O`Xs-mgg%Q}hH9~uL1NUGA_I5>R?^WR5Yrr10 zm!BiF*K{}9JwB8|)d$(@FEI?nCRF_n0WK>7d$S|7R|(vr2JBILxhq0@_X77w1orks zXm3AoA4g!%^O7Dp@i$cbngN#}v7zdNkB<oLr2}_v1ojFev{wS$!U*i$8lk<rfqO6l zd%GgE_bPDjHDE6mRq%6!_L{zo;{zW`q3VO|^_Lh1ViT%<hX9uqfxX!g+N%U^Q3Uqx ziqPIh;2w{_-fI!s`vABj5!h??iXJ)fH&px*fa@l);p$^pg!V=QH@N|Obi7qXXzvQ( zs_ph{_fbT{-Ub(YSkkIr=E!q0CS^~|&Kf?rdsS6&LEpK>GrLEm24%#Ui8k!m?9B5r z#*CcM-Ahi7;qw?i^EFRv{Lw}Xo;C@K8CFi4v#_GDbXsQFC8cxA@(L=aU0hg_H+ODX zexHGT2lVZ4|5{QxKYv<zMcKuL`GLx5^YaI!^gqMEOj~f~z-i+P=N9Hw7WTn{V}auQ zY59S<eamKEtPR%AZmrG4!_WL~t(z_q@7SWhV~X=D$|}od1-!}QdwIu}2Z~FIFD)*e z?Hz$-f{U?Yt+urhGF&INfy#nDL&<ibcgPSgzR~i%fx_I<vXbJ`ytxWCr7!;VN$E2? zCBmeztzPpGqdZ!>%zL)Cl)qGJ!NwHF?DYEiQK_|c{u=&TM_C<(O|(W~rrSQErB#3R zw4|8H{v}_e_-k4cH7od*Klsy$1d{zrE>9}bs;1N5a;<8Tzj$msJzVb(HcrFt;6zV! z^~5Bvf7v^MGqQu3Ni)VQs}1xX6V$Sn9FGoow^9}RYk<g3uk{CaXUC1GJw$e~#ySqd z7S(N2-#OCwX*&Cp&V}1xoj*7&$>(44VoGiuWoj8d(fqoxdvJ(F^UJTVW!*e%-)G%* z25u#!b*!@#F8CuAOcYTm+)P=x3pk_x;2zH5(%L}Nr(40$k#nhZgN)Mki?noch=;d2 zDuNQyQ&sj7(w#IfaTzKgi4xvm;8sC$lrUuV&5$LWVyiws>MzExSKygO5l<IIj6nrb zM-#dNWBvbx8mu(RS7Vg#X0v=tzDORkY*&>pdr)>#PSqekqB_NoR@RdWH6uFEd@Hpj zG?nDKVEmGwP6T4P{!(jMwUw$+NZiT@HV~?p?akvK3SRtwXYgM6rvxwYKRtL6bd2GS zEbo7M`EX>>F*HT1I)#rVt*Q$hX&uFp)+RVUCS$WlIhc$?=u{j+Z~s$TLGu6iqck#A z3~G9p;}Rt?Xj_MCOh9;wP}x@>xG@CF`p6D$t2$d&$v~=-exgc}gQH?F@*?&afZNsk zm+h-+a?~HUtzCUqu-?6*dI8(J2@RP(NY8PVnb{aR#9LM#$klToa>-++zj|&G4$wf7 zcXG!088kic1}}y4!*T>26Ff%7G&z!@Q!dJ`83Kit`VRHZvnc!JF;x?@gYnrIVf<s3 z?F)<xew$s>nXX-q3GSH{*L5l3G2ifv3BHisyEd-tV)`DpC4P9^mRPO#t5r??Cu&jr zFTqVXu_J5AwwN*LyDxu*XAg&Qo1~ULBn8{bY$Gar{K2!2`<I=lYUL09OtCo|VLB1$ zu;jO>K*!AB4u5dJKln1o${gWKE!rcU2-+(6rU|RUd`M9ItFwZ!JN?z!RG#kxVMk0q zraW1}S8P+BsI2N%GK6~Q<|gIn^POM-W80D!y&1U~7v<J<L(#;vpdTbL@kxg?gllnz zA^i!Gm<-WfnWDD;3aOTHKS6q)r50$IyIAS~sh%ZTa7;`t3Lpt@7ef-03$sC>EzCt* z;C3)RCM)=(5%I(R;K_S2MXKsT;TB@snh}UU&ESG_ll)Yo+&XGZDO49D{3vFQAMwLr z{u)<BcCd-RIx{H^vqtNrBaLT`dyEkBNPi^7U)_|ZDpP2#*^LjAn5w^G$^vV8MN!@I z(0`;6j!O7Tv1f-`p$HY``r4Bm3@W||2Hg(*6zl$LLh!Up2%fQp0F%W)Qv789RbTkf zMuHchLpUZ|Gn#~G&|IPE2jZ420YtWv;A`2z=mV+mpvJ1&WCrVwX2)%d-ivQ>OX*H} ze{gBi0{Tk|y7SM!<e8+!P^85zy9Zz6;<fCWY@B8U-;9g*$NOtmB-N9;H73|`@jh={ z>+GbIZ?G$cRK9QMdk*IV$|CG({ZP_!wi8c$L7A8|g>XegS%7vKw{$-s*~m&cJagXY zM;$R0PK#Sg8QDrFJv1GjVr!YAN4kafqUS*V=#Fe#4r;MCF5Z%ZKP1tKN?hv|No)D< z(xlD!ONU5~B^!YeG7Eto(!Joh<={w%xYqbTHa@QPxn2~zECpv*JOj3#_hi@HnZ)&1 zmleD)J}X$6m=*jux2_YMiw+<OlIU(|__&`N0hL@FFONXl$-0gxq&QwuA?;w@9fqzJ zlCZY}lI?88Yi~Be1nSA<=_<w$kzs%OPyV=b4(MGapBAQw{=_^jr1`(dF5T8Bdcq!% z9)a6v?Q}>Y8-pMz{hBf0R`EID46W({|D56R<+}4=EE;?^bu_!g31AL&Ir0QB2K5mG zi+Xd&3hq)nDn9GTs&3|(7EmrT`3(GgNFsouoAFJc4%P_GTcX^-#vGdT1DABh@x)EA zcsHGeFFxC&1)BM5I>U^Ho=%UN87}m^7uGeyUJ-#dkVK@Y`xB9($`%q?uH}4<fFu}M zkYv@F(c)PzqBTX2mKP`lD`c#q5vyom!pABjY^)}NZ;h2XU2@hQmCpY!ti7xyKPD-c zTj=`hi`@L=_+bVwUry{U3=T(6##daH)FvUf+kTI>b`mmjI?w+m+u|4cI#Cw40lH4~ zs(TTNWfAh^T+}E<6pHja6@(6QkuhrRqDa$?B3T;4RGGPPvM-^D#sBRH_Bf8<4sh(n zCz{{AD_Ujfc$(MU-nYh6KfT1T=6Y#riWZ2Mvzv7NsuW#{8b*^J?upLOuhVpwJrQ5C z<AK3`sV!EYuh9i5+3aNRV(nDju0-`mLHBdtJ_*t_T<ijDMX~AXl+axXNpu=ZA&E}I zy+fl?;jFW_tf?M!O((~{BrO`3+^C+9w5M{$h<-236||7O+b|drecCu9Q`G*I-XHPD z^_u{l=3JiS%{U)zC?zX+j7M#M@Ic0Ms4Ok$i^)je5$KAEOOwp%%9tauOO7|Hir+aR z1`$DjHadp!!4Wy6ZyvX$G1OZ1h@54$RH`Ch+^U_v<*-jDMU%1z1(M3E=F?o-7q=x@ zxT={FBfXpqFO4&+Q;)PDW36^Zv5(+x#(}WixAaSzQTwV#_^UAY5<6%n-N(3g*8^>0 z404<}CT_$IzH;XezQP8??76XT`B0h?Ps6;N=ix!r1%|4WjEm|zBJ2COrm5S1jio7& z9>gbFqgoYvA2RlChqRk<UqTWs!no$@7|3M3Bht8Xr&XQj4`QAsYB@XTLAwpaK2P;u z*)$_qi}CCPV%FCmY)J!CaIb#87`Mgauc@Z-Z+Voz=0cBu$>*M`&yO^Ip6W|!+EmJv z;LgzV1!~%&os2i6#gIfZre<wzF=RiI^go<?l>X7UU^sG3c6*WHnz~vO4^f8LrKs(G zm7SI^|HD~=VG;k^;v$Ofp;N+$(*JPoVftTO{udXD!2jC8|E(S9?El44k3{&t_Bhe3 z+%4I0ZWz-2vvGDm|ET>?Jl4DHbWz!}!r$#U`*&9ol>fuIN9OmAODOxH^!8lZarW;z zK9pYHum82<?B7G-bbYA5q3qc4|7|$E{Qqs`{$F|Znpgk+FD`04^l$$uaiQOLB1!)# z`3;p<d;aJbqrWHF`JuS~DY*Z?m+wD4{{OE0MS7hwRQs^E-+wmFZeNd+U2p&Xf5p+S z(|=D2<=<}Oza1B<{Gs&!toTKGojuO(P=2@PkABN`OLknO=jV2wZriSpG=GtnH%514 z`)l{x+_wMs`WmV~(*03>58&g`yx8tyiS9^whb2F@Z?Hr^6@I`{IktycT8!;SEUm`2 zF^cHX?uYaR>uRy3r9eG+{sxOIvhEPJBUpDF(l@M&$M?~!^J4oq)}=uzW}P2f!g{nB zkZxxk-NW@8>lQ=W$I@!r!+Y<?_FdN1LfXl?z1Xf}=@7PbuO$8>G!L^B52+PP$&hxl zlm@9aOF57}WN8K@y1UY&Er4{GrR9)LVreZT4}G-F*mh=JJxQ!PKwH)wg*2FT^n{<6 zb%~J1ur3)=57zl0&0<{+q*GW|1Zf`Y7C;g)SP5w{>()X#jd5EcUBkM1NPSs%5Yip2 zI|^w4>tZmxY-e2}q(Q7pf%FFJ{E*IL-3&<Yu&x}^IMywP^d;+7Lz>LG&5(XzT`i;w zSa$%@udF)+iEatRfBce8KY)9*ct|r?mkg;H>(U_Qvn~fx9P4I4n#H;WkP=w89MW9Y zt%cNyb(<lTv92CcH`X11RKdEVkWOVCz1_Epb%~Jrur3*rh?NggD(i9}iMSMz#JUBL zWb7f0WZhawbep3`+Y0GC*40B2b$$@iWY!&pbQ$Af(4|agT_U6_S(gH-m~}o#SFvsi zq%zhOL0ZbX#gHyz-AYK;vF?6I_}!dx0I7y`dm+&+H6HCCq?N2Y4(Sxu#o*w-nRQ-B zbT6GpOM!F?>-><;V%-!-cd@P<(h$}yh9vrk)sRN8?tVyX8CMI5ZZq&`^^n9dcmR^9 z{iBfRH+evDdb5EUiIAv|@o34A9$=jhQXcDaAc<C21nFYdEr2wGaVsHFujJ9zLJ}=! zE2R0XtB16iaR(t?&bp(J7O_NcX&3p6hx91pk|90Ck`K~#jLU&UH;s6-B1rTI6M6wi zFR*SUq}y1x7Sf$8ZH6SQ)I(a&x&x4ew?mNjFgFI3_5klqgd`X#km$)tkLH6U7&(yM z6*(Xr?_B^%9AzsZ)v<0Zq^}vb71B$rtA{j$bq67R%DSVFM66<B@qjYx5+QxVxD-e+ zEcqb)jio7&&Sa?w(s7m+L!v&~qpgJWGfVeFn#j^tNWZbP7t*yX9fTCk{lQU4udpr# zx5_nTofp!2)}=sd&N?5Y{j8e;sU_>mAw9vm#gM26M-Cu;#Jc+-wPjr`q_<gj0MbdU zI|}Jj*3sJ8ABmDf`hs=Iki3lZLF&L#4x}C|6+!CH(gH}Lovws*F6-7pI)x>=L47Jq z^^kh8bP&>9mX1T}!%{pZAXjq^ypY5wnFgtbb$&xP1JV`DD2FtVrR9*8u(TS|SuAaa zRLxQ?q#-OFfb<MYhai2;mbG|1CBV9PNWxw+Bp#=<G)Tf;4y5-PHv^Kew*b<2tXmFA z*jo$fC)RC-B<$5g(zus807=+83aJU}=wVf1FA-8K>yjY}t`AZh*5yDF+#*OcQsT&i zB)BUfbz$9FNHkWX|AUmox_U?xSa%T8X{<X6>3r73;G`slb%~Isu`UJDnXL0c%4OXY zNW)oI1ZgJg7DF1%x|NW`5xN$VpZ9KsG>-SyLlPxA2<ZaW9fc%H6oY&6X0R?1k|<FM zq`9o~K@#4kK&oI}5hUSl0i+`Kwh|J}2Qd4BB)ru^LN^QDUP!{*AxLz0qenXqNqCEI zhnCGcFQfq5OM}#lb$&>~+Z0Hpytf?EK;F9?(haOz3u!RxHbW9Ubv+~>>kdGg!N=B7 zNawIl!|jZs_eq45&AMbrH?ch*q_M2afwYQsMUW=3ZUH25^sIz*A?wycTFtnvkY=;4 z9?}}t9fVZEx}%WRu`UL8qgApl5z>0rr9fK9Iv=DBtjmFP8cRix9$;w!q`oYzg!C{= zYatC~iEhTDIUq(qNW)n=2<cIljzXHvQVc3%3rmTRN?1yP^gK&GNDEn-0!h?D5u{65 zw;0k&&gp7MyIHpx(k-m3g(Qy41CZ9S?hvGpSke+vHkRT^Vs0{|M_88z=@r)HKzf#S zGa!kGFMzazb;}`%h_8jThjp7Fy~^BLNZVLC0O>=PjzW5ZarCtJUs;z3sg`xgkUnEw z8l;a|mjmf@*3E#_h}+NtNHmA`Xv-m`vu-UUF(cay=~mX&L;8ZP9Dwv^)*Xc;@~7d1 z^JCT}LK3sIWJvAUvJaA&apypKfptZY<dFwyAL}f)Ci7$TxbblkJ=2#Xp6Sb?+a<k+ zkO|zo$ajJ+Iqu>6O=EUO!8x9icexqVxc3uxIC>qoC!YeExKnc+Byk_-R7m1ZO)MEO zb8caQHfwHGWsz2zS5m0u<p+xA7i#96n|M^79(u^~<L*#As&yhTjB}VBY)ZFN`}sMo zUR$a2pj%AoQ8(+;{d}h>-+U=<z4TW{(XF0%Y<pKAiEsXlsd~pBY{oY6s8&2bs%0UF z8&u_k9yB@KhOR4G%Y-EEF`WnL1=ejvkhMB~q*3DqBCzU0fhm=11%;;CBA5RMm$uHO zv@fzQke`=dRH$L4i&^^e4d#;t7s&f+$NP8UmUkLhsSbx2w~MFhw~I&g;L1)9S#Y$i zQBaCH;H>19&7502zqqWb5`mssHCvliJa;aKRy;8%ZmZ4?&cm(Mc#QHe9-FL6O5G=0 z(^1?NU6qhgb50AY{2aQsS-%%q-pETgX#2#C>KVcI!EgAcYO!KLZJ;?7xIDTlHHZfb z|DhEquB7z~(!UAJPd_6C1*?!tKFrpiTYH7>4aber{1j<bFY7a<RUOP{MEyZLbBcSn zYo@d~a!L@(UGS5p@|n@#q!>J@8)%gs+%twAK-JY`*!ox&-Hz=OPl76u=#Gp%z_m}q z;xc@qH9D@vgFJUb67}&Iq-%Nai`a^1wWxF3$XuGJKgd#7NPl6eHzZ-NKcsc6o11s( z!d$GgGDj2Zt>osHmCn*is!B`p%DLU;V)>WZ`T2%iReA{)Akk>KlS(Zxw^FMLROICs zYV-5v&aR+6mJU#Dp)|kzzqL@Z5T=DL5JfPLlr(BESkHu?5y5&U<BX>w@FXE+#j(tX z^(ik}#Ki3>ue7?XY7b{4t!^s<i4wn<R)?Wf`x8FaXGCOYHM6WDpcPbBT0>(zwnE2l z5_qnWiSR+HogT8_h)fogqOHuGots}&RXPXVKP@3ssg+k%%r4ZRE-0=DEX*ybnu{D3 z=I1TU#kx0zqIPr3QJ(=B&5MbBX<<c~Hm@qLBCj-1Tw17A6c$`shQF{QdaB%#yal4A zlvfnaDweVwZm1W_4HQ)r<`v`$6_&Co4iKAnRpynH&&8;;<O{vt@cc2aLo-%9Y=fc5 zz1FN@3SDa%F13b<m-a9|(b{NhusA;`d|?HewJ6Z+f~pdEM9ktPei(yAhUSR<dHMNO zB{Ep~C}W@y0j&&Flr6MYJC_Jk0<%Q!&nj6<L=T_3wZr5(y+p}IJ4~*l5{U<=%o1_U zqP8jv1J=yo=|g@nWAqNRK@T;+!N%Z`A_fl+p5)^uE+2vok&hi7aX?rzLcNz9IjHI7 z7L}FFQ4WEBO)N%X!eFi4%Hm54wbF{h*_B#FRcS7N4H*<ZD*y4II1foPD8}RqkE**q z4~BlLP`3Z+`txACh5;_pXh+b1XaqY^PY1<6I2yJH^Q;xdXCFN#lv{`MLOE(+rYuLH z{*d0}@nbk7F$yh&B<lMnNMf8>4M~hMmQg`zcE4kUMeqA>b4-0(ao$`sw*u-jO9SX0 z%Jb0cTDr>8nZ>1*T4@pgvE<Yk9e(GB8tLT4I$$9mTIpOI7nK@qkux4PDmC#}D_jsL z#1Jnc>(Z55ilEf;@7TF;w=6nmqr=9CA_o)9V#*PJkzvefXh}J(v_Sj~mD}I3O`_wO zSA}7rQfBGjkcIrJ3hw<%Y3h!~$LEEGdWK55@{vvcOIT_Q|AuV-+m2q8S#R}c>#GnB z9qjE{Ik;!RVDCA3SPQVgn^%cd3j@VvrGvfQdscRD-avK!j_v>77AN7jZ{KOg|Kig8 zxm5*)#zKt!_<+Q6i2X#D*B6%`M5loXs6Hv=2`J_!fjrD8m9qz>2l+jZNii8l?@%zm zxDsdEG&e5LN{}Uf3u7g98`|7FnlTquVZ*((=p|iR$Rr#*IBTbiF5djIf<iBUEiBO6 zh~BvVZO0T&<oWUs=7Yrrg_z;XbAo?chAfV8Ie@36Ir7Qs<)I$tk8onT+&M3$6SX*e zqWKcDn6ZeqJRb{@;*iz~%ggeMG|^HuIv*~cZS4Wg!C9_{@H?$IK$9%%;EbiaoZZa7 zDl>g-nQ?SG|C-r6O+l@*c}F%1WCNP!&&Ln@biJ}A|M{Jksi4L*jL$H-K=QFP1(LN{ zS(^91s<tvXBV+#k85z+~M*c+y{9Ooz^MDtv=l`-b#y$v@6=I#?eDf&PFJy2jaRJKG zt$AIqKUurAFjq2Uw`RZo^q{Sj*3oHXMMYVK7gqpq<z}{b;)G1^EPU4oCA3jJuiQre z1sBU6;>?<D)OAsvd~QF^a>#4^ZbflcCoRuBv#gAMD6rO7nCVJo0p==BLqZd3?dOU@ zSj?*^<zFO1FApOw&a_79i@9*ZsBe;7cM;1nW92=6^>nOzSC!_kzQUJXU5HE4qBl$3 z?ynw+Rm(mMzAbyUk#Sp&iwowNLB6P+k^X+%vWH=QR892X@JGuCe($fziSwuLy`;JS zsiP-2#rc<fbkrYwfv?Q_dw-OAA`>fT)Zpi(kyu}3NN|5#SD!X(ma%GMc98qgQNh^e z_*tha7Atn(qQudxxNWqMQS3<>Cu;pmUWgf)zN6xG<uW&!n>uTyKiHP8ipL_mJF|i> z3Aan?V*E?K@>G3v<Se~_!LtwG_b0K=B}C<dIewRlBR-aIG)x4?X#Q0F5<6lRM9hMS zSr9R+DU7F;6{pvAM-=)up&sB2NaE52tr;UOsnazX^Ag6pd|Bg<(1}ax^ed)dya7pE z%s2|^S;o;%b^=F>qX`^ca2GgQCQaamL3)oFa*3QJPaehXKAJ!HR#guXTK~2W8;h`1 zFQI+(3q#CiEO$a{dij?;eVp)BU1dY4iS>aHr4wi;2!TBVPz^-DZ`$%QAPr3SvFqWG z#O1KDhAun!ZdUb$F<I4f;<KtN6ETW^;X~bK2VeCUAJ=fHNnB^bny3D#A!(rbiw}|7 zUo$p7v-;d<)Ej=n#n(%s{ZV}gkX<u2#$S``#YJ*|&AEx$)#qZF)1ArwogQj<S=E;v zg~LNx)gumORgXT975qzfbyPNfDA}peelAe3iDx7%NBKP?y?*=#=^2?Uek&5c8U>PO zppd@Yx*l*RYOaqVjes<Si+i4-yAjfM)?q2bWGWP|J|}{QFgHh-uX>So)CF78Wwj;S z8u_cAN%B%bi+53Z1(tvJ2}}_ne=vc{djjqM&Lp}$%U}E!hbCB`9jp_Cs1H*2;iuA! ztri<{8K0ma;ga4-`sF=jBPhMf>}2Ze<Y76)tm1uSB}4q&8nu69upS36*2Y<kTwu*a zu~y<@{?<BUF_t}C8`nB(CDfbaT4$`q_gZ}4jPHB#y%ygO;`?5FKZ@@pAI(~F*i-dz zM$ITJ(ONG{?vKJEtJ~yat^S&uq&I(!^fVlv{43*HkAf%iI2@kH<0yC{kHg`KJdT1V z@;LmU@Hk3(^Vi@Crm@&hJera$5LRv!#qi2vq{w3UWHEANF=ohOl>3()T5J~Okf&<1 zTuq28<AhjOubP`NjuTs`asQueOt=$E{)%Qcu))xYqsVXI=qM7+Zw@3e<+~En2i(-I zf%G~{w?o>%(xZ?B<6CqHLZX}I#9q2BPUsqAWDpWxCYH-^(prJW0-U1HUpxdB(Jjp7 z5>|5wYjQmP;=h;;u3D@iD1Nhye$;a$BiNZ5dFsBJ(Vpz$ZKBQY5e>HZHSzV89nph5 z{+&GPkO$togTHzPs4I%m51DCkTdeDfQST!<!%mPyH`@(TA9TWv`9`AqIUfC>6XhHV zNyK-gp_^<-6kie5#gHhnF<LdYVx6)ZAPLL2K@xuHcT&*_XJeT{Z#K@+@C$WzQp}{u z858ADJ0m;z&6wbaShe@5zJO;1k8>%rMWkA$?!z8klNJ0rtM^w`@iikGq3@YN<4VS~ z-03K^T*ec(bxe^<Gg5Wsq<)``WxxC+C;JDb#9i|^YIjWVi|pWM*}c~%-4BP^)$5a1 z<F6QM^+UiP9Fgd+nUI*ei<inyi}A;e#G=N#;+Ad#HuVIxh?GH>#b?*#$H!f>0#;MM zCkrOOQR*&(6=>qGIk^=t78#s?(YF2s)>vMAb|bCo2Y>qZs<`ancD<AsK00Ltqm%q6 zu!Po*WPkecxFvmH9<L2Z@*cUL7HM6J9ANe#vK@#XU48QDS=Co){&Zw1ZYl1+0T|`Y z4nD?fn;t3U7-rTCZ_aU~-_4gC$I`2B!VKLa;vJc~PX}jHclHMk4DJ;f6Ks;1);c>b z^HqOvMbb*(Gfs?;!8&ai<>Hp!LVP_xl#ghUk0qCRwW^Yg#ly6~{4q6`cx1gAwMb*C zTCYa^VZG_#*IZku=d2~$WBlnUaaWi9cH#tvKCyBdYB*aiaBMaJa#n>!InVKARW~{E z8qemAyh7vAUEIWJo*|@CNXK}}*AszS!+WoV^bkvQ$O~KtL-I|+aBNHnF)6IV^66J# zlEcTLUrYuw#R!d_0RsZ&eB0p$ooLtzAJzoy{ZW<}+59z^W4;;1tFBc~H3szRj2QpU zjCdN8@i&qGR!>D9rX~k>kEBYVt`1`$xeIQ~u89?ngV8Tgl;iza_IDJP{cSGucVb&s zb@ZT&^!f^72QsP22J5nEeeIfdJ8?3U5x1(=UtBM`AMUa;mq+u3Q>-mbs|f20+nuOO z=l-jr)_+0-LY)M9F$u(c0dc|vaC#l?%#xG8WJsd7nFL8p^hylfC6L6#;a*5$Qde*6 zrJJDzw+*W74X(12APHR$NYpDuYyBX-$9w6tKSTa_%0ZHoSw0fzhdiF!CD(~gRpW_U zGQa&K1-)dnhWjFAUq%-_9%q}UK@vS3ttn_<&d?`E11#2#zRXW|&m695tNUwC_kL@K zw_!tFNRG@7ngZt4#s1*9#MIifM(Av){sMi1(eDq+KnFtw#OyCKtx-01(So?Bj_CLO zHL;7cYGUh;bWh!NqziTiccL!e_Xl70$7Q~NRgq8R;Alm^RU7d8Pt^I-Kd88q?gvZH z4vxdA@4mnQI`S67_?RH>y2(sRfd#tTX92CKjPIzym+5;seeq_T*mtBcA6u3?hj3KR zpgY!zXf}xT4C!Kwh)!=v2RLFQA&G;|H(}EGSlk{nz|GJZ$Iy%Z>ZRQ2$lzrK4^xjs zeOXrUDBg@iQ}lQ}h)p?&M;6ee#YgvD(PJUJTJ-|XXEyYHUS3|z@^B<%({Jj&)P19Z znJ@a%;t}AzbS8xIj^{v}N`au;b?DYQwt`)+Wb?QY+|BE-TT8z}^pL6Y6zZxMsWezV z{-Ws@*3n6&IM3-0NrZw1RuPJMklx~;yb4J+QnUmtdaSo4n*OI4fxyqw2*BrV0cejb z@;aJyVi0`8dViu%ECSD6CjWp;cO;0sQ1cae8ExdnU&9B-VJI|YPB!@%NLx9tq4z)0 z!2T_~U!HFT-{LBai^m$0)}t}5wJ#<vel(_<{=~TW5twTFlJOl=O@A7`W2))%<2$CB z{wY{pe8dbav+XPLr@tDA+M&slGdeL7_g~U6`zpJodCy*vK?*Si)+?rL;%qM{7r90a z2j%%Yo%dGNj4kJkid)PAm2vb86gAhqamg*?AyI~R;7@X6FMmU}llh#5bDrGTC$wqM z=CJ7VBj1f@2sO%p?29aj?BD?P`svWa5RT)BR_+%k-JA{HyyVox!ra|lJlwdh4P}Ws z+CQ??6Vh6i20+@wQU;{US)#fZ(o{n#Fr+d=y3~-aF{D+Hgtt2&t!I05Biuxmo`m!; zOV2^NmnFnX^Ru+u*t^%*+tJ$;&-u02njUOi9z7!}r%?)aA>EG;RpvWj;y=>IycL^+ ztc}JOA;m!YjCG!NF<LwP)YEQaGp*e~$m8S7i9_Yn(}xCINW}h9uoGgmgg{Fzp&(XE znAk!~sAzqVSYnb-67JVF*g_)qx2)@iDMaIe)EG?$?G-qxF(Ji65)88Y8$Nn+v;Cv6 zEg^bNsO+YH(}S=}Ht9J}J-OLEAxa$W(V~Y7+?hHYe?K-#DI_XKV>pe{Jk6uE<^!8( z%?C8$$i87=(Lor6p;H`=QT((+3&CpANNX}c)Na0oK{rbahLFflYX@Vtg+Zruf*~Yg zbPx=#`&iU{3)DT@K!vFLXDw`+I0&|oh}~JRn>Ny#dI~ve)KBV(ZnF^#ArYeoGrGkz z(qaMy3WN3v9M!jwsJ;b*>`uZ*Pj0q*nYIVc@>m(6Yzqe2rD?gI+-&y~wgIu)g;M5J z^&sq$&CR+|1F3S(kajU~{=4Eqb~}NjC$~JOv+a&OoAvAvXs)#_Xr{&CxNgy-$@oS& zg6G8_x&~(U6(cQepH5Ll{RxT6n87wZaZR+if~K&CzXMv7V~4hdHZsvjDVRbc=DC8| zsfpI<&mE2?9Bf<Lx;&oqF-xc6FOBkoDI{W!5i!D}t%<KU(^{jCYCNz7b983B!K9u~ zFsWRENvQFbSh@L_AbbExNw*87v_|<5JZhc7F4?4Ks`TV$cdE481XomWnFe{+{;s@} zeR>C?p4@!ovJa1?KcbOHPftJ)5fu`Zq);$y{Sl2&da8vWSVAJ!9KqtA9z8tDk}$BD zmN35cLG08nqm4|v@K>;fMC^GY64cXAr0*t!z6l(~R!CH%f<bn-;iD%v+m{I25~Ak> zN@-2?AncOOwwBiJX7>tFVoPMb(g*#a{#%q%NaSUSS;~RrU(>w270<5;9F<Z?R7$}h zR53n!a<g46Y)gn&{v|J_f764oOE&4bFg>~1y@Bm|#>Qx43u3f*i~;c&1LDWW9wgRZ zbSnPR$S6uIBr5SLkt?d#Kr_bb4B9JjRAM1fi3NjD$(H!L*}g+5v2K@2Z2C7n2)kr+ zOape;i4t4t)f#(RM?sWQNK}puVHvc_f?x=V7!QYKd}uI)M2ttnGH8Vc;X_Eoc+$bJ z9{C>h8-gJuVm$9)SWDj7U<ipA+ru(w?FZpQNW|D3mNCX)2#FZ4hGon$7(yb({;-UB z217{1crPqtvB3}$F+L8<xW-@zi5Q2&GHAUD5i21P<Lj`D?FK_g#Q0lS2Ca1=d<cmc zKRXz7Jx@=x5{6(1i5MQ7xnaI)IX<lI>Pv$mBw{oT%lN@y2#FXi9SpjlrKevFhLDKS z*1@3jEImaTGY26NqoadiEeEa7AxbVJVss75pw&ABLrBEv>0nr+n_w`6M2y}hV<x^L zSsAnfhwvdJV)S<~tmUBfIRryU#5hYZc!ZD9nvWM}9QTnkndp2-u!KacA*P?<0yaUS z>CXs!1Vc!~7!j6{WiW(9j4Wn!?9;Mm*B4uAodU61hk_PbTZ}kyJ&@0%(Fd)wQ!g0i z?37mA&=bAXQ{+ZSWP7Y5H)rc`{2h;vU<ipAlfp8l7z`m1<3a~x60~~CgCKkei5Pi; zk=R^IL`f4T;xFdmi38dlZF5kZXH{Fub+KVVNMvEQut2l!iDDM7&$`dSUOkmV5Wa;( z%o1ku`E>#2ph!A{_6i)0&O(ZZBp8I+j*p(iesm-fN$g5tTS9cZD#r96?2=8IgXqc4 z?n1W9=NMs1J0B)QX@x{NS|oBra}k%)3LKSINK{(Eu$R`&_Og(rHT|0&gk5`S-R#mY zBIs+|G}YP^^w!!8JWXrkN!G+Ul~}6@+2lm4y@(PEiAsE<VB2Q$be&31iy#P=kcf4w zU|IV21v(smuQM1zBF0?~29-rmH$xCUghY%#Iv7?T^mC_R2#FXQ9gKz0>S;X$!4MKL zHaQqnMm^EhHNg-PF&-C;Chpf%>I{aEi1D;w*dlx@_UP#)2*Qt$h_%g?b&F2H-%kye zkcdS;T05^3Sy?|DEFlr=Wx=x4CLL9JqU-Y_cS0h@Yhf9*Dvn?Xi5PF03^`_5M<Bn! z5E3yyFd1?zu`(ta3?UKY6O$o*SZ4(Ed!xvekce@_WJn)Y#(IMxBw`#3%b+!QgbyJR z;|Ia8jiei~M^CgOk6;OjSiicm*69@d9gL4)35i%yO-LuM6PlwowRb)FAPAO_h}En? z);R`CNW{Wm(txjQgC!(lB{awyYp{ewEL`+yz!#07qFh2ERyV=29INL;tEZI^1Vc!~ zIF%WAVYTMVFDohUTU>C{MbWr<i;%uqc(S!`N($BuTP!qv3n~ip1M>^XBC1e}@=PaD zNqu>(fFzy<HNu`KPpz__zVr>?;j*L>p2T5N0t~Xjsbbu~>xFIlN+TnsD9wwHl|_3( zv3fCw*vzWn2Rm4YCI*(5Wvm^NUV;OR@<>S@4!C7S*ImPUu@NZhtMw!_ck5sAS7;t_ zXlfmrR}_u4Toi{;<$6!DnsB-33$2KvC*i%7L(^H&Sba4GHI%Q@C9A1sk0G_1C=dPC zL+Qy@2M`qD8+XS`7GWAG_0<fTP`(yORx{zt(l(lhVcjiR%^fVd(izGZtph`;g@Y9f zZ73G?Qj}tuMG~zQrYDrt(#Bds9p#~`s+1ZResI8y&o7ci7!k8RdgxeVt({iTMB&#e zfqZM?)#y@mr)iSait}S-#WBnMXqqfpaSj&E>!LjCuq9@TA-6qm`np)M;vFpd1v<)e zpJct(F>!^-qBDF-tsSg3&_;QvhbCXQEWTxx$yzO0Z5*t&%%V=kgU{QmZbipN5~WR& z)z-nHS}=Vj*Z=uxlT|BO?HsHGX1V*Km5eAQI9OCurmx{g|Fq8Z^_^t3cd+O-29q^$ z>QA4UtTxm&B6V=E5}}Rq(3zSCpG~(9&ox=JmL;V`2dg8rrmvxSpZ;pHhDlaO2kRte z>Ar3nQ<Y@0rb^aH4pt{-xwpePlGRDDEXU5t%<6(Ir9Yk5q`Q8c;9ddAB8=L%bcQC% zL!%&tx!p%M{%GcKn`Cu%_#!V+9*PO2y&03xy~=9hWtB)v7}Zx-XhQW8v2wWT>WGGy zS#-`yNB*f-)m580OqMLKgVimJuQbW(=3pUY$l)8<66DDVPhyONV@~5GtGk2M1N%dj zYp!JVaIlh?<?f5thozL{VD*GHl&`xbtEYo?3bW|iFO3Qv`%hVAmW!_HQaZ)KIu+U| z51rjnTWo&g3`|2|f)iasrF5!;l?-jD9DX2K$$~W#OTEZM^NuLbRr*)sFJ@P{B>{0R z#~9wz2osGINTwzh8lR!D_UflW8|5Jj)Iys-(*s?vUW)cKVL>|0QHtKshAPGBlGWS6 zI-OZGZ>0Hw@9pAormyjmb-IJqhgtKnr5qlsJ9UrAqH8gf`Z!p9p$(P8D<!M1gVm2& zdNf{J*$vg}AqPk+C99u<MX`?Z(3nNo55|t&X|f)WtQ2NpxAv^mkW3{)520wRwbLJa zLzUt~$?EUO56z&WJaoQJ_8<83$>=gEXO#XXSpyubRO}7qD^_;5sSegaX3+>mzSOxy zXUQ7KEbQjH%IGg8QTAaHV`?TkG#4ovYkbZCEmWT8N!A&TJfF#|MYP4|llA46F>a}3 zo#|km#VmArobw}7&nY&edY5FK<zS^T%RN3DB`eLr8pJHQTT{<mo|o!D4i=xgdeC|C z9V^E!O2A?2!8c0#Bx|sPm5#kpo_uVnY1~%s!!$}~y(?Mi4i=5tp(6jaWS#9`4Ph4j z(n~$S-9Ij0V)|kgv_l-Mq0FMIJY@LoDMN2GStpSpq@fPhFla;Nu)kyt6D-R-!N;uQ zn3_yLE>}GHT@n;BWlEM0-_>)*4AOY0yQUV^Zp)K5n>m~;Ss4yr!<j{AG?ZptfA4ht zsKC11l0_KxEMNpQX1StTckXGjY9xy=;`rJKO%A^Kh^3rOWRiw{T;lZ3n$ExK9IOE? z?GQ%wJ`$QJkKC>G7~6ZD$$CSo2_w9J1I=1|^WmdL>>Sc~ZehKqExx_B){NM1(#|;| zVwSVEbD1TZm+iRdAOm@>BhG$>_3-OoR_OV|+T@Z&7`3EX%%T|qrH4*E?S#pq70f9S zMrDnHCd$)-b|STTX6;dvRU}!2QCS#fz@qa+O6x}b`Ztqxon#S4W#P09ESmRGdZ9xn zT;C9J$1mQJMHsLwF&qO;sK~!6Sz{bAJdatjVzm3Nt4Ag4zCM#I!l*eM%dE!OQu=Fs zz29U-HxpXI2uod|Iq1<`S_`#cv(2mhVQ*<C$I)6ay#T8mTNu?w-t*-rW*ZwWS>qff z9nY+IY$@d*T=_>mfB1z;vIwJ=bOJPH4!ghC1%0m`pDQGbFe+;zv-J1`Pk-xx$+}Il z2&2~EBxa34p{Skxa`U;Do8@{;vL-pobw0E7_Izt`!Cy>Y+a-%IY7QqeOK+L)pPu`= z$@)aH2&1y5FiUSOnKyinVNj1ojLZUIRMu3**Z1F~^)OjIC5tdB>jGxQVN2<bIm`1+ zmS3_6qp~i9#;mXBNBjXn)pJ-XS%eX~>!bz>o1JNFM^4<er}|yJPUqkXgk%v$*rApC z^`zzpT|e@pN37Yxa@47wpE}7RjL;nnY3CxgBP&L`&-b%W=im`j$s&xf(}fz4OvsO= zm%x<Ba_oHd{j)2~HYRVH({decYzDJrcc9JdoG@Saq-mMb7h#0=nTmI;OOjiPg>HNZ zrjP94gEgrY3~5$4G;181O%BaAMPn^#9&DN|LG4>!m#jQ4DS1Dv*dfhNipFYrCiX^o z^cmxId#ihyF^rXm)JzdWOXSgfL*}QuWaT>|U!br?cO8TZ6j9c+G|3{2+Ug3KrMKRq zJ3su?WKEPT!l-Ry7PF{a9(+D7=sVghSE*#pa^!F}v-FnvZqwOljd~6jNfu$$92PN4 zZ&5=Ym{n}D)<_m%R2D#%820rK{FBLgMzRQ_vMy#;D{Lt(__<MAlXXC{2&1y*Kx2;h zO}jm7>Fa)#EW)U)xy+KgwWIGwJ!ksrDu;B!fMsbLCCqZ4{|uL`5=Z1qnWc|1(Q|sB zzVygXl`O)jIi&hE=ZDP(QXi<Z@NfYq(YCGEsA;q{qp`QN+cJ}NgJcm#^)-)KdM(Gl ze`#Nn^@wB<MrC0d2VZ)9Ep4-6r^(tQS%gtpmCVv3-zVzgOq2DUWD!PX1r*k_{Abph ztPU~@gi%>l%u2+T(zmm|vG^J+S%gtp=rmETIHDk3uqkte>FZ+2A`DoTws8qGQJxak zW6|cEO?l=~N$(M%bcv&FEPz&AyP*9~kGKItrC!VTNETt#94=&53!)%3{&WwTq|Vwc zS%gtpmqKH<jV;UOTh4dBlq|xitjm~%#>eT@8^=Cq`ihf5B8<wy@M-aN_t?9BGFkm3 zi!dVB<Dkhw^Yal)iRu+>$Nh+#F6~_5i0YNh(ns@aU%nols2-mx$s&xJ=S9rYkAgS% z1#zJ0tQ#eZFhaKpn!T=hUd(p%mN0MJL+G?T&{29u+F9(#^Htbuj)McQe+knT-TNz& zMHn^DS1YV%zWNniozD7PvIql~rL8Vu7WKfCucYg*#GykHr6zLfy+rfc&RCaXuX&dA z=H=}lH+^-JEW!x?nb6R4vp!<sgZE@XbEuhBGZPvtUSz=pprI?^KH$}sfQ}5_-J^OH zSd^AI@_Y@nW-t0p&gLie{Ndhf$s&x%Gri$vkm=oWUE*4{qqoDPK5M?yIjB=<hcLnp zy%lG$tDWU+2SMPpXJhoeItOzbX@@YvPE2dO%g1PAMCk<0aU+J-p1&G<qda;o5>~f@ zr3JvEL>OUt6g2cqj1L+$&exH~Q;aRy+Vb<4-<xgYd}-%8jx%;^v!OZLutS<lp&6oR z=uJMWm0G4Z`rNN*9))J8!rBJSUIp_uG{Y3kXVB1^IX?ImZR~H*{HSQOHkczSnpV*K ztZ2GGLnm{>j`c_hl4Z|EY^gU{Jnz^^W;FT{3n^$sBLkXW6w5i##2c0gT?oyu3g&WX z(hQ8%I|iPRb#W_LlvWttH$XGPutWQvf~MTiSS{CJui4wEv+f<zat&LyvaV;Ad)xR( zvaWZqZV2P+2g$lYuq;R1N@nTvgypy1j)7XVUDO3;hLi}S_J=n@6Xn4n!)f=o11)3R zX_7@4m30#|W-sy8fD8JWzWkC!7?pK1vk+cRKPT+A^w{~5MHrR!2WZU5-#B#PtER7I zl0_JmwTfB#h&J%^jqjSQb&^FGuq^%jEzBxoJ?;=wu9-h4S+_VMPgi=QJUGxewW^-n z$Mp4vWD!Qq;c95iGw5sgcNk)_zLqS)sI1$V)fih!ySi*1XtHA42`yn%*6q+ld76pc zTI@S5anh!@jZ-9xFe>W~X6Z3(bMD&^b=FA9B8<wqQ(;a0qy|$Goi$Uk2qSchpxN6} z(|p8I>f$c8qmLl!5mznk+~uf?HO!LX(;olmz6W$qxN}vq2!lLZ>iuqJ>Bp%$zP}(@ zcRPHoWtLtS_pQyhoWs5@S%gvJvyNGMxias*X_T46uO*8xD(fC*={5M>DeKcrR`Uex zL?VpJ`Xe+^9(10Z=4bR7V6u8i7GXqPWI=Nj^I9J?s0&NqvYs@?)t(RAZ~RW@;CBFN zhcLp<5@>vwOG!JHIAidJ9lh*oo!%ww-0O(*eazDPsP}qqdr9|%>)et>7`5yh6jrMl zQ>U7&zepBgz_R4<erD+{K^@HxN!I<29ByQm9_NX@2YhDwIxbm+5%EcEkL$)pe4y3_ zK%*yt8RpPTaA@c)Y>P1m@_{Nw^Q#<~n-z_<q&P4_*2TS&^#GTYa`qTBUd$DI#3F^Z zN3l$rcNLA**Mry_YL0YRvL19q^&w{I^&bDkb2Ib^Vn+vjkO-sJ`@_(fZME5&UX~eS z7s(=w%K8(t^yBNV{RW^*5H*2$pJWk6Z7rLa<=&nzkgQFPa&1;v12fJ?cywQLC5td> z4j*Bb9*xUiXo^!SowZ!D2&1z8tgy6q<_|Mj_emCEgryguS>8s|e8f_Yi$~dx`*HD! zwDYLZT24T-*{}numYAq%wTfmSG&9gq`^d85>oL-V=q1hvi_&9;uVQGH8+K^l5@^;M z8f!az9D75x!*$Z~<Bs~;!YqB>vf}kkNA-B&ZF-VL7!kwQq4A*~_Yq6!MW0|hy|JaV zzhxnYIKjcJT-qUw&<*Q|w^|x@h;bn_iw%vnTwAd>RK&`_qO?_%%hK0939T6ob=12_ zvYvFXo?@1Jn_n+kPdQjmE56izb-QFe?O;6<#@FkT^^9OyMyqF;)el=re|f3w9zCYG zpG2|<qaG>GL1WI5t{JuB9g~%YvlvQ*QCZJJW6qx+eg87dW%N3oELnt6S+&f<bc)lW zk50bUWK~I4E%vFbZP1uG?3a73rTyF_S%d-0Qp+ze%l*iGM6zCR#ITN8dJb<{^lX)x zLta}9`w64w@I_|ny=b=Q;;ts^p!7u;m9?E&y04^L55H%!ev>T1sH`1|uZz>y^fg(X zI$<XgVN}*mXv`z!q){zCGg*Tri!dsyUSX|x+Beo@oiAC0QCYi~)fih!g?%4cYqI7^ z7GYG@U!XD1t)9-g_G6Q^Lb3>>vUW2|KPrbET=S{P+8|kkQCXNs!B-z_DSdH#F%0Of zw@$JM1D2&ly$p>RLv<F{{A99(=ZYLH>J@0sBW3Va5B*^J>LXc%5&lO*lY>#jM=X30 zKWG*xnoFQrX=toD+(WDo*JQ4izV?V5TFSMTS$YiBa@`_XdmZJ%>8Pb#mmL~=LN5dE zIh8EJsFB~tEd5A%X?m5V&F_~i!l<m*n57>nk0mz6^hd9+?<I>cLf5u4&aG%PB9>Bv zud|(EY(4m>y>Vx-D8258&l}K&s`nJhdc(nblUb$MQm$5&7p^j|2#u4hHyy0~VSMFE z)_%dV^!x{yrO%OuJpT;_d_6vkC5td>RNqp3-P^KLPm{GqvIwKH-e#6w7d>D2D&1r~ zC0T?~S??&U-Pbn5>{rj>e#s&XSeBOgF0;y5kNaB>?mW+o;dhett|J=nF)JEdN<XB2 zcDd<`Z|H`WFv9;yT{LY5dRrefYHN9)G$H0=r-4Q3eMb#`0Im6JvYO{HlJ$Xub&y%^ z$KXYhb<n~3kXa?zQd!hr5Ee_;hYr?9VSKHWtdATlbjK*yrL@Io$vw|JXx7DM$@<vA z`fC_p&q>x_9js57<zDaaOV%e27P|hB_4S=(ed=IgAPiYw?J<s1`pm&P1Z}9c(Mz%p zIar68<=!WZmaM}L*5_e-<x1A)4%U${tg9sJh=cV-7}oWY^@W4=Wf<0<CF@HE>#H!V z=Oyba2kYxFtPdsYYX=LbE+OmdJIOlgU>ys?O7LPQ(lH0?8)!qdjh<fOXxcXp*0<1x zV)?zq!7tMe)_2f`VomlEN7KG@u>J;ZDApxj;^2%yuq>m@_t1*x(P+Q#hMLiOABu%> zy`<AL!iavg&P(4#5}G%>`ga|3P|;X>{vQAhmBX(j>jy`<jx$R?zILr%jqG@!qZHpw z{5>vMmU8`w9Z{Ynv0EGW%QKeQMOVopj5;>`#4Pt7J6E!P622@W+Rx0=dp7l6qpKwA zX9w#SX0^uFgOB>;!mX0^i(pyG^((VZ#g@|aGgge$<BoNcB#SU=xqgEtROG*rtlxw$ zOSw*jVV#hy6Al&?CzP-5-C>fF$7>sx>Bq}ZtTQFcBUqMbG-6f@7^F1uxif-hG^R=x zVbpm`6thkjByHHxXV5T3YsOk^l0_IbhSAJ&ZyV1^R<y@nuEt?l`y{KegViJq>j%kd z;$Srm!|KpO6t}5hSz;K&EKCzQo%-n)L(OOmmMp@k(P+l3_TV(aM}79>GRbP@u}7nM zm>jN_tme#uQEd}6D_v)CE!fU<Y+C_$QYPJfjW5bPGnO&4p^e6;wqRbZ6VsA0&tiXL ze4bm_xT6!(iZPu~%s60v-SADm6BEanE!a=_d1=92=xv}<@)OS(TEnm@_O$H$8LlAO zF|8Rh65Ci{9{r{F1x`#G#+-@$RIcoeY0o(^Z5h*!w!nOL>1#Mqz!xPyyw~$Fv{d$? z13!g1J0^kc6ktEunX<kbmvZfx_KczYQcL*5`BTwV+c6y?z$8Y1p*Qr1=Vd5ASAX9q zL3p)}GAA+S4eW1+&zBo-xLIKEBJcd73aB`Fky~g=^YKP-Q$y18J){DEs6=>v$D#Se zp@~XjC~pL-n?sYTX!7`-@;Zz1LusUe(KX{7n&}Qrg+sI0p;_h7+~?3d<<R^^YT9}9 z{2Y*)1VeLJYT6o_@1>@Vp=l&Lm_$R<T538Nnq;YIZ)k=}ji%||Cpa{79Gaj*^MFIM z-Jv<?&>VMY;!n|J((}{Rq3P?;WI8k#I5bx{G;1B2T8HMKL-Vsk(@LK#7%}YT(46Ja zjB#j+9h%D=ni_{@jYIQ@L$kx7`M{z1N@`9*+n{3~eM~a{(K>o`O{~<!8k$a0(~>px z#O~~hvP+29%E0uInAQe{Ui(d$I0G|CV&V-=rqr}BG~=a4wAI|){GvIPfjKaPq_>uQ z1yfR3l3%`1AOr>)yxz~MNy<L2{~1z2J$4ff8eO4L|IC_!XGsk8{3?dV3)b{c0fzcT z>LHtGeHWN3sC0rR%0n03AZTlL?JsR-Je_u#%rj%OzU3zCWM)y%Pc?FN_uQ5y>qg09 zjN+>^v#4*Tw5xN+g$ahQ`y`7oimxt;uZ%yfn`pA0mn_C8zPc*DzVtuwZd=3Ge#v5t z;>)Y}dgz?`E+*>>$zqJ+tDE7AqVZYG*2hd1KMoEpV-#QA6<;^?pFP85weLj{(lo{> zzIre#9{b3b@1eUln5@$!i!q9?B*j-*v%%k*tl^Ty7{ymlX2noOkX{|MJ+6%r!zq%* z7{%8qim#t8xMzgPnk!k1QGA_hu*g@>m#6kT$?&yEvKXWIN;X&&jRgySJ<nv_E?JCG zeDzYw^~d|)`mUql>oLh<jN<Dw#n+S#1s9pDosz{E#aC~KuUNy^Tav{X#n<VIuX{H3 zecNOml`O_6zWOjrKfX5RJ$SUG;j77M6jwa6PZ-5lU&Yt_x^KsrEU#oSM)B2;S$f;} zaOU(US{c3uNfu)iUnz>OHCJvaGFhV}i!q9?{>-9sQ7wOT`-+E5)&-Kq7{%8B#aH?( zwO^a8xst^g#aF80>(*6e7%v)A;E=AAEXF9l1}eTTUU}9SleJQ^7^C<)gIW5qyg%vI z^G()0lEoOs*O`j13y-y%WU?NUEXF9l&Qi*ioH+DNleI^C<~Q+#bMT>FB_Iv`n$ zQG5+zmKPC&pzYjq*-x#F7=A8Uj8S|IR(uWF*?gzT`c1MJqxec^7R8X#hO5SY8E5!v z-CJlGqxd>o@#X#Cws@1(U9uRX_!^@4`a|EPJ>m^t10;(vim#!Hud_EUZEvzhN)}@j zU&EM1<1)4RDNn6CWU?kp7Go4&KE>Cir+<5{$(kcsj8S}L808{gdq=#s$z&~(EXF9l zhAX~W*F1i+$+}sx7^C<ap_FUhu3e{?tPPUI7{ynn;w$f)hYC&B(~`v)#TT7To4?i4 z_;nVa@lvbUBUy}5e4V5C>hR~?%}mzElEoOs*SQ9Ztkd{4*zoneWHCnZ<u_Oq`BhKN zm~FCRPA5xv{|#XjUs=r3`}sBprtBYL`06NGj8S}zQhe>G8GOuSrAroL6knqaUzEeT z;U^t8S<@toF^aEj#n*(HuYYW^7D*Ok6klVQrT2%Y%`Wkqta~JjF^aGA6kkyrhu>|o zwo4Xc6klVRrH^0KHZqJD9+E7^D86zOU+2%9|D(x@>BH5fF-Gw<j#>Knb=ShXR-3F- zC5thNuknhnq8Y39n=HR%F-Gw<fmwPCpIY9{XR?YVi!q9?iHfh!Ym;s@S=UJxV-#Qi zkGnU4kE%NR$L}x$L>3bkH6m(|s8JL{5+H~*Gnq+pCz(m2fKo+6NCHH%nM_#JRx}`{ zW8A8(ZME8}-L&qdxHcikS{1~)*HZhof@q6f+*-~5`#k5|<=lIR<lXvye*XixbMAA# z&-0vpyJuNohKoX8xnk;17npJQfaGF~qU!=h*TBU~4_aJXBo|{8T^E|VC?AfmxZx9v z>ut%!7)94YMb|0Ct7chTA4@LAD7wDNTt*yDcyz}37FWh}k;;rwbX}zAs(fhCE{p4Q z$;B8&*Tu|b&xc)R97ZG;V-#JB6kRtzecwwK*D}e)7)945E?wU+b#+TF#wfZjb?LIW zeki#Zqv)z}>AJzx#TR=b8X2SLTI|wgalI^cF-Fl<>(X_jsq28`VvM3|iA$HoHR3Fh z%8XHT)wy(i%hYv}<YJ7Xt6tGXZHmPel3a{YbTzni-EHcskz9;XbS+hMQQok))<`bK zD7u!pbp6ECb*toJjG}9~OP9s<Gs(pmMOULs*8`@mKFP%xMb~96T^83q$;B8&*9w=e z$4y;dN-oAIx|&?NEUv6vkvABl=xTQ9`h}@0B)J%)=xTB4vbZjiT#Qk4wYqdYY3gd1 zT#Qk4wYhXzTsKHA#wfZjcj<cC)OEk)VvM4z-KERodPZ_FM$y&b(zV&t^|It*jG`;y z(q(adAh{T$=<0Ooddbu^e1=G6#wfa0x^!7wQzRE-6kV%ax?VALog=vzqv%@g(q(a7 zD7hG;=vw2_^{T1sa>>OQMb{OIuI|TbpSQR+NG`@Gx~_ETdfU`>r{rRcqU$O}7uAOr z*CUdPF^aCQxpe)`)YUJ!7^CR=x=WYE^|s_<jH2smm#*KNy8bS?7^CP~tLVDy7k{p> zxW?p(9K{$#*EKF(e=v1Tm0XNbbX}|HTG(^*S1hhMl8Z5lt}d6ZKbpEKB^P59UF#HG zlwKBBljLHIqHDcN*L$X}Zpp<MMb~vMT^84Ul8Z5lt_?0-2TWbhNiN1Hx~^ArQJ%NB z-jrO7QFL`Hx@KH`{p?RoUH_0=j8Sxb!==mO8j~;b24fUmNtdpFnz~MsT#Qk4-Js~A z^s=~ul8Z5lt{#(%eABsX-G$>!U6)8M#wfaOG`Xl}KKjomHCbG%Bo|{8T{kJ=qVd-R zQ`gOsi!q9>n-yIr|NW<LSzJGrT#Qk4-Qv=9l&Pyvaxq5Hb*oF4#r3x2VvM5eo6MDi zn1DsQsQwrK9Bs}KeJr^cqv*O#(RJ^K^Osv(V+tS$hB1n++nLKgcE~itHAQkUM$z>x zMOR+wl9w&6xsr=9imq?FbWJjK&6iw^QFPtm(q(bANG`@Gy1wJmb-bx-gXCh2qU*bg zt{;A}6-&U4ncE*oF2*RjzQ<gdB8s)n<{!M1WpX_wxfrA9x>M0ra=ZV1i|b{{#TZ4` zUCfmsb*=v1pMHOmsq28`VvM5e`--m1cK!7)7T0L`J&-YquDh9QB6LxyJonI_ZMx2o zT#Qk4-J|FVU!3`&rK?JEF-Fn#12bHt>$)lTUtn>yOD@JJx_+qWTK(GR*I8V*OD@JJ zy6!b~Q8ZE<W}9)iNpdkp(RH7qi{jAYdQEaMM$vUYbJ^q2;`)c=VvM5eM~W_rLyPMu zTD$|p7)95Q&2SlUXmQPyT#Qk4{Y244acFTZkX(#Wbp6x}7y0F`&(6v`#f-yF$;B8& z*UuDP71PHau()oQT#Qk4Jz#Q?E}9oT)ztNb<YJ7X>p_!?V&my|K1o<yJ0%xm6kR`O zE_;1=x~c1Tl8Z5lu7?y|Cx7D?S6f_PNG`@Gx*m4vI@8oONq&-NjH2riMb|NR6kTR< z&5>M;QFJ}((sh=p>q5!J7)94(iY^M5#kEFqF-Fn#xJy@_sq4Fvi!q9>Clp;zf8)f* zEv_de7h@D%zi{cAW$JoOaxq5HwNcS^PFEYUtWnQ@D!CY===!Cii@y2JHMueiDQ{{T zV-#JR6kYVq*W${TT#Qk4J!x{0RLb+`n!4hWi!q9>r%W!&^ZTDIv2is?F2*Rjo;JA* zU8Sb3Z%8i2D7v08xk%T_Xa91*;(9=GF-Fn#tjT5QikrH2NiN1Hx}Gz+3|$u20m;P} zMc1#G%U+hxGj)xaL;A5^k1&d^UPaf<w^To9aZQn2j8Sy;xpdW-y5>qQ#wfZryL4Gx z^CTBz6kYv_E*d*5F?C%gxfrA9+M?*9{=CI?z2styqU(7@7xl51n!4_nT#Qk4ZFT9g zxSo?-j8SxLQ*=?dR++k9m0XNbbZu93(RkV7IwZLmqv+b9=%R3~HFX_vw#XZdQFQHe z>9V+{N-oAIx^}sAtv7X@Be@u(==!xwm&LVEaxq5H^@7PoVW9C>($v)<xfrA9deP*f z^7Z3?4f}<~)g!qWqv(3c<T7++n7V!>xfrA9+HG=?uJP}^x76a=DY+P<=-Oj)8M?-s zx;~U#j8SyGY;tkEabV<hi)##aDUxA~qHC|oMeY=b6HQ&GOD@JJx?VB43|$u2Jjulv zMb~dkE<@MRrmia`7h@D%ubNzjE{p32l8Z5luGdU1L)S5;uC0=bF^aC&O)f*1#dSb( zF-Fn#hRJ2<I@Z)R`W&KR-9KRzU2mFPhAxZiOv%L<Mb}%*Wz_T3E}voQs+3%eQFOhn z=n8!v{iemWLUJ*N{klO?=tZoxzQskk7nHSdr^QtWmu;8CZ&_CWbTT`infkaP1?%*s z9Ks06FDR0KhqsPIZK9*5w!NXHwxg!8W_jK6&XyG&HJ8=2G}ksYwbs?pWqouEbJMb# zw)WPgHH|HahW3@UP3%xqR1*%?<c34RXnA?Gytu49nCPf4np2b=sUpb@MKfWo<iDA4 zsbM0HbZ%~JsckCC4uyi+WeqhXUo1P9FPFg+hQsBZwe7VniN=-&gVNqme?_bH+L>st ztuq~03x6LbVD(nOq`E5_+FK3bEg~-HwXvlJ0bSPK*iz3?z~Nt3-`U(|4}2sX)FTz4 zXk}?Mm|Il9|L5cu%~_V~ZGwmKT6@FgoedpG5F^%E<x+|)CZ$ZRy3TeZ=@izchT0X( zDMN}><P_Fq$`zLc!_n%}P_eEDIp7F%JttbcXr_z`C7J4R0Z~d{fVW|_6;-u$b)C&# z{%%PuZ*Qor7r{)_)z&R<sHp=bfgfZyhkU4HvIH(|>g-tVg+tit8`~3WYMMKn5_XPy zL}`2L8ZVyuhPv7{HHpS%Pt9$$b&1B6!b!$XO<QOCGH<X@P605mLb^wgnrqwI8tU0Y zMnY5tD=Vujqt#U<?u38@E;$`V1xlJ2dfFSXI$M!e9*oDzN@JmlkV9IPD2sfsI<t3( z<aNY(dqbiYB~EzJP-7&71KVOniGg${g_Ebbwti(}hZ?nmBnCyi>LJd`HOpIDQDfQT zUF1WD%4P(K)`-{GBA+6*p{=!Uxn@SONW6}kB`E!kH64vtcqX<fjO!9)T;VZ?O5qO? z%~D`Xd&4r}S%F37SF@O*xxKT+(yoXQQe}Y_Qrb{QC8)|$gc=2j>T%PHQdASkcZbjA z8HrPLih^iVm`H0`GMj5x6R~AE;;w^i7QL>i)~q<pxHFTiL$*7153Ouy?`UjovC`EB zvZpWdeq((@i^%?*mUb3dT$m){#+Le`7BYN^7H~<EJ%gb=#D<H;+9u=yd-5t}LzO{y z6=*8Ss;*>7pB>lrXhl_ZC@3|G0w`T)mc_!MlIqgxATtU#DUllkRw2O!@sfC`yev{4 zY^iN-P~^;tM`F>k>WXksWH3b#%P=y6yVm5&S+w>fmm|;cUL;-_idIw?i)uwtIj1U8 zS{)08OM_;iP~2m|vJzBq;SiXOEZL?Y;z7N*Qr9Dq;$VG)iBTYxLA|OxR8bYHwnL;C z86-zNBE3E<te3_rD#ChDWJ^VCfnHo(8V`laf)vTZsjjtUY2z}!f5J#pP62m`MHi(d zA)7j>tvD2ng(^!*OXB50(ZIDXX=+^A*xD&8Tq8ouO2d(8M6W_{mUJ#tJylg4DhZdM zQ?<0QN%odxR^X7@6J}0jS#fc7RdH3YsrHIBH7M~b6j||LX-F?EE-k4F8XY?XPl3!T zt<cLWs^g`>=1%nfoJmum7l+ZPh#0DAYFx6cu1?{v4wl3!O3L+Ugd>q4oh_?SRu$CD z;#fs_ab;B`$mLPE$;ynP*XWt#>(!C+P<1JKlua_qY^WNM2nKjoaTPLOc{Canok5q> z8YA9B1;;z7WC|3PmWL`UV%2)k=<F%nsNOi$J8GNTni`DOp{-VS0;G`HRq=Q<Qdy-3 zW&hJthS7I6s!kTn9ZH45{XK<3-8hB7T`Pss*50tRakY_A&BDWZ1QExo?E1aKW!2cs zXvCUXT<uwIW-+p7NpUfHj<jV|gjmK$ek5925sOD-L3A2~i!7Wi)HvA16c$Iyi>u<% z${@VNExICUc6B5ci&j*`P{;8oMRA>36$)Y4p@)Oq2~pgtf|1ISGQF}SM3Swpp#q8p zE8_9evTAgMt!hI-#DkHFaCuc}SxDqqL?z-;KxF*bDl2=)3iNPwRavB}EJ))SMQA}J zQmRMdRk0wAJrt){5LHomI24Zrt)Y*Cm>nyr(5tJWWkER-Qe3NoRps$$c}Xlz!L|}q z0mXyyP)R6K5vvqsRpcHABwSKnR*L8m5PLf!Q@J=AERG`jB4LR!@{3i<6p_`zijuNu zX{01fUb7V|fiiLk_aE#LSzH_}i<eiIR92Upj7DBo6vTq%;h0_#Eta(umn{b(ULLB7 z$0|xisJN^th&eGD&XrYE$yy9WPjN>xR#k-&Q`C$XjB*4*Mz*~dV9OfHsBsorx~fXF zH)7nQXqa79fgBk|zLg^v;VSC<M$sS{aYg+zr8vzj4p$dLa8%@HMexip+PGM#Duj%K z5rc4(&77l=vPVBkKyf6FwhX?d=>gH>7Tg`3Z4K>W{s6r<t7Boa8a-Nel-jtlGb+;- z`_NTpt%7K%3?phZqtpdgd`gX>QSr}2iyqM<dNjx#YXxUEga)`U7Due2EC-FwwSu>` zi<&K1iua}Oa>E#_6^BsmC=w_~YxWRwEJ^}rchPJb7=t95Nh3OF<Y7f*M~&=)+oMl3 z(5f#zVBEqQ%0%Wg-<moMtDHZP-ZUCP!#6C}?wy9!iG~)@AC@e}l#9%hA~lWNATf^Y zrFz|ygOZu!PZewT3fnmn-4%~L>dl<ML}svc;$)h}gVn_tFjt{cv-SH$`br48?p5WL zk<v=4nW@L8xE2(bMXBmQy@1|<;uH&_DU6iHs-m*<i9zUU1u+xVTS-|cUK!*DQgNFV ztBO>_D`KTVF|-nnGGcAHmP04KnqM8MidU3ZRR)orRB5Hv(UNK%RZk079*Sc@Wm#o$ zSvVFXC&i^uuc(eiLI}H2Tovb8Wu<5>^zukhB&O<ET#XjKv@#kLnMXKsI#@~QoL4K3 z1TiyJTv>tvg*$nL2qO--ziJPDL0MU>sv=r~RvpuIif3k)ppRRORCYHGh2i4TaJ&+2 zgJ<h9CtOt;tt_jqrbbBg2ZdxYvXuF>vBn(Wa^Pfw%)&UWB2tE4gcyN(a&}N^io(ya z<C<)oU0PNg50#dnHzX2X3EJ#<1VIj!qc#+ioWfPc5=*2pxAf7R>R5>$i&r8=jd@2; zPc_xjj2DN+=z-Hz4D~+6%uh2$y)`sa<UzljEVlYv#x#UE$K2@<XLY<tCP$-~EooWW zs<E%F2`)!eb7vBh)imw~Z%Y$TGzgC%pVF)YUhEMdYG8X_nO$9hA+(O}6lPIrdPa%U zS#dp9fr5)Tr5Z_fER2?62wp-ZlZWdK(wRMN<RQDRndnEximTB&w@|~aXqsJBT3JyQ zuBxE)aJyEZLtPy!7rr!kMMHI%SaF11G&SrcFD8yihXdCV^hJOo*;Ai_P<wV>ngrZS zmC+H9%B0_ge{4CIXA&@0Ew82|lT0%2a(~1T0*6?c|53}8R}^E|SX_=~JQBaG!6;IZ zs-k?F1P_;Xz=EH8dM~YQ#QadvOv+R3iImg$Ug7ehiL$N^)MS8VKaxW12#Ks9j7lE> zgQdwnt7uk55^wwDVFbQ97>kzRqYZkQMFsem=YBS})HQY1Hx%WWF*5^sI%w1%h4HXn zQGp4YpfR7XX6JIfqO7_KwYQu`S6pYIDy@!Vd=zZsnnH0bjF#xdsGQJIlk?ERS%y_~ zSnS1WR<Vw{xf(-JF&V8&D=Uvz!JkxR@}#rkItwHJ3XB=xO`c#@91A0QS+p_~i3N>1 zU2&dSQ64EPM!Oy4cvjtt^-2_Ij6JFPRGbRR%gf?nbQXfkQ5C9AXnZP4qnP!enoV(< zSrM&>#4w)Zwpn!xR|X^1)z#&pm_DSeyZ|)}zPiwaXVJ_$S5}s}#%LAnF+IDiQZKG3 zu87NaUi!ncT5#uj8-=YhL5)7AXJx^yk6KJ*9-du>adJG0K8~D4SK_NMUJ{MO%E~Kg zu)|Ztiu0^^Re1?!-Y{Efn^tIVZ521p8s$p%ZBzTq`JI&KLJk9W7sc7(>Tq>=HD);E zoVVgnnh-84jbP-<liP~htkQC1vT#L->>#O*dP#Xjg<et-6tOHEsdYBK<H%^tufVXd zID#1vI0}?VPAf7TwUF!)DEUJ+`(l9TQFBpNuThhcSlkozX5Gac&giwiH97nw(6-o> z9<ur&UWp>OTmi9qBwkELr^8kYlQQ8Uo*g<Im&1!RHFP+*%WpJcbQlKNhhYTy%9=wu z43p^Em^^Y?>97p+6}CaNIi$u`Cp!|xh%M^Tm>TTGN@hdM*%Zf1WAS2q`*62Kg3{4m zSCog$Ra79Sp3&!{+>Gg~I;#gt3k~o`9YV4$L78r-cebRax45fidd$}J8ZBi>Fj8J! z8Y|Xgo^@+UdwXkp(M-&zV2#4EqM7sOMT%xFZFN<uQX!>}JtmYny2He{_~vE!NynsQ zv^Y`~r5Ol!*G2kC7B|CNLF?1JM*%fEagJ=weOWO-=;b|=&6cmFFENuzb9SK;d~z|< zL8+rKZy1f0=@oiqJY|}v>V;6QW53yk@{X)$`ps2{n9)6|JX`?n31=ijX|SpkEqNK{ zS`orQ*S)kiATYJ<Ev~#_cvK`Zh0LQDO>t<=Otfn?HH}z_Qr3`&)pjH}#U*K;n{<8y zJ|T28%sc<W7`_aZtVYMK11lROL#XcZ&c^msuJfBZpyYzurcMJ73Umkxjo5NUmf_J` zuE+;G8k1FdqBVi_E6Z?z9D%8|<#1SUb@+sjwE)X&+quvRNOR+|c6_xal+2M>#gS<3 zlwX-8ZB=`tz#vE0ELlUNP~xCBvL~?8Xo*2svc~>`TETFj+}+yFUs#B-t+gXT?=@}Y z6ANXK>y|e*u}7sJnmchgu^A+VXp^kc4Ox~7Z+BCdh!kWCTZ5)Vsp^F4h(ag0Y|WX% zVxuc~Ze%TX9(`M{W`(QDGOA%klIp4YhNZQ%Hb-IfhA2{O{`3^#;jZv6sqJX2lkIbJ zgPgmtO=TM%vXi6$L2?G!L6un9c8EAf2fL%AwXRWSVWV9^F>L8<qsSB#G>N?M$xh*^ z1Uo@~1|X8mB~%v(tAp5rzJW~#V2;;S?X>o&-3T%XBJWea7ar$tqt+{m2GU<Fkg?mF zu<8Z@kvw812-Qj1JiWH1zNw)-yu6`q1qdAts5l$3DhrFe>d?~xTVsQkE#@JzWl@y{ zH=7S}bP`plRjO6Ajjl3?Qm=v~4I`k&mh4<hA=M8O>7)wm3{R|+>hJ*7G!FetvS5@7 z_Jpy}E*F)Fl1>FPMS`qU<V2M~C)EWulG%kf9c(OoaH$O`-i??gU3NrnwnZ^w)S`&w zpW(vf*(d^IrwBO(E{vUG^RO8RA&In`Bpb{bW8&QgkOjaNbb}&1B)n+Q?A|tL0+-Jo zH)sN<((D0LaUzHYO?uA0a!UG6AxW6ER!V|w1PPHHBw2Ua7f4B#!vKV*bF&Wv5n(+n zL`a!2xRk>}JcDB`%<>G3&DlFBHh_0PYyj_I*Z@L;GY~d_8U#`6BI_E3-{{J6=ZfhL zl`albm(4}+<QcJTa}oaYa*-aBGdYgWeB7Uw(R(<ADuh1{d$8K*Duel{P*r7-Rk->& zP~~yBsf@DmrI2`d&*kc1wmwp+D#gcKAy8%EQHm{<WfWRu54i37hN_0S?5^I-g6a`G zgWnENMTpUt+rKut%3ySgtb8m(Xm@b1$a!uxY*-@Z6@Ru#2^DX5P~|IAkt&nwq_WxP zGgL0cMKaL<&zdKccn8r2HRkJVK$B#Hp(8E&rM481LrELm#$ca&v&mM-Hn=tQW&_)Z zHmKUCcl*aShG9n=tF15Z;B&gzm_!b<rrvBGbUE4B?Ac7za1>v5stt@VNf(Sj?d3zp zvC~nq8q%!o4bpQS4l0YS_7|R$95%YjVBhDUDp6b{lc?PrWzSvW9YimvJ?IKtDS?KI zNHkkYdN??=SRZ>Gp0YVOSj^%eBFfYuca9jN4TGLCdmaX0bOH_o5z2G34+Ak;<-<UP zlo^MU;tajIiNz6X&SK*Xh|}E}3a7g>2u^pW|DEm*&x@+b+QZ@Sz029bE@sReOp<7a z8mqX>4IOqCx1$#;uP}4veuLNM>cxyXUu!#umu?lHilFI1``!qZ-{q<@i;v%_**)A< z0ZMxyQkS!Dhw|}8DP!)f6RMYKFlFCZ;b1;|`NWDiWfsidf=G`!^PJ*qr=uEL`&xe0 z(~67AWG)9+IV`dYcQzG@_neL@tF?SuRb`_)7_8N_4i1}xgGEe7J1cFZx6Q%9Vl1)n zU{ah^HrrZ4)pK?S$s!tZnZQ_TDuz6=-zQ@5un=!Cj+VnA!F2Uz_Q;2x9`V3=3v^~p zPian&w<!DGMH#n_z$u6nLPST+mZ(k{Hh{MXrGj>F3pZn$npcl8DUWOEMC}rumb6tC z#?q7gvPx_>j)$?g1|I`?8?k++QOq%(HFIWumd(s4m^EisUjB?31vVnAGjelh&6<VZ zS%vw+Y4ND~>&mtA2kyA=Pq^Oa2yCAwGrb;P858(uBF!cEy>GPfCVxj|07pA{vga8t zy|DPk7;oY?sAUw}F9##)D*W|1a9J7Ei=DW$;h(~>LXPqD!sP+iekA;uE>I)!<ArMj z{e56Al4pO>R&g)fe8_77X7e~9FBR@@aDEk-9peRVL<)IVf<AnLz!*<2y;;z^7Px!p ztScDWj_-w|V|ETn4B^Ol;V3%(0bJlHhG-D)iJJn4BY`>VXn~`H1H9zj40>E*1kxLK z6y*IDxW68AczJYFRz{|#&B7m<RQ{v%3`z_G@$m8=T_acqT;N!NN|kO2IA;QLgT$rM zdpvO80_O2SaC8guvl1gTd;4!WJoFZD;mHC;*~=>&bXN9<z#K;&fT2SVyl_u~9+nuw zk@3Q1Ab|e@Zj8K=mx{6%ZVTvFNDRp$<AwVb=;vnPDn|T~q5SBDyB+kirfAw0{E;#9 zmF?myqEm5vS7PX$OfVxiXus-;XjEnV6}T^L@)+lkN4Uu+5r<_`$;$z*Kw`;%Uh*jG zoj*i*mjSnO5P1~d+lDCbKHwf1g1i@pDDNHM-XBCB)jMfZ@vxax@s|PIWQk1`e<aVi z$kY&-N?tK!RSqJLs=g+P8BE?<;BFX#yq^tG-gCh197G=Fzx_j$_jkf&i%|IS<CXs? zye9yY=frWZN$}E>^i~72$cb~550ZBUFgH4J9`YUpW|I@=A@5aS-gn|W<fWaAYeDfx z=5XQ71E$o8^N?2$Oq&zu@E?`88-e-06XzlC8DO?MaSnM@AN)yTC>&%`<>xPf8zrxV zOch>g4ss-hg&js7U1eE4h&=LN%Mj&V2i&bgkoU+C<!uM<l|kfDdi-^W@`j;bYFwb1 zD*mW`IRiMmNtGT2zy&2Xl{`w1ONS`$3gE6AL>{HbeM6M@3~<{W^3ZiZD^gM#S`eEb zix!`KQfFsl{d9cbIB7^^u!Q6D9oVW^q%ssQnRilF0G|5@e^20VrRL)<Z}{v*3$XOR zW6_E=_|CQ{(z>dpsTIfAEHc)|pII<HZ~6@9YjelSx<&YUav4Ss9g9}h<>k(pX<`<w zo>j0&uFg7>hDVKci|SS^pWeFUGVN^boN?L`+<B!@FZtF>HS;&#Sl8a#(YiE|m2>`S zSygQ~z^3sEEc43>w>Gz7mqNRycQ49L)4Q9pGxY96cBbBaRd!bB0=?^lto*n1<mY<d zdn2OB{jua<_2ftCCk8b=S(>9KCyvzDznmDQCtn!2AZuN3=jj9ede^p$u73vF-_g6a z59rB7*|~bMDZ5ZlCbENi@~UiI@7j_Ty0pK%C-C^e-;r8qY$A<`?5qnz^Fs?l7lbZ^ z;@o%=8ldm<c=EGoa$G#QPfxy~C;j@9XI_1K?99KPw@^=ixG%b?>Y8PreErJd6QllK zz1y$%?LRl!tM`oAr1$+kp!+Kz<g{4w^0Zhtem>N@&r8#L=4WS-pXX&JD<;y3mzutJ zpWdUxzkT}DNOq1scUxzge96-1ZcVJvlM`Y+W7Y$z+4Ltrg%|edPa0m({d@H839)22 zNAG+8-25Fk_XNgu?ej<deR|)%0C}*hP)no_^mTm}X#Ybr`Rai)1_lQ7?wnY6Tbe!) zPRr{(cto`OjO<5z@$T6ad&?>I+9>u`BjR#HHK9vGmxLD8^m``Qd?W56$@YmHTc2;D zYT~IN9-*EVfAR$iX>$91ylZ;$kiNb*eceXbqt6fprmZA@fD$-5_wVT&?gT+!|5oBC zor1K!w=?}QpPt;s+z0*9<hB^{Nlxg=AaJqd)~%83EV%DBAmB(W(vz!@1TX2`W%zlu zr{v4-vWYC9B)>QGD2ZFwo48O<UYNtwf#>z^RXNEQBHgPdT7Gx?di}+SxktdhD7%{C zXd%VXV#;C5&4^mm4~;Ap@%o!0c=CMw1+=f>NhkFMw0rO@WgBiE*Dhh(D|jwo+duFW z9H%3b2%3!dM0N&eQqG~D$sG0Kz=fH~s)=+$sg~S}2+{YxOF<vlsZT|gW1r|<pAK|R z0*amgK+Zk$2FP86p8^!5uuwtCt?54pvcAf`S!CL{)GW9_DJ`*NZCd_^`nFISU`PxU zoX_Ix|08|fCwSGLHgah6S)=eQUAi>=#B~JLqRCnM`j6As(TF6T{JK#<UZm7*)4QL@ zUJC~iHc?uV$3)W~{tYFHf3H5Uoyts>-hE6gi8SVnAM2UOWd$lCnr4)O&Gu5TMwS92 z!t}j=h*MncqKKKg2!#-D$-NwD$RWqZdSX-%_QrbFv45mP=ebtk^nvH2U0XAvb3aJG zHV4@wua{y|EjX86f})cf>t2oWR+e_~*Rk$pX^;30zWO18crpG0+6W{c#dRQcrI?$% z%vHR4;yy<%?WrEnH^CcZTJ^cR(>HWMtWutiw3Vk}`Mvr!R6f9Hhb>ab9%_*q@F-H9 zsFg+DKbT<_E-G5xt?)YMu_oj(WHc0?t5AHXcDb~ljvN+Qz7aN2NN$2n6q29ACJM=B z*hGPN!L)JFh$YAAJri#SQPVdWc`crNBbNT~Zr!S@lds48yJOwsV##Pu6j=t9!Oh{G zKn7|{-7oV=AJ>-SLIb^_u1^E)`$TC^L;7V>2vDOhM1`pjgotDm$XN2_Q2NG?^yE?G zg(zz1PhO5C--u3qIXd^{^mV@{f1%L{Mw4&q)85qk4vx{2{ra@wgw~U>&C5UT8`gP2 z95vT8z3;&Acye<jed7*2`C2r&D|kKHD9(4zQW{HcCaGC^a(q0w6Hrf-zUP3xNjt<D z;%a^Bc76RoB0tvCO{Cado}ybd6&hKOQ0XZL+Morxpvd8q0~C&E@@1<AVG4~^h9h4G zv|<9VtqGQS_zP&a;#tPF=kXlLu5ZFNpJ}7;uCr}2Y*Du9Ns9F3`8lY;k#wws=0il5 z;C@7`JC>al>yBh+az!N@^=R?{MbzRb+MeX+vE)b5Um2Ms`ixOYsnw~i%6SbXEb4zH zMU^9(=kycJ`bKGWm$~bk7@EUW^-Y-So7G(3M6%mB8BhzI$*J<9eC<r9mIt6jcH4n6 zBr7VCv8Y}2?&Vy&i27$SfozRZ&87X%BC14Xvlli|*}Mzeh4?e8ovY9@N)AKbO-3h% z=&Wq5t8W-0ExPyJ=-ka6S<&Rhs3Ujleea^1vsdprTkAYlA3zslGit!i?SGcVg-Ulu zKV|5#X!vzM^75En(eAYP`W*>mAnG6O*8RvZ^Y^4hyT@_KA~D?~$@|31<=QG?)E(S5 zjP9`2w-u-12j%7s{mBP@CJeew(NFf_`Q$Ki+Vj3XusPNfIG>1k>3esW-t~E4rR;b0 z^$xpvpike^tHaA5_k_NTbysC}mt}B|1=X6KjG$HTF3aM+fU|-{kIh!WZeO+Vzg@Xf zHzoZx1YB)}MO+50Qq_M80w*d;YBfbg`A679MT!1vj*bG58%yqdisDE|Zpsa9YMImZ z24@~rw>kaC!{Gw_A<5_NgjPpPXX&V;lBmjdMU%Uu$<LTEhR!Xz5Q(d)@<3|ML;A^7 z-KlpYL(WHqj!yY_>as<pQ*1l>_Gl2oIr%%{{@(KLF$iHer@TAXo5sZp{a}5dB8}pA zPB^V2V{S#p%F)RDdQ#+dk&|;N{Dts(7W$uvp<Id<lX4<LauJ7yYX5~ITqx^MEh}ea zS@h&l@I@TNknt!e=b-c94$6@fK!hip6ZgMdo{a5=ob;jigQk#$KX?c-(7W~=pVs*a zQX;e||E%%1C3kamMKBrp)Apc__oZ(PjEhX`?Hs8O^r5T!K?(ZCR+>0RMs?J|N^UJl z?*2|m^7XEF)AeV6Gp~5uEm!t$@NbSjcl9?*P7VM3AF;kq1A5)-v1I@H-mjyJx@YOl zDARhf9DS_wGcb5~9v!I{^}gN{@w-*;+i_wvAFW^SaZ!IiTwkDm)M@X%eLfn?X#Os} zukXZY&$S=D6B@1i`(izl*G9Yc`#OK#_lH1!Z>+9A`C`n!t?T#c13S7tJ2HL48wjD^ zLzzs|>vkk>OR~+sci>&LkijF-8Ow!5AB%xfj-KB~_A#($N&9HnGo^hL>>1L21ng<j zj^FJf1UpV-|K`6zvPVL8A;}v7Y_7x(huzQ<fZfo8A)BdZ80>}~AM8>OsUh(k0f?|z z{vOJI8L|9#sB%Sj;6=)aS<!s7iWreZ{b(2aqEEeW!-5ZAd-%Ko3<{@2H_iKC{iH9S zd~pl>13z!(y7T=hdj9TcPXL*HJKB4^QFwOZZ#Rwqz$efsFNV90ww~#mkqFUlA3sBB z=sev_5&T~@ePB#OEg#T!!B&qyzjg+y&<?ic!q(2V0@yBRTOn+1Y&!?GR<;FUYhhai zwq~~Juu)_0*J7}(U|Th8m$7X=Y>jMN2-|YDErM+s+ZMyNlx_8}HLy*;<}>=(uqsRM z2~pJg^&alKq;FhDRh_0M*HK`!elBO!^$_8j4BG(y{5(_pCEKVOsm5ObLl*S+K1*9w zqYt2oLX)sxAH7|q!7$SnFl}k3EyJ{B>7)Co=}LcgJ4E?A(zxnPZtmySlLup)sU=)< zoY`z#9b4bK3Hr74+flFf7NI-X6Npm}4N`iaq-h=0Q6t*}m>&4T6f>|B(-*_gv(%?< z#*D`YIjCG>$vvT`wIJ|_o<c;=dHOY<Q#^I(dQUl~7B)xyJM~Xqr+%M|z$tnU_fm~` zL<9oQ5xALt4-V%lKRUNR{n{VkJvLXsMc;N+QEcwcj<ciJ^bOz>W%QcgQ#Ud`ckfEH z>N}ZHc7kKc*DHF)jMiljGcAe^FEu~tiwe^go4bAGNDM!in&iH4WzXa^{gd6XsjtW8 zzPvKS61kf?7kl$}M0>hOA@$bhZr0O_Q6e|9fO8>KBzPrkBEhMm6$wtm2a({MIXS~8 zKnt+#Td<u+Z`xfZ?E%<^vFppQiC!$_EP*S@-(lpOdH)kRXLr}<{+{wLBI)5Bp=2ND zmdsFchmv8^Z}02sQ?ttUuFppFggyt`_R^j)J@B5^_1Vadk(`4L`n&qR(7SdHM0<h* zlntlu4)ugETztRlUB4eWNVJkh6T=e=m~9iye^h3cqoU5z7DzjYwA>++nu{QYJALmB zrw-jeBgrwhMCMc#b{-SLu%qX~oCtajVvHi%^ntR%WL2S_EDNHd_3P96Fb|asXLfz+ z``UzLc(Q2yyTh3*|KRX}?Xb&!kvVeYDT)~gEG2V5E5fsiZPX2-fpmatEy@T1?QT3{ zZ1W1RF7h1$9im>sehLWne*B-8B=;02C*C~g!otq+d)|-rl;w2u1fG~1_#X=feP$P4 z)?tgYM?3KpUiPJr(9-LV(9#RiwDj{wx4}W9FZ71F6c#@Mi8*h!rQx}fZN5<fZB$~I zHoQQ<ZwA#cHLwUSVI!`qnC6>0N}F0RMmui)Snas;k2!SIz6rhK+A<cyQKOXxhFJ`Y zkRWU%;aa8%ACH8O;qyG<<7eSwm|9o_r?3&{^-S~Pq%vxlC9nuiVI$5PndU<=4ipRA zDdLBpb?i#9BW%QR8`JC@^o89p)VCHogpD}9%QWA_G;L!2C~e~WBeaP~jfv-HaB5Jm z(=ary72Lu`-1jgo75A^;YMA-32yS5`?jJFY(-OI0)cGS==a~izeitx;!YFLS^&r!x z45!qmcTF=m=uP0pn6?bq1P7tk;?FQ%vLAz^Uz?&0!>9NEjO?}GqtF<}OE$F({}tIJ z_s@o4{CdfL?!PFT<Q{3uAzre#NZI&-G2&WH6TwHZF5;SGW(^{DC(wS)ck~h3(TU;O z(e(lC==px_X!OO7-UlZbT9slLYVAb+5jIMl-AwbHFh)BeF;+XF9>4QPYbO+p(oQ&k z(xJ?KNB07t(Hbnn&}4v+B5Wk(Ri^nSjnXD1Mr)H$3MQcxOhWokI$!wYZw5Pl7c!bc zFKi^?ZKeqc;H(Gd{E?6_LYtH)B&-6$Ff{Wl{2**3;a#SA)rVXpBrA=;1gEeO=YGM- zr9lLg)^r($CPV~>un`BPIpTft7;SQWx;A<Kk=o>fvD)PGGY=iTZ{qIpy`tpP3OB>h zWQvd?Y$WCHO!G}dol%fZ^~Iqh_l?;-syD4|<l+(4#7S$_3`0E>Awk$k!skrG$vDkz z(;Mq=y)@t(7$8(|DQ=;do|}8KPg^S}_Emo*)bArHs<E&5qio~%^{N28*;nz=7goQ| zNS8bJeDZT~L5m$jsqFU|G4b&q-+IW6p^ly3M|o@{Y`<%L?`pAH%r0jHV<;ubXF1QG zlHry^+<qU$8DYwQvwMOYL$T)fQEnuO$Ntk-=+<=vV~jko?B|c6swatd|BPY`l~0n` zG4jRHZVX7!#oboe%HE!h?jgm!T@ICZzYiT{cKLGSHSn_&GnO&bx>Af^c4B9q8*?OM zZpM?$*)Lv-{*F@)Y4Q80cR+Hkd*ijs-55kGFsI;2+?ytjI?;_8#~6xjG6k#0?{Q<s z!^Q8TcAaAGu3vut4mSot1tx(f=_*}&%S<<BB4du1n7_<>f3q8N6k|@nlgyaM-u|5% zb2ME1KB^7L_to8JZg;2GF^rjxC*|6nUxfbU#$+<)Nj%APlx#pH=*%0(!o}~SUIXQT zNt3=<<Hk&4%oaS!+;LGX;>H{Y7r*aUcybB3VN%SEnar5m>50Fo-`ReRz~F^LLBE=o z#ePJ77q42nNy(O!F(w6>i_K`0QY0xynv@Dj8EaC$Dk<Yl$}&lrU{X3IWui&BUQ&)S zDc_fr43qMhq>M8uJ0!&l*BdU%UtAO#p$TKe#zYros*7T^d<IvU3sdW&Tq!A&v@A{+ zO}j->GMR$4;vIQ1I*u_ZwUTtK$#sw9nru>jDJjR9lousslu3C<QjTT{mSKpq3lR9> zCg#r)lV(yrlN7&68BG}*W`s#OMpBM2DQ8Mbz@*Rw51Eln$&OXdm@!9CsQwwD5oM+z zXjE%4Www#)sIC(jgEHQv%#d7EZ>Vyp)?!KlsiNsAF7KpkHZi?|KcX-OH9l4_+bQfn z8oQgA8M%1-he9FkKA#;!J{+r1@<BOPp%j3Ut57KHa}>%fP)ZaEdHOtsLY}@vp^&E= z?UX$7bEiTfKVM@~rrTD!QH_c^3QsbT<1W4?oog9-qe(b2j8U$HqdL~ln*gY``Deiy zw_03vl8Z6Q^>b)KBo{2&g3BA9Jkr$FDY+P<=*lv=NY_VCtUb%(>XuxLQFKjVE~=%; z95tou<FTf$J0%xm6kR6)YlZ8o#s|J>aXluv7^CQ#%3MYq{`i`z53S1+w@EI>D7vV| zwRElQ|6APR`mN+*jH2sgm#ztBxc(}+7^CQ-cHGi++1-<JEUq+)Rv5-8x=sbv@1uSV z8M^w@x`6U{$;B8&R}Qe2u01P`EwZ@gNG`@Gx=v#*yDsZOLkwluFh<cu)3cVYyU+gh zn-*8S<YJ7XYZ`M=kAlpO<Bwf4*^I*u$;B8&*BQWCx^91J@iL3+R>{Q}MHh|n{64#` z<4j$TNG`@Gx~T7A=^DM|)pU#NCCSAYMb}v-7cAPcOUC|cl&R}O$;B8&7u6P)t_`a? zmRMZF10)GG7yfWjqpjYc8bySQ1lNAie452IS#mK((M2_-rR&!<_y5M?nkl&$qv)dA z)YA3B&!20yxGE(VV-#If<6627Uh~H>7S}S##TZ2w)yk=Kt(9DiQFKwwZRvX8lv{k3 zuJ1@L#wfa|c2A}2G0DXkMHjUImaeuPUmb7h+9kOdqv)bmLe%q=UMud(e#_$e56Q(C zMc3Jiu5%imTV-*5A-Nc%=$gx1M%`N#-|Vw4T|HV3gBYXeI!DoU>d$Vu&ElFaxfrA9 z`U-PV@0ZM+F%3@-H}ian<YJ7X>s(;1IDDe!?pllM0?EY~MHlsd{XQdHcU*gQd77zf zspMjeqARHA`ssxKxZL7eBe@u(=n5&i7W{J0X1}RR%tT`q7GV@!#fq-(J8u7x#dW{b z#TZ3bn7NGhi~0Z~OkK}OF2*RjB8o1${@dbuS#mK((N)4+Mm;}v*ca~{Ve0y$<YJ7X zt5ngowdd@QEH3{DIKnVS(NzYj-)H2FylIpF5HNLRNiN1Hx^(8^@i=V0$Q3Ax(qmeY z<YJ7XE6Q9(-q`c?+rKx`<hn$1F-Fl<uIRe{<KtFYT$f8O#sH^j>m-HjqN)Fui}Di} z<p~#Mn~U<Ai*mq4`PfBC8%aJ9M)>DA7iGFaIU8@r{#cyuq8yV+<CB(#Rpd_AdK~d7 zkHW-TU2CU2xe_lpBD39q;aG8;UT?g$H#E1d6enf^*U?bhj=M0WKpeM;CFMAk6Q}>F zq!kToXy(kIwzcwA2MW@l*`VUgi#9%#mRQBRJT{h(9CuOqplPD=InCC|qWoHGO5)cJ z^HuJkZ&*p!LK=sPN+M3-tq}*Pm>OL!rdHa9oX0zo5ueR%IOdc5f&r-gRkAz7p^{CJ z_CRyM5W6+l15h&~uTZ08>{yOiU%}QTopmd4ud7TIa>R|PoI+$zw6Cd=2$`ltZCKe@ zm%xE`bak_h+>R~DbZDt@(1J`)%06;)xSb+*a!V5D9u*}>4w%ST4xl8eP?_sgs6kYr zGQcX-AgWL!%W;NP8B`~Wt%GI`EU0+3oYgcG8OB0;x~5_l86Xw2bhVh3Y+`Y#WaA_k zq?78v8@R-|ma2o`$fH9nRR_W0;UG8)QgL`V2##5)I6NE#$Lv%b9u8JSQDU3r$BHPG zEa6l>?1xcW?>2xee^L}d42lh;mP{Mg;b3DiimnZ8l58+{skSkAINDe}ioT84%hkqg zRuCd5P`C{eGK=F>22gBOBc0O#3a&N6tv$7TiUZl38$0T1T9+=BhvSO;hNH7^mJPu< z%Yz9=QPb7Hpzu*YBv*L>q=Qdpmc@-K@J6~A2pp1R3aP1yHsk88Vw`lXoi(#CH_K)Q zJN+Rqub@!C>GX%ueELHG-I!Bkdu{&?M5Igb_iLYYG=4lzf7lMU(?nx$pfs=3AMSzc zN5I`e!wnc>@!CD!3HtrOOp>Dsf_vepcUlOHE^*{l#@WWCAZawxK3`(!olL4-f=hvG zmsry4wJVo;sy7c&-W|Z*H;6pyA#NU`yf=aSlS3ZT^nZVs;M4Hr*Z$qR1o<k)W)!vm z_GUreL4oDC#)2hlw_vW`^Br0hhK0Vm|IIk9^~E~b1Nz)I+AD1vj$+AeSYDJbmo8yx z`ixjlDfYo((_zeyrIs)1pS*#^`LU^efW@ZK;>-PrGVGn{P4tJhj_@6%%`#$*wz(F` zwu^-Z0yMw~XbC)N^4nZhZ}^!OSz$f$r%`N8!5Z^wJ^4OX8<|>W(5}BT^q#5#ef{=C zmY)2L;fGi<mR*enz1RtWJ%r3~(7)BsJJE7!H7b@=(OyShB~7(~@JIwUnsX2EBL8v1 zOISI`0<f%^mfq1QNMOV&6|8N+xA}?qHa{^>eCejrY#5ra7vHIcEe-E9ua58KwpBRB zsFS#8K3{MM8*$L+4IGDAQE(3sh9Q3o3BpDaPGZ{s-na4XhH~@Q{#}>q6~FHuJgEl! z{M~C&aZ%l6$50XX`zY=R{gr5Zs~bacFXnHE`_b6*hXe*MNHfD2-=-+^!Wfh+gP<7{ znm;5%Uu?*4n%H}TU-~*EC>JuF{FQ}2d_~Elc{VbnlfR<SWEdOr;Rt0+Oan$SzeRuz z;kv(DBk5)$!7xS{6Vrgvnw$Ci-H%{;ie!`N7C*c`K%I}Ilvd}etr?yBBo|{8T}LpN zG1i|p<LRp`u0F}d7$sbzn9CUJ(>#zh%ko>v#TZ2weFL__b;En{pIKc0lw6F_GJQNs zrsLK+s2@Uo1M$LV?pm)H(KegC3vnA!4b`9)O%CIjD9#?_VI`w#I+|KBUXr~gqsL+w zBl}yPPEIzvCMTcbX7tjyzIXXX_SZZe&zhy4bv0NYC_g{f)(1L@`#`@&R?=l`d-Z`9 zQ4zG86n&s49XRd-wb$1sYAt5UIoDW)lO2K?!QgZUj`HO<hJd3yb?Xpt1i90N!$~`; z_fV!a?H=HIC6<1ITCmq%H-V&)-u-a=tHdFDdiK!>_b*^Z$l{s`M^Tqy6lvJWc=h=R zH(`i4V_unsrI1H;&9Ot2cj6Fm6yB47J40g4@H+aWl)keZ@>2Cl&jqerVk!Ko`lQQ; zD6b7TRBCJvC-1vMl=nm69&*V0xAaM$LJ+R{Kk1X=)WrXOmsG27?4bJz>v02YV{>i$ z8VxszwBlY{*ecHoi3A$tN%_df>&&Q~@bQUS)Oqx2)D}^j@6%|v$9~u}s_3*+@rSOZ z2W>NkA)1!o+rR#0Y%S@B-3w*!sZnk>%nVpWKTFuiXN62l#UZ}WQ3WDw#38=0q~f5C zh0q~v#1UcIzqK!CtE;K}_<dBXleuZ*4d@IH6EEB!A}e8rY4#eP!ff?Sj+^(v;}+Lc zVu2xy%0;Q?$5%vQ>T@d>SzJbLA&kl;dR!!p%(tsI{lMa?6-4fFfy>qwh#prK+zn0% z#m`mJN*HkAW~fAVa|;nEJ%kT^uw6avl3OYNsXbfKzoJm2#*nMuNAX5xdhs+5Iil}$ zcntUAOgTL#K82-UPXEy8#qXn7B6IPE`q$hTDp7;^hgL9og`K3{NDpa5?s(96#qThU zPs%qbS)h>FDJj<ayM2;kt*!f5QfRG~;4;qgwAS&_sv|PAGD~2lNs6^<FDNP2%060A zM26Om4WoX3egTRzr3|Gq_w)04NtK;4V>Uic6NX}gF*9aUB>-bmcr6lPC?_x`k7^7u zf?{7&Kx09xq|ka3+m}-5L&hlmYO43Fe)aary|-9gw@EI>D1CSylPYUltQAZTNiH#N zwVzKo!KKUM+A6siqv)bJDK%Wy*UR5ZF2*R~I?AQX;`&5#F-FTkLdz@s3X4l{_itro zRnTZ}lnV-Hhsz_ydL&vIl&z5BI;R9z16Sy{fYxlA6!(0+Iuy}EdP%UdXhujlVQfIB z3fpe16!-Z3*KX)DM;fL~dAFJvyO>lt32PtGz|9)=U{Y0iCq}wA(?Up5<~?~l;9#Qr zDm$BU!%^I0mtyQhs+~h1G0<Tb=g3KV*2!UzopACbhsDWYI-E7DV76_lIBT$RQeJN1 z>^x?mx#9&pPO3f=^8qrKd5)8)DzzJrancsJKk2}Ejgx2%^w+4`wHdE*64mhE9s-W! z-Rp&0f`qXds@t4qEscL{Z6mo8?pertUdp6s2@=lMHz3@8{JjLsFRA*2p*Az9RlCM} zR3CmJF@z(-;kC7{MEgGeMxw&IpDH~VYVW<qNwuKA223GUb1>A3d*P@RT@1_$iKB3& z!gT_(b_lp{0CW2wIBK`=mKa#sc<DV4E<XhBZxU;U!x7Ka+dYmdXPfcLFVo<jKLi{l z>!m}$WdYaZg>$6aUx2#-xGSkCfHA}2z)`y03rv72e;8`7z2XJaOIju{OO9cfMn7J- zuRxKG$XPF!ywHyqj<Vie$76pP{>Y@t2l;T@2+RSAOXa^6z<mMC@)Jl}YI$G4tsR(F zTI36pDqe1a+qZ!^C5up^r{EQi<#1b@g>r{KGO7GWdjFNBX`f9YRBFAHv{Oz(p1~iP zRPtKkRtC(*L2x^O+X>7!r;@bP@~B+@7?=koE>(IEZX+;H4*~Z)FvbbCspM5c-YdYJ zlno0^Dje0PX8=<wajD{^00J%ohE8E6lM44F+<quA48+4Led|EK_!Lch4u53)`18X3 z2K2XqdGu65iEn_6bIij~HM%B;A?731JWMxmw@WPP^_qvFV*B_I<!u9Q?;!HhAn&6g z%KHqs;irjUr1Brhn<_B^DZ{~&tOiAV0h$Kf>><coFhqHm0M|H(JgT2I3{l>_z&$*O zJnA33FhqH80Qbj1<WW20Ki!HavZcx|#{qY$#HLCQ%6}z8l(zu5+Ck(|`d&Rmc^iQH z<{<JY{vI8oyk~*iF^D|!-+M!p_ZQ&)Ify(;k7KD(x0zJwF$1`-NNlR~pz?e15aqQ3 zcjX}RDE_`PM0xiE_vj$<DE?j=qP*9D`@<mevLMfQ1|Bw(D*mPbcc#Rqia*NF6+@JF zF>uQUkv9hN)(=tMEx_G1h`cPwdwPiS-U9ADr#wf$lbXNb7#G=%SHF{*q0>BY|CV|3 zjZnV&|6-o}e_)P0N35^PIwh+*R8~?G56!DME$b^^$;#E58d{bmmS;^Ndyaf@qwEPo zeNpPr{QtvHS86ab1px7RfHJC&KMzn=6rTsEZuMzdcv8;vX*qc2vW=e9)%V#xNqC)r zv-T?h(dnIU(6Obwa3+zzpGc8pby}$Fb6+C6Wc|yXM{Eny`AXWsv7im>%)l$vAUL5a zjnP=3vfMaLr|X>UaG1Eg6URFp($o8Jo+J*~#p;_^v3SL~f`(4>IY9bo83`RFFkGWh z{Rn>nK0@NhY^%d_CR_u2Aj=P!#^K>LH8K=@c+qF3|AX-Vr|kb;#s8mr_@7T6dWk%j z%d2SEOJkr$c!_$;!b>`A!b_LH_Cx#yw5Wf3G`WXaMuO1eMZD3ANQ0t)_K1(q^OAu` zd__d4o~C#8rgeShOPsNOM<-6h-o6c~DJCSq!i#shJ{#6~B)d>zFrRc8fp_6`8VC!o zQ%xwmUTWH=PhVvI?`X%l?lfmMy-qvFI4}O(v$Ia_IQ!)Kv$INTacX;g7FI%HaeiZK z%h_2co!oKKD2-XD6jv^Y#k8=#pt7PS6p5UlR~(vGlEbcC;Mry@<C3Q{E*599(&{U5 zELmt%A^e78{KRpMI1X|BPeEAsR-zz1V?%EmrlB)#+D$*>BH39W?PEI*y8J5~4oQdL zU(?57#ni!=-gDDJ&<1Eu6`U+U(*6^21iRkD8X-o{NFO&MJtLTvKCUtYdiC7&aiv+% zS&7A1i>#y57uWP32fYRO3vjM}m~E@@>|`6&>j}15c{!SVolZN&DZBO<*$<S46C%${ z&-k`I7DNQV4-bp5Pe>nE0pEqmH!IjTB0u+2@e&@H0-Nv%DYc!1Plt!5SqFSy^T8uP z;*`oKvZ?6DlLz>Gu+K}@ecYKIDSQIwuEY1kgLxkx^anTk^qy-es*xLY9Kf3^;!Gr` zapas_x`tp(A0!wHkiKz*qlCiIj1x`o%cdh2=#buEEcr|}t)|hFH)K<Zpe1}kI>ovg z-qk940_QBn%R+L9Wa~H|{vuH_bVMxj)4JP%iY0?-vAJ+gUw<85aR^>^4n!4(kL_HO z92rf%7E4y({JCF4LJplUuMI57#a#oJpqhxvP?V%^+$w4fPMetT%8a#FW@@qSy0pX* zLBvr2C-d@>!M)dqGgENs$tO4r2kwC{C_wx8_cazNJlr`45uU!TMTVFFeE!_?SPaOp z<Vc)hjsub5S1c~XnbE%<Sdew#T;PLiKlbU}g~99FaEKbtRTa8o-HX#u;BXvyh7s=T z!^dt7Pcot@RS;Q*ILFO6#{YHpZgqy9)YEX_?zs5eE$Qp~K{O;6mL8kF{xJ~PmlU1x z<Q6MN)7O8CCA@0HkC~|QAaN1PXgFSyQIgtorC1#rM#xGtbYD1Q?bkE4#3)LU#LyB# z#62AZFXI&_a~s(>)^lez6$TuCTo_HR2u70~dNlb5>t=*Y;V6pq3fM$B>wry^v-e@U z27duQ8{q3~(~&;w+13i%*Vy)T*w(S_d$3W)3}~BSdw^}@&|kQgZIfXW9MfPE9J64% znq6;#P3X8Awl1bU1e?%CCnO8k?I!J0*o3^1Xh(#+Nw95T-jiVyl@uSZJ&%vpzEHpB zgKBt<GSw#h#<2J{`6AtyF>NfkK>u9#-;mu)kpJAtlX_AJ=$Y)(KiQ*CeM6u7PRBSb zy}f1&DMXwvs=4%HoL~50_F9tO^RTFPUWkEmJ$VI}2i%NbQ3D~n@%h;z|HR<kM+lRA zF#8_-#&HU8KGiC?asc-ZAQ#4PaPVrq`_AmO2*uKE>$0!MucmEXm;DX;<y?3$Oxg4f z@asLdW$y!7?|w%7f`K7SyEFR`eo4ru_+=rV)340RqB^1@2*?|w^f_%A>DS(iR~$f$ ze0-aTJvztplQ(rgZalz2v-2|aY1{Q_d#J8nuH#I?h5EEt>34CgrywnTV>t7ARD?J+ z9EZ!U%iazzZq<As9}Dt%26?w2>o|@3l;lV{$}(Az7DF2h@n($|8o>1s>(KsEzB9us zFGsM|gJ>YuW&ecYf~pv!m`30`ES#QcV?^o9kRdk<u@^I4{u09h-0OFwucNaO$%i<d z6+w+AUnK9LjB*VkeVFK2`%L!h0BVT|bQbrKVxe@@^vesf`QL~rKs4y-uvEhmq=UW} zQY%qtgaNrFW+W{d0px{T$N?6&r8LQN_z%zrdMN6gV9Qvdu1?%)gcryA&JxuTB886= z52Lmvz2QvyJr7l`-aXf=*7c5)wO3`Ir*)n~k@2Fe?9rh{j8H6OAZ4eZb8Q8*8Zo46 z97qJB@W63&x~u^hB)&wxS&Lg^CPHhq);Sh2p8qm*aq>lzTMr_4No6<$8fA&fosM5B zkyOU0{5cBjsYoE|gox_^LI4E#F!R~4`T6kdS!}BXhPr$KJ{Ooii=c;$r>I_^gY7}4 zVZFJwmTghkXh{pM(Lh!el^bQ+E~cFfo2dH2u!(A}61HpEbqQ>u!g~}pQQ<uWo2c-H zq3Zh?<Bow%RLB>?CZsHZO-NY@n~-uZY=U=-Y5P5FLh`Txt^{Ox8L$Z)MoKS$q~-76 z0mNunyBUJDTZJ)sKq<POI!^MYyqcB218H0Bqq_n)m3^X6b!{o^9|=Yg$25lefgxr! zW$#URi}l<ZOv8zr$o9A%gF3W}Nn~}b=NpBfQ<Xv9<Bk)({6xN>q^!%nN4^xs&~40x zA98##IuzAVzq)@35I@JCd*g%cjwN*YKZ_^#a~}pb)ySjik!QApGupE*yPAFSV0JIw z<2^TI>v*R;MFEH>pQr90c`}-O1%6nFJrKL-u=i@(8lqE)4bl}dg;bxjCpk3IljwOy z;>iW5wueIkq`nYOZbhF7^;T@|?#^)}$b=@2IhYYj2C@-BIqVP`co}tCC;D`;9==ZE zVpI+*&>`qRhrreupmCOHvTub=M92?en}WZ9_AH)e$}H58idmxAeiF&frc;#@BY6zB z5W79b0*k6<N9Qr=&madR0t3C&rKDS<y4me19{@2C8XWSANY%TKVy2#A9FzV282S2C z5JYM<INZ88JDU>@H9Va{y=7rP<-FDS3usgEq|deDa9v@m!23f?TZpH~WXoX7WEvGt zQB<iQk`Dsh<DoWF<^~$5S5rp39yBW>>XZ?YyVf$5vmuf-h`jhF*UUKa-ZQ^(V?(2@ z#qfN!m_n$63{hO`VIw^rIZ<2+QjJSNuvLg6jIIO`_Z&o%=tGLQ(UW&(-wXlz+&&rr z-9uKIyx7}0lB4b55s_p%YU-^6yHWREiT-|KF4fJu%(@x%{tKaj3sBo10^)>ZIvmkx zX8|B2!7&Rif&3i@hdt_}`&V#i_Xf)S*T;~Fdv2nPPeZgqWKzoA7|y*$#SU2?S6iVb zV4uhlC*KM3MD|+pC?bTqrZxRJcoR91=7O^E7vSqxC^rW9m@E-ps9MNdBIsNV9RY+$ zMw&nP3FCQ;YF(^=txL3*sptAZN7xuE%W*mnm*p^Bj+jN}7c(!^`8Mx%H~~s2Ux{fT zSy>`F(9KsiRAH|d-SHs&f%yd42xeT@OYxT+srTGSK1|QJaX0;pD}nX8eQb@>=>5h+ zf=olrc&@%d@|C5*x*bk9tvUl%Vum#n*4KqK3s#Z?Y7VUXg_R_bL?v7pthqO7iNI0) zAOgn`PX+oO4z>AuxBB{hepM3#6%pNX!P)uE{QzjVvksLSI#O-4)oeNSpB5v}EXMdK ziy}KnF)i-<(g*g@S38kWXvMJ12rS2_A9A>H5m{mk&_BVSt#lc8>50;n6{pEWY;OAu z*MfA8Onx<EU>B~0N`LlwctOYU{ek47YbGZDruY2`_sDz_fsO9=!))EEqr{w{d>d)> zH&O4RT0HP$Xnit>2deJVD+{>#i|#!T?Wx2SPCJrgUP2|9tjfUcXR)a}2X@STBhgM5 z%bB;1m1A16JQ=`I{ZN%DrziPkbcD9oy~JUrp6jgx{ak6%)a471efs>D3eq?3G&Jfx z6)7}!ey?)FIorjhA&BHA+UA$wyRNcCp`^MgiNApMGM+cE%{Wf}|GA3@g7c7JkfB5~ zo}Phw87PmSh2{1seOxdtJ%eVX^vv{(Fec1`Ie5o>nO=zZAl`MnSL1ylieh*%%3yH0 zK6g*Tk8uksvaE~yM?u_=IF=^jc|Y4|TJ1izaXH{gU{T;io0)uFzTr-ePi0A5KhW9P zQzfod0+kZEBRxknh{@gQIb$;*kUYE<KRLs*_zm998JjB{azG6VY9XlAf~v#c!xsxO z!T|3JF9@wrg4n^_w=uEYZ!cV&+kWk)PyuVlUqBm=Cmkpl&}a&JCDTsElO`7eS{|PF zvMq!sE!7BU)KClCS4|sbIYDbRZC9AK>rC72unBG7gN^1X1AMz^kR{U+k1Lr*z3??` zLtJTJVb@)-3D@1GtJk6K<O9Pz3X9kdAZ%%PC)wB>I*|@scW*}BVX)%&F-8VV8*y)8 zntl5L#hYOshehZUHsaXHH0GfGD-5-jhIs-O!69tKLE)1dUf&hC72=1VzhGDLm9P=V zt4tF|N>9X*(i3o`^muLZW9pI8UjSv8jj#y4!bVcwW*Q#{k3;%L-71cQUv9AA_m_+y z-NHs(<VE;4bCi}@pP^;WPuDUFj?^-5op@;cKC!{qu6L6uLD)#bej&l*GJ;CD7>06( z@UgHF=bxFzaZ6nen4828KcB)=a0nZ5{GDkcj3cyBc_NIzVZ3<!h!GS<VI!{3ndZar zZ$#cODy@9vKmC%SMnmWkHsa8bXN_1HjaWhK;6U@tJS$eHycp&uum}mlMiOXh!pNuY zivg&SHp~=Q1h=pe_ZY!V*EC?OwGqx*g9X3YCYP`g*LcB&p>LpAK+h9D{G@y<^avYq z&_p?WnLSp^u0K)Bo_~UtU2wdXjl<iHKXlx_V|O3ZdsLecK?@QML%l*FN!Uoz2|^O* zf^=N)aHN+0n7H8KF9sWaA22zEjX1Lf=V8M7pvfg{#6{Pi!sic-)gJnfJncuX%+PL| zpQ}yqovw{JB#%+<%qSnL!%rO$nb18%fG#N%k*VCGG94?O9lGo}def=g*5|Va<5f zDCMh{!0-}p+<2_O{`dAOZ85@O{@T|gQwsTgMuj#ZeB*6mJsyFLI3SF=e~4VfUJAl3 z9Q(IUiz`Yb7{aJr)Gk`O9`9Rp(BeuE3k+evWm|zg0u*ak1Ys;g)dCs9fXlWXdn71= z3n}F=Mukt9VeIw_p35alQ2qmNl+a`Z<s;ZsiXWmaial0|>gP!m(s9(-=L_*8%>?No z!l?0c1SqNYa#7YLLl|(`RtQsH#_yxbf#Pn*4P()I8(}V&7TT|aeegD}(acqgC#6&C zgWoK&xGt4kwC_jdqE3Y0N4x~to2x^m1Zy4ALOYXGF6y?W;-XnTGPHY1<)T4iDz3XF z7wuJ2xzd@-sCO=2l=F_|!^b5T?SfLdGMI}hK8lSw%{5&X*EY$O!CY|G-U5XZlv7#R z!#568>*U8zC*QT-$UQh6S!5%g1rgSZ@k2GGkh8pYCGU~B+@!$5_i<3S&8>^Naem)4 z0>QjCw&5;I*Gj32Flru~0E*v7aZ9H3;zkra3D%yK7Q(1p6G8F&vhXA`v3?gS41?=^ zX(5c7Gmiqr@1v@mV%2xjqYsN%wdcd58B>cViRsWjxX6v6Ss=fU8WXbp%J=i9+?Y(p zP_<3t&bL<7qOPWdv+FvRF_c5d<%8va!jBU}HKE@}jUD;tlyANGnj1qS1;1|vp2WQ^ zzx+!#hJ4}oQ8$RfUVPIz@3}F@Gv+2dsZ_tPu@F({^v?;5S&k?9XY!Rzh%hGxOW<v~ z-h3u-hZ~c{7?B@vKTF;uRA){(Qy9~VC+Yg)&a+Q-V@_fW)u4pAaduYNjhV_As*Om) zL-%hv*^S8_0tRdd*Wu-y!Wil_lCEIYX|OuOg<wDqr7Zb*T;;6i-IyH4PzQ}Lfz|Qb zgw39RPGgMG=6K)ba5`h^=!w5;KOTlcKoae8sLc9()B&Y3^Wjf#`li6(Mav~NX^2nL z!Y;}ME=s~hF;1E$2|~_&F3d)Sl48H9iOG_3UUyOUyC?z5^lS{S6J3<EU6k`&l*?R{ zbuP+XF3Lt1<#iY3a~I`E%4mw8r@APGE=sA3GS5Y6aZxt7DBpHbe(IuZl9VZ$5v#i- z<s_5xj-;GwQVvN<mPrXvcL`>aNy(HHx+Oy7mNO-VZjum`h@_lgQZAB|6HQ9Hq?}?> zx+Ud!lk#mzIoYHbXVGSxls<`>YEs^i6wRdk*+m&moh>$opHFpB=DH}=E=q%o@^u%b zM^dK2KO+0zBPpkwlm{dw$E0kMl+#SgHc2_gq`V?2bjOL1{Hdgf`#C6pCs20)Cey^6 zAt}c)rMaQG4hPjrL$Lu0ZHBc`=w6Lka|B@ue&nv}S%PwsK`EFa2z*8aV<ZpdAA`#v zQOn4fSu-UUwSz*k99e19qA?|(T3IsGehDsq#p4u%Vq68ncS|saZ`z=`lWI}*9H}!v zvF@m#`xT~epBQ8<BIAcK%KqsynTvb2upRT*t|Kh28p*{NWv}*h=A!zW44qkZlBsKr z<YJ7X>nvccJ?N7c9cZw)Zj)S$QFKwvStB6Y?|!PO>mkX-7)2MQo2BayXI}ZC#YNvB z$S_9Hl?SS&YsS^r&z@xJ`n}|0jG~KD($e+)`Ng9xt}i4PV-#HlimpfNpMBN3y&#ji zL@<m|bWzT-bba{DH9Z#BOv%L<MHgjj>x}O&&fkT8qO2IT^CTBz6kW3wUElMy)LUF_ zl8Z5lE*cvMAHt$def+6QPB3-dD7hG;=%O-Yh3m+tkMvty4@xe^D7wyOF6#Y~DZ8n^ z|3p*Q4#~wBMb}(lEnO5Yi|c^oVvM5e9OlX(MKE;!`zfZbG#ZA&Fh<e!6;Lf*zuSGx zITqKcl8Z5lu5+17W*zPF1E>DzcvDx2<YJ7X3ximju9e?D?i&`@#gdCLimsr^1&em_ z3tv5XnyITzaxq5H6*9S~mR`O3i%N?tDY+P<=qhF|BV70X<c+_dZtA*Uaxq5H6;^aD z{BixI7S|@p#TZ3bgt?5o(b@cicXCW!J0%xm6kR2XuKWuQ{n+CAo#bMSqN|j-jQWu7 zO0jN$_?zTnjH0Vd(bfN>QD<9R>7(HY!x%-E4yskYD7{9T;W}M%F-Fl9HMuCgPQE8J z+2SgbT#Qk4l{1%-Uh3U8b&`uQimnPp*TTQu@Ez-Jo2w-kV-#I6=E}m8%(=VM-#x|* z*LNisV-#I+V6F1CY0EFVEv|<p7h@D%G-9&a%I6k-`M0A?UA$}q?u=1%RVlh&n0@FX zi|a2^7h@D%)g~7#T)wOuJ0?-X3&R*i*Lk2?;iB}ixOB<I7)96l%$0>Fn`t*cmT88o zQ*tpz(KQcXOV_WKY<S<|N=h!qu+V!zSqmHG3d&1ZfF&_x7ro`DT$EqCDDSu^hg_6@ zDir%1<9z7y`?5(T%z6KM=0QU@<`c#WDq+-_oCToxeWwa%?UI={pePF;WBHThB8;G2 zFDV2crrm}&d45cBMKE4cUKtAG1ev1ja8zu_Dw+v<S<y^$R~BB&i5RKmznQtpIWh5I zb#Y~Rq$C~<imh7AU+e{izF4fJIvUc2J{x`r`fyxKYg?kGX_+`|n@)G3cRFRoI7z0X zrajT#pq{~PIpTC~^FVIib5hg72W^^&8r)H_q63#vEUoQqN*J+}@}L|cL!R{_c?3-! zfoTX5MBKvA+z9`wNSq7jL2m18Uxs-^1=`Wp<YI4bu;Yq4TN+y$6OFY^2x`3uO|WQ2 zQIYU~2pzWRbhgu}=oYZCxveP}oD-a51i3gGjFnVG!sTH-SX6+2dG04R1r_D7;G%*$ zkt1-#-O|Qo@b;3<Wg1Q<?Z8zNwM`8jbq$8#a4c9}Q5-2PFD^%pi^Pr1M6g#C<#Wy{ z?SLgaTv|`>Vrx;+OtH5pXo#r_mR5u-D=U$Ygbygo$}C5ljg$-;4h5^@k*auANm<ab z2?<<LA;6KvB{38VYT|^WvW7&gwj;scek5t0oAh5h2T5p{-_!vm7t}U&Hb@1aK!=?I zz`QjbiH7E=JVag`OiyV^nYdZx#Z~RN;)33Bd>h>&LPesc<BHn)8eC{$T$18)v+h=L zIawF2*qtB`2SKfLDgxPCOKSaa@zxFpOScFsr%X*<ZQXJT@0ul)lZ{JZQX!l&T3YLI zheQ*u86nRLE~bfcYY~M4E{sH6g0uN8KCWtvOKikTN9Pib?Dhuu+_=0&IPn=$2#w7_ zoboHmKZzIb^|D5=D5ic9c2SI#qp}2vrUoEJpxPUjH6o{ot8>J8R}F5O$S@Qxi&M}z zhMmM!?X_)ficC+ito~eRQLDMg>RDaLQ|dWgZN@QNZIn{BAes*1d@eKSbTpPr3KLUF zQXC!9L<mzKv<$Vf+$B2drIq5%Mr>)VscUMeZRzB*nhEB3l~Gb76O|A$F=f6IDQmyH z$4KS6*7ka_(^9rxDeCvZFenTwa9*h?b`88J-ejX%V=FbTqtL88={%>*=Hfit%*wUi zOcVt!O=cc;@>mW|J+@5lWU@PXvx#!x%_rTw8I5f2&1$+jnPu7WR;xOuU^PXH)3vQ) zAp&bUJK5FJ>GZb4)yeF6Mx7v9P|DX*J!f@Ghs#A};+$Xx$0#1QykQj+OQww`rHRZf zqQU4}NxY|%!Y1S1lh5g<FsgktMW4e-VQWV_fTFG74VnTJ#VA#=SNI2k4o$4ADTXH4 z04t&q46a@j5eAV`*Xo>d`^7CZ_wpNC>Kj()(LFmg^5!1*T|RB?txIc`)ps_x)vT;- zqN<og;?J;BwnSAY2SMSIV5GddG*+y~JiDaa<tv(rEJ%xeie_R_P|?h#t!7^oUF1kb zv^Y`~4Ihr5a~-c2ViDA@wB7eJYxb-xn;Gm3#~HH=<_I{Q;dq2r@xUDy(ziL9l_%qM zhT~N};buNloZ<L}1Lt+$&q@fn%NTG<fnH~I^}uZc2G{q90XBcr^}^8r6&EBZ#_LQk z8ms@(flGC!&98vlC9(9wIL8@bG%P<bM0x)J&WAWAW5`1q{O{k-^GhgP^KU-mWl3Y= zfADUep5hbrZ6Tg=#uESGAzmwweLOK7E;4uX%CnZ5%kWFEJ1LahS(S|RXM_ee$8i5n zSMQ0$6z`7g%HRe0Z-ub)HJY4{SO4x%a&xqMet$-^`#4%komSF4FAZCOVdJIW$ztr6 zeUr8dB_o?No*F<@M*H>++fRv@9F2>8x_*CR0+4X#-lh%zVt>t<m$ov<djm{gB{xTU z%6*}p=$8@lSY#T!68+@$P}jZ_6JyHBC!yr_y-nZ#S17qBGPfeF9UErNW!)!1RXY9x zS~3Jpk-iKaKIr!iAEphLOG&9X8HQp>tWy*=%JMWJixrQKb&^!L3^NWE!6j_OMIZM3 z+P`&4qHSp!6%oJB2-#f)v|OBO7W)zkDouVLg@atad*@%j@5a#Q9lwt%2r{p4TCqi7 z=uMVJgfdG`bs5v-0h3}(k_~5y=Lb|=UMURuS$v+P&p~8JgZg=rzE@kH*62!G>tYxB z^hAa+%GBgYP_3!SW9}%r%;KVnOfrm7ra>tc1sA!~6uEUdPBW2U7^CQ-FF%&9(KnyF z-QrruJYuPmpHIv|^C${C8r`L>-11U8Y0|{Zf_&u*?rhyI6J>D97Tqqubdp^FyBmai zaDY1Mtl7EVE#gdDGYRXA+}v5SfGn6};HgEN$Sop$VWRn7GF~lW0j0Oyq-YV1TkQ;} zSBv-z92X$BjHCPtLy76t(oI56zYrMXzF#V?UO4*7Lig*|k{}q$QeHS}!R`X)rxHhv zaw^=j!0Z?T?zg}k7zDQ%dcFYW63Txt1ozVWB<S}_4B^Ny&e0N66}L!!vt$q+sakgW zW_y*y8ZEK?WO?GJ%JaKJl=m~>HVz_>g7C@^<-HBu{z2rC|3=6!YOu0N72czP!*NP% z%<$UQR+Ga*;jBE@dYoEK*)!;&_utZ!`301(`giwaFt_zTa9ADhx5Wlic{~-iZqd3= zI_&}Hb6`uQ*gu{B@uszcnjSf1oO;%CPOkpRZr%U6J{5Z(&5eYeImA59Ky^a~i=<t^ z)OoP>yXrprvd$+<96`rP__ylQz7+0!u1&wbjcYQ!`^t=^+rpVXADtdy>w=62H+`rK zXj4oZEv}$SCZLt$c?#Pu##7)LOxxFCqfdzDmQId=Yd*LcG`;7FB5d~6yWYbgECW>L zR!xz6*7Tk-Y%|~Q$G&bZ{n*Lf2M+BZx<Dcd(l6|#y~?<xksJ4==~rXpG9A!_))<?a z&o=hS;tZB7`$jl<pavptx1D?t$DLujzHtf>j!=24Gm!uB!E^a&lw?PmKKHeiS^Bis z^q#=EdN+<sG4^xsrQ<mEv*#f6D6;6?6J%;gl-RRJr~Poa>1=?DGqArO$2a|<rvEgs zP%DmOeDEy6pI-~%8DSg6=&AS%@L3j7wzcDV4BIGvDFp(2Dh1_$fOfk{`z~y>uqwcN zm2%kjvg!H`Y$q`7Jv>FqePr4`g-vMt61Jo9hcv_{-q5Deu&diKIr!LfE>0N8QT8HY z$Lcn!HrQb2WlldO*m?L1aL-ieI2P}jOq+(M2vII<lbJ^GLjFrL^d7(qV#)9!<q=wT z1|N!Tq8{$lpFNyA`9RI3v;kG5a+J5EV<;fEd>W@`aMsgN_9UTuq-h)BD2DpL$xy)i zE=7o`EQvIvbcx|FpwY4~;YuNnGcAm#C_#&06Y22(?6zLt_>tQ9`lGb*1rxF9Y`i8m zdSS5PL)fG_4ZmVAB5ahn)0yVA?Q=0)40Adxf>YRtvw&&5Rj^p#sM<0NWj4VfY{Vf} zN_pv`UYcPj(FCWk5oeHT{5j<RcHBfBr7l&+KkmdzCyHD5xQU{ix{tS|_x#0;p%Ux& zQB;k<Usdnv2izEP5hDfaHr{r@S6kc|^2J~nin_rtM=)kFo+L5zsjTPSx<)bPNj%9| zOY`ZCMq-8`--@eVRZ7r!)r|4r0vDy(Md@)-um(dKL(Ue1U`pQSqWsfEIhqm<#u|-g zONw=26P;~DMvPC%7M7GW&CotiQbwAT6_PT-q+Ba0=w568A9wEpA60ejkDo9D3?y+P z@`!>GCAQF1jo>3TT4x~0IdBG|qN1Q+MH>q$g@ngdYhr>hJx;;5tx~bISFQDGy-M-X zYeED92n3LdS}Q)PKzyLB0$R=Q``v4wJ(FRE<o<haKfnKPKFORl`+V0r`?2=gd$0XC zl0SFr5ZN|H$-mJd952fYUQg$GPJEcVdgRNF0X{4*6{3I3#<Y%O;ap&nuYBG8lV=}G zjx<;3XDLjF@hOKa$?@q$-^v@8<a$|iDNKj4FfDa*sS}q4Ctr~Cw&qfp4$nHQ!?T`W z-qxDr`bu*tOowODU6UN+bGcaZMX`M)bCpX6+s{%C*GKm!C0#$-@YyFxF8?L!3e(|P ztic`AmGlgprJtoR9iGJ=T`~`MHD6qp<hoFEDGYFyb*&B|EoALMA-8u3N!_}61h@h@ z2M;jRZ1^?R^C?wfNLUX+4%_`?$kPZZ>k#rHLLwbPHX+3B5b|e)RGN^~B~!{9rZyDe zwzd503(&RztUkLmL5z?A)isv8-K;Qv{gbb(((}64)WF$g+$9|XQ|6vKh95lrocX?) zflgg+AqzOJoJa4>!Qq*gTqvI8`iO(rk_#g`E^Sc1=2Tx^J;$GtRw4dGz50=oO8I?o z>N<v-RHe?f5yBLuPHii;6j16Uu)3$_Qc^uf$#og2&MAf_6OrO*O1qKbnBtwZsZ906 z4l|ht$4{mv4+=-Rx-wy<lB(vkuDN{93`>$Y7l$gVMLY7Flkao%EiPQSoHJMoIs3{v zS5N1<2=xnI`&r4kty4zYj#GKg=ur{glvPn3=ABL-aSBHM=40lavUu4}Ej?Ld>1FGt zyle|$M%j_zCzF?Ly4*^BXYsN%B@v3Emkkg5e{+82^6KlZx%!HK-Y@a5?4`1g0Ke>M z|1FI<x%A|dPgdGQjkz_4GnJ2hjeXR5M43rr{;u2|De90#W6u443I?R|%ci}>ftuNm zn*~xn%FmVoH?RvhX2P+VaB2RyGgF@DleHP%Hpj8Y@sJnOGTB;1h)bDDA^%X+vKheK z5#cZCo@Mg4?!di|B6xdUlqh*)XC~ZlaBtX11u<WlaNY3SO~AEs6pIf#@0oBMjP$QS z(?43lRQE9x?qS^iDKICWBRJ+~CR{$`T@1`sV+5D&xf6i<9WY<9_ka&Oj+x{=f$%vF z1`YH~;FImSP)%zrFk{9kSl0A@jN1udu6G5;?sBH*vcta}m;*7vQ6DqmP6zJP@p$9h z1i^7gl?gWw;V%F)f_)==SdB8_HX-~<U`CuvRQB|GxHlP?_cbnC{EkEXjyn%7t@D*Q zi$k?c&;2>V9|0yhQE=Jhwc_@Tz{K<jEn9k51GfyAA6zK%vgyGT#P1Pcg1VoY?YVb$ zL;V8gl}kh(yQ!JdF&Mbp;Sc@&rGm?*R|E0fVV5CarV1{bUJZo2nZPW%TyTeHdG5a> z{Nx|tBnbTTldXKm;kmu8u&jyG1(z-V9>ML0fN`%BT(*2+xh)3f*sBhWTaMe80`qkz zIJ%P0_#vDM_~!@7&zR4vapMtSuKAII;RKP)I1Vd50p^Zt1eY!U?#J!3uC=V!@Xt@S z^p-<jzv~3!e`nHz?I?iCANvToX2Nl`$?>e5DW6QZ1-Sp-zabB=7hpDhc^<bH0u#C6 z(74y32UWm~{E6VQ>FG+~o&#oft>8E;&lEq}p`E}CxLI)7>Ko6bxfGa(>ko~a4%|n; zoV!qP+3X~<<1t{qb&KG#<;yIT+jwC9Yq8+6*`XtWJ1%Zn<uq{kWYdF}QNHtl8FicB z*nVcpmt6?|PgIioejzv%cShV4gg*;RzxxD-Xk^4KNBA&c)@fWedEFr317LP96M03r zWQyO3$md}XU~YN2;Ifq)Rdkug2r{!gn$f-w`UtsZdhVmRH50ggzY<Kga%)2T&I0C} zUkfgq9x$ILJp{e~jo?r`8Pj_?!e;}sP2;lV^K-y`0L+8`F7mSJ!O^(=CNN)W9HN`? zxh$vP!y?Q7&Xg}aEU_nW5gK58ve`8j>ndQTG9&TH7Qb@byAPN@X<RmaITyIU12g)! zlm^EQ{xijIBf_r$rt~qQviIv~Pv!!1v&Lo1mlJ@y6_{r=E?aq&0k;vD?!N<pPc|G> zz&a9`KWbdId^ruc1Hhd0IHhHm$NDfzV-yfynertM;bVcjP-C;Dw+Ogtz|?A7wsbJP zcLMWrC%7fR?F8n!{{VqcHoa%F_8>6fCloAeKlUlyJ{_3d8ka5qdLe<wKZ%k1??qlO zTr%a$AcQXl<{^#CrdQ*T5vzd7e_G@X%p$KD;RBzstiRx&pKNxc7WaCrz!CfS=O<e} z7vSD6G)4jOl_?!`ivG5XxEH#Bt3>{70`8cV@>J?irspn3_}#!9^Q_>ql`nCX!0hM* z$8zco<8}lM96s6fl<_$lm|<POjR5BCPH;0I&jIFXjmuUZY?oVr+1iP`n}GW>Fq5AL zfloF)rM!E9c~IlBrMDJ09s{Q2k4jwDamuH_Edi$XMZr-oGL>6zB=D3*?BiY~xcn@* z+YsIe%(+x-e6s2Dd$_j%m`h($u&m=`ruPrPG-+J6^zs<b4Zys+`q1(?-a2cIVEpe) z>AeLv^Vj+axn{zhh+B66*QBvQ{LX}<8t?9cyaJ@-S1mZYcbz;lH;X)GN6~u0_}`hH zYeC+7z`eIYP}%Amas6M$|Heb(s3tZrJvSX1cNcD-0n8?i%VsBk4cv#oEZHpbvg!SU zxV-_GnJhqjvf&0G9ghI>;ugVW)6<{gc62Lb;-8<M_*eOtVLjgA+Z4onWm}(iJa8v# zEYquSY4T{FCv;KXRN!WGB9HA+yo>UF1KjUBkyi+Lo4Y9Q1K|GFi9DwF@K^Aa^2wHe z#{zeP#%9YurgvNy<^2%2IbD!<TNmX$4&1Yy$YVS6Y8U0b3*0B2$m<Jv`P)-64`kN- z1MUQk&6a<R-?%Qyy9l@|I+4fnt?Qz^+kjivi9DwFd0;lD<5DJ=0a5<VkAOLlj>}Nr z2K)&N&+yNW$(IcBMgwzhIxbBf<9D6LD1rFORvz`hE$Kua>)Yd9l(!nVEnSfJNf+hy zd=>pB{PSb-B|~~o24-|RE<^rZ0nByjxHNgxmjp1&(s3E&JrB&<bX*2`f7KY35PW4T zkI#Y2*&(QG>1F%|YfNYIP6DpH6M01taxpLq(s3Emdk-+bPRC_PZxb+E(s3E&eFDr^ z>9{m`A;j;<*Zh>qHCz523)~4Bn=SteA!1w?<y`^Xb)Cpl`qD*t%Yb{d6M0PU+Ahl5 z4BQ)CkawVq@^W5>Eyq7U+47I^E72GQ#8<ZR7y;bboycQ(T-rr>HNe$%B9HCI16`E& z7;t~+L>|+-y^HeR1a5aH@|fP9Z{REClP&)S16QK4*~)|V-sz&eOM$z(3-T5Lb6+|x zL;ZagnAPdHwED~X@h&ibOUGr9cle(%2F5=>he~g`#t1UI{!IXGawqaw9t(iEEghF3 zeop}Nd^#>edS3%(cRDVEyq<5OeZxOL+0x7SoeYeVj>{nLhrrB9$7P7$ZNNO3j>{nL zMPN3h<I?1@zU|f+rh}hs`usU?Ie!sMw)9e;2WyNVv&$O++}WMTWBt9fi}J1n?#G?T zWBitMQQohCd!iG0jNisC%G(ay+nvZ`{Mx%H?})dM*ZAk>P~~x!#t1Tdd7KN}rCpGB zeHY~|0q(v|<T3xA?V`LU;5K$5kNVu!MS1&x3+$9!$(DbtzsG8fAhYM+8NiL!*lhA> zPp{Azkm{4IzRlT*H%jB5pKS7|FUxikk^E$n_xqjj^W&eNL&<w%r-GQTZ1O$<?kkPW zCXeYo@@*qZ5!vJo1MXCf%_fifa()-(O$P3VoycSPF6^SbWxze!1$k?`DDN%c+B%WP z^6mAG$~N<rE&q-NZkWa%D*wiGQQidLCU+u_@ml~)A|02ZJ$ek7KcwT*+9S%_4$SU! zTn2eP-$nb2e}1y1m-=@yFwt~e26<C~nURi5iy!61f%$nlE`z*30Mnd~OOwa+zO6AJ z)hAo|ehysDdx8nzqHr1H4b~VzX17-(fIGVrc}(x6U6gkXa0@z-$NGCu7v((w++&@{ zqrG3(MS0tSd%Fwr+Pf$(_peyLfq#Col?UT@s>UcFzOt2X6u4L?@|b@!x+rfBa5r@# zZxG}y>!Q48fm_`LdGB^nUORBP?@O*^%Rk0%n8pY)d;X0E?%XcOyRM7!JmBu>L>}9Z zXSyhFBXF;EB9G;}uZ!~9fy@0sawS{-QU8W%j3Be;->JYwJCVoqPVJ(+dBD|oB9HNV zu#55@2kzNU<k4Qe+C_OE0Qa{}<Wc_)--WM~PqzAd0&r(&Y_{^Cy}zi7@@4=xuM6_- z>Y}_yfqSM4^0swR-Uq<_tqbxF-<^_qAhYG)@xYy|v4_gP30;(T1#s7OB9Ho#=%T!3 zz&+ZDJl2o3U6l70aBZE)qrUXogRhiNw){I9xM3QbE&o{G#&l8M`M^!>L>}XJV;AM! z2HdhP$a@}`&FQ!d{i~0FIgpM^>kqMf2ee^+2LJq+e90hhG%)9;<I?0Y|E|**B@kcP z%Hw+A7Ih+z@%v2|<vjyjQz!ChuigUYt8`q3^d9*k)+FJdACoU>>1F&z0dsyjE`z)u z19M|KE`z-LG)6rbU)l2SG2s5tiM%54ZwKb{bX<n`9q|$TCHUv(Q0YAjm{>Y4gS;8Q z%uC0mr8f`Hx=Ul!gYlIuy$=HScqj6T!M_2RPttK2;+Ow1#@_hn=TPZA9hfocxD4{H z1m?%-xU}@r{w>iM^<aEuOYg(L{bwigsLxxvDDNZS4s;@q@f+}oA2YdTi{DAWm22#w z^6%m<%DWo4noi^~y>|ffL^>`*d29scwRBusd9eQO1E%L*Nvlam26@K=b8<Q^O&;z2 z1dS1i*~|9|;I8X}yaX^0rsFci??qrXq~kKgZ#OVsr{gln8~7>O1^n}4@+D1P0q%_k z=7Mxw26=OUxhWl&CXf2JOk?<5ezNJ`Gr%=<B2U@-F3S4~xSpTMGqa_a<$F9ZXQbmY zr1v6Vu1LqFrI-0v2h45hxD4{10Ot90T$((l_ce`?lw{Ap&w<PNo1n6#m*p{7V>**} zI&h;pk;nL5-bHyg0vGQ@9`o<vF3S4@aLt{_3qju7U6i*QxX-&F?})$qIVaa_`aBT0 zZ)<F}@?iW%cTrvpxQjcH*BA2U0pq3PGU(r<z&w+VOVdB<%Qj%z(s3E&_4*w9HSo_* zw)9e8MgTJ*9hX7gHNY%L$EC%O`f?9252xcY$XgA}mULX&e%&0%`$S_vs!yb#Ad-4e z1OrQZTGrlloK<-ct_QG1Un?=@OX*A6b0N<9Ru^#HfIFcJxKY5JbPz6c{AM47D?KP3 zxsW&iAY9}iTt0C1UBDd<+|n-KdIR@h2Hd}72mcBt+R9;Etx?~basl24GH1$+1$bM; zl#1)-T|4u-%cswo;=gL<gi}r&e&WgLKd+fH_lhYvIs8XgUQs<~%G@i4m!5p8!AzNd z+9^}?yIoG;i4s>|F-4t8{?BjVw`N1ybrxRwarpvk{7F$JA>)S?l^<rb|DjRJQ76E% z*mHOQpLLj`k|!X$`k+GZfbFr+EyruL_ie#ZXfdzVm1EDGl16t%OO?HH_4p58;$JMV z!40f;hOBc-*2PLTIQ!nVS6X}9`MJq%+SA?k+$~l1mfiM{7XQ4orrmi6ZP{<v9bi1> z^|KREbpoJ1fi1iu7-~C0d1drdb<9e-Ggh&ZR%gcgDm&44?TAJvu))S(JjagX$mDpm z!1it~ghjF!HrDj9<3Ck&@`PpEix7pA1r^H0&)CAo>VOmXgXAbT$kTG-b_fUA6-`wq z*&T_;2h~Y#dxNCDgWoi#LF*cP|3iiS4Ae)8`Z=g;VSR$ua!`VM7?enP9Mm@o_y5ll z*ji=Rt!4H)fo(Sa5_xNr=SV7-5OwH(C&yla<T{nJj^~uR<xO)gs9zAY=8naQnDtG& zQq;lmqGi;DUQXO8i^Zd*&Atk#J6>hTUbwXy2Ws|KzvDS_u|o<A{Yu!G#C4~*u8LBJ zj2GDPnZ<<{UKHhF<2bT&kFz#Xiey+Zuf<-uV7`3ZlJ$<a->KWZ9~IX14mkUE+f85M ze8E*XA@giIu*&wfqf*Y;JIhX}%3uffs)}NJ6Ce~vS+1+DQd#i>+xwG?Ge|3SJ=)77 zL`UgEE4}eW_P(w5kZos-3)U35kRHDQM`wE5U2lV<58ZUUH7*Vot!yiGz0IzN#BNlg zOn9N3o7vbF#-r@`R6Ku!j?0wdNwzn$cp7R>X>{t;%bG7jLI>bKXidfUL#pV00_qk; zB|u4q`aP%{RoFUEKT#CjK!RgMDMA)bL>3~}Z!@bBb{PzmJQp>&Hx7X>3@_yJ6J~e> zM~E^PY`bKGt#cJgtxV>)jT~nBK69GB>4CH{pWVRTD5x2`lDWLgKi2bloaMP$|L{f^ zj`nbX`!>gWS*IK&&{*BSB3^1I?2vasQM@u}CoUMOb51kjfxZO9g}H1qyCV9OS7bFa z5LPET1$k#DCX|`<^<esHy2;6}Nz6c`w^rp=4JgTJ=5L+~^FZ;GjG(m))IExN9u!Y% z2wE>0+(v`@3Y5r88YkQP1*2hmUoxI^?X@?nSTQI**~WjR?Je2KpHRZ%Y|p8*<Kqyv zNQK2m0dg_Yseeww9RzteQdL4&2(%bbdu`@hB-K<sb40!lVm8+-P6@vjjGroN$_x-& zdn2d@mBgi>5{h!YKRfZsAtycu?*X{JFczOvgc@1*VJ#3N8gZCxSxziI>X8@@0gaDZ z8H0kwM>WP0qgLYDGJ3>1Tw0L>xa`1jwz%xX|1RCKfn1LNds8A=JvAC$F~CKgmBiU` zy8uVeF0L%(p|tTbJ01yLwKj5OPL5*2xvE38FgH<A96^MJ=AcsYz*?Muiz+Io){baw zD~_(|k<&IXCJJ7p;A!XDdd)nBmPt#VL3@2s%$qY5XVFHdHeZZ8pQuc`3KY-92wFFo zu=_w=qQd^&gf)Y@Oojawl&2`AA*^gLan;3z%9KPWMlV#BE&?Nl%(N3@QE!k>Uy9=E zG$KQ7@9E-N$a1~aWJhIwl@+!WwTvkqs*;_Oq2Y!nfUf<%Rdc)-9zCK_D~&d6ahG}2 z;xxUT*M31kLu1WF$o|8W^%8UGZCgAJC-FjdIW#te^L%*@a!U43r08R{RLJ*m%qz0L zA0CSLLA;&EQfR-RFubA%ie)hlB}T;Y44CLw@e3Kd+3)5MsUkk&4OHO*KjAZrt87u} zX*`&DmhIh8JRg-k5}g{oEIOr`je=C$(?Ln`Ob2zT%IrE&qTP$l-A4?y7L*j(s|JS| zRxRZSNDz5PgPN-34a2vX23?H)snt3M9B+rNkF59Jr?HY2)>;2-YF(Sln`?5>uA+u7 z+KI>6XFR|QjQ|Y*Ykt%QjsH<F3Q_!v!D!31*DfNIAJ<#N?6Ttz@WO5xWTu?c-0`IA zKEOzY=lD~ygjvTk#)1}gcd4RGg`a^6Kc|p&eK~H@fPQ9syHQ;iJ6<a;OC9J9Dlh(* zvtfZ1!2gr@U&;7bezBH-bIRJP#<p%>Y^!}Yr)H{)rXu08RJSW&Qg{3#qP@-3oN$2^ zJ{$@YE~qRBA3m`-5-x}oT@{}5dWgZ5pM?wTQm+TK<|;e<lh)6|hr7ko+F@;!=CXd5 zE}l|66s@spZ<RHWCYiOIiIQ4A1NuFuNS!u48iA7~8$d}W(NbQl!jhKqCWMJ*urUy7 zCn%}vJPF!G3T;@Uh~?WQ+tR6Rp)KwX4IbJYUQtnOk62gc7DsAA6^UpFH86k!j2jxC zgPAc|7#@v5g|hW_V4aiOYUi%Ek*#&>b`C}&;%-w_?G1R6&c2$cpY?c|i{0L6qq}z^ z-?|bW+yJ2z+rr=yB@r)wS%;!f^%Yj99q8GA@t=lQ#@I55P!DcNeWc?xsWh<1dTUyq zU4*cs@E^3U$G4~*pDj81sG*)QcUOZFj#hIwO%>7p6v0kjpzI`i0S`$TCfKt4u6QNb zV%~1oyS4Zckf?{yL?{C)q38qbYWxanY@-vOv64k2O$bUO625ayq~VL|v8i_F&f+H_ zhani2<=MmT!6;B4oE{0USmP$96jwrlpg1#N#pb{OUtgx0iRh)UN;(H!ZzB!joyAKb z%k>&m-0Z*>3=@^H9<l`yDMBZDWBd7~Xv}^C(-<s<{q@s<8Vy7#5SwW(*=&fBd@^VE z0*o0Q$QAwj0VuI~^FfJ?x(k%p#uq_Jm+?p>Lu^@ELxg@JGFO@*q~<j{@f>^APRR~8 zaRS&ayQwV?y+~MNbpNzoINlbtQ!#I1W0ljiC*LV~-7YzrV0Xq>Rc_!clCi-4s5ha| zNz5y>uWnk55PQaJu;ZKTz<yOHymNvh%PUHXYG&Bw^Ga)a+iS<rG+Aw<U^r8{o+U9$ zcS_j{?a<Fhhhav`tdaFM3@gg1&O@o8EM8T@T|9@qb+kK<_b0#S**2(te@@K+KCk+4 z)nQ))d*tZu0y|36*u_N6V3SkNZaG>Tl<d^z?;>W>V~l_jm1fUCsOg|&5VsK2B2_WC zuu+Cz`$65P!gzqO^w-miLB>0uIvzUOuxQCXfN2z?zt4eE4243iruv{lC(XVAY33>H z)6Zmw8DkSBWU4-Gy%<pu-8d1H=nJ)pFEb0Om%GT_Ip%J%#bbsRvfF{qAliI8p~~4# zoC<xh?2-d+;?x2~ed?Bc>L$)&)<hGNhL84IMxz^-xUB^b8I7j0<iJ(QH&o$81_R2z zflhn3_UF|OKQVGYzQ%^!KqGGYf!*8yl<roAbptzyD6kXf6}f?Rc70n;%^z5N1>+Jy zymJ5@EGK~42nBEgjT|}*#fYU4ojEpxJPRaf4Kb8ba~1YI6J}D4wveaZvtrzKFXC_4 zH9dlhQZhSn2b)hj;U$CWpI?k1>nCR*ls5&)<a^6I{B(=;cm?lcDC-~s=_q9yA}Bbx zRE~wXzF-ZiliR65@`?#|RDu?D@ES#31?q4`%>yO4j#^fv(}IpB+8&*RyH%=E10+o; z2o->SX%ggZPx*laMC`=RC`YGOzceE8vqps3bziq2LbF5Bm1R9py-&9jgFZrl6<ry@ zZ#!`}QEmx_aDDfPfcmd<<_=g%)9WTi?YB!-!*8-?#8xf+XCX@U?tYS&^7V5=HX5ap zRc##a#eb$kS^IC<58tw8Q8_vj`5eDxrDEn_QspkqmgFug1b6)ht+PQLrKt1G-D#i- zRoIU~N$xHH#Z(8ar$FT@YBQ+cE2<m5f37H13X=En+o&FRe;OPrKPh4@s%v8Qs(3!v z0%kk0!~~4kieJfmO{HNX<1eOY)FPEBi6zWSu*DZKA9N0{UBpE5lN<}~=1*FKKDZUM zP6fp_B4~{QC2BMQ6p!NzT9<*6gtBds<aJc7!i#hpQWS-MMcNSi>gL6OqyGqF00J%b znQy`R!@Q3UulN*QOTV`duM9@R1C>jrpFLySEaSInRT<NU!3q3kfAYO6Y#_WHnp?e> zq_OQ=qtTY<$Go*jy(cb~s7iJRJ~c{?bg+#@H1boMPeKGg3^KLnfD+3%4U`!DDp2BH znGcHRz6Y%aP+~0~042G?-ot!#H>J?Mo2AhC-aK?XZaOl&@Lu3h`YLtFLTR?^RxzJb zE0<pn(N8!W2IrBq+sgFVtb$4wr01(&ejeDKr!>R6g9_n#^~@92nqE?CU}T;0mbn;2 zq>NXLBjH<!=Jj9*S|dS8J#j&aT3l|zW`pXdaP^>mp(suw2(RtEWXES=;5)zY0y|NK z4&{fXfY|lV?F9x3!ZB0$)<F!5PYNxyy$4wLZEp$h+uPdga#mBz4v&=U84oZ`;ak|m zQZo{<y(nds0T^$l4D$780)q$}qY1aTlA{R@B&Ml>gw5fCerb-TV2VdSV#o0>*C%nU z#qX8++9+4{%6#S`H3*rtW)a(Y)4i-dQz0=>huKsQ@x2eeb%flkcSV@B`%|`v-u>vd z(iYy2J|TO#d`-^v=!3p{X>$dhDP3)ri%?Wn8N7T9>X%>%sw(|}qE5m$4M)(5z)L7S zzezDVAdrbH3D(8_uunB;Nf)4Iw$~h`^>jaf<ilvyzcfkJ8u;Df_ZQdVDeN*kb!*$h zAmhI)UW_28?gP$oxbcTnM|fOf5Z)7no{7|3cr}#AA=!yR3xhEdl-zd%jA-1w9uf72 z)`>~GT<v1m*J`F=Hn`{=!&PafTD)EEkY=Z(#U1jIQ?lOP_qLOm(C+Mei}NgF6Tzcc z-ZowtnTM`{9cXceY_>UE$IyVzrjjkL_hqc)8>j9QPP;HKPPH)?gFd|-!00Z94rK|Z zQYJzHX1s=;qPU!#04nz;C-A17m{F*5E4Hw``eY|@3#G6#k8FX`IEkMzzzM*Qx6!5} z1_IeB*8Ntz-l=#w@-8Nf$RrE^iqJ{*oe2$%$)r|aYKCkV?84xJ-k~8FBx2mS$u8*! zF_yjW9j4pyDz-DO72y>vjk~%P=R_NK2RXEe*1pYNWsx*Msaf9^Gx?5^MTRp|cj$h; zz3*MV2DGWIyB&}!+4L^*Q=4Sp?xqwi1`jMH4B4m|)aY7VIh<R{-${Kc!OsGvoorpj z4F43=T`KH;P-1d_3rdDI&w!G?H-|gybfQ-T^sf}h5`6z!QM7+?MXkoS@V*5~c=NmY zo!|kW<Qd0-65MH^1UCkhJY%B4T?tBzzRMDIQP6PkO{A;OEe>74A=ZWHMb5VqBMThP z8@5mvBBMvV=Qn^2#f^x!>z!_URb_7ZzHoyw)2J=8?B{&VrsuE9G4qDh`)Mxv<da}% zhPvf@Szm7~u)S-_?50ohc8^Ee^f1^-jE8=-a_VCUx=PUbzi3AQ=S(meN#`9LJ)$yA zAEQ)HMSQ@H*^Q6=L0{8fQ44Nph91d?*4gq&Y{-6A2(R6<kRs@5gN&c?d<?IYgR!y@ z?u}k(>!OLuVB1JDFyFv|@ssKycgg_SyR~>Zeltm>OdQ6&kf|!u7dv7D8}WMBP?SAs zya_FUq4)&jrby(WU0-GAzdIOljz<wgywMFkdi=tzaf#sBcJ8X@kRMhO<CJfib5sft zvqpG7ZoHzo3U_9|pUmfE0mQu1+`tEJ`P0hp5MI~-<BS|Bo<!xI#x6Ua%p$`GPFpz# zO<(;>^XapkdTH};#6VQ*4p5?6kAo7`Y6K;t`VF8&$#xj(ctl_BP6Ra#|3Pauz6F;s z)CxmUrKJMtz8buiY7B=)cxG{{ZiV49f!XKm7A(KFg>9+I^8dFQ(q!A|zh+LipQXrP zX)D=Zk+$+RP|{ZJ10`+cLEYUHw+YQ!Es)~BM??CyQ?lRj_PX94)<iq8Of@BNq)2^t z6NAcK>C%MjY1nklbKvnVS@lK5nyQ@eLOKj2!1X4s!CC@;y@0c2k2|E*4QzMI?^M<_ zeDk?VhP+G9E#EdLf}uF#gQ3?~eDb_LcKZex>%d4fFC%z^Zw-__a(j#8-M@xmVB~w2 z#RinT8E)Y878;DFi|^&#lGmLX+p6G%s8|dSfL*_;kj-~M!QsiW1JeI$Xbdl01w4D> zgPcU(cSme>6LqT1tJ|r%10_vLzie-<t20Kbs*{KnxSqSF%1!iL;|AV<ld1ll0=s>4 z%xiX<cA<IMA6*H_$gQ=0?e?ausahFASpB;NcJAvH;fhAo_JOe>EpF}xC$~weyAvOY zifNci&JroeRcA=6ox9DhTQ8Pl;x|=NLc<%|@)#fa^(59g9KtnZL!8tz4i}{hHVu^2 zOitDgQr?C2pt$BCU~y(%);w?umZOe<wFi`Na2zHUp%|1jSus#D!l1WVaJLz1jiELg zY7Z!}HTw;fro=J{#il8O84DLPbzF3UNhnvm#86>J^>Oy-R^D%}CKk_k6XOfnX_|#0 z3rm+>oE*EmQgn8XT&y=iuZ0#Iu7BfVL!L4(D>(w2M2iWtc>~O5J!W<;(>^M80VIWI zf|8sV2}<(#Mo`kA{|c0(Flpa7%8tN|iM2S=nT;)67hbptNT+VUstf&{L?m?`4KzG2 z)Ryab>y=toc*ux~;`y9esdnnV<eQe}og7}_(yWVDcCm}5$=g&Ry*FXgiK<pJ(vhjn zZn>%$<YXRcPH?f)bx2Od5TiNfR2f)NCsl^|ven34O{eQeKd06awYOh~*>rgF*UuY9 z+wC>_kw$#8i-BnL=TQ)xCP&1PT)i-73@A}j&XLc763L4+{|<ExS}PG&t-?6Q_@1H; zfcmkbPQ`b*qS923<pVeKE>$?MNxv4(fF^jrKNYipA;4uwyKkQ`B&fzaQS%`h_H|OB zU9v8s4A6{qG)C<52IOV{;@}pLO>HCAp`#ogjiBbXFp8LdUcU>?{ET#P0hEe=_f8dK zD&5Z{?w~{wuLLEEI0uwe$t9qKBU2iYAW7t>Hk61)IQb@5%sO|Be=7@xFSD{(B6 z8d;240ObcUcT-ZCF;U+^6vg(?vnjTRHAyTE2aMOLgkA*d4n@^~lH_Gb6h@pK3(jkb zddXr#eeO_f-|JXx70_f9T31T!unKhGIu=+d3#=@~Ey}drt>VnINrBOGBLzl}l@!=a zP(M|;MWBQuQ`(|BZ8|;Z6+!a`Rd^c@ndJvX>li#lvhsBEVD-4<(BJ|t&PkngIRj%U z7c=}z!GWokm{*1qf%WP@P6;hn;lC@s7gzK_{oX?2l<(W+ry|S>*B^@%s?IFB56$d8 za112@=#4g4)xTZfly3|#WEJfY9CXTIAm5Q-PSTdF!fc812F*lQf6GVCkUcgk85&?$ z#x2q#k1hPDdbC}l9`DXTqa9HFZ8y;DcoEF{RKi7J7h#PVeiqqYZ&^>sF+#kL6R#|C zhBXw^iGvX&%q{d<Co{0u4Sbz!tdkirF46aF_T~X^t~$P*J^fs)$U<iy;{k`Sa5f$O zgCV+CQ~qW6mT!<$mn@h(VrNU`7Hz5objYo(>A{j)&r^h-Ph-85eEQsO`Zy0Slg9KD z)J7RJW)$XT{oaQ=qcMA4A)i!ssa2Xfo1RwLgiLV*UnIr+bGgw_T#F>oWXy80x&{NW z#r!R#(n2iFs!y5zy6n>C^MH`Lbtx$6<+OrYh(Zine>QhN03|h#uf7nDDnoIlk%S!p zCA^_-e%KM9gm;1on`@|!wYJFjT~+EKWh_xCgIsuG_G3Yfwm!~~RW8=T4%zQ&kBIRU zIs4vWv*UWNJ8)#Uf!EO8cIlw9OPXwN;@YY&R&}fHV{h4$?0efoTHE?WJ+wsqm<rB5 z+Fswo!z*r8mDBaMVm>s_9d?I>)YZPAYBZ{}G*IXk*>3#K;#zRl3~X3eGXM|7tnwF5 zNz)e<YpV)4=C{J5_j0EBiydec?SUWF|FwXF-!G!|?*}nkU2`$`E&v~R+(cd<Sx^dQ zCvko|#>Y-ztLpZ0jev}VSNRn~l8?^K+A5BuW4TRET?=s-^uAiv7O}yq<i=nHuuj#@ zg=1<J79Kdcjds2-&`FF!Z8Jja*2@j#mRgWxC$w&H{7%m&h9Y#giFd#>543j72GwHB zERMujU+_2?lW<o40=wh{0FcFST*)ZI4&YtmW8qmD3nK#eb$uc7%f_1IgeTT+B*H_s zhl}UQJq;OK<mUXRxWUCpoPjvi$fN?6CCdBL`PAat=lAoeH3RF_AOR8N{hFStDz|l) zE(+@no1^($mZfS={Y#ZHi!cz(GOp)XUo?FrDADSlfs*+Inh?3mu9HwvL(yp^VQWD> zi2tDVSA5Gly-&^Ee}EFn=b)CzN{Y##I5G%Y*MZ^^{_fU|pzc>;4WO1Os$*^Pr#U5i zFbU1o51!k4h~?*lLT!>Q-VRS?mZutnz&GV@%{lg}r5GG05?uLQLT%DxK6LJmZf`Ds zYxdjhbedVY<YXroZnpiEdGxjFW|o7Jb>eK>r8_zvRJ*!65tOVBp9ShBm9EHzwukW= zyx5I3-Qb^=#mnJ_qmc5^7>vdXaNmtrhFouC$c^_wM?c)aZb8hO6jJVy7#3~@V(}xK z@>blBdh6Zzd7<z<O|dxI(AF4Oqu#3U?TzIv3yyRs4qiPhP-K50;Kos%Mi#Uk<;J_g zl*8XLQf}B_j#t9{*NU!h%-ev6gd6TdtXU2PDf8hmZ&b)hOjaxIXERQIbYkT#vH0OC zI!8!sR7h%UV(}1GW_O4UR%jQr9T`*YFk%zXvBb)4y8w%--S`Bsz-7S*)zr83bmLPI z@D&ROqw$d{8go<E5yd<^gltI7mP!fuC-MZNv}(leBGg`FP82cN(snmThK06w7=7?l zxB&eU3~re9_h5C?`e^v}RnhWQ3y#C8blbzqLM$1Lk40v$<3e?~LVMWAZ(KM>fuC3{ zz#wc?00MB(P!oKQ1YduRn^FuF=&(i;$}-|3<s3a=m#@OaU4VTwwIL$h@IKVWjt`~6 z#j6l$WCVUK+!}7U8h2dpJY*l%%{%e$xaF&G%iHJxhr+W}h#mh?$Xl&7DT~6i9hF7J z;IV`2F6OPrBf<>}p-D>}J}_|!Qn<BxR>!BWcjCkN^b-H!>(d^Njt91dbkNpwp*Rk+ zj{0pB$Bn~3z&bGw3C1{^&#zfX#W^1VuQL<){2AfF$N((jC|{M5>L01!|3s3NqPTHX z5iIrc&JD%9rnY-+ZvY=TiDUK)p_^EKwHoOJC3!noWg%8%*+_^e04gd<ACZm}v<*>N z&lSf#Q}hEg5vbV(ZXCQ=HT0+O!k@Fmz4Hq2yc(#=NxK&-eNgoz+`vI{3>n~;I%0s5 z=0wkrSnALKgir-csb?wNL)#DRG?G&15VV8oKs-?X%!gU2@qnR7DSt#m1*AlyGsBTm z{>E@*E`Q%<u>7^DNJ&2`35v%r|Njq(*M{PJ7z*Tq7>axC_<-FO%)9L!!$tQY`;0jS z82rC!dl#~x!VUC^>xhLL*odTN&i_&&!H!8G{gj0i9$dkv{wvEz8}?-Vya<&Bj()M} z|GVYW!I0m}%6S?~rk5SZ^y~QrZGDvG?Z$8DY7mwh1$quD6k1DO5jY$zX4?t!>y7He zxCWiUd3L<84b>3=QDDadn_|vsztJ&6RpuIduK#L|TtxG%7GBhJn=1VQHo3I(g)r@0 z&!&{*V^(cr%$ZN9yQ+6UpVq%XV@$P9h{iPF@~>8!|9dL6>-D4^n?&WgP_-h;sDsi* z-Hk(klu_^4?!$0b!l*0b!bU%XQI|%4fX(?<Wg^6ua}lI56EpwCh0bvV`&s{5Bk_Mv zdBcda>Y~=d^~XBN9w_Q7>S{=@Tg1Tr04AP>V)tT5kHp3mz?ZX2FAIV1-r2V`hB+NG z#*dX?^sfdr&c2;a_=$Dis45wFaM!IKS2n$a$)&AapdDD%J|PIt2bNuOT*dj-pfwbf zjOj*$lJVA5P%=V`oDY|Fk-t^~oifg|zvd2U!X{vP&GhgaD=^^rfm^?6SNHG=Y!BYy zFLJ|TR!4iSU9Yu%=U})Hx{vfG-VyTF+u`S%M#kMcLg;ST$~_Q0V^rzfvpO{T>$#O@ zPxom3+k+i%;)XJ$rNXPY1EZ7{H~joMvX91KDAe8<Egw}ndsF);mBh)-y-dP}nB;II zCqq;l)I5~|=|ja-@1^g2!Kxci29HetUdQ{$9`c#p^iduPY!^KI2kar3(s<1-NhzF^ zH7Zzm)bvSrO!2|R#og0h^_r@f_ddNI(faoaVhg{h9*$uf+-Ty;i=k7AB|LDG)3eZi zM{5Y9<HqWqSRl`Jm^v<_8``nGhOUU1_cEB(;$^iSP#g_DY(#rS*$c(BNO1KWJgVl} z*uwX!kHvfeof6oTf+dB4O?;lxI?dH)JKkG1yn7LevmI#W)NP1+(-2Kexb9Sp*ev;W z9u^v5^0GiL^z^f;z1c2*b9Q4a_wSf?Z&wqUZn$E<9l$&W^rwX?#K~VQTe=33vz#HX zI=QbTrz<yA+5Tjv`wb>DH#@m6+y1O4d@kQq4Tpe3OkKkJqg8ttC{gIiphU^py_6*f z&zQU0K`mBVk#zYn$A7QFxR_L=#7r2MD@Yh;*M&;cD4B@#cf+AFVM<WBW0gi>KHXoN zhWVVCtE!+@`L_2tR!})5`&5yzydvC}Ds{bslXY#HL;7GRt3B*7I)~hx=jpby7k&|L z;He*~JYtD++GF0Iqt7A0a&wWF@a<xrxfP3B@?(K-+yIup_|9GBHBA0=hQJx8_Iz{O z47}AzFB+ZCDskF638%ulx$7O-<TF0*uB~FyCM9LsGg|*A{9(5E!;luNm`$Cxfwn-O zXToI%BV5TYl<c3CZFfm6;pCCHZ>cX*s#k#$&Dmzc-Z4}UQ~LRaI?YgYehDuZM2Ms7 zkXlmeuWiDzMVK7=-979$!4V4RdAHE&U_zTlC!59TuzZaxFQh!Y8<6MT2hsWuwB>29 z{uV6{dXD{&77JE^mVjm_+J3jTJHaP&+OB3-QVb2;$mn_^Tm5-&c)MW1MmPPnJ0_Gc z7?7?VjfBj!!#qF(He=~S5LLgW{+$qvMn3jyIl1e&@2h@Y4o0q3cKMpw>!nJgXwqlU zWw*){wP8Tos|yfc$y64N6cRmULfr;Rs`naDQmNlJchfRIIb|hgK9)Ea8O&*8+I#Mb zQhs(Up45JJ%oS=g$35sJf5A4bWV0N77SFNZfOoxZ%KyG6k3RSqn?ks@8=-uw(N2E@ z^I!i#0qS+`T2&iS@mgYmZ4S4r`4&<wpqvOe7JfKGw%EC^CJp4qDpxipjrH6&VIYy2 zn_(b1!=)CBjg40z7_G8j8Fdju9M+MXrp4vL)AFibIkxZ%@NBON-_<B<Gbdr;LnV}= zgD;c5V6|<C^Geo0{7ZRoYFWzT98gjU>kYNnQ2PvZ4k`n?r9tH<OmR-h?1z*^GOJZ# z+)!*g^-a5+Ax+q^<#J)i0llCjSpYnN#CuDM0kam|<i$QjEYOPF@C(58{-WC7cToaP zZnG%?E_O|fOO^msS7ra%$S)c^vz&(6@8>9|RbE9gY-cezxf@J7rSg-Tef<hp!J_wn z#)dRu`W`E{W4UlB=dDK0VD=^0hr7CR8{Nd{LR~QNieXhW-FIPu<IzMd#%f(|G@j91 zg))j*wm(A&?V7^ciEaUnoT@fcRY|eqBPDe#C@G%^C@C}Qtc1O1sJ|KN1eB88tpFt) zT&0&%dKc+_YK*=s^oCw{O7MLk`USd%1=XYUJW;G<eXL|_Y{n{oo-lUMoa(_%m^(}@ z^T$#tHFXOk!rrq=R4)_7Z-bJFyE0G`#d)AO-4Nt75PIKSv3kCmpys+DG<Hu-!d*LY zvrMs+jd%miG5nz}`f}y_!wuht-=)Hz;QF0f$jP;vlV|}eUGD|8#MAXoauVkZwg2eP zYA4rJQpm!Uh=k)^i#?Yg<wffc<kY|)dyAT{DOqioG&|)lg>UAph2#AM>+>6m?*$%Z zT84UuGc~w!Un;^Hxdq&KIJe;&z`dbrm9?X%mK<*kyzApp@OP?3oR~0jymPSJw2T+W zgVQ7qM0`9%j*PhRSqzV0L@8HqEa;ID+>f~4KJ^|}{b&wDQ2QJ%AHr-Sns+Qff7Lhd zC~dAow+p!#+aGr5s(~Cw*QEj{#cbJS55XkZE=C(G)U)RWEw@{KH@iMH1;_(Gb!y=$ zmoM2|$?0uE9u-+wI->eWOuCxl9fN6)GMgEplWSuVz%RqVo1+)5s|lO@XXei>wiCCo z{2lLWw|rN1KNst_mog5RIbM$I?tyA0tZI;;fLaaEci`T`X=?H7Ws`BEIrS$;8l0XA zS})>T8ltyBO~HeLYDJM$#f$J;bd^JLsbX}r3iTo=S^V*5P_lF-2RbQ|ZSN(xc%jvH z=zLgAYBblLFUMnW-a^cSa~mEp^eQKp#mcvY8z=*=`~v%r$wk+*cDnItJKT5`W`pLp zaEPAVyy$qt?Zo+5e7!ZikbTGSicuKAjw^MsE!g$02)W*jg2kegxOF5*KHB!WDd%!; z?DQ`cKi0Si=rXL0fP0KVD4%io9|d)bMz|#`#E4A>VzORY?4J%`d-p8nO}I&pgJ-%D z0xEHShze83iCh9@&_DHYBEC2kDr@@8z5|Yv8dTw`Ug539wTLhVI#`QVN)W3a*RZjY z%Sw=BUbW5gM}vuxrZTihWr%TOLOz(0`qiuq@UJ=bjjBS#)ah4fV&kZRn1~n|!uEu2 z+?v45fpS;CmJdaH8^d%R=HjT<qSI8wTF7)!2g<()FPy1YWTSSX3+sB**@a~%1v<Hy z&sOR<b#n8o_`z;y&^jL9vWk$_da4SedWrHa1trQy)wn_3g%)A+kECU->NFz%WdnuR zuZT}c<PY^jK(ohXukFrDfgkMkWBtKR=I1W_litb8+U~p*;a>%#(}{=TCe5J_tYpyI z?!1&HfwKfSKLyw*KwctA;7$SVN&%Ll%0MD7l}TVFLlgOvaPc3#T!6exO9C4O*pdP) zz{Ch7@-iz4EM;gSzYG^&VyysqsZ9cx3-FN?;9ddpvOEba2r7w%xcCyMF=%afUK*3Y zS^+Lj0k#T|mz_x<OCE9Dp8|}am?4oD7KeI}*KZm_6ZuuR_>X>4fV@PKz*Yh7NC6i0 zP!f5mO#)>@Y`%?9U*b{$^3s?DKFQET{>l^}Up<XDsy9&k<p6zTDD)8*U*aqQ@=}`w zE*0RtDZrfq<i+yK0s0tH5<|H75-S-5eZ+;usDizIvlyDlpO1?Q0o}-;wcUBK{OtAm z?PO>oe-|#haD#LydMyC*V)?n|^{Zqk^br>yxLkm|Sbk=B{Tc<>k^(H~tt9foEK>Yl zzfy)mA93*|)(VgpCRGEM3-FN?;9ddp!czn_upn1SEX2i^IE_KjM_l;6VGXPm;Nlcu zs{nc7xq}+GSAhFdfDwp+L|%+j3Hr!T=%fD(&`%1G7pt$4*ebvsDZnDwGf3oxEvtTX zgrSLi8y7z@O9jY_h1DGz_@n?=rU01&NK^+X78zg>L!pm;@<7iLATRW_YKcn)cy9`D zrvQ1O-P1seTMl6#aZw?lD;WfR#D(j(HE@;y=krqk($L+wNlno1P6}oJKcv2YhpHB| zIF4XgQ0<f!Y8ZZVwPjG5UI{y0<3d&hl<=OT!-7`KP+UVNyce6WX_^XISA!DX>&)G` zhPob<@ZM~~;+hIsw}TR1HYgIS2MqNPDB*p~ggvFHko7z$;cYT^TMV@kl<>Y{!rstS z$a)Wy@a{2pKQ+`BpoI5p6Bb0?F@7P{{tE9AIxMKR-An8TBTRU|W$to}CA@ST3GbQa z?kGdqpoDjV3A<2JA=SnU@0I56Oha+9Pk7moN?f?INS?bGl<>0CDR=3x5{et2h4(=d z_K2oJ%0()?e=v9d%TUdrgqM3>Mcx)og{;>>3GYsG_X9(H2ugVWX2QPIRLBaz$O~^T zP$Id&Q2js&?;sO4L{lN_yP$-3xVd|Vp}r4Fct@KsS5qPD0#L%sHEHtP9~kO~poI5Y z6IP?Cko6N#!pjwF!s{7oDJbE+$AtY-Qz7eNP{RATx%;%Co&_bm?6ipFwVDc9t)PVW zPv-8MhI$8-@a{HYdo>lZ4uBHgc5}A}nnQU;E-2ycW5SNqRLD9Gl<*EUcTY0ZDWHV6 z+=PwPRLB|!N_fvTcPAO@Qc%J>-Gt51RLH6ZCA|M;?$#OV7Er>QFkyFUDr7AKCA_~j zcYkZBCqN1B3KRB6O@*vApoI5jb9bAec7PJzw@ldknhIH;fD+!%&E0<(DhK@v;SGV3 zybo(CWU-qlyvLZk#~bQ9poI5i6IQ0FkQD_bykpGW@rF7dl<;0+!Y<cT$odf|;hkmf z&NI{vpoF*Hg#A=gA?prM!uxY`ce$Z{14?**XTttdQz7dGP{O;)++Am=O`wE#y9xWV zrb5<VK?!f0x%-)+_JI;!uE3Oh?vAb+sgQLTDB<m^!-Cd8LluD%-fx?*6EzjGP6s8t zXPLVdhH^j&Z>0&lNK+w;U2@^Q%G|xiP_sb^?*bE6tErF`2PM2q%-y>Ubss3<{gnxO zR8t}ADNw?@(%gN~P%WT@*Y$d-X+X><u8oF}RdAlcui#*ZJr<(F5z*Sw!BD|fe(OhU zb?VeEJ343ged=NLWg{lDo9yzInl~W|u5hw9VwShW^|qwU4r@LLfD5XwiJe72D+sNA z*FQ}Gr-2+39$d@V;G`{Le3<|`*ig1R>Yb12WbD#<0_UiWD;ymkRfK63ak^pJyu2kE zKflTjkHNx5Bo%KbSc)%MkGvVwm(Y-)^{%1x+=73KqV3HN$%e4en8O`tmtZmYn&*B4 zxOC{eFgK<IHnjD|>Wl)r1Si#PP`9<)od;spW6oan=)MCsnT(udsPwrE&e-eCx@!Bg zK8R*S<KA%7Il-I&x{%<t>?>~B!HXAcvJ>O6VyGuh9onlx;Pl7(B>ZHD0Q*hgVo*OV z{d1a~gS!>n5Po-vVf@))jzGm&?|2*nnc|HY0cy9(t@}acffL7cs1*j<$BOY6K5)?u zz-a<GcK!ayynK6+3iJ`G1n5OQ2DjU9D69_K&xXFdc^t&z<d>#-J?%vb;!kKL*v-X4 z`}MQ9iN3Dshfn|>dBJTEYJ)?jz*N{4J1+UfiS9&jdlkirB4{0vlQrzPOa`1q6`Oas z-QJ@2!4)zBJR#XX%vRyJPt&`#nfI{X7utn2tMVLuBsz9K$dTyb6?ck=o=Rc7Rvb65 zvK_r>JN(DS`u#l;_LmjmQBBV>2ck_oyVdXSIXjTBzqadJ+U;#Sk8eL6&~3ZwcLqvY zSH470No)K1l2sC4Nr{rIzM!KaYzc<OO>Wi!HJ|8&hF9dbqtJ9bC85WrCA6fey-{Rh zDo;uA6D}oq@cj^?Bo0lCT`Xpfj7aFBkn`2$?#Z~*U)`OE?*r=YWKiPt{{bl34alm+ z43lk~;@?U-VPD1_sk^MPvTN`oP+T|}wEk}Hwu6$Lgw)-E_!YF+R~HWU)rEszGpbn7 zx)~HV$OY9Ad5_~)P@N+AABv)f{|QC0&y2Ap?((;+|9=LQto46chXt%Zfs&m7?}L)3 zeQ0oBn7hd{B@1!9DRvI|+wbZ=ti@w^KJME%Bl2El6L7LAPQ$^^M;vb#E>Ciz2IrgN zAI5J~i!SN$iBoX83XVnDD;`uAF2+^}<9?S2Cns`v!VSEnrJRw0GoO==IgimmaBc(+ zR4j5*>Vvs77>E6Ob2U!bxrB2ZD<KQ>8N9#^3VBMf5~u`2gxZ|)a*7~tKbA<=45UCU zZJ2ssGQdCTm`hf?$#A#Mz}&+eTaK{QM;%t;k@SHDt!bddF8u=36hu8}Jq$|h61C$} z752Ho^}uhri`I<R{8~GH9`*p$72pO)q~f+BkZxiua$sy}EZz&tGcX~624EznVc=@U z0&S3LM+E@z2Ezwl319d~OvlL8!88o^^uuM2)__Z_;`p6YPdnR;=8un^fR>_^4{<!q zoWnwoERB)EHVw|<cq4JleJ@5peC?Dq7S46}+KtTf@cX=oGwfz9S09P3Psr5=C(WYn zC}q*Q^Q0q(VvFwJ=4aFy{A1nss2y5&#wG@ZI8{5uKf?^G7g)Td&af3qL9nvL`xBIC zD31VT>m{0knJZneJcx8w$Ad_5RyEHtb5Isidh{_!>D7VaxdB1T11067+QihYsC6GU z;$}>3gT+EMuAcC=aI!CPYw=>-5na`dOkyfF0W`o3k5a`{6IR`M`*GM-tmGeK6Q^K% z%?rgWaCKxa)`9uQZ%y-$-<qY4-@>w{W3fU5$7kJIT#F~D^$>f<CcZmVv{%(4=1V2k zzhJcwrxS;&C%(#J$Knb*XA$#DXRA6nM$h?~%C)c&V#9aJZc~vPUU9$LRN0`;`fpHC zRgd8c4jW6$C?lfgKO~8K5^8c;@&Rsqx-OHpDgM*d9yT0>F*eZ`FAhNIwt77|0jZ`d z+V50JglZ1Mro*1<akx>6l_eWFpCXGz)M{jv(O6It2(Q4L+5N>Tg>^4AB8SYv0&K|S z1~WOi<P1<!<aGH+k+a(+b84)nQg!!%lEUW{_3ikFa|++Wdmkv7{z&UCbzGf=PJ-$^ zz+`e4-;<C@)#t3I_ZpX9di%#F&O|lagH5^4kT0<=1gk&n65qaIrGY(cnMxB*$U0vg zCqGnKIMi28<<i!1^Eb<YHWOEyU+8eDZdL`)jF1itSJ{kD<drHrjD;bawLQf_A_vzG z|DawR#iP4j$0F{M_DP^5-ySky&x4Xm^B$;_O2a}bkR_=|I8u$it2Vdj@m1R8JFxwr zq*+-e(a*NS?2;W^V_^@IlkITCSz6y!M~SVdMC8)+hj!SOq~<cwvZ(cFsHj*Q@zebw z6h(>38Eomo;T<T03}^ImL4;llG19BBa60df#dsF_*U3aw;q)e&AB!DteT;{{mI>SX z)RTC?N5;isrRF4$lOR|68RHCfAt>o_%m5{6rBz~^AGB70(pg>qA=Chc&3GvN(5+?t zOJ&V)Wow32to<)ta3Pv>PVd?rON<`=MMc@EfFSzs*xv4N!&{(vwBYl22#EOwn9eQK z2OMKocZchJ&o2MVyh=N<pnWN-=b68$K7*@t6Dl{MchF7gde(mh>n3e4O+ryDT!GU` z)xGEnnUu7#th0SH<js8shuUM^SIkMAc@mCz9{f*>E&t2xKd_@w%Vc1FeLjm|7S~Hg zYR^I#7O-~5$vZWJW5_uu;m5YO@wrO~u7AnqJp5&sszH*fCoglT&Y^wKDhIVoQB=EL zNOjPv0@XuN4WRNAbt|Yrs-T`WICdPlv?gf1VQ{oLf@9;k2a>y6CxMcI*(sn7Q&KWo z8kQqw&~X+r4&7x1+Yd$7x>@p;QcKn)thm5wAnaIjiG$K=Z#(W5`73>(usGdPB^AqS zb;IeOO~+H8v+J+Qr0+tq=;tU<qQ`7gMSG`%x<Mu4T2P|1KL<sxF;;6qdt)UnDzZFP zhg04DsX8;7cydW<OieVY+bk7%7>Ba*Fxq-~n94DAiVBW}q9w$RJ1!#96(9R&^PNPn zk+u>Ytckjj@>9(-J|)%lI1^f>k`_lE$A^4h#Xbf~rvu05G&JL<E-7RAl-0xQOUk0& zUat=~;T%?eeq>HBtYF-NeH&bs;;*sB+Q-J~IoLH{zUIasM!g8$^)jI#8rR3F*S@$P z;;otyX2<obV67Rf%PpIs?BsUI8a#k0g^l#x1I^#ZbHXZtmw}R^y#^EqPu<m__4lj0 zcj31bD7(EJmIN*8yM)0@V27Ka@aS!F`bdUZ68oH*W9|9_?Kcd>n0sY%%-u4tx4lT& zh~bURPv$hkJ**!(#0W423(v&AA@{J^!Mq6PzQu?`%5QWFn6i5AQ{Z?{lJYH3+IGqY zC+vYz&6M(Se2G2L4*dbucKuiF9pkrS-c;5!8njZs5irNW`URBS5|0AfR3k%ee@nbM zvy;o}N@a;E%(pqjnh`F;pg9@B!jO2g$I8w}(3%8F3gaqJQWz{CDS~;RlIhc%Lelce zyKe_jCacgcX3DAKjU;T0z*5fU^fHx!wbsb$0E!H*2JyE1Em@MuVq`59o<kPn-qg6U z(asdPgNhNGVrUYJaBvld1G|)Jd`i#H+&;`vWGpj1LUrJKkXVj4_~oe2GqB^2@!6@z z8e}L#GipS8k}N|b`fNy$61xDDl+zWUq?~>PO3JAkl#~-qR4F&ZUg+TTtui=$j^puG zW$5shkr)c1l&4`~*>nreyix|qEmw7`D^OpC%;nPi!Ie8fKFN|}s-}RdR$+`E&ss1m zX?;_MBaBoN^BRqqI`<Zx@pEzR?N;9id9D1>#~fK;42rBw<*=o$T_taTI=HBV)lq4( z%T?<<FWY_H(TI6LblMJPXG_HK6wY)2_3w(B3yQWoXf46_87k~<Q1r+It^WY^gVfae zy+{Al6r9uDXp83$16T}64oEK^r+^M>78~GrD_SAOP1Mt0XRkcrrn}q|{(kNxq<S-s z-`{JmoKW|}eLuOrdtVGz@rpGJRh_tE!D{?d>fUb*>p>%jt#nNE7P)vW(<S~67@XO{ z4O3>nmdnvXYwE_J4$JiAlvz9Q7m*~*ntH*5?)poeim*bUD=05N&<A|e@g$jZ8YofZ zn?P~;Hfa3}lqfA5aTyi-0hF}AEuaeVAGBy*1jmAvMzZ#~{h+OyKH6Y}*<rF&!8hlE zlB&`NlvEYA@KRN1El^#3LoLG^p2UjM=)0PyXGlAzPNQO*sw%s&s_{}B`6gx?C(=Nw z#SN`h!HUFa*&xT$7+*&E*zCveV`(aR@p>i$>+s@_?F4}fgH5w$$Lnb=BsP)7k1=(? zs4-hyZIwZT-VbvFcEVHdHf-7%@K5JY)QhJF408BNqP~a`h}Tb&%QRg4#<DNQ7JRCT zy5C`dP_8ZF196GcMJs7jQD=(2WPB1{8E&gE(2*3{PNBIZ$;V6r9bMT=F{>x48x;7c z2wVyP9=llKdS}4ZAuL>=%#-)Iop_$hlfsABH-aHtkdI1&UtX*F)xAjl!a+Nh1!qTo zDSpDy;qArm<oZ$cgjx<xVa*_zn)r45G2zg@2Jeqt4Bq;0if3a<Z?k&K0o&MgU7(VQ zFO+=>X11(62_w2ei+1p66~+VXE?3m;prp}y0F>}<1SOsH1E554*@c%*4vSV=>S3Vz zD9I;+63HV$4Z(lV8jtT{MO|XTt}<c&2CARp<+=*t{S~M}751<RTLFsmjX`Upq24eQ z&$pDjxoC$uw-~gzszKzbW|;k%l-h-nAZM8pKV>=l-5gmN3w^%a_OLt_o75-SDKF}x zF5pF7yl{E#xJs<ag*W05FX|$cAH8VTe@=7TQ5`~_t0KmeS5s-5-|>Ju7Nb}x4v)p= zEHl(^K}jL&r25U7PM`Go^wZ6o2miUH!f8#Dc3IG_N<42cu?w$Qh0PjusJoa^iw5D9 zZ9>q9b$g@XCbu@|HQ^;#3b7KUXbDD5b474)CpH9Or>O2RgcmIa!jT!D*|{}0I{O-V z$b5}DoD)@UUKbDa#2#DjCofi~Vq)-BnzI=F4j7$|r*YQ56q&5v&^1e)!O54`%|g#A zGFh2(|5(p?Izsa%^N3K!qF>svqU!a$Si9^W59$`r$M$6PTnc8N2QgBSK|G3#@jISd zB-8^X7U|DdqlkG0s^^gsF?DKaM{EW1O{PxH2PKmub)ck+v>cRlhv?9kj>LLU!olW2 zIC4-x3-BMbXvSGNgVwk4Extu|JEWW8g1SQ8&0O{N@JOb*RUy=lT@a4yv5a1%7mG<_ zg2dBrMW}0LdE51$<kal46L%?-?B7e=MH6nIi3`vmZpu`5R9PJdIgE4AI>S)xxJuY` zLp2!c|E8D^HZd29F&Bz47m6_#3fmnERH9)9tz)DZ>Q*tgR4A^=P-ba*C^y+3WG(mD ziC?gcP;#o6Qkt#o1;zqCRH>Y9qVhvSVQ@2a7k*hUGx~=eLW@2{M|Fo9;`lCC`0xw( z8XX=zDk{`g+|?0lCe_hKtr!szqsGqS^(snZKuL?p!jP^U+tp?2?)9L=NM}n<p>i1d zZv%+9*n(6GCI|0V<bj3n(B+jpD^@wS9KMTB&WbGr6ghi;Gq1_>iq-3kag<nJL;~j& z%4e2~qmLG`>gqSAs0j=lwoKP$Rd~^(fbn4OrMSA@1|Fz8lv~}AiEHUV!$*||PVPTe zZDuDc28C73v03a~%ey#vsy%G`3&r;;K_F$S$njoLPEtHp9oDOa;Zy)Rf}X;bcl|7$ zPcTxZ(D8y+I>ay=!dQS$v#e>mna5L#{I&FIVI$Tn+=#-sbNHA%y%OU|*5D%lX}c?M zFf!gDGKLqRW$t?vD4C%i2TJCzS)SLKQWRtO6vDWoG-$PhdQ4G+@cpEshU1(47`)RQ z-&{v3<4Rq|P=QFYG~mcYv!+(K>~`_89X)KH#*D0@tw$ze3@|C})b@dnUf#fC+e;A% zOwQf9hF821)Ogogxan&aU+=D0MI2?fufy^U9`=6g$-;I2CdDOV0vCe`>DntT;fyUJ z6<+i;F#dtpvmKlqUxsFF5(g)h{KZD@2%i2(eT3|%RgBuOT}S+UIP*a(FHqQ?D=}zL zF=#UlVfkJ)Dy#mnQ~vtA3uEQ4&-o#aZ1|;mw0h#)Xsmo&^?CmI5EG%CW5;B50mA1D zWji+?#g3^s43l}LE)*9pul60Cm|yFUsk2Jn?s!M9cF~?tyw@AkeAuAp^-=1A1K$TJ z*=U?09{mE`+DIv)PO{Y*+Milz6^OPd)n%YWspz;8rJ4mwl<H1%_kMHt*XHiyphV^N z8XQMB(*E{G@rY!$TM{+_l#EboLH!p0LG{k1M-}y;xy#Pgd=<6>-_sS9-p1*9>>|@S zrUCamt&2DUW2GH~_tv6w+*tj6^pbJl=8{wt8gJc=?HF#jaaO0|u0fYCmD4y4M~}c5 z?*X<o|3$+K<(3#=ay@=MYB=7vGpbBS%I_e2oKu4$x@Qtn<t7$!Wa1{4Fppw9f^ktH zD7?s{x*V+q%mOF+5e*eAhlE0T@Su^9zJyp?SQOGbuMDg;utZCCGCJ@J&9J?w%77nm z&E1i3d}9<Kckvr530@?!4cS;(iF4*~bF2*-|8^y4{6`QLsdO<?72VneJR)G8fY_-g z)cn%*7V#!~t9??icm{)Y)s4SsA=ZG%IDE-L<8X1DM>2RqbQAY&2$Lo*21=T)NuW4T z3tCs2yNk@-+e{c65aE5n+~pzLOB62$ZbETUy9_Mf1tkN^9vGy_({PNS>h81EN0$#< z);qd_ns5Y)ziDva+fgrylRx%!$7#O)4qA0^Pb<!WD{xD;I^h=@tGg%c91M}ywXbuw z?Qyp4g2y|jCWtALW>ACY^|NJ0Z!AvZ*@YF9JdWq|X0<xf*|#_4KpbX{xPHzARfzwf zMUNX-z3LTtn4-d}N=*LtLpYkz*RTqLCw^crXagG$-{m=zgUZqTMH8BBoY125f#ZQ` z7$;yzFb$Rnwv~Nj%+<*71L?rZ47+3%&X$AaQZvkG5~n2*eAe;42US@#$f0W$Mr~RL zSrDY9q=?^|l!P&sHZtt@$gqIzq?jQ3cxzN))8}}$qJ9NRysnL)=Blu5py(F}T023B zYGvymVW>`5w^^J8m-lE4*%MFEFgRDQUJME9c=Ww+HsYWObohKjr8H>78&Pk3-bnAe zk8JyB;YZ;H4x8x;$E>cp&r?mum$EkZRc{(R%$czr4QKKdgLq8^x*jj9lHiI()UM;$ zAK?qa+HtP=IfZsR`XGH<v_PEQ^LX13<T%b<;@dE`RN(Lm_`>*#Ff47{8Nk^iS{P&D zM^~DlX#6rvZSr~SR83+%WjQKmCC`qyO!d(@bdib{0rfYfebYeEg&4GM#P=;KcN3s~ zqp07TyRU<imr^nkQsvl9oUd@YA-JKqpu)pZci!t!EXRZ=7+$^l#%^#wVpg$R_=R9y zb+8?;@gC7wk*I9PbV>C|a+o0&Ozp?}SNA)C_22|>i4Sy|-a$2N$NO4&>=aT6MN>y? z<7}&uUfu(8s8!wrSj2i}^jSp4syJg@Xl^MEFTfgOo&$pOsRyH5(_G-7Ta)O!#LHWP zldPKJy}{Be+TK)AJ}xx7mHCE_1>%WBG`r|3yWTnn@!zt`&21#nw5yw;f`$qis=!c1 zI81`C#}2>H0vi&g4QXs|c{YN`;TR_4`gWf4UEWK%u#C&0131_<2a88>I_#V_yuk5* zs^&%h(o|d42A~HQf-D&Ph9+K{Rq6HxB^`)Cprn~+11KGc?|_mH1l%W>Rt#a54qZFY zI4B?&h1J9a8Y*b0kf90;RmAf)n7}{cY@7puIicqmAK1m`SOE66cd+)i8BNZDf%Z!M zK9QT;g^eq5)4~iHbmD9*Ur7XGyvb#?YB4Qlp?c27e6Ibq5!1dN%euP37Gh-=_WOT` zUf6mp%8Nd4MerPCPZ_M>x%#CTb8IxvSmnD4T4e9T+sW{5NXbCFEkoH=KOd2SFrO*| zSMjPR9-Z>$@XZh6xAx3vYdr64w|xDa?>Ti%^c6XEZ_}%S4&+>%8{&IpwAtP<E|HgO zmy2Ho>cle&hBhZV@9ePm!~j!;O5;0TmhZVkc3|WGT-0J;WUEuYYWB7f>l{p((2aw0 z(#u!b;gN9Mu2KTNkC;k<j|U|Mejz9+@Jm5SfnNhk`h+yJ;%lLyorS^*TFXq>W1x=0 zf6&^BZ|M_KvjoR=qFQs#|DVvD*7`34iLqZ}DfK#3RHZG2QEy!bg~9nN^-UdBrKSEr zk3^I!uv^Ya<k3=D^#^*+>8UiREl}Ttb=d3MmH!NCIHWbosn%_K>fZ?jph4(@hmtF< zP}M8p+N|(!Xcb;pv=iqky^42EjP~p@o?9_Kx;9d(G!zqdI7CFI@$$71Ru=t8<vN?B zB>1CDwQTm>gXj0KG!;wGFq(QBro74a$`G~oXgpFDEsvDm7z9;XivzMOoQNS!%!sWM zydVtIX7xmGR3W+_Hx_%N28oL+K1$vVsm9bDrui@xj9JC@79h+`GzL?f&p~dna~rg# zf|6-I`hKY~vV2>5Ra+2twZf(K@MZNLCy*m}#4Kc<_YFJyO&=idzQBol72X)+U1Lpb z?U+uo?%OsO=<z5lwYnrRVJLe37$3?I2|0n6TzY$JiZQ`A73Yf}>(C17tSgOTIe&ai zS^1dK8w2q%%(wYz`L@^h;OKli!q2yje!jJJ*ExhmX;avu&Sb;c@g-8t6HJb=?)*sQ z$&)6>{tJ}k*sGv2=9pSt<M<QpzNZ%*H`#1pEP61+aqT*-T*`o8sS@%PU5CI|6<*$L z6=zH+s~Hg8f=<juLpfi@@uZ*1_AzDNgfixnpGond=_%iIP|7>5xI@=%YBPt}(my*J zl=RQ2Hqu*|4Qi&!1kUngPq4qH5*-099^A!*&}SR?a<sQ)q}O-p85fn+^ufF55@UvP zxDAa~DgPf!2D>y8WgFBC73G>_lvPWzMK>UG$8s|hOsuOnujp3e2*0_Y%Y?mlznxG^ zC-hztGzx>+6sbm`4QFAlYuBv@w;`dWrTv#)ebVKb+<?VickP)4R`rM28U+Uy-bydV zorYM9`zfHrxR--UmWY`7%Mm6!qF6RxsfwIt=4|h1+`@?V=Q(Ug<oyb^ywr~yyq4l+ zee?49U=^7%tH$+xG<|#@jqfy~l8TE)ZK!Eb9wb}d)OMDIyoOt+ZV!7cPF))>ZNE~T zs*d)lkBM{<D2X%&Ns{1;KuLm`I7#qKP?BKw0(6FsSf}3?=kEpLdnTIR2}mW9T`}l) z*We(})N%lu26Bv0)&UJw1w$T}!f*mDrJc5AG6j{c^m(Y0Wvl%-v*)roiO??EYVU+A zFRn<Iwf7a=TumRKyK~BFuvxx2-#j)RJWZZmzIG0DMFwqlJa{6OeCn0)SnLM_S>81F zS^A7nP4F1ns0dA#T2<r6vL{4K(@xcA4^VdX(4`TyO7Qz1N;g!eLESwM-*We2Q1XTh z8ad(R_)9qGBfeQlq2o`eH$c^^Fs48_Iu;CaxMRk$y-X>I?yOL-epQe{y+fO4LtWMc z3y}5Q7xN}U`7?RIVRWe<X5$p@x~82eD7<(4hBws~sG({hozw{`nxv8AZ&9?9KrxSk z)@g={8p<_PPT!E#cRKzj_O$w*(!=UIykHh?TFPfm0-vW4`v4^QR0!0cRaj2AhZUaQ z(+Yz#JUmx%*5a=J`A@?s6gl4!&cS)s;OR$NgC`bRgHP#i4gRcfZ~vWrTl+N1^G^iI z|2%D^2t_HoL`q?At8jW>t8n5GR^cgqtir8*_x9N-66kR8Kiml=DG-VhJ{AcXQgFG? zhASO2!YLFv|1O-z<XOj5_p^?{^N+#vkHPbg*?QF8!kzsaDPR}B^oOSxh!mkH<x7z= zAlDjjN|7}nr_d_cd)Usr*4~YwSv{xqs1(*Fp#0BDBSk1mvAR)mPVb=A8)eXYcn?(u z7%-R*hl}!Tp~yvt61dI^S!Y$F<R*qtf+)q|xzotDgkSo@L5gq-Mee*#pGn&xTtbnn zk8r8{HqTSBJ>7p8t}hr)p~zXNIFIe#&FVg}hr;?CyeqgoLlqbfqHf2(|H&l#7?G_Z zzFg{h^7+XpNK7d6Az!FLcH}9R)Mlw&H>Gg@(WF=?rs+Gvt+X2&KCu_H8$0obC$+mb z5dP=Cj0B-5p;ROc=xq&{m<J7mmJL5*@8LVct@(|))5tlAU;6W+ksuT$@CDuhOXYfX zZ-w(Ycvo=Db)lH+!a>x#`1e1VWS=RrHN=<8985kx`2>+mnT3d_|H&kGq@+4Sou1;e z;o4|YD-_dX3uk_JEC1$RJ9{?bD6C3hVUz8DRvAvA$T?opGALvX`g_Pa{FMSLzdCFM zPdQ96`P_Z+OLz(m#TG@liRzJ(woK3A%hORFK=R|uWu7JDA{0wS<WeRFK>jC_+)E_o z!5k|%QgBk*LcauVsmVey#nXi25Zc)*<(aFE1feM5Dv^+(oSu@$s_!+1Qz&xI6iyhh z9<#fZ5>}b=thI(iD00jejx6b0XE=l+$NVJ65BLPEkdlk~UT-*rA_vc2fjvE{w{=u? zu65LOTv2C_LY+P8y#71M_8h<TXM>R-6eaM?7T=DCtlsB|9Y5D+!S!XsB^0@SdQeQ+ zd-gvY4Tn(VSlVe!=_>I*n~VgZDB*6AfTI|q@8zQH$Vc0eXN6}=>%ZM+#dWjc7K+^W zD{f^~kW2jd9K0(y>aS3=D#Ah336ST1GRgjx$kq^FE^A2g`N=1UT*~~k6S<E_ijN3c zM@$S`N1$dOF+02yc61gWb+djRFRdoULNQJMA+cf${r7yU`*fx*$;DrSWm<)ztq?BC zUW<SKlSw|$=}FoJKQ>HtG7duVSt6G**}L^WndCmF<w6qTZT+|6P1y@lay65Do+b3( zjW=c1b|QC;lAGQmVlUYLY%!%I6iex4;mXopFZWq--D<dnBKKC|&SGO;F&sjXV~22z z4OwH+rwOA6u6tlgr^ex~|JiQ1g(CM~gqv1yxLCn%DI9+?972)fJ>kfbz8U_*aDCNq z3q|fdhvZ(I!o9<A3q@|8_XOLP<=Ls+uNiKk$o++Ir{rw`Q2yt~hC?WF{6jcc<EqhT zJVoHGJ`1k14VO^l>K0J3R5m;xHarhD9Jc%v*z(z8!>yF(a!H`Hi$YOCNF-!v)lxaD z4X04#JWM!M4)w-ZtQW>&7?YhRBbmE^@IN(%TPSk(JtX&wJ}a(s4YyF_K1#R?dtfBh z6a7qFhxb)lxG{xuzTp&#oJGP(Ej&-O@Vyj{e={6Hk>gv!F{qa{sQNqBpy|V`L8lDG zw#RQ-1(m`&5M2J}dLuz7O8BmhEysO_qh}mOj1RL4Z%_7&A42K-pBsz>p(tUvNXU}c z^L$oZZ#3LOk(<Y`LYKScSly-x^enlk@0$#VP~`Z&;*fqcNPK(_-W41zvrq+~goCIj z@$Y{!$*xGsKBb$I>vLq2EgVFRLtOn&CfQ>}HXx}nVY?#ej!zJ|l*ty>|74O|Y2*^+ z=S4QTk{6U&o>H!v<X))c<`nm|il^fo%83DJMmMY5EQ!mDxa)svAx-M8P)x}b;igtp z2Vsu`R_}>P+p%5Eh6{h4;TDSAKM?K=HUB~Xp}5{`IE5l-m2jq5w_m4l(EB7Y6^b0! z3P;+Ae<+atr@?RuMJ}FN=l3s@eu5o73$6<dmr&&533mr`ElA<I#c&Blu3F(rX`P-= z;aFrigd)c+!l67Wx$vm;hDW6rJSrjUnBhr}%1UthpT$OsP?U13NEws|%W{}C2tCt5 z=$Q^WucK$_^%N;_BSk1mxjiK=`G^a=JZJ}wK|65FdC9n(o+5?Ic%+nsqLh16q=X^m zFi3$k#OIjVNhuRjq<BV(P?YjZoub~>p!fP&gR1)?Wk(=YeXK#B_1g=8TIs+mKerkQ zLQ%p)A|XY;K2})yN*E5I$iedn4=(eEQ@DO+xP&6tlfpHimo;E|A$$%4;B)8?uU216 z+A#QDQzR@g5`>}zo_UDp_6S%#P;X`YgLT9yTuTj?P~>_+xH8ndCsH_XGn_(^bCqx& zoo5|geYkb>^aAT>v?fQRH97kBBliwy?bk>F#o+Wmw;L%!QA&$QQLV|rUex=2R$T8e z+(MCiQwsON?f%bGxbHOFLXrEGLvlZo!hM(F7K+@jr*Iz}^T{dPcN=b@$i4HB+{;tA z?=jp$k^6n&R;9+CZ_<0r6-fT)Uc)IAIX@K6{=KaJ?{&BO!&di)t?mzv>96Vo^3-R? z_2)){P?YdlO3cyEO7nXk2M+)93&SlGx%Ufqn)OXBsrw9<P~`eXxCZpJ2B6<F0R5f; z==0=N%9A*6;eYNo+(MB%h{h2krC>LBm4+&y&%wKbV-G^80>eSnn3VKnl8uB=Hjw=I za@iUupPzh!#Dp@ZbRxGv$xR=HsktHbB-sNXR&yC-1-Ne3>MvaVdRYCQg0HeMe^%bK z+)^?`H5V_xRCvZwC~^)`oX7U*VfFcYZ!7<mTq`uOAHjx``676ZuZ5y7PB<z5@{}G% zre_={&j6AiKSmwnA$%+ikxQAgI*~h6$;~;YyLHSvN9`<Z>_4lY){OD$N%Hl8NwrW+ z^@$Rrp&{%4RCXQkQ5D^HW9Xqqn$#dcK@^e@svv=c&_X}~k>;`_n*zyh*xk@9fTDt6 z!;Xa}#qx=$s0fOmB7&%(BF%y*0*VC`Ke7Msy>s8pyYIb3|MP=4`_7zm&&<4e^J;e6 zpGokw-CG-;<-k1#zV~RUvAs%z?Ny)f-lI|@3l7yfdHJM^mRoVL<)$v`6SiE%#h9)C zA#N|#@^h>B&V3f{sFc;FZJn;`;`1%ntyZ6~)fuWbt>B1!2JW!!g}Go`Eni}Og0IS` z2BftjV0)Dg+p9h$!6y{~S@mr-^zzCUEw|!g%T0aMCv3Tji!smphqyVa<=6(;T6|`) zr{QafWep~&YoRx75mxA4P@k|Du22!+Tl1U3-GinukI}W8c#7up4FRQ<R_Z9~6Gpj8 zMQI2#VLm+l8&wsqJgfN3)s%V(-iokFM^K+I!qqB5ooc>1=?T6%X*FM~URG@qDmvkU z(_>nxKA{p$({b);Q4Q{#!#;boCOqFk+$eFMRs4qf6K+$b#Q0yqe=B);Oi><8v1$Y$ z$3;J-!|kWyV$5c?e)Ec3rdpj?!<RU!wl5J{o_IywQ?<(yCV|*D6BnFT>z1oe=r~=~ z3ZG~lRd+!x1(qrv)<=E9UQh~T*{|olVqeQGhT-%7ij8si!+$Gz#lC@KD~?rX0J)~J z_NvYp^Bh}mdd0<G7=d%YN}ed}v8o068r`Gn6T056B7_orp>2siKg<I;>GgdHE32QX z`gwfWIg^x}UgS_8=?^p2@n<c?!zlNt_ThHftG0`!z*5D-?V>*6c2NpsO|$K<svP^p z#9pdm1BS_pD>=qN#l@KS{6pO36gTc4u6pd(E9-RssZZFpH7ZIacfZz9z18Az9YKA< z2v7a1dNjAS<_R4|eZnZuswi}32u~N_s>^z^V837Sq*kg=sC-E&tC;6l^tX|!!oL4# zh5CewS6zx*nT^@gTA@CnVw+2mV^gfx3iSyUZ<9hjyRJ@LOM#_|ha*aT!V#qu$eITK zt>hJZkBXgG1?Hb>J|7$bFj?_sRHesRRK>^GcOspWSNwe{K5mPncrO*^XE@T>l~`XB zS$%2>m{MZ=YS1TE^78mZc>u*87eJ0Hdr8H`m`(m6?iUo-_v90pF7hdMl5gpQn9lQE zIT}+V-`&ZBmn08P<nsEyJHG63`<FfH`rds9Q*Ga>MV($gu`+?<)bic>$bp5A9H{9V z0;(m+HGK;gV5-6T8omX$V5;uhF|Ea0(^^#b?V8$t{faHse1-4@;{^rPe76Le-W-5i ztse|%GBNgkRo}QB{Tn}fXH~9GRbT6yPG0^JoCvDlQiJb@8(P$P#VhcWTUgB{ReZ-D z&A#gU;wruYS(vK$&Yxeue~mWST`J)Q#<W^xz7D**HLj|FPim_C1a3J<kKr45kY-${ z^4Iwdh+{+5dhdLdx1Oi+FIKAjz)qD9|DVe5YOi|u_#~Czi)Vw7J~^uLKT=dhQs%4t z8GM2PX+s8F89^$<yAGJ}tQpd}dsV)uiK_VS6)JxK2RfvhdsN;xrUw0(HaJk=9mxGE zzw18L(8E`&X}mBcfy#R%;BEmYEkCII*eCQ7s_(#ubqVjew;ttnKT{oa)#(Pb-lXoi zln+W*J$yV*U0i(oaAU%UA8tZ<m5%rd7NohVW79rsPOFOsw50s(##WREJ10@Tc|#k@ zzwF(X@;CM*Q=U<J0p)!X+f)AV)(&dDTwS95m39fOZ#k<@X+~{Nq4i}CrBPl!GoA8h zCa4Er?FRLr^>w{^QC=^-H{~7E@l`pvXzrCk`Hq48DgSz07UjNJHsuGF45B>a#UYfR zb3{!uU)LK>>svD~r+nD8BPk!hX*A^<ej7u1ql|Hs=PsN;`T6^<rhN1T0m`46l}Gu> z-9gItwJ)N)^ZY54Z$45&d9Qw9%F9;bbO8_MtHvm=T0EWd<L|1Il3Ti{8%K{lcpc%e zK`0+za0BHt-<eN&)3jSC|Lwkolz;KtBFgWWcsu29zKW9={JBl5yD8sujd~c<VgLQK z-Y{h;<s)x?nDQqMK1%tg9ad1jVfre{zuCH)^4zNHD1R*b3Cf?n@hQqPwmeOF<5SO2 z{%5P_DBn70Bjp#CzDT)m@g~X}uii{~_m^IwJoQa=TDW)De`)>Ht~V$j^X8kBAA0dE z%7?E~JMOKw?4tEa`RXChlRbCSdS><aDUW;i1Ik~&buZ<48T-`wcl#;dy5u0`y*qzQ zd5bqbp*$=1Gs>6lIZS!=Ax9{Wz5E5`@3uKgxo_@Ql>ff>80F8X7vg>A=6y};O&|V- z@)viVr2NF`Zz*3}_j}4uxA}qc?Hx~1e&NNZDL=36kCd;d{}bhJol*G%yU);i(u$uc z4;BB9@_X9<LixJSRQ}qcv$X!d&c9M#xJ%_JSN}%qu@fpEGv#+$_Z?OF1Ec?-_1vv0 zAKpgY?%aKi%HwydylwNph&N@D%9}1zd1$}NpQ-sbm0#FR<t-<w{PXKo{>DQpKks>! z_t~NH1qW0<{wtL?`9bAv|EKb=e^dFsKUF^NZ<U|q98BZTI8YD^MtqZl1>s207xnd? z5-bgrl!Wsx>y?xljzr4KVo8x;{_JolnAC1|dD7%rv0%Gs68<YoY9B40O>l>csi050 zwliz_0+C=SpqBok^1>j0%quDnO^xzOD4ZYk=LPbLtkTKFAzwybxU{TOasHC4tHfa~ z<9!(g!9c82N($WlovV;e`H^5=Y&y*uSpWFAiP#E}I^_o^mlr0FL=X=;@p0QkIj(ey z<OgB_1;;}cAEyp4@YJdQ&9Dcf4pSACL0u5DtFXkV(r<rff>9;03OQ0$l~h*L`$xRA z!l-()3OS&f9E~#I!@9-CS>+b0@-e)M98j5N(eJj!$Kl}wYu{^KjhC1TSw4TngQ;pO zPNPlXzd>$;wIqQogEjodI!sEn0Y25BbqjgLh3s)5pSuv;iDeu-=d=1rd7UeePO;$3 zSaN9ygrtO)LU~PCTmN{?GBvvG94v{CI{?dC@c;X{?|tUxU`c%3YFJ`wcJ`AYZcYM} z#N*>&>Z$F2Z?Em<00bPoqkyg>cRsq<&B4=<__(#O#8&P<&}XHaQ<pe(*sJl!b778# z6`#FbxH;nEh69YQS+R+5{C9Hd6K6dv(d)Y=8IQO*4Tyu27LI@gM|XSFIgvOxA!ECy zO?frqj&m+?lA#JXBI}o5dcT{~kT`gSirf6qlLK?yoJPc%0ZZH;&h~jU$<1j@ocCaf z?Rw|RrEj`9O^AaBd92U&Im2PZIQs|3eSF;c0OJUF_w+mvIXUMM=RsIvoC|lHh2yA` z(~LOQcwcy;D-0GVr#W$;qSVh@HV=Qu&1pd#yyK2ufA_#&n{mczNgTXafIZ%){-tny zbaGk|2k*(^*vNZwbD^8lnmEltihcOu4+~+JcE(9k9EgLX<m9Nx<8DqH;;exsZZBWW zXTNcC&L<9D*W-4dwd&o^-JG_>SqDpO`>)@<0K15@KFP$fw#5(4#=r#U<g_Esa#&)V zM`ta|b#pEt&Ujct(|onZY=E7~8RtUc;JsPgWADp(ABMk^)1El^9t!r)!k0&QjOPx- zc^H;hpGF%KzIMmCh&a}J56``G42F`^t0Qr&_Y*oE`0YA3=VIbmZ$PBJ{^i|n&LzZ| z1xwuSzpUN{g9UrRKDTrt&SvK9TzD7kJ5Ek#;v9l%;ut%bRSuihS?3hu;M07ZJ-1xD zYN4BxN*tUMaQ^vw&)Xj3Cyh9GhZ{K?Qd2*4$LT_xeBjiCPib55HAYww?Mf%kHL%3C z588hmhMSYql{jV4+*<JI^JWp~A14Q<T9`NR&OdI`{DU1~@H#o&iGz2h@YplE`)wX` zW)I?=z$N^DIdn4Mj?<Gk6JUv3pl$7uKe{=+h_f7*@c)gbi+8#?ml6lx9!!Ey$-A4L za&z!ZBR;MZGzI(lV2iZ6ZcZQK;QWj!WkNHLad;V&#K&Dl40!+O+uQrQ<MbuY<FLeS zQSI8NJ>p~#=f6-N+@{^HynnbmPCw#cAL9J8Ij^rroxvXJ6M!Z5;bZyR?{LS-B+kpQ z#BDlaQf=5pz*vl*EaJ3;C6=@)JOSP0<P0DVZU;=A`gdI7=43-jd|XeE;@tAt;^!W9 za|ROU5m;h<;*K=>)6E$~9NMz*>C-RUoOW{t6X$YV!vB8tsz6|8ore$y4s5jDm#&=z z(;4=ZeNGrk9NgDY-9GT+mF_q>#K9Q`)jw?CJ;}`(MjRaZ$SJ*X{F`o0E^!`%CANL{ z9)EK;2ZjRlA?}G7r^EWPd2Y@K;^0`uRCwNukKG*VnYhZ^bp@#7<C0*BUYF#I1;E*d zBcUWd&T7}v)xRxwb4C#d1|N;peGAUQ$&NG5XyU+xOZ&x%FQ3`3T<zNex*oiqg(db+ z?Opr!y5o!?PE81p`_7rWa$uKrdf^@#A4g{$@G0@{=0CVOV~K<BDZ@ta{rG2*$5<Ul zoHt;J`||3;m%;#ddW|Q}Tv%cs9-rOhpqqoUTzp)8SYpb)zNn9zGZ9MS;}VGhZ@c|^ zW3robwcz~y%13Z;aMs69oDl%ywm;Qk?jkp55^)y566cl&7j5&XPvBp0CKCs@1J+_g zt&qo<&m)dC4qsY#1iI5%=X}9AQS-0Y+?*hBros~Y`K!e%V8?aFDIg9W->_s($B9ea zoI>KvfhCTyEvu^h?&cH`r}8+(#F-05$m?Eb@<;ACQ;2gKIJjLuDha~|bk-SL6d#9w z4Tp1PzdD()baG0Fa~CXe9PW629Ml<m!M^X566Yu^aeK6T^qdSg2lqbkf+ae5_fMEO zO@V-M{ytU$lZ~@JWyIM7OH6kxm<|)0vp&<HBtGtDVn81?s|v&4$%zoB6D+Y^w{7hA zhno{6&L&u5iVnC1CIDxg7?i;N1=UP|PtBVB3CB1mr<^$3V2SC0aXDFT&U7e=kHhBT zelfOc(^NMHrW+e)`<y*T+?<)j*$PXH6Ti4wj++BjggE!&68^V+aK}71XEt$G!4k*n zqREqfa&L=kh_iw@Q}5lk(9OA)I8C5kIL6AlmcXP1D`NayN1R(>iN}?B&yM_FaY}=w zrD1i03h*TASIAM$342=oiVOq52}}-0aI2_fsmwc97J`34AUXIRt3>eKIf<-uAsb!D zHW#wbh48Z-2yWHq7Z(S=X<WLubRnHwNM9E+!i5A~$aOB{5f`$>h3s)5hh4}oE~E|) zJ4k(W+wr%@F<qt+{B3be<1`XvWV}Z34QoujHF6IleKmr=3y!J3Mm}JqpGM9wlA)2t zI4M9HsS*5zZcL*zf^Q*V8m19^0|ryBM(}+SOobX*#K=_|S<c8*jjU%RtPy<fjH#za z;Gr_5Y>nU-A7U!f2s{g=G)5!oj9jUa!HoDdGM147jg&ExrI96!WNKs$BZD=vg^>Xo z+0V!zjr`8YK#erO=?2mijdWn7SR*|d8LpAxjEvAokdezZvVf5*H1Z@PLp8FCksOVj zWTclys`1HhNF&V|nW&LeMy}S#Kt?8LWFjMDH8O>fOEof+k;xjlm61G+Jj_VGMxJIQ zsFBwg325XXBa<|8nh`T2{p~{Fl`T%ztd;CSdbp5bE(BhMaKxGILYBCY$6d%)7xJD9 z`P7BLi;oWXcs${tWVI{Ng|u-Y_<I~uHNb^Tav`%_$UTfqgKeRvqLqx4YlMDC1k9p@ zObPm<X?R)zDWZ`8Louy-i{q4O<ReCAXyha#(=|e;X%KmqM&RW#N;5UmnUNBWWHK^D zBUdppS|de_lxk!aBds-ZJ0tBivW$^N8hM_PS{m8G$VD3Yl#z=y@+%`9HBt{x+8|w{ zk&76at&zcu)X>NTMrvv#%*Z7gxsj1h8hL<`6pgHBq_aleVI)-}UocWnBj?}+4Wzmn zfj`5bl&Fy|jMUM{07e>UWGo};8YyL@zDDLUa;`=mW2A#dUST9zBZnAitC3TTT%eIU zcsdBFokrR+(nKSD7-_7Ls~Kskk(rE~rxEpI=<qg-MpiJVxkffI(p4k77-^-E!;Ey( z2>vNIrVBMvy{<yiG}4@rE*j~~NNtS_W+Xu)eny&UB*I8bjoidYLyfFtq>V<lFp{K^ zy^Nf%k?$Dkp^+-}R4ck`B$1KpG;#qW*AfC}=6Pj!89@o>OhBSRecFvka!zhqdRN83 zyBXCGN$uWUA#fR>kaUaF+d|UP(iEq!Mta~)AV~e;KgCJw%5nM`q$e_bz6|)Uyt*+5 z?<280#~Gy&i!)3k-8oLKLDJzPq(b<w;-qy|Rh()eU3zex@fwym?2YGajC8>;J>%dm zj7BVyM$!?%X{yNLq;r)G(xnSSV=PWryl00A?_!aA4=Xa>li{|*w!p{*24R^-xSjCq z)8eG1@D|K82(t!TNOz{-m%Ayiv@YC-11%)A2dk!7NLQx#iY+A7+7`n#VukKyA?c}5 zXKY2tAly`qbWedYOk?3cwY^IUb1t=zRJgpR6m%g07cz;EPBYC50oMZ(4}YJh(k+>J zXU5U>Hm>*JJ%u>FPGv@gcYfmOz9=5$_hxjkso>A&C=thJ_nHg1xr4WM-th0nYp*b? zh$Fn_kqW0>^g49Yr6Y}MF{_9pylx;>3s_>BzjNTB-r8#&tB51KZUnAr*Pd$@4Kb>> zSw$S-HJ?;X(FjuOBOCwhtG!OLia5gSCg2*cwSSzm(WvUeeI8825neX~D*Ld%_DW$D zafH_`q_X<3-SU1djA}fqh$Flfkjm=A0}rjerl0n@iB-fAUJHfS-pjg<Fsk*eB98F7 zRe1I9_{YN;+Uo$Th$Flf39ptp*VH$va~eP)B;p9K#ek}w$MSaXj%_zmdv#<LafH`x zT7~0q$DsCC8dWZ<h$FmiCzZ8-eRXPai&5IEj8()DUUvwu>GwCk)u`@f6>)^uomvGS zs9nRf*G5(mM|j<(RaU!<>LXSWM|dqE6>k{d9W|To&(&UMSVbJ+b+_=!A6MfJqiUE4 zg^-9NyzT*1%~4pxBd<L-%&5Asia5gSUQ$_OzIsW+Iz}~$Rm2fq_mK+Qg<cDu@pm(- za#j&Xc-=3&e*XE(r;X}9RuM;dJwPgJY~b8msQd6mRuM;dJt(|--&j^|RPV8hIKpcw zsjN9__+LwgP1RmUSw$S-^^ov7QpaD-sD5V^afH{y!Yi`;$ZcWm)!<wxghU+S^$4J5 zK8&7t<7T5uXBBaT*Q2DuKE&-c;L}0JjOt2O5l46}6JBL?+jlpr*{mXt@LEnPYiuk# z=bpYs^(d=|BfM4!ue4L=cQdNjSw$S-wNiV*2Ol0Qd+I(s#wy|nuT{cp;jxA17*!1( zXv7g-j|s1D^7;(R)?OW0MI7O^T6hhg`rJ=OmBT9H2(LAyO2Q@lfBLN|3ydnnD&h#Q zwWPB4<*bwqwT)^CtB51K){)BEUaRIE9b!~3u!=as>v7@rde7`cqdLSY;s~!NNL2%t znBMRCX1yZahkvn(IKt~m;F>YNqs41?8CAPR6v{^&;q?@$?ECT<?KPBD#1UTq5njvc z_t<1q#jGNZ@Oqk5);y2n@Jj7<GpmRryw(e^L+^ihk5R2+6>)^uGo-TmFt1(ae82YE z$|~XruMNU0a`y6{jA}oth$Fn76<)Z#3bfbvtRjx^dQN!Z_A;tEjiC?{afH|NfX2sJ z?Mj`qpnI0~>c}eM2(OK#vc~*x$*&$as?n?>j_`VcRMyyd;D$LvGPT$BtRjx^dQo_V z-|jZhsFt#dIKt~Ct%47}^1}IJ25Ya4tRjx^+N4!D16=jf;s=fDLsk(-c)d(2dmj$c zUZ+?^9O1QDcy%1U_JC2fXaa?hh$FnV02&Y9#H$ka;Xv&*kX6JHUayeK+FnU3ZhGFR zf~+Er@OqV0JVE%re&F2YQ?%C&tRjx^+A6$e&ipgis8+IyIKt~S?S(xb_d&xcM)hA- z5l49amsD1}c3;*Uo@i7B4AU2^B98ES9ZJ=83VPkM<cVL5DxSNRIKt}<QdwRvG+Xn5 zQ6;mAIKpcisjNPHd|TJ^i**eLu!=as>rLUc_J&psjA|mQh$FnVlM0KmU588OpD?Nz ztB51K-V$DyZ(a6>QQgKW;s~!Dq_U1*LyHElGpaSLB98FdDZD-!KXi^!ZDkd4gxA}o z!eVS!kGaR&8`S|;5l49K5?<fc&+cJVr&&cD;q?xwyxUdlJSc=j9O3mYpypV)>zg*W z8LzgiB98ESPpdF0Uh56lW1}~#h$FmqYZdm!Z{t>G8r3*f5l49KA(b@_@qE6Q_L{*e z;s~$zh1cTa!=5mzrK}>3@cMvM)_jP^uaNfI!YbkjuMdS69>0w0AghQYy!MKAC7$_x z!&vS0GpmRrygm|MOLiB1X;ihEK_MjK2(NvBnq%dvbqCK}s=ZpVia5e+KdG#FV^rgp zKQgLxRuM;d9Uzr`dj+-EU{(=FcpVg8-))(9n^EPlia5gSkjpEey{=^yafH{$!Ylmf zXLF6}5mpgLczxpXnxws6VHI(N*QYKoqxzIp#1USfk;*;}W7_KvRuM;d9Tr~8dcAYV zsA@NdLP*3BUY`SM?%Rx>R=lZ9do^bjafH_qt-^h|#q^f&rDE3cE0tBm5nf-Ail;E& zb^SNIJ436oSw$S-^`-E7K4HchqsnI$afH`VQsI1v3D2>oYp;2%B98F-3b<xIL@%RS z#wy|nuVbXL#{ABf=gpd>y|%E5IKu0=@VfWqNrguBF{_9pyiT~hW@@irSw$S-^|kOy z*tV~pQQ?nuVj_<4`UX&QUo;^nyY~?7)s0oe5nd-rWz8GMu2^-%s7A7iIKt~&QdwjE z#=N>)O0`#*Rm2fq-wCgWIxeklR0~)|9O3mnsjP8$tX-S=t+m&3RuM;d{UE${Ua;mC zqk4r^#1USngx8v$cU|0GdmUsIafH`t;pIR3z$T;mkyXSIUO$q`J`NjcuUajk5E5~O z*H3_&F~9JEd)FA%g{&fu@H#^(YkO__?~9R(v{xpph$Fmy7G6(f?`UOIlUPL@;q^aK zVY_g)IkdRZ9;3RJRm2fqzX-2kN6ID`)lyawM|hnTUMU;KzG+l1v5Gjt>sR4*a&c&l zQSD<DafH`zq{2B0+qEL$!mo_#46BGEynYv64VK(~lTjtMf<j2d5ng`)YOWnJo?5on zs8U!(9O3mRsjPi@)%Kg8GOAow5l49aMJj6?)|vPDx{LMLC}9<GgxBA~>%Pw}yUeKW zWEF9QmoE<6WqJMmNy`x(wbyg3B98EiBbC*z!(-lTVN~z4ia5gS98%ejDc5MP?^#70 z;T12u5|1A*FscTvq0!WC90T^}dR0he?O%8<I$L{nVHI(NS5@H^{`~c1qZ-F5;s`JN z3t)2&famiywAWl#5l47c*D4&nV<JZv8`VRsB98E?p;g#!^s1@7HnNI1!mFlMq1WT3 zXW>O9>wIGmtB51KYH5|_b%|De!z$tkuLP|^ug$l%e$J?>C1E7>OSW=*)h3m-z3?2n zllE$pgc|s}2jmE^I>PJp+Yc`?s>_l{MBhUzz3P&R4+Flz&%XJ1iuM}ED&h#QdcteX z_WV^wHH%fm5q(%+cpZzra${%hbw8_!BfJ_2uStO?QjKa0tB51K5`|aK+QH4K+Us*x z5l48PE4=nxKBt3G{lzNc2(O01Ys^z~pQxw3nz!*$B98ECB)oq9`0Xo=Dw9>j5nhc+ zWu0$S-+AQvy4q_BtB51Knh398t4JTCx{X!D5nfG6WsO6eHxjkidR7rfc%3J_Ms^<u z57?~z>s?k6M|d^UD(o)Ym+NTNH>@I#@M^AAxPRUI{etC2Rpor@cpq_uR|`^EefV`; z*~|vot0k+5BfMG)uZQA7@XhvCyLz&UIKr!yR$*;IZM$8Tu2rL0MI7PPTC1>K+i&Z2 z+NjD{MI7OkL@N6+rM~uB#46$luQtLf>F3g@QLSMWafH|Tq_XCXlg%!jaIW@xja9@E zUTuX})54)28`Zb0B98D%CY5zu#``uMv{#e1YAX{*c(oH=ude7k)2Mo|ia5gS0^x<% zU&-3*DpnCkcwH#G4z1svVpP|$ia5fnz00eu_FBOz;s~z}!mH;W>t-3%R#p*5cwHpC zun#ZLUZ1dvIKr!=@VfJdoEk<Im#li8IKt~<msdOO)s9uf5nh)FFTBrYRGF+Ij_~S4 zDr?MNbSMiR8(4egBvuhecy*Ru4_;o^sBT~tafDY2sjPXU+rh188*8sstRjx^N)=vJ zM_(K^s&`mL9O0ElDr?N2URhGyRC}Fa6>)@D7vZ%ml-$y&8n;v1i#Wn7U8|6RbMJZD zt2?WRBfPq5RXnJ0%p27RRuM;dbrbE1?B6xEh4w096>)@Dcj4u`zQtokwSZN`5nesC z7uN8XN4_0zRBKs99N~rUO`2=i7q%|`)~I%{ia5fn7pbi4uW#=e+R~`LW)*RS*QLVi zhLS~XjH=cJxHaIrjgTX}dTSMy<MwK<`>-Rch$FoEXchLx$idlZMm3aG#1USXk;>Y? zHg#&azpM6|!YbkjufD=7`g-@TjA}lsh$Fl*NQK7~tYN>+2`h~15mpgLc=Z!rcMoZr zWK=J)ia5fnzit<LEo(n%f>C|QD&h#QOySk~yit3M>U&lZM|fpvFR=3MJY7DfmF~lu z7a|7l!6HX^4G><3_cZBkRP9(r9O0Essw9Yr?do3t<+DbW!7AbiuYtlV<Jy%AjA|mQ zh$FlPk;)qLU3z8QWK^?RMI7NZSa{vhX|zpsKdXo%yoP8MG|RW?;nR(}={|g(Rm2fq zL$wNf<CclHz;_N*#Q>1rXBBaTR}QIgl0{YZH<F$;s_$4u9N{%gc+I*b;SZxqXpfHY z7ktPOUb&>Q`f%!tdtNfC4y+=M@ER_>8irdhH>!cGB98DHK`QI`b?Nol4_>HyBgiV^ z2(Qb9*X*kft~RQ<tRjx^x`I^J`QaD)_76$ZUQ1a;9N{%mc-{5UMXikL1y&J9c#RV6 z`si5EXI-?{`>Z04@ER?=eqO!rN2B_VRm2fqSCYz_56?eZ{%vjTRilI2%ES>~V}w_J z*&jC5MXVx@@Vbgr)_hoP+ocnX*HBgwM|h1DUSGCN>19+QRuM;djnnPIF~4BxlcSC5 zE>;moc#Ric>#ykbkWoF)D&h#Q38b>lZ63SvsU-=z5BIZ*IKpe9@M?GK#yLjyGpmRr zysp+>*skMyK5k@Gi5IEuMI7Pf7hZ8)?!3gPQdvbD;WbHk4V_!#a-$l-D&h#QfbhC= z)5=;#6=oH2gx6$JS@XuuNndO?s@qvb9O0EGyq?%I9sUf=nh*cOD&h#Qd{SBS2ELox zOsn2u6>)@DP<Y{UJ)=6#D&h#Q0#aG?#*(u?{n}D{#dTEMi#WooP<TC)yK{?C!R=T| z#1URaq{4BCV`J4uUo)fX#wy|nuVUe~|Ia@L8Pyf6B98EyLMm%}O?d3lszw!J6>)^u zRN*!A@V<|Y>Q+_}M|hQx%IZVB&(=`);Tl#EM|hPAFTD3<RJ&M39N`rrl{Gf-Icyv4 z^#iMjBfP@GE8+X|ON^?)#cF#IM|hRF+Lffe(pW_t;WbTojq08If>B+;D&h#Q2&t@j ze#ylhPo1y5rm>1R!YeAg>U}i#1EX5PD&h#Q7^!NgX4AW=-L==VtRjx^Di>aduS=a{ zR6AHj9N{(H<#nC*`jl0~5neNdSK@=eziw2&vWhsuYo^QVTJ6>F64hMd2(MYfYvum5 z>y4@ttB51KW|PX=moI<n<~Bw(kX6JHUe^e(IaBW*ZB&z4MI7OEEvazK<Gj&)?)3IX zbsejSBfPE?UQ=d;?=-3hSVbJ+bv>!9a{&L1!{!?mJWQZO9N{%bcy*rpR&Aqtk5$AG zUUNxh%~3bs-J^q1ea$N32(Nj<Yt7)7|1zp7om35pBfg3E22#Pomd@eNtyzT}g>_>D z2?`nHLPoogLKia2g}_4+omAw9UC84uWU~v|<wCx2AwLVm{=LLEQg5VGS5=wu%9LDP zDPN7w>N9cZV>%!>TU3MpI0E7Kg8;$pW{`=1;0QIy6hM*$G7}Iy(KVbq07((ZYCx(8 zWFsIw1hNy5Q-G)%+S@gs+J*5k6<o7qvbFu-_kTf!2|4onmTw{zcZRRuO$V+ws-{>y zNXU_@n@Od%q0iU#BKW}#9xJfMD&$DjEu_j+L4BPs``|sJ8pbN*NYw&TS?&7I-tQtt zbtkKkBUKAYmB3ydHhuh>Q9Z>f<Ve-6q^iTJXC_qLZdC8F3OQ1>h*S+&m3-fzbffx_ zRmhR5#iXjms=Mmv!b=TSk2XtHFme>uixI@n@nyqW-@g9L41Y@3;kh|E{f7-4lo1KU zio<=A`}NDvW&JZp^v~@#aBxO`FfTAmlyw<2qF>gaeuD;N<n~SNr;6YUD8gkie_441 zzLgwS=!3r$zl%H+C=EstLqbWRKfgE<o8>PpFNs+oS@>hcr6i><Irqc2mivoC1!3fr z2FhSPKtb?xX>l~qA1)}sKQM=4B`6KdjFg9Py(9pY0MX36k^p?sHy}{ppH?0S#o$ZT zu>i492^FiVg^H{dzrVP&%zs6&Bp8SWM_w@|C!9BR07NQ}7Q;7BsnULV)5?n@?owTs z82*i~zc3i{7X>2urjB_<;czsl!B7<249zU2cGy<asD`RIL`~qryfFNkJ=R{8;n%uD z^KD2VpZvHyT0S`z3FL|J*z?6@CH64I`Nh+V^X*|=Kso;1GBMPb*!#;O#i3XMIx|pO z4qqFt8zaE72!09vR2R7{9F1Xt9~%*(T1uT&o>x>{LhYJd9K#WSBSTwhOm!oCcR9rJ z$09-aQk2<&e19l71D)--LDk@)Z_roYnh(vHH5oTbGzecCrZ=gZ5ed?lk!c2f@jiXQ zzflpE?*LUO0@b(p>kz6$@jZ(oM&*wdmlnfNH)cvLC`GW5sN3z$v@?P;%K{<W2o?J$ zj$jjB7Kwe&?7&iD!v$YY6RKLO#~olKC?qlZNdtdDaY>0kii5;dO!dhW_zeVS3HPK| z5ljaWoDf1mzgIC2Lz+sA6QgpcE+c<KDvN{*VDAW*hGRin&vIRGUPHrRz8`)H0x}~s z3>W5TvAtc6DsqvU11mRjD0x_f!Z2;aRHp}}!p(YqGz!fN<~cUCg^H~v$4q{(AOMq( z6naxc6x%TJ4B=5O^pgY8;yiye7Klatr9nPIsiEfyhGIpLU?4v#E2`1rP@d@xjY1`C zsG4$=$K-I>wj1$Wm}1C`q`D9~3aA*&>0;wpbEBC%nQ9f7NfQobemzRnGyzAVsk(tY za|8>Eqxh30u<3aw3PxO*+S}9*jA)_)XG8*JWkT;s<{|20t8)ey>>O|S!zX;q!J5*l z*#~LWJ(O**7O8sZ)qw6HB1iQqPd&lucv!LaeFjwnY4>y%;htUq=M6<>R$`GU(Ys(- zBvj~!2}zwj;g7$h6^HWSc#21OIIv<Z;Tyi}t9;mt7L;S5yFM;dn=zNSgPvO?tl4T* z;VBdj2K&Ln+VAq<$7i4lim2vDvmWJc=D~?4i2hjEUjj$382@Aq#uhBD8TJ#N(<v#g zm4s&mBQ^|`ML{?rC@79Z?coSiN9fARd>BBV85Wd;!x7!Zq9`v|Tw;}|4Xr8_m>z%v zK3T9se0HE93<aIX`=G=`!;u&*D=Cfvon~RfRWNN8XmSbeXU;;kB^9c6U^P79L@gKz z1xoA{_bTUrstC_YD-Z}?KAeo>Nv^Vu;%o$`_;!rv616|sYv(=@u^VDv&}Q{d4n||} z(Y}3E!z$<vTcNFw6w14*vjc5~EK!3yAC3bhc#=RT>8kRoWO5*HYDu`zA1VtJ2BTs; zD?+d=oLA%z<WCQT@~q!tQYE%nwo@P2{oyK%-R(Gutp1G!U_zlwC`Qz*3CFQ$5u8k@ z8kWQ9Kk}%|0<k~y!hw=tR96R~SfscV_aQrtuo#SNj)%KmC>$y%hm$YV;CZ2P!V>#g zkwO`<k4H5_t7|jX+V*mFDukC_mL-o3wS}YVJXQr4C54gj3=YRQ?l#sAg0-Vd1*|kq zs&I;5lIPPfZ3s0YG=nf))6)VW$>pILF!?3xdCqpapG@EB<Xz+`<9*&!XO%gH_8k@v zP(G*HP4EuE-Cjuy!SD`Z-*v4E5$_6lGXF(TwaNcQOeX$wNWRwj=a3fB8B(6A;!fa< z<-w>t2%e`_9)uXqAZi|=y9Zv?a28i0_o{$RPQ`gef#OhdiW%Tef*Svo5LATJe~M5E z!Px|Lwdm|RMxA7JE$JjP>Ll}NknKv-DfD2ty2yj$>Lm}3tD`(PDvqtMJUGrqspFgN zO4r#YH^CW#XN5{)cra9Zy4W_n+eo#ia*m3V{x9NG&T%%%`!;~Hb1GmtgYjWcojE&W z$ifPwbahdIQk6M{eC6ZRSg?yOZceyVveYT&?Td#`d1t{Hr($BoAzjm;3F31de7Q`W zU{v7Fg%voe6N`V<3{PrhVJm714-BW2kC4`l7iV*v#jYvBNpQ^%PJ)V%W_BhgK}D#9 z;N1jQyH#9Yas^ek__nD`DqJ<N6dnc2!#0app<L68RiG5M`NAqt3XcM3v&F3m=XR5Y zPO1BzlvD4)a0ap8y>iM$nNx_j#GL}doJ6{J<zy<*N!7QgoODy*l32H@_#T!^=`61> zfV$UJp`MG4Jc{3qZs=;&6x;5t7?K?{R6h9HFCdM?tFQv8^Qa-Du9<^NE0_m8OI^M! zuE1E98nL<vv(5nV){kkfN10P--41e!G|mDQN?qLQ+eIw$E)zn$fKx57s;5MDTnM<i zcx(fX6gkU;5F^@dL5V6l%hZgMl5FbYR#sGM&7qZPQ!9w9v}qNTTC=@(WTov=skWk0 z?~W3;<-Ge#QYs50x0LR1zI|q$I3TXC=jClau0UlB_7@cQ4MDF!9xTxqar;nog)H$9 zSuIpsPi;FTvPy&qD{pQ=3M)sEr>vrV2}4?CE}^)S>9Uli6^LnavTo;85JGY)2qaDw z%}7_3kf(~O)P6ff-ar-AsDvhJ;>D9=*PG!H1n)<w8>JpKu@!nq=_pm9tv=7T_keXT z*TYK}2`70ASjZejLZ+H;jV1f2mL(n{b>60)1gU#B6?RXBR1p^U2*<5w(GIV2R{(WJ zAP1+tSs28NQ&}Ln=^POpo6nTe@UCztvYokTP6c(SU?;LgaMVGaCdixUq9;8G!d)>u z@3wnH^5%I2ly~PnA~^^iA=G_g`zBR&759tPu4KQRuWs`TM~`B8s^CFTzSh}-2SJ`N zco0+s>zu)ZAlhs%r*_J*=us@>>VbrMa3R_*3gn53C{nde<MR+vBu`O9ky2UbC!$DH zPn~E|IXp!X6?7CyGe@Dca}+9NI=8@4sFW2HimEyu?ufcN%cP~VRC+o~m9{Ha*IBBx z6_tt#<3yw%Jc;Vc5|_w4nsTXZMcy)cdgU!sMM8$B{mutmLhMOUJ(R{h<VjK8R4GM8 zv4&_RQ7Walnqz+|=W2>5R28sh60CqIR!yj|*xd;pYI_HWVt3<3vGTSzToj8&bBV_> zN|p$bcq}QpNtVcZ$}(9=S*CP)x3(Sctx3kaOjOc#{b_$tDymx%M+D-tA9YT`4^>4J zPeR2Z=;>?40aUS<-2RZ(OE1bf01iy^-Y2UZAXC)|56&+1(AR#T_AFu<3iMT?UF1=q zHf&0=N0GI|cobQ~$fL*_MIJ>;)vaPL&myJjUa`unh+hp)$;=&*+rQtS%nbc{x4xYz z-se_7t_u&v@#SuMG(<xjU;m-^m(pkh!~&BMvAx!0A@oijyi69ux2u6d=laMKD=;BN z=`~h$DWG1t&<wwNmyKTyM40b?S%bp{>9@lB(ly<5cqyhhG(DQpw`<?NAT$?->RqRd zjGh@iee$WU<)cpa=ozd9slml>qMMP1jTM_!-GOkybhm)fs9#;o(|hkAw$?+|i|T#h zy|P%a462^mx38*q#iz=u9oBpQnZt&T$jr_fnh_{~7lXvR{oVQx8;~<Jdsx4W$@t24 zP!y)-49yxaY*1EqMpWPfvNE!=va<#Z95@WdOV+R{K{eyT=iz<3^zE7%jzr4KVtu<t zg88$<p&)d2a%T4I^1fZo-y38N%k4LK=!pIq)D#guCnI~n(5w-Iu)^?~cz`bS1S2;i zYvADF!?TCwGD8g`!Rg;WBQtyOkii27GKXH^p!XOBujlZbtenAv`VVFr3?fzT_YW?G NSAF`!%ap!a{|Bkkp9TN` literal 0 HcmV?d00001 diff --git a/lib/windows64/libpng16.lib b/lib/windows64/libpng16.lib new file mode 100644 index 0000000000000000000000000000000000000000..0732a57795669fbdd87f190418cab378a1a2acf8 GIT binary patch literal 1439808 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�EiOkHdv6-PVKm;ErAs*Rfq4S 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�!a9|5vE6F*Tg3e%A1nt3RC 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℘1!dyrV7Sr33 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 b8%aClp%-!LLOdK^9v)a0Y_oUQzd!r|qjExQ literal 0 HcmV?d00001 diff --git a/lib/windows64/ogg.lib b/lib/windows64/ogg.lib new file mode 100644 index 0000000000000000000000000000000000000000..8ff74e75eee7d48ab81b9eab15feb308bb0a62c8 GIT binary patch literal 42590 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/steam_api.lib b/lib/windows64/steam_api.lib new file mode 100644 index 0000000000000000000000000000000000000000..13dcbb4b21ca5ec5687a304d4edd0f26847042c0 GIT binary patch literal 273092 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 Hk=FkY&ECB8 literal 0 HcmV?d00001 diff --git a/lib/windows64/steam_api64.dll b/lib/windows64/steam_api64.dll new file mode 100644 index 0000000000000000000000000000000000000000..bf392b1d1c36540d29550914971314fa863d6087 GIT binary patch literal 239904 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/vorbis.lib b/lib/windows64/vorbis.lib new file mode 100644 index 0000000000000000000000000000000000000000..35f006643792c8f6b0dd9903c6db668652bd457f GIT binary patch literal 1463396 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ǦA)MpU^f_gy+(LJ|(oh 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%0DX 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/vorbisfile.lib b/lib/windows64/vorbisfile.lib new file mode 100644 index 0000000000000000000000000000000000000000..72d9e78b5a4eed7ceeb4785fd1ccdc6c09ae169c GIT binary patch literal 141820 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⁢{NG!BM9b;ZA;nG>4l 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 OnN?L#5p9sZ9Ql9dUd56C literal 0 HcmV?d00001 diff --git a/lib/windows64/zlib.lib b/lib/windows64/zlib.lib new file mode 100644 index 0000000000000000000000000000000000000000..bfac0a04ae8b7af129ff36b88de1c0067ec8865b GIT binary patch literal 15288 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 literal 0 HcmV?d00001 diff --git a/lib/windows64/zlib1.dll b/lib/windows64/zlib1.dll new file mode 100644 index 0000000000000000000000000000000000000000..7e89d2cefd12ce3ed5182d5d4d837c860baf9ba3 GIT binary patch literal 186880 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ɹ~~nYJ>+a;c3mJ3 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%0A4Ob!44zFV&v~u+A)ybzxmuH>PIY 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 literal 0 HcmV?d00001 diff --git a/source/application/StarApplicationController.hpp b/source/application/StarApplicationController.hpp index d19ab4c..b8d433c 100644 --- a/source/application/StarApplicationController.hpp +++ b/source/application/StarApplicationController.hpp @@ -6,6 +6,7 @@ #include "StarP2PNetworkingService.hpp" #include "StarUserGeneratedContentService.hpp" #include "StarDesktopService.hpp" +#include "StarImage.hpp" namespace Star { @@ -40,6 +41,7 @@ public: virtual void setBorderlessWindow() = 0; virtual void setVSyncEnabled(bool vSync) = 0; virtual void setCursorVisible(bool cursorVisible) = 0; + virtual bool setCursorImage(const String& id, const ImageConstPtr& image, unsigned scale, const Vec2I& offset) = 0; virtual void setAcceptingTextInput(bool acceptingTextInput) = 0; virtual AudioFormat enableAudio() = 0; diff --git a/source/application/StarMainApplication_sdl.cpp b/source/application/StarMainApplication_sdl.cpp index d833c04..6831a4f 100644 --- a/source/application/StarMainApplication_sdl.cpp +++ b/source/application/StarMainApplication_sdl.cpp @@ -3,6 +3,9 @@ #include "StarSignalHandler.hpp" #include "StarTickRateMonitor.hpp" #include "StarRenderer_opengl20.hpp" +#include "StarTtlCache.hpp" +#include "StarImage.hpp" +#include "StarImageProcessing.hpp" #include "SDL.h" #include "StarPlatformServices_pc.hpp" @@ -278,23 +281,25 @@ public: }; SDL_AudioSpec obtained = {}; - m_audioDevice = SDL_OpenAudioDevice(NULL, 0, &desired, &obtained, 0); - if (!m_audioDevice) { + m_sdlAudioDevice = SDL_OpenAudioDevice(NULL, 0, &desired, &obtained, 0); + if (!m_sdlAudioDevice) { Logger::error("Application: Could not open audio device, no sound available!"); } else if (obtained.freq != desired.freq || obtained.channels != desired.channels || obtained.format != desired.format) { - SDL_CloseAudioDevice(m_audioDevice); + SDL_CloseAudioDevice(m_sdlAudioDevice); Logger::error("Application: Could not open 44.1khz / 16 bit stereo audio device, no sound available!"); } else { Logger::info("Application: Opened default audio device with 44.1khz / 16 bit stereo audio, %s sample size buffer", obtained.samples); - SDL_PauseAudioDevice(m_audioDevice, 0); + SDL_PauseAudioDevice(m_sdlAudioDevice, 0); } m_renderer = make_shared<OpenGl20Renderer>(); m_renderer->setScreenSize(m_windowSize); + + m_cursorCache.setTimeToLive(30000); } ~SdlPlatform() { - SDL_CloseAudioDevice(m_audioDevice); + SDL_CloseAudioDevice(m_sdlAudioDevice); m_renderer.reset(); @@ -304,6 +309,11 @@ public: SDL_Quit(); } + void cleanup() { + m_cursorCache.ptr(m_currentCursor); + m_cursorCache.cleanup(); + } + void run() { try { Logger::info("Application: initialization..."); @@ -358,6 +368,8 @@ public: break; } + m_cursorCache.cleanup(); + int64_t spareMilliseconds = round(m_updateTicker.spareTime() * 1000); if (spareMilliseconds > 0) Thread::sleepPrecise(spareMilliseconds); @@ -373,7 +385,7 @@ public: Logger::error("Application: threw exception during shutdown: %s", outputException(e, true)); } - SDL_CloseAudioDevice(m_audioDevice); + SDL_CloseAudioDevice(m_sdlAudioDevice); m_application.reset(); } @@ -502,6 +514,10 @@ private: parent->m_cursorVisible = cursorVisible; } + bool setCursorImage(const String& id, const ImageConstPtr& image, unsigned scale, const Vec2I& offset) override { + return parent->setCursorImage(id, image, scale, offset); + } + void setAcceptingTextInput(bool acceptingTextInput) override { if (acceptingTextInput != parent->m_acceptingTextInput) { if (acceptingTextInput) @@ -656,6 +672,65 @@ private: } } + static const size_t MaximumCursorDimensions = 128; + static const size_t MaximumCursorPixelCount = MaximumCursorDimensions * MaximumCursorDimensions; + bool setCursorImage(const String& id, const ImageConstPtr& image, unsigned scale, const Vec2I& offset) { + auto imageSize = image->size().piecewiseMultiply(Vec2U::filled(scale)); + if (!scale || imageSize.max() > MaximumCursorDimensions || (size_t)(imageSize[0] * imageSize[1]) > MaximumCursorPixelCount) + return m_cursorVisible = false; + + auto& entry = m_cursorCache.get(m_currentCursor = { scale, offset, id }, [&](auto const&) { + auto entry = std::make_shared<CursorEntry>(); + if (scale != 1) { + List<ImageOperation> operations{ + FlipImageOperation{FlipImageOperation::Mode::FlipY}, // SDL wants an Australian cursor. + BorderImageOperation{1, Vec4B(), Vec4B(), false, false}, // Nearest scaling fucks up and clips half off the edges, work around this with border+crop for now. + ScaleImageOperation{ScaleImageOperation::Mode::Nearest, Vec2F::filled(scale)}, + CropImageOperation{RectI::withSize(Vec2I::filled(ceilf((float)scale / 2)), Vec2I(imageSize))} + }; + auto newImage = std::make_shared<Image>(move(processImageOperations(operations, *image))); + // Fix fully transparent pixels inverting the underlying display pixel on Windows (allowing this could be made configurable per cursor later!) + newImage->forEachPixel([](unsigned x, unsigned y, Vec4B& pixel) { if (!pixel[3]) pixel[0] = pixel[1] = pixel[2] = 0; }); + entry->image = move(newImage); + } + else + entry->image = image; + + auto size = entry->image->size(); + uint32_t pixelFormat; + switch (entry->image->pixelFormat()) { + case PixelFormat::RGB24: // I know this conversion looks wrong, but it's correct. I'm confused too. + pixelFormat = SDL_PIXELFORMAT_BGR888; + break; + case PixelFormat::RGBA32: + pixelFormat = SDL_PIXELFORMAT_ABGR8888; + break; + case PixelFormat::BGR24: + pixelFormat = SDL_PIXELFORMAT_RGB888; + break; + case PixelFormat::BGRA32: + pixelFormat = SDL_PIXELFORMAT_ARGB8888; + break; + default: + pixelFormat = SDL_PIXELFORMAT_UNKNOWN; + } + + entry->sdlSurface.reset(SDL_CreateRGBSurfaceWithFormatFrom( + (void*)entry->image->data(), + size[0], size[1], + entry->image->bitsPerPixel(), + entry->image->bytesPerPixel() * size[0], + pixelFormat) + ); + entry->sdlCursor.reset(SDL_CreateColorCursor(entry->sdlSurface.get(), offset[0] * scale, offset[1] * scale)); + + return entry; + }); + + SDL_SetCursor(entry->sdlCursor.get()); + return m_cursorVisible = true; + } + SignalHandler m_signalHandler; TickRateApproacher m_updateTicker = TickRateApproacher(60.0f, 1.0f); @@ -665,7 +740,22 @@ private: SDL_Window* m_sdlWindow = nullptr; SDL_GLContext m_sdlGlContext = nullptr; - SDL_AudioDeviceID m_audioDevice = 0; + SDL_AudioDeviceID m_sdlAudioDevice = 0; + + typedef std::unique_ptr<SDL_Surface, decltype(&SDL_FreeSurface)> SDLSurfaceUPtr; + typedef std::unique_ptr<SDL_Cursor, decltype(&SDL_FreeCursor)> SDLCursorUPtr; + struct CursorEntry { + ImageConstPtr image = nullptr; + SDLSurfaceUPtr sdlSurface; + SDLCursorUPtr sdlCursor; + + CursorEntry() : image(nullptr), sdlSurface(nullptr, SDL_FreeSurface), sdlCursor(nullptr, SDL_FreeCursor) {}; + }; + + typedef tuple<unsigned, Vec2I, String> CursorDescriptor; + + HashTtlCache<CursorDescriptor, std::shared_ptr<CursorEntry>> m_cursorCache; + CursorDescriptor m_currentCursor; Vec2U m_windowSize = {800, 600}; WindowMode m_windowMode = WindowMode::Normal; diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index a80e650..4a156bd 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -159,7 +159,7 @@ void ClientApplication::applicationInit(ApplicationControllerPtr appController) m_maxInterfaceScale = assets->json("/interface.config:maxInterfaceScale").toInt(); m_crossoverRes = jsonToVec2F(assets->json("/interface.config:interfaceCrossoverRes")); - appController->setCursorVisible(false); + appController->setCursorVisible(true); AudioFormat audioFormat = appController->enableAudio(); m_mainMixer = make_shared<MainMixer>(audioFormat.sampleRate, audioFormat.channels); diff --git a/source/frontend/StarErrorScreen.cpp b/source/frontend/StarErrorScreen.cpp index 872528d..6809d95 100644 --- a/source/frontend/StarErrorScreen.cpp +++ b/source/frontend/StarErrorScreen.cpp @@ -79,7 +79,8 @@ void ErrorScreen::renderCursor() { cursorPos[0] -= cursorOffset[0] * interfaceScale(); cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * interfaceScale(); - m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale()); + if (!m_guiContext->trySetCursor(m_cursor.drawable(), cursorOffset, interfaceScale())) + m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale()); } float ErrorScreen::interfaceScale() const { diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp index 2be8c2e..a3338ee 100644 --- a/source/frontend/StarMainInterface.cpp +++ b/source/frontend/StarMainInterface.cpp @@ -1377,7 +1377,8 @@ void MainInterface::renderCursor() { Vec2I cursorOffset = m_cursor.offset(); cursorPos[0] -= cursorOffset[0] * interfaceScale(); cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * interfaceScale(); - m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale()); + if (!m_guiContext->trySetCursor(m_cursor.drawable(), cursorOffset, interfaceScale())) + m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale()); if (m_cursorTooltip) { auto assets = Root::singleton().assets(); diff --git a/source/frontend/StarTitleScreen.cpp b/source/frontend/StarTitleScreen.cpp index 84790f0..4571f04 100644 --- a/source/frontend/StarTitleScreen.cpp +++ b/source/frontend/StarTitleScreen.cpp @@ -417,7 +417,8 @@ void TitleScreen::renderCursor() { cursorPos[0] -= cursorOffset[0] * interfaceScale(); cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * interfaceScale(); - m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale()); + if (!m_guiContext->trySetCursor(m_cursor.drawable(), cursorOffset, interfaceScale())) + m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale()); } float TitleScreen::interfaceScale() const { diff --git a/source/windowing/StarGuiContext.cpp b/source/windowing/StarGuiContext.cpp index 10cbefc..463e341 100644 --- a/source/windowing/StarGuiContext.cpp +++ b/source/windowing/StarGuiContext.cpp @@ -307,6 +307,15 @@ void GuiContext::drawImageStretchSet(ImageStretchSet const& imageSet, RectF cons drawInterfaceQuad(imageSet.end, RectF(Vec2F(), Vec2F(textureSize(imageSet.end))), end, color); } +bool GuiContext::trySetCursor(Drawable const& drawable, Vec2I const& offset, int pixelRatio) { + if (!drawable.isImage()) + return false; + + auto assets = Root::singleton().assets(); + auto& imagePath = drawable.imagePart().image; + return applicationController()->setCursorImage(imagePath, assets->image(imagePath), pixelRatio, offset); +} + RectF GuiContext::renderText(String const& s, TextPositioning const& position) { return textPainter()->renderText(s, position); } diff --git a/source/windowing/StarGuiContext.hpp b/source/windowing/StarGuiContext.hpp index 3457148..2f08394 100644 --- a/source/windowing/StarGuiContext.hpp +++ b/source/windowing/StarGuiContext.hpp @@ -90,6 +90,9 @@ public: void drawImageStretchSet(ImageStretchSet const& imageSet, RectF const& screenPos, GuiDirection direction = GuiDirection::Horizontal, Vec4B const& color = Vec4B::filled(255)); + // Returns true if the hardware cursor was successfully set to the drawable. Generally fails if the Drawable isn't an image part or the image is too big. + bool trySetCursor(Drawable const& drawable, Vec2I const& offset, int pixelRatio); + RectF renderText(String const& s, TextPositioning const& positioning); RectF renderInterfaceText(String const& s, TextPositioning const& positioning);